/* ---------------------------------------------------------------------------
   igeckoo-ext.css — additions layered on top of the original app.css.

   Kept in a separate file on purpose: app.css is a byte-for-byte artifact of
   the recovered site, and the build only rewrites URLs inside it. Anything new
   lives here so the recovered stylesheet stays recognisable as the original.

   Palette is taken from app.css, nothing invented:
     #16a7df  .blue-2  section headings ("We look forward to hearing from you")
     #0085c4  .blue    darker step, used for hover
     #003f77  .blue-1  deep navy
     #5B6368  menu sprite grey (normal state)
     #1B77BC  menu sprite blue (hover state)

   Breakpoint contract inherited from app.css:
     >= 992px   .menu-computer visible, .menu-mobile hidden
     <= 991.98px .menu-computer hidden, .menu-mobile visible
   Every rule below is added to BOTH menus for that reason.
--------------------------------------------------------------------------- */

/* --- contact button -------------------------------------------------------
   Brand blue instead of Bootstrap's stock #007bff. */
.btn-brand {
    color: #fff;
    background-color: #16a7df;
    border-color: #16a7df;
}

/* The site already has a button language: 2.5rem type and an asymmetric radius
   (top-left + bottom-right rounded), used by "Tell me more" and every other
   call to action in app.css. The contact button was a stock Bootstrap pill and
   read as *less* important than the secondary buttons above it — backwards,
   since mailing us is the point of the section. Same shape, brand colour. */
.btn-contact {
    font-size: 2.5rem !important;
    padding: 10px 34px !important;
    border-top-left-radius: 20px;
    border-bottom-right-radius: 20px;
    border-top-right-radius: 0;
    border-bottom-left-radius: 0;
    line-height: 1.3;
    max-width: 100%;
    overflow-wrap: break-word;
}
.btn-brand:hover,
.btn-brand:active {
    color: #fff;
    background-color: #0085c4;
    border-color: #0085c4;
}
.btn-brand:focus {
    color: #fff;
    background-color: #0085c4;
    border-color: #0085c4;
    box-shadow: 0 0 0 .2rem rgba(22, 167, 223, .5);
}

/* --- EN | ES language switch --------------------------------------------- */
.lang-switch {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    font-family: Montserrat, sans-serif;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    letter-spacing: .04em;
}
/* Both navbars sit on #header{background:#1a1e1c} — near black. The Bootstrap
   class on the desktop one says "navbar-light", which refers to its link
   colours, NOT to its background: an earlier version of this file trusted that
   name and painted the switch deep navy (#003f77) at 50% opacity, which was
   effectively invisible against the dark bar. Colours here are chosen against
   the real background, and the inactive state is an explicit light grey rather
   than a faded dark one, so its contrast does not depend on opacity. */
.lang-switch button {
    background: none;
    border: 0;
    padding: 2px 3px;
    font: inherit;
    color: #b9c0c4;
    cursor: pointer;
    transition: color .15s ease;
}
.lang-switch button:hover {
    color: #fff;
}
.lang-switch button.is-active {
    color: #16a7df;
}
.lang-switch .sep {
    color: #6b7378;
}
.menu-computer .lang-switch {
    padding-right: 6px;
}
.menu-mobile .lang-switch {
    margin-right: 12px;
}

/* --- EMPRESAS (MX) menu circle -------------------------------------------
   Matches the other circles exactly: 55x55 block over a 55x110 sprite whose
   bottom half is the hover state. Sizing comes from app.css; only the image
   is declared here. */
#header .menu-computer .navbar-nav .nav-link#img-menu-empresas {
    background-image: url(../img/menu_empresas_sprite.png);
}

/* While the module is open, the MX circle holds its active state and the other
   six release theirs. app.js has a scroll handler that lights up whichever icon
   owns the section currently in view; with every one of those sections hidden
   it measures them all at offset 0 and settles on Contact, so the menu would
   claim we are somewhere we are not. Two ids beat the `:hover` / `.active`
   rules in app.css, which carry one. */
body.view-empresas #header .menu-computer .navbar-nav .nav-link.active:not(#img-menu-empresas) {
    background-position: top;
}
body.view-empresas #header .menu-computer .navbar-nav .nav-link#img-menu-empresas {
    background-position: bottom;
}

