/* So & So Hover Reveal v16.1.0 */

/*
 * Typography is deliberately self-contained. Set these properties on the
 * widget or a title in Elementor Custom CSS, for example:
 * selector .hover-title { --hrw-line-height: 0.75; }
 */
.hover-reveal-widget {
    --hrw-font-family: var(--ss-font-display, "neue-haas-grotesk-display", sans-serif);
    --hrw-font-size: var(--ss-type-hero-size, clamp(64px, 9.9vw, 190px));
    --hrw-line-height: var(--ss-type-hero-line, 0.95);
    --hrw-letter-spacing: var(--ss-type-hero-track, clamp(-4px, -0.18vw, -1.5px));
    --hrw-font-weight: 600;
    --hrw-image-width: var(--ss-hover-image-width, clamp(260px, 30vw, 600px));
    position: relative;
    display: block;
    width: 100%;
    max-width: 100%;
    padding-bottom: 120px;
}

/* Optional H3 style. The default remains the site's hero scale. */
.hover-reveal-widget.hrw-type-h3 {
    --hrw-font-size: var(--ss-type-h3-size, clamp(28px, 2.4vw, 42px));
    --hrw-line-height: var(--ss-type-h3-line, 1);
    --hrw-letter-spacing: var(--ss-type-h3-track, -1.5px);
}

.hover-menu {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    position: relative;
    z-index: 2;
}

.hover-item {
    display: inline-block;
    max-width: 100%;
    margin-bottom: 20px;
    cursor: pointer;
    position: relative;
    z-index: 3;
}

/* Elementor default/global heading styles cannot override these declarations. */
.elementor-element.elementor-element .hover-reveal-widget .hover-title,
.hover-reveal-widget .hover-title {
    display: block;
    margin: 0;
    padding: 0;
    font-family: var(--hrw-font-family) !important;
    font-size: var(--hrw-font-size) !important;
    line-height: var(--hrw-line-height) !important;
    letter-spacing: var(--hrw-letter-spacing) !important;
    font-weight: var(--hrw-font-weight) !important;
    text-transform: lowercase !important;
    transition: color 0.25s ease, transform 0.25s ease;
    will-change: transform;
}

.hover-image {
    position: absolute;
    top: 50%;
    right: 0;
    width: var(--hrw-image-width);
    max-width: 100%;
    height: auto;
    aspect-ratio: var(--hrw-image-ratio, auto);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 1;
    transform: translateY(-50%);
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.hover-image.is-visible {
    opacity: 1;
    visibility: visible;
}

/* Width changes; height stays automatic so raster and PNG assets never stretch. */
.hover-image img {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    object-fit: contain;
    opacity: 0;
    visibility: hidden;
    transform: scale(0.96);
    transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
}

.hover-image img.is-visible {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
}

.hover-reveal-widget,
.hover-reveal-widget * {
    box-sizing: border-box;
}

@media (max-width: 1024px) {
    .hover-reveal-widget { padding-bottom: 0; }
    .hover-image {
        position: relative;
        top: auto;
        right: auto;
        width: var(--hrw-image-width);
        max-width: 80vw;
        margin: 32px auto 0;
        transform: none;
    }
}

@media (max-width: 767px) {
    .hover-image { max-width: 90vw; }
}
