/*
Theme Name: Renvo child
Template:   renvo
Theme URI: https://renvo.themesht.com/
Author: Themeht
Author URI: https://www.themeht.com
Description: Renvo - Child Theme
Version:   1.5.154
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: renvo
Tags: one-column, two-columns, right-sidebar, custom-logo, custom-menu, threaded-comments, translation-ready, left-sidebar, custom-background, custom-colors, custom-header, featured-images, sticky-post
*/

/* ======================================================
   Build Safe custom styles (updated 2026-09-02 b)
   ====================================================== */

/* (Preloader is restyled near the end of this file — logo beside the spinner.) */

/* ======================================================
   Arabic (RTL) only
   ====================================================== */

/* Adopt Cairo consistently across the whole Arabic version.
   Icons are safe: their glyphs render via ::before with their own icon font,
   which we never target here. */
.rtl body,
.rtl h1, .rtl h2, .rtl h3, .rtl h4, .rtl h5, .rtl h6,
.rtl p, .rtl a, .rtl li, .rtl blockquote,
.rtl button, .rtl input, .rtl textarea, .rtl select, .rtl label,
.rtl .title, .rtl .elementor-heading-title,
.rtl .elementor-widget-text-editor,
.rtl .banner-content, .rtl .banner-content h1, .rtl .banner-content h2,
.rtl .banner-content h3, .rtl .banner-content p, .rtl .banner-content span,
.rtl .btn-text {
    font-family: 'Cairo', sans-serif !important;
}
/* generic text spans, but never icon spans */
.rtl span:not([class*="flaticon"]):not([class*="bi"]):not([class*="icon"]):not([class*="fa-"]) {
    font-family: 'Cairo', sans-serif !important;
}

/* Main menu: Cairo Bold */
.rtl .main-nav .menu > li > a,
.rtl .main-nav ul li a,
.rtl .hfe-nav-menu a {
    font-family: 'Cairo', sans-serif !important;
    font-weight: 700 !important;
}

/* Dropdown caret ( \F282 ) next to top-level items: gap from the word */
.rtl .main-nav > ul > li.menu-item-has-children > a::after {
    margin-left: 0;
    margin-right: 0.55em;
}

/* Dropdowns open toward the LEFT in RTL */
.rtl .main-nav ul.sub-menu { left: auto; right: 0; }
.rtl .main-nav ul.sub-menu li ul { left: auto !important; right: 100%; }

/* Sub-menu (3rd level) toggle chevron: point LEFT + sit on the left side */
.rtl .main-nav .sub-menu .sub-menu-toggle .bi-chevron-right {
    display: inline-block;
    transform: scaleX(-1);
}
@media (min-width: 1200px) {
    .rtl .main-nav .sub-menu .sub-menu-toggle { right: auto; left: 10px; }
}

/* Phone widget: gap for the handset icon, heading bold, number forced LTR (+ on left) */
.rtl .elementor-widget-header-call svg { margin-left: 14px; }
.rtl .elementor-widget-header-call .header-number span { font-weight: 700; }
.rtl .elementor-widget-header-call a[href^="tel"] {
    direction: ltr;
    unicode-bidi: embed;
    display: inline-block;
}

/* Button: flip the whole icon box (keeps the single-arrow slide animation intact) */
.rtl .btn-icon { transform: scaleX(-1); }
/* Button label in Cairo Bold */
.rtl .themeht-btn .btn-text { font-family: 'Cairo', sans-serif; font-weight: 700; }

/* ==========================================================
   Header CTA button ("تواصل معنا" / "Call us") -> WhatsApp.
   Same Elementor widget id (b7dd6af) in both AR + EN headers,
   so one selector styles both languages.
   ========================================================== */
/* v1.5.125: WhatsApp icon REMOVED — the button is now "استلام تقارير الفحص" /
   "Get Inspection Report" (→ reports page). Hide the icon slot entirely so no
   glyph/arrow shows; keep just the text. */
.elementor-element-b7dd6af .themeht-btn .btn-icon { display: none !important; }
/* No icon now -> symmetric padding, centred text, proper button size (the theme's
   default 4px/20px asymmetric padding was built around the 40px icon circle). */
.elementor-element-b7dd6af .themeht-btn,
.rtl .elementor-element-b7dd6af .themeht-btn {
    gap: 0 !important;
    padding: 9px 18px !important;
    justify-content: center !important;
    text-align: center !important;
}
.elementor-element-b7dd6af .themeht-btn .btn-text {
    color: var(--themeht-white-color) !important;
    text-shadow: none !important;
    overflow: visible !important;
    width: auto !important;
}

/* ==========================================================
   Hero slider content (single slide) — AR + EN.
   ========================================================== */
/* Hero slideshow nav — the theme's curved white pill, replicated verbatim so it
   renders identically on BOTH languages (the theme's own render was inconsistent
   between LTR and RTL). EN sits on the RIGHT; AR is mirrored to the LEFT. */
.banner-slider .banner-swiper-buttons {
    position: absolute !important; top: auto !important; bottom: 50% !important;
    right: -29px !important; left: auto !important;
    width: 110px !important; height: 54px !important;
    transform: rotate(-90deg) !important;
    background-color: var(--themeht-white-color) !important;
    border-radius: 20px 20px 0 0 !important;
    display: block !important; padding: 0 !important; box-shadow: none !important; z-index: 1 !important;
}
.banner-slider .banner-swiper-buttons::after {
    content: "" !important; display: block !important; width: 60px !important; height: 60px !important;
    position: absolute !important; border-radius: 20px !important; bottom: -34px !important; left: -26px !important; right: auto !important; top: auto !important;
    box-shadow: inset -34px -34px 0 0 var(--themeht-white-color) !important; transform: rotate(2deg) !important;
}
.banner-slider .banner-swiper-buttons::before {
    content: "" !important; display: block !important; width: 60px !important; height: 60px !important;
    position: absolute !important; border-radius: 20px !important; bottom: -34px !important; right: -26px !important; left: auto !important; top: auto !important;
    box-shadow: inset -34px -34px 0 0 var(--themeht-white-color) !important; transform: rotate(-270deg) !important;
}
.banner-slider .banner-swiper-buttons .swiper-button-next,
.banner-slider .banner-swiper-buttons .swiper-button-prev {
    position: absolute !important; width: 40px !important; height: 40px !important; border-radius: 14px !important;
    background: var(--themeht-white-color) !important; border: none !important;
    filter: drop-shadow(0 20px 17.5px rgba(8,29,82,.13)) !important;
    bottom: 6px !important; top: inherit !important; margin: 0 !important; display: block !important; line-height: 40px !important;
    transition: background .3s ease !important;
}
.banner-slider .banner-swiper-buttons .swiper-button-next { right: 10px !important; left: auto !important; }
.banner-slider .banner-swiper-buttons .swiper-button-prev { right: 62px !important; left: auto !important; }
.banner-slider .banner-swiper-buttons .swiper-button-next::after,
.banner-slider .banner-swiper-buttons .swiper-button-prev::after {
    display: inline-block !important; line-height: 43px !important; font-size: 18px !important;
    color: var(--themeht-text-color) !important; content: "\f13f" !important; font-family: flaticon_mycollection !important;
    position: static !important; margin: 0 !important; transform: none !important; opacity: 1 !important;
    transition: color .3s ease !important;
}
.banner-slider .banner-swiper-buttons .swiper-button-prev::after { transform: rotate(180deg) !important; }
/* hover (both langs): fill green, arrow turns white */
.banner-slider .banner-swiper-buttons .swiper-button-next:hover,
.banner-slider .banner-swiper-buttons .swiper-button-prev:hover {
    background: var(--themeht-primary-color) !important;
}
.banner-slider .banner-swiper-buttons .swiper-button-next:hover::after,
.banner-slider .banner-swiper-buttons .swiper-button-prev:hover::after { color: var(--themeht-white-color) !important; }

/* ARABIC: mirror the pill to the LEFT edge by rotating the OTHER way (rotate 90
   instead of -90). This flips the whole tab — concave notch, buttons and arrows —
   to the left cleanly, without the distortion scaleX caused. */
.rtl .banner-slider .banner-swiper-buttons {
    right: auto !important; left: -29px !important;
    transform: rotate(90deg) !important;
}
/* ARABIC: slides use pre-flipped image FILES (not a CSS scaleX), so the theme's
   zoom+fade slide transition still animates the image transform like EN. */

/* PHONE: move the nav pill to the BOTTOM-centre (horizontal bar) like the demo,
   un-rotated. Same for both languages. */
