/* Home-only: photo hero, case-tile cursor badge, clients marquee keyframes, circle-teaser cream skin */

/* Photo hero: full-bleed image behind the existing hero type.
   Title/lead keep their shared sizes; only colour changes for the photo. */
.vm-hero--photo {
    min-height: 100vh;
    min-height: 100svh;
    align-items: flex-start;
    background-color: var(--green-deep);
    isolation: isolate;
}

.vm-hero__bg {
    position: absolute;
    inset: 0;
    z-index: -2;
}

.vm-hero__bg-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 50%;
    display: block;
}

/* Tint for legible white type: darker at the top-left where the copy sits */
.vm-hero--photo::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(95deg, rgba(10, 18, 15, .58) 0%, rgba(10, 18, 15, .36) 40%, rgba(10, 18, 15, .08) 65%, rgba(10, 18, 15, 0) 85%),
        linear-gradient(180deg, rgba(10, 18, 15, .30) 0%, rgba(10, 18, 15, .08) 35%, rgba(10, 18, 15, .08) 70%, rgba(10, 18, 15, .22) 100%);
    pointer-events: none;
}

.vm-hero--photo .vm-hero-title,
.vm-hero--photo .vm-hero__sub {
    color: var(--white);
    text-shadow: 0 2px 24px rgba(0, 0, 0, .22);
}

.vm-hero--photo .vm-hero__sub {
    opacity: 1;
}

/* Recent Works: shared list + corner-art layout lives in style.css (.vm-cases--feature);
   this page sets the art sizes and the room the bottom art needs. */
.vm-cases--feature {
    /* room for the bottom corner art (~0.72 of its width tall) */
    padding-bottom: clamp(110px, 32vw, 420px);
}

.vm-cases__art--tl { top: 0; left: 0; width: clamp(84px, 26vw, 412px); }
.vm-cases__art--tr { top: 0; right: 0; width: clamp(72px, 22vw, 349px); }
.vm-cases__art--bl { bottom: 0; left: 0; width: clamp(150px, 44vw, 660px); }
.vm-cases__art--br { bottom: 0; right: 0; width: clamp(130px, 38vw, 586px); }

@media (max-width: 767px) {
    .vm-cases__art--tl { width: 19vw; }
    .vm-cases__art--tr { width: 16vw; }
}

.vm-cases--feature .vm-sec-head {
    justify-content: center;
    text-align: center;
}

/* Service cards: content + photo inside each sticky card.
   Sticky stacking, offsets, colours and sizing stay in style.css. */
.vm-scard__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
}

.vm-scard__head {
    flex-direction: column;
    align-items: flex-start;
    row-gap: 18px;
}

.vm-scard__icon {
    display: block;
    width: auto;
    height: 56px;
}

.vm-scard__content .vm-scard__text {
    margin-top: 22px;
}

.vm-scard__content .vm-scard__tags {
    flex-direction: row;
    flex-wrap: wrap;
    margin-top: 26px;
}

.vm-scard__media {
    margin: 0;
    border: 2px solid currentColor;
    border-radius: 24px;
    overflow: hidden;
}

.vm-scard__media img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 445 / 478;
    object-fit: cover;
}

@media (min-width: 768px) {
    .vm-scard {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, .78fr);
        align-items: center;
        column-gap: clamp(28px, 4vw, 64px);
    }
}

@media (max-width: 767px) {
    .vm-scard {
        row-gap: 24px;
    }

    .vm-scard__icon {
        height: 44px;
    }

    .vm-scard__head {
        row-gap: 14px;
    }

    .vm-scard__content .vm-scard__text {
        margin-top: 16px;
    }

    .vm-scard__content .vm-scard__tags {
        column-gap: 8px;
        row-gap: 8px;
        margin-top: 20px;
    }

    .vm-scard__content .vm-stag {
        padding: 7px 14px;
    }

    .vm-scard__content .vm-scard__cta {
        margin-top: 20px;
    }

    .vm-scard__media img {
        aspect-ratio: 16 / 9;
    }
}

.vm-ph {
    transition: transform .8s cubic-bezier(.22, 1, .36, 1);
}

.vm-case-tile:hover .vm-ph {
    transform: scale(1.03);
}

@media (hover: hover) and (min-width: 769px) {
    .vm-case-tile { cursor: none; }
}

.vm-ins { transition: transform .5s cubic-bezier(.22, 1, .36, 1); }
.vm-ins:hover { transform: translateY(-6px); }

/* Clients marquee */
@keyframes vm-mq {
    to { transform: translateX(calc(-50% - 10px)); }
}

.vm-mq-row { animation: vm-mq 38s linear infinite; }
.vm-mq-row--rev { animation-direction: reverse; animation-duration: 46s; }
.vm-marquee:hover .vm-mq-row { animation-play-state: paused; }

/* "View" cursor badge that follows the pointer over case tiles */
.vm-showcase {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 200;
    width: 112px;
    height: 112px;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(0);
    transition: transform .4s cubic-bezier(.22, 1, .36, 1);
    border-radius: 50%;
    display: grid;
    place-items: center;
}

.vm-showcase.on {
    transform: translate(-50%, -50%) scale(1);
}

.vm-showcase__disc {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: rgba(31, 27, 22, .34);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
}

.vm-showcase__t {
    position: relative;
    color: var(--cream);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 11px;
    letter-spacing: .14em;
    text-transform: uppercase;
}

/* Circle-teaser cream skin (About teaser rendered on the green disc) */
.vm-circle .vm-h2,
.vm-circle .vm-lead,
.vm-circle p,
.vm-circle .vm-eyebrow,
.vm-circle .vm-link {
    color: var(--cream);
}

.vm-circle .vm-teaser-img {
    background-color: transparent;
    border-radius: 0;
}

@media (prefers-reduced-motion: reduce) {
    .vm-mq-row { animation: none !important; }
    .vm-circle { background-color: var(--green, #2e4338); }
}
