/**
 * Vimeva pro modules — component structure only.
 * All visible colors, sizes, radii and primary spacing are controlled from the
 * module settings and arrive here through CSS custom properties.
 */

.vimeva-logo-strip {
    height: var(--vls-height, 96px);
    background: var(--vls-bg, #0b141e);
    display: flex;
    align-items: center;
    overflow: hidden;
}
.vimeva-logo-strip ul {
    list-style: none;
    padding: 0 var(--vls-pad, 32px);
    margin: 0 auto;
    width: min(1548px, 100%);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--vls-gap, 52px);
}
.vimeva-logo-strip li {
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
}
.vimeva-logo-strip img {
    display: block;
    max-width: var(--vls-logo-w, 150px);
    max-height: var(--vls-logo-h, 34px);
    width: auto;
    height: auto;
    object-fit: contain;
    filter: var(--vls-filter, grayscale(1));
    opacity: var(--vls-opacity, 72%);
}
.vimeva-logo-strip__placeholder {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: .03em;
    color: #fff;
    opacity: var(--vls-opacity, 72%);
    white-space: nowrap;
}

.vimeva-stats {
    display: grid;
    grid-template-columns: repeat(var(--vs-cols, 4), minmax(0, 1fr));
    background: var(--vs-bg, #07111d);
    border: 1px solid var(--vs-border, rgba(255,255,255,.1));
    border-radius: var(--vs-radius, 8px);
    overflow: hidden;
}
.vimeva-stats > div {
    padding: var(--vs-pad, 31px) 26px;
    border-right: 1px solid var(--vs-border, rgba(255,255,255,.1));
    display: grid;
    gap: 7px;
}
.vimeva-stats > div:last-child { border-right: 0; }
.vimeva-stats strong {
    font-size: var(--vs-size, 36px);
    line-height: 1;
    color: var(--vs-number, #fff);
    letter-spacing: -.04em;
}
.vimeva-stats span {
    font-size: var(--vs-label-size, 12px);
    color: var(--vs-label, #91a0b4);
    text-transform: uppercase;
    letter-spacing: .12em;
}

.vimeva-cta-pro {
    background: var(--vc-bg, #07111d);
    border-radius: var(--vc-radius, 10px);
    padding: var(--vc-pad-y, 48px) var(--vc-pad-x, 52px);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 42px;
    overflow: hidden;
    position: relative;
}
.vimeva-cta-pro::after {
    content: "";
    position: absolute;
    inset: 0 0 0 auto;
    width: 40%;
    background: radial-gradient(circle at 70% 50%, rgba(20,150,255,.17), transparent 70%);
    pointer-events: none;
}
.vimeva-cta-pro > div { position: relative; z-index: 1; }
.vimeva-cta-pro small,
.vimeva-media-split small,
.vimeva-project-showcase header small {
    display: block;
    color: var(--vc-accent, #1496ff);
    font-size: 10px;
    letter-spacing: .25em;
    font-weight: 600;
    margin-bottom: 12px;
}
.vimeva-cta-pro h2 {
    padding: 0;
    margin: 0;
    color: var(--vc-title, #fff);
    font-size: var(--vc-title-size, 43px);
    line-height: 1.04;
    letter-spacing: -.035em;
}
.vimeva-cta-pro p {
    margin: 12px 0 0;
    color: var(--vc-text, #aebaca);
    font-size: var(--vc-text-size, 16px);
    max-width: 720px;
    line-height: 1.6;
}
.vimeva-cta-pro__actions {
    display: flex;
    gap: 12px;
    flex: 0 0 auto;
}
.vimeva-cta-pro__actions a {
    min-height: var(--vc-button-height, 46px);
    padding: 0 22px;
    border-radius: var(--vc-button-radius, 7px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    font-size: var(--vc-button-size, 13px);
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    box-sizing: border-box;
}
.vimeva-cta-pro__actions .primary {
    background: var(--vc-primary, #1496ff);
    color: var(--vc-primary-color, #fff);
    border: 1px solid transparent;
}
.vimeva-cta-pro__actions .secondary {
    color: var(--vc-secondary-color, #fff);
    border: 1px solid var(--vc-secondary-border, rgba(255,255,255,.55));
    background: transparent;
}

.vimeva-media-split {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr);
    gap: var(--vms-gap, 56px);
    align-items: center;
}
.vimeva-media-split.is-right .vimeva-media-split__media { order: 2; }
.vimeva-media-split__media {
    height: var(--vms-media-h, 460px);
    border-radius: var(--vms-radius, 8px);
    overflow: hidden;
    background: #020912;
    position: relative;
}
.vimeva-media-split__media picture { display: block; width: 100%; height: 100%; }
.vimeva-media-split__media-item {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border: 0;
    display: block;
}
.vimeva-media-split iframe { pointer-events: none; }
.vimeva-media-split__copy small { color: var(--vms-accent, #1496ff); }
.vimeva-media-split__copy h2 {
    margin: 0;
    padding: 0;
    color: var(--vms-title, #fff);
    font-size: var(--vms-title-size, 54px);
    line-height: 1.03;
    letter-spacing: -.035em;
}
.vimeva-media-split__copy p {
    margin: 18px 0 26px;
    color: var(--vms-text, #aebaca);
    font-size: var(--vms-text-size, 17px);
    line-height: 1.65;
}
.vimeva-media-split__copy a {
    color: var(--vms-accent, #1496ff);
    font-size: var(--vms-button-size, 14px);
    font-weight: 600;
    text-decoration: none;
}

.vimeva-testimonial {
    margin: 0;
    padding: var(--vt-pad, 48px);
    background: var(--vt-bg, #07111d);
    border-radius: var(--vt-radius, 9px);
    position: relative;
}
.vimeva-testimonial::before {
    content: "“";
    position: absolute;
    right: 40px;
    top: 10px;
    color: var(--vt-accent, #1496ff);
    opacity: .24;
    font-size: 120px;
    line-height: 1;
    font-family: Georgia, serif;
}
.vimeva-testimonial blockquote {
    margin: 0 0 30px;
    padding: 0;
    border: 0;
    color: var(--vt-quote, #fff);
    font-size: var(--vt-quote-size, 38px);
    line-height: 1.3;
    font-weight: 500;
    letter-spacing: -.025em;
    max-width: 900px;
}
.vimeva-testimonial figcaption {
    display: flex;
    align-items: center;
    gap: 14px;
}
.vimeva-testimonial .portrait {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    object-fit: cover;
}
.vimeva-testimonial figcaption span { display: grid; gap: 3px; }
.vimeva-testimonial figcaption strong {
    color: var(--vt-quote, #fff);
    font-size: var(--vt-name-size, 13px);
}
.vimeva-testimonial figcaption em {
    color: var(--vt-meta, #91a0b4);
    font-size: var(--vt-role-size, 12px);
    font-style: normal;
}
.vimeva-testimonial .company {
    margin-left: auto;
    max-height: 28px;
    max-width: 130px;
    opacity: .72;
}

.vimeva-project-showcase header { max-width: 720px; margin-bottom: 34px; }
.vimeva-project-showcase header small { color: var(--vps-accent, #1496ff); }
.vimeva-project-showcase header h2 {
    margin: 0;
    padding: 0;
    color: var(--vps-title, #fff);
    font-size: var(--vps-heading-size, 54px);
    line-height: 1.04;
    letter-spacing: -.035em;
}
.vimeva-project-showcase header p {
    color: var(--vps-text, #9ba9bb);
    margin: 14px 0 0;
}
.vimeva-project-showcase .grid {
    display: grid;
    grid-template-columns: repeat(var(--vps-cols, 3), minmax(0, 1fr));
    gap: var(--vps-gap, 16px);
}
.vimeva-project-showcase article {
    background: var(--vps-bg, #07111d);
    border: 1px solid var(--vps-border, rgba(255,255,255,.1));
    border-radius: var(--vps-radius, 8px);
    overflow: hidden;
}
.vimeva-project-showcase .media {
    height: var(--vps-media-h, 245px);
    display: flex;
    align-items: flex-end;
    padding: 16px;
    background: #0b141e center / cover no-repeat;
    text-decoration: none;
}
.vimeva-project-showcase .media span {
    background: rgba(2,9,18,.76);
    backdrop-filter: blur(8px);
    padding: 6px 9px;
    border-radius: 4px;
    color: #fff;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .12em;
}
.vimeva-project-showcase .body { padding: 22px; }
.vimeva-project-showcase h3 {
    margin: 0 0 9px;
    padding: 0;
    font-size: var(--vps-card-title-size, 20px);
}
.vimeva-project-showcase h3 a { color: var(--vps-title, #fff); }
.vimeva-project-showcase .body p {
    color: var(--vps-text, #9ba9bb);
    font-size: var(--vps-body-size, 13px);
    line-height: 1.55;
    margin: 0 0 17px;
}
.vimeva-project-showcase .more {
    color: var(--vps-accent, #1496ff);
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
}
.vimeva-project-empty {
    grid-column: 1 / -1;
    border: 1px dashed var(--vps-border, rgba(255,255,255,.15));
    padding: 30px;
    color: var(--vps-text, #9ba9bb);
}

.vimeva-contact-bar {
    background: var(--vcb-bg, #07111d);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--vcb-gap, 32px);
    padding: var(--vcb-pad-y, 12px) var(--vcb-pad-x, 18px);
}
.vimeva-contact-bar > a,
.vimeva-contact-bar > span {
    color: var(--vcb-text, #c8d0dc);
    font-size: var(--vcb-size, 13px);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.vimeva-contact-bar b {
    color: var(--vcb-icon, #1496ff);
    font-weight: 400;
}

.vimeva-mobile-menu { display: inline-flex; }
.vimeva-mobile-menu__toggle {
    width: 42px;
    height: 42px;
    border: 0;
    background: transparent;
    display: grid;
    align-content: center;
    gap: 5px;
    padding: 9px;
    cursor: pointer;
}
.vimeva-mobile-menu__toggle span {
    display: block;
    height: 1px;
    background: var(--vmm-text, #fff);
}
.vimeva-mobile-menu__panel {
    position: fixed;
    z-index: 999999;
    inset: 0 0 0 auto;
    width: min(var(--vmm-width, 420px), 92vw);
    background: var(--vmm-bg, #020912);
    padding: var(--vmm-pad, 26px);
    transform: translateX(102%);
    transition: transform .35s cubic-bezier(.22,.61,.36,1);
    overflow: auto;
    box-shadow: -30px 0 60px rgba(0,0,0,.3);
}
.vimeva-mobile-menu.is-open .vimeva-mobile-menu__panel { transform: none; }
.vimeva-mobile-menu__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 30px;
    border-bottom: 1px solid var(--vmm-divider, rgba(255,255,255,.1));
}
.vimeva-mobile-menu__head img {
    width: 160px;
    max-height: 50px;
    object-fit: contain;
    object-position: left center;
}
.vimeva-mobile-menu__close {
    background: none;
    border: 0;
    color: var(--vmm-text, #fff);
    font-size: 34px;
    cursor: pointer;
}
.vimeva-mobile-menu__links {
    list-style: none;
    padding: 20px 0;
    margin: 0;
}
.vimeva-mobile-menu__links li {
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--vmm-divider, rgba(255,255,255,.08));
}
.vimeva-mobile-menu__links a {
    display: block;
    padding: 16px 0;
    color: var(--vmm-text, #fff);
    font-size: var(--vmm-link-size, 17px);
    text-decoration: none;
}
.vimeva-mobile-menu__links .sub-menu {
    list-style: none;
    padding: 0 0 10px 18px;
}
.vimeva-mobile-menu__links .sub-menu a {
    font-size: var(--vmm-sub-size, 14px);
    color: var(--vmm-muted, #aebaca);
    padding: 10px 0;
}
.vimeva-mobile-menu__cta {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--vmm-button, #1496ff);
    color: var(--vmm-button-text, #fff);
    min-height: var(--vmm-button-height, 48px);
    border-radius: var(--vmm-radius, 7px);
    padding: 0 18px;
    text-decoration: none;
}

@media (max-width: 980px) {
    .vimeva-logo-strip { height: var(--vls-height-tablet, var(--vls-height)); }
    .vimeva-logo-strip ul {
        overflow-x: auto;
        justify-content: flex-start;
        gap: var(--vls-gap-tablet, var(--vls-gap));
        padding-inline: var(--vls-pad-tablet, var(--vls-pad));
    }
    .vimeva-logo-strip img {
        max-width: var(--vls-logo-w-tablet, var(--vls-logo-w));
        max-height: var(--vls-logo-h-tablet, var(--vls-logo-h));
    }
    .vimeva-stats { grid-template-columns: repeat(var(--vs-cols-tablet, 2), minmax(0, 1fr)); }
    .vimeva-stats > div { padding-top: var(--vs-pad-tablet, var(--vs-pad)); padding-bottom: var(--vs-pad-tablet, var(--vs-pad)); }
    .vimeva-stats strong { font-size: var(--vs-size-tablet, var(--vs-size)); }
    .vimeva-stats span { font-size: var(--vs-label-size-tablet, var(--vs-label-size)); }
    .vimeva-cta-pro {
        padding: var(--vc-pad-y-tablet, var(--vc-pad-y)) var(--vc-pad-x-tablet, var(--vc-pad-x));
        align-items: flex-start;
        flex-direction: column;
    }
    .vimeva-cta-pro h2 { font-size: var(--vc-title-size-tablet, var(--vc-title-size)); }
    .vimeva-cta-pro p { font-size: var(--vc-text-size-tablet, var(--vc-text-size)); }
    .vimeva-cta-pro__actions a {
        min-height: var(--vc-button-height-tablet, var(--vc-button-height));
        font-size: var(--vc-button-size-tablet, var(--vc-button-size));
    }
    .vimeva-media-split {
        grid-template-columns: 1fr;
        gap: var(--vms-gap-tablet, var(--vms-gap));
    }
    .vimeva-media-split.is-right .vimeva-media-split__media { order: 0; }
    .vimeva-media-split__media { height: var(--vms-media-h-tablet, var(--vms-media-h)); }
    .vimeva-media-split__copy h2 { font-size: var(--vms-title-size-tablet, var(--vms-title-size)); }
    .vimeva-media-split__copy p { font-size: var(--vms-text-size-tablet, var(--vms-text-size)); }
    .vimeva-media-split__copy a { font-size: var(--vms-button-size-tablet, var(--vms-button-size)); }
    .vimeva-testimonial { padding: var(--vt-pad-tablet, var(--vt-pad)); }
    .vimeva-testimonial blockquote { font-size: var(--vt-quote-size-tablet, var(--vt-quote-size)); }
    .vimeva-testimonial figcaption strong { font-size: var(--vt-name-size-tablet, var(--vt-name-size)); }
    .vimeva-testimonial figcaption em { font-size: var(--vt-role-size-tablet, var(--vt-role-size)); }
    .vimeva-project-showcase .grid {
        grid-template-columns: repeat(var(--vps-cols-tablet, 2), minmax(0, 1fr));
        gap: var(--vps-gap-tablet, var(--vps-gap));
    }
    .vimeva-project-showcase header h2 { font-size: var(--vps-heading-size-tablet, var(--vps-heading-size)); }
    .vimeva-project-showcase h3 { font-size: var(--vps-card-title-size-tablet, var(--vps-card-title-size)); }
    .vimeva-project-showcase .body p { font-size: var(--vps-body-size-tablet, var(--vps-body-size)); }
    .vimeva-project-showcase .media { height: var(--vps-media-h-tablet, var(--vps-media-h)); }
    .vimeva-contact-bar {
        gap: var(--vcb-gap-tablet, var(--vcb-gap));
        padding: var(--vcb-pad-y-tablet, var(--vcb-pad-y)) var(--vcb-pad-x-tablet, var(--vcb-pad-x));
    }
    .vimeva-contact-bar > a,
    .vimeva-contact-bar > span { font-size: var(--vcb-size-tablet, var(--vcb-size)); }
    .vimeva-mobile-menu__panel {
        width: min(var(--vmm-width-tablet, var(--vmm-width)), 92vw);
        padding: var(--vmm-pad-tablet, var(--vmm-pad));
    }
    .vimeva-mobile-menu__links a { font-size: var(--vmm-link-size-tablet, var(--vmm-link-size)); }
    .vimeva-mobile-menu__links .sub-menu a { font-size: var(--vmm-sub-size-tablet, var(--vmm-sub-size)); }
    .vimeva-mobile-menu__cta { min-height: var(--vmm-button-height-tablet, var(--vmm-button-height)); }
}

@media (max-width: 767px) {
    .vimeva-logo-strip {
        height: var(--vls-height-phone, var(--vls-height-tablet, var(--vls-height)));
        min-height: 72px;
    }
    .vimeva-logo-strip ul {
        gap: var(--vls-gap-phone, var(--vls-gap-tablet, var(--vls-gap)));
        padding-inline: var(--vls-pad-phone, var(--vls-pad-tablet, var(--vls-pad)));
    }
    .vimeva-logo-strip img {
        max-width: var(--vls-logo-w-phone, var(--vls-logo-w-tablet, var(--vls-logo-w)));
        max-height: var(--vls-logo-h-phone, var(--vls-logo-h-tablet, var(--vls-logo-h)));
    }
    .vimeva-stats { grid-template-columns: repeat(var(--vs-cols-phone, 1), minmax(0, 1fr)); }
    .vimeva-stats > div {
        border-right: 0;
        border-bottom: 1px solid var(--vs-border, rgba(255,255,255,.1));
        padding-top: var(--vs-pad-phone, var(--vs-pad-tablet, var(--vs-pad)));
        padding-bottom: var(--vs-pad-phone, var(--vs-pad-tablet, var(--vs-pad)));
    }
    .vimeva-stats > div:last-child { border-bottom: 0; }
    .vimeva-stats strong { font-size: var(--vs-size-phone, var(--vs-size-tablet, var(--vs-size))); }
    .vimeva-stats span { font-size: var(--vs-label-size-phone, var(--vs-label-size-tablet, var(--vs-label-size))); }
    .vimeva-cta-pro {
        padding: var(--vc-pad-y-phone, var(--vc-pad-y-tablet, var(--vc-pad-y))) var(--vc-pad-x-phone, var(--vc-pad-x-tablet, var(--vc-pad-x)));
    }
    .vimeva-cta-pro h2 { font-size: var(--vc-title-size-phone, var(--vc-title-size-tablet, var(--vc-title-size))); }
    .vimeva-cta-pro p { font-size: var(--vc-text-size-phone, var(--vc-text-size-tablet, var(--vc-text-size))); }
    .vimeva-cta-pro__actions { width: 100%; flex-direction: column; }
    .vimeva-cta-pro__actions a {
        width: 100%;
        min-height: var(--vc-button-height-phone, var(--vc-button-height-tablet, var(--vc-button-height)));
        font-size: var(--vc-button-size-phone, var(--vc-button-size-tablet, var(--vc-button-size)));
    }
    .vimeva-media-split { gap: var(--vms-gap-phone, var(--vms-gap-tablet, var(--vms-gap))); }
    .vimeva-media-split__media { height: var(--vms-media-h-phone, var(--vms-media-h-tablet, var(--vms-media-h))); }
    .vimeva-media-split__copy h2 { font-size: var(--vms-title-size-phone, var(--vms-title-size-tablet, var(--vms-title-size))); }
    .vimeva-media-split__copy p { font-size: var(--vms-text-size-phone, var(--vms-text-size-tablet, var(--vms-text-size))); }
    .vimeva-media-split__copy a { font-size: var(--vms-button-size-phone, var(--vms-button-size-tablet, var(--vms-button-size))); }
    .vimeva-testimonial { padding: var(--vt-pad-phone, var(--vt-pad-tablet, var(--vt-pad))); }
    .vimeva-testimonial blockquote { font-size: var(--vt-quote-size-phone, var(--vt-quote-size-tablet, var(--vt-quote-size))); }
    .vimeva-testimonial figcaption strong { font-size: var(--vt-name-size-phone, var(--vt-name-size-tablet, var(--vt-name-size))); }
    .vimeva-testimonial figcaption em { font-size: var(--vt-role-size-phone, var(--vt-role-size-tablet, var(--vt-role-size))); }
    .vimeva-project-showcase .grid {
        grid-template-columns: repeat(var(--vps-cols-phone, 1), minmax(0, 1fr));
        gap: var(--vps-gap-phone, var(--vps-gap-tablet, var(--vps-gap)));
    }
    .vimeva-project-showcase header h2 { font-size: var(--vps-heading-size-phone, var(--vps-heading-size-tablet, var(--vps-heading-size))); }
    .vimeva-project-showcase h3 { font-size: var(--vps-card-title-size-phone, var(--vps-card-title-size-tablet, var(--vps-card-title-size))); }
    .vimeva-project-showcase .body p { font-size: var(--vps-body-size-phone, var(--vps-body-size-tablet, var(--vps-body-size))); }
    .vimeva-project-showcase .media { height: var(--vps-media-h-phone, var(--vps-media-h-tablet, var(--vps-media-h))); }
    .vimeva-contact-bar {
        gap: var(--vcb-gap-phone, var(--vcb-gap-tablet, var(--vcb-gap)));
        padding: var(--vcb-pad-y-phone, var(--vcb-pad-y-tablet, var(--vcb-pad-y))) var(--vcb-pad-x-phone, var(--vcb-pad-x-tablet, var(--vcb-pad-x)));
    }
    .vimeva-contact-bar > a,
    .vimeva-contact-bar > span { font-size: var(--vcb-size-phone, var(--vcb-size-tablet, var(--vcb-size))); }
    .vimeva-mobile-menu__panel {
        width: min(var(--vmm-width-phone, var(--vmm-width-tablet, var(--vmm-width))), 94vw);
        padding: var(--vmm-pad-phone, var(--vmm-pad-tablet, var(--vmm-pad)));
    }
    .vimeva-mobile-menu__links a { font-size: var(--vmm-link-size-phone, var(--vmm-link-size-tablet, var(--vmm-link-size))); }
    .vimeva-mobile-menu__links .sub-menu a { font-size: var(--vmm-sub-size-phone, var(--vmm-sub-size-tablet, var(--vmm-sub-size))); }
    .vimeva-mobile-menu__cta { min-height: var(--vmm-button-height-phone, var(--vmm-button-height-tablet, var(--vmm-button-height))); }
}

@media (prefers-reduced-motion: reduce) {
    body:not(.vimeva-motion-never) .vimeva-mobile-menu__panel { transition: none; }
}

/* Mobile menu is intentionally a mobile-only header component. */
.vimeva-mobile-menu { display: none; }
.vimeva-mobile-menu__backdrop {
    position: fixed;
    z-index: 999998;
    inset: 0;
    border: 0;
    background: rgba(0,0,0,.56);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, visibility .25s ease;
}
.vimeva-mobile-menu.is-open .vimeva-mobile-menu__backdrop { opacity: 1; visibility: visible; }
html.vimeva-menu-open { overflow: hidden; }
@media (max-width: 980px) {
    .vimeva-mobile-menu { display: inline-flex; }
}
body.vimeva-motion-always .vimeva-mobile-menu__panel,
body.vimeva-motion-always .vimeva-mobile-menu__backdrop { transition: none; }
