﻿/* ============================================================
   QWOOD â€” HOME LANDING Â· home.css
   Rewrite 2026-03-25 â€” full clean slate, ~1800 lines
   Consumes design-system.css SSOT tokens.
   Sections: 0) Storefront Â· 1) Base/Tokens Â· 2) Hero
   3) Price Band Â· 4) Social Proof Â· 5) S1 Whatis
   6) S2 Origin Â· 7) S3 Steps Â· 8) S4 Comparator
   9) S5 Table Â· 10) S6 Durability Â· 11) S7 Gallery
   12) S8 Reviews Â· 13) S9 Targets Â· 14) S10 Guides
   15) S11 FAQ Â· 16) S12 WhatsApp Â· 17) S13 Footer
   18) Watermarks Â· 19) Animations Â· 20) Responsive
   21) Reduced Motion Â· 22) WhatsApp FAB Â· 23) Focus/A11y
   ============================================================ */

/* Google Fonts Montserrat retirado 2026-04-24. Era render-blocking peor que
   un <link> porque el @import espera al parse de este CSS antes de descubrir
   el recurso. --qwood-font cae a system-ui si Montserrat no estÃ¡ instalado;
   el visitante medio en ES tiene Montserrat system (aÃ±adido en Windows 10+
   por Office). Fallback system-ui preserva jerarquÃ­a sin penalizar LCP. */

/* ============================================================
   0) STOREFRONT OVERRIDE â€” landing page full-width
   ============================================================ */

/* Force full-width on EVERY Storefront wrapper â€” no constraints allowed */
body.qw-landing-page #content,
body.qw-landing-page .site-content,
body.qw-landing-page .site-content > .col-full,
body.qw-landing-page .site-main,
body.qw-landing-page .site-main > article,
body.qw-landing-page .entry-content,
body.qw-landing-page .qw-home-landing {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  box-sizing: border-box !important;
  overflow-x: hidden !important;
}

/* Override Storefront body bg (#f7faf8) â€” grey cleanup 2026-05-27 */
body.qw-landing-page {
  background-color: #ffffff !important;
}

/* ============================================================
   1) BASE / LOCAL TOKENS / NORMALIZACIONES
   ============================================================ */

.qw-home-landing {
  /* Local aliases â€” consuming design-system.css SSOT.
     BRAND RULE 2026-04-24: verde #1bcf17 Y celeste #0ea5e9 son
     ambos brand-locked â€” no se oscurecen por accesibilidad. La paleta
     home es {verde #1bcf17, celeste #0ea5e9, blanco, gris tokens}, sin
     excepciones contrast-tier. El trade-off AA estÃ¡ aceptado a nivel
     de marca (ratio 3.17:1 celeste/white, 3.02:1 verde/white, ambos
     documentados como excepciÃ³n).
     `--qw-*-contrast` aliases se conservan por compat pero caen al
     color canÃ³nico; no los uses para nuevos componentes. */
  --qw-green:          var(--qwood-color-primary,           #1bcf17);
  --qw-green-dark:     var(--qwood-color-primary-dark,      #1bcf17);
  --qw-green-hover:    var(--qwood-color-primary-hover,     #1bcf17);
  --qw-green-soft:     var(--qwood-color-primary-soft,      rgba(27,207,23,.12));
  --qw-green-contrast: var(--qwood-color-primary,           #1bcf17);  --qw-celeste:        var(--qwood-color-secondary,         #0ea5e9);
  --qw-celeste-deep:   var(--qwood-color-secondary-dark,    #0ea5e9);
  --qw-celeste-soft:   var(--qwood-color-secondary-soft,    rgba(14, 165, 233,.12));
  --qw-celeste-contrast: var(--qwood-color-secondary,       #0ea5e9);  --qw-muted-contrast: var(--qwood-color-muted-contrast,    #5b6167);
  --qw-ink:           var(--qwood-color-text,          #0f172a);
  --qw-muted:         var(--qwood-color-muted,         rgba(15,23,42,.68));
  --qw-bg:            var(--qwood-color-bg-alt,        #ffffff);
  --qw-white:         #ffffff;
  --qw-border:        var(--qwood-color-border,        transparent);
  --qw-shadow:        var(--qwood-shadow-card,         0 18px 42px rgba(15,23,42,.08));
  --qw-shadow-soft:   var(--qwood-shadow-soft,         0 14px 34px rgba(15,23,42,.06));
  --qw-radius:        var(--qwood-radius-md,           16px);
  --qw-radius-lg:     var(--qwood-radius-lg,           22px);
  --qw-ease:          var(--qwood-ease,                cubic-bezier(.2,.8,.2,1));
  --qw-speed:         var(--qwood-speed,               220ms);
  /* Solid brand â€” no gradients */
  --qw-grad-brand:    var(--qw-green);

  font-family: var(--qwood-font, "Montserrat", system-ui, sans-serif);
  color: var(--qw-ink);
  background-color: #ffffff;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Bold Clean â€” extra weight para HEADINGS y elementos display
   text-stroke .25px (NO en botones con texto blanco â€” distorsiona) */
.qw-home-landing h1,
.qw-home-landing h2,
.qw-home-landing h3,
.qw-home-landing .qw-hero-title,
.qw-home-landing .qw-label,
.qw-home-landing .qw-heading,
.qw-home-landing .qw-step-num,
.qw-home-landing .qw-metric-value,
.qw-home-landing .qw-faq-summary,
.qw-home-landing .qw-origin-step h3,
.qw-home-landing .qw-origin-step-num,
.qw-home-landing .qw-guide-title,
.qw-home-landing .qw-guide-tag,
.qw-home-landing .qw-target-name,
.qw-home-landing .qw-footer-brand,
.qw-home-landing .qw-footer-brand-name {
}

.qw-home-landing .qw-hero-subtitle,
.qw-home-landing .qw-hero-sample-note,
.qw-home-landing .qw-subheading,
.qw-home-landing .qw-whatis-card p,
.qw-home-landing .qw-step-card p,
.qw-home-landing .qw-origin-step p,
.qw-home-landing .qw-target-card p,
.qw-home-landing .qw-contact-item,
.qw-home-landing .qw-footer-tagline {
  font-weight: 800;
}
/* NO text-stroke en NINGÃšN botÃ³n/link con texto blanco â€” distorsiona */
.qw-home-landing .qw-btn,
.qw-home-landing button,
.qw-home-landing .qw-hero-cta a,
.qw-home-landing .qw-hero-cta button,
.qw-home-landing [class*="btn--primary"],
.qw-home-landing [class*="btn--celeste"],
.qw-home-landing [class*="btn--whatsapp"],
.qw-home-landing [class*="btn--outline"]{
}

/* Base resets â€” force no underlines (Storefront theme adds them globally) */
body.qw-landing-page a,
body.qw-landing-page a:link,
body.qw-landing-page a:visited,
body.qw-landing-page a:hover,
body.qw-landing-page a:focus,
body.qw-landing-page a:active,
.qw-home-landing a,
.qw-home-landing a:hover,
.qw-home-landing a:focus {
  text-decoration: none !important;
  -webkit-tap-highlight-color: transparent;
}
/* Remove nav active/hover underline on landing page */
body.qw-landing-page .main-navigation ul.menu > li > a::after {
  display: none !important;
}
/* Cart icon â€” force white over hero (mask-image uses background-color as fill) */
body.qw-landing-page .site-header-cart a.cart-contents::after {
  background-color: #fff !important;
}

.qw-home-landing img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Inner container */
.qw-inner {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 3rem 1.5rem;
}
@media (min-width: 1280px) {
  .qw-inner { max-width: 1240px; }
}

/* ---- Utility: step-indicator (wizard-adhesivos style) ---- */
.qw-label {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: 0;
  background: transparent;
  border: 0;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--qw-celeste-deep, #0ea5e9);
  margin-bottom: .35rem;
}
.qw-label--celeste {
  color: var(--qw-celeste-deep, #0ea5e9);
}

/* ---- Utility: generic section wrapper ---- */
.qw-section {
  position: relative;
  overflow: hidden;
}
/* Stacking context propio en secciones del home â€” habilita que las
 * watermarks decorativas usen `z-index: -1` y queden DETRÃS del contenido
 * sin escapar de la secciÃ³n. Scopeado a `.qw-home-landing` para no afectar
 * .qw-section en otros mÃ³dulos (auth, my-account, etc.) donde modales o
 * dropdowns pueden depender del stacking context heredado. 2026-04-30. */
.qw-home-landing .qw-section {
  isolation: isolate;
}
/* Center all section-level labels, headings, subheadings */
.qw-section > .qw-inner > .qw-label,
.qw-price-band > .qw-inner > .qw-label,
.qw-social-proof > .qw-inner > .qw-label {
  display: block;
  text-align: center;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}
.qw-section > .qw-inner > .qw-heading,
.qw-section > .qw-inner > .qw-subheading {
  text-align: center;
}
.qw-section > .qw-inner > .qw-heading::after {
  margin-left: auto;
  margin-right: auto;
}
.qw-section > .qw-inner > .qw-section-link {
  text-align: center;
}
.qw-section--alt { background-color: #ffffff; }
.qw-section--dark { background-color: var(--qw-green, #1bcf17); }
.qw-section--white { background-color: var(--qw-white); }

/* ---- Utility: heading (wizard-adhesivos style) ---- */
.qw-heading {
  font-size: clamp(1.9rem, 3.4vw, 2.8rem);
  font-weight: 900;
  letter-spacing: -.03em;
  line-height: 1.08;
  color: var(--qw-ink);
  margin: 0 0 .9rem;
  text-wrap: balance;
}
.qw-heading--center { text-align: center; }
.qw-heading--white { color: var(--qw-white); }

/* ---- Utility: helper / subheading (wizard-adhesivos style) ---- */
.qw-subheading {
  font-size: clamp(.95rem, 1.5vw, 1.05rem);
  font-weight: 800;
  line-height: 1.55;
  color: rgba(15,23,42,.72);
  margin: 0 0 1.75rem;
  text-wrap: balance;
}
.qw-subheading--white { color: rgba(255,255,255,.82); }

/* ---- Utility: buttons ---- */
.qw-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .92rem 2.2rem;
  min-height: 54px;
  border-radius: var(--qwood-radius-pill, 999px);
  border: 1px solid transparent;
  font-family: var(--qwood-font, "Montserrat", system-ui, sans-serif);
  font-size: 1.02rem;
  font-weight: 900;
  letter-spacing: .02em;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  outline: none;
  white-space: nowrap;
  user-select: none;
  box-sizing: border-box;
  max-width: 100%;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease),
    background-color var(--qw-speed) var(--qw-ease),
    color var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease);
  text-decoration: none;
}
.qw-btn:active { transform: translateY(1px); }

.qw-btn--primary {
  background: var(--qw-green);
  color: var(--qw-white);
  border-color: rgba(27,207,23,.28);
  box-shadow: 0 10px 28px rgba(27,207,23,.16);
}
.qw-btn--primary:focus-visible {
  background: var(--qw-green-hover);
  border-color: rgba(27,207,23,.36);
  transform: translateY(-2px);
  box-shadow: 0 14px 34px rgba(27,207,23,.22);
}
@media (hover: hover) and (pointer: fine) {
  .qw-btn--primary:hover {
    background: var(--qw-green-hover);
    border-color: rgba(27,207,23,.36);
    transform: translateY(-2px);
    box-shadow: 0 14px 34px rgba(27,207,23,.22);
  }
}

.qw-btn--celeste {
  background: var(--qw-celeste);
  color: var(--qw-white);
  border-color: rgba(14, 165, 233,.34);
  box-shadow: 0 10px 28px rgba(14, 165, 233,.18);
}
/* :focus-visible vive fuera del media query: solo aparece con navegaciÃ³n por
   teclado (no con touch), asÃ­ que no genera sticky-state en mÃ³vil. */
.qw-btn--celeste:focus-visible {
  background: var(--qw-celeste-deep);
  transform: translateY(-2px);
  box-shadow: 0 14px 34px rgba(14, 165, 233,.22);
}
@media (hover: hover) and (pointer: fine) {
  .qw-btn--celeste:hover {
    background: var(--qw-celeste-deep);
    transform: translateY(-2px);
    box-shadow: 0 14px 34px rgba(14, 165, 233,.22);
  }
}

.qw-btn--ghost {
  background: rgba(255,255,255,.92);
  color: var(--qw-ink);
  border-color: transparent;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
}
.qw-btn--ghost:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}
@media (hover: hover) and (pointer: fine) {
  .qw-btn--ghost:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 28px rgba(15,23,42,.12);
  }
}

.qw-btn--outline-white {
  background: transparent;
  color: var(--qw-white);
  border-color: rgba(255,255,255,.52);
  box-shadow: none;
}
.qw-btn--outline-white:focus-visible {
  background: rgba(255,255,255,.12);
  border-color: rgba(255,255,255,.76);
  transform: translateY(-2px);
}
@media (hover: hover) and (pointer: fine) {
  .qw-btn--outline-white:hover {
    background: rgba(255,255,255,.12);
    border-color: rgba(255,255,255,.76);
    transform: translateY(-2px);
  }
}

.qw-btn--wide { width: 100%; justify-content: center; }

/* ============================================================
   2) HERO â€” vÃ­deo full-width, overlay, stagger animation
   ============================================================ */

.qw-hero {
  --qw-hero-pad-top: 90px;
  --qw-hero-pad-bottom: 0;

  position: relative;
  width: 100%;
  min-height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
  color: var(--qw-white);
  margin: 0;
  /* Fallback while video/poster loads (poster returns 404) */
  background: #1a2e1a;
}

/* Media layer */
.qw-hero-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  overflow: hidden;
}

.qw-hero-video {
  position: absolute;
  inset: 0;
  display: block;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: center;
  filter: saturate(1.18);
}

.qw-hero-poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 1;
}

/* Solid dark overlay for hero image readability (SSOT QWOOD: no gradients) */
.qw-hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.40);
  z-index: 2;
}

/* Content layer â€” z-index 5 keeps content above the wave (z-index 4) */
.qw-hero-inner {
  position: relative;
  z-index: 5;
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  padding-top:    var(--qw-hero-pad-top);
  padding-bottom: var(--qw-hero-pad-bottom);
  padding-left:  1.25rem;
  padding-right: 1.25rem;
}

.qw-hero-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.75rem;
}

/* Stagger animation â€” each child uses animation-delay */
.qw-hero-title > span,
.qw-hero-subtitle,
.qw-hero-ctas,
.qw-hero-badges {
  opacity: 0;
  transform: translateY(18px);
  animation: qwHeroStagger .65s var(--qw-ease) both;
}
.qw-hero-title > span[data-qw-delay="1"] { animation-delay: .14s; }
.qw-hero-title > span[data-qw-delay="2"] { animation-delay: .27s; }
.qw-hero-subtitle[data-qw-delay="3"]     { animation-delay: .40s; }
.qw-hero-ctas[data-qw-delay="4"]         { animation-delay: .53s; }
.qw-hero-sample-note[data-qw-delay="4"]  { animation-delay: .60s; }
.qw-hero-badges[data-qw-delay="5"]       { animation-delay: .66s; }

/* Sample reimbursement micro-copy under hero CTA */
.qw-hero-sample-note {
  opacity: 0;
  transform: translateY(18px);
  animation: qwHeroStagger .65s var(--qw-ease) both;
  color: rgba(255,255,255,.85);
  font-size: .82rem;
  font-weight: 700;
  text-shadow: 0 1px 6px rgba(0,0,0,.5);
  margin: .4rem 0 0;
  letter-spacing: .01em;
}
.qw-hero-sample-note strong {
  font-weight: 800;
}

.qw-hero-title > span { display: block; }

.qw-hero-title {
  font-size: clamp(2.8rem, 5.8vw, 5rem);
  font-weight: 900;
  margin: 0;
  color: var(--qw-white);
  text-shadow: 0 4px 24px rgba(0,0,0,.85);
  line-height: .94;
  text-wrap: balance;
  letter-spacing: -.03em;
}

.qw-hero-subtitle {
  font-size: clamp(1.5rem, 3vw, 2.3rem);
  font-weight: 700;
  margin: 0;
  color: var(--qw-white);
  text-shadow: 0 3px 16px rgba(0,0,0,.8);
  line-height: 1.28;
  text-wrap: balance;
}

/* CTAs */
.qw-hero-ctas {
  display: flex;
  gap: .88rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 1rem;
}

/* Trust badges */
.qw-hero-badges {
  display: flex;
  gap: .6rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 1.2rem;
  /* Extra bottom margin so badges don't overlap with the hero wave */
  margin-bottom: clamp(60px, 8vw, 100px);
}

.qw-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: .48rem;
  padding: .6rem 1.1rem;
  border-radius: 999px;
  background: rgba(8,16,12,.56);
  border: 1px solid rgba(27,207,23,.22);
  backdrop-filter: blur(10px);
  color: rgba(236,253,245,.94);
  font-size: .9rem;
  font-weight: 800;
  box-shadow: 0 8px 22px rgba(0,0,0,.16);
}
.qw-hero-badge-dot {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--qw-green);
  flex-shrink: 0;
}

/* Bottom wave â€” clean solid white organic transition */
.qw-hero-wave {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  z-index: 4;
  pointer-events: none;
  line-height: 0;
  overflow: hidden; /* Prevent SVG from causing iOS horizontal scroll */
  /* FIX sub-pixel anti-alias seam:
     El path SVG es blanco y llega a y=100 del viewBox. Cuando el navegador
     hace anti-aliasing del Ãºltimo pÃ­xel del path, lo mezcla con lo que hay
     detrÃ¡s del SVG (transparente â†’ .qw-hero-overlay con rgba(0,0,0,.50)).
     Resultado: una franja gris/oscura de 1px visible justo entre el wave y
     el siguiente bloque blanco (.qw-price-band).
     SoluciÃ³n: pintar el Ãºltimo 15% del propio wrapper en blanco sÃ³lido.
     La curva del path nunca baja de yâ‰ˆ85, asÃ­ que el Ãºltimo 15% siempre
     estÃ¡ cubierto por el path â†’ el fondo blanco no se ve, pero sÃ­ actÃºa
     como respaldo del anti-alias del path. */
  background: linear-gradient(
    to bottom,
    transparent 0%,
    transparent 85%,
    #ffffff 85%,
    #ffffff 100%
  );
}
.qw-hero-wave svg {
  display: block;
  width: 100%;
  height: clamp(60px, 8vw, 100px);
  /* Hint al renderer para que use GPU compositing y reduzca sub-pixel
     artifacts en el borde inferior del path */
  transform: translateZ(0);
}

/* ============================================================
   3) S1 â€” WHATIS: 3 feature cards, links to landing pages
   ============================================================ */

.qw-whatis { background: var(--qw-white); }

.qw-whatis .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-whatis-hero {
  margin: 2.25rem auto 0;
  max-width: 880px;
  text-align: center;
}
.qw-whatis-hero__img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 12px;
  box-shadow: 0 8px 28px rgba(15, 23, 42, .08);
}
.qw-whatis-hero__caption {
  margin-top: .9rem;
  font-size: 1rem;
  color: var(--qw-ink-soft, #475569);
  font-style: italic;
  line-height: 1.5;
}

.qw-whatis-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.75rem;
  margin-top: 2.25rem;
  text-align: left;
}

.qw-whatis-card {
  background: #ffffff;
  border: none;
  border-radius: var(--qw-radius-lg);
  padding: 2.25rem 1.85rem 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1rem;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
  text-decoration: none;
  color: inherit;
  position: relative;
  overflow: visible;
}
.qw-whatis-card:hover {
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}

