/* generated 2026-06-10T18:43:42+00:00 by ns-css-consolidate-generate.php — regenerate after editing any source mu-plugin */

/* ── ns-elementor-visible.php (wp_head @99, line 11) ── */
.elementor-invisible,
.elementor-element.elementor-invisible,
.elementor-widget.elementor-invisible {
    visibility: visible !important;
    opacity: 1 !important;
    animation: none !important;
    transform: none !important;
}

/* ── ns-menu-toggle-fix.php (wp_head @99, line 13) ── */
/* When toggle is expanded, drop a FIXED-position full-viewport overlay menu.
   Uses position:fixed + !important on every layout prop so Elementor's mega-menu
   2-column tab layout is flattened into a single scrollable column. */
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper,
html body .elementor .elementor-widget-n-menu.e-n-menu-tablet .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    inset: 0 !important;
    width: 100vw !important;
    max-width: 100vw !important;
    min-width: 100vw !important;
    height: 100vh !important;
    min-height: 100vh !important;
    max-height: 100vh !important;
    background: #161616 !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    padding: 80px 24px 40px !important;
    margin: 0 !important;
    z-index: 2147483640 !important;
    box-shadow: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    box-sizing: border-box !important;
    transform: none !important;
    --n-menu-wrapper-display: flex !important;
    --stretch-width: 100vw !important;
    --stretch-left: 0 !important;
    --stretch-right: 0 !important;
}
/* Toggle stays above the menu so user can close it */
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] {
    position: fixed !important;
    top: 20px !important;
    right: 20px !important;
    z-index: 2147483645 !important;
    background: transparent !important;
    color: #ffffff !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] svg,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] i {
    color: #ffffff !important;
    fill: #ffffff !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-heading {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
    order: 1 !important;
    overflow: visible !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-item {
    display: flex !important;
    width: 100% !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-title,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-title-container {
    display: flex !important;
    width: 100% !important;
    background: transparent !important;
    padding: 14px 20px !important;
    color: #ffffff !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-title-text,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-title a {
    color: #ffffff !important;
    font-size: 20px !important;
    font-weight: 500 !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    letter-spacing: 0.5px !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-item {
    border-bottom: 1px solid rgba(255,255,255,0.1) !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-item:last-child {
    border-bottom: none !important;
}

/* Cart link injected into the open menu via JS */
.ns-menu-cart-link {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    color: #ffffff !important;
    padding: 18px 20px !important;
    font-size: 20px !important;
    font-weight: 500 !important;
    text-decoration: none !important;
    border-top: 2px solid rgba(255,255,255,0.2) !important;
    margin-top: 16px !important;
}
.ns-menu-cart-link svg { width: 22px !important; height: 22px !important; fill: #ffffff !important; }

/* Hide the header cart widget on mobile entirely — cart is in the hamburger.
   Scoped to max-width:1024 so desktop keeps its icon. */
@media (max-width: 1024px) {
    .elementor-menu-cart--cart-type-mini-cart,
    .elementor-element-ba733c5 {
        display: none !important;
        visibility: hidden !important;
    }
}

/* When the mobile menu is open, hide all main content + lock body scroll
   so the hamburger overlay is the only visible UI (no overlap with
   inner-page nav-menus, sidebars, etc.) */
body.ns-menu-open {
    overflow: hidden !important;
    position: fixed !important;
    width: 100% !important;
}
body.ns-menu-open .elementor-location-main,
body.ns-menu-open .elementor-location-archive,
body.ns-menu-open .elementor-location-single,
body.ns-menu-open main,
body.ns-menu-open #primary,
body.ns-menu-open .ns-main-content,
body.ns-menu-open .elementor-location-footer,
body.ns-menu-open footer,
body.ns-menu-open .ns-emergency-fab {
    display: none !important;
}

/* SHOW Services sub-items inline inside the mobile overlay.
   Services (and any nested-menu item with a dropdown) renders its sub-items as
   a .e-n-menu-content > .e-con panel. We flatten it into the vertical list. */
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content {
    display: flex !important;
    flex-direction: column !important;
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    height: auto !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
    order: 99 !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content > .e-con,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content > .e-con.e-active,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content > .e-con:not(.e-active) {
    display: flex !important;
    flex-direction: column !important;
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    background: rgba(255,255,255,0.03) !important;
    padding: 8px 20px 16px 40px !important;
    margin: 0 !important;
    border-radius: 0 !important;
    opacity: 1 !important;
    visibility: visible !important;
    max-height: none !important;
    height: auto !important;
    animation: none !important;
    box-shadow: none !important;
    border: none !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
    transform: none !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content a,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content .elementor-heading-title,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-content p {
    color: rgba(255,255,255,0.9) !important;
    padding: 10px 0 !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    text-decoration: none !important;
    border-bottom: 1px solid rgba(255,255,255,0.07) !important;
}

/* Icon-box widgets inside the sub-panel — force icon on LEFT, text on right (horizontal flow) */
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-wrapper {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 12px !important;
    text-align: left !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-icon {
    margin: 0 !important;
    flex-shrink: 0 !important;
    width: 28px !important;
    height: 28px !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-icon i,
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-icon svg {
    width: 24px !important;
    height: 24px !important;
    font-size: 24px !important;
    color: #ffffff !important;
    fill: #ffffff !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-content {
    flex: 1 !important;
    text-align: left !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .elementor-widget-icon-box .elementor-icon-box-title {
    margin: 0 !important;
    text-align: left !important;
}
html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper .e-n-menu-dropdown-icon {
    display: none !important;
}

/* When closed, ensure it's hidden on mobile */
@media (max-width: 1024px) {
    html body .elementor .elementor-widget-n-menu .e-n-menu .e-n-menu-toggle[aria-expanded="false"] + .e-n-menu-wrapper {
        display: none !important;
    }
}

/* ── ns-mobile-about-cards.php (wp_head @99, line 15) ── */
@media (max-width: 768px) {
    /* 1. Card containers lose horizontal + top padding so the image bleeds to the edges */
    body.page-id-188 .elementor-element-0f2c041,
    body.page-id-188 .elementor-element-4c673b2,
    body.page-id-188 .elementor-element-9ebf536,
    body.page-id-188 .elementor-element-458600a,
    body.page-id-6202 .elementor-element-0f2c041,
    body.page-id-6202 .elementor-element-4c673b2,
    body.page-id-6202 .elementor-element-9ebf536,
    body.page-id-6202 .elementor-element-458600a {
        padding-left: 0 !important;
        padding-right: 0 !important;
        padding-top: 0 !important;
        overflow: hidden !important;
        border-radius: 12px !important;
    }
    body.page-id-188 .elementor-element-0f2c041 > .e-con-inner,
    body.page-id-188 .elementor-element-4c673b2 > .e-con-inner,
    body.page-id-188 .elementor-element-9ebf536 > .e-con-inner,
    body.page-id-188 .elementor-element-458600a > .e-con-inner,
    body.page-id-6202 .elementor-element-0f2c041 > .e-con-inner,
    body.page-id-6202 .elementor-element-4c673b2 > .e-con-inner,
    body.page-id-6202 .elementor-element-9ebf536 > .e-con-inner,
    body.page-id-6202 .elementor-element-458600a > .e-con-inner {
        padding-left: 0 !important;
        padding-right: 0 !important;
        padding-top: 0 !important;
    }

    /* 2. Image widget itself has zero padding + full-width */
    body.page-id-188 .elementor-element-deb4c0a,
    body.page-id-188 .elementor-element-c8d6b25,
    body.page-id-188 .elementor-element-ee4852e,
    body.page-id-188 .elementor-element-2b87c15,
    body.page-id-6202 .elementor-element-deb4c0a,
    body.page-id-6202 .elementor-element-c8d6b25,
    body.page-id-6202 .elementor-element-ee4852e,
    body.page-id-6202 .elementor-element-2b87c15 {
        width: 100% !important;
        max-width: 100% !important;
        padding: 0 !important;
        margin: 0 !important;
    }
    body.page-id-188 .elementor-element-deb4c0a .elementor-widget-container,
    body.page-id-188 .elementor-element-c8d6b25 .elementor-widget-container,
    body.page-id-188 .elementor-element-ee4852e .elementor-widget-container,
    body.page-id-188 .elementor-element-2b87c15 .elementor-widget-container,
    body.page-id-6202 .elementor-element-deb4c0a .elementor-widget-container,
    body.page-id-6202 .elementor-element-c8d6b25 .elementor-widget-container,
    body.page-id-6202 .elementor-element-ee4852e .elementor-widget-container,
    body.page-id-6202 .elementor-element-2b87c15 .elementor-widget-container {
        padding: 0 !important;
        margin: 0 !important;
    }

    /* 3. The <img> fills the container */
    body.page-id-188 .elementor-element-deb4c0a img,
    body.page-id-188 .elementor-element-c8d6b25 img,
    body.page-id-188 .elementor-element-ee4852e img,
    body.page-id-188 .elementor-element-2b87c15 img,
    body.page-id-6202 .elementor-element-deb4c0a img,
    body.page-id-6202 .elementor-element-c8d6b25 img,
    body.page-id-6202 .elementor-element-ee4852e img,
    body.page-id-6202 .elementor-element-2b87c15 img {
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        display: block !important;
        margin: 0 !important;
        padding: 0 !important;
        object-fit: cover !important;
        border-radius: 0 !important;
    }

    /* 4. Put card text back with its own padding since we zeroed the card */
    body.page-id-188 .elementor-element-0f2c041 .elementor-widget-heading,
    body.page-id-188 .elementor-element-4c673b2 .elementor-widget-heading,
    body.page-id-188 .elementor-element-9ebf536 .elementor-widget-heading,
    body.page-id-188 .elementor-element-458600a .elementor-widget-heading,
    body.page-id-188 .elementor-element-0f2c041 .elementor-widget-text-editor,
    body.page-id-188 .elementor-element-4c673b2 .elementor-widget-text-editor,
    body.page-id-188 .elementor-element-9ebf536 .elementor-widget-text-editor,
    body.page-id-188 .elementor-element-458600a .elementor-widget-text-editor,
    body.page-id-6202 .elementor-element-0f2c041 .elementor-widget-heading,
    body.page-id-6202 .elementor-element-4c673b2 .elementor-widget-heading,
    body.page-id-6202 .elementor-element-9ebf536 .elementor-widget-heading,
    body.page-id-6202 .elementor-element-458600a .elementor-widget-heading,
    body.page-id-6202 .elementor-element-0f2c041 .elementor-widget-text-editor,
    body.page-id-6202 .elementor-element-4c673b2 .elementor-widget-text-editor,
    body.page-id-6202 .elementor-element-9ebf536 .elementor-widget-text-editor,
    body.page-id-6202 .elementor-element-458600a .elementor-widget-text-editor {
        padding-left: 24px !important;
        padding-right: 24px !important;
    }
    body.page-id-188 .elementor-element-0f2c041 .elementor-widget-heading:first-of-type,
    body.page-id-188 .elementor-element-4c673b2 .elementor-widget-heading:first-of-type,
    body.page-id-188 .elementor-element-9ebf536 .elementor-widget-heading:first-of-type,
    body.page-id-188 .elementor-element-458600a .elementor-widget-heading:first-of-type,
    body.page-id-6202 .elementor-element-0f2c041 .elementor-widget-heading:first-of-type,
    body.page-id-6202 .elementor-element-4c673b2 .elementor-widget-heading:first-of-type,
    body.page-id-6202 .elementor-element-9ebf536 .elementor-widget-heading:first-of-type,
    body.page-id-6202 .elementor-element-458600a .elementor-widget-heading:first-of-type {
        padding-top: 20px !important;
    }
    /* Card bottom padding preserved */
    body.page-id-188 .elementor-element-0f2c041,
    body.page-id-188 .elementor-element-4c673b2,
    body.page-id-188 .elementor-element-9ebf536,
    body.page-id-188 .elementor-element-458600a,
    body.page-id-6202 .elementor-element-0f2c041,
    body.page-id-6202 .elementor-element-4c673b2,
    body.page-id-6202 .elementor-element-9ebf536,
    body.page-id-6202 .elementor-element-458600a {
        padding-bottom: 24px !important;
    }
}

/* ── ns-mobile-carousel-stack.php (wp_head @99, line 13) ── */
@media (max-width: 768px) {
    /* Hide carousel nav arrows + pagination */
    .elementor-widget-n-carousel .elementor-swiper-button,
    .elementor-widget-n-carousel .elementor-swiper-button-prev,
    .elementor-widget-n-carousel .elementor-swiper-button-next,
    .elementor-widget-n-carousel .swiper-pagination {
        display: none !important;
    }

    /* Unwrap the swiper track — all slides flow vertically */
    .elementor-widget-n-carousel .swiper,
    .elementor-widget-n-carousel .elementor-swiper-container {
        overflow: visible !important;
    }
    .elementor-widget-n-carousel .swiper-wrapper {
        display: flex !important;
        flex-direction: column !important;
        transform: none !important;
        width: 100% !important;
        gap: 16px !important;
    }
    .elementor-widget-n-carousel .swiper-slide,
    .elementor-widget-n-carousel .e-n-carousel-slide {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 100% !important;
        margin-right: 0 !important;
        flex-shrink: 0 !important;
        transform: none !important;
        height: auto !important;
    }
    /* Kill swiper's duplicate clones (used for loop mode) */
    .elementor-widget-n-carousel .swiper-slide-duplicate {
        display: none !important;
    }

    /* Homepage: Antonietta's row uses row-reverse on desktop → converts to
       column-reverse on mobile, flipping her card ABOVE the carousel. Force
       column (top-down) so the carousel stacks first, then Antonietta. */
    body.home .elementor-element-f72940d,
    body.page-id-12 .elementor-element-f72940d,
    body.page-id-6361 .elementor-element-f72940d {
        flex-direction: column !important;
    }
    /* Also the John row — ensure it's column (not column-reverse) */
    body.home .elementor-element-62fd326,
    body.page-id-12 .elementor-element-62fd326,
    body.page-id-6361 .elementor-element-62fd326 {
        flex-direction: column !important;
    }

    /* Equal spacing: advisor cards match the 16px gap between service cards */
    body.home .elementor-element-2aa037d,
    body.home .elementor-element-2baf6cf,
    body.page-id-12 .elementor-element-2aa037d,
    body.page-id-12 .elementor-element-2baf6cf,
    body.page-id-6361 .elementor-element-2aa037d,
    body.page-id-6361 .elementor-element-2baf6cf {
        margin-top: 0 !important;
        margin-bottom: 0 !important;
        width: 100% !important;
        max-width: 520px !important;
        align-self: center !important;
    }
    /* Parent sections also use the same 16px gap so the advisor card
       sits exactly 16px below the last service card */
    body.home .elementor-element-62fd326,
    body.home .elementor-element-f72940d,
    body.page-id-12 .elementor-element-62fd326,
    body.page-id-12 .elementor-element-f72940d,
    body.page-id-6361 .elementor-element-62fd326,
    body.page-id-6361 .elementor-element-f72940d {
        gap: 16px !important;
        row-gap: 16px !important;
        margin-bottom: 16px !important;
        margin-top: 0 !important;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
    }

    /* Belt + suspenders: zero vertical padding on the parent of the two sections
       + any .e-con between them so no hidden space leaks between John and the
       next section's first card (International Repatriation). */
    body.home .elementor-element-62fd326 + .e-con,
    body.home .elementor-element-62fd326 ~ .e-con:first-of-type,
    body.home .elementor-element-f72940d > .e-con-inner,
    body.home .elementor-element-62fd326 > .e-con-inner {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
    }

    /* ============================================================
       SERVICES PAGE (post 199 EN + 6199 FR)
       3 carousel rows with 2 advisor cards (af3b473 John + 7018374 Antonietta).
       Same treatment: stack columns, 16px gap everywhere, 0 padding leaks. */
    body.page-id-199 .elementor-element-c932dfe,
    body.page-id-199 .elementor-element-9b03bb2,
    body.page-id-199 .elementor-element-976d3d9,
    body.page-id-6199 .elementor-element-c932dfe,
    body.page-id-6199 .elementor-element-9b03bb2,
    body.page-id-6199 .elementor-element-976d3d9 {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 16px !important;
        row-gap: 16px !important;
        margin-top: 0 !important;
        margin-bottom: 16px !important;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
    }

    /* Services advisor cards on mobile — equal spacing + no forced margin */
    body.page-id-199 .elementor-element-af3b473,
    body.page-id-199 .elementor-element-7018374,
    body.page-id-6199 .elementor-element-af3b473,
    body.page-id-6199 .elementor-element-7018374 {
        margin-top: 0 !important;
        margin-bottom: 0 !important;
        width: 100% !important;
        max-width: 520px !important;
        align-self: center !important;
    }

    /* Inner .e-con-inner for those rows — kill padding so 16px gap holds */
    body.page-id-199 .elementor-element-c932dfe > .e-con-inner,
    body.page-id-199 .elementor-element-9b03bb2 > .e-con-inner,
    body.page-id-199 .elementor-element-976d3d9 > .e-con-inner,
    body.page-id-6199 .elementor-element-c932dfe > .e-con-inner,
    body.page-id-6199 .elementor-element-9b03bb2 > .e-con-inner,
    body.page-id-6199 .elementor-element-976d3d9 > .e-con-inner {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        gap: 16px !important;
        row-gap: 16px !important;
    }
}

/* ── ns-mobile-fixes.php (wp_head @99, line 15) ── */
@media (max-width: 768px) {

    /* ---------- Overflow-X guard (never horizontal scroll on phones) ---------- */
    html, body {
        overflow-x: hidden !important;
        max-width: 100vw !important;
    }
    img, video, iframe, svg, .elementor-widget-container {
        max-width: 100% !important;
        height: auto;
    }

    /* ---------- Touch targets — 48px min per Material / Apple HIG ---------- */
    .elementor-button,
    button,
    .wp-block-button__link,
    .woocommerce .button,
    .woocommerce-page .button {
        min-height: 48px !important;
        padding: 12px 20px !important;
        font-size: 16px !important;
        line-height: 1.3 !important;
    }

    /* Nav + menu toggle hit area */
    .elementor-menu-toggle,
    .elementor-nav-menu a,
    .elementor-nav-menu--dropdown a {
        min-height: 48px !important;
        display: flex !important;
        align-items: center !important;
        padding: 10px 16px !important;
    }

    /* ---------- Readable body text — 16px minimum ---------- */
    body,
    p, li, dd, dt,
    .elementor-widget-text-editor,
    .elementor-widget-text-editor p,
    .elementor-widget-heading h6 {
        font-size: 16px !important;
        line-height: 1.6 !important;
    }
    /* Only override very small type, keep hero H1/H2 alone */
    .elementor-widget-nested-carousel .swiper-slide .elementor-widget-text-editor p {
        font-size: 16px !important;
    }

    /* ---------- Forms — full-width, tappable ---------- */
    input[type="text"],
    input[type="email"],
    input[type="tel"],
    input[type="url"],
    input[type="search"],
    input[type="number"],
    input[type="password"],
    textarea,
    select {
        width: 100% !important;
        min-height: 48px !important;
        font-size: 16px !important; /* prevents iOS zoom-on-focus */
        padding: 12px 14px !important;
        box-sizing: border-box !important;
    }
    textarea { min-height: 120px !important; }
    label {
        font-size: 15px !important;
        display: block !important;
        margin-bottom: 6px !important;
    }

    /* ---------- Phone CTA — always big target ---------- */
    a[href^="tel:"] {
        display: inline-block !important;
        padding: 12px 16px !important;
        min-height: 48px !important;
        font-size: 16px !important;
        font-weight: 600 !important;
    }

    /* ---------- Product grid — single column, larger cards ---------- */
    .post-type-archive-product .e-loop-item.product,
    .tax-product_cat .e-loop-item.product {
        margin-bottom: 16px !important;
    }
    .tax-product_cat .e-loop-item.product .elementor-button,
    .post-type-archive-product .e-loop-item.product .elementor-button {
        font-size: 16px !important;
        padding: 14px 20px !important;
    }

    /* ---------- Emergency FAB — keep clear of thumb zone, still readable ---------- */
    .ns-emergency-fab .ns-fab-text strong { font-size: 14px !important; }
    .ns-emergency-fab .ns-fab-text small  { font-size: 12px !important; }

    /* ---------- Tap padding breathing room on clickable cards ---------- */
    .elementor-widget-nested-carousel .swiper-slide {
        padding: 16px !important;
    }

}

/* iPhone SE / 375px and narrower — extra guard */
@media (max-width: 380px) {
    .elementor-button,
    .wp-block-button__link {
        width: 100% !important;
        justify-content: center !important;
    }
    h1, .elementor-heading-title { font-size: 28px !important; line-height: 1.2 !important; }
    h2 { font-size: 24px !important; }
}

/* ==================================================================
   2026-04-14 audit additions — specific overflow fixes surfaced at 375px
   ================================================================== */
@media (max-width: 600px) {
    /* Kill the global min-width:180px from ns-cta-style on narrow columns.
       Keeps the button full-width of its container instead of busting out. */
    .elementor-button {
        min-width: 0 !important;
        max-width: 100% !important;
    }

    /* Text editor + headings — force wrapping so long lines don't overflow */
    .elementor-widget-text-editor,
    .elementor-widget-text-editor .elementor-widget-container,
    .elementor-widget-text-editor p,
    .elementor-widget-text-editor li,
    .elementor-widget-heading .elementor-heading-title {
        max-width: 100% !important;
        word-wrap: break-word !important;
        overflow-wrap: break-word !important;
    }

    /* Nested accordion chevron — pulled back into viewport */
    .e-n-accordion-item-title {
        padding-right: 32px !important;
        gap: 8px !important;
    }
    .e-n-accordion-item-title-icon {
        right: 8px !important;
        flex-shrink: 0 !important;
    }

    /* Footer icon-list items (contact address lines) — wrap long strings */
    .elementor-location-footer .elementor-icon-list-text,
    .elementor-location-footer .elementor-icon-list-item,
    footer .elementor-icon-list-text {
        word-break: break-word !important;
        overflow-wrap: break-word !important;
        white-space: normal !important;
        max-width: 100% !important;
    }
    .elementor-location-footer .elementor-icon-list-item {
        align-items: flex-start !important;
    }

    /* Contact form card — reduce padding on mobile (was 32px) */
    .elementor-element-b28e012,
    .elementor-element-b28e012 > .e-con-inner {
        padding: 20px !important;
    }

    /* Obituary card — smaller featured image so name/desc have room */
    .obit_listing img,
    .obit_listing .obit_image img {
        width: 140px !important;
        max-width: 140px !important;
        min-height: 168px !important;
    }
    .obit_listing {
        gap: 16px !important;
    }

    /* Global widget width clamp */
    .elementor-widget {
        max-width: 100% !important;
    }
}

/* ── ns-mobile-hero-icon.php (wp_head @99, line 15) ── */
@media (max-width: 768px) {
    /* Play icon left alone — default size is fine. */

    /* Hero scroll-down chevron (image widget fc406be, Vector-2491.png)
       renders at ~3x12px by default — way too small. Scale to natural size. */
    .elementor-element-fc406be {
        width: auto !important;
        max-width: 100% !important;
        text-align: center !important;
    }
    .elementor-element-fc406be .elementor-widget-container,
    .elementor-element-fc406be .elementor-image {
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
    }
    .elementor-element-fc406be img {
        width: 24px !important;
        height: auto !important;
        max-width: 24px !important;
        display: block !important;
        margin: 0 auto !important;
        opacity: 0.9 !important;
    }

    /* Center the hero video widget + container horizontally on mobile */
    .elementor-element-4bea56f,
    .elementor-element-ed4bede,
    .elementor-element-549414e {
        margin-left: auto !important;
        margin-right: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        align-self: center !important;
    }
    .elementor-element-ed4bede .elementor-widget-container,
    .elementor-element-ed4bede .elementor-wrapper {
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        margin: 0 auto !important;
    }
    .elementor-element-ed4bede video,
    .elementor-element-ed4bede iframe,
    .elementor-element-ed4bede img {
        display: block !important;
        margin: 0 auto !important;
        max-width: 100% !important;
        height: auto !important;
    }
    /* Generic fallback: any video widget inside the hero section */
    .elementor-element-9fa121b .elementor-widget-video,
    .elementor-element-9fa121b .elementor-widget-video .elementor-widget-container,
    .elementor-element-9fa121b .elementor-widget-video .elementor-wrapper {
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        width: 100% !important;
    }
    .elementor-element-9fa121b .elementor-widget-video video,
    .elementor-element-9fa121b .elementor-widget-video iframe,
    .elementor-element-9fa121b .elementor-widget-video img {
        margin: 0 auto !important;
        display: block !important;
        max-width: 100% !important;
    }
}

/* ── ns-mobile-nav-menu.php (wp_head @99, line 13) ── */
@media (max-width: 768px) {
    .elementor-widget-nav-menu .elementor-nav-menu li.menu-item,
    .elementor-widget-nav-menu .elementor-nav-menu > li {
        margin-bottom: 6px !important;
        margin-top: 6px !important;
    }
    .elementor-widget-nav-menu .elementor-nav-menu li.menu-item > a,
    .elementor-widget-nav-menu .elementor-nav-menu > li > a {
        border-radius: 999px !important;
        overflow: hidden !important;
        line-height: 1.4 !important;
    }
    .elementor-widget-nav-menu .elementor-nav-menu li.menu-item.current-menu-item > a,
    .elementor-widget-nav-menu .elementor-nav-menu li.menu-item.current_page_item > a,
    .elementor-widget-nav-menu .elementor-nav-menu a.elementor-item-active,
    .elementor-widget-nav-menu .elementor-nav-menu a.highlighted {
        border-radius: 999px !important;
        margin-top: 0 !important;
        margin-bottom: 0 !important;
        box-shadow: none !important;
    }
}

/* ── ns-mobile-obituaries.php (wp_head @99, line 9) ── */
@media (max-width: 768px) {
    /* Hero — force the text column full-width + center on mobile.
       On desktop b487f3b is offset to the right; on mobile we need it
       to fill the viewport and center everything horizontally. */
    html body.page-id-2894 .elementor-element-399cf1a,
    html body.page-id-6189 .elementor-element-399cf1a {
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        width: 100% !important;
        max-width: 100% !important;
        padding-left: 16px !important;
        padding-right: 16px !important;
    }
    html body.page-id-2894 .elementor-element-b487f3b,
    html body.page-id-6189 .elementor-element-b487f3b {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: center !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 auto !important;
        padding: 0 !important;
        text-align: center !important;
        align-self: center !important;
    }
    html body.page-id-2894 .elementor-element-df0ef3c,
    html body.page-id-2894 .elementor-element-94feb6a,
    html body.page-id-2894 .elementor-element-1d99bdb,
    html body.page-id-6189 .elementor-element-df0ef3c,
    html body.page-id-6189 .elementor-element-94feb6a,
    html body.page-id-6189 .elementor-element-1d99bdb {
        width: 100% !important;
        max-width: 100% !important;
        align-self: center !important;
        text-align: center !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }
    html body.page-id-2894 .elementor-element-df0ef3c .elementor-heading-title,
    html body.page-id-2894 .elementor-element-94feb6a .elementor-heading-title,
    html body.page-id-6189 .elementor-element-df0ef3c .elementor-heading-title,
    html body.page-id-6189 .elementor-element-94feb6a .elementor-heading-title {
        text-align: center !important;
    }
    html body.page-id-2894 .elementor-element-1d99bdb,
    html body.page-id-6189 .elementor-element-1d99bdb {
        text-align: center !important;
    }
    html body.page-id-2894 .elementor-element-1d99bdb .elementor-button-wrapper,
    html body.page-id-6189 .elementor-element-1d99bdb .elementor-button-wrapper {
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        width: 100% !important;
        text-align: center !important;
    }
    html body.page-id-2894 .elementor-element-1d99bdb .elementor-button,
    html body.page-id-6189 .elementor-element-1d99bdb .elementor-button {
        margin: 0 auto !important;
    }

    /* Bootstrap .input-group (obituary search) — keep input + button inline.
       Override the generic mobile-fixes rule that forces inputs to 100% width. */
    .input-group,
    .input-group.mt-3 {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        gap: 0 !important;
        align-items: stretch !important;
        width: 100% !important;
        max-width: 100% !important;
    }
    .input-group .form-control,
    .input-group input.fhw-solutions-obituaries_search-all-obits {
        flex: 1 1 auto !important;
        width: 1% !important;
        min-width: 0 !important;
        margin: 0 !important;
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
    }
    .input-group .fhw-solutions-obituaries_search-all-obits-button,
    .input-group button {
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 48px !important;
        margin: 0 !important;
        border-top-left-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
    }
}

/* ── ns-mobile-woocommerce.php (wp_head @99, line 8) ── */
/* =========================================================
   CHECKOUT LABEL FIX — apply at ALL viewports (not mobile-only)
   The WC floating label renders with a white bg strip inside the
   select wrapper, overlapping the value. Kill the floating pattern
   entirely and turn labels into plain block elements above the field. */
html body.woocommerce-checkout .wc-blocks-components-select,
html body.page-id-7 .wc-blocks-components-select,
html body.woocommerce-checkout .wc-blocks-components-select__container,
html body.page-id-7 .wc-blocks-components-select__container {
    padding-top: 0 !important;
    background: transparent !important;
}
html body.woocommerce-checkout .wc-blocks-components-select__label,
html body.page-id-7 .wc-blocks-components-select__label,
html body.woocommerce-checkout label.wc-blocks-components-select__label,
html body.page-id-7 label.wc-blocks-components-select__label {
    position: static !important;
    display: block !important;
    transform: none !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    margin: 0 0 6px 0 !important;
    padding: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
    color: #ffffff !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.3 !important;
    pointer-events: auto !important;
    z-index: auto !important;
    opacity: 1 !important;
    box-shadow: none !important;
    border: none !important;
}
html body.woocommerce-checkout .wc-blocks-components-select select,
html body.page-id-7 .wc-blocks-components-select select,
html body.woocommerce-checkout .wc-blocks-components-select__container select,
html body.page-id-7 .wc-blocks-components-select__container select {
    padding-top: 12px !important;
    padding-bottom: 12px !important;
    background: #1a1a1a !important;
    background-color: #1a1a1a !important;
    color: #ffffff !important;
    border: 1px solid rgba(255,255,255,0.3) !important;
    border-radius: 6px !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}
html body.woocommerce-checkout .wc-blocks-components-select select option,
html body.page-id-7 .wc-blocks-components-select select option {
    background: #1a1a1a !important;
    color: #ffffff !important;
}

@media (max-width: 768px) {
    /* ========================================================
       1. Product archive / flowers — wider cards
       ======================================================== */
    body.woocommerce .e-loop-item > .e-con,
    body.woocommerce-page .e-loop-item > .e-con,
    body.tax-product_cat .e-loop-item > .e-con,
    body.term-flowers .e-loop-item > .e-con {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: 20px !important;
    }
    body.woocommerce .elementor-widget-loop-grid .elementor-loop-container,
    body.woocommerce .elementor-widget-loop-grid .elementor-grid {
        grid-template-columns: 1fr !important;
        gap: 16px !important;
        padding-left: 12px !important;
        padding-right: 12px !important;
    }
    body.woocommerce .e-loop-item img,
    body.woocommerce-page .e-loop-item img {
        width: auto !important;
        max-width: 90% !important;
        max-height: 340px !important;
        height: auto !important;
        margin: 0 auto !important;
        display: block !important;
    }

    /* ========================================================
       Cart quantity selector — make parent the visual box,
       strip the inner input border so +/- sit inside the outline.
       ======================================================== */
    .wc-block-components-quantity-selector {
        border: 1px solid rgba(255, 255, 255, 0.3) !important;
        border-radius: 6px !important;
        overflow: hidden !important;
        display: inline-flex !important;
        align-items: stretch !important;
        width: auto !important;
        min-width: 108px !important;
    }
    .wc-block-components-quantity-selector__input,
    .wc-block-components-quantity-selector input[type="number"] {
        border: none !important;
        border-radius: 0 !important;
        background: transparent !important;
        color: #ffffff !important;
        text-align: center !important;
        width: 44px !important;
        min-width: 44px !important;
        min-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
        font-size: 16px !important;
        order: 2 !important;
        -moz-appearance: textfield !important;
    }
    .wc-block-components-quantity-selector input[type="number"]::-webkit-outer-spin-button,
    .wc-block-components-quantity-selector input[type="number"]::-webkit-inner-spin-button {
        -webkit-appearance: none !important;
        margin: 0 !important;
    }
    .wc-block-components-quantity-selector__button {
        border: none !important;
        border-radius: 0 !important;
        background: transparent !important;
        color: #ffffff !important;
        min-width: 32px !important;
        min-height: 40px !important;
        padding: 0 8px !important;
        margin: 0 !important;
        font-size: 18px !important;
        cursor: pointer !important;
    }
    .wc-block-components-quantity-selector__button--minus {
        order: 1 !important;
        border-right: 1px solid rgba(255, 255, 255, 0.2) !important;
    }
    .wc-block-components-quantity-selector__button--plus {
        order: 3 !important;
        border-left: 1px solid rgba(255, 255, 255, 0.2) !important;
    }

    /* ========================================================
       2. Cart page (WooCommerce Cart block) — full width + centered
       ======================================================== */
    /* Kill WC's alignfull negative-margin trick on mobile — it produces
       margin-left: -80px which crops the cart off-screen to the left. */
    body.woocommerce-cart .wc-block-cart,
    body.page-id-6 .wc-block-cart,
    body.woocommerce-cart .wp-block-woocommerce-cart,
    body.page-id-6 .wp-block-woocommerce-cart,
    body.woocommerce-cart .wc-block-components-main-content,
    body.page-id-6 .wc-block-components-main-content,
    body.woocommerce-cart .entry-content > .alignfull,
    body.page-id-6 .entry-content > .alignfull,
    body.woocommerce-cart .entry-content > .alignwide,
    body.page-id-6 .entry-content > .alignwide {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 12px !important;
        padding-right: 12px !important;
        box-sizing: border-box !important;
        left: auto !important;
        right: auto !important;
    }
    /* Also target the Cart heading itself (h1 "Cart") */
    body.woocommerce-cart .entry-content h1,
    body.page-id-6 .entry-content h1,
    body.woocommerce-cart .entry-title,
    body.page-id-6 .entry-title {
        margin-left: 0 !important;
        padding-left: 12px !important;
    }
    body.woocommerce-cart .wc-block-cart-items,
    body.page-id-6 .wc-block-cart-items,
    body.woocommerce-cart .wc-block-cart-items__row,
    body.page-id-6 .wc-block-cart-items__row {
        width: 100% !important;
        max-width: 100% !important;
    }
    body.woocommerce-cart .wc-block-cart-items__row,
    body.page-id-6 .wc-block-cart-items__row {
        display: flex !important;
        flex-direction: column !important;
        gap: 12px !important;
        padding-top: 12px !important;
        padding-bottom: 12px !important;
    }
    body.woocommerce-cart .wc-block-cart-item__image img,
    body.page-id-6 .wc-block-cart-item__image img {
        max-width: 80px !important;
        height: auto !important;
    }
    body.woocommerce-cart .wc-block-cart__sidebar,
    body.page-id-6 .wc-block-cart__sidebar,
    body.woocommerce-cart .wp-block-woocommerce-cart-order-summary-block,
    body.page-id-6 .wp-block-woocommerce-cart-order-summary-block {
        width: 100% !important;
        max-width: 100% !important;
        margin-top: 16px !important;
    }
    body.woocommerce-cart .is-large .wc-block-cart,
    body.page-id-6 .is-large .wc-block-cart {
        display: block !important;
    }

    /* ========================================================
       3. Checkout page — kill floating label pattern entirely
          Labels become normal block elements above their inputs.
          Inputs stay fully clickable, no z-index blocking.
       ======================================================== */
    body.woocommerce-checkout .wp-block-woocommerce-checkout,
    body.page-id-7 .wp-block-woocommerce-checkout,
    body.woocommerce-checkout .wc-block-checkout,
    body.page-id-7 .wc-block-checkout {
        width: 100% !important;
        max-width: 100% !important;
        padding-left: 12px !important;
        padding-right: 12px !important;
        box-sizing: border-box !important;
    }
    body.woocommerce-checkout .wc-block-components-form,
    body.page-id-7 .wc-block-components-form,
    body.woocommerce-checkout .wc-block-checkout__main,
    body.page-id-7 .wc-block-checkout__main {
        width: 100% !important;
        max-width: 100% !important;
    }

    /* Field containers — cover BOTH wc-block-components-text-input (text fields)
       AND wc-blocks-components-select (Country/State dropdowns, different class) */
    body.woocommerce-checkout .wc-block-components-text-input,
    body.page-id-7 .wc-block-components-text-input,
    body.woocommerce-checkout .wc-blocks-components-select,
    body.page-id-7 .wc-blocks-components-select,
    body.woocommerce-checkout .wc-blocks-components-select__container,
    body.page-id-7 .wc-blocks-components-select__container {
        position: relative !important;
        display: block !important;
        padding-top: 0 !important;
        width: 100% !important;
        margin-bottom: 14px !important;
    }

    /* Labels — static block above the input, non-blocking */
    body.woocommerce-checkout .wc-block-components-text-input label,
    body.page-id-7 .wc-block-components-text-input label,
    body.woocommerce-checkout .wc-blocks-components-select__label,
    body.page-id-7 .wc-blocks-components-select__label,
    body.woocommerce-checkout label.wc-blocks-components-select__label,
    body.page-id-7 label.wc-blocks-components-select__label {
        position: static !important;
        display: block !important;
        transform: none !important;
        top: auto !important;
        left: auto !important;
        right: auto !important;
        bottom: auto !important;
        margin: 0 0 6px 0 !important;
        padding: 0 !important;
        background: transparent !important;
        color: #ffffff !important;
        font-size: 14px !important;
        font-weight: 500 !important;
        line-height: 1.3 !important;
        pointer-events: auto !important;
        z-index: auto !important;
        opacity: 1 !important;
    }

    /* Inputs + selects — explicit DARK bg + white text (iOS Safari native
       select default is white which makes white text invisible) */
    body.woocommerce-checkout .wc-block-components-text-input input,
    body.page-id-7 .wc-block-components-text-input input,
    body.woocommerce-checkout .wc-blocks-components-select select,
    body.page-id-7 .wc-blocks-components-select select,
    body.woocommerce-checkout .wc-blocks-components-select__container select,
    body.page-id-7 .wc-blocks-components-select__container select,
    html body.woocommerce-checkout select.components-select-control__select,
    html body.page-id-7 select.components-select-control__select {
        position: relative !important;
        display: block !important;
        width: 100% !important;
        min-height: 48px !important;
        padding: 12px 14px !important;
        font-size: 16px !important;
        line-height: 1.3 !important;
        background: #1a1a1a !important;
        background-color: #1a1a1a !important;
        color: #ffffff !important;
        border: 1px solid rgba(255, 255, 255, 0.3) !important;
        border-radius: 6px !important;
        z-index: 1 !important;
        pointer-events: auto !important;
        -webkit-appearance: none !important;
        appearance: none !important;
    }
    /* Dropdown option list items also get dark bg */
    body.woocommerce-checkout select option,
    body.page-id-7 select option {
        background: #1a1a1a !important;
        color: #ffffff !important;
    }
    body.woocommerce-checkout .wc-block-components-text-input input:focus,
    body.page-id-7 .wc-block-components-text-input input:focus,
    body.woocommerce-checkout .wc-block-components-combobox input:focus,
    body.page-id-7 .wc-block-components-combobox input:focus {
        border-color: #ffffff !important;
        outline: none !important;
    }

    /* Two-column rows (First/Last, City/ZIP) — stack vertically */
    body.woocommerce-checkout .wc-block-components-address-form,
    body.page-id-7 .wc-block-components-address-form,
    body.woocommerce-checkout .wc-block-components-address-form__fields-wrapper,
    body.page-id-7 .wc-block-components-address-form__fields-wrapper {
        display: flex !important;
        flex-direction: column !important;
        gap: 0 !important;
    }
    body.woocommerce-checkout .wc-block-components-address-form > div,
    body.page-id-7 .wc-block-components-address-form > div {
        width: 100% !important;
        max-width: 100% !important;
    }
}
