/* ==========================================================================
   Programa de transportes · hoja de estilo propia
   Paleta «Verde menta y tinta» · Instrument Serif + Instrument Sans
   Maqueta de tarjetas suaves. Móvil primero; los @media de ajuste, al final.
   ========================================================================== */

:root {
  --fondo: #EFF8F4;
  --menta-2: #E2F3EB;
  --menta-3: #C9E6D9;
  --superficie: #FFFFFF;
  --tinta: #102A24;
  --tinta-2: #2A4740;
  --gris: #44605A;
  --verde: #0E7C66;
  --verde-hondo: #0B6654;
  --verde-tinta: #0A6352;
  --verde-claro: #9FE3CF;
  --acento: #F45D48;
  --acento-suave: #F7735F;
  --acento-tinta: #B53A28;
  --acento-papel: #FDE8E3;
  --noche: #0A201B;
  --linea: rgba(16, 42, 36, .12);
  --linea-fuerte: rgba(16, 42, 36, .22);

  --serif: 'Instrument Serif', 'Iowan Old Style', Georgia, serif;
  --sans: 'Instrument Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  --r-s: 12px;
  --r: 20px;
  --r-l: 28px;
  --sombra-1: 0 1px 2px rgba(16, 42, 36, .05), 0 6px 20px -8px rgba(16, 42, 36, .10);
  --sombra-2: 0 2px 4px rgba(16, 42, 36, .05), 0 22px 48px -18px rgba(16, 42, 36, .24);
  --sombra-3: 0 2px 6px rgba(16, 42, 36, .06), 0 40px 80px -30px rgba(16, 42, 36, .34);

  --ancho: 75rem;
  --cabecera: 4rem;
}

/* --- Base ---------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--cabecera) + 1.5rem);
}

body {
  margin: 0;
  background: var(--fondo);
  color: var(--tinta);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  font-kerning: normal;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img, svg { display: block; max-width: 100%; }
img { height: auto; }

h1, h2, h3, h4 {
  font-family: var(--serif);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -.012em;
  margin: 0 0 .5em;
  hyphens: none;
  -webkit-hyphens: none;
  text-wrap: balance;
  overflow-wrap: break-word;
}

h1 { font-size: clamp(2.3rem, 1.5rem + 3vw, 4.1rem); }
h2 { font-size: clamp(2rem, 1.45rem + 2.4vw, 3.5rem); }
h3 { font-size: clamp(1.4rem, 1.2rem + .7vw, 1.75rem); line-height: 1.15; }

p { margin: 0 0 1em; text-wrap: pretty; }

a {
  color: var(--verde-tinta);
  text-decoration-thickness: 1px;
  text-underline-offset: .2em;
  transition: color .2s ease, text-decoration-color .2s ease;
}
a:hover { color: var(--tinta); }

strong { font-weight: 600; }

:focus-visible {
  outline: 3px solid var(--acento);
  outline-offset: 3px;
  border-radius: 6px;
}

::selection { background: var(--menta-3); color: var(--tinta); }

.envoltura {
  width: min(100% - 2rem, var(--ancho));
  margin-inline: auto;
}

.saltar {
  position: absolute;
  left: 1rem;
  top: -4rem;
  z-index: 100;
  padding: .7rem 1.1rem;
  border-radius: var(--r-s);
  background: var(--tinta);
  color: #fff;
  font-weight: 600;
  text-decoration: none;
}
.saltar:focus { top: 1rem; color: #fff; }

.oculto {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* Siglas de carreteras y autopistas (AP-7, A-8, N-II): nunca partidas por el guion */
.sigla, abbr { white-space: nowrap; }

/* --- Botones ------------------------------------------------------------- */

.boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6em;
  min-height: 3rem;
  padding: .7rem 1.35rem;
  border: 1px solid transparent;
  border-radius: 999px;
  font: 600 1rem/1.2 var(--sans);
  letter-spacing: .005em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .25s ease, transform .25s ease;
}
.boton svg { width: 1.05em; height: 1.05em; flex: none; transition: transform .25s ease; }
.boton:hover svg { transform: translateX(3px); }
.boton:hover { transform: translateY(-1px); }

