/* ============================================================
   Almami — reskin.css
   Capa 1: tokens base (paleta, tipografías, variables).
   Se carga después de style.css y responsive.css para ganar
   por orden de cascada. NO toca componentes (botones, tarjetas,
   header, formularios) — eso vive en capas posteriores.
   Para revertir: quitar el <link> de reskin.css del <head>.
   ============================================================ */


/* -----------------------------------------------------------
   1. Design tokens
   ----------------------------------------------------------- */
:root {
  /* Paleta de marca */
  --color-brand: #8E131C;
  --color-brand-dark: #670B13;
  --color-brand-deep: #4E0710;
  --color-brand-soft: #F7E6E8;

  /* Texto */
  --color-ink: #272727;
  --color-ink-soft: #4B4B4B;
  --color-muted: #72757A;

  /* Superficies */
  --color-surface: #F6F8FA;
  --color-surface-alt: #EDEDED;
  --color-white: #FFFFFF;

  /* Líneas y vidrio */
  --color-line: rgba(39, 39, 39, 0.12);
  --color-glass: rgba(255, 255, 255, 0.68);
  --color-glass-border: rgba(255, 255, 255, 0.42);

  /* Gradientes */
  --gradient-brand: linear-gradient(135deg, #8E131C 0%, #670B13 55%, #3A050B 100%);
  --gradient-soft: linear-gradient(180deg, #FFFFFF 0%, #F6F8FA 100%);
  --gradient-glass: linear-gradient(135deg, rgba(255,255,255,0.84), rgba(255,255,255,0.46));

  /* Tipografía */
  --font-heading: 'Poppins', sans-serif;
  --font-body: 'Raleway', sans-serif;

  /* Espaciado (escala 8px) */
  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 32px;
  --space-5: 40px;
  --space-6: 48px;
  --space-8: 64px;
  --space-10: 80px;
  --space-12: 96px;
  --space-16: 128px;

  /* Radios */
  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-lg: 28px;
  --radius-xl: 40px;
  --radius-pill: 999px;

  /* Sombras */
  --shadow-soft: 0 18px 60px rgba(39, 39, 39, 0.08);
  --shadow-card: 0 16px 48px rgba(39, 39, 39, 0.10);
  --shadow-glass: 0 24px 80px rgba(39, 39, 39, 0.16);

  /* Timings */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast: 160ms;
  --duration-normal: 240ms;
  --duration-slow: 520ms;
}


/* -----------------------------------------------------------
   2. Tipografía y color base
   Solo lo global: body + headings. Componentes en capas siguientes.
   ----------------------------------------------------------- */
body {
  font-family: var(--font-body);
  color: var(--color-ink);
  background-color: var(--color-white);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  color: var(--color-ink);
}


/* -----------------------------------------------------------
   3. Botones — Capa 2
   - .btn-primary: pílde bordó (acción principal).
   - .btn-secondary: glass sobre claro (acción secundaria).
   - .button-rrhh: CTA de RRHH (CTA principal en su contexto).
   - .slider_btn_one: "Ver más" del slider — usa el lenguaje secundario.
   - .whatsapp: flotante integrado al sistema, ícono mantiene su forma.
   Sobreescribimos selectores viejos para no tocar el HTML.
   ----------------------------------------------------------- */

/* Botón primario (incluye el submit del form, que viene con .button.btn-primary).
   Cubrimos también .button-rrhh, que actúa como CTA principal en rrhh.html. */
.btn-primary,
.button.btn-primary,
button.btn-primary,
.button-rrhh {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 26px;
  border-radius: var(--radius-pill);
  background: var(--color-brand);
  color: var(--color-white);
  font-family: var(--font-heading);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1;
  border: 1px solid var(--color-brand);
  box-shadow: 0 14px 34px rgba(142, 19, 28, 0.26);
  text-decoration: none;
  text-transform: none;
  cursor: pointer;
  transition: transform var(--duration-fast) ease,
              box-shadow var(--duration-fast) ease,
              background var(--duration-fast) ease,
              border-color var(--duration-fast) ease;
}

.btn-primary:hover,
.btn-primary:focus,
.button.btn-primary:hover,
.button.btn-primary:focus,
button.btn-primary:hover,
button.btn-primary:focus,
.button-rrhh:hover,
.button-rrhh:focus {
  background: var(--color-brand-dark);
  color: var(--color-white);
  border-color: var(--color-brand-dark);
  transform: translateY(-2px);
  box-shadow: 0 18px 46px rgba(142, 19, 28, 0.34);
  outline: none;
}

/* Botón secundario aplicado al "Ver más" del slider.
   También expone la clase utilitaria .btn-secondary para uso futuro. */
.btn-secondary,
.slider_btn .slider_btn_one,
.slider_btn_one {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 26px;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, 0.72);
  color: var(--color-ink);
  font-family: var(--font-heading);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1;
  border: 1px solid rgba(39, 39, 39, 0.12);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  text-decoration: none;
  text-transform: none;
  transition: transform var(--duration-fast) ease,
              border-color var(--duration-fast) ease,
              background var(--duration-fast) ease,
              color var(--duration-fast) ease;
}

.btn-secondary:hover,
.btn-secondary:focus,
.slider_btn .slider_btn_one:hover,
.slider_btn .slider_btn_one:focus,
.slider_btn_one:hover,
.slider_btn_one:focus {
  transform: translateY(-2px);
  background: var(--color-white);
  color: var(--color-ink);
  border-color: rgba(142, 19, 28, 0.32);
  outline: none;
}

/* WhatsApp flotante.
   Botón redondo verde marca, logo blanco vía Font Awesome.
   Visible e identificable de inmediato. */
.whatsapp {
  width: 60px !important;
  height: 60px !important;
  right: 24px;
  bottom: 24px;
}

.whatsapp button {
  width: 100%;
  height: 100%;
  background: var(--color-brand) !important;
  border: none !important;
  border-radius: 50%;
  padding: 0 !important;
  box-shadow: 0 10px 28px rgba(142, 19, 28, 0.45) !important;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: transform var(--duration-fast) ease,
              box-shadow var(--duration-fast) ease,
              background var(--duration-fast) ease;
}

.whatsapp button:hover {
  background: var(--color-brand-dark) !important;
  box-shadow: 0 14px 36px rgba(142, 19, 28, 0.55) !important;
  transform: translateY(-2px);
}

.whatsapp .fa-whatsapp {
  color: var(--color-white);
  font-size: 34px;
  line-height: 1;
}


/* -----------------------------------------------------------
   4. Tarjetas de servicio — Capa 3
   Aplicamos el lenguaje de .service-card del documento a la
   estructura existente (Bootstrap 3): .service_list (col-md-4)
   con .service_img + .service_para adentro. Sin tocar HTML.

   Por qué dos elementos forman el card:
   - .col-md-4 tiene padding lateral 15px (gutter). Si pintamos
     fondo en el col, las tarjetas se tocan. En cambio .service_img
     y .service_para son hijos: respetan el content-box y dejan los
     30px de aire entre tarjetas.
   - Los dos hijos van adyacentes sin gap visual, así que con borde
     compartido y border-radius arriba/abajo, se ven como un solo card.

   Altura uniforme:
   - .row pasa a display:flex (anula los floats de Bootstrap pero
     conserva el wrap natural en mobile).
   - .service_list crece a la altura mayor de la fila.
   - .service_para usa flex:1 para llenar el alto restante.
   ----------------------------------------------------------- */

/* Hacer la fila flexible para igualar alturas */
.service_section .row {
  display: flex;
  flex-wrap: wrap;
}

/* Cada col-md-4 se convierte en columna flex que llena la altura de la fila */
.service_section .service_list {
  display: flex;
  flex-direction: column;
  margin-bottom: var(--space-4);
  background: transparent !important; /* anula el #f6f8fa viejo */
  transition: transform var(--duration-normal) var(--ease-out);
}

.service_section .service_list:hover {
  transform: translateY(-6px);
}

/* Imagen: borde superior del card */
.service_section .service_list .service_img {
  border: 1px solid var(--color-line);
  border-bottom: none;
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  overflow: hidden;
  background: var(--color-white);
}

.service_section .service_list .service_img img {
  display: block;
  width: 100%;
  height: auto;
  transition: transform var(--duration-slow) var(--ease-out);
}

.service_section .service_list:hover .service_img img {
  transform: scale(1.04);
}

/* Cuerpo de texto: borde inferior del card.
   flex:1 para que cubra el alto restante y todas las tarjetas
   de la fila queden parejas, sin importar el largo del texto. */
.service_section .service_list .service_para {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  padding: var(--space-3) var(--space-3) var(--space-4);
  background: var(--color-white);
  border: 1px solid var(--color-line);
  border-top: none;
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
  box-shadow: var(--shadow-card);
  text-align: left;
  transition: box-shadow var(--duration-normal) var(--ease-out),
              border-color var(--duration-normal) var(--ease-out);
}

.service_section .service_list:hover .service_para {
  box-shadow: 0 26px 80px rgba(39, 39, 39, 0.12);
  border-color: rgba(142, 19, 28, 0.22);
}

/* Regla obsoleta: se hizo cuando en home un <a href="servicios.html">
   envolvía volanta+h5+descripción. Ese wrapper se eliminó al sumar el
   botón .service-cta (Capa 10) para evitar anchors anidados.
   El único <a> que ahora queda como hijo directo de .service_para es
   el botón .btn-outline-brand.service-cta, que se estiliza solo. */


/* -----------------------------------------------------------
   5. Jerarquía interna de la tarjeta — Capa 3
   Tres niveles: volanta (eyebrow) / título (gancho) / descripción.
   ----------------------------------------------------------- */

/* Volanta: eyebrow bordó, Poppins 600, tracking amplio.
   Sin fondo (no es badge sólido), va alineado a la izquierda. */
.service_section .service_list .service-volanta {
  margin: 0 0 var(--space-2);
  padding: 0;
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.12em;
  color: var(--color-brand);
  text-transform: uppercase;
}

/* Título (gancho): Poppins, alineado izquierda, sin tracking exagerado.
   Sobreescribe la regla vieja .service_list h5 (text-align:center;
   letter-spacing:1px; margin-bottom:-5px). */
.service_section .service_list h5 {
  margin: 0 0 var(--space-2);
  font-family: var(--font-heading);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--color-ink);
  text-align: left;
  text-transform: none;
}

