/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   02. GALLERY HERO
   ============================================================ */


/* ============================================================
   01. HERO
   ============================================================ */

.lsw-gallery-hero {
    position: relative;

    width: 100%;

    height:
        min(
            650px,
            calc(
                100vh -
                var(--lsw-header-height)
            )
        );

    height:
        min(
            650px,
            calc(
                100svh -
                var(--lsw-header-height)
            )
        );

    min-height: 0;

    overflow: hidden;

    color:
        var(--lsw-text);

    background:
        var(--lsw-ivory-soft);

    isolation: isolate;
}


/* Soft mineral light */

.lsw-gallery-hero::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 72% 43%,
            rgba(199, 163, 93, 0.11),
            transparent 31%
        ),
        radial-gradient(
            circle at 11% 72%,
            rgba(36, 59, 42, 0.04),
            transparent 28%
        );
}


/* ============================================================
   02. MAIN LAYOUT
   ============================================================ */

.lsw-gallery-hero__inner {
    position: relative;

    z-index: 4;

    display: grid;

    grid-template-columns:
        minmax(0, 0.82fr)
        minmax(0, 1.18fr);

    align-items: center;

    gap:
        clamp(
            44px,
            6vw,
            92px
        );

    height: 100%;

    padding-block:
        clamp(
            25px,
            3.8vh,
            45px
        );
}


/* ============================================================
   03. BACKGROUND ARCHITECTURE
   ============================================================ */

.lsw-gallery-hero__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-gallery-hero__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.05);

    transform:
        rotate(30deg);
}


.lsw-gallery-hero__shape--one {
    top: -145px;
    left: -160px;

    width: 350px;
    height: 350px;

    background:
        rgba(215, 206, 188, 0.10);
}


.lsw-gallery-hero__shape--two {
    left: 29%;
    bottom: -145px;

    width: 255px;
    height: 255px;

    border-color:
        rgba(180, 140, 69, 0.11);
}


.lsw-gallery-hero__grid {
    position: absolute;

    top: 10%;
    left: 38%;

    width: 180px;
    height: 180px;

    opacity: 0.025;

    background-image:
        linear-gradient(
            var(--lsw-forest-900) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            var(--lsw-forest-900) 1px,
            transparent 1px
        );

    background-size:
        30px
        30px;

    transform:
        rotate(4deg);
}


/* ============================================================
   04. CONTENT
   ============================================================ */

.lsw-gallery-hero__content {
    position: relative;

    z-index: 8;

    max-width: 690px;
}


/* ============================================================
   05. EYEBROW
   ============================================================ */

.lsw-gallery-hero__eyebrow {
    display: flex;

    align-items: center;

    gap: 14px;

    width: fit-content;

    margin-bottom:
        clamp(
            18px,
            2.5vh,
            28px
        );

    font-size: 0.76rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.14em;

    text-transform: uppercase;

    color:
        var(--lsw-forest-700);
}


.lsw-gallery-hero__eyebrow span:first-child {
    color:
        var(--lsw-gold-700);
}


.lsw-gallery-hero__eyebrow i {
    width: 53px;
    height: 1px;

    background:
        var(--lsw-gold-600);

    transform-origin:
        left center;
}


/* ============================================================
   06. TITLE
   ============================================================ */

.lsw-gallery-hero__title {
    max-width: 720px;

    margin: 0;

    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            3.65rem,
            5.6vw,
            6.4rem
        );

    font-weight: 500;

    line-height: 0.9;

    letter-spacing: -0.05em;

    color:
        var(--lsw-charcoal);
}


.lsw-gallery-hero__title-mask {
    display: block;

    overflow: hidden;

    padding-bottom: 0.055em;
}


.lsw-gallery-hero__title-mask > span {
    display: block;
}


.lsw-gallery-hero__title-accent {
    color:
        var(--lsw-forest-800);
}


/* ============================================================
   07. DIVIDER
   ============================================================ */

.lsw-gallery-hero__divider {
    display: flex;

    align-items: center;

    width:
        min(
            100%,
            350px
        );

    margin:
        clamp(18px, 2.4vh, 27px)
        0;
}


.lsw-gallery-hero__divider-line {
    flex: 1;

    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--lsw-gold-500),
            rgba(180, 140, 69, 0.13)
        );

    transform-origin:
        left center;
}


.lsw-gallery-hero__divider-mark {
    display: grid;

    place-items: center;

    width: 18px;
    height: 18px;

    margin-left: -1px;

    background:
        var(--lsw-ivory-soft);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(30deg);
}


.lsw-gallery-hero__divider-mark span {
    width: 4px;
    height: 4px;

    background:
        var(--lsw-gold-700);
}


/* ============================================================
   08. DESCRIPTION
   ============================================================ */

.lsw-gallery-hero__description {
    max-width: 560px;

    margin:
        0
        0
        clamp(
            22px,
            3vh,
            33px
        );

    font-size:
        clamp(
            1rem,
            0.97rem + 0.17vw,
            1.1rem
        );

    line-height: 1.7;

    color:
        var(--lsw-text-soft);

    text-wrap: pretty;
}


/* ============================================================
   09. ACTION
   ============================================================ */

.lsw-gallery-hero__action {
    position: relative;

    display: inline-flex;

    align-items: center;
    justify-content: center;

    gap: 17px;

    min-height: 55px;

    padding:
        14px
        22px;

    overflow: hidden;

    color:
        var(--lsw-white);

    background:
        var(--lsw-forest-800);

    border:
        1px solid
        var(--lsw-forest-800);

    border-radius:
        var(--lsw-radius-sm);

    box-shadow:
        0 12px 30px
        rgba(36, 59, 42, 0.12);

    font-size: 0.8rem;

    font-weight: 700;

    letter-spacing: 0.075em;

    text-transform: uppercase;

    isolation: isolate;

    transition:
        color
        420ms
        var(--lsw-ease),
        border-color
        420ms
        var(--lsw-ease),
        transform
        420ms
        var(--lsw-ease),
        box-shadow
        420ms
        var(--lsw-ease);
}


.lsw-gallery-hero__action::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -1;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        right center;

    transition:
        transform
        520ms
        var(--lsw-ease);
}


.lsw-gallery-hero__action:hover::before {
    transform:
        scaleX(1);

    transform-origin:
        left center;
}


.lsw-gallery-hero__action:hover {
    color:
        var(--lsw-forest-950);

    border-color:
        var(--lsw-gold-500);

    transform:
        translateY(-2px);

    box-shadow:
        var(--lsw-shadow-gold);
}


.lsw-gallery-hero__action svg {
    width: 19px;
    height: 19px;

    color:
        var(--lsw-gold-300);

    transition:
        color
        380ms
        var(--lsw-ease),
        transform
        380ms
        var(--lsw-ease);
}


.lsw-gallery-hero__action:hover svg {
    color:
        var(--lsw-forest-950);

    transform:
        translateY(3px);
}


/* ============================================================
   10. SERVICE MICRO INDEX
   ============================================================ */

.lsw-gallery-hero__services {
    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap: 9px;

    max-width: 590px;

    margin-top:
        clamp(
            22px,
            3vh,
            34px
        );

    font-size: 0.67rem;

    font-weight: 700;

    line-height: 1.4;

    letter-spacing: 0.08em;

    text-transform: uppercase;

    color:
        var(--lsw-text-muted);
}


.lsw-gallery-hero__services i {
    width: 5px;
    height: 5px;

    border:
        1px solid
        var(--lsw-gold-600);

    transform:
        rotate(45deg);
}


/* ============================================================
   11. VISUAL
   ============================================================ */

.lsw-gallery-hero__visual {
    position: relative;

    width: 100%;
    height: 100%;

    min-width: 0;
    min-height: 0;
}


/* ============================================================
   12. MAIN IMAGE
   ============================================================ */

.lsw-gallery-hero__image {
    position: absolute;

    z-index: 3;

    top: 1%;
    right: 0;

    width: 88%;
    height: 89%;

    margin: 0;

    overflow: hidden;

    background:
        var(--lsw-limestone);

    clip-path:
        polygon(
            15% 0,
            100% 0,
            100% 78%,
            91% 100%,
            0 100%,
            0 24%
        );

    box-shadow:
        0 28px 74px
        rgba(24, 38, 28, 0.16);
}


.lsw-gallery-hero__image::after {
    content: "";

    position: absolute;

    inset: 0;

    z-index: 3;

    pointer-events: none;

    box-shadow:
        inset 0 0 0 1px
        rgba(255, 255, 255, 0.28);
}


/* ============================================================
   13. MAIN MEDIA
   ============================================================ */

.lsw-gallery-hero__media {
    position: absolute;

    inset: 0;

    transform:
        translate3d(
            var(--gallery-main-x, 0px),
            var(--gallery-main-y, 0px),
            0
        )
        scale(1.045);

    will-change:
        transform;
}


.lsw-gallery-hero__media img {
    width: 100%;
    height: 100%;

    object-fit: cover;

    object-position: center;
}


/* ============================================================
   14. DETAIL CROP
   ============================================================ */

.lsw-gallery-hero__detail {
    position: absolute;

    z-index: 7;

    left: 0;
    bottom: 1%;

    width: 31%;
    height: 37%;

    margin: 0;

    overflow: hidden;

    background:
        var(--lsw-limestone);

    border:
        7px solid
        var(--lsw-ivory-soft);

    clip-path:
        polygon(
            16% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 18%
        );

    box-shadow:
        0 22px 50px
        rgba(24, 38, 28, 0.18);
}


.lsw-gallery-hero__detail-media {
    position: absolute;

    inset: 0;

    transform:
        translate3d(
            var(--gallery-detail-x, 0px),
            var(--gallery-detail-y, 0px),
            0
        )
        scale(1.1);

    will-change:
        transform;
}


.lsw-gallery-hero__detail-media img {
    width: 100%;
    height: 100%;

    object-fit: cover;

    object-position:
        72% 55%;
}


/* ============================================================
   15. VERTICAL GOLD LINE
   ============================================================ */

.lsw-gallery-hero__visual-line {
    position: absolute;

    z-index: 9;

    top: 0;
    left: 11%;

    width: 1px;
    height: 31%;

    background:
        var(--lsw-gold-500);

    transform-origin:
        top center;
}


/* ============================================================
   16. CATEGORY INDEX
   ============================================================ */

.lsw-gallery-hero__index {
    position: absolute;

    z-index: 10;

    top: 9%;
    right: 2%;

    display: flex;

    align-items: center;

    gap: 14px;

    padding:
        13px
        15px;

    color:
        var(--lsw-ivory-soft);

    background:
        rgba(29, 48, 34, 0.86);

    border-left:
        2px solid
        var(--lsw-gold-500);

    backdrop-filter:
        blur(8px);

    -webkit-backdrop-filter:
        blur(8px);
}


.lsw-gallery-hero__index-number {
    font-family:
        var(--lsw-font-display);

    font-size: 2.4rem;

    font-weight: 500;

    line-height: 0.8;

    color:
        var(--lsw-gold-300);
}


.lsw-gallery-hero__index-copy {
    display: grid;

    gap: 3px;
}


.lsw-gallery-hero__index-copy small {
    font-size: 0.62rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    text-transform: uppercase;

    color:
        rgba(245, 241, 232, 0.60);
}


.lsw-gallery-hero__index-copy strong {
    font-family:
        var(--lsw-font-display);

    font-size: 1.05rem;

    font-weight: 600;

    line-height: 0.95;

    color:
        var(--lsw-ivory-soft);
}


/* ============================================================
   17. MEDALLION
   ============================================================ */

.lsw-gallery-hero__medallion {
    position: absolute;

    z-index: 11;

    right: 1%;
    bottom: 2%;

    width:
        clamp(
            78px,
            7vw,
            110px
        );

    aspect-ratio: 1;

    display: grid;

    place-items: center;

    background:
        var(--lsw-gold-500);

    clip-path:
        polygon(
            25% 6.7%,
            75% 6.7%,
            100% 50%,
            75% 93.3%,
            25% 93.3%,
            0 50%
        );

    filter:
        drop-shadow(
            0 15px 26px
            rgba(24, 38, 28, 0.19)
        );
}


.lsw-gallery-hero__medallion-inner {
    position: absolute;

    inset: 3px;

    display: grid;

    place-items: center;

    background:
        var(--lsw-ivory);

    clip-path: inherit;
}


.lsw-gallery-hero__medallion img {
    width: 56%;
    height: 56%;

    object-fit: contain;

    opacity: 0.13;

    filter:
        grayscale(1);
}


/* ============================================================
   18. CAPTION
   ============================================================ */

.lsw-gallery-hero__caption {
    position: absolute;

    z-index: 9;

    right: 16%;
    bottom: 3.8%;

    display: flex;

    align-items: center;

    gap: 9px;

    padding:
        8px
        11px;

    color:
        var(--lsw-ivory-soft);

    background:
        rgba(29, 48, 34, 0.72);

    font-size: 0.62rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    text-transform: uppercase;

    backdrop-filter:
        blur(6px);

    -webkit-backdrop-filter:
        blur(6px);
}


.lsw-gallery-hero__caption i {
    width: 5px;
    height: 5px;

    border:
        1px solid
        var(--lsw-gold-300);

    transform:
        rotate(45deg);
}


/* ============================================================
   19. BOTTOM TRANSITION
   ============================================================ */

.lsw-gallery-hero__bottom {
    position: absolute;

    z-index: 12;

    left: 0;
    bottom: 0;

    width: 30%;
    height: 28px;

    pointer-events: none;
}


.lsw-gallery-hero__bottom-line {
    position: absolute;

    left: 0;
    bottom: 0;

    width: 100%;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--lsw-gold-500),
            rgba(180, 140, 69, 0)
        );
}


.lsw-gallery-hero__bottom-mark {
    position: absolute;

    right: 4%;
    bottom: -6px;

    width: 13px;
    height: 13px;

    background:
        var(--lsw-ivory-soft);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(30deg);
}


/* ============================================================
   20. SHORT VIEWPORT
   ============================================================ */

.lsw-gallery-hero.is-short
.lsw-gallery-hero__inner {
    padding-block: 12px;
}


.lsw-gallery-hero.is-short
.lsw-gallery-hero__eyebrow {
    margin-bottom: 10px;
}


.lsw-gallery-hero.is-short
.lsw-gallery-hero__title {
    font-size:
        clamp(
            3rem,
            4.5vw,
            4.7rem
        );
}


.lsw-gallery-hero.is-short
.lsw-gallery-hero__divider {
    margin:
        11px
        0;
}


.lsw-gallery-hero.is-short
.lsw-gallery-hero__description {
    margin-bottom: 14px;

    line-height: 1.5;
}


.lsw-gallery-hero.is-short
.lsw-gallery-hero__services {
    margin-top: 14px;
}


/* ============================================================
   21. INITIAL STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-hero__eyebrow {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
.lsw-gallery-hero__eyebrow i {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-hero__title-mask > span {
    opacity: 0.1;

    transform:
        translateY(112%);
}


html.lsw-js
.lsw-gallery-hero__divider-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-hero__divider-mark {
    opacity: 0;

    transform:
        rotate(30deg)
        scale(0.4);
}


html.lsw-js
.lsw-gallery-hero__description,
html.lsw-js
.lsw-gallery-hero__action,
html.lsw-js
.lsw-gallery-hero__services {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-hero__image {
    opacity: 0;

    clip-path:
        polygon(
            15% 0,
            15% 0,
            15% 100%,
            0 100%,
            0 24%
        );
}


html.lsw-js
.lsw-gallery-hero__detail {
    opacity: 0;

    transform:
        translate(-25px, 23px);
}


html.lsw-js
.lsw-gallery-hero__visual-line {
    transform:
        scaleY(0);
}


html.lsw-js
.lsw-gallery-hero__index {
    opacity: 0;

    transform:
        translateX(18px);
}


html.lsw-js
.lsw-gallery-hero__medallion {
    opacity: 0;

    transform:
        rotate(-18deg)
        scale(0.72);
}


html.lsw-js
.lsw-gallery-hero__caption {
    opacity: 0;

    transform:
        translateY(12px);
}


/* ============================================================
   22. READY STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__eyebrow {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__eyebrow i {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        190ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1050ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__title-mask:nth-child(1) > span {
    transition-delay: 160ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__title-mask:nth-child(2) > span {
    transition-delay: 250ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__title-mask:nth-child(3) > span {
    transition-delay: 340ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__divider-line {
    transform:
        scaleX(1);

    transition:
        transform
        950ms
        var(--lsw-ease)
        450ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__divider-mark {
    opacity: 1;

    transform:
        rotate(30deg)
        scale(1);

    transition:
        opacity
        450ms
        ease
        590ms,
        transform
        700ms
        var(--lsw-ease)
        570ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__description {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        500ms,
        transform
        850ms
        var(--lsw-ease)
        500ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__action {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        610ms,
        transform
        850ms
        var(--lsw-ease)
        610ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__services {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        700ms,
        transform
        850ms
        var(--lsw-ease)
        700ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__image {
    opacity: 1;

    clip-path:
        polygon(
            15% 0,
            100% 0,
            100% 78%,
            91% 100%,
            0 100%,
            0 24%
        );

    transition:
        opacity
        700ms
        ease
        130ms,
        clip-path
        1250ms
        var(--lsw-ease)
        130ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__detail {
    opacity: 1;

    transform:
        translate(0, 0);

    transition:
        opacity
        650ms
        ease
        480ms,
        transform
        950ms
        var(--lsw-ease)
        480ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__visual-line {
    transform:
        scaleY(1);

    transition:
        transform
        1100ms
        var(--lsw-ease)
        420ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__index {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        600ms
        ease
        620ms,
        transform
        850ms
        var(--lsw-ease)
        620ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__medallion {
    opacity: 1;

    transform:
        rotate(0)
        scale(1);

    transition:
        opacity
        550ms
        ease
        720ms,
        transform
        900ms
        var(--lsw-ease)
        680ms;
}


html.lsw-js
.lsw-gallery-hero.is-ready
.lsw-gallery-hero__caption {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        600ms
        ease
        730ms,
        transform
        800ms
        var(--lsw-ease)
        730ms;
}


/* ============================================================
   23. REDUCED MOTION
   ============================================================ */

html.lsw-reduced-motion
.lsw-gallery-hero__media,
html.lsw-reduced-motion
.lsw-gallery-hero__detail-media {
    transform:
        scale(1.04) !important;
}


