/*
Theme Name: Hello Elementor Child
Theme URI: https://example.com/
Description: Child theme for Hello Elementor
Author: Your Name
Template: hello-elementor
Version: 1.0.0
Text Domain: hello-elementor-child
*/


/* ========================================
   SELECTED WORKS — GLOBAL VARIABLES
======================================== */

:root {
    --works-background: #ffffff;
    --works-text: #111111;
    --works-text-muted: #8a8a8a;
    --works-text-dimmed: #b8b8b8;

    --works-image-width: clamp(420px, 43vw, 760px);
    --works-image-height: clamp(400px, 62svh, 700px);

    --works-page-padding-x: clamp(24px, 4vw, 72px);
    --works-page-padding-y: clamp(28px, 4vw, 64px);
    --works-column-gap: clamp(40px, 6vw, 110px);
}


/* ========================================
   PAGE AND HEADER
======================================== */

html:has(.selected-works-page),
body:has(.selected-works-page) {
    margin: 0;
    background: var(--works-background) !important;
    background-color: var(--works-background) !important;
    background-image: none !important;
}

body:has(.selected-works-page) .elementor-location-header,
body:has(.selected-works-page) #site-header,
body:has(.selected-works-page) .site-header {
    position: relative !important;
    inset: auto !important;

    width: 100%;

    margin: 0 !important;

    background: var(--works-background) !important;
    background-color: var(--works-background) !important;
    background-image: none !important;

    z-index: 9999 !important;
}

body:has(.selected-works-page)
.elementor-location-header > .elementor-element {
    position: relative !important;

    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;

    width: 100%;

    background: var(--works-background) !important;

    z-index: 9999 !important;
}


/* ========================================
   SELECTED WORKS MAIN WRAPPER
======================================== */

.selected-works-page {
    position: relative;

    display: grid !important;
    grid-template-columns:
        minmax(0, 1fr)
        var(--works-image-width);
    grid-template-rows: auto;

    align-items: start;
    column-gap: var(--works-column-gap);

    width: 100% !important;
    max-width: none !important;
    min-height: 100svh;

    margin: 0 !important;

    padding:
        var(--works-page-padding-y)
        var(--works-page-padding-x)
        clamp(50px, 7vw, 100px) !important;

    overflow: visible !important;
    isolation: isolate;

    background: var(--works-background) !important;
    background-color: var(--works-background) !important;
    background-image: none !important;
}

.selected-works-page > .e-con-inner {
    display: contents !important;
    max-width: none !important;
}


/* ========================================
   PROJECTS CONTENT COLUMN
======================================== */

.works-content {
    position: relative;

    grid-column: 1;
    grid-row: 1;

    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;

    z-index: 3;
}

.works-content > .e-con-inner {
    width: 100% !important;
    max-width: none !important;

    margin: 0 !important;
    padding: 0 !important;
}


/* ========================================
   PAGE LABEL
======================================== */

.works-label {
    position: relative;

    width: fit-content;
    max-width: 100%;

    margin: 0 !important;
    padding: 0 !important;

    color: var(--works-text) !important;

    opacity: 1;

    background: transparent !important;

    z-index: 4;
}

.works-label,
.works-label *,
.works-label .elementor-heading-title,
.works-label .elementor-heading-title a {
    color: var(--works-text) !important;
}

.works-label .elementor-widget-container {
    margin: 0 !important;
    padding: 0 !important;
}


/* ========================================
   PROJECTS LIST
======================================== */

.works-list {
    position: relative;

    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;

    margin: 0 !important;

    padding-top: clamp(24px, 4vw, 54px) !important;
    padding-right: 0 !important;
    padding-bottom: clamp(48px, 7vw, 96px) !important;
    padding-left: 0 !important;

    background: transparent !important;

    z-index: 4;
}


/* ========================================
   ELEMENTOR LOOP GRID
======================================== */

.dynamic-works-grid {
    position: relative;

    width: 100% !important;
    max-width: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;

    z-index: 4;
}

.dynamic-works-grid .elementor-loop-container {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;

    align-items: flex-start !important;
    justify-content: flex-start !important;

    grid-template-columns: none !important;

    width: 100% !important;
    max-width: 100% !important;

    gap: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}

.dynamic-works-grid .e-loop-item {
    position: relative;

    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}

.dynamic-works-grid .e-loop-item + .e-loop-item {
    margin-top: 5px !important;
}


/* ========================================
   PROJECT ITEM
======================================== */

.work-item {
    position: relative;

    display: block;

    width: fit-content !important;
    max-width: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    opacity: 1;

    transform: translate3d(0, 0, 0);

    transition:
        transform 650ms cubic-bezier(.16, 1, .3, 1);

    cursor: pointer;

    background: transparent !important;

    z-index: 4;
}


/* Default state: all project titles are readable */

.works-list:not(.has-hover) .work-item {
    opacity: 1 !important;
    transform: translate3d(0, 0, 0) !important;
}


