/*
 * J&V Modern Redesign 2.2 — safe visual layer.
 * Important: no generic h1/h2, section, [class*=...], swiper, grid, flex,
 * width, height or overflow overrides are used here.
 */

body.jvmr-safe-v2 {
    --jvmr-gold: var(--color-yellow, #ffd45a);
    --jvmr-deep: var(--color-bg-blue, #101a2f);
    --jvmr-card: var(--color-block-blue, #0b1529);
    --jvmr-text: rgba(255,255,255,.78);
    --jvmr-muted: rgba(255,255,255,.50);
    --jvmr-line: rgba(255,255,255,.12);
    --jvmr-line-gold: rgba(255,212,90,.30);
    --jvmr-shadow: 0 18px 50px rgba(2,10,26,.22);
    --jvmr-shadow-hover: 0 26px 70px rgba(2,10,26,.34);
    --jvmr-radius: 28px;
}

body.jvmr-safe-v2.jvmr-intensity-quiet {
    --jvmr-line-gold: rgba(255,212,90,.18);
    --jvmr-shadow: 0 12px 34px rgba(2,10,26,.15);
    --jvmr-shadow-hover: 0 18px 48px rgba(2,10,26,.23);
}

body.jvmr-safe-v2 .jvmr-safe-atmosphere {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

body.jvmr-safe-v2 .jvmr-safe-atmosphere::before,
body.jvmr-safe-v2 .jvmr-safe-atmosphere::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: .10;
}

body.jvmr-safe-v2 .jvmr-safe-atmosphere::before {
    width: 34rem;
    height: 34rem;
    left: -18rem;
    top: 20vh;
    background: #477bb8;
}

body.jvmr-safe-v2 .jvmr-safe-atmosphere::after {
    width: 28rem;
    height: 28rem;
    right: -16rem;
    top: 56vh;
    background: var(--jvmr-gold);
    opacity: .045;
}

body.jvmr-safe-v2 .tm-page {
    isolation: isolate;
}

body.jvmr-safe-v2 ::selection {
    background: var(--jvmr-gold);
    color: var(--jvmr-deep);
}

/* Header — exact component only. */
body.jvmr-safe-v2.jvmr-header-on .tm-header {
    border-bottom: 1px solid transparent;
    transition: background-color .28s ease, border-color .28s ease, box-shadow .28s ease, backdrop-filter .28s ease;
}

body.jvmr-safe-v2.jvmr-header-on .tm-header.tm-header_active,
body.jvmr-safe-v2.jvmr-header-on .tm-header.jvmr-header-scrolled {
    background: rgba(10, 22, 43, .88) !important;
    border-bottom-color: rgba(255,255,255,.08);
    box-shadow: 0 14px 42px rgba(2,10,26,.24);
    backdrop-filter: blur(18px) saturate(135%);
    -webkit-backdrop-filter: blur(18px) saturate(135%);
}

body.jvmr-safe-v2.jvmr-header-on .tm-menu-wrapper > li > ul {
    background: rgba(10, 23, 45, .96);
    border-color: rgba(255,255,255,.10);
    box-shadow: 0 24px 64px rgba(2,10,26,.35);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}

body.jvmr-safe-v2.jvmr-header-on .tm-menu-wrapper > li > span > a,
body.jvmr-safe-v2.jvmr-header-on .tm-header__btn a {
    transition: color .2s ease, opacity .2s ease;
}

/* Hero — exact .tm-banner only; never targets .tm-banner__* or .tm-hero-title. */
body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner {
    isolation: isolate;
    overflow: hidden;
}

body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        radial-gradient(circle at 78% 20%, rgba(255,212,90,.08), transparent 28%),
        linear-gradient(90deg, rgba(7,17,34,.50), rgba(7,17,34,.06) 62%, rgba(7,17,34,.22));
}

body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner > .tm-centered-content {
    z-index: 2;
}

body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner .tm-hero-title {
    text-shadow: 0 14px 44px rgba(0,0,0,.24);
}

body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner__text {
    color: rgba(255,255,255,.91);
    text-shadow: 0 8px 28px rgba(0,0,0,.24);
}

body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner__btn a {
    box-shadow: 0 16px 38px rgba(2,10,26,.22);
}

/* Home-section polish without new padding or widths. */
body.jvmr-safe-v2.home.jvmr-home-on .tm-services,
body.jvmr-safe-v2.home.jvmr-home-on .tm-cases-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-news-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-reviews-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-quiz-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-team-block--redesign,
body.jvmr-safe-v2.home.jvmr-home-on .tm-consult-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-form-block,
body.jvmr-safe-v2.home.jvmr-home-on .jvmr-home {
    position: relative;
}

body.jvmr-safe-v2.home.jvmr-home-on .tm-box-content,
body.jvmr-safe-v2.home.jvmr-home-on .tm-small-box-content,
body.jvmr-safe-v2.home.jvmr-home-on .tm-small-box-content-inner,
body.jvmr-safe-v2.home.jvmr-home-on .tm-team-redesign__media,
body.jvmr-safe-v2.home.jvmr-home-on .tm-quiz-form {
    border-color: var(--jvmr-line);
    box-shadow: var(--jvmr-shadow);
}

/* Exact card components. No sizing or display changes. */
body.jvmr-safe-v2.jvmr-cards-on .tm-services-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-catalog-block-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-cases-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-home-article-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-article-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-review-card,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-review-card,
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media {
    border-color: var(--jvmr-line) !important;
    box-shadow: var(--jvmr-shadow);
    transition: border-color .25s ease, box-shadow .25s ease, filter .25s ease;
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card {
    position: relative;
    isolation: isolate;
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
    border-radius: inherit;
    opacity: 0;
    background: radial-gradient(360px circle at var(--jvmr-x,50%) var(--jvmr-y,50%), rgba(255,212,90,.12), transparent 46%);
    transition: opacity .24s ease;
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:hover {
    border-color: var(--jvmr-line-gold) !important;
    box-shadow: var(--jvmr-shadow-hover);
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:hover::after {
    opacity: 1;
}

/* Keep original image geometry; only improve rendering. */
body.jvmr-safe-v2.jvmr-cards-on .tm-services-card img,
body.jvmr-safe-v2.jvmr-cards-on .tm-catalog-block-card img,
body.jvmr-safe-v2.jvmr-cards-on .tm-cases-card img,
body.jvmr-safe-v2.jvmr-cards-on .tm-home-article-card img,
body.jvmr-safe-v2.jvmr-cards-on .tm-article-card img,
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media img {
    filter: saturate(.96) contrast(1.025);
    transition: filter .3s ease;
}

body.jvmr-safe-v2.jvmr-cards-on .tm-services-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-catalog-block-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-cases-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-home-article-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-article-card:hover img {
    filter: saturate(1.02) contrast(1.04);
}

/* Buttons — exact theme button components, no transforms. */
body.jvmr-safe-v2 .tm-content-btn a,
body.jvmr-safe-v2 .tm-form-btn,
body.jvmr-safe-v2 .jvmr-button {
    transition: box-shadow .22s ease, filter .22s ease, border-color .22s ease, background-color .22s ease, color .22s ease !important;
}

body.jvmr-safe-v2 .tm-content-btn a:hover,
body.jvmr-safe-v2 .tm-form-btn:hover,
body.jvmr-safe-v2 .jvmr-button:hover {
    box-shadow: 0 14px 34px rgba(255,212,90,.15);
    filter: brightness(1.02);
}

/* Service archives: visual shell only. */
body.jvmr-safe-v2.jvmr-archives-on .tm-box-catalog,
body.jvmr-safe-v2.jvmr-archives-on .tm-mobilization-archive .tm-services-card,
body.jvmr-safe-v2.jvmr-archives-on .tm-military-archive .tm-services-card {
    border-color: var(--jvmr-line) !important;
    box-shadow: var(--jvmr-shadow);
}

body.jvmr-safe-v2.jvmr-archives-on .tm-box-catalog {
    background: linear-gradient(145deg, rgba(255,255,255,.025), rgba(255,255,255,.008));
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

body.jvmr-safe-v2.jvmr-archives-on .tm-tabs-triggers__item {
    transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}

body.jvmr-safe-v2.jvmr-archives-on .tm-tabs-triggers__item:hover {
    box-shadow: 0 10px 28px rgba(2,10,26,.14);
}

/* Inner content: preserve all typography and order. */
body.jvmr-safe-v2.jvmr-inner-pages-on .tm-single__content blockquote,
body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-builder-page blockquote,
body.jvmr-safe-v2.jvmr-inner-pages-on .entry-content blockquote,
body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-quote,
body.jvmr-safe-v2.jvmr-inner-pages-on .wp-block-quote {
    border-left-color: var(--jvmr-gold) !important;
    box-shadow: 0 14px 40px rgba(2,10,26,.13);
}

body.jvmr-safe-v2.jvmr-inner-pages-on .tm-single__content table,
body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-builder-page table,
body.jvmr-safe-v2.jvmr-inner-pages-on .entry-content table,
body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-price-table {
    box-shadow: 0 14px 42px rgba(2,10,26,.12);
}

body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-faq-item,
body.jvmr-safe-v2.jvmr-inner-pages-on details,
body.jvmr-safe-v2.jvmr-inner-pages-on .tm-accordion__item {
    border-color: var(--jvmr-line) !important;
    transition: border-color .2s ease, box-shadow .2s ease;
}

body.jvmr-safe-v2.jvmr-inner-pages-on .jv-service-faq-item:hover,
body.jvmr-safe-v2.jvmr-inner-pages-on details:hover,
body.jvmr-safe-v2.jvmr-inner-pages-on .tm-accordion__item:hover {
    border-color: var(--jvmr-line-gold) !important;
    box-shadow: 0 12px 34px rgba(2,10,26,.13);
}

/* Manual Google Reviews compatibility. */
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-summary,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-hero-score,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-review-card {
    border-color: var(--jvmr-line) !important;
    box-shadow: var(--jvmr-shadow);
}

body.jvmr-safe-v2.jvmr-reviews-on .jvmr-review-card:hover {
    border-color: var(--jvmr-line-gold) !important;
    box-shadow: var(--jvmr-shadow-hover);
}

/* Quiz and forms: no widths, heights, flex or overflow changes. */
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-content-form,
body.jvmr-safe-v2.jvmr-quiz-forms-on .form-popup-content,
body.jvmr-safe-v2.jvmr-quiz-forms-on .pum-container {
    border-color: var(--jvmr-line-gold) !important;
    box-shadow: 0 24px 72px rgba(2,10,26,.32);
}

body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form__button,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form__button .wpcf7-list-item-label {
    transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}

body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form__button:hover,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form__button .wpcf7-list-item-label:hover {
    border-color: var(--jvmr-line-gold) !important;
    box-shadow: 0 8px 24px rgba(2,10,26,.12);
}

body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-content-form input:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-content-form textarea:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-popup-master input:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-popup-master textarea:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form input:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form textarea:focus,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-form select:focus {
    border-color: rgba(255,212,90,.65) !important;
    box-shadow: 0 0 0 4px rgba(255,212,90,.08) !important;
    outline: none !important;
}

/* Footer. */
body.jvmr-safe-v2.jvmr-footer-on .tm-footer {
    border-top: 1px solid rgba(255,255,255,.08);
    background: linear-gradient(180deg, rgba(7,17,34,.04), rgba(7,17,34,.50));
}

body.jvmr-safe-v2.jvmr-footer-on .tm-footer a {
    transition: color .2s ease, opacity .2s ease;
}

body.jvmr-safe-v2.jvmr-footer-on .tm-footer a:hover {
    color: var(--jvmr-gold);
}

/* Reveal: only classes added to known top-level components by our JS. */
body.jvmr-safe-v2.jvmr-motion-on .jvmr-safe-reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .65s cubic-bezier(.2,.7,.2,1), transform .65s cubic-bezier(.2,.7,.2,1);
}

body.jvmr-safe-v2.jvmr-motion-on .jvmr-safe-reveal.jvmr-safe-visible {
    opacity: 1;
    transform: translateY(0);
}

body.jvmr-safe-v2 .jvmr-safe-scroll-progress {
    position: fixed;
    left: 0;
    top: 0;
    width: var(--jvmr-scroll, 0%);
    height: 2px;
    z-index: 100001;
    pointer-events: none;
    background: linear-gradient(90deg, var(--jvmr-gold), #fff0a8);
    box-shadow: 0 0 14px rgba(255,212,90,.44);
}

body.jvmr-safe-v2.jvmr-preview::after {
    content: "J&V REDESIGN · SAFE PREVIEW";
    position: fixed;
    right: 14px;
    bottom: 14px;
    z-index: 999999;
    padding: 9px 13px;
    border-radius: 999px;
    background: var(--jvmr-gold);
    color: var(--jvmr-deep);
    font: 700 10px/1 Arial, sans-serif;
    letter-spacing: .07em;
    box-shadow: 0 12px 28px rgba(2,10,26,.30);
}

@media (max-width: 767px) {
    body.jvmr-safe-v2 .jvmr-safe-atmosphere::before,
    body.jvmr-safe-v2 .jvmr-safe-atmosphere::after {
        width: 20rem;
        height: 20rem;
    }

    body.jvmr-safe-v2.jvmr-preview::after {
        right: 8px;
        bottom: 8px;
        padding: 7px 10px;
        font-size: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.jvmr-safe-v2 .jvmr-safe-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* ======================================================================
   J&V Modern Redesign 2.1 — seamless atmosphere and premium micro-effects
   ====================================================================== */

/* The old fixed blobs could appear below opaque section backgrounds.
   In 2.1 the light is rendered locally inside each known section. */
body.jvmr-safe-v2 .jvmr-safe-atmosphere,
body.jvmr-safe-v2 .jvmr-safe-atmosphere::before,
body.jvmr-safe-v2 .jvmr-safe-atmosphere::after {
    display: none !important;
}

/* One continuous page background. It remains visible through transparent
   top-level sections and therefore does not create rectangular islands. */
body.jvmr-safe-v2.home .tm-page {
    background-color: var(--jvmr-deep) !important;
    background-image:
        radial-gradient(72rem 52rem at -10% 24%, rgba(60, 101, 174, .115), transparent 72%),
        radial-gradient(64rem 48rem at 108% 47%, rgba(255, 212, 90, .050), transparent 74%),
        radial-gradient(70rem 54rem at 8% 82%, rgba(47, 81, 146, .105), transparent 73%) !important;
    background-repeat: no-repeat !important;
    background-attachment: fixed !important;
}

/* Remove only flat section fills that match the page colour. Inner cards,
   forms, images and sliders keep their own backgrounds. */
body.jvmr-safe-v2.home.jvmr-home-on .tm-services,
body.jvmr-safe-v2.home.jvmr-home-on .tm-team-block--redesign,
body.jvmr-safe-v2.home.jvmr-home-on .tm-cases-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-news-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-reviews-block,
body.jvmr-safe-v2.home.jvmr-home-on .jvmr-home,
body.jvmr-safe-v2.home.jvmr-home-on .tm-quiz-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-consult-block,
body.jvmr-safe-v2.home.jvmr-home-on .tm-form-block,
body.jvmr-safe-v2 .jvmr-page-quiz {
    background-color: transparent !important;
}

/* Added only by our JavaScript to a legacy gradient wrapper directly
   surrounding a redesigned section. */
body.jvmr-safe-v2 .jvmr-flat-bg {
    background-color: transparent !important;
    background-image: none !important;
}

/* Local section aura: sits above the section background but below content.
   It fades to full transparency at all edges, so no square can be visible. */
body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient {
    position: relative !important;
    isolation: isolate !important;
}

body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(
            48rem 34rem at var(--jvmr-aura-x, 78%) var(--jvmr-aura-y, 44%),
            var(--jvmr-aura-color, rgba(255, 212, 90, .08)) 0%,
            color-mix(in srgb, var(--jvmr-aura-color, rgba(255, 212, 90, .08)) 62%, transparent) 28%,
            transparent 70%
        );
    opacity: .92;
    transition: background-position .18s linear, opacity .35s ease;
}

/* Fallback for browsers without color-mix. */
@supports not (color: color-mix(in srgb, white, black)) {
    body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::before {
        background: radial-gradient(
            48rem 34rem at var(--jvmr-aura-x, 78%) var(--jvmr-aura-y, 44%),
            var(--jvmr-aura-color, rgba(255, 212, 90, .08)),
            transparent 70%
        );
    }
}

/* Very subtle separator that dissolves at both sides. */
body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::after {
    content: "";
    position: absolute;
    left: 10%;
    right: 10%;
    top: 0;
    height: 1px;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.065), transparent);
    opacity: .65;
}

/* Premium grain: fixed overlay, no layout influence and no interaction. */
body.jvmr-safe-v2.jvmr-premium-texture-on .jvmr-safe-texture {
    position: fixed;
    inset: 0;
    z-index: 900;
    pointer-events: none;
    opacity: .020;
    mix-blend-mode: soft-light;
    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='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.78'/%3E%3C/svg%3E");
    background-size: 180px 180px;
}

/* Button sheen uses only a pseudo-element; the button itself never moves. */
body.jvmr-safe-v2.jvmr-button-shine-on .jvmr-shine-button {
    position: relative !important;
    overflow: hidden !important;
    isolation: isolate !important;
}

body.jvmr-safe-v2.jvmr-button-shine-on .jvmr-shine-button::before {
    content: "";
    position: absolute;
    top: -45%;
    bottom: -45%;
    left: -42%;
    width: 24%;
    z-index: 0;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.46), transparent);
    transform: translateX(-190%) rotate(16deg);
    transition: transform .62s cubic-bezier(.22,.61,.36,1);
}

body.jvmr-safe-v2.jvmr-button-shine-on .jvmr-shine-button:hover::before,
body.jvmr-safe-v2.jvmr-button-shine-on .jvmr-shine-button:focus-visible::before {
    transform: translateX(650%) rotate(16deg);
}

body.jvmr-safe-v2.jvmr-button-shine-on .jvmr-shine-button > * {
    position: relative;
    z-index: 1;
}

/* Softer reveal: content never becomes fully invisible while scrolling. */
body.jvmr-safe-v2.jvmr-motion-on .jvmr-safe-reveal {
    opacity: .72;
    transform: none !important;
    filter: blur(1.5px);
    transition: opacity .58s cubic-bezier(.2,.7,.2,1), filter .58s cubic-bezier(.2,.7,.2,1) !important;
}

body.jvmr-safe-v2.jvmr-motion-on .jvmr-safe-reveal.jvmr-safe-visible {
    opacity: 1;
    transform: none !important;
    filter: none;
}

/* Staggered card appearance without transforms, width or height changes. */
body.jvmr-safe-v2.jvmr-stagger-cards-on .jvmr-stagger-card {
    opacity: .66;
    filter: saturate(.88) blur(1.2px);
    transition:
        opacity .48s cubic-bezier(.2,.7,.2,1) var(--jvmr-stagger-delay, 0ms),
        filter .48s cubic-bezier(.2,.7,.2,1) var(--jvmr-stagger-delay, 0ms),
        border-color .25s ease,
        box-shadow .25s ease !important;
}

body.jvmr-safe-v2.jvmr-stagger-cards-on .jvmr-stagger-card.jvmr-stagger-visible {
    opacity: 1;
    filter: none;
}

/* Make the manual reviews block visually part of the page instead of a
   separate dark rectangle. Cards and score widgets remain unchanged. */
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-home,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-page,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-page-quiz {
    background-color: transparent !important;
}

/* Focus-visible ring for keyboard navigation. */
body.jvmr-safe-v2 a:focus-visible,
body.jvmr-safe-v2 button:focus-visible,
body.jvmr-safe-v2 input:focus-visible,
body.jvmr-safe-v2 textarea:focus-visible,
body.jvmr-safe-v2 select:focus-visible {
    outline: 2px solid rgba(255,212,90,.88) !important;
    outline-offset: 3px !important;
}

@media (max-width: 767px) {
    body.jvmr-safe-v2.home .tm-page {
        background-attachment: scroll !important;
        background-image:
            radial-gradient(30rem 26rem at -22% 20%, rgba(60, 101, 174, .10), transparent 72%),
            radial-gradient(28rem 24rem at 122% 58%, rgba(255, 212, 90, .04), transparent 74%) !important;
    }

    body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::before {
        background: radial-gradient(
            27rem 22rem at var(--jvmr-aura-x, 75%) var(--jvmr-aura-y, 45%),
            var(--jvmr-aura-color, rgba(255, 212, 90, .07)),
            transparent 72%
        );
        opacity: .72;
    }

    body.jvmr-safe-v2.jvmr-premium-texture-on .jvmr-safe-texture {
        opacity: .014;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.jvmr-safe-v2 .jvmr-section-ambient::before,
    body.jvmr-safe-v2 .jvmr-shine-button::before,
    body.jvmr-safe-v2 .jvmr-stagger-card {
        transition: none !important;
    }

    body.jvmr-safe-v2 .jvmr-stagger-card {
        opacity: 1 !important;
        filter: none !important;
    }
}

/* ======================================================================
   J&V Modern Redesign 2.2 — one continuous atmosphere across every page
   ====================================================================== */

/* The page now uses one document-wide visual canvas. It is outside all
   content sections, so no section edge can clip the light. */
html:has(body.jvmr-safe-v2),
body.jvmr-safe-v2 {
    background: #101a2f !important;
}

body.jvmr-safe-v2 {
    position: relative;
    isolation: isolate;
    min-height: 100%;
}

body.jvmr-safe-v2 .jvmr-continuous-atmosphere {
    position: absolute;
    inset: 0 0 auto 0;
    z-index: 0;
    min-height: 100vh;
    pointer-events: none;
    overflow: hidden;
    background-color: #101a2f;
    background-image:
        radial-gradient(
            38rem 30rem at var(--jvmr-global-x, 78vw) var(--jvmr-global-y, 24vh),
            rgba(79, 132, 205, .095) 0%,
            rgba(79, 132, 205, .038) 38%,
            transparent 74%
        ),
        radial-gradient(82rem 54rem at 16% 7%, rgba(255, 212, 90, .095) 0%, rgba(255, 212, 90, .035) 34%, transparent 72%),
        radial-gradient(92rem 70rem at 92% 34%, rgba(59, 111, 191, .155) 0%, rgba(59, 111, 191, .055) 40%, transparent 74%),
        radial-gradient(94rem 76rem at 5% 68%, rgba(43, 88, 170, .125) 0%, rgba(43, 88, 170, .045) 42%, transparent 76%),
        radial-gradient(78rem 62rem at 88% 91%, rgba(34, 72, 145, .105) 0%, transparent 74%),
        linear-gradient(
            180deg,
            #101a2f 0%,
            #111c34 10%,
            #12213e 27%,
            #14284b 49%,
            #132644 67%,
            #111f39 84%,
            #101a2f 100%
        );
    background-repeat: no-repeat;
}

/* A soft diagonal aurora gives depth without creating a separate block. */
body.jvmr-safe-v2 .jvmr-continuous-atmosphere::before {
    content: "";
    position: absolute;
    left: -22vw;
    top: calc(14vh + var(--jvmr-ambient-shift, 0px));
    width: 142vw;
    height: 34rem;
    border-radius: 50%;
    pointer-events: none;
    opacity: .13;
    filter: blur(96px);
    transform: rotate(-8deg);
    transform-origin: center;
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(255, 212, 90, .26) 18%,
        rgba(76, 126, 200, .22) 52%,
        rgba(44, 86, 165, .14) 76%,
        transparent 100%
    );
}

/* Full-page vignette unifies the left/right edges and removes the feeling of
   isolated rectangular sections. */
body.jvmr-safe-v2 .jvmr-continuous-atmosphere::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(5, 12, 25, .16), transparent 15%, transparent 85%, rgba(5, 12, 25, .13)),
        linear-gradient(180deg, transparent 0%, rgba(4, 11, 24, .035) 74%, rgba(4, 11, 24, .12) 100%);
}

/* Content stays above the global atmosphere, while its large wrappers become
   transparent. Cards, forms, tables and media retain their own surfaces. */
body.jvmr-safe-v2 .tm-page {
    position: relative;
    z-index: 1;
    background-color: transparent !important;
    background-image: none !important;
}

body.jvmr-safe-v2 .tm-page_gr,
body.jvmr-safe-v2 .tm-bg-gradient,
body.jvmr-safe-v2 .jvmr-flat-bg,
body.jvmr-safe-v2 .jvmr-seamless-surface,
body.jvmr-safe-v2 .tm-team-block--redesign,
body.jvmr-safe-v2 .tm-team-block,
body.jvmr-safe-v2 .tm-services,
body.jvmr-safe-v2 .tm-cases-block,
body.jvmr-safe-v2 .tm-news-block,
body.jvmr-safe-v2 .tm-reviews-block,
body.jvmr-safe-v2 .tm-quiz-block,
body.jvmr-safe-v2 .tm-consult-block,
body.jvmr-safe-v2 .tm-form-block,
body.jvmr-safe-v2 .jvmr-home,
body.jvmr-safe-v2 .jvmr-page,
body.jvmr-safe-v2 .jvmr-page-quiz,
body.jvmr-safe-v2 .jv-privacy-policy {
    background-color: transparent !important;
    background-image: none !important;
}

/* Explicitly retire the old per-section pseudo-aura and separator. */
body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::before,
body.jvmr-safe-v2.jvmr-section-auras-on .jvmr-section-ambient::after {
    content: none !important;
    display: none !important;
}

/* No hard colour boundary before the footer. */
body.jvmr-safe-v2.jvmr-footer-on .tm-footer {
    background: linear-gradient(180deg, transparent 0%, rgba(5, 13, 28, .18) 100%) !important;
    border-top-color: rgba(255,255,255,.045);
}

/* Reviews and quiz remain independent components, but their outer shells no
   longer paint an opaque rectangle over the shared atmosphere. */
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-home,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-page,
body.jvmr-safe-v2.jvmr-reviews-on .jvmr-page-quiz,
body.jvmr-safe-v2.jvmr-quiz-forms-on .jvmr-page-quiz,
body.jvmr-safe-v2.jvmr-quiz-forms-on .tm-quiz-block {
    background: transparent !important;
}

/* Slightly more refined depth: a cool inner highlight plus the existing gold
   edge on hover. This changes no dimensions. */
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card::after {
    background:
        radial-gradient(360px circle at var(--jvmr-x,50%) var(--jvmr-y,50%), rgba(83, 139, 213, .14), transparent 43%),
        linear-gradient(135deg, rgba(255,255,255,.025), transparent 42%);
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:hover {
    box-shadow:
        0 26px 70px rgba(2,10,26,.34),
        inset 0 1px 0 rgba(255,255,255,.035);
}

/* Warm-to-cool hero handoff: the image fades into exactly the same base navy
   used by the continuous canvas. */
body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner::after {
    background: linear-gradient(
        to bottom,
        rgba(16, 26, 47, 0) 0%,
        rgba(16, 26, 47, .18) 52%,
        rgba(16, 26, 47, .78) 82%,
        #101a2f 100%
    ) !important;
}

@media (max-width: 767px) {
    body.jvmr-safe-v2 .jvmr-continuous-atmosphere {
        background-image:
            radial-gradient(24rem 20rem at 112% 16%, rgba(73, 124, 196, .085), transparent 74%),
            radial-gradient(34rem 25rem at -18% 8%, rgba(255, 212, 90, .075), transparent 74%),
            radial-gradient(38rem 32rem at 112% 48%, rgba(51, 101, 184, .12), transparent 76%),
            radial-gradient(36rem 30rem at -16% 78%, rgba(43, 88, 170, .10), transparent 76%),
            linear-gradient(180deg, #101a2f 0%, #111e38 28%, #132644 58%, #111f39 82%, #101a2f 100%);
    }

    body.jvmr-safe-v2 .jvmr-continuous-atmosphere::before {
        left: -70vw;
        width: 240vw;
        height: 24rem;
        opacity: .10;
        filter: blur(78px);
    }
}

@media (prefers-reduced-motion: reduce) {
    body.jvmr-safe-v2 .jvmr-continuous-atmosphere::before {
        transform: rotate(-8deg) !important;
    }
}

/* Specificity guard against the 2.1 home-only background declaration. */
body.jvmr-safe-v2.home .tm-page,
body.jvmr-safe-v2 .tm-page.tm-page_gr {
    background-color: transparent !important;
    background-image: none !important;
    background-attachment: scroll !important;
}

/* ======================================================================
   J&V Modern Redesign 2.3 — seamless hero handoff + warm interactions
   ====================================================================== */

/* The hero uses a photograph while the rest of the site uses the shared
   atmospheric canvas. This bridge is painted behind both sections and
   cross-fades their two palettes without adding spacing or moving content. */
body.jvmr-safe-v2.home .tm-main.tm-home {
    position: relative;
    isolation: isolate;
    background: transparent !important;
}

body.jvmr-safe-v2.home .tm-main.tm-home::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100vh - clamp(170px, 20vh, 320px));
    height: clamp(430px, 56vh, 760px);
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(72% 115% at 76% 28%, rgba(66, 116, 190, .095), transparent 69%),
        linear-gradient(
            180deg,
            rgba(16, 26, 47, 0) 0%,
            rgba(16, 26, 47, .56) 20%,
            rgba(16, 26, 47, .96) 35%,
            rgba(17, 30, 56, .96) 58%,
            rgba(18, 33, 62, .68) 78%,
            rgba(18, 33, 62, 0) 100%
        );
}

body.jvmr-safe-v2.home .tm-main.tm-home > .tm-banner,
body.jvmr-safe-v2.home .tm-main.tm-home > .tm-centered-content {
    position: relative;
    z-index: 1;
}

/* Keep the first content wrapper and its outer catalog shell transparent.
   These are the two legacy surfaces most likely to reveal a horizontal seam. */
body.jvmr-safe-v2.home .tm-main.tm-home > .tm-centered-content,
body.jvmr-safe-v2.home .tm-catalog-block,
body.jvmr-safe-v2.home .tm-catalog-block__other {
    background-color: transparent !important;
    background-image: none !important;
}

/* The hero itself now ends in the exact base colour used at the centre of
   the bridge. The following section then becomes brighter gradually. */
body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner::after {
    background: linear-gradient(
        to bottom,
        rgba(16, 26, 47, 0) 0%,
        rgba(16, 26, 47, .16) 48%,
        rgba(16, 26, 47, .64) 76%,
        rgba(16, 26, 47, .94) 92%,
        #101a2f 100%
    ) !important;
}

/* Clickable cards receive the warm J&V accent only on interaction. The
   default page atmosphere remains calm blue, while hover/focus is gold. */
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card::after {
    background:
        radial-gradient(
            430px circle at var(--jvmr-x, 50%) var(--jvmr-y, 50%),
            rgba(255, 212, 90, .24) 0%,
            rgba(255, 212, 90, .095) 31%,
            transparent 69%
        ),
        linear-gradient(135deg, rgba(255, 239, 176, .035), transparent 44%);
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:hover,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:focus-within {
    border-color: rgba(255, 212, 90, .46) !important;
    box-shadow:
        0 26px 70px rgba(2, 10, 26, .36),
        0 0 0 1px rgba(255, 212, 90, .085),
        0 0 44px rgba(255, 212, 90, .13),
        inset 0 1px 0 rgba(255, 248, 214, .06);
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card:focus-within::after {
    opacity: 1;
}

/* Other clickable controls receive a restrained golden halo without
   replacing their own backgrounds, arrows or accordion indicators. */
body.jvmr-safe-v2 .jvmr-interactive-yellow {
    transition:
        border-color .24s ease,
        box-shadow .24s ease,
        filter .24s ease !important;
}

body.jvmr-safe-v2 .jvmr-interactive-yellow:hover,
body.jvmr-safe-v2 .jvmr-interactive-yellow:focus-visible,
body.jvmr-safe-v2 .jvmr-interactive-yellow:focus-within {
    border-color: rgba(255, 212, 90, .44) !important;
    box-shadow:
        0 12px 34px rgba(2, 10, 26, .24),
        0 0 30px rgba(255, 212, 90, .105) !important;
}

/* Soften the remaining document-wide colour movement. More intermediate
   stops reduce visible tonal bands on large desktop displays. */
body.jvmr-safe-v2 .jvmr-continuous-atmosphere {
    background-image:
        radial-gradient(
            40rem 31rem at var(--jvmr-global-x, 78vw) var(--jvmr-global-y, 24vh),
            rgba(79, 132, 205, .09) 0%,
            rgba(79, 132, 205, .034) 39%,
            transparent 75%
        ),
        radial-gradient(84rem 56rem at 16% 7%, rgba(255, 212, 90, .085) 0%, rgba(255, 212, 90, .028) 36%, transparent 73%),
        radial-gradient(94rem 72rem at 94% 35%, rgba(59, 111, 191, .14) 0%, rgba(59, 111, 191, .046) 43%, transparent 76%),
        radial-gradient(96rem 78rem at 4% 69%, rgba(43, 88, 170, .115) 0%, rgba(43, 88, 170, .038) 44%, transparent 77%),
        radial-gradient(80rem 64rem at 89% 92%, rgba(34, 72, 145, .095) 0%, transparent 75%),
        linear-gradient(
            180deg,
            #101a2f 0%,
            #101b31 7%,
            #111d36 15%,
            #11203b 24%,
            #12233f 34%,
            #132644 45%,
            #14284a 54%,
            #142849 63%,
            #132542 72%,
            #12223d 82%,
            #111e37 91%,
            #101a2f 100%
        );
}

@supports (height: 100svh) {
    body.jvmr-safe-v2.home .tm-main.tm-home::before {
        top: calc(100svh - clamp(170px, 20svh, 320px));
        height: clamp(430px, 56svh, 760px);
    }
}

@media (max-width: 767px) {
    body.jvmr-safe-v2.home .tm-main.tm-home::before {
        top: calc(100vh - 150px);
        height: 390px;
        background:
            radial-gradient(100% 90% at 88% 32%, rgba(66, 116, 190, .075), transparent 72%),
            linear-gradient(
                180deg,
                rgba(16, 26, 47, 0) 0%,
                rgba(16, 26, 47, .72) 24%,
                #101a2f 40%,
                rgba(17, 30, 56, .90) 66%,
                rgba(18, 33, 62, 0) 100%
            );
    }
}

@media (prefers-reduced-motion: reduce) {
    body.jvmr-safe-v2 .jvmr-interactive-yellow,
    body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card {
        transition: none !important;
    }
}



/* ======================================================================
   J&V Modern Redesign 2.3.1 — true hero fade, clean media, fitted CTAs
   ====================================================================== */

/* The first content wrapper begins exactly where the 100vh photograph ends.
   Painting the bridge from that real boundary is more reliable than estimating
   the boundary from viewport units and removes the horizontal colour cut. */
body.jvmr-safe-v2.home .tm-main.tm-home::before {
    content: none !important;
    display: none !important;
}

body.jvmr-safe-v2.home .tm-main.tm-home > .tm-centered-content {
    isolation: isolate;
}

body.jvmr-safe-v2.home .tm-main.tm-home > .tm-centered-content::before {
    content: "";
    position: absolute;
    z-index: -1;
    pointer-events: none;
    top: -2px;
    left: 50%;
    width: 100vw;
    height: clamp(500px, 64vh, 820px);
    transform: translateX(-50%);
    background:
        radial-gradient(72% 82% at 76% 28%, rgba(71, 126, 205, .105) 0%, rgba(71, 126, 205, .038) 42%, transparent 76%),
        linear-gradient(
            180deg,
            #101a2f 0%,
            rgba(16, 26, 47, .995) 8%,
            rgba(16, 28, 52, .96) 22%,
            rgba(17, 31, 58, .84) 42%,
            rgba(18, 35, 66, .58) 64%,
            rgba(18, 36, 68, .26) 82%,
            rgba(18, 36, 68, 0) 100%
        );
}

/* Keep the lower edge of the photo in the same base navy as the first pixel
   of the content bridge. */
body.jvmr-safe-v2.home.jvmr-hero-on .tm-banner::after {
    background: linear-gradient(
        to bottom,
        rgba(16, 26, 47, 0) 0%,
        rgba(16, 26, 47, .12) 44%,
        rgba(16, 26, 47, .52) 70%,
        rgba(16, 26, 47, .88) 89%,
        #101a2f 100%
    ) !important;
}

/* Photographs are presentation content, not glow surfaces. Team portraits
   never receive the interaction halo. Other clickable cards pause the halo
   only while the pointer is directly over their image/media area. */
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media,
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media:hover,
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media:focus-within {
    border-color: var(--jvmr-line) !important;
    box-shadow: var(--jvmr-shadow) !important;
    filter: none !important;
}

body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media::after {
    content: none !important;
    display: none !important;
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover:hover,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover:focus-within {
    border-color: var(--jvmr-line) !important;
    box-shadow: var(--jvmr-shadow) !important;
}

body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover::after,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover:hover::after,
body.jvmr-safe-v2.jvmr-cards-on .jvmr-safe-glow-card.jvmr-media-hover:focus-within::after {
    opacity: 0 !important;
}

/* Do not brighten photographs on hover. Their contrast stays stable so faces
   and case images remain natural. */
body.jvmr-safe-v2.jvmr-cards-on .tm-services-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-catalog-block-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-cases-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-home-article-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-article-card:hover img,
body.jvmr-safe-v2.jvmr-cards-on .tm-team-redesign__media:hover img {
    filter: saturate(.96) contrast(1.025) !important;
}

/* Case CTA: reserve a real text lane before the absolute arrow circle.
   The original 200px variant was too narrow for “ДЕТАЛЬНІШЕ”. */
body.jvmr-safe-v2 .tm-cases-card .tm-content-btn a,
body.jvmr-safe-v2 .tm-blog-card.tm-cases-card .tm-content-btn a {
    box-sizing: border-box !important;
    width: clamp(210px, 78%, 232px) !important;
    max-width: 100% !important;
    padding: 8px 58px 8px 20px !important;
    justify-content: flex-start !important;
    white-space: nowrap !important;
    font-size: 12px !important;
    letter-spacing: -.015em;
}

body.jvmr-safe-v2 .tm-cases-card .tm-content-btn a span,
body.jvmr-safe-v2 .tm-blog-card.tm-cases-card .tm-content-btn a span {
    right: 8px !important;
    flex: 0 0 40px;
}

@media (max-width: 767px) {
    body.jvmr-safe-v2.home .tm-main.tm-home > .tm-centered-content::before {
        height: 430px;
        background:
            radial-gradient(110% 74% at 88% 24%, rgba(71, 126, 205, .08), transparent 76%),
            linear-gradient(
                180deg,
                #101a2f 0%,
                rgba(16, 26, 47, .98) 14%,
                rgba(17, 31, 58, .76) 48%,
                rgba(18, 35, 66, .34) 76%,
                rgba(18, 36, 68, 0) 100%
            );
    }

    body.jvmr-safe-v2 .tm-cases-card .tm-content-btn a,
    body.jvmr-safe-v2 .tm-blog-card.tm-cases-card .tm-content-btn a {
        width: min(100%, 220px) !important;
        font-size: 11px !important;
        padding-right: 54px !important;
    }
}