.qw-whatis-icon {
  width: 62px;
  height: 62px;
  border-radius: var(--qw-radius);
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow:
    0 6px 16px -6px rgba(15,23,42,.22),
    0 2px 6px -2px rgba(15,23,42,.14);
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-whatis-icon svg {
  width: 34px;
  height: 34px;
  color: var(--qw-green);
}
.qw-whatis-icon--celeste {
  background: #ffffff;
}
.qw-whatis-icon--celeste svg {
  color: var(--qw-celeste-deep);
}
.qw-whatis-title {
  font-size: 1.65rem;
  font-weight: 900;
  letter-spacing: -.025em;
  color: var(--qw-ink);
  margin: 0;
  line-height: 1.12;
}
.qw-whatis-text {
  font-size: 1.08rem;
  font-weight: 900;
  color: var(--qw-ink);
  line-height: 1.5;
  margin: 0;
  flex-grow: 1;
  letter-spacing: -.005em;
}
.qw-whatis-link {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  font-size: 1.18rem;
  font-weight: 900;
  color: var(--qw-green-contrast);
  text-transform: uppercase;
  letter-spacing: .03em;
  margin-top: auto;
}
.qw-whatis-link-arrow {
  display: inline-block;
  transition: transform var(--qw-speed) var(--qw-ease);
}
.qw-whatis-card:hover .qw-whatis-link-arrow { transform: translateX(4px); }

/* ============================================================
   6) S2 â€” ORIGIN: 4-step vertical timeline
   ============================================================ */

.qw-origin { background: var(--qw-white); }
.qw-origin .qw-inner { padding-top: 4.5rem; padding-bottom: 4.5rem; }

/* Legacy â€” .qw-origin-layout unused in current HTML, kept for compat */
.qw-origin-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 3rem;
  align-items: start;
  margin-top: 2.25rem;
  position: relative;
}
.qw-origin-layout::after {
  content: "";
  position: absolute;
  right: 0; top: 0;
  width: 45%; height: 100%;
  background-image: var(--qw-wm-tree);
  background-repeat: no-repeat;
  background-position: center 30%;
  background-size: 280px;
  opacity: .032;
  pointer-events: none;
}
.qw-origin-copy {}

/* ---- Card grid layout (replaces vertical timeline) ---- */
.qw-origin-timeline {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  margin-top: 2.5rem;
  padding: 0;
  position: relative;
}

/* Connecting line behind cards */
.qw-origin-timeline::before {
  content: "";
  position: absolute;
  top: 54px;
  left: 12%;
  right: 12%;
  height: 2px;
  background: linear-gradient(90deg, var(--qw-green), var(--qw-celeste), var(--qw-celeste), var(--qw-green));
  opacity: .16;
  border-radius: 999px;
  z-index: 0;
}

/* Card */
.qw-origin-step {
  position: relative;
  background: #ffffff;
  border: none;
  border-radius: var(--qw-radius-lg);
  padding: 2rem 1.5rem 1.75rem;
  text-align: center;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  transition: transform var(--qw-speed) var(--qw-ease), box-shadow var(--qw-speed) var(--qw-ease);
  z-index: 1;
}
.qw-origin-step:hover {
  box-shadow: var(--qw-shadow);
}
.qw-origin-step:last-child { padding-bottom: 1.75rem; }

/* Remove old timeline dot */
.qw-origin-step::before { display: none; }

/* Top accent border by variant */
.qw-origin-step--green  { border-top: 3px solid var(--qw-green); }
.qw-origin-step--celeste { border-top: 3px solid var(--qw-celeste); }

/* Icon container â€” white + soft shadow (color via SVG/text) */
.qw-origin-step-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 14px;
  margin-bottom: .75rem;
  background: #ffffff;
  box-shadow:
    0 6px 16px -6px rgba(15,23,42,.22),
    0 2px 6px -2px rgba(15,23,42,.14);
  transition: transform var(--qw-speed) var(--qw-ease);
}
.qw-origin-step:hover .qw-origin-step-icon { transform: scale(1.06); }
.qw-origin-step--green  .qw-origin-step-icon { color: var(--qw-green-dark); }
.qw-origin-step--celeste .qw-origin-step-icon { color: var(--qw-celeste-deep); }

/* Step number */
.qw-origin-step-num {
  display: block;
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: .4rem;
}
.qw-origin-step--green  .qw-origin-step-num { color: var(--qw-green-contrast); }   /* AA: verde sobre blanco */
.qw-origin-step--celeste .qw-origin-step-num { color: var(--qw-celeste-deep); } /* brand-locked: celeste-deep #0ea5e9 sobre blanco */

.qw-origin-step-title {
  font-size: 1.05rem;
  font-weight: 900;
  color: var(--qw-ink);
  margin: 0 0 .45rem;
  line-height: 1.28;
}
.qw-origin-step-text {
  font-size: .86rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.6;
  margin: 0;
}

/* ============================================================
   7) S3 â€” INSTALL STEPS: 3 numbered circles, alt bg
   ============================================================ */

.qw-install-steps { background: #ffffff; }
.qw-install-steps .qw-inner { padding-top: 4.5rem; padding-bottom: 4.5rem; }

/* Watermark: moved to centralized system (section 18) */

.qw-steps-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.75rem;
  margin-top: 2.5rem;
  position: relative;
}

/* Horizontal connector between circles (desktop) */
.qw-steps-grid::before {
  content: "";
  position: absolute;
  top: 36px;
  left: calc(16.66% + 1px);
  right: calc(16.66% + 1px);
  height: 2px;
  background: var(--qw-green);
  opacity: .28;
}

.qw-step-card {
  background: #ffffff;
  border-radius: var(--qw-radius-lg);
  padding: 2.25rem 1.75rem 2rem;
  text-align: center;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  border: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
  position: relative;
  z-index: 1;
}
.qw-step-card:hover {
  box-shadow: var(--qw-shadow);
}

.qw-step-num {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.55rem;
  font-weight: 900;
  color: var(--qw-white);
  flex-shrink: 0;
  box-shadow: 0 10px 26px rgba(27,207,23,.22);
  background: var(--qw-green);
  transition: transform var(--qw-speed) var(--qw-ease);
}
.qw-step-card:nth-child(2) .qw-step-num {
  background: var(--qw-green-dark);
}
.qw-step-card:nth-child(3) .qw-step-num {
  background: var(--qw-celeste);
  box-shadow: 0 10px 26px rgba(14, 165, 233,.22);
}

.qw-step-title {
  font-size: 1.18rem;
  font-weight: 900;
  color: var(--qw-ink);
  margin: 0;
  line-height: 1.25;
}
.qw-step-text {
  font-size: .94rem;
  font-weight: 800;
  color: var(--qw-muted);
  line-height: 1.65;
  margin: 0;
}

/* ---- Install step CTAs ---- */
.qw-install-ctas {
  display: flex;
  gap: 1.25rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 2.5rem;
}
.qw-install-cta {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .75rem 1.6rem;
  border-radius: 999px;
  font-size: .94rem;
  font-weight: 900;
  color: var(--qw-celeste-deep);
  background: #ffffff;
  border: none;
  box-shadow: 0 4px 12px rgba(15,23,42,.08);
  text-decoration: none;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    background-color var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-install-cta:hover {
  background: #ffffff;
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(15,23,42,.12);
}
.qw-install-cta svg {
  width: 16px;
  height: 16px;
  fill: var(--qw-celeste-deep);
}
.qw-install-cta--secondary {
  background: transparent;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(15,23,42,.08);
  color: var(--qw-green-dark);
}
.qw-install-cta--secondary:hover {
  background: var(--qw-green-soft);
  border-color: rgba(27,207,23,.22);
  box-shadow: 0 8px 22px rgba(27,207,23,.10);
}

/* ---- Section contextual link ---- */
.qw-section-link {
  margin-top: 2rem;
  font-size: .9rem;
  font-weight: 700;
}
.qw-section-link a {
  color: var(--qw-green);
  text-decoration: none;
  transition: color var(--qw-speed) var(--qw-ease);
}
.qw-section-link a:hover {
  color: var(--qw-green-dark);
}

/* ============================================================
   8) S4 â€” BEFORE/AFTER COMPARATOR
   ============================================================ */

.qw-before-after { background: var(--qw-white); }
.qw-before-after .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-ba-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 3rem;
  align-items: center;
  margin-top: 2.25rem;
}

.qw-ba-copy .qw-subheading {
  color: var(--qw-muted);
}

/* ============================================================
   8) S4 â€” BEFORE/AFTER COMPARATOR
   ============================================================ */

/* Comparator widget */
.qw-ba-widget {
  border-radius: var(--qw-radius-lg);
  overflow: hidden;
  box-shadow: 0 20px 52px rgba(15,23,42,.14);
  background: var(--qw-ink);
  position: relative;
  max-width: 640px;
  margin: 1.25rem auto 0;
}
/* FIX 2026-07-15 (owner): un comparador visible a la vez + conmutador de pestañas. */
.qw-ba-widget.is-hidden { display: none; }
.qw-ba-tabs {
  display: flex;
  justify-content: center;
  gap: .5rem;
  margin: 1.75rem 0 0;
}
.qw-ba-tab {
  border: 1px solid rgba(15,23,42,.12);
  background: #ffffff;
  color: var(--qw-ink);
  border-radius: 999px;
  padding: .5rem 1.35rem;
  font-weight: 800;
  font-size: .9rem;
  line-height: 1;
  cursor: pointer;
  min-height: 42px;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.qw-ba-tab:hover { border-color: rgba(14,165,233,.45); }
.qw-ba-tab.is-active {
  background: #0ea5e9;
  color: #ffffff;
  border-color: #0ea5e9;
}
.qw-ba-tab:focus-visible {
  outline: 3px solid rgba(14,165,233,.5);
  outline-offset: 2px;
}

.qw-ba-inner {
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  min-height: 300px;
  max-height: 520px;
  background: var(--qw-ink);
  touch-action: none;
  contain: layout paint;
  overflow: hidden;
}

.qw-ba-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}
/* Specificity bump: la regla global .qw-home-landing img { height: auto }
   pisa width/height: 100% del .qw-ba-img base. Re-declaramos aquÃ­ en un
   selector scoped para ganar la cascada (audit live 2026-05-06). */
.qw-home-landing .qw-ba-img {
  width: 100%;
  height: 100%;
}
/* After image (despuÃ©s): show bottom to see the floor, not the ceiling */
.qw-home-landing .qw-ba-img--after { object-position: center bottom; }
/* Before image (antes): keep centered â€” the black-floor original is correct as-is, do not touch */
.qw-home-landing .qw-ba-overlay .qw-ba-img--before { object-position: center center; }

.qw-ba-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: hidden;
  clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%);
  -webkit-clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%);
}
.qw-ba-overlay .qw-ba-img { position: relative; width: 100%; height: 100%; }

/* Label chips */
.qw-ba-chip {
  position: absolute;
  bottom: 56px;
  z-index: 4;
  padding: .32rem .72rem;
  border-radius: 999px;
  font-size: .75rem;
  font-weight: 800;
  pointer-events: none;
  backdrop-filter: blur(8px);
}
.qw-ba-chip--before {
  left: 14px;
  background: rgba(15,23,42,.68);
  color: rgba(255,255,255,.9);
}
.qw-ba-chip--after {
  right: 14px;
  background: rgba(27,207,23,.72);
  color: var(--qw-white);
}

/* Range input */
.qw-ba-range {
  position: absolute;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  width: min(70%, 340px);
  z-index: 10;
  -webkit-appearance: none;
  appearance: none;
  height: 26px;
  background: transparent;
  outline: none;
  cursor: ew-resize;
  -webkit-tap-highlight-color: transparent;
}
.qw-ba-range::-webkit-slider-runnable-track {
  height: 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.72);
}
.qw-ba-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--qw-green);
  border: 2px solid rgba(0,0,0,.5);
  margin-top: -7.5px;
  box-shadow: 0 0 0 4px rgba(27,207,23,.20), 0 8px 20px rgba(0,0,0,.26);
}
.qw-ba-range::-moz-range-track {
  height: 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.72);
}
.qw-ba-range::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--qw-green);
  border: 2px solid rgba(0,0,0,.5);
  box-shadow: 0 0 0 4px rgba(27,207,23,.20), 0 8px 20px rgba(0,0,0,.26);
}
.qw-ba-range::-moz-range-progress {
  height: 5px;
  border-radius: 999px;
  background: rgba(27,207,23,.42);
}

/* ============================================================
   9) S4b â€” NUESTROS TRABAJOS: fade carousel + lightbox
   ============================================================ */

.qw-trabajos { background: var(--qw-white); }
.qw-trabajos .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-trabajos-carousel {
  margin-top: 2.25rem;
  position: relative;
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
}

.qw-trabajos-stage {
  position: relative;
  aspect-ratio: 1 / 1;
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
  border-radius: var(--qw-radius-lg);
  overflow: hidden;
  background: #ffffff;
  box-shadow: 0 16px 38px rgba(15,23,42,.08);
}

.qw-trabajos-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity .5s var(--qw-ease), visibility .5s var(--qw-ease);
  cursor: zoom-in;
}
.qw-trabajos-slide.is-active {
  opacity: 1;
  visibility: visible;
  z-index: 2;
}

/* Trabajos + FAQ: bg blanco (#ffffff) â€” grey cleanup 2026-05-27.
   Previously #f5f7f9 for color rhythm; now unified to white. */
.qw-home-landing .qw-trabajos,
.qw-home-landing .qw-faq {
  background: #ffffff;
}

/* Specificity bump: scoping bajo .qw-home-landing es necesario para
   superar la regla global .qw-home-landing img { height: auto } que
   pisarÃ­a width/height: 100% en estos IMG (audit live 2026-05-06). */
.qw-home-landing .qw-trabajos-slide__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  filter: blur(28px) brightness(.7) saturate(1.1);
  transform: scale(1.15);
  z-index: 0;
  user-select: none;
  pointer-events: none;
}
.qw-home-landing .qw-trabajos-slide__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center bottom;
  display: block;
  user-select: none;
  z-index: 1;
  transition: transform .6s var(--qw-ease, cubic-bezier(.2,.8,.2,1));
}
.qw-home-landing .qw-trabajos-slide.is-active .qw-trabajos-slide__img {
  transform: scale(1.02);
}

/* FIX 2026-07-15 (owner): fuera la franja negra (background) — ocupaba demasiado. El texto
   contrasta con una sombra negra difuminada LIGERA en su lugar. Padding superior reducido. */
.qw-trabajos-slide__caption {
  position: absolute;
  inset: auto 0 0;
  padding: 1.4rem 1.5rem 1.2rem;
  color: var(--qw-white);
  z-index: 2;
  pointer-events: none;
}
.qw-trabajos-slide__wood {
  display: block;
  font-size: 1.05rem;
  font-weight: 900;
  letter-spacing: .01em;
  text-shadow: 0 1px 3px rgba(0,0,0,.6), 0 2px 14px rgba(0,0,0,.45);
}
.qw-trabajos-slide__location {
  display: block;
  font-size: .82rem;
  font-weight: 700;
  color: rgba(255,255,255,.9);
  margin-top: .15rem;
  text-shadow: 0 1px 3px rgba(0,0,0,.6), 0 2px 12px rgba(0,0,0,.4);
}

/* Arrows â€” botones redondos (no oval). El padding default del UA `<button>`
   inflaba la caja a ~47Ã—44; con padding:0 y aspect-ratio:1 forzamos cuadrado.
   Hover: NO verde â€” solo el SVG escala ligeramente. */
.qw-trabajos-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 44px !important;
  height: 44px !important;
  aspect-ratio: 1 / 1;
  padding: 0 !important;
  border-radius: 50% !important;
  background: rgba(15,23,42,.62);
  border: 1px solid rgba(255,255,255,.18);
  color: var(--qw-white);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(8px);
  flex: 0 0 auto;
  transition:
    background var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-trabajos-arrow:hover {
  background: rgba(15,23,42,.78);
  border-color: rgba(255,255,255,.32);
  box-shadow: 0 6px 18px rgba(15,23,42,.22);
}
.qw-trabajos-arrow:active {
  transform: translateY(-50%) scale(.98);
}
.qw-trabajos-arrow svg {
  width: 18px !important;
  height: 18px !important;
  min-width: 18px;
  flex-shrink: 0;
  display: block;
  overflow: visible;
  transition: transform var(--qw-speed) var(--qw-ease);
}
.qw-trabajos-arrow:hover svg,
.qw-trabajos-arrow:focus-visible svg {
  transform: scale(1.18);
}
.qw-trabajos-arrow svg polyline,
.qw-trabajos-arrow svg path {
  stroke: #ffffff;
  stroke-width: 2.5;
  fill: none;
}
.qw-trabajos-arrow--prev { left: 14px; }
.qw-trabajos-arrow--next { right: 14px; }

@keyframes qwTrabajosArrowFlash {
  0%, 100% { transform: translateY(-50%) scale(1); }
  50%      { transform: translateY(-50%) scale(1.18); }
}
.qw-trabajos-arrow.is-flash {
  animation: qwTrabajosArrowFlash .6s var(--qw-ease);
}

/* Progress bar â€” compact + bold (2026-05-06): ancho contenido al stage,
   track mÃ¡s fino y counter en peso 900 para presencia sin ocupar tanto. */
.qw-trabajos-progress {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin: .75rem auto 0;
  padding: 0;
  max-width: 600px;
}
.qw-trabajos-progress__track {
  flex: 1 1 auto;
  height: 3px;
  border-radius: 999px;
  background: rgba(15,23,42,.08);
  overflow: hidden;
}
.qw-trabajos-progress__fill {
  height: 100%;
  background: var(--qw-green);
  border-radius: 999px;
  transition: width .4s var(--qw-ease);
}
.qw-trabajos-progress__counter {
  flex-shrink: 0;
  font-size: .72rem;
  font-weight: 900;
  color: var(--qw-ink);
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  min-width: 30px;
  text-align: right;
}

/* Lightbox â€” fullscreen modal */
.qw-trabajos-lightbox {
  position: fixed;
  inset: 0;
  z-index: 99998;
  background: rgba(8,12,20,.94);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  backdrop-filter: blur(6px);
}
.qw-trabajos-lightbox.is-open {
  display: flex;
  animation: qwFadeUp .25s var(--qw-ease) both;
}

.qw-trabajos-lightbox__img {
  max-width: 100%;
  max-height: calc(100vh - 80px);
  object-fit: contain;
  border-radius: var(--qw-radius);
  box-shadow: 0 24px 60px rgba(0,0,0,.5);
}

.qw-trabajos-lightbox__close {
  position: absolute;
  top: env(safe-area-inset-top, 18px);
  right: 18px;
  width: 40px !important;
  height: 40px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.22);
  color: var(--qw-white);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .2s var(--qw-ease), transform .2s var(--qw-ease);
  flex: 0 0 auto;
}
.qw-trabajos-lightbox__close:hover {
  background: rgba(239,68,68,.6);
  border-color: rgba(239,68,68,.4);
  transform: scale(1.06);
}
.qw-trabajos-lightbox__close svg {
  width: 18px;
  height: 18px;
  stroke: #fff;
  fill: none;
}