@media (max-width: 767px) {
    .banner-slider .banner-swiper-buttons,
    .rtl .banner-slider .banner-swiper-buttons {
        transform: none !important;
        top: auto !important; bottom: 0 !important;
        left: 50% !important; right: auto !important;
        margin-left: -55px !important;
        width: 110px !important; height: 54px !important;
        border-radius: 20px 20px 0 0 !important;
    }
    /* KEEP the theme's concave curve masks on the bottom bar (like the demo). */
    .banner-slider .banner-swiper-buttons::before,
    .banner-slider .banner-swiper-buttons::after { display: block !important; }
    /* Phones use dedicated 9:16 portrait images (cover fills the screen, no crop). */
    .banner-slider .slider-img { background-size: cover !important; background-position: center center !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="0"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-01-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="1"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-02-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="2"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-03-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="3"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-04-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="4"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-05-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="5"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-06-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="6"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-07-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="7"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-08-en.jpg') !important; }
    .banner-slider .swiper-slide[data-swiper-slide-index="8"] .slider-img { background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-09-en.jpg') !important; }
    .banner-slider .banner-content { padding-top: 90px !important; padding-bottom: 90px !important; }
    /* left corner-mask mirrored so BOTH sides curve symmetrically (kills the
       stray little "tooth" the un-rotated left mask left on the bottom bar). */
    .banner-slider .banner-swiper-buttons::after { transform: scaleX(-1) rotate(90deg) !important; }
    /* CEO section on phones: single 9:16 director background, cropped a bit more
       from the top. */
    .elementor-element-b461b17 {
        background-image: url('https://buildsafex.com/wp-content/uploads/2026/09/m_director-9x16-2.png') !important;
        background-size: cover !important; background-position: center top !important;
    }
}
/* CEO section (desktop/laptop): single director background, cover. Position is
   left to the theme's scroll (parallax) effect — no !important freeze. */
@media (min-width: 768px) {
    .elementor-element-b461b17 { background-size: cover !important; }
}

/* Our headline is longer than the demo's, whose display type is 90-100px and
   wraps to 4 lines / overflows the fold. Scale it responsibly per breakpoint. */
.banner-slider .banner-content .hero-heading,
.banner-slider .banner-content .title-text {
    font-size: 60px !important;
    line-height: 1.32 !important;   /* a little air between the 3 heading lines */
}
@media (max-width: 1366px) {
    .banner-slider .banner-content .hero-heading,
    .banner-slider .banner-content .title-text { font-size: 48px !important; }
}
@media (max-width: 1024px) {
    .banner-slider .banner-content .hero-heading,
    .banner-slider .banner-content .title-text { font-size: 40px !important; }
}
@media (max-width: 767px) {
    .banner-slider .banner-content .hero-heading,
    .banner-slider .banner-content .title-text { font-size: 30px !important; }
}
/* Legibility over the photo (works regardless of the overlay gradient side). */
.banner-slider .banner-content .hero-heading,
.banner-slider .banner-content .title-text,
.banner-slider .banner-content p { text-shadow: 0 2px 12px rgba(0,0,0,.45); }

/* ---- Hero slider: AR mirrors EN (overlay side, badge gap, desc lines, CTA) ---- */
/* Overlay: EN darkens the LEFT (its text side). RTL text sits on the right, so flip
   the horizontal gradient to darken the RIGHT for legibility (keep the vertical ones). */
.rtl .banner-slider .slider-overlay {
    background:
        linear-gradient(86deg, #001a1e00 38%, #001a1e8a 70%, #001a1e),
        linear-gradient(1deg, #001a1e00 55%, #001a1e33 83%, #001a1eb5),
        linear-gradient(#001a1e00 47%, #001a1e33) !important;
}
/* Badge: gap between the highlighted "بيلد سيف" and the rest (mirror of EN's span gap). */
.rtl .banner-slider .banner-content h6 span { margin-right: 0 !important; margin-left: 10px !important; }
/* Desc: constrain the Arabic paragraph so the (kashida-stretched) wording wraps
   to ~3 lines. Widening of the letters comes from the tatweel in the text itself. */
@media (min-width: 1200px) {
    .rtl .banner-slider.style-one .banner-content p { max-width: 70%; }
}
/* Badge sizing is AR-ONLY. Smaller on desktop/laptop (user request). */
.rtl .banner-slider .banner-content h6 { font-size: 13px !important; }
.rtl .banner-slider .banner-content h6 span { font-size: 12px !important; }
/* Heading: make the whole title bold so it reads over the photo. */
.banner-slider .banner-content .hero-heading,
.banner-slider .banner-content .title-text { font-weight: 700 !important; }
/* title-text ("قبل الشراء، البناء، / او الاستلام"): own line + honour the
   newline we stored in the field (esc_html keeps \n; pre-line renders it as a
   break — the widget escapes <br>, so a real newline is the reliable way). */
.banner-slider .banner-content .title-text { display: block; white-space: pre-line; }
/* AR only: extra air between the 3 heading lines. */
.rtl .banner-slider .banner-content .hero-heading,
.rtl .banner-slider .banner-content .title-text { line-height: 1.5 !important; }
/* Desc font: EN stays at 18px (keeps its 3 lines). AR only is larger + looser. */
.banner-slider .banner-content p { font-size: 18px !important; }
.rtl .banner-slider .banner-content p { font-size: 20px !important; line-height: 1.75 !important; }
/* Desc entrance reveal: theme's .animate-clip wipes LEFT->RIGHT. Mirror it for AR
   so "نقدّم حلول" reveals RIGHT->LEFT. Mirror the theme's OWN two rules exactly
   (same shape, just `.rtl`) so the active/full state matches wherever the theme's
   does — over-scoping the active selector once left the desc stuck clipped. */
.rtl .banner-content .animate-clip {                 /* rest: sliver on the RIGHT */
    -webkit-clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
    clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
}
.rtl .swiper-slide-active .animate-clip {            /* active: full (reveals right->left) */
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

/* Hero slider (RTL): do NOT mirror the slide image.
   The parent theme animates the reveal via transform on .slider-img
   (translateX(-25%) scale(1.5) -> translateX(0) scale(1) over 3s). A static
   `.rtl .slider-img { transform: scaleX(-1) }` overrode BOTH states with the
   same value, killing the motion in Arabic. Mirroring a photo is undesirable
   anyway, so we drop it and let the parent's motion run in RTL as in LTR.
   Only the content padding is swapped for RTL text placement. */
@media (min-width: 1200px) {
    .rtl .banner-content { padding-right: 125px !important; padding-left: 30px !important; }
}


/* Header nav: keep every label on ONE line and let the menu use the free space
   in the header row so items like "من نحن" / "تواصل معنا" don't break in two. */
@media (min-width: 1200px) {
    .main-nav > ul.menu { justify-content: flex-start !important; flex-wrap: nowrap !important; }
    .main-nav ul li a { white-space: nowrap !important; }
    .main-nav > ul > li > a { padding-left: 12px !important; padding-right: 12px !important; font-size: 15px; }
    /* the menu widget was capped ~611px with empty space beside it: let it grow */
    .elementor-element-354a47a { flex-grow: 1 !important; width: auto !important; }
    .elementor-widget-ht-site-logo { margin-inline-end: 15px; }
}

/* Submenu item hover effect + language button (desktop only). In LTR the parent
   theme grows an underline from left:0 and indents with padding-left; both sit on
   the wrong (start) side in RTL, so the Arabic dropdown had no hover effect. */
@media (min-width: 1200px) {
    /* underline grows from the reading start (right) in RTL */
    .rtl .main-nav .sub-menu li a::after { left: auto !important; right: 0 !important; }
    /* indent from the right on hover (mirror of the LTR padding-left:30px) */
    .rtl .main-nav .sub-menu li a:hover,
    .rtl .main-nav ul li .sub-menu li.current-menu-item > a {
        padding-left: 22px !important;
        padding-right: 33px !important;
    }
    /* Language switcher button: center flag + label + caret, and give the caret room. */
    .main-nav .pll-parent-menu-item > a {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        gap: 6px;
        padding-left: 18px !important;
        padding-right: 18px !important;
    }
    .main-nav .pll-parent-menu-item > a > span { margin: 0 !important; } /* kill inline margin-right */
    .main-nav .pll-parent-menu-item > a::after { margin: 0 !important; }
    /* Open the dropdown when hovering ANYWHERE on the button (both languages) and
       keep it reachable. Pin it flush under the button + an invisible hover bridge
       spanning the button width, so travelling from the caret/padding to the
       dropdown never crosses a dead gap that would close it. */
    /* keep the whole language button above any hero/slider element that may
       overlap the header edge and steal the hover on part of the button */
    .main-nav .pll-parent-menu-item { position: relative; z-index: 6; }
    .main-nav .pll-parent-menu-item > a { position: relative; z-index: 1; }
    .main-nav .pll-parent-menu-item > .sub-menu {
        margin-top: 0 !important; /* sit flush under the button (keeps hover reachable) */
        min-width: 170px !important; /* smaller than the theme's 16em default */
        max-width: 220px !important;
    }
    /* NOTE: WordPress puts the `rtl` class on <body>, not <html>, so the LTR guard
       must be body:not(.rtl) — html:not(.rtl) would (wrongly) match in Arabic too. */
    .rtl .main-nav .pll-parent-menu-item > .sub-menu { left: auto !important; right: 0 !important; }
    body:not(.rtl) .main-nav .pll-parent-menu-item > .sub-menu { right: auto !important; left: 0 !important; }
    .main-nav .pll-parent-menu-item::after {
        content: "";
        position: absolute;
        left: 0; right: 0;
        top: 100%;
        height: 14px;
    }
    .main-nav .pll-parent-menu-item:hover > .sub-menu,
    .main-nav .pll-parent-menu-item:focus-within > .sub-menu,
    .main-nav .pll-parent-menu-item > a:hover ~ .sub-menu {
        top: 100% !important;
        opacity: 1 !important;
        visibility: visible !important;
    }
}

/* Footer logo: the widget collapses to 0 width in the flex column -> force it to render */
[data-elementor-type="footer"] .elementor-widget-ht-site-logo,
.hfe-footer .elementor-widget-ht-site-logo { width: auto !important; display: block !important; }
[data-elementor-type="footer"] .ht-site-logo,
.hfe-footer .ht-site-logo { display: inline-block !important; }
[data-elementor-type="footer"] .ht-site-logo img,
.hfe-footer .ht-site-logo img { width: 190px !important; height: auto !important; max-width: 100%; }

/* Arabic titles: tanween/diacritics get clipped by overflow:hidden + tight line-height */
.rtl .elementor-widget-title .title,
.rtl .elementor-widget-title h1, .rtl .elementor-widget-title h2,
.rtl .elementor-widget-title h3, .rtl .elementor-widget-title h4,
.rtl .elementor-widget-title h5, .rtl .elementor-widget-title h6,
.rtl .title-sub {
    overflow: visible !important;
    line-height: 1.5 !important;
}
.rtl .title-sub { display: inline-block; }

/* About: the rotated "years of experience" label is unreadable in Arabic -> un-rotate */
.rtl .about-roted-text {
    transform: none !important;
    writing-mode: horizontal-tb !important;
    white-space: nowrap;
}

/* ==========================================================
   Arrow CTA buttons — static arrow + WhatsApp-style hover.
   Targets the hero "أعمالنا"/"Our Work" button and the About
   "خدماتنا"/"Services" button (id f917e56), AR + EN.
   The theme ships a sliding double-arrow; mirrored for RTL it
   slides out of view and leaves an empty icon box. Replace it
   with ONE static arrow glyph that stays centred and turns
   white as the icon box fills on hover — same feel as the
   header WhatsApp button (no sliding ghost). */
/* Keep the theme's natural layout (icon box flush at the button END, like the
   header "تواصل معنا" CTA): flex-direction:row-reverse. We only (a) render the
   label solid, (b) mirror the asymmetric padding for RTL, and (c) swap the
   sliding double-arrow for one static arrow. */
.banner-slider .banner-content .themeht-btn .btn-text,
.elementor-element-f917e56 .themeht-btn .btn-text {
    color: var(--themeht-white-color) !important;
    text-shadow: none !important;
    overflow: visible !important;
}
/* RTL: the theme's padding-left:20px sits on the wrong side; mirror it so the
   label is balanced and the icon box lands flush at the (left) end — same fix
   as the header WhatsApp button. */
.rtl .banner-slider .banner-content .themeht-btn,
.rtl .elementor-element-f917e56 .themeht-btn {
    padding-left: 4px !important;
    padding-right: 20px !important;
}
/* hide the two sliding arrows */
.banner-slider .banner-content .themeht-btn .btn-icon i,
.elementor-element-f917e56 .themeht-btn .btn-icon i { display: none !important; }
/* one static arrow. Colour inherits from .btn-icon, so the theme's own hover
   colour-swap (dark<->white as the fill grows) applies automatically. */
.banner-slider .banner-content .themeht-btn .btn-icon::after,
.elementor-element-f917e56 .themeht-btn .btn-icon::after {
    content: "\f13f";                       /* flaticon-right-arrow-1 */
    font-family: "flaticon_mycollection" !important;
    font-size: 15px;
    line-height: 1;
    position: relative;                     /* lift ABOVE the hover fill (::before, z-index:0) */
    z-index: 1;                             /* without this the fill covers the arrow on hover */
}
/* NOTE: the generic `.rtl .btn-icon{transform:scaleX(-1)}` already mirrors the
   box (arrow points LEFT in AR). Do NOT flip ::after again — that double-flip
   is what left the AR arrow pointing right. */
/* Hover: turn the arrow WHITE so it stays visible once the box fills. */
.banner-slider .banner-content .themeht-btn .btn-icon::after,
.elementor-element-f917e56 .themeht-btn .btn-icon::after { transition: color .3s ease; }
.banner-slider .banner-content .themeht-btn:hover .btn-icon::after,
.elementor-element-f917e56 .themeht-btn:hover .btn-icon::after { color: var(--themeht-white-color) !important; }
/* Fill direction — global rule: AR fills RIGHT->LEFT, EN fills LEFT->RIGHT.
   These arrow buttons carry `.rtl .btn-icon{transform:scaleX(-1)}`, which mirrors
   the whole box. So anchoring the fill at left:0 (grows left->right) renders as
   left->right in EN and, once mirrored, RIGHT->LEFT in AR — exactly the rule.
   Hence a single left:0 anchor for both, no .rtl override. */
.banner-slider .banner-content .themeht-btn .btn-icon::before,
.elementor-element-f917e56 .themeht-btn .btn-icon::before { left: 0; right: auto; }

/* ==========================================================
   About Us section — AR mirrors EN spacing / alignment.
   ========================================================== */
/* About image container: reveal effect is now the theme's GSAP background
   parallax (class `bg-gsap-about`, wired in functions.php with its own
   ScrollTrigger — same config/timing as the theme's `.bg-gsap` sections).
   No CSS keyframe here anymore. */

/* Feature items (تصميمات هندسية / مهندسون معتمدون): the icon gap sits on
   margin-right (LTR). Mirror it for RTL, and align the block flush to the
   paragraph's start edge (no leading indent). */
.rtl .featured-item.style-3 .featured-img,
.rtl .featured-item.style-3 .featured-icon { margin-right: 0 !important; margin-left: 20px !important; }
.elementor-element-ef7fde0 .featured-item.style-3 { margin-inline-start: 0 !important; }
/* two feature cells: even, comfortable gap */
.elementor-element-ef7fde0 { gap: 24px !important; }

/* Check-list (فريق هندسي.. / خبرة..): drop the default list indent so the
   check icon starts at the paragraph's start edge. */
.elementor-element-5799ab1 ul.list-icon { padding-inline-start: 0 !important; margin-inline-start: 0 !important; }
/* AR: the theme puts the icon->text gap on margin-right (LTR). In RTL that gap
   lands on the wrong side and the check mark touches the text — mirror it so the
   gap sits between the check and the words, matching EN's spacing (10px). */
.rtl .elementor-element-5799ab1 ul.list-icon li i { margin-right: 0 !important; margin-left: 10px !important; }

/* Progress "معدل رضا العملاء 92%": the theme absolutely-positions the percentage
   at right:0. float has no effect on an absolutely-positioned box, so in AR it
   stayed on the right (over the title). Re-anchor it to the LEFT for AR. */
.rtl .elementor-element-1a31dd1 .elementor-progress-percentage { right: auto !important; left: 0 !important; float: none !important; }

/* About CTA button (خدماتنا / Services): in AR the user wants it on the RIGHT
   (reading-start side) of the paragraph column. The button is inline-flex, so
   text-align moves it. */
.rtl .elementor-element-f917e56 .elementor-widget-container { text-align: right !important; }

/* About heading "تتجاوز 20 عامًا": the italic Playfair "20 عامًا" span crowds the
   preceding word in AR so the space looked missing — add an explicit gap on the
   span's start (right) side. AR only (EN's Latin space renders fine). */
.rtl .elementor-element-f346c35 .title-sub { margin-right: 12px !important; }

/* Brand name highlight inside the About paragraph ("بيلد سيف" / "Build Safe"):
   same green the removed drop-cap used (theme primary color). */
.bs-brand { color: var(--themeht-primary-color) !important; font-weight: 700; }

/* Floating scroll-to-top button: in AR move it to the LEFT, mirroring EN's
   right:50px offset exactly (left:50px). */
.rtl .scroll-top { left: 50px !important; right: auto !important; }

/* "لنتحدث عن مشروعك" intro paragraph (8547a4d): right-align in AR like the other
   paragraphs (the theme centred the drop-cap paragraph). */
.rtl .elementor-element-8547a4d,
.rtl .elementor-element-8547a4d .elementor-widget-container,
.rtl .elementor-element-8547a4d p { text-align: right !important; }
/* The dark column keeps the LTR design's asymmetric padding (right:100 left:10),
   so in RTL the content sits 100px away from the right edge and reads as centred.
   Mirror the padding for RTL so all of it hugs the right edge (~10px) like the
   About paragraph above. */
.rtl .elementor-element-e2e13fa { padding-right: 10px !important; padding-left: 100px !important; }
/* Progress percentages 74% / 85%: mirror of EN (where the % sits at the bar end,
   opposite the title). Title is on the right in AR, so the % goes to the LEFT. */
.rtl .elementor-element-26fe76d .elementor-progress-percentage,
.rtl .elementor-element-8c5efae .elementor-progress-percentage { left: 0 !important; right: auto !important; }

/* Contact form (a506591 / CF7): make it RTL so the fields read right-to-left
   (الاسم on the right, then البريد; رقم الهاتف on the right, then اختر الخدمة) and
   the field text is right-aligned. */
.rtl .elementor-element-a506591 .wpcf7-form { direction: rtl !important; }
.rtl .elementor-element-a506591 .wpcf7-form .row { direction: rtl !important; }
.rtl .elementor-element-a506591 .wpcf7-form input,
.rtl .elementor-element-a506591 .wpcf7-form textarea,
.rtl .elementor-element-a506591 .wpcf7-form select { direction: rtl !important; text-align: right !important; }
/* Select "اختر الخدمة": move the dropdown chevron to the LEFT side in AR. */
.rtl .elementor-element-a506591 .wpcf7-form select {
    background-position: left 12px center !important;
    padding-left: 30px !important;
    padding-right: 20px !important;
}
/* Submit button "إرسال" to the LEFT of the form in AR. */
.rtl .elementor-element-a506591 .wpcf7-form .row > div:last-child { text-align: left !important; }
/* Field validation tips: show clearly under each field, right-aligned. */
.rtl .elementor-element-a506591 .wpcf7-not-valid-tip {
    display: block !important;
    direction: rtl !important;
    text-align: right !important;
    font-size: 13px !important;
    margin-top: 5px !important;
    position: static !important;
}
.rtl .elementor-element-a506591 .wpcf7-form-control-wrap { display: block !important; }

/* ==========================================================
   Our Work (fc5f41c) — uniform image dimensions.
   The four project photos have different aspect ratios, so lock them to a
   consistent 3:2 crop. (7a28515 = the same cards on the Our Work page.) */
.elementor-element-fc5f41c img,
.elementor-element-7a28515 img {
    aspect-ratio: 3 / 2 !important;
    width: 100% !important;
    height: auto !important;
    object-fit: cover !important;
}

/* ==========================================================
   Blog cards (AR) — author on the right, category badge on the left.
   Spread the two meta items to opposite ends of the card. */
.rtl .post-card ul.post-bottom:not(.post-shape-area) {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    width: 100%;
    padding: 0 !important;
    margin: 28px 0 0 !important;
}
/* remove per-item margins so the author name hugs the card's right edge */
.rtl .post-card ul.post-bottom:not(.post-shape-area) li { margin: 0 !important; padding: 0 !important; }
/* space between the post title line and the author / category row (both langs) */
.post-card ul.post-bottom:not(.post-shape-area) { margin-top: 28px !important; }
/* slightly larger author name */
.post-card ul.post-bottom:not(.post-shape-area) .byline,
.post-card ul.post-bottom:not(.post-shape-area) .byline .author a { font-size: 15px !important; font-weight: 600 !important; }

/* ==========================================================
   Footer (AR template 6767).
   ========================================================== */
/* Link columns (روابط سريعة / خدماتنا) + contact column: drop the default list
   indent so the items start at the right (reading-start) edge. */
.elementor-element-6e14d92 ul,
.elementor-element-70c6df9 ul,
.elementor-element-5ca1df7 .contact-info { padding-inline-start: 0 !important; margin-inline-start: 0 !important; }
/* Remove the two decorative "hooks" (absolute dividers) on the copyright bar. */
.elementor-element-49f3049,
.elementor-element-100c78c { display: none !important; }

/* Contact list (عنواننا / احصل على استشارتك): drop the default <ul> inset so the
   block is flush to the right of its grid cell (icon stays on the right). */
.rtl .elementor-element-698def6 .contact-info { padding: 0 !important; margin: 0 !important; }

/* "لنتحدث عن مشروعك": a decorative absolute divider (868a7f5) sits at the
   white-form / dark-card seam. In RTL its absolute offset lands on the wrong
   side and renders as a stray dark hook at the bottom of the card. It's an
   invisible decorative element, so hide it in Arabic. */
.rtl .elementor-element-868a7f5 { display: none !important; }

/* ==========================================================
   Services cards (widget a9ade69, style-1) — AR tweaks.
   ========================================================== */
/* Card titles (التصميم الهندسي / الاستشارات الهندسية / …): keep the theme's
   two-line wrap and right-align them in Arabic. The title box is narrower than
   the card, so push it to the right edge (margin-inline-end:auto handles the
   block case, align-items:flex-start the flex case). */
/* Trim the card's right inner padding in AR so the title hugs the reading edge
   (the user felt the 40px inset read as an unwanted right margin). */
.rtl .elementor-element-a9ade69 .service-desc { text-align: right !important; padding-right: 40px !important; }
.rtl .elementor-element-a9ade69 .service-title { align-items: flex-start !important; }
.rtl .elementor-element-a9ade69 .service-title h4,
.rtl .elementor-element-a9ade69 .service-title h4 a {
    text-align: right !important;
    white-space: normal !important;
    width: min-content !important;   /* two-word title -> one word per line (two lines) */
    max-width: none !important;
    margin-inline-start: 0 !important;
    margin-inline-end: 0 !important;
}
/* The corner curve + arrow (.shape-item-icon) sits bottom-RIGHT (LTR). Mirror it
   to the bottom-LEFT for Arabic: move to the left corner and flip the curve/arrow
   (scaleX also mirrors the arrow's hover slide, so it stays consistent). */
.rtl .elementor-element-a9ade69 .shape-item-icon { right: auto !important; left: 0 !important; transform: scaleX(-1); }
/* Remove the icon badge overlaid on the service image (both languages). */
.elementor-element-a9ade69 .service-image .service-icon { display: none !important; }

/* "لماذا بيلد سيف" heading: green italic "20 عامًا" accent, matching About, with
   a gap before the italic span (it otherwise crowds the preceding word "من"). */
.rtl .elementor-element-8418a64 .title-sub { color: var(--themeht-primary-color) !important; margin-right: 12px !important; }
/* Feature descriptions in Cairo (the theme falls back to a Latin UI font). */
.rtl .elementor-element-4bd9f41 .featured-item.style-3 .featured-desc { font-family: 'Cairo', sans-serif !important; }
/* Space after the section (its counters neighbour was removed, leaving it flush
   against the next section) — match the 120px other sections use. BOTH languages
   (EN was missing this gap before the "Let's Talk" photo section). */
.elementor-element-acc0dfe { padding-bottom: 120px !important; }
/* Badge -> heading gap: the badge is a separate widget above the heading, so the
   column's 30px flex-gap sits between them (About has ~0 because its eyebrow is in
   the same widget). Pull the heading up to tighten the gap like About. */
.rtl .elementor-element-8418a64 { margin-top: -22px !important; }

/* Engineers image (874cef8) in the left column: make it fill the column height
   like the About image (was short at ~360px). */
.rtl .elementor-element-bfe3419 > .elementor-element-874cef8 { flex: 1 1 auto !important; align-self: stretch !important; }
.rtl .elementor-element-874cef8 > img { height: 100% !important; width: 100% !important; object-fit: cover !important; }

/* ==========================================================
   Section mirroring (columns live on each container's .e-con-inner).
   ========================================================== */
/* "لماذا بيلد سيف" (acc0dfe): put the CONTENT (heading + features) on the reading
   side — RIGHT in AR, LEFT in EN — like the About section. The content is the 2nd
   column in the DOM, so row-reverse in BOTH languages moves it to the end side.
   Also split the two columns 50/50 (was 33/66). */
.elementor-element-acc0dfe > .e-con-inner { flex-direction: row-reverse !important; }
@media (min-width: 1025px) {
    .elementor-element-bfe3419 { width: 50% !important; }
    .elementor-element-c667005 { width: 50% !important; }
}

/* "لنتحدث عن مشروعك" (ca7b8fd): the user wants it mirrored again in AR, i.e.
   let the theme's natural RTL auto-mirror stand (no override). */

/* "أكثر من 20 عامًا" (b461b17): single glass card over a fixed background photo.
   Match English (card on the RIGHT) in Arabic too, so it sits over the same part
   of the photo. The row uses justify-content:flex-end (=left in RTL); flex-start
   puts it back on the right for AR. */
.rtl .elementor-element-b461b17 > .e-con-inner { justify-content: flex-start !important; }

/* ==========================================================
   Testimonials marquee (efde0db) — AR: seamless loop + reverse direction.
   The theme animates .marquee-inner with `translateX(0)->(-50%)` over a
   duplicated (2x) card list. In RTL the inline-flex isn't anchored the same way,
   so the loop looked broken / duplicated. Force LTR flow on the track (anchors it
   so the -50% loop is seamless; each card's Arabic text stays RTL on its own) and
   reverse the animation so cards enter from the LEFT and travel right — the
   opposite of the English (which keeps entering from the right). */
/* The inline-flex track is anchored by its WRAP's direction. In RTL the wrap
   pushed the (2x-wide) track off-screen to the left, so nothing showed. Set the
   WRAP to LTR to anchor the track at left:0 (so translateX(-50%) loops), reverse
   the animation so cards enter from the LEFT, and keep each card's text RTL. */
.rtl .elementor-element-efde0db .testimonial-marquee { direction: ltr !important; }
.rtl .elementor-element-efde0db .marquee-inner { animation-direction: reverse !important; }
.rtl .elementor-element-efde0db .marquee-inner .testimonial { direction: rtl !important; text-align: right !important; }

/* Animated section titles (theme-title style-3) render title + title2 as two
   sliding lines. Our AR headings only need one line, so hide the empty/duplicate
   second line ("أعمالنا", and "آراء العملاء" which was set twice). */
.rtl .elementor-element-09f56a9 .title-text-img,
.rtl .elementor-element-8cefe2b .title-text-img { display: none !important; }

/* ==========================================================
   Preloader (#ht-preloader): brand logo beside the green spinner.
   RTL -> logo on the right, spinner on its left (mirrored for LTR).
   Uses the light-on-dark logo so it shows on the dark backdrop.
   Responsive: the whole group scales down for tablet / phone.
   ========================================================== */
#ht-preloader .loader-wrapper {
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
}
/* pull the spinner back into flow; scale the ring down a touch (origin top-left
   so the 10rem circle exactly fills the smaller box) */
#ht-preloader .loader-anim {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: 5.5rem;
    height: 5.5rem;
    flex: 0 0 auto;
}
/* Shrink the ring geometry to 0.55x of the theme's 10rem ring WITHOUT transform,
   so the spin animation (transform:rotate on .loader-circle) is preserved and the
   ring stays vertically centred next to the logo. */
#ht-preloader .loader-circle { width: 5.5rem !important; height: 5.5rem !important; }
#ht-preloader .loader-circle span { inset: 0.55rem !important; }
#ht-preloader div[class*='segment']:before {
    background-size: 2.75rem 3.3rem !important;
    border-top-left-radius: 2.75rem !important;
    border-bottom-left-radius: 2.75rem !important;
}
#ht-preloader .loader-circle i {
    width: 0.55rem !important;
    height: 0.55rem !important;
    box-shadow:
        0 0 0.55rem var(--themeht-primary-color),
        0 0 1.1rem var(--themeht-primary-color),
        0 0 1.65rem var(--themeht-primary-color),
        0 0 2.2rem var(--themeht-primary-color),
        0 0 2.75rem var(--themeht-primary-color) !important;
}
/* the "Build Safe" text slot becomes the logo image */
#ht-preloader .loader-text {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    transform: none !important;
    font-size: 0 !important;
    line-height: 0 !important;
    flex: 0 0 auto;
}
#ht-preloader .loader-text::before {
    content: "";
    display: block;
    width: 380px;
    aspect-ratio: 333 / 85;
    background: url("https://buildsafex.com/wp-content/uploads/2026/09/buildsafe-logo-white-tag.png") no-repeat center center;
    background-size: contain;
}
/* Tablet */
@media (max-width: 991px) {
    #ht-preloader .loader-wrapper { transform: scale(0.85); }
}
/* Phone */
@media (max-width: 575px) {
    #ht-preloader .loader-wrapper { transform: scale(0.6); gap: 1.6rem; }
    #ht-preloader .loader-text::before { width: 290px; }
}

