/* =========================================================================
   HeroFX - Menu v4 + Buscador - HOJA DE ESTILOS COMPLETA
   Pegar AL FINAL de:  astra-child/style.css
   (Reemplaza cualquier bloque anterior de 'HeroFX Menu V4' que ya tengas.)
   Extraido del header-ALL-IN-ONE (mismo de Elementor) -> 100% sincronizado.
   Incluye los iconos de lupa/X por CSS mask (a prueba de WordPress/KSES).
   ========================================================================= */

/* ===== 1) MENU V4 ===== */
/* ==================================================================
   HEROFX MENU V4 ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ START
   Pegado al final de astra-child/style.css
   ==================================================================
   IMPORTANTE: este bloque se a‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±ade AL FINAL del archivo existente.
   No borrar lo que ya hay arriba (header del child theme).
   ================================================================== */

/* ==================================================================
   FONT SCOPE ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ uses Gilroy (consistent with the rest of the site).
   The !important here mirrors the child theme's existing pattern so
   any global rule pointing to a different font won't override us.
   Available Gilroy weights: 400 (regular), 600 (semibold), 700 (bold).
   ================================================================== */
.header-wrap,
.header-wrap *,
.mobile-panel,
.mobile-panel *,
.site-footer,
.site-footer *,
.dropdown,
.dropdown * {
  font-family: 'Gilroy', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
}


