/* ===========================================================================
   SECCIÓN DE PROMOCIONES — agdronec.com
   Va entre el hero y «Nuestros Servicios».

   Lo inserta parchar_home.py; este archivo se publica tal cual en
   public_html/css/promo-banner.css y viaja dentro de sitio.zip.

   Los estilos van todos bajo .promo-banner a propósito: la hoja del tema
   (css/style.css) vive en el servidor y no está en este repositorio, así
   que no se puede comprobar qué define. Encerrarlo todo aquí evita las dos
   formas de que esto salga mal —que el tema pise el banner, o que el banner
   pise la portada.
   =========================================================================== */

/* Ni ancho máximo ni márgenes: vive dentro de .section > .container, que ya
   los pone. Ponerlos otra vez aquí desalineaba las tarjetas respecto del
   título de la sección y del resto de la página. */
.promo-banner{--promo-green:#4CB748;--promo-ink:#10200d;--promo-dark:#262626;
  box-sizing:border-box;font-family:'Barlow',system-ui,sans-serif;position:relative}
.promo-banner *{box-sizing:border-box}
.promo-grid{display:flex;flex-wrap:wrap;gap:24px}
.promo-card{flex:1 1 440px;min-width:0;position:relative;border-radius:18px;padding:28px 28px 22px;
  display:flex;flex-direction:column;gap:14px;transition:transform .2s ease,box-shadow .2s ease}
.promo-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(0,0,0,.18)}
/* La tarjeta en la que se está, por encima de la otra: al transformarse crea
   su propio contexto de apilado y la lista de condiciones queda atrapada
   dentro. Sin esto, el desplegable de la tarjeta izquierda se vería por
   debajo de la derecha. */