/* ==========================================================
   Responsive polish — mobile + laptop (2026-09-08)
   ========================================================== */

/* About feature blocks (تصميمات هندسية / مهندسون معتمدون): icon BESIDE the
   title at every width (never stacked). The desc box was full-width and wrapped
   below the icon — keep the row un-wrapped and let the text take the rest. */
.elementor-element-ef7fde0 .featured-item.style-3 {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    gap: 18px;
}
.elementor-element-ef7fde0 .featured-item.style-3 .featured-img {
    margin-bottom: 0 !important;
    flex: 0 0 auto !important;
}
.elementor-element-ef7fde0 .featured-item.style-3 .featured-desc {
    flex: 1 1 auto !important;
    min-width: 0 !important;
}

/* Those two illustrated icons: keep the drawing, recolor only the yellow to
   the brand green (pre-rendered PNG variants). */
.elementor-element-51463d4 .featured-img img {
    content: url("https://buildsafex.com/wp-content/uploads/2025/11/construction-green.png?v=3");
}
.elementor-element-c08fd8f .featured-img img {
    content: url("https://buildsafex.com/wp-content/uploads/2025/11/workers-green.png?v=3");
}

/* Let's Talk: trim the big left inset that squeezed the Arabic text on phones. */
@media (max-width: 767px) {
    .rtl .elementor-element-e2e13fa { padding-left: 15px !important; }
}