.qw-trabajos-lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 4;
  width: 44px !important;
  height: 44px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.18);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(6px);
  transition: background .2s var(--qw-ease), transform .2s var(--qw-ease);
  flex: 0 0 auto;
}
.qw-trabajos-lightbox__nav:hover {
  background: rgba(27,207,23,.6);
  transform: translateY(-50%) scale(1.06);
}
.qw-trabajos-lightbox__nav svg { width: 18px; height: 18px; stroke: #fff; }
.qw-trabajos-lightbox__nav--prev { left: 18px; }
.qw-trabajos-lightbox__nav--next { right: 18px; }

.qw-trabajos-lightbox__counter {
  position: absolute;
  top: env(safe-area-inset-top, 18px);
  left: 18px;
  padding: .35rem .85rem;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  color: var(--qw-white);
  font-size: .8rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.qw-trabajos-lightbox__caption {
  position: absolute;
  bottom: env(safe-area-inset-bottom, 22px);
  left: 50%;
  transform: translateX(-50%);
  max-width: min(640px, 92%);
  padding: .55rem 1.2rem;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  color: var(--qw-white);
  text-align: center;
  font-size: .9rem;
  font-weight: 700;
  backdrop-filter: blur(8px);
}
.qw-trabajos-lightbox__caption strong {
  font-weight: 900;
}
.qw-trabajos-lightbox__caption span {
  margin-left: .5rem;
  font-weight: 700;
  color: rgba(255,255,255,.72);
}

/* Lightbox â€” focus a11y */
.qw-trabajos-lightbox__close:focus-visible,
.qw-trabajos-lightbox__nav:focus-visible {
  outline: 2px solid rgba(27,207,23,.88);
  outline-offset: 3px;
}

/* Lightbox â€” reduced motion */
@media (prefers-reduced-motion: reduce) {
  .qw-trabajos-lightbox.is-open { animation: none; }
  .qw-trabajos-arrow.is-flash { animation: none; }
}

/* Lightbox â€” mobile */
@media (max-width: 640px) {
  .qw-trabajos-arrow { width: 38px; height: 38px; }
  .qw-trabajos-arrow--prev { left: 6px; }
  .qw-trabajos-arrow--next { right: 6px; }
  .qw-trabajos-lightbox__nav { width: 36px; height: 36px; }
  .qw-trabajos-lightbox__nav--prev { left: 4px; }
  .qw-trabajos-lightbox__nav--next { right: 4px; }
  .qw-trabajos-lightbox__close { width: 36px; height: 36px; top: 12px; right: 12px; }
  .qw-trabajos-lightbox__counter { top: 12px; left: 12px; }
  .qw-trabajos-lightbox__caption { font-size: .82rem; padding: .45rem 1rem; }
}

/* ============================================================
   10) S6 â€” DURABILITY: 2-col, 4 points + metrics 2x2 grid
   ============================================================ */

.qw-durability { background: var(--qw-white); }
.qw-durability .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-dur-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: 3rem;
  align-items: start;
  margin-top: 2.25rem;
}

/* Feature list */
.qw-dur-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.qw-dur-item {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}
.qw-dur-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow:
    0 6px 16px -6px rgba(15,23,42,.22),
    0 2px 6px -2px rgba(15,23,42,.14);
}
.qw-dur-icon svg {
  width: 28px;
  height: 28px;
  color: var(--qw-green);
}
.qw-dur-icon--celeste {
  background: #ffffff;
}
.qw-dur-icon--celeste svg {
  color: var(--qw-celeste-deep);
}
.qw-dur-item-title {
  font-size: 1.08rem;
  font-weight: 900;
  color: var(--qw-ink);
  margin: 0 0 .25rem;
}
.qw-dur-item-text {
  font-size: .88rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.65;
  margin: 0;
}

/* Metrics 2x2 grid */
.qw-metrics-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.2rem;
}

.qw-metric {
  background: #ffffff;
  border-radius: var(--qw-radius);
  padding: 1.5rem 1.25rem;
  text-align: center;
  border: none;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-metric:hover {
  transform: translateY(-4px);
  box-shadow: var(--qw-shadow-soft);
}

.qw-metric-value {
  font-size: clamp(2.1rem, 3.4vw, 2.9rem);
  font-weight: 900;
  color: var(--qw-green);
  line-height: 1;
  display: block;
  margin-bottom: .3rem;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
  /* counter-pop animation via JS class */
}
.qw-metric-value--celeste { color: var(--qw-celeste); }
.qw-metric-value--green { color: var(--qw-green); }
.qw-metric-value.is-animated { animation: qwCounterPop .45s var(--qwood-ease-spring, cubic-bezier(.34,1.56,.64,1)) both; }

.qw-metric-label {
  font-size: .82rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.4;
  text-wrap: balance;
}

/* ============================================================
   12) S8 â€” REVIEWS: 3-col grid, star rating, badge
   ============================================================ */

.qw-reviews { background: var(--qw-white); }
.qw-reviews .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-reviews-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.6rem;
  margin-top: 2.25rem;
  text-align: left; /* reset for card content */
}

.qw-review-card {
  background: #ffffff;
  border: none;
  border-radius: var(--qw-radius-lg);
  padding: 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  box-shadow: var(--qw-shadow-soft);
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-review-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--qw-shadow);
}

.qw-review-stars {
  display: flex;
  gap: .25rem;
}
.qw-review-star {
  width: 18px;
  height: 18px;
  color: var(--qwood-color-warn, #475569);
  fill: var(--qwood-color-warn, #475569);
}

.qw-review-text {
  font-size: .95rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.7;
  margin: 0;
  flex-grow: 1;
}
.qw-review-text::before {
  content: "\201C";
  font-size: 1.6rem;
  line-height: 0;
  vertical-align: -.4em;
  color: var(--qw-green);
  font-weight: 900;
  margin-right: .15em;
}

.qw-review-author {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-top: auto;
}
.qw-review-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--qw-green-soft);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--qw-green-dark);
  overflow: hidden;
}
.qw-review-avatar img { width: 100%; height: 100%; object-fit: cover; }
.qw-review-name {
  font-size: .9rem;
  font-weight: 800;
  color: var(--qw-ink);
  display: block;
}
.qw-review-meta {
  font-size: .78rem;
  font-weight: 700;
  color: var(--qw-muted);
}

/* Aggregate badge â€” centered */
.qw-reviews-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 2.5rem;
  padding: .65rem 1.4rem;
  border-radius: 999px;
  border: none;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
  font-size: .92rem;
  font-weight: 900;
  color: var(--qw-green-contrast);
}
.qw-reviews .qw-inner { text-align: center; }

/* Reviews carousel â€” fade-based, 1 slide visible at a time */
.qw-reviews .qw-reviews-carousel--fade {
  margin-top: 2.5rem;
  position: relative;
}

/* Stage â€” stacked slides via position absolute */
.qw-reviews-stage {
  position: relative;
  min-height: 220px;
}

/* Each slide â€” centered, stacked, fades in/out */
.qw-review-slide {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  text-align: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity .5s ease, visibility .5s ease;
  pointer-events: none;
  padding: 1.5rem;
}
.qw-review-slide.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  position: relative;
}

/* Avatar */
.qw-review-slide__avatar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid rgba(27,207,23,.15);
}
.qw-review-slide__avatar--placeholder {
  background: var(--qw-green-soft);
  color: var(--qw-green-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 1.3rem;
}

/* Stars */
.qw-review-slide__stars {
  display: flex;
  gap: .3rem;
  justify-content: center;
}

/* Quote text */
.qw-review-slide__text {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.7;
  max-width: 640px;
  margin: 0 auto;
  text-wrap: balance;
  border: 0;
  padding: 0;
  quotes: "\201C" "\201D";
}
.qw-review-slide__text::before { content: open-quote; color: var(--qw-green); font-weight: 900; font-size: 1.4em; margin-right: .1em; }
.qw-review-slide__text::after  { content: close-quote; color: var(--qw-green); font-weight: 900; font-size: 1.4em; margin-left: .1em; }

/* Author name */
.qw-review-slide__author {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .15rem;
}
.qw-review-slide__author strong {
  font-size: .95rem;
  font-weight: 900;
  color: var(--qw-ink);
}
.qw-review-slide__author span {
  font-size: .78rem;
  font-weight: 700;
  color: var(--qw-muted);
}

/* Dots */
.qw-reviews-dots {
  display: flex;
  justify-content: center;
  gap: .5rem;
  margin-top: 1.5rem;
  flex-wrap: wrap;
}
.qw-reviews-dot {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
}
.qw-reviews-dot::after {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(15,23,42,.18);
  transition: background .2s ease, transform .2s ease;
}
.qw-reviews-dot--active::after {
  background: var(--qw-green);
  transform: scale(1.2);
}
.qw-reviews-dot:hover:not(.qw-reviews-dot--active)::after {
  background: rgba(27,207,23,.36);
}
.qw-reviews-dot:focus-visible {
  outline: 2px solid var(--qw-green);
  outline-offset: 2px;
  border-radius: 50%;
}
.qw-reviews .qw-reviews-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
  font-size: .95rem;
  font-weight: 700;
}
.qw-reviews .qw-reviews-summary__rating {
  font-size: 1.1rem;
  font-weight: 900;
  color: var(--qw-ink);
}
.qw-reviews .qw-reviews-summary__count {
  color: var(--qw-muted);
  font-weight: 700;
}
.qw-reviews .qw-reviews-cta {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 2rem;
  font-size: .9rem;
  font-weight: 800;
  color: var(--qw-green-contrast);
}

/* ============================================================
   13) S9 â€” TARGETS: 2x2 grid, border-left alternating colors
   ============================================================ */

.qw-targets { background: #ffffff; }
.qw-targets .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-targets-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  margin-top: 2.25rem;
  text-align: left;
}

.qw-target-card {
  background: var(--qw-white);
  border-radius: var(--qw-radius);
  padding: 2rem 1.75rem;
  box-shadow: var(--qw-shadow-soft);
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
/* Alternate accent removed â€” no border-left bars */
.qw-target-card:nth-child(2) .qw-target-icon,
.qw-target-card:nth-child(4) .qw-target-icon {
  background: #ffffff;
  color: var(--qw-celeste-deep);
  fill: var(--qw-celeste-deep);
}

.qw-target-card:hover {
  box-shadow: var(--qw-shadow);
}

.qw-target-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #ffffff;
  color: var(--qw-green);
  fill: var(--qw-green);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow:
    0 6px 16px -6px rgba(15,23,42,.22),
    0 2px 6px -2px rgba(15,23,42,.14);
}
.qw-target-icon svg {
  width: 24px;
  height: 24px;
  color: inherit;
  fill: inherit;
}

.qw-target-body {}
.qw-target-title {
  font-size: 1.12rem;
  font-weight: 900;
  color: var(--qw-ink);
  margin: 0 0 .4rem;
  line-height: 1.25;
}
.qw-target-text {
  font-size: .9rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.65;
  margin: 0;
}

/* ============================================================
   14) S10 â€” GUIDES: 2-col, guide cards + email capture form
   ============================================================ */

.qw-guides { background: var(--qw-white); }
.qw-guides .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-guides-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 3rem;
  align-items: start;
  margin-top: 2.25rem;
}

/* Guide cards stack */
.qw-guide-cards { display: flex; flex-direction: column; gap: 1.2rem; }

.qw-guide-card {
  display: flex;
  gap: 1.1rem;
  /* FIX 2026-07-15 (owner: "mejora las guías"): con descripción (multi-línea) alinear arriba. */
  align-items: flex-start;
  background: #ffffff;
  border-radius: var(--qw-radius);
  padding: 1.2rem 1.35rem;
  border: none;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  text-decoration: none;
  color: inherit;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
}
.qw-guide-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}

.qw-guide-thumb {
  width: 60px;
  height: 60px;
  border-radius: 10px;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--qw-green-soft);
}

/* Guide icon */
.qw-guide-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.qw-guide-icon svg {
  width: 22px;
  height: 22px;
  color: var(--qw-green);
  stroke: var(--qw-green);
}
.qw-guide-card:nth-child(2) .qw-guide-icon {
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
}
.qw-guide-card:nth-child(2) .qw-guide-icon svg {
  color: var(--qw-celeste-deep);
  stroke: var(--qw-celeste-deep);
}

.qw-guide-meta { flex: 1 1 0; }
.qw-guide-tag {
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--qw-celeste-deep);
  margin-bottom: .2rem;
  display: block;
}
.qw-guide-title {
  font-size: .96rem;
  font-weight: 900;
  color: var(--qw-ink);
  margin: 0;
  line-height: 1.3;
}
/* FIX 2026-07-15 (owner: "mejora las guías"): descripción de qué contiene cada guía. */
.qw-guide-desc {
  margin: .3rem 0 0;
  font-size: .82rem;
  line-height: 1.45;
  color: var(--qw-muted);
}

/* Guide card as download link */
a.qw-guide-card--link {
  text-decoration: none;
  color: inherit;
}
a.qw-guide-card--link:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}
.qw-guide-dl-hint {
  display: block;
  font-size: .78rem;
  font-weight: 700;
  color: var(--qw-green-contrast);
  margin-top: .2rem;
}
.qw-guide-dl-hint--soon {
  color: var(--qw-muted);
}
.qw-guide-dl-icon {
  margin-left: auto;
  flex-shrink: 0;
  color: var(--qw-green);
  opacity: .6;
  transition: opacity .2s ease;
}
a.qw-guide-card--link:hover .qw-guide-dl-icon { opacity: 1; }

/* Email capture form */
.qw-guides-form-wrap {
  background: #ffffff;
  border-radius: var(--qw-radius-lg);
  padding: 2.25rem 2rem;
  border: none;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
}
.qw-guides-form-title {
  font-size: 1.28rem;
  font-weight: 800;
  color: var(--qw-ink);
  margin: 0 0 .5rem;
  line-height: 1.3;
}
.qw-guides-form-sub {
  font-size: .88rem;
  font-weight: 700;
  color: var(--qw-muted);
  margin: 0 0 1.5rem;
  line-height: 1.55;
}

.qw-form-field {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin-bottom: 1rem;
}
.qw-form-label {
  font-size: .8rem;
  font-weight: 700;
  color: var(--qw-ink);
  letter-spacing: .03em;
}
.qw-form-input,
.qw-form-select {
  width: 100%;
  height: 48px;
  padding: 0 1rem;
  border-radius: var(--qw-radius);
  border: none !important;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
  background: #ffffff !important;
  font-family: var(--qwood-font, "Montserrat", system-ui, sans-serif);
  font-size: .95rem;
  font-weight: 700;
  color: var(--qw-ink);
  outline: none;
  transition:
    border-color var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
  appearance: none;
}
.qw-form-input:focus,
.qw-form-select:focus {
  border-color: rgba(27,207,23,.55);
  box-shadow: 0 0 0 3px rgba(27,207,23,.14);
}
.qw-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .75rem;
}

.qw-form-consent {
  display: flex;
  gap: .65rem;
  align-items: flex-start;
  margin-bottom: 1.25rem;
}
.qw-form-consent-check {
  width: 18px;
  height: 18px;
  border-radius: 4px;
  border: none;
  box-shadow: 0 2px 6px rgba(15,23,42,.10);
  background: #ffffff;
  flex-shrink: 0;
  margin-top: .1rem;
  cursor: pointer;
  accent-color: var(--qw-green);
}
.qw-form-consent-text {
  font-size: .78rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.55;
}
.qw-form-consent-text a { color: var(--qw-green-dark); }

/* Email capture status */
.qw-guides-form-status {
  font-size: .88rem;
  font-weight: 700;
  margin-top: .75rem;
  min-height: 1.2em;
}

/* PDF fallback links */
.qw-guides-form-fallback {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: none;
  font-size: .82rem;
  font-weight: 700;
  color: var(--qw-muted);
}
.qw-guides-form-fallback a {
  color: var(--qw-green);
}
.qw-guides-form-fallback a:hover { color: var(--qw-green-dark); }

/* Reviews fallback (when google-reviews.php not available) */
.qw-reviews-fallback {
  text-align: center;
  margin-top: 2rem;
  padding: 2.5rem 2rem;
  background: #ffffff;
  border-radius: var(--qw-radius-lg);
  border: none;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
}
.qw-reviews-fallback__rating {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--qw-ink);
  margin: 0 0 1.25rem;
  letter-spacing: .04em;
}
.qw-reviews-fallback__rating strong { color: var(--qw-green); }

/* ============================================================
   15) S11 â€” FAQ: 2-col details/summary, mobile toggle
   ============================================================ */

.qw-faq { background: #ffffff; }
.qw-faq .qw-inner { padding-top: 4rem; padding-bottom: 4rem; }

.qw-faq-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.4rem 2.5rem;  /* row gap aumentado de 1 â†’ 1.4rem para respirar */
  margin-top: 2.25rem;
  text-align: left;
}

.qw-faq-item {
  border-radius: var(--qw-radius);
  background: #ffffff;
  border: none;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
  overflow: visible;
  transition:
    box-shadow var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease);
}
.qw-faq-item:hover {
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}
.qw-faq-item[open] {
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}

.qw-faq-summary {
  list-style: none;
  padding: 1.15rem 1.4rem;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  font-size: 1rem;
  font-weight: 900;
  color: var(--qw-ink);
  line-height: 1.4;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.qw-faq-summary::-webkit-details-marker { display: none; }

.qw-faq-icon {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
  color: var(--qw-green);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  font-weight: 900;
  transition:
    transform var(--qw-speed) var(--qw-ease),
    background-color var(--qw-speed) var(--qw-ease),
    box-shadow var(--qw-speed) var(--qw-ease);
  line-height: 1;
}
.qw-faq-icon::before { content: "+"; }
.qw-faq-item[open] .qw-faq-icon {
  transform: rotate(45deg);
  background: var(--qw-green);
  color: var(--qw-white);
}

.qw-faq-body {
  padding: 0 1.4rem 1.15rem;
  font-size: .9rem;
  font-weight: 700;
  color: var(--qw-muted);
  line-height: 1.7;
}
.qw-faq-body p { margin: 0; }
.qw-faq-body p + p { margin-top: .75rem; }

/* Mobile: show only first 3 items; "Ver mÃ¡s" toggle */
.qw-faq-show-more {
  display: none; /* Shown via responsive rule */
  margin-top: 1.5rem;
  text-align: center;
}
.qw-faq-show-more-btn {
  background: transparent;
  border: none;
  box-shadow: 0 4px 14px rgba(15,23,42,.08);
  border-radius: 999px;
  padding: .65rem 1.6rem;
  font-size: .88rem;
  font-weight: 800;
  color: var(--qw-green-contrast);
  cursor: pointer;
  transition:
    background var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease);
}
.qw-faq-show-more-btn:hover {
  background: var(--qw-green-soft);
  border-color: rgba(27,207,23,.28);
}
/* ============================================================
   17) S13 â€” CONTACT + FOOTER: dark bg, social, map, legal
   ============================================================ */

.qw-contact-footer {
  background: var(--qw-green, #1bcf17);
  color: rgba(255,255,255,.95);
  position: relative;
  overflow: hidden;
}

/* ::before/::after watermarks â†’ SSOT en global-footer.css (2026-05-08) */

.qw-contact-footer .qw-inner {
  position: relative;
  z-index: 1;
  padding-top: 4.5rem;
  padding-bottom: 3rem;
}

.qw-footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 3rem;
  margin-bottom: 3rem;
}