.promo-card:hover,.promo-card:focus-within{z-index:3}
.promo-card--green{background:var(--promo-green);color:var(--promo-ink)}
.promo-card--dark{background:var(--promo-dark);color:#fff}
.promo-card > *:not(.promo-deco){position:relative}
.promo-deco{position:absolute;inset:0;overflow:hidden;border-radius:18px;pointer-events:none;color:var(--promo-ink);opacity:.12}
.promo-deco svg{position:absolute;right:-36px;bottom:-40px;width:230px;height:230px}
.promo-deco--green{color:var(--promo-green);opacity:.16}

.promo-tags{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.promo-tag{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:13px;letter-spacing:1.2px;
  padding:7px 14px;border-radius:999px;text-transform:uppercase}
.promo-tag--dark{background:var(--promo-ink);color:#fff}
.promo-tag--green{background:var(--promo-green);color:var(--promo-ink)}
.promo-next{background:rgba(255,255,255,.55);color:var(--promo-ink);font-weight:600;font-size:13px;padding:7px 12px;border-radius:999px}
.promo-live{display:inline-block;font-weight:800;font-size:13px;letter-spacing:.5px;padding:7px 12px;border-radius:999px;
  animation:promoLive 1.6s ease-in-out infinite}
.promo-live[hidden],.promo-next[hidden]{display:none}
@keyframes promoLive{
  0%{background:#fff;color:#10200d;transform:scale(1);box-shadow:0 0 0 0 rgba(255,214,0,.8)}
  25%{background:#FFD600;color:#10200d;transform:scale(1.08);box-shadow:0 0 0 6px rgba(255,214,0,.35)}
  50%{background:#FF6A00;color:#fff;transform:scale(1);box-shadow:0 0 0 10px rgba(255,106,0,0)}
  75%{background:#E8112D;color:#fff;transform:scale(1.08);box-shadow:0 0 0 6px rgba(232,17,45,.3)}
  100%{background:#fff;color:#10200d;transform:scale(1);box-shadow:0 0 0 0 rgba(255,214,0,0)}
}
@media (prefers-reduced-motion:reduce){.promo-live{animation:none;background:#FFD600}}

.promo-head{display:flex;align-items:flex-end;flex-wrap:wrap;gap:6px 18px}
.promo-title{margin:0;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:64px;line-height:.9;letter-spacing:.5px;text-transform:uppercase}
.promo-title--sm{font-size:32px;line-height:.95;margin-bottom:4px}
.promo-sub{margin:0 0 4px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:28px;line-height:1.05}
.promo-amount{font-size:40px;font-weight:800}
.promo-big{margin:0;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:96px;line-height:.82;color:var(--promo-green)}
.promo-desc{margin:0;font-size:16px;font-weight:500;max-width:400px}
.promo-desc--light{color:#e6e6e6}

.promo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:4px}
.promo-cta{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;text-decoration:none;
  font-weight:700;font-size:16px;border-radius:12px;transition:transform .15s ease,box-shadow .15s ease}
.promo-cta:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.22)}
.promo-cta--dark,.promo-cta--dark:hover{background:var(--promo-ink);color:#fff}
.promo-cta--green,.promo-cta--green:hover{background:var(--promo-green);color:var(--promo-ink)}

.promo-tip{position:relative;display:inline-flex}
.promo-tip-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:10px;
  cursor:help;font:inherit;font-size:14px;font-weight:600;background:transparent}
.promo-tip-btn--dark{color:var(--promo-ink);border:2px solid var(--promo-ink)}
.promo-tip-btn--light{color:#fff;border:2px solid #fff}
.promo-tip-list{display:none;position:absolute;left:0;bottom:calc(100% + 10px);z-index:20;width:340px;max-width:78vw;margin:0;
  padding:14px 16px 14px 32px;background:#fff;color:#1f1f1f;border-radius:12px;box-shadow:0 12px 28px rgba(0,0,0,.25);
  font-size:13px;line-height:1.45;text-align:left}
.promo-tip-list::after{content:"";position:absolute;left:24px;top:100%;border:8px solid transparent;border-top-color:#fff}
.promo-tip-list li{margin:0 0 6px}
.promo-tip-list li:last-child{margin:0}
.promo-tip-btn:hover + .promo-tip-list,.promo-tip-btn:focus + .promo-tip-list{display:block}

@media (max-width:600px){
  .promo-card{padding:22px 20px 18px}
  .promo-title{font-size:52px}
  /* .promo-title--sm tiene la misma especificidad que .promo-title y va
     ANTES en el archivo, así que aquí perdía: el título de la tarjeta oscura
     («De descuento en tu mantenimiento») se dibujaba a 52px y se salía de la
     tarjeta. Medido en 375px: 317px de texto dentro de una tarjeta de 343. */
  .promo-title--sm{font-size:28px}
  .promo-big{font-size:80px}
  /* En el teléfono la lista deja de flotar y se abre debajo del botón,
     empujando el contenido. Flotando se salía por la derecha —el botón está
     a media tarjeta y la lista mide 340px— y eso es exactamente lo que
     provoca la barra de desplazamiento horizontal. */
  .promo-tip{display:block;width:100%}
  .promo-tip-list{position:static;width:100%;max-width:100%;margin-top:10px;
    padding:14px 16px 14px 32px;box-shadow:none;border:1px solid #d8d8d4}
  .promo-tip-list::after{display:none}
  .promo-tip-btn{width:100%;justify-content:center}
}

/* ---------------------------------------------------------------------------
   BOTÓN DEL HERO
   «Agendar Mantenimiento» con la etiqueta del descuento. Usa .btn y
   .btn--green del tema para la forma y el color; aquí solo va la etiqueta,
   que el tema no tiene.
   --------------------------------------------------------------------------- */
.promo-hero-cta{gap:8px}
.promo-hero-cta__off{display:inline-block;margin-left:8px;padding:3px 9px;border-radius:999px;
  background:#FFD600;color:#10200d;font-family:'Barlow',system-ui,sans-serif;
  font-weight:800;font-size:12.5px;letter-spacing:.4px;line-height:1.35;white-space:nowrap;
  vertical-align:middle}

/* ---------------------------------------------------------------------------
   CARRUSEL
   Se enciende solo cuando hay MÁS promociones de las que caben a la vez: con
   dos, las tarjetas se quedan una al lado de la otra como hasta ahora, y el
   mando ni se dibuja. A partir de la tercera, promo-banner.js le pone la
   clase .es-carrusel al bloque y aparecen flechas y puntos.

   La pista es un scroll con anclaje (scroll-snap), no un carrusel de los que
   mueven todo con JavaScript: así funciona el arrastre con el dedo, la rueda
   del ratón y el teclado sin escribir nada de eso.
   --------------------------------------------------------------------------- */
.promo-banner.es-carrusel .promo-grid{flex-wrap:nowrap;overflow-x:auto;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none}
.promo-banner.es-carrusel .promo-grid::-webkit-scrollbar{display:none}
.promo-banner.es-carrusel .promo-card{flex:0 0 calc(50% - 12px);scroll-snap-align:start}
@media (max-width:860px){
  .promo-banner.es-carrusel .promo-card{flex:0 0 100%}
}
/* Dentro de la pista no se puede salir del recuadro: lo que asome por arriba
   lo recorta el propio scroll. Así que en modo carrusel el levantarse al
   pasar el ratón se apaga, y la lista de condiciones deja de flotar y se
   abre DENTRO de la tarjeta, igual que en el teléfono. */
.promo-banner.es-carrusel .promo-card:hover{transform:none;box-shadow:none}
.promo-banner.es-carrusel .promo-tip{display:block;width:100%}
.promo-banner.es-carrusel .promo-tip-list{position:static;width:100%;max-width:100%;
  margin-top:10px;box-shadow:none;border:1px solid #d8d8d4}
.promo-banner.es-carrusel .promo-tip-list::after{display:none}
.promo-banner.es-carrusel .promo-tip-btn{width:100%;justify-content:center}
@media (prefers-reduced-motion:reduce){
  .promo-banner.es-carrusel .promo-grid{scroll-behavior:auto}
}

.promo-mando{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:22px}
.promo-mando[hidden]{display:none}
.promo-flecha{display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;border:2px solid #dcdcd6;background:#fff;
  color:#262626;cursor:pointer;transition:border-color .15s ease,color .15s ease}
.promo-flecha:hover:not(:disabled){border-color:var(--promo-green);color:var(--promo-green)}
.promo-flecha:disabled{opacity:.3;cursor:default}
.promo-puntos{display:flex;align-items:center;gap:8px}
.promo-punto{width:9px;height:9px;padding:0;border:0;border-radius:50%;
  background:#cfcfc8;cursor:pointer;transition:background .2s ease,width .2s ease}
.promo-punto[aria-current="true"]{width:26px;border-radius:999px;background:var(--promo-green)}