/* Our Work cards: stack the project title (line 1) over the category badge
   (line 2), with the badge on the reading-end side (left in RTL / right in LTR).
   (7a28515 = the same cards on the Our Work page.) */
.elementor-element-fc5f41c .portfolio-desc,
.elementor-element-7a28515 .portfolio-desc {
    display: flex !important;
    flex-direction: column !important;
}
.elementor-element-fc5f41c .portfolio-title,
.elementor-element-7a28515 .portfolio-title { width: 100%; }
.elementor-element-fc5f41c .portfolio-subtitle,
.elementor-element-7a28515 .portfolio-subtitle {
    display: block !important;
    width: -moz-fit-content;
    width: fit-content;
    align-self: flex-end !important;   /* reading-end: left in RTL, right in LTR */
    margin-top: 10px !important;
}

/* Testimonials marquee: keep the edge fade on tablet, drop it on phone only. */
@media (max-width: 767px) {
    .elementor-element-efde0db .testimonial-marquee,
    .elementor-element-efde0db .marquee-inner {
        -webkit-mask: none !important;
        mask: none !important;
        -webkit-mask-image: none !important;
        mask-image: none !important;
    }
    /* With the fade gone, the outer container's side padding (30px + 10px) showed
       as white strips. Full-bleed the marquee to the viewport so it reaches the
       screen edges — phone only (tablet keeps its padded, faded look). */
    .elementor-element-efde0db .testimonial-marquee {
        width: 100vw !important;
        /* both margins so it works in RTL and LTR (one is honoured per direction) */
        margin-left: calc(50% - 50vw) !important;
        margin-right: calc(50% - 50vw) !important;
    }
}