/* --- EMPRESAS sub-list in the mobile burger menu --------------------------
   The desktop panel and this list are generated from one array in
   inject_ext.py, so they cannot drift apart. app.css styles the burger's own
   links (1.6rem, 10px padding); these sit under one of them, so they step down
   a size and indent to read as children rather than as six more siblings. */
#header .menu-mobile #navbar-mobile .navbar-nav .emp-submenu {
    /* Deliberately NOT .navbar-nav: it is a list inside the nav, not a second
       nav. Sharing the class made `.navbar-nav > li` match both lists, which
       is a real hazard for anything selecting the menu's top-level entries. */
    list-style: none;
    padding-left: 18px;
    margin: 0 0 6px;
    border-left: 1px solid #3a4145;
}
#header .menu-mobile #navbar-mobile .navbar-nav .emp-submenu .nav-link {
    font-size: 1.35rem !important;
    padding: 6px 10px;
    color: #b9c0c4;
}
#header .menu-mobile #navbar-mobile .navbar-nav .emp-submenu .nav-link:hover {
    color: #16a7df;
}

/* --- responsive ---------------------------------------------------------
   app.css drops html to 62.5% below 992px; rems shrink with it. */
@media (max-width: 991.98px) {
    .emp-band { padding: 50px 0; }
    .emp-title, .emp-doc h1.emp-banner-title, .emp-doc h2.emp-solution-head, .emp-close .a { font-size: 3.8rem; }
    .emp-hero { grid-template-columns: 1fr; }
    .emp-disc { justify-self: center; }
    .emp-two { grid-template-columns: 1fr; gap: 20px; }
    .emp-cards { grid-template-columns: repeat(2, 1fr); }
    .emp-strip { grid-template-columns: repeat(2, 1fr); }
    .emp-strip-item:nth-child(n) { background: #003f77; }
    .emp-strip-item:nth-child(even) { background: #0085c4; }
    .emp-slab { padding: 36px 30px 40px; }
    .emp-split { grid-template-columns: 1fr; }
}

/* --- dropdown alignment (fix for a defect in the recovered CSS) ------------
   app.css positions each menu panel with a hand-tuned percentage of the NAV's
   width, because .dropdown-menu is absolute while its li.nav-item is static:

       #menu-data{left:35%}      #menu-cloud{left:44%}
       #menu-analytics{left:54%} #menu-consulting{left:42%}
       #menu-vacancy{left:70%}   #menu-contact{left:80%}

   Those numbers only hold for one particular nav width and exactly six
   circles, so the panels drifted from their icons as the viewport changed,
   #menu-consulting was already out of sequence (42% where ~63% was needed),
   and adding the seventh (MX) circle shifted every icon left while the panels
   stayed put, adding a constant ~87px error.

   Anchoring each panel to its own li makes the percentage meaningless and the
   position self-correcting: the panel is centred under its icon no matter how
   many circles exist or how wide the window is. white-space:nowrap restores
   the natural panel width, which would otherwise shrink-wrap to the 55px li.
   tools/test_site.py asserts the offset stays at 0. */
#header .menu-computer .navbar-nav > li.nav-item {
    position: relative;
}
#header .menu-computer .dropdown-menu#menu-data,
#header .menu-computer .dropdown-menu#menu-cloud,
#header .menu-computer .dropdown-menu#menu-analytics,
#header .menu-computer .dropdown-menu#menu-consulting,
#header .menu-computer .dropdown-menu#menu-vacancy,
#header .menu-computer .dropdown-menu#menu-contact,
#header .menu-computer .dropdown-menu#menu-empresas {
    left: 50%;
    transform: translateX(-50%);
    white-space: nowrap;
}
/* The MX panel is the only one with a real list under it — its siblings have
   one sub-entry at most, so app.css sets the title and the entry side by side
   with a 28px vertical rule between them (span.divisor). Six entries stacked
   under that rule leave it a 28px stub floating beside the first one.

   So for this panel the rule becomes the list's own left border: same 1px,
   same #004078, same 20px offset, running the full height of the list instead
   of a fixed 28px. Nothing about the other six changes.

   float:left from app.css also makes the <ul> shrink-wrap out of the flow,
   which would collapse the panel to zero height around it — hence the clear. */