.boton--verde { background: var(--verde); color: #fff; box-shadow: 0 10px 24px -14px rgba(14, 124, 102, .9); }
.boton--verde:hover { background: var(--verde-hondo); color: #fff; }

/* Un solo color principal (verde); el coral es siempre secundario, con contorno */
.boton--acento,
.boton--papel { background: transparent; color: var(--acento-tinta); border: 1.5px solid var(--acento); }
.boton--acento:hover,
.boton--papel:hover { background: var(--acento-papel); color: var(--acento-tinta); border-color: var(--acento-tinta); }

.boton--linea { background: transparent; color: var(--tinta); border-color: var(--linea-fuerte); }
.boton--linea:hover { background: #fff; color: var(--tinta); border-color: var(--tinta); }

.boton--claro { background: transparent; color: #F2FAF6; border-color: rgba(242, 250, 246, .35); }
.boton--claro:hover { background: rgba(242, 250, 246, .08); color: #fff; border-color: #F2FAF6; }

.botones { display: flex; flex-wrap: wrap; gap: .75rem; }

/* --- Rótulos (antetítulos y numeraciones) -------------------------------- */

.w-antetitulo,
.antetitulo {
  display: flex;
  align-items: center;
  gap: .7rem;
  margin: 0 0 1.1rem;
  color: var(--verde-tinta);
  font: 600 .8125rem/1.35 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.w-antetitulo::before,
.antetitulo::before {
  content: "";
  flex: none;
  width: 1.75rem;
  height: 2px;
  border-radius: 2px;
  background: var(--acento);
}

.rotulo {
  display: flex;
  align-items: baseline;
  gap: .75rem;
  margin: 0 0 1.25rem;
  color: var(--gris);
  font: 600 .8125rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.rotulo span {
  font: 400 1.35rem/1 var(--serif);
  letter-spacing: 0;
  color: var(--acento-tinta);
}
.rotulo::after {
  content: "";
  flex: 1;
  max-width: 6rem;
  height: 1px;
  background: var(--linea-fuerte);
  align-self: center;
}

.entradilla,
.w-entradilla p {
  max-width: 36rem;
  color: var(--tinta-2);
  font-size: clamp(1.1875rem, 1.12rem + .25vw, 1.25rem);
  line-height: 1.55;
}
.w-entradilla p:last-child { margin-bottom: 0; }

/* --- Cabecera y menú ----------------------------------------------------- */

.cabecera {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(239, 248, 244, .88);
  -webkit-backdrop-filter: saturate(1.4) blur(14px);
  backdrop-filter: saturate(1.4) blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color .3s ease, box-shadow .3s ease;
}
.cabecera.es-flotante {
  border-bottom-color: var(--linea);
  box-shadow: 0 10px 30px -24px rgba(16, 42, 36, .5);
}

.cabecera__marco {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: min(100% - 2rem, var(--ancho));
  min-height: var(--cabecera);
  margin-inline: auto;
}

.marca {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  min-width: 0;
  color: var(--tinta);
  text-decoration: none;
}
.marca:hover { color: var(--tinta); }
.marca svg { flex: none; width: 2.1rem; height: 2.1rem; transition: transform .35s ease; }
.marca:hover svg { transform: rotate(-6deg); }
.marca__nombre {
  font: 400 clamp(1.2rem, 1.1rem + .4vw, 1.4rem)/1 var(--serif);
  letter-spacing: -.005em;
  white-space: nowrap;
}

.cabecera__boton {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  height: 2.75rem;
  padding: 0 .95rem;
  border: 1px solid var(--linea-fuerte);
  border-radius: 999px;
  background: #fff;
  color: var(--tinta);
  font: 600 .9375rem/1 var(--sans);
  cursor: pointer;
  flex: none;
}
.hamburguesa,
.hamburguesa::before,
.hamburguesa::after {
  display: block;
  width: 1.05rem;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform .25s ease, background-color .2s ease;
}
.hamburguesa { position: relative; }
.hamburguesa::before,
.hamburguesa::after { content: ""; position: absolute; left: 0; }
.hamburguesa::before { top: -6px; }
.hamburguesa::after { top: 6px; }
.cabecera__boton[aria-expanded="true"] .hamburguesa { background: transparent; }
.cabecera__boton[aria-expanded="true"] .hamburguesa::before { transform: translateY(6px) rotate(45deg); }
.cabecera__boton[aria-expanded="true"] .hamburguesa::after { transform: translateY(-6px) rotate(-45deg); }

/* Menú en móvil: panel plegable dentro del ancho de la cabecera */
.menu {
  flex-basis: 100%;
  padding: .5rem 0 1.25rem;
}
.js .menu {
  display: none;
  position: absolute;
  top: calc(100% + .25rem);
  left: 0;
  right: 0;
  max-height: calc(100vh - var(--cabecera) - 1.5rem);
  max-height: calc(100dvh - var(--cabecera) - 1.5rem);
  overflow-y: auto;
  padding: .75rem 1.1rem 1.25rem;
  border: 1px solid var(--linea);
  border-radius: var(--r);
  background: #fff;
  box-shadow: var(--sombra-3);
}
.js .menu.esta-abierto { display: block; }
html:not(.js) .cabecera__marco { flex-wrap: wrap; }
html:not(.js) .cabecera__boton { display: none; }

.menu__lista { list-style: none; margin: 0; padding: 0; }
.menu__item + .menu__item { border-top: 1px solid var(--linea); }

.menu__grupo > summary,
.menu__enlace {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .85rem .2rem;
  color: var(--tinta);
  font: 500 1.0625rem/1.3 var(--sans);
  letter-spacing: .005em;
  text-decoration: none;
  list-style: none;
  cursor: pointer;
  border-radius: 999px;
  transition: background-color .2s ease, color .2s ease;
}
.menu__grupo > summary::-webkit-details-marker { display: none; }
.menu__grupo > summary::after {
  content: "";
  width: .5rem;
  height: .5rem;
  margin: -.2rem .3rem 0;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform .25s ease, margin .25s ease;
}
.menu__grupo[open] > summary::after { transform: rotate(-135deg); margin-top: .25rem; }
.menu__enlace:hover, .menu__grupo > summary:hover { color: var(--verde-tinta); }

.menu__sub {
  list-style: none;
  display: grid;
  gap: .15rem;
  margin: 0 0 .75rem;
  padding: 0;
}
.menu__sub a {
  display: block;
  padding: .6rem .8rem;
  border-radius: var(--r-s);
  color: var(--tinta);
  text-decoration: none;
  transition: background-color .2s ease;
}
.menu__sub a:hover { background: var(--menta-2); color: var(--tinta); }
.menu__sub-nombre { display: block; font-weight: 600; font-size: 1rem; line-height: 1.3; }
.menu__sub-texto { display: block; color: var(--gris); font-size: .875rem; line-height: 1.4; }

.menu__cta { width: 100%; margin-top: 1rem; }

/* --- Portada: héroe ------------------------------------------------------ */

.portada-heroe {
  position: relative;
  isolation: isolate;
  padding: 2.5rem 0 3rem;
  overflow: hidden;
}
.portada-heroe::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image:
    linear-gradient(rgba(14, 124, 102, .08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(14, 124, 102, .08) 1px, transparent 1px);
  background-size: 44px 44px;
  -webkit-mask-image: radial-gradient(ellipse 70% 70% at 75% 30%, #000 20%, transparent 75%);
  mask-image: radial-gradient(ellipse 70% 70% at 75% 30%, #000 20%, transparent 75%);
}
.portada-heroe::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 38rem;
  height: 38rem;
  right: -14rem;
  top: -12rem;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(14, 124, 102, .14), transparent 65%);
}

.portada-heroe__marco {
  display: grid;
  gap: 2.5rem;
  align-items: center;
}

.portada-heroe h1 {
  max-width: 15ch;
  margin-bottom: 1.25rem;
  font-size: clamp(2.45rem, 1.5rem + 4vw, 4.9rem);
  line-height: 1.02;
}
.realce {
  color: var(--verde);
  background: linear-gradient(transparent 82%, rgba(244, 93, 72, .32) 82%, rgba(244, 93, 72, .32) 94%, transparent 94%);
  padding-inline: .04em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.portada-heroe .botones { margin-top: 1.75rem; }

.garantias {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem 1.25rem;
  margin: 1.5rem 0 0;
  padding: 0;
  list-style: none;
  color: var(--gris);
  font-size: .9rem;
}
.garantias li { display: inline-flex; align-items: center; gap: .45rem; }
.garantias svg { width: 1rem; height: 1rem; color: var(--verde); flex: none; }

/* Teléfono del héroe: contacto, no una ventaja más; icono propio y enlace tel: */
.tel-heroe {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .3rem .65rem;
  margin: 1.1rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--linea);
  color: var(--gris);
  font-size: .875rem;
}
.tel-heroe svg {
  flex: none;
  width: 2.25rem;
  height: 2.25rem;
  padding: .5rem;
  border-radius: 50%;
  background: var(--acento-papel);
  color: var(--acento-tinta);
}
.tel-heroe a { color: var(--tinta); font: 400 1.45rem/1.1 var(--serif); text-decoration: none; white-space: nowrap; }
.tel-heroe a:hover { color: var(--verde-tinta); text-decoration: underline; text-decoration-thickness: 1px; }

/* Panel de muestra de CabiTrans PRO con la ficha de datos */
.panel-one {
  position: relative;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-3);
  overflow: hidden;
}
.panel-one__barra {
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: .8rem 1.1rem;
  border-bottom: 1px solid var(--linea);
  background: #F7FBF9;
}
.panel-one__barra i {
  width: .6rem;
  height: .6rem;
  border-radius: 50%;
  background: var(--menta-3);
}
.panel-one__barra i:first-child { background: var(--acento); }
.panel-one__direccion {
  margin: 0 0 0 .6rem;
  padding: .2rem .7rem;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--linea);
  color: var(--gris);
  font: 500 .8rem/1.3 var(--mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
/* Pestañas: siempre en una sola línea */
.panel-one__secciones {
  display: flex;
  flex-wrap: nowrap;
  gap: .15rem;
  margin: 0;
  padding: .6rem 1.1rem 0;
  list-style: none;
  border-bottom: 1px solid var(--linea);
}
.panel-one__secciones li {
  flex: none;
  padding: .45rem .7rem .55rem;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  color: var(--gris);
  font-size: .8125rem;
  font-weight: 600;
  white-space: nowrap;
}
.panel-one__secciones li.es-activa { border-bottom-color: var(--verde); color: var(--tinta); }

.panel-one__cuerpo { padding: 1rem 1.1rem 1.1rem; }
.panel-one__cabeza {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .6rem;
}
.panel-one__cabeza p { margin: 0; font: 400 1.35rem/1.1 var(--serif); }
.panel-one__nuevo {
  flex: none;
  padding: .35rem .75rem;
  border-radius: 999px;
  background: var(--verde);
  color: #fff;
  font-size: .75rem;
  font-weight: 600;
  white-space: nowrap;
}

.panel-one__envios { margin: 0; padding: 0; list-style: none; }
.panel-one__envios li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .1rem .75rem;
  align-items: center;
  padding: .65rem 0;
  border-top: 1px solid var(--linea);
}
.panel-one__envios li:first-child { border-top: 0; }
.panel-one__ruta { font-weight: 600; font-size: .9375rem; line-height: 1.3; }
.panel-one__tipo { grid-column: 1; color: var(--gris); font-size: .8125rem; line-height: 1.35; }
.estado {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .25rem .6rem;
  border-radius: 999px;
  font-size: .75rem;
  font-weight: 600;
  white-space: nowrap;
}
.estado::before { content: ""; width: .45rem; height: .45rem; border-radius: 50%; background: currentColor; }
.estado--ruta { background: var(--acento-papel); color: var(--acento-tinta); }
.estado--recogida { background: #EAF0EE; color: var(--tinta-2); }
.estado--entregado { background: var(--menta-2); color: var(--verde-tinta); }

.panel-one__ofertas {
  margin-top: .85rem;
  padding: .8rem .9rem .5rem;
  border-radius: var(--r-s);
  background: #F7FBF9;
  border: 1px solid var(--linea);
}
.panel-one__subtitulo {
  margin: 0 0 .35rem;
  color: var(--gris);
  font: 600 .6875rem/1.35 var(--sans);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.panel-one__ofertas ul { margin: 0; padding: 0; list-style: none; }
.panel-one__ofertas li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .4rem 0;
  font-size: .875rem;
  border-top: 1px dashed var(--linea);
}
.panel-one__ofertas li:first-child { border-top: 0; }
.panel-one__precio {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  color: var(--verde-tinta);
  font-size: .8125rem;
  font-weight: 600;
  white-space: nowrap;
}
.panel-one__precio::before {
  content: "";
  width: 2.75rem;
  height: .5rem;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--menta-3), var(--menta-2));
}

.panel-one__pie {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding: .85rem 1.25rem;
  border-top: 1px solid var(--linea);
  background: var(--acento-papel);
  color: var(--acento-tinta);
  font-size: .875rem;
  font-weight: 600;
}
.panel-one__pie a { color: var(--tinta); white-space: nowrap; }
.panel-one__pie a:hover { color: var(--verde-tinta); }

/* Ficha de la plataforma en el héroe de la portada */
.ficha-portada {
  position: relative;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-3);
  overflow: hidden;
}
.ficha-portada__cabeza {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding: 1rem 1.35rem;
  border-bottom: 1px solid var(--linea);
  background: #F7FBF9;
  color: var(--verde-tinta);
  font: 600 .75rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.ficha-portada__cabeza span:last-child {
  flex: none;
  padding: .25rem .65rem;
  border-radius: 999px;
  background: var(--acento-papel);
  color: var(--acento-tinta);
  letter-spacing: .06em;
}
.ficha-portada .w-datos { padding: .3rem 1.35rem .5rem; border: 0; border-radius: 0; box-shadow: none; }
.ficha-portada__pie {
  margin: 0;
  padding: .9rem 1.35rem;
  border-top: 1px solid var(--linea);
  color: var(--gris);
  font-size: .875rem;
}
.ficha-portada__pie a { color: var(--verde-tinta); font-weight: 600; }

/* Vista grande del área de cliente: menú de secciones, envíos y detalle del envío */
.panel-one--grande {
  border-color: rgba(242, 250, 246, .12);
  box-shadow: 0 50px 100px -40px rgba(0, 0, 0, .65);
  color: var(--tinta);
}
.panel-one__app { display: grid; }
.panel-one__menu {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem;
  margin: 0;
  padding: .75rem 1rem;
  list-style: none;
  border-bottom: 1px solid var(--linea);
  background: #F7FBF9;
}
.panel-one__menu li {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .45rem .75rem;
  border-radius: 10px;
  color: var(--gris);
  font-size: .875rem;
  font-weight: 600;
  white-space: nowrap;
}
.panel-one__menu svg { flex: none; width: 1.05rem; height: 1.05rem; }
.panel-one__menu li.es-activa { background: var(--menta-2); color: var(--verde-tinta); }
.panel-one--grande .panel-one__cuerpo { padding: 1.1rem 1.25rem 1.25rem; }
.panel-one__detalle {
  padding: 1.1rem 1.25rem 1.25rem;
  border-top: 1px solid var(--linea);
  background: #FBFDFC;
}
.panel-one__hitos { display: grid; margin: .4rem 0 1.1rem; padding: 0; list-style: none; }
.panel-one__hitos li {
  position: relative;
  padding: .35rem 0 .35rem 1.6rem;
  color: var(--tinta-2);
  font-size: .875rem;
  line-height: 1.4;
}
.panel-one__hitos li::before {
  content: "";
  position: absolute;
  left: .3rem;
  top: .75rem;
  width: .55rem;
  height: .55rem;
  border-radius: 50%;
  background: var(--verde);
}
.panel-one__hitos li::after {
  content: "";
  position: absolute;
  left: .57rem;
  top: 1.35rem;
  bottom: -.4rem;
  width: 1px;
  background: var(--menta-3);
}
.panel-one__hitos li:last-child::after { display: none; }
.panel-one__hitos li.es-actual { color: var(--tinta); font-weight: 600; }
.panel-one__hitos li.es-actual::before { background: var(--acento); box-shadow: 0 0 0 4px var(--acento-papel); }
.panel-one__hitos li.es-pendiente { color: var(--gris); }
.panel-one__hitos li.es-pendiente::before { background: #fff; border: 1.5px solid var(--linea-fuerte); }
.panel-one__docs { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.panel-one__docs li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .6rem .8rem;
  border: 1px solid var(--linea);
  border-radius: var(--r-s);
  background: #fff;
  font-size: .875rem;
  font-weight: 600;
}
.panel-one__docs li span:last-child { color: var(--gris); font-size: .8125rem; font-weight: 500; text-align: right; }

/* --- Ficha de datos (.w-datos) ------------------------------------------ */

.w-datos {
  display: grid;
  margin: 0;
  padding: .4rem 1.35rem;
  border: 1px solid var(--linea);
  border-radius: var(--r);
  background: #fff;
  box-shadow: var(--sombra-1);
}
.w-datos__fila {
  display: grid;
  grid-template-columns: minmax(6.5rem, 38%) minmax(0, 1fr);
  gap: 1rem;
  align-items: baseline;
  padding: .85rem 0;
  border-top: 1px solid var(--linea);
}
.w-datos__fila:first-child { border-top: 0; }
/* Columna de etiquetas común a todas las filas y medida por la etiqueta más larga
   (hasta la mitad de la ficha): «Hacia Valladolid» no se parte ni descuadra la tabla */
@supports (grid-template-columns: subgrid) {
  .w-datos { grid-template-columns: fit-content(52%) minmax(0, 1fr); column-gap: 1.25rem; }
  .w-datos__fila { grid-column: 1 / -1; grid-template-columns: subgrid; }
}
.w-datos dt {
  color: var(--gris);
  font: 600 .75rem/1.35 var(--sans);
  letter-spacing: .1em;
  text-transform: uppercase;
  hyphens: none;
  text-wrap: balance;
}
/* Valores en el mismo cuerpo y peso en todas las filas: ninguna cifra suelta en grande */
.w-datos dd {
  margin: 0;
  color: var(--tinta);
  font: 500 1rem/1.4 var(--sans);
  hyphens: none;
  overflow-wrap: break-word;
  text-wrap: balance;
}

/* --- Cotizador ----------------------------------------------------------- */

.portada-cotizar {
  position: relative;
  z-index: 2;
  width: min(100% - 2rem, 50rem);
  margin-inline: auto;
}
.portada-cotizar__rotulo {
  display: flex;
  justify-content: center;
  margin: 0 0 1rem;
}
.portada-cotizar__rotulo span {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .45rem 1rem;
  border-radius: 999px;
  background: var(--verde-tinta);
  color: #fff;
  font-size: .875rem;
  font-weight: 600;
  box-shadow: 0 10px 24px -14px rgba(14, 124, 102, .9);
}
.portada-cotizar__rotulo span::before {
  content: "";
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background: var(--verde-claro);
  box-shadow: 0 0 0 0 rgba(159, 227, 207, .6);
  animation: latido 2.4s ease-out infinite;
}
@keyframes latido {
  0% { box-shadow: 0 0 0 0 rgba(159, 227, 207, .6); }
  70%, 100% { box-shadow: 0 0 0 .55rem rgba(159, 227, 207, 0); }
}
.portada-cotizar__nota {
  max-width: 40rem;
  margin: 1.1rem auto 0;
  color: var(--gris);
  font-size: .9375rem;
  text-align: center;
}

.w-cotizador {
  width: 100%;
  max-width: 50rem;
  min-height: 34rem;
  margin-inline: auto;
  padding: .75rem;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-3);
}
.w-cotizador__titulo {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: .35rem .5rem 1rem;
  color: var(--verde-tinta);
  font: 600 .8125rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.w-cotizador__titulo::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--linea);
}

/* --- Bloques de la portada ---------------------------------------------- */

.bloque { padding: clamp(4rem, 3rem + 5vw, 7.5rem) 0; }
.bloque--blanco { background: #fff; }
.bloque--menta { background: var(--menta-2); }
.bloque--tinta { background: var(--tinta); color: #DCEDE6; }
.bloque--tinta h2, .bloque--tinta h3 { color: #F4FBF8; }
.bloque--tinta .rotulo { color: #B9D6CC; }
.bloque--tinta .rotulo span { color: var(--acento); }
.bloque--tinta .rotulo::after { background: rgba(242, 250, 246, .25); }
.bloque--tinta a:not(.boton) { color: var(--verde-claro); }
.bloque--tinta a:not(.boton):hover { color: #fff; }

.portada-cotizar + .bloque { margin-top: clamp(3rem, 2rem + 4vw, 5rem); }

.cabeza { max-width: 46rem; margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.25rem); }
.cabeza h2 { margin-bottom: .45em; }
.cabeza p { color: var(--tinta-2); font-size: 1.125rem; max-width: 40rem; }
.bloque--tinta .cabeza p { color: #CFE4DC; }

.dos { display: grid; gap: 2.5rem; }

.prosa p { max-width: 38rem; }
.prosa p + h3 { margin-top: 1.75rem; }

/* Antes / con PRO */
.comparativa { display: grid; gap: 1rem; }
.comparativa__lado {
  padding: 1.5rem 1.5rem 1.25rem;
  border-radius: var(--r);
}
.comparativa__lado h3 {
  margin: 0 0 1rem;
  font: 600 .8125rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.comparativa__lado ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.comparativa__lado li { display: grid; grid-template-columns: 1.5rem 1fr; gap: .65rem; line-height: 1.45; }
.comparativa__lado li svg { width: 1.5rem; height: 1.5rem; margin-top: -.05rem; }
.comparativa__antes { background: var(--fondo); color: var(--tinta-2); }
.comparativa__antes h3 { color: var(--gris); }
.comparativa__antes li svg { color: var(--gris); }
.comparativa__con {
  background: #fff;
  border: 1px solid var(--menta-3);
  box-shadow: var(--sombra-2);
}
.comparativa__con h3 { color: var(--verde-tinta); }
.comparativa__con li svg {
  padding: .2rem;
  border-radius: 50%;
  background: var(--verde);
  color: #fff;
}

/* Funciones de la plataforma */
.funciones {
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr);
  counter-reset: funcion;
}
.funcion {
  counter-increment: funcion;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  padding: 1.5rem 1.5rem 1.35rem;
  border: 1px solid transparent;
  border-radius: 22px;
  background: #fff;
  box-shadow: var(--sombra-1);
  color: var(--tinta);
  text-decoration: none;
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.funcion::before {
  content: counter(funcion, decimal-leading-zero);
  position: absolute;
  top: 1.35rem;
  right: 1.5rem;
  color: var(--gris);
  font: 400 1.1rem/1 var(--serif);
}
.funcion:hover {
  transform: translateY(-3px);
  border-color: var(--menta-3);
  box-shadow: var(--sombra-2);
  color: var(--tinta);
}
.funcion__icono {
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  border-radius: 14px;
  background: var(--menta-2);
  color: var(--verde);
  transition: background-color .3s ease, color .3s ease;
}
.funcion:hover .funcion__icono { background: var(--verde); color: #fff; }
.funcion__icono svg { width: 1.6rem; height: 1.6rem; }
.funcion h3 { margin: .2rem 0 0; font-size: 1.65rem; }
.funcion p { flex: 1; margin: 0; color: var(--gris); font-size: .975rem; line-height: 1.55; }
.funcion__ir {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  color: var(--verde-tinta);
  font-size: .9rem;
  font-weight: 600;
}
.funcion__ir svg { width: 1rem; height: 1rem; transition: transform .25s ease; }
.funcion:hover .funcion__ir svg { transform: translateX(4px); }

/* Banda de foto con cita */
.banda-foto { position: relative; }
.banda-foto__imagen img {
  width: 100%;
  height: clamp(18rem, 12rem + 26vw, 36rem);
  object-fit: cover;
}
.banda-foto__cita {
  position: relative;
  margin-top: -4rem;
}
.cita {
  position: relative;
  max-width: 36rem;
  margin: 0;
  padding: 2rem 1.75rem 1.75rem;
  border-radius: var(--r-l);
  background: var(--tinta);
  color: #F2FAF6;
  box-shadow: var(--sombra-3);
}
.cita::before {
  content: "“";
  position: absolute;
  top: -.6rem;
  left: 1.5rem;
  color: var(--acento);
  font: 400 5.5rem/1 var(--serif);
}
.cita p {
  margin: .75rem 0 1.1rem;
  font: 400 clamp(1.45rem, 1.2rem + 1vw, 2.05rem)/1.22 var(--serif);
  text-wrap: balance;
}
.cita footer { color: #B9D6CC; font-size: .875rem; letter-spacing: .02em; }

/* Cifras de la ficha: abiertas, sin tarjeta, sobre un filete de tinta */
.cifras {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem 1.5rem;
  margin: 0;
}
.cifra {
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-end;
  gap: .5rem;
  padding: 1rem 0 0;
  border-top: 2px solid var(--tinta);
}
.cifra dd {
  margin: 0;
  color: var(--verde);
  font: 400 clamp(3rem, 2.4rem + 2vw, 4.25rem)/.95 var(--serif);
  letter-spacing: -.02em;
}
.cifra:nth-child(2) dd, .cifra:nth-child(3) dd { color: var(--acento-tinta); }
.cifra dt { color: var(--tinta-2); font-size: .9375rem; line-height: 1.4; }

/* Llamada a abrir la cuenta (mitad de la portada) */
.llamada {
  display: grid;
  gap: 1.5rem;
  align-items: center;
  margin-top: clamp(2.5rem, 2rem + 2vw, 4rem);
  padding: clamp(1.5rem, 1rem + 2.5vw, 2.75rem);
  border-radius: var(--r-l);
  background: var(--acento-papel);
}
.llamada__texto { margin: 0; font: 400 clamp(1.6rem, 1.3rem + 1.2vw, 2.4rem)/1.12 var(--serif); text-wrap: balance; }
.llamada__texto span { display: block; margin-top: .5rem; color: var(--tinta-2); font: 400 1rem/1.5 var(--sans); }

/* Ficha técnica de la API */
.api-ficha {
  border: 1px solid rgba(242, 250, 246, .1);
  border-radius: var(--r-l);
  background: var(--noche);
  box-shadow: 0 40px 80px -40px rgba(0, 0, 0, .6);
  overflow: hidden;
}
.api-ficha__barra {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding: .9rem 1.35rem;
  border-bottom: 1px solid rgba(242, 250, 246, .1);
  color: #B9D6CC;
  font: 600 .75rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.api-ficha__barra span:last-child {
  padding: .2rem .6rem;
  border-radius: 999px;
  background: rgba(159, 227, 207, .14);
  color: var(--verde-claro);
  letter-spacing: .06em;
}
.api-ficha dl { margin: 0; padding: .5rem 1.35rem 1rem; }
.api-ficha dl div {
  display: grid;
  grid-template-columns: minmax(7rem, 36%) minmax(0, 1fr);
  gap: 1rem;
  padding: .8rem 0;
  border-top: 1px dashed rgba(242, 250, 246, .14);
}
.api-ficha dl div:first-child { border-top: 0; }
.api-ficha dt { color: #9DC3B7; font: 500 .8125rem/1.5 var(--mono); }
.api-ficha dd { margin: 0; color: #F2FAF6; font: 500 .9375rem/1.5 var(--mono); overflow-wrap: break-word; }
.api-ficha dd b { color: var(--verde-claro); font-weight: 500; }

/* Para quién: bloque asimétrico con foto */
.asimetrico { display: grid; gap: 2.5rem; align-items: center; }
.asimetrico__foto { position: relative; margin: 0; }
.asimetrico__foto::before {
  content: "";
  position: absolute;
  inset: 1.25rem -1rem -1rem 1.25rem;
  z-index: 0;
  border-radius: var(--r-l);
  background: var(--menta-3);
}
.asimetrico__foto img {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--r-l);
  box-shadow: var(--sombra-2);
}

/* Bloque a sangre: la foto llega al borde de la pantalla y el texto ocupa la otra mitad,
   sin marco ni tarjeta. La imagen rellena su caja (absoluta + cover): nunca deja franja */
.bloque--sangre { padding: 0; overflow: hidden; }
.bloque--sangre .asimetrico { gap: 0; }
.bloque--sangre .asimetrico__foto { min-height: 18rem; }
.bloque--sangre .asimetrico__foto::before { content: none; }
.bloque--sangre .asimetrico__foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  border-radius: 0;
  box-shadow: none;
}
.bloque--sangre .prosa { padding: clamp(3rem, 2rem + 4vw, 5rem) 1rem; }

.rutas { list-style: none; margin: 1.75rem 0 0; padding: 0; border-bottom: 1px solid var(--linea); }
.rutas li { border-top: 1px solid var(--linea); }
.rutas a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .2rem 1rem;
  align-items: center;
  padding: 1.1rem .25rem;
  color: var(--tinta);
  text-decoration: none;
  transition: padding .25s ease, background-color .25s ease;
}
.rutas a:hover { padding-inline: .9rem .5rem; background: var(--fondo); color: var(--tinta); }
.rutas__nombre { font: 400 1.5rem/1.15 var(--serif); }
.rutas__texto { grid-column: 1; color: var(--gris); font-size: .9375rem; line-height: 1.45; }
.rutas svg {
  grid-row: 1 / span 2;
  grid-column: 2;
  width: 2.25rem;
  height: 2.25rem;
  padding: .55rem;
  border-radius: 50%;
  background: var(--menta-2);
  color: var(--verde-tinta);
  transition: background-color .25s ease, color .25s ease;
}
.rutas a:hover svg { background: var(--verde); color: #fff; }

/* Alta en tres pasos */
.pasos { list-style: none; margin: 0; padding: 0; counter-reset: paso; }
.paso {
  counter-increment: paso;
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr);
  gap: 1.1rem;
  padding: 1.5rem 0;
  border-top: 1px solid var(--linea);
}
.paso:last-child { border-bottom: 1px solid var(--linea); }
.paso::before {
  content: counter(paso);
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  border: 1.5px solid var(--acento);
  border-radius: 50%;
  color: var(--acento-tinta);
  font: 400 1.75rem/1 var(--serif);
}
.paso h3 { margin: .15rem 0 .35rem; font-size: 1.6rem; }
.paso p { margin: 0; color: var(--tinta-2); }

.tras-pasos { margin-top: 1.5rem; color: var(--tinta-2); max-width: 38rem; }

.demo {
  padding: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-2);
}
.demo__icono {
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  margin-bottom: 1.1rem;
  border-radius: 14px;
  background: var(--acento-papel);
  color: var(--acento-tinta);
}
.demo__icono svg { width: 1.6rem; height: 1.6rem; }
.demo h3 { font-size: 1.9rem; }
.demo p { color: var(--tinta-2); }
.demo .botones { margin-top: 1.5rem; }
.demo__horario {
  margin: 1.25rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--linea);
  color: var(--gris);
  font-size: .875rem;
}

/* Qué no transporta */
.aviso-red {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 1rem 1.25rem;
  align-items: start;
  padding: 1.5rem 0;
  border-block: 1px solid var(--linea-fuerte);
}
.aviso-red__icono {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: var(--acento-papel);
  color: var(--acento-tinta);
}
.aviso-red__icono svg { width: 1.4rem; height: 1.4rem; }
.aviso-red h2 { margin: .15rem 0 .35rem; font-size: clamp(1.5rem, 1.3rem + .6vw, 1.9rem); }
.aviso-red p { margin: 0; color: var(--tinta-2); }

/* Franja de la vista del panel: los enlaces del panel conservan sus colores sobre blanco */
.bloque--captura .cabeza { max-width: 52rem; }
.bloque--tinta .panel-one a:not(.boton) { color: var(--tinta); }
.bloque--tinta .panel-one a:not(.boton):hover { color: var(--verde-tinta); }
.captura__nota { margin: 1.1rem 0 0; color: #B9D6CC; font-size: .875rem; }

/* --- Destinos de la portada: índice geográfico --------------------------- */

.destinos__subtitulo {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 3rem 0 1.25rem;
  color: var(--gris);
  font: 600 .8125rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.destinos__subtitulo::after { content: ""; flex: 1; height: 1px; background: var(--linea-fuerte); }
.destinos__subtitulo:first-of-type { margin-top: 0; }

/* Destinos como índice de atlas, sin tarjetas: cada comunidad es una entrada con filete
   superior de tinta (nombre en serif, recuento y capital), sus provincias o municipios en un
   plegable y un «ver todas» a su página. Entradas en columnas fijas; Europa, banda propia */
.regiones {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0 2.5rem;
  align-items: start;
}
.region {
  min-width: 0;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 1rem;
  align-content: start;
  padding: 1.35rem 0 1.75rem;
  border-top: 2px solid var(--tinta);
  transition: border-color .25s ease;
}
.region:hover { border-top-color: var(--verde); }
/* Jerarquía: la comunidad manda (serif grande); recuento y capital en una línea legible;
   provincias y municipios, siempre plegados */
.region__nombre { grid-column: 1; margin: 0; font-size: clamp(1.85rem, 1.6rem + .9vw, 2.35rem); line-height: 1.05; }
.region__nombre a { color: var(--tinta); text-decoration: none; }
.region__nombre a:hover { color: var(--verde-tinta); text-decoration: underline; text-decoration-thickness: 1px; }
.region__cifra {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .15rem;
  margin: 0;
  color: var(--gris);
  font: 600 .75rem/1.2 var(--sans);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.region__cifra b {
  color: var(--acento-tinta);
  font: 400 2.1rem/1 var(--serif);
  letter-spacing: -.02em;
}
.region__dato { grid-column: 1; margin: .3rem 0 0; color: var(--tinta-2); font-size: .9688rem; line-height: 1.4; }
.region__destacadas {
  grid-column: 1 / -1;
  display: grid;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--linea);
}
.region__destacadas li { border-bottom: 1px solid var(--linea); }
.region__destacadas a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .55rem 0;
  color: var(--tinta);
  font-weight: 600;
  font-size: .9688rem;
  line-height: 1.3;
  text-decoration: none;
  transition: color .2s ease, padding .2s ease;
}
.region__destacadas a::after {
  content: "";
  flex: none;
  width: .9rem;
  height: .9rem;
  background: currentColor;
  opacity: .45;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: opacity .2s ease, transform .2s ease;
}
.region__destacadas a:hover { color: var(--verde-tinta); padding-left: .3rem; }
.region__destacadas a:hover::after { opacity: 1; transform: translateX(2px); }
/* Tarjeta ligera: nombre, cifra y capital a la vista; las provincias o municipios, en un solo plegable */
.region__mas { grid-column: 1 / -1; margin-top: 1.1rem; padding-top: .6rem; border-top: 1px solid var(--linea); }
.region:not(.region--europa) .region__dato { margin-top: .5rem; color: var(--tinta); font-weight: 600; }
.region__todas {
  order: 5;
  grid-column: 1 / -1;
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin-top: .8rem;
  padding-top: .7rem;
  border-top: 1px dashed var(--linea-fuerte);
  width: 100%;
  color: var(--acento-tinta);
  font-size: .875rem;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
}
.region__todas::after {
  content: "";
  flex: none;
  width: .9rem;
  height: .9rem;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .2s ease;
}
.region__todas:hover { color: var(--tinta); }
.region__todas:hover::after { transform: translateX(3px); }
.region__mas > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .35rem 0 .1rem;
  color: var(--verde-tinta);
  font-size: .9375rem;
  font-weight: 600;
  list-style: none;
  cursor: pointer;
}
.region__mas > summary::-webkit-details-marker { display: none; }
.region__mas > summary::after {
  content: "";
  flex: none;
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 50%;
  background:
    linear-gradient(var(--verde-tinta), var(--verde-tinta)) center / 9px 1.5px no-repeat,
    linear-gradient(var(--verde-tinta), var(--verde-tinta)) center / 1.5px 9px no-repeat,
    var(--menta-2);
  transition: transform .25s ease;
}
.region__mas[open] > summary::after { transform: rotate(45deg); }
.region__lista {
  margin: .5rem 0 .2rem;
  padding: 0;
  list-style: none;
  columns: 2;
  column-gap: 1.25rem;
}
.region__lista--larga { max-height: 15rem; overflow-y: auto; overscroll-behavior: contain; padding-right: .25rem; }
.region__lista li { break-inside: avoid; padding: .14rem 0; }
.region__lista a {
  color: var(--tinta);
  font-size: .9375rem;
  line-height: 1.35;
  text-decoration: none;
}
.region__lista a:hover { color: var(--verde-tinta); text-decoration: underline; }

.region--europa .region__todas { color: #FF9E8F; border-top-color: rgba(242, 250, 246, .2); }
.region--europa .region__todas:hover { color: #fff; }
.region--europa { grid-column: 1 / -1; margin-top: 1.5rem; padding: 1.75rem 1.5rem 1.5rem; border-top: 0; border-radius: var(--r-l); background: var(--tinta); }
.region--europa:hover { background: var(--tinta); }
.region--europa .region__destacadas { border-top-color: rgba(242, 250, 246, .16); }
.region--europa .region__destacadas li { border-bottom-color: rgba(242, 250, 246, .16); }
.region--europa .region__destacadas a { color: #F4FBF8; }
.region--europa .region__destacadas a:hover { color: var(--verde-claro); }
.region--europa .region__nombre a { color: #F4FBF8; }
.region--europa .region__nombre a:hover { color: var(--verde-claro); }
.region--europa .region__cifra { color: #B9D6CC; }
.region--europa .region__cifra b { color: #FF8A78; }
.region--europa .region__dato { color: #CFE4DC; }
.region--europa .region__mas { border-top-color: rgba(242, 250, 246, .16); }
.region--europa .region__mas > summary { color: var(--verde-claro); }
.region--europa .region__lista a { color: #E4F1EC; }
.region--europa .region__lista a:hover { color: var(--verde-claro); }

/* --- Páginas interiores -------------------------------------------------- */

/* El <main> es una columna flexible: cada tipo de página puede reordenar sus módulos */
.pg { display: flex; flex-direction: column; }
.pg > * { min-width: 0; }

.pg-heroe {
  position: relative;
  isolation: isolate;
  padding: 1.75rem 0 2.75rem;
  background: var(--menta-2);
}
.pg-heroe::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: radial-gradient(rgba(14, 124, 102, .2) 1.2px, transparent 1.3px);
  background-size: 22px 22px;
  -webkit-mask-image: linear-gradient(100deg, transparent 35%, #000 85%);
  mask-image: linear-gradient(100deg, transparent 35%, #000 85%);
}
.pg-heroe__marco {
  display: grid;
  gap: 2rem;
  align-items: start;
  width: min(100% - 2rem, var(--ancho));
  margin-inline: auto;
}
/* Móvil: texto, botón o cotizador, y después foto y ficha */
.pg-heroe__texto { order: 0; min-width: 0; }
.pg-cotizar { order: 1; min-width: 0; }
.pg-heroe__lado { order: 2; display: grid; min-width: 0; }
.pg-cotizar:empty,
.pg-heroe__foto:empty,
.pg-heroe__datos:empty { display: none; }
.pg-heroe__lado:not(:has(.w-foto, .w-datos)) { display: none; }

.pg-heroe h1 { max-width: 18ch; margin: .2rem 0 1.1rem; }

/* Entradilla: el primer párrafo es el lead; el resto baja a cuerpo de texto */
.pg-heroe .w-entradilla p { max-width: 34rem; }
.pg-heroe .w-entradilla p + p {
  margin-top: .9rem;
  font-size: 1.0625rem;
  line-height: 1.6;
}

/* Botón de la fábrica en lugar del cotizador: tarjeta de acción (rótulo, frase de valor en
   el cuerpo de texto y botón; en escritorio, el botón a la derecha). Se lee como un CTA,
   no como una cita: sin filete lateral ni serif mediana */
.pg-cotizar > .w-cta-linea { margin: 0; }
.pg-cotizar:has(> .w-cta-linea) {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .55rem;
  align-content: center;
  padding: 1.5rem 1.5rem 1.6rem;
  border: 1px solid var(--linea);
  border-radius: var(--r);
  background: #fff;
  box-shadow: var(--sombra-2);
}
.pg-cotizar:has(> .w-cta-linea) > .w-cta-linea { order: 3; margin-top: .6rem; }
.pg-cotizar:has(> .w-cta-linea)::after {
  content: "Precio de varios operadores al momento, sin registrarte. La cuenta de empresa es gratis.";
  order: 2;
  max-width: 34rem;
  color: var(--tinta);
  font: 500 1.125rem/1.5 var(--sans);
  text-wrap: pretty;
}
.pg-cotizar:has(> .w-cta-linea)::before {
  content: "Cotizador · gratis";
  order: 1;
  display: block;
  white-space: nowrap;
  padding: .1rem 0 .1rem 2.2rem;
  color: var(--verde-tinta);
  font: 600 .75rem/1.6rem var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230A6352' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='3' width='14' height='18' rx='2.5'/%3E%3Cpath d='M8 7h8M8.5 11h.01M12 11h.01M15.5 11h.01M8.5 14.5h.01M12 14.5h.01M15.5 14.5h.01M8.5 18h.01M12 18h3.5'/%3E%3C/svg%3E") left center / 1.5rem no-repeat;
}
.pg-heroe .pg-cotizar:has(> .w-cta-linea) .w-cta {
  width: 100%;
  justify-content: center;
  min-height: 3.25rem;
  border-color: var(--verde);
  background: var(--verde);
  color: #fff;
  box-shadow: 0 10px 24px -14px rgba(14, 124, 102, .9);
}
.pg-heroe .pg-cotizar:has(> .w-cta-linea) .w-cta:hover { border-color: var(--verde-hondo); background: var(--verde-hondo); color: #fff; }

/* Foto apaisada y contenida en el héroe, con la ficha montada encima sin taparla.
   En el héroe la foto va sin pie: nada encima de la imagen ni entre la foto y la ficha
   (el texto alternativo sigue en el alt). Fuera del héroe, el pie va debajo, pequeño. */
.pg-heroe__foto .w-foto img { aspect-ratio: 16 / 10; }
.pg-heroe__foto .w-foto figcaption { display: none; }
/* Desplazamiento evidente (2rem = 32 px a cada lado): se lee como tarjeta montada a
   propósito, no como un descuadre con el borde de la foto */
body:not(.pag-geo, .pag-geo-banco) .pg-heroe__foto:has(.w-foto) + .pg-heroe__datos .w-datos {
  position: relative;
  margin: -2.5rem 2rem 0;
  box-shadow: var(--sombra-2);
}

.w-migas ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .25rem .55rem;
  margin: 0 0 1.75rem;
  padding: 0;
  list-style: none;
  color: var(--gris);
  font-size: .875rem;
  line-height: 1.4;
}
.w-migas li { display: inline-flex; align-items: center; gap: .55rem; min-width: 0; }
.w-migas li + li::before {
  content: "";
  flex: none;
  width: .38rem;
  height: .38rem;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  opacity: .7;
}
.w-migas a { color: var(--verde-tinta); text-decoration: none; }
.w-migas a:hover { color: var(--tinta); text-decoration: underline; }
.w-migas [aria-current] { color: var(--tinta); font-weight: 600; }

.w-foto { margin: 0; }
.w-foto img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  object-position: 50% 40%;
  border-radius: var(--r-l);
  box-shadow: var(--sombra-2);
}
/* Una sola imagen por figura: nunca dos fotos juntas con costura */
.w-foto img ~ img,
.w-foto picture ~ img,
.w-foto img ~ picture { display: none; }
.w-foto picture { display: block; }
.w-foto figcaption {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-top: .75rem;
  color: var(--gris);
  font-size: .8125rem;
  line-height: 1.4;
}
.w-foto figcaption::before { content: ""; flex: none; width: 1.5rem; height: 1px; background: var(--acento); }

.pg-cuerpo {
  display: grid;
  gap: 3rem;
  width: min(100% - 2rem, var(--ancho));
  margin: clamp(3rem, 2rem + 3vw, 5rem) auto 0;
}
.pg-cuerpo__texto { min-width: 0; counter-reset: seccion; }

.w-seccion {
  counter-increment: seccion;
  margin-top: 2.75rem;
  padding-top: 2.75rem;
  border-top: 1px solid var(--linea);
}
.pg-cuerpo__texto > .w-seccion:first-child,
.pg-cuerpo__texto > :first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.w-seccion > h2 { font-size: clamp(1.9rem, 1.45rem + 1.7vw, 2.75rem); max-width: 22ch; }
.w-seccion > h2::before {
  content: counter(seccion, decimal-leading-zero);
  display: block;
  margin-bottom: .85rem;
  color: var(--acento-tinta);
  font: 600 .8125rem/1 var(--sans);
  letter-spacing: .14em;
}
.w-seccion h3 { margin-top: 1.9rem; font-size: clamp(1.35rem, 1.2rem + .5vw, 1.6rem); }
.w-seccion p, .w-seccion ul, .w-seccion ol { max-width: 42rem; }
.w-seccion p { color: var(--tinta-2); }
.w-seccion strong { color: var(--tinta); }
.w-seccion ul, .w-seccion ol { padding-left: 1.25rem; color: var(--tinta-2); }
.w-seccion li { margin: .35rem 0; padding-left: .25rem; }
.w-seccion ul li::marker { color: var(--verde); }
.w-seccion ol li::marker { color: var(--acento-tinta); font-family: var(--serif); }

.w-cta-linea { margin: 2rem 0; }
.w-cta {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  min-height: 3rem;
  padding: .7rem 1.4rem;
  border: 1.5px solid var(--acento);
  border-radius: 999px;
  background: transparent;
  color: var(--acento-tinta);
  font: 600 1rem/1.2 var(--sans);
  text-decoration: none;
  transition: background-color .2s ease, border-color .2s ease, transform .25s ease;
}
.w-cta::after {
  content: "";
  width: 1rem;
  height: 1rem;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .25s ease;
}
.w-cta:hover { background: var(--acento-papel); border-color: var(--acento-tinta); color: var(--acento-tinta); transform: translateY(-1px); }
.w-cta:hover::after { transform: translateX(3px); }

/* Tablas: scroll horizontal propio */
.w-tabla {
  max-width: 100%;
  margin: 1.5rem 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--linea);
  border-radius: 18px;
  background: #fff;
  box-shadow: var(--sombra-1);
}
.w-tabla table {
  width: 100%;
  min-width: 32rem;
  border-collapse: collapse;
  font-size: .9375rem;
  line-height: 1.45;
}
.w-tabla th {
  padding: .85rem 1.1rem;
  background: var(--tinta);
  color: #F2FAF6;
  font: 600 .75rem/1.3 var(--sans);
  letter-spacing: .1em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}
.w-tabla td { padding: .8rem 1.1rem; border-top: 1px solid var(--linea); color: var(--tinta-2); vertical-align: top; }
.w-tabla tbody tr:nth-child(even) td { background: #F6FBF9; }
.w-tabla td:first-child { color: var(--tinta); font-weight: 600; }

/* Índice de atlas */
.w-indice {
  margin-top: 3rem;
  padding: clamp(1.25rem, .9rem + 2vw, 2.5rem);
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-1);
}
.w-indice__titulo { font-size: clamp(1.8rem, 1.4rem + 1.5vw, 2.5rem); }
.w-indice__letras {
  position: sticky;
  top: var(--cabecera);
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin: 0 0 .5rem;
  padding: .75rem 0 1rem;
  border-bottom: 1px solid var(--linea);
  background: #fff;
}
.w-indice__letras a {
  display: grid;
  place-items: center;
  width: 2.3rem;
  height: 2.3rem;
  border-radius: 10px;
  background: var(--fondo);
  color: var(--tinta);
  font: 400 1.25rem/1 var(--serif);
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease;
}
.w-indice__letras a:hover { background: var(--verde); color: #fff; }
.w-indice__grupo {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr);
  gap: .75rem;
  padding: 1.1rem 0;
  border-top: 1px solid var(--linea);
  scroll-margin-top: calc(var(--cabecera) + 6rem);
}
.w-indice__letras + .w-indice__grupo { border-top: 0; }
.w-indice__grupo h3 { margin: 0; color: var(--verde); font-size: 2.4rem; line-height: .9; }
.w-indice__grupo p { margin: 0; columns: 2 7rem; column-gap: 1.25rem; }
.w-indice__grupo p a {
  display: block;
  break-inside: avoid;
  padding: .16rem 0;
  color: var(--tinta);
  font-size: .9375rem;
  line-height: 1.35;
  text-decoration: none;
}
.w-indice__grupo p a:hover { color: var(--verde-tinta); text-decoration: underline; }

/* Preguntas frecuentes */
.w-faq { margin-top: 3rem; }
.w-faq > h2 { font-size: clamp(1.9rem, 1.45rem + 1.7vw, 2.75rem); }
.w-faq__item {
  margin-top: .75rem;
  border: 1px solid transparent;
  border-radius: 18px;
  background: #fff;
  box-shadow: var(--sombra-1);
  transition: border-color .25s ease;
}
.w-faq__item[open] { border-color: var(--menta-3); }
.w-faq__item > summary {
  position: relative;
  padding: 1.15rem 3.75rem 1.15rem 1.35rem;
  color: var(--tinta);
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.4;
  list-style: none;
  cursor: pointer;
}
.w-faq__item > summary::-webkit-details-marker { display: none; }
.w-faq__item > summary::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 1.1rem;
  width: 1.85rem;
  height: 1.85rem;
  margin-top: -.925rem;
  border-radius: 50%;
  background:
    linear-gradient(var(--verde-tinta), var(--verde-tinta)) center / 12px 1.6px no-repeat,
    linear-gradient(var(--verde-tinta), var(--verde-tinta)) center / 1.6px 12px no-repeat,
    var(--menta-2);
  transition: transform .3s ease, background-color .3s ease;
}
.w-faq__item[open] > summary::after { transform: rotate(45deg); }
.w-faq__item > summary:hover { color: var(--verde-tinta); }
.w-faq__resp { padding: 0 1.35rem 1.2rem; color: var(--tinta-2); }
.w-faq__resp p { max-width: 42rem; }
.w-faq__resp p:last-child { margin-bottom: 0; }

/* Lateral fijo de las páginas interiores */
.pg-lateral { display: none; }
.lateral {
  padding: 1.6rem;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-2);
}
.lateral__rotulo {
  display: inline-block;
  margin: 0 0 .9rem;
  padding: .25rem .7rem;
  border-radius: 999px;
  background: var(--acento-papel);
  color: var(--acento-tinta);
  font: 600 .75rem/1.3 var(--sans);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.lateral__titulo { margin: 0 0 1rem; font: 400 1.75rem/1.1 var(--serif); text-wrap: balance; }
.lateral__lista { margin: 0 0 1.4rem; padding: 0; list-style: none; display: grid; gap: .55rem; }
.lateral__lista li {
  position: relative;
  padding-left: 1.6rem;
  color: var(--tinta-2);
  font-size: .9375rem;
  line-height: 1.4;
}
.lateral__lista li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .2rem;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: var(--verde) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4.5 8.3 2.3 2.2 4.7-5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.lateral .boton { width: 100%; }
.lateral .boton + .boton { margin-top: .6rem; }
.lateral__tel { margin: 1.25rem 0 0; padding-top: 1rem; border-top: 1px solid var(--linea); color: var(--gris); font-size: .875rem; line-height: 1.5; }
.lateral__tel a { color: var(--tinta); font-weight: 600; text-decoration: none; }
.lateral__tel a:hover { color: var(--verde-tinta); }

/* Hijas: rejilla de tarjetas */
.pg-hijas { width: min(100% - 2rem, var(--ancho)); margin: clamp(3.5rem, 2.5rem + 3vw, 5.5rem) auto 0; }
.pg-hijas:empty { display: none; }
.w-hijas__titulo { font-size: clamp(1.9rem, 1.45rem + 1.7vw, 2.75rem); }
.w-hijas__rejilla {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 15.5rem), 1fr));
  counter-reset: hija;
}
.w-tarjeta {
  counter-increment: hija;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .4rem;
  padding: 1.3rem 3.4rem 1.35rem 1.35rem;
  border: 1px solid transparent;
  border-radius: var(--r);
  background: #fff;
  box-shadow: var(--sombra-1);
  color: var(--tinta);
  text-decoration: none;
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.w-tarjeta::before {
  content: counter(hija, decimal-leading-zero);
  color: var(--acento-tinta);
  font: 600 .75rem/1 var(--sans);
  letter-spacing: .12em;
}
.w-tarjeta::after {
  content: "";
  position: absolute;
  top: 1.1rem;
  right: 1.1rem;
  width: 1.85rem;
  height: 1.85rem;
  border-radius: 50%;
  background: var(--menta-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230A6352' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / 14px no-repeat;
  transition: background-color .3s ease, transform .3s ease;
}
.w-tarjeta:hover {
  transform: translateY(-2px);
  border-color: var(--menta-3);
  box-shadow: var(--sombra-2);
  color: var(--tinta);
}
.w-tarjeta:hover::after {
  transform: translateX(2px);
  background: var(--verde) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center / 14px no-repeat;
}
.w-tarjeta__nombre { font: 400 1.4rem/1.15 var(--serif); text-wrap: balance; overflow-wrap: break-word; }
.w-tarjeta__texto { color: var(--gris); font-size: .925rem; line-height: 1.45; }

/* Muchas hijas: filas compactas */
.w-hijas__rejilla:has(> :nth-child(13)) {
  gap: .6rem;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr));
}
.w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta { padding: .85rem 2.9rem .9rem 1rem; gap: .25rem; border-radius: 16px; }
.w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta::after { top: 50%; margin-top: -.75rem; width: 1.5rem; height: 1.5rem; right: .8rem; background-size: 12px; }
.w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta__nombre { font-size: 1.15rem; }
.w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta__texto { font-size: .85rem; }

/* Hermanas: columnas compactas */
.pg-hermanas { width: min(100% - 2rem, var(--ancho)); margin: clamp(3rem, 2rem + 3vw, 4.5rem) auto 0; }
.pg-hermanas:empty { display: none; }
.w-hermanas {
  padding: clamp(1.25rem, 1rem + 1.5vw, 2rem);
  border-radius: var(--r-l);
  background: var(--menta-2);
}
.w-hermanas__titulo {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.1rem;
  font-size: clamp(1.5rem, 1.3rem + .8vw, 2rem);
}
.w-hermanas__enlaces {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr));
  gap: 0 1.5rem;
}
.w-hermanas__enlaces a {
  position: relative;
  display: block;
  padding: .45rem 0 .45rem 1rem;
  border-bottom: 1px solid rgba(16, 42, 36, .09);
  color: var(--tinta);
  font-size: .9375rem;
  line-height: 1.35;
  text-decoration: none;
  overflow-wrap: break-word;
  transition: color .2s ease, padding .2s ease;
}
.w-hermanas__enlaces a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: .38rem;
  height: .38rem;
  margin-top: -.19rem;
  border-radius: 50%;
  background: var(--verde);
  opacity: .45;
  transition: opacity .2s ease, transform .2s ease;
}
.w-hermanas__enlaces a:hover { color: var(--verde-tinta); padding-left: 1.25rem; }
.w-hermanas__enlaces a:hover::before { opacity: 1; transform: scale(1.3); }

/* Cierre */
.pg-cierre { width: min(100% - 2rem, 56rem); margin: clamp(3.5rem, 2.5rem + 3vw, 5.5rem) auto 0; }
.pg-cierre:empty { display: none; }
.w-cierre {
  position: relative;
  padding: clamp(1.75rem, 1.2rem + 3vw, 3.25rem);
  border-radius: var(--r-l);
  background: var(--verde);
  color: #fff;
  overflow: hidden;
  isolation: isolate;
}
.w-cierre::after {
  content: "";
  position: absolute;
  z-index: -1;
  right: -3rem;
  bottom: -3rem;
  width: 14rem;
  height: 14rem;
  border: 1.5px solid rgba(255, 255, 255, .16);
  border-radius: 50%;
  box-shadow: 0 0 0 2.5rem rgba(255, 255, 255, .05), 0 0 0 5rem rgba(255, 255, 255, .03);
}
.w-cierre p {
  max-width: 40rem;
  margin: 0 0 1rem;
  font: 400 clamp(1.4rem, 1.2rem + .9vw, 1.85rem)/1.28 var(--serif);
  text-wrap: pretty;
}
.w-cierre p:last-child { margin-bottom: 0; }
.w-cierre a { color: #fff; text-decoration-thickness: 1.5px; }
.w-cierre a:hover { color: #fff; text-decoration-thickness: 2.5px; }
.w-cierre .w-cta { border-color: #fff; background: #fff; color: var(--verde-tinta); font-family: var(--sans); }
.w-cierre .w-cta:hover { background: var(--menta-2); border-color: var(--menta-2); color: var(--verde-tinta); }

/* Variantes de cabecera según el tipo de página ({{CLASE}} en <body>)
   Regla de color única: TODAS las cabeceras interiores van en menta con la misma trama; el
   tinta queda para el pie y las bandas de la portada.
   SISTEMA DE FICHAS POR NIVEL. Todas las fichas geográficas son la MISMA tarjeta (blanca,
   filete verde de 4 px arriba, radio y sombra comunes, etiquetas en versalitas grises y
   valores en Instrument Sans); el nivel solo cambia el marcador de la izquierda:
   · primer nivel (comunidad, también las de una provincia, Ceuta, Melilla y Europa: migas
     «Inicio › X»): filas numeradas 01-04 en serif coral;
   · provincia: la capital como cabecera de la tarjeta, en serif grande;
   · país: ruta de paradas (puntos y trazo verdes) que acaba en la capital, en serif grande;
   · municipio: núcleos (el primero en coral), filas compactas, tarjeta alineada arriba.
   Foto: servicio, contacto, primer nivel, provincia y país llevan la foto de cabecera con la
   ficha montada encima; el municipio va sin foto, con el héroe compacto.
   Cotizador: el widget, en su fila propia solapada con el borde del héroe; la tarjeta de
   cotizar (botón de la fábrica), bajo el texto, en la columna izquierda.
   La fábrica marca las comunidades de una provincia como .pag-division; se reconocen por las migas */

body:is(.pag-geo, .pag-geo-banco):is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe__foto { display: none; }
body:is(.pag-geo, .pag-geo-banco) .pg-heroe__lado:not(:has(.w-datos, .w-foto)) { display: none; }
body:is(.pag-geo, .pag-geo-banco) .pg-heroe__foto .w-foto img { aspect-ratio: 16 / 9; }

/* Tarjeta común de la ficha geográfica */
body:is(.pag-geo, .pag-geo-banco) .pg-heroe .pg-heroe__datos .w-datos {
  margin: 0;
  padding: .3rem 1.35rem .4rem;
  border: 1px solid var(--linea);
  border-top: 4px solid var(--verde);
  border-radius: var(--r);
  background: #fff;
  box-shadow: var(--sombra-2);
}
/* Con foto encima, la ficha se monta sobre su borde inferior, como en servicios */
body:is(.pag-geo, .pag-geo-banco) .pg-heroe .pg-heroe__foto:has(.w-foto) + .pg-heroe__datos .w-datos {
  position: relative;
  margin: -2.5rem 1.25rem 0;
}

/* Primer nivel: filas numeradas dentro de la tarjeta común.
   Solo los datos con peso: el recuento de provincias ya lo enseña la rejilla de debajo y
   «Medio: carretera» lo dice toda la web */
.pag-region .pg-heroe .w-datos__fila:nth-child(2),
.pag-continente .pg-heroe .w-datos__fila:nth-child(n+5) { display: none; }
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .pg-heroe__datos .w-datos {
  display: block;
  counter-reset: dato;
}
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-datos__fila {
  counter-increment: dato;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  grid-template-areas: "n dt" "n dd";
  gap: .2rem .5rem;
  padding: .75rem 0 .8rem;
  border-top: 1px solid var(--linea);
}
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-datos__fila:first-child { border-top: 0; }
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-datos__fila::before {
  content: counter(dato, decimal-leading-zero);
  grid-area: n;
  color: var(--acento-tinta);
  font: 400 1.35rem/1.1 var(--serif);
}
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-datos dt { grid-area: dt; }
:is(.pag-region, .pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-datos dd { grid-area: dd; }

/* Provincia: la primera fila (capital) es la cabecera de la tarjeta, en serif grande;
   el resto, filas con filete punteado */
body[class*="division"] .pg-heroe,
body[class*="provincia"] .pg-heroe { border-bottom: 1px solid var(--linea); }
body:is(.pag-division:not(:has(.w-migas li:first-child + li:last-child)), [class*="provincia"]) .pg-heroe .pg-heroe__datos .w-datos {
  padding-top: 0;
  overflow: hidden;
}
body:is(.pag-division:not(:has(.w-migas li:first-child + li:last-child)), [class*="provincia"]) .pg-heroe .w-datos__fila:first-child {
  display: block;
  margin: 0 -1.35rem;
  padding: 1.1rem 1.35rem 1rem;
  background: #F7FBF9;
  border-bottom: 1px solid var(--linea);
}
body:is(.pag-division:not(:has(.w-migas li:first-child + li:last-child)), [class*="provincia"]) .pg-heroe .w-datos__fila:first-child dd {
  margin-top: .3rem;
  font: 400 clamp(1.8rem, 1.55rem + .8vw, 2.3rem)/1.05 var(--serif);
}
body:is(.pag-division:not(:has(.w-migas li:first-child + li:last-child)), [class*="provincia"]) .pg-heroe .w-datos__fila:first-child + .w-datos__fila { border-top: 0; }
body:is(.pag-division:not(:has(.w-migas li:first-child + li:last-child)), [class*="provincia"]) .pg-heroe .w-datos__fila + .w-datos__fila { border-top: 1px dashed var(--linea-fuerte); }
body[class*="division"] .pg-heroe h1,
body[class*="provincia"] .pg-heroe h1 { font-size: clamp(2.15rem, 1.45rem + 2.5vw, 3.5rem); }
/* Comunidad de una provincia (primer nivel): titular y filete de región, no de provincia */
.pag-division:has(.w-migas li:first-child + li:last-child) .pg-heroe { border-bottom: 0; }
.pag-division:has(.w-migas li:first-child + li:last-child) .pg-heroe h1 { font-size: clamp(2.3rem, 1.5rem + 3vw, 4.1rem); }

/* Antetítulo propio de cada tipo de página (el de raya coral queda para servicios y provincias) */
.pag-region .pg-heroe .w-antetitulo,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-antetitulo {
  display: inline-flex;
  padding: .35rem .85rem;
  border: 1px solid var(--menta-3);
  border-radius: 999px;
  background: #fff;
}
.pag-region .pg-heroe .w-antetitulo::before,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe .w-antetitulo::before { width: .5rem; height: .5rem; border-radius: 50%; background: var(--acento); }
body[class*="municipio"] .pg-heroe .w-antetitulo::before,
body[class*="localidad"] .pg-heroe .w-antetitulo::before,
body[class*="ciudad"] .pg-heroe .w-antetitulo::before,
body[class*="distrito"] .pg-heroe .w-antetitulo::before {
  width: .85rem;
  height: 1.1rem;
  border-radius: 0;
  background: var(--acento);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 18'%3E%3Cpath d='M7 1a6 6 0 0 0-6 6c0 4.2 6 10 6 10s6-5.8 6-10a6 6 0 0 0-6-6Zm0 8.2A2.2 2.2 0 1 1 7 4.8a2.2 2.2 0 0 1 0 4.4Z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 18'%3E%3Cpath d='M7 1a6 6 0 0 0-6 6c0 4.2 6 10 6 10s6-5.8 6-10a6 6 0 0 0-6-6Zm0 8.2A2.2 2.2 0 1 1 7 4.8a2.2 2.2 0 0 1 0 4.4Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
body[class*="pais"] .pg-heroe .w-antetitulo::before {
  width: 2.25rem;
  height: .5rem;
  border-radius: 0;
  background:
    radial-gradient(circle, var(--acento) 0 3px, transparent 3.5px) left center / .5rem .5rem no-repeat,
    radial-gradient(circle, var(--verde) 0 3px, transparent 3.5px) right center / .5rem .5rem no-repeat,
    repeating-linear-gradient(90deg, var(--linea-fuerte) 0 3px, transparent 3px 6px) center / calc(100% - 1rem) 1.5px no-repeat;
}

/* Municipio, ciudad o distrito: héroe compacto (mismo fondo menta y trama que toda ficha) */
body[class*="municipio"] .pg-heroe h1,
body[class*="localidad"] .pg-heroe h1,
body[class*="ciudad"] .pg-heroe h1,
body[class*="distrito"] .pg-heroe h1 { font-size: clamp(2.15rem, 1.45rem + 2.5vw, 3.5rem); }

/* Composición propia de cada nivel */

/* Comunidad y continente: justo bajo el héroe, la cuadrícula de provincias o países */
.pag-region .pg-hijas,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-hijas { order: -1; }
.pag-region .pg-heroe,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .pg-heroe { order: -2; }
.pag-region .w-hijas__rejilla,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .w-hijas__rejilla { grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); }
.pag-region .w-tarjeta,
:is(.pag-continente, .pag-division:has(.w-migas li:first-child + li:last-child)) .w-tarjeta { border-top: 3px solid var(--verde); }

/* Municipio: núcleos dentro de la tarjeta común; el primero (provincia) en coral y cada
   dato enlazado por un trazo. Filas compactas: unos 25 px entre dato y dato */
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .pg-heroe__datos .w-datos {
  position: relative;
  padding: .55rem 1.35rem .55rem 1.25rem;
}
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .w-datos__fila {
  position: relative;
  grid-template-columns: minmax(0, 1fr);
  gap: .15rem;
  padding: .8rem 0 .8rem 2.1rem;
  border-top: 0;
}
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .w-datos__fila::before {
  content: "";
  position: absolute;
  left: .2rem;
  top: 1.05rem;
  width: .8rem;
  height: .8rem;
  border: 2px solid var(--verde);
  border-radius: 50%;
  background: #fff;
  z-index: 1;
}
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .w-datos__fila::after {
  content: "";
  position: absolute;
  left: .57rem;
  top: 1.85rem;
  bottom: -1.05rem;
  width: 0;
  border-left: 2px dotted var(--menta-3);
}
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .w-datos__fila:last-child::after { content: none; }
body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe .w-datos__fila:first-child::before {
  left: 0;
  top: .85rem;
  width: 1.2rem;
  height: 1.2rem;
  border: 0;
  background: var(--acento);
  box-shadow: 0 0 0 4px var(--acento-papel);
}

/* País: ruta vertical en la tarjeta común. Cada parada es un dato real de la ficha (puerto,
   pasos, aduana) y la ruta acaba en la capital (punto verde, en serif grande).
   La primera fila de la ficha de país es la capital: se lleva al final con order; la
   primera parada visible abre el trazo en coral. Ningún nodo sin dato.
   Cada parada dibuja su tramo de línea, así el trazo es continuo mida lo que mida */
body[class*="pais"] .pg-heroe h1 { font-size: clamp(2.1rem, 1.45rem + 2.3vw, 3.35rem); line-height: 1.04; }
body[class*="pais"] .pg-heroe .pg-heroe__datos .w-datos {
  display: flex;
  flex-direction: column;
  padding: .9rem 1.35rem 1rem;
}
body[class*="pais"] .pg-heroe .w-datos__fila:nth-child(2)::before {
  background: var(--acento);
  border-color: var(--acento);
  box-shadow: 0 0 0 3px var(--acento-papel);
}
body[class*="pais"] .pg-heroe .w-datos__fila:nth-child(2)::after { top: 1rem; }
body[class*="pais"] .pg-heroe .w-datos__fila {
  position: relative;
  grid-template-columns: minmax(0, 1fr);
  gap: .15rem;
  padding: .5rem 0 .6rem 1.75rem;
  border-top: 0;
}
body[class*="pais"] .pg-heroe .w-datos__fila::before {
  content: "";
  position: absolute;
  z-index: 1;
  left: .25rem;
  top: .62rem;
  width: .75rem;
  height: .75rem;
  border: 2px solid var(--verde);
  border-radius: 50%;
  background: #fff;
}
body[class*="pais"] .pg-heroe .w-datos__fila::after {
  content: "";
  position: absolute;
  left: .55rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--menta-3);
}
body[class*="pais"] .pg-heroe .w-datos__fila:first-child {
  order: 2;
  margin-top: .2rem;
  padding-top: .55rem;
  padding-bottom: 0;
}
body[class*="pais"] .pg-heroe .w-datos__fila:first-child::before {
  left: .1rem;
  top: .62rem;
  width: 1.05rem;
  height: 1.05rem;
  border: 0;
  background: var(--verde);
  box-shadow: 0 0 0 4px var(--menta-2);
}
body[class*="pais"] .pg-heroe .w-datos__fila:first-child::after { bottom: auto; height: .8rem; }
body[class*="pais"] .pg-heroe .w-datos__fila:first-child dd {
  color: var(--verde-tinta);
  font: 400 clamp(1.6rem, 1.4rem + .6vw, 2rem)/1.1 var(--serif);
}

/* --- Recorrido del cotizador --------------------------------------------- */

.recorrido { padding: 2rem 0 clamp(4rem, 3rem + 4vw, 6rem); }
.recorrido__marco { width: min(100% - 2rem, 51.25rem); margin-inline: auto; }
.recorrido__rotulo {
  display: flex;
  align-items: center;
  gap: .9rem;
  margin: 0 0 1.25rem;
  color: var(--verde-tinta);
  font: 600 .8125rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.recorrido__rotulo::before { content: ""; flex: none; width: 1.75rem; height: 2px; border-radius: 2px; background: var(--acento); }
.recorrido__rotulo::after { content: ""; flex: 1; height: 1px; background: var(--linea-fuerte); }
.recorrido__cabeza { margin: 0 0 1.75rem; }
.recorrido__cabeza .recorrido__rotulo { margin-bottom: 1rem; }
.recorrido__titulo { margin: 0 0 .6rem; max-width: 18ch; font-size: clamp(2.2rem, 1.6rem + 2.4vw, 3.4rem); }
.recorrido__apoyo { max-width: 38rem; margin: 0; color: var(--tinta-2); font-size: clamp(1.0625rem, 1rem + .3vw, 1.1875rem); line-height: 1.55; }
.recorrido__marcas {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem 1.25rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
  color: var(--tinta-2);
  font-size: .9rem;
}
.recorrido__marcas li { display: inline-flex; align-items: center; gap: .45rem; }
.recorrido__marcas li::before {
  content: "";
  flex: none;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: var(--verde) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4.5 8.3 2.3 2.2 4.7-5'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.recorrido__formulario {
  min-height: 34rem;
  padding: .75rem;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: #fff;
  box-shadow: var(--sombra-3);
}
.recorrido__ayuda {
  margin: 1.25rem 0 0;
  color: var(--gris);
  font-size: .9375rem;
  text-align: center;
}
.recorrido__ayuda a { color: var(--tinta); font-weight: 600; text-decoration: none; }
.recorrido__ayuda a:hover { color: var(--verde-tinta); }

/* --- Pie ------------------------------------------------------------------ */

.pie {
  margin-top: clamp(4rem, 3rem + 4vw, 7rem);
  padding: 0 0 2rem;
  background: var(--tinta);
  color: #CFE4DC;
  font-size: .9375rem;
}
.pie a { color: #E4F1EC; text-decoration: none; }
.pie a:hover { color: var(--verde-claro); text-decoration: underline; }

.pie__cta {
  position: relative;
  top: -3rem;
  display: grid;
  gap: 1.5rem;
  align-items: center;
  margin-bottom: -1rem;
  padding: clamp(1.5rem, 1rem + 2.5vw, 2.75rem);
  border-radius: var(--r-l);
  background: var(--acento-papel);
  color: var(--tinta);
  box-shadow: var(--sombra-3);
}
.pie__cta-titulo { margin: 0 0 .5rem; font: 400 clamp(1.7rem, 1.35rem + 1.4vw, 2.6rem)/1.08 var(--serif); text-wrap: balance; }
.pie__cta-texto { margin: 0; color: var(--tinta-2); max-width: 36rem; }
.pie .pie__cta a.boton--verde { color: #fff; }
.pie .pie__cta a.boton--linea { color: var(--tinta); }
.pie .pie__cta a.boton:hover { text-decoration: none; }

.pie__rejilla {
  display: grid;
  gap: 2.25rem;
  padding: 1rem 0 2.5rem;
}
.pie .marca { color: #F4FBF8; }
.pie .marca:hover { color: #F4FBF8; text-decoration: none; }
.pie__texto { margin: 1rem 0 1.25rem; max-width: 22rem; color: #B9D6CC; line-height: 1.55; }
.pie__tel { margin: 0; font: 400 1.6rem/1.2 var(--serif); }
.pie__tel a { color: #F4FBF8; }
.pie__horario { margin: .3rem 0 0; color: #B9D6CC; font-size: .875rem; }
.pie__titulo {
  margin: 0 0 .9rem;
  color: #9DC3B7;
  font: 600 .75rem/1.3 var(--sans);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.pie__lista { margin: 0; padding: 0; list-style: none; display: grid; gap: .45rem; }
.pie__base {
  display: grid;
  gap: .5rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(242, 250, 246, .14);
  color: #B9D6CC;
  font-size: .8125rem;
}
.pie__base p { margin: 0; }
.pie__atribucion a { color: var(--verde-claro); text-decoration: underline; }

/* ==========================================================================
   Ajustes por ancho (siempre al final)
   ========================================================================== */

@media (max-width: 26rem) {
  .w-datos__fila { grid-template-columns: minmax(0, 1fr); gap: .2rem; padding: .7rem 0; }
  .api-ficha dl div { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
  .panel-one__pie { flex-direction: column; align-items: flex-start; gap: .3rem; }
  .cabecera__boton-texto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .cabecera__boton { width: 2.75rem; padding: 0; justify-content: center; }
}

@media (max-width: 39.99rem) {
  .w-hermanas__enlaces {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-height: 22rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: .25rem;
  }
  .w-indice__letras a { width: 2.1rem; height: 2.1rem; font-size: 1.1rem; }
  .w-hijas__rejilla:has(> :nth-child(13)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta { padding: .8rem .8rem .85rem .85rem; }
  .w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta::after { display: none; }
  .w-hijas__rejilla:has(> :nth-child(13)) .w-tarjeta__nombre { font-size: 1.05rem; }
  .botones .boton { flex: 1 1 auto; }
}

@media (min-width: 40rem) {
  .funciones { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .comparativa { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cifras { gap: 1.25rem; }
  .w-cotizador, .recorrido__formulario { padding: 1.25rem; }
  .w-indice__grupo { grid-template-columns: 4rem minmax(0, 1fr); gap: 1rem; }
  .w-indice__grupo h3 { font-size: 2.8rem; }
  .w-indice__grupo p { columns: 3 10rem; }
  .llamada { grid-template-columns: minmax(0, 1fr) auto; }
  .pie__rejilla { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pie__cta { grid-template-columns: minmax(0, 1fr) auto; }
  .pie__base { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .aviso-red { padding: 1.75rem 0; }
  .regiones { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .region--europa .region__lista { columns: 3 8.5rem; }
  .region--europa .region__destacadas { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 1.5rem; }
  .panel-one__app { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .panel-one__menu { grid-column: 1 / -1; }
  .panel-one__detalle { border-top: 0; border-left: 1px solid var(--linea); }
}

@media (min-width: 60rem) {
  :root { --cabecera: 4.5rem; }
  .portada-heroe { padding: 4.5rem 0 11rem; }
  .portada-heroe__marco { grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr); gap: 4rem; }
  .portada-cotizar { margin-top: -7.5rem; }
  .portada-cotizar + .bloque { margin-top: 0; }
  .portada-cotizar { margin-bottom: clamp(4rem, 3rem + 4vw, 6rem); }

  .dos { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 4.5rem; align-items: start; }
  .dos--centrado { align-items: center; }
  .funciones { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .banda-foto__cita { position: absolute; left: 0; right: 0; bottom: -3.5rem; margin: 0; }
  .banda-foto { margin-bottom: 3.5rem; }
  .cita { padding: 2.5rem 2.5rem 2rem; }
  .asimetrico { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 5rem; }
  .bloque--sangre .asimetrico { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0; align-items: stretch; }
  .bloque--sangre .asimetrico__foto { min-height: 36rem; }
  .bloque--sangre .prosa {
    align-self: center;
    padding: clamp(4.5rem, 3rem + 4vw, 7rem) max(2rem, calc(50vw - var(--ancho) / 2)) clamp(4.5rem, 3rem + 4vw, 7rem) clamp(3rem, 1.5rem + 3vw, 5rem);
  }

  /* Vista del panel: menú lateral, envíos y detalle */
  .panel-one__app { grid-template-columns: 12.5rem minmax(0, 1.55fr) minmax(0, 1fr); }
  .panel-one__menu { grid-column: auto; flex-direction: column; flex-wrap: nowrap; padding: 1rem .75rem; border-bottom: 0; border-right: 1px solid var(--linea); }

  /* Destinos: entradas de atlas en tres columnas; Europa a todo el ancho con sus países en columnas */
  .regiones { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem 3rem; }
  .destinos__subtitulo { margin-top: 4.5rem; font-size: .875rem; color: var(--tinta); }
  .region--europa { grid-template-columns: 15rem 6.5rem minmax(0, 1fr); column-gap: 2rem; padding: 1.75rem 2rem 1.5rem; }
  .region--europa .region__todas { grid-column: 1 / span 2; grid-row: 3; align-self: start; }
  .region--europa .region__cifra { align-items: flex-start; }
  .region--europa .region__destacadas { grid-column: 3; grid-row: 1 / span 2; margin-top: 0; }
  .region--europa .region__mas { grid-column: 3; }
  .region--europa .region__lista { columns: 4 8.5rem; }

  /* Héroe interior: texto a la izquierda, foto y ficha arriba a la derecha;
     el botón queda bajo el texto y el cotizador ocupa una fila propia que se solapa con el borde */
  .pg-heroe { padding: 2.25rem 0 3.75rem; }
  .pg-heroe__marco {
    grid-template-columns: minmax(0, 1.35fr) minmax(19rem, .95fr);
    grid-template-rows: auto auto minmax(0, 1fr) auto;
    column-gap: 4rem;
    row-gap: 0;
  }
  .pg-heroe__texto { grid-column: 1; grid-row: 1; }
  .pg-heroe__lado { grid-column: 2; grid-row: 1 / 4; align-self: start; }
  .pg-cotizar { grid-column: 1; grid-row: 2; margin-top: 2rem; }
  .pg-cotizar:has(.w-cotizador) {
    position: relative;
    z-index: 2;
    grid-column: 1 / -1;
    grid-row: 4;
    justify-self: center;
    width: min(100%, 50rem);
    margin: 2rem 0 -14rem;
  }
  .pg-heroe:has(.w-cotizador) { margin-bottom: 10.25rem; }

  /* Tarjeta de cotizar: rótulo y frase a la izquierda, botón a la derecha. Ocupa hasta la
     base de la columna derecha y se pega abajo: su borde inferior coincide con el de la
     ficha o la foto de al lado */
  .pg-cotizar:has(> .w-cta-linea) {
    grid-row: 2 / 4;
    align-self: end;
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 2rem;
    row-gap: .45rem;
    padding: 1.75rem 2rem 1.85rem;
  }
  .pg-cotizar:has(> .w-cta-linea)::before { grid-column: 1; grid-row: 1; }
  .pg-cotizar:has(> .w-cta-linea)::after { grid-column: 1; grid-row: 2; }
  .pg-cotizar:has(> .w-cta-linea) > .w-cta-linea { grid-column: 2; grid-row: 1 / 3; align-self: center; margin: 0; }
  .pg-heroe .pg-cotizar:has(> .w-cta-linea) .w-cta { width: auto; padding-inline: 1.6rem; white-space: nowrap; }
  .pg-heroe__marco:not(:has(.pg-heroe__lado .w-foto, .pg-heroe__lado .w-datos)),
  body:is(.pag-geo, .pag-geo-banco):is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe__marco:not(:has(.pg-heroe__lado .w-datos)) { grid-template-columns: minmax(0, 1fr); }
  .pg-heroe .w-entradilla p { max-width: 38rem; }
  .pg-heroe h1 { max-width: 21ch; }
  body[class*="division"] .pg-heroe h1,
  body[class*="provincia"] .pg-heroe h1,
  body[class*="pais"] .pg-heroe h1 { max-width: 24ch; }

  /* Foto del héroe contenida: la ficha que se monta encima queda entera en 1440 × 900 */
  .pg-heroe__foto .w-foto img { max-height: 20rem; }

  /* Páginas geográficas: la foto y la ficha arrancan a la altura del H1, debajo de las
     migas, en la columna derecha. Foto más baja que en servicios para que el cotizador
     siga entrando en la primera pantalla */
  body:is(.pag-geo, .pag-geo-banco) .pg-heroe__lado { padding-top: 2.6rem; }
  body:is(.pag-geo, .pag-geo-banco) .pg-heroe__foto .w-foto img { max-height: 15rem; }

  /* Municipio: esquema de núcleos a la derecha, alineado arriba a la altura del H1 y con
     su altura natural (nunca estirado hasta la base del texto); la tarjeta de cotizar
     sigue al texto en la columna izquierda. Con widget de cotizador, este conserva su fila
     propia solapada con el borde */
  body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe__marco {
    grid-template-columns: minmax(0, 1.45fr) minmax(18rem, .85fr);
  }
  body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-heroe__lado { align-self: start; }
  body:is([class*="municipio"], [class*="localidad"], [class*="ciudad"], [class*="distrito"]) .pg-cotizar:has(> .w-cta-linea) { grid-row: 2; align-self: start; }

  .pg-cuerpo { grid-template-columns: minmax(0, 1fr) 19.5rem; gap: 4.5rem; align-items: start; }
  .pg-lateral { display: block; position: sticky; top: calc(var(--cabecera) + 1.5rem); }
  .w-indice__grupo p { columns: 3 9.5rem; }

  .pie__rejilla { grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 3rem; }
}

@media (min-width: 66.25rem) {
  .cabecera__boton { display: none; }
  .menu, .js .menu {
    display: flex;
    position: static;
    flex-basis: auto;
    align-items: center;
    gap: 1rem;
    max-height: none;
    overflow: visible;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
  }
  html:not(.js) .cabecera__marco { flex-wrap: nowrap; }
  .menu__lista { display: flex; align-items: center; gap: .1rem; }
  .menu__item + .menu__item { border-top: 0; }
  .menu__grupo { position: relative; }
  .menu__grupo > summary,
  .menu__enlace { padding: .55rem .85rem; font-size: .9375rem; }
  .menu__grupo > summary:hover,
  .menu__enlace:hover,
  .menu__grupo[open] > summary { background: rgba(255, 255, 255, .85); color: var(--tinta); }
  .menu__grupo > summary::after { width: .4rem; height: .4rem; margin-left: .1rem; }
  .menu__sub {
    position: absolute;
    top: calc(100% + .65rem);
    left: 50%;
    width: 21.5rem;
    margin: 0;
    padding: .55rem;
    border: 1px solid var(--linea);
    border-radius: var(--r);
    background: #fff;
    box-shadow: var(--sombra-3);
    transform: translateX(-50%);
    animation: aparece .2s ease;
  }
  .menu__cta { width: auto; margin: 0; min-height: 2.75rem; padding-block: .55rem; }
}

@keyframes aparece {
  from { opacity: 0; transform: translate(-50%, -6px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

@media (min-width: 75rem) {
  .region--europa .region__lista { columns: 5 8.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

@media print {
  .cabecera, .pie__cta, .pg-lateral, .w-cotizador { display: none; }
  body { background: #fff; }
}