/* Blog heading: single line on desktop, break to two lines on phones.
   A hard <br> sits after "وأفكار" in the heading; we hide it above phone. */
.elementor-element-e2603a2 h2 br { display: none !important; }
@media (max-width: 767px) {
    .elementor-element-e2603a2 h2 br { display: inline !important; }
}

/* Laptop/tablet stacked range: collapse each heading onto ONE line. Both AR
   headings carry a hard <br>; hide it here and stop the words wrapping.
   Scoped to .rtl — the EN headings are longer, have no <br>, and must wrap
   (forcing nowrap on them overflowed the narrow "why" column). */
@media (min-width: 768px) and (max-width: 1024px) {
    .rtl .elementor-element-f346c35 h2, .rtl .elementor-element-f346c35 .elementor-heading-title,
    .rtl .elementor-element-8418a64 h2, .rtl .elementor-element-8418a64 .elementor-heading-title {
        font-size: 28px !important;
        white-space: nowrap !important;
    }
    .rtl .elementor-element-f346c35 h2 br,
    .rtl .elementor-element-8418a64 h2 br { display: none !important; }
}

/* "لماذا بيلد سيف" / "Why Build Safe": when it stacks (<=1024) show the image
   ON TOP, text BELOW (DOM order is image then text). Both languages. */
@media (max-width: 1024px) {
    .elementor-element-acc0dfe > .e-con-inner { flex-direction: column !important; }
}

/* Mobile menu: move the hamburger toggle to the far reading-start (left in RTL). */
@media (max-width: 767px) {
    .rtl .nav-menu-toggle { margin-left: 0 !important; margin-right: auto !important; }
}

/* Mobile menu: the submenu toggle (span.sub-menu-toggle, position:absolute)
   sits to the reading-end — left in RTL, like the EN version. */
@media (max-width: 1024px) {
    .rtl .main-nav .sub-menu-toggle {
        left: 0 !important;
        right: auto !important;
    }
    /* point the chevron toward the reading-end (left) instead of right */
    .rtl .main-nav .sub-menu-toggle i { display: inline-block; transform: rotate(180deg); }
    .rtl .main-nav li.menu-item-has-children > a { padding-left: 34px !important; padding-right: 0 !important; }
}
/* Social icons appended to the main menu: only in the mobile off-canvas panel. */
.main-nav ul.menu li.bs-social-menu { display: none; }
.main-nav ul.menu li.bs-social-menu .bs-social-link { font-size: 20px; color: var(--themeht-primary-color); line-height: 1; }
@media (max-width: 1024px) {
    .main-nav ul.menu li.bs-social-menu {
        display: flex !important;
        gap: 22px;
        padding: 20px 0;
        justify-content: flex-start; /* start = right in RTL, aligns with the menu text */
    }
}

/* Header logo: keep the original wordmark, just a touch larger in the bar. */
.ht-site-logo img {
    width: 165px !important;
    max-width: 165px !important;
    height: auto !important;
}

/* Contact card ("لنتحدث عن مشروعك"): the "hook" was two decorative Elementor
   shape-divider widgets pinned (position:absolute) at the card's bottom corners.
   Hide them; the card keeps its normal padding/frame. */
.elementor-element-8ccf044,
.elementor-element-868a7f5 { display: none !important; }

/* ==========================================================
   About Us page (2404 / EN 16917) — hero banner + mobile menu
   ========================================================== */

/* Mobile off-canvas close (X): move to the top-left in Arabic (like EN). */
@media (max-width: 1024px) {
    .rtl .main-nav .closepanel { left: 30px !important; right: auto !important; }
}

/* Hero banner (all inner pages): same treatment as the About page — the homepage
   hero photo, cover, biased to the engineers, and a right-side gradient. */
.page-title-bg {
    background-image: url("https://buildsafex.com/wp-content/uploads/2026/09/build-safe-ar.png") !important;
    background-size: cover !important;
    background-position: 50% 32% !important;   /* keep the engineers in frame */
    background-repeat: no-repeat !important;
}
/* Tablet/phone: the wide photo crops hard — bias toward the two engineers. */
@media (max-width: 1024px) {
    .page-title-bg { background-position: 30% 32% !important; }
}
/* Banner gradient: the demo darkens the LEFT (274deg); flip to darken the RIGHT. */
.page-title-bg::after {
    background: linear-gradient(86deg, rgba(0,26,30,0) 38%, rgba(0,26,30,0.54) 70%, rgb(0,26,30)) !important;
}

/* Breadcrumb: breathing room around the "/" separator. */
.page-breadcrumb .breadcrumb-item + .breadcrumb-item::before {
    padding-left: 10px !important;
    padding-right: 10px !important;
}

/* About hero banner (AR): give the "من نحن" title + breadcrumb room from the
   right edge — more on tablet/phone. */
@media (min-width: 1025px) {
    .rtl .page-title .theme-breadcrumb-box { padding-right: 55px !important; }
}
@media (min-width: 768px) and (max-width: 1024px) {
    .rtl .page-title .theme-breadcrumb-box { padding-right: 75px !important; }
}
@media (max-width: 767px) {
    .rtl .page-title .theme-breadcrumb-box { padding-right: 12px !important; }
}
/* Breadcrumb: space between the home icon and "الرئيسية". */
.rtl .page-breadcrumb .breadcrumb-item .bi-house-door { margin-left: 8px !important; }

/* About intro image: match the square (~1:1) framing of the homepage
   "من نحن" image (side-by-side layout). */
.elementor-element-4fbeda6 img {
    aspect-ratio: 1 / 1 !important;
    object-fit: cover !important;
    width: 100% !important;
    height: auto !important;
}
/* When the two columns stack (<=1024): image ON TOP, and a shorter 3:2 crop so
   the square photo doesn't become a giant block on tablet/phone. */
@media (max-width: 1024px) {
    .elementor-element-b3263f6 > .e-con-inner { flex-direction: column-reverse !important; }
    .elementor-element-4fbeda6 img { aspect-ratio: 3 / 2 !important; }
}
/* Phone: tighten the gap between the hero heading and the "في بيلد سيف" text. */
@media (max-width: 767px) {
    .elementor-element-b3263f6 > .e-con-inner { padding-top: 12px !important; }
    .elementor-element-8b5c648 { margin-top: 0 !important; }
}

/* About page: trim the (stacked) vertical gap between the team and testimonials
   sections that became adjacent (About only). */
.page-id-2404 .elementor-element-a32068b,
.page-id-16917 .elementor-element-a32068b { padding-top: 30px !important; }
.page-id-2404 .elementor-element-a4854ce > .e-con-inner,
.page-id-16917 .elementor-element-a4854ce > .e-con-inner { padding-bottom: 40px !important; }

/* About intro: larger body text; the "لنبنِ..." heading (moved under the text)
   has its green colour + no underline set in the widget data. */
.elementor-element-8b5c648, .elementor-element-8b5c648 p,
.elementor-element-a7b8c91, .elementor-element-a7b8c91 p { font-size: 18px !important; line-height: 1.9 !important; }
.elementor-element-f510723 { display: block !important; margin-top: 14px !important; }

/* Hero heading: desktop keeps the 3-line breaks (br-d); phone uses the 4-line
   breaks (br-m). */
.elementor-element-f3ce4f5 .br-m { display: none; }
@media (max-width: 767px) {
    .elementor-element-f3ce4f5 .br-d { display: none; }
    .elementor-element-f3ce4f5 .br-m { display: inline; }
}

/* About hero heading is very long — shrink it on phones. */
@media (max-width: 767px) {
    .elementor-element-f3ce4f5 h2,
    .elementor-element-f3ce4f5 .ht-heading { font-size: 26px !important; line-height: 1.45 !important; }
}

/* About hero heading scroll reveal (bs_hero_reveal JS): start faded. Desktop/
   laptop/tablet only — on phones it renders plainly (JS skips it). */
@media (min-width: 768px) {
    .elementor-element-f3ce4f5 .ht-heading .bs-word { opacity: 0.2; transition: none; }
}

/* About: reduce the gap between the banner and the "نحمى" heading. The real gap
   is the inner wrapper's 120px top padding — trim that (not the outer). */
.page-id-2404 .elementor-element-7f50798,
.page-id-16917 .elementor-element-7f50798 { padding-top: 0 !important; }
.page-id-2404 .elementor-element-7f50798 > .e-con-inner,
.page-id-16917 .elementor-element-7f50798 > .e-con-inner { padding-top: 55px !important; }
/* Phone: match the banner->first-section gap used on every other inner page
   (their first section carries a 120px inner top padding). Earlier this was
   trimmed to 18px; the user wants it enlarged to that standard on phones. */
@media (max-width: 767px) {
    .page-id-2404 .elementor-element-7f50798 > .e-con-inner,
    .page-id-16917 .elementor-element-7f50798 > .e-con-inner { padding-top: 120px !important; }
}

/* About: the "أعمالنا" button back on the reading-start side (right in RTL). */
.page-id-2404 .elementor-element-f917e56 .elementor-widget-container { text-align: right !important; }
/* EN mirror: reading-end is the LEFT in LTR. */
.page-id-16917 .elementor-element-f917e56 .elementor-widget-container { text-align: left !important; }

/* ==========================================================
   Services page (13845) — "تفاصيل الخدمة" details link
   ========================================================== */
/* Push the details link to the reading-end (left in RTL) and point its arrow left. */
.elementor-element-f6d7117 .service-desc .link-btn {
    display: block;
    width: 100%;
    text-align: left !important;
    margin: 0 !important;
}
.rtl .elementor-element-f6d7117 .link-btn .flaticon-right-arrow-1 {
    display: inline-block;
    transform: scaleX(-1);
}
/* The arrow rendered higher than the text — line it up on the text's centre. */
.elementor-element-f6d7117 .service-desc .link-btn { line-height: 1.2 !important; }
.elementor-element-f6d7117 .service-desc .link-btn i {
    vertical-align: middle !important;
    line-height: 1 !important;
    position: relative;
    top: -1px;
}

/* ==========================================================
   Contact page (1404) — right-align the info column
   ========================================================== */
