/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team - Othman El Basiri
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.1
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

html,
body {
  scroll-padding-top: 120px;
}
#desktop-hero-video::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0);
  border : 15px solid white;
  z-index: 1;  
}
.elementor-element-efbecc9{
  position: relative;
  z-index: 2;
}
/* Global responsive tables */
table {
  display: block;
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  white-space: nowrap;
}

/* Keep normal table layout */
table tbody,
table thead,
table tr {
  white-space: normal;
}

h1, h2, h3, em{
  font-family: "Nohemi", Sans-serif !important ;
  word-break: break-word;
}
h2{
  font-family: "Nohemi", Sans-serif ;
 font-weight: 600;
}
h2::before {
  content: "/ ";
  /* margin-right: 5px; */
}

* {
  scrollbar-color: #eb6739 transparent;
  scrollbar-width: thin;
  -webkit-tap-highlight-color: transparent;
}
*::-webkit-scrollbar {
  width: 8px;
}
*::-webkit-scrollbar-track {
  background: transparent;
}
*::-webkit-scrollbar-thumb {
  background-color: #eb6739;
  border-radius: 10px;
}
.elementor-element a,
.elementor-element p,
.elementor-element em,
.elementor-element strong,
.elementor-element li {
  word-break: break-word;
}
.elementor-element fieldset {
  border: none;
  
}
.elementor-widget-theme-post-content h2 {
  text-wrap: pretty;
}

.elementor-element mark {
  background: transparent !important;
  color: #012d48 !important;
}
h2.wp-block-heading,h3.wp-block-heading ,h4.wp-block-heading, h5.wp-block-heading, h6.wp-block-heading {
  font-family: "Nohemi", Sans-serif;
  font-weight: 600;
  color: #012d48 !important;
  text-wrap: pretty;
}
.elementor-element .has-luminous-vivid-amber-color {
  color: #012d48 !important;
}
.webinar-link-btn {
  padding: 1rem 40px;
  background-color: #012d48;
  border-radius: 100px;
  color: white;
  text-align: center;
  margin-inline: auto;
  display: block;
  width: fit-content;
}
.webinar-link-btn:hover {
  color: white;
}

.single-news figure.wp-block-gallery.has-nested-images{
  display: flex;
  flex-wrap: wrap;
}


.card-selected {
    border-top: 5px solid #EC6839 !important;
    background-image: linear-gradient(180deg, #F4F6F8 0%, #FFFFFF 100%);
    box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.05) !important;
}
.card-selected h2,
.card-selected h3,
.card-selected span{
    color: #EC6839 !important;
}
/* ==========================================================================
   TOC EMPTY-BULLET FAIL-SAFE
   Hides ghost items the instant the page paints, before the JS sweep runs.
   :has() catches structurally-empty anchors (most ghost bullets).
   .gfi-toc-empty is added by the JS sweep for whitespace/NBSP-only cases.
   ========================================================================== */
.elementor-toc__list-item:has(> a:empty),
.elementor-toc__list-item:has(> .elementor-toc__list-item-text:empty),
.elementor-toc__list-item:has(> a:not(:has(img)):not(:has(svg)):empty),
.elementor-toc__list-item.gfi-toc-empty {
  display: none !important;
}

/* Hide the whole TOC widget when no valid titles remain (covers both: all
   bullets stripped by the JS sweep, and Elementor's "no headings found"
   fallback state). Same rule applies to every CPT — articles included —
   because `is_singular()` enqueues the sweep on every single template. */
.elementor-widget-table-of-contents.gfi-toc-empty-block {
  display: none !important;
}

/* ==========================================================================
   NO-FLASH TOC: keep the TOC block (its dedicated container) INVISIBLE before
   first paint, so an empty TOC never appears while Elementor builds the list
   client-side. We use `visibility:hidden` — NOT `display:none` — on purpose:
   the box stays in the layout, so Elementor's built-in sticky measures the
   widget's correct position. (display:none gave sticky a 0x0 box at 0,0, which
   pinned the TOC to the top-left over the hero on some loads.)

   The script in functions.php adds .gfi-toc-visible once it confirms real
   items (→ reveal in place), or .gfi-toc-empty-hide when there are none
   (→ collapse the block away entirely).

   `> ` scopes this to the container that DIRECTLY wraps the TOC widget
   (Elementor flex containers hold widgets as direct children), never its
   ancestors — so it can't hide the article column by mistake.
   ========================================================================== */
.e-con:has(> .elementor-widget-table-of-contents):not(.gfi-toc-visible) {
  visibility: hidden;
}
.e-con:has(> .elementor-widget-table-of-contents).gfi-toc-empty-hide {
  display: none !important;
}