/* Hovered project */

.works-list.has-hover .work-item.is-hovered,
.works-list.has-hover .work-item.is-active,
.work-item:hover,
.work-item:focus-within {
    opacity: 1 !important;

    transform:
        translate3d(12px, 0, 0) !important;
}


/* Other projects while hovering */

.works-list.has-hover .work-item:not(.is-hovered) {
    opacity: 1 !important;
}


/* ========================================
   PROJECT TITLE
======================================== */

.work-title {
    position: relative;

    display: block;

    width: fit-content !important;
    max-width: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}

.work-title .elementor-widget-container {
    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}

.work-title .elementor-heading-title {
    margin: 0 !important;
    padding: 0 !important;

    color: var(--works-text-muted) !important;

    font-size: clamp(34px, 4.25vw, 68px);
    font-weight: 400;
    line-height: 1.03;
    letter-spacing: -0.035em;

    transition:
        color 300ms ease,
        opacity 300ms ease;
}

.work-title .elementor-heading-title a {
    display: block;

    color: inherit !important;
    text-decoration: none !important;

    outline: none;
}


/* Without hover, use a clean medium gray */

.works-list:not(.has-hover)
.work-title .elementor-heading-title {
    color: var(--works-text-muted) !important;
}


/* Active title becomes black */

.works-list.has-hover
.work-item.is-hovered
.work-title .elementor-heading-title,
.works-list.has-hover
.work-item.is-active
.work-title .elementor-heading-title,
.work-item:hover
.work-title .elementor-heading-title,
.work-item:focus-within
.work-title .elementor-heading-title {
    color: var(--works-text) !important;
}


/* Remaining titles become lighter during hover */

.works-list.has-hover
.work-item:not(.is-hovered)
.work-title .elementor-heading-title {
    color: var(--works-text-dimmed) !important;
}

.work-title .elementor-heading-title a:focus-visible {
    outline: 1px solid rgba(17, 17, 17, 0.65);
    outline-offset: 6px;
}


/* ========================================
   OPTIONAL PROJECT LOCATION
======================================== */

.work-location {
    position: relative;

    width: fit-content;
    max-width: 100%;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}

.work-location .elementor-widget-container {
    margin: 0 !important;
    padding: 0 !important;
}

.work-location,
.work-location *,
.work-location .elementor-heading-title,
.work-location .elementor-heading-title a {
    color: var(--works-text-muted) !important;
}

.work-location .elementor-heading-title {
    margin: 0 !important;
    padding: 0 !important;

    font-size: clamp(16px, 1.4vw, 23px);
    font-weight: 400;
    line-height: 1.15;
    letter-spacing: -0.01em;
}

.works-list.has-hover
.work-item.is-hovered
.work-location .elementor-heading-title,
.works-list.has-hover
.work-item.is-active
.work-location .elementor-heading-title {
    color: var(--works-text) !important;
}


/* Title and location in one line */

.work-heading-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;

    align-items: baseline !important;
    justify-content: flex-start !important;

    width: fit-content !important;
    max-width: 100% !important;

    gap: 8px !important;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;
}


/* ========================================
   HOVER IMAGE FRAME
======================================== */

.works-background {
    position: sticky !important;

    top: clamp(24px, 8svh, 90px) !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    inset: auto !important;

    grid-column: 2;
    grid-row: 1;

    align-self: start;
    justify-self: end;

    width: var(--works-image-width) !important;
    max-width: var(--works-image-width) !important;
    min-width: 0 !important;

    height: var(--works-image-height) !important;
    max-height: var(--works-image-height) !important;
    min-height: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;
    pointer-events: none !important;

    opacity: 0 !important;
    visibility: hidden !important;

    transform:
        translate3d(0, 12px, 0)
        scale(0.99);

    transition:
        opacity 220ms ease,
        visibility 0s linear 220ms,
        transform 550ms cubic-bezier(.16, 1, .3, 1);

    background: transparent !important;

    z-index: 1;
}


/* Image is visible only while the list has an actual hover */

.works-list.has-hover ~ .works-background {
    opacity: 1 !important;
    visibility: visible !important;
}


/*
 * Fallback because works-background may not be a direct sibling
 * of works-list in the Elementor structure.
 */

.selected-works-page:has(
    .works-list.has-hover .work-item.is-hovered
) .works-background {
    opacity: 1 !important;
    visibility: visible !important;

    transform:
        translate3d(0, 0, 0)
        scale(1);

    transition-delay: 0s;
}


/* Force hidden state after hover is removed */

.selected-works-page:not(
    :has(.works-list.has-hover .work-item.is-hovered)
) .works-background {
    opacity: 0 !important;
    visibility: hidden !important;

    transform:
        translate3d(0, 12px, 0)
        scale(0.99);
}


/* Image layers created by JavaScript */