/* Descripción: Raleway, color soft, lectura cómoda. */
.service_section .service_list .service_para p:not(.service-volanta) {
  margin: 0;
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.6;
  color: var(--color-ink-soft);
  text-transform: none;
}


/* -----------------------------------------------------------
   6. Header y navegación — Capa 4
   REFINAR el header existente, no reconstruirlo.
   - Sin tocar HTML ni el JS del menumaker (#menu-button / .small-screen).
   - Sin convertirlo en píldora flotante.
   - Solo aspecto: tipografía Poppins, hover bordó, sombra suave,
     línea roja fina como hover en los items de navegación.
   ----------------------------------------------------------- */

/* Barra superior de redes/contacto en mobile */
.redes-mobile {
  background-color: var(--color-ink);
}

.redes-mobile ul li a {
  color: var(--color-white);
  transition: color var(--duration-fast) ease;
}

.redes-mobile ul li a:hover,
.redes-mobile ul li a:focus {
  color: var(--color-brand-soft);
}


/* Header principal */
.navigation {
  background-color: var(--color-white);
  box-shadow: var(--shadow-soft);
}

/* Conserva la sombra cuando el plugin pone .is-sticky, pero coherente */
.is-sticky .navigation {
  box-shadow: var(--shadow-card);
}

/* Borde gris claro que separaba el contenedor: lo afinamos a brand-soft */
.navigation .container {
  border-top-color: var(--color-line);
}


/* Items del menú principal (desktop)
   Sobreescribimos color, hover (que estaba en azul #1490D6) y agregamos
   una línea bordó como recurso "líneas rojas" del documento. */
#navigation > ul > li > a {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 14px;
  letter-spacing: 0.01em;
  color: var(--color-ink);
  text-transform: none;
  transition: color var(--duration-fast) ease;
}

#navigation > ul > li > a::after {
  content: "";
  position: absolute;
  left: 15px;
  right: 15px;
  bottom: 22px;
  height: 2px;
  background: var(--color-brand);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--duration-normal) var(--ease-out);
}

#navigation > ul > li:hover > a,
#navigation > ul > li > a:focus {
  color: var(--color-brand);
}

#navigation > ul > li:hover > a::after,
#navigation > ul > li > a.active::after,
#navigation > ul > li > a:focus::after {
  transform: scaleX(1);
}

/* Item "activo" — peso fuerte + línea ya visible (ver regla de arriba) */
#navigation > ul > li > a.active {
  color: var(--color-brand);
  font-weight: 700;
}

/* Íconos sociales a la derecha del header */
.menu_right > ul > li > a {
  color: var(--color-ink);
  transition: color var(--duration-fast) ease;
}

.menu_right > ul > li > a:hover,
.menu_right > ul > li > a:focus {
  color: var(--color-brand);
}


/* -----------------------------------------------------------
   7. Menú mobile (.small-screen) — SOLO aspecto.
   La lógica del toggle la maneja jquery.menumaker en main.js.
   No tocamos #menu-button (estructura ni handler), solo color.
   ----------------------------------------------------------- */

/* Botón hamburguesa: las dos barras son ::before/::after.
   Las repintamos al ink del sistema. */
#navigation.small-screen #menu-button::before,
#navigation.small-screen #menu-button::after {
  background: var(--color-ink);
}

#navigation.small-screen #menu-button.menu-opened::before,
#navigation.small-screen #menu-button.menu-opened::after {
  background: var(--color-ink);
}

/* Items del menú abierto */
#navigation.small-screen > ul > li > a {
  font-family: var(--font-heading);
  font-weight: 600;
  color: var(--color-ink);
  border-bottom: 1px solid var(--color-line);
}

#navigation.small-screen > ul > li > a:hover,
#navigation.small-screen > ul > li > a:focus,
#navigation.small-screen > ul > li > a.active {
  color: var(--color-brand);
  background: var(--color-surface);
}

/* Línea hover bordó del desktop NO debe aparecer en mobile
   (rompía el layout vertical al posicionarse absoluto) */
@media (max-width: 991px) {
  #navigation > ul > li > a::after {
    display: none;
  }
}


/* -----------------------------------------------------------
   8. Líneas rojas — recurso "orden" del documento.
   La regla vieja .base_header_2 h3::after ya dibuja una línea
   bajo cada h3 de sección (color #414141, 100px). La repintamos
   al brand y la afinamos.
   ----------------------------------------------------------- */
.base_header_2 h3::after {
  background: var(--color-brand);
  height: 2px;
  width: 64px;
  margin-left: -32px;
}


/* -----------------------------------------------------------
   9. CTA del header — "Pedí presupuesto"
   El .header_cta reemplaza a .menu_right (íconos sociales).
   Reutiliza .btn-primary de la Capa 2 — sin CSS de botón nuevo.
   Aquí solo controlamos posicionamiento dentro del col-sm-2 y
   el comportamiento en cada breakpoint.

   Breakpoints en juego:
   - Bootstrap col-sm: 768px.
   - Menumaker (hamburguesa): 998px.
   - responsive.css viejo apila el header desde 1014px (oculta
     .menu_right, pone .header_logo width:100% y #navigation
     float:none). Aprovechamos esa misma franja para apilar el CTA.
   ----------------------------------------------------------- */

/* Desktop ≥1015px: el CTA va alineado a la derecha dentro del col-sm-2 */
.header_cta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 16px 15px 16px 0;
}

.header_cta .btn-primary {
  /* Versión compacta del btn-primary para uso en header:
     en md (1015-1199) el col-sm-2 mide ~162px y el btn-primary
     "tamaño form" (padding 26px + min-height 52px) se sale.
     Reducimos padding/min-height/font-size para que "Pedí presupuesto"
     entre cómodo en el col sin perder presencia.
     white-space:nowrap evita un wrap accidental. */
  min-height: 44px;
  padding: 0 20px;
  font-size: 13px;
  white-space: nowrap;
}

/* Ícono de WhatsApp dentro del CTA: hereda color blanco del botón,
   levemente más grande que el texto para que se reconozca como logo. */
.header_cta .btn-primary .fa-whatsapp {
  font-size: 18px;
  margin-right: 12px;
  line-height: 1;
}

/* Franja md angosta (1015-1199): col-sm-2 ≈ 162px.
   Botón con ícono no entra cómodo con padding 20+20; bajamos padding
   y gap para que ícono + texto ocupen menos. */
@media (min-width: 1015px) and (max-width: 1199px) {
  .header_cta .btn-primary {
    padding: 0 14px;
    font-size: 12px;
  }
  .header_cta .btn-primary .fa-whatsapp {
    font-size: 16px;
    margin-right: 10px;
  }
}


/* -----------------------------------------------------------
   10. Botón outline bordó (.btn-outline-brand)
   Variante "outline" del CTA primario, para contextos donde el
   bordó sólido recargaría (ej. 6 tarjetas en grilla).
   Modificador .service-cta lo posiciona al pie de las tarjetas
   de servicio aprovechando el flex column de la Capa 3.
   ----------------------------------------------------------- */

.btn-outline-brand {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 20px;
  border-radius: var(--radius-pill);
  background: var(--color-white);
  color: var(--color-brand);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1;
  border: 1px solid var(--color-brand);
  text-decoration: none;
  text-transform: none;
  cursor: pointer;
  transition: transform var(--duration-fast) ease,
              background var(--duration-fast) ease,
              color var(--duration-fast) ease,
              box-shadow var(--duration-fast) ease,
              border-color var(--duration-fast) ease;
}

.btn-outline-brand:hover,
.btn-outline-brand:focus {
  background: var(--color-brand);
  color: var(--color-white);
  border-color: var(--color-brand);
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(142, 19, 28, 0.22);
  outline: none;
  text-decoration: none;
}

.btn-outline-brand .fa-whatsapp {
  font-size: 16px;
  margin-right: 10px;
  line-height: 1;
}


/* Modificador .service-cta: botón al pie de cada tarjeta de servicio.
   - margin-top:auto lo empuja al fondo del .service_para (flex column,
     ver Capa 3), de modo que todos los botones de una fila quedan
     alineados al fondo aunque las descripciones tengan largos distintos.
   - align-self:flex-start mantiene el botón al ancho de su contenido,
     alineado a la izquierda. En grillas con 6 tarjetas un botón full-width
     repetido recargaría visualmente. */
.service_section .service_list .service_para .service-cta {
  margin-top: var(--space-3);
  margin-top: auto;
  margin-bottom: 0;
  align-self: flex-start;
}

.service_section .service_list .service_para p:not(.service-volanta) {
  /* aire bajo la descripción para que el botón no quede pegado
     si la descripción es muy larga y llena casi todo el card */
  margin-bottom: var(--space-3);
}

/* Override: la regla vieja .service_list a (style.css:1470) define
   color:#333, font-size:14px, letter-spacing:1px, text-transform:capitalize.
   Por especificidad (0,1,1) le gana a .btn-outline-brand (0,1,0).
   Pisamos con contexto explícito (0,3,0). */
.service_section .service_list .service-cta {
  color: var(--color-brand);
  font-size: 13px;
  letter-spacing: -0.01em;
  text-transform: none;
}

.service_section .service_list .service-cta:hover,
.service_section .service_list .service-cta:focus {
  color: var(--color-white);
}