.rtl .elementor-element-9acc0cd,
.rtl .elementor-element-9acc0cd .elementor-widget-container { text-align: right !important; }
.rtl .elementor-element-9acc0cd .contact-list li,
.rtl .elementor-element-9acc0cd .working-hours li,
.rtl .elementor-element-9acc0cd ul.social-icons,
.rtl .elementor-element-9acc0cd .themeht-social { justify-content: flex-start !important; }

/* Contact info list (عنواننا / للاستفسارات / اتصل بنا): the theme adds a 40px
   inline padding on the <ul.contact-info> (meant for LTR absolute icons). In RTL
   it becomes a right inset — drop it so the icons/text sit flush to the right. */
.rtl .elementor-element-a92eecb .contact-info { padding-right: 0 !important; }

/* Contact phone number: render LTR like the footer ("+20 101 117 7998") so the
   plus sign and grouping read correctly inside the RTL column. */
.rtl .elementor-element-a92eecb a[href^="tel"] {
    direction: ltr !important;
    unicode-bidi: embed;
    display: inline-block;
}

/* Services page (13845): the dark "لنتحدث" CTA is the last section, so it sat
   flush against the (dark) footer. Add the gap OUTSIDE the section as an external
   white margin (the page background), matching the light gap other pages have
   before the footer — not internal dark padding. */
.page-id-13845 .elementor-element-ca7b8fd,
.page-id-16918 .elementor-element-ca7b8fd { margin-bottom: 130px !important; }
@media (max-width: 767px) {
    .page-id-13845 .elementor-element-ca7b8fd,
    .page-id-16918 .elementor-element-ca7b8fd { margin-bottom: 75px !important; }
}

/* ==========================================================
   Contact form (CF7 inside widget 7120915) — RTL fields + error spacing
   ========================================================== */
/* Make every field read right-to-left and align its text/placeholder to the right. */
.rtl .elementor-element-7120915 .wpcf7 input,
.rtl .elementor-element-7120915 .wpcf7 textarea,
.rtl .elementor-element-7120915 .wpcf7 select {
    direction: rtl !important;
    text-align: right !important;
}
.rtl .elementor-element-7120915 .wpcf7 input::placeholder,
.rtl .elementor-element-7120915 .wpcf7 textarea::placeholder { text-align: right !important; }
/* The select's dropdown arrow belongs on the left in RTL. */
.rtl .elementor-element-7120915 .wpcf7 select {
    background-position: left 1rem center !important;
    padding-right: 1rem !important;
    padding-left: 2.5rem !important;
}
/* Validation error tip: give it room below the field so it doesn't hug the input
   or overlap the next one. */
.elementor-element-7120915 .wpcf7-not-valid-tip {
    display: block !important;
    margin-top: 8px !important;
    font-size: 13px !important;
}
.rtl .elementor-element-7120915 .wpcf7-not-valid-tip { text-align: right !important; }
.elementor-element-7120915 .wpcf7 .col-md-6,
.elementor-element-7120915 .wpcf7 .col-md-12 { margin-bottom: 1.75rem !important; }

/* ==========================================================
   Placeholder links (demo content). The blog post-grids (23eae68 home,
   4caa52a blog page) now resolve to REAL articles, so they are clickable
   again. Only the team cards stay neutralised (no team pages yet). */
.elementor-element-722c5ed a {
    pointer-events: none !important;
    cursor: default !important;
}

/* ==========================================================
   Reports page ([bs_reports]) — client code gate + download
   ========================================================== */
