/* ============================================================================
   SEGURATIS · PLANTILLAS
   Lo que no cubren tokens.css ni componentes.css: el chrome (cabecera, menus,
   pie, barra fija) y el layout propio de cada plantilla.

   Los valores salen de entrega-final/static/*.html medidos elemento a elemento.
   Movil primero; desktop a partir de 1024 px, que es el corte del sistema.

   Requiere: tokens.css -> componentes.css -> este fichero.
   ============================================================================ */

/* ============================================================================
   [hidden] MANDA SOBRE CUALQUIER display
   ============================================================================
   El atributo `hidden` del HTML se aplica con `[hidden] { display: none }` en
   la hoja del navegador, que tiene MENOS peso que cualquier selector de clase.
   O sea: en cuanto una clase pone `display: grid` (o flex, o block), el
   elemento se ve aunque lleve `hidden` puesto.

   Y comportamiento.js oculta con `hidden` en todas partes: el panel del menú
   móvil, el acordeón del pie, los filtros de los listados, las coberturas
   plegables de resultados y los pasos del formulario. Sin esta regla, nada de
   eso se oculta.

   Va con !important a propósito: `hidden` significa oculto, y no hay ningún
   caso en el sistema donde queramos ver algo que lo lleva.
   ============================================================================ */
[hidden] { display: none !important; }

/* ---- Utilidad de salto ---------------------------------------------------- */
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  padding: 12px 18px; border-radius: 0 0 var(--r) 0;
  background: var(--c-primary); color: var(--c-white);
  font-size: 15px; font-weight: 700;
}
.skip-link:focus { left: 0; color: var(--c-white); }

/* Placeholder de icono de ramo · hasta que llegue el set de 6 SVG ----------- */
.ramo-ico {
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: repeating-linear-gradient(135deg, #F4EEE9 0 6px, var(--c-surface-2) 6px 12px);
}
.ramo-ico svg { width: 60%; height: 60%; }

/* ============================================================================
   CABECERA
   Movil 73 px: 14 + 44 + 14 + 1 de borde. Desktop 81 px: 18 + 44 + 18 + 1.
   ============================================================================ */

.header__brand { display: block; flex: 0 0 auto; }
.header__logo  { height: 26px; width: auto; display: block; }

/* Nav, pastilla de telefono y CTA: solo desktop */
.header__nav,
.header__tel,
.header__cta,
.header__ads-claim { display: none; }

.header__mobile { display: flex; align-items: center; gap: 8px; }

@media (min-width: 1024px) {
  .header__logo   { height: 30px; }
  .header__mobile { display: none; }

  .header__nav { display: flex; align-items: center; gap: 22px; flex: 1 1 auto; min-width: 0; flex-wrap: wrap; row-gap: 8px; }
  .header__nav-link {
    display: flex; align-items: center; gap: 4px; white-space: nowrap;
    font-size: 15.5px; font-weight: 600; color: var(--c-ink-article);
  }
  .header__nav-link:hover { color: var(--c-primary); }
  .header__nav-link.is-active {
    font-weight: 700; color: var(--c-primary);
    padding-bottom: 4px; border-bottom: 2px solid var(--c-action);
  }
  .header__caret { font-size: 9px; color: var(--c-ink-3); }
  .header__mega-host { display: flex; align-items: center; }

  .header__tel {
    display: flex; align-items: center; gap: 8px; flex: 0 0 auto; white-space: nowrap;
    height: var(--h-tap); padding: 0 16px; border-radius: var(--r-pill);
    background: var(--c-white); color: var(--c-ink);
    font-size: 15.5px; font-weight: 700;
    box-shadow: var(--sh-pill); transition: var(--t-lift);
  }
  .header__tel:hover { transform: var(--lift); color: var(--c-ink); }

  /* El CTA de cabecera es mas bajo que el primario de hero: 44, no 60 */
  .header__cta { display: flex; flex: 0 0 auto; height: var(--h-tap); padding: 0 20px; }

  .header__ads-claim { display: block; flex: 1 1 auto; font-size: 14px; color: var(--c-ink-3); }
}

/* ---- Panel de menu movil -------------------------------------------------- */
.menu { gap: 6px; padding: 16px var(--pad-x-m) 22px; }
@media (min-width: 1024px) { .menu { display: none !important; } }

.menu__overline {
  padding: 4px 0;
  font-size: 12px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--c-ink-3);
}
.menu__overline--sep { padding: 10px 0 4px; }

.menu__ramo {
  display: flex; align-items: center; gap: 12px;
  padding: 13px 14px; border-radius: var(--r);
  background: var(--c-white); border: var(--bd) solid var(--c-border-soft);
  transition: var(--t-color);
}
.menu__ramo:hover { border-color: var(--c-action); }
.menu__ramo-texto  { flex: 1 1 auto; display: block; min-width: 0; }
.menu__ramo-nombre { display: block; font-size: 16px; font-weight: 600; color: var(--c-ink); }
.menu__ramo-precio { display: block; margin-top: 2px; font-size: 13px; font-weight: 700; color: var(--c-primary); }
.menu__chevron     { flex: 0 0 auto; color: var(--c-ink-4); }