/* ============================================================
   24. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-gallery-hero__inner {
        grid-template-columns:
            minmax(500px, 0.82fr)
            minmax(620px, 1.18fr);
    }

}


/* ============================================================
   25. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-gallery-hero {
        height:
            min(
                610px,
                calc(
                    100svh -
                    var(--lsw-header-height)
                )
            );
    }


    .lsw-gallery-hero__inner {
        grid-template-columns:
            minmax(0, 0.9fr)
            minmax(0, 1.1fr);

        gap: 35px;

        width:
            calc(100% - 54px);

        padding-block: 21px;
    }


    .lsw-gallery-hero__title {
        font-size:
            clamp(
                3.1rem,
                6vw,
                4.7rem
            );
    }


    .lsw-gallery-hero__description {
        font-size: 0.98rem;

        line-height: 1.58;
    }


    .lsw-gallery-hero__services {
        font-size: 0.63rem;
    }


    .lsw-gallery-hero__image {
        width: 92%;
    }


    .lsw-gallery-hero__detail {
        width: 34%;
    }


    .lsw-gallery-hero__index {
        padding:
            11px
            12px;
    }


    .lsw-gallery-hero__caption {
        display: none;
    }

}


/* ============================================================
   26. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-gallery-hero {
        height:
            min(
                650px,
                calc(
                    100svh -
                    var(--lsw-header-height)
                )
            );
    }


    .lsw-gallery-hero__inner {
        grid-template-columns: 1fr;

        grid-template-rows:
            auto
            minmax(0, 1fr);

        align-items: stretch;

        gap:
            clamp(
                13px,
                2vh,
                19px
            );

        width:
            calc(100% - 38px);

        padding:
            17px
            0
            12px;
    }


    .lsw-gallery-hero__eyebrow {
        gap: 9px;

        margin-bottom: 10px;

        font-size: 0.63rem;
    }


    .lsw-gallery-hero__eyebrow i {
        width: 32px;
    }


    .lsw-gallery-hero__title {
        max-width: 610px;

        font-size:
            clamp(
                2.65rem,
                8.6vw,
                3.65rem
            );
    }


    .lsw-gallery-hero__divider {
        width: 220px;

        margin:
            9px
            0;
    }


    .lsw-gallery-hero__description {
        max-width: 570px;

        margin-bottom: 11px;

        font-size: 0.91rem;

        line-height: 1.46;
    }


    .lsw-gallery-hero__action {
        min-height: 44px;

        padding:
            10px
            14px;

        font-size: 0.69rem;
    }


    .lsw-gallery-hero__services {
        margin-top: 11px;

        font-size: 0.59rem;
    }


    .lsw-gallery-hero__visual {
        min-height: 0;
    }


    .lsw-gallery-hero__image {
        top: 0;

        width: 92%;
        height: 100%;

        clip-path:
            polygon(
                10% 0,
                100% 0,
                100% 81%,
                90% 100%,
                0 100%,
                0 19%
            );
    }


    .lsw-gallery-hero__detail {
        width: 28%;
        height: 45%;

        border-width: 5px;
    }


    .lsw-gallery-hero__medallion {
        width: 62px;
    }


    .lsw-gallery-hero__index {
        top: 9px;
        right: 8px;
    }


    .lsw-gallery-hero__index-number {
        font-size: 1.9rem;
    }


    .lsw-gallery-hero__index-copy strong {
        font-size: 0.9rem;
    }

}


/* ============================================================
   27. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-gallery-hero {
        height:
            min(
                620px,
                calc(
                    100svh -
                    var(--lsw-header-height)
                )
            );
    }


    .lsw-gallery-hero__inner {
        grid-template-columns: 1fr;

        grid-template-rows:
            auto
            minmax(0, 1fr);

        gap: 9px;

        width:
            calc(100% - 28px);

        padding:
            11px
            0
            8px;
    }


    .lsw-gallery-hero__eyebrow {
        gap: 7px;

        margin-bottom: 7px;

        font-size: 0.58rem;

        letter-spacing: 0.1em;
    }


    .lsw-gallery-hero__eyebrow i {
        width: 23px;
    }


    .lsw-gallery-hero__title {
        font-size:
            clamp(
                2.2rem,
                10.5vw,
                2.95rem
            );

        line-height: 0.9;
    }


    .lsw-gallery-hero__divider {
        width: 180px;

        margin:
            7px
            0;
    }


    .lsw-gallery-hero__divider-mark {
        width: 14px;
        height: 14px;
    }


    .lsw-gallery-hero__description {
        max-width: 440px;

        margin-bottom: 8px;

        font-size: 0.82rem;

        line-height: 1.4;
    }


    .lsw-gallery-hero__action {
        min-height: 42px;

        padding:
            9px
            12px;

        gap: 10px;

        font-size: 0.62rem;
    }


    .lsw-gallery-hero__action svg {
        width: 15px;
        height: 15px;
    }


    .lsw-gallery-hero__services {
        margin-top: 8px;

        gap: 6px;

        font-size: 0.54rem;
    }


    .lsw-gallery-hero__visual {
        min-height: 0;
    }


    .lsw-gallery-hero__image {
        top: 0;

        width: 94%;
        height: 100%;

        clip-path:
            polygon(
                9% 0,
                100% 0,
                100% 83%,
                89% 100%,
                0 100%,
                0 18%
            );
    }


    .lsw-gallery-hero__detail {
        width: 29%;
        height: 43%;

        border-width: 4px;
    }


    .lsw-gallery-hero__medallion {
        width: 50px;
    }


    .lsw-gallery-hero__index {
        top: 7px;
        right: 6px;

        gap: 8px;

        padding:
            8px
            9px;
    }


    .lsw-gallery-hero__index-number {
        font-size: 1.55rem;
    }


    .lsw-gallery-hero__index-copy small {
        display: none;
    }


    .lsw-gallery-hero__index-copy strong {
        font-size: 0.77rem;
    }


    .lsw-gallery-hero__caption {
        display: none;
    }


    /*
        Preserve Header + Hero <= 100svh
        on especially short devices.
    */

    .lsw-gallery-hero.is-short
    .lsw-gallery-hero__description {
        display: none;
    }


    .lsw-gallery-hero.is-short
    .lsw-gallery-hero__services {
        display: none;
    }

}




































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   03. SERVICE NAVIGATION
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-service-nav {
    position: sticky;

    top:
        var(
            --lsw-header-height,
            var(--lsw-header-offset)
        );

    z-index: 180;

    width: 100%;

    color:
        var(--lsw-text);

    background:
        rgba(245, 241, 232, 0.97);

    border-top:
        1px solid
        rgba(36, 59, 42, 0.09);

    border-bottom:
        1px solid
        rgba(36, 59, 42, 0.13);

    box-shadow:
        0 10px 32px
        rgba(24, 38, 28, 0.055);

    backdrop-filter:
        blur(15px);

    -webkit-backdrop-filter:
        blur(15px);

    isolation: isolate;
}


/* ============================================================
   02. DECORATION
   ============================================================ */

.lsw-gallery-service-nav__decoration {
    position: absolute;

    inset: 0;

    z-index: -1;

    overflow: hidden;

    pointer-events: none;
}


.lsw-gallery-service-nav__gold-line {
    position: absolute;

    top: 0;
    left: 0;

    width: 15%;
    height: 2px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        left center;
}


.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-nav__gold-line {
    transform:
        scaleX(1);

    transition:
        transform
        1000ms
        var(--lsw-ease);
}


.lsw-gallery-service-nav__gold-mark {
    position: absolute;

    top: -5px;
    left: 14.5%;

    width: 11px;
    height: 11px;

    background:
        var(--lsw-ivory);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg)
        scale(0);
}


.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-nav__gold-mark {
    transform:
        rotate(45deg)
        scale(1);

    transition:
        transform
        650ms
        var(--lsw-ease)
        550ms;
}


/* ============================================================
   03. INNER LAYOUT
   ============================================================ */

.lsw-gallery-service-nav__inner {
    display: grid;

    grid-template-columns:
        minmax(180px, 0.18fr)
        minmax(0, 0.82fr);

    align-items: stretch;

    min-height: 108px;
}


/* ============================================================
   04. META
   ============================================================ */

.lsw-gallery-service-nav__meta {
    display: flex;

    align-items: center;

    gap: 17px;

    padding:
        18px
        clamp(
            22px,
            2.2vw,
            35px
        )
        18px
        0;

    border-right:
        1px solid
        rgba(36, 59, 42, 0.12);
}


.lsw-gallery-service-nav__index {
    display: grid;

    justify-items: center;

    gap: 7px;
}


.lsw-gallery-service-nav__index span {
    font-family:
        var(--lsw-font-display);

    font-size: 1.8rem;

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-service-nav__index i {
    width: 1px;
    height: 25px;

    background:
        var(--lsw-gold-500);
}


.lsw-gallery-service-nav__kicker {
    display: block;

    margin-bottom: 4px;

    font-size: 0.68rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.13em;

    text-transform: uppercase;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-service-nav__meta h2 {
    margin: 0;

    font-family:
        var(--lsw-font-display);

    font-size: 1.6rem;

    font-weight: 600;

    line-height: 1;

    letter-spacing: -0.025em;

    color:
        var(--lsw-forest-800);
}


/* ============================================================
   05. SERVICE RAIL
   ============================================================ */

.lsw-gallery-service-nav__rail {
    display: grid;

    grid-template-columns:
        repeat(
            6,
            minmax(0, 1fr)
        );

    min-width: 0;
}


/* ============================================================
   06. SERVICE LINK
   ============================================================ */

.lsw-gallery-service-link {
    position: relative;

    display: grid;

    grid-template-columns:
        auto
        minmax(0, 1fr);

    align-content: center;

    gap:
        6px
        10px;

    min-width: 0;
    min-height: 108px;

    padding:
        17px
        clamp(
            12px,
            1.2vw,
            19px
        );

    overflow: hidden;

    border-right:
        1px solid
        rgba(36, 59, 42, 0.09);

    color:
        var(--lsw-text-soft);

    background:
        transparent;

    transition:
        color
        380ms
        var(--lsw-ease),
        background-color
        380ms
        var(--lsw-ease);
}


.lsw-gallery-service-link:last-child {
    border-right: 0;
}


/* Active architectural plane */

.lsw-gallery-service-link::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -1;

    opacity: 0;

    background:
        linear-gradient(
            145deg,
            rgba(36, 59, 42, 0.06),
            rgba(36, 59, 42, 0.018)
        );

    clip-path:
        polygon(
            0 0,
            90% 0,
            100% 22%,
            100% 100%,
            0 100%
        );

    transition:
        opacity
        380ms
        var(--lsw-ease);
}


/* Gold active line */

.lsw-gallery-service-link::after {
    content: "";

    position: absolute;

    left: 0;
    bottom: 0;

    width: 100%;
    height: 3px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        left center;

    transition:
        transform
        480ms
        var(--lsw-ease);
}


.lsw-gallery-service-link:hover,
.lsw-gallery-service-link.is-active {
    color:
        var(--lsw-forest-800);
}


.lsw-gallery-service-link:hover::before,
.lsw-gallery-service-link.is-active::before {
    opacity: 1;
}


.lsw-gallery-service-link.is-active::after {
    transform:
        scaleX(1);
}


/* ============================================================
   07. NUMBER
   ============================================================ */

.lsw-gallery-service-link__number {
    align-self: start;

    padding-top: 2px;

    font-size: 0.65rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.08em;

    color:
        var(--lsw-gold-700);

    transition:
        color
        350ms
        var(--lsw-ease);
}


.lsw-gallery-service-link.is-active
.lsw-gallery-service-link__number {
    color:
        var(--lsw-gold-600);
}


/* ============================================================
   08. NAME
   ============================================================ */

.lsw-gallery-service-link__name {
    align-self: center;

    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            1rem,
            1.15vw,
            1.27rem
        );

    font-weight: 600;

    line-height: 1.02;

    letter-spacing: -0.025em;

    text-wrap: balance;
}


.lsw-gallery-service-link__name > span {
    display: block;
}


/* ============================================================
   09. FACET MARK
   ============================================================ */

.lsw-gallery-service-link__mark {
    position: absolute;

    top: 15px;
    right: 13px;

    width: 7px;
    height: 7px;

    opacity: 0;

    border:
        1px solid
        var(--lsw-gold-600);

    transform:
        rotate(45deg)
        scale(0.6);

    transition:
        opacity
        350ms
        var(--lsw-ease),
        transform
        450ms
        var(--lsw-ease),
        background-color
        350ms
        var(--lsw-ease);
}


.lsw-gallery-service-link:hover
.lsw-gallery-service-link__mark,
.lsw-gallery-service-link.is-active
.lsw-gallery-service-link__mark {
    opacity: 1;

    transform:
        rotate(135deg)
        scale(1);
}


.lsw-gallery-service-link.is-active
.lsw-gallery-service-link__mark {
    background:
        var(--lsw-gold-500);
}


/* ============================================================
   10. INITIAL REVEAL
   ============================================================ */

html.lsw-js
.lsw-gallery-service-nav__meta {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
.lsw-gallery-service-link {
    opacity: 0;

    transform:
        translateY(13px);
}


/* ============================================================
   11. VISIBLE
   ============================================================ */

html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-nav__meta {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        600ms
        ease
        80ms,
        transform
        800ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        550ms
        ease,
        transform
        750ms
        var(--lsw-ease),
        color
        380ms
        var(--lsw-ease),
        background-color
        380ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(1) {
    transition-delay: 150ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(2) {
    transition-delay: 205ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(3) {
    transition-delay: 260ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(4) {
    transition-delay: 315ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(5) {
    transition-delay: 370ms;
}


html.lsw-js
.lsw-gallery-service-nav.is-visible
.lsw-gallery-service-link:nth-child(6) {
    transition-delay: 425ms;
}


/* ============================================================
   12. REDUCED MOTION
   ============================================================ */

html.lsw-reduced-motion
.lsw-gallery-service-nav,
html.lsw-reduced-motion
.lsw-gallery-service-link {
    scroll-behavior: auto;
}


/* ============================================================
   13. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-gallery-service-nav__inner {
        min-height: 110px;
    }


    .lsw-gallery-service-link {
        min-height: 110px;
    }

}


/* ============================================================
   14. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-gallery-service-nav__inner {
        grid-template-columns:
            160px
            minmax(0, 1fr);

        min-height: 100px;
    }


    .lsw-gallery-service-nav__meta {
        gap: 11px;

        padding-right: 18px;
    }


    .lsw-gallery-service-nav__index span {
        font-size: 1.5rem;
    }


    .lsw-gallery-service-nav__meta h2 {
        font-size: 1.3rem;
    }


    .lsw-gallery-service-nav__kicker {
        font-size: 0.61rem;
    }


    .lsw-gallery-service-nav__rail {
        display: flex;

        overflow-x: auto;
        overflow-y: hidden;

        scrollbar-width: none;

        scroll-snap-type:
            x proximity;

        overscroll-behavior-inline:
            contain;
    }


    .lsw-gallery-service-nav__rail::-webkit-scrollbar {
        display: none;
    }


    .lsw-gallery-service-link {
        flex:
            0
            0
            155px;

        min-height: 100px;

        scroll-snap-align: start;
    }


    .lsw-gallery-service-link:last-child {
        flex-basis: 190px;
    }


    .lsw-gallery-service-link__name {
        font-size: 1rem;
    }

}


/* ============================================================
   15. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-gallery-service-nav {
        position: relative;

        top: auto;

        z-index: 10;
    }


    .lsw-gallery-service-nav__inner {
        display: block;

        width: 100%;

        min-height: 0;
    }


    .lsw-gallery-service-nav__meta {
        gap: 12px;

        padding:
            19px
            20px
            16px;

        border-right: 0;

        border-bottom:
            1px solid
            rgba(36, 59, 42, 0.10);
    }


    .lsw-gallery-service-nav__index {
        grid-template-columns:
            auto
            25px;

        align-items: center;

        gap: 8px;
    }


    .lsw-gallery-service-nav__index span {
        font-size: 1.45rem;
    }


    .lsw-gallery-service-nav__index i {
        width: 25px;
        height: 1px;
    }


    .lsw-gallery-service-nav__meta h2 {
        font-size: 1.45rem;
    }


    .lsw-gallery-service-nav__rail {
        display: flex;

        width: 100%;

        overflow-x: auto;
        overflow-y: hidden;

        padding-left: 20px;
        padding-right: 20px;

        scrollbar-width: none;

        scroll-snap-type:
            x mandatory;

        overscroll-behavior-inline:
            contain;
    }


    .lsw-gallery-service-nav__rail::-webkit-scrollbar {
        display: none;
    }


    .lsw-gallery-service-link {
        flex:
            0
            0
            172px;

        min-height: 88px;

        padding:
            15px
            15px;

        scroll-snap-align: start;

        border-right:
            1px solid
            rgba(36, 59, 42, 0.09);
    }


    .lsw-gallery-service-link:last-child {
        flex-basis: 215px;

        border-right:
            1px solid
            rgba(36, 59, 42, 0.09);
    }


    .lsw-gallery-service-link__name {
        font-size: 1.08rem;
    }


    .lsw-gallery-service-link::after {
        height: 2px;
    }

}


/* ============================================================
   16. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-gallery-service-nav {
        position: relative;

        top: auto;

        z-index: 10;
    }


    .lsw-gallery-service-nav__inner {
        display: block;

        width: 100%;

        min-height: 0;
    }


    .lsw-gallery-service-nav__gold-line {
        width: 27%;
    }


    .lsw-gallery-service-nav__gold-mark {
        left: 26%;
    }


    .lsw-gallery-service-nav__meta {
        gap: 10px;

        padding:
            17px
            15px
            14px;

        border-right: 0;

        border-bottom:
            1px solid
            rgba(36, 59, 42, 0.10);
    }


    .lsw-gallery-service-nav__index {
        grid-template-columns:
            auto
            21px;

        align-items: center;

        gap: 7px;
    }


    .lsw-gallery-service-nav__index span {
        font-size: 1.3rem;
    }


    .lsw-gallery-service-nav__index i {
        width: 21px;
        height: 1px;
    }


    .lsw-gallery-service-nav__kicker {
        margin-bottom: 2px;

        font-size: 0.61rem;
    }


    .lsw-gallery-service-nav__meta h2 {
        font-size: 1.3rem;
    }


    .lsw-gallery-service-nav__rail {
        display: flex;

        width: 100%;

        overflow-x: auto;
        overflow-y: hidden;

        padding-left: 15px;
        padding-right: 15px;

        scrollbar-width: none;

        scroll-snap-type:
            x mandatory;

        overscroll-behavior-inline:
            contain;

        -webkit-overflow-scrolling:
            touch;
    }


    .lsw-gallery-service-nav__rail::-webkit-scrollbar {
        display: none;
    }


    .lsw-gallery-service-link {
        flex:
            0
            0
            155px;

        min-height: 82px;

        padding:
            14px
            13px;

        scroll-snap-align: start;
    }


    .lsw-gallery-service-link:last-child {
        flex-basis: 195px;
    }


    .lsw-gallery-service-link__number {
        font-size: 0.62rem;
    }


    .lsw-gallery-service-link__name {
        font-size: 1rem;

        line-height: 1.03;
    }


    .lsw-gallery-service-link__mark {
        top: 12px;
        right: 10px;
    }


    .lsw-gallery-service-link::after {
        height: 2px;
    }

}





































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   04. GALLERY INTRO
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-intro {
    position: relative;

    padding:
        clamp(95px, 7vw, 130px)
        0
        clamp(78px, 6vw, 110px);

    overflow: hidden;

    color:
        var(--lsw-text);

    background:
        var(--lsw-ivory-soft);

    isolation: isolate;
}


/* Soft mineral illumination */

.lsw-gallery-intro::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 76% 28%,
            rgba(199, 163, 93, 0.07),
            transparent 27%
        ),
        radial-gradient(
            circle at 11% 80%,
            rgba(36, 59, 42, 0.028),
            transparent 28%
        );
}


/* ============================================================
   02. BACKGROUND GEOMETRY
   ============================================================ */

.lsw-gallery-intro__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-gallery-intro__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.05);

    transform:
        rotate(30deg);
}


.lsw-gallery-intro__shape--one {
    top: -125px;
    right: -105px;

    width: 245px;
    height: 245px;
}


.lsw-gallery-intro__shape--two {
    left: -100px;
    bottom: -115px;

    width: 210px;
    height: 210px;

    border-color:
        rgba(180, 140, 69, 0.10);
}


.lsw-gallery-intro__line {
    position: absolute;

    top: 0;
    left: 57%;

    width: 1px;
    height: 120px;

    background:
        linear-gradient(
            180deg,
            rgba(180, 140, 69, 0.40),
            rgba(180, 140, 69, 0)
        );
}


/* ============================================================
   03. MAIN LAYOUT
   ============================================================ */

.lsw-gallery-intro__inner {
    display: grid;

    grid-template-columns:
        minmax(0, 1.25fr)
        minmax(310px, 0.75fr);

    align-items: end;

    gap:
        clamp(
            65px,
            8vw,
            130px
        );
}


/* ============================================================
   04. EYEBROW
   ============================================================ */

.lsw-gallery-intro__eyebrow {
    display: flex;

    align-items: center;

    gap: 14px;

    margin-bottom: 22px;

    font-size: 0.75rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.15em;

    text-transform: uppercase;

    color:
        var(--lsw-forest-700);
}


.lsw-gallery-intro__eyebrow span:first-child {
    color:
        var(--lsw-gold-700);
}


.lsw-gallery-intro__eyebrow i {
    width: 52px;
    height: 1px;

    background:
        var(--lsw-gold-600);

    transform-origin:
        left center;
}


/* ============================================================
   05. TITLE
   ============================================================ */

.lsw-gallery-intro__title {
    max-width: 900px;

    margin: 0;

    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            3.2rem,
            4.9vw,
            5.35rem
        );

    font-weight: 500;

    line-height: 0.94;

    letter-spacing: -0.045em;

    color:
        var(--lsw-charcoal);
}


.lsw-gallery-intro__title-mask {
    display: block;

    overflow: hidden;

    padding-bottom: 0.05em;
}


.lsw-gallery-intro__title-mask > span {
    display: block;
}


.lsw-gallery-intro__title-accent {
    color:
        var(--lsw-forest-800);
}


/* ============================================================
   06. COPY
   ============================================================ */

.lsw-gallery-intro__copy {
    display: grid;

    grid-template-columns:
        auto
        minmax(0, 1fr);

    align-items: start;

    gap: 22px;

    max-width: 480px;
}


.lsw-gallery-intro__copy-mark {
    display: grid;

    place-items: center;

    width: 42px;
    height: 42px;

    margin-top: 3px;

    border:
        1px solid
        rgba(180, 140, 69, 0.52);

    transform:
        rotate(30deg);
}


.lsw-gallery-intro__copy-mark > span {
    width: 11px;
    height: 11px;

    border:
        1px solid
        var(--lsw-forest-700);
}


.lsw-gallery-intro__copy p {
    margin: 0;

    font-size:
        clamp(
            1rem,
            0.96rem + 0.16vw,
            1.09rem
        );

    line-height: 1.72;

    color:
        var(--lsw-text-soft);
}


/* ============================================================
   07. VIEWER NOTE
   ============================================================ */

.lsw-gallery-intro__viewer-note {
    display: flex;

    align-items: center;

    gap: 11px;

    margin-top: 24px;

    padding-top: 17px;

    border-top:
        1px solid
        rgba(36, 59, 42, 0.11);

    font-size: 0.78rem;

    font-weight: 600;

    line-height: 1.45;

    color:
        var(--lsw-forest-700);
}


.lsw-gallery-intro__viewer-icon {
    display: grid;

    place-items: center;

    flex:
        0
        0
        30px;

    width: 30px;
    height: 30px;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-intro__viewer-icon svg {
    width: 22px;
    height: 22px;
}


/* ============================================================
   08. BOTTOM RULE
   ============================================================ */

.lsw-gallery-intro__bottom {
    display: grid;

    grid-template-columns:
        auto
        minmax(40px, 1fr)
        auto
        auto;

    align-items: center;

    gap: 15px;

    margin-top:
        clamp(
            55px,
            5vw,
            78px
        );
}


.lsw-gallery-intro__bottom-number {
    font-family:
        var(--lsw-font-display);

    font-size: 1.35rem;

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-intro__bottom-rule {
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--lsw-gold-600),
            rgba(36, 59, 42, 0.12)
        );

    transform-origin:
        left center;
}


.lsw-gallery-intro__bottom-mark {
    width: 10px;
    height: 10px;

    border:
        1px solid
        var(--lsw-gold-600);

    background:
        var(--lsw-ivory-soft);

    transform:
        rotate(45deg);
}


.lsw-gallery-intro__bottom-label {
    font-size: 0.67rem;

    font-weight: 700;

    letter-spacing: 0.11em;

    text-transform: uppercase;

    color:
        var(--lsw-text-muted);
}


/* ============================================================
   09. INITIAL REVEAL STATES
   ============================================================ */

html.lsw-js
[data-gallery-intro-reveal="eyebrow"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-gallery-intro-reveal="eyebrow"] i {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-intro__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-gallery-intro-reveal="copy"] {
    opacity: 0;

    transform:
        translateY(20px);
}


html.lsw-js
[data-gallery-intro-reveal="bottom"] {
    opacity: 0;

    transform:
        translateY(14px);
}


html.lsw-js
[data-gallery-intro-reveal="bottom"]
.lsw-gallery-intro__bottom-rule {
    transform:
        scaleX(0);
}


/* ============================================================
   10. VISIBLE STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-intro.is-visible
[data-gallery-intro-reveal="eyebrow"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
[data-gallery-intro-reveal="eyebrow"] i {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
.lsw-gallery-intro__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-intro.is-visible
.lsw-gallery-intro__title-mask:nth-child(1) > span {
    transition-delay:
        150ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
.lsw-gallery-intro__title-mask:nth-child(2) > span {
    transition-delay:
        240ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
[data-gallery-intro-reveal="copy"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        340ms,
        transform
        900ms
        var(--lsw-ease)
        340ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
[data-gallery-intro-reveal="bottom"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        500ms,
        transform
        850ms
        var(--lsw-ease)
        500ms;
}


html.lsw-js
.lsw-gallery-intro.is-visible
[data-gallery-intro-reveal="bottom"]
.lsw-gallery-intro__bottom-rule {
    transform:
        scaleX(1);

    transition:
        transform
        1200ms
        var(--lsw-ease)
        610ms;
}


/* ============================================================
   11. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-gallery-intro__inner {
        min-height: 250px;
    }

}


/* ============================================================
   12. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-gallery-intro {
        padding:
            82px
            0
            78px;
    }


    .lsw-gallery-intro__inner {
        grid-template-columns:
            minmax(0, 1.08fr)
            minmax(280px, 0.92fr);

        gap: 45px;
    }


    .lsw-gallery-intro__title {
        font-size:
            clamp(
                2.9rem,
                5.7vw,
                4.2rem
            );
    }


    .lsw-gallery-intro__copy {
        gap: 17px;
    }


    .lsw-gallery-intro__copy-mark {
        width: 36px;
        height: 36px;
    }


    .lsw-gallery-intro__bottom {
        margin-top: 52px;
    }

}


/* ============================================================
   13. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-gallery-intro {
        padding:
            72px
            0
            66px;
    }


    .lsw-gallery-intro__inner {
        grid-template-columns: 1fr;

        gap: 29px;
    }


    .lsw-gallery-intro__title {
        max-width: 650px;

        font-size:
            clamp(
                2.75rem,
                9vw,
                3.75rem
            );
    }


    .lsw-gallery-intro__copy {
        max-width: 590px;
    }


    .lsw-gallery-intro__bottom {
        grid-template-columns:
            auto
            1fr
            auto;

        grid-template-areas:
            "number rule mark"
            ". label label";

        gap:
            11px
            13px;

        margin-top: 45px;
    }


    .lsw-gallery-intro__bottom-number {
        grid-area: number;
    }


    .lsw-gallery-intro__bottom-rule {
        grid-area: rule;
    }


    .lsw-gallery-intro__bottom-mark {
        grid-area: mark;
    }


    .lsw-gallery-intro__bottom-label {
        grid-area: label;

        justify-self: end;
    }

}


/* ============================================================
   14. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-gallery-intro {
        padding:
            62px
            0
            57px;
    }


    .lsw-gallery-intro__inner {
        grid-template-columns: 1fr;

        gap: 24px;
    }


    .lsw-gallery-intro__eyebrow {
        gap: 10px;

        margin-bottom: 15px;

        font-size: 0.65rem;

        letter-spacing: 0.12em;
    }


    .lsw-gallery-intro__eyebrow i {
        width: 35px;
    }


    .lsw-gallery-intro__title {
        font-size:
            clamp(
                2.4rem,
                12vw,
                3.2rem
            );

        line-height: 0.95;
    }


    .lsw-gallery-intro__copy {
        grid-template-columns:
            34px
            minmax(0, 1fr);

        gap: 14px;
    }


    .lsw-gallery-intro__copy-mark {
        width: 32px;
        height: 32px;
    }


    .lsw-gallery-intro__copy-mark > span {
        width: 9px;
        height: 9px;
    }


    .lsw-gallery-intro__copy p {
        font-size: 0.95rem;

        line-height: 1.62;
    }


    .lsw-gallery-intro__viewer-note {
        align-items: flex-start;

        margin-top: 18px;

        padding-top: 15px;

        font-size: 0.76rem;
    }


    .lsw-gallery-intro__viewer-icon {
        flex-basis: 26px;

        width: 26px;
        height: 26px;
    }


    .lsw-gallery-intro__viewer-icon svg {
        width: 20px;
        height: 20px;
    }


    .lsw-gallery-intro__bottom {
        grid-template-columns:
            auto
            1fr
            auto;

        grid-template-areas:
            "number rule mark"
            ". label label";

        gap:
            10px
            11px;

        margin-top: 38px;
    }


    .lsw-gallery-intro__bottom-number {
        grid-area: number;

        font-size: 1.2rem;
    }


    .lsw-gallery-intro__bottom-rule {
        grid-area: rule;
    }


    .lsw-gallery-intro__bottom-mark {
        grid-area: mark;

        width: 8px;
        height: 8px;
    }


    .lsw-gallery-intro__bottom-label {
        grid-area: label;

        justify-self: end;

        font-size: 0.61rem;
    }

}










































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   05. LANDSCAPING
   ============================================================ */


/* ============================================================
   01. SERVICE SECTION
   ============================================================ */

.lsw-gallery-service {
    position: relative;

    scroll-margin-top:
        calc(
            var(--lsw-header-height, 0px) +
            var(--lsw-gallery-nav-height, 0px) +
            18px
        );

    padding:
        clamp(120px, 8.5vw, 160px)
        0
        clamp(105px, 8vw, 145px);

    overflow: hidden;

    isolation: isolate;
}


.lsw-gallery-landscaping {
    color:
        var(--lsw-text);

    background:
        #ECE4D7;
}


/* Mineral lighting */

.lsw-gallery-landscaping::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 83% 13%,
            rgba(199, 163, 93, 0.11),
            transparent 25%
        ),
        radial-gradient(
            circle at 7% 72%,
            rgba(36, 59, 42, 0.045),
            transparent 28%
        );
}