.bs-reports-wrap { max-width: 640px; margin: 0 auto; padding: 20px 0; }
.bs-reports-card {
    background: var(--themeht-white-color, #fff);
    border: 1px solid #ececec;
    border-radius: 14px;
    padding: 40px 34px;
    box-shadow: 0 20px 50px rgba(0,26,30,.06);
    text-align: center;
}
.bs-reports-title { margin: 0 0 8px; font-size: 26px; }
.bs-reports-sub { margin: 0 0 22px; color: var(--themeht-text-color, #666); }
.bs-reports-form { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.bs-reports-form input {
    flex: 1 1 260px;
    min-width: 0;
    padding: 14px 18px;
    border: 1px solid #d9d9d9;
    border-radius: 10px;
    font-size: 16px;
    text-align: center;
    letter-spacing: 1px;
}
.rtl .bs-reports-form input { direction: rtl; }
.bs-reports-form .themeht-btn { flex: 0 0 auto; cursor: pointer; }
.bs-reports-msg { min-height: 22px; margin-top: 16px; color: #c0392b; font-weight: 600; }
.bs-reports-result { margin-top: 22px; }
.bs-reports-name { font-weight: 700; margin-bottom: 14px; font-size: 18px; }
@media (max-width: 767px) {
    .bs-reports-card { padding: 30px 20px; }
    .bs-reports-form .themeht-btn { flex: 1 1 100%; }
}

/* ==========================================================
   Logo slogan (under the wordmark), spanning the logo width — bilingual via .rtl.
   Header logo widget = 66e6574; footer logo widget = 41ff2b9 (both AR + EN).
   ========================================================== */
.elementor-element-66e6574 .elementor-widget-container,
.elementor-element-41ff2b9 .elementor-widget-container {
    text-align: center; line-height: 1;
    width: 215px; max-width: 215px;
}
.elementor-element-66e6574 .elementor-widget-container::after,
.elementor-element-41ff2b9 .elementor-widget-container::after {
    content: "Engineering Consultancy & Inspection";
    display: block; width: 100%;
    margin-top: 6px;
    font-size: 8.5px;
    text-transform: uppercase;
    font-weight: 700;
    color: #16233f;
    text-align: center;
    letter-spacing: .5px;
    line-height: 1.25;
}
.rtl .elementor-element-66e6574 .elementor-widget-container::after,
.rtl .elementor-element-41ff2b9 .elementor-widget-container::after {
    content: "للاستشارات الهندسية والفحص";
    font-family: 'Cairo', sans-serif;
    font-size: 12px;
    text-transform: none;
    font-weight: 600;
}
/* Footer logo: no slogan (header keeps it). Applies to all viewports + both langs. */
.elementor-element-41ff2b9 .elementor-widget-container::after { content: none !important; }

/* Enlarge logos (header + footer), same size. Source is 1074px wide, stays sharp. */
.elementor-element-66e6574 img,
.elementor-element-41ff2b9 img { width: 215px !important; max-width: 215px !important; height: auto !important; }
@media (max-width: 767px) {
    .elementor-element-66e6574 .elementor-widget-container,
    .elementor-element-41ff2b9 .elementor-widget-container { width: 175px; max-width: 175px; }
    .elementor-element-66e6574 img,
    .elementor-element-41ff2b9 img { width: 175px !important; max-width: 175px !important; }
    .elementor-element-66e6574 .elementor-widget-container::after,
    .elementor-element-41ff2b9 .elementor-widget-container::after { font-size: 7px; }
    .rtl .elementor-element-66e6574 .elementor-widget-container::after,
    .rtl .elementor-element-41ff2b9 .elementor-widget-container::after { font-size: 10px; }
}

/* ==========================================================
   Testimonials: initial-letter avatar (no photos). JS injects .bs-initial into
   .testimonial-img with the first letter of the name; style it as a green disc.
   ========================================================== */
.elementor-element-efde0db .testimonial-img {
    display: flex !important;
    align-items: center; justify-content: center;
    width: 56px; height: 56px; min-width: 56px;
    border-radius: 50%;
    background: var(--themeht-primary-color, #60B847);
    overflow: hidden;
}
.elementor-element-efde0db .testimonial-img img { display: none !important; }
.elementor-element-efde0db .bs-initial {
    color: #fff; font-weight: 700; font-size: 22px; line-height: 1;
    font-family: 'Cairo', sans-serif;
}

/* ==========================================================
   WhatsApp "Let's talk" form — the submit matches the theme's old CF7 submit
   ("إرسال"/"Send"): solid primary button, radius 8, hover -> dark. Left-aligned.
   ========================================================== */
.bs-wa-form .bs-wa-btnwrap { text-align: left; }
.rtl .bs-wa-form .bs-wa-btnwrap { text-align: left; }   /* left = الشمال in RTL too */
.bs-wa-form .bs-wa-submit {
    background: var(--themeht-primary-color) !important;
    color: var(--themeht-white-color) !important;
    border: none !important;
    padding: 14px 34px !important;
    border-radius: 8px !important;
    font-family: var(--themeht-typography-secondary-font-family) !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    cursor: pointer;
    display: inline-block;
    transition: background .3s ease, color .3s ease;
}
.rtl .bs-wa-form .bs-wa-submit { font-family: 'Cairo', sans-serif !important; }
.bs-wa-form .bs-wa-submit:hover {
    background: var(--themeht-bg-dark-color) !important;
    color: var(--themeht-white-color) !important;
}

/* "Select service" dropdown: arrow on the left, text to the right (RTL). */
.rtl .bs-wa-form .bs-wa-service {
    direction: rtl;
    text-align: right;
    background-position: left 12px center !important;
    padding-left: 34px !important;
    padding-right: 15px !important;
}

/* Phone field (AR): placeholder reads RTL on the right; typed digits stay LTR.
   :placeholder-shown = empty state -> RTL placeholder; once typing -> LTR numbers,
   still right-aligned. All viewports, every page that uses the form. */
.rtl .bs-wa-form .bs-wa-phone { direction: ltr; text-align: right; }
.rtl .bs-wa-form .bs-wa-phone:placeholder-shown { direction: rtl; text-align: right; }
.rtl .bs-wa-form .bs-wa-email { direction: ltr; text-align: right; }
.rtl .bs-wa-form .bs-wa-email:placeholder-shown { direction: rtl; text-align: right; }

/* ==========================================================
   Batch B: Services cards + Contact address
   ========================================================== */
/* Services page (f6d7117): drop the green flaticon on the cards (keep image,
   title, description, and the details-link arrow). */
.elementor-element-f6d7117 .service-icon { display: none !important; }

/* Contact page address (a92eecb): space between "عنواننا" and the address. */
.elementor-element-a92eecb .contact-title { margin-bottom: 8px !important; }
.elementor-element-a92eecb .contact-details span:not(.contact-title) { line-height: 1.7 !important; }

/* ==========================================================
   Phone (mobile) refinements — AR version.
   ========================================================== */
@media (max-width: 767px) {
    /* Hero "بيلد سيف" badge: a touch smaller on phones. */
    .elementor-element-bd7309c .banner-text h6.animate-circle-scale {
        font-size: 13px !important;
        padding: 5px 7px 5px 5px !important;
    }
    .elementor-element-bd7309c .banner-text h6.animate-circle-scale span {
        font-size: 12px !important;
    }

    /* About-section feature boxes (home + About page): keep the icon and the
       title on the SAME row, just vertically centred. The flaticon glyph sits
       ~4px high inside its box, so nudge it down to line up with the title.
       IDs shared across AR + EN. */
    .elementor-element-51463d4 .featured-item.style-3,
    .elementor-element-c08fd8f .featured-item.style-3 {
        align-items: center !important;
    }
    .elementor-element-51463d4 .featured-item.style-3 .featured-icon,
    .elementor-element-c08fd8f .featured-item.style-3 .featured-icon {
        margin-bottom: 0 !important;   /* theme's 25px bottom margin was shoving the icon up */
    }
}

/* ==========================================================
   Project single pages — meta card ("تفاصيل المشروع") list.
   ========================================================== */
.bs-proj-meta { list-style: none; margin: 6px 0 0; padding: 0; }
.bs-proj-meta li { padding: 10px 0; border-bottom: 1px solid #e6e8ec; font-size: 15px; line-height: 1.6; }
.bs-proj-meta li:last-child { border-bottom: none; }
.bs-proj-meta .bs-meta-k { font-weight: 700; color: var(--themeht-bg-dark-color); }
.bs-proj-meta .bs-meta-v { color: #5a6472; }
.bs-proj-metacard { align-self: flex-start; }

/* ==========================================================
   v1.5.119 — Remove italic everywhere text appears (user request).
   Theme sets italic on section eyebrows (.title-sub), GSAP split
   words (.word), blockquotes, testimonials and the CEO quote.
   ========================================================== */
.title-sub, .word,
blockquote, blockquote p,
.theme-blockquote, .theme-blockquote *,
.elementor-widget-theme-blockquote, .elementor-widget-theme-blockquote *,
.elementor-element-843df1b p,
[class*="testimonial"] p, [class*="testimonial"] .testimonial-desc,
.ht-testimonial p, .ht-testimonial-marquee p,
.elementor-widget-text-editor em, .entry-content em, em, i.fst-italic {
    font-style: normal !important;
}

/* ==========================================================
   v1.5.120 — Legal pages (Privacy #3/#17144, Terms #17002/#17145):
   align policy text to the reading side (right AR / left EN) for
   readability instead of centered.
   ========================================================== */
.page-id-3, .page-id-17002, .page-id-17144, .page-id-17145 { }
.page-id-3 .elementor-widget-text-editor, .page-id-3 .elementor-widget-themeht-heading .title, .page-id-3 .elementor-widget-themeht-heading h1, .page-id-3 .elementor-widget-themeht-heading h2, .page-id-3 .elementor-widget-themeht-heading h3,
.page-id-17002 .elementor-widget-text-editor, .page-id-17002 .elementor-widget-themeht-heading .title, .page-id-17002 .elementor-widget-themeht-heading h1, .page-id-17002 .elementor-widget-themeht-heading h2, .page-id-17002 .elementor-widget-themeht-heading h3,
.page-id-17144 .elementor-widget-text-editor, .page-id-17144 .elementor-widget-themeht-heading .title, .page-id-17144 .elementor-widget-themeht-heading h1, .page-id-17144 .elementor-widget-themeht-heading h2, .page-id-17144 .elementor-widget-themeht-heading h3,
.page-id-17145 .elementor-widget-text-editor, .page-id-17145 .elementor-widget-themeht-heading .title, .page-id-17145 .elementor-widget-themeht-heading h1, .page-id-17145 .elementor-widget-themeht-heading h2, .page-id-17145 .elementor-widget-themeht-heading h3 {
    text-align: start !important;
}
.page-id-3 .elementor-widget-text-editor p, .page-id-17002 .elementor-widget-text-editor p,
.page-id-17144 .elementor-widget-text-editor p, .page-id-17145 .elementor-widget-text-editor p { text-align: start !important; }

/* ==========================================================
   v1.5.122 — تعديلات شريف (batch)
   ========================================================== */
/* 17) AR phone hero images mirrored (like the AR laptop version) — 9 slides (2026-09-29) */
@media (max-width:767px){
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="0"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-01-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="1"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-02-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="2"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-03-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="3"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-04-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="4"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-05-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="5"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-06-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="6"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-07-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="7"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-08-ar-v2.jpg')!important; }
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="8"] .slider-img{ background-image:url('https://buildsafex.com/wp-content/uploads/2026/09/bs-hero-m-09-ar-v2.jpg')!important; }
}
/* 42) EN hero "Build Safe" badge on ONE line */
body:not(.rtl) .banner-slider .banner-content h6{ white-space:nowrap!important; }
@media (max-width:479px){ body:not(.rtl) .banner-slider .banner-content h6{ font-size:11px!important; } }
/* 36) EN "Client Testimonials" heading on ONE line (title is an <h2> at 150px). */
body:not(.rtl) .elementor-element-8cefe2b h1, body:not(.rtl) .elementor-element-8cefe2b h2,
body:not(.rtl) .elementor-element-8cefe2b h3, body:not(.rtl) .elementor-element-8cefe2b .elementor-heading-title{
    white-space:nowrap!important; font-size:70px!important; line-height:1.15!important;
}
@media (max-width:991px){ body:not(.rtl) .elementor-element-8cefe2b h1, body:not(.rtl) .elementor-element-8cefe2b h2, body:not(.rtl) .elementor-element-8cefe2b h3, body:not(.rtl) .elementor-element-8cefe2b .elementor-heading-title{ font-size:44px!important; } }
@media (max-width:575px){ body:not(.rtl) .elementor-element-8cefe2b h1, body:not(.rtl) .elementor-element-8cefe2b h2, body:not(.rtl) .elementor-element-8cefe2b h3, body:not(.rtl) .elementor-element-8cefe2b .elementor-heading-title{ font-size:28px!important; } }
/* 23) Footer social icons: one row, slightly smaller, on phones (both langs) */
@media (max-width:767px){
  .elementor-element-d0a0fb6 ul{ display:flex!important; flex-wrap:nowrap!important; justify-content:center!important; gap:8px!important; }
  .elementor-element-d0a0fb6 ul li{ margin:0!important; }
  .elementor-element-d0a0fb6 ul li a{ width:34px!important; height:34px!important; line-height:34px!important; font-size:13px!important; }
}
/* 27) EN preloader: green spinner on the LEFT (like AR) */
body:not(.rtl) #ht-preloader .loader-wrapper{ flex-direction:row-reverse!important; }
/* 28) EN desktop hero nav: arrows point OUTWARD and the BOTTOM (down) button is
   "next", the TOP (up) button is "prev". The pill is rotated -90deg, so the
   rightmost slot (right:10px) ends up on top. */
@media (min-width:768px){
  body:not(.rtl) .banner-slider .banner-swiper-buttons .swiper-button-next{ right:62px!important; left:auto!important; }
  body:not(.rtl) .banner-slider .banner-swiper-buttons .swiper-button-prev{ right:10px!important; left:auto!important; }
  body:not(.rtl) .banner-slider .banner-swiper-buttons .swiper-button-next::after{ transform:rotate(180deg)!important; }
  body:not(.rtl) .banner-slider .banner-swiper-buttons .swiper-button-prev::after{ transform:none!important; }
}
/* 30) Phone hero nav (both langs): RIGHT button (→) = next, LEFT button (←) = back. */
@media (max-width:767px){
  .banner-slider .banner-swiper-buttons .swiper-button-next{ right:10px!important; left:auto!important; }
  .banner-slider .banner-swiper-buttons .swiper-button-prev{ right:62px!important; left:auto!important; }
  .banner-slider .banner-swiper-buttons .swiper-button-next::after{ transform:none!important; }
  .banner-slider .banner-swiper-buttons .swiper-button-prev::after{ transform:rotate(180deg)!important; }
}
/* 21) CEO "director's word" card stuck to the bottom of the image */
.elementor-element-b461b17 > .e-con-inner{ align-items:flex-end!important; }
/* 18-19) AR hero: break "تحمي استثمارك / وتبني رؤيتك" onto two lines on phones.
   The title field is escaped (no HTML), so we store a real newline and reveal it
   only on phones via white-space:pre-line (desktop collapses it to a space). */
@media (max-width:767px){ .banner-slider .banner-content .title-text{ white-space:pre-line!important; } }

/* ==========================================================
   v1.5.124 — Floating WhatsApp button replaces the back-to-top arrow
   ========================================================== */
.scroll-top{ display:none !important; }
/* Floating WhatsApp on the LEFT for BOTH languages (user request). */
.bs-wa-float{ position:fixed; left:28px; right:auto; bottom:28px; z-index:10050; width:56px; height:56px; border-radius:50%; background:#25D366; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 22px rgba(37,211,102,.45); transition:transform .2s ease, box-shadow .2s ease; }
.bs-wa-float:hover{ transform:scale(1.08); box-shadow:0 10px 26px rgba(37,211,102,.6); }
.bs-wa-float svg{ width:32px; height:32px; fill:#fff; }
@media (max-width:767px){ .bs-wa-float{ width:52px; height:52px; left:16px; right:auto; bottom:16px; } .bs-wa-float svg{ width:29px; height:29px; } }

/* ==========================================================
   v1.5.128 — تعديلات شريف (round 3)
   ========================================================== */
/* F) EN "Why Build Safe" image same size as AR (~640x517). EN column is shorter
   because English text is shorter, cropping the image to ~360; pin it to match. */
@media (min-width:992px){
  body:not(.rtl) .elementor-element-874cef8 img{ height:517px !important; width:100% !important; object-fit:cover !important; }
}
/* K) EN blog category badge was wrapping and breaking its pill — keep one line. */
.post-card .cat-links, .post-card .cat-links a{ white-space:nowrap !important; }
.post-card .cat-links a{ font-size:11px !important; letter-spacing:.2px !important; }

/* ==========================================================
   v1.5.132 — Hero: 9 new slides (2026-09-29). Headlines are longer than
   the old 4-slide copy, so scale the display type down one step per
   breakpoint to keep each headline to ~2 lines (AR + EN).
   ========================================================== */
.banner-slider .banner-content .hero-heading,
.banner-slider .banner-content .title-text { font-size: 50px !important; }
@media (max-width: 1366px) {
  .banner-slider .banner-content .hero-heading,
  .banner-slider .banner-content .title-text { font-size: 42px !important; }
}
@media (max-width: 1024px) {
  .banner-slider .banner-content .hero-heading,
  .banner-slider .banner-content .title-text { font-size: 36px !important; }
}
@media (max-width: 767px) {
  .banner-slider .banner-content .hero-heading,
  .banner-slider .banner-content .title-text { font-size: 27px !important; }
}
/* wider text column on large screens so the longer headlines sit on ~2 lines */
@media (min-width: 1200px) {
  .banner-slider .banner-content { width: 55% !important; }
}

/* v1.5.137 — AR hero headlines with editor-set line breaks (slides 2,3,4,8,9 store
   the whole headline in list_title2 with real newlines). Honour those breaks only on
   laptop/desktop; on tablet/phone let the headline flow naturally. Overrides the
   older global/mobile `pre-line` rules. */
.banner-slider .banner-content .title-text { white-space: normal !important; }
@media (min-width: 1025px) {
  .banner-slider .banner-content .title-text { white-space: pre-line !important; }
}

/* ==========================================================
   v1.5.139 — EN fixes
   ========================================================== */
/* EN heading accents ("20 years", "for every stage of your project", ...): the theme
   sets the decorative Playfair serif on .title-sub. Use the heading's own font
   (TASA Orbiter) and weight instead; colour stays the theme accent. (AR already
   falls back to the Arabic font because Playfair has no Arabic glyphs.) */
body:not(.rtl) .title-sub,
body:not(.rtl) .title-sub .word,
body:not(.rtl) .title-sub .char { font-family: inherit !important; font-weight: inherit !important; }

/* EN blog cards: author on the LEFT, category badge on the RIGHT, one row (mirror of AR). */
body:not(.rtl) .post-card ul.post-bottom:not(.post-shape-area) {
  display: flex !important; justify-content: space-between !important; align-items: center !important;
  flex-wrap: nowrap !important; gap: 10px; width: 100%; padding: 0 !important; margin: 28px 0 0 !important;
}
body:not(.rtl) .post-card ul.post-bottom:not(.post-shape-area) li { margin: 0 !important; padding: 0 !important; }
/* smaller EN badge so it fits beside the author name */
body:not(.rtl) .post-card .cat-links a { font-size: 10px !important; padding: 5px 11px !important; letter-spacing: 0 !important; }

/* ==========================================================
   v1.5.140 — Phone/tablet header: language button beside the menu button.
   The theme shows the hamburger (#menu-toggle) at <=1200px. functions.php moves
   #bs-lang-btn just before it and tags their container .bs-has-lang.
   ========================================================== */
.bs-lang-btn { display: none; }
@media (max-width: 1200px) {
  .bs-has-lang { display: flex !important; align-items: center; justify-content: flex-end; gap: 8px; }
  .bs-has-lang > .navigation-top { flex: 0 0 0 !important; width: 0 !important; min-width: 0 !important; }
  .bs-has-lang > #menu-toggle { margin: 0 !important; flex: 0 0 auto; }
  .bs-lang-btn.is-placed {
    display: inline-flex; align-items: center; justify-content: center; gap: 5px; flex: 0 0 auto;
    align-self: stretch; min-height: 44px; min-width: 44px; padding: 0 10px; box-sizing: border-box; /* same height as the hamburger (44px phone, 52px tablet) */
    border: 1px solid var(--themeht-primary-color); border-radius: 8px;
    background: var(--themeht-white-color); color: var(--themeht-primary-color);
    font-size: 15px; font-weight: 700; line-height: 1; text-decoration: none;
    transition: background .2s ease, color .2s ease;
  }
  .bs-lang-btn.is-placed svg { width: 18px; height: 18px; fill: currentColor; flex: 0 0 auto; }
  .bs-lang-btn.is-placed span[lang], .bs-lang-btn.is-placed[lang="ar"] span { font-family: 'Cairo', sans-serif; font-size: 17px; }
  .bs-lang-btn.is-placed:hover, .bs-lang-btn.is-placed:focus-visible { background: var(--themeht-primary-color); color: var(--themeht-white-color); }
}

/* ==========================================================
   v1.5.142 — hero tweaks
   ========================================================== */
/* AR slides 6 & 7: their stored line breaks are the PHONE layout (user-specified).
   On laptop/desktop let them flow naturally; on phone honour the breaks. */
@media (min-width: 1025px) {
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="5"] .title-text,
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="6"] .title-text { white-space: normal !important; }
}
@media (max-width: 767px) {
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="5"] .title-text,
  .rtl .banner-slider .swiper-slide[data-swiper-slide-index="6"] .title-text { white-space: pre-line !important; }
}
/* EN "BUILD SAFE / ENGINEERING CONSULTANCY" badge a bit smaller */
body:not(.rtl) .banner-slider .banner-content h6 { font-size: 10px !important; letter-spacing: 1px !important; padding: 4px 6px 4px 4px !important; }
body:not(.rtl) .banner-slider .banner-content h6 span { font-size: 11px !important; }
/* EN slides 2 & 8 ("Request Engineering Supervision"): narrower button */
body:not(.rtl) .banner-slider .swiper-slide[data-swiper-slide-index="1"] .banner-btn .themeht-btn,
body:not(.rtl) .banner-slider .swiper-slide[data-swiper-slide-index="7"] .banner-btn .themeht-btn { padding-left: 16px !important; gap: 10px !important; }
body:not(.rtl) .banner-slider .swiper-slide[data-swiper-slide-index="1"] .banner-btn .btn-text,
body:not(.rtl) .banner-slider .swiper-slide[data-swiper-slide-index="7"] .banner-btn .btn-text { font-size: 14px !important; }

/* ==========================================================
   v1.5.143 — Phone hero legibility (both langs): on phones the text block covers
   the slide from ~1/3 down, so swap the side-to-side overlay for a VERTICAL scrim:
   near-clear at the top (faces / skyline stay bright), darkening through the
   headline, description and button area. (User choice over a flat full overlay.)
   ========================================================== */
@media (max-width: 767px) {
  .banner-slider .slider-overlay,
  .rtl .banner-slider .slider-overlay {
    background: linear-gradient(180deg,
      rgba(0, 26, 30, .08) 0%,
      rgba(0, 26, 30, .28) 20%,
      rgba(0, 26, 30, .60) 40%,
      rgba(0, 26, 30, .74) 65%,
      rgba(0, 26, 30, .82) 100%) !important;
  }
}

/* ==========================================================
   v1.5.144 — Testimonials on PHONES: one-card slider (see functions.php).
   The marquee's continuous scroll is switched off; each card fills the
   phone width (20px gutters), the row slides one card every 5s.
   ========================================================== */
.bs-tdots { display: none; }
@media (max-width: 767px) {
  .bs-tslider.marquee-wrap { width: calc(100% + 40px) !important; margin-left: -20px !important; margin-right: -20px !important; overflow: hidden !important; }
  .bs-tslider .marquee-inner {
    animation: none !important; display: flex !important; width: 100% !important; gap: 0 !important;
    align-items: stretch; transition: transform .6s ease; will-change: transform;
  }
  .bs-tslider .marquee-inner > .testimonial {
    flex: 0 0 100% !important; width: 100% !important; min-width: 0 !important; max-width: 100% !important;
    box-sizing: border-box; margin: 20px 0 !important;
  }
  .bs-tslider .marquee-inner > .testimonial.bs-dup { display: none !important; }
  /* Arabic: lay the slider row out right-to-left so the next card comes from the left (reading direction) and matches the RTL dots */
  .rtl .bs-tslider .marquee-inner { direction: rtl !important; }
  .bs-tdots { display: flex; justify-content: center; gap: 8px; margin-top: 6px; }
  .bs-tdots button {
    width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%;
    background: rgba(18, 33, 80, .22); cursor: pointer; transition: width .3s ease, background .3s ease;
  }
  .bs-tdots button.is-active { width: 22px; border-radius: 5px; background: var(--themeht-primary-color); }
}

/* v1.5.146 — CEO section moved to be the 2nd section (right under the hero slider).
   Give it a little breathing room so the slider's rounded corners and its white
   arrow tab end on white, not directly on the director photo. */
/* 100px white space above it (user choice), and rounded corners matching the hero
   slider (its container 89847d3 uses a 30px radius on all corners). overflow:hidden
   clips the director photo to the rounded shape. */
.elementor-element-b461b17 { margin-top: 50px !important; border-radius: 30px !important; overflow: hidden !important; }   /* gap halved 100 -> 50 (user) */
/* Phone: the white text card fills the bottom of the section and blends into the white
   page. The section clips overflow (rounded corners), so the shadow goes on the section
   itself - it shows under the card's bottom edge. */
@media (max-width: 767px) {
  .elementor-element-b461b17 { box-shadow: 0 16px 34px -8px rgba(18, 33, 80, .22) !important; margin-bottom: 20px !important; }
}
/* About section ("من نحن"): when it stacks (<=1024px) show the IMAGE first, then the text. */
@media (max-width: 1024px) {
  .elementor-element-3425d13 { order: -1 !important; margin-top: 0 !important; margin-bottom: 40px !important; }  /* its 40px tablet top-margin was for sitting under the text */
}

/* v1.5.147 — Footer phone widget (#55224cd) now holds 2 numbers (main + consultations).
   Its items are inline-flex (side by side) by default, which pushed the 2nd number out of
   the column; stack them like the address / email lines above. */
.elementor-element-55224cd ul.contact-info > li { display: flex !important; width: 100%; }

/* ==========================================================
   v1.5.153 — Phone: bigger project + blog cards, EN blog meta stacked
   ========================================================== */
@media (max-width: 767px) {
  /* Projects (home fc5f41c + projects page 7a28515) and blog cards (home 23eae68 +
     blog page 4caa52a): span the screen with 20px side gutters instead of ~40px.
     Sized from the viewport so it is identical whatever the parent padding is. */
  .elementor-element-fc5f41c, .elementor-element-7a28515,
  .elementor-element-23eae68, .elementor-element-4caa52a {
    width: calc(100vw - 40px) !important; max-width: none !important;
    margin-left: calc((100% - 100vw + 40px) / 2) !important;
    margin-right: calc((100% - 100vw + 40px) / 2) !important;
  }
  /* EN blog cards: author on one line, category badge on the line below */
  body:not(.rtl) .post-card ul.post-bottom:not(.post-shape-area) {
    flex-direction: column !important; align-items: flex-start !important; gap: 10px !important;
  }
  /* ...and the badge (2nd line) sits on the RIGHT */
  body:not(.rtl) .post-card ul.post-bottom:not(.post-shape-area) > li:last-child { align-self: flex-end !important; }
}