/* Doble CTA en las cards de abono y final de obra: "Más info"
   (outline) + WhatsApp, lado a lado al pie de la card. La fila
   asume el margin-top:auto que pinaba al fondo el botón único. */
.service_section .service_list .service-cta-row {
  margin-top: auto;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}

/* Dentro de la fila el botón de WhatsApp ya no pina solo. Le damos
   borde 2px del mismo bordó (en vez del 1px de .btn-primary) para
   que iguale la altura del botón "Más info" (que tiene borde 2px). */
.service_section .service_list .service-cta-row .service-cta {
  margin-top: 0;
  align-self: auto;
  border-width: 2px;
}

/* Botón secundario "Más info": fondo blanco, borde negro 2px,
   texto negro, sin ícono. Mismo alto y tipografía que el de
   WhatsApp (.btn-primary: min-height 52px, padding 0 26px, pill,
   Poppins). Hover invertido (negro/blanco). */
.service_section .service_list .service-cta-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Mismo alto y padding que el botón de WhatsApp de las cards
     (.btn-primary.service-cta: min-height 44px, padding 0 20px,
     reskin.css:875), con borde 2px en ambos => igual altura. */
  min-height: 44px;
  padding: 0 20px;
  margin-right: var(--space-2);
  border: 2px solid #000;
  border-radius: var(--radius-pill);
  background: #fff;
  color: #000;
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.01em;
  text-transform: none;
  text-decoration: none;
  transition: background var(--duration-fast) ease,
              color var(--duration-fast) ease,
              border-color var(--duration-fast) ease;
}

.service_section .service_list .service-cta-secondary:hover,
.service_section .service_list .service-cta-secondary:focus {
  background: #000;
  color: #fff;
  border-color: #000;
}

/* Entre 990px y 1200px: los dos botones apilados y al 100% del
   ancho de la card (contenidos por su padding). "Más info" arriba
   con margin-bottom para no quedar pegado al de WhatsApp. Es la
   franja donde las 3 cards por fila quedan angostas y los botones
   lado a lado no entran; abajo de 990px las cards ya apilan. */
@media (min-width: 990px) and (max-width: 1200px) {
  .service_section .service_list .service-cta-row {
    flex-direction: column;
    align-items: stretch;
  }
  .service_section .service_list .service-cta-secondary {
    margin-right: 0;
    margin-bottom: var(--space-2);
  }
}

/*
   Franja tablet/mobile (≤1014px): aquí responsive.css ya
   ocultaba .menu_right y apilaba header_logo + #navigation con
   float:none. Replicamos esa lógica para .header_cta: que pase a
   ocupar su propia fila debajo del nav, centrado y visible.

   Esto cubre toda la franja crítica entre 768-991px que vos
   marcaste, y se extiende hasta 1014px porque el reset viejo
   actúa hasta ese ancho.
*/
@media only screen and (max-width: 1014px) {
  .header_cta {
    float: none;
    clear: both;
    width: 100%;
    padding: 0 15px 14px;
    justify-content: center;
  }
}

/*
   Mobile <768px: Bootstrap apila los col-sm a width:100% por
   default. La regla de arriba ya cubre el comportamiento; agregamos
   un pequeño ajuste de aire arriba para separar del nav apilado.
*/
@media (max-width: 767px) {
  .header_cta {
    padding-top: 6px;
  }
}


/* -----------------------------------------------------------
   11. Hamburguesa (#menu-button) — 3 líneas parejas.
   El estilo viejo de style.css usaba ::before como UNA barra
   arriba y ::after como una caja con border-top+border-bottom
   (dos barras pegadas) → visualmente "1 fina arriba + 1 gruesa
   abajo". Lo reemplazamos por 3 barras iguales del mismo grosor
   y separación: ::before pinta la barra superior y, con box-shadow,
   las otras 2 barras debajo. ::after queda oculto en cerrado.
   En .menu-opened reconstruimos la X (2 barras rotadas).
   ----------------------------------------------------------- */
#navigation.small-screen #menu-button::before {
  position: absolute;
  top: 16px;
  right: 2px;
  display: block;
  width: 26px;
  height: 2px;
  border: 0;
  background: var(--color-ink);
  box-shadow:
    0 7px 0 var(--color-ink),
    0 14px 0 var(--color-ink);
  content: '';
  transform: none;
}

#navigation.small-screen #menu-button::after {
  display: none;
}

/* Estado abierto: X = ::before + ::after, ambos rotados.
   Anulamos el box-shadow del ::before y revivimos ::after. */
#navigation.small-screen #menu-button.menu-opened::before {
  top: 23px;
  width: 18px;
  height: 2px;
  border: 0;
  background: var(--color-ink);
  box-shadow: none;
  transform: rotate(-45deg);
}

#navigation.small-screen #menu-button.menu-opened::after {
  position: absolute;
  top: 23px;
  right: 2px;
  display: block;
  width: 18px;
  height: 2px;
  border: 0;
  background: var(--color-ink);
  content: '';
  transform: rotate(45deg);
}


/* -----------------------------------------------------------
   12. Ocultar CTA "Pedí presupuesto" del header en mobile.
   En <768px el botón duplica esfuerzo con el flotante de WhatsApp
   y los CTA de cada tarjeta de servicio. Lo escondemos solo en xs.
   ----------------------------------------------------------- */
@media (max-width: 767px) {
  .header_cta {
    display: none !important;
  }
}


/* -----------------------------------------------------------
   13. Aire lateral en mobile (0.5em).
   En xs el contenido tocaba los bordes de la pantalla. Sumamos
   0.5em al padding lateral del .container manteniendo el gutter
   de 15px de Bootstrap 3. Los .row con margin:-15px siguen
   compensando contra el padding original; el 0.5em extra queda
   como respiro a ambos lados sin desbordar el viewport.
   overflow-x:hidden en html/body como cinturón de seguridad
   ante el margen negativo de .row.
   ----------------------------------------------------------- */
@media (max-width: 767px) {
  .container {
    padding-left: calc(15px + 0.5em);
    padding-right: calc(15px + 0.5em);
  }

  html,
  body {
    overflow-x: hidden;
  }
}


/* -----------------------------------------------------------
   14. Bloque 1 — Pesos del menú (default fino, activo/hover negrita)
   Por default los items van en Poppins 400. Activo y hover suben a 700
   con color bordó y la línea inferior ya definida en la Capa 4.
   ----------------------------------------------------------- */
#navigation > ul > li > a {
  font-weight: 400;
}

#navigation > ul > li > a.active,
#navigation > ul > li:hover > a,
#navigation > ul > li > a:focus {
  font-weight: 700;
  color: var(--color-brand);
}

/* Mobile (.small-screen) replica el mismo criterio */
#navigation.small-screen > ul > li > a {
  font-weight: 400;
}

#navigation.small-screen > ul > li > a.active,
#navigation.small-screen > ul > li > a:hover,
#navigation.small-screen > ul > li > a:focus {
  font-weight: 700;
  color: var(--color-brand);
}


/* -----------------------------------------------------------
   15. Bloque 2 — CTA de tarjeta de servicio en bordó sólido
   Las 6 tarjetas usan ahora .btn-primary.service-cta. La regla de la
   Capa 10 (.service-cta del outline) pisaba color a bordó por
   especificidad; acá lo devolvemos a blanco para el sólido.
   ----------------------------------------------------------- */
.service_section .service_list .btn-primary.service-cta {
  min-height: 44px;
  padding: 0 20px;
  font-size: 13px;
  color: var(--color-white);
  letter-spacing: -0.01em;
  text-transform: none;
}

.service_section .service_list .btn-primary.service-cta:hover,
.service_section .service_list .btn-primary.service-cta:focus {
  color: var(--color-white);
}

.service_section .service_list .btn-primary.service-cta .fa-whatsapp {
  font-size: 16px;
  margin-right: 10px;
  line-height: 1;
}


/* -----------------------------------------------------------
   16. Bloque 3 — Loader con logo Almami
   El #preloader es un <div> vacío con background gif por defecto.
   Lo blanqueamos y dibujamos un logo centrado con pulse sobrio.
   El JS de main.js sigue haciendo fadeOut+remove al load — no se toca.
   ----------------------------------------------------------- */
#preloader {
  background: var(--color-white) !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
}

#preloader::before {
  content: "";
  display: block;
  width: 160px;
  height: 160px;
  background: url("../images/logo.png") no-repeat center center;
  background-size: contain;
  animation: almami-pulse 1.6s ease-in-out infinite;
}

@keyframes almami-pulse {
  0%, 100% { opacity: 0.55; transform: scale(0.96); }
  50%      { opacity: 1;    transform: scale(1.04); }
}

/* Spinner del slider preload: misma identidad. */
.slides__preload_wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-white);
}

.slides__preload_wrapper .spinner {
  display: none;
}

.slides__preload_wrapper::before {
  content: "";
  display: block;
  width: 140px;
  height: 140px;
  background: url("../images/logo.png") no-repeat center center;
  background-size: contain;
  animation: almami-pulse 1.6s ease-in-out infinite;
}


/* -----------------------------------------------------------
   17. Bloque 4 — "Nuestros equipos" (maquinaria): bordes
   redondeados, sombra, hover sobrio (overlay gradient + label).
   Anula el comportamiento viejo del .project-hover (caja saltarina
   con transform:scale 0→1 y ::before bordó 70% opacidad).
   ----------------------------------------------------------- */
.work-section .single-project-item,
.work_pg .single-project-item {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-card);
  transition: transform var(--duration-normal) var(--ease-out),
              box-shadow var(--duration-normal) var(--ease-out);
}

.work-section .single-project-item:hover {
  transform: translateY(-4px);
  box-shadow: 0 26px 80px rgba(39, 39, 39, 0.18);
}