#header .menu-computer .dropdown-menu#menu-empresas ul li:after {
    content: "";
    display: block;
    clear: both;
}
#header .menu-computer .dropdown-menu#menu-empresas ul li span.divisor {
    display: none;
}
#header .menu-computer .dropdown-menu#menu-empresas ul li ul {
    clear: both;
    float: none;
    display: block;
    margin: 8px 0 0 20px;
    padding-left: 14px;
    border-left: 1px solid #004078;
}
#header .menu-computer .dropdown-menu#menu-empresas ul li ul li a.right {
    display: block;
    line-height: 2;
    margin-top: 0;
}

/* --- contact section ------------------------------------------------------
   The recovered layout was built around a form: a narrow address column and a
   wide col-md-8 for the fields, divided by a vertical rule. The form is gone,
   so the rule now frames nothing and the column it framed is mostly empty.
   inject_ext.py re-lays the markup; these rules finish the job. */
#contact .contact.form {
    border-left: 0 !important;      /* the divider existed only for the form */
    padding-left: 15px !important;
}
#contact .contact-head {
    margin-bottom: 10px;
}
#contact .contact-cta {
    padding-bottom: 10px;
}
#contact .contact-invite {
    font-size: 1.7rem;
    color: #576368;
    margin-bottom: 14px;
}
#contact .contact-action {
    margin: 0;
}
/* Three equal address columns instead of one narrow one, filling the width the
   form used to take. app.css indents .contact by 50px, which is too much when
   the block is repeated three times across. */
#contact .contact-details .contact.data {
    padding: 20px 15px;
    margin-top: 20px;
}

@media (max-width: 767.98px) {
#contact .contact-cta {
        margin-top: 24px;
    }
    .btn-contact {
        font-size: 1.9rem !important;
        padding: 10px 22px !important;
    }
}

/* --- vacancy call to action ----------------------------------------------
   Same vestige as the contact block: app.css framed the application form with

       #vacancies .current-vacancies .form{border-top:2px solid #576368;
                                           padding-top:35px; margin-top:75px}

   a rule and a 75px gap that separated the job description from the fields.
   The form is gone, so the rule now divides the description from a two-line
   call to action and the gap just leaves a hole. The label and the address sit
   together as one idea instead. */
#vacancies .current-vacancies .form {
    border-top: 0 !important;
    padding-top: 0 !important;
    margin-top: 25px !important;
}
#vacancies .current-vacancies .form .contact-invite {
    margin-bottom: 10px;
}

/* --- EMPRESAS in the splash icon list -------------------------------------
   The splash has its own icon list, independent of the two navbars, and on a
   phone it IS the navigation — the navbar collapses into a burger menu, so the
   splash list is what a visitor actually scrolls through. Sizing and the hover
   swap come from app.css (.icon is 300x108 over a 108x216 sprite); only the
   image is declared here. */
#splash .right .icon#splash-empresas {
    background: url(../img/splash_empresas_sprite.png) 0 0 no-repeat;
}

/* --- floating WhatsApp button --------------------------------------------
   Bottom-right on every screen. WhatsApp green is the one colour outside the
   site palette: it is the channel's own identity; a blue WhatsApp reads as fake. */
.wa-btn {
    position: fixed; right: 22px; bottom: 22px; z-index: 1100;
    display: flex; align-items: center; gap: 10px;
    background: #25d366; color: #fff !important; text-decoration: none !important;
    padding: 12px 20px 12px 14px; border-radius: 30px;
    font-family: Roboto, sans-serif; font-weight: 700; font-size: 1.7rem !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
}
.wa-btn:hover { background: #1ebe5b; }
.wa-btn svg { width: 28px; height: 28px; flex: 0 0 28px; }
@media (max-width: 767.98px) {
.wa-btn { right: 14px; bottom: 14px; padding: 12px; }
    .wa-btn span { display: none; }
}

/* The EMPRESAS view's own styling — bands, cards, licence matrices, and the
   structural rule that hid every other block while it was open — was removed on
   2026-10-07 together with the view. The Mexico offer is a set of real pages
   now and they are styled by css/mx.css, which they load instead of this file.
   What survives here styles the HOME page, which did not change: the dropdown
   alignment fix, the language switch, the MX sprite, the mobile page list, the
   rebuilt contact and vacancy blocks and the WhatsApp button. */