/* ============================================================
   02. TRANSITION FROM GALLERY INTRO
   ============================================================ */

.lsw-gallery-service__transition {
    position: absolute;

    z-index: 5;

    top: -1px;
    left: 0;

    width: 100%;
    height: 70px;

    pointer-events: none;
}


.lsw-gallery-service__transition::before {
    content: "";

    position: absolute;

    top: 0;
    left: 0;

    width: 68%;
    height: 49px;

    background:
        var(--lsw-ivory-soft);

    clip-path:
        polygon(
            0 0,
            100% 0,
            92% 100%,
            0 54%
        );
}


.lsw-gallery-service__transition::after {
    content: "";

    position: absolute;

    top: 0;
    right: 0;

    width: 37%;
    height: 23px;

    background:
        var(--lsw-ivory-soft);

    clip-path:
        polygon(
            15% 0,
            100% 0,
            100% 100%,
            0 100%
        );
}


.lsw-gallery-service__transition-line {
    position: absolute;

    z-index: 4;

    top: 47px;
    left: 9%;

    width: 150px;
    height: 1px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        left center;
}


.lsw-gallery-service.is-visible
.lsw-gallery-service__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1050ms
        var(--lsw-ease);
}


.lsw-gallery-service__transition-mark {
    position: absolute;

    z-index: 5;

    top: 41px;
    left:
        calc(
            9% + 143px
        );

    width: 12px;
    height: 12px;

    border:
        2px solid
        var(--lsw-gold-500);

    background:
        #ECE4D7;

    transform:
        rotate(30deg)
        scale(0);
}


.lsw-gallery-service.is-visible
.lsw-gallery-service__transition-mark {
    transform:
        rotate(30deg)
        scale(1);

    transition:
        transform
        680ms
        var(--lsw-ease)
        520ms;
}


/* ============================================================
   03. BACKGROUND ARCHITECTURE
   ============================================================ */

.lsw-gallery-service__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-gallery-service__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.055);

    transform:
        rotate(30deg);
}


.lsw-gallery-service__shape--one {
    top: 8%;
    right: -125px;

    width: 295px;
    height: 295px;
}


.lsw-gallery-service__shape--two {
    left: -135px;
    bottom: 10%;

    width: 260px;
    height: 260px;

    border-color:
        rgba(180, 140, 69, 0.11);
}


.lsw-gallery-service__grid-detail {
    position: absolute;

    right: 5%;
    bottom: 4%;

    width: 205px;
    height: 205px;

    opacity: 0.025;

    background-image:
        linear-gradient(
            var(--lsw-forest-900) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            var(--lsw-forest-900) 1px,
            transparent 1px
        );

    background-size:
        34px 34px;

    transform:
        rotate(5deg);
}


/* ============================================================
   04. HEADER
   ============================================================ */

.lsw-gallery-service__header {
    display: grid;

    grid-template-columns:
        160px
        minmax(0, 1.25fr)
        minmax(320px, 0.75fr);

    align-items: end;

    gap:
        clamp(
            38px,
            5vw,
            80px
        );

    margin-bottom:
        clamp(
            48px,
            5vw,
            75px
        );
}


/* ============================================================
   05. IDENTITY
   ============================================================ */

.lsw-gallery-service__identity {
    align-self: start;

    display: grid;

    justify-items: start;

    gap: 11px;
}


.lsw-gallery-service__number {
    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            3.4rem,
            4.6vw,
            5.15rem
        );

    font-weight: 500;

    line-height: 0.82;

    letter-spacing: -0.055em;

    color:
        rgba(36, 59, 42, 0.22);
}


.lsw-gallery-service__identity-line {
    width: 74px;
    height: 1px;

    background:
        var(--lsw-gold-600);

    transform-origin:
        left center;
}


.lsw-gallery-service__category {
    font-size: 0.7rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.13em;

    text-transform: uppercase;

    color:
        var(--lsw-gold-700);
}


/* ============================================================
   06. TITLE
   ============================================================ */

.lsw-gallery-service__title {
    max-width: 820px;

    margin: 0;

    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            3.25rem,
            4.8vw,
            5.3rem
        );

    font-weight: 500;

    line-height: 0.94;

    letter-spacing: -0.045em;

    color:
        var(--lsw-charcoal);
}


.lsw-gallery-service__title-mask {
    display: block;

    overflow: hidden;

    padding-bottom: 0.05em;
}


.lsw-gallery-service__title-mask > span {
    display: block;
}


.lsw-gallery-service__title-accent {
    color:
        var(--lsw-forest-800);
}


/* ============================================================
   07. SUMMARY
   ============================================================ */

.lsw-gallery-service__summary {
    align-self: end;
}


.lsw-gallery-service__summary p {
    max-width: 470px;

    margin:
        0
        0
        20px;

    font-size:
        clamp(
            1rem,
            0.97rem + 0.15vw,
            1.08rem
        );

    line-height: 1.7;

    color:
        var(--lsw-text-soft);
}


/* ============================================================
   08. TAGS
   ============================================================ */

.lsw-gallery-service__tags {
    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap:
        8px
        10px;

    font-size: 0.72rem;

    font-weight: 700;

    line-height: 1.4;

    letter-spacing: 0.055em;

    text-transform: uppercase;

    color:
        var(--lsw-forest-700);
}


.lsw-gallery-service__tags i {
    width: 5px;
    height: 5px;

    border:
        1px solid
        var(--lsw-gold-600);

    transform:
        rotate(45deg);
}


/* ============================================================
   09. META BAR
   ============================================================ */

.lsw-gallery-service__meta {
    display: grid;

    grid-template-columns:
        auto
        minmax(50px, 1fr)
        auto
        auto;

    align-items: center;

    gap:
        16px;

    margin-bottom: 23px;
}


.lsw-gallery-service__meta-label {
    font-size: 0.7rem;

    font-weight: 700;

    letter-spacing: 0.11em;

    text-transform: uppercase;

    color:
        var(--lsw-charcoal);
}


.lsw-gallery-service__meta-rule {
    height: 1px;

    background:
        linear-gradient(
            90deg,
            rgba(36, 59, 42, 0.13),
            rgba(180, 140, 69, 0.50)
        );
}


.lsw-gallery-service__meta-count {
    display: flex;

    align-items: baseline;

    gap: 6px;
}


.lsw-gallery-service__meta-count strong {
    font-family:
        var(--lsw-font-display);

    font-size: 1.45rem;

    line-height: 1;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-service__meta-count span {
    font-size: 0.68rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    text-transform: uppercase;

    color:
        var(--lsw-text-muted);
}


.lsw-gallery-service__meta-instruction {
    display: flex;

    align-items: center;

    gap: 7px;

    font-size: 0.7rem;

    font-weight: 600;

    color:
        var(--lsw-text-muted);
}


.lsw-gallery-service__meta-instruction svg {
    width: 17px;
    height: 17px;

    color:
        var(--lsw-gold-700);
}


/* ============================================================
   10. LANDSCAPING COLLAGE
   ============================================================ */

.lsw-landscaping-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(
            12,
            minmax(0, 1fr)
        );

    grid-template-rows:
        repeat(
            19,
            45px
        );

    gap: 13px;

    width: 100%;
}


/* ============================================================
   11. COLLAGE POSITIONS
   ============================================================ */

/* Hero image */

.lsw-gallery-photo--01 {
    grid-column:
        1 / span 7;

    grid-row:
        1 / span 7;
}


/* Tall upper-right */

.lsw-gallery-photo--02 {
    grid-column:
        8 / span 5;

    grid-row:
        1 / span 4;
}


/* Right horizontal */

.lsw-gallery-photo--03 {
    grid-column:
        8 / span 5;

    grid-row:
        5 / span 4;
}


/* Left vertical */

.lsw-gallery-photo--04 {
    grid-column:
        1 / span 4;

    grid-row:
        8 / span 5;
}


/* Center vertical */

.lsw-gallery-photo--05 {
    grid-column:
        5 / span 3;

    grid-row:
        8 / span 5;
}


/* Large middle/right */

.lsw-gallery-photo--06 {
    grid-column:
        8 / span 5;

    grid-row:
        9 / span 6;
}


/* Lower wide */

.lsw-gallery-photo--07 {
    grid-column:
        1 / span 7;

    grid-row:
        13 / span 4;
}


/* Bottom-left */

.lsw-gallery-photo--08 {
    grid-column:
        1 / span 3;

    grid-row:
        17 / span 3;
}


/* Bottom-center */

.lsw-gallery-photo--09 {
    grid-column:
        4 / span 4;

    grid-row:
        17 / span 3;
}


/* Bottom-right */

.lsw-gallery-photo--10 {
    grid-column:
        8 / span 5;

    grid-row:
        15 / span 5;
}


/* ============================================================
   12. PHOTO
   ============================================================ */

.lsw-gallery-photo {
    position: relative;

    display: block;

    min-width: 0;
    min-height: 0;

    overflow: hidden;

    background:
        var(--lsw-limestone);

    border:
        1px solid
        rgba(36, 59, 42, 0.10);

    border-radius:
        var(--lsw-radius-sm);

    box-shadow:
        0 10px 30px
        rgba(24, 38, 28, 0.075);

    cursor: zoom-in;

    isolation: isolate;
}


/* Angular architectural variation */

.lsw-gallery-photo--01,
.lsw-gallery-photo--06,
.lsw-gallery-photo--10 {
    clip-path:
        polygon(
            0 0,
            94% 0,
            100% 8%,
            100% 100%,
            0 100%
        );
}


.lsw-gallery-photo--03,
.lsw-gallery-photo--07 {
    clip-path:
        polygon(
            5% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 10%
        );
}


/* ============================================================
   13. PHOTO MEDIA
   ============================================================ */

.lsw-gallery-photo__media {
    position: absolute;

    inset: 0;

    overflow: hidden;

    background:
        var(--lsw-limestone);
}


.lsw-gallery-photo__media::after {
    content: "";

    position: absolute;

    inset: 0;

    z-index: 2;

    pointer-events: none;

    background:
        linear-gradient(
            180deg,
            rgba(17, 26, 20, 0.02),
            rgba(17, 26, 20, 0.03) 55%,
            rgba(17, 26, 20, 0.22) 100%
        );

    transition:
        opacity
        450ms
        var(--lsw-ease);
}


.lsw-gallery-photo__media img {
    width: 100%;
    height: 100%;

    object-fit: cover;

    transform:
        scale(1.002);

    transition:
        transform
        950ms
        var(--lsw-ease-soft);

    backface-visibility:
        hidden;
}


/* Variation in crop */

.lsw-gallery-photo--01 img {
    object-position:
        center;
}


.lsw-gallery-photo--02 img {
    object-position:
        center 45%;
}


.lsw-gallery-photo--04 img,
.lsw-gallery-photo--05 img,
.lsw-gallery-photo--09 img {
    object-position:
        center;
}


/* ============================================================
   14. PHOTO INDEX
   ============================================================ */

.lsw-gallery-photo__index {
    position: absolute;

    z-index: 5;

    left: 15px;
    bottom: 13px;

    display: grid;

    place-items: center;

    min-width: 31px;
    height: 27px;

    padding-inline: 7px;

    color:
        var(--lsw-ivory-soft);

    background:
        rgba(29, 48, 34, 0.76);

    border-left:
        2px solid
        var(--lsw-gold-500);

    font-size: 0.63rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.08em;

    backdrop-filter:
        blur(5px);

    -webkit-backdrop-filter:
        blur(5px);

    transition:
        color
        350ms
        var(--lsw-ease),
        background-color
        350ms
        var(--lsw-ease);
}


/* ============================================================
   15. EXPAND CONTROL
   ============================================================ */

.lsw-gallery-photo__expand {
    position: absolute;

    z-index: 6;

    top: 14px;
    right: 14px;

    display: grid;

    place-items: center;

    width: 38px;
    height: 38px;

    opacity: 0;

    color:
        var(--lsw-ivory-soft);

    background:
        rgba(29, 48, 34, 0.80);

    border:
        1px solid
        rgba(222, 199, 148, 0.45);

    transform:
        translateY(-7px)
        rotate(0deg);

    transition:
        opacity
        350ms
        var(--lsw-ease),
        transform
        450ms
        var(--lsw-ease),
        color
        350ms
        var(--lsw-ease),
        background-color
        350ms
        var(--lsw-ease);
}


.lsw-gallery-photo__expand svg {
    width: 19px;
    height: 19px;
}


/* ============================================================
   16. PHOTO HOVER
   ============================================================ */

.lsw-gallery-photo:hover
.lsw-gallery-photo__media img {
    transform:
        scale(1.045);
}