.work-section .single-project-item .project-hover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  opacity: 0;
  visibility: visible;
  transform: none;
  transition: opacity var(--duration-normal) var(--ease-out);
  display: flex;
  align-items: flex-end;
  padding: 18px 22px;
  cursor: default;
}

.work-section .single-project-item .project-hover::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
              rgba(0, 0, 0, 0) 45%,
              rgba(0, 0, 0, 0.72) 100%);
  opacity: 1;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.work-section .single-project-item:hover .project-hover {
  opacity: 1;
  visibility: visible;
  transform: none;
}

/* Label dentro del overlay: nombre + categoría, alineado abajo-izquierda */
.work-section .single-project-item .project-hover h6 {
  position: relative;
  z-index: 1;
  top: auto;
  left: auto;
  margin: 0;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0;
  color: var(--color-white);
  line-height: 1.25;
}

.work-section .single-project-item .project-hover h6 span {
  position: relative;
  top: auto;
  display: block;
  margin-top: 6px;
  padding-top: 0;
  font-family: var(--font-heading);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-white);
  opacity: 0.82;
}

/* Iconito decorativo de la esquina inferior derecha: lo escondemos
   para no recargar el overlay. */
.work-section .single-project-item .project-hover .project-link i,
.work-section .single-project-item .project-link i {
  display: none;
}


/* -----------------------------------------------------------
   18. Bloque 5 — Caja del formulario con radio parejo
   .estimate_form_inner (home y servicios) tenía radius-lg solo en
   una esquina por herencia; igualamos las 4 a --radius-lg.
   .contact-form (contacto.html) no tenía radius: lo agregamos.
   ----------------------------------------------------------- */
.estimat_sectn .estimate_form_inner {
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.contact-form {
  border-radius: var(--radius-lg);
  overflow: hidden;
}


/* -----------------------------------------------------------
   19. Bloque 6 — Iframe del mapa redondeado
   El iframe del mapa vive dentro de un .col-sm-12 que envuelve al
   embed de Google Maps. Apuntamos por src (no a "todo iframe") para
   no pisar al iframe del reCAPTCHA, que también vive en .contact_page
   y se vería raro con esquinas redondeadas.
   ----------------------------------------------------------- */
.contact_page iframe[src*="google.com/maps"],
.contact-section iframe[src*="google.com/maps"] {
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: block;
  box-shadow: var(--shadow-soft);
  margin-top: var(--space-3);
}


/* -----------------------------------------------------------
   20. Bloque 7 — Footer: layout y estética
   a) Sacar justificado de "Nosotros".
   b) Aire entre las 3 columnas.
   c) Igualar line-height/espacio de "Información" a "Links útiles".
   El renombrado "Nuestros servicios" → "Servicios" va en cada HTML.
   ----------------------------------------------------------- */

/* a) Texto de "Nosotros" alineado a la izquierda (no justificado) */
.footer-section .widget p,
.footer-section-inverted .widget p,
.footer_para,
.footer_para_inverted {
  text-align: left;
  line-height: 1.7;
}

/* b) Aire entre columnas: padding lateral por widget.
   En mobile (col-xs-12) el padding lateral lo aporta Bootstrap; no
   alteramos eso. Solo separamos en >=768px. */
@media (min-width: 768px) {
  footer .widget {
    padding-left: 18px;
    padding-right: 18px;
  }
  footer .col-sm-5:first-of-type .widget {
    padding-left: 0;
  }
  footer .col-sm-5:last-of-type .widget,
  footer .col-sm-7 .widget {
    padding-right: 0;
  }
}

/* c) Línea y espacio de la columna "Información" (.recent-post no
   .helpful_post) igualados a "Links útiles" (.helpful_post). */
footer .recent-post li,
footer .recent-post-inverted li,
footer .recent-post.helpful_post li,
footer .recent-post-inverted.helpful_post li {
  margin: 12px 0;
  padding-bottom: 6px;
  line-height: 1.55;
}

footer .recent-post li a,
footer .recent-post-inverted li a,
footer .recent-post.helpful_post li a,
footer .recent-post-inverted.helpful_post li a,
footer .recent-post li h6,
footer .recent-post-inverted li h6 {
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.55;
  margin: 0;
}

/* Los íconos de la columna Información alineados a la línea de texto */
footer .recent-post li i {
  width: 22px;
  text-align: left;
  font-size: 15px;
  vertical-align: baseline;
}


/* -----------------------------------------------------------
   21. Bloque 8 — Footer logo + redes circulares
   Estructura nueva en el HTML: un .footer-top con el logo y las
   tres redes en .footer-social-circles arriba de las 3 columnas.
   ----------------------------------------------------------- */
.footer-section .footer-top,
.footer-section-inverted .footer-top {
  text-align: center;
  padding: 8px 0 28px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  margin-bottom: 28px;
}

.footer-section-inverted .footer-top {
  border-bottom-color: rgba(0, 0, 0, 0.08);
}

.footer-section .footer-top .footer-logo,
.footer-section-inverted .footer-top .footer-logo {
  display: inline-block;
  margin-bottom: 18px;
}

.footer-section .footer-top .footer-logo img,
.footer-section-inverted .footer-top .footer-logo img {
  height: 90px;
  width: auto;
  display: block;
}

.footer-social-circles {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 14px;
  justify-content: center;
}

.footer-social-circles li {
  margin: 0;
  padding: 0;
}

.footer-social-circles a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.4);
  background: transparent;
  color: var(--color-white);
  transition: background var(--duration-fast) ease,
              color var(--duration-fast) ease,
              border-color var(--duration-fast) ease,
              transform var(--duration-fast) ease;
  text-decoration: none;
}

.footer-social-circles a i {
  font-size: 18px;
  line-height: 1;
}

.footer-social-circles a:hover,
.footer-social-circles a:focus {
  background: var(--color-brand);
  border-color: var(--color-brand);
  color: var(--color-white);
  transform: translateY(-2px);
  text-decoration: none;
}

/* Eliminar la fila de íconos sueltos que ahora vive en el .footer-top:
   en el HTML quitamos del <ul> el <li> con los iconos; aquí solo
   nos aseguramos de que la lista de redes vieja no aparezca
   accidentalmente vacía con border-bottom. */
footer .recent-post li:has(> a[href*="instagram"] + a[href*="facebook"]) {
  border-bottom: none;
}


/* -----------------------------------------------------------
   22. Bloque 10 — Footer unificado (fondo oscuro en todas)
   En index.html cambiamos las clases a las "dark" del resto. No hace
   falta CSS nuevo. Por las dudas, dejamos un override de seguridad
   por si quedó alguna marca del estilo blanco (.copyright_text_inverted
   queda con color negro y se vería ilegible si volviera a usarse en
   fondo oscuro).
   ----------------------------------------------------------- */
.footer-section .copyright_text_inverted,
.footer-section .footer_para_inverted {
  color: var(--color-white);
}


/* -----------------------------------------------------------
   23. Bloque 12 — Slider hero a 3 slides
   Tres backgrounds nuevos (p1, p2, p3). Conservamos el plugin
   owlCarousel; solo agregamos clases de fondo y refinamos la
   tipografía/CTA para volanta + título + botón.
   ----------------------------------------------------------- */
.slide_bg_1 { background: #f0f0f0 url("../images/p1.jpg") no-repeat center center; background-size: cover; }
.slide_bg_2 { background: #f0f0f0 url("../images/p2.jpg") no-repeat center center; background-size: cover; }
.slide_bg_3 { background: #f0f0f0 url("../images/p3.jpg") no-repeat center center; background-size: cover; }

.slide_bg_2,
.slide_bg_3 { text-align: center; }

/* Volanta sobre la imagen */
.slider_home .slider-volanta {
  display: inline-block;
  margin: 0 0 var(--space-3);
  padding: 6px 14px;
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-white);
  background: rgba(142, 19, 28, 0.92);
  border-radius: var(--radius-pill);
}

/* Título del slide: levantamos la legibilidad (panel oscuro de fondo
   ya existente) y bajamos el tracking exagerado del estilo viejo. */
.slider_home h2 {
  font-family: var(--font-heading);
  font-size: 42px;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.18;
  text-transform: none;
  color: var(--color-white);
  background: rgba(0, 0, 0, 0.42);
  padding: 14px 22px;
  display: inline-block;
  border-radius: var(--radius-md);
  -webkit-text-stroke: 0;
  margin-top: 0;
}

@media (max-width: 767px) {
  .slider_home h2 { font-size: 26px; padding: 10px 16px; }
  .slider_home .slider-volanta { font-size: 11px; padding: 5px 12px; }
}

/* CTA del slide: el .btn-primary ya rige. Solo damos margen extra. */
.slider_home .slider_btn .btn-primary {
  margin-top: var(--space-3);
}

.slider_home .slider_btn .btn-primary .fa-whatsapp {
  font-size: 18px;
  margin-right: 10px;
  line-height: 1;
}

/* style.css:1153 le pone fondo #333 + radius 50% + padding 11px a
   TODOS los <i>::before dentro de .slider_home (estaba pensado para
   las flechas owl-nav). Anulamos eso para el ícono del CTA del slide
   — debe verse como un glifo blanco a secas sobre el botón bordó.
   Solo tocamos el ícono dentro del .btn-primary del slide; no afecta
   .owl-nav i::before. */
.slider_home .slider_btn .btn-primary i,
.slider_home .slider_btn .btn-primary i::before {
  background: transparent;
  border-radius: 0;
  padding: 0;
  line-height: 1;
  color: var(--color-white);
  font-size: 18px;
}

/* Compensación óptica del CTA del slide: con "Pedí tu presupuesto"
   las descendentes (p) hacen ver el texto corrido hacia arriba.
   Aplicamos padding asimétrico al botón y anulamos min-height para
   que el padding mande en la altura (si dejamos min-height:52 el
   flex re-centra todo y el padding asimétrico no se nota). */
.slider_home .slider_btn .btn-primary {
  min-height: auto;
  padding: 15px 25px 15px 25px;
}


/* -----------------------------------------------------------
   24. Tipografía de formularios
   normalize.css:81-85 fija html/button/input/select/textarea a
   sans-serif genérico. Esos elementos quedan con la fuente del
   sistema, no la nuestra. Acá los pasamos a Poppins para que los
   inputs y textareas vayan a tono con el resto del sistema visual.
   ----------------------------------------------------------- */
html,
button,
input,
select,
textarea {
  font-family: var(--font-heading);
}


/* -----------------------------------------------------------
   25. Prueba social — Bloque A: Casos de clientes
   Tres tarjetas (col-md-4 / col-sm-6 / col-xs-12) que describen
   relaciones reales con clientes. NO son testimonios (no llevan
   comillas ni avatar): son notas redactadas por Almami. La
   estructura es eyebrow (rubro, bordó) + nombre (Poppins 700) +
   descripción (Raleway). Estética alineada a las tarjetas de
   servicio (radius-lg + shadow-card + hover sutil).
   La fila usa flex para igualar alturas entre tarjetas.
   ----------------------------------------------------------- */
.cases-section {
  padding-top: var(--space-10);
  padding-bottom: var(--space-10);
  background: var(--color-white);
}

.cases-section .case-row {
  display: flex;
  flex-wrap: wrap;
  margin-top: var(--space-4);
}

.case-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  margin-bottom: var(--space-3);
  padding: var(--space-4) var(--space-3);
  background: var(--color-white);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  transition: transform var(--duration-normal) var(--ease-out),
              box-shadow var(--duration-normal) var(--ease-out),
              border-color var(--duration-normal) var(--ease-out);
}

.case-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 26px 80px rgba(39, 39, 39, 0.12);
  border-color: rgba(142, 19, 28, 0.22);
}