.menu__recursos { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.menu__recursos a {
  padding: 13px; text-align: center; border-radius: var(--r);
  background: var(--c-white); border: var(--bd) solid var(--c-border-soft);
  font-size: 15px; font-weight: 600; color: var(--c-ink);
}
.menu__recursos a:hover { border-color: var(--c-action); color: var(--c-action-ink); }

.menu__cta { margin-top: 12px; height: var(--h-btn); }
.menu__tel { height: var(--h-btn-card); box-shadow: var(--sh-pill); }

/* ---- Megamenu ------------------------------------------------------------- */
.mega { display: none; }
@media (min-width: 1024px) { .mega { display: block; } .mega[hidden] { display: none; } }

.mega__overline {
  font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--c-ink-3);
}
.mega__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px; margin-top: 18px;
}
.mega__card {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 18px; border-radius: var(--r);
  border: var(--bd) solid var(--c-border-soft);
  transition: var(--t-color);
}
.mega__card:hover { border-color: var(--c-action); background: var(--c-row-alt); }
.mega__card-texto  { display: block; }
.mega__card-nombre { display: block; font-size: 16.5px; font-weight: 700; color: var(--c-ink); }
.mega__card-precio { display: block; margin-top: 3px; font-size: 13.5px; font-weight: 700; color: var(--c-primary); }
.mega__card-claim  { display: block; margin-top: 6px; font-size: 14px; line-height: 1.45; color: var(--c-ink-2); }

.mega__pie {
  display: flex; align-items: center; gap: 24px;
  margin-top: 22px; padding-top: 20px;
  border-top: var(--bd) solid var(--c-divider);
}
.mega__pie-nota { font-size: 14.5px; color: var(--c-ink-3); }

.mega__aside { padding: 26px; border-radius: var(--r); background: var(--c-surface-2); }
.mega__aside-overline {
  font-size: 12.5px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--c-positive);
}
.mega__aside-titulo {
  margin-top: 12px; font-size: 21px; line-height: 1.2;
  font-weight: 800; letter-spacing: -.025em; color: var(--c-primary);
}
.mega__aside-texto { margin-top: 10px; font-size: 15.5px; line-height: 1.55; color: var(--c-ink-2); }
.mega__aside-cta   { height: var(--h-btn-card); margin: 18px 0 16px; }

.rating__texto { display: block; line-height: 1.3; }
.rating__texto .meta { display: block; }

/* ============================================================================
   PIE
   ============================================================================ */

.footer__band-inner { display: block; }
.footer__band-text  { margin-top: 8px; font-size: 15.5px; line-height: 1.55; color: var(--c-ink-2); }
.footer__band-acciones { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }

/* Movil: el telefono es el unico boton y va en coral */
.footer__band-acciones .btn--raised {
  height: var(--h-btn); width: 100%; padding: 0 26px;
  background: var(--c-action); color: var(--c-white); box-shadow: var(--sh-cta);
}
.footer__band-acciones .btn--raised:hover { background: var(--c-action-strong); color: var(--c-white); }
.footer__band-acciones .btn--raised .btn__glyph--tint { background: rgba(255,255,255,.22); }
.footer__band-acciones .btn--raised .btn__glyph--tint svg { stroke: var(--c-white); }
/* …y el CTA de comparar no sale: ya esta la barra fija */
.footer__band-acciones .btn--primary { display: none; }

.footer__grid  { padding: 28px var(--pad-x-m) 0; }
.footer__logo  { height: 26px; }
.footer__claim { margin-top: 14px; font-size: 15px; line-height: 1.55; color: var(--c-ink-2); text-wrap: pretty; }
.footer__rating { margin-top: 18px; }
.footer__social { display: flex; gap: 10px; margin-top: 18px; }

.footer__col { border-top: var(--bd) solid var(--c-divider); }
.footer__col:first-of-type { margin-top: 24px; }
.footer__col-titulo { font-size: 16px; font-weight: 700; color: var(--c-ink); }
.footer__col-titulo--desktop { display: none; }
.footer__col-sign { font-size: 20px; font-weight: 700; color: var(--c-action); }
.footer__col-lista { display: grid; gap: 12px; padding-bottom: 18px; }
.footer__col-lista a { font-size: 15.5px; color: var(--c-ink); }
.footer__col-lista a:hover { color: var(--c-action-ink); }

.footer__legal-inner { padding: 0 var(--pad-x-m); }
.footer__legal-texto { max-width: 110ch; }
.footer__legal-barra {
  display: flex; flex-direction: column-reverse; gap: 16px;
  margin-top: 16px; font-size: 13px; color: var(--c-ink-3);
}

