/* Desplegable de sugerencias del buscador de referencias.
   Usa las variables del tema con valor de respaldo, para que el plugin siga
   funcionando aunque algún día se cambie el tema. */
.gp-sugerencias{
  position:fixed;
  z-index:9999;
  background:#fff;
  border-radius:4px;
  box-shadow:0 18px 44px rgba(0,20,50,.30);
  overflow:hidden auto;
  max-height:min(62vh,440px);
  text-align:left;
  color:var(--gp-ink,#1C242A);
}
.gp-sugerencias[hidden]{ display:none !important; }

.gp-sugerencias .gp-sug{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"ref precio" "tit precio" "pie precio";
  gap:1px 14px;
  width:100%;
  border:0;
  border-bottom:1px solid var(--gp-line-s,#eef1f6);
  background:#fff;
  text-align:left;
  padding:10px 16px;
  cursor:pointer;
  font:inherit;
  line-height:1.35;
  border-radius:0;
}
.gp-sugerencias .gp-sug:last-child{ border-bottom:0; }
.gp-sugerencias .gp-sug:hover,
.gp-sugerencias .gp-sug.sel{ background:#eaf2fb; }

.gp-sug-ref{
  grid-area:ref;
  font-variant-numeric:tabular-nums;
  letter-spacing:.03em;
  font-weight:600;
  font-size:15px;
  color:var(--gp-ink,#1C242A);
}
.gp-sug-ref mark{
  background:#fff0b8;
  color:inherit;
  padding:0 1px;
  border-radius:2px;
}
.gp-sug-tit{
  grid-area:tit;
  font-size:13px;
  color:var(--gp-ink,#1C242A);
}
.gp-sug-pie{
  grid-area:pie;
  font-size:11.5px;
  color:var(--gp-mute,#5d6b80);
}
.gp-sug-pie code{
  background:none;
  padding:0;
  font-size:11.5px;
  letter-spacing:.02em;
}
.gp-sug-precio{
  grid-area:precio;
  align-self:center;
  font-size:13px;
  font-weight:600;
  white-space:nowrap;
  color:var(--gp-ink,#1C242A);
}
.gp-sug-precio .woocommerce-Price-amount{ font-weight:600; }
.gp-sug-precio small{ font-weight:400; font-size:.7em; color:var(--gp-mute,#5d6b80); }

.gp-sug-vacio{
  margin:0;
  padding:14px 16px;
  font-size:13.5px;
  color:var(--gp-mute,#5d6b80);
}

@media (max-width:640px){
  .gp-sug-precio{ display:none; }
  .gp-sugerencias .gp-sug{ grid-template-columns:1fr; }
}

/* ==========================================================================
   Filtrado de la cuadrícula

   REGLA QUE NO CONVIENE ROMPER: mientras se busca no se toca NADA que esté
   por encima de la caja de búsqueda.

   La versión anterior retiraba la fachada, el antetítulo y el texto de
   presentación —unos 500 px— en cuanto se tecleaba la tercera cifra. La
   página se encogía de golpe y la caja, con el cursor dentro, pegaba un
   salto hacia arriba. Escribir una referencia de diez dígitos con el campo
   moviéndose debajo del dedo es insoportable.

   Se retira sólo lo que está DEBAJO de la caja: accesos rápidos, sellos,
   título del catálogo y los controles del listado. Eso también se mueve,
   pero se mueve fuera de la vista, que es donde da igual.
   ========================================================================== */
body.gp-filtrando .gp-sellos,
body.gp-filtrando .gp-nav-bloque,
body.gp-filtrando .gp-accesos,
body.gp-filtrando .gp-hero .gp-chips,
body.gp-filtrando .gp-catalogo-t,
body.gp-filtrando .woocommerce-result-count,
body.gp-filtrando .woocommerce-ordering,
body.gp-filtrando .woocommerce-pagination{
  display:none !important;
}

/* Los resultados van PEGADOS a la caja de búsqueda. Entre una y otros no
   puede quedar ni un hueco: mientras se teclea, ver aparecer las tarjetas
   justo debajo del dedo es lo que hace que la búsqueda se sienta viva. Con
   doscientos píxeles de nada en medio parece que la página se ha roto. */
body.gp-filtrando .gp-resultados{ margin-top:0 !important; }
body.gp-filtrando .site-main,
body.gp-filtrando .woocommerce-products-header{ padding-top:0 !important; margin-top:0 !important; }

/* La cuadrícula filtrada no deja que la página se encoja por debajo de la
   pantalla. Si de 604 tarjetas quedan dos, sin esto el documento se acorta,
   el navegador recorta el desplazamiento y la caja de búsqueda vuelve a
   saltar. Además evita que el pie de página se suba debajo de dos fichas. */
body.gp-filtrando ul.products{
  min-height:58vh;
  align-content:start;
}

/* Barra de resultados sobre la cuadrícula */
.gp-resultados{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
  margin:0 0 1.2em;
  padding:.85em 0 .85em;
  border-bottom:1px solid var(--gp-line,#dde3ec);
  font-size:.92em;
  color:var(--gp-mute,#5d6b80);
}
.gp-resultados[hidden]{ display:none !important; }
.gp-resultados strong{ color:var(--gp-ink,#1C242A); }
.gp-resultados code{
  background:var(--gp-line-s,#eef1f6);
  padding:.1em .45em;
  border-radius:3px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.03em;
  color:var(--gp-ink,#1C242A);
}
.gp-resultados .gp-limpiar{
  background:none;
  border:1px solid var(--gp-line,#dde3ec);
  border-radius:999px;
  padding:.4em 1em;
  font-size:.92em;
  color:var(--gp-ink,#1C242A);
  cursor:pointer;
}
.gp-resultados .gp-limpiar:hover{
  border-color:var(--gp-navy,#002A6F);
  background:var(--gp-line-s,#eef1f6);
  color:var(--gp-ink,#1C242A);
}

/* Sin resultados: es una oportunidad comercial, no un error.
   Si un taller busca algo que no tenemos, lo que hay que hacer es pedirle
   la referencia, no dejarle una pantalla en blanco. */
.gp-resultados .gp-nada{
  display:block;
  max-width:70ch;
  padding:.4em 0 .8em;
}
.gp-resultados .gp-nada strong{ display:block; font-size:1.05em; margin-bottom:.35em; }
.gp-resultados .gp-nada em{ font-style:normal; display:block; line-height:1.5; }

/* ==========================================================================
   «Tu referencia» — el número que ha buscado el cliente, en su tarjeta
   Sin esto, quien busca 0445010708 y ve una ficha llamada «Bosch 0445010506»
   cree que le estamos dando otra pieza. El título no se cambia a propósito:
   ocultaría la relación en vez de explicarla.
   ========================================================================== */
.gp-ref-casada{
  display:block;
  margin:0 0 .55em;
  padding:.5em .7em;
  background:var(--gp-ok-bg,#e9f4ee);
  border:1px solid #c8e3d5;
  border-radius:3px;
  text-align:left;
  line-height:1.25;
}
.gp-ref-casada-et{
  display:block;
  font-size:9.5px;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:600;
  color:var(--gp-ok,#0f6b45);
}
.gp-ref-casada-n{
  display:block;
  font-size:15px;
  font-weight:600;
  font-variant-numeric:tabular-nums;
  letter-spacing:.03em;
  color:var(--gp-ink,#1C242A);
  margin:.1em 0;
}
.gp-ref-casada-pie{
  display:block;
  font-size:11px;
  color:var(--gp-ok,#0f6b45);
}

/* El mismo aviso, en la ficha de producto */
.gp-aviso-ref{
  background:var(--gp-ok-bg,#e9f4ee);
  border:1px solid #c8e3d5;
  border-radius:3px;
  padding:.9em 1.1em;
  margin:0 0 1.2em;
  font-size:.92em;
  line-height:1.5;
}
.gp-aviso-ref strong{
  display:block;
  color:var(--gp-ink,#1C242A);
  font-variant-numeric:tabular-nums;
  letter-spacing:.02em;
  margin-bottom:.15em;
}
.gp-aviso-ref span{ color:var(--gp-ok,#0f6b45); }
.gp-aviso-ref code{
  background:#fff;
  padding:.05em .35em;
  border-radius:2px;
  color:var(--gp-ink,#1C242A);
  font-size:.95em;
}

/* ==========================================================================
   Sello de tarifa en la ficha
   Un taller tiene que saber si el precio que ve es el suyo o el de la calle.
   Sin esto, la primera duda que genera es una llamada de teléfono.
   ========================================================================== */
.gp-tarifa-sello{
  display:inline-block;
  margin:0 0 1em;
  padding:.35em .8em;
  background:var(--gp-ok-bg,#e9f4ee);
  border:1px solid #c8e3d5;
  border-radius:3px;
  font-size:.86em;
  color:var(--gp-ok,#0f6b45);
}
.gp-tarifa-sello strong{ color:var(--gp-ink,#1C242A); }

/* ==========================================================================
   Alta de cuenta profesional — página «Para profesionales»
   Dos columnas: a la izquierda por qué merece la pena, a la derecha el
   formulario. Un formulario a secas, sin decir qué se gana rellenándolo,
   se abandona. Por debajo de 900 px se apilan.
   ========================================================================== */
.gp-alta{
  display:grid;
  grid-template-columns:1fr 1.15fr;
  gap:48px;
  align-items:start;
  margin:0 0 2em;
}
@media (max-width:900px){
  .gp-alta{ grid-template-columns:1fr; gap:32px; }
}

.gp-alta-razones h2,
.gp-alta-form h2{
  font-family:var(--gp-display,sans-serif);
  font-size:1.25em;
  margin:0 0 .7em;
  text-transform:uppercase;
  letter-spacing:.005em;
}
.gp-alta-razones ul{ margin:0; padding:0; list-style:none; }
.gp-alta-razones li{
  padding:.7em 0 .7em 0;
  border-bottom:1px solid var(--gp-line,#dde3ec);
  line-height:1.5;
  font-size:.95em;
}
.gp-alta-razones li:last-child{ border-bottom:0; }
.gp-alta-razones strong{ color:var(--gp-navy,#002A6F); }

.gp-alta-form{
  background:#fff;
  border:1px solid var(--gp-line,#dde3ec);
  border-radius:4px;
  padding:26px 28px 20px;
}
.gp-alta-campo{ margin:0 0 1.1em; }
.gp-alta-campo label{
  display:block;
  font-size:.86em;
  font-weight:600;
  margin-bottom:.35em;
  color:var(--gp-ink,#1C242A);
}
.gp-alta-campo label span{ color:var(--gp-red,#9a2b31); }
.gp-alta-campo input[type=text],
.gp-alta-campo input[type=email],
.gp-alta-campo input[type=tel],
.gp-alta-campo select,
.gp-alta-campo textarea{
  width:100%;
  box-sizing:border-box;
  padding:.62em .8em;
  border:1px solid var(--gp-line,#dde3ec);
  border-radius:3px;
  font-size:.95em;
  background:#fff;
}
.gp-alta-campo input:focus,
.gp-alta-campo select:focus,
.gp-alta-campo textarea:focus{
  outline:2px solid var(--gp-blue,#0073B9);
  outline-offset:-1px;
  border-color:var(--gp-blue,#0073B9);
}
.gp-alta-campo small{
  display:block;
  margin-top:.3em;
  font-size:.8em;
  color:var(--gp-mute,#5d6b80);
  line-height:1.4;
}
.gp-alta-dos{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
@media (max-width:520px){ .gp-alta-dos{ grid-template-columns:1fr; } }

.gp-alta-err{
  display:block;
  margin-top:.35em;
  font-size:.82em;
  font-weight:600;
  color:var(--gp-red,#9a2b31);
  line-height:1.4;
}
.gp-alta-err-top{
  background:#fdecec;
  border:1px solid #f0c8c8;
  border-radius:3px;
  padding:.7em .9em;
  margin:0 0 1.2em;
}

.gp-alta-consiento label{
  font-weight:400;
  font-size:.83em;
  line-height:1.5;
  color:var(--gp-mute,#5d6b80);
}
.gp-alta-consiento input{ margin-right:.4em; }

/* El cebo para robots. Fuera de la vista pero NO con display:none, que
   algunos programas detectan y saltan. */
.gp-alta-cebo{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}

.gp-alta-boton{
  width:100%;
  padding:.85em 1em !important;
  font-size:1em !important;
  background:var(--gp-navy,#002A6F) !important;
  color:#fff !important;
  border:0 !important;
  border-radius:3px !important;
  cursor:pointer;
}
.gp-alta-boton:hover{ background:var(--gp-blue-d,#005C94) !important; }
.gp-alta-pie{
  margin:.9em 0 0;
  font-size:.8em;
  color:var(--gp-mute,#5d6b80);
  line-height:1.5;
}

.gp-alta-ok{
  max-width:60ch;
  background:var(--gp-ok-bg,#e9f4ee);
  border:1px solid #c8e3d5;
  border-radius:4px;
  padding:1.6em 1.8em;
}
.gp-alta-ok h2{ margin-top:0; color:var(--gp-ok,#0f6b45); }

/* ==========================================================================
   Puerta B2B — entrar o solicitar cuenta, las dos a la vista
   Obligar a elegir entre «entrar» y «registrarse» antes de enseñar nada es
   la forma más rápida de perder al que todavía no sabe si tiene cuenta.
   ========================================================================== */
.gp-b2b-dos{
  display:grid;
  grid-template-columns:1fr 1.1fr;
  gap:48px;
  align-items:start;
  margin:0 0 2.6em;
  padding:0 0 2.2em;
  border-bottom:1px solid var(--gp-line,#dde3ec);
}
@media (max-width:900px){ .gp-b2b-dos{ grid-template-columns:1fr; gap:32px; } }

.gp-acceso{
  background:var(--gp-navy,#002A6F);
  color:#fff;
  border-radius:4px;
  padding:26px 28px 22px;
}
.gp-acceso h2{
  font-family:var(--gp-display,sans-serif);
  font-size:1.25em;
  text-transform:uppercase;
  margin:0 0 .9em;
  color:#fff;
}
.gp-acceso label{
  display:block;
  font-size:.84em;
  font-weight:600;
  margin-bottom:.35em;
  color:#fff;
}
.gp-acceso input[type=text],
.gp-acceso input[type=password]{
  width:100%;
  box-sizing:border-box;
  padding:.62em .8em;
  border:1px solid rgba(255,255,255,.28);
  border-radius:3px;
  background:rgba(255,255,255,.08);
  color:#fff;
  font-size:.95em;
}
.gp-acceso input::placeholder{ color:rgba(255,255,255,.55); }
.gp-acceso input:focus{ outline:2px solid #fff; outline-offset:-1px; }
.gp-acceso p{ margin:0 0 1em; }
.gp-acceso .login-remember label{
  font-weight:400;
  font-size:.82em;
  color:rgba(255,255,255,.8);
}
.gp-acceso .login-remember input{ margin-right:.4em; }
.gp-acceso input[type=submit]{
  width:100%;
  padding:.8em 1em;
  background:#fff;
  color:var(--gp-navy,#002A6F);
  border:0;
  border-radius:3px;
  font-size:1em;
  font-weight:600;
  cursor:pointer;
}
.gp-acceso input[type=submit]:hover{ background:var(--gp-line-s,#eef1f6); }
.gp-acceso-pie{ margin:.2em 0 0 !important; font-size:.83em; }
.gp-acceso-pie a{ color:#fff; text-decoration:underline; }

.gp-b2b-intro h2{
  font-family:var(--gp-display,sans-serif);
  font-size:1.25em;
  text-transform:uppercase;
  margin:0 0 .6em;
}
.gp-b2b-intro p{ font-size:.95em; line-height:1.55; }
.gp-b2b-intro-pie{ font-size:.85em !important; color:var(--gp-mute,#5d6b80); }
.gp-alta-nota{
  background:var(--gp-amber-bg,#fdf2e2);
  border:1px solid var(--gp-amber-line,#f0d9b4);
  border-radius:3px;
  padding:.9em 1.1em;
  margin:0 0 1.4em;
  font-size:.92em;
  line-height:1.5;
  color:var(--gp-amber,#8f5000);
}

/* --- Panel del profesional identificado --- */
.gp-panel-cab{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:28px;
  flex-wrap:wrap;
  padding:0 0 1.4em;
  border-bottom:1px solid var(--gp-line,#dde3ec);
  margin:0 0 1.8em;
}
.gp-panel-et{
  display:block;
  font-size:10px;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:600;
  color:var(--gp-mute,#5d6b80);
}
.gp-panel-cab h2{
  font-family:var(--gp-display,sans-serif);
  font-size:1.6em;
  text-transform:uppercase;
  margin:.15em 0 .1em;
}
.gp-panel-cif{
  margin:0;
  font-variant-numeric:tabular-nums;
  letter-spacing:.04em;
  color:var(--gp-mute,#5d6b80);
  font-size:.9em;
}
.gp-panel-tarifa{
  background:var(--gp-ok-bg,#e9f4ee);
  border:1px solid #c8e3d5;
  border-radius:4px;
  padding:.8em 1.3em;
  text-align:right;
  min-width:170px;
}
.gp-panel-tarifa span{
  display:block;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:600;
  color:var(--gp-ok,#0f6b45);
}
.gp-panel-tarifa strong{
  display:block;
  font-family:var(--gp-display,sans-serif);
  font-size:1.3em;
  line-height:1.2;
}
.gp-panel-tarifa em{ font-style:normal; font-size:.8em; color:var(--gp-ok,#0f6b45); }

.gp-panel-puertas{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:14px;
}
.gp-panel-puerta{
  display:block;
  background:#fff;
  border:1px solid var(--gp-line,#dde3ec);
  border-radius:4px;
  padding:16px 18px;
  text-decoration:none !important;
  color:var(--gp-ink,#1C242A) !important;
  transition:border-color .12s ease;
}
.gp-panel-puerta:hover{ border-color:var(--gp-blue,#0073B9); }
.gp-panel-puerta strong{
  display:block;
  font-family:var(--gp-display,sans-serif);
  font-size:1.02em;
  text-transform:uppercase;
  margin-bottom:.25em;
}
.gp-panel-puerta span{
  display:block;
  font-size:.84em;
  color:var(--gp-mute,#5d6b80);
  line-height:1.45;
}
.gp-panel-aviso{
  margin:1.6em 0 0;
  background:var(--gp-amber-bg,#fdf2e2);
  border:1px solid var(--gp-amber-line,#f0d9b4);
  border-radius:3px;
  padding:.9em 1.1em;
  font-size:.92em;
  color:var(--gp-amber,#8f5000);
}
.gp-panel-pie{
  margin:1.8em 0 0;
  font-size:.86em;
  color:var(--gp-mute,#5d6b80);
}
.gp-panel-pie a{ margin-left:.6em; }

/* --------------------------------------------------------------------------
 * El código de ubicación en la ficha pública (0.20.0)
 *
 * Discreto y SEPARADO de la referencia. Pegado a «Referencia Gallardo»
 * acabaría copiado dentro de ella y en recepción recibirían pedidos de
 * «la GD-210305 E01-V3». En gris, pequeño y con aire alrededor se lee como
 * lo que es: un código interno que no va con el pedido.
 * ----------------------------------------------------------------------- */
.gp-ficha-cod {
	margin: 1.4em 0 0;
	padding: 0;
	line-height: 1;
}

.gp-ficha-cod code {
	background: none;
	padding: 0;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 11px;
	letter-spacing: .09em;
	color: #aab2bc;
	user-select: all;
}

/* El código en la tarjeta del catálogo: al lado de la referencia y en gris.
   Aquí no cabe separarlo como en la ficha, así que la distinción la hace el
   color — la referencia en negro, esto en gris claro. */
.gp-card-cod {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: .82em;
	letter-spacing: .05em;
	color: #aab2bc;
	white-space: nowrap;
}
