/*Mobile menu content*/
.mobile-menu-content{
    position: fixed;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100dvh;
    height: calc(var(--vh, 1vh) * 100);
    display: flex;
    flex-direction: column;
    transition: left 500ms ease;
}
.mobile-menu-content.active{
    left: 0;
}
.mobile-menu-wrap.dir-right .mobile-menu-content{
    left: auto;
    right: -100%;
    transition: right 500ms ease;
}
.mobile-menu-wrap.dir-right .mobile-menu-content.active{
    left: auto;
    right: 0;
}

/* Background image / gradient and overlay layers.
 *
 * Both are absolutely positioned, so they are out of the panel's flex flow and
 * do not become flex items alongside .mobile-menu-inner / .menu-footer. They
 * are deliberately separate elements rather than extra properties on
 * .mobile-menu-content: the legacy "Menu background color" control writes the
 * `background` shorthand there, which would reset any background-image
 * depending on Elementor's CSS emission order. Stacking, bottom to top:
 * panel colour -> .mobile-menu-bg -> .mobile-menu-overlay -> content. */
.mobile-menu-bg,
.mobile-menu-overlay{
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    pointer-events: none;
}
.mobile-menu-bg{
    z-index: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
.mobile-menu-overlay{
    z-index: 1;
}

/* The panel's real content must sit above both layers. */
.mobile-menu-content .mobile-menu-inner,
.mobile-menu-content .menu-footer,
.mobile-menu-content .mobile-menu-custom-panel{
    position: relative;
    z-index: 2;
}

/* Whole-panel override. The wrapper is plugin-owned so the stacking context and
   the sliding shell's flex sizing are guaranteed; everything inside is the
   theme's. Deliberately no padding, background, gap or typography — the entire
   point of the mode is that the theme owns the panel. It scrolls internally so
   a long custom panel behaves like the built-in one on a short viewport. */
.mobile-menu-custom-panel{
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.mobile-menu-inner{
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.mobile-menu-content .menu-header,
.mobile-menu-content .menu-additional-header,
.mobile-menu-content .menu-footer{
    flex: 0 0 auto;
}
.mobile-menu-content .menu-header{
    padding: 24px 16px 0px 16px;
}
.mobile-menu-content .menu-additional-header{
    padding: 16px 16px 0px 16px;
}
.mobile-menu-content .menu-footer{
    padding: 24px 16px 32px 16px;
}

.menu-items{
    flex: 1 1 auto;
    min-height: 0;
    position: relative;
    overflow: hidden;
}

.menu-items .single-menu-level{
    position: absolute;
    inset: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 80px 16px 0px 16px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateX(var(--enter-x, 0));
    transition: transform 400ms ease, opacity 300ms ease;
}
.menu-items .single-menu-level.active{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    --enter-x: 0;
}
.mobile-menu-content[data-direction="forward"] .single-menu-level.inactive{
    --enter-x: -20%;
}
.mobile-menu-content[data-direction="back"] .single-menu-level.inactive{
    --enter-x: 20%;
}

.menu-group{
    width: 100%;
    gap: 54px;
    display: flex;
    flex-direction: column;
}
.menu-group.inactive{
    display: none;
}

.mobile-menu-wrap .menu-logo img{
    height: 50px;
    width: 100%;
}

.mobile-menu-content .menu-item a{
    font-weight: 600;
    font-size: 18px;
    line-height: 22px;
    color: #fff;
}
.elementor-widget-cws_suite_mobilemenu{
    z-index: 9999;
}
.single-menu-item svg path,
.back-menu-item svg path{
    stroke: var(--e-global-color-primary);
}

.mobile-menu-content .menu-level-2 .single-menu-item a,
.mobile-menu-content .menu-level-3 .single-menu-item a,
.mobile-menu-content .menu-level-4 .single-menu-item a{
    font-weight: 400;
    font-size: 18px;
    line-height: 22px;
    color: #fff;
}
.mobile-menu-content .menu-level-2 .special-submenu.single-menu-item a,
.mobile-menu-content .menu-level-3 .special-submenu.single-menu-item a,
.mobile-menu-content .menu-level-4 .special-submenu.single-menu-item a{
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    color: #98A4AF;
}
.mobile-menu-content .menu-item svg{
    width: 24px;
    height: 24px;
    vertical-align: top;
    margin-left: 8px;
}
/* Trigger icons: inline-flex so the widget's size controls (which set
   width/height on the span) apply — a plain inline span ignores both. */
.icon.open-menu,
.icon.close-menu{
    display: inline-flex;
    width: 32px;
    height: 32px;
}
.icon.open-menu svg,
.icon.close-menu svg{
    width: 100%;
    height: 100%;
}
.mobile-menu-content .menu-item .submenu-icon svg{
    margin-left: 32px;
    margin-right: 12px;
    width: 16px;
}

/* ============================================================
 * Specificity — Elementor kit, and releasing custom items
 * ============================================================
 *
 * The kit ships `.elementor-kit-N a { color: … }` at (0,1,1). Every item-link
 * rule above is already at (0,2,1) or higher — `.mobile-menu-content .menu-item a`
 * is the weakest at (0,2,1) — so the menu is armoured against it by
 * construction, and `claude-tools/kit-armour/audit.php` passes. Keep it that
 * way: if you ever shorten one of those selectors to a single class it drops to
 * (0,1,0), loses to the kit, and every menu label silently takes the site's
 * link colour. Verify with the audit after touching this file.
 *
 * That strength is a problem in the other direction for custom items, though:
 * `.mobile-menu-content .menu-level-2 .single-menu-item a` (0,3,1) and the
 * .special-submenu variants (0,4,1) would beat almost anything a theme writes
 * for its own card. So in `is-custom` mode the plugin's link typography is
 * released back to inherit at (0,5,1) — high enough to clear the strongest rule
 * above, and specificity rather than !important so the theme still wins with an
 * ordinary rule of its own. The theme owns how a custom item looks. */
.mobile-menu-content .menu-items .single-menu-level .single-menu-item.is-custom a{
    font-weight: inherit;
    font-size: inherit;
    line-height: inherit;
    color: inherit;
}

/* The .special-submenu pull-ups below are !important, so releasing them for a
   custom item needs !important too — this is the sanctioned fallback, not a
   shortcut. A theme card laid out to its own rhythm must not inherit a -44px
   nudge that exists purely to tighten the built-in sub-heading list. */
.mobile-menu-content .single-menu-item.is-custom,
.mobile-menu-content .menu-group .single-menu-item.is-custom:nth-child(2){
    margin-top: 0 !important;
}

.mobile-menu-content .special-submenu{
    margin-top: -44px !important;
}
.mobile-menu-content .menu-group .special-submenu:nth-child(2){
    margin-top: -36px !important;
}

.single-menu-level,
.single-menu-level:focus,
.single-menu-level a,
.single-menu-level a:focus{
    outline: 0 !important;
    -webkit-tap-highlight-color: transparent;
}

.menu-items .single-menu-level .back-menu-item{
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}
.menu-items .single-menu-level:not(.menu-level-1) .single-menu-item:has(> svg){
    display: flex;
    align-items: center;
    gap: 8px;
}
.menu-items .single-menu-level:not(.menu-level-1) .single-menu-item:has(> svg) > svg{
    margin-left: 0;
}
.menu-items .single-menu-level .back-menu-item svg{
    margin: 0;
}

.incubis-post-thumbnail:hover img{
    filter: brightness(1.15);
    transition: 250ms;
}

.menu-item.menu-item-clicked{
    transform: translateX(8px);
}
