/* =====================================================================
   CQS Chemical Solutions — estilos para WordPress
   Generado desde assets/css/styles.css por 0-generador/build-wp.js.
   NO editar a mano: edita el original y vuelve a ejecutar el generador.

   Todo va encapsulado en :is(#cqs,.cqs), que pesa como un ID: ni Astra ni WPBakery
   entran, y estos estilos no salen del contenedor.
   --cqs-rem fija la base en 16px aunque el tema use html{font-size:62.5%}.
   ===================================================================== */
:is(#cqs,.cqs){ --cqs-rem:16px; }
/* ==========================================================================
   CQS Chemical Solutions — Shared Stylesheet
   Diseño basado en el brochure oficial 2026
   CQS S.A.
   ========================================================================== */
:is(#cqs,.cqs){
  /* Brochure Navy & Brand Tokens */
  --cqs-navy:#2A2C6A;
  --cqs-navy-dark:#1F2150;
  --cqs-navy-light:#3D3F84;

  /* Brand from Brandbook */
  --cqs-blue:#1E92D6;
  --cqs-blue-dark:#1474B0;
  --cqs-blue-deep:#0E5180;
  --cqs-blue-darker:#0A3E63;
  --cqs-blue-light:#E8F4FB;

  /* Yellow / Gold */
  --cqs-yellow:#F2B233;
  --cqs-yellow-soft:#FFE25F;
  --cqs-yellow-dark:#D69922;
  --cqs-yellow-light:#FFF1D0;

  /* Neutrals */
  --cqs-dark:#0F1729;
  --cqs-grey-900:#1F2937;
  --cqs-grey-700:#4A5568;
  --cqs-grey-500:#718096;
  --cqs-grey-300:#CBD5E0;
  --cqs-grey-200:#E2E8F0;
  --cqs-grey-100:#F4F7FA;
  --cqs-grey-50:#FAFBFD;
  --cqs-white:#FFFFFF;

  /* Typography */
  --font-display:'Plus Jakarta Sans',sans-serif;
  --font-heading:'Manrope',sans-serif;
  --font-body:'DM Sans',sans-serif;

  /* Radii */
  --radius-sm:6px;
  --radius-md:12px;
  --radius-lg:20px;
  --radius-xl:28px;

  /* Shadows */
  --shadow-xs:0 2px 6px rgba(14,81,128,0.06);
  --shadow-sm:0 4px 12px rgba(14,81,128,0.08);
  --shadow-md:0 10px 30px rgba(14,81,128,0.12);
  --shadow-lg:0 20px 50px rgba(14,81,128,0.18);
  --shadow-xl:0 30px 80px rgba(14,81,128,0.25);

  /* Motion */
  --transition:.45s cubic-bezier(.2,.8,.2,1);
  --bezier:cubic-bezier(.7,0,.3,1);
}

/* ---------- corte de herencia ----------
   Estas propiedades se HEREDAN del <body> del tema y el reset del sitio
   (*{margin:0;padding:0}) no las toca. Si Astra o una plantilla ponen
   body{letter-spacing:.02em; text-align:justify; font-size:1.8rem}, se cuelan
   en toda la web. Aquí se devuelven a su valor inicial en la raíz de .cqs.

   Solo propiedades HEREDABLES, y ninguna que el sitio ya fije en su body{}
   (font-family, color y line-height vienen de ahí y se aplican a este mismo
   selector unas líneas más arriba: repetirlas aquí las rompería).
   Tampoco list-style: el sitio la fija en ul{} y forzarla aquí cambiaría el
   valor heredado en TODOS los elementos respecto del original. */
:is(#cqs,.cqs){
  /* En el original el <body> vale 16px, el valor por defecto del navegador:
     el mismo que --cqs-rem, así todo el sitio mide igual aunque el tema use
     html{font-size:62.5%}. */
  font-size:var(--cqs-rem);
  /* text-align:start, no left. Se ven igual, pero el original computa "start"
     y con "left" salen cientos de diferencias falsas al medir. */
  text-align:start;
  letter-spacing:normal; word-spacing:normal; text-indent:0;
  text-transform:none; font-style:normal; font-variant:normal; text-shadow:none;
  white-space:normal; direction:ltr; font-stretch:normal;
}

/* ---------- reset interno: neutraliza tema y WPBakery dentro de .cqs ----------
   El sitio ya trae *{margin:0;padding:0;box-sizing:border-box}, pero el tema
   puede pintar elementos que ese reset no cubre (fondos, bordes, tablas). */
:is(#cqs,.cqs) :is(div,section,article,aside,main,header,footer,nav,form,figure,figcaption){
  background:none; border-width:0; float:none;
}
/* border-width:0, NUNCA "border:0": el atajo tocaría también el estilo y el
   color, y algunas reglas del sitio solo fijan el ancho.
   El COLOR sí hay que devolverlo a su valor inicial (currentcolor) aparte: el
   tema pone img{border:3px solid pink} y, aunque el ancho quede en 0, el color
   heredado seguía siendo rosa y aparecía en cuanto algo daba ancho al borde. */
:is(#cqs,.cqs) :is(div,section,article,aside,main,header,footer,nav,form,figure,figcaption,
         table,tr,td,th,img,iframe,ul,ol,li,p,span,a,h1,h2,h3,h4,h5,h6){
  border-color:currentcolor;
}
:is(#cqs,.cqs) :is(table,tr,td,th){ border-width:0; background:none; }
:is(#cqs,.cqs) img{ border-width:0; box-shadow:none; }
:is(#cqs,.cqs) iframe{ border-width:0; }

/* Titulares: heredan del contenedor, como en el original. "inherit" y no
   valores fijos, para reproducir exactamente lo que hacía el sitio estático.
   (font-family, color, line-height y letter-spacing sí los fija el propio
   styles.css en h1-h6 y por eso no aparecen aquí.) */
:is(#cqs,.cqs) :is(h1,h2,h3,h4,h5,h6){
  font-style:inherit; text-transform:inherit; word-spacing:inherit; text-align:inherit;
  padding:0; border-width:0; background:none; text-shadow:none;
}

/* Astra define reglas como nav a{font-weight:400} o .site-footer a{color:...}
   que ganan a la herencia. En el original estos enlaces heredan del padre.

   ⚠️ UN SOLO SELECTOR, "${P} a", y nada más específico. Pesa (1,0,1): le gana
   al "nav a" del tema (0,0,2) y PIERDE contra cualquier regla del propio sitio
   que lleve una clase, como ".nav-menu a" (1,1,1). Ese equilibrio es todo el
   truco. La versión anterior usaba ":is(nav,header,footer) a:not(...)", que
   pesa (1,1,3) y le ganaba al propio sitio: los enlaces del menú perdían su
   color y salían con el gris del body. */
:is(#cqs,.cqs) a{ box-shadow:none; background:none; font-family:inherit; font-size:inherit;
        font-weight:inherit; line-height:inherit; text-align:inherit;
        text-transform:inherit; letter-spacing:inherit; font-style:inherit; }
:is(#cqs,.cqs) a:hover{ text-decoration:none; }

/* Campos de formulario: Astra los engorda (min-height, fondo gris, borde).
   "revert" —y no un valor fijo— devuelve la apariencia del NAVEGADOR, que es
   justo lo que tenían en el original: el sitio no les da tamaño de letra ni
   fondo, así que usaban el del navegador (13.33px y blanco en los <input>).
   Con "background:none" los campos del chatbot salían transparentes, y con el
   font-size del tema los iconos de los botones crecían de 13 a 16px. */
:is(#cqs,.cqs) :is(button,input,select,textarea){
  min-height:0; height:auto; letter-spacing:normal; text-transform:none;
  text-shadow:none; box-shadow:none; font-size:revert; text-align:revert; color:revert;
  /* line-height:revert = "normal", el del navegador para los controles de
     formulario. Bootstrap pone .btn{line-height:1.5} y el botón de enviar del
     formulario de contacto salía 2px más alto que en el original. */
  line-height:revert;
}
:is(#cqs,.cqs) :is(input,select,textarea){ background:revert; }

/* Font Awesome: WPBakery arrastra su propia copia de Font Awesome 5, que
   define .fa-solid/.fas con la familia "Font Awesome 5 Free". El sitio usa la
   6.5.1 y los iconos saldrían como cuadraditos. */
:is(#cqs,.cqs) :is(.fa-solid,.fas){ font-family:"Font Awesome 6 Free"; font-weight:900; }
:is(#cqs,.cqs) :is(.fa-regular,.far){ font-family:"Font Awesome 6 Free"; font-weight:400; }
:is(#cqs,.cqs) :is(.fa-brands,.fab){ font-family:"Font Awesome 6 Brands"; font-weight:400; }

/* Clases genéricas que Bootstrap (y media docena de plugins) también definen
   y que el sitio usa con otro significado. */
/* Divi define .container{position:relative} y el sitio usa .container 77 veces:
   en el original todas son "static". Un position distinto cambia el contexto de
   los hijos absolutos, así que no es un detalle cosmético. */
:is(#cqs,.cqs) .container{ width:100%; max-width:1280px; margin:0 auto; padding:0 24px; position:static; }
:is(#cqs,.cqs) .row{ display:revert; flex-wrap:revert; margin:0; }
/* ⚠️ list-style:INHERIT, no "none". list-style se HEREDA: el <nav class="nav">
   del header se la pasaba a sus 21 descendientes y ninguno coincidía con el
   original, que hereda "disc" del body. Con inherit se comporta igual que si
   no hubiera regla, que es lo que pasa en el sitio estático. */
:is(#cqs,.cqs) .nav{ display:revert; flex-wrap:revert; padding:0; margin:0; list-style:inherit; background-color:transparent; }
/* Mismo caso: Bootstrap pone list-style:none en estas clases y, como se
   hereda, se la pasaban a todos sus hijos (el breadcrumb de /productos/
   arrastraba 4 elementos). inherit = comportarse como si no hubiera regla. */
:is(#cqs,.cqs) :is(.breadcrumb,.menu,.list-unstyled,.list-inline,.pagination){ list-style:inherit; }
:is(#cqs,.cqs) .breadcrumb{ display:revert; padding:0; margin:0; background:none; }
/* Bootstrap define .btn{border:1px solid transparent}: 2px de más de alto y de
   ancho en los 69 botones del sitio. Va aquí arriba para que cualquier regla
   del propio sitio sobre .btn —que viene después en el archivo— le gane. */
:is(#cqs,.cqs) .btn{ border-width:0; }
:is(#cqs,.cqs) .card{ background:revert; border:0; border-radius:inherit; }
:is(#cqs,.cqs) .badge{ padding:revert; font-size:inherit; line-height:inherit; border-radius:inherit; }
:is(#cqs,.cqs) .modal{ position:revert; inset:revert; width:revert; height:revert; overflow:revert; }

:is(#cqs,.cqs), :is(#cqs,.cqs) *{margin:0;padding:0;box-sizing:border-box;}
:is(#cqs,.cqs){scroll-behavior:smooth;}
:is(#cqs,.cqs){
  font-family:var(--font-body);
  color:var(--cqs-grey-700);
  line-height:1.65;
  background:var(--cqs-white);
  overflow-x:hidden;
}
:is(#cqs,.cqs) img{max-width:100%;display:block;}
:is(#cqs,.cqs) a{text-decoration:none;color:inherit;transition:color var(--transition);}
:is(#cqs,.cqs) ul{list-style:none;}
:is(#cqs,.cqs) button{cursor:pointer;border:0;background:none;font-family:inherit;}
:is(#cqs,.cqs) h1, :is(#cqs,.cqs) h2, :is(#cqs,.cqs) h3, :is(#cqs,.cqs) h4, :is(#cqs,.cqs) h5, :is(#cqs,.cqs) h6{
  font-family:var(--font-heading);
  color:var(--cqs-navy);
  line-height:1.18;
  font-weight:800;
  letter-spacing:-0.02em;
}
:is(#cqs,.cqs)::selection, :is(#cqs,.cqs) ::selection{background:var(--cqs-yellow);color:var(--cqs-navy);}
:is(#cqs,.cqs) .container{
  width:100%;
  max-width:1280px;
  margin:0 auto;
  padding:0 24px;
}
/* ==========================================================================
   Section primitives
   ========================================================================== */
:is(#cqs,.cqs) .section{padding:110px 0;position:relative;}
:is(#cqs,.cqs) .section-tag{
  display:inline-flex;align-items:center;gap:14px;
  color:var(--cqs-yellow);
  font-family:var(--font-heading);font-weight:800;
  font-size:14px;letter-spacing:0.18em;text-transform:uppercase;
  margin-bottom:18px;
}
:is(#cqs,.cqs) .section-tag::before{
  content:"\f078";
  font-family:"Font Awesome 6 Free";font-weight:900;
  color:var(--cqs-yellow);font-size:18px;
}
:is(#cqs,.cqs) .section-tag.alt{color:var(--cqs-blue);}
:is(#cqs,.cqs) .section-tag.alt::before{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .section-title{
  font-size:clamp(28px, 3.6vw, 50px);
  margin-bottom:18px;line-height:1.1;
  font-family:var(--font-display);
}
:is(#cqs,.cqs) .section-title .accent-yellow{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .section-title .accent-blue{color:var(--cqs-blue);}
:is(#cqs,.cqs) .section-lead{color:var(--cqs-grey-700);font-size:17px;max-width:720px;line-height:1.7;}
:is(#cqs,.cqs) .text-center{text-align:center;}
:is(#cqs,.cqs) .text-center .section-tag{justify-content:center;}
:is(#cqs,.cqs) .text-center .section-lead{margin:0 auto;}
/* Sections on dark navy background */
:is(#cqs,.cqs) .section-dark{
  background:var(--cqs-navy);color:#fff;
  position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .section-dark h1, :is(#cqs,.cqs) .section-dark h2, :is(#cqs,.cqs) .section-dark h3, :is(#cqs,.cqs) .section-dark h4, :is(#cqs,.cqs) .section-dark h5{color:#fff;}
:is(#cqs,.cqs) .section-dark .section-lead{color:rgba(255,255,255,0.85);}
/* Decorative curve (white arc on navy bg or vice versa) */
:is(#cqs,.cqs) .curve-wrap{position:relative;overflow:hidden;}
:is(#cqs,.cqs) .curve-wrap::before{
  content:"";position:absolute;
  width:140%;height:140%;
  top:-20%;left:-70%;
  border-radius:50%;
  background:#fff;
  z-index:0;
}
:is(#cqs,.cqs) .curve-wrap.curve-right::before{left:auto;right:-70%;}
:is(#cqs,.cqs) .curve-wrap > *{position:relative;z-index:1;}
/* Yellow corner accent (chevron) - replicates brochure style */
:is(#cqs,.cqs) .section-with-arrow{position:relative;}
:is(#cqs,.cqs) .section-with-arrow::before{
  content:"";position:absolute;
  top:30px;left:30px;
  width:34px;height:34px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23F2B233'><path d='M7 10l5 5 5-5z'/></svg>") center/contain no-repeat;
  z-index:5;
}
/* ==========================================================================
   Buttons
   ========================================================================== */
:is(#cqs,.cqs) .btn{
  display:inline-flex;align-items:center;gap:12px;
  padding:16px 34px;border-radius:50px;
  font-family:var(--font-heading);font-weight:700;
  font-size:14px;letter-spacing:0.04em;text-transform:uppercase;
  transition:all var(--transition);position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .btn::before{
  content:"";position:absolute;inset:0;
  background:rgba(255,255,255,0.18);
  transform:translateX(-100%);transition:transform 0.5s var(--bezier);
}
:is(#cqs,.cqs) .btn:hover::before{transform:translateX(0);}
:is(#cqs,.cqs) .btn > *{position:relative;z-index:1;}
:is(#cqs,.cqs) .btn-primary{background:var(--cqs-blue);color:#fff;box-shadow:0 8px 24px rgba(30,146,214,0.4);}
:is(#cqs,.cqs) .btn-primary:hover{background:var(--cqs-blue-deep);transform:translateY(-3px);}
:is(#cqs,.cqs) .btn-yellow{background:var(--cqs-yellow);color:var(--cqs-navy);box-shadow:0 8px 24px rgba(242,178,51,0.4);}
:is(#cqs,.cqs) .btn-yellow:hover{transform:translateY(-3px);background:var(--cqs-yellow-dark);}
:is(#cqs,.cqs) .btn-navy{background:var(--cqs-navy);color:#fff;box-shadow:0 8px 24px rgba(42,44,106,0.4);}
:is(#cqs,.cqs) .btn-navy:hover{transform:translateY(-3px);background:var(--cqs-navy-dark);}
:is(#cqs,.cqs) .btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,0.5);}
:is(#cqs,.cqs) .btn-outline:hover{background:#fff;color:var(--cqs-navy);border-color:#fff;transform:translateY(-3px);}
:is(#cqs,.cqs) .btn-outline-dark{background:transparent;color:var(--cqs-navy);border:2px solid var(--cqs-navy);}
:is(#cqs,.cqs) .btn-outline-dark:hover{background:var(--cqs-navy);color:#fff;}
/* ==========================================================================
   Topbar
   ========================================================================== */
:is(#cqs,.cqs) .topbar{
  background:var(--cqs-navy-dark);color:#dbeaf3;
  font-size:13px;padding:11px 0;position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .topbar::before{
  content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(242,178,51,0.1),transparent);
  animation:cqs-topShine 8s ease-in-out infinite;
}
@keyframes cqs-topShine{0%,100%{left:-100%;}50%{left:200%;}}
:is(#cqs,.cqs) .topbar .row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;position:relative;z-index:1;}
:is(#cqs,.cqs) .topbar-info{display:flex;gap:28px;flex-wrap:wrap;}
:is(#cqs,.cqs) .topbar-info span{display:inline-flex;align-items:center;gap:8px;}
:is(#cqs,.cqs) .topbar-info i{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .topbar-info a:hover{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .topbar-social{display:flex;gap:14px;}
:is(#cqs,.cqs) .topbar-social a{
  width:30px;height:30px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,0.08);color:#fff;font-size:12px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .topbar-social a:hover{background:var(--cqs-yellow);color:var(--cqs-navy);transform:translateY(-3px) rotate(-6deg);}
/* ==========================================================================
   Header / Navigation
   ========================================================================== */
:is(#cqs,.cqs) .header{
  background:#fff;
  box-shadow:0 2px 20px rgba(14,81,128,0.06);
  position:sticky;top:0;z-index:100;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .header.scrolled{box-shadow:0 4px 30px rgba(14,81,128,0.12);}
:is(#cqs,.cqs) .nav{display:flex;align-items:center;justify-content:space-between;padding:18px 0;}
:is(#cqs,.cqs) .logo{display:flex;align-items:center;gap:14px;transition:transform var(--transition);}
:is(#cqs,.cqs) .logo:hover{transform:scale(1.03);}
:is(#cqs,.cqs) .logo-img{
  height:60px;
  width:auto;
  flex-shrink:0;
  transition:transform 0.6s cubic-bezier(.2,.8,.2,1);
  /* Force GPU compositing for cleaner rendering on white backgrounds */
  transform:translateZ(0);
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
  image-rendering:-webkit-optimize-contrast;
  image-rendering:auto;
}
:is(#cqs,.cqs) .logo:hover .logo-img{animation:cqs-logoFloat 1.5s ease-in-out;}
@keyframes cqs-logoFloat{
  0%,100%{transform:translateZ(0) translateY(0);}
  50%{transform:translateZ(0) translateY(-3px);}
}
:is(#cqs,.cqs) .logo-img-footer{
  /* Same size and treatment as header — only adds slight brightness for dark bg */
  filter:brightness(1.05);
}
:is(#cqs,.cqs) .logo-tagline{
  display:block;font-family:var(--font-body);font-weight:600;
  font-size:11px;color:var(--cqs-grey-500);
  letter-spacing:0.28em;text-transform:uppercase;line-height:1.4;
  border-left:2px solid var(--cqs-yellow);
  padding-left:14px;
}
:is(#cqs,.cqs) .footer .logo-tagline{color:#7a8597;}
:is(#cqs,.cqs) .nav-menu{display:flex;gap:32px;align-items:center;}
:is(#cqs,.cqs) .nav-menu a{
  font-family:var(--font-heading);font-weight:600;font-size:14.5px;
  color:var(--cqs-grey-900);position:relative;padding:6px 0;
}
:is(#cqs,.cqs) .nav-menu a:hover, :is(#cqs,.cqs) .nav-menu a.active{color:var(--cqs-blue);}
:is(#cqs,.cqs) .nav-menu a::after{
  content:"";position:absolute;bottom:0;left:0;
  width:0;height:2px;background:var(--cqs-yellow);transition:width var(--transition);
}
:is(#cqs,.cqs) .nav-menu a:hover::after, :is(#cqs,.cqs) .nav-menu a.active::after{width:100%;}
:is(#cqs,.cqs) .nav-cta{display:flex;align-items:center;gap:18px;}
:is(#cqs,.cqs) .nav-phone{display:flex;align-items:center;gap:12px;}
:is(#cqs,.cqs) .nav-phone-ico{
  width:46px;height:46px;border-radius:50%;
  background:var(--cqs-blue-light);color:var(--cqs-blue);
  display:flex;align-items:center;justify-content:center;font-size:18px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .nav-phone:hover .nav-phone-ico{background:var(--cqs-blue);color:#fff;transform:rotate(15deg);}
:is(#cqs,.cqs) .nav-phone small{display:block;font-size:11px;color:var(--cqs-grey-500);text-transform:uppercase;letter-spacing:0.1em;}
:is(#cqs,.cqs) .nav-phone strong{font-family:var(--font-heading);font-weight:700;color:var(--cqs-navy);font-size:15px;}
:is(#cqs,.cqs) .menu-toggle{display:none;font-size:24px;color:var(--cqs-navy);background:transparent;border:0;}
/* ==========================================================================
   Page Hero (reusable for inner pages)
   ========================================================================== */
:is(#cqs,.cqs) .page-hero{
  background:linear-gradient(120deg, rgba(42,44,106,0.96), rgba(14,81,128,0.85)),
             url('/wp-content/uploads/cqs/assets/images/copper-cathodes-2.jpg') center/cover no-repeat;
  color:#fff;padding:140px 0 100px;position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .page-hero::after{
  content:"";position:absolute;
  right:-100px;bottom:-80px;width:380px;height:380px;
  border-radius:50%;
  background:rgba(242,178,51,0.08);
}
:is(#cqs,.cqs) .page-hero .breadcrumb{
  display:flex;gap:12px;align-items:center;
  font-size:13px;color:rgba(255,255,255,0.8);
  margin-bottom:18px;font-family:var(--font-heading);font-weight:600;
  letter-spacing:0.1em;text-transform:uppercase;
}
:is(#cqs,.cqs) .page-hero .breadcrumb a{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .page-hero .breadcrumb i{color:rgba(255,255,255,0.4);font-size:10px;}
:is(#cqs,.cqs) .page-hero h1{
  font-size:clamp(36px, 5vw, 64px);color:#fff;
  margin-bottom:18px;font-family:var(--font-display);
  line-height:1.05;
}
:is(#cqs,.cqs) .page-hero h1 .accent{color:var(--cqs-yellow);}
:is(#cqs,.cqs) .page-hero p{font-size:18px;color:rgba(255,255,255,0.9);max-width:640px;line-height:1.6;}
/* Variant heroes for different pages */
:is(#cqs,.cqs) .page-hero.hero-products{background-image:linear-gradient(120deg, rgba(42,44,106,0.94), rgba(14,81,128,0.82)),url('/wp-content/uploads/cqs/assets/images/mill-operations.jpg');}
:is(#cqs,.cqs) .page-hero.hero-process{background-image:linear-gradient(120deg, rgba(42,44,106,0.94), rgba(14,81,128,0.82)),url('/wp-content/uploads/cqs/assets/images/processing-facility.jpg');}
:is(#cqs,.cqs) .page-hero.hero-clients{background-image:linear-gradient(120deg, rgba(42,44,106,0.96), rgba(14,81,128,0.85)),url('/wp-content/uploads/cqs/assets/images/workers-loading.jpg');}
:is(#cqs,.cqs) .page-hero.hero-contact{background-image:linear-gradient(120deg, rgba(42,44,106,0.96), rgba(14,81,128,0.85)),url('/wp-content/uploads/cqs/assets/images/cqs-facility.jpg');}
:is(#cqs,.cqs) .page-hero.hero-support{background-image:linear-gradient(120deg, rgba(42,44,106,0.96), rgba(14,81,128,0.85)),url('/wp-content/uploads/cqs/assets/images/workers-hazmat.jpg');}
:is(#cqs,.cqs) .page-hero.hero-nahs{background-image:linear-gradient(120deg, rgba(42,44,106,0.96), rgba(14,81,128,0.85)),url('/wp-content/uploads/cqs/assets/images/nahs-tanks-1.jpg');}
/* ==========================================================================
   Reusable cards / blocks
   ========================================================================== */
:is(#cqs,.cqs) .info-card{
  background:#fff;padding:36px 32px;border-radius:var(--radius-lg);
  border:1px solid #eef2f7;transition:all var(--transition);
  box-shadow:0 4px 20px rgba(14,81,128,0.05);
}
:is(#cqs,.cqs) .info-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md);}
:is(#cqs,.cqs) .info-card .ico{
  width:64px;height:64px;border-radius:16px;
  background:linear-gradient(135deg,var(--cqs-blue),var(--cqs-blue-deep));color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:26px;margin-bottom:20px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .info-card:hover .ico{transform:rotate(-8deg) scale(1.05);}
:is(#cqs,.cqs) .info-card.alt .ico{background:linear-gradient(135deg,var(--cqs-yellow),var(--cqs-yellow-dark));color:var(--cqs-navy);}
:is(#cqs,.cqs) .info-card h3{font-size:20px;margin-bottom:12px;color:var(--cqs-navy);}
:is(#cqs,.cqs) .info-card p{font-size:15px;color:var(--cqs-grey-700);line-height:1.65;}
/* Bullet list with checkmarks */
:is(#cqs,.cqs) .bullet-list{display:grid;gap:14px;}
:is(#cqs,.cqs) .bullet-list li{
  display:flex;align-items:flex-start;gap:14px;
  font-size:15px;color:var(--cqs-grey-700);line-height:1.55;
}
:is(#cqs,.cqs) .bullet-list i{
  width:24px;height:24px;border-radius:50%;
  background:var(--cqs-yellow);color:var(--cqs-navy);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;flex-shrink:0;margin-top:2px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .bullet-list li:hover i{transform:scale(1.15) rotate(15deg);}
:is(#cqs,.cqs) .section-dark .bullet-list li{color:rgba(255,255,255,0.92);}
/* CTA Banner (yellow band) */
:is(#cqs,.cqs) .cta-banner{
  padding:80px 0;
  background-image:linear-gradient(120deg, rgba(242,178,51,0.95), rgba(214,153,34,0.92)),
                   url('/wp-content/uploads/cqs/assets/images/mineral-processing.jpg');
  background-size:cover;background-position:center;
  color:var(--cqs-navy);position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .cta-banner::before{
  content:"";position:absolute;right:-120px;top:50%;transform:translateY(-50%);
  width:400px;height:400px;border:60px solid rgba(255,255,255,0.15);border-radius:50%;
  animation:cqs-rotate 25s linear infinite;
}
@keyframes cqs-rotate{from{transform:translateY(-50%) rotate(0);}to{transform:translateY(-50%) rotate(360deg);}}
:is(#cqs,.cqs) .cta-row{
  display:flex;align-items:center;justify-content:space-between;gap:40px;
  flex-wrap:wrap;position:relative;z-index:1;
}
:is(#cqs,.cqs) .cta-row h2{color:var(--cqs-navy);font-size:clamp(26px, 3vw, 40px);max-width:680px;margin-bottom:6px;}
:is(#cqs,.cqs) .cta-row p{color:rgba(42,44,106,0.85);font-size:17px;font-weight:500;}
/* ==========================================================================
   Footer
   ========================================================================== */
:is(#cqs,.cqs) .footer{
  background:var(--cqs-dark);color:#cbd5e0;
  padding-top:90px;position:relative;overflow:hidden;
}
:is(#cqs,.cqs) .footer::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--cqs-blue),var(--cqs-yellow),var(--cqs-blue));
}
:is(#cqs,.cqs) .footer::after{
  content:"";position:absolute;top:30%;right:-100px;
  width:300px;height:300px;border-radius:50%;
  background:radial-gradient(circle,rgba(30,146,214,0.08),transparent 70%);
}
:is(#cqs,.cqs) .footer-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:50px;
  padding-bottom:60px;position:relative;z-index:1;
}
:is(#cqs,.cqs) .footer-col h5{
  color:#fff;font-size:18px;margin-bottom:24px;font-weight:700;
  position:relative;padding-bottom:14px;
}
:is(#cqs,.cqs) .footer-col h5::after{
  content:"";position:absolute;left:0;bottom:0;
  width:36px;height:2px;background:var(--cqs-yellow);
}
:is(#cqs,.cqs) .footer-brand p{font-size:14px;line-height:1.75;margin:18px 0 24px;color:#a8b2c1;}
:is(#cqs,.cqs) .footer-brand .logo-text{color:#fff;}
:is(#cqs,.cqs) .footer-brand .logo-tagline{color:#7a8597;}
:is(#cqs,.cqs) .footer-social{display:flex;gap:10px;}
:is(#cqs,.cqs) .footer-social a{
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,0.06);color:#cbd5e0;
  display:flex;align-items:center;justify-content:center;font-size:14px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .footer-social a:hover{background:var(--cqs-yellow);color:var(--cqs-navy);transform:translateY(-3px) rotate(-6deg);}
:is(#cqs,.cqs) .footer-links li{margin-bottom:12px;}
:is(#cqs,.cqs) .footer-links a{
  font-size:14px;color:#a8b2c1;
  display:inline-flex;align-items:center;gap:10px;
  transition:all var(--transition);
}
:is(#cqs,.cqs) .footer-links a::before{
  content:"\f054";font-family:"Font Awesome 6 Free";font-weight:900;
  font-size:9px;color:var(--cqs-yellow);
}
:is(#cqs,.cqs) .footer-links a:hover{color:#fff;padding-left:8px;}
:is(#cqs,.cqs) .footer-contact li{display:flex;gap:14px;margin-bottom:18px;font-size:14px;color:#a8b2c1;line-height:1.6;}
:is(#cqs,.cqs) .footer-contact i{color:var(--cqs-yellow);margin-top:4px;flex-shrink:0;}
:is(#cqs,.cqs) .footer-bottom{
  border-top:1px solid rgba(255,255,255,0.08);padding:26px 0;
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:16px;font-size:13px;color:#7a8597;
  position:relative;z-index:1;
}
:is(#cqs,.cqs) .footer-bottom strong{color:var(--cqs-yellow);}
/* ==========================================================================
   Floating Action Buttons
   ========================================================================== */
:is(#cqs,.cqs) .float-actions{
  position:fixed;right:24px;bottom:24px;
  display:flex;flex-direction:column;gap:12px;z-index:99;
}
:is(#cqs,.cqs) .float-btn{
  width:58px;height:58px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:24px;
  box-shadow:0 8px 20px rgba(0,0,0,0.18);
  transition:all var(--transition);
  border:0;cursor:pointer;position:relative;
}
:is(#cqs,.cqs) .float-btn.whatsapp{background:#25D366;}
:is(#cqs,.cqs) .float-btn.whatsapp:hover{transform:scale(1.1) rotate(-6deg);background:#1ebe57;}
:is(#cqs,.cqs) .float-btn.scroll-top{
  background:var(--cqs-blue);opacity:0;pointer-events:none;font-size:18px;
}
:is(#cqs,.cqs) .float-btn.scroll-top.show{opacity:1;pointer-events:auto;}
:is(#cqs,.cqs) .float-btn.scroll-top:hover{background:var(--cqs-blue-deep);transform:translateY(-3px);}
:is(#cqs,.cqs) .whatsapp-pulse{
  position:absolute;inset:-3px;border-radius:50%;
  border:2px solid #25D366;animation:cqs-wapulse 2s infinite;pointer-events:none;
}
@keyframes cqs-wapulse{0%{transform:scale(1);opacity:0.7;}100%{transform:scale(1.6);opacity:0;}}
/* ==========================================================================
   Scroll-reveal animations
   ========================================================================== */
:is(#cqs,.cqs) .reveal{opacity:0;transform:translateY(40px);transition:opacity 0.9s ease,transform 0.9s ease;}
:is(#cqs,.cqs) .reveal.active{opacity:1;transform:translateY(0);}
:is(#cqs,.cqs) .reveal-left{opacity:0;transform:translateX(-40px);transition:opacity 0.9s ease,transform 0.9s ease;}
:is(#cqs,.cqs) .reveal-left.active{opacity:1;transform:translateX(0);}
:is(#cqs,.cqs) .reveal-right{opacity:0;transform:translateX(40px);transition:opacity 0.9s ease,transform 0.9s ease;}
:is(#cqs,.cqs) .reveal-right.active{opacity:1;transform:translateX(0);}
:is(#cqs,.cqs) .reveal:nth-child(2), :is(#cqs,.cqs) .reveal-left:nth-child(2), :is(#cqs,.cqs) .reveal-right:nth-child(2){transition-delay:.12s;}
:is(#cqs,.cqs) .reveal:nth-child(3), :is(#cqs,.cqs) .reveal-left:nth-child(3), :is(#cqs,.cqs) .reveal-right:nth-child(3){transition-delay:.24s;}
:is(#cqs,.cqs) .reveal:nth-child(4), :is(#cqs,.cqs) .reveal-left:nth-child(4), :is(#cqs,.cqs) .reveal-right:nth-child(4){transition-delay:.36s;}
:is(#cqs,.cqs) .reveal:nth-child(5), :is(#cqs,.cqs) .reveal-left:nth-child(5), :is(#cqs,.cqs) .reveal-right:nth-child(5){transition-delay:.48s;}
/* ==========================================================================
   Mobile-only elements — hidden by default on desktop
   ========================================================================== */
:is(#cqs,.cqs) .mobile-menu-header, :is(#cqs,.cqs) .mobile-menu-cta, :is(#cqs,.cqs) .mobile-menu-social{
  display: none;
}
:is(#cqs,.cqs) .menu-toggle{
  display: none;
}
/* ==========================================================================
   Responsive
   ========================================================================== */
@media(max-width:1024px){
/* === MODERN MOBILE DRAWER MENU === */
:is(#cqs,.cqs) .nav-menu{
    /* Hidden by default — slides in from right */
    display:flex !important;
    flex-direction:column;
    position:fixed !important;
    top:0;
    right:-100%;
    bottom:0;
    width:85%;
    max-width:380px;
    /* SOLID opaque background — multiple declarations for browser compatibility */
    background-color:#ffffff !important;
    background:#ffffff !important;
    background-image:none !important;
    opacity:1 !important;
    padding:0;
    margin:0;
    list-style:none;
    overflow-y:auto;
    overflow-x:hidden;
    transition:right 0.4s cubic-bezier(.7,0,.3,1);
    /* Very high z-index to escape any parent stacking context */
    z-index:200 !important;
    /* Isolate stacking context so nothing bleeds through */
    isolation:isolate;
    box-shadow:-12px 0 40px rgba(14,81,128,0.18);
    align-items:stretch;
    gap:0;
    /* Force own rendering layer to avoid inherited filters/opacity */
    will-change:transform;
    transform:translateZ(0);
  }
/* Override the slide-in transition with transform animation */
:is(#cqs,.cqs) .nav-menu.open{
    right:0;
  }
/* Menu drawer header (logo gradient + close button) */
:is(#cqs,.cqs) .mobile-menu-header{
    display:flex !important;
    justify-content:space-between;
    align-items:center;
    padding:22px 24px;
    background:linear-gradient(135deg,var(--cqs-navy),var(--cqs-blue-deep));
    color:#fff;
    border-bottom:0;
  }
:is(#cqs,.cqs) .mobile-menu-header span{
    font-family:var(--font-heading);
    font-weight:800;
    font-size:18px;
    letter-spacing:0.04em;
    text-transform:uppercase;
  }
:is(#cqs,.cqs) .mobile-menu-close{
    width:40px;height:40px;
    border-radius:50%;
    background:rgba(255,255,255,0.15);
    color:#fff;border:0;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;font-size:16px;
    transition:all 0.3s cubic-bezier(.7,0,.3,1);
  }
:is(#cqs,.cqs) .mobile-menu-close:hover{
    background:var(--cqs-yellow);color:var(--cqs-navy);
    transform:rotate(90deg);
  }
/* Menu items */
:is(#cqs,.cqs) .nav-menu li{
    list-style:none;
    border-bottom:1px solid #f4f7fa;
  }
:is(#cqs,.cqs) .nav-menu > li > a{
    display:flex !important;
    align-items:center;
    gap:14px;
    padding:20px 26px !important;
    font-family:var(--font-heading);
    font-weight:700 !important;
    font-size:16px !important;
    color:#0F1729 !important;          /* near-black for max contrast */
    opacity:1 !important;
    text-decoration:none !important;
    transition:all 0.25s ease;
    position:relative;
    border-left:3px solid transparent;
  }
:is(#cqs,.cqs) .nav-menu > li > a:hover, :is(#cqs,.cqs) .nav-menu > li > a.active{
    background:var(--cqs-blue-light) !important;
    color:var(--cqs-blue-deep) !important;
    border-left-color:var(--cqs-yellow) !important;
    padding-left:30px !important;
  }
:is(#cqs,.cqs) .nav-menu > li > a::before, :is(#cqs,.cqs) .nav-menu > li > a::after{ display:none !important; }
/* Add a small chevron on hover/active */
:is(#cqs,.cqs) .nav-menu > li > a::after{
    content:"\f054" !important;
    font-family:"Font Awesome 6 Free" !important;
    font-weight:900;
    margin-left:auto;
    font-size:11px;
    color:var(--cqs-yellow);
    opacity:0;
    transform:translateX(-6px);
    transition:all 0.25s ease;
    display:flex !important;
    align-items:center;
    width:auto;
    height:auto;
    background:none !important;
    position:static !important;
  }
:is(#cqs,.cqs) .nav-menu > li > a:hover::after, :is(#cqs,.cqs) .nav-menu > li > a.active::after{
    opacity:1;
    transform:translateX(0);
  }
/* CTA section inside drawer (WhatsApp + Email + Cotizar) */
:is(#cqs,.cqs) .mobile-menu-cta{
    display:flex !important;
    flex-direction:column;
    padding:20px 24px;
    gap:10px;
    background:var(--cqs-grey-50);
    border:0 !important;
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link{
    display:flex !important;
    align-items:center;
    gap:14px;
    padding:14px 18px !important;
    background:#fff !important;
    border:1.5px solid #eef2f7 !important;
    border-radius:12px !important;
    color:#0F1729 !important;
    text-decoration:none !important;
    transition:all 0.25s ease;
    border-left:1.5px solid #eef2f7 !important;
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link::before, :is(#cqs,.cqs) .mobile-menu-cta .mm-link::after{ display:none !important; }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link i{
    width:40px;height:40px;
    border-radius:50%;
    background:var(--cqs-blue-light);
    color:var(--cqs-blue);
    display:flex;align-items:center;justify-content:center;
    font-size:16px;flex-shrink:0;
    box-shadow:0 2px 6px rgba(0,0,0,0.05);
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-whatsapp i{
    background:#25D366 !important;color:#fff !important;
    box-shadow:0 2px 8px rgba(37,211,102,0.3);
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link span{display:flex;flex-direction:column;gap:2px;}
:is(#cqs,.cqs) .mobile-menu-cta .mm-link small{
    font-size:11px !important;color:#6B7280 !important;
    text-transform:uppercase;letter-spacing:0.1em;
    font-weight:600;
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link strong{
    font-family:var(--font-heading) !important;font-size:14.5px !important;
    color:#0F1729 !important;font-weight:700 !important;
    letter-spacing:-0.01em;
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-link:hover{
    border-color:var(--cqs-blue) !important;
    transform:translateX(4px);
    box-shadow:0 4px 12px rgba(30,146,214,0.15);
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-whatsapp:hover{
    border-color:#25D366 !important;
    box-shadow:0 4px 12px rgba(37,211,102,0.2);
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-cta-btn{
    margin-top:8px;
    justify-content:center;
    padding:16px 20px !important;
    font-size:13px !important;
    font-weight:700 !important;
    letter-spacing:0.08em;
  }
:is(#cqs,.cqs) .mobile-menu-cta .mm-cta-btn::before{ display:none !important; }
/* Social icons inside drawer */
:is(#cqs,.cqs) .mobile-menu-social{
    display:flex !important;
    flex-direction:column;
    align-items:center;
    padding:24px 24px 32px !important;
    background:var(--cqs-grey-50);
    border:0 !important;
    gap:16px;
  }
:is(#cqs,.cqs) .mm-social-label{
    font-size:11px !important;color:#6B7280 !important;
    text-transform:uppercase;letter-spacing:0.16em;
    font-weight:700 !important;
  }
:is(#cqs,.cqs) .mm-social-icons{display:flex;gap:14px;}
:is(#cqs,.cqs) .mm-social-icons a{
    width:44px;height:44px;
    border-radius:50%;
    background:#fff !important;border:1.5px solid #eef2f7 !important;
    color:var(--cqs-blue) !important;
    display:flex;align-items:center;justify-content:center;
    font-size:15px;
    transition:all 0.25s ease;
    text-decoration:none !important;
  }
:is(#cqs,.cqs) .mm-social-icons a::before, :is(#cqs,.cqs) .mm-social-icons a::after{ display:none !important; }
:is(#cqs,.cqs) .mm-social-icons a:hover{
    background:var(--cqs-blue) !important;color:#fff !important;
    border-color:var(--cqs-blue) !important;
    transform:translateY(-3px);
    box-shadow:0 6px 16px rgba(30,146,214,0.25);
  }
/* Hamburger toggle with X transition */
:is(#cqs,.cqs) .menu-toggle{
    display:flex !important;
    align-items:center;justify-content:center;
    width:44px;height:44px;
    border-radius:10px;
    background:var(--cqs-blue-light);
    color:var(--cqs-navy);
    transition:all 0.25s ease;
    border:0;cursor:pointer;
    position:relative;
    z-index:201;
  }
:is(#cqs,.cqs) .menu-toggle:hover{ background:var(--cqs-blue);color:#fff; }
:is(#cqs,.cqs) .menu-toggle .icon-bars, :is(#cqs,.cqs) .menu-toggle .icon-close{
    position:absolute;
    transition:all 0.3s cubic-bezier(.7,0,.3,1);
  }
:is(#cqs,.cqs) .menu-toggle .icon-close{
    opacity:0;transform:rotate(-90deg);
  }
:is(#cqs,.cqs) .menu-toggle.open .icon-bars{ opacity:0;transform:rotate(90deg); }
:is(#cqs,.cqs) .menu-toggle.open .icon-close{ opacity:1;transform:rotate(0); }
/* Backdrop */
:is(#cqs,.cqs) .menu-backdrop{
    position:fixed;
    inset:0;
    background-color:rgba(15,23,41,0.65) !important;
    z-index:150 !important;
    opacity:0;
    visibility:hidden;
    transition:opacity 0.3s ease,visibility 0.3s ease;
  }
body.cqs-menu-open :is(#cqs,.cqs) .menu-backdrop{
    opacity:1;
    visibility:visible;
  }
body.cqs-menu-open{ overflow:hidden; }
/* Hide nav-phone & nav-cta on mobile (in drawer instead) */
:is(#cqs,.cqs) .nav-phone{display:none;}
/* Hide topbar info wrapping centering since topbar is hidden on mobile */
:is(#cqs,.cqs) .topbar-info{justify-content:center;}
:is(#cqs,.cqs) .topbar .row{justify-content:center;}
/* === IMPROVED FOOTER ON TABLETS === */
/* Brand spans full width, links/products side by side, contact full width */
:is(#cqs,.cqs) .footer-grid{
    grid-template-columns:1fr 1fr !important;
    gap:36px !important;
  }
:is(#cqs,.cqs) .footer-col.footer-brand{
    grid-column:1 / -1;
  }
:is(#cqs,.cqs) .footer-col.footer-news{
    grid-column:1 / -1;
  }
}
@media(max-width:768px){
/* Topbar hidden — frees viewport */
:is(#cqs,.cqs) .topbar{display:none !important;}
/* Compact header */
:is(#cqs,.cqs) .nav{padding:10px 0 !important;}
:is(#cqs,.cqs) .logo-img{height:46px !important;}
:is(#cqs,.cqs) .logo-tagline{font-size:10px !important;letter-spacing:0.22em !important;padding-left:10px !important;}
:is(#cqs,.cqs) .nav-cta .btn{display:none !important;}
/* === HERO/SLIDER — major mobile redesign === */
/* Hero must fit in visible viewport WITH browser chrome (URL bar) */
:is(#cqs,.cqs) .hero{
    min-height: 480px !important;          /* absolute minimum */
    min-height: 75vh !important;            /* conservative — works with URL bar visible */
    min-height: calc(100dvh - 70px) !important;  /* perfect on modern browsers */
  }
:is(#cqs,.cqs) .hero-slide{padding:32px 0 70px 0 !important;}
/* extra bottom for dots */
/* Smaller hero text so all content + dots fit on screen */
:is(#cqs,.cqs) .hero h1{font-size:clamp(26px,7vw,36px) !important;line-height:1.15 !important;margin-bottom:14px !important;}
:is(#cqs,.cqs) .hero-lead, :is(#cqs,.cqs) .hero p, :is(#cqs,.cqs) .hero-slide p{font-size:15px !important;margin-bottom:20px !important;line-height:1.5 !important;}
:is(#cqs,.cqs) .hero-tag{font-size:10px !important;padding:7px 14px !important;margin-bottom:14px !important;letter-spacing:0.12em !important;}
/* Buttons full-width stacked */
:is(#cqs,.cqs) .hero-cta, :is(#cqs,.cqs) .hero .container > div > div:last-of-type{flex-direction:column !important;align-items:stretch !important;}
:is(#cqs,.cqs) .hero .btn{width:100% !important;justify-content:center !important;font-size:13px !important;padding:13px 20px !important;}
/* Slider dots inside visible area, with breathing room above strip card */
:is(#cqs,.cqs) .hero > div[style*="bottom:120px"]{bottom:30px !important;}
/* Hide arrow buttons on mobile (dots are enough + swipe) */
:is(#cqs,.cqs) .hero-arrow{display:none !important;}
/* Strip card */
:is(#cqs,.cqs) .container > .reveal[style*="grid-template-columns:repeat(3,1fr)"]{
    margin-top: 24px !important;
    padding: 24px 20px !important;
    border-radius: 14px !important;
  }
/* === CHATBOT WINDOW — fullscreen-style panel on mobile === */
/* Position between header and float buttons, never hidden by header */
:is(#cqs,.cqs) .chatbot-window{
    top: 86px !important;       /* below the header (76px + 10 clearance) */
    right: 12px !important;
    bottom: 200px !important;    /* above the 3 float buttons */
    left: 12px !important;
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    max-height: none !important;
    border-radius: 16px !important;
  }
/* When chat is open, hide other float buttons for more vertical space */
body.cqs-chat-open :is(#cqs,.cqs) .float-actions .whatsapp, body.cqs-chat-open :is(#cqs,.cqs) .float-actions .scroll-top{
    display: none !important;
  }
body.cqs-chat-open :is(#cqs,.cqs) .chatbot-window{
    bottom: 84px !important;   /* now only above chatbot toggle button */
  }
}
@media(max-width:640px){
:is(#cqs,.cqs) .section{padding:80px 0;}
:is(#cqs,.cqs) .footer-grid{
    grid-template-columns:1fr 1fr !important;
    gap:24px !important;
  }
:is(#cqs,.cqs) .footer-col.footer-brand, :is(#cqs,.cqs) .footer-col.footer-news{
    grid-column:1 / -1 !important;
  }
:is(#cqs,.cqs) .footer-col h5{
    font-size:15px !important;
    margin-bottom:14px !important;
    padding-bottom:8px !important;
  }
:is(#cqs,.cqs) .footer-links a, :is(#cqs,.cqs) .footer-contact li{
    font-size:13px !important;
  }
:is(#cqs,.cqs) .footer-links li{ margin-bottom:8px !important; }
:is(#cqs,.cqs) .topbar-info{flex-direction:column;gap:8px;}
:is(#cqs,.cqs) .nav-cta{display:none;}
:is(#cqs,.cqs) .page-hero{padding:90px 0 70px;}
}
/* ==========================================================================
   FIX: Hero Slider — override inline opacity/visibility to fix transitions
   ========================================================================== */
:is(#cqs,.cqs) .hero-slide{
  transition: opacity 1.2s ease, visibility 1.2s ease !important;
}
:is(#cqs,.cqs) .hero-slide:not(.active){
  opacity: 0 !important;
  visibility: hidden !important;
}
:is(#cqs,.cqs) .hero-slide.active{
  opacity: 1 !important;
  visibility: visible !important;
}
:is(#cqs,.cqs) .hero-dot{cursor:pointer;}
:is(#cqs,.cqs) .hero-dot:not(.active){
  background: rgba(255,255,255,0.4) !important;
  border-color: transparent !important;
  transform: scale(1) !important;
}
:is(#cqs,.cqs) .hero-dot.active{
  background: var(--cqs-yellow) !important;
  border-color: #fff !important;
  transform: scale(1.2) !important;
}
/* ==========================================================================
   COMPREHENSIVE RESPONSIVE OVERRIDES
   Targets inline grid styles to make them collapse on small screens
   ========================================================================== */
@media (max-width: 1024px){
/* 4-column grids → 2 columns */
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(4,1fr)"]{
    grid-template-columns: repeat(2, 1fr) !important;
  }
/* 3-column grids → 1 column */
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(3,1fr)"]{
    grid-template-columns: 1fr !important;
  }
/* Asymmetric 2-column grids → stack */
:is(#cqs,.cqs) [style*="grid-template-columns:1fr 1.05fr"], :is(#cqs,.cqs) [style*="grid-template-columns:1.05fr 1fr"], :is(#cqs,.cqs) [style*="grid-template-columns:1fr 1.1fr"], :is(#cqs,.cqs) [style*="grid-template-columns:1.1fr 1fr"], :is(#cqs,.cqs) [style*="grid-template-columns:1fr 1.2fr"], :is(#cqs,.cqs) [style*="grid-template-columns:1.2fr 1fr"]{
    grid-template-columns: 1fr !important;
  }
/* Reduce big gaps */
:is(#cqs,.cqs) [style*="gap:80px"]{ gap: 40px !important; }
:is(#cqs,.cqs) [style*="gap:60px"]{ gap: 36px !important; }
:is(#cqs,.cqs) [style*="gap:50px"]{ gap: 30px !important; }
/* Hide hero arrows on tablets */
:is(#cqs,.cqs) .hero-arrow{display:none !important;}
/* Strip cards: ensure no right border on stacked layout */
:is(#cqs,.cqs) .container > .reveal[style*="grid-template-columns:repeat(3,1fr)"] > div[style*="border-right"]{
    border-right: 0 !important;
    border-bottom: 1px solid #eef2f7 !important;
    padding-bottom: 24px !important;
    padding-right: 0 !important;
  }
/* Strip card less overlap on tablet too */
:is(#cqs,.cqs) .container > .reveal[style*="grid-template-columns:repeat(3,1fr)"]{
    margin-top: -30px !important;
  }
}
@media (max-width: 768px){
/* On smaller tablets, even 2-column grids should stack */
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(2,1fr)"]{
    grid-template-columns: 1fr !important;
  }
:is(#cqs,.cqs) [style*="grid-template-columns:1fr 1fr"]{
    grid-template-columns: 1fr !important;
  }
/* Reduce large padding */
:is(#cqs,.cqs) [style*="padding:50px 44px"]{ padding: 32px 24px !important; }
:is(#cqs,.cqs) [style*="padding:48px 40px"]{ padding: 28px 20px !important; }
:is(#cqs,.cqs) [style*="padding:60px 70px"]{ padding: 36px 28px !important; }
:is(#cqs,.cqs) [style*="padding:60px 40px"]{ padding: 36px 24px !important; }
:is(#cqs,.cqs) [style*="padding:44px 36px"]{ padding: 28px 22px !important; }
/* Reduce big font sizes on heroes/headers */
:is(#cqs,.cqs) [style*="font-size:30px"]{ font-size: 22px !important; }
/* Stat counters */
:is(#cqs,.cqs) [style*="font-size:54px;font-weight:800"]{ font-size: 38px !important; }
/* Reduce big circle size for clients */
:is(#cqs,.cqs) [style*="width:120px;height:120px;border-radius:50%"]{
    width: 90px !important;
    height: 90px !important;
    font-size: 24px !important;
  }
/* Reduce hero h1 line spacing */
:is(#cqs,.cqs) .hero h1{ line-height: 1.1 !important; }
/* Cta-row stack */
:is(#cqs,.cqs) .cta-row{ text-align: center; flex-direction: column; }
/* Page-hero padding */
:is(#cqs,.cqs) .page-hero{ padding: 80px 0 60px !important; }
:is(#cqs,.cqs) .page-hero h1{ font-size: clamp(28px, 7vw, 40px) !important; }
:is(#cqs,.cqs) .page-hero p{ font-size: 16px !important; }
/* Strip cards stack */
:is(#cqs,.cqs) .container > .reveal[style*="grid-template-columns:repeat(3,1fr)"]{
    margin-top: -40px !important;
    padding: 32px 24px !important;
  }
/* Hero buttons full width on mobile */
:is(#cqs,.cqs) .hero-cta, :is(#cqs,.cqs) [class*="hero-cta"], :is(#cqs,.cqs) .hero .container > div > div:last-child{
    flex-direction: column;
    align-items: stretch;
  }
:is(#cqs,.cqs) .hero-cta .btn{ justify-content: center; }
/* Reduce strip card icon size */
:is(#cqs,.cqs) [style*="width:64px;height:64px;flex-shrink:0;border-radius:16px"]{
    width: 50px !important;
    height: 50px !important;
    font-size: 20px !important;
  }
}
@media (max-width: 640px){
/* All multi-column grids → 1 column */
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(4,1fr)"], :is(#cqs,.cqs) [style*="grid-template-columns:repeat(3,1fr)"], :is(#cqs,.cqs) [style*="grid-template-columns:repeat(2,1fr)"]{
    grid-template-columns: 1fr !important;
  }
/* Reduce general section padding */
:is(#cqs,.cqs) .section{ padding: 60px 0 !important; }
/* Smaller container padding */
:is(#cqs,.cqs) .container{ padding: 0 18px !important; }
/* Reduce h1 sizes on inner pages */
:is(#cqs,.cqs) h1{ font-size: clamp(26px, 7vw, 36px) !important; }
:is(#cqs,.cqs) h2{ font-size: clamp(22px, 5.5vw, 30px) !important; }
/* Stats grid border tweaks */
:is(#cqs,.cqs) .stat-cell{ border-right: 0 !important; border-bottom: 1px solid rgba(255,255,255,0.15); }
/* Float buttons smaller on mobile */
:is(#cqs,.cqs) .float-btn{ width: 52px !important; height: 52px !important; font-size: 22px !important; }
/* Hide some breadcrumbs */
:is(#cqs,.cqs) .breadcrumb{ font-size: 11px !important; }
/* Map height */
:is(#cqs,.cqs) iframe[title*="Ubicación"]{ height: 280px !important; }
}
/* Wide screen optimization */
@media (min-width: 1400px){
:is(#cqs,.cqs) .container{ max-width: 1340px; }
}
/* ==========================================================================
   CHATBOT WIDGET
   ========================================================================== */
:is(#cqs,.cqs) .chatbot-toggle{
  /* No fixed positioning — inherits stack from .float-actions */
  background: linear-gradient(135deg, var(--cqs-blue), var(--cqs-blue-deep));
  color: #fff;
  font-size: 22px;
  box-shadow: 0 8px 20px rgba(30,146,214,0.4);
}
:is(#cqs,.cqs) .chatbot-toggle:hover{ transform: scale(1.08); }
:is(#cqs,.cqs) .chatbot-toggle .dot{
  position: absolute;
  top: 8px; right: 8px;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: var(--cqs-yellow);
  border: 2px solid #fff;
  animation: cqs-pulseDot 2s infinite;
}
@keyframes cqs-pulseDot{
  0%, 100%{ transform: scale(1); }
  50%{ transform: scale(1.3); }
}
:is(#cqs,.cqs) .chatbot-toggle.open .icon-chat{ display: none; }
:is(#cqs,.cqs) .chatbot-toggle.open .icon-close{ display: block; }
:is(#cqs,.cqs) .chatbot-toggle .icon-close{ display: none; }
:is(#cqs,.cqs) .chatbot-window{
  position: fixed;
  right: 24px;
  bottom: 240px;
  width: 380px;
  max-width: calc(100vw - 48px);
  height: 540px;
  max-height: calc(100vh - 280px);
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 20px 60px rgba(14,81,128,0.25);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  z-index: 99;
  transform: translateY(20px) scale(0.95);
  opacity: 0;
  pointer-events: none;
  transition: all 0.3s cubic-bezier(.7,0,.3,1);
  border: 1px solid #eef2f7;
}
:is(#cqs,.cqs) .chatbot-window.open{
  transform: translateY(0) scale(1);
  opacity: 1;
  pointer-events: auto;
}
:is(#cqs,.cqs) .chatbot-header{
  background: linear-gradient(135deg, var(--cqs-navy), var(--cqs-blue-deep));
  color: #fff;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  gap: 14px;
}
:is(#cqs,.cqs) .chatbot-avatar{
  width: 52px; height: 52px;
  border-radius: 50%;
  background: #fff;
  display: flex; align-items: center; justify-content: center;
  position: relative;
  flex-shrink: 0;
  padding: 6px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
:is(#cqs,.cqs) .chatbot-avatar img{
  width: 100%; height: 100%;
  object-fit: contain;
}
:is(#cqs,.cqs) .chatbot-avatar::after{
  content: "";
  position: absolute;
  bottom: 0; right: 0;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: #22c55e;
  border: 2px solid var(--cqs-navy);
}
:is(#cqs,.cqs) .chatbot-header strong{ display: block; font-size: 15px; font-weight: 700; }
:is(#cqs,.cqs) .chatbot-header small{ font-size: 12px; color: rgba(255,255,255,0.75); }
:is(#cqs,.cqs) .chatbot-body{
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  background: var(--cqs-grey-50);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
:is(#cqs,.cqs) .chatbot-body::-webkit-scrollbar{ width: 6px; }
:is(#cqs,.cqs) .chatbot-body::-webkit-scrollbar-thumb{ background: var(--cqs-grey-300); border-radius: 3px; }
:is(#cqs,.cqs) .chat-msg{
  max-width: 85%;
  padding: 12px 16px;
  border-radius: 16px;
  font-size: 14px;
  line-height: 1.5;
  animation: cqs-msgIn 0.3s ease;
}
@keyframes cqs-msgIn{
  from{ opacity: 0; transform: translateY(8px); }
  to{ opacity: 1; transform: translateY(0); }
}
:is(#cqs,.cqs) .chat-msg.bot{
  background: #fff;
  color: var(--cqs-grey-900);
  border-bottom-left-radius: 4px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
  align-self: flex-start;
}
:is(#cqs,.cqs) .chat-msg.user{
  background: var(--cqs-blue);
  color: #fff;
  border-bottom-right-radius: 4px;
  align-self: flex-end;
}
:is(#cqs,.cqs) .chat-msg.bot strong{ color: var(--cqs-navy); }
:is(#cqs,.cqs) .chat-msg.bot a{ color: var(--cqs-blue); font-weight: 600; text-decoration: underline; }
:is(#cqs,.cqs) .chat-quick-replies{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
}
:is(#cqs,.cqs) .chat-quick{
  background: #fff;
  border: 1.5px solid var(--cqs-blue);
  color: var(--cqs-blue);
  padding: 8px 14px;
  border-radius: 50px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
}
:is(#cqs,.cqs) .chat-quick:hover{
  background: var(--cqs-blue);
  color: #fff;
  transform: translateY(-2px);
}
:is(#cqs,.cqs) .chat-typing{
  display: flex;
  gap: 4px;
  padding: 14px 18px;
  background: #fff;
  border-radius: 16px;
  border-bottom-left-radius: 4px;
  align-self: flex-start;
  width: fit-content;
}
:is(#cqs,.cqs) .chat-typing span{
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--cqs-grey-300);
  animation: cqs-typing 1.4s infinite;
}
:is(#cqs,.cqs) .chat-typing span:nth-child(2){ animation-delay: 0.2s; }
:is(#cqs,.cqs) .chat-typing span:nth-child(3){ animation-delay: 0.4s; }
@keyframes cqs-typing{
  0%, 60%, 100%{ transform: translateY(0); opacity: 0.4; }
  30%{ transform: translateY(-6px); opacity: 1; }
}
:is(#cqs,.cqs) .chatbot-footer{
  padding: 14px;
  background: #fff;
  border-top: 1px solid #eef2f7;
  display: flex;
  gap: 10px;
}
:is(#cqs,.cqs) .chatbot-input{
  flex: 1;
  padding: 11px 16px;
  border: 1.5px solid #e2e8f0;
  border-radius: 50px;
  font-family: inherit;
  font-size: 14px;
  outline: none;
  transition: border-color 0.2s ease;
}
:is(#cqs,.cqs) .chatbot-input:focus{ border-color: var(--cqs-blue); }
:is(#cqs,.cqs) .chatbot-send{
  width: 42px; height: 42px;
  border-radius: 50%;
  background: var(--cqs-blue);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  border: 0;
  font-size: 14px;
  transition: all 0.2s ease;
}
:is(#cqs,.cqs) .chatbot-send:hover{ background: var(--cqs-blue-deep); transform: scale(1.05); }
/* Chatbot mobile responsive */
@media (max-width: 640px){
:is(#cqs,.cqs) .float-actions{
    right: 14px !important;
    bottom: 14px !important;
    gap: 10px !important;
  }
:is(#cqs,.cqs) .float-btn{
    width: 48px !important;
    height: 48px !important;
    font-size: 18px !important;
  }
}
/* Chatbot — handle very short viewports (e.g. landscape phones) */
@media (max-height: 540px){
:is(#cqs,.cqs) .chatbot-window{
    top: 60px !important;
    bottom: 12px !important;
    height: auto !important;
    max-height: none !important;
    border-radius: 14px !important;
  }
body.cqs-chat-open :is(#cqs,.cqs) .float-actions .whatsapp, body.cqs-chat-open :is(#cqs,.cqs) .float-actions .scroll-top{display:none !important;}
}
/* Hide tagline on very small screens */
@media (max-width: 480px){
:is(#cqs,.cqs) .logo-tagline{ display: none !important; }
:is(#cqs,.cqs) .logo-img{ height: 50px !important; }
}
/* Hide floating elements when mobile menu is open */
body.cqs-menu-open :is(#cqs,.cqs) .float-actions, body.cqs-menu-open :is(#cqs,.cqs) .chatbot-toggle, body.cqs-menu-open :is(#cqs,.cqs) .chatbot-window{
  display:none !important;
}
/* ==========================================================================
   EXTRA ANIMATIONS (added) — respects reduced-motion
   ========================================================================== */
@media (prefers-reduced-motion: no-preference){
:is(#cqs,.cqs){scroll-behavior:smooth;}
/* Reveal-on-scroll gains a gentle scale for extra depth */
:is(#cqs,.cqs) .reveal{transform:translateY(42px) scale(.98);}
:is(#cqs,.cqs) .reveal.active{transform:translateY(0) scale(1);}
/* Ken-Burns style zoom on any inline overflow-hidden image frame */
:is(#cqs,.cqs) div[style*="overflow:hidden"] > img{
    transition:transform .8s cubic-bezier(.2,.8,.2,1), filter .5s ease;
    will-change:transform;
  }
:is(#cqs,.cqs) div[style*="overflow:hidden"]:hover > img, :is(#cqs,.cqs) a.reveal:hover div[style*="overflow:hidden"] > img, :is(#cqs,.cqs) .info-card:hover div[style*="overflow:hidden"] > img{
    transform:scale(1.08);
  }
/* Lift + shadow for linked image/product cards */
:is(#cqs,.cqs) a.reveal{transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s ease,background .45s ease,color .45s ease,border-color .45s ease;}
:is(#cqs,.cqs) a.reveal:hover{transform:translateY(-8px);box-shadow:0 24px 46px rgba(14,81,128,0.14);}
/* Icons float continuously while their card is hovered */
:is(#cqs,.cqs) .info-card:hover .ico{animation:cqs-cqsFloatY 1.8s ease-in-out infinite;}
@keyframes cqs-cqsFloatY{
    0%,100%{transform:translateY(0) rotate(-8deg) scale(1.05);}
    50%{transform:translateY(-7px) rotate(-8deg) scale(1.05);}
  }
/* Arrow icons nudge forward on button/link hover */
:is(#cqs,.cqs) .btn i.fa-arrow-right, :is(#cqs,.cqs) a i.fa-arrow-right{transition:transform .3s ease;}
:is(#cqs,.cqs) .btn:hover i.fa-arrow-right, :is(#cqs,.cqs) a:hover i.fa-arrow-right{transform:translateX(6px);}
/* Page hero: staggered entrance */
:is(#cqs,.cqs) .page-hero .breadcrumb{animation:cqs-cqsHeroIn .8s .05s cubic-bezier(.2,.8,.2,1) both;}
:is(#cqs,.cqs) .page-hero h1{animation:cqs-cqsHeroIn .9s .15s cubic-bezier(.2,.8,.2,1) both;}
:is(#cqs,.cqs) .page-hero p{animation:cqs-cqsHeroIn .9s .30s cubic-bezier(.2,.8,.2,1) both;}
@keyframes cqs-cqsHeroIn{from{opacity:0;transform:translateY(28px);}to{opacity:1;transform:translateY(0);}}
/* Client / stat cards: gentle lift on hover (non-link cards) */
:is(#cqs,.cqs) .reveal[style*="border"]:hover{transform:translateY(-6px);}
}
/* Operations image grid — remove desktop stagger on tablet/mobile so photos
   don't crowd/overlap when the grid stacks */
@media (max-width: 768px){
:is(#cqs,.cqs) .ops-grid img{ margin-top:0 !important; height:230px !important; }
}
@media (max-width: 520px){
:is(#cqs,.cqs) .ops-grid{ grid-template-columns:1fr !important; gap:16px !important; }
:is(#cqs,.cqs) .ops-grid img{ height:240px !important; }
}
/* 5-column grids (e.g. Nuestros Clientes) responsive collapse */
@media (max-width: 1024px){
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(5,1fr)"]{ grid-template-columns:repeat(3,1fr) !important; }
}
@media (max-width: 640px){
:is(#cqs,.cqs) [style*="grid-template-columns:repeat(5,1fr)"]{ grid-template-columns:1fr !important; }
}
/* ===================================================================
   Integración con WordPress · Astra + WPBakery
   Estas son las ÚNICAS reglas del paquete que salen de .cqs.
   =================================================================== */

/* Desplazamiento suave de los anclas (/reactivos/#floculantes y compañía).
   scroll-behavior solo funciona sobre el elemento que hace scroll, así que
   esta regla NO puede remaparse al contenedor: tiene que quedarse en html. */
html{ scroll-behavior:smooth; }

/* ---- Astra: quitar el contenedor, el relleno y el título del tema ----
   La clase cqs-page la añade el snippet con body_class. */
body.cqs-page :is(.site-content, #content){ padding:0; margin:0; }
body.cqs-page :is(.ast-container, .ast-container-fluid){ max-width:none; width:auto; padding:0; margin:0; }
/* ⚠️ float:none y width:100%, no "width:auto".
   Con barra lateral, Astra pone #primary{width:70%; float:left}. Quitarle solo
   el ancho deja el float en pie y la caja se encoge al contenido: la web salía
   ocupando el 79% y con una franja blanca a la derecha. */
body.cqs-page :is(#primary, .content-area, .site-main, .ast-article-single, .entry-content){
  max-width:none; width:100%; float:none; padding:0; margin:0; border:0; background:none;
}
/* La barra lateral del tema no pinta nada en estas páginas. */
body.cqs-page :is(#secondary, .widget-area, .ast-sidebar, .sidebar-main){ display:none; }

/* ⚠️ Astra reparte sus márgenes con selectores de DOS clases más el id, del
   estilo ".ast-plain-container.ast-no-sidebar #primary{margin:4em 0}". Eso pesa
   (1,2,0) y le gana a un blindaje de (1,1,1), aunque este último parezca más
   fuerte por llevar un id. Repitiendo #page delante subimos a (2,1,1) y ya no
   hay discusión: dos ids ganan a uno. Sin esto quedaban 64px de franja blanca
   entre la barra de administración y la web. */
body.cqs-page #page #content,
body.cqs-page #page #primary,
body.cqs-page #page #main,
body.cqs-page #page .ast-container,
body.cqs-page #page .ast-article-single,
body.cqs-page #page .entry-content,
body.cqs-page #page .site-content{ margin:0; padding:0; }

/* ---- la cabecera y el pie DEL TEMA no se muestran ----
   Lo suyo es apagarlos por página con "Disable Sections" de Astra Pro, pero ese
   módulo hay que activarlo aparte en Astra → Opciones, y si no está, el tema
   pinta su propia cabecera encima de la de CQS. Esto lo garantiza pase lo que
   pase: en una página de CQS el tema no aporta cabecera ni pie. */
body.cqs-page :is(#masthead, .site-header, .ast-above-header, .ast-main-header-wrap,
                  .ast-below-header, .ast-mobile-header-wrap, #colophon, .site-footer,
                  .ast-sticky-shrunk){ display:none; }

/* ⚠️ El botón "ir arriba" de Astra necesita !important, y aquí está la razón:
   su JS lo enseña y lo esconde escribiendo style="display:block" DIRECTAMENTE
   en el elemento. Un estilo en línea gana a cualquier regla de hoja de
   estilos, así que un display:none normal no lo detiene: en cuanto se hace
   scroll, Astra lo saca y aparecen DOS botones de subir, el suyo y el de CQS.
   Es el mismo caso que el relleno de #page-container en Divi. */
body.cqs-page :is(#ast-scroll-top, .ast-scroll-top-icon){ display:none !important; }

body.cqs-page .entry-header,
body.cqs-page .ast-single-post-order,
body.cqs-page .post-navigation{ display:none; }
/* Astra pone el fondo del sitio en #page; el del sitio es blanco. */
body.cqs-page{ background:#fff; }

/* ---- Divi: quitar contenedor, sidebar, título y rellenos del tema ----
   Estructura de Divi:  #page-container > #et-main-area > #main-content >
   .container > #content-area > #left-area > article > .entry-content
   Cada una de esas capas pone lo suyo: 80% de ancho, 1080px de máximo, un
   float para el sidebar y 58px de relleno superior. */
body.cqs-page :is(#page-container, #et-main-area, #main-content){ padding:0; margin:0; background:none; }
/* Solo el .container DE DIVI, con ">": los .container del sitio (77 en total)
   no se tocan, que ya los gobierna styles.css. */
body.cqs-page #main-content > .container{ width:auto; max-width:none; padding:0; margin:0; }
body.cqs-page :is(#content-area, #left-area, article.et_pb_post, article.post, .entry-content){
  width:100%; max-width:none; padding:0; margin:0; float:none; background:none; border:0;
}
body.cqs-page :is(#sidebar, .et_post_meta_wrapper, .entry-title, #breadcrumbs){ display:none; }
/* Con la barra de navegación fija, Divi calcula el hueco superior y lo escribe
   como ESTILO EN LÍNEA desde su propio JS. Un estilo en línea gana a todo, así
   que aquí es donde !important está justificado y no es pereza. */
body.cqs-page #page-container{ padding-top:0 !important; margin-top:0 !important; }
/* Divi anima la entrada de las secciones con transform: eso rompería el
   position:sticky del header y los botones flotantes. */
body.cqs-page :is(#page-container, #et-main-area, #main-content, #content-area,
                  #left-area, .entry-content, .et_pb_section, .et_pb_row){
  transform:none; filter:none; perspective:none; overflow:visible;
}

/* ---- WPBakery: sus márgenes negativos sacan barras horizontales ----
   .vc_row{margin-left:-15px;margin-right:-15px} es el equivalente exacto del
   "contenedor en caja" de Elementor: franjas blancas o scroll lateral. */
body.cqs-page :is(.vc_row, .wpb_row){ margin-left:0; margin-right:0; }
body.cqs-page :is(.vc_column_container, .vc_column-inner, .wpb_column, .wpb_wrapper){ padding:0; margin:0; }
body.cqs-page .wpb_content_element{ margin-bottom:0; }
body.cqs-page .vc_row-has-fill > .vc_column_container > .vc_column-inner{ padding-top:0; }

/* ---- position:sticky del header ----
   .header es sticky con top:0. Un sticky solo se pega mientras su PADRE está
   a la vista: por eso el contenedor .cqs va dentro del contenido de la página
   (que ocupa toda su altura) y no en una plantilla propia del tema. Si algún
   ancestro tuviera transform, filter o perspective, el sticky y los botones
   fijos dejarían de funcionar. */
body.cqs-page :is(#page, #content, .site-content, .ast-container, #primary, .site-main,
                  .entry-content, .wpb_wrapper, .vc_row, .vc_column-inner){
  transform:none; filter:none; perspective:none;
}
/* overflow:hidden en un ancestro también anula el sticky. */
body.cqs-page :is(#page, #content, .site-content, .entry-content){ overflow:visible; }

/* ---- overflow: devolverlo al <body>, que es donde estaba ----
   ⚠️ El sitio original lleva body{overflow-x:hidden}. Al encapsular, esa regla
   cae en .cqs — y overflow-x:hidden en un elemento NORMAL obliga a que
   overflow-y compute "auto": .cqs se convierte en un contenedor de scroll y el
   header con position:sticky se pega a .cqs (que no hace scroll) en vez de a
   la ventana. Resultado: el header no acompaña al scroll.
   En el <body> de verdad no pasa, porque ahí el overflow se propaga al
   viewport y el sticky sigue midiéndose contra la ventana. Así que se quita
   del contenedor y se pone donde estaba. */
:is(#cqs,.cqs){ overflow:visible; }
body.cqs-page{ overflow-x:hidden; }

/* ---- barra de administración de WordPress ---- */
body.admin-bar :is(#cqs,.cqs) .header{ top:32px; }
@media (max-width:782px){ body.admin-bar :is(#cqs,.cqs) .header{ top:46px; } }

/* ---- dentro del editor de WPBakery no hay que tapar el lienzo ---- */
body.vc_editor :is(#cqs,.cqs) :is(.float-actions, .chatbot-window, .chatbot-toggle){ display:none; }