.case-card .case-rubro {
  margin: 0 0 var(--space-1);
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.12em;
  color: var(--color-brand);
  text-transform: uppercase;
}

.case-card .case-name {
  margin: 0 0 var(--space-2);
  font-family: var(--font-heading);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--color-ink);
}

.case-card .case-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.6;
  color: var(--color-ink-soft);
}


/* -----------------------------------------------------------
   26. Prueba social — Bloque B: Reseñas de Google
   Header con score 4.6 + 5 estrellas + logotipo "Google" en sus
   colores + CTA al perfil de Google. Debajo, grilla 3×2 (3 en
   md+, 2 en sm, 1 en xs) con avatar circular + nombre + 5★
   + texto de la reseña. Una de las tarjetas (Guille Bellora)
   incluye foto del trabajo (galpon.png) integrada al pie de la
   tarjeta — limitada en alto para no romper el ritmo de la fila.
   ----------------------------------------------------------- */
.reviews-section {
  padding-top: var(--space-10);
  padding-bottom: var(--space-12);
  background: var(--color-surface);
}

/* Resumen --------------------------------------------------- */
.reviews-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-3) var(--space-5);
  margin: var(--space-4) auto var(--space-6);
  padding: var(--space-3) var(--space-4);
  background: var(--color-white);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  max-width: 760px;
}

.reviews-summary-score {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.reviews-rating {
  font-family: var(--font-heading);
  font-size: 44px;
  font-weight: 700;
  line-height: 1;
  color: var(--color-ink);
}

.reviews-stars {
  display: inline-flex;
  gap: 4px;
  color: #FBBC04;
  font-size: 22px;
  line-height: 1;
}

.reviews-summary-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
}

.reviews-google-logo {
  display: inline-flex;
  font-family: var(--font-heading);
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1;
}

.reviews-cta {
  font-size: 13px;
}

/* Grilla de reseñas ---------------------------------------- */
.reviews-row {
  display: flex;
  flex-wrap: wrap;
}

/* Full-bleed: el .reviews-carousel vive dentro de .container (que
   limita a max ~1170px), pero lo queremos a ancho completo de la
   viewport para que las 5/4/3 cards y su peek lateral respiren bien.
   Truco estándar: width 100vw + left/margin para "saltar" el padre.
   El header (h3 + reviews-summary) sigue dentro del container con
   ancho normal — son siblings del carrusel, no se ven afectados.
   .reviews-section ya tiene overflow:hidden, así que el escape no
   genera scroll horizontal. */
.reviews-carousel {
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
}

.review-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  margin-bottom: var(--space-3);
  padding: var(--space-3) var(--space-3) var(--space-3);
  background: var(--color-white);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  transition: transform var(--duration-normal) var(--ease-out),
              box-shadow var(--duration-normal) var(--ease-out);
}

.review-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 22px 60px rgba(39, 39, 39, 0.12);
}

.review-head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: var(--space-2);
}

.review-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  background: var(--color-surface-alt);
  flex-shrink: 0;
}

.review-meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.review-name {
  margin: 0;
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--color-ink);
}

.review-card .review-stars {
  color: #FBBC04;
  font-size: 14px;
  line-height: 1;
  display: inline-flex;
  gap: 2px;
  margin-top: 2px;
}

/* Subtítulo de credibilidad: "Local Guide · N opiniones" / "N opiniones".
   Estilo discreto al pie del nombre, igual que el subtítulo de un perfil
   de Google Maps. Es opcional por reseña — Hernán no tiene link. */
.review-credibility {
  margin: 0;
  font-family: var(--font-body);
  font-size: 12px;
  line-height: 1.2;
  color: var(--color-muted);
}

/* Links dentro de la meta (nombre y credibilidad): heredan el color
   del párrafo padre por default; en hover se acentúan en bordó. */
.review-name a,
.review-credibility a {
  color: inherit;
  text-decoration: none;
  transition: color var(--duration-fast) ease;
}

.review-name a:hover,
.review-name a:focus,
.review-credibility a:hover,
.review-credibility a:focus {
  color: var(--color-brand);
  text-decoration: none;
}

.review-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--color-ink-soft);
}

/* Foto del galpón en la reseña #5 -------------------------- */
.review-photo {
  margin: var(--space-3) 0 0;
  padding: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-surface-alt);
}

.review-photo img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 260px;
  object-fit: cover;
  object-position: center;
}

/* Mobile: el resumen apila score y CTA, baja un poco el peso */
@media (max-width: 767px) {
  .reviews-summary {
    flex-direction: column;
    text-align: center;
    padding: var(--space-3);
    gap: var(--space-3);
  }
  .reviews-rating { font-size: 36px; }
  .reviews-stars { font-size: 20px; }
  .reviews-google-logo { font-size: 24px; }

  .case-card .case-name { font-size: 20px; }
}


/* -----------------------------------------------------------
   27. "¿Por qué elegirnos?" — 5 tarjetas de diferenciales
   Reemplaza el acordeón viejo (panel-collapse de Bootstrap con
   ids #faqcontent1/2/3). El acordeón quedaba con los textos
   plegados por defecto — los diferenciales fuertes no se leían.
   Acá los mostramos siempre visibles, en grilla.
   El CSS del acordeón (Bootstrap .panel*) sigue vigente porque
   nosotros.html aún tiene OTRO accordion (#collapseOne..Four).
   ----------------------------------------------------------- */
.why-section {
  padding-top: var(--space-5);
  padding-bottom: var(--space-8);
  background: var(--color-surface);
}

.why-section .base_header_2 {
  margin-bottom: var(--space-5);
}

/* Grilla responsive con grid:
   - xs (<768): 1 columna (apila)
   - sm (768-991): 2 columnas
   - md+ (>=992): 5 columnas (todas en una fila)
   Bootstrap 3 no tiene col-fifths; con CSS grid lo resolvemos
   sin meter clases custom de 20%. */
.why-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

@media (min-width: 768px) {
  .why-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 992px) {
  .why-grid { grid-template-columns: repeat(5, 1fr); gap: var(--space-2); }
}

.why-card {
  display: flex;
  flex-direction: column;
  padding: var(--space-3);
  background: var(--color-white);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  transition: transform var(--duration-normal) var(--ease-out),
              box-shadow var(--duration-normal) var(--ease-out),
              border-color var(--duration-normal) var(--ease-out);
}

.why-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 26px 80px rgba(39, 39, 39, 0.12);
  border-color: rgba(142, 19, 28, 0.22);
}

.why-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--color-brand-soft);
  color: var(--color-brand);
  font-size: 28px;
  line-height: 1;
  margin-bottom: var(--space-2);
}

/* Los íconos (FontAwesome) heredan el font-size del contenedor;
   en FA 4 la regla .fa ya trae font-size:inherit. */
.why-icon .fa {
  line-height: 1;
}

.why-title {
  margin: 0 0 var(--space-1);
  font-family: var(--font-heading);
  font-size: 16px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--color-ink);
}

.why-text {
  margin: 0;
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.55;
  color: var(--color-ink-soft);
}

/* En md+ las 5 tarjetas son angostas: bajamos el título 1pt para
   evitar quiebres feos en 2 líneas. */
@media (min-width: 992px) and (max-width: 1199px) {
  .why-title { font-size: 15px; }
  .why-text  { font-size: 13.5px; }
}


/* Form de la home/servicios/nosotros: ahora vive en su propia row,
   sin el "¿Por qué elegirnos?" al lado. Le damos un ancho contenido
   y lo centramos para que no quede gigante full-width. */
.estimat_sectn .form-centered {
  float: none;
  margin-left: auto;
  margin-right: auto;
}


/* -----------------------------------------------------------
   28. Sección de contacto (home) — Layout dos columnas
   En index.html el .estimat_sectn ahora vive al final, antes del
   footer, y se rediseñó como dos columnas:
   - Izquierda (.contact-panel-col, col-md-5): panel con título,
     bajada, datos de contacto y CTA de WhatsApp.
   - Derecha (.contact-form-col, col-md-7): el form existente con
     la card .estimate_form_inner (sin tocar la lógica).
   En sm/xs apilan: panel arriba, form abajo.
   ----------------------------------------------------------- */