.lsw-gallery-photo:hover
.lsw-gallery-photo__media::after {
    opacity: 0.72;
}


.lsw-gallery-photo:hover
.lsw-gallery-photo__expand,
.lsw-gallery-photo:focus-visible
.lsw-gallery-photo__expand {
    opacity: 1;

    transform:
        translateY(0)
        rotate(0deg);
}


.lsw-gallery-photo:hover
.lsw-gallery-photo__index {
    color:
        var(--lsw-forest-950);

    background:
        var(--lsw-gold-300);
}


.lsw-gallery-photo:focus-visible {
    outline:
        3px solid
        var(--lsw-gold-500);

    outline-offset:
        4px;
}


/* ============================================================
   17. SECTION FOOTER
   ============================================================ */

.lsw-gallery-service__footer {
    display: grid;

    grid-template-columns:
        minmax(80px, 1fr)
        auto
        auto;

    align-items: center;

    gap:
        clamp(
            20px,
            3vw,
            42px
        );

    margin-top:
        clamp(
            55px,
            5vw,
            80px
        );

    padding-top: 27px;

    border-top:
        1px solid
        rgba(36, 59, 42, 0.12);
}


.lsw-gallery-service__footer-line {
    display: flex;

    align-items: center;

    width: 100%;
}


.lsw-gallery-service__footer-line > span {
    width: 100%;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            rgba(180, 140, 69, 0.15),
            var(--lsw-gold-500)
        );
}


.lsw-gallery-service__footer-line i {
    flex:
        0
        0
        10px;

    width: 10px;
    height: 10px;

    margin-left: -1px;

    border:
        1px solid
        var(--lsw-gold-600);

    transform:
        rotate(45deg);
}


.lsw-gallery-service__footer > p {
    display: flex;

    align-items: baseline;

    gap: 9px;

    margin: 0;

    font-family:
        var(--lsw-font-display);

    font-size: 1.35rem;

    font-weight: 600;

    color:
        var(--lsw-forest-800);
}


.lsw-gallery-service__footer > p span {
    font-family:
        var(--lsw-font-body);

    font-size: 0.67rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    color:
        var(--lsw-text-muted);
}


.lsw-gallery-service__footer > a {
    display: grid;

    grid-template-columns:
        auto
        auto;

    grid-template-areas:
        "small icon"
        "title icon";

    align-items: center;

    gap:
        2px
        13px;

    min-width: 145px;

    color:
        var(--lsw-forest-800);
}


.lsw-gallery-service__footer > a > span {
    grid-area: small;

    font-size: 0.65rem;

    font-weight: 700;

    letter-spacing: 0.12em;

    text-transform: uppercase;

    color:
        var(--lsw-gold-700);
}


.lsw-gallery-service__footer > a > strong {
    grid-area: title;

    font-family:
        var(--lsw-font-display);

    font-size: 1.55rem;

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-forest-800);
}


.lsw-gallery-service__footer > a svg {
    grid-area: icon;

    width: 21px;
    height: 21px;

    color:
        var(--lsw-gold-700);

    transition:
        transform
        400ms
        var(--lsw-ease);
}


.lsw-gallery-service__footer > a:hover svg {
    transform:
        translateX(5px);
}


/* ============================================================
   18. INITIAL REVEAL
   ============================================================ */