.works-background-layer {
    position: absolute !important;
    inset: 0 !important;

    width: 100% !important;
    height: 100% !important;

    margin: 0 !important;
    padding: 0 !important;

    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;

    opacity: 0;

    transform:
        scale(1.035)
        translateZ(0);

    transition:
        opacity 500ms cubic-bezier(.22, .61, .36, 1),
        transform 1000ms cubic-bezier(.16, 1, .3, 1);

    will-change: opacity, transform;
    backface-visibility: hidden;
    pointer-events: none;
}

.works-background-layer.is-visible {
    opacity: 1;

    transform:
        scale(1)
        translateZ(0);
}


/* No overlay or gradient */

.works-background::before,
.works-background::after {
    content: none !important;
    display: none !important;
    background: none !important;
}

.works-overlay {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    background: none !important;
}


/* ========================================
   HIDDEN FEATURED IMAGE
======================================== */

.work-background-source {
    position: absolute !important;

    top: 0 !important;
    left: 0 !important;

    width: 1px !important;
    max-width: 1px !important;
    min-width: 1px !important;

    height: 1px !important;
    max-height: 1px !important;
    min-height: 1px !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;

    opacity: 0 !important;
    visibility: hidden !important;

    pointer-events: none !important;

    z-index: -1;
}

.work-background-source .elementor-widget-container,
.work-background-source img {
    width: 1px !important;
    max-width: 1px !important;
    min-width: 1px !important;

    height: 1px !important;
    max-height: 1px !important;
    min-height: 1px !important;

    margin: 0 !important;
    padding: 0 !important;

    overflow: hidden !important;

    opacity: 0 !important;
}


/* ========================================
   BOTTOM LINKS
======================================== */

.works-bottom-links {
    position: relative;

    display: flex;
    flex-direction: row;

    justify-content: space-between;
    align-items: center;

    width: 100%;

    margin: 0 !important;
    padding: 0 !important;

    background: transparent !important;

    z-index: 4;
}

.works-bottom-links,
.works-bottom-links * {
    color: var(--works-text) !important;
}


/* ========================================
   REMOVE ELEMENTOR BACKGROUNDS
======================================== */

.selected-works-page > .elementor-element,
.works-content,
.works-list,
.dynamic-works-grid,
.dynamic-works-grid .elementor-loop-container,
.dynamic-works-grid .e-loop-item,
.work-item,
.work-title,
.work-location {
    background-color: transparent !important;
    background-image: none !important;
}


/* ========================================
   TABLET
======================================== */

@media (max-width: 1024px) and (min-width: 768px) {

    :root {
        --works-image-width: 42vw;
        --works-image-height: 56svh;

        --works-column-gap: 30px;
        --works-page-padding-x: 28px;
        --works-page-padding-y: 34px;
    }

    .work-title .elementor-heading-title {
        font-size: clamp(30px, 5vw, 48px);
    }

    .work-location .elementor-heading-title {
        font-size: clamp(15px, 2vw, 20px);
    }
}


/* ========================================
   MOBILE
======================================== */

@media (max-width: 767px), (hover: none) {

    :root {
        --works-page-padding-x: 20px;
        --works-page-padding-y: 28px;
    }

    .selected-works-page {
        display: block !important;

        min-height: 100svh;

        padding:
            var(--works-page-padding-y)
            var(--works-page-padding-x)
            56px !important;
    }

    .works-background,
    .works-overlay {
        display: none !important;
    }

    .works-content {
        width: 100% !important;
    }

    .works-list {
        width: 100% !important;

        padding-top: 28px !important;
        padding-bottom: 56px !important;
    }

    .dynamic-works-grid .elementor-loop-container {
        align-items: stretch !important;
    }

    .dynamic-works-grid .e-loop-item {
        width: 100% !important;
    }

    .dynamic-works-grid .e-loop-item + .e-loop-item {
        margin-top: 13px !important;
    }

    .work-item,
    .work-item:hover,
    .work-item:focus-within,
    .work-item.is-active,
    .work-item.is-hovered {
        width: 100% !important;

        opacity: 1 !important;
        transform: none !important;
    }

    .work-title {
        width: 100% !important;
    }

    .work-title .elementor-heading-title {
        color: var(--works-text) !important;

        font-size: clamp(29px, 9.5vw, 46px);
        line-height: 1.06;
        letter-spacing: -0.025em;
    }

    .work-location .elementor-heading-title {
        color: var(--works-text-muted) !important;

        font-size: 16px;
        line-height: 1.2;
    }

    .work-heading-row {
        width: 100% !important;
        gap: 5px !important;
    }

    .works-bottom-links {
        flex-direction: column;
        align-items: flex-start;

        gap: 14px;
    }
}


/* ========================================
   REDUCED MOTION
======================================== */

@media (prefers-reduced-motion: reduce) {

    .works-background,
    .works-background-layer,
    .work-item,
    .work-title .elementor-heading-title {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
    }

    .work-item:hover,
    .work-item:focus-within,
    .work-item.is-active {
        transform: none !important;
    }
}