/* Igualar alturas del panel y la card del form en desktop. */
@media (min-width: 992px) {
  .estimat_sectn .contact-row {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
  }
  .estimat_sectn .contact-panel-col,
  .estimat_sectn .contact-form-col {
    display: flex;
    flex-direction: column;
  }
  .estimat_sectn .contact-panel,
  .estimat_sectn .contact-form-col > form,
  .estimat_sectn .contact-form-col > form > .estimate_form_inner {
    height: 100%;
  }
}

/* Panel izquierdo ------------------------------------------ */
.contact-panel {
  display: flex;
  flex-direction: column;
  padding: var(--space-4) var(--space-3);
}

/* Título y bajada del panel: usamos .base_header_2 (que ya da el
   tratamiento de heading de sección + línea bordó vía ::after) y
   solo lo alineamos a la izquierda. */
.contact-panel .contact-panel-header {
  text-align: left;
  margin-bottom: var(--space-4);
}

.contact-panel .contact-panel-header h3 {
  text-align: left;
  margin-top: 0;
}

/* La línea bordó debajo del h3 (definida en Capa 8) está centrada
   por defecto. Acá la alineamos a la izquierda. */
.contact-panel .contact-panel-header h3::after {
  left: 0;
  margin-left: 0;
}

.contact-panel .contact-panel-header p {
  margin: var(--space-2) 0 0;
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.6;
  color: var(--color-ink-soft);
  text-align: left;
}

/* Lista de datos de contacto */
.contact-panel-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-4);
}

.contact-panel-list li {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-line);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.45;
  color: var(--color-ink-soft);
}

.contact-panel-list li:last-child {
  border-bottom: none;
}

.contact-panel-list li > i {
  width: 22px;
  margin-top: 3px;
  font-size: 16px;
  color: var(--color-brand);
  text-align: center;
  flex-shrink: 0;
}

.contact-panel-list li a {
  color: var(--color-ink);
  text-decoration: none;
  transition: color var(--duration-fast) ease;
}

.contact-panel-list li a:hover,
.contact-panel-list li a:focus {
  color: var(--color-brand);
  text-decoration: none;
}

/* CTA de WhatsApp del panel: hereda .btn-primary (Capa 2).
   align-self:flex-start lo deja al ancho de su contenido y empuja
   al pie cuando el panel iguala altura con el form en md+. */
.contact-panel-cta {
  align-self: flex-start;
  margin-top: auto;
}

.contact-panel-cta .fa-whatsapp {
  font-size: 18px;
  margin-right: 10px;
  line-height: 1;
}

/* Form a la derecha ---------------------------------------- */
/* En este contexto el .estimate_form_inner ya respeta el ancho de
   su columna (col-md-7); no necesita override de padding ni radio
   — eso ya viene de la Capa 18. */

/* En mobile/tablet (<992px) las dos columnas apilan. Damos aire
   entre el panel (arriba) y la card del form (abajo). */
@media (max-width: 991px) {
  .estimat_sectn .contact-panel-col {
    margin-bottom: var(--space-4);
  }
  .contact-panel {
    padding: var(--space-3) var(--space-1);
  }
}


/* -----------------------------------------------------------
   29. Arreglos puntuales
   ----------------------------------------------------------- */

/* 29.1 — Reseñas de Google: cards de altura natural.
   Antes: .reviews-row era display:flex y .review-card tenía
   height:100% — eso estiraba TODAS las cards a la altura del
   más alto (Hernán, que es larguísimo). En las cortas (Pablo,
   Guille) quedaba un hueco visual enorme. Las reseñas estilo
   Google se ven naturales con altura desigual: cada card al
   tamaño de su contenido. */
.reviews-row {
  align-items: flex-start;
}

.review-card {
  height: auto;
}

/* 29.2 — Logo de Google ahora es <img> (images/google.png).
   Antes era un span con letras de colores hechas a mano. Acá
   solo dictamos tamaño y alineación. */
.reviews-summary .reviews-google-logo {
  display: block;
  height: 28px;
  width: auto;
  object-fit: contain;
}

@media (max-width: 767px) {
  .reviews-summary .reviews-google-logo {
    height: 24px;
  }
}

/* 29.3 — Márgenes entre cards apiladas en mobile.
   .review-card y .case-card ya tienen margin-bottom:var(--space-3)
   = 24px. Visualmente se sentía pegado en mobile; subimos a
   var(--space-4) = 32px en xs. Sin scroll horizontal porque el
   ancho lo da el container, el margin solo afecta el flujo vertical. */
@media (max-width: 767px) {
  .reviews-section .review-card,
  .cases-section .case-card {
    margin-bottom: var(--space-4);
    height: auto;          /* anula height:100% que tragaba el margin */
  }
  .reviews-section .reviews-row > [class*="col-"]:last-child .review-card,
  .cases-section .case-row > [class*="col-"]:last-child .case-card {
    margin-bottom: 0;
  }

  /* Refuerzo: aire entre cols apilados en la grilla de casos.
     Aplica al col-xs-12, no a la card — más confiable cuando el
     flex padre tiene height: stretch implícito. */
  .cases-section .case-row > [class*="col-"] {
    margin-bottom: var(--space-4);
  }
  .cases-section .case-row > [class*="col-"]:last-child {
    margin-bottom: 0;
  }
}

/* 29.4a — "Nuestros equipos": fotos sin recortar.
   Antes la regla vieja .single-project-item (style.css:1905) usaba
   background-size:cover sobre un contenedor 280px de alto, lo que
   recortaba la maquinaria por arriba/abajo cuando la imagen no
   estaba centrada perfecta. Pasamos a contain con fondo neutro:
   la maquinaria entera se ve sin recortes, con bandas claras a los
   lados si la proporción no encaja. */
.work-section .single-project-item {
  background-size: contain !important;
  background-repeat: no-repeat;
  background-position: center center;
  background-color: var(--color-white);
}

/* 29.4b — Nombre del equipo SIEMPRE visible.
   Antes el .project-hover iba con opacity:0 y solo aparecía en :hover.
   Lo dejamos siempre visible (opacity:1) y mantenemos el hover sumando
   un acento sutil (el gradient se intensifica un poco). */
.work-section .single-project-item .project-hover {
  opacity: 1;
}

.work-section .single-project-item .project-hover::before {
  background: linear-gradient(180deg,
              rgba(0, 0, 0, 0) 35%,
              rgba(0, 0, 0, 0.78) 100%);
}

.work-section .single-project-item:hover .project-hover::before {
  background: linear-gradient(180deg,
              rgba(0, 0, 0, 0) 25%,
              rgba(0, 0, 0, 0.88) 100%);
}


/* -----------------------------------------------------------
   30. Ajustes puntuales (sesión nueva)
   ----------------------------------------------------------- */

/* 30.1 — Form de la home a ancho completo (centrado, con max-width
   para legibilidad). Antes la sección tenía dos columnas (panel de
   datos + form) — el panel se eliminó del HTML porque duplicaba lo
   que ya muestra el footer.
   Las clases .contact-panel, .contact-panel-col, .contact-panel-list,
   .contact-panel-header, .contact-panel-cta y .contact-row de la
   Capa 28 quedan INERTES (no las borro: política del proyecto). */
.estimat_sectn .contact-form-col {
  float: none;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}

/* El encabezado de sección ".base_header_2" arriba del form: aire
   adicional para separarlo de la card del form. */
.estimat_sectn .base_header_2 {
  margin-bottom: var(--space-4);
}


/* 30.2 — Separar visualmente "Nuestros Clientes" (logos) de
   "Casos de clientes" (cases).
   Estrategia: la sección de logos queda en blanco; .cases-section
   pasa a fondo gris (--color-surface), igual que .reviews-section
   que viene a continuación. Eso agrupa las dos secciones de prueba
   social en un mismo "bloque gris" y las separa del bloque blanco
   de logos. Además sumamos padding-bottom a .client-section para
   más aire antes del cambio de fondo.
   El título cambió de "Algunos de nuestros clientes" → "Casos de
   clientes" en el HTML para diferenciar inequívocamente del título
   de la sección anterior. */
.client-section {
  padding-bottom: var(--space-8);
}

.cases-section {
  background: var(--color-surface);
}


/* 30.3 — Mapa de contacto: sombra más fuerte y más aire al pie.
   La Capa 19 le puso radius-lg + shadow-soft; lo subimos a
   shadow-card. Y sumamos margin-bottom para separar del footer. */
.contact_page iframe,
.contact-section iframe {
  box-shadow: var(--shadow-card);
  margin-bottom: var(--space-8);
}


/* -----------------------------------------------------------
   31. Bug fix — <header> genérico contagiando .review-head
   style.css:3042 define `header { height: 700px; background-color:
   rgba(198,227,221,0.39); color: #fff; ... }` para los banners de
   las páginas internas (blog-banner-*). Cada <header class="review-head">
   de las 6 tarjetas de Google heredaba esos 700px de alto y el
   fondo verdoso, dejando un bloque vacío gigante encima del texto.
   Anulamos solo lo problemático en .review-head; mantenemos el
   flex/align/gap/margin de la Capa 26. No usamos !important — basta
   con la especificidad de clase (0,1,0) que gana al tag (0,0,1).
   Auditado: ningún otro <header class="..."> de las 7 páginas
   activas es de componente (los .blog-banner-* SÍ son banners reales
   y deben mantener su tratamiento). */
.review-head {
  height: auto;
  background-color: transparent;
  color: inherit;
  text-align: left;
}