/* ============================================================
     HeroFX ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Menu v4 Prototype
     Brand palette:
       --brand-blue: #0C3DEF
       --brand-navy: #0D1754
       --brand-cyan: #42E5FE
     ============================================================ */
  :root {
    --brand-blue: #0C3DEF;
    --brand-navy: #0D1754;
    --brand-cyan: #42E5FE;
    --bg-deep: #050A2A;

    --white: #FFFFFF;

    /* DARK theme tokens (for body/page content) */
    --text-2: rgba(255, 255, 255, 0.72);
    --text-3: rgba(255, 255, 255, 0.48);
    --border: rgba(255, 255, 255, 0.08);
    --border-strong: rgba(255, 255, 255, 0.14);

    /* LIGHT theme tokens (for header + dropdowns + mobile panel) */
    --light-bg: rgba(255, 255, 255, 0.72);
    --light-bg-strong: rgba(255, 255, 255, 0.88);
    --light-border: rgba(13, 23, 84, 0.08);
    --light-border-strong: rgba(13, 23, 84, 0.14);
    --light-text-1: #0D1754;          /* primary text on white */
    --light-text-2: rgba(13, 23, 84, 0.72);
    --light-text-3: rgba(13, 23, 84, 0.5);
    --light-hover-bg: rgba(12, 61, 239, 0.06);

    --header-h: 76px;
    --header-h-condensed: 64px;
    --radius-lg: 18px;
    --radius-md: 12px;
    --radius-sm: 10px;
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
  }

  /* NOTE: NO global html/body styles ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ el sitio WordPress ya gestiona
     fondo, fuente y color por p‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™gina. Si forzamos algo aqu‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†, se pinta
     el blog y otras p‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ginas de azul. El font-family ya est‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ scope'd
     en .header-wrap/.header-wrap * arriba, suficiente para el men‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†¬¨¬®¬¨‚Ä¢. */

  .header-wrap *,
  .mobile-panel * { box-sizing: border-box; }
  /* Kill underlines on every link in the menu system. WP 6.x ships an
     inline rule `a:where(:not(.wp-element-button)) { text-decoration: underline }`
     that has zero specificity but wins via cascade order. The dropdowns
     (.dropdown.dd-*) render OUTSIDE .header-wrap (directly under <body>)
     so we can't rely on that ancestor scope ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ we list them explicitly.
     `!important` is the only thing that beats the WP `:where()` rule
     reliably across themes/plugins. */
  .header-wrap a,
  .header-wrap a:hover,
  .header-wrap a:visited,
  .mobile-panel a,
  .mobile-panel a:hover,
  .mobile-panel a:visited,
  .dropdown a,
  .dropdown a:hover,
  .dropdown a:visited,
  .dropdown .menu-card,
  .dropdown .featured-card,
  .dropdown .featured,
  .dropdown .platform-pill {
    color: inherit;
    text-decoration: none !important;
  }
  .header-wrap button,
  .mobile-panel button { font-family: inherit; cursor: pointer; }

  /* ============================================================
     HEADER ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ floating glassmorphism
     ============================================================ */
  .header-wrap {
    position: fixed;
    top: 14px;
    left: 0;
    right: 0;
    z-index: 1000;
    display: flex;
    justify-content: center;
    pointer-events: none;
    /* No transition AT ALL on the wrap. Safari has to recompute the
       `backdrop-filter: blur(16px)` on `.header` for every animation
       frame ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ even with `transform`, this is brutally expensive when
       the hero behind it has 5+ blur layers. Instant snap = zero jank.
       The `top` shift (14‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚Äö√†¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö¬¢‚Äö√Ñ‚Ä†8px) is small enough that the user reads it
       as "the header settled" rather than missing-an-animation. */
    transform: translate3d(0, 0, 0);
    will-change: transform;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
  }
  .header-wrap.scrolled { transform: translate3d(0, -6px, 0); }

  /* OUTER wrapper ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ subtle glass halo (thin frame around 4 sides) */
  .header {
    pointer-events: auto;
    position: relative;
    width: min(1240px, calc(100% - 32px));
    padding: 3px;
    border-radius: 16px;
    background:
      linear-gradient(135deg,
        rgba(255, 255, 255, 0.4) 0%,
        rgba(255, 255, 255, 0.25) 50%,
        rgba(255, 255, 255, 0.4) 100%);
    backdrop-filter: blur(16px) saturate(170%);
    -webkit-backdrop-filter: blur(16px) saturate(170%);
    border: 1px solid rgba(255, 255, 255, 0.35);
    box-shadow:
      0 1px 0 0 rgba(255, 255, 255, 0.5) inset,
      0 8px 24px -10px rgba(13, 23, 84, 0.18);
    /* No `padding` transition ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ instant snap, no layout reflow. */
  }

  /* INNER white menu ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ solid #FFFFFF */
  .header-inner {
    position: relative;
    height: var(--header-h);
    display: flex;
    align-items: center;
    padding: 0 18px;
    background: #FFFFFF;
    border-radius: 13px;
    /* No `height` transition ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ animating height triggers a full layout
       reflow on every frame which JANKS the entire page on scroll. The
       `top` slide-up gives a perceived smoothness; the size delta is
       small enough that an instant snap reads fine. */
  }
  .header-wrap.scrolled .header-inner { height: var(--header-h-condensed); }

  /* Logo ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ robust click target. cursor:pointer forced (some browsers
     fall back to text I-beam over <a> children). pointer-events:none
     on the img makes the WHOLE link area clickable as one unit. */
  .logo {
    display: inline-flex;
    align-items: center;
    margin-right: 28px;
    cursor: pointer;
    user-select: none;
    -webkit-user-drag: none;
    -webkit-tap-highlight-color: transparent;
    z-index: 5; /* keep above any overlapping dropdown chrome */
    position: relative;
  }
  .logo img {
    height: 28px;
    width: auto;
    display: block;
    pointer-events: none;        /* clicks pass through to <a> */
    user-select: none;
    -webkit-user-drag: none;
    /* No `height` transition ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ same reason as .header-inner: avoids
       layout reflow on every scroll-frame. */
  }
  .header-wrap.scrolled .logo img { height: 24px; }
  .mobile-header .logo img { height: 26px; }

  /* Top-level nav */
  .nav {
    display: flex;
    align-items: center;
    gap: 4px;
    flex: 1;
  }
  .nav-item {
    position: relative;
  }
  .nav-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    /* button reset */
    background: transparent;
    border: 0;
    font-family: inherit;
    color: var(--light-text-2);
    font-size: 14px;
    font-weight: 600;
    border-radius: 10px;
    transition: color 0.2s, background 0.2s;
    cursor: pointer;
    user-select: none;
  }
  .nav-link:focus { outline: none; }
  .nav-link:focus-visible {
    outline: 2px solid var(--brand-blue);
    outline-offset: 2px;
  }
  .nav-link:hover,
  .nav-item.is-open .nav-link {
    color: var(--brand-blue);
    background: var(--light-hover-bg);
  }
  .nav-link .chev {
    width: 14px;
    height: 14px;
    transition: transform 0.3s var(--ease);
  }
  .nav-item.is-open .chev { transform: rotate(180deg); }

  /* Right cluster */
  .header-right {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
  }

  /* WPML language switcher ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ styled to match herofx pill style.
     CSS targets WPML's default class names so it works in WordPress too. */
  .lang { position: relative; }
  .lang > ul,
  .lang ul.wpml-ls-sub-menu {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .lang > ul > li {
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
  }
  /* Lang switcher trigger ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ sin border ni "box". Match al treatment
     visual de los nav-links (Platforms, Trading, etc.) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ solo padding
     ligero y border-radius para el hover, NADA en idle. As‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä† no compite
     con Login/Register que S‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬∫ son botones reales. */
  .lang-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: transparent;
    border: 0;
    color: var(--light-text-2);
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.2s, color 0.2s;
  }
  .lang-btn:hover {
    color: var(--brand-blue);
    background: var(--light-hover-bg);
  }
  /* WPML: when WordPress + WPML renders the switcher with its native
     output (no .lang-btn class, just .wpml-ls-link), apply identical
     styling to the CURRENT-language link. */
  .wpml-ls-current-language > .wpml-ls-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: transparent;
    border: 0;
    color: var(--light-text-2);
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s;
  }
  .wpml-ls-current-language > .wpml-ls-link:hover {
    color: var(--brand-blue);
    background: var(--light-hover-bg);
  }
  /* Auto-injected chevron after the current language (when WPML output
     omits one). Hidden in our prototype because we already include
     <i class="wpml-ls-chev"> inline. */
  .wpml-ls-current-language > .wpml-ls-link:not(:has(.wpml-ls-chev))::after {
    content: "";
    width: 12px;
    height: 12px;
    margin-left: 2px;
    background: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 24 24\' fill=\'none\' stroke=\'%230D1754\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-linejoin=\'round\'><polyline points=\'6,9 12,15 18,9\'/></svg>") no-repeat center / contain;
    transition: transform 0.2s;
  }
  .lang.is-open .wpml-ls-current-language > .wpml-ls-link::after {
    transform: rotate(180deg);
  }
  /* === Real SVG flag backgrounds === Same source as the desktop <img>
     WPML flag (lipis flag-icons CDN). Empty <span class="lang-flag en">
     gets the flag via background-image. Sizing matches desktop (24‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö¬¢‚Äö√Ñ¬¢18). */
  .wpml-ls-flag,
  .lang-flag {
    display: inline-block;
    width: 24px;
    height: 18px;
    border-radius: 3px;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    flex-shrink: 0;
    box-shadow: 0 0 0 1px rgba(13, 23, 84, 0.1);
    image-rendering: -webkit-optimize-contrast;
    /* Default ES flag */
    background-image: url('https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.2.3/flags/4x3/es.svg');
  }
  .wpml-ls-flag.en,
  .lang-flag.en {
    background-image: url('https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.2.3/flags/4x3/gb.svg');
  }
  .wpml-ls-flag.es,
  .lang-flag.es {
    background-image: url('https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.2.3/flags/4x3/es.svg');
  }

  .lang-menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 160px;
    background: #FFFFFF;
    border: 1px solid var(--light-border);
    border-radius: 12px;
    padding: 6px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: all 0.2s var(--ease);
    box-shadow: 0 12px 30px -8px rgba(13, 23, 84, 0.16);
    list-style: none;
  }
  .lang.is-open .lang-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  .lang-menu li { list-style: none; margin: 0; padding: 0; }
  .lang-option {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 8px;
    color: var(--light-text-2);
    font-size: 13px;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.15s;
  }
  .lang-option:hover { background: var(--light-hover-bg); color: var(--brand-blue); }
  .lang-option.active { color: var(--brand-blue); font-weight: 600; }

  /* CTAs ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Login mimics herofx.co: bordered pill with user icon */
  .btn-login {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--light-text-1);
    background: transparent;
    border: 1px solid #C7D5F2;
    padding: 9px 18px;
    font-size: 14px;
    font-weight: 600;
    border-radius: 10px;
    transition: all 0.2s var(--ease);
  }
  .btn-login svg { width: 16px; height: 16px; stroke-width: 1.8; }
  .btn-login:hover {
    color: var(--brand-blue);
    border-color: var(--brand-blue);
    background: var(--light-hover-bg);
  }

  .btn-register {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    background: linear-gradient(135deg, var(--brand-blue), #1F5BFF);
    color: var(--white);
    font-size: 14px;
    font-weight: 600;
    border: none;
    border-radius: 10px;
    box-shadow:
      0 1px 0 0 rgba(255, 255, 255, 0.2) inset,
      0 8px 24px -8px rgba(12, 61, 239, 0.7);
    transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
  }
  .btn-register:hover {
    transform: translateY(-1px);
    box-shadow:
      0 1px 0 0 rgba(255, 255, 255, 0.25) inset,
      0 12px 32px -8px rgba(12, 61, 239, 0.85);
  }
  .btn-register .arrow { transition: transform 0.2s var(--ease); }
  .btn-register:hover .arrow { transform: translateX(2px); }

  /* ============================================================
     DROPDOWNS ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ base
     ============================================================ */
  /* ALL dropdowns are viewport-fixed, dropping from --menu-top
     (set via JS to be exactly the bottom of the header).
     IMPORTANT: dropdowns are moved to <body> at runtime so they escape
     the .header backdrop-filter containing block ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ that way fixed
     positioning resolves against the viewport, no offset bugs. */
  .dropdown {
    position: fixed;
    top: var(--menu-top, 100px);
    left: 50%;
    z-index: 1001; /* above the header glass halo (header-wrap is 1000) */
    background: #FFFFFF;
    border: 1px solid var(--light-border);
    border-radius: 16px;
    padding: 14px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none; /* don't intercept clicks while invisible/closing */
    transform: translate(-50%, -8px);
    transition: opacity 0.25s var(--ease), transform 0.25s var(--ease), visibility 0.25s;
    box-shadow:
      0 1px 0 0 rgba(255, 255, 255, 0.6) inset,
      0 18px 50px -10px rgba(13, 23, 84, 0.22);
  }
  .dropdown.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate(-50%, 0);
  }

  /* Hover bridge ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ keeps dropdown open while moving cursor between trigger and panel */
  .dropdown::before {
    content: '';
    position: absolute;
    top: -16px;
    left: 0;
    right: 0;
    height: 16px;
  }

  /* Menu item card (used everywhere for consistency) */
  .menu-card {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 12px;
    transition: background 0.2s;
    min-width: 240px;
  }
  .menu-card:hover {
    background: var(--light-hover-bg);
  }
  .menu-card:hover .menu-card-icon {
    background: linear-gradient(135deg, rgba(12, 61, 239, 0.18), rgba(66, 229, 254, 0.18));
    border-color: rgba(12, 61, 239, 0.55);
  }
  .menu-card:hover .menu-card-icon svg { color: var(--brand-blue); }
  .menu-card:hover .menu-card-title { color: var(--brand-blue); }

  .menu-card-icon {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: rgba(12, 61, 239, 0.08);
    border: 1px solid rgba(12, 61, 239, 0.4);
    box-shadow: 0 1px 2px rgba(13, 23, 84, 0.07);
    display: grid;
    place-items: center;
    transition: all 0.2s;
  }
  .menu-card-icon svg {
    width: 22px;
    height: 22px;
    color: var(--brand-blue);
    stroke-width: 1.5;
    transition: color 0.2s;
  }

  /* PLATFORM LOGOS ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ full-color real app icons (MT5, Tradelocker).
     Industry standard for broker websites: show the platform's actual
     icon, not a monochrome version. Recognition > color uniformity.
     The chip wrapper provides visual uniformity (size, hover, shadow). */
  .menu-card-icon .brand-logo {
    display: block;
    width: 28px;
    height: 28px;
    object-fit: contain;
    border-radius: 6px;
  }

  .menu-card-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
  }
  .menu-card-title {
    color: var(--light-text-1);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    transition: color 0.2s;
  }
  .menu-card-desc {
    color: var(--light-text-3);
    font-size: 12.5px;
    line-height: 1.4;
  }

  /* Small dropdowns: anchor to trigger center (--trigger-x set by JS) */
  .dropdown.dd-platforms,
  .dropdown.dd-affiliates {
    width: 320px;
  }
  .dropdown.dd-platforms .menu-card,
  .dropdown.dd-affiliates .menu-card { min-width: auto; }

  /* Wide mega menus: override to center on viewport (no trigger anchoring) */
  .dropdown.dd-trading,
  .dropdown.dd-resources {
    left: 50%;
  }

  .dropdown.dd-trading {
    width: min(1020px, calc(100vw - 32px));
    display: grid;
    grid-template-columns: 1fr 1fr 360px;
    gap: 12px;
    padding: 18px;
  }
  .dropdown.dd-trading .col {
    padding: 0 8px;
  }
  .col-divider {
    border-right: 1px solid var(--light-border);
  }

  .col-heading {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--light-text-3);
    padding: 6px 12px 10px;
  }

  /* =================================================
     FEATURED PANEL ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Hero10X
     Layout: optional <img class="featured-bg"> (background) +
     .featured-visual (top slot, swap <span class="featured-mark"> for
     <img class="featured-img"> when ready) + .featured-body (content).
     ================================================= */
  /* Featured panel ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ keeps the brand gradient as a vivid highlight inside the white dropdown */
  .featured {
    position: relative;
    padding: 22px;
    border-radius: 14px;
    background:
      linear-gradient(135deg, var(--brand-blue) 0%, #1F5BFF 60%, var(--brand-cyan) 130%);
    border: 1px solid rgba(255, 255, 255, 0.18);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 280px;
    color: var(--white);
    box-shadow: 0 12px 30px -10px rgba(12, 61, 239, 0.5);
  }
  .featured::before {
    content: '';
    position: absolute;
    top: -40%;
    right: -30%;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.28) 0%, transparent 70%);
    pointer-events: none;
  }
  /* Image slots */
  .featured > * { position: relative; z-index: 1; }
  .featured-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
    border-radius: 14px;
    pointer-events: none;
  }
  /* Dark gradient overlay for text legibility on top of bg image */
  .featured-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: 14px;
    background: linear-gradient(180deg,
      rgba(13, 23, 84, 0.10) 0%,
      rgba(13, 23, 84, 0.30) 45%,
      rgba(5, 10, 42, 0.85) 88%,
      rgba(5, 10, 42, 0.92) 100%);
    pointer-events: none;
  }
  /* When a background image is set on the featured panel, the image
     takes over. If the image file is missing, the navy fallback shows. */
  .featured-with-bg {
    background: var(--brand-navy);
    min-height: 320px;
  }
  /* Hide the "10X" placeholder when bg image is intended (image is the hero) */
  .featured-with-bg .featured-visual-fallback {
    display: none;
  }
  /* Push the body content to the bottom so the image hero stays at top */
  .featured-with-bg .featured-body {
    margin-top: auto;
    padding-top: 28px;
  }
  .featured-visual {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 72px;
    margin-bottom: 16px;
    border-radius: 10px;
    overflow: hidden;
  }
  .featured-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 10px;
    display: block;
  }
  /* When a featured-img is dropped in, hide the placeholder mark */
  .featured-visual:has(.featured-img) .featured-mark { display: none; }
  .featured-mark {
    font-size: 64px;
    font-weight: 700;
    letter-spacing: -0.06em;
    line-height: 1;
    background: linear-gradient(180deg, var(--white) 0%, var(--brand-cyan) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    filter: drop-shadow(0 0 18px rgba(66, 229, 254, 0.45));
  }
  .featured-body { display: flex; flex-direction: column; }

    .featured-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    align-self: flex-start;
    padding: 4px 10px;
    background: rgba(255, 255, 255, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.3);
    color: var(--white);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: 999px;
    backdrop-filter: blur(4px);
  }
  .featured-title {
    font-size: 24px;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.02em;
    margin: 14px 0 6px;
    color: var(--white);
  }
  .featured-desc {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.5;
    margin: 0 0 16px;
  }
  .featured-cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    background: var(--white);
    color: var(--brand-blue);
    font-size: 13px;
    font-weight: 700;
    border-radius: 10px;
    align-self: flex-start;
    transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
    box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.15);
  }
  .featured-cta:hover { transform: translateX(2px); box-shadow: 0 6px 16px -2px rgba(0, 0, 0, 0.22); }

  /* =================================================
     FTMO-style FEATURED CARD ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ image in its own rounded box,
     text BELOW the box separated by a gap (not glued together).
     The entire <a> is the click target.
     ================================================= */
  .featured-card {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: var(--white);
    /* Container is transparent ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ image and text are independent blocks */
    background: transparent;
    border: 0;
    border-radius: 0;
  }
  /* The image lives inside its own bordered, rounded box. */
  .featured-card-banner {
    position: relative;
    width: 100%;
    overflow: hidden;
    background: var(--brand-navy);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 12px;
    transition: border-color 0.2s var(--ease),
                box-shadow 0.2s var(--ease),
                transform 0.2s var(--ease);
  }
  .featured-card:hover .featured-card-banner {
    border-color: rgba(66, 229, 254, 0.4);
    box-shadow: 0 12px 28px -10px rgba(12, 61, 239, 0.5);
    transform: translateY(-2px);
  }
  .featured-card-banner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s var(--ease);
  }
  .featured-card:hover .featured-card-banner img {
    transform: scale(1.03);
  }
  /* Text block sits BELOW the image with a clear gap ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ no padding/bg.
     This is the FTMO pattern: image-as-box + free-floating text below. */
  .featured-card-body {
    padding: 0;
    margin-top: 16px;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
  }
  .featured-card-tag {
    display: inline-flex;
    align-self: flex-start;
    align-items: center;
    padding: 2px 9px;
    background: rgba(66, 229, 254, 0.12);
    border: 1px solid rgba(66, 229, 254, 0.3);
    color: var(--brand-cyan);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-radius: 999px;
    margin: 0 0 10px;
  }
  .featured-card-title {
    font-size: 17px;
    font-weight: 700;
    line-height: 1.2;
    margin: 0 0 4px;
    color: var(--light-text-1);   /* navy on white dropdown */
    letter-spacing: -0.01em;
    transition: color 0.2s var(--ease);
  }
  .featured-card:hover .featured-card-title { color: var(--brand-blue); }
  .featured-card-desc {
    font-size: 12.5px;
    line-height: 1.5;
    color: var(--light-text-2);   /* navy 72% ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ readable secondary text */
    margin: 0;
  }
  .featured-card-desc strong {
    color: var(--light-text-1);
    font-weight: 700;
  }

  /* Both featured banners are sized IDENTICALLY (same width, same
     aspect-ratio, same border-radius). FTMO-style 16:9 panoramic. */
  .dropdown.dd-trading .featured-card-banner,
  .dropdown.dd-affiliates .featured-card-banner {
    aspect-ratio: 16 / 9;
  }
  /* Hero10X (portrait image) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ bias the crop toward lower-middle so
     the iconic "10X" graphic stays visible after the landscape crop. */
  .dropdown.dd-trading .featured-card-banner img {
    object-position: center 60%;
  }
  /* Affiliates (landscape image) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ default center crop. */
  .dropdown.dd-affiliates .featured-card-banner img {
    object-position: center center;
  }

  /* Affiliates mega menu ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ featured column matches Trading's 360px so
     both featured cards render at IDENTICAL dimensions. */
  .dropdown.dd-affiliates {
    width: min(720px, calc(100vw - 32px));
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 12px;
    padding: 18px;
  }
  .dropdown.dd-affiliates .col { padding: 0 6px; }
  /* Affiliates featured ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ full-bg + overlay (same pattern as Hero10X).
     Panel sized 480 ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö¬¢‚Äö√Ñ¬¢ 320 (1.5:1) so the image fills perfectly without
     horizontal cropping. Slightly larger typography because the column
     is wider now. */
  .dropdown.dd-affiliates .featured-affiliates::before { display: none; }
  .dropdown.dd-affiliates .featured-affiliates {
    min-height: 320px;
    padding: 26px;
  }
  /* Tag floats top-left over the image, like a premium "Featured" badge */
  .dropdown.dd-affiliates .featured-affiliates > .featured-tag {
    position: absolute;
    top: 22px;
    left: 22px;
    z-index: 3;
    margin: 0;
  }
  .dropdown.dd-affiliates .featured-bg {
    object-position: center center;
  }
  /* Stronger gradient at the bottom because the image now extends more
     horizontally ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ text needs a clear contrast band. */
  .dropdown.dd-affiliates .featured-overlay {
    background: linear-gradient(180deg,
      rgba(13, 23, 84, 0.05) 0%,
      rgba(13, 23, 84, 0.20) 35%,
      rgba(5, 10, 42, 0.85) 80%,
      rgba(5, 10, 42, 0.95) 100%);
  }
  .dropdown.dd-affiliates .featured-affiliates .featured-title {
    font-size: 22px;
    line-height: 1.18;
    margin: 0 0 8px;
    max-width: 320px;
  }
  .dropdown.dd-affiliates .featured-affiliates .featured-desc {
    font-size: 13px;
    line-height: 1.55;
    margin: 0 0 16px;
    max-width: 380px;
  }

  /* Resources mega ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ same drop animation as Trading, centered viewport */
  .dropdown.dd-resources {
    /* 900px (was 820) so 3 one-line cards fit without the hover
       background bleeding past the panel's right edge. */
    width: min(900px, calc(100vw - 32px));
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 4px;
    padding: 18px;
  }
  .dropdown.dd-resources .col { padding: 0 6px; }

  /* ============================================================
     MOBILE
     ============================================================ */
  .mobile-toggle {
    display: none;
    background: transparent;
    border: 1px solid var(--light-border);
    border-radius: 10px;
    width: 40px;
    height: 40px;
    align-items: center;
    justify-content: center;
    color: var(--light-text-1);
  }
  .mobile-toggle svg { width: 20px; height: 20px; }

  .mobile-panel {
    position: fixed;
    inset: 0;
    z-index: 1100;
    background: var(--white);
    transform: translateX(100%);
    transition: transform 0.4s var(--ease);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
  }
  .mobile-panel.is-open { transform: translateX(0); }

  .mobile-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 20px;
    border-bottom: 1px solid var(--light-border);
  }
  .mobile-close {
    background: transparent;
    border: 1px solid var(--light-border);
    border-radius: 10px;
    width: 40px;
    height: 40px;
    color: var(--light-text-1);
    display: grid;
    place-items: center;
  }
  .mobile-close svg { width: 20px; height: 20px; }

  /* === Mobile language switcher ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ pill row positioned BETWEEN the nav
     accordions (last item: Resources) AND the Login/Register CTA row.
     Implementation: flex `order` controls. mobile-header and mobile-nav
     stay at default order 0 (HTML position). mobile-lang gets order 1
     (places it after the default items), mobile-cta-row gets order 2
     (final position).
     Text shown is the full word ("English" / "Espa‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±ol"). The ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬± uses the
     HTML entity `&ntilde;` in the markup, so it renders correctly even
     if the page is served with a non-UTF-8 charset. */
  .mobile-lang {
    order: 1;           /* between nav (order 0) and cta-row (order 2) */
    display: inline-flex;
    gap: 4px;
    padding: 4px;
    margin: 16px auto;
    background: rgba(13, 23, 84, 0.05);
    border: 1px solid rgba(13, 23, 84, 0.06);
    border-radius: 100px;
    width: auto;
    align-self: center;
  }
  .mobile-cta-row { order: 2; }   /* keep CTA row as the final element */

  /* Pill button: flag + full word ("English" / "Espa‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±ol"), centered.
     STRATEGY: WordPress's English template stored "Espa‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±ol" with corrupted
     bytes (literally `‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö‚Ä†‚àö√°¬¨¬®¬¨¬Æ¬¨¬®¬¨√Ü¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±` instead of `‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±`) due to a paste-encoding mishap.
     Even after fixing the HTML, we keep this CSS-side bulletproof override
     so a future paste regression doesn't break it again.
     We HIDE the HTML text with `font-size: 0` and re-render via `::after`
     using a Unicode ESCAPE `\00f1` for the ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬± ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ pure ASCII, encoding-proof. */
  .mobile-lang-btn {
    flex: 0 0 auto;
    padding: 9px 16px !important;
    background: transparent;
    border: 0;
    border-radius: 100px;
    color: rgba(13, 23, 84, 0.65);
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    /* font-size: 0 hides the broken-encoded "Espa‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±ol" / "English" from the
       HTML; we re-render the text below via ::after at 13px. */
    font-size: 0 !important;
    line-height: 0 !important;
    text-decoration: none !important;
    white-space: nowrap !important;
  }
  /* Re-rendered visible text via ::after ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Unicode escape \00f1 = ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬± */
  .mobile-lang-btn::after {
    font-family: 'Gilroy', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', sans-serif !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    letter-spacing: 0.02em !important;
    text-transform: none !important;
    color: inherit;
  }
  .mobile-lang-btn:nth-child(1)::after { content: "English"; }
  .mobile-lang-btn:nth-child(2)::after { content: "Espa\00f1ol"; }
  /* Higher-specificity defense ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ wins over any rogue inline <style> with
     the same selector. Specificity 0,0,2,1 (body + .mobile-panel +
     .mobile-lang-btn) beats plain `.mobile-lang-btn` (0,0,1,0). */
  body .mobile-panel .mobile-lang-btn {
    font-size: 0 !important;
    line-height: 0 !important;
  }
  body .mobile-panel .mobile-lang-btn::after {
    font-size: 13px !important;
    line-height: 1 !important;
  }
  /* Flag span is empty, but its width/height come from the global
     .lang-flag rule. Override font-size:0 inheritance here. */
  .mobile-lang-btn .lang-flag {
    font-size: 0 !important;
  }
  /* Active = white pill, brand-blue text ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ current selected language */
  .mobile-lang-btn.active {
    background: #FFFFFF;
    color: var(--brand-blue);
    box-shadow: 0 1px 3px rgba(13, 23, 84, 0.12);
  }
  /* Hover = brand-blue pill, WHITE text ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ clear visual feedback that
     the button is interactive (vs the previous subtle color change which
     was nearly invisible on the gray pill bg). */
  .mobile-lang-btn:hover {
    background: var(--brand-blue);
    color: #FFFFFF;
    box-shadow: 0 4px 12px -4px rgba(12, 61, 239, 0.45);
  }
  /* If user hovers the currently-active button, keep the active styling
     instead of inverting (avoids weird flash) */
  .mobile-lang-btn.active:hover {
    background: #FFFFFF;
    color: var(--brand-blue);
    box-shadow: 0 1px 3px rgba(13, 23, 84, 0.12);
  }

  /* Flag chip inside the pill stays sharp at 22‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö¬¢‚Äö√Ñ¬¢16 */
  .mobile-lang-btn .lang-flag,
  .mobile-lang-btn .wpml-ls-flag {
    width: 22px;
    height: 16px;
    border-radius: 2px;
  }

  .mobile-nav { padding: 12px 12px 24px; flex: 1; }
  .mobile-acc { border-bottom: 1px solid var(--light-border); }
  .mobile-acc:last-child { border-bottom: none; }
  .mobile-acc-trigger {
    width: 100%;
    background: transparent;
    border: none;
    color: var(--light-text-1);
    padding: 18px 12px;
    font-size: 16px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: space-between;
    text-align: left;
  }
  .mobile-acc-trigger .chev { transition: transform 0.3s var(--ease); width: 18px; height: 18px; color: var(--light-text-3); }
  .mobile-acc.is-open .mobile-acc-trigger { color: var(--brand-blue); }
  .mobile-acc.is-open .mobile-acc-trigger .chev { transform: rotate(180deg); color: var(--brand-blue); }
  .mobile-acc-content {
    display: none;
    padding: 0 0 12px;
  }
  .mobile-acc.is-open .mobile-acc-content { display: block; }
  .mobile-acc-content .menu-card {
    margin: 4px 0;
  }

  .mobile-cta-row {
    position: sticky;
    bottom: 0;
    display: flex;
    gap: 10px;
    padding: 16px 20px calc(16px + env(safe-area-inset-bottom));
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(16px);
    border-top: 1px solid var(--light-border);
  }
  .mobile-cta-row .btn-login,
  .mobile-cta-row .btn-register {
    flex: 1;
    justify-content: center;
    padding: 14px;
    font-size: 15px;
  }
  .mobile-cta-row .btn-login {
    border: 1px solid var(--light-border-strong);
    color: var(--light-text-1);
  }

  /* Subheading style for groupings (LEARN, COMMUNITY, COMPANY) */
  .group-heading {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--light-text-3);
    padding: 6px 12px 10px;
  }

  /* ============================================================
     RESPONSIVE
     ============================================================ */
  @media (max-width: 1024px) {
    .nav, .header-right .lang, .header-right .btn-login, .header-right .btn-register {
      display: none;
    }
    .mobile-toggle { display: inline-flex; margin-left: auto; }
  }

  /* ============================================================
     PAGE CONTENT (demo) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ para ver el men‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†¬¨¬®¬¨‚Ä¢ en contexto real
     ============================================================ */
  .hero {
    padding: calc(var(--header-h) + 80px) 24px 120px;
    text-align: center;
    max-width: 900px;
    margin: 0 auto;
  }
  .hero-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    background: rgba(66, 229, 254, 0.1);
    border: 1px solid rgba(66, 229, 254, 0.2);
    color: var(--brand-cyan);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.05em;
    margin-bottom: 24px;
  }
  .hero h1 {
    font-size: clamp(40px, 6vw, 72px);
    line-height: 1.05;
    letter-spacing: -0.03em;
    margin: 0 0 20px;
    background: linear-gradient(135deg, #fff 30%, var(--brand-cyan));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  .hero p {
    font-size: 18px;
    color: var(--text-2);
    max-width: 600px;
    margin: 0 auto 36px;
    line-height: 1.6;
  }
  .scroll-area {
    padding: 80px 24px;
    max-width: 1100px;
    margin: 0 auto;
  }
  .scroll-area .filler {
    height: 400px;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--border);
    border-radius: 18px;
    margin-bottom: 24px;
    display: grid;
    place-items: center;
    color: var(--text-3);
    font-size: 14px;
  }

  /* ============================================================
     FOOTER ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ light theme, off-white blue tint
     Color #F3F5FE replicado de producci‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë¬¨¬¢n (herofx.co) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ blanco con
     un toque azulado sutil. M‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™s premium que blanco puro, pega con
     la paleta brand. Logo dark resalta bien sobre este tono.
     ============================================================ */
  .site-footer {
    position: relative;
    margin: 0;
    padding: 80px 24px 32px;
    background: #F3F5FE;
    color: var(--light-text-2);
    font-size: 14px;
    line-height: 1.6;
  }
  /* Top accent line ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ brand gradient sobre blanco */
  .site-footer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: min(1240px, calc(100% - 48px));
    height: 1px;
    background: linear-gradient(90deg,
      transparent 0%,
      rgba(12, 61, 239, 0.25) 30%,
      rgba(12, 61, 239, 0.5) 50%,
      rgba(12, 61, 239, 0.25) 70%,
      transparent 100%);
  }
  .footer-inner {
    max-width: 1240px;
    margin: 0 auto;
  }

  /* Top grid */
  .footer-grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr;
    gap: 40px;
    margin-bottom: 56px;
  }

  /* Brand column */
  .footer-brand .footer-logo {
    height: 32px;
    width: auto;
    display: block;
    margin-bottom: 16px;
  }
  .footer-tagline {
    color: var(--light-text-2);
    margin: 0 0 22px;
    max-width: 280px;
    font-size: 14px;
  }
  .footer-socials {
    display: flex;
    gap: 8px;
  }
  /* Social icons ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ color s‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë¬¨¬¢lido para que TODAS las propiedades animen
     en sync (los gradients NO interpolan, por eso antes el bg saltaba
     instant azul mientras el icono cambiaba con delay). El bg pasa de
     rgba(blue, 0.08) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚Äö√†¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√Ñ√∂‚àö¬¢‚Äö√Ñ‚Ä† rgba(blue, 1) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ misma tinta, opacity diferente,
     interpola perfecto. */
  .footer-socials a {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: rgba(12, 61, 239, 0.08);
    border: 1px solid rgba(12, 61, 239, 0.2);
    color: var(--brand-blue);
    transition: background-color 0.25s var(--ease),
                border-color 0.25s var(--ease),
                color 0.25s var(--ease),
                transform 0.25s var(--ease),
                box-shadow 0.25s var(--ease);
  }
  .footer-socials a:hover {
    background-color: var(--brand-blue);
    border-color: var(--brand-blue);
    color: #FFFFFF;
    transform: translateY(-2px);
    box-shadow: 0 8px 20px -8px rgba(12, 61, 239, 0.5);
  }
  .footer-socials svg {
    width: 18px;
    height: 18px;
    stroke-width: 1.8;
  }

  /* Link columns ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ match al men‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†¬¨¬®¬¨‚Ä¢: same look as .col-heading
     (smaller, lighter color, less visually heavy a pesar del 700) */
  .footer-col h4 {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--light-text-3);
    margin: 0 0 16px;
  }
  .footer-col ul {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .footer-col li { margin: 0 0 10px; }
  .footer-col a {
    color: var(--light-text-2);
    font-size: 14px;
    font-weight: 400;
    transition: color 0.2s;
  }
  .footer-col a:hover { color: var(--brand-blue); }

  /* Divider */
  .footer-divider {
    height: 1px;
    background: var(--light-border);
    margin: 0 0 32px;
  }

  /* Disclaimer ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ texto legal visible pero no remarcado.
     Es info importante por compliance pero no debe gritar visualmente. */
  .footer-disclaimer {
    margin-bottom: 32px;
  }
  .footer-disclaimer h5 {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--light-text-3);
    margin: 0 0 6px;
  }
  .footer-disclaimer p {
    font-size: 12px;
    font-weight: 400;
    line-height: 1.65;
    color: var(--light-text-3);
    margin: 0 0 14px;
    max-width: 1100px;
  }

  /* Bottom row */
  .footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 18px;
    padding-top: 24px;
    border-top: 1px solid var(--light-border);
    font-size: 12.5px;
    color: var(--light-text-3);
  }
  .footer-bottom p { margin: 0; }
  .footer-meta {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .footer-meta strong {
    color: var(--light-text-1);
    font-weight: 600;
  }
  .footer-address {
    text-align: right;
    max-width: 360px;
    color: var(--light-text-3);
  }

  /* OVERRIDES contra Astra/Elementor que pintan h4/h5/p/a en otros
     colores. Forzamos texto del footer al sistema light. */
  body .site-footer,
  body .site-footer p,
  body .site-footer span {
    color: var(--light-text-2) !important;
  }
  body .site-footer .footer-col h4,
  body .site-footer .footer-disclaimer h5,
  body .site-footer .footer-meta strong {
    color: var(--light-text-1) !important;
  }
  body .site-footer .footer-disclaimer p,
  body .site-footer .footer-bottom,
  body .site-footer .footer-bottom p,
  body .site-footer .footer-address {
    color: var(--light-text-3) !important;
  }
  body .site-footer .footer-col a,
  body .site-footer .footer-col a:visited {
    color: var(--light-text-2) !important;
    font-weight: 400 !important;
  }
  body .site-footer .footer-col a:hover {
    color: var(--brand-blue) !important;
  }
  /* Social icons: idle = brand-blue, hover = white sobre BG azul */
  body .site-footer .footer-socials a {
    color: var(--brand-blue) !important;
  }
  body .site-footer .footer-socials a:hover {
    color: #FFFFFF !important;
  }
  /* <strong> en el footer (HeroFX Ltd, etc.): force misma fuente Gilroy
     que el resto. Algunos browsers/temas heredan otra serif para strong. */
  body .site-footer strong,
  body .site-footer b {
    font-family: 'Gilroy', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
    font-weight: 600 !important;
    font-style: normal !important;
  }
  /* Full-width footer + sin margen superior ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Elementor envuelve el
     widget HTML en containers con padding/max-width que separan el
     footer del contenido. Forzamos width 100% y margin/padding 0 en
     toda la cadena de wrappers para que .site-footer pegue al contenido
     anterior y ocupe todo el ancho. */
  body .elementor-location-footer,
  body .elementor-location-footer > .e-con,
  body .elementor-location-footer > section,
  body .elementor-location-footer .e-con-inner,
  body .elementor-location-footer .elementor-section,
  body .elementor-location-footer .elementor-container,
  body .elementor-location-footer .elementor-widget-html,
  body .elementor-location-footer .elementor-widget-html > .elementor-widget-container {
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  body .elementor-location-footer .site-footer,
  body footer.site-footer {
    margin: 0 !important;
  }

  /* Responsive */
  @media (max-width: 980px) {
    .footer-grid {
      grid-template-columns: 1fr 1fr;
      gap: 36px;
    }
    .footer-brand { grid-column: 1 / -1; }
    .footer-bottom { flex-direction: column; align-items: flex-start; }
    .footer-address { text-align: left; }
  }
  @media (max-width: 540px) {
    .footer-grid {
      grid-template-columns: 1fr;
      gap: 32px;
    }
    .site-footer { padding: 56px 20px 24px; }
  }

/* ==================================================================
   WORDPRESS / ASTRA / ELEMENTOR OVERRIDES
   Forzamos especificidad y !important sobre reglas globales del tema
   (img { height:auto }, admin bar, container width, etc.).
   ================================================================== */

/* Logo height ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ gana sobre Astra "img { height:auto }" */
body .header-wrap .logo img,
body .mobile-header .logo img {
  height: 28px !important;
  width: auto !important;
  max-width: none !important;
}
body .header-wrap.scrolled .logo img {
  height: 24px !important;
}
body .mobile-header .logo img {
  height: 26px !important;
}

/* Brand icons dentro de menu-cards ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ tambi‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬©n gana sobre img global */
body .header-wrap .menu-card-icon img.brand-logo {
  height: auto !important;
  width: 100% !important;
  max-width: 100% !important;
}

/* Admin bar offset ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ cuando hay usuario logueado en WP, el admin bar
   ocupa 32px (46px en m‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë¬¨¬¢vil). Empujamos el header para que no se tape. */
body.admin-bar .header-wrap {
  top: 46px;
}
body.admin-bar .header-wrap.scrolled {
  top: 40px;
}
@media (min-width: 783px) {
  body.admin-bar .header-wrap {
    top: 46px;
  }
  body.admin-bar .header-wrap.scrolled {
    top: 40px;
  }
}

/* Reset de container Elementor: si el header est‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ dentro de un container
   con padding, lo neutralizamos para que .header-wrap fixed no herede
   nada del wrapper */
.elementor-widget-html > .elementor-widget-container {
  padding: 0 !important;
  margin: 0 !important;
}

/* ============================================================
   MOBILE TOGGLE & CLOSE ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ CSS-drawn icons (no dependen de Lucide)
   La hamburguesa y la X se dibujan con pseudo-elements puros para
   garantizar que SIEMPRE se vean, incluso si Lucide CDN falla o
   Astra los esconde. El <i> de Lucide queda oculto.
   IMPORTANTE: NO forzamos display aqu‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä† ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ el media query del CSS
   original (max-width: 1024px) controla cu‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ndo mostrar el toggle.
   En desktop debe seguir oculto (display: none del original).
   ============================================================ */
body .header-wrap .mobile-toggle,
body .mobile-panel .mobile-close {
  position: relative !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  background: transparent !important;
  border: 1px solid var(--light-border) !important;
  border-radius: 10px !important;
  width: 40px !important;
  height: 40px !important;
  min-width: 0 !important;
  min-height: 0 !important;
  line-height: 1 !important;
  text-indent: 0 !important;
  box-shadow: none !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-size: 0 !important; /* evita que Astra meta texto basura */
  color: var(--light-text-1) !important;
}

/* En desktop el hamburger SE OCULTA. Reforzamos el display:none del
   CSS base por si Astra/Elementor lo sobreescriben. */
@media (min-width: 1025px) {
  body .header-wrap .mobile-toggle {
    display: none !important;
  }
}

/* En mobile/tablet (‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ¬¨¬®¬¨¬¢¬¨¬®¬¨¬Æ‚Äö√†√∂‚àö¬∫1024px) s‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä† lo mostramos como flex */
@media (max-width: 1024px) {
  body .header-wrap .mobile-toggle {
    display: inline-flex !important;
  }
}

/* La X de cerrar siempre visible cuando el panel est‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ abierto
   (el panel solo aparece en mobile, as‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä† que no hace falta media query) */
body .mobile-panel .mobile-close {
  display: inline-flex !important;
}

/* Esconde cualquier <i>/svg que Astra/Lucide pueda renderizar mal */
body .header-wrap .mobile-toggle > *,
body .mobile-panel .mobile-close > * {
  display: none !important;
}

/* Hamburguesa CSS ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ 3 l‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†neas centradas */
body .header-wrap .mobile-toggle::before {
  content: "" !important;
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 20px !important;
  height: 14px !important;
  border-top: 2px solid currentColor !important;
  border-bottom: 2px solid currentColor !important;
  background:
    linear-gradient(currentColor, currentColor) center/100% 2px no-repeat !important;
  box-sizing: border-box !important;
}

/* X CSS ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ dos l‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†neas cruzadas centradas */
body .mobile-panel .mobile-close::before,
body .mobile-panel .mobile-close::after {
  content: "" !important;
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  width: 20px !important;
  height: 2px !important;
  background: currentColor !important;
  box-sizing: border-box !important;
}
body .mobile-panel .mobile-close::before {
  transform: translate(-50%, -50%) rotate(45deg) !important;
}
body .mobile-panel .mobile-close::after {
  transform: translate(-50%, -50%) rotate(-45deg) !important;
}

/* ============================================================
   HOVER / FOCUS / ACTIVE ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ fuerza colores correctos sobre Astra
   Astra mete a:hover { color: brand-blue } global, lo neutralizamos
   ============================================================ */

/* Menu links: Astra/Elementor can inject underlines through global
   link styles. Keep every header/mobile menu label clean in all states.
   IMPORTANT: we kill text-decoration on ALL header/mobile links, but
   we DO NOT kill border-bottom on plain `a` selectors ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ the .btn-login
   pill uses a real bottom border as part of its visual frame, and a
   blanket `border-bottom: 0` would erase it. The narrower selectors
   below (nav-link, mobile-lang-btn, mobile-acc-trigger) target only
   text-only links where Astra sometimes draws fake underlines via
   border-bottom ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ those we strip. Buttons keep their real borders. */
body .header-wrap a,
body .header-wrap a:hover,
body .header-wrap a:focus,
body .header-wrap a:active,
body .header-wrap a:visited,
body .mobile-panel a,
body .mobile-panel a:hover,
body .mobile-panel a:focus,
body .mobile-panel a:active,
body .mobile-panel a:visited {
  text-decoration: none !important;
  text-decoration-line: none !important;
}
/* Strip fake-underline borders only on TEXT nav links, not on buttons */
body .header-wrap .nav-link,
body .header-wrap .nav-link:hover,
body .header-wrap .nav-link:focus,
body .header-wrap .nav-link:active,
body .mobile-panel .mobile-lang-btn,
body .mobile-panel .mobile-lang-btn:hover,
body .mobile-panel .mobile-lang-btn:focus,
body .mobile-panel .mobile-lang-btn:active,
body .mobile-panel .mobile-acc-trigger,
body .mobile-panel .mobile-acc-trigger:hover {
  text-decoration: none !important;
  text-decoration-line: none !important;
  border-bottom: 0 !important;
}

/* Register button: texto SIEMPRE blanco, gradient SIEMPRE azul */
body .header-wrap .btn-register,
body .header-wrap .btn-register:hover,
body .header-wrap .btn-register:focus,
body .header-wrap .btn-register:active,
body .header-wrap .btn-register:visited,
body .mobile-panel .btn-register,
body .mobile-panel .btn-register:hover,
body .mobile-panel .btn-register:focus,
body .mobile-panel .btn-register:active,
body .mobile-panel .btn-register:visited {
  color: #FFFFFF !important;
  background: linear-gradient(135deg, #0C3DEF, #1F5BFF) !important;
  -webkit-text-fill-color: #FFFFFF !important;
}
body .header-wrap .btn-register *,
body .mobile-panel .btn-register * {
  color: #FFFFFF !important;
}

/* Login button: texto y border en estados, sin que Astra los pinte */
body .header-wrap .btn-login,
body .header-wrap .btn-login:hover,
body .header-wrap .btn-login:focus,
body .header-wrap .btn-login:active,
body .header-wrap .btn-login:visited,
body .mobile-panel .btn-login,
body .mobile-panel .btn-login:hover,
body .mobile-panel .btn-login:focus,
body .mobile-panel .btn-login:active,
body .mobile-panel .btn-login:visited {
  background: transparent !important;
}

/* Mobile accordion triggers ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ fondo transparente SIEMPRE, no azul */
body .mobile-panel .mobile-acc-trigger,
body .mobile-panel .mobile-acc-trigger:hover,
body .mobile-panel .mobile-acc-trigger:focus,
body .mobile-panel .mobile-acc-trigger:active,
body .mobile-panel .mobile-acc.is-open .mobile-acc-trigger,
body .mobile-panel .mobile-acc.is-open .mobile-acc-trigger:focus {
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Texto del accordion: oscuro normal, azul SOLO el chevron al abrir */
body .mobile-panel .mobile-acc-trigger {
  color: var(--light-text-1) !important;
}
body .mobile-panel .mobile-acc.is-open > .mobile-acc-trigger {
  color: var(--brand-blue) !important;
}

/* Menu cards (links del dropdown desktop y mobile): texto oscuro
   en idle, azul oscuro al hover ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ pero NUNCA azul sobre azul */
body .header-wrap .menu-card,
body .header-wrap .menu-card:visited,
body .mobile-panel .menu-card,
body .mobile-panel .menu-card:visited {
  background: transparent !important;
  color: var(--light-text-1) !important;
}
body .header-wrap .menu-card:hover,
body .mobile-panel .menu-card:hover {
  background: rgba(12, 61, 239, 0.06) !important;
  color: var(--light-text-1) !important;
}
body .header-wrap .menu-card:hover .menu-card-title,
body .mobile-panel .menu-card:hover .menu-card-title {
  color: var(--brand-blue) !important;
}

/* Top-level nav-link (Platforms, Trading, etc.) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ sin BG azul de Astra */
body .header-wrap .nav-link,
body .header-wrap .nav-link:hover,
body .header-wrap .nav-link:focus,
body .header-wrap .nav-link:active {
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Mobile menu cards: cuando solo hay t‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†tulo (sin desc) ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ Resources ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫
   el texto se queda arriba en vez de centrado con el icono. Centramos
   verticalmente el contenedor de texto para que coincida con el icon */
body .mobile-panel .mobile-acc-content .menu-card {
  align-items: center !important;
}
body .mobile-panel .mobile-acc-content .menu-card-text {
  justify-content: center !important;
}

/* WPML flags: <img> SVG de flag-icons (https://github.com/lipis/flag-icons)
   Aspect ratio 4:3 ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ el est‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ‚Äö√Ñ√∂‚àö‚Ä†‚àö¬™ndar para flag UI moderna (Stripe, Vercel).
   Tama‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á¬¨¬®¬¨¬Æ¬¨¬®¬¨¬±o 24x18 da espacio para que los detalles del SVG se vean n‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚Äö√Ñ‚Ä†‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂¬¨¬¢‚Äö√Ñ√∂‚àö√ë‚Äö√Ñ‚Ä†tidos.
   image-rendering: crisp-edges fuerza al browser a no aplicar
   antialiasing borroso al downscale. */
body .header-wrap img.wpml-ls-flag,
body .mobile-panel img.wpml-ls-flag {
  width: 24px !important;
  height: 18px !important;
  max-width: 24px !important;
  min-width: 24px !important;
  border-radius: 3px !important;
  object-fit: cover !important;
  display: inline-block !important;
  flex-shrink: 0 !important;
  vertical-align: middle !important;
  background: transparent !important;
  box-shadow: 0 0 0 1px rgba(13, 23, 84, 0.1) !important;
  /* Hint al browser para mejor rendering en displays no-retina */
  image-rendering: -webkit-optimize-contrast;
}

/* ==================================================================
   HEROFX MENU V4 ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ END
   ================================================================== */


/* ============================================================
   v5 PATCH ‚Äö√Ñ√∂‚àö√ë‚àö‚àÇ‚Äö√†√∂‚àö√´‚Äö√†√∂‚Äö√†√á‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö¬¥‚Äö√Ñ√∂‚àö‚Ä†‚àö‚àÇ‚Äö√†√∂‚àö√∫ VISIBILITY ON LIGHT BACKGROUNDS + Z-INDEX
   ============================================================ */
.herofx-v4 .header-wrap,
.herofx-v4 .mobile-panel,
.elementor-location-header,
.site-header { z-index: 99999990 !important; }

.herofx-v4 .header {
  border: 1px solid rgba(13, 23, 84, 0.12) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.6) inset,
    0 12px 32px -8px rgba(13, 23, 84, 0.20),
    0 3px 10px rgba(13, 23, 84, 0.08),
    0 0 0 1px rgba(13, 23, 84, 0.04) !important;
}
.herofx-v4 .header-wrap.scrolled .header {
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.7) inset,
    0 16px 40px -10px rgba(13, 23, 84, 0.26),
    0 4px 14px rgba(13, 23, 84, 0.10),
    0 0 0 1px rgba(13, 23, 84, 0.06) !important;
}
@supports not ((backdrop-filter: blur(16px)) or (-webkit-backdrop-filter: blur(16px))) {
  .herofx-v4 .header {
    background:
      linear-gradient(135deg,
        rgba(255, 255, 255, 0.92) 0%,
        rgba(255, 255, 255, 0.88) 50%,
        rgba(255, 255, 255, 0.92) 100%) !important;
  }
}

/* ===== 2) BUSCADOR (spotlight) ===== */
/* ===== HEADER SEARCH (spotlight) ===== */
.hfx-search-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:#0D1754;cursor:pointer;transition:color .18s,background .18s;padding:0;margin-right:2px;-webkit-tap-highlight-color:transparent}
@media (hover:hover){.hfx-search-btn:hover{color:#0C3DEF;background:rgba(12,61,239,0.08)}}
.hfx-search-btn:focus{outline:none;background:transparent}
.hfx-search-btn:focus-visible{outline:2px solid rgba(12,61,239,0.55);outline-offset:2px}
.hfx-ico{display:inline-block;flex-shrink:0;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
.hfx-ico-search{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}
.hfx-ico-x{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}
.hfx-search-btn .hfx-ico{width:20px;height:20px}
.hfx-search-overlay{position:fixed;inset:0;z-index:100000;display:none}
.hfx-search-overlay.is-open{display:block}
.hfx-search-backdrop{position:absolute;inset:0;background:rgba(5,10,42,0.52);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);opacity:0;transition:opacity .2s}
.hfx-search-overlay.is-open .hfx-search-backdrop{opacity:1}
.hfx-search-panel{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;position:relative;width:min(620px,calc(100vw - 28px));margin:clamp(84px,14vh,150px) auto 0;background:#fff;border-radius:18px;box-shadow:0 40px 90px -20px rgba(5,10,42,0.55);overflow:hidden;transform:translateY(14px) scale(0.985);opacity:0;transition:transform .22s cubic-bezier(.22,.8,.3,1),opacity .18s}
.hfx-search-overlay.is-open .hfx-search-panel{transform:translateY(0) scale(1);opacity:1}
.hfx-search-inputwrap{display:flex;align-items:center;gap:11px;padding:16px 18px;border-bottom:1px solid rgba(13,23,84,0.08)}
.hfx-search-inputwrap > .hfx-ico{width:19px;height:19px;color:#0C3DEF}
.hfx-search-input{flex:1;border:0 !important;outline:none !important;box-shadow:none !important;background:transparent !important;font-size:16.5px;font-weight:500;color:#0D1754;padding:6px 0 !important;font-family:inherit}
.hfx-search-input::placeholder{color:rgba(13,23,84,0.38)}
.hfx-search-close{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:0;background:rgba(13,23,84,0.06);color:#0D1754;cursor:pointer;padding:0}
.hfx-search-close:hover{background:rgba(13,23,84,0.12)}
.hfx-search-close .hfx-ico{width:15px;height:15px}
.hfx-search-label{padding:14px 18px 6px;font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:rgba(13,23,84,0.45)}
.hfx-search-results{padding:4px 8px 10px;max-height:min(430px,56vh);overflow-y:auto}
.hfx-search-sec{padding:13px 18px 5px;font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:rgba(13,23,84,0.4)}
.hfx-search-results .hfx-search-sec:first-child{padding-top:6px}
.hfx-search-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:12px;text-decoration:none;transition:background .15s}
.hfx-search-item:hover,.hfx-search-item.is-active{background:rgba(12,61,239,0.06)}
.hfx-search-item-ico{flex-shrink:0;width:38px;height:38px;border-radius:10px;background:rgba(12,61,239,0.08);border:1px solid rgba(12,61,239,0.4);box-shadow:0 1px 2px rgba(13,23,84,0.07);display:grid;place-items:center}
.hfx-search-item-ico svg{width:18px;height:18px;color:#0C3DEF;stroke-width:1.7}
.hfx-search-item-txt{min-width:0;flex:1}
.hfx-search-item-t{display:block;font-size:14.5px;font-weight:700;color:#0D1754;line-height:1.28;overflow:hidden;text-overflow:ellipsis}
.hfx-search-item-d{display:block;font-size:12.5px;color:rgba(13,23,84,0.55);line-height:1.3;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* FAQ / Help Center rows */
.hfx-search-item.is-faq{align-items:flex-start}
.hfx-search-item.is-faq .hfx-search-item-ico{background:rgba(66,229,254,0.12);border-color:rgba(12,61,239,0.32)}
.hfx-search-item.is-faq .hfx-search-item-ico svg{color:#0C3DEF}
.hfx-search-item.is-faq .hfx-search-item-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal}
.hfx-search-cat{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.02em;color:#0C3DEF;background:rgba(12,61,239,0.08);border-radius:5px;padding:1px 7px;margin-top:3px}
.hfx-search-empty{padding:22px 18px;font-size:14px;color:rgba(13,23,84,0.55);text-align:center}
.hfx-search-empty b{display:block;color:#0D1754;font-size:14.5px;margin-bottom:2px}
@media (max-width:768px){
  .hfx-search-btn{width:36px;height:36px}
  .hfx-search-panel{margin-top:76px}
}
@media (prefers-reduced-motion: reduce){.hfx-search-panel,.hfx-search-backdrop{transition:none}}


/* ============================================================
   MOBILE MENU - UX polish (2026-06-17)
   Aligns the accordion items + sub-items with the logo (20px, both
   left and right edges) and gives the rows more breathing room
   (taller tap targets ~66px, slightly larger 18px type). Purely
   additive (body .mobile-panel + !important) so it wins over the
   base rules and Astra without touching anything else.
   ============================================================ */
body .mobile-panel .mobile-nav { padding: 10px 20px 24px !important; }
body .mobile-panel .mobile-acc-trigger { padding: 23px 0 !important; font-size: 18px !important; }
body .mobile-panel .mobile-acc-trigger .chev { width: 20px !important; height: 20px !important; }
body .mobile-panel .mobile-acc-content { padding: 2px 0 16px !important; }
body .mobile-panel .mobile-acc-content .col-heading { padding-left: 0 !important; }

/* ==================================================================
   HEADER SHRINK ANIMATION - restored 2026-07-02.
   The scroll transitions were removed on purpose while the homepage
   hero was heavy: Safari re-samples backdrop-filter every frame and
   the page janked. Those heavy layers are gone now (candles chart
   removed, hero reduced to two small orbs), so the smooth shrink is
   safe again. Transform on the wrap is compositor-only; the height
   changes only reflow the small fixed bar, never the page below.
   ================================================================== */
.header-wrap { transition: transform 0.35s var(--ease); }
.header-inner { transition: height 0.3s var(--ease); }
.logo img { transition: height 0.3s var(--ease); }

/* ==================================================================
   HEROFX POLISH PATCH - footer + menu (2026-07)
   Paste at the very END of astra-child/style.css (after the MENU V4
   block). Append-only: higher-specificity selectors override both the
   MENU V4 block and the header widget's inline styles. Verified on
   staging desktop 1440 + mobile 390.

   1. Footer: 2 link columns on phones (was 1 -> endless scrolling)
   2. Footer: X (Twitter) icon optical size match - the solid X glyph
      rendered heavier than the stroked icons and looked "selected"
   3. Menu dropdowns: card descriptions never wrap -> every card is
      one line tall and rows stay aligned across columns (Resources
      "Demo Contest" used to wrap to 2 lines and misalign its column)
   ================================================================== */

/* 1. Footer - two link columns on small screens (brand row spans full) */
@media (max-width: 540px) {
  .site-footer .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: 32px 24px;
  }
  .site-footer .footer-brand { grid-column: 1 / -1; }
}

/* 2. Footer - optical size match for the solid X glyph (outline icons
      read lighter at the same box size; 15px evens the perceived weight).
      href selector works for EN and ES footers alike. */
.site-footer .footer-socials a[href*="x.com"] svg {
  width: 15px;
  height: 15px;
}

/* 3. Dropdown cards - single-line descriptions, aligned rows.
      nowrap keeps every card one line tall so rows line up across
      columns (fixes Hero Games sitting lower than Reviews). The room
      for the longest desc comes from the wider dd-resources panel
      above (900px), NOT from a card min-width - forcing a 268px card
      made the last column overflow the panel and the hover background
      bled out the right edge. min-width:0 lets cards fill their track. */
.dropdown .menu-card-desc { white-space: nowrap; }
.dropdown.dd-resources .menu-card { min-width: 0; }

/* ==================================================================
   HEROFX POLISH PATCH v2 - mobile panel sizing (2026-07)
   Bigger, more readable cards in the hamburger menu on phones:
   44px icons / 14px titles read small on modern large phones.
   Scoped to .mobile-panel so desktop dropdowns are untouched.
   ================================================================== */
.mobile-panel .menu-card { padding: 12px; gap: 14px; }
.mobile-panel .menu-card-icon { width: 48px; height: 48px; }
.mobile-panel .menu-card-icon svg { width: 24px; height: 24px; }
.mobile-panel .menu-card-icon .brand-logo { width: 32px; height: 32px; }
.mobile-panel .menu-card-title { font-size: 16px; }
.mobile-panel .menu-card-desc { font-size: 13.5px; }

/* Language dropdown: line the two flags up vertically.

   The panel was anchored with `right: 0` and a `min-width` of 160px, but the
   trigger is only 84px wide, so the panel overhung it by 76px to the left and
   its flag sat 75px left of the trigger's flag. Anchoring left instead, and
   letting the panel size to its content, puts both flags on the same vertical
   line. The -1px offset cancels the panel's own 1px border, so the two flags
   land on exactly the same x.

   Selector carries the id because the Elementor header prints its own inline
   copy of this stylesheet after this file, and a plain .lang-menu here would
   lose to it. */
#langSwitch .lang-menu{
  left: -1px;
  right: auto;
  min-width: 0;
  width: max-content;
}