@media (min-width: 1024px) {
  .footer__band-inner {
    display: flex; align-items: center; justify-content: space-between;
    gap: 40px; flex-wrap: wrap; row-gap: 20px;
    max-width: var(--max-w); margin: 0 auto; padding: 0 var(--pad-x-d);
  }
  .footer__band-text { font-size: 16px; }
  .footer__band-acciones { flex-direction: row; flex-wrap: wrap; margin-top: 0; }

  /* Desktop: telefono en blanco elevado + un solo CTA coral */
  .footer__band-acciones .btn--raised {
    width: auto; height: 56px; padding: 0 22px 0 12px; gap: 12px;
    background: var(--c-white); color: var(--c-primary); box-shadow: var(--sh-neutral);
  }
  .footer__band-acciones .btn--raised:hover { background: var(--c-white); color: var(--c-primary); }
  .footer__band-acciones .btn--raised .btn__glyph--tint { width: 32px; height: 32px; flex-basis: 32px; background: var(--c-cta-bg); }
  .footer__band-acciones .btn--raised .btn__glyph--tint svg { stroke: var(--c-action-ink); }
  .footer__band-acciones .btn--primary { display: flex; height: 56px; padding: 0 28px; }

  .footer__grid  { padding: 72px var(--pad-x-d) 44px; }
  .footer__logo  { height: 28px; }
  .footer__claim { margin-top: 18px; max-width: 40ch; font-size: 15.5px; line-height: 1.6; }
  .footer__rating, .footer__social { margin-top: 22px; }

  .footer__col { border-top: 0; }
  .footer__col:first-of-type { margin-top: 0; }
  .footer__col-titulo--desktop {
    display: block;
    font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: var(--c-ink-3);
  }
  .footer__col-lista { padding-bottom: 0; margin-top: 12px; }

  .footer__legal { margin-top: 0; padding-top: 24px; }
  .footer__legal-inner { max-width: var(--max-w); margin: 0 auto; padding: 0 var(--pad-x-d) 28px; }
  .footer__legal-barra {
    flex-direction: row; align-items: center; justify-content: space-between;
    gap: 24px; flex-wrap: wrap; row-gap: 12px; font-size: 13.5px;
  }
}

/* ---- Barra fija ----------------------------------------------------------- */
.fixed-bar__call {
  display: flex; align-items: center; justify-content: center;
  flex: 0 0 48px; width: 48px; height: 48px;
  border-radius: var(--r-pill);
  background: var(--c-white); border: var(--bd-strong) solid var(--c-field-border);
  transition: var(--t-lift), border-color .16s ease-out;
}
.fixed-bar__call:hover { border-color: var(--c-action); transform: var(--lift); }
.fixed-bar .btn--primary { box-shadow: var(--sh-cta-sm); }

/* La barra entra a mitad de página, no de entrada: recién llegado no ha pasado
   nada que justifique un CTA fijo tapando contenido. Lo lleva interfaz.js.

   `visibility` además de `transform` para que, oculta, no se pueda tabular
   hasta ella. Y el translateX(-50%) se repite porque es lo que la centra:
   si se pierde, la barra se va a la derecha al ocultarse. */
.fixed-bar {
  transition: transform .28s ease-out, opacity .2s ease-out, visibility .28s;
}
.fixed-bar--oculta {
  transform: translateX(-50%) translateY(115%);
  opacity: 0;
  visibility: hidden;
}

/* ============================================================================
   FORMULARIOS · piezas compartidas por las 5 plantillas que llevan captacion
   ============================================================================ */

.form-ramo         { margin-top: 20px; }
.form-ramo__chips  { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0; padding: 0; border: 0; }
.form-ramo__chip   { display: flex; align-items: center; }
.form-ramo__tel    { margin-top: 12px; }
.form-ramo__enviar { width: 100%; height: var(--h-btn-hero-m); margin-top: 16px; }
.form-ramo__trust  { margin-top: 18px; padding-top: 16px; border-top: var(--bd) solid var(--c-divider); }
.form-ramo__legal  { margin-top: 12px; text-align: center; }

@media (min-width: 1024px) {
  .form-ramo         { margin-top: 0; padding: 36px; box-shadow: 0 22px 44px -30px rgba(16,24,32,.55); }
  .form-ramo__chips  { gap: 12px; }
  .form-ramo__enviar { height: 62px; margin-top: 12px; }
}

/* Aviso de estado del formulario · el color es la senal */
.form__aviso {
  margin-top: 12px; padding: 12px 14px; border-radius: var(--r);
  font-size: 14px; line-height: 1.45; font-weight: 600;
}
.form__aviso--error { background: #FBF1F0; color: var(--c-negative); }
.form__aviso--ok    { background: var(--c-tag-soft); color: var(--c-positive); }
.btn.is-loading     { opacity: .6; pointer-events: none; }

/* ============================================================================
   UTILIDADES
   ============================================================================ */

.eyebrow { display: block; }

.screen-reader-text {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px); white-space: nowrap;
}

/* Glifo con tinte dentro de boton blanco (banda del pie) */
.btn__glyph--tint { background: var(--c-cta-bg); }