/* -----------------------------------------------------------
   32. Reseñas de Google ahora en CARRUSEL Owl (#reviews-carousel)
   Antes era una grilla Bootstrap (.row.reviews-row con col-md-4).
   Pasamos a Owl con 3 visibles desktop / 2 tablet / 1 mobile.
   Init en js/main.js (autoplay 5.5s, autoplayHoverPause, loop, dots).

   Alturas uniformes: por defecto los .owl-item viven en .owl-stage
   con display:block; el item más alto define la altura de fila vía
   minHeight calculado por Owl, pero la card chica adentro NO se
   estira. Para que todas las cards llenen la altura visible,
   convertimos .owl-stage en flex y .owl-item en flex item;
   .review-card crece para llenar la altura del slot.
   ----------------------------------------------------------- */
.reviews-carousel .owl-stage {
  display: flex;
}

.reviews-carousel .owl-item {
  display: flex;
  height: auto;
}

.reviews-carousel .owl-item .review-card {
  width: 100%;
  height: 100%;
  margin-bottom: 0; /* el espacio entre slides lo da margin de Owl */
}

/* Sin flechas: solo dots para navegar. */
.reviews-carousel .owl-nav {
  display: none;
}

.reviews-carousel .owl-dots {
  text-align: center;
  margin-top: var(--space-4);
  position: relative;
  z-index: 5;
  line-height: 0; /* evita baseline asimétrica entre buttons */
}

.reviews-carousel .owl-dots .owl-dot {
  display: inline-block;
  margin: 0 5px;
  background: transparent;
  border: none;
  padding: 0;
  vertical-align: middle;
  line-height: 0;
}

.reviews-carousel .owl-dots .owl-dot span {
  display: block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(142, 19, 28, 0.22);
  transition: background var(--duration-fast) ease;
}

.reviews-carousel .owl-dots .owl-dot:hover span {
  background: rgba(142, 19, 28, 0.45);
}

.reviews-carousel .owl-dots .owl-dot.active span {
  background: var(--color-brand);
}

/* Anula style.css:1512-1518 que ponía .owl-dot.active como píldora
   horizontal (width:25px, height:8px, border-radius:25px) — diseñado
   para los testimonios viejos. Acá el dot activo debe seguir siendo
   un círculo del mismo tamaño que los inactivos; el cambio visual lo
   da el background del <span> interno (regla de arriba). */
.reviews-carousel .owl-dots .owl-dot,
.reviews-carousel .owl-dots .owl-dot.active {
  width: auto;
  height: auto;
  background: transparent;
  border-radius: 0;
}

/* Foto del galpón en la card de Guille: la baja más para que la
   card no se dispare por encima de las otras y rompa la altura
   uniforme. En carrusel todas se estiran al más alto y la card
   con foto crece más; limitamos la foto a 180px para amortiguar. */
.reviews-carousel .review-card--with-photo .review-photo img {
  max-height: 180px;
}

/* Bugfix: la sombra de las .review-card (var(--shadow-card) =
   0 16px 48px) se cortaba contra el overflow:hidden nativo del
   .owl-stage-outer. Truco padding + margin negativo: expandimos el
   área interna del viewport del carrusel para que la sombra respire,
   y el margin negativo cancela el desplazamiento visual — los items
   quedan en la misma posición y con el mismo ancho.
   Aplica en los 4 lados (la sombra escapa por todos lados; los
   clones del loop NO la disimulan tanto como esperábamos).

   Como el margin horizontal extiende el outer fuera del .container,
   en viewports angostos podría generar scroll horizontal. Para
   contenerlo, sumamos overflow:hidden en la sección — clipea solo
   lo que sobresale en horizontal sin afectar la sombra vertical
   (la sección es full viewport-width, así que arriba/abajo no
   recorta nada visible). */
.reviews-section {
  overflow: hidden;
}

.reviews-carousel .owl-stage-outer {
  padding-top: 32px;
  padding-bottom: 64px;
  padding-left: 48px;
  padding-right: 48px;
  margin-top: -32px;
  margin-bottom: -64px;
  margin-left: -48px;
  margin-right: -48px;
}


/* -----------------------------------------------------------
   33. "Somos Almami" — acordeón sobre fondo oscuro (nosotros.html)
   La sección .about-section.celeste tenía fondo celeste (#f5fcff)
   con paneles rosa/bordó (style.css:1278-1302) y body en gris claro.
   La pasamos al mismo oscuro del footer (#252525) y rediseñamos cada
   panel como card del sistema: cerrado en gris oscuro tenue, abierto
   en bordó. Sin tocar la mecánica Bootstrap collapse (IDs intactos).
   El JS de main.js:21-27 agrega/saca .active al .panel-heading al
   abrir/cerrar — usamos esa clase para el estado abierto.
   ----------------------------------------------------------- */

/* Fondo oscuro: pisamos .celeste (style.css:1324) que era #f5fcff. */
.about-section.celeste {
  background-color: #686868;
}

/* Título "Somos Almami" en blanco sobre el fondo oscuro.
   La línea bordó debajo del h3 ya viene de
   .about_bottom_warp .base-header h3::after (style.css:208-220),
   sigue intacta. */
.about-section .base-header h3 {
  color: var(--color-white);
}

/* Centramos "Somos Almami": pisamos el text-align:left
   (style.css:1218) y reubicamos la línea bordó al centro,
   anulando el left:54px de .about-section .base-header h3::after
   (style.css:1226). */
.about-section .base-header {
  text-align: center;
}

.about-section .base-header h3::after {
  left: 50%;
  margin-left: -52px;
}

/* Panel: card limpia, sin border-radius interno propio del .panel
   que peleaba con el border-radius del .panel-heading. */
.about-section .about_det_warp .panel {
  background: transparent;
  margin-bottom: var(--space-2);
  border: none;
  box-shadow: none;
}

/* Heading (cerrado): pill oscura con borde tenue. Anula el rosa
   #e88d94 viejo y el border-radius:20px que se aplica todo el
   tiempo. */
.about-section .about_det_warp .panel .panel-heading {
  background: #252525;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--radius-lg);
  padding: 0;
  transition: background var(--duration-fast) ease,
              border-color var(--duration-fast) ease;
}

.about-section .about_det_warp .panel .panel-heading:hover {
  background: #2f2f2f;
  border-color: rgba(255, 255, 255, 0.22);
}

/* Heading abierto (clase .active la pone main.js:21-27).
   Anula también la regla vieja que ponía background:transparent
   al .active (style.css:1270). */
.about-section .about_det_warp .panel .panel-heading.active {
  background: var(--color-brand);
  border-color: var(--color-brand);
}

/* Texto del título del panel: blanco siempre, sobre el heading
   oscuro o sobre el bordó del abierto. Anula el #101010 viejo y
   el background:#8E131C que se aplicaba SOLO al <a> dentro del
   .active (style.css:1288-1291). Acá el bg lo pone el heading. */
.about-section .about_det_warp .panel .panel-heading h4.panel-title a,
.about-section .about_det_warp .panel .panel-heading.active h4.panel-title a {
  color: var(--color-white);
  background: transparent;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 17px;
  letter-spacing: 0;
  text-transform: none;
  padding: 18px 28px;
  border-radius: var(--radius-lg);
}

/* La línea vertical blanca decorativa (::after) que tenía el
   heading viejo (style.css:1304) no aporta acá. La sacamos. */
.about-section .about_det_warp .panel .panel-heading::after {
  display: none;
}

/* Ícono de flecha: caret-down blanco siempre, rotado -90° cuando
   está cerrado (clase .collapsed que Bootstrap mantiene en el
   .accordion-toggle). Sobreescribimos las dos reglas viejas
   (style.css:1233 y 1240) que usaban caret-right/down distintos. */
.about-section .about_det_warp .panel-heading .accordion-toggle::after,
.about-section .about_det_warp .panel-heading.active .accordion-toggle::after {
  font-family: FontAwesome;
  content: "\f107"; /* caret-down */
  color: var(--color-white);
  float: right;
  margin-left: 12px;
  transition: transform var(--duration-fast) ease;
}

.about-section .about_det_warp .panel-heading .accordion-toggle.collapsed::after {
  transform: rotate(-90deg);
}

/* Body del panel: card oscura más suave que el heading, texto claro.
   Anula el background:#F8F8F8 viejo (style.css:1247) que era ilegible
   sobre el oscuro. */
.about-section .about_det_warp .panel-default > .panel-heading + .panel-collapse > .panel-body {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-top-color: rgba(255, 255, 255, 0.08);
  border-radius: var(--radius-md);
  margin-top: 10px;
  padding: 24px 28px;
  color: rgba(255, 255, 255, 0.86);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.65;
}


/* -----------------------------------------------------------
   34. Bug fix — Tap en el logo abría el menú (mobile/tablet)
   El logo del header está envuelto en <a href="index.html"> en
   las 7 páginas activas y vive en .header_logo (col-sm-2),
   sibling de #navigation (col-sm-8). En la franja 768-998px los
   col-sm-* siguen en línea (Bootstrap apila desde 767px) mientras
   menumaker ya activó .small-screen (breakpoint 998), y el
   #menu-button (display:block + padding:19px, style.css:798)
   queda con un área clickeable invisible que arranca pegada al
   borde derecho del .header_logo. Como el <a> del logo es inline
   y solo abarca el ancho real del <img> (146px en mobile), un
   tap "amplio" cerca del logo caía en el #menu-button.

   Primer intento (sobre-disparado): también puse position+z-index
   en .header_logo. Eso creó un stacking context sobre TODA la caja
   del col (no solo sobre el <img>), cubriendo el área del
   #menu-button en mobile y bloqueando el toggle del hamburguesa.

   Solución correcta: z-index alto SOLO en el <a> del logo, no en
   el .header_logo. Así el área clickeable del <a> (limitada al
   ancho del <img>) gana al #menu-button donde realmente hay logo,
   pero el resto del col-sm-2 sigue "transparente" al hit-testing
   y el #menu-button conserva su área de toggle intacta.
   ----------------------------------------------------------- */