/* Brand column â€” card blanca compacta sobre fondo verde, con bordes ola */
.qw-footer-brand {
  position: relative;
  background: #ffffff;
  padding: 1.85rem 1.6rem;
  max-width: 380px;
  border-radius: 28px;
  box-shadow: 0 12px 32px rgba(0,0,0,.18);
  color: var(--qw-ink, #0f172a);
}
.qw-footer-brand-logo {
  display: inline-block;
  margin-bottom: 1.4rem;
  text-decoration: none;
  line-height: 0;
}
.qw-footer-logo {
  display: block;
  max-width: 180px;
  height: auto;
  opacity: 1;
  transition: opacity var(--qw-speed) var(--qw-ease);
}
.qw-footer-brand-logo:hover .qw-footer-logo {
  opacity: 1;
}
.qw-footer-tagline {
  font-size: .92rem;
  font-weight: 800;
  color: #ffffff;
  line-height: 1.62;
  margin: 0 0 1.6rem;
  max-width: 22ch;
}

/* Footer brand name */
.qw-footer-brand-name {
  font-size: 1.65rem;
  font-weight: 900;
  color: var(--qw-green);
  letter-spacing: .06em;
  margin-bottom: 1.25rem;
}

/* Footer CTAs */
.qw-footer-ctas {
  display: flex;
  gap: .85rem;
  flex-wrap: wrap;
  margin-top: 2rem;
}

/* Social icons */
.qw-social-links {
  display: flex;
  gap: .7rem;
  flex-wrap: wrap;
  margin-top: 1.5rem;
}
.qw-social-link {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #ffffff;
  border: none;
  box-shadow: 0 4px 12px rgba(15,23,42,.10);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--qw-green, #1bcf17);
  text-decoration: none;
  transition:
    background var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease),
    transform var(--qw-speed) var(--qw-ease),
    color var(--qw-speed) var(--qw-ease);
}
.qw-social-link:hover {
  background: var(--qw-green, #1bcf17);
  border-color: var(--qw-green, #1bcf17);
  color: #ffffff;
  transform: translateY(-3px);
}
.qw-social-link svg { width: 22px; height: 22px; fill: currentColor; }

/* Contact column */
.qw-footer-contact {}
.qw-footer-col-title {
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(255,255,255,.42);
  margin: 0 0 1.25rem;
}
.qw-contact-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .85rem;
}
.qw-contact-item {
  display: flex;
  gap: .85rem;
  align-items: center;
  font-size: .92rem;
  font-weight: 700;
  color: var(--qw-ink, #0f172a);
  line-height: 1.55;
}
.qw-contact-item-icon {
  width: 26px;
  height: 26px;
  color: var(--qw-green, #1bcf17);
  flex-shrink: 0;
}
.qw-contact-item a {
  color: var(--qw-ink, #0f172a);
  text-decoration: none;
  transition: color var(--qw-speed) var(--qw-ease);
}
.qw-contact-item a:hover { color: var(--qw-green, #1bcf17); text-decoration: underline; }

/* Map column / placeholder */
.qw-footer-map {}
.qw-map-placeholder {
  border-radius: var(--qw-radius);
  overflow: hidden;
  aspect-ratio: 4/3;
  width: 100%;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.10);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: .75rem;
  text-align: center;
  cursor: pointer;
  padding: 1.5rem;
  transition:
    background var(--qw-speed) var(--qw-ease),
    border-color var(--qw-speed) var(--qw-ease);
}
.qw-map-placeholder:hover {
  background: rgba(255,255,255,.09);
  border-color: rgba(27,207,23,.28);
}
.qw-map-placeholder-icon {
  width: 36px;
  height: 36px;
  fill: var(--qw-green);
}
.qw-map-placeholder-text {
  font-size: .82rem;
  font-weight: 700;
  color: rgba(255,255,255,.55);
  line-height: 1.4;
}
.qw-map-placeholder-cta {
  font-size: .78rem;
  font-weight: 800;
  color: var(--qw-green);
  text-transform: uppercase;
  letter-spacing: .07em;
}
/* Map placeholder actions */
.qw-map-placeholder-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .65rem;
  margin-top: .5rem;
}
.qw-map-link {
  font-size: .82rem;
  font-weight: 700;
  color: rgba(255,255,255,.55);
  transition: color var(--qw-speed) var(--qw-ease);
}
.qw-map-link:hover { color: rgba(255,255,255,.85); }

/* Map container */
.qw-map-container {
  border-radius: var(--qw-radius);
  overflow: hidden;
  min-height: 280px;
  width: 100%;
}

/* Actual map iframe â€” injected after consent */
.qw-map-frame {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* Footer legal bar */
.qw-footer-legal {
  border-top: 1px solid rgba(255,255,255,.08);
  padding-top: 1.75rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
}
.qw-footer-copy {
  font-size: .8rem;
  font-weight: 700;
  color: rgba(255,255,255,.38);
}
.qw-footer-legal-links {
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.qw-footer-legal-links a,
.qw-footer-legal-link {
  font-size: .8rem;
  font-weight: 700;
  color: rgba(255,255,255,.42);
  text-decoration: none;
  transition: color var(--qw-speed) var(--qw-ease);
}
.qw-footer-legal-links a:hover,
.qw-footer-legal-link:hover { color: rgba(255,255,255,.82); }

/* ============================================================
   17b) WAVE DIVIDERS â€” organic SVG transitions between blocks
   ============================================================ */

.qw-wave-div {
  width: 100%;
  line-height: 0;
  font-size: 0;
  position: relative;
  z-index: 1;
  margin: -1px 0;
  padding: 0;
  overflow: hidden;
  /* FIX: transform elimina la lÃ­nea de corte sub-pixel entre ola y secciÃ³n */
  transform: translateY(0);
  backface-visibility: hidden;
}

.qw-wave-div svg {
  display: block;
  width: 100%;
  height: clamp(32px, 4vw, 48px);
  /* FIX: prevenir lÃ­nea de corte sub-pixel en mobile */
  margin-bottom: -1px;
}
.qw-gallery-cta {
  text-align: center;
  margin-top: 2.5rem;
}
@media (max-width: 640px) {
  .qw-wave-div svg { height: clamp(22px, 4vw, 32px); }
}

/* ============================================================
   18) WATERMARKS â€” SVG pseudo-elements at very low opacity
   ============================================================ */

/* Nature watermark masks â€” refactor 2026-05-07
   ============================================================
   4 elementos bold simplificados: pino, hoja, nube, montaÃ±a.
   Usados via mask-image + background-color para que adapten color
   automÃ¡ticamente segÃºn el bg de la secciÃ³n (verde sobre blanco/soft,
   blanco sobre celeste/verde). Reemplaza los 7 SVGs anteriores. */
.qw-home-landing {
  /* Variantes principales */
  --qw-wm-pino:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140'%3E%3Cg fill='black'%3E%3Cpolygon points='50,5 28,42 38,42 18,80 32,80 8,125 92,125 68,80 82,80 62,42 72,42'/%3E%3Crect x='44' y='125' width='12' height='15'/%3E%3C/g%3E%3C/svg%3E");
  --qw-wm-hoja:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 120'%3E%3Cg fill='black'%3E%3Cpath d='M40 4 C 62 18 72 44 60 80 C 50 100 40 108 40 108 C 40 108 30 100 20 80 C 8 44 18 18 40 4 Z'/%3E%3Crect x='38' y='106' width='4' height='14' rx='2'/%3E%3C/g%3E%3C/svg%3E");
  --qw-wm-nube:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 70'%3E%3Cpath fill='black' d='M 25 60 C 5 60 5 38 25 38 C 28 22 50 14 60 25 C 65 8 95 12 95 32 C 115 32 115 60 95 60 Z'/%3E%3C/svg%3E");
  --qw-wm-montana: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 80'%3E%3Cg fill='black'%3E%3Cpolygon points='0,78 35,12 60,42 95,5 140,78'/%3E%3C/g%3E%3C/svg%3E");

  /* Variantes alternativas (mismo lenguaje bold simplificado) */
  --qw-wm-pino-2:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 150'%3E%3Cg fill='black'%3E%3Cpolygon points='50,8 70,38 60,38 78,68 65,68 85,98 55,98 55,135 45,135 45,98 15,98 35,68 22,68 40,38 30,38'/%3E%3C/g%3E%3C/svg%3E");
  --qw-wm-hoja-2:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 90 110'%3E%3Cg fill='black'%3E%3Cpath d='M75 8 C 60 4 35 8 22 22 C 8 38 6 60 18 78 C 30 95 55 100 72 90 C 85 80 88 60 80 38 C 78 25 78 16 75 8 Z'/%3E%3Cpath d='M73 12 C 55 28 38 50 28 76 L 22 88 L 28 88 C 36 70 50 50 70 32'/%3E%3C/g%3E%3C/svg%3E");
  --qw-wm-nube-2:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 80'%3E%3Cpath fill='black' d='M 18 70 C 0 70 0 48 18 48 C 22 32 38 26 48 32 C 52 18 70 18 75 30 C 82 22 100 24 105 38 C 122 38 122 70 105 70 Z'/%3E%3C/svg%3E");
  --qw-wm-montana-2: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 90'%3E%3Cg fill='black'%3E%3Cpolygon points='0,88 28,28 48,55 75,8 105,42 130,22 150,88'/%3E%3C/g%3E%3C/svg%3E");
}

/* ---- Watermarks application â€” refactor 2026-04-30 ----
 *
 * Cambios respecto a la versiÃ³n anterior:
 * - Eliminadas inner-watermarks (`.qw-X > .qw-inner::before/::after`) de
 *   TODAS las secciones. El comentario del 2026-04-25 ya prometÃ­a esto
 *   pero solo se aplicÃ³ a S2-S6; S1, S7-S12 lo arrastraban como deuda.
 *   Las inner solapaban con cards/contenido a opacity .08-.12.
 * - Eliminadas reglas de `.qw-trabajos` (secciÃ³n que no existe en home;
 *   vive en /nuestros-trabajos/, otro CSS) y de `.qw-whatsapp-advisory`
 *   (dead code: 0 referencias en cualquier PHP).
 * - opacity unificada a .08 â€” antes habÃ­a 5 valores (.07/.08/.10/.11/.12)
 *   que el comment afirmaba unificados pero nunca lo estaban.
 * - TamaÃ±os capados a 240Ã—320 (240Ã—240 para SVGs cuadrados leaf/oak/acorn).
 *   Antes habÃ­a watermarks de hasta 360Ã—500.
 * - z-index: -1 + isolation:isolate en `.qw-home-landing .qw-section`
 *   (arriba) â†’ watermarks pintan DEBAJO del contenido en vez de
 *   superponerse. Antes z-index:0 las metÃ­a sobre los textos.
 * - Mobile (â‰¤640px): ocultas â€” proporcionalmente dominaban en pantallas
 *   estrechas (240px = 67% de un viewport de 360px) y a opacity .08
 *   seguÃ­an compitiendo con contenido.
 *
 * Estructura: shared base (props comunes) en lista con coma; per-section
 * solo posiciÃ³n + tamaÃ±o + transform + variante SVG. Posiciones y SVG
 * variants conservan la decisiÃ³n visual de la versiÃ³n anterior. */

/* ---- Shared base for all section watermarks ---- */
.qw-home-landing .qw-whatis::before,
.qw-home-landing .qw-whatis::after,
.qw-home-landing .qw-origin::before,
.qw-home-landing .qw-origin::after,
.qw-home-landing .qw-install-steps::before,
.qw-home-landing .qw-install-steps::after,
.qw-home-landing .qw-before-after::before,
.qw-home-landing .qw-before-after::after,
.qw-home-landing .qw-trabajos::before,
.qw-home-landing .qw-trabajos::after,
.qw-home-landing .qw-durability::before,
.qw-home-landing .qw-durability::after,
.qw-home-landing .qw-trayectoria::before,
.qw-home-landing .qw-trayectoria::after,
.qw-home-landing .qw-reviews::before,
.qw-home-landing .qw-reviews::after,
.qw-home-landing .qw-targets::before,
.qw-home-landing .qw-targets::after,
.qw-home-landing .qw-guides::before,
.qw-home-landing .qw-guides::after,
.qw-home-landing .qw-faq::before,
.qw-home-landing .qw-faq::after {
  content: "";
  position: absolute;
  /* Mask + bg-color para que el watermark adapte el color segÃºn bg de secciÃ³n.
     Default: verde brand (sobre blanco/soft). Override en colored sections. */
  mask-repeat: no-repeat;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  background-color: var(--qw-green, #1bcf17);
  opacity: .10;
  pointer-events: none;
  z-index: -1;
}

/* En secciones coloreadas, watermarks van blancos translÃºcidos */
.qw-home-landing .qw-section--bg-celeste::before,
.qw-home-landing .qw-section--bg-celeste::after,
.qw-home-landing .qw-section--bg-verde::before,
.qw-home-landing .qw-section--bg-verde::after {
  background-color: #ffffff;
  opacity: .14;
}

/* ---- Per-section: posiciÃ³n + tamaÃ±o + variante SVG ----
 * Audit 2026-05-01:
 * - PatrÃ³n unificado: ::before en TOP-LEFT, ::after en BOTTOM-RIGHT.
 *   Rompe las 3 adyacencias mismo-lado en bordes de secciÃ³n (whatisâ†’origin,
 *   before-afterâ†’vs-vinyl, targetsâ†’guides) que producÃ­an "stacking" visual.
 * - Rotaciones capadas a Â±6Â° (antes hasta 25Â°) â€” con `overflow:hidden` en
 *   secciÃ³n, rotaciones grandes producÃ­an cortes de hasta ~45px por lado.
 * - Inset 1rem desde el borde (antes left/right:0) para que el bbox del
 *   SVG rotado no se aplaste contra el edge.
 * - TamaÃ±os capados a 220Ã—280 (antes hasta 240Ã—320).
 * S7 Maderas no lleva watermark (carrusel = foco). Trayectoria tampoco. */

/* S1 Whatis (blanco) â€” pino TL + hoja-2 BR */
.qw-home-landing .qw-whatis::before {
  left: 1rem; top: 4%;
  width: 180px; height: 250px;
  mask-image: var(--qw-wm-pino);
  -webkit-mask-image: var(--qw-wm-pino);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-whatis::after {
  right: 1rem; bottom: 4%;
  width: 200px; height: 220px;
  mask-image: var(--qw-wm-hoja-2);
  -webkit-mask-image: var(--qw-wm-hoja-2);
  transform: rotate(8deg);
}

/* S2 Origin (celeste) â€” montaÃ±a-2 TL + nube-2 BR (paisaje QuÃ©bec) */
.qw-home-landing .qw-origin::before {
  left: 1rem; top: 6%;
  width: 260px; height: 150px;
  mask-image: var(--qw-wm-montana-2);
  -webkit-mask-image: var(--qw-wm-montana-2);
  transform: rotate(-2deg);
}
.qw-home-landing .qw-origin::after {
  right: 1rem; bottom: 6%;
  width: 240px; height: 150px;
  mask-image: var(--qw-wm-nube-2);
  -webkit-mask-image: var(--qw-wm-nube-2);
  transform: rotate(2deg);
}

/* S3 Install Steps (blanco) â€” hoja TL + nube BR */
.qw-home-landing .qw-install-steps::before {
  left: 1rem; top: 5%;
  width: 180px; height: 220px;
  mask-image: var(--qw-wm-hoja);
  -webkit-mask-image: var(--qw-wm-hoja);
  transform: rotate(-6deg);
}
.qw-home-landing .qw-install-steps::after {
  right: 1rem; bottom: 5%;
  width: 220px; height: 140px;
  mask-image: var(--qw-wm-nube);
  -webkit-mask-image: var(--qw-wm-nube);
  transform: rotate(3deg);
}

/* S4 Before/After (blanco) â€” montaÃ±a-2 TL + pino BR */
.qw-home-landing .qw-before-after::before {
  left: 1rem; top: 5%;
  width: 240px; height: 145px;
  mask-image: var(--qw-wm-montana-2);
  -webkit-mask-image: var(--qw-wm-montana-2);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-before-after::after {
  right: 1rem; bottom: 4%;
  width: 180px; height: 270px;
  mask-image: var(--qw-wm-pino-2);
  -webkit-mask-image: var(--qw-wm-pino-2);
  transform: rotate(5deg);
}

/* qw-trabajos (soft) â€” hoja TL + pino BR */
.qw-home-landing .qw-trabajos::before {
  left: 1rem; top: 5%;
  width: 180px; height: 220px;
  mask-image: var(--qw-wm-hoja);
  -webkit-mask-image: var(--qw-wm-hoja);
  transform: rotate(-5deg);
}
.qw-home-landing .qw-trabajos::after {
  right: 1rem; bottom: 4%;
  width: 180px; height: 250px;
  mask-image: var(--qw-wm-pino);
  -webkit-mask-image: var(--qw-wm-pino);
  transform: rotate(4deg);
}

/* S5 Durability (celeste) â€” montaÃ±a TL + pino BR */
.qw-home-landing .qw-durability::before {
  left: 1rem; top: 5%;
  width: 240px; height: 140px;
  mask-image: var(--qw-wm-montana);
  -webkit-mask-image: var(--qw-wm-montana);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-durability::after {
  right: 1rem; bottom: 4%;
  width: 180px; height: 250px;
  mask-image: var(--qw-wm-pino);
  -webkit-mask-image: var(--qw-wm-pino);
  transform: rotate(5deg);
}

/* S6 Trayectoria (verde) â€” nube-2 TL + montaÃ±a-2 BR */
.qw-home-landing .qw-trayectoria::before {
  left: 1rem; top: 6%;
  width: 240px; height: 150px;
  mask-image: var(--qw-wm-nube-2);
  -webkit-mask-image: var(--qw-wm-nube-2);
  transform: rotate(-2deg);
}
.qw-home-landing .qw-trayectoria::after {
  right: 1rem; bottom: 6%;
  width: 250px; height: 150px;
  mask-image: var(--qw-wm-montana-2);
  -webkit-mask-image: var(--qw-wm-montana-2);
  transform: rotate(3deg);
}

/* S7 Reviews (blanco) â€” hoja TL + nube BR */
.qw-home-landing .qw-reviews::before {
  left: 1rem; top: 5%;
  width: 180px; height: 220px;
  mask-image: var(--qw-wm-hoja);
  -webkit-mask-image: var(--qw-wm-hoja);
  transform: rotate(-5deg);
}
.qw-home-landing .qw-reviews::after {
  right: 1rem; bottom: 6%;
  width: 220px; height: 140px;
  mask-image: var(--qw-wm-nube);
  -webkit-mask-image: var(--qw-wm-nube);
  transform: rotate(3deg);
}

/* S8 Targets (celeste) â€” pino-2 TL + montaÃ±a-2 BR */
.qw-home-landing .qw-targets::before {
  left: 1rem; top: 4%;
  width: 180px; height: 270px;
  mask-image: var(--qw-wm-pino-2);
  -webkit-mask-image: var(--qw-wm-pino-2);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-targets::after {
  right: 1rem; bottom: 6%;
  width: 250px; height: 150px;
  mask-image: var(--qw-wm-montana-2);
  -webkit-mask-image: var(--qw-wm-montana-2);
  transform: rotate(3deg);
}

/* S9 Guides (blanco) â€” nube TL + hoja BR */
.qw-home-landing .qw-guides::before {
  left: 1rem; top: 6%;
  width: 220px; height: 140px;
  mask-image: var(--qw-wm-nube);
  -webkit-mask-image: var(--qw-wm-nube);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-guides::after {
  right: 1rem; bottom: 4%;
  width: 180px; height: 220px;
  mask-image: var(--qw-wm-hoja);
  -webkit-mask-image: var(--qw-wm-hoja);
  transform: rotate(5deg);
}

/* S10 FAQ (soft) â€” montaÃ±a TL + pino BR */
.qw-home-landing .qw-faq::before {
  left: 1rem; top: 5%;
  width: 240px; height: 140px;
  mask-image: var(--qw-wm-montana);
  -webkit-mask-image: var(--qw-wm-montana);
  transform: rotate(-3deg);
}
.qw-home-landing .qw-faq::after {
  right: 1rem; bottom: 4%;
  width: 180px; height: 250px;
  mask-image: var(--qw-wm-pino);
  -webkit-mask-image: var(--qw-wm-pino);
  transform: rotate(5deg);
}

/* Nota: el ocultado en tablet/mÃ³vil ya lo gestiona el @media (max-width: 1024px)
 * mÃ¡s abajo (lÃ­nea ~3855) que pone display:none a todas las watermarks ::before/::after.
 * No duplicamos aquÃ­. */

/* ============================================================
   18b) SCROLL-REVEAL â€” initial + visible states for [data-qw-reveal]
   JS adds .is-visible via IntersectionObserver (threshold 0.12)
   ============================================================ */

[data-qw-reveal] {
  opacity: 1;
  transform: none;
}
[data-qw-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* Stagger children inside revealed sections for a cascade effect */
[data-qw-reveal].is-visible .qw-whatis-card,
[data-qw-reveal].is-visible .qw-step-card,
[data-qw-reveal].is-visible .qw-target-card,
[data-qw-reveal].is-visible .qw-review-card,
[data-qw-reveal].is-visible .qw-metric {
  opacity: 0;
  animation: qwFadeUp .5s var(--qw-ease) both;
}
[data-qw-reveal].is-visible .qw-whatis-card:nth-child(1),
[data-qw-reveal].is-visible .qw-step-card:nth-child(1),
[data-qw-reveal].is-visible .qw-target-card:nth-child(1),
[data-qw-reveal].is-visible .qw-review-card:nth-child(1),
[data-qw-reveal].is-visible .qw-metric:nth-child(1) { animation-delay: .05s; }

[data-qw-reveal].is-visible .qw-whatis-card:nth-child(2),
[data-qw-reveal].is-visible .qw-step-card:nth-child(2),
[data-qw-reveal].is-visible .qw-target-card:nth-child(2),
[data-qw-reveal].is-visible .qw-review-card:nth-child(2),
[data-qw-reveal].is-visible .qw-metric:nth-child(2) { animation-delay: .12s; }

[data-qw-reveal].is-visible .qw-whatis-card:nth-child(3),
[data-qw-reveal].is-visible .qw-step-card:nth-child(3),
[data-qw-reveal].is-visible .qw-target-card:nth-child(3),
[data-qw-reveal].is-visible .qw-review-card:nth-child(3),
[data-qw-reveal].is-visible .qw-metric:nth-child(3) { animation-delay: .19s; }

[data-qw-reveal].is-visible .qw-target-card:nth-child(4),
[data-qw-reveal].is-visible .qw-metric:nth-child(4) { animation-delay: .26s; }

/* ============================================================
   19) ANIMATIONS â€” keyframes
   ============================================================ */

@keyframes qwHeroStagger {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* qwScrollBounce removed â€” scroll indicator eliminated */

@keyframes qwCounterPop {
  0%   { transform: scale(.86); opacity: .4; }
  65%  { transform: scale(1.06);              }
  100% { transform: scale(1);   opacity: 1;  }
}

@keyframes qwFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0);    }
}

@keyframes qwWaPulse {
  0%, 100% { opacity: 1;  transform: scale(1);    }
  50%       { opacity: .6; transform: scale(1.25); }
}

/* ============================================================
   20) RESPONSIVE â€” breakpoints: 1024, 860, 640, 420
   ============================================================ */

/* ---- 1024px ---- */
@media (max-width: 1024px) {
  /* Hero */
  .qw-hero {
    min-height: 100svh;
    --qw-hero-pad-top: clamp(80px, 10vw, 100px);
    --qw-hero-pad-bottom: clamp(48px, 7vw, 76px);
  }
  .qw-hero-title  { font-size: clamp(2.4rem, 6.5vw, 3.8rem); }
  .qw-hero-subtitle { font-size: clamp(1.2rem, 3.4vw, 1.8rem); }

  /* Whatis */
  .qw-whatis-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* Origin */
  .qw-origin-layout {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .qw-origin-layout::after { display: none; }
  .qw-origin-timeline {
    grid-template-columns: repeat(2, 1fr);
  }
  .qw-origin-timeline::before { top: 28px; left: 8%; right: 8%; }

  /* Durability */
  .qw-dur-layout { grid-template-columns: 1fr; gap: 2.25rem; }

  /* Gallery */
  .qw-carousel-slide { max-height: 400px; }

  /* Reviews */
  .qw-reviews-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* Targets */
  .qw-targets-grid { gap: 1.2rem; }

  /* Guides */
  .qw-guides-layout { grid-template-columns: 1fr; gap: 2rem; }

  /* Footer */
  .qw-footer-grid { grid-template-columns: 1fr; gap: 2rem; }
  .qw-footer-brand { grid-column: 1 / -1; }
  .qw-map-container { max-width: 520px; margin-left: auto; margin-right: auto; }

  /* Watermarks â€” ocultadas en tablet/mÃ³vil (â‰¤1024px). Compiten con el
   * contenido a opacity .08 cuando proporcionalmente ocupan ~50% del
   * viewport. En desktop >1024px sÃ­ se renderizan como decoraciÃ³n sutil.
   * Lista alineada con las 10 secciones que tienen watermark; sin
   * dead-code (qw-trabajos/whatsapp-advisory) ni inner pseudos. 2026-04-30. */
  .qw-home-landing .qw-whatis::before,
  .qw-home-landing .qw-whatis::after,
  .qw-home-landing .qw-origin::before,
  .qw-home-landing .qw-origin::after,
  .qw-home-landing .qw-install-steps::before,
  .qw-home-landing .qw-install-steps::after,
  .qw-home-landing .qw-before-after::before,
  .qw-home-landing .qw-before-after::after,  .qw-home-landing .qw-durability::before,
  .qw-home-landing .qw-durability::after,
  .qw-home-landing .qw-reviews::before,
  .qw-home-landing .qw-reviews::after,
  .qw-home-landing .qw-targets::before,
  .qw-home-landing .qw-targets::after,
  .qw-home-landing .qw-guides::before,
  .qw-home-landing .qw-guides::after,
  .qw-home-landing .qw-faq::before,
  .qw-home-landing .qw-faq::after { display: none; }
}

/* ---- 860px ---- */
@media (max-width: 860px) {
  /* Steps */
  .qw-steps-grid { grid-template-columns: 1fr; gap: 1.2rem; }
  .qw-steps-grid::before { display: none; }

  /* Before/After */
  .qw-ba-layout { grid-template-columns: 1fr; }
  .qw-ba-widget { max-height: 400px; }
  .qw-ba-inner { max-height: 340px; }

  /* Targets */
  .qw-targets-grid { grid-template-columns: 1fr; }

  /* Footer â€” already 1fr from â‰¤1024px, ensure map resets */
  .qw-map-container { max-width: 100%; }
}

/* ---- 640px ---- */
@media (max-width: 640px) {
  /* Hero â€” full viewport, padding clears fixed nav (60px + room) */
  .qw-hero {
    min-height: 100svh;
    --qw-hero-pad-top: 80px;
  }
  /* Video: show upper portion (tree canopy) on portrait viewports */
  .qw-hero-video { object-position: center 30%; }
  .qw-hero-title    { font-size: clamp(2.2rem, 12vw, 3.2rem); line-height: .92; }
  .qw-hero-subtitle { font-size: clamp(1.05rem, 5.5vw, 1.4rem); line-height: 1.32; max-width: 22ch; margin: 0 auto; }
  .qw-hero-ctas     { gap: .65rem; margin-top: .55rem; width: 100%; }
  .qw-hero-ctas .qw-btn { width: 100%; max-width: 380px; }
  .qw-hero-badges   { gap: .45rem; }
  .qw-hero-badge    { font-size: .78rem; padding: .48rem .82rem; }
  .qw-hero-phone    { width: 100%; gap: .5rem; flex-direction: column; align-items: center; }
  .qw-hero-phone .qw-btn--phone,
  .qw-hero-phone .qw-btn--whatsapp-hero { width: 100%; max-width: 380px; justify-content: center; font-size: .88rem; }

  /* Hero wave â€” shorter on mobile */
  .qw-hero-wave svg { height: clamp(40px, 7vw, 60px); }

  /* Whatis */
  .qw-whatis-grid { grid-template-columns: 1fr; }

  /* Origin â€” single column on mobile */
  .qw-origin-timeline {
    grid-template-columns: 1fr;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
  }
  .qw-origin-timeline::before { display: none; }

  /* Reviews */
  .qw-reviews-grid { grid-template-columns: 1fr; }

  /* FAQ â€” mobile layout: single column, hide extras initially */
  .qw-faq-grid {
    grid-template-columns: 1fr;
  }
  .qw-faq-item.qw-faq-hidden { display: none; }
  .qw-faq-show-more { display: block; }

  /* Headings â€” slightly smaller on mobile */
  .qw-heading { font-size: clamp(1.7rem, 7vw, 2.4rem); }
  .qw-subheading { font-size: clamp(.95rem, 4vw, 1.1rem); }

  /* Metrics */
  .qw-metrics-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .qw-reviews-dots { gap: .75rem; }
  .qw-reviews-dot::after {
    width: 12px;
    height: 12px;
  }

  .qw-footer-legal { flex-direction: column; align-items: center; gap: .75rem; text-align: center; }
  .qw-footer-legal-links { gap: 1rem; flex-wrap: wrap; justify-content: center; }
  .qw-footer-copy { text-align: center; }

  /* Footer CTAs â€” full width on mobile */
  .qw-footer-ctas { flex-direction: column; align-items: center; }
  .qw-footer-ctas .qw-btn { width: 100%; max-width: 360px; text-align: center; justify-content: center; box-sizing: border-box; padding-left: 1.2rem; padding-right: 1.2rem; }

  /* Footer brand block â€” todo centrado en mobile */
  .qw-footer-brand { text-align: center; }
  .qw-footer-logo { display: block; margin-left: auto; margin-right: auto; }
  .qw-footer-brand-name { text-align: center; }
  .qw-footer-tagline { margin-left: auto; margin-right: auto; }

  /* Contact column */
  .qw-footer-contact { text-align: center; }
  .qw-footer-col-title { text-align: center; }
  .qw-contact-list { align-items: center; }
  .qw-contact-item { justify-content: center; max-width: 320px; margin-left: auto; margin-right: auto; }

  /* Social icons centrados */
  .qw-social-links { justify-content: center; }

  /* Footer map â€” shorter ratio on mobile */
  .qw-map-placeholder { aspect-ratio: 16/9; }
  .qw-footer-grid { margin-bottom: 2rem; }
  .qw-map-container { margin-left: auto; margin-right: auto; }

  /* Form row */
  .qw-form-row { grid-template-columns: 1fr; }

  /* Watermarks ya ocultadas por el @media 1024px mÃ¡s arriba â€” no se
   * duplica la regla aquÃ­. 2026-04-30. */
}

/* ---- 420px ---- */
@media (max-width: 420px) {
  .qw-hero {
    min-height: 100svh;
    --qw-hero-pad-top: 72px;
  }
  .qw-hero-title    { font-size: clamp(2rem, 11.5vw, 2.8rem); }
  .qw-hero-subtitle { font-size: clamp(.98rem, 5.2vw, 1.2rem); }

  .qw-inner { padding-left: 1rem; padding-right: 1rem; }

  /* Steps */
  .qw-step-num { width: 54px; height: 54px; font-size: 1.3rem; }

  /* Metrics single col */
  .qw-metrics-grid { grid-template-columns: 1fr; }

  /* Headings on tiny screens */
  .qw-heading { font-size: clamp(1.55rem, 8vw, 2.1rem); }

  /* Hero wave */
  .qw-hero-wave svg { height: 35px; }

  /* Target cards single col */
  .qw-targets-grid { grid-template-columns: 1fr; }

  /* FAQ columns */
  /* FIX 2026-07-15 (owner): más aire entre las 3 cards de FAQ en móvil (antes .75rem, pegadas). */
  .qw-faq-grid { gap: 1.1rem; }
}

/* ============================================================
   21) REDUCED MOTION â€” disable all animations
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .qw-hero-title > span,
  .qw-hero-subtitle,
  .qw-hero-ctas,
  .qw-hero-badges {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }

  .qw-hero-scroll-dot::before,
  .qw-wa-badge-dot {
    animation: none !important;
  }

  .qw-carousel-track {
    transition: none !important;
  }

  .qw-carousel-slide img { transition: none !important; }

  .qw-metric-value.is-animated { animation: none !important; }

  /* Scroll-reveal children: show immediately */
  [data-qw-reveal].is-visible .qw-whatis-card,
  [data-qw-reveal].is-visible .qw-step-card,
  [data-qw-reveal].is-visible .qw-target-card,
  [data-qw-reveal].is-visible .qw-review-card,
  [data-qw-reveal].is-visible .qw-metric {
    animation: none !important;
    opacity: 1 !important;
  }

  .qw-hero-video { display: none !important; }

  /* Motion-reduce: el banner se ve porque el JS de la secciÃ³n 10 (home.php)
     ya pinta el background-image en .qw-hero-media en cuanto carga el DOM,
     independientemente de si autoplay funciona. AquÃ­ solo nos aseguramos de
     que el video oculto no deje el contenedor con un layout vacÃ­o. */

  /* Waves: already static, no overrides needed */

  * {
    transition-duration: 1ms !important;
    animation-duration: 1ms !important;
  }
}

/* ============================================================
   23) FOCUS / ACCESSIBILITY
   ============================================================ */

/* Global focus within landing */
.qw-home-landing :focus-visible {
  outline: 2px solid rgba(27,207,23,.88);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Pill-shaped elements */
.qw-btn:focus-visible,
.qw-wa-fab:focus-visible,
.qw-social-link:focus-visible {
  outline-offset: 4px;
  border-radius: 999px;
}

/* Card elements */
.qw-whatis-card:focus-visible,
.qw-step-card:focus-visible,
.qw-review-card:focus-visible,
.qw-target-card:focus-visible,
.qw-guide-card:focus-visible,
.qw-faq-item:focus-visible {
  outline-offset: 3px;
  border-radius: var(--qw-radius-lg);
}

/* FAQ summary */
.qw-faq-summary:focus-visible {
  outline: 2px solid rgba(27,207,23,.75);
  outline-offset: -2px;
}

/* Map placeholder */
.qw-map-placeholder:focus-visible {
  outline: 2px solid rgba(27,207,23,.75);
  outline-offset: 4px;
  border-radius: var(--qw-radius);
}

/* Range input */
.qw-ba-range:focus-visible::-webkit-slider-thumb {
  box-shadow: 0 0 0 5px rgba(27,207,23,.28), 0 8px 20px rgba(0,0,0,.26);
}
.qw-ba-range:focus-visible::-moz-range-thumb {
  box-shadow: 0 0 0 5px rgba(27,207,23,.28), 0 8px 20px rgba(0,0,0,.26);
}

/* Skip to content â€” visually hidden by default */
.qw-skip-link {
  position: absolute;
  top: -100vh;
  left: 1rem;
  z-index: 99999;
  background: var(--qw-green);
  color: var(--qw-white);
  padding: .6rem 1.2rem;
  border-radius: 0 0 var(--qw-radius) var(--qw-radius);
  font-weight: 800;
  font-size: .9rem;
  text-decoration: none;
}
.qw-skip-link:focus { top: 0; }

/* Ensure sufficient color contrast on muted text over alt-bg */
.qw-section--alt .qw-muted-text { color: rgba(15,23,42,.72); }

/* Fix: Remove Storefront bottom gap on home landing pages */
body.qw-landing-page .content-area {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}
body.qw-landing-page #content {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}

/* Polish: Section headings â€” subtle letter-spacing refinement */
.qw-section-heading {
  letter-spacing: -.025em;
}

/* Polish: Cards hover â€” unified subtle lift for siblings that share the
   whatis-card hover vocabulary (whatis-card ya define su propia autoridad
   completa con border-color animado; se excluye para no pisar su transition). */
.qw-origin-step,
.qw-step-card,
.qw-target-card {
  transition: transform .25s cubic-bezier(.4,0,.2,1), box-shadow .25s ease;
}
.qw-origin-step:hover,
.qw-target-card:hover {
  box-shadow: 0 16px 40px rgba(2,6,23,.1);
}

/* Polish: Kicker pills â€” consistent subtle animation */
.qw-kicker {
  transition: transform .2s ease;
}
.qw-section:hover .qw-kicker {
  transform: translateY(-1px);
}

/* Polish: Green divider lines â€” wider and softer */
.qw-section-heading::after {
  transition: width .3s ease;
}
.qw-section:hover .qw-section-heading::after {
  width: 72px;
}

/* Polish: Stats bar numbers â€” subtle text-shadow for depth */
.qw-trust-stat strong {
  text-shadow: 0 1px 2px rgba(0,0,0,.1);
}

/* Polish: Comparison table â€” softer row transitions */
.qw-home-landing .qw-compare-table tbody tr {
  transition: background .15s ease;
}
.qw-home-landing .qw-compare-table tbody tr:hover td {
  background: rgba(27,207,23,.03);
}
.qw-home-landing .qw-compare-table tbody tr:hover td.qw-compare-cat {
  background: rgba(27,207,23,.06);
}

/* Polish: Metrics â€” subtle counter glow */
.qw-metric-value {
  transition: color .2s ease;
}
.qw-metric:hover .qw-metric-value {
  color: var(--qw-green);
}

/* Polish: FAQ items â€” softer expand feel */
.qw-faq-item {
  transition: box-shadow .2s ease;
}
.qw-faq-item:hover {
  box-shadow: 0 12px 28px rgba(15,23,42,.12);
}

/* Polish: Before/After section â€” cursor hint */
.qw-ba-slider {
  cursor: col-resize;
}

@media (max-width: 700px) {
  .qw-carousel-dot {
    position: relative;
  }
  .qw-carousel-dot::after {
    content: "";
    position: absolute;
    inset: -8px;
  }
}

/* ============================================================
   24) HERO VIDEO â€” FALLBACK STATE
   ============================================================
   Cuando el JS de home.php (secciÃ³n 10) detecta que el autoplay
   ha sido bloqueado o que el video ha fallado, aÃ±ade la clase
   .qw-hero-media--noplay al contenedor. AquÃ­ ocultamos el <video>
   para que solo quede visible el banner que el JS ya pintÃ³ como
   background-image del propio .qw-hero-media.
   El <img.qw-hero-poster> dentro del <video> sigue siendo el
   fallback HTML puro para navegadores muy antiguos sin <video>. */
.qw-hero-media--noplay .qw-hero-video {
  display: none !important;
}
.qw-hero-media--noplay {
  background-color: #1a2a1a; /* color base por si la imagen tarda en pintar */
}

/* ============================================================
   25) QW-COMPARE-TABLE â€” MOBILE SCROLL HINT
   ============================================================
   La animaciÃ³n de scroll teaser se ha movido a JS (secciÃ³n 9
   del script inline en home.php) para poder oscilar el
   scrollLeft real desde el centro y respetar la interacciÃ³n
   del usuario. No hay CSS animation aquÃ­.
   ============================================================ */

/* ============================================================
   26) EXTRA-BOLD refuerzo (SSOT: extra-bold, sin gradientes)
   Sub-headings secundarios suben para coherencia visual.
   ============================================================ */
.qw-subheading { font-weight: 800; }
/* .qw-whatis-title ya unifica weight+letter-spacing en su base (secciÃ³n 5);
   no duplicar aquÃ­ para evitar doble autoridad. */
.qw-review-author,
.qw-dur-item-title { font-weight: 900; letter-spacing: -.01em; }

/* ============================================================
   27) TRAYECTORIA (empresa) â€” split from "Hecho para durar"
   Bloque hermano a qw-durability: mÃ©tricas de empresa (mÂ² instalados,
   aÃ±os) + CTA de conversiÃ³n (WhatsApp + formulario contacto).
   DiseÃ±o: paleta white/muted con acento verde+celeste alternado,
   sin gradientes, respetando SSOT.
   ============================================================ */
.qw-trayectoria { background: #ffffff; }
.qw-trayectoria .qw-inner { padding-top: 3.2rem; padding-bottom: 3.2rem; }

/* When there are only two metrics (trayectoria) keep them side-by-side
   wider instead of a 2x2 grid â€” more breathing room for the big numbers. */
.qw-metrics-grid--company,
.qw-metrics-grid--product {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 520px;
  margin-left: auto;
  margin-right: auto;
}

/* Inline contact CTA block at the end of trayectoria. */
.qw-trayectoria-cta {
  margin-top: 2.2rem;
  padding: 1.8rem 1.5rem;
  background: #ffffff;
  border: none;
  border-radius: var(--qw-radius, 18px);
  text-align: center;
  box-shadow: 0 6px 20px rgba(15,23,42,.08);
}
.qw-trayectoria-cta__lead {
  margin: 0 0 1rem;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--qw-ink, #0f172a);
}
.qw-trayectoria-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  justify-content: center;
  align-items: stretch;
}
.qw-trayectoria-cta__wa,
.qw-trayectoria-cta__form,
a.qw-trayectoria-cta__wa,
a.qw-trayectoria-cta__form {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 44px;
  padding: 0.7rem 1.3rem;
  border-radius: 999px;
  font-weight: 800;
  font-size: 0.95rem;
  line-height: 1.2;
  border: 2px solid var(--qw-green, #1bcf17);
  text-decoration: none;
  box-shadow: none;
}
.qw-trayectoria-cta__wa,
a.qw-trayectoria-cta__wa,
a.qw-trayectoria-cta__wa:visited {
  background: var(--qw-green, #1bcf17);
  color: #ffffff !important;
}
.qw-trayectoria-cta__wa:hover,
.qw-trayectoria-cta__wa:focus-visible,
a.qw-trayectoria-cta__wa:hover,
a.qw-trayectoria-cta__wa:focus-visible {
  background: var(--qw-green-dark, #1bcf17);
  border-color: var(--qw-green-dark, #1bcf17);
  color: #ffffff !important;
  outline: none;
}
.qw-trayectoria-cta__wa svg,
a.qw-trayectoria-cta__wa svg {
  fill: #ffffff;
  color: #ffffff;
}
.qw-trayectoria-cta__form,
a.qw-trayectoria-cta__form,
a.qw-trayectoria-cta__form:visited {
  background: #ffffff;
  color: var(--qw-green-dark, #1bcf17) !important;
}
.qw-trayectoria-cta__form:hover,
.qw-trayectoria-cta__form:focus-visible,
a.qw-trayectoria-cta__form:hover,
a.qw-trayectoria-cta__form:focus-visible {
  background: rgba(27,207,23, 0.06);
  color: var(--qw-green-dark, #1bcf17) !important;
  outline: none;
}
.qw-trayectoria-cta__note {
  margin: 0.9rem 0 0;
  font-size: 0.82rem;
  color: var(--qw-muted, #64748b);
}

@media (max-width: 640px) {
  .qw-trayectoria-cta__buttons { flex-direction: column; }
  .qw-trayectoria-cta__wa,
  .qw-trayectoria-cta__form { width: 100%; }
}

.qw-home-landing .qw-maderas {
  padding: clamp(3rem, 6vw, 5rem) 0;
  background: #fff;
}
.qw-home-landing .qw-maderas .qw-label {
  background: var(--qw-green-soft);
  color: var(--qw-green-contrast);
}
/* Facts heading â€” nÃºmeros brand verdes con peso, separadores middot tenues.
   En desktop fluye en una lÃ­nea; en mobile cada fact baja a su propia lÃ­nea.
   Override del .qw-heading base (clamp 2.1-3.2rem, ~49px en 1366) que era
   demasiado dominante para un titular tipo "facts list" con 3 cifras. */
.qw-home-landing .qw-maderas .qw-heading--facts {
  font-size: clamp(1.65rem, 2.5vw + .5rem, 2.35rem);
  line-height: 1.15;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: .55rem clamp(.7rem, 1.4vw, 1.2rem);
  text-wrap: balance;
}
/* Sin underline decorativo: el Ã©nfasis ya lo aportan los nÃºmeros verdes. */
.qw-home-landing .qw-maderas .qw-heading--facts::after { display: none; }

.qw-home-landing .qw-maderas .qw-fact {
  display: inline-flex;
  align-items: baseline;
  gap: .5rem;
  white-space: nowrap;
}
.qw-home-landing .qw-maderas .qw-fact__num {
  font-family: var(--qwood-font);
  font-weight: 900;
  font-size: 1.06em;
  letter-spacing: -.02em;
  color: var(--qw-green-contrast, #1bcf17);
  line-height: 1;
}
.qw-home-landing .qw-maderas .qw-fact__num small {
  font-size: .5em;
  font-weight: 800;
  margin-left: .25em;
  letter-spacing: 0;
}
.qw-home-landing .qw-maderas .qw-fact__sep {
  color: var(--qw-green-contrast, #1bcf17);
  opacity: .3;
  font-weight: 700;
  user-select: none;
}
@media (max-width: 600px) {
  .qw-home-landing .qw-maderas .qw-heading--facts {
    flex-direction: column;
    gap: .35rem;
  }
  .qw-home-landing .qw-maderas .qw-fact__sep { display: none; }
}

.qw-home-landing .qw-maderas-carousel {
  position: relative;
  margin: clamp(1.5rem, 3vw, 2.5rem) auto 0;
  max-width: 880px;
  /* `overflow: visible` permite que el focus-ring del btn no se recorte
     y que los controls (fuera del track) no queden detrÃ¡s del clip. */
  overflow: visible;
  background: transparent;
}
.qw-home-landing .qw-maderas-carousel__track {
  position: relative;
  aspect-ratio: 3 / 2;
  width: 100%;
  border-radius: var(--qw-radius-lg);
  overflow: hidden;
  box-shadow: var(--qw-shadow);
  background: #ffffff;
  /* Permitir scroll vertical dentro de swipe horizontal. */
  touch-action: pan-y;
}
.qw-home-landing .qw-maderas-slide {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transition: opacity .5s ease;
  pointer-events: none;
}
.qw-home-landing .qw-maderas-slide[data-active="true"] {
  opacity: 1;
  pointer-events: auto;
}
.qw-home-landing .qw-maderas-slide__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
/* Slides cuyo aspect nativo es 16:9 (tintes-rojos, tintes-blancos: 1600Ã—900)
 * en un track 3:2 â€” con `cover` se recorta ~9% por cada lado y se pierden
 * las muestras de los extremos. Detectado server-side vÃ­a getimagesize() y
 * marcado con `qw-maderas-slide--wide`; aquÃ­ pasamos a `contain` para
 * preservar el ancho completo. El track conserva su aspect 3:2; el espacio
 * sobrante arriba/abajo queda con el bg `#ffffff` del track (blanco)
 * que combina con la secciÃ³n. 2026-05-27. */
.qw-home-landing .qw-maderas-slide--wide .qw-maderas-slide__img {
  object-fit: contain;
}
/* Info pill (top-right) + popover â€” replaces old bottom-left card overlay
 * 2026-04-30. La card antigua tapaba el bottom-left de la imagen y, en slides
 * con etiquetas grabadas en esa zona (p. ej. tintes-blancos: ROBLE BLANCO Â·
 * ARCE Â· PINO), recortaba visualmente la informaciÃ³n del producto. La pill
 * top-right muestra el kicker (contexto inmediato) y abre un popover con
 * tÃ­tulo + caption en hover/focus/tap. El track ya no se cubre.
 *
 * Estructura HTML: <figure> contiene <img>, <button.info-btn> y
 * <figcaption.info-pop> como hermanos directos (figcaption requiere ser hijo
 * directo de figure por spec HTML5). El sibling selector `~` enlaza el estado
 * del botÃ³n con el popover. */
.qw-home-landing .qw-maderas-slide__info-btn {
  position: absolute;
  top: clamp(.65rem, 1.6vw, 1rem);
  right: clamp(.65rem, 1.6vw, 1rem);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .42rem .85rem;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 999px;
  color: var(--qw-ink);
  font-family: inherit;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(15,23,42,.18);
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
  transition: background .18s ease, box-shadow .18s ease;
}
.qw-home-landing .qw-maderas-slide__info-btn:hover {
  background: #fff;
  box-shadow: 0 10px 24px rgba(15,23,42,.24);
}
.qw-home-landing .qw-maderas-slide__info-btn:focus-visible {
  outline: 2px solid var(--qw-green, #1bcf17);
  outline-offset: 3px;
}
.qw-home-landing .qw-maderas-slide__info-kicker {
  color: var(--qw-green-contrast);
}
.qw-home-landing .qw-maderas-slide__info-icon {
  flex: 0 0 14px;
  width: 14px;
  height: 14px;
  color: var(--qw-muted);
  transition: color .18s ease;
}
.qw-home-landing .qw-maderas-slide__info-btn:hover .qw-maderas-slide__info-icon,
.qw-home-landing .qw-maderas-slide__info-btn:focus-visible .qw-maderas-slide__info-icon,
.qw-home-landing .qw-maderas-slide__info-btn[aria-expanded="true"] .qw-maderas-slide__info-icon {
  color: var(--qw-green-contrast);
}

/* Popover panel â€” anchored top-right matching button position. Hidden by
 * default; aparece en hover/focus del botÃ³n o aria-expanded=true (tap). */
.qw-home-landing .qw-maderas-slide__info-pop {
  position: absolute;
  top: calc(clamp(.65rem, 1.6vw, 1rem) + 38px);
  right: clamp(.65rem, 1.6vw, 1rem);
  z-index: 2;
  width: min(320px, calc(100% - 2 * clamp(.65rem, 1.6vw, 1rem)));
  background: #fff;
  border: 1px solid rgba(15,23,42,.06);
  border-radius: var(--qw-radius);
  padding: .9rem 1.1rem 1rem;
  box-shadow: 0 14px 32px rgba(15,23,42,.20);
  margin: 0;
  /* opacity-only collapsed state â€” sin visibility:hidden ni display:none
   * mantiene el popover en el accessibility tree (SR siempre lee el detalle
   * aunque visualmente estÃ© plegado). pointer-events evita capturar mouse. */
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
}
/* Bridge invisible para que mover el cursor del botÃ³n al popover no
 * pierda el hover (el botÃ³n y el popover estÃ¡n separados por ~6px). */
.qw-home-landing .qw-maderas-slide__info-pop::before {
  content: "";
  position: absolute;
  top: -8px;
  left: 0;
  right: 0;
  height: 8px;
}
.qw-home-landing .qw-maderas-slide__info-btn:hover ~ .qw-maderas-slide__info-pop,
.qw-home-landing .qw-maderas-slide__info-btn:focus-visible ~ .qw-maderas-slide__info-pop,
.qw-home-landing .qw-maderas-slide__info-btn[aria-expanded="true"] ~ .qw-maderas-slide__info-pop,
.qw-home-landing .qw-maderas-slide__info-pop:hover {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.qw-home-landing .qw-maderas-slide__title {
  font-family: var(--qwood-font);
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  font-weight: 800;
  color: var(--qw-ink);
  margin: 0 0 .35rem;
  line-height: 1.25;
  letter-spacing: -.01em;
}
.qw-home-landing .qw-maderas-slide__caption {
  font-size: .85rem;
  color: var(--qw-muted);
  margin: 0;
  line-height: 1.45;
}
.qw-home-landing .qw-maderas-carousel__controls {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1rem, 2.5vw, 2rem);
  padding: clamp(1rem, 2.5vw, 1.5rem) 1rem 0;
  pointer-events: auto;
}
.qw-home-landing .qw-maderas-carousel__btn {
  pointer-events: auto;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(15,23,42,.06);
  background: #fff; /* sÃ³lido â€” el texto grabado de las imÃ¡genes no debe traspasar el control */
  color: var(--qw-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 8px 22px rgba(15,23,42,.22);
  transition: background .18s ease, box-shadow .18s ease, transform .18s ease;
  flex: 0 0 auto;
}
.qw-home-landing .qw-maderas-carousel__btn:hover {
  background: #fff;
  box-shadow: 0 12px 28px rgba(15,23,42,.28);
  transform: translateY(-1px);
}
.qw-home-landing .qw-maderas-carousel__btn:focus-visible {
  /* Outline en lugar de box-shadow ring: el outline NO se solapa con
     elementos vecinos como el box-shadow lo hacÃ­a contra el dots pill. */
  outline: 2px solid var(--qw-green, #1bcf17);
  outline-offset: 3px;
  box-shadow: 0 8px 22px rgba(15,23,42,.22);
}
/* Override responsive-surfaces.css reset (max-width:100%;height:auto) que
   colapsaba el chevron SVG a 0Ã—0 por no tener regla especÃ­fica. El SVG
   es child de un flex container (.qw-maderas-carousel__btn), asÃ­ que
   flex-basis explÃ­cito a 20px evita que el browser use intrinsic sizing
   (que es 0 para SVG inline sin viewBox height). */
.qw-home-landing .qw-maderas-carousel__btn svg {
  flex: 0 0 20px !important;
  width: 20px !important;
  height: 20px !important;
  min-width: 20px !important;
  max-width: 20px !important;
  color: var(--qw-ink); /* stroke="currentColor" resuelve a este */
}
.qw-home-landing .qw-maderas-carousel__dots {
  pointer-events: auto;
  display: inline-flex;
  gap: 10px;
  padding: 10px 16px;
  border-radius: 999px;
  background: #fff; /* sÃ³lido â€” evita transparencia que dejaba ver texto grabado de imÃ¡genes */
  border: 1px solid rgba(15,23,42,.06);
  box-shadow: 0 6px 16px rgba(15,23,42,.14);
}
.qw-home-landing .qw-maderas-carousel__dot {
  position: relative; /* for extended hit area */
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 0;
  background: rgba(15,23,42,.24);
  cursor: pointer;
  padding: 0;
  transition: background .18s ease, transform .18s ease;
}
/* Tap-area extendida a 44Ã—44 (WCAG 2.5.5) sin cambiar el tamaÃ±o visible. */
.qw-home-landing .qw-maderas-carousel__dot::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
}
.qw-home-landing .qw-maderas-carousel__dot:hover { background: rgba(15,23,42,.40); }
.qw-home-landing .qw-maderas-carousel__dot[aria-selected="true"] {
  background: var(--qw-green);
  transform: scale(1.15);
}
.qw-home-landing .qw-maderas-carousel__dot:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--qw-green-ring, rgba(27,207,23,.28));
}
.qw-home-landing .qw-maderas-carousel__sr {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  padding: 0; margin: -1px;
  border: 0;
  white-space: nowrap;
}
.qw-home-landing .qw-maderas-stats {
  list-style: none;
  padding: 0;
  margin: clamp(1.75rem, 4vw, 2.75rem) auto 0;
  max-width: 760px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(.75rem, 1.6vw, 1.25rem);
  text-align: center;
}
.qw-home-landing .qw-maderas-stats__item {
  background: var(--qw-green-soft);
  border: 1px solid var(--qw-green-ring);
  border-radius: var(--qw-radius);
  padding: clamp(1rem, 2.2vw, 1.4rem) clamp(.75rem, 1.6vw, 1.1rem);
}
.qw-home-landing .qw-maderas-stats__value {
  display: block;
  font-family: var(--qwood-font);
  font-size: clamp(1.7rem, 3.5vw, 2.2rem);
  font-weight: 900;
  color: var(--qw-green-contrast);
  line-height: 1;
  letter-spacing: -.02em;
}
.qw-home-landing .qw-maderas-stats__value small {
  font-size: .55em;
  font-weight: 800;
  margin-left: 2px;
}
.qw-home-landing .qw-maderas-stats__label {
  display: block;
  margin-top: .4rem;
  font-size: .78rem;
  font-weight: 700;
  color: var(--qw-muted);
  letter-spacing: .02em;
}
.qw-home-landing .qw-maderas-ctas {
  margin: clamp(1.75rem, 4vw, 2.75rem) auto 0;
  display: flex;
  gap: clamp(.75rem, 1.6vw, 1.1rem);
  justify-content: center;
  flex-wrap: wrap;
}
.qw-home-landing .qw-maderas-ctas .qw-btn { min-width: 220px; }
/* Tablet â€” keep 3 stats cards but trim type so labels don't wrap awkwardly */
@media (max-width: 900px) {
  .qw-home-landing .qw-maderas-stats__value { font-size: clamp(1.55rem, 3.2vw, 1.95rem); }
  .qw-home-landing .qw-maderas-stats__label { font-size: .74rem; letter-spacing: .015em; }
}
/* Phone â€” collapse stats to 1 column for legibility, full-width CTA buttons */
@media (max-width: 600px) {
  .qw-home-landing .qw-maderas-carousel__track { aspect-ratio: 4 / 3; }
  /* Info pill compacta en mÃ³vil; popover ocupa ancho Ãºtil sin tocar bordes. */
  .qw-home-landing .qw-maderas-slide__info-btn {
    padding: .38rem .7rem;
    font-size: .68rem;
    gap: .4rem;
  }
  .qw-home-landing .qw-maderas-slide__info-pop {
    width: min(260px, calc(100vw - 1.5rem));
    padding: .8rem 1rem .9rem;
  }
  .qw-home-landing .qw-maderas-stats {
    grid-template-columns: 1fr;
    gap: .65rem;
    max-width: 360px;
  }
  .qw-home-landing .qw-maderas-stats__item { padding: .85rem 1rem; }
  .qw-home-landing .qw-maderas-ctas .qw-btn { width: 100%; min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .qw-home-landing .qw-maderas-slide { transition: opacity 0s; }
}

.qw-home-landing .qw-visualizador-teaser {
  padding: clamp(3.25rem, 6vw, 5.25rem) 0;
}
.qw-home-landing .qw-visualizador-teaser__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: clamp(1.75rem, 4vw, 3.25rem);
  align-items: center;
}
.qw-home-landing .qw-visualizador-teaser__copy .qw-label--celeste {
  background: var(--qw-celeste-soft);
  color: var(--qw-celeste-deep);
}
.qw-home-landing .qw-visualizador-teaser__bullets {
  list-style: none;
  padding: 0;
  margin: 1.25rem 0;
  display: grid;
  gap: .6rem;
}
.qw-home-landing .qw-visualizador-teaser__bullets li {
  position: relative;
  padding-left: 1.75rem;
  font-size: .96rem;
  line-height: 1.5;
  color: var(--qw-ink);
}
.qw-home-landing .qw-visualizador-teaser__bullets li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .3rem;
  width: 18px;
  height: 18px;
  background-color: var(--qw-green-contrast);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
}
.qw-home-landing .qw-visualizador-teaser__note {
  margin: .75rem 0 0;
  font-size: .82rem;
  font-weight: 700;
  color: var(--qw-muted);
}
/* ========================================================================== */
/* preview estÃ¡tico con CTA centrada que abre el modal al click. Cero carga   */
/* de Railway hasta interacciÃ³n. Look premium-sobrio per QWOOD SSOT.          */
/* ========================================================================== */
.qw-home-landing .qw-vz-poster {
  position: relative;
  display: block;
  border-radius: var(--qw-radius-lg);
  overflow: hidden;
  background: #0f172a;
  aspect-ratio: 4 / 3;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  isolation: isolate;
  box-shadow: 0 14px 40px rgba(15, 23, 42, .14), 0 2px 6px rgba(15, 23, 42, .06);
  transition: transform .35s cubic-bezier(.2, .9, .3, 1), box-shadow .35s cubic-bezier(.2, .9, .3, 1);
}
.qw-home-landing .qw-vz-poster:hover,
.qw-home-landing .qw-vz-poster:focus-visible {
  transform: translateY(-3px);
  box-shadow: 0 24px 60px rgba(15, 23, 42, .22), 0 4px 12px rgba(15, 23, 42, .08);
  outline: none;
}
.qw-home-landing .qw-vz-poster:focus-visible {
  outline: 3px solid var(--qw-green, #1bcf17);
  outline-offset: 3px;
}
.qw-home-landing .qw-vz-poster:active {
  transform: translateY(-1px);
}

.qw-home-landing .qw-vz-poster__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  transition: transform .6s cubic-bezier(.2, .9, .3, 1);
}
.qw-home-landing .qw-vz-poster:hover .qw-vz-poster__img {
  transform: scale(1.04);
}

/* Sutil oscurecido para que el CTA blanco resalte sobre cualquier foto. */
.qw-home-landing .qw-vz-poster__overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: rgba(15,23,42,.32);
  pointer-events: none;
}

/* "Window chrome" sutil â€” pinta una barra superior con 3 puntos + label
   para sugerir que esto es una ventana/app interactiva (no una imagen plana). */
.qw-home-landing .qw-vz-poster__chrome {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 12px 14px;
  background: rgba(15,23,42,.30);
  pointer-events: none;
}
.qw-home-landing .qw-vz-poster__chrome-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: rgba(255,255,255,.78);
  box-shadow: 0 0 0 1px rgba(0,0,0,.06);
}
.qw-home-landing .qw-vz-poster__chrome-dot:nth-of-type(1) { background: #ff5f56; }
.qw-home-landing .qw-vz-poster__chrome-dot:nth-of-type(2) { background: #ffbd2e; }
.qw-home-landing .qw-vz-poster__chrome-dot:nth-of-type(3) { background: #1bcf17; }
.qw-home-landing .qw-vz-poster__chrome-label {
  margin-left: 8px;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .04em;
  color: rgba(255,255,255,.86);
  text-transform: uppercase;
}

/* CTA principal â€” pill blanca centrada, con play-icon brand y subtÃ­tulo.
   Es el Ãºnico punto de acciÃ³n visualmente, deja claro quÃ© pasa al click. */
.qw-home-landing .qw-vz-poster__cta {
  position: absolute;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 10px 20px 10px 12px;
  border-radius: 999px;
  background: rgba(255,255,255,.96);
  color: var(--qw-ink, #0f172a);
  box-shadow: 0 8px 28px rgba(15, 23, 42, .28), 0 0 0 1px rgba(255,255,255,.4);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  transition: transform .25s cubic-bezier(.2, .9, .3, 1), box-shadow .25s;
}
.qw-home-landing .qw-vz-poster:hover .qw-vz-poster__cta {
  transform: translate(-50%, -3px);
  box-shadow: 0 14px 36px rgba(15, 23, 42, .35), 0 0 0 1px rgba(255,255,255,.5);
}
.qw-home-landing .qw-vz-poster__play {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--qw-green, #1bcf17);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  box-shadow: 0 4px 12px rgba(27,207,23, .4);
  transition: transform .3s cubic-bezier(.2, .9, .3, 1), background .2s;
}
.qw-home-landing .qw-vz-poster__play svg {
  margin-left: 2px; /* visual recentering of triangle play icon */
}
.qw-home-landing .qw-vz-poster:hover .qw-vz-poster__play {
  transform: scale(1.06);
  background: #1bcf17;
}
.qw-home-landing .qw-vz-poster__cta-body {
  display: flex;
  flex-direction: column;
  gap: 1px;
  text-align: left;
  padding-right: 4px;
}
.qw-home-landing .qw-vz-poster__cta-title {
  font-size: .98rem;
  font-weight: 800;
  letter-spacing: -.01em;
  line-height: 1.2;
  white-space: nowrap;
}
.qw-home-landing .qw-vz-poster__cta-sub {
  font-size: .76rem;
  font-weight: 600;
  color: var(--qw-muted, #64748b);
  line-height: 1.2;
  white-space: nowrap;
}

/* Badge esquina superior derecha â€” "Interactivo" en pill brand.            */
.qw-home-landing .qw-vz-poster__badge {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 5;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px 5px 8px;
  border-radius: 999px;
  background: var(--qw-green, #1bcf17);
  color: #fff;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  box-shadow: 0 3px 10px rgba(27,207,23, .35);
}

/* Mobile/tablet adjustments â€” tap target friendly + mÃ¡s respiro vertical.   */
@media (max-width: 720px) {
  .qw-home-landing .qw-vz-poster { aspect-ratio: 16 / 11; }
  .qw-home-landing .qw-vz-poster__cta { bottom: 18px; padding: 9px 18px 9px 10px; gap: 12px; }
  .qw-home-landing .qw-vz-poster__cta-title { font-size: .92rem; }
  .qw-home-landing .qw-vz-poster__cta-sub { font-size: .72rem; }
  .qw-home-landing .qw-vz-poster__play { width: 34px; height: 34px; }
  .qw-home-landing .qw-vz-poster__chrome-label { font-size: .68rem; }
}

@media (prefers-reduced-motion: reduce) {
  .qw-home-landing .qw-vz-poster,
  .qw-home-landing .qw-vz-poster__img,
  .qw-home-landing .qw-vz-poster__cta,
  .qw-home-landing .qw-vz-poster__play {
    transition: none !important;
  }
  .qw-home-landing .qw-vz-poster:hover { transform: none; }
  .qw-home-landing .qw-vz-poster:hover .qw-vz-poster__img { transform: none; }
  .qw-home-landing .qw-vz-poster:hover .qw-vz-poster__cta { transform: translateX(-50%); }
  .qw-home-landing .qw-vz-poster:hover .qw-vz-poster__play { transform: none; }
}
/* Tablet â€” keep two columns but tighten the gap so neither side cramps */
@media (max-width: 980px) and (min-width: 721px) {
  .qw-home-landing .qw-visualizador-teaser__grid { gap: 1.75rem; }
}
@media (max-width: 720px) {
  .qw-home-landing .qw-visualizador-teaser__grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .qw-home-landing .qw-visualizador-teaser__media { order: -1; }
  .qw-home-landing .qw-visualizador-teaser__bullets { margin: 1rem 0; }
}

/* ========================================================================== */
/* Visualizador modal fullscreen overlay (S7-BIS CTAs)                        */
/* iframe del Flask remoto. Body lock + ESC + backdrop click. Z-index alto    */
/* para superar al header/CMP banner.                                         */
/* ========================================================================== */

.qw-vz-modal {
  position: fixed;
  inset: 0;
  /* Por encima de qw-consent-fab (1000002) y qw-wa-fab (999998) â€” ambos son
     widgets fixed-positioned de qwood.es con z-index alto. El backdrop debe
     oscurecer absolutamente todo. */
  z-index: 1000010;
  display: flex;
  align-items: stretch;
  justify-content: stretch;
}
.qw-vz-modal[hidden] { display: none; }

.qw-vz-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(2px);
  cursor: pointer;
}

.qw-vz-modal__shell {
  position: relative;
  flex: 1 1 0;
  background: #fff;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  /* En desktop dejamos un poco de aire alrededor para que se sienta como modal;
     en mÃ³vil tomamos toda la pantalla. */
  margin: 24px;
  border-radius: 14px;
  box-shadow: 0 24px 80px rgba(0, 0, 0, .35);
}
@media (max-width: 720px) {
  .qw-vz-modal__shell {
    margin: 0;
    border-radius: 0;
  }
}

.qw-vz-modal__title {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.qw-vz-modal__close {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  margin: -1px;
  border: 0;
  padding: 0;
  pointer-events: none;
}
.qw-vz-modal__close:active { transform: scale(.96); }
.qw-vz-modal__close:focus-visible {
  outline: 3px solid rgba(27,207,23, .55);
  outline-offset: 2px;
}

.qw-vz-modal__frame {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  background: #ffffff;
}
.qw-vz-modal__iframe,
.qw-vz-modal__frame iframe {
  flex: 1 1 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  background: #ffffff;
}

/* Body lock cuando modal abierto (impide scroll detrÃ¡s) y oculta los widgets
   flotantes de qwood.es (WhatsApp FAB + toggle CMP) que tienen su propio
   stacking context con z-index muy alto y se cuelan sobre el backdrop. */
body.qw-vz-modal-open {
  overflow: hidden;
}
body.qw-vz-modal-open .qw-wa-fab,
body.qw-vz-modal-open .qw-consent-fab {
  display: none !important;
}

/* ============================================================
   24) WIZARD-ADHESIVOS STYLE OVERRIDES
   Tokens unificados con /assets/css/wizard.css:
   - Cards: border #e6ecf5, radius 22px, sombra 0 4px 16px rgba(15,23,42,.04)
   - Hover: border verde 20%, sombra 0 6px 20px rgba(15,23,42,.06), translateY(-1px)
   - Sin gradients ni transformaciones llamativas
   ============================================================ */

.qw-home-landing .qw-whatis-card,
.qw-home-landing .qw-step-card,
.qw-home-landing .qw-target-card,
.qw-home-landing .qw-review-card,
.qw-home-landing .qw-guide-card,
.qw-home-landing .qw-faq-item,
.qw-home-landing .qw-metric,
.qw-home-landing .qw-origin-step {
  background: #ffffff;
  border: 1px solid #e6ecf5;
  border-radius: 22px;
  box-shadow: 0 4px 16px rgba(15,23,42,.04);
  transition:
    border-color .2s var(--qw-ease, cubic-bezier(.2,.8,.2,1)),
    box-shadow .2s var(--qw-ease, cubic-bezier(.2,.8,.2,1)),
    transform .15s var(--qw-ease, cubic-bezier(.2,.8,.2,1));
}

@media (hover: hover) {
  .qw-home-landing .qw-whatis-card:hover,
  .qw-home-landing .qw-step-card:hover,
  .qw-home-landing .qw-target-card:hover,
  .qw-home-landing .qw-review-card:hover,
  .qw-home-landing .qw-guide-card:hover,
  .qw-home-landing .qw-faq-item:hover,
  .qw-home-landing .qw-metric:hover,
  .qw-home-landing .qw-origin-step:hover {
    border-color: rgba(27,207,23,.2);
    box-shadow: 0 6px 20px rgba(15,23,42,.06);
  }
}

/* FAQ open: border verde primary (mÃ¡s fuerte que hover) */
.qw-home-landing .qw-faq-item[open] {
  border-color: rgba(27,207,23,.32);
  box-shadow: 0 6px 20px rgba(15,23,42,.06);
}

/* Trabajos stage â€” coherente con cards (border + sombra suave) */
.qw-home-landing .qw-trabajos-stage {
  border: 1px solid #e6ecf5;
  box-shadow: 0 4px 16px rgba(15,23,42,.04);
}

/* Whatis hero figure â€” coherente */
.qw-home-landing .qw-whatis-hero__img {
  border: 1px solid #e6ecf5;
  border-radius: 22px;
  box-shadow: 0 4px 16px rgba(15,23,42,.04);
}

/* Section labels (.qw-label dentro de section header) â€” wizard step-indicator
   ya lo aplica vÃ­a la regla utility. Aseguramos que .qw-section--dark
   sigan teniendo label legible (no hay secciÃ³n dark fuera de footer). */

/* Helper bars / metric boxes / m2-style info chips â€” bg verde pale + radius 14px,
   coherente con .qw-m2-bar del wizard de adhesivos. */
.qw-home-landing .qw-metric {
  background: rgba(27,207,23,.04);
  border-color: rgba(27,207,23,.12);
  border-radius: 14px;
}

/* Reviews badge â€” white + shadow (grey cleanup 2026-05-27) */
.qw-home-landing .qw-reviews-badge {
  background: #ffffff;
  border: none;
  box-shadow: 0 2px 8px rgba(15,23,42,.10);
  border-radius: 14px;
  padding: .55rem 1.1rem;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .04em;
}

/* Section-link arrows â€” sin pill, solo texto verde con underline en hover */
.qw-home-landing .qw-section-link a {
  color: var(--qw-green-dark);
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.qw-home-landing .qw-section-link a:hover {
  color: var(--qw-green);
  text-decoration: underline;
  text-underline-offset: 4px;
}

/* ============================================================
   COLOR RHYTHM (2026-05-06) â€” VALIDATED BY FRONTEND + CRO
   ============================================================
   Pattern: B Â· C Â· B Â· B Â· C Â· B Â· V Â· B Â· C Â· B Â· B
   - 1 verde-deep (S7 trayectoria â€” Ãºnico momento de conversiÃ³n)
   - 3 celeste-deep (S2 origin, S5 durability, S9 targets)
   - 7 blanco (resto)

   Reglas:
   - Brand puro #1bcf17 / #0ea5e9 â†’ SOLO botones/kickers/iconos.
   - Bg de secciÃ³n usa -deep (a11y AA con texto blanco).
   - "El color de tu CTA nunca debe ser dominante en la pÃ¡gina" â€” Marketing.
   ============================================================ */

/* === Section bg variants ============================================= */
.qw-home-landing .qw-section--bg-celeste {
  background: var(--qwood-color-secondary-deep, #0ea5e9);
}
.qw-home-landing .qw-section--bg-verde {
  /* Brand rule: el verde QWOOD es #1bcf17 inamovible (no se oscurece para AA).
     Texto blanco sobre #1bcf17 ratio 3.27:1 â€” pasa AA solo para large bold (â‰¥18px/700+),
     que cumplen H2 y mÃ©tricas grandes. Aceptado como decisiÃ³n de marca. */
  background: var(--qwood-color-primary, #1bcf17);
}
.qw-home-landing .qw-section--bg-blanco {
  background: var(--qw-white, #fff);
}

/* === Heading + subheading + kicker overrides en secciones coloreadas === */
.qw-home-landing .qw-section--bg-celeste .qw-heading,
.qw-home-landing .qw-section--bg-verde .qw-heading,
.qw-home-landing .qw-section--bg-celeste h2.qw-heading,
.qw-home-landing .qw-section--bg-verde h2.qw-heading {
  color: #fff;
}
.qw-home-landing .qw-section--bg-celeste .qw-subheading,
.qw-home-landing .qw-section--bg-verde .qw-subheading {
  color: rgba(255,255,255,.92);
}
.qw-home-landing .qw-section--bg-celeste .qw-label,
.qw-home-landing .qw-section--bg-verde .qw-label,
.qw-home-landing .qw-section--bg-celeste .qw-kicker,
.qw-home-landing .qw-section--bg-verde .qw-kicker {
  /* sin pill rectangular: texto blanco directo, sin fondo */
  background: transparent;
  color: #fff;
  padding-left: 0;
  padding-right: 0;
}
/* The .qw-heading::after green dash becomes white-translucent */
.qw-home-landing .qw-section--bg-celeste .qw-heading::after,
.qw-home-landing .qw-section--bg-verde .qw-heading::after {
  background: rgba(255,255,255,.7);
}

/* === Section-link arrow on colored backgrounds === */
.qw-home-landing .qw-section--bg-celeste .qw-section-link a,
.qw-home-landing .qw-section--bg-verde .qw-section-link a {
  color: rgba(255,255,255,.95);
}
.qw-home-landing .qw-section--bg-celeste .qw-section-link a:hover,
.qw-home-landing .qw-section--bg-verde .qw-section-link a:hover {
  color: #fff;
}

/* === Buttons: invertir primary verde sobre fondo verde === */
.qw-home-landing .qw-section--bg-verde .qw-btn--primary {
  background: #fff;
  color: var(--qwood-color-primary-deep, #1bcf17);
  border-color: rgba(255,255,255,.6);
  box-shadow: 0 10px 28px rgba(0,0,0,.18);
}
.qw-home-landing .qw-section--bg-verde .qw-btn--primary:hover,
.qw-home-landing .qw-section--bg-verde .qw-btn--primary:focus-visible {
  background: rgba(255,255,255,.94);
  color: var(--qwood-color-primary-deep, #1bcf17);
  border-color: rgba(255,255,255,.85);
}
.qw-home-landing .qw-section--bg-verde .qw-btn--celeste {
  background: rgba(255,255,255,.14);
  color: #fff;
  border-color: rgba(255,255,255,.4);
}
.qw-home-landing .qw-section--bg-verde .qw-btn--celeste:hover {
  background: rgba(255,255,255,.22);
  border-color: rgba(255,255,255,.6);
}

/* === Stats numbers en secciones coloreadas: blanco === */
.qw-home-landing .qw-section--bg-celeste .qw-metric-value,
.qw-home-landing .qw-section--bg-verde .qw-metric-value,
.qw-home-landing .qw-section--bg-celeste .qw-metric-value--green,
.qw-home-landing .qw-section--bg-verde .qw-metric-value--green {
  color: #fff;
}
.qw-home-landing .qw-section--bg-celeste .qw-metric-label,
.qw-home-landing .qw-section--bg-verde .qw-metric-label {
  color: rgba(255,255,255,.85);
}

/* === Origin step number circles: blanco con tinta === */
.qw-home-landing .qw-section--bg-celeste .qw-origin-step,
.qw-home-landing .qw-section--bg-verde .qw-origin-step {
  background: rgba(255,255,255,.97);
  border-color: rgba(255,255,255,.2);
}

/* === Target cards en S9 celeste: blancas con tinta dark === */
.qw-home-landing .qw-section--bg-celeste .qw-target-card,
.qw-home-landing .qw-section--bg-verde .qw-target-card {
  background: #fff;
  border-color: rgba(255,255,255,.2);
}

/* === Wave dividers entre secciones (8 transiciones) === */
.qw-color-wave {
  display: block;
  width: 100%;
  height: clamp(36px, 5vw, 64px);
  margin: 0;
  pointer-events: none;
}
.qw-color-wave svg {
  display: block;
  width: 100%;
  height: 100%;
}

/* === Text within colored sections (white-on-color) ===
   Cubre selectores que pintan texto directamente sobre el bg coloreado
   (no dentro de cards). Las cards-island se quedan con sus propios estilos
   (bg blanco + texto dark). */

/* Durability items (S5) â€” texto directo sobre celeste */
.qw-home-landing .qw-section--bg-celeste .qw-dur-item-title,
.qw-home-landing .qw-section--bg-verde .qw-dur-item-title {
  color: #fff;
}
.qw-home-landing .qw-section--bg-celeste .qw-dur-item-text,
.qw-home-landing .qw-section--bg-verde .qw-dur-item-text {
  color: rgba(255,255,255,.92);
}
.qw-home-landing .qw-section--bg-celeste .qw-dur-icon,
.qw-home-landing .qw-section--bg-verde .qw-dur-icon {
  background: rgba(255,255,255,.16);
}
.qw-home-landing .qw-section--bg-celeste .qw-dur-icon svg,
.qw-home-landing .qw-section--bg-verde .qw-dur-icon svg {
  color: #fff;
}
.qw-home-landing .qw-section--bg-celeste .qw-dur-icon--celeste,
.qw-home-landing .qw-section--bg-verde .qw-dur-icon--celeste {
  background: rgba(255,255,255,.16);
}
.qw-home-landing .qw-section--bg-celeste .qw-dur-icon--celeste svg,
.qw-home-landing .qw-section--bg-verde .qw-dur-icon--celeste svg {
  color: #fff;
}

/* Durability metrics box â€” fondo mÃ¡s translÃºcido sobre el celeste */
.qw-home-landing .qw-section--bg-celeste .qw-metrics-grid > .qw-metric,
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid > .qw-metric {
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.22);
}

/* Origin step cards (S2) â€” ya son blancas islas, solo afinar bordes/sombras */
.qw-home-landing .qw-section--bg-celeste .qw-origin-step,
.qw-home-landing .qw-section--bg-verde .qw-origin-step {
  background: #fff;
  border-color: transparent;
  box-shadow: 0 12px 32px rgba(0,0,0,.18);
}

/* Section-link CTA al final de durability ("MÃ¡s sobre nuestras lÃ¡minas â†’") */
.qw-home-landing .qw-section--bg-celeste .qw-section-link,
.qw-home-landing .qw-section--bg-verde .qw-section-link {
  color: #fff;
}

/* Target cards (S8 celeste) â€” blancas con texto dark */
.qw-home-landing .qw-section--bg-celeste .qw-target-card .qw-target-name,
.qw-home-landing .qw-section--bg-verde .qw-target-card .qw-target-name {
  color: var(--qw-ink, #0f172a);
}
.qw-home-landing .qw-section--bg-celeste .qw-target-card p,
.qw-home-landing .qw-section--bg-verde .qw-target-card p {
  color: var(--qw-muted, rgba(15,23,42,.78));
}

/* Trayectoria CTA box (S6 verde): mantener blanco interior pero invertir botones */
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta {
  background: #fff;
  color: var(--qw-ink);
}
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta__lead {
  color: var(--qw-ink);
}

/* Wordmark QWOOD inline (SVG con paths): forzar fills a blanco sobre bg coloreado.
   El SVG default mezcla wood-marrÃ³n #b46a39 y Q-azul #1f5e90 que pelean con celeste/verde.
   Sobre fondos coloreados, todo el wordmark va en blanco para mÃ¡ximo contraste. */
.qw-home-landing .qw-section--bg-celeste .qw-wordmark g,
.qw-home-landing .qw-section--bg-celeste .qw-wordmark path,
.qw-home-landing .qw-section--bg-verde .qw-wordmark g,
.qw-home-landing .qw-section--bg-verde .qw-wordmark path {
  fill: #ffffff !important;
}

/* ============================================================
   POLISH PASS (2026-05-07) â€” visual-only, validated by FD+CRO+PSY
   ============================================================ */

/* === S7 Trayectoria â€” stats editoriales SIN card sobre verde === */
/* Override de la regla card-translucent global (cards-island) para esta secciÃ³n.
   MÃ¡s specific que .qw-metrics-grid > .qw-metric. */
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid,
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid--company,
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid--product {
  max-width: 720px;
  gap: 2rem;
  margin-top: 1.4rem;
  margin-bottom: 1.4rem;
}
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid > .qw-metric,
.qw-home-landing .qw-section--bg-verde.qw-trayectoria .qw-metric {
  background: transparent;
  border: 0;
  padding: .5rem .25rem;
  box-shadow: none;
  white-space: nowrap;
}
.qw-home-landing .qw-section--bg-verde .qw-metrics-grid > .qw-metric:hover {
  background: transparent;
  box-shadow: none;
}
.qw-home-landing .qw-section--bg-verde .qw-metric-value,
.qw-home-landing .qw-section--bg-verde .qw-metric-value--green,
.qw-home-landing .qw-section--bg-verde .qw-metric-value--celeste {
  font-size: clamp(2.8rem, 5.6vw, 4.4rem);
  color: #fff;
  letter-spacing: -.025em;
  line-height: .95;
  margin-bottom: .55rem;
  white-space: nowrap;
}
.qw-home-landing .qw-section--bg-verde .qw-metric-label {
  color: rgba(255,255,255,.92);
  font-size: clamp(.82rem, 1.1vw, .98rem);
  font-weight: 800;
  letter-spacing: .02em;
  white-space: normal;
}

/* === S6 Durability â€” stats editoriales SIN card sobre celeste-deep === */
.qw-home-landing .qw-section--bg-celeste .qw-metrics-grid {
  max-width: 720px;
  gap: 2rem;
}
.qw-home-landing .qw-section--bg-celeste .qw-metrics-grid > .qw-metric {
  background: transparent;
  border: 0;
  padding: .5rem .25rem;
  box-shadow: none;
  white-space: nowrap;
}
.qw-home-landing .qw-section--bg-celeste .qw-metrics-grid > .qw-metric:hover {
  background: transparent;
  box-shadow: none;
}
.qw-home-landing .qw-section--bg-celeste .qw-metric-value,
.qw-home-landing .qw-section--bg-celeste .qw-metric-value--green,
.qw-home-landing .qw-section--bg-celeste .qw-metric-value--celeste {
  font-size: clamp(2.6rem, 4.8vw, 3.8rem);
  color: #fff;
  letter-spacing: -.025em;
  line-height: .95;
  margin-bottom: .45rem;
  white-space: nowrap;
}
.qw-home-landing .qw-section--bg-celeste .qw-metric-label {
  color: rgba(255,255,255,.92);
  font-size: clamp(.82rem, 1.1vw, .98rem);
  font-weight: 800;
  white-space: normal;
}

/* === S7 Trayectoria CTA card flotante (sin border, sombra profunda) === */
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta {
  border: 0;
  border-radius: var(--qw-radius-lg, 22px);
  padding: 2rem 1.75rem;
  margin-top: 2.6rem;
  box-shadow: 0 24px 60px rgba(0,0,0,.18), 0 4px 14px rgba(0,0,0,.08);
}

/* WA button: la card es blanca, mantener el botÃ³n verde QWOOD con texto blanco
   (el override generic de bg-verde para .qw-btn--primary lo invertÃ­a a blanco-on-blanco
   porque el botÃ³n vive DENTRO de la card blanca, no sobre el fondo verde). */
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta .qw-trayectoria-cta__wa,
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta a.qw-trayectoria-cta__wa {
  background: var(--qw-green, #1bcf17) !important;
  color: #ffffff !important;
  border-color: var(--qw-green, #1bcf17) !important;
  box-shadow: 0 10px 28px rgba(27,207,23,.28) !important;
}
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta .qw-trayectoria-cta__wa:hover,
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta a.qw-trayectoria-cta__wa:hover {
  background: var(--qw-green-dark, #1bcf17) !important;
  border-color: var(--qw-green-dark, #1bcf17) !important;
  color: #ffffff !important;
}
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta .qw-trayectoria-cta__wa svg {
  fill: #ffffff !important;
  color: #ffffff !important;
}
/* Form button (ghost): borde verde, texto verde, fondo blanco â€” es el secundario */
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta .qw-trayectoria-cta__form,
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta a.qw-trayectoria-cta__form {
  background: #ffffff !important;
  color: var(--qw-green-dark, #1bcf17) !important;
  border-color: var(--qw-green, #1bcf17) !important;
  box-shadow: none !important;
}

/* === S7 WhatsApp button: dot pulse animation === */
@keyframes qwWaPulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.6); opacity: 0; }
}
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta__wa {
  position: relative;
}
.qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta__wa::before {
  content: "";
  position: absolute;
  top: 8px;
  right: 8px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #1bcf17;
  box-shadow: 0 0 0 2px rgba(255,255,255,.85);
  animation: qwWaPulse 2.2s var(--qw-ease, cubic-bezier(.4,0,.2,1)) infinite;
}
@media (prefers-reduced-motion: reduce) {
  .qw-home-landing .qw-section--bg-verde .qw-trayectoria-cta__wa::before {
    animation: none;
  }
}

/* === S5 Before/After divider line at 50% (visible vertical line) === */
.qw-home-landing .qw-ba-overlay::after {
  content: "";
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 2px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 0 12px rgba(0,0,0,.35), 0 0 4px rgba(0,0,0,.25);
  pointer-events: none;
  z-index: 3;
}

/* === S5 Before/After thumb 28px verde QWOOD sÃ³lido (sin SVG interior) === */
.qw-home-landing .qw-ba-range::-webkit-slider-thumb {
  width: 28px;
  height: 28px;
  margin-top: -11.5px;
  background: var(--qw-green, #1bcf17);
  border: 2px solid #ffffff;
  box-shadow: 0 0 0 3px rgba(27,207,23,.30), 0 8px 22px rgba(0,0,0,.32);
}
.qw-home-landing .qw-ba-range::-moz-range-thumb {
  width: 28px;
  height: 28px;
  background: var(--qw-green, #1bcf17);
  border: 2px solid #ffffff;
  box-shadow: 0 0 0 3px rgba(27,207,23,.30), 0 8px 22px rgba(0,0,0,.32);
}

/* === S3 Install-steps connector â€” eliminado (2026-05-07).
   La conexiÃ³n visual entre cards venÃ­a con compromisos visuales (segmentos
   en gaps, halo LED competÃ­a con cards). Limpieza total: cards autÃ³nomas. */
.qw-home-landing .qw-steps-grid::before,
.qw-home-landing .qw-steps-grid::after {
  display: none;
}

/* ============================================================
   CTA SMART POPUP (2026-05-07)
   ============================================================
   Reemplaza el CTA box inline del final de S7 trayectoria.
   Aparece bottom-right (no compite con WhatsApp FAB que estÃ¡ bottom-left).
   Slide-up + fade-in al activarse. Dismiss via X o Esc, persiste en
   sessionStorage. */
.qw-cta-popup {
  position: fixed;
  right: clamp(16px, 2.5vw, 28px);
  bottom: clamp(16px, 2.5vw, 28px);
  z-index: 9000;
  width: min(340px, calc(100vw - 32px));
  background: #ffffff;
  border-radius: 18px;
  box-shadow: 0 24px 60px rgba(15,23,42,.20), 0 6px 18px rgba(15,23,42,.08);
  padding: 22px 22px 20px;
  border: 1px solid rgba(15,23,42,.06);
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .32s var(--qw-ease, cubic-bezier(.2,.8,.2,1)),
              transform .32s var(--qw-ease, cubic-bezier(.2,.8,.2,1));
  pointer-events: none;
}
.qw-cta-popup.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.qw-cta-popup[hidden] { display: none; }

.qw-cta-popup__close {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(15,23,42,.06);
  border: 0;
  color: var(--qw-ink, #0f172a);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  transition: background .2s ease, color .2s ease;
}
.qw-cta-popup__close:hover,
.qw-cta-popup__close:focus-visible {
  background: rgba(15,23,42,.12);
  outline: none;
}

.qw-cta-popup__title {
  font-size: 1.1rem;
  font-weight: 900;
  color: var(--qw-ink, #0f172a);
  margin: 0 32px 6px 0;
  letter-spacing: -.01em;
}
.qw-cta-popup__lead {
  font-size: .9rem;
  font-weight: 700;
  color: var(--qw-ink, #0f172a);
  line-height: 1.5;
  margin: 0 0 14px;
}
.qw-cta-popup__buttons {
  display: flex;
  gap: 8px;
}
.qw-cta-popup__wa,
.qw-cta-popup__form {
  flex: 1 1 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  min-height: 44px;
  padding: .65rem 1rem;
  border-radius: 999px;
  font-weight: 900;
  font-size: .9rem;
  letter-spacing: .02em;
  text-decoration: none;
  border: 2px solid transparent;
  transition: background .2s ease, border-color .2s ease, color .2s ease;
}
.qw-cta-popup__wa,
.qw-cta-popup__wa:visited {
  background: var(--qw-green, #1bcf17);
  color: #ffffff;
  box-shadow: 0 6px 16px rgba(27,207,23,.22);
}
.qw-cta-popup__wa:hover,
.qw-cta-popup__wa:focus-visible {
  background: var(--qw-green-dark, #1bcf17);
  color: #ffffff;
  outline: none;
}
.qw-cta-popup__wa svg { fill: #ffffff; flex-shrink: 0; }
.qw-cta-popup__form,
.qw-cta-popup__form:visited {
  background: #ffffff;
  color: var(--qw-green-dark, #1bcf17);
  border-color: var(--qw-green, #1bcf17);
}
.qw-cta-popup__form:hover,
.qw-cta-popup__form:focus-visible {
  background: rgba(27,207,23,.06);
  color: var(--qw-green-dark, #1bcf17);
  outline: none;
}

@media (max-width: 480px) {
  .qw-cta-popup {
    right: 12px;
    left: 12px;
    bottom: 12px;
    width: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .qw-cta-popup {
    transition: opacity .15s ease;
    transform: none;
  }
}

/* ============================================================
   WHITE CARDS + IMAGE BLOCKS â€” borderless + accented shadow
   (2026-05-07 update)
   ============================================================ */
.qw-home-landing .qw-whatis-card,
.qw-home-landing .qw-whatis-hero__img,
.qw-home-landing .qw-step-card,
.qw-home-landing .qw-origin-step,
.qw-home-landing .qw-target-card,
.qw-home-landing .qw-guide-card,
.qw-home-landing .qw-review-card,
.qw-home-landing .qw-faq-item,
.qw-home-landing .qw-metric {
  border: 0 !important;
  box-shadow:
    0 14px 36px rgba(15,23,42,.10),
    0 4px 12px rgba(15,23,42,.05);
}

/* Hover refuerza mÃ¡s la sombra (sin movimiento de card â€” brand rule) */
.qw-home-landing .qw-whatis-card:hover,
.qw-home-landing .qw-step-card:hover,
.qw-home-landing .qw-origin-step:hover,
.qw-home-landing .qw-target-card:hover,
.qw-home-landing .qw-guide-card:hover,
.qw-home-landing .qw-review-card:hover,
.qw-home-landing .qw-faq-item:hover,
.qw-home-landing .qw-metric:hover {
  border: 0;
  box-shadow:
    0 22px 50px rgba(15,23,42,.14),
    0 6px 16px rgba(15,23,42,.06);
}

/* Target cards (S8 celeste-deep): quitar border-left verde/celeste y
   reemplazar por GLOW BLANCO para efecto iluminaciÃ³n contra el bg coloreado.
   Hover refuerza el halo. */
.qw-home-landing .qw-section--bg-celeste .qw-target-card,
.qw-home-landing .qw-section--bg-verde .qw-target-card {
  border-left: 0;
  box-shadow:
    0 0 0 1px rgba(255,255,255,.45),
    0 8px 28px rgba(255,255,255,.18),
    0 18px 50px rgba(15,23,42,.18);
}
.qw-home-landing .qw-section--bg-celeste .qw-target-card:hover,
.qw-home-landing .qw-section--bg-verde .qw-target-card:hover {
  box-shadow:
    0 0 0 1.5px rgba(255,255,255,.65),
    0 12px 36px rgba(255,255,255,.28),
    0 22px 60px rgba(15,23,42,.22);
}

/* Origin-step (S2 celeste-deep) â€” mantener border-top accent verde/celeste
   como signature. */
.qw-home-landing .qw-origin-step--green { border-top: 3px solid var(--qw-green); }
.qw-home-landing .qw-origin-step--celeste { border-top: 3px solid var(--qw-celeste); }

/* ============================================================
   BOLDNESS BUMPS PASS 2 (2026-05-07)
   ============================================================ */

/* Hero CTA "Explorar maderas y acabados" â€” mÃ¡s bold + grande + verde claro sÃ³lido + halo verde sutil (-70%) */
.qw-home-landing .qw-hero-ctas .qw-btn--primary {
  font-size: 1.12rem;
  font-weight: 900;
  letter-spacing: -.005em;
  padding: 1.05rem 2.4rem;
  min-height: 58px;
  /* Verde sÃ³lido mÃ¡s claro (brand hover variant) â€” sin gradientes ni inset blancos */
  background: var(--qw-green-hover);
  background-image: none;
  border-color: rgba(27,207,23,.14);
  /* Halo verde sÃ³lido multi-capa â€” opacidades reducidas 70% */
  box-shadow:
    0 8px 20px rgba(27,207,23,.135),
    0 18px 48px rgba(27,207,23,.114),
    0 0 36px rgba(27,207,23,.102);
}
@media (hover: hover) and (pointer: fine) {
  .qw-home-landing .qw-hero-ctas .qw-btn--primary:hover {
    background: var(--qw-green-hover);
    box-shadow:
      0 10px 24px rgba(27,207,23,.165),
      0 22px 56px rgba(27,207,23,.135),
      0 0 44px rgba(27,207,23,.135);
  }
}
.qw-home-landing .qw-hero-ctas .qw-btn--primary:focus-visible {
  background: var(--qw-green-hover);
  box-shadow:
    0 10px 24px rgba(27,207,23,.165),
    0 22px 56px rgba(27,207,23,.135),
    0 0 44px rgba(27,207,23,.135);
}

/* Section kickers (.qw-label / .qw-kicker) â€” mÃ¡s bold + grande */
.qw-home-landing .qw-label,
.qw-home-landing .qw-kicker {
  font-size: 15px;
  font-weight: 900;
  letter-spacing: .14em;
}

/* Trabajos progress bar â€” mÃ¡s gruesa, nÃºmero mÃ¡s bold */
.qw-home-landing .qw-trabajos-progress__track {
  height: 5px;
  background: rgba(15,23,42,.12);
}
.qw-home-landing .qw-trabajos-progress__fill {
  background: var(--qw-green, #1bcf17);
  box-shadow: 0 0 8px rgba(27,207,23,.4);
}
.qw-home-landing .qw-trabajos-progress__counter {
  font-size: .82rem;
  font-weight: 900;
  color: var(--qw-ink);
  letter-spacing: .03em;
}

/* Guides â€” cards borderless con sombra acentuada + textos mÃ¡s bold */
.qw-home-landing .qw-guide-card {
  background: #ffffff;
  border: 0;
  padding: 1.5rem 1.5rem;
}
.qw-home-landing .qw-guide-card:hover {
  border: 0;
}
.qw-home-landing .qw-guide-title {
  font-size: 1.05rem;
  font-weight: 900;
  letter-spacing: -.01em;
}
.qw-home-landing .qw-guide-tag {
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: .12em;
}
.qw-home-landing .qw-guide-icon {
  width: 52px;
  height: 52px;
}
.qw-home-landing .qw-guide-icon svg {
  width: 28px;
  height: 28px;
  stroke-width: 2.6 !important;
}
.qw-home-landing .qw-guide-card a,
.qw-home-landing a.qw-guide-card--link {
  font-weight: 900;
}

/* ============================================================
   FOOTER â€” wordmark blanco (2026-05-07)
   Watermarks ::before/::after consolidados en global-footer.css
   (SSOT 2026-05-08). qw-footer-copy queda aquÃ­ porque global-footer.css
   tambiÃ©n lo cubre â€” duplicidad armoniosa, mismas reglas. */
.qw-contact-footer .qw-footer-copy {
  font-size: .85rem;
  font-weight: 800;
  color: rgba(255,255,255,.55);
  display: inline-flex;
  align-items: baseline;
  gap: .35rem;
}
.qw-contact-footer .qw-footer-copy__year { color: rgba(255,255,255,.55); }
.qw-contact-footer .qw-footer-copy__brand { color: #ffffff; }
.qw-contact-footer .qw-footer-copy__brand .qw-wordmark g,
.qw-contact-footer .qw-footer-copy__brand .qw-wordmark path {
  fill: #ffffff !important;
}