/* ==========================================================================
   WEBINAR HERO META ROW — collapse the empty Expertise container
   When a webinar has no Expertise term, the Post Info (terms) widget outputs
   nothing, but Elementor still leaves its flex container in place. The row's
   gap then pushes the date away from the start. Hide any child container that
   has no element children so the date sits flush to the start of the row.
   :not(:has(*)) is used instead of :empty because the empty container still
   holds whitespace text nodes, which :empty does not match.
   ========================================================================== */
.elementor-element-0bf1c78 > .e-con:not(:has(*)) {
  display: none !important;
}

/* Carrousels figés (moins de slides que de slides visibles) : on masque
   les flèches de navigation et la pagination, devenues inutiles.
   La classe .no-swipe est posée par assets/js/carousel-no-swipe.js. */
.swiper.no-swipe .elementor-swiper-button,
.swiper-container.no-swipe .elementor-swiper-button,
.swiper.no-swipe .swiper-button-next,
.swiper.no-swipe .swiper-button-prev,
.swiper-container.no-swipe .swiper-button-next,
.swiper-container.no-swipe .swiper-button-prev,
.swiper.no-swipe .swiper-pagination,
.swiper-container.no-swipe .swiper-pagination {
  display: none !important;
}
/* ==========================================================================
   CASE STUDY CONTENT — post_content formatting
   ========================================================================== */

/* Padding right on columns and content blocks */
.entry-content .wp-block-columns,
.entry-content .wp-block-column {
  padding-right: 20px;
}

/* Links in case study content — inherit theme orange color, no forced style */
.entry-content a {
  color: inherit;
}

/* ==========================================================================
   CASE STUDY CONTENT — corrections v2
   ========================================================================== */

/* Padding entre les blocs de contenu */
.entry-content .wp-block-columns {
  gap: 20px;
  padding-bottom: 16px;
}
.entry-content .wp-block-column {
  padding-right: 20px;
}
.entry-content figure.wp-block-image {
  margin-bottom: 16px;
}
.entry-content figure.wp-block-image img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Liens dans le contenu — couleur orange du thème, pas de bouton dark */
.entry-content p > a,
.entry-content li > a {
  color: #ff6b35;
  text-decoration: none;
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  font-size: inherit !important;
  font-weight: inherit !important;
}
.entry-content p > a:hover,
.entry-content li > a:hover {
  text-decoration: underline;
  color: #ff6b35;
}

/* Liste propre */
.entry-content ul {
  padding-left: 24px;
  margin-bottom: 16px;
}
.entry-content ul li {
  margin-bottom: 6px;
}

/* ==========================================================================
   HEADER CONTRAST AUTO-SWITCH
   La classe .is-on-dark est posée par assets/js/header-contrast.js quand le
   fond derrière le header glass est sombre -> menu lisible (texte blanc).
   ========================================================================== */
.elementor-location-header .elementor-item {
  transition: color 0.25s ease;
}
.elementor-location-header.is-on-dark
  .elementor-widget-nav-menu
  .elementor-nav-menu--main
  .elementor-item,
  #rs-panel #rs-header p.is-on-dark,
  .elementor-location-header.is-on-dark
  .ue-nav-menu-mobile-wrapper
  .ue-nav-menu-mobile .fa-bars::before  {
  color: #ffffff !important;
}
.elementor-location-header.is-on-dark
  .elementor-widget-nav-menu
  .elementor-nav-menu--main
  .elementor-item:hover,
  .elementor-location-header.is-on-dark
  .ue-nav-menu-mobile-wrapper
  .ue-nav-menu-mobile .fa-bars::before:hover {
  color: #ffffff !important;
}
.elementor-location-header.is-on-dark a img {
  filter: invert(100%) sepia(0%) saturate(0%) hue-rotate(201deg)
    brightness(105%) contrast(105%);
}
.elementor-location-header.is-on-dark .uc-active a img {
  filter: none;
}
.elementor-location-header.is-on-dark
  .elementor-widget-nav-menu
  .elementor-nav-menu--main
  .sub-arrow{
      filter: brightness(0) saturate(100%) invert(100%) sepia(0%)
}

/* GFI Globe : le doigt fait tourner le globe sans scroller la page (home, about-us, contact). */
[data-gfi="globe-wrap"],
[data-gfi="canvas-mount"]{
  touch-action: none;
}



.grid-image-animation .guide-mosaic-grid {
    transform: translateZ(0) !important;
    -webkit-mask-image: -webkit-radial-gradient(white, black) !important;
    isolation: isolate !important;
}