.header_logo > a {
  position: relative;
  z-index: 51;
  display: inline-block;
}


/* -----------------------------------------------------------
   Páginas de servicio (limpieza-abono-mensual / final-de-obra):
   título H1 dentro del banner .blog-banner. El tema solo estiliza
   .blog-header h3 (style.css:3068-3084); replicamos ese look para
   el H1, centrado, manteniendo el blanco sobre la foto del banner.
   ----------------------------------------------------------- */
.blog-header h1 {
  color: #fff;
  font-size: 40px;
  line-height: 46px;
  letter-spacing: 2px;
  font-weight: 700;
  text-transform: none;
  text-align: center;
  padding-bottom: 8px;
  margin: 0;
}

/* Modificadores de columnas para .why-grid en las páginas de
   servicio. La base (Capa 24) usa 5 columnas en md+; acá pisamos
   con compound selector (0,2,0) para forzar 3 o 4 columnas.
   Solo aplican en PC (>=992px); en sm/xs mantienen 2/1 columna. */
@media (min-width: 992px) {
  .why-grid.why-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
  .why-grid.why-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
}

/* Espacio entre el ícono de WhatsApp y el texto en los botones
   "Pedí presupuesto / Pedí tu presupuesto" de las páginas de
   servicio (hero, pie de secciones y banda CTA). Mismo patrón que
   la Capa 12: .service-cta .fa-whatsapp con margin-right:10px. */
.service-hero .btn-primary .fa-whatsapp,
.section-cta .btn-primary .fa-whatsapp,
.estimat_sectn .btn-primary .fa-whatsapp {
  font-size: 16px;
  margin-right: 10px;
  line-height: 1;
}

/* Barra superior bordó de las páginas de servicio (reemplaza el
   banner-foto). Altura ~30px, texto chico. Pisa el header genérico
   (style.css:3042: height:700px, fondo verdoso) por especificidad
   de clase (0,1,0 > 0,0,1). El hero queda pegado debajo. */
.service-topbar {
  height: auto;
  min-height: 50px;
  display: flex;
  align-items: center;
  background: var(--color-brand);
  color: #fff;
  text-align: left;
}

/* El container del header trae padding-top:95px (style.css:2986,
   y 85px en responsive.css:831) + text-align:center, pensado para
   los banners-foto de 307/700px. En la barra delgada lo anulamos.
   Compound (0,2,0) gana a `header .container` (0,1,1). */
.service-topbar .service-topbar__inner {
  padding-top: 0;
  padding-bottom: 0;
  text-align: left;
}

.service-topbar__title {
  margin: 0;
  padding: 6px 0;
  font-family: var(--font-heading);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.02em;
  color: #fff;
}

/* "Servicios | " en negrita; el nombre del servicio queda fino. */
.service-topbar__title strong {
  font-weight: 700;
}

/* Hero de páginas de servicio: imagen a la izquierda, texto + CTA
   a la derecha alineado a la izquierda. 50/50 en PC; apila en
   mobile/tablet (<768) con la imagen arriba. */
.service-hero {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  /* Anula el `section { padding:60px 0 }` genérico (style.css) para
     que el hero quede pegado a la barra bordó y a la franja siguiente. */
  padding-top: 0;
  padding-bottom: 0;
}

.service-hero__media,
.service-hero__body {
  flex: 1 1 50%;
  min-width: 0;
}

.service-hero__media {
  min-height: 340px;
}

.service-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.service-hero__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  text-align: left;
  padding: var(--space-10) var(--space-8);
}

/* Eyebrow: repite el nombre del servicio en mayúscula, letra fina
   bordó, sobre el título del hero. */
.service-hero__eyebrow {
  margin: 0 0 var(--space-2);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-brand);
}

.service-hero__title {
  margin: 0 0 var(--space-3);
  font-family: var(--font-heading);
  font-weight: 700;
  line-height: 1.35;
}

/* De 1200px de ancho hacia abajo: título del hero más contenido. */
@media (max-width: 1200px) {
  .service-hero__title {
    font-size: 36px;
    line-height: 1.25;
  }
}

.service-hero__text {
  margin: 0 0 var(--space-5);
}

@media (max-width: 767px) {
  .service-hero__media,
  .service-hero__body {
    flex-basis: 100%;
  }
  .service-hero__media {
    min-height: 240px;
  }
  .service-hero__body {
    padding: var(--space-6) var(--space-4);
  }
}

/* CTA centrado al pie de las secciones "Qué incluye" y
   "Cómo arrancamos". */
.section-cta {
  margin-top: var(--space-6);
  text-align: center;
}

/* Franja oscura con las frases de cierre (cierre temático + para
   quién). Fondo ink, texto claro, destacados en blanco para romper
   la monotonía. */
.service-statement {
  background: var(--color-ink);
  padding: var(--space-10) 0;
}

.service-statement__text {
  max-width: 880px;
  margin: 0 auto var(--space-4);
  text-align: center;
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.82);
}

.service-statement__text:last-child {
  margin-bottom: 0;
}

.service-statement__text strong {
  color: #fff;
  font-weight: 700;
}

/* Páginas de servicio: el título del formulario va centrado. En
   index/servicios style.css:1541 lo alinea a la izquierda (y el
   ::after en left:0%); acá lo recentramos solo para .service-estimat. */
.service-estimat .base_header_2 {
  text-align: center;
}

.service-estimat .base_header_2 h3::after {
  left: 50%;
}


/* -----------------------------------------------------------
   Selector de servicio del formulario de presupuesto
   (bloque .estimat_sectn en index, servicios, nosotros y páginas
   de servicio). 3 botones tipo radio: radio oculto + label cuadrado.
   33% en PC, 100% en mobile. Normal: borde y texto gris, fondo blanco.
   Seleccionado: fondo bordó (--color-brand) y contenido blanco.
   ----------------------------------------------------------- */
.estimat_sectn .estimate_form_inner .service-selector {
  float: none;
  margin-top: 0;
  margin-bottom: 18px;
}

.service-selector-title {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 600;
  color: var(--color-muted);
  margin: 0 0 12px;
  text-align: left;
}

.service-options {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  width: 100%;
}

.service-option {
  position: relative;
  flex: 1 1 calc(33.333% - 8px);
  margin: 0;
  cursor: pointer;
}

/* Radio oculto pero accesible (focus se refleja en el box). */
.service-option input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin: 0;
  pointer-events: none;
}

.service-option .service-option-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  text-align: center;
  min-height: 120px;
  height: 100%;
  padding: 18px 12px;
  border: 1px solid #ccc;
  border-radius: 8px;
  background-color: #fff;
  color: var(--color-muted);
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.3;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.service-option .service-option-box .fa {
  font-size: 26px;
  line-height: 1;
  color: inherit;
}

.service-option:hover .service-option-box {
  border-color: var(--color-brand);
}

.service-option input[type="radio"]:checked + .service-option-box {
  background-color: var(--color-brand);
  border-color: var(--color-brand);
  color: #fff;
}

.service-option input[type="radio"]:focus-visible + .service-option-box {
  outline: 2px solid var(--color-brand-dark);
  outline-offset: 2px;
}

@media (max-width: 767px) {
  .service-option {
    flex: 1 1 100%;
  }
  .service-option .service-option-box {
    min-height: 0;
    flex-direction: row;
    gap: 12px;
    justify-content: flex-start;
    padding: 16px 18px;
  }
}


/* -----------------------------------------------------------
   Campos del formulario de presupuesto (.estimat_sectn):
   - borde completo en los 4 lados (antes solo border-bottom);
   - padding +50% (6px 12px -> 9px 18px) con height auto;
   - etiqueta (.form-label) arriba de cada campo;
   - sin margen inferior en el input (el aire lo da .input-group).
   Se excluyen radio/hidden (selector de servicio y honeypot).
   ----------------------------------------------------------- */
.estimat_sectn .estimate_form_inner input:not([type="radio"]):not([type="hidden"]),
.estimat_sectn .estimate_form_inner textarea {
  border: 1px solid #ccc;
  border-radius: 8px !important;
  height: auto;
  padding: 9px 18px;
  margin-bottom: 0;
}

.estimat_sectn .estimate_form_inner .input-group input:not([type="radio"]),
.estimat_sectn .estimate_form_inner .input-group textarea {
  margin-bottom: 0;
}

.estimat_sectn .estimate_form_inner .form-label {
  display: block;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  color: var(--color-muted);
  margin: 0 0 6px;
  text-align: left;
}


/* -----------------------------------------------------------
   Campos de los formularios de Contacto y Política integrada
   (.con-field): borde completo en los 4 lados (#ccc) con el mismo
   radius (8px) que el resto de los formularios. Antes tenían solo
   border-bottom bordó. Se ajusta el padding para que el campo
   "en caja" quede balanceado (antes solo tenía padding-bottom).
   ----------------------------------------------------------- */
.contact-form #contact-form .con-field {
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 12px 16px;
  margin-bottom: 10px;
}

.contact-form #contact-form .con-field:focus {
  border: 1px solid var(--color-brand);
}

/* Caja del formulario más angosta y centrada (contacto y política).
   El textarea ahora va a lo ancho, debajo del resto de los campos. */
.contact_page .contact-form {
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}

/* Etiquetas arriba de cada campo en los formularios .con-field. */
.contact-form .form-label {
  display: block;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  color: var(--color-muted);
  margin: 0 0 6px;
  text-align: left;
}


/* -----------------------------------------------------------
   Nosotros: botón "Solicitar política integrada" debajo del
   acordeón. Reutiliza .btn-primary (Capa 2). Solo posicionamos.
   ----------------------------------------------------------- */
.politica-cta {
  margin-top: 26px;
  text-align: center;
}