html.lsw-js
[data-landscaping-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-landscaping-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-landscaping
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-landscaping-reveal="summary"],
html.lsw-js
[data-landscaping-reveal="meta"],
html.lsw-js
[data-landscaping-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


/*
    Important:
    We do NOT use display:none or visibility:hidden
    on the image grid.

    The images remain present and can load natively.
*/

html.lsw-js
.lsw-gallery-landscaping
.lsw-gallery-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   19. VISIBLE REVEAL
   ============================================================ */

html.lsw-js
.lsw-gallery-landscaping.is-visible
[data-landscaping-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
[data-landscaping-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay:
        140ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay:
        230ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
[data-landscaping-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
[data-landscaping-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        390ms,
        transform
        850ms
        var(--lsw-ease)
        390ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


/* Stagger */

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(1) {
    transition-delay: 430ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(2) {
    transition-delay: 490ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(3) {
    transition-delay: 550ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(4) {
    transition-delay: 610ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(5) {
    transition-delay: 670ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(6) {
    transition-delay: 730ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(7) {
    transition-delay: 790ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(8) {
    transition-delay: 850ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(9) {
    transition-delay: 910ms;
}

html.lsw-js
.lsw-gallery-landscaping.is-visible
.lsw-gallery-photo:nth-child(10) {
    transition-delay: 970ms;
}


html.lsw-js
.lsw-gallery-landscaping.is-visible
[data-landscaping-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        900ms,
        transform
        900ms
        var(--lsw-ease)
        900ms;
}


/* ============================================================
   20. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-landscaping-grid {
        grid-template-rows:
            repeat(
                19,
                clamp(
                    38px,
                    3.1vw,
                    48px
                )
            );
    }

}


/* ============================================================
   21. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-gallery-service {
        padding:
            105px
            0
            96px;
    }


    .lsw-gallery-service__header {
        grid-template-columns:
            115px
            minmax(0, 1fr);

        grid-template-areas:
            "identity title"
            "identity summary";

        gap:
            23px
            38px;
    }


    .lsw-gallery-service__identity {
        grid-area: identity;
    }


    .lsw-gallery-service__heading {
        grid-area: title;
    }


    .lsw-gallery-service__summary {
        grid-area: summary;

        max-width: 620px;
    }


    .lsw-gallery-service__title {
        font-size:
            clamp(
                3rem,
                5.8vw,
                4.4rem
            );
    }


    .lsw-landscaping-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                23,
                38px
            );

        gap: 11px;
    }


    .lsw-gallery-photo--01 {
        grid-column: 1 / span 5;
        grid-row: 1 / span 6;
    }

    .lsw-gallery-photo--02 {
        grid-column: 6 / span 3;
        grid-row: 1 / span 6;
    }

    .lsw-gallery-photo--03 {
        grid-column: 1 / span 3;
        grid-row: 7 / span 5;
    }

    .lsw-gallery-photo--04 {
        grid-column: 4 / span 5;
        grid-row: 7 / span 5;
    }

    .lsw-gallery-photo--05 {
        grid-column: 1 / span 4;
        grid-row: 12 / span 5;
    }

    .lsw-gallery-photo--06 {
        grid-column: 5 / span 4;
        grid-row: 12 / span 7;
    }

    .lsw-gallery-photo--07 {
        grid-column: 1 / span 4;
        grid-row: 17 / span 6;
    }

    .lsw-gallery-photo--08 {
        grid-column: 5 / span 2;
        grid-row: 19 / span 4;
    }

    .lsw-gallery-photo--09 {
        grid-column: 7 / span 2;
        grid-row: 19 / span 4;
    }

    .lsw-gallery-photo--10 {
        grid-column: 1 / span 8;
        grid-row: 23 / span 1;
    }


    /*
        Give final image usable height rather than
        leaving it as a one-row strip.
    */

    .lsw-landscaping-grid {
        grid-template-rows:
            repeat(
                28,
                38px
            );
    }


    .lsw-gallery-photo--10 {
        grid-column: 1 / span 8;
        grid-row: 23 / span 6;
    }

}


/* ============================================================
   22. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-gallery-service {
        padding:
            86px
            0
            80px;
    }


    .lsw-gallery-service__transition {
        height: 52px;
    }


    .lsw-gallery-service__transition::before {
        width: 77%;
        height: 35px;
    }


    .lsw-gallery-service__transition-line {
        top: 34px;
        left: 20px;

        width: 95px;
    }


    .lsw-gallery-service__transition-mark {
        top: 29px;
        left: 108px;
    }


    .lsw-gallery-service__header {
        grid-template-columns: 1fr;

        gap: 22px;

        margin-bottom: 42px;
    }


    .lsw-gallery-service__identity {
        display: flex;

        align-items: center;

        gap: 12px;
    }


    .lsw-gallery-service__number {
        font-size: 3.15rem;
    }


    .lsw-gallery-service__identity-line {
        width: 42px;
    }


    .lsw-gallery-service__title {
        font-size:
            clamp(
                2.8rem,
                9vw,
                3.8rem
            );
    }


    .lsw-gallery-service__summary {
        max-width: 590px;
    }


    .lsw-gallery-service__meta {
        grid-template-columns:
            auto
            1fr
            auto;

        grid-template-areas:
            "label rule count"
            "instruction instruction instruction";

        gap:
            12px
            14px;
    }


    .lsw-gallery-service__meta-label {
        grid-area: label;
    }


    .lsw-gallery-service__meta-rule {
        grid-area: rule;
    }


    .lsw-gallery-service__meta-count {
        grid-area: count;
    }


    .lsw-gallery-service__meta-instruction {
        grid-area: instruction;
    }


    /*
        Mobile collage:
        deliberately editorial, but simpler and
        more performance-friendly.
    */

    .lsw-landscaping-grid {
        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows:
            none;

        grid-auto-rows:
            auto;

        gap: 10px;
    }


    .lsw-gallery-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        aspect-ratio:
            4 / 3;
    }


    .lsw-gallery-photo--01,
    .lsw-gallery-photo--06,
    .lsw-gallery-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-gallery-photo--02,
    .lsw-gallery-photo--04,
    .lsw-gallery-photo--05,
    .lsw-gallery-photo--07,
    .lsw-gallery-photo--09 {
        aspect-ratio:
            4 / 5;
    }


    .lsw-gallery-photo__expand {
        opacity: 1;

        width: 34px;
        height: 34px;

        transform: none;
    }


    .lsw-gallery-service__footer {
        grid-template-columns:
            1fr
            auto;

        grid-template-areas:
            "line line"
            "current next";

        gap:
            20px
            25px;
    }


    .lsw-gallery-service__footer-line {
        grid-area: line;
    }


    .lsw-gallery-service__footer > p {
        grid-area: current;
    }


    .lsw-gallery-service__footer > a {
        grid-area: next;
    }

}


/* ============================================================
   23. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-gallery-service {
        padding:
            76px
            0
            68px;
    }


    .lsw-gallery-service__transition {
        height: 46px;
    }


    .lsw-gallery-service__transition::before {
        width: 81%;
        height: 30px;
    }


    .lsw-gallery-service__transition::after {
        width: 38%;
        height: 16px;
    }


    .lsw-gallery-service__transition-line {
        top: 29px;
        left: 15px;

        width: 74px;
    }


    .lsw-gallery-service__transition-mark {
        top: 24px;
        left: 82px;

        width: 10px;
        height: 10px;
    }


    .lsw-gallery-service__header {
        grid-template-columns: 1fr;

        gap: 19px;

        margin-bottom: 34px;
    }


    .lsw-gallery-service__identity {
        display: flex;

        align-items: center;

        gap: 10px;
    }


    .lsw-gallery-service__number {
        font-size: 2.85rem;
    }


    .lsw-gallery-service__identity-line {
        width: 35px;
    }


    .lsw-gallery-service__category {
        font-size: 0.65rem;
    }


    .lsw-gallery-service__title {
        font-size:
            clamp(
                2.45rem,
                12vw,
                3.25rem
            );

        line-height: 0.95;
    }


    .lsw-gallery-service__summary p {
        font-size: 0.95rem;

        line-height: 1.62;
    }


    .lsw-gallery-service__tags {
        gap:
            7px
            8px;

        font-size: 0.66rem;
    }


    .lsw-gallery-service__meta {
        grid-template-columns:
            auto
            1fr
            auto;

        grid-template-areas:
            "label rule count"
            "instruction instruction instruction";

        gap:
            11px
            12px;

        margin-bottom: 16px;
    }


    .lsw-gallery-service__meta-label {
        grid-area: label;

        font-size: 0.64rem;
    }


    .lsw-gallery-service__meta-rule {
        grid-area: rule;
    }


    .lsw-gallery-service__meta-count {
        grid-area: count;
    }


    .lsw-gallery-service__meta-instruction {
        grid-area: instruction;

        font-size: 0.67rem;
    }


    /*
        One-column rhythm on very small screens.

        Some images become panoramic to avoid
        a repetitive vertical stack.
    */

    .lsw-landscaping-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-gallery-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-gallery-photo--01,
    .lsw-gallery-photo--06,
    .lsw-gallery-photo--10 {
        aspect-ratio:
            16 / 10;
    }


    .lsw-gallery-photo--02,
    .lsw-gallery-photo--04,
    .lsw-gallery-photo--07,
    .lsw-gallery-photo--09 {
        aspect-ratio:
            4 / 5;
    }


    .lsw-gallery-photo__index {
        left: 11px;
        bottom: 10px;
    }


    .lsw-gallery-photo__expand {
        top: 10px;
        right: 10px;

        width: 36px;
        height: 36px;

        opacity: 1;

        transform: none;
    }


    .lsw-gallery-service__footer {
        grid-template-columns: 1fr;

        gap: 20px;

        margin-top: 42px;
    }


    .lsw-gallery-service__footer > p {
        font-size: 1.25rem;
    }


    .lsw-gallery-service__footer > a {
        justify-self: end;
    }

}











































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   06. HARDSCAPE
   ============================================================ */


/* ============================================================
   01. SECTION SURFACE
   ============================================================ */

.lsw-gallery-hardscape {
    color:
        var(--lsw-text);

    background:
        var(--lsw-ivory-soft);
}


/* Mineral depth */

.lsw-gallery-hardscape::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 13% 25%,
            rgba(199, 163, 93, 0.07),
            transparent 25%
        ),
        radial-gradient(
            circle at 87% 78%,
            rgba(36, 59, 42, 0.038),
            transparent 30%
        );
}


/* ============================================================
   02. TRANSITION FROM LANDSCAPING
   ============================================================ */

.lsw-hardscape__transition {
    position: absolute;

    z-index: 5;

    top: -1px;
    left: 0;

    width: 100%;
    height: 75px;

    pointer-events: none;
}


.lsw-hardscape__transition::before {
    content: "";

    position: absolute;

    top: 0;
    left: 0;

    width: 43%;
    height: 27px;

    background:
        #ECE4D7;

    clip-path:
        polygon(
            0 0,
            100% 0,
            88% 100%,
            0 100%
        );
}


.lsw-hardscape__transition::after {
    content: "";

    position: absolute;

    top: 0;
    right: 0;

    width: 63%;
    height: 52px;

    background:
        #ECE4D7;

    clip-path:
        polygon(
            8% 0,
            100% 0,
            100% 57%,
            0 100%
        );
}


.lsw-hardscape__transition-line {
    position: absolute;

    z-index: 6;

    top: 49px;
    right: 9%;

    width: 155px;
    height: 1px;

    background:
        linear-gradient(
            270deg,
            var(--lsw-gold-500),
            rgba(180, 140, 69, 0.18)
        );

    transform:
        scaleX(0);

    transform-origin:
        right center;
}


.lsw-gallery-hardscape.is-visible
.lsw-hardscape__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1050ms
        var(--lsw-ease);
}


.lsw-hardscape__transition-mark {
    position: absolute;

    z-index: 7;

    top: 43px;
    right:
        calc(
            9% + 147px
        );

    width: 12px;
    height: 12px;

    background:
        var(--lsw-ivory-soft);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(30deg)
        scale(0);
}


.lsw-gallery-hardscape.is-visible
.lsw-hardscape__transition-mark {
    transform:
        rotate(30deg)
        scale(1);

    transition:
        transform
        680ms
        var(--lsw-ease)
        530ms;
}


/* ============================================================
   03. BACKGROUND
   ============================================================ */

.lsw-hardscape__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-hardscape__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.05);

    transform:
        rotate(30deg);
}


.lsw-hardscape__shape--one {
    top: 11%;
    left: -125px;

    width: 275px;
    height: 275px;

    border-color:
        rgba(180, 140, 69, 0.10);
}


.lsw-hardscape__shape--two {
    right: -150px;
    bottom: 11%;

    width: 315px;
    height: 315px;
}


.lsw-hardscape__construction-lines {
    position: absolute;

    top: 35%;
    right: 4%;

    width: 230px;
    height: 165px;

    opacity: 0.035;

    background-image:
        linear-gradient(
            rgba(36, 59, 42, 0.8) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(36, 59, 42, 0.8) 1px,
            transparent 1px
        );

    background-size:
        46px 33px;

    transform:
        rotate(-4deg);
}


/* ============================================================
   04. HARDSCAPE IDENTITY
   ============================================================ */

.lsw-gallery-hardscape
.lsw-gallery-service__number {
    color:
        rgba(180, 140, 69, 0.25);
}


.lsw-gallery-hardscape
.lsw-gallery-service__title-accent {
    color:
        var(--lsw-gold-700);
}


/* ============================================================
   05. HARDSCAPE GRID
   ============================================================ */

.lsw-hardscape-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(
            12,
            minmax(0, 1fr)
        );

    grid-template-rows:
        repeat(
            20,
            45px
        );

    gap: 13px;

    width: 100%;
}


/* ============================================================
   06. DESKTOP COMPOSITION

   More horizontal and structural than Landscaping.
   ============================================================ */


/* Left upper */

.lsw-hardscape-photo--01 {
    grid-column:
        1 / span 5;

    grid-row:
        1 / span 5;
}


/* Large upper-right */

.lsw-hardscape-photo--02 {
    grid-column:
        6 / span 7;

    grid-row:
        1 / span 5;
}


/* Main panoramic centerpiece */

.lsw-hardscape-photo--03 {
    grid-column:
        1 / span 12;

    grid-row:
        6 / span 6;
}


/* Lower vertical */

.lsw-hardscape-photo--04 {
    grid-column:
        1 / span 3;

    grid-row:
        12 / span 5;
}


/* Lower-center */

.lsw-hardscape-photo--05 {
    grid-column:
        4 / span 3;

    grid-row:
        12 / span 5;
}


/* Lower-right wide */

.lsw-hardscape-photo--06 {
    grid-column:
        7 / span 6;

    grid-row:
        12 / span 5;
}


/* Final band */

.lsw-hardscape-photo--07 {
    grid-column:
        1 / span 4;

    grid-row:
        17 / span 4;
}


.lsw-hardscape-photo--08 {
    grid-column:
        5 / span 3;

    grid-row:
        17 / span 4;
}


.lsw-hardscape-photo--09 {
    grid-column:
        8 / span 2;

    grid-row:
        17 / span 4;
}


.lsw-hardscape-photo--10 {
    grid-column:
        10 / span 3;

    grid-row:
        17 / span 4;
}


/* ============================================================
   07. ARCHITECTURAL CLIPS
   ============================================================ */

.lsw-hardscape-photo--02 {
    clip-path:
        polygon(
            6% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 12%
        );
}


.lsw-hardscape-photo--03 {
    clip-path:
        polygon(
            0 0,
            97% 0,
            100% 11%,
            100% 100%,
            3% 100%,
            0 89%
        );
}


.lsw-hardscape-photo--06 {
    clip-path:
        polygon(
            0 0,
            92% 0,
            100% 16%,
            100% 100%,
            0 100%
        );
}


.lsw-hardscape-photo--07 {
    clip-path:
        polygon(
            8% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 16%
        );
}


/* ============================================================
   08. FEATURED CENTER IMAGE
   ============================================================ */

.lsw-hardscape-photo--03 {
    box-shadow:
        0 22px 55px
        rgba(24, 38, 28, 0.13);
}


.lsw-hardscape-photo--03
.lsw-gallery-photo__index {
    background:
        var(--lsw-gold-500);

    color:
        var(--lsw-forest-950);

    border-left-color:
        var(--lsw-forest-800);
}


/* ============================================================
   09. CROPS
   ============================================================ */

.lsw-hardscape-photo--01 img,
.lsw-hardscape-photo--02 img,
.lsw-hardscape-photo--03 img,
.lsw-hardscape-photo--06 img {
    object-position:
        center;
}


.lsw-hardscape-photo--04 img,
.lsw-hardscape-photo--05 img,
.lsw-hardscape-photo--09 img {
    object-position:
        center 55%;
}


/* ============================================================
   10. INITIAL REVEALS
   ============================================================ */

html.lsw-js
[data-hardscape-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-hardscape-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-hardscape
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-hardscape-reveal="summary"],
html.lsw-js
[data-hardscape-reveal="meta"],
html.lsw-js
[data-hardscape-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-hardscape
.lsw-hardscape-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   11. VISIBLE STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-hardscape.is-visible
[data-hardscape-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
[data-hardscape-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay:
        140ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay:
        230ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
[data-hardscape-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
[data-hardscape-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        390ms,
        transform
        850ms
        var(--lsw-ease)
        390ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


/* Stagger */

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(1) {
    transition-delay: 430ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(2) {
    transition-delay: 490ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(3) {
    transition-delay: 550ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(4) {
    transition-delay: 610ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(5) {
    transition-delay: 670ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(6) {
    transition-delay: 730ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(7) {
    transition-delay: 790ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(8) {
    transition-delay: 850ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(9) {
    transition-delay: 910ms;
}

html.lsw-js
.lsw-gallery-hardscape.is-visible
.lsw-hardscape-photo:nth-child(10) {
    transition-delay: 970ms;
}


html.lsw-js
.lsw-gallery-hardscape.is-visible
[data-hardscape-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        900ms,
        transform
        900ms
        var(--lsw-ease)
        900ms;
}


/* ============================================================
   12. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-hardscape-grid {
        grid-template-rows:
            repeat(
                20,
                clamp(
                    38px,
                    3vw,
                    47px
                )
            );
    }

}


/* ============================================================
   13. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-hardscape-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                28,
                38px
            );

        gap: 11px;
    }


    .lsw-hardscape-photo--01 {
        grid-column: 1 / span 3;
        grid-row: 1 / span 6;
    }


    .lsw-hardscape-photo--02 {
        grid-column: 4 / span 5;
        grid-row: 1 / span 6;
    }


    .lsw-hardscape-photo--03 {
        grid-column: 1 / span 8;
        grid-row: 7 / span 6;
    }


    .lsw-hardscape-photo--04 {
        grid-column: 1 / span 4;
        grid-row: 13 / span 5;
    }


    .lsw-hardscape-photo--05 {
        grid-column: 5 / span 4;
        grid-row: 13 / span 5;
    }


    .lsw-hardscape-photo--06 {
        grid-column: 1 / span 5;
        grid-row: 18 / span 6;
    }


    .lsw-hardscape-photo--07 {
        grid-column: 6 / span 3;
        grid-row: 18 / span 6;
    }


    .lsw-hardscape-photo--08 {
        grid-column: 1 / span 3;
        grid-row: 24 / span 5;
    }


    .lsw-hardscape-photo--09 {
        grid-column: 4 / span 2;
        grid-row: 24 / span 5;
    }


    .lsw-hardscape-photo--10 {
        grid-column: 6 / span 3;
        grid-row: 24 / span 5;
    }

}


/* ============================================================
   14. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-hardscape__transition {
        height: 52px;
    }


    .lsw-hardscape__transition::before {
        width: 42%;
        height: 20px;
    }


    .lsw-hardscape__transition::after {
        width: 67%;
        height: 36px;
    }


    .lsw-hardscape__transition-line {
        top: 34px;
        right: 20px;

        width: 95px;
    }


    .lsw-hardscape__transition-mark {
        top: 29px;
        right: 107px;
    }


    .lsw-hardscape-grid {
        display: grid;

        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 10px;
    }


    .lsw-hardscape-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        aspect-ratio:
            4 / 3;
    }


    /*
        Maintain the horizontal nature
        of Hardscape on mobile.
    */

    .lsw-hardscape-photo--02,
    .lsw-hardscape-photo--03,
    .lsw-hardscape-photo--06,
    .lsw-hardscape-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-hardscape-photo--04,
    .lsw-hardscape-photo--05,
    .lsw-hardscape-photo--09 {
        aspect-ratio:
            4 / 5;
    }

}


/* ============================================================
   15. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-hardscape__transition {
        height: 46px;
    }


    .lsw-hardscape__transition::before {
        width: 42%;
        height: 17px;
    }


    .lsw-hardscape__transition::after {
        width: 69%;
        height: 30px;
    }


    .lsw-hardscape__transition-line {
        top: 29px;
        right: 15px;

        width: 74px;
    }


    .lsw-hardscape__transition-mark {
        top: 24px;
        right: 81px;

        width: 10px;
        height: 10px;
    }


    .lsw-hardscape-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-hardscape-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-hardscape-photo--01,
    .lsw-hardscape-photo--02,
    .lsw-hardscape-photo--03,
    .lsw-hardscape-photo--06,
    .lsw-hardscape-photo--10 {
        aspect-ratio:
            16 / 10;
    }


    .lsw-hardscape-photo--04,
    .lsw-hardscape-photo--05,
    .lsw-hardscape-photo--09 {
        aspect-ratio:
            4 / 5;
    }

}







































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   07. MASONRY
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-masonry {
    color:
        var(--lsw-ivory-soft);

    background:
        var(--lsw-forest-950);
}


/* Architectural depth */

.lsw-gallery-masonry::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 79% 18%,
            rgba(199, 163, 93, 0.12),
            transparent 25%
        ),
        radial-gradient(
            circle at 15% 74%,
            rgba(104, 121, 86, 0.13),
            transparent 29%
        );
}


/* Fine material texture */

.lsw-gallery-masonry::after {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -3;

    pointer-events: none;

    opacity: 0.07;

    background-image:
        url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");

    background-size:
        180px 180px;

    mix-blend-mode:
        soft-light;
}


/* ============================================================
   02. TRANSITION
   ============================================================ */

.lsw-masonry__transition {
    position: absolute;

    z-index: 6;

    top: -1px;
    left: 0;

    width: 100%;
    height: 76px;

    pointer-events: none;
}


.lsw-masonry__transition-plane {
    position: absolute;

    top: 0;
    left: 0;

    width: 100%;
    height: 54px;

    background:
        var(--lsw-ivory-soft);

    clip-path:
        polygon(
            0 0,
            100% 0,
            100% 27%,
            78% 27%,
            71% 100%,
            34% 100%,
            27% 52%,
            0 52%
        );
}


.lsw-masonry__transition-line {
    position: absolute;

    z-index: 4;

    top: 52px;
    left: 34%;

    width: 160px;
    height: 1px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        left center;
}


.lsw-gallery-masonry.is-visible
.lsw-masonry__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1100ms
        var(--lsw-ease);
}


.lsw-masonry__transition-mark {
    position: absolute;

    z-index: 5;

    top: 46px;

    left:
        calc(
            34% + 153px
        );

    width: 12px;
    height: 12px;

    background:
        var(--lsw-forest-950);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg)
        scale(0);
}


.lsw-gallery-masonry.is-visible
.lsw-masonry__transition-mark {
    transform:
        rotate(45deg)
        scale(1);

    transition:
        transform
        700ms
        var(--lsw-ease)
        560ms;
}


/* ============================================================
   03. BACKGROUND ARCHITECTURE
   ============================================================ */

.lsw-masonry__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-masonry__shape {
    position: absolute;

    border:
        1px solid
        rgba(222, 199, 148, 0.08);

    transform:
        rotate(30deg);
}


.lsw-masonry__shape--one {
    top: 10%;
    right: -135px;

    width: 310px;
    height: 310px;
}


.lsw-masonry__shape--two {
    left: -125px;
    bottom: 7%;

    width: 260px;
    height: 260px;

    border-color:
        rgba(255, 255, 255, 0.04);
}


/* Abstract masonry courses */

.lsw-masonry__courses {
    position: absolute;

    top: 24%;
    right: 3%;

    width: 260px;
    height: 190px;

    opacity: 0.045;

    background:
        linear-gradient(
            rgba(222, 199, 148, 0.7) 1px,
            transparent 1px
        );

    background-size:
        100% 38px;
}


.lsw-masonry__courses::before,
.lsw-masonry__courses::after {
    content: "";

    position: absolute;

    top: 0;

    width: 1px;
    height: 100%;

    background:
        rgba(222, 199, 148, 0.7);
}


.lsw-masonry__courses::before {
    left: 33%;
}


.lsw-masonry__courses::after {
    left: 67%;
}


/* ============================================================
   04. SHARED HEADER OVERRIDES
   ============================================================ */

.lsw-gallery-masonry
.lsw-gallery-service__number {
    color:
        rgba(199, 163, 93, 0.28);
}


.lsw-gallery-masonry
.lsw-gallery-service__category {
    color:
        var(--lsw-gold-300);
}


.lsw-gallery-masonry
.lsw-gallery-service__identity-line {
    background:
        var(--lsw-gold-500);
}


.lsw-gallery-masonry
.lsw-gallery-service__title {
    color:
        var(--lsw-ivory-soft);
}


.lsw-gallery-masonry
.lsw-gallery-service__title-accent {
    color:
        var(--lsw-gold-500);
}


.lsw-gallery-masonry
.lsw-gallery-service__summary p {
    color:
        rgba(245, 241, 232, 0.67);
}


.lsw-gallery-masonry
.lsw-gallery-service__tags {
    color:
        rgba(245, 241, 232, 0.72);
}


.lsw-gallery-masonry
.lsw-gallery-service__tags i {
    border-color:
        var(--lsw-gold-500);
}


/* ============================================================
   05. META OVERRIDES
   ============================================================ */

.lsw-gallery-masonry
.lsw-gallery-service__meta-label {
    color:
        var(--lsw-ivory-soft);
}


.lsw-gallery-masonry
.lsw-gallery-service__meta-rule {
    background:
        linear-gradient(
            90deg,
            rgba(222, 199, 148, 0.12),
            rgba(199, 163, 93, 0.65)
        );
}


.lsw-gallery-masonry
.lsw-gallery-service__meta-count strong {
    color:
        var(--lsw-gold-300);
}


.lsw-gallery-masonry
.lsw-gallery-service__meta-count span,
.lsw-gallery-masonry
.lsw-gallery-service__meta-instruction {
    color:
        rgba(245, 241, 232, 0.52);
}


.lsw-gallery-masonry
.lsw-gallery-service__meta-instruction svg {
    color:
        var(--lsw-gold-300);
}


/* ============================================================
   06. MASONRY GRID
   ============================================================ */

.lsw-masonry-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(
            12,
            minmax(0, 1fr)
        );

    grid-template-rows:
        repeat(
            22,
            44px
        );

    gap: 13px;

    width: 100%;
}


/* ============================================================
   07. DESKTOP COMPOSITION

   Vertical + modular + block-like.
   ============================================================ */


/* Tall opening block */

.lsw-masonry-photo--01 {
    grid-column:
        1 / span 4;

    grid-row:
        1 / span 8;
}


/* Wide upper center/right */

.lsw-masonry-photo--02 {
    grid-column:
        5 / span 8;

    grid-row:
        1 / span 5;
}


/* Tall right secondary */

.lsw-masonry-photo--03 {
    grid-column:
        9 / span 4;

    grid-row:
        6 / span 7;
}


/* Mid horizontal */

.lsw-masonry-photo--04 {
    grid-column:
        5 / span 4;

    grid-row:
        6 / span 4;
}


/* Smaller masonry module */

.lsw-masonry-photo--05 {
    grid-column:
        5 / span 4;

    grid-row:
        10 / span 4;
}


/* Tall left lower */

.lsw-masonry-photo--06 {
    grid-column:
        1 / span 4;

    grid-row:
        9 / span 7;
}


/* Main wide lower block */

.lsw-masonry-photo--07 {
    grid-column:
        5 / span 8;

    grid-row:
        14 / span 5;
}


/* Final masonry course */

.lsw-masonry-photo--08 {
    grid-column:
        1 / span 4;

    grid-row:
        16 / span 7;
}


.lsw-masonry-photo--09 {
    grid-column:
        5 / span 3;

    grid-row:
        19 / span 4;
}


.lsw-masonry-photo--10 {
    grid-column:
        8 / span 5;

    grid-row:
        19 / span 4;
}


/* ============================================================
   08. MASONRY FRAME TREATMENT
   ============================================================ */

.lsw-gallery-masonry
.lsw-gallery-photo {
    border-color:
        rgba(222, 199, 148, 0.16);

    background:
        var(--lsw-charcoal);

    box-shadow:
        0 18px 48px
        rgba(0, 0, 0, 0.18);
}


/* Less rounded / more architectural */

.lsw-masonry-photo {
    border-radius:
        3px;
}


/* ============================================================
   09. CLIP VARIATIONS
   ============================================================ */

.lsw-masonry-photo--01 {
    clip-path:
        polygon(
            0 0,
            91% 0,
            100% 7%,
            100% 100%,
            0 100%
        );
}


.lsw-masonry-photo--02 {
    clip-path:
        polygon(
            5% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 14%
        );
}


.lsw-masonry-photo--03 {
    clip-path:
        polygon(
            0 0,
            100% 0,
            100% 92%,
            88% 100%,
            0 100%
        );
}


.lsw-masonry-photo--07 {
    clip-path:
        polygon(
            0 0,
            95% 0,
            100% 12%,
            100% 100%,
            4% 100%,
            0 88%
        );
}


.lsw-masonry-photo--10 {
    clip-path:
        polygon(
            8% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 18%
        );
}


/* ============================================================
   10. FEATURED IMAGE
   ============================================================ */

.lsw-masonry-photo--07 {
    box-shadow:
        0 28px 68px
        rgba(0, 0, 0, 0.24);
}


.lsw-masonry-photo--07
.lsw-gallery-photo__index {
    color:
        var(--lsw-forest-950);

    background:
        var(--lsw-gold-300);

    border-left-color:
        var(--lsw-white);
}


/* ============================================================
   11. IMAGE OVERLAY
   ============================================================ */

.lsw-gallery-masonry
.lsw-gallery-photo__media::after {
    background:
        linear-gradient(
            180deg,
            rgba(12, 20, 15, 0.02),
            rgba(12, 20, 15, 0.05) 52%,
            rgba(12, 20, 15, 0.34) 100%
        );
}


/* ============================================================
   12. CROPS
   ============================================================ */

.lsw-masonry-photo--01 img,
.lsw-masonry-photo--03 img,
.lsw-masonry-photo--06 img,
.lsw-masonry-photo--08 img {
    object-position:
        center;
}


.lsw-masonry-photo--02 img,
.lsw-masonry-photo--07 img,
.lsw-masonry-photo--10 img {
    object-position:
        center 52%;
}


/* ============================================================
   13. FOOTER OVERRIDES
   ============================================================ */

.lsw-gallery-masonry
.lsw-gallery-service__footer {
    border-top-color:
        rgba(222, 199, 148, 0.18);
}


.lsw-gallery-masonry
.lsw-gallery-service__footer-line > span {
    background:
        linear-gradient(
            90deg,
            rgba(199, 163, 93, 0.08),
            var(--lsw-gold-500)
        );
}


.lsw-gallery-masonry
.lsw-gallery-service__footer-line i {
    border-color:
        var(--lsw-gold-500);
}


.lsw-gallery-masonry
.lsw-gallery-service__footer > p,
.lsw-gallery-masonry
.lsw-gallery-service__footer > a,
.lsw-gallery-masonry
.lsw-gallery-service__footer > a > strong {
    color:
        var(--lsw-ivory-soft);
}


.lsw-gallery-masonry
.lsw-gallery-service__footer > p span {
    color:
        rgba(245, 241, 232, 0.48);
}


.lsw-gallery-masonry
.lsw-gallery-service__footer > a > span,
.lsw-gallery-masonry
.lsw-gallery-service__footer > a svg {
    color:
        var(--lsw-gold-300);
}


/* ============================================================
   14. INITIAL REVEAL
   ============================================================ */

html.lsw-js
[data-masonry-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-masonry-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-masonry
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-masonry-reveal="summary"],
html.lsw-js
[data-masonry-reveal="meta"],
html.lsw-js
[data-masonry-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-masonry
.lsw-masonry-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   15. VISIBLE
   ============================================================ */

html.lsw-js
.lsw-gallery-masonry.is-visible
[data-masonry-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
[data-masonry-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay:
        140ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay:
        230ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
[data-masonry-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
[data-masonry-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        390ms,
        transform
        850ms
        var(--lsw-ease)
        390ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(1) {
    transition-delay: 430ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(2) {
    transition-delay: 490ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(3) {
    transition-delay: 550ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(4) {
    transition-delay: 610ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(5) {
    transition-delay: 670ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(6) {
    transition-delay: 730ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(7) {
    transition-delay: 790ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(8) {
    transition-delay: 850ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(9) {
    transition-delay: 910ms;
}

html.lsw-js
.lsw-gallery-masonry.is-visible
.lsw-masonry-photo:nth-child(10) {
    transition-delay: 970ms;
}


html.lsw-js
.lsw-gallery-masonry.is-visible
[data-masonry-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        900ms,
        transform
        900ms
        var(--lsw-ease)
        900ms;
}


/* ============================================================
   16. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-masonry-grid {
        grid-template-rows:
            repeat(
                22,
                clamp(
                    38px,
                    2.9vw,
                    46px
                )
            );
    }

}


/* ============================================================
   17. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-masonry-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                29,
                38px
            );

        gap: 11px;
    }


    .lsw-masonry-photo--01 {
        grid-column: 1 / span 3;
        grid-row: 1 / span 7;
    }


    .lsw-masonry-photo--02 {
        grid-column: 4 / span 5;
        grid-row: 1 / span 5;
    }


    .lsw-masonry-photo--03 {
        grid-column: 4 / span 2;
        grid-row: 6 / span 6;
    }


    .lsw-masonry-photo--04 {
        grid-column: 6 / span 3;
        grid-row: 6 / span 6;
    }


    .lsw-masonry-photo--05 {
        grid-column: 1 / span 3;
        grid-row: 8 / span 4;
    }


    .lsw-masonry-photo--06 {
        grid-column: 1 / span 4;
        grid-row: 12 / span 7;
    }


    .lsw-masonry-photo--07 {
        grid-column: 5 / span 4;
        grid-row: 12 / span 7;
    }


    .lsw-masonry-photo--08 {
        grid-column: 1 / span 3;
        grid-row: 19 / span 6;
    }


    .lsw-masonry-photo--09 {
        grid-column: 4 / span 2;
        grid-row: 19 / span 6;
    }


    .lsw-masonry-photo--10 {
        grid-column: 6 / span 3;
        grid-row: 19 / span 6;
    }

}


/* ============================================================
   18. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-masonry__transition {
        height: 52px;
    }


    .lsw-masonry__transition-plane {
        height: 36px;

        clip-path:
            polygon(
                0 0,
                100% 0,
                100% 28%,
                76% 28%,
                69% 100%,
                35% 100%,
                28% 55%,
                0 55%
            );
    }


    .lsw-masonry__transition-line {
        top: 34px;
        left: 35%;

        width: 95px;
    }


    .lsw-masonry__transition-mark {
        top: 29px;
        left:
            calc(
                35% + 88px
            );
    }


    .lsw-masonry-grid {
        display: grid;

        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 10px;
    }


    .lsw-masonry-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        aspect-ratio:
            4 / 5;
    }


    .lsw-masonry-photo--02,
    .lsw-masonry-photo--07,
    .lsw-masonry-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-masonry-photo--04,
    .lsw-masonry-photo--05 {
        aspect-ratio:
            4 / 3;
    }

}


/* ============================================================
   19. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-masonry__transition {
        height: 46px;
    }


    .lsw-masonry__transition-plane {
        height: 30px;
    }


    .lsw-masonry__transition-line {
        top: 29px;
        left: 34%;

        width: 74px;
    }


    .lsw-masonry__transition-mark {
        top: 24px;

        left:
            calc(
                34% + 67px
            );

        width: 10px;
        height: 10px;
    }


    .lsw-masonry-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-masonry-photo {
        grid-column: auto !important;
        grid-row: auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-masonry-photo--01,
    .lsw-masonry-photo--03,
    .lsw-masonry-photo--06,
    .lsw-masonry-photo--08,
    .lsw-masonry-photo--09 {
        aspect-ratio:
            4 / 5;
    }


    .lsw-masonry-photo--02,
    .lsw-masonry-photo--07,
    .lsw-masonry-photo--10 {
        aspect-ratio:
            16 / 10;
    }

}





































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   09. SOD INSTALLATION
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-sod {
    color:
        var(--lsw-text);

    background:
        var(--lsw-sand);
}


.lsw-gallery-sod::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 79% 17%,
            rgba(199, 163, 93, 0.10),
            transparent 27%
        ),
        radial-gradient(
            circle at 9% 76%,
            rgba(66, 96, 71, 0.055),
            transparent 29%
        );
}


/* ============================================================
   02. TRANSITION FROM ARTIFICIAL TURF
   ============================================================ */

.lsw-sod__transition {
    position: absolute;

    z-index: 6;

    top: -1px;
    left: 0;

    width: 100%;
    height: 75px;

    pointer-events: none;
}


.lsw-sod__transition-plane {
    position: absolute;

    top: 0;
    left: 0;

    width: 100%;
    height: 52px;

    background:
        var(--lsw-ivory-soft);

    clip-path:
        polygon(
            0 0,
            100% 0,
            100% 34%,
            67% 34%,
            60% 100%,
            30% 100%,
            23% 53%,
            0 53%
        );
}


.lsw-sod__transition-line {
    position: absolute;

    z-index: 7;

    top: 50px;
    left: 30%;

    width: 160px;
    height: 1px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        left center;
}


.lsw-gallery-sod.is-visible
.lsw-sod__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1050ms
        var(--lsw-ease);
}


.lsw-sod__transition-mark {
    position: absolute;

    z-index: 8;

    top: 44px;

    left:
        calc(
            30% + 153px
        );

    width: 12px;
    height: 12px;

    background:
        var(--lsw-sand);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg)
        scale(0);
}


.lsw-gallery-sod.is-visible
.lsw-sod__transition-mark {
    transform:
        rotate(45deg)
        scale(1);

    transition:
        transform
        700ms
        var(--lsw-ease)
        540ms;
}


/* ============================================================
   03. BACKGROUND ARCHITECTURE
   ============================================================ */

.lsw-sod__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-sod__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.055);

    transform:
        rotate(30deg);
}


.lsw-sod__shape--one {
    top: 10%;
    left: -145px;

    width: 300px;
    height: 300px;

    border-color:
        rgba(180, 140, 69, 0.12);
}


.lsw-sod__shape--two {
    right: -135px;
    bottom: 8%;

    width: 275px;
    height: 275px;
}


/*
    Horizontal field-like lines.
    Decorative only.
*/

.lsw-sod__field-lines {
    position: absolute;

    top: 32%;
    right: 4%;

    width: 250px;
    height: 165px;

    opacity: 0.032;

    background:
        repeating-linear-gradient(
            0deg,
            transparent 0,
            transparent 31px,
            rgba(36, 59, 42, 0.8) 32px,
            transparent 33px
        );

    transform:
        rotate(-5deg);
}


.lsw-sod__field-lines::before {
    content: "";

    position: absolute;

    top: 0;
    left: 50%;

    width: 1px;
    height: 100%;

    background:
        rgba(36, 59, 42, 0.55);
}


/* ============================================================
   04. SECTION IDENTITY
   ============================================================ */

.lsw-gallery-sod
.lsw-gallery-service__number {
    color:
        rgba(36, 59, 42, 0.20);
}


.lsw-gallery-sod
.lsw-gallery-service__title-accent {
    color:
        var(--lsw-forest-800);
}


/* ============================================================
   05. SOD GRID
   ============================================================ */

.lsw-sod-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(
            12,
            minmax(0, 1fr)
        );

    grid-template-rows:
        repeat(
            21,
            44px
        );

    gap: 13px;

    width: 100%;
}


/* ============================================================
   06. DESKTOP COLLAGE
   ============================================================ */


/*
    Wide introduction image.
*/

.lsw-sod-photo--01 {
    grid-column:
        1 / span 12;

    grid-row:
        1 / span 6;
}


/*
    Middle left / right.
*/

.lsw-sod-photo--02 {
    grid-column:
        1 / span 7;

    grid-row:
        7 / span 5;
}


.lsw-sod-photo--03 {
    grid-column:
        8 / span 5;

    grid-row:
        7 / span 5;
}


/*
    Tall details.
*/

.lsw-sod-photo--04 {
    grid-column:
        1 / span 3;

    grid-row:
        12 / span 6;
}


.lsw-sod-photo--05 {
    grid-column:
        4 / span 3;

    grid-row:
        12 / span 6;
}


/*
    Large secondary panoramic.
*/

.lsw-sod-photo--06 {
    grid-column:
        7 / span 6;

    grid-row:
        12 / span 6;
}


/*
    Bottom course.
*/

.lsw-sod-photo--07 {
    grid-column:
        1 / span 3;

    grid-row:
        18 / span 4;
}


.lsw-sod-photo--08 {
    grid-column:
        4 / span 3;

    grid-row:
        18 / span 4;
}


.lsw-sod-photo--09 {
    grid-column:
        7 / span 2;

    grid-row:
        18 / span 4;
}


.lsw-sod-photo--10 {
    grid-column:
        9 / span 4;

    grid-row:
        18 / span 4;
}


/* ============================================================
   07. PHOTO STYLE
   ============================================================ */

.lsw-gallery-sod
.lsw-gallery-photo {
    border-color:
        rgba(36, 59, 42, 0.10);

    box-shadow:
        0 13px 35px
        rgba(24, 38, 28, 0.085);
}


/* ============================================================
   08. ARCHITECTURAL CUTS
   ============================================================ */

.lsw-sod-photo--01 {
    clip-path:
        polygon(
            0 0,
            96% 0,
            100% 13%,
            100% 100%,
            4% 100%,
            0 87%
        );
}


.lsw-sod-photo--02 {
    clip-path:
        polygon(
            0 0,
            94% 0,
            100% 13%,
            100% 100%,
            0 100%
        );
}


.lsw-sod-photo--03 {
    clip-path:
        polygon(
            9% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 14%
        );
}


.lsw-sod-photo--06 {
    clip-path:
        polygon(
            0 0,
            93% 0,
            100% 14%,
            100% 100%,
            0 100%
        );
}


.lsw-sod-photo--10 {
    clip-path:
        polygon(
            8% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 18%
        );
}


/* ============================================================
   09. MAIN PHOTO EMPHASIS
   ============================================================ */

.lsw-sod-photo--01 {
    box-shadow:
        0 25px 64px
        rgba(24, 38, 28, 0.14);
}


.lsw-sod-photo--01
.lsw-gallery-photo__index {
    color:
        var(--lsw-forest-950);

    background:
        var(--lsw-gold-300);

    border-left-color:
        var(--lsw-forest-800);
}


/* ============================================================
   10. IMAGE TREATMENT
   ============================================================ */

.lsw-gallery-sod
.lsw-gallery-photo__media::after {
    background:
        linear-gradient(
            180deg,
            rgba(20, 29, 22, 0.01),
            rgba(20, 29, 22, 0.025) 55%,
            rgba(20, 29, 22, 0.21) 100%
        );
}


.lsw-sod-photo--01 img,
.lsw-sod-photo--02 img,
.lsw-sod-photo--03 img,
.lsw-sod-photo--06 img,
.lsw-sod-photo--10 img {
    object-position:
        center;
}


.lsw-sod-photo--04 img,
.lsw-sod-photo--05 img,
.lsw-sod-photo--09 img {
    object-position:
        center 50%;
}


/* ============================================================
   11. INITIAL STATES
   ============================================================ */

html.lsw-js
[data-sod-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-sod-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-sod
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-sod-reveal="summary"],
html.lsw-js
[data-sod-reveal="meta"],
html.lsw-js
[data-sod-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-sod
.lsw-sod-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   12. VISIBLE STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-sod.is-visible
[data-sod-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
[data-sod-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay:
        140ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay:
        230ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
[data-sod-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
[data-sod-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        390ms,
        transform
        850ms
        var(--lsw-ease)
        390ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


/* Stagger */

html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(1) {
    transition-delay: 430ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(2) {
    transition-delay: 490ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(3) {
    transition-delay: 550ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(4) {
    transition-delay: 610ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(5) {
    transition-delay: 670ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(6) {
    transition-delay: 730ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(7) {
    transition-delay: 790ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(8) {
    transition-delay: 850ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(9) {
    transition-delay: 910ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
.lsw-sod-photo:nth-child(10) {
    transition-delay: 970ms;
}


html.lsw-js
.lsw-gallery-sod.is-visible
[data-sod-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        900ms,
        transform
        900ms
        var(--lsw-ease)
        900ms;
}


/* ============================================================
   13. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-sod-grid {
        grid-template-rows:
            repeat(
                21,
                clamp(
                    38px,
                    3vw,
                    47px
                )
            );
    }

}


/* ============================================================
   14. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-sod-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                27,
                38px
            );

        gap: 11px;
    }


    .lsw-sod-photo--01 {
        grid-column:
            1 / span 8;

        grid-row:
            1 / span 6;
    }


    .lsw-sod-photo--02 {
        grid-column:
            1 / span 5;

        grid-row:
            7 / span 5;
    }


    .lsw-sod-photo--03 {
        grid-column:
            6 / span 3;

        grid-row:
            7 / span 5;
    }


    .lsw-sod-photo--04 {
        grid-column:
            1 / span 3;

        grid-row:
            12 / span 6;
    }


    .lsw-sod-photo--05 {
        grid-column:
            4 / span 2;

        grid-row:
            12 / span 6;
    }


    .lsw-sod-photo--06 {
        grid-column:
            6 / span 3;

        grid-row:
            12 / span 6;
    }


    .lsw-sod-photo--07 {
        grid-column:
            1 / span 3;

        grid-row:
            18 / span 5;
    }


    .lsw-sod-photo--08 {
        grid-column:
            4 / span 2;

        grid-row:
            18 / span 5;
    }


    .lsw-sod-photo--09 {
        grid-column:
            6 / span 3;

        grid-row:
            18 / span 5;
    }


    .lsw-sod-photo--10 {
        grid-column:
            1 / span 8;

        grid-row:
            23 / span 5;
    }

}


/* ============================================================
   15. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-sod__transition {
        height: 52px;
    }


    .lsw-sod__transition-plane {
        height: 36px;

        clip-path:
            polygon(
                0 0,
                100% 0,
                100% 34%,
                67% 34%,
                59% 100%,
                31% 100%,
                23% 53%,
                0 53%
            );
    }


    .lsw-sod__transition-line {
        top: 34px;
        left: 31%;

        width: 95px;
    }


    .lsw-sod__transition-mark {
        top: 29px;

        left:
            calc(
                31% + 88px
            );
    }


    .lsw-sod-grid {
        display: grid;

        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 10px;
    }


    .lsw-sod-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        aspect-ratio:
            4 / 3;
    }


    /*
        Preserve the panoramic visual language.
    */

    .lsw-sod-photo--01,
    .lsw-sod-photo--02,
    .lsw-sod-photo--06,
    .lsw-sod-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-sod-photo--04,
    .lsw-sod-photo--05,
    .lsw-sod-photo--09 {
        aspect-ratio:
            4 / 5;
    }

}


/* ============================================================
   16. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-sod__transition {
        height: 46px;
    }


    .lsw-sod__transition-plane {
        height: 30px;
    }


    .lsw-sod__transition-line {
        top: 29px;
        left: 30%;

        width: 74px;
    }


    .lsw-sod__transition-mark {
        top: 24px;

        left:
            calc(
                30% + 67px
            );

        width: 10px;
        height: 10px;
    }


    .lsw-sod-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-sod-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-sod-photo--01,
    .lsw-sod-photo--02,
    .lsw-sod-photo--03,
    .lsw-sod-photo--06,
    .lsw-sod-photo--10 {
        aspect-ratio:
            16 / 10;
    }


    .lsw-sod-photo--04,
    .lsw-sod-photo--05,
    .lsw-sod-photo--09 {
        aspect-ratio:
            4 / 5;
    }

}









































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   10. MULCH, PEBBLE & PINE STRAW
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-ground-cover {
    color:
        var(--lsw-text);

    background:
        #EDE5D8;
}


.lsw-gallery-ground-cover::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 16% 20%,
            rgba(165, 101, 73, 0.09),
            transparent 27%
        ),
        radial-gradient(
            circle at 83% 68%,
            rgba(104, 121, 86, 0.09),
            transparent 29%
        ),
        radial-gradient(
            circle at 69% 15%,
            rgba(199, 163, 93, 0.08),
            transparent 23%
        );
}


/* ============================================================
   02. TRANSITION
   ============================================================ */

.lsw-ground-cover__transition {
    position: absolute;

    z-index: 6;

    top: -1px;
    left: 0;

    width: 100%;
    height: 78px;

    pointer-events: none;
}


.lsw-ground-cover__transition-plane {
    position: absolute;

    inset:
        0
        0
        auto;

    width: 100%;
    height: 54px;

    background:
        var(--lsw-sand);

    clip-path:
        polygon(
            0 0,
            100% 0,
            100% 33%,
            78% 33%,
            72% 69%,
            46% 69%,
            40% 100%,
            19% 100%,
            13% 53%,
            0 53%
        );
}


.lsw-ground-cover__transition-line {
    position: absolute;

    z-index: 7;

    top: 52px;
    left: 19%;

    width: 165px;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--lsw-clay),
            var(--lsw-gold-500)
        );

    transform:
        scaleX(0);

    transform-origin:
        left center;
}


.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1100ms
        var(--lsw-ease);
}


.lsw-ground-cover__transition-mark {
    position: absolute;

    z-index: 8;

    top: 46px;

    left:
        calc(
            19% + 158px
        );

    width: 12px;
    height: 12px;

    background:
        #EDE5D8;

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg)
        scale(0);
}


.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover__transition-mark {
    transform:
        rotate(45deg)
        scale(1);

    transition:
        transform
        700ms
        var(--lsw-ease)
        550ms;
}


/* ============================================================
   03. BACKGROUND ARCHITECTURE
   ============================================================ */

.lsw-ground-cover__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-ground-cover__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.055);

    transform:
        rotate(30deg);
}


.lsw-ground-cover__shape--one {
    top: 7%;
    right: -135px;

    width: 300px;
    height: 300px;

    border-color:
        rgba(180, 140, 69, 0.12);
}


.lsw-ground-cover__shape--two {
    left: -120px;
    bottom: 7%;

    width: 260px;
    height: 260px;

    border-color:
        rgba(165, 101, 73, 0.12);
}


/*
    Abstract material layers.
*/

.lsw-ground-cover__layers {
    position: absolute;

    top: 30%;
    right: 3%;

    width: 240px;
    height: 180px;

    opacity: 0.045;

    transform:
        rotate(-5deg);
}


.lsw-ground-cover__layers::before,
.lsw-ground-cover__layers::after {
    content: "";

    position: absolute;

    left: 0;

    width: 100%;

    border:
        1px solid
        var(--lsw-forest-800);

    clip-path:
        polygon(
            0 20%,
            80% 0,
            100% 32%,
            83% 63%,
            28% 100%,
            0 74%
        );
}


.lsw-ground-cover__layers::before {
    top: 0;

    height: 82px;
}


.lsw-ground-cover__layers::after {
    top: 67px;

    height: 96px;

    transform:
        translateX(22px);
}


/* ============================================================
   04. SECTION IDENTITY
   ============================================================ */

.lsw-gallery-ground-cover
.lsw-gallery-service__number {
    color:
        rgba(165, 101, 73, 0.24);
}


.lsw-gallery-ground-cover
.lsw-gallery-service__category {
    color:
        var(--lsw-clay);
}


.lsw-gallery-ground-cover
.lsw-gallery-service__identity-line {
    background:
        linear-gradient(
            90deg,
            var(--lsw-clay),
            var(--lsw-gold-500)
        );
}


.lsw-gallery-ground-cover
.lsw-gallery-service__title-accent {
    color:
        var(--lsw-forest-800);
}


/* ============================================================
   05. MATERIAL INDEX
   ============================================================ */

.lsw-ground-cover__materials {
    display: grid;

    grid-template-columns:
        repeat(
            3,
            minmax(0, 1fr)
        );

    margin:
        -12px
        0
        clamp(
            48px,
            5vw,
            70px
        );

    border-top:
        1px solid
        rgba(36, 59, 42, 0.13);

    border-bottom:
        1px solid
        rgba(36, 59, 42, 0.13);
}


.lsw-ground-cover__material {
    position: relative;

    display: grid;

    grid-template-columns:
        auto
        1fr;

    align-items: center;

    gap: 17px;

    min-height: 86px;

    padding:
        18px
        clamp(
            18px,
            2vw,
            30px
        );

    border-right:
        1px solid
        rgba(36, 59, 42, 0.12);

    overflow: hidden;
}


.lsw-ground-cover__material:last-child {
    border-right: 0;
}


.lsw-ground-cover__material::before {
    content: "";

    position: absolute;

    inset: 0;

    opacity: 0;

    background:
        linear-gradient(
            135deg,
            rgba(255, 255, 255, 0.24),
            rgba(199, 163, 93, 0.05)
        );

    transition:
        opacity
        400ms
        var(--lsw-ease);
}


.lsw-ground-cover__material:hover::before {
    opacity: 1;
}


.lsw-ground-cover__material-number {
    position: relative;

    z-index: 2;

    display: grid;

    place-items: center;

    width: 34px;
    height: 34px;

    border:
        1px solid
        rgba(159, 122, 56, 0.48);

    font-family:
        var(--lsw-font-display);

    font-size: 1rem;

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-gold-700);

    transform:
        rotate(45deg);
}


.lsw-ground-cover__material-number::first-letter {
    transform:
        rotate(-45deg);
}


.lsw-ground-cover__material-name {
    position: relative;

    z-index: 2;

    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            1.4rem,
            1.65vw,
            1.8rem
        );

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-forest-800);
}


/* ============================================================
   06. COLLAGE
   ============================================================ */

.lsw-ground-cover-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(
            12,
            minmax(0, 1fr)
        );

    grid-template-rows:
        repeat(
            21,
            44px
        );

    gap: 13px;

    width: 100%;
}


/* ============================================================
   07. DESKTOP COMPOSITION
   ============================================================ */

/*
    Strong opening composition:
    one large image + one vertical detail.
*/

.lsw-ground-cover-photo--01 {
    grid-column:
        1 / span 8;

    grid-row:
        1 / span 6;
}


.lsw-ground-cover-photo--02 {
    grid-column:
        9 / span 4;

    grid-row:
        1 / span 6;
}


/*
    Textural middle layer.
*/

.lsw-ground-cover-photo--03 {
    grid-column:
        1 / span 4;

    grid-row:
        7 / span 5;
}


.lsw-ground-cover-photo--04 {
    grid-column:
        5 / span 8;

    grid-row:
        7 / span 5;
}


/*
    Layer two.
*/

.lsw-ground-cover-photo--05 {
    grid-column:
        1 / span 3;

    grid-row:
        12 / span 6;
}


.lsw-ground-cover-photo--06 {
    grid-column:
        4 / span 6;

    grid-row:
        12 / span 6;
}


.lsw-ground-cover-photo--07 {
    grid-column:
        10 / span 3;

    grid-row:
        12 / span 6;
}


/*
    Final course.
*/

.lsw-ground-cover-photo--08 {
    grid-column:
        1 / span 4;

    grid-row:
        18 / span 4;
}


.lsw-ground-cover-photo--09 {
    grid-column:
        5 / span 3;

    grid-row:
        18 / span 4;
}


.lsw-ground-cover-photo--10 {
    grid-column:
        8 / span 5;

    grid-row:
        18 / span 4;
}


/* ============================================================
   08. PHOTO TREATMENT
   ============================================================ */

.lsw-gallery-ground-cover
.lsw-gallery-photo {
    border-color:
        rgba(36, 59, 42, 0.10);

    box-shadow:
        0 14px 38px
        rgba(24, 38, 28, 0.09);
}


/* ============================================================
   09. ARCHITECTURAL CUTS
   ============================================================ */

.lsw-ground-cover-photo--01 {
    clip-path:
        polygon(
            0 0,
            95% 0,
            100% 11%,
            100% 100%,
            0 100%
        );
}


.lsw-ground-cover-photo--02 {
    clip-path:
        polygon(
            12% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 12%
        );
}


.lsw-ground-cover-photo--04 {
    clip-path:
        polygon(
            0 0,
            94% 0,
            100% 14%,
            100% 100%,
            5% 100%,
            0 87%
        );
}


.lsw-ground-cover-photo--06 {
    clip-path:
        polygon(
            5% 0,
            100% 0,
            100% 88%,
            94% 100%,
            0 100%,
            0 13%
        );
}


.lsw-ground-cover-photo--10 {
    clip-path:
        polygon(
            9% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 20%
        );
}


/* ============================================================
   10. FEATURED IMAGE
   ============================================================ */

.lsw-ground-cover-photo--06 {
    box-shadow:
        0 25px 62px
        rgba(24, 38, 28, 0.15);
}


.lsw-ground-cover-photo--06
.lsw-gallery-photo__index {
    color:
        var(--lsw-ivory-soft);

    background:
        var(--lsw-clay);

    border-left-color:
        var(--lsw-gold-300);
}


/* ============================================================
   11. IMAGE OVERLAY
   ============================================================ */

.lsw-gallery-ground-cover
.lsw-gallery-photo__media::after {
    background:
        linear-gradient(
            180deg,
            rgba(20, 27, 21, 0.01),
            rgba(20, 27, 21, 0.035) 55%,
            rgba(20, 27, 21, 0.23) 100%
        );
}


/* ============================================================
   12. IMAGE CROPS
   ============================================================ */

.lsw-ground-cover-photo--01 img,
.lsw-ground-cover-photo--04 img,
.lsw-ground-cover-photo--06 img,
.lsw-ground-cover-photo--10 img {
    object-position:
        center;
}


.lsw-ground-cover-photo--02 img,
.lsw-ground-cover-photo--05 img,
.lsw-ground-cover-photo--07 img {
    object-position:
        center 52%;
}


/* ============================================================
   13. LAST SERVICE FOOTER
   ============================================================ */

.lsw-ground-cover__footer
> a {
    min-width: 190px;
}


.lsw-ground-cover__footer
> a > strong {
    font-size:
        clamp(
            1.35rem,
            1.5vw,
            1.6rem
        );
}


/* ============================================================
   14. INITIAL REVEAL
   ============================================================ */

html.lsw-js
[data-ground-cover-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-ground-cover-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-ground-cover
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-ground-cover-reveal="summary"],
html.lsw-js
[data-ground-cover-reveal="materials"],
html.lsw-js
[data-ground-cover-reveal="meta"],
html.lsw-js
[data-ground-cover-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-ground-cover
.lsw-ground-cover-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   15. VISIBLE
   ============================================================ */

html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity
        650ms
        ease
        80ms,
        transform
        850ms
        var(--lsw-ease)
        80ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay: 140ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay: 230ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="materials"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        350ms,
        transform
        900ms
        var(--lsw-ease)
        350ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        420ms,
        transform
        850ms
        var(--lsw-ease)
        420ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(1) {
    transition-delay: 460ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(2) {
    transition-delay: 520ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(3) {
    transition-delay: 580ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(4) {
    transition-delay: 640ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(5) {
    transition-delay: 700ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(6) {
    transition-delay: 760ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(7) {
    transition-delay: 820ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(8) {
    transition-delay: 880ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(9) {
    transition-delay: 940ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
.lsw-ground-cover-photo:nth-child(10) {
    transition-delay: 1000ms;
}


html.lsw-js
.lsw-gallery-ground-cover.is-visible
[data-ground-cover-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        950ms,
        transform
        900ms
        var(--lsw-ease)
        950ms;
}


/* ============================================================
   16. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-ground-cover-grid {
        grid-template-rows:
            repeat(
                21,
                clamp(
                    38px,
                    3vw,
                    47px
                )
            );
    }

}


/* ============================================================
   17. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-ground-cover__materials {
        margin-top: 0;

        margin-bottom: 50px;
    }


    .lsw-ground-cover__material {
        min-height: 76px;

        padding:
            16px
            17px;

        gap: 13px;
    }


    .lsw-ground-cover__material-number {
        width: 30px;
        height: 30px;
    }


    .lsw-ground-cover__material-name {
        font-size: 1.35rem;
    }


    .lsw-ground-cover-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                28,
                38px
            );

        gap: 11px;
    }


    .lsw-ground-cover-photo--01 {
        grid-column:
            1 / span 5;

        grid-row:
            1 / span 6;
    }


    .lsw-ground-cover-photo--02 {
        grid-column:
            6 / span 3;

        grid-row:
            1 / span 6;
    }


    .lsw-ground-cover-photo--03 {
        grid-column:
            1 / span 3;

        grid-row:
            7 / span 5;
    }


    .lsw-ground-cover-photo--04 {
        grid-column:
            4 / span 5;

        grid-row:
            7 / span 5;
    }


    .lsw-ground-cover-photo--05 {
        grid-column:
            1 / span 2;

        grid-row:
            12 / span 7;
    }


    .lsw-ground-cover-photo--06 {
        grid-column:
            3 / span 4;

        grid-row:
            12 / span 7;
    }


    .lsw-ground-cover-photo--07 {
        grid-column:
            7 / span 2;

        grid-row:
            12 / span 7;
    }


    .lsw-ground-cover-photo--08 {
        grid-column:
            1 / span 3;

        grid-row:
            19 / span 5;
    }


    .lsw-ground-cover-photo--09 {
        grid-column:
            4 / span 2;

        grid-row:
            19 / span 5;
    }


    .lsw-ground-cover-photo--10 {
        grid-column:
            6 / span 3;

        grid-row:
            19 / span 5;
    }

}


/* ============================================================
   18. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-ground-cover__transition {
        height: 52px;
    }


    .lsw-ground-cover__transition-plane {
        height: 36px;
    }


    .lsw-ground-cover__transition-line {
        top: 34px;
        left: 20px;

        width: 95px;
    }


    .lsw-ground-cover__transition-mark {
        top: 29px;
        left: 108px;
    }


    .lsw-ground-cover__materials {
        grid-template-columns:
            repeat(
                3,
                minmax(0, 1fr)
            );

        margin:
            4px
            0
            43px;
    }


    .lsw-ground-cover__material {
        grid-template-columns: 1fr;

        align-content: center;

        gap: 9px;

        min-height: 95px;

        padding:
            13px
            12px;
    }


    .lsw-ground-cover__material-number {
        width: 27px;
        height: 27px;

        font-size: 0.9rem;
    }


    .lsw-ground-cover__material-name {
        font-size: 1.18rem;
    }


    .lsw-ground-cover-grid {
        display: grid;

        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 10px;
    }


    .lsw-ground-cover-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        aspect-ratio:
            4 / 3;
    }


    .lsw-ground-cover-photo--01,
    .lsw-ground-cover-photo--04,
    .lsw-ground-cover-photo--06,
    .lsw-ground-cover-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-ground-cover-photo--02,
    .lsw-ground-cover-photo--05,
    .lsw-ground-cover-photo--07 {
        aspect-ratio:
            4 / 5;
    }

}


/* ============================================================
   19. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-ground-cover__transition {
        height: 46px;
    }


    .lsw-ground-cover__transition-plane {
        height: 30px;
    }


    .lsw-ground-cover__transition-line {
        top: 29px;
        left: 15px;

        width: 74px;
    }


    .lsw-ground-cover__transition-mark {
        top: 24px;
        left: 82px;

        width: 10px;
        height: 10px;
    }


    /*
        On small screens the three materials
        become an editorial vertical index.
    */

    .lsw-ground-cover__materials {
        grid-template-columns: 1fr;

        margin:
            2px
            0
            36px;
    }


    .lsw-ground-cover__material {
        grid-template-columns:
            33px
            1fr;

        gap: 14px;

        min-height: 61px;

        padding:
            11px
            6px;

        border-right: 0;

        border-bottom:
            1px solid
            rgba(36, 59, 42, 0.10);
    }


    .lsw-ground-cover__material:last-child {
        border-bottom: 0;
    }


    .lsw-ground-cover__material-number {
        width: 27px;
        height: 27px;

        font-size: 0.9rem;
    }


    .lsw-ground-cover__material-name {
        font-size: 1.25rem;
    }


    .lsw-ground-cover-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-ground-cover-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-ground-cover-photo--01,
    .lsw-ground-cover-photo--04,
    .lsw-ground-cover-photo--06,
    .lsw-ground-cover-photo--10 {
        aspect-ratio:
            16 / 10;
    }


    .lsw-ground-cover-photo--02,
    .lsw-ground-cover-photo--05,
    .lsw-ground-cover-photo--07 {
        aspect-ratio:
            4 / 5;
    }


    .lsw-ground-cover__footer
    > a {
        min-width: 0;
    }

}














































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   12. FULLSCREEN IMAGE VIEWER
   ============================================================ */


/* ============================================================
   01. ACCESSIBILITY
   ============================================================ */

.lsw-gallery-viewer__sr-only {
    position: absolute !important;

    width: 1px !important;
    height: 1px !important;

    padding: 0 !important;
    margin: -1px !important;

    overflow: hidden !important;

    clip:
        rect(
            0,
            0,
            0,
            0
        ) !important;

    white-space: nowrap !important;

    border: 0 !important;
}


/* ============================================================
   02. ROOT
   ============================================================ */

.lsw-gallery-viewer {
    position: fixed;

    inset: 0;

    z-index: 12000;

    width: 100%;
    height: 100vh;
    height: 100dvh;

    overflow: hidden;

    color:
        var(--lsw-ivory-soft);

    background:
        #111812;

    opacity: 0;

    visibility: hidden;

    pointer-events: none;

    isolation: isolate;

    transition:
        opacity
        420ms
        var(--lsw-ease),
        visibility
        420ms
        step-end;
}


.lsw-gallery-viewer[hidden] {
    display: none;
}


.lsw-gallery-viewer.is-open {
    opacity: 1;

    visibility: visible;

    pointer-events: auto;

    transition:
        opacity
        420ms
        var(--lsw-ease),
        visibility
        0ms
        step-start;
}


/* ============================================================
   03. BACKDROP
   ============================================================ */

.lsw-gallery-viewer__backdrop {
    position: absolute;

    inset: 0;

    z-index: -4;

    background:
        rgba(12, 18, 13, 0.985);
}


/* Soft architectural texture */

.lsw-gallery-viewer::before {
    content: "";

    position: absolute;

    z-index: -3;

    top: -240px;
    right: -185px;

    width: 510px;
    height: 510px;

    border:
        1px solid
        rgba(199, 163, 93, 0.10);

    transform:
        rotate(30deg);

    pointer-events: none;
}


.lsw-gallery-viewer::after {
    content: "";

    position: absolute;

    z-index: -3;

    left: -170px;
    bottom: -245px;

    width: 430px;
    height: 430px;

    border:
        1px solid
        rgba(222, 199, 148, 0.065);

    transform:
        rotate(30deg);

    pointer-events: none;
}


/* ============================================================
   04. FRAME
   ============================================================ */

.lsw-gallery-viewer__frame {
    position: relative;

    display: grid;

    grid-template-rows:
        auto
        minmax(0, 1fr)
        auto;

    width: 100%;
    height: 100%;

    min-width: 0;
    min-height: 0;

    padding:
        env(safe-area-inset-top)
        env(safe-area-inset-right)
        env(safe-area-inset-bottom)
        env(safe-area-inset-left);
}


/* ============================================================
   05. TOP BAR
   ============================================================ */

.lsw-gallery-viewer__top {
    position: relative;

    z-index: 10;

    display: grid;

    grid-template-columns:
        minmax(200px, 1fr)
        auto
        minmax(200px, 1fr);

    align-items: center;

    gap: 25px;

    min-height: 86px;

    padding:
        17px
        clamp(
            24px,
            3vw,
            48px
        );

    border-bottom:
        1px solid
        rgba(222, 199, 148, 0.13);
}


/* ============================================================
   06. BRAND
   ============================================================ */

.lsw-gallery-viewer__brand {
    display: flex;

    align-items: center;

    gap: 14px;
}


.lsw-gallery-viewer__brand-mark {
    position: relative;

    display: grid;

    place-items: center;

    flex:
        0
        0
        28px;

    width: 28px;
    height: 28px;
}


.lsw-gallery-viewer__brand-mark::before {
    content: "";

    position: absolute;

    inset: 3px;

    border:
        1px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg);
}


.lsw-gallery-viewer__brand-mark span {
    width: 5px;
    height: 5px;

    background:
        var(--lsw-gold-300);
}


.lsw-gallery-viewer__brand-copy {
    display: grid;

    gap: 3px;
}


.lsw-gallery-viewer__brand-copy > span {
    font-family:
        var(--lsw-font-display);

    font-size: 1.25rem;

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-ivory-soft);
}


.lsw-gallery-viewer__brand-copy small {
    font-family:
        var(--lsw-font-body);

    font-size: 0.75rem;

    font-weight: 600;

    line-height: 1;

    letter-spacing: 0.11em;

    text-transform: uppercase;

    color:
        rgba(245, 241, 232, 0.54);
}


/* ============================================================
   07. TOP CENTER
   ============================================================ */

.lsw-gallery-viewer__top-center {
    display: flex;

    align-items: center;

    justify-content: center;

    gap: 11px;

    font-size: 0.78rem;

    font-weight: 700;

    line-height: 1;

    letter-spacing: 0.1em;

    text-transform: uppercase;

    color:
        rgba(245, 241, 232, 0.62);
}


.lsw-gallery-viewer__top-center
span:last-child {
    color:
        var(--lsw-gold-300);
}


.lsw-gallery-viewer__top-center i {
    width: 6px;
    height: 6px;

    border:
        1px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg);
}


/* ============================================================
   08. CLOSE
   ============================================================ */

.lsw-gallery-viewer__close {
    justify-self: end;

    display: inline-flex;

    align-items: center;

    gap: 10px;

    min-height: 46px;

    padding:
        9px
        12px
        9px
        17px;

    color:
        var(--lsw-ivory-soft);

    background:
        transparent;

    border:
        1px solid
        rgba(222, 199, 148, 0.24);

    border-radius:
        var(--lsw-radius-sm);

    font-family:
        var(--lsw-font-body);

    font-size: 0.76rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    text-transform: uppercase;

    cursor: pointer;

    transition:
        color
        350ms
        var(--lsw-ease),
        background-color
        350ms
        var(--lsw-ease),
        border-color
        350ms
        var(--lsw-ease),
        transform
        350ms
        var(--lsw-ease);
}


.lsw-gallery-viewer__close:hover {
    color:
        var(--lsw-forest-950);

    background:
        var(--lsw-gold-300);

    border-color:
        var(--lsw-gold-300);

    transform:
        translateY(-1px);
}


.lsw-gallery-viewer__close svg {
    width: 19px;
    height: 19px;
}


/* ============================================================
   09. STAGE
   ============================================================ */

.lsw-gallery-viewer__stage {
    position: relative;

    display: grid;

    grid-template-columns:
        minmax(70px, 110px)
        minmax(0, 1fr)
        minmax(70px, 110px);

    align-items: center;

    min-width: 0;
    min-height: 0;

    padding:
        clamp(
            18px,
            2.8vh,
            34px
        )
        clamp(
            22px,
            2.8vw,
            42px
        );

    touch-action:
        pan-y pinch-zoom;
}


/* ============================================================
   10. FIGURE
   ============================================================ */

.lsw-gallery-viewer__figure {
    position: relative;

    display: grid;

    place-items: center;

    width: 100%;
    height: 100%;

    min-width: 0;
    min-height: 0;

    margin: 0;

    padding:
        0
        clamp(
            20px,
            3vw,
            52px
        );
}


/* ============================================================
   11. IMAGE SHELL
   ============================================================ */

.lsw-gallery-viewer__image-shell {
    position: relative;

    display: flex;

    align-items: center;
    justify-content: center;

    width: 100%;
    height: 100%;

    min-width: 0;
    min-height: 0;

    overflow: hidden;
}


/* ============================================================
   12. IMAGE
   ============================================================ */

.lsw-gallery-viewer__image {
    display: block;

    max-width: 100%;
    max-height: 100%;

    width: auto;
    height: auto;

    object-fit: contain;

    opacity: 1;

    transform:
        scale(1);

    user-select: none;

    -webkit-user-drag: none;

    will-change:
        opacity,
        transform;

    transition:
        opacity
        310ms
        var(--lsw-ease),
        transform
        430ms
        var(--lsw-ease);

    filter:
        drop-shadow(
            0 25px 65px
            rgba(0, 0, 0, 0.34)
        );
}


.lsw-gallery-viewer.is-switching
.lsw-gallery-viewer__image {
    opacity: 0.12;

    transform:
        scale(0.985);
}


/* ============================================================
   13. ARCHITECTURAL IMAGE CORNERS
   ============================================================ */

.lsw-gallery-viewer__corner {
    position: absolute;

    z-index: 4;

    width: 34px;
    height: 34px;

    pointer-events: none;
}


.lsw-gallery-viewer__corner--tl {
    top: 0;
    left: 0;

    border-top:
        1px solid
        var(--lsw-gold-500);

    border-left:
        1px solid
        var(--lsw-gold-500);
}


.lsw-gallery-viewer__corner--tr {
    top: 0;
    right: 0;

    border-top:
        1px solid
        var(--lsw-gold-500);

    border-right:
        1px solid
        var(--lsw-gold-500);
}


.lsw-gallery-viewer__corner--bl {
    left: 0;
    bottom: 0;

    border-left:
        1px solid
        var(--lsw-gold-500);

    border-bottom:
        1px solid
        var(--lsw-gold-500);
}


.lsw-gallery-viewer__corner--br {
    right: 0;
    bottom: 0;

    border-right:
        1px solid
        var(--lsw-gold-500);

    border-bottom:
        1px solid
        var(--lsw-gold-500);
}


/* ============================================================
   14. PREVIOUS / NEXT
   ============================================================ */

.lsw-gallery-viewer__nav {
    position: relative;

    z-index: 8;

    display: grid;

    justify-items: center;

    align-content: center;

    gap: 11px;

    width: 72px;
    min-height: 94px;

    padding:
        12px
        8px;

    color:
        rgba(245, 241, 232, 0.72);

    background:
        transparent;

    border: 0;

    cursor: pointer;

    transition:
        color
        350ms
        var(--lsw-ease),
        transform
        350ms
        var(--lsw-ease);
}


.lsw-gallery-viewer__nav--prev {
    justify-self: start;
}


.lsw-gallery-viewer__nav--next {
    justify-self: end;
}


.lsw-gallery-viewer__nav:hover {
    color:
        var(--lsw-gold-300);
}


.lsw-gallery-viewer__nav--prev:hover {
    transform:
        translateX(-4px);
}


.lsw-gallery-viewer__nav--next:hover {
    transform:
        translateX(4px);
}


.lsw-gallery-viewer__nav:disabled {
    opacity: 0.28;

    pointer-events: none;
}


.lsw-gallery-viewer__nav-label {
    font-size: 0.72rem;

    font-weight: 700;

    letter-spacing: 0.09em;

    text-transform: uppercase;
}


.lsw-gallery-viewer__nav-icon {
    display: grid;

    place-items: center;

    width: 46px;
    height: 46px;

    border:
        1px solid
        rgba(222, 199, 148, 0.28);

    transform:
        rotate(45deg);

    transition:
        border-color
        350ms
        var(--lsw-ease),
        background-color
        350ms
        var(--lsw-ease);
}


.lsw-gallery-viewer__nav:hover
.lsw-gallery-viewer__nav-icon {
    border-color:
        var(--lsw-gold-500);

    background:
        rgba(199, 163, 93, 0.08);
}


.lsw-gallery-viewer__nav-icon svg {
    width: 21px;
    height: 21px;

    transform:
        rotate(-45deg);
}


/* ============================================================
   15. FOOTER
   ============================================================ */

.lsw-gallery-viewer__footer {
    position: relative;

    z-index: 10;

    display: grid;

    grid-template-columns:
        minmax(220px, auto)
        minmax(100px, 1fr)
        minmax(180px, auto);

    align-items: center;

    gap:
        clamp(
            25px,
            4vw,
            70px
        );

    min-height: 82px;

    padding:
        16px
        clamp(
            25px,
            3vw,
            48px
        );

    border-top:
        1px solid
        rgba(222, 199, 148, 0.13);
}


/* ============================================================
   16. META
   ============================================================ */

.lsw-gallery-viewer__meta {
    display: flex;

    align-items: center;

    gap: 12px;
}


.lsw-gallery-viewer__service {
    font-family:
        var(--lsw-font-display);

    font-size:
        clamp(
            1.25rem,
            1.55vw,
            1.55rem
        );

    font-weight: 600;

    line-height: 1;

    color:
        var(--lsw-ivory-soft);
}


.lsw-gallery-viewer__meta > i {
    width: 6px;
    height: 6px;

    border:
        1px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg);
}


/* ============================================================
   17. COUNTER
   ============================================================ */

.lsw-gallery-viewer__counter {
    display: flex;

    align-items: baseline;

    gap: 5px;

    font-size: 0.82rem;

    font-weight: 600;

    line-height: 1;

    color:
        rgba(245, 241, 232, 0.52);
}


.lsw-gallery-viewer__counter strong {
    font-family:
        var(--lsw-font-display);

    font-size: 1.45rem;

    font-weight: 600;

    color:
        var(--lsw-gold-300);
}


/* ============================================================
   18. PROGRESS
   ============================================================ */

.lsw-gallery-viewer__progress {
    position: relative;

    width: 100%;
    height: 1px;

    overflow: hidden;

    background:
        rgba(245, 241, 232, 0.15);
}


.lsw-gallery-viewer__progress-fill {
    position: absolute;

    inset:
        0
        auto
        0
        0;

    width: 10%;

    background:
        var(--lsw-gold-500);

    transform-origin:
        left center;

    transition:
        width
        480ms
        var(--lsw-ease);
}


/* ============================================================
   19. HINT
   ============================================================ */

.lsw-gallery-viewer__hint {
    justify-self: end;

    font-size: 0.76rem;

    font-weight: 600;

    line-height: 1.4;

    letter-spacing: 0.055em;

    color:
        rgba(245, 241, 232, 0.48);
}


.lsw-gallery-viewer__hint--mobile {
    display: none;
}


/* ============================================================
   20. FOCUS
   ============================================================ */

.lsw-gallery-viewer button:focus-visible {
    outline:
        2px solid
        var(--lsw-gold-300);

    outline-offset:
        4px;
}


/* ============================================================
   21. SINGLE IMAGE
   ============================================================ */

.lsw-gallery-viewer.is-single
.lsw-gallery-viewer__nav {
    opacity: 0;

    visibility: hidden;

    pointer-events: none;
}


.lsw-gallery-viewer.is-single
.lsw-gallery-viewer__progress {
    opacity: 0.35;
}


/* ============================================================
   22. REDUCED MOTION
   ============================================================ */

html.lsw-reduced-motion
.lsw-gallery-viewer,
html.lsw-reduced-motion
.lsw-gallery-viewer__image,
html.lsw-reduced-motion
.lsw-gallery-viewer__progress-fill,
html.lsw-reduced-motion
.lsw-gallery-viewer__nav,
html.lsw-reduced-motion
.lsw-gallery-viewer__close {
    transition-duration:
        0ms !important;
}


/* ============================================================
   23. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-gallery-viewer__stage {
        padding-inline:
            clamp(
                35px,
                4vw,
                70px
            );
    }


    .lsw-gallery-viewer__figure {
        padding-inline:
            clamp(
                35px,
                4.5vw,
                80px
            );
    }

}


/* ============================================================
   24. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-gallery-viewer__top {
        grid-template-columns:
            1fr
            auto;

        min-height: 78px;

        padding:
            14px
            26px;
    }


    .lsw-gallery-viewer__top-center {
        display: none;
    }


    .lsw-gallery-viewer__stage {
        grid-template-columns:
            72px
            minmax(0, 1fr)
            72px;

        padding:
            18px
            22px;
    }


    .lsw-gallery-viewer__figure {
        padding-inline:
            22px;
    }


    .lsw-gallery-viewer__nav {
        width: 58px;
    }


    .lsw-gallery-viewer__nav-label {
        display: none;
    }


    .lsw-gallery-viewer__footer {
        grid-template-columns:
            auto
            minmax(80px, 1fr)
            auto;

        min-height: 74px;

        padding:
            14px
            26px;
    }

}


/* ============================================================
   25. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-gallery-viewer__frame {
        grid-template-rows:
            auto
            minmax(0, 1fr)
            auto;
    }


    .lsw-gallery-viewer__top {
        grid-template-columns:
            minmax(0, 1fr)
            auto;

        min-height: 70px;

        gap: 15px;

        padding:
            12px
            18px;
    }


    .lsw-gallery-viewer__brand-copy > span {
        font-size: 1.1rem;
    }


    .lsw-gallery-viewer__brand-copy small {
        font-size: 0.72rem;
    }


    .lsw-gallery-viewer__top-center {
        display: none;
    }


    .lsw-gallery-viewer__close {
        min-height: 43px;

        padding:
            8px
            10px;
    }


    .lsw-gallery-viewer__close > span {
        display: none;
    }


    .lsw-gallery-viewer__close svg {
        width: 22px;
        height: 22px;
    }


    .lsw-gallery-viewer__stage {
        display: block;

        min-height: 0;

        padding:
            16px
            17px
            78px;
    }


    .lsw-gallery-viewer__figure {
        width: 100%;
        height: 100%;

        padding: 0;
    }


    /*
        Navigation controls move to bottom
        corners of the image stage.
    */

    .lsw-gallery-viewer__nav {
        position: absolute;

        z-index: 12;

        bottom: 14px;

        width: 52px;
        min-height: 52px;

        padding: 0;
    }


    .lsw-gallery-viewer__nav--prev {
        left: 18px;
    }


    .lsw-gallery-viewer__nav--next {
        right: 18px;
    }


    .lsw-gallery-viewer__nav-label {
        display: none;
    }


    .lsw-gallery-viewer__nav-icon {
        width: 42px;
        height: 42px;
    }


    .lsw-gallery-viewer__corner {
        width: 25px;
        height: 25px;
    }


    .lsw-gallery-viewer__footer {
        grid-template-columns: 1fr;

        gap: 11px;

        min-height: 86px;

        padding:
            13px
            18px
            15px;
    }


    .lsw-gallery-viewer__meta {
        justify-content: space-between;
    }


    .lsw-gallery-viewer__progress {
        order: 2;
    }


    .lsw-gallery-viewer__hint {
        display: none;
    }


    .lsw-gallery-viewer__hint--desktop {
        display: none;
    }


    .lsw-gallery-viewer__hint--mobile {
        display: inline;
    }

}


/* ============================================================
   26. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-gallery-viewer__top {
        grid-template-columns:
            minmax(0, 1fr)
            auto;

        min-height: 64px;

        gap: 10px;

        padding:
            10px
            14px;
    }


    .lsw-gallery-viewer__brand {
        gap: 10px;
    }


    .lsw-gallery-viewer__brand-mark {
        flex-basis: 24px;

        width: 24px;
        height: 24px;
    }


    .lsw-gallery-viewer__brand-copy > span {
        font-size: 1rem;
    }


    .lsw-gallery-viewer__brand-copy small {
        font-size: 0.7rem;
    }


    .lsw-gallery-viewer__top-center {
        display: none;
    }


    .lsw-gallery-viewer__close {
        min-width: 42px;
        min-height: 42px;

        padding: 8px;
    }


    .lsw-gallery-viewer__close > span {
        display: none;
    }


    .lsw-gallery-viewer__close svg {
        width: 22px;
        height: 22px;
    }


    .lsw-gallery-viewer__stage {
        display: block;

        min-height: 0;

        padding:
            12px
            12px
            67px;
    }


    .lsw-gallery-viewer__figure {
        width: 100%;
        height: 100%;

        padding: 0;
    }


    .lsw-gallery-viewer__image-shell {
        width: 100%;
        height: 100%;
    }


    .lsw-gallery-viewer__corner {
        width: 20px;
        height: 20px;
    }


    .lsw-gallery-viewer__nav {
        position: absolute;

        z-index: 12;

        bottom: 10px;

        width: 47px;
        min-height: 47px;

        padding: 0;
    }


    .lsw-gallery-viewer__nav--prev {
        left: 13px;
    }


    .lsw-gallery-viewer__nav--next {
        right: 13px;
    }


    .lsw-gallery-viewer__nav-label {
        display: none;
    }


    .lsw-gallery-viewer__nav-icon {
        width: 39px;
        height: 39px;
    }


    .lsw-gallery-viewer__nav-icon svg {
        width: 19px;
        height: 19px;
    }


    .lsw-gallery-viewer__footer {
        grid-template-columns: 1fr;

        gap: 9px;

        min-height: 81px;

        padding:
            12px
            14px
            14px;
    }


    .lsw-gallery-viewer__meta {
        justify-content: space-between;

        gap: 9px;
    }


    .lsw-gallery-viewer__service {
        font-size: 1.1rem;
    }


    .lsw-gallery-viewer__counter {
        font-size: 0.78rem;
    }


    .lsw-gallery-viewer__counter strong {
        font-size: 1.3rem;
    }


    .lsw-gallery-viewer__hint {
        display: none;
    }


    .lsw-gallery-viewer__hint--desktop {
        display: none;
    }


    .lsw-gallery-viewer__hint--mobile {
        display: inline;
    }

}





































/* ============================================================
   LAND & STONE WORKS LLC
   GALLERY.HTML
   08. ARTIFICIAL TURF
   ============================================================ */


/* ============================================================
   01. SECTION
   ============================================================ */

.lsw-gallery-artificial-turf {
    color:
        var(--lsw-text);

    background:
        var(--lsw-ivory-soft);
}


.lsw-gallery-artificial-turf::before {
    content: "";

    position: absolute;

    inset: 0;

    z-index: -4;

    pointer-events: none;

    background:
        radial-gradient(
            circle at 82% 19%,
            rgba(104, 121, 86, 0.09),
            transparent 27%
        ),
        radial-gradient(
            circle at 12% 77%,
            rgba(199, 163, 93, 0.07),
            transparent 28%
        );
}


/* ============================================================
   02. TRANSITION FROM MASONRY
   ============================================================ */

.lsw-turf__transition {
    position: absolute;

    z-index: 6;

    top: -1px;
    left: 0;

    width: 100%;
    height: 80px;

    pointer-events: none;
}


.lsw-turf__transition-plane {
    position: absolute;

    top: 0;
    left: 0;

    width: 100%;
    height: 58px;

    background:
        var(--lsw-forest-950);

    clip-path:
        polygon(
            0 0,
            100% 0,
            100% 33%,
            82% 33%,
            75% 100%,
            49% 100%,
            42% 51%,
            0 51%
        );
}


.lsw-turf__transition-line {
    position: absolute;

    z-index: 7;

    top: 56px;
    right: 10%;

    width: 155px;
    height: 1px;

    background:
        var(--lsw-gold-500);

    transform:
        scaleX(0);

    transform-origin:
        right center;
}


.lsw-gallery-artificial-turf.is-visible
.lsw-turf__transition-line {
    transform:
        scaleX(1);

    transition:
        transform
        1050ms
        var(--lsw-ease);
}


.lsw-turf__transition-mark {
    position: absolute;

    z-index: 8;

    top: 50px;

    right:
        calc(
            10% + 148px
        );

    width: 12px;
    height: 12px;

    background:
        var(--lsw-ivory-soft);

    border:
        2px solid
        var(--lsw-gold-500);

    transform:
        rotate(45deg)
        scale(0);
}


.lsw-gallery-artificial-turf.is-visible
.lsw-turf__transition-mark {
    transform:
        rotate(45deg)
        scale(1);

    transition:
        transform
        700ms
        var(--lsw-ease)
        540ms;
}


/* ============================================================
   03. BACKGROUND
   ============================================================ */

.lsw-turf__background {
    position: absolute;

    inset: 0;

    z-index: -2;

    overflow: hidden;

    pointer-events: none;
}


.lsw-turf__shape {
    position: absolute;

    border:
        1px solid
        rgba(36, 59, 42, 0.055);

    transform:
        rotate(30deg);
}


.lsw-turf__shape--one {
    top: 8%;
    right: -145px;

    width: 305px;
    height: 305px;
}


.lsw-turf__shape--two {
    left: -120px;
    bottom: 7%;

    width: 245px;
    height: 245px;

    border-color:
        rgba(180, 140, 69, 0.11);
}


.lsw-turf__grid {
    position: absolute;

    top: 27%;
    right: 4%;

    width: 205px;
    height: 205px;

    opacity: 0.027;

    background-image:
        linear-gradient(
            var(--lsw-forest-800) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            var(--lsw-forest-800) 1px,
            transparent 1px
        );

    background-size:
        41px 41px;

    transform:
        rotate(5deg);
}


/* ============================================================
   04. IDENTITY
   ============================================================ */

.lsw-gallery-artificial-turf
.lsw-gallery-service__number {
    color:
        rgba(66, 96, 71, 0.20);
}


.lsw-gallery-artificial-turf
.lsw-gallery-service__title-accent {
    color:
        var(--lsw-forest-700);
}


/* ============================================================
   05. GRID
   ============================================================ */

.lsw-turf-grid {
    position: relative;

    display: grid;

    grid-template-columns:
        repeat(12, minmax(0, 1fr));

    grid-template-rows:
        repeat(20, 44px);

    gap: 14px;

    width: 100%;
}


/* ============================================================
   06. DESKTOP COLLAGE
   ============================================================ */

.lsw-turf-photo--01 {
    grid-column:
        1 / span 8;

    grid-row:
        1 / span 6;
}


.lsw-turf-photo--02 {
    grid-column:
        9 / span 4;

    grid-row:
        1 / span 6;
}


.lsw-turf-photo--03 {
    grid-column:
        1 / span 4;

    grid-row:
        7 / span 4;
}


.lsw-turf-photo--04 {
    grid-column:
        5 / span 8;

    grid-row:
        7 / span 5;
}


.lsw-turf-photo--05 {
    grid-column:
        1 / span 4;

    grid-row:
        11 / span 6;
}


.lsw-turf-photo--06 {
    grid-column:
        5 / span 8;

    grid-row:
        12 / span 6;
}


.lsw-turf-photo--07 {
    grid-column:
        1 / span 4;

    grid-row:
        17 / span 4;
}


.lsw-turf-photo--08 {
    grid-column:
        5 / span 3;

    grid-row:
        18 / span 3;
}


.lsw-turf-photo--09 {
    grid-column:
        8 / span 2;

    grid-row:
        18 / span 3;
}


.lsw-turf-photo--10 {
    grid-column:
        10 / span 3;

    grid-row:
        18 / span 3;
}


/* ============================================================
   07. PHOTO APPEARANCE
   ============================================================ */

.lsw-gallery-artificial-turf
.lsw-gallery-photo {
    border-color:
        rgba(36, 59, 42, 0.09);

    box-shadow:
        0 14px 38px
        rgba(24, 38, 28, 0.085);
}


/* ============================================================
   08. FACET CUTS
   ============================================================ */

.lsw-turf-photo--01 {
    clip-path:
        polygon(
            0 0,
            96% 0,
            100% 10%,
            100% 100%,
            0 100%
        );
}


.lsw-turf-photo--02 {
    clip-path:
        polygon(
            10% 0,
            100% 0,
            100% 100%,
            0 100%,
            0 10%
        );
}


.lsw-turf-photo--04 {
    clip-path:
        polygon(
            0 0,
            94% 0,
            100% 13%,
            100% 100%,
            0 100%
        );
}


.lsw-turf-photo--06 {
    clip-path:
        polygon(
            4% 0,
            100% 0,
            100% 88%,
            94% 100%,
            0 100%,
            0 12%
        );
}


/* ============================================================
   09. FEATURE IMAGE
   ============================================================ */

.lsw-turf-photo--06 {
    box-shadow:
        0 26px 64px
        rgba(24, 38, 28, 0.14);
}


.lsw-turf-photo--06
.lsw-gallery-photo__index {
    color:
        var(--lsw-ivory-soft);

    background:
        var(--lsw-forest-800);

    border-left-color:
        var(--lsw-gold-500);
}


/* ============================================================
   10. IMAGE OVERLAY
   ============================================================ */

.lsw-gallery-artificial-turf
.lsw-gallery-photo__media::after {
    background:
        linear-gradient(
            180deg,
            rgba(17, 26, 20, 0.01),
            rgba(17, 26, 20, 0.025) 55%,
            rgba(17, 26, 20, 0.20) 100%
        );
}


/* ============================================================
   11. INITIAL STATES
   ============================================================ */

html.lsw-js
[data-turf-reveal="identity"] {
    opacity: 0;

    transform:
        translateX(-20px);
}


html.lsw-js
[data-turf-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(0);
}


html.lsw-js
.lsw-gallery-artificial-turf
.lsw-gallery-service__title-mask > span {
    opacity: 0.12;

    transform:
        translateY(112%);
}


html.lsw-js
[data-turf-reveal="summary"],
html.lsw-js
[data-turf-reveal="meta"],
html.lsw-js
[data-turf-reveal="footer"] {
    opacity: 0;

    transform:
        translateY(18px);
}


html.lsw-js
.lsw-gallery-artificial-turf
.lsw-turf-photo {
    opacity: 0;

    transform:
        translateY(20px)
        scale(0.985);
}


/* ============================================================
   12. VISIBLE STATES
   ============================================================ */

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
[data-turf-reveal="identity"] {
    opacity: 1;

    transform:
        translateX(0);

    transition:
        opacity 650ms ease 80ms,
        transform 850ms var(--lsw-ease) 80ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
[data-turf-reveal="identity"]
.lsw-gallery-service__identity-line {
    transform:
        scaleX(1);

    transition:
        transform
        900ms
        var(--lsw-ease)
        180ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-gallery-service__title-mask > span {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease,
        transform
        1000ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-gallery-service__title-mask:nth-child(1) > span {
    transition-delay:
        140ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-gallery-service__title-mask:nth-child(2) > span {
    transition-delay:
        230ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
[data-turf-reveal="summary"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        300ms,
        transform
        900ms
        var(--lsw-ease)
        300ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
[data-turf-reveal="meta"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        650ms
        ease
        390ms,
        transform
        850ms
        var(--lsw-ease)
        390ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo {
    opacity: 1;

    transform:
        translateY(0)
        scale(1);

    transition:
        opacity
        680ms
        ease,
        transform
        950ms
        var(--lsw-ease);
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(1) {
    transition-delay: 430ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(2) {
    transition-delay: 490ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(3) {
    transition-delay: 550ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(4) {
    transition-delay: 610ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(5) {
    transition-delay: 670ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(6) {
    transition-delay: 730ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(7) {
    transition-delay: 790ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(8) {
    transition-delay: 850ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(9) {
    transition-delay: 910ms;
}

html.lsw-js
.lsw-gallery-artificial-turf.is-visible
.lsw-turf-photo:nth-child(10) {
    transition-delay: 970ms;
}


html.lsw-js
.lsw-gallery-artificial-turf.is-visible
[data-turf-reveal="footer"] {
    opacity: 1;

    transform:
        translateY(0);

    transition:
        opacity
        700ms
        ease
        900ms,
        transform
        900ms
        var(--lsw-ease)
        900ms;
}


/* ============================================================
   13. COMPUTER
   ============================================================ */

@media (min-width: 1200px) {

    .lsw-turf-grid {
        grid-template-rows:
            repeat(
                20,
                clamp(
                    38px,
                    3vw,
                    47px
                )
            );
    }

}


/* ============================================================
   14. TABLET
   ============================================================ */

@media (min-width: 768px) and (max-width: 1199px) {

    .lsw-turf-grid {
        grid-template-columns:
            repeat(
                8,
                minmax(0, 1fr)
            );

        grid-template-rows:
            repeat(
                27,
                38px
            );

        gap: 11px;
    }


    .lsw-turf-photo--01 {
        grid-column: 1 / span 5;
        grid-row: 1 / span 6;
    }


    .lsw-turf-photo--02 {
        grid-column: 6 / span 3;
        grid-row: 1 / span 6;
    }


    .lsw-turf-photo--03 {
        grid-column: 1 / span 3;
        grid-row: 7 / span 5;
    }


    .lsw-turf-photo--04 {
        grid-column: 4 / span 5;
        grid-row: 7 / span 5;
    }


    .lsw-turf-photo--05 {
        grid-column: 1 / span 3;
        grid-row: 12 / span 7;
    }


    .lsw-turf-photo--06 {
        grid-column: 4 / span 5;
        grid-row: 12 / span 7;
    }


    .lsw-turf-photo--07 {
        grid-column: 1 / span 3;
        grid-row: 19 / span 5;
    }


    .lsw-turf-photo--08 {
        grid-column: 4 / span 2;
        grid-row: 19 / span 5;
    }


    .lsw-turf-photo--09 {
        grid-column: 6 / span 3;
        grid-row: 19 / span 5;
    }


    .lsw-turf-photo--10 {
        grid-column: 1 / span 8;
        grid-row: 24 / span 4;
    }

}


/* ============================================================
   15. MOBILE
   ============================================================ */

@media (min-width: 481px) and (max-width: 767px) {

    .lsw-turf__transition {
        height: 52px;
    }


    .lsw-turf__transition-plane {
        height: 36px;
    }


    .lsw-turf__transition-line {
        top: 34px;
        right: 20px;

        width: 95px;
    }


    .lsw-turf__transition-mark {
        top: 29px;
        right: 108px;
    }


    .lsw-turf-grid {
        display: grid;

        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 10px;
    }


    .lsw-turf-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        aspect-ratio:
            4 / 3;
    }


    .lsw-turf-photo--01,
    .lsw-turf-photo--04,
    .lsw-turf-photo--06,
    .lsw-turf-photo--10 {
        grid-column:
            1 / -1 !important;

        aspect-ratio:
            16 / 9;
    }


    .lsw-turf-photo--02,
    .lsw-turf-photo--05,
    .lsw-turf-photo--08 {
        aspect-ratio:
            4 / 5;
    }

}


/* ============================================================
   16. SMALL MOBILE
   ============================================================ */

@media (max-width: 480px) {

    .lsw-turf__transition {
        height: 46px;
    }


    .lsw-turf__transition-plane {
        height: 30px;
    }


    .lsw-turf__transition-line {
        top: 29px;
        right: 15px;

        width: 74px;
    }


    .lsw-turf__transition-mark {
        top: 24px;
        right: 82px;

        width: 10px;
        height: 10px;
    }


    .lsw-turf-grid {
        display: grid;

        grid-template-columns: 1fr;

        grid-template-rows: none;

        grid-auto-rows: auto;

        gap: 9px;
    }


    .lsw-turf-photo {
        grid-column:
            auto !important;

        grid-row:
            auto !important;

        width: 100%;

        aspect-ratio:
            4 / 3;

        clip-path: none;
    }


    .lsw-turf-photo--01,
    .lsw-turf-photo--04,
    .lsw-turf-photo--06,
    .lsw-turf-photo--10 {
        aspect-ratio:
            16 / 10;
    }


    .lsw-turf-photo--02,
    .lsw-turf-photo--05,
    .lsw-turf-photo--08 {
        aspect-ratio:
            4 / 5;
    }

}