/* ==========================================================================
   Transporte directo a Alemania · hoja de estilo
   Maqueta «técnico oscuro»: plano de ruta, coordenadas, datos en mono
   y acentos cian sobre gris hormigón.
   ========================================================================== */

/* ---------- 1. Variables ---------- */
:root {
  /* oscuros neutros, de hormigón en sombra (no negro azulado) */
  --noche: #1E2327;
  --noche-2: #171B1E;
  --grafito: #2A3035;
  --grafito-2: #323A40;
  --pizarra: #37474F;
  --gris: #8A8D8F;
  --gris-claro: #C9CBCC;
  --gris-papel: #DFE0E0;
  --cian: #00A6C8;
  --cian-luz: #5CD3EC;
  --cian-hondo: #006F87;
  --hormigon: #EEF0F2;
  --hormigon-2: #E1E5E8;
  --blanco: #FFFFFF;
  --niebla: #B4BEC6;
  --acero: #4A5862;
  /* hormigón de verdad: gris frío (familia del #EEF0F2 y del cian), con
     poro fino; con el poro encima se ve ≈ #D9DCDE en todo el sitio */
  --hormigon-real: #DDE0E2;
  --poro: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .11 0 0 0 0 .13 0 0 0 0 .16 0 0 0 .11 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23p)'/%3E%3C/svg%3E");
  /* duotono: luces entre hormigón y cian, sombras casi negras */
  --duo: linear-gradient(135deg, #B9C2C4 0%, #A7C3CA 55%, #8FC4D1 100%);

  --serif: "Libre Caslon Text", Georgia, "Times New Roman", serif;
  --sans: "Work Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, "Liberation Mono", monospace;

  --ancho: 1200px;
  --margen: clamp(1rem, 4vw, 2.5rem);
  --cab: 64px;
  --radio: 3px;
  --curva: cubic-bezier(.2, .7, .2, 1);

  /* zona oscura por defecto */
  --fondo: var(--noche);
  --fg: var(--hormigon);
  --fg2: var(--niebla);
  --acc: var(--cian-luz);
  --linea: rgba(201, 203, 204, .14);
  --linea-2: rgba(201, 203, 204, .27);
  --superficie: rgba(201, 203, 204, .05);
  --rejilla: rgba(0, 166, 200, .075);
  --rejilla-fina: rgba(201, 203, 204, .045);
  --tabla-cab: var(--grafito-2);
  --btn-bg: var(--cian);
  --btn-fg: var(--noche);
  --btn-bg-hover: var(--cian-luz);
}

.zona-papel {
  --fondo: var(--hormigon);
  --fg: var(--grafito);
  --fg2: var(--acero);
  --acc: var(--cian-hondo);
  --linea: rgba(138, 141, 143, .3);
  --linea-2: rgba(138, 141, 143, .55);
  --superficie: var(--blanco);
  --rejilla: rgba(138, 141, 143, .12);
  --rejilla-fina: rgba(138, 141, 143, .06);
  --tabla-cab: var(--gris-papel);
  --btn-bg: var(--cian-hondo);
  --btn-fg: var(--blanco);
  --btn-bg-hover: var(--grafito);
  background-color: var(--fondo);
  color: var(--fg);
}

/* franja de hormigón: gris frío de la marca, con tarjetas blancas encima.
   Acento y texto secundario oscurecidos para AA sobre #DDE0E2 */
.zona-hormigon {
  --fondo: var(--hormigon-real);
  --fg: var(--grafito);
  --fg2: #3A444B;
  --acc: #00586B;
  --linea: rgba(28, 34, 40, .16);
  --linea-2: rgba(28, 34, 40, .3);
  --superficie: var(--blanco);
  --rejilla: rgba(28, 34, 40, .07);
  --rejilla-fina: rgba(28, 34, 40, .04);
  --tabla-cab: var(--gris-papel);
  --btn-bg: #00586B;
  --btn-bg-hover: var(--grafito);
  background-color: var(--fondo);
  background-image: var(--poro);
  color: var(--fg);
}

/* ---------- 2. 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(--cab) + 1rem);
}

html.menu-abierto { overflow: hidden; }

body {
  margin: 0;
  min-width: 0;
  background: var(--noche);
  color: var(--hormigon);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-wrap: break-word;
}

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

h1, h2, h3 {
  margin: 0;
  font-family: var(--serif);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -.012em;
  color: var(--fg);
  hyphens: none;
  -webkit-hyphens: none;
  text-wrap: balance;
  overflow-wrap: normal;
}

h1 {
  font-size: clamp(1.7rem, 1.05rem + 2.9vw, 3.6rem);
  line-height: 1.08;
  overflow-wrap: break-word;
}

h2 { font-size: clamp(1.6rem, 1.12rem + 1.9vw, 2.6rem); }

h3 {
  font-size: clamp(1.15rem, 1.05rem + .45vw, 1.4rem);
  font-weight: 700;
  line-height: 1.25;
}

p { margin: 0 0 1.1em; }

a {
  color: var(--acc);
  text-decoration-thickness: 1px;
  text-underline-offset: .22em;
  transition: color .2s var(--curva), background-color .2s var(--curva), border-color .2s var(--curva);
}

a:hover { text-decoration-thickness: 2px; }

:focus-visible {
  outline: 2px solid var(--cian);
  outline-offset: 3px;
}

strong { font-weight: 600; color: var(--fg); }

.w-saltar {
  position: absolute;
  left: 1rem;
  top: -4rem;
  z-index: 100;
  padding: .6rem 1rem;
  background: var(--cian);
  color: var(--noche);
  font-weight: 600;
  text-decoration: none;
}

.w-saltar:focus { top: .75rem; }

/* ---------- 3. Cabecera y menú ---------- */
.w-cab {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(30, 35, 39, .94);
  -webkit-backdrop-filter: saturate(140%) blur(10px);
  backdrop-filter: saturate(140%) blur(10px);
  border-bottom: 1px solid var(--linea);
  transition: box-shadow .3s var(--curva), border-color .3s var(--curva);
}

.w-cab--despegada {
  border-bottom-color: rgba(0, 166, 200, .35);
  box-shadow: 0 10px 30px -18px rgba(0, 0, 0, .8);
}

.w-cab__in {
  max-width: var(--ancho);
  height: var(--cab);
  margin: 0 auto;
  padding: 0 var(--margen);
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.w-marca {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  min-width: 0;
  color: var(--hormigon);
  text-decoration: none;
}

.w-marca__icono {
  width: 34px;
  height: 34px;
  flex: none;
  transition: transform .4s var(--curva);
}

.w-marca:hover .w-marca__icono { transform: rotate(-6deg); }

.w-marca__txt {
  display: flex;
  flex-direction: column;
  font-family: var(--serif);
  font-size: 1rem;
  line-height: 1.12;
  white-space: nowrap;
}

.w-marca__sub { color: var(--cian-luz); }

.w-menu { margin-left: auto; }

.w-menu__lista {
  display: flex;
  align-items: center;
  gap: .15rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.w-menu__lista > li > a,
.w-menu__boton {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .55rem .8rem;
  border: 0;
  border-radius: var(--radio);
  background: none;
  color: var(--hormigon);
  font-family: var(--sans);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .02em;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
}

.w-menu__lista > li > a:hover,
.w-menu__boton:hover,
.w-menu__boton[aria-expanded="true"] {
  background: rgba(255, 255, 255, .05);
  color: var(--cian-luz);
}

/* sección en la que estás: cian y filete bajo el rótulo */
.w-menu__lista > li > a[aria-current],
.w-menu__boton.w-menu--activo {
  position: relative;
  color: var(--cian-luz);
}

.w-menu__lista > li:not(.w-menu__cta) > a[aria-current]::after,
.w-menu__boton.w-menu--activo::after {
  content: "";
  position: absolute;
  left: .8rem;
  right: .8rem;
  bottom: .15rem;
  height: 2px;
  background: var(--cian);
}

.w-menu__sub a[aria-current] {
  background: rgba(0, 166, 200, .1);
  color: var(--cian-luz);
}

.w-menu__sub a[aria-current] .w-menu__num { color: var(--cian-luz); }

.w-menu__flecha {
  width: 10px;
  height: 10px;
  transition: transform .25s var(--curva);
}

.w-menu__boton[aria-expanded="true"] .w-menu__flecha,
.w-menu__grupo:hover .w-menu__flecha { transform: rotate(180deg); }

.w-menu__grupo { position: relative; }

.w-menu__sub {
  position: absolute;
  top: calc(100% + .6rem);
  left: -.5rem;
  min-width: 17.5rem;
  margin: 0;
  padding: .5rem;
  list-style: none;
  background: var(--grafito);
  border: 1px solid var(--linea-2);
  box-shadow: 0 24px 48px -24px rgba(0, 0, 0, .9);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .2s var(--curva), transform .2s var(--curva), visibility 0s .2s;
}

.w-menu__sub::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -.7rem;
  height: .7rem;
}

.w-menu__sub::after {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 2.5rem;
  height: 2px;
  background: var(--cian);
}

.w-menu__grupo:hover .w-menu__sub,
.w-menu__grupo:focus-within .w-menu__sub,
.w-menu__boton[aria-expanded="true"] + .w-menu__sub {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition: opacity .2s var(--curva), transform .2s var(--curva), visibility 0s;
}

.w-menu__sub a {
  display: grid;
  grid-template-columns: 2rem 1fr;
  align-items: baseline;
  padding: .6rem .75rem;
  color: var(--hormigon);
  font-family: var(--sans);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .02em;
  text-decoration: none;
  border-radius: 2px;
}

.w-menu__sub a:hover {
  background: rgba(0, 166, 200, .1);
  color: var(--cian-luz);
}

.w-menu__num {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .06em;
  color: var(--niebla);
}

.w-menu__cta { margin-left: .6rem; }

.w-menu__lista > .w-menu__cta > a {
  padding: .6rem 1.05rem;
  background: var(--cian);
  color: var(--noche);
  font-family: var(--sans);
  font-size: .9375rem;
  font-weight: 600;
}

.w-menu__lista > .w-menu__cta > a:hover {
  background: var(--cian-luz);
  color: var(--noche);
}

.w-cab__burger {
  display: none;
  margin-left: auto;
  align-items: center;
  gap: .6rem;
  height: 44px;
  padding: 0 .85rem;
  border: 1px solid var(--linea-2);
  border-radius: var(--radio);
  background: none;
  color: var(--hormigon);
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
}

.w-cab__burger-lineas,
.w-cab__burger-lineas::before,
.w-cab__burger-lineas::after {
  display: block;
  width: 18px;
  height: 1.5px;
  background: currentColor;
  transition: transform .25s var(--curva), background-color .2s;
}

.w-cab__burger-lineas { position: relative; }
.w-cab__burger-lineas::before,
.w-cab__burger-lineas::after { content: ""; position: absolute; left: 0; }
.w-cab__burger-lineas::before { top: -6px; }
.w-cab__burger-lineas::after { top: 6px; }

.w-cab__burger[aria-expanded="true"] .w-cab__burger-lineas { background: transparent; }
.w-cab__burger[aria-expanded="true"] .w-cab__burger-lineas::before { transform: translateY(6px) rotate(45deg); }
.w-cab__burger[aria-expanded="true"] .w-cab__burger-lineas::after { transform: translateY(-6px) rotate(-45deg); }

/* ---------- 4. Héroe ---------- */
.w-heroe {
  position: relative;
  isolation: isolate;
  background-color: var(--noche);
  background-image:
    linear-gradient(var(--rejilla) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: 96px 96px, 96px 96px, 24px 24px, 24px 24px;
  background-position: -1px -1px;
  border-bottom: 1px solid var(--cian);
}

/* regla de plano al pie del héroe: une el fondo oscuro con el papel */
.w-heroe::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 12px;
  background:
    repeating-linear-gradient(90deg, rgba(0, 166, 200, .85) 0 1px, transparent 1px 96px) left bottom / 100% 12px no-repeat,
    repeating-linear-gradient(90deg, rgba(0, 166, 200, .45) 0 1px, transparent 1px 24px) left bottom / 100% 6px no-repeat;
  pointer-events: none;
}

.w-heroe::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(60% 70% at 88% 0%, rgba(0, 166, 200, .2), transparent 70%),
    linear-gradient(180deg, transparent 60%, rgba(30, 35, 39, .9));
  pointer-events: none;
}

.w-heroe__in {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 3.25rem) var(--margen) clamp(2.25rem, 5vw, 4.5rem);
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  grid-template-rows: auto auto auto auto auto auto auto 1fr auto;
  grid-template-areas:
    "migas  migas"
    "ante   lado"
    "titulo lado"
    "entr   lado"
    "acc    lado"
    "mas1   lado"
    "mas2   lado"
    "coord  lado"
    "coti   coti";
  column-gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}

.w-heroe__in > .w-migas { grid-area: migas; }
.w-heroe__in > .w-antetitulo { grid-area: ante; }
.w-heroe__in > h1 { grid-area: titulo; max-width: 17em; }
.w-heroe__in > .w-entradilla { grid-area: entr; }
.w-heroe__in > .w-heroe__acciones { grid-area: acc; }
.w-heroe__in > .w-heroe__coord { grid-area: coord; }
.w-heroe__in > .w-heroe__ficha,
.w-heroe__in > .w-heroe__lado { grid-area: lado; }

/* Entradilla larga: el primer párrafo queda junto al H1 y el botón va
   justo debajo; los párrafos siguientes bajan tras el botón como texto
   de apoyo, así la acción nunca cae por debajo de media pantalla.
   (Con 4 párrafos o más vuelve a ser un bloque normal.) */
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) { display: contents; }
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > * { min-width: 0; max-width: 36em; }
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :first-child { grid-area: entr; margin-top: 1.4rem; }
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :nth-child(2) { grid-area: mas1; margin-top: 1.6rem; }
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :nth-child(3) { grid-area: mas2; }
.w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :last-child { margin-bottom: 0; }

/* sin ficha ni foto: una sola columna */
.w-heroe__in:not(:has(.w-datos, .w-foto)) {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: none;
  grid-template-areas: "migas" "ante" "titulo" "entr" "acc" "mas1" "mas2" "lado" "coord" "coti";
}

.w-heroe__ficha:not(:has(.w-datos)) { display: none; }

.w-heroe__acciones {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 2rem;
}

.w-heroe__acciones:empty { display: none; }
.w-heroe__acciones > .w-cta-linea { margin: 0; }

/* si la página trae el cotizador entero, ocupa todo el ancho bajo el héroe */
.w-heroe__in > .w-heroe__acciones:has(.w-cotizador) {
  grid-area: coti;
  display: block;
  margin-top: clamp(2rem, 4vw, 3rem);
}

/* columna derecha: foto del lugar (duotono) + ficha, a la altura del texto */
.w-heroe__lado {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-width: 0;
  margin-top: .25rem;
}

.w-heroe__lado:not(:has(.w-foto)) { align-self: start; }

/* el marco manda y la foto lo llena siempre (cover): nunca queda
   franja cian vacía debajo, aunque la columna crezca */
.w-heroe__lado > .w-foto {
  flex: 1 1 auto;
  min-height: 15rem;
  max-height: 28rem;
  background: var(--duo);
  border-color: var(--linea-2);
}

.w-heroe__lado > .w-foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1) contrast(1.38) brightness(1.04);
  mix-blend-mode: multiply;
}

/* foto y ficha comparten el ancho exacto de la columna */
.w-heroe__lado > .w-foto,
.w-heroe__lado > .w-heroe__ficha {
  width: 100%;
  align-self: stretch;
}

.w-heroe__lado > .w-heroe__ficha { margin-top: 0; }

/* portada: la foto rellena lo que deja la ficha (4 filas), así las dos
   columnas terminan a la misma altura y la ficha no cae bajo el pliegue */
.p-portada .w-heroe__lado > .w-foto { min-height: 9rem; max-height: 16rem; }

.p-portada .w-heroe__lado > .w-foto img {
  object-position: center 55%;
  filter: grayscale(1) contrast(1.32) brightness(1.08);
}

/* los pies de las fotos interiores los pone la fábrica y no siempre
   describen la imagen: la foto va sin pie hasta que se asocien bien */
.w-heroe .w-foto figcaption,
.w-documento .w-foto figcaption { display: none; }

/* portada: foto a sangre detrás del héroe */
.w-heroe__fondo {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
  background: var(--cian-hondo);
}

.w-heroe__fondo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
  filter: grayscale(1) contrast(1.2);
  mix-blend-mode: multiply;
}

.w-heroe__fondo::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, rgba(30, 35, 39, .95) 0%, rgba(30, 35, 39, .9) 48%, rgba(30, 35, 39, .62) 100%);
}

.w-heroe--foto .w-heroe__ficha { background: linear-gradient(180deg, #323A40, #2A3035); }

.w-heroe__coord {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .4rem .9rem;
  margin: 2.25rem 0 0;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .06em;
  color: var(--niebla);
}

.w-heroe__coord svg { width: 14px; height: 14px; flex: none; color: var(--cian); }

/* migas */
.w-migas { margin: 0 0 clamp(1.5rem, 3.5vw, 2.75rem); }

.w-migas ol {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem 0;
  margin: 0;
  padding: 0;
  list-style: none;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .04em;
  color: var(--fg2);
}

.w-migas li { display: inline-flex; align-items: center; min-width: 0; }

.w-migas li + li::before {
  content: "/";
  margin: 0 .6rem;
  color: var(--cian);
}

.w-migas a { color: var(--fg2); text-decoration: none; }
.w-migas a:hover { color: var(--acc); text-decoration: underline; }
.w-migas [aria-current] { color: var(--fg); }

/* antetítulo */
.w-antetitulo {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 1.1rem;
  font-family: var(--mono);
  font-size: .75rem;
  font-weight: 400;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--acc);
}

.w-antetitulo::before {
  content: "";
  flex: none;
  width: 1.75rem;
  height: 1px;
  background: currentColor;
}

/* entradilla */
.w-entradilla { max-width: 32em; margin-top: 1.4rem; }

.w-entradilla p {
  margin: 0 0 .8em;
  font-size: clamp(1.0625rem, .98rem + .35vw, 1.1875rem);
  line-height: 1.55;
  color: var(--fg);
}

.w-entradilla p:last-child { margin-bottom: 0; }

/* en el héroe solo el primer párrafo va a tamaño de entradilla (2-3 líneas);
   si la página trae más, se leen como texto de apoyo y no empujan el botón */
.w-heroe .w-entradilla { max-width: 36em; }

.w-heroe .w-entradilla p + p {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--fg2);
}

/* ficha técnica del héroe */
.w-heroe__ficha {
  position: relative;
  align-self: start;
  margin-top: .25rem;
  border: 1px solid var(--linea-2);
  background: linear-gradient(180deg, rgba(50, 58, 64, .94), rgba(42, 48, 53, .94));
  box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .9);
}

.w-heroe__ficha::before,
.w-heroe__ficha::after {
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border: 0 solid var(--cian);
}

.w-heroe__ficha::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.w-heroe__ficha::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }

.w-heroe__rotulo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding: .75rem 1.1rem;
  border-bottom: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--niebla);
}

.w-heroe__rotulo::after {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--cian);
  box-shadow: 0 0 0 4px rgba(0, 166, 200, .18);
  animation: w-latido 2.8s ease-in-out infinite;
}

@keyframes w-latido {
  0%, 100% { box-shadow: 0 0 0 3px rgba(0, 166, 200, .2); }
  50% { box-shadow: 0 0 0 7px rgba(0, 166, 200, 0); }
}

/* rótulo de cada panel según el nivel: la plantilla lo deja vacío y aquí
   se nombra lo que de verdad es (perfil del Land, datos de ruta…), para
   que las páginas no parezcan clonadas */
.w-heroe__rotulo:empty::before { content: var(--rotulo, "Datos"); }
.w-heroe__ficha { --rotulo: "Datos principales"; }
.w-plano { --rotulo: "Plano de situación"; }

body[class*="servicio"] .w-heroe__ficha { --rotulo: "Ficha del servicio"; }
:is(body[class*="region"], body[class*="land"]) .w-heroe__ficha { --rotulo: "Perfil del Land"; }
:is(body[class*="region"], body[class*="land"]) .w-plano { --rotulo: "Capital del Land"; }
body[class*="division"] .w-heroe__ficha { --rotulo: "Datos de la región"; }
body[class*="ciudad"] .w-heroe__ficha { --rotulo: "Perfil del destino"; }
body[class*="ciudad"] .w-plano { --rotulo: "Situación en Alemania"; }
body[class*="comarca"] .w-heroe__ficha { --rotulo: "Datos del distrito"; }
:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__ficha { --rotulo: "Datos del municipio"; }
body[class*="contacto"] .w-heroe__ficha { --rotulo: "Atención"; }
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__ficha { --rotulo: "Datos de ruta"; }
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano { --rotulo: "Ruta de salida"; }

/* ficha de datos */
.w-datos {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  margin: 0;
  padding: .2rem 1.1rem .45rem;
}

.w-datos__fila {
  display: grid;
  /* etiqueta estrecha (~1/3) y valores con el resto: los valores en mono
     necesitan el ancho, las etiquetas son de una o dos palabras */
  grid-template-columns: minmax(5.5rem, 34%) minmax(0, 1fr);
  gap: .9rem;
  padding: .8rem 0;
  border-top: 1px solid var(--linea);
}

.w-datos__fila:first-child { border-top: 0; }

.w-datos dt {
  padding-top: .18rem;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .07em;
  text-transform: uppercase;
  line-height: 1.45;
  color: var(--fg2);
}

/* un solo sistema de valores en todas las plantillas: mono en cian luminoso */
.w-datos dd {
  margin: 0;
  font-family: var(--mono);
  font-size: .9375rem;
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.45;
  color: var(--acc);
  /* reparto equilibrado de líneas: evita huérfanos como «AP-» / «7» */
  text-wrap: balance;
  overflow-wrap: break-word;
  hyphens: none;
}

/* códigos de carretera y cifras con unidad, si la fábrica los marca */
.w-datos dd :is(code, abbr, b, .w-datos__cod) { font: inherit; white-space: nowrap; }

/* dato destacado (km, horas, CP…) si la fábrica marca la fila:
   misma letra mono y mismo cian que el resto, solo más grande */
.w-datos__fila--destacado dd,
.w-datos dd .w-datos__cifra {
  font-size: clamp(1.45rem, 1.1rem + 1.1vw, 2rem);
  line-height: 1.1;
  letter-spacing: -.01em;
}

/* variaciones de cabecera según el tipo de página */
body[class*="servicio"] .w-heroe::before {
  background:
    radial-gradient(55% 80% at 100% 10%, rgba(0, 166, 200, .26), transparent 70%),
    linear-gradient(180deg, transparent 55%, rgba(30, 35, 39, .92));
}

body[class*="servicio"] .w-heroe__in { padding-bottom: clamp(2.75rem, 6vw, 5.5rem); }
body[class*="servicio"] .w-heroe__in > h1 { font-size: clamp(1.75rem, 1.05rem + 3.1vw, 3.8rem); }

/* Sistema único por nivel: cambia el fondo de plano y el peso del héroe,
   nunca se añaden adornos sueltos ni filetes en unas páginas sí y en otras no.
   · servicio: rejilla de plano y halo amplio
   · región (Land): curvas de nivel, como un mapa topográfico
   · distrito / ciudad: trama urbana en diagonal, héroe más compacto
   · municipio / localidad: retícula fina de catastro, héroe compacto
   · origen en España: rayado de ruta en sentido de salida */
body[class*="region"] .w-heroe {
  background-image:
    repeating-radial-gradient(circle at 92% 30%, transparent 0 34px, rgba(0, 166, 200, .06) 34px 35px),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: auto, 48px 48px, 48px 48px;
}

body[class*="division"] .w-heroe,
body[class*="ciudad"] .w-heroe,
body[class*="distrito"] .w-heroe {
  background-image:
    repeating-linear-gradient(60deg, rgba(0, 166, 200, .06) 0 1px, transparent 1px 40px),
    repeating-linear-gradient(-30deg, rgba(0, 166, 200, .06) 0 1px, transparent 1px 40px),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px);
  background-size: auto, auto, 24px 24px;
}

body[class*="municipio"] .w-heroe,
body[class*="localidad"] .w-heroe {
  background-size: 48px 48px, 48px 48px, 12px 12px, 12px 12px;
}

body[class*="division"] .w-heroe__in > h1,
body[class*="municipio"] .w-heroe__in > h1,
body[class*="ciudad"] .w-heroe__in > h1,
body[class*="localidad"] .w-heroe__in > h1,
body[class*="distrito"] .w-heroe__in > h1 {
  font-size: clamp(1.6rem, 1.05rem + 2.4vw, 3.1rem);
}

/* mismo arranque superior en todos los niveles: solo cambia el pie */
body[class*="municipio"] .w-heroe__in,
body[class*="localidad"] .w-heroe__in {
  padding-bottom: clamp(1.75rem, 4vw, 3.25rem);
}

body[class*="desde"] .w-heroe,
body[class*="origen"] .w-heroe,
body[class*="comunidad"] .w-heroe,
body[class*="provincia"] .w-heroe {
  background-image:
    repeating-linear-gradient(135deg, rgba(0, 166, 200, .05) 0 1px, transparent 1px 22px),
    linear-gradient(var(--rejilla) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px);
  background-size: auto, 96px 96px, 96px 96px;
}

body[class*="desde"] .w-heroe::before,
body[class*="origen"] .w-heroe::before,
body[class*="comunidad"] .w-heroe::before,
body[class*="provincia"] .w-heroe::before {
  background:
    radial-gradient(55% 70% at 0% 100%, rgba(0, 166, 200, .18), transparent 70%),
    linear-gradient(180deg, transparent 60%, rgba(30, 35, 39, .9));
}

/* ---------- 4b. Plano de situación (pieza propia de cada nivel) ----------
   Ningún trazado va de fondo detrás del texto: los dibujos viven en su
   propio panel. El punto de cada página sale de su canonical, con las
   coordenadas reales pasadas a la proyección del dibujo.
   · Land: mapa de Alemania grande a la derecha del titular, con la
     capital marcada y la distancia por carretera como dato destacado
   · ciudad: el mismo mapa, con su punto exacto, unido a su perfil
   · origen en España: Europa occidental a escala con la capital de
     salida, el paso que le toca (Irún o La Jonquera), la ruta por
     Francia hasta la frontera alemana y los km hasta el paso
   En regiones administrativas (tabla), distritos y municipios (foto)
   el panel no se muestra. */
.w-plano {
  display: none;
  position: relative;
  border: 1px solid var(--linea-2);
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    radial-gradient(70% 60% at 60% 45%, rgba(0, 166, 200, .12), transparent 70%),
    var(--grafito);
}

.w-plano::before,
.w-plano::after {
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border: 0 solid var(--cian);
}

.w-plano::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.w-plano::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }

.w-plano .w-heroe__rotulo::after { display: none; }

.w-plano__mapa {
  position: relative;
  display: block;
  max-width: calc(100% - 2rem);
  margin: 1rem auto;
  background-position: center;
  background-size: 100% 100%;
  background-repeat: no-repeat;
}

.w-plano__pin {
  display: var(--pin, none);
  position: absolute;
  left: var(--pin-x, 50%);
  top: var(--pin-y, 50%);
  width: 22px;
  height: 22px;
  margin: -11px 0 0 -11px;
  border: 1.5px solid var(--cian-luz);
  border-radius: 50%;
  background: radial-gradient(circle, var(--cian) 0 4px, transparent 4.5px);
  box-shadow: 0 0 0 4px rgba(0, 166, 200, .2);
  animation: w-latido 2.8s ease-in-out infinite;
}

.w-plano__pin::before,
.w-plano__pin::after {
  content: "";
  position: absolute;
  background: var(--cian-luz);
}

.w-plano__pin::before { left: 50%; top: -9px; bottom: -9px; width: 1px; margin-left: -.5px; -webkit-mask: linear-gradient(#000 0 7px, transparent 7px calc(100% - 7px), #000 0); mask: linear-gradient(#000 0 7px, transparent 7px calc(100% - 7px), #000 0); }
.w-plano__pin::after { top: 50%; left: -9px; right: -9px; height: 1px; margin-top: -.5px; -webkit-mask: linear-gradient(90deg, #000 0 7px, transparent 7px calc(100% - 7px), #000 0); mask: linear-gradient(90deg, #000 0 7px, transparent 7px calc(100% - 7px), #000 0); }

/* mapa de Alemania: Land, región administrativa y ciudad comparten dibujo
   (contorno suavizado; rótulos a 16 unidades = 10,8 px o más, porque el
   mapa nunca baja de 22rem de alto) */
:is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-plano,
body[class*="division"] .w-plano,
body[class*="ciudad"] .w-plano { display: block; }

:is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-plano__mapa,
body[class*="division"] .w-plano__mapa,
body[class*="ciudad"] .w-plano__mapa {
  width: auto;
  height: clamp(22rem, 26vw, 24rem);
  aspect-ratio: 410 / 520;
  background-image: var(--mapa-ejes), var(--mapa-lander);
}

/* capas del mapa de Alemania (misma proyección en todas):
   · ejes: retícula, coordenadas y la flecha de entrada desde España,
     dentro del plano (sale del suroeste hacia Kehl, lejos de los rótulos)
   · Länder: silueta del país y los límites de los 16 Länder con vértices
     en coordenadas reales, recortados por la silueta
   · silueta en cian: se recorta con la máscara del Land de cada página */
.w-plano__mapa {
  --mapa-ejes: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cpath d='M15 -6v486M91 -6v486M166 -6v486M242 -6v486M317 -6v486M-6 72h372M-6 192h372M-6 312h372M-6 432h372' stroke='rgba(201,203,204,0.16)'/%3E%3Cg fill='%23B4BEC6' color='%23B4BEC6' font-size='16'%3E%3Ctext x='15' y='502' text-anchor='middle'%3E6%C2%B0E%3C/text%3E%3Ctext x='91' y='502' text-anchor='middle'%3E8%C2%B0E%3C/text%3E%3Ctext x='166' y='502' text-anchor='middle'%3E10%C2%B0E%3C/text%3E%3Ctext x='242' y='502' text-anchor='middle'%3E12%C2%B0E%3C/text%3E%3Ctext x='317' y='502' text-anchor='middle'%3E14%C2%B0E%3C/text%3E%3Ctext x='-32' y='78'%3E54%C2%B0N%3C/text%3E%3Ctext x='-32' y='198'%3E52%C2%B0N%3C/text%3E%3Ctext x='-32' y='318'%3E50%C2%B0N%3C/text%3E%3Ctext x='-32' y='438'%3E48%C2%B0N%3C/text%3E%3C/g%3E%3Cpath d='M30 474C50 452 70 418 96 384' fill='none' stroke='%235CD3EC' stroke-width='1.6' stroke-dasharray='6 5'/%3E%3Cpath d='M96 384L94.3 392.8L87.9 388Z' fill='%235CD3EC'/%3E%3Ctext x='76' y='400' text-anchor='end' font-size='15' fill='%235CD3EC' color='%235CD3EC'%3Edesde ES%3C/text%3E%3C/svg%3E");
  --mapa-lander: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cdefs%3E%3Cpath id='o' d='M116,23.5 Q115,17 129.5,19.5 Q144,22 154,29 Q164,36 168,42 Q172,48 186,48.5 Q200,49 204,46 Q208,43 203,56 Q198,69 198.5,71.5 Q199,74 210,74.5 Q221,75 223.5,70.5 Q226,66 235.5,63.5 Q245,61 252.5,52.5 Q260,44 277,37.5 Q294,31 299,39.5 Q304,48 299,57 Q294,66 309.5,71.5 Q325,77 326,83.5 Q327,90 330,103 Q333,116 327.5,129 Q322,142 331.5,150 Q341,158 339.5,165 Q338,172 341.5,183.5 Q345,195 350,210 Q355,225 355.5,234 Q356,243 352,251.5 Q348,260 338,254.5 Q328,249 314,259 Q300,269 288.5,278 Q277,287 261,290.5 Q245,294 252.5,304.5 Q260,315 258.5,322.5 Q257,330 266.5,340.5 Q276,351 285,358.5 Q294,366 302.5,376 Q311,386 303.5,392 Q296,398 287.5,407.5 Q279,417 274.5,421.5 Q270,426 274.5,434 Q279,442 280,452 Q281,462 275.5,456.5 Q270,451 259.5,453.5 Q249,456 237.5,456.5 Q226,457 214.5,462.5 Q203,468 188.5,472 Q174,476 169.5,467.5 Q165,459 159.5,459 Q154,459 144.5,455.5 Q135,452 124,448 Q113,444 111,449.5 Q109,455 104,455.5 Q99,456 87.5,456.5 Q76,457 74.5,447.5 Q73,438 74,431.5 Q75,425 79,413.5 Q83,402 90.5,388 Q98,374 87,370.5 Q76,367 64.5,365.5 Q53,364 48,363 Q43,362 39.5,355 Q36,348 32.5,346 Q29,344 31.5,334 Q34,324 27,314 Q20,304 25,298.5 Q30,293 22.5,280 Q15,267 12.5,258 Q10,249 16,244.5 Q22,240 22.5,231 Q23,222 18,206.5 Q13,191 27.5,194 Q42,197 48.5,187.5 Q55,178 48.5,170 Q42,162 48.5,157.5 Q55,153 57.5,142.5 Q60,132 60,123 Q60,114 55.5,108 Q51,102 61.5,96 Q72,90 81.5,89.5 Q91,89 92.5,95.5 Q94,102 99,95.5 Q104,89 108,94 Q112,99 114.5,89 Q117,79 125.5,78.5 Q134,78 128.5,72 Q123,66 118,60 Q113,54 121.5,48.5 Q130,43 123.5,36.5 Q117,30 116,23.5 Z'/%3E%3CclipPath id='c'%3E%3Cuse href='%23o'/%3E%3C/clipPath%3E%3C/defs%3E%3Cuse href='%23o' fill='rgba(0,166,200,0.1)'/%3E%3Cpath clip-path='url(%23c)' fill='none' stroke='rgba(180,190,198,0.55)' stroke-width='1' vector-effect='non-scaling-stroke' stroke-linejoin='round' d='M83 66L90 -20L225 -20L206 56L200 74.4L198.1 84L194.3 96L187.5 109.8L178.5 103.2L173.6 91.2L166 88.8L155.8 98.4L147.1 91.2L134.2 79.2ZM155.8 98.4L166 88.8L173.6 91.2L178.5 103.2L171.7 108L164.1 106.8L157.3 104.4ZM206 56L225 -20L300 -20L380 60L350.9 114L332.9 115.8L318.9 105L294.4 112.8L279.3 120L252.8 117L215.1 124.8L187.5 109.8L194.3 96L198.1 84L200 74.4ZM33.9 174L-10 160L-10 100L40 80L83 66L134.2 79.2L147.1 91.2L155.8 98.4L157.3 104.4L164.1 106.8L171.7 108L178.5 103.2L187.5 109.8L215.1 124.8L225.3 129.6L211.3 141L195.4 141L201.9 165L201.9 186L188.7 207L188.7 217.8L173.6 226.2L166 228L152.8 231L150.9 222L143.4 213L133.9 195L132 180L126.4 163.2L109.4 162L101.8 165L90.5 186L75.4 180L64.1 177L54.6 177ZM108.6 124.8L115 120L122.6 118.2L127.9 124.2L124.5 130.2L116.9 130.2ZM110.1 95L115.4 95L115.4 102L110.1 102ZM215.1 124.8L252.8 117L279.3 120L294.4 112.8L318.9 105L332.9 115.8L350.9 114L366 222L345.3 222L317 226.2L286.9 217.2L277.4 201L256.6 186L251 168L249.1 141L225.3 129.6ZM282.7 162L290.3 151.2L301.6 154.8L308 165L303.8 170.4L290.3 170.4L283.8 168ZM249.1 225L252.8 249L243.4 253.2L226.4 249L218.9 237L203.8 229.2L188.7 217.8M286.9 217.2L271.8 213L249.1 225M143.4 213L133.9 195L132 180L126.4 163.2M54.6 177L33.9 174L-10 180L-10 300L7.5 294L30.1 292.8L43.3 285L60.3 279L79.2 276L92.4 271.2L98.1 258L111.3 240L126.4 225L143.4 213M166 228L162.2 240L167.9 252L164.1 264L167.9 279L158.5 288L147.1 297L130.1 309L128.3 318L132 337.2L124.5 342L113.2 340.8L107.5 337.2L105.6 321L103.9 311L96.2 310.2L86.7 313.8L83 309.6L84.8 297L94.3 282L92.4 271.2M252.8 249L266.1 255L256.6 264L252.1 274.8L241.5 279L237.7 286.8L222.6 288L211.3 295.2L198.1 289.2L184.9 291L173.6 282L167.9 279M366 222L366 262L300 285L270 300L245.3 292.8L237.7 286.8M7.5 294L5 320L22 338L30.1 340.2L43.3 336L52.8 334.2L62.4 339L67.9 351L67.9 361.2L64.1 372L90.5 381L98.1 373.8L99.9 366L106.4 354L107.5 337.2M64.1 372L40 374L15 350L22 338M132 337.2L141.5 330L150.9 324L162.2 336L171.7 357L183 375L179.2 393L171.7 405L166 408L169.8 426L164.1 447L156.6 459L154.7 474'/%3E%3Cuse href='%23o' fill='none' stroke='%2300A6C8' stroke-width='1.6' vector-effect='non-scaling-stroke' stroke-linejoin='round'/%3E%3C/svg%3E");
  --silueta-cian: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath fill='rgba(0,166,200,0.42)' d='M116,23.5 Q115,17 129.5,19.5 Q144,22 154,29 Q164,36 168,42 Q172,48 186,48.5 Q200,49 204,46 Q208,43 203,56 Q198,69 198.5,71.5 Q199,74 210,74.5 Q221,75 223.5,70.5 Q226,66 235.5,63.5 Q245,61 252.5,52.5 Q260,44 277,37.5 Q294,31 299,39.5 Q304,48 299,57 Q294,66 309.5,71.5 Q325,77 326,83.5 Q327,90 330,103 Q333,116 327.5,129 Q322,142 331.5,150 Q341,158 339.5,165 Q338,172 341.5,183.5 Q345,195 350,210 Q355,225 355.5,234 Q356,243 352,251.5 Q348,260 338,254.5 Q328,249 314,259 Q300,269 288.5,278 Q277,287 261,290.5 Q245,294 252.5,304.5 Q260,315 258.5,322.5 Q257,330 266.5,340.5 Q276,351 285,358.5 Q294,366 302.5,376 Q311,386 303.5,392 Q296,398 287.5,407.5 Q279,417 274.5,421.5 Q270,426 274.5,434 Q279,442 280,452 Q281,462 275.5,456.5 Q270,451 259.5,453.5 Q249,456 237.5,456.5 Q226,457 214.5,462.5 Q203,468 188.5,472 Q174,476 169.5,467.5 Q165,459 159.5,459 Q154,459 144.5,455.5 Q135,452 124,448 Q113,444 111,449.5 Q109,455 104,455.5 Q99,456 87.5,456.5 Q76,457 74.5,447.5 Q73,438 74,431.5 Q75,425 79,413.5 Q83,402 90.5,388 Q98,374 87,370.5 Q76,367 64.5,365.5 Q53,364 48,363 Q43,362 39.5,355 Q36,348 32.5,346 Q29,344 31.5,334 Q34,324 27,314 Q20,304 25,298.5 Q30,293 22.5,280 Q15,267 12.5,258 Q10,249 16,244.5 Q22,240 22.5,231 Q23,222 18,206.5 Q13,191 27.5,194 Q42,197 48.5,187.5 Q55,178 48.5,170 Q42,162 48.5,157.5 Q55,153 57.5,142.5 Q60,132 60,123 Q60,114 55.5,108 Q51,102 61.5,96 Q72,90 81.5,89.5 Q91,89 92.5,95.5 Q94,102 99,95.5 Q104,89 108,94 Q112,99 114.5,89 Q117,79 125.5,78.5 Q134,78 128.5,72 Q123,66 118,60 Q113,54 121.5,48.5 Q130,43 123.5,36.5 Q117,30 116,23.5 Z'/%3E%3C/svg%3E");
}

/* el Land de la página (y el de sus distritos y municipios) en cian */
.w-plano__mapa::before {
  content: "";
  display: var(--land-on, none);
  position: absolute;
  inset: 0;
  background: var(--silueta-cian) center / 100% 100% no-repeat;
  -webkit-mask: var(--land) center / 100% 100% no-repeat;
  mask: var(--land) center / 100% 100% no-repeat;
  pointer-events: none;
}

html:has(link[rel="canonical"]:is([href*=".com/baden-wurtemberg/"], [href*=".com/baviera/"], [href*=".com/berlin/"], [href*=".com/brandeburgo/"],
  [href*=".com/bremen/"], [href*=".com/hamburgo/"], [href*=".com/hesse/"], [href*=".com/mecklemburgo-pomerania-occidental/"],
  [href*=".com/baja-sajonia/"], [href*=".com/renania-del-norte-westfalia/"], [href*=".com/renania-palatinado/"], [href*=".com/sarre/"],
  [href*=".com/sajonia/"], [href*=".com/sajonia-anhalt/"], [href*=".com/schleswig-holstein/"], [href*=".com/turingia/"])) { --land-on: block; }

html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M83 66L90 -20L225 -20L206 56L200 74.4L198.1 84L194.3 96L187.5 109.8L178.5 103.2L173.6 91.2L166 88.8L155.8 98.4L147.1 91.2L134.2 79.2Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/hamburgo/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M155.8 98.4L166 88.8L173.6 91.2L178.5 103.2L171.7 108L164.1 106.8L157.3 104.4Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M206 56L225 -20L300 -20L380 60L350.9 114L332.9 115.8L318.9 105L294.4 112.8L279.3 120L252.8 117L215.1 124.8L187.5 109.8L194.3 96L198.1 84L200 74.4Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath fill-rule='evenodd' d='M33.9 174L-10 160L-10 100L40 80L83 66L134.2 79.2L147.1 91.2L155.8 98.4L157.3 104.4L164.1 106.8L171.7 108L178.5 103.2L187.5 109.8L215.1 124.8L225.3 129.6L211.3 141L195.4 141L201.9 165L201.9 186L188.7 207L188.7 217.8L173.6 226.2L166 228L152.8 231L150.9 222L143.4 213L133.9 195L132 180L126.4 163.2L109.4 162L101.8 165L90.5 186L75.4 180L64.1 177L54.6 177ZM108.6 124.8L115 120L122.6 118.2L127.9 124.2L124.5 130.2L116.9 130.2ZM110.1 95L115.4 95L115.4 102L110.1 102Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/bremen/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M108.6 124.8L115 120L122.6 118.2L127.9 124.2L124.5 130.2L116.9 130.2ZM110.1 95L115.4 95L115.4 102L110.1 102Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath fill-rule='evenodd' d='M215.1 124.8L252.8 117L279.3 120L294.4 112.8L318.9 105L332.9 115.8L350.9 114L366 222L345.3 222L317 226.2L286.9 217.2L277.4 201L256.6 186L251 168L249.1 141L225.3 129.6ZM282.7 162L290.3 151.2L301.6 154.8L308 165L303.8 170.4L290.3 170.4L283.8 168Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/berlin/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M282.7 162L290.3 151.2L301.6 154.8L308 165L303.8 170.4L290.3 170.4L283.8 168Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M225.3 129.6L249.1 141L251 168L256.6 186L277.4 201L286.9 217.2L271.8 213L249.1 225L252.8 249L243.4 253.2L226.4 249L218.9 237L203.8 229.2L188.7 217.8L188.7 207L201.9 186L201.9 165L195.4 141L211.3 141Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M143.4 213L133.9 195L132 180L126.4 163.2L109.4 162L101.8 165L90.5 186L75.4 180L64.1 177L54.6 177L33.9 174L-10 180L-10 300L7.5 294L30.1 292.8L43.3 285L60.3 279L79.2 276L92.4 271.2L98.1 258L111.3 240L126.4 225Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M92.4 271.2L98.1 258L111.3 240L126.4 225L143.4 213L150.9 222L152.8 231L166 228L162.2 240L167.9 252L164.1 264L167.9 279L158.5 288L147.1 297L130.1 309L128.3 318L132 337.2L124.5 342L113.2 340.8L107.5 337.2L105.6 321L103.9 311L96.2 310.2L86.7 313.8L83 309.6L84.8 297L94.3 282Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M188.7 217.8L203.8 229.2L218.9 237L226.4 249L243.4 253.2L252.8 249L266.1 255L256.6 264L252.1 274.8L241.5 279L237.7 286.8L222.6 288L211.3 295.2L198.1 289.2L184.9 291L173.6 282L167.9 279L164.1 264L167.9 252L162.2 240L166 228L173.6 226.2Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M286.9 217.2L317 226.2L345.3 222L366 222L366 262L300 285L270 300L245.3 292.8L237.7 286.8L241.5 279L252.1 274.8L256.6 264L266.1 255L252.8 249L249.1 225L271.8 213Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M92.4 271.2L79.2 276L60.3 279L43.3 285L30.1 292.8L7.5 294L5 320L22 338L30.1 340.2L43.3 336L52.8 334.2L62.4 339L67.9 351L67.9 361.2L64.1 372L90.5 381L98.1 373.8L99.9 366L106.4 354L107.5 337.2L105.6 321L103.9 311L96.2 310.2L86.7 313.8L83 309.6L84.8 297L94.3 282Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/sarre/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M22 338L30.1 340.2L43.3 336L52.8 334.2L62.4 339L67.9 351L67.9 361.2L64.1 372L40 374L15 350Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M107.5 337.2L113.2 340.8L124.5 342L132 337.2L141.5 330L150.9 324L162.2 336L171.7 357L183 375L179.2 393L171.7 405L166 408L169.8 426L164.1 447L156.6 459L154.7 474L60 470L60 430L90.5 381L98.1 373.8L99.9 366L106.4 354Z'/%3E%3C/svg%3E"); }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --land: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-34 -12 410 520'%3E%3Cpath d='M167.9 279L173.6 282L184.9 291L198.1 289.2L211.3 295.2L222.6 288L237.7 286.8L245.3 292.8L270 300L320 380L300 480L154.7 474L156.6 459L164.1 447L169.8 426L166 408L171.7 405L179.2 393L183 375L171.7 357L162.2 336L150.9 324L141.5 330L132 337.2L128.3 318L130.1 309L147.1 297L158.5 288Z'/%3E%3C/svg%3E"); }

/* Land: el mapa es la pieza principal del héroe y crece */
:is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-plano__mapa {
  height: clamp(22rem, 34vw, 30rem);
}

/* capital de cada Land en sus coordenadas (misma proyección que el mapa
   de la portada: x = 15 + (lon − 6) · 37,75 ; y = 72 + (54 − lat) · 60)
   y, como dato destacado, los km aproximados por carretera desde el paso
   de La Jonquera hasta esa capital */
html:has(link[rel="canonical"]:is(
  [href$=".com/baden-wurtemberg/"], [href$=".com/baviera/"], [href$=".com/berlin/"], [href$=".com/brandeburgo/"],
  [href$=".com/bremen/"], [href$=".com/hamburgo/"], [href$=".com/hesse/"], [href$=".com/mecklemburgo-pomerania-occidental/"],
  [href$=".com/baja-sajonia/"], [href$=".com/renania-del-norte-westfalia/"], [href$=".com/renania-palatinado/"], [href$=".com/sarre/"],
  [href$=".com/sajonia/"], [href$=".com/sajonia-anhalt/"], [href$=".com/schleswig-holstein/"], [href$=".com/turingia/"])) {
  --pin: block;
  --dato: block;
  --dato-pie: "por carretera desde La Jonquera hasta la capital del Land";
}

html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/"]) { --pin-x: 41.2%; --pin-y: 76.3%; --km: 1120; }
html:has(link[rel="canonical"][href$=".com/baviera/"]) { --pin-x: 63.3%; --pin-y: 83.8%; --km: 1250; }
html:has(link[rel="canonical"][href$=".com/berlin/"]) { --pin-x: 80%; --pin-y: 33.3%; --km: 1720; }
html:has(link[rel="canonical"][href$=".com/brandeburgo/"]) { --pin-x: 77%; --pin-y: 34.6%; --km: 1700; }
html:has(link[rel="canonical"][href$=".com/bremen/"]) { --pin-x: 37.8%; --pin-y: 26.7%; --km: 1540; }
html:has(link[rel="canonical"][href$=".com/hamburgo/"]) { --pin-x: 48.7%; --pin-y: 21.3%; --km: 1670; }
html:has(link[rel="canonical"][href$=".com/hesse/"]) { --pin-x: 32.6%; --pin-y: 61.4%; --km: 1190; }
html:has(link[rel="canonical"][href$=".com/mecklemburgo-pomerania-occidental/"]) { --pin-x: 61.8%; --pin-y: 20.4%; --km: 1790; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/"]) { --pin-x: 46.3%; --pin-y: 35%; --km: 1510; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/"]) { --pin-x: 19%; --pin-y: 48.1%; --km: 1260; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/"]) { --pin-x: 32.9%; --pin-y: 62.3%; --km: 1190; }
html:has(link[rel="canonical"][href$=".com/sarre/"]) { --pin-x: 21.2%; --pin-y: 71.2%; --km: 1000; }
html:has(link[rel="canonical"][href$=".com/sajonia/"]) { --pin-x: 83.2%; --pin-y: 50.2%; --km: 1640; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/"]) { --pin-x: 63.8%; --pin-y: 37.7%; --km: 1650; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/"]) { --pin-x: 50%; --pin-y: 12.5%; --km: 1770; }
html:has(link[rel="canonical"][href$=".com/turingia/"]) { --pin-x: 58.3%; --pin-y: 51%; --km: 1450; }

/* regiones administrativas (sede del Regierungsbezirk), misma proyección */
html:has(link[rel="canonical"]:is([href$=".com/baden-wurtemberg/stuttgart/"], [href$=".com/baden-wurtemberg/karlsruhe/"], [href$=".com/baden-wurtemberg/friburgo/"], [href$=".com/baden-wurtemberg/tubinga/"],
  [href$=".com/baviera/alta-baviera/"], [href$=".com/baviera/baja-baviera/"], [href$=".com/baviera/alto-palatinado/"], [href$=".com/baviera/alta-franconia/"], [href$=".com/baviera/franconia-media/"], [href$=".com/baviera/baja-franconia/"], [href$=".com/baviera/suabia/"],
  [href$=".com/hesse/darmstadt/"], [href$=".com/hesse/giessen/"], [href$=".com/hesse/kassel/"],
  [href$=".com/renania-del-norte-westfalia/dusseldorf/"], [href$=".com/renania-del-norte-westfalia/colonia/"], [href$=".com/renania-del-norte-westfalia/munster/"], [href$=".com/renania-del-norte-westfalia/detmold/"], [href$=".com/renania-del-norte-westfalia/arnsberg/"])) { --pin: block; }

html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/"]) { --pin-x: 41.2%; --pin-y: 76.4%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/"]) { --pin-x: 34%; --pin-y: 73.7%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/"]) { --pin-x: 29%; --pin-y: 85.5%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/"]) { --pin-x: 40.1%; --pin-y: 79.4%; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/"]) { --pin-x: 63.3%; --pin-y: 83.8%; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/"]) { --pin-x: 68.6%; --pin-y: 79.2%; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/"]) { --pin-x: 68.1%; --pin-y: 73.7%; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/"]) { --pin-x: 63.3%; --pin-y: 63%; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/"]) { --pin-x: 54%; --pin-y: 70.4%; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/"]) { --pin-x: 48.1%; --pin-y: 64.7%; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/"]) { --pin-x: 57.1%; --pin-y: 81.1%; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/"]) { --pin-x: 36.3%; --pin-y: 63.8%; }
html:has(link[rel="canonical"][href$=".com/hesse/giessen/"]) { --pin-x: 36.6%; --pin-y: 55.6%; }
html:has(link[rel="canonical"][href$=".com/hesse/kassel/"]) { --pin-x: 44%; --pin-y: 47.2%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/"]) { --pin-x: 19%; --pin-y: 48.1%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/"]) { --pin-x: 20.8%; --pin-y: 51.5%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/"]) { --pin-x: 27%; --pin-y: 39.7%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/"]) { --pin-x: 38.5%; --pin-y: 39.9%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/"]) { --pin-x: 30.9%; --pin-y: 46.2%; }

/* ciudades: su punto exacto (antes, una curva genérica sin geografía) */
html:has(link[rel="canonical"]:is([href$="/munich/"], [href$="/francfort-del-meno/"], [href$="/sajonia/leipzig/"], [href$="/dortmund/"], [href$="/essen/"],
  [href$="/sajonia/dresde/"], [href$="/baja-sajonia/hannover/"], [href$="/nuremberg/"], [href$="/duisburgo/"], [href$="/bochum/"], [href$="/wuppertal/"],
  [href$="/bielefeld/"], [href$="/colonia/bonn/"], [href$="/mannheim/"], [href$="/augsburgo/"], [href$="/darmstadt/wiesbaden/"], [href$="/gelsenkirchen/"],
  [href$="/monchengladbach/"], [href$="/aquisgran/"], [href$="/baja-sajonia/brunswick/"], [href$="/sajonia/chemnitz/"], [href$="/schleswig-holstein/kiel/"],
  [href$="/sajonia-anhalt/halle/"], [href$="/sajonia-anhalt/magdeburgo/"], [href$="/krefeld/"], [href$="/renania-palatinado/maguncia/"],
  [href$="/schleswig-holstein/lubeck/"], [href$="/turingia/erfurt/"], [href$="/oberhausen/"], [href$="/mecklemburgo-pomerania-occidental/rostock/"])) { --pin: block; }

html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/munich/"]) { --pin-x: 63.3%; --pin-y: 83.8%; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/francfort-del-meno/"]) { --pin-x: 36.6%; --pin-y: 61%; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/wiesbaden/"]) { --pin-x: 32.6%; --pin-y: 61.4%; }
html:has(link[rel="canonical"][href$=".com/sajonia/leipzig/"]) { --pin-x: 70.6%; --pin-y: 46.8%; }
html:has(link[rel="canonical"][href$=".com/sajonia/dresde/"]) { --pin-x: 83.2%; --pin-y: 50.2%; }
html:has(link[rel="canonical"][href$=".com/sajonia/chemnitz/"]) { --pin-x: 75.7%; --pin-y: 52.7%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/dortmund/"]) { --pin-x: 25.5%; --pin-y: 44.9%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/bochum/"]) { --pin-x: 23.2%; --pin-y: 45.2%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/essen/"]) { --pin-x: 21.2%; --pin-y: 45.5%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/duisburgo/"]) { --pin-x: 19%; --pin-y: 45.8%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/wuppertal/"]) { --pin-x: 22.5%; --pin-y: 47.8%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/monchengladbach/"]) { --pin-x: 16%; --pin-y: 48.6%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/krefeld/"]) { --pin-x: 17.1%; --pin-y: 47%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/oberhausen/"]) { --pin-x: 19.9%; --pin-y: 45.3%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/bielefeld/"]) { --pin-x: 35.2%; --pin-y: 39%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/bonn/"]) { --pin-x: 22.1%; --pin-y: 53.9%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/aquisgran/"]) { --pin-x: 12.7%; --pin-y: 53.3%; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/gelsenkirchen/"]) { --pin-x: 22%; --pin-y: 44.9%; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/hannover/"]) { --pin-x: 46.3%; --pin-y: 35%; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/brunswick/"]) { --pin-x: 53.6%; --pin-y: 36.1%; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/nuremberg/"]) { --pin-x: 58.7%; --pin-y: 68.7%; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/augsburgo/"]) { --pin-x: 57.1%; --pin-y: 81.1%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/mannheim/"]) { --pin-x: 34.7%; --pin-y: 68.2%; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/kiel/"]) { --pin-x: 50%; --pin-y: 12.5%; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/lubeck/"]) { --pin-x: 55.1%; --pin-y: 17.7%; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/halle/"]) { --pin-x: 66.9%; --pin-y: 45.2%; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/magdeburgo/"]) { --pin-x: 63.8%; --pin-y: 37.7%; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/maguncia/"]) { --pin-x: 32.9%; --pin-y: 62.3%; }
html:has(link[rel="canonical"][href$=".com/turingia/erfurt/"]) { --pin-x: 58.3%; --pin-y: 51%; }
html:has(link[rel="canonical"][href$=".com/mecklemburgo-pomerania-occidental/rostock/"]) { --pin-x: 68.1%; --pin-y: 15.1%; }

/* origen en España: plano de Europa occidental a escala, en proyección
   equirectangular con el paralelo 45,6° como estándar:
   x = 60 + (lon + 9,5) · 10,2 ; y = (55,4 − lat) · 14,6 (viewBox 360 × 300).
   España, Francia y Alemania con su contorno real simplificado; Portugal,
   Benelux, Suiza, Austria, Chequia, Polonia, Italia y el norte de África
   en tenue, como contexto (sin islas Británicas: no son parte de la ruta). Las dos rutas cruzan
   Francia hasta la frontera alemana: Irún → Burdeos → París → Metz →
   Sarrebruck y La Jonquera → Ródano → Lyon → Besanzón → Mulhouse/Baden.
   Canarias va en recuadro (misma escala, desplazada). Cada página pone
   encima su punto de salida (--ox, --oy), el paso que le toca (--px, --py)
   y los km */
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano { display: block; }

:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano__mapa {
  width: 100%;
  aspect-ratio: 360 / 300;
  container-type: inline-size;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 300' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cpath d='M105.9 0V300M156.9 0V300M207.9 0V300M258.9 0V300M309.9 0V300M0 78.8H360M0 151.8H360M0 224.8H360' stroke='rgba(201,203,204,0.10)'/%3E%3Cg fill='rgba(201,203,204,0.05)' stroke='rgba(201,203,204,0.26)' stroke-width='0.6' stroke-linejoin='round'%3E%3Cpath d='M66.4 197.5L66.8 200.2L68.4 208.1L67.7 215.5L66.4 222.7L64.4 230.7L61.2 234.2L60 242.7L60.8 244L63 247.9L66.4 254.8L65.2 268.3L68.5 267.2L76 268.8L81.4 266.2L80.4 260.6L85.5 252.6L82.4 247.5L85.8 241.2L83 236.5L80.4 230L85.5 229.7L87.5 219.7L86.2 209.8L93.7 201.5L90.1 196.4L83.5 197.4L74.3 198.3L73.3 193.7L68.8 194.9Z'/%3E%3Cpath d='M182.9 62.9L186.7 60.9L193.3 57.8L198.9 49.9L205.4 35.8L212 29.2L224.2 28.5L230.3 30.7L228.8 40.2L225.2 42.6L228.8 46.3L225.8 51.1L217.6 52.6L219.6 62.1L218.1 67.5L222.2 74.2L219.4 76.9L223.2 82.5L221.8 86.6L216.1 85.4L206.9 81.8L206.4 76.7L199.7 74.5L189.5 67.9L186.5 68.6Z'/%3E%3Cpath d='M234.3 114.2L244.6 113.2L248.7 112.7L254.3 115.3L254.3 121.9L263.5 124.1L260 133.6L248.7 139.9L242.6 132.9L237 138.4L228.3 138.7L219.6 134.3L222.2 123.4L228.3 116.1Z'/%3E%3Cpath d='M254.3 115.3L255.6 114.6L261.8 118.7L268.9 116.5L275.2 114.2L281.9 112.4L289.5 115.8L289 111L287 107.3L294.1 99.7L298.1 96.8L309.9 93.4L329.3 97.8L331.8 108L321.1 124.8L296.6 129.6L283.4 127.3L263.5 124.1L254.3 121.9Z'/%3E%3Cpath d='M298.1 96.8L285.9 87.2L280.3 74.5L284.9 73L298.2 68.2L302.3 65.4L308.1 66.1L323.2 69.4L340.5 78.8L349.2 86.1L329.3 97.8L309.9 93.4Z'/%3E%3Cpath d='M302.3 21.6L320.1 16.8L345.6 8.8L360 13.9L360 80.3L349.2 86.1L340.5 78.8L323.2 69.4L308.1 66.1L309.9 62.1L307.4 54.8L305.8 40.9L301.2 35.8L303.8 30.7Z'/%3E%3Cpath d='M233.4 169.7L238.8 168.2L248 160.5L257.2 165L262 173L264.1 181.8L281.9 199.3L295.7 207.3L302.3 213.2L316 224.8L316.5 254.8L320.6 255L331.8 233.6L332.8 218.3L345.6 222.7L340 215.4L329 208.3L321.6 197.1L301.7 188.8L294.6 172.3L285.1 165.4L284.4 152.6L282.9 145.3L297.2 142.4L296.6 129.6L283.4 127.3L263.5 124.1L260 133.6L248.7 139.9L242.6 132.9L237 138.4L228.3 138.7L226.9 139.7L229.3 147.5L225.2 151.8L227.8 160.6Z'/%3E%3Cpath d='M283.4 257L292.6 251.1L316.5 250.4L310.9 268.6L310.9 273L303.8 271.6L283.9 259.9Z'/%3E%3Cpath d='M91.6 300L93.7 294.9L97.7 286.5L102.7 284.8L102.8 289.8L116.1 294.9L126.8 291.3L126.9 293.6L134.5 299.3L150.3 286.9L162 281.8L188 272L207.9 271.6L235.9 269.4L256.9 264.3L269.1 267.9L265.1 290.5L268.1 300Z'/%3E%3C/g%3E%3Cpath d='M138.6 175.6L141 174L144.2 157L146.1 143.5L144.7 135.1L138.7 129.9L134.5 118.7L125.1 115.6L122.5 112.4L108.7 107.5L108.1 102.5L116.3 97.5L136.3 98.6L141.5 98.8L140.6 95.8L137.1 82.9L144 83.7L153.8 88.8L157.9 86.3L167.9 79.9L173.2 68.3L175.8 64.8L182.9 62.9L186.5 68.6L189.5 67.9L199.7 74.5L206.4 76.7L206.9 81.8L216.1 85.4L221.8 86.6L227.8 90.8L240.8 93.9L236.5 99.6L233.9 108L234.3 114.2L228.3 116.1L222.2 123.4L219.6 134.3L226.9 139.7L229.3 147.5L225.2 151.8L227.8 160.6L233.4 169.7L231.1 170.8L227.3 174.5L224.7 178.1L217.4 179.6L211.7 176.7L203.8 175.2L196.7 173.3L192.3 177L188.5 179.6L187.9 185.4L189.2 189.4L186.2 188.9L182.4 190.5L176.6 189.4L171.7 187.6L164 183.2L156.9 185.4L151.6 184.1L146.7 181.8L143.1 180.6L142.1 177.1Z' fill='rgba(180,190,198,0.12)' stroke='%23B4BEC6' stroke-width='0.9' stroke-linejoin='round'/%3E%3Cg fill='rgba(0,166,200,0.16)' stroke='%2300A6C8' stroke-width='1.1' stroke-linejoin='round'%3E%3Cpath d='M138.6 175.6L136.7 176.4L134.5 176.7L129.2 174.9L126 175.6L124.1 175.5L121.7 174.4L118.1 174.2L112 175.4L108.5 174.9L105.3 174.2L99.1 173L97.2 171.4L96.4 172.4L94.2 172.7L90.2 173L85.1 173.2L81.8 171.4L78.5 169.5L76.8 171L76.6 169.8L74.7 171.4L73 174L71.2 175.6L67 176.4L63.3 179.1L62.3 182.8L64.5 184.4L65.1 187.6L67.5 186.9L67.1 189.8L68 192.2L66.7 193.9L66.5 197.1L66.4 197.5L68.8 194.9L73.3 193.7L74.3 198.3L83.5 197.4L90.1 196.4L93.7 201.5L86.2 209.8L87.5 219.7L85.5 229.7L80.4 230L83 236.5L85.8 241.2L82.4 247.5L85.5 252.6L80.4 260.6L81.4 266.2L86 265.7L89.9 268.6L92 271.7L92.7 275.5L95.4 280.6L99.8 283.1L101.5 281.3L102.3 281.3L104.4 277.1L107.1 275.9L109.8 275.4L111.8 272.9L117.3 272.4L121 272.7L126.1 272.4L130.3 272.1L131.8 271L134.6 272.7L137.7 268.8L138.1 266.6L140.8 262.7L144.1 260.5L146.9 259.9L149.9 259.4L149.6 257.7L150 254.3L151.4 251.3L152.1 248.9L155.6 246.2L159.2 243.4L157.9 241.8L155.2 239.9L154.5 237L153.5 232.9L154.6 230L156.9 225.4L158.3 223.5L161 219.6L163 216.1L165.8 214.6L164.6 213.1L165.1 212L168.5 209.2L169.7 208.6L175.4 206.9L179 204.7L181.8 202.4L185.4 200.5L188.8 197.8L189.6 194.9L189.4 191.8L190.8 191L189.2 189.4L186.2 188.9L182.4 190.5L176.6 189.4L171.7 187.6L164 183.2L156.9 185.4L151.6 184.1L146.7 181.8L143.1 180.6L142.1 177.1Z'/%3E%3Cpath d='M180.9 231L183.6 226.6L189 225.6L192.3 228.9L190 234.2L184.9 233.9Z'/%3E%3Cpath d='M195.9 225.1L196.2 223.8L200.3 224.8L200.8 227Z'/%3E%3Cpath d='M169.1 240.2L171.2 238L173.4 239.4L171.2 242Z'/%3E%3Ccircle cx='171.7' cy='243.9' r='0.9'/%3E%3Ccircle cx='102.7' cy='284.8' r='1.6'/%3E%3Ccircle cx='126.9' cy='293.6' r='1.6'/%3E%3Cellipse cx='6' cy='286.8' rx='1.4' ry='1.8'/%3E%3Cellipse cx='7.6' cy='273.2' rx='1.6' ry='3'/%3E%3Cellipse cx='13.9' cy='281.7' rx='1.7' ry='1.7'/%3E%3Cellipse cx='20.3' cy='279.2' rx='4.5' ry='2.8'/%3E%3Cellipse cx='30.5' cy='283.9' rx='2.8' ry='3.2'/%3E%3Cellipse cx='46.8' cy='277.3' rx='2.2' ry='5' transform='rotate(40 46.8 277.3)'/%3E%3Cellipse cx='50.9' cy='267.8' rx='1.9' ry='3.4' transform='rotate(40 50.9 267.8)'/%3E%3C/g%3E%3Cpath d='M245.1 7.2L248.7 13.4L244.8 15.6L245.6 22.3L240 27L234.4 24.8L230.3 30.7L228.8 40.2L225.2 42.6L228.8 46.3L225.8 51.1L217.6 52.6L219.6 62.1L218.1 67.5L222.2 74.2L219.4 76.9L223.2 82.5L221.8 86.6L227.8 90.8L240.8 93.9L236.5 99.6L233.9 108L234.3 114.2L244.6 113.2L248.7 112.7L255.6 114.6L261.8 118.7L268.9 116.5L275.2 114.2L281.9 112.4L289.5 115.8L289 111L287 107.3L294.1 99.7L298.1 96.8L285.9 87.2L280.3 74.5L284.9 73L298.2 68.2L302.3 65.4L308.1 66.1L309.9 62.1L307.4 54.8L305.8 40.9L301.2 35.8L303.8 30.7L302.3 21.6L296.1 12.4L293.5 10.5L284.4 13.6L280.3 17.8L273.7 21.2L268.1 20.4L270.1 13.9L260.9 14.3L253.3 8.5Z' fill='rgba(0,166,200,0.24)' stroke='%235CD3EC' stroke-width='1.2' stroke-linejoin='round'/%3E%3Crect x='2' y='258' width='56' height='38' fill='none' stroke='rgba(201,203,204,0.35)' stroke-dasharray='3 3'/%3E%3Cg fill='none' stroke='%2300C8EE' stroke-width='2.4' stroke-dasharray='6 3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M138.6 175.6L151 154.2L160.4 128.8L176.4 109.5L180.9 95.5L198 89.6L219.9 91.7L228 90.4'/%3E%3Cpath d='M186.2 189.5L187.5 178.4L196.5 172.1L201.4 168.8L206.3 140.7L218.3 119.1L233.9 111'/%3E%3C/g%3E%3Cg fill='%232A3035' stroke='%235CD3EC' stroke-width='1.4'%3E%3Crect x='135.1' y='172.1' width='7' height='7' transform='rotate(45 138.6 175.6)'/%3E%3Crect x='182.7' y='186' width='7' height='7' transform='rotate(45 186.2 189.5)'/%3E%3Crect x='225' y='87.4' width='6' height='6' transform='rotate(45 228 90.4)'/%3E%3Crect x='230.9' y='108' width='6' height='6' transform='rotate(45 233.9 111)'/%3E%3C/g%3E%3Cg fill='none' stroke='%23B4BEC6' stroke-width='0.7'%3E%3Cpath d='M127.5 166.5L135.3 173.2M189.6 192.8L195.5 196.8M172 254.5L150 250.5'/%3E%3C/g%3E%3Ccircle cx='150' cy='250.5' r='1.4' fill='%23B4BEC6'/%3E%3Cg fill='%23DCE1E5' color='%23DCE1E5' font-size='14.5' letter-spacing='0.3' stroke='%232A3035' stroke-width='3.5' stroke-linejoin='round' paint-order='stroke'%3E%3Ctext x='126' y='166' text-anchor='end'%3EIR%C3%9AN%3C/text%3E%3Ctext x='197' y='206'%3ELA JONQUERA%3C/text%3E%3Ctext x='266' y='60' text-anchor='middle'%3EALEMANIA%3C/text%3E%3C/g%3E%3Cg fill='%23B4BEC6' color='%23B4BEC6' font-size='12' letter-spacing='0.6' stroke='%232A3035' stroke-width='3' stroke-linejoin='round' paint-order='stroke'%3E%3Ctext x='146' y='110' text-anchor='middle'%3EFRANCIA%3C/text%3E%3Ctext x='174' y='258'%3EESPA%C3%91A%3C/text%3E%3C/g%3E%3Cg fill='%23B4BEC6' color='%23B4BEC6' font-size='13'%3E%3Ctext x='356' y='75.8' text-anchor='end'%3E50%C2%B0N%3C/text%3E%3Ctext x='356' y='148.8' text-anchor='end'%3E45%C2%B0N%3C/text%3E%3Ctext x='356' y='221.8' text-anchor='end'%3E40%C2%B0N%3C/text%3E%3Ctext x='156.9' y='297' text-anchor='middle'%3E0%C2%B0%3C/text%3E%3Ctext x='207.9' y='297' text-anchor='middle'%3E5%C2%B0E%3C/text%3E%3Ctext x='258.9' y='297' text-anchor='middle'%3E10%C2%B0E%3C/text%3E%3C/g%3E%3C/svg%3E");
}

:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano__pin {
  left: calc(var(--ox, 50) * 1%);
  top: calc(var(--oy, 50) * 1%);
  z-index: 2;
}

/* tramo propio: del punto de salida al paso que le toca, medido en el
   ancho del plano (1 % de alto = 0,8333 cqw por la proporción 360/300) */
.w-plano__ruta {
  display: var(--ruta, none);
  position: absolute;
  left: calc(var(--ox, 0) * 1%);
  top: calc(var(--oy, 0) * 1%);
  width: hypot(calc((var(--px, 0) - var(--ox, 0)) * 1cqw), calc((var(--py, 0) - var(--oy, 0)) * .8333cqw));
  height: 2px;
  margin-top: -1px;
  transform-origin: 0 50%;
  rotate: atan2(calc((var(--py, 0) - var(--oy, 0)) * .8333), calc(var(--px, 0) - var(--ox, 0)));
  background: repeating-linear-gradient(90deg, var(--cian-luz) 0 7px, transparent 7px 11px);
  filter: drop-shadow(0 0 3px rgba(92, 211, 236, .55));
}

/* el paso que le toca, con su aro */
.w-plano__paso {
  display: var(--paso, none);
  position: absolute;
  left: calc(var(--px, 0) * 1%);
  top: calc(var(--py, 0) * 1%);
  width: 26px;
  height: 26px;
  margin: -13px 0 0 -13px;
  border: 1.5px solid var(--cian-luz);
  border-radius: 50%;
  box-shadow: 0 0 0 5px rgba(0, 166, 200, .18);
}

/* dato destacado del plano (km), con su pie */
.w-plano__dato {
  display: var(--dato, none);
  counter-reset: km var(--km, 0);
  margin: 0 1rem 1rem;
  padding-top: .8rem;
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
}

.w-plano__dato::before {
  content: "≈ " counter(km) " km";
  display: block;
  font-size: clamp(1.6rem, 1.15rem + 1.3vw, 2.2rem);
  line-height: 1.1;
  letter-spacing: -.01em;
  color: var(--cian-luz);
}

.w-plano__dato::after {
  content: var(--dato-pie, "");
  display: block;
  margin-top: .35rem;
  font-size: .8125rem;
  letter-spacing: .03em;
  line-height: 1.45;
  color: var(--niebla);
}

/* paso por Irún: oeste y norte peninsular */
html:has(link[rel="canonical"]:is(
  [href$=".com/desde/galicia/"], [href$=".com/desde/galicia/a-coruna/"], [href$=".com/desde/galicia/lugo/"], [href$=".com/desde/galicia/ourense/"], [href$=".com/desde/galicia/pontevedra/"],
  [href$=".com/desde/asturias/"], [href$=".com/desde/cantabria/"],
  [href$=".com/desde/castilla-y-leon/"], [href$=".com/desde/castilla-y-leon/avila/"], [href$=".com/desde/castilla-y-leon/burgos/"], [href$=".com/desde/castilla-y-leon/leon/"],
  [href$=".com/desde/castilla-y-leon/palencia/"], [href$=".com/desde/castilla-y-leon/salamanca/"], [href$=".com/desde/castilla-y-leon/segovia/"], [href$=".com/desde/castilla-y-leon/soria/"],
  [href$=".com/desde/castilla-y-leon/valladolid/"], [href$=".com/desde/castilla-y-leon/zamora/"],
  [href$=".com/desde/comunidad-de-madrid/"], [href$=".com/desde/extremadura/"], [href$=".com/desde/extremadura/badajoz/"], [href$=".com/desde/extremadura/caceres/"],
  [href$=".com/desde/comunidad-foral-de-navarra/"], [href$=".com/desde/pais-vasco/"], [href$=".com/desde/pais-vasco/alava/"], [href$=".com/desde/pais-vasco/vizcaya/"],
  [href$=".com/desde/pais-vasco/guipuzcoa/"], [href$=".com/desde/la-rioja/"],
  [href$=".com/desde/castilla-la-mancha/toledo/"], [href$=".com/desde/castilla-la-mancha/ciudad-real/"])) {
  --pin: block; --ruta: block; --paso: block; --dato: block;
  --px: 38.5; --py: 58.5;
  --dato-pie: "por carretera desde la capital hasta el paso de Irún";
}

/* paso por La Jonquera: este, sur y Mediterráneo */
html:has(link[rel="canonical"]:is(
  [href$=".com/desde/andalucia/"], [href$=".com/desde/andalucia/almeria/"], [href$=".com/desde/andalucia/cadiz/"], [href$=".com/desde/andalucia/cordoba/"], [href$=".com/desde/andalucia/granada/"],
  [href$=".com/desde/andalucia/huelva/"], [href$=".com/desde/andalucia/jaen/"], [href$=".com/desde/andalucia/malaga/"], [href$=".com/desde/andalucia/sevilla/"],
  [href$=".com/desde/aragon/"], [href$=".com/desde/aragon/huesca/"], [href$=".com/desde/aragon/teruel/"], [href$=".com/desde/aragon/zaragoza/"],
  [href$=".com/desde/islas-baleares/"], [href$=".com/desde/cataluna/"], [href$=".com/desde/cataluna/barcelona/"], [href$=".com/desde/cataluna/girona/"],
  [href$=".com/desde/cataluna/lleida/"], [href$=".com/desde/cataluna/tarragona/"],
  [href$=".com/desde/comunidad-valenciana/"], [href$=".com/desde/comunidad-valenciana/alicante/"], [href$=".com/desde/comunidad-valenciana/castellon/"], [href$=".com/desde/comunidad-valenciana/valencia/"],
  [href$=".com/desde/region-de-murcia/"], [href$=".com/desde/castilla-la-mancha/albacete/"], [href$=".com/desde/castilla-la-mancha/cuenca/"], [href$=".com/desde/castilla-la-mancha/guadalajara/"],
  [href$=".com/desde/ceuta/"], [href$=".com/desde/melilla/"])) {
  --pin: block; --ruta: block; --paso: block; --dato: block;
  --px: 51.7; --py: 63.2;
  --dato-pie: "por carretera desde la capital hasta el paso de La Jonquera";
}

/* comunidad con provincias por los dos pasos y Canarias (presupuesto
   manual, por barco): solo el punto, sin tramo ni km */
html:has(link[rel="canonical"]:is([href$=".com/desde/castilla-la-mancha/"], [href$=".com/desde/canarias/"], [href$=".com/desde/canarias/las-palmas/"], [href$=".com/desde/canarias/santa-cruz-de-tenerife/"])) { --pin: block; }

/* islas y ciudades autónomas: tramo hasta el paso, pero sin km por
   carretera (hay trayecto en barco antes) */
html:has(link[rel="canonical"]:is([href$=".com/desde/islas-baleares/"], [href$=".com/desde/ceuta/"], [href$=".com/desde/melilla/"])) { --dato: none; }

/* punto de salida (capital) y km hasta el paso */
html:has(link[rel="canonical"][href$=".com/desde/andalucia/"]) { --ox: 26.6; --oy: 87.6; --km: 1200; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/almeria/"]) { --ox: 36.6; --oy: 90.3; --km: 960; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/cadiz/"]) { --ox: 25.8; --oy: 91.8; --km: 1320; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/cordoba/"]) { --ox: 30; --oy: 85.3; --km: 1060; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/granada/"]) { --ox: 33.4; --oy: 88.7; --km: 1020; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/huelva/"]) { --ox: 23.9; --oy: 88.3; --km: 1290; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/jaen/"]) { --ox: 32.8; --oy: 85.8; --km: 990; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/malaga/"]) { --ox: 31.1; --oy: 90.9; --km: 1140; }
html:has(link[rel="canonical"][href$=".com/desde/andalucia/sevilla/"]) { --ox: 26.6; --oy: 87.6; --km: 1200; }
html:has(link[rel="canonical"][href$=".com/desde/aragon/"]) { --ox: 41.1; --oy: 66.9; --km: 460; }
html:has(link[rel="canonical"][href$=".com/desde/aragon/huesca/"]) { --ox: 42.4; --oy: 64.5; --km: 415; }
html:has(link[rel="canonical"][href$=".com/desde/aragon/teruel/"]) { --ox: 40.4; --oy: 73.3; --km: 640; }
html:has(link[rel="canonical"][href$=".com/desde/aragon/zaragoza/"]) { --ox: 41.1; --oy: 66.9; --km: 460; }
html:has(link[rel="canonical"][href$=".com/desde/asturias/"]) { --ox: 27; --oy: 58.6; --km: 425; }
html:has(link[rel="canonical"][href$=".com/desde/islas-baleares/"]) { --ox: 51.1; --oy: 77; }
html:has(link[rel="canonical"][href$=".com/desde/canarias/"]) { --ox: 7.8; --oy: 93; }
html:has(link[rel="canonical"][href$=".com/desde/canarias/las-palmas/"]) { --ox: 9; --oy: 93.8; }
html:has(link[rel="canonical"][href$=".com/desde/canarias/santa-cruz-de-tenerife/"]) { --ox: 6.6; --oy: 92.1; }
html:has(link[rel="canonical"][href$=".com/desde/cantabria/"]) { --ox: 32.8; --oy: 58.1; --km: 220; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/"]) { --ox: 30.2; --oy: 66.9; --km: 360; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/avila/"]) { --ox: 30.3; --oy: 71.7; --km: 480; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/burgos/"]) { --ox: 33.1; --oy: 63.6; --km: 240; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/leon/"]) { --ox: 27.8; --oy: 62.3; --km: 420; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/palencia/"]) { --ox: 30.8; --oy: 65.2; --km: 330; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/salamanca/"]) { --ox: 27.6; --oy: 70.2; --km: 480; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/segovia/"]) { --ox: 31.9; --oy: 70.3; --km: 450; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/soria/"]) { --ox: 36.6; --oy: 66.4; --km: 300; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/valladolid/"]) { --ox: 30.2; --oy: 66.9; --km: 360; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-y-leon/zamora/"]) { --ox: 27.3; --oy: 67.6; --km: 460; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/"]) { --ox: 32.2; --oy: 75.6; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/albacete/"]) { --ox: 38.3; --oy: 79.9; --km: 690; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/ciudad-real/"]) { --ox: 32.4; --oy: 79.9; --km: 670; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/cuenca/"]) { --ox: 37.6; --oy: 74.6; --km: 700; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/guadalajara/"]) { --ox: 34.6; --oy: 71.9; --km: 720; }
html:has(link[rel="canonical"][href$=".com/desde/castilla-la-mancha/toledo/"]) { --ox: 32.2; --oy: 75.6; --km: 550; }
html:has(link[rel="canonical"][href$=".com/desde/cataluna/"]) { --ox: 49.7; --oy: 68.2; --km: 150; }
html:has(link[rel="canonical"][href$=".com/desde/cataluna/barcelona/"]) { --ox: 49.7; --oy: 68.2; --km: 150; }
html:has(link[rel="canonical"][href$=".com/desde/cataluna/girona/"]) { --ox: 51.6; --oy: 65.3; --km: 60; }
html:has(link[rel="canonical"][href$=".com/desde/cataluna/lleida/"]) { --ox: 45.3; --oy: 67.1; --km: 300; }
html:has(link[rel="canonical"][href$=".com/desde/cataluna/tarragona/"]) { --ox: 47.1; --oy: 69.5; --km: 250; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-valenciana/"]) { --ox: 42.5; --oy: 77.5; --km: 500; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-valenciana/alicante/"]) { --ox: 42.2; --oy: 83; --km: 670; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-valenciana/castellon/"]) { --ox: 43.5; --oy: 75; --km: 430; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-valenciana/valencia/"]) { --ox: 42.5; --oy: 77.5; --km: 500; }
html:has(link[rel="canonical"][href$=".com/desde/extremadura/"]) { --ox: 25.6; --oy: 80.2; --km: 760; }
html:has(link[rel="canonical"][href$=".com/desde/extremadura/badajoz/"]) { --ox: 23.8; --oy: 80.4; --km: 780; }
html:has(link[rel="canonical"][href$=".com/desde/extremadura/caceres/"]) { --ox: 25.5; --oy: 77.5; --km: 690; }
html:has(link[rel="canonical"][href$=".com/desde/galicia/"]) { --ox: 19.4; --oy: 60.9; --km: 760; }
html:has(link[rel="canonical"][href$=".com/desde/galicia/a-coruna/"]) { --ox: 19.8; --oy: 58.6; --km: 715; }
html:has(link[rel="canonical"][href$=".com/desde/galicia/lugo/"]) { --ox: 22.2; --oy: 60.3; --km: 650; }
html:has(link[rel="canonical"][href$=".com/desde/galicia/ourense/"]) { --ox: 21.3; --oy: 63.6; --km: 675; }
html:has(link[rel="canonical"][href$=".com/desde/galicia/pontevedra/"]) { --ox: 19.1; --oy: 63.1; --km: 780; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-de-madrid/"]) { --ox: 33.1; --oy: 72.9; --km: 480; }
html:has(link[rel="canonical"][href$=".com/desde/region-de-murcia/"]) { --ox: 40.4; --oy: 84.7; --km: 750; }
html:has(link[rel="canonical"][href$=".com/desde/comunidad-foral-de-navarra/"]) { --ox: 38.9; --oy: 61.2; --km: 95; }
html:has(link[rel="canonical"][href$=".com/desde/pais-vasco/"]) { --ox: 36; --oy: 61.1; --km: 120; }
html:has(link[rel="canonical"][href$=".com/desde/pais-vasco/alava/"]) { --ox: 36; --oy: 61.1; --km: 120; }
html:has(link[rel="canonical"][href$=".com/desde/pais-vasco/vizcaya/"]) { --ox: 35.3; --oy: 59.1; --km: 120; }
html:has(link[rel="canonical"][href$=".com/desde/pais-vasco/guipuzcoa/"]) { --ox: 38; --oy: 58.8; --km: 20; }
html:has(link[rel="canonical"][href$=".com/desde/la-rioja/"]) { --ox: 36.6; --oy: 62.9; --km: 210; }
html:has(link[rel="canonical"][href$=".com/desde/ceuta/"]) { --ox: 28.5; --oy: 94.9; }
html:has(link[rel="canonical"][href$=".com/desde/melilla/"]) { --ox: 35.3; --oy: 97.9; }

/* foto de banco fuera del héroe en Land, región, ciudad, distrito y
   origen: el plano la sustituye (sin terminales portuarias en ciudades de
   interior ni fotos que repitan la portada) */
:is(body[class*="region"], body[class*="land"], body[class*="division"], body[class*="ciudad"], body[class*="comarca"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-foto { display: none; }

/* distrito: mismo mapa de Alemania con su Land en cian y, donde se
   conoce, la sede del distrito marcada */
body[class*="comarca"] .w-plano { display: block; --rotulo: "Situación del distrito"; }

body[class*="comarca"] .w-plano__mapa {
  width: auto;
  height: clamp(19rem, 24vw, 22rem);
  aspect-ratio: 410 / 520;
  background-image: var(--mapa-ejes), var(--mapa-lander);
}

/* municipio: la foto manda y un plano de situación pequeño (solo
   silueta y Länder, sin rótulos) se apoya en su esquina */
:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) { position: relative; }

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-plano {
  display: block;
  position: absolute;
  top: .75rem;
  right: .75rem;
  z-index: 2;
  width: clamp(5.5rem, 26%, 8rem);
  background: rgba(23, 27, 30, .86);
}

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-plano :is(.w-heroe__rotulo, .w-plano__dato) { display: none; }

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) .w-plano__mapa {
  width: calc(100% - .8rem);
  max-width: none;
  aspect-ratio: 410 / 520;
  margin: .4rem;
  background-image: var(--mapa-lander);
}

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) .w-plano__pin {
  width: 12px;
  height: 12px;
  margin: -6px 0 0 -6px;
  border-width: 1px;
  background: radial-gradient(circle, var(--cian-luz) 0 2.5px, transparent 3px);
  box-shadow: 0 0 0 3px rgba(0, 166, 200, .25);
}

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) .w-plano__pin::before,
:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) .w-plano__pin::after { display: none; }

/* sede de los distritos y municipios que tienen su punto (misma
   proyección: x = 15 + (lon − 6) · 37,75 ; y = 72 + (54 − lat) · 60) */
html:has(link[rel="canonical"]:is([href*=".com/baden-wurtemberg/stuttgart/distrito-ostalbkreis/"], [href$=".com/baden-wurtemberg/stuttgart/stuttgart/"], [href$=".com/baden-wurtemberg/karlsruhe/karlsruhe/"])) { --pin: block; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-ostalbkreis/"]) { --pin-x: 49.6%; --pin-y: 75.7%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/stuttgart/"]) { --pin-x: 41.2%; --pin-y: 76.4%; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/karlsruhe/"]) { --pin-x: 34%; --pin-y: 73.7%; }

/* distrito y municipio llevan foto: si la de banco no cuadra con el lugar
   (Pirineo nevado, aduana dentro de la UE, puerto fuera de la costa, valle
   de montaña en la llanura del norte), se cambia por una del tipo de
   página: polígono, muelle, autopista o almacén, según el Land */
/* (Baden-Wurtemberg y el norte usan el muelle por defecto: el viaducto y
   la llanura son las franjas de sus páginas de Land y no se repiten debajo) */
:root { --foto-lugar: url("/img/banco-camion-6-1280.webp"); }
html:has(link[rel="canonical"]:is([href*=".com/berlin/"], [href*=".com/hesse/"])) { --foto-lugar: url("/img/banco-internacional-8-1280.webp"); }
html:has(link[rel="canonical"]:is([href*=".com/bremen/"], [href*=".com/hamburgo/"])) { --foto-lugar: url("/img/banco-grupaje-4-1280.webp"); }
html:has(link[rel="canonical"]:is([href*=".com/renania-del-norte-westfalia/"], [href*=".com/sajonia/"])) { --foto-lugar: url("/img/banco-palets-2-1280.webp"); }
html:has(link[rel="canonical"]:is([href*=".com/renania-palatinado/"], [href*=".com/turingia/"])) { --foto-lugar: url("/img/banco-grupaje-3-1280.webp"); }

:is(body[class*="municipio"], body[class*="comarca"], body[class*="localidad"]) .w-heroe__lado > .w-foto:has(img[src*="banco-internacional-1-"], img[src*="/internacional-"], img[src*="aduanas-"]),
html:not(:has(link[rel="canonical"]:is([href*=".com/hamburgo/"], [href*=".com/bremen/"], [href*=".com/schleswig-holstein/"], [href*=".com/mecklemburgo-pomerania-occidental/"], [href*=".com/baja-sajonia/"]))) :is(body[class*="municipio"], body[class*="comarca"], body[class*="localidad"]) .w-heroe__lado > .w-foto:has(img[src*="banco-internacional-3-"]),
html:has(link[rel="canonical"]:is([href*=".com/hamburgo/"], [href*=".com/bremen/"], [href*=".com/schleswig-holstein/"], [href*=".com/mecklemburgo-pomerania-occidental/"], [href*=".com/baja-sajonia/"], [href*=".com/brandeburgo/"], [href*=".com/berlin/"], [href*=".com/sajonia-anhalt/"])) :is(body[class*="municipio"], body[class*="comarca"], body[class*="localidad"]) .w-heroe__lado > .w-foto:has(img[src*="banco-internacional-6-"]) {
  --foto-cambio: block;
  --foto-op: 0;
}

/* la foto del héroe de la portada (camiones en autopista) es solo suya:
   si la fábrica la pone en una página interior, se cambia por la del Land
   (o la del muelle, fuera de los Länder) */
body:not(.p-portada) .w-heroe__lado > .w-foto:has(img[src*="banco-internacional-2-"]) {
  --foto-cambio: block;
  --foto-op: 0;
}

.w-heroe__lado > .w-foto::before {
  content: "";
  position: absolute;
  inset: 0;
  display: var(--foto-cambio, none);
  background: var(--foto-lugar) center / cover no-repeat;
  filter: grayscale(1) contrast(1.38) brightness(1.04);
  mix-blend-mode: multiply;
}

.w-heroe__lado > .w-foto img { opacity: var(--foto-op, 1); }

/* ---------- 5. Botones ---------- */
.w-cta {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  padding: .85rem 1.35rem;
  border: 1px solid var(--btn-bg);
  border-radius: var(--radio);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: var(--sans);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .2s var(--curva), border-color .2s var(--curva), color .2s var(--curva), transform .2s var(--curva);
}

.w-cta::after {
  content: "→";
  font-family: var(--mono);
  transition: transform .25s var(--curva);
}

.w-cta:hover {
  background: var(--btn-bg-hover);
  border-color: var(--btn-bg-hover);
  color: var(--btn-fg);
}

.zona-papel .w-cta:hover { color: var(--blanco); }
.w-cta:hover::after { transform: translateX(4px); }
.w-cta:active { transform: translateY(1px); }

.w-cta--sec {
  background: transparent;
  border-color: var(--linea-2);
  color: var(--acc);
}

.w-cta--sec:hover {
  background: rgba(0, 166, 200, .1);
  border-color: var(--acc);
  color: var(--acc);
}

.zona-papel .w-cta--sec:hover { color: var(--cian-hondo); }
.w-cta-linea { margin: 1.75rem 0; }

/* ---------- 6. Cotizador ---------- */
.w-franja-cotizar {
  position: relative;
  padding: clamp(2rem, 5vw, 4rem) var(--margen);
  /* franja en el primario de la paleta (pizarra), entre el héroe y el papel */
  background-color: var(--pizarra);
  background-image:
    linear-gradient(90deg, rgba(201, 203, 204, .07) 1px, transparent 1px),
    linear-gradient(rgba(201, 203, 204, .07) 1px, transparent 1px);
  background-size: 24px 24px;
  border-bottom: 1px solid var(--linea);
}

.w-franja-cotizar .w-cotizador { background: rgba(30, 35, 39, .55); }

.w-franja-cotizar:empty { display: none; }

.w-cotizador {
  position: relative;
  max-width: 820px;
  margin: 0 auto;
  padding: clamp(.65rem, 2.2vw, 1.75rem);
  border: 1px solid rgba(0, 166, 200, .45);
  background: rgba(28, 34, 40, .78);
  scroll-margin-top: calc(var(--cab) + 1rem);
}

.w-cotizador::before,
.w-cotizador::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  border: 0 solid var(--cian);
  pointer-events: none;
}

.w-cotizador::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.w-cotizador::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }

.w-cotizador__titulo {
  margin: .25rem 0 1.1rem;
  font-size: clamp(1.25rem, 1.1rem + .6vw, 1.6rem);
  text-align: center;
  color: var(--hormigon);
}

.w-cotizador__cabeza {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .35rem 1rem;
  margin: 0 0 clamp(.65rem, 1.6vw, 1.1rem);
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--niebla);
}

.w-cotizador__cabeza span:first-child { color: var(--cian-luz); }

.w-cotizador__lienzo,
.w-cotizador .cotizador-one {
  max-width: 760px;
  margin-inline: auto;
  background: var(--blanco);
  color: var(--grafito);
  color-scheme: light;
  border-radius: 2px;
}

.w-cotizador__lienzo .cotizador-one { max-width: none; }

/* ---------- 7. Fotos con duotono ---------- */
.w-foto {
  position: relative;
  isolation: isolate;
  margin: 0;
  background: var(--duo);
  border: 1px solid var(--linea);
  overflow: hidden;
}

/* duotono con cuerpo: más contraste para que las sombras caigan casi a
   negro y las luces tomen el hormigón-cian del fondo, no un velo lavado */
.w-foto img {
  display: block;
  width: 100%;
  height: auto;
  filter: grayscale(1) contrast(1.35) brightness(1.02);
  mix-blend-mode: multiply;
}

.w-foto figcaption {
  position: relative;
  display: flex;
  gap: .75rem;
  align-items: baseline;
  padding: .75rem 1rem;
  background: var(--fondo);
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .78rem;
  letter-spacing: .02em;
  line-height: 1.5;
  color: var(--fg2);
}

.w-foto figcaption::before {
  content: "";
  flex: none;
  width: 1.25rem;
  height: 1px;
  background: var(--cian);
  transform: translateY(-.25rem);
}

/* ---------- 8. Documento (contenido de cada página) ---------- */
.w-documento {
  background-image:
    linear-gradient(180deg, var(--hormigon-2), rgba(238, 240, 242, 0) 6rem),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: 100% 6rem, 96px 100%, 24px 6rem;
  background-repeat: no-repeat, repeat, repeat-x;
  background-position: 0 0, -1px 0, -1px 0;
}

.w-documento__in {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: clamp(2rem, 4.5vw, 3.75rem) var(--margen) clamp(3rem, 7vw, 6rem);
  counter-reset: seccion;
}

.w-seccion,
.w-faq {
  display: grid;
  grid-template-columns: minmax(0, 17rem) minmax(0, 46rem);
  column-gap: clamp(2rem, 6vw, 6rem);
  padding: clamp(2rem, 4.5vw, 3.25rem) 0;
  border-top: 1px solid var(--linea-2);
  counter-increment: seccion;
}

.w-documento__in > :first-child { border-top: 0; padding-top: 0; }

.w-seccion > *,
.w-faq > * { grid-column: 2; }

.w-seccion > h2,
.w-faq > h2 {
  grid-column: 1;
  grid-row: 1 / span 60;
  align-self: start;
  position: sticky;
  top: calc(var(--cab) + 1.5rem);
  font-size: clamp(1.45rem, 1.15rem + 1.1vw, 2.1rem);
  padding-bottom: 1rem;
}

.w-seccion > h2::before,
.w-faq > h2::before {
  content: "§ " counter(seccion, decimal-leading-zero);
  display: block;
  margin-bottom: .8rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  color: var(--acc);
}

.w-seccion p,
.w-seccion li { color: var(--fg); }

.w-seccion > p:last-child { margin-bottom: 0; }

.w-seccion h3 {
  margin: 1.9rem 0 .6rem;
  font-size: 1.2rem;
  color: var(--fg);
}

.w-seccion h3:first-of-type { margin-top: .4rem; }
.w-seccion > p:first-of-type + h3 { margin-top: 1.9rem; }

.w-seccion ul,
.w-seccion ol {
  margin: 0 0 1.2em;
  padding-left: 1.4rem;
}

.w-seccion ul { list-style: none; padding-left: 0; }

.w-seccion ul > li {
  position: relative;
  padding-left: 1.4rem;
  margin-bottom: .4em;
}

.w-seccion ul > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .78em;
  width: .7rem;
  height: 1px;
  background: var(--acc);
}

.w-seccion ol > li::marker {
  font-family: var(--mono);
  font-size: .85em;
  color: var(--acc);
}

.w-seccion .w-foto { margin: 1.75rem 0; }

/* secciones alternas en hormigón: corta el papel claro con el gris de
   la paleta, a sangre. La franja se pinta con border-image (desborde de
   tinta, no de caja): no ensancha la página ni necesita overflow */
.w-documento__in > .w-seccion:nth-child(even of .w-seccion) {
  --fondo: var(--hormigon-real);
  --fg2: #3A444B;
  --acc: #00586B;
  --linea: rgba(28, 34, 40, .16);
  --linea-2: rgba(28, 34, 40, .3);
  --superficie: var(--blanco);
  --tabla-cab: var(--gris-papel);
  border-image: linear-gradient(var(--hormigon-real), var(--hormigon-real)) fill 0 / 0 / 0 100vmax;
}

.w-documento__in > .w-seccion:nth-child(even of .w-seccion) + * { border-top-color: transparent; }

/* tabla */
.w-tabla {
  max-width: 100%;
  margin: 1.5rem 0 1.75rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--linea-2);
  background: var(--superficie);
  scrollbar-color: var(--pizarra) transparent;
  scrollbar-width: thin;
}

.w-tabla table {
  width: 100%;
  min-width: 30rem;
  border-collapse: collapse;
  font-size: .95rem;
  line-height: 1.45;
}

.w-tabla th {
  padding: .8rem 1rem;
  background: var(--tabla-cab);
  border-bottom: 1px solid var(--linea-2);
  font-family: var(--mono);
  font-size: .72rem;
  font-weight: 400;
  letter-spacing: .08em;
  text-align: left;
  text-transform: uppercase;
  color: var(--fg);
  white-space: nowrap;
}

.w-tabla td {
  padding: .8rem 1rem;
  border-bottom: 1px solid var(--linea);
  color: var(--fg);
  vertical-align: top;
}

.w-tabla tbody tr:last-child td { border-bottom: 0; }
.w-tabla tbody td:first-child { font-weight: 600; }
.w-tabla tbody tr { transition: background-color .15s; }
.w-tabla tbody tr:hover { background: rgba(0, 111, 135, .06); }

/* preguntas frecuentes */
.w-faq__item {
  border-top: 1px solid var(--linea-2);
}

.w-faq__item:last-of-type { border-bottom: 1px solid var(--linea-2); }

.w-faq__item summary {
  position: relative;
  display: block;
  padding: 1.15rem 3rem 1.15rem 0;
  list-style: none;
  font-family: var(--serif);
  font-size: clamp(1.05rem, 1rem + .3vw, 1.2rem);
  line-height: 1.35;
  color: var(--fg);
  cursor: pointer;
  text-wrap: balance;
  transition: color .2s var(--curva);
}

.w-faq__item summary::-webkit-details-marker { display: none; }

.w-faq__item summary::after {
  content: "";
  position: absolute;
  right: .25rem;
  top: 50%;
  width: 1.6rem;
  height: 1.6rem;
  margin-top: -.8rem;
  border: 1px solid var(--linea-2);
  border-radius: 50%;
  background:
    linear-gradient(var(--acc), var(--acc)) center / 10px 1.5px no-repeat,
    linear-gradient(var(--acc), var(--acc)) center / 1.5px 10px no-repeat;
  transition: transform .3s var(--curva), border-color .2s;
}

.w-faq__item[open] summary::after {
  transform: rotate(45deg);
  border-color: var(--acc);
}

.w-faq__item summary:hover { color: var(--acc); }

.w-faq__resp {
  padding: 0 3rem 1.35rem 0;
  color: var(--fg2);
}

.w-faq__resp p { color: var(--fg2); }
.w-faq__resp p:last-child { margin-bottom: 0; }

/* índice de atlas */
.w-indice {
  padding: clamp(2rem, 4.5vw, 3.25rem) 0;
  border-top: 1px solid var(--linea-2);
}

.w-indice__titulo {
  font-size: clamp(1.45rem, 1.15rem + 1.1vw, 2.1rem);
}

.w-indice__letras {
  position: sticky;
  top: var(--cab);
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  margin: 1.4rem 0 1.5rem;
  padding: .6rem;
  background: var(--fondo);
  border: 1px solid var(--linea-2);
  box-shadow: 0 10px 20px -18px rgba(0, 0, 0, .5);
}

.w-indice__letras a {
  display: inline-grid;
  place-items: center;
  min-width: 2.1rem;
  height: 2.1rem;
  padding: 0 .3rem;
  border: 1px solid var(--linea);
  border-radius: 2px;
  background: var(--superficie);
  font-family: var(--serif);
  font-size: 1rem;
  line-height: 1;
  color: var(--acc);
  text-decoration: none;
}

.w-indice__letras a:hover {
  background: var(--acc);
  border-color: var(--acc);
  color: var(--blanco);
}

.w-indice__grupo {
  display: grid;
  grid-template-columns: 4.5rem minmax(0, 1fr);
  gap: 1.5rem;
  padding: 1.35rem 0;
  border-top: 1px solid var(--linea);
  scroll-margin-top: calc(var(--cab) + 5.5rem);
}

.w-indice__grupo h3 {
  margin: 0;
  font-size: 2.4rem;
  font-weight: 400;
  line-height: 1;
  color: var(--acc);
}

.w-indice__grupo p {
  margin: 0;
  columns: 11rem;
  column-gap: 2rem;
}

.w-indice__grupo a {
  display: block;
  padding: .22rem 0;
  break-inside: avoid;
  font-size: .95rem;
  line-height: 1.4;
  color: var(--fg);
  text-decoration: none;
  overflow-wrap: anywhere;
}

.w-indice__grupo a:hover { color: var(--acc); text-decoration: underline; }

/* ---------- 9. Anexos: hijas y hermanas ---------- */
/* hijas y hermanas sobre hormigón (zona-hormigon en la plantilla) */
.w-anexos {
  background-color: var(--fondo);
  background-image:
    var(--poro),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px);
  background-size: 180px 180px, 100% 48px, 96px 100%;
  border-top: 1px solid var(--gris);
}

.w-anexos .w-tarjeta { border-color: rgba(138, 141, 143, .7); }
.w-anexos .w-tarjeta:hover { border-color: var(--acc); background: var(--blanco); box-shadow: 0 14px 28px -22px rgba(28, 34, 40, .6); }

.w-anexos:not(:has(.w-hijas, .w-hermanas)) { display: none; }

.w-anexos__in {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5rem) var(--margen);
}

.w-hijas { counter-reset: hija; }

.w-hijas__titulo,
.w-hermanas__titulo {
  display: flex;
  flex-direction: column;
  gap: .9rem;
}

.w-hijas__titulo::before,
.w-hermanas__titulo::before {
  content: "";
  width: 2.5rem;
  height: 2px;
  background: var(--cian);
}

.w-hijas__rejilla {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
  gap: .75rem;
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

.w-tarjeta {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .4rem;
  min-height: 6rem;
  padding: 1rem 2.9rem 1.1rem 1.1rem;
  border: 1px solid var(--linea-2);
  border-radius: 2px;
  background: var(--superficie);
  color: var(--fg);
  text-decoration: none;
  counter-increment: hija;
  transition: border-color .2s var(--curva), background-color .2s var(--curva), transform .25s var(--curva);
}

.w-tarjeta::before {
  content: counter(hija, decimal-leading-zero);
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .1em;
  color: var(--fg2);
}

.w-tarjeta::after {
  content: "";
  position: absolute;
  top: 1.15rem;
  right: 1.15rem;
  width: .55rem;
  height: .55rem;
  border-top: 1.5px solid var(--acc);
  border-right: 1.5px solid var(--acc);
  transform: rotate(45deg);
  transition: transform .25s var(--curva);
}

.w-tarjeta:hover {
  border-color: var(--cian);
  background: rgba(0, 166, 200, .07);
  transform: translateY(-2px);
}

.w-tarjeta:hover::after { transform: translateX(3px) rotate(45deg); }

.w-tarjeta__nombre {
  font-family: var(--serif);
  font-size: 1.125rem;
  line-height: 1.25;
  color: var(--fg);
  text-wrap: balance;
  hyphens: none;
  overflow-wrap: anywhere;
}

.w-tarjeta__texto {
  font-size: .9rem;
  line-height: 1.45;
  color: var(--fg2);
}

/* rejillas grandes: filas compactas */
.w-hijas__rejilla:has(> .w-tarjeta:nth-child(19)) {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr));
  gap: .5rem;
}

.w-hijas__rejilla:has(> .w-tarjeta:nth-child(19)) .w-tarjeta {
  min-height: 0;
  flex-direction: row;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .2rem .6rem;
  padding: .7rem 2.4rem .7rem .85rem;
}

.w-hijas__rejilla:has(> .w-tarjeta:nth-child(19)) .w-tarjeta::after { top: .95rem; right: .95rem; }
.w-hijas__rejilla:has(> .w-tarjeta:nth-child(19)) .w-tarjeta__nombre { font-size: 1rem; }
.w-hijas__rejilla:has(> .w-tarjeta:nth-child(19)) .w-tarjeta__texto { flex-basis: 100%; font-size: .85rem; }

.w-hermanas { padding-top: 0; }

.w-hijas + .w-hermanas {
  margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: clamp(2.5rem, 5vw, 3.5rem);
  border-top: 1px solid var(--linea);
}

.w-hermanas__titulo {
  margin-bottom: 1.5rem;
  font-size: clamp(1.3rem, 1.1rem + .8vw, 1.75rem);
}

.w-hermanas__enlaces {
  columns: 4 13rem;
  column-gap: 2.25rem;
  column-rule: 1px solid var(--linea);
}

.w-hermanas__enlaces a {
  position: relative;
  display: block;
  padding: .5rem 0 .5rem 1.05rem;
  break-inside: avoid;
  border-bottom: 1px solid var(--linea);
  font-size: .95rem;
  line-height: 1.35;
  color: var(--fg);
  text-decoration: none;
  overflow-wrap: anywhere;
}

.w-hermanas__enlaces a::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1.15rem;
  width: .45rem;
  height: 1px;
  background: var(--acc);
  transition: width .2s var(--curva);
}

.w-hermanas__enlaces a:hover { color: var(--acc); }
.w-hermanas__enlaces a:hover::before { width: .75rem; }

.w-hermanas--plegada .w-hermanas__enlaces {
  max-height: 17rem;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 65%, transparent);
  mask-image: linear-gradient(#000 65%, transparent);
}

.w-plegar {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 1rem;
  padding: .65rem 1rem;
  border: 1px solid var(--linea-2);
  border-radius: var(--radio);
  background: transparent;
  color: var(--acc);
  font-family: var(--mono);
  font-size: .78rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}

.w-plegar:hover { border-color: var(--acc); }

/* ---------- 10. Cierre ---------- */
.w-remate {
  position: relative;
  isolation: isolate;
  padding: clamp(3.5rem, 8vw, 6.5rem) var(--margen);
  background-color: var(--grafito);
  background-image:
    linear-gradient(var(--rejilla) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px);
  background-size: 96px 96px;
  background-position: center;
  border-top: 1px solid var(--linea);
  text-align: center;
}

.w-remate::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(50% 70% at 50% 100%, rgba(0, 166, 200, .2), transparent 70%);
}

.w-remate__in { max-width: 46rem; margin: 0 auto; }

.w-cierre p {
  margin: 0 0 1.6rem;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 1.05rem + 1.1vw, 2rem);
  line-height: 1.3;
  color: var(--hormigon);
  text-wrap: balance;
  hyphens: none;
}

.w-remate__accion { margin: 0; }

.w-remate__tel {
  margin: 1.4rem 0 0;
  font-family: var(--mono);
  font-size: .8125rem;
  letter-spacing: .04em;
  color: var(--niebla);
}

.w-remate__tel a { color: var(--hormigon); text-decoration: none; border-bottom: 1px solid var(--cian); }
.w-remate__tel a:hover { color: var(--cian-luz); }

/* tarjetas de contacto (en el remate de todas las páginas) */
.w-contacto {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  /* mismo ancho útil que el héroe y el documento (ancho menos márgenes) */
  max-width: calc(var(--ancho) - 2 * var(--margen));
  margin: clamp(2.5rem, 5vw, 3.75rem) auto 0;
  padding: 0;
  list-style: none;
  border: 1px solid var(--linea-2);
  background: rgba(30, 35, 39, .72);
  text-align: left;
}

.w-contacto__item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .3rem;
  padding: 1.35rem 1.25rem 1.4rem;
  border-left: 1px solid var(--linea-2);
}

.w-contacto__item:first-child { border-left: 0; }

.w-contacto__item::before {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 1.75rem;
  height: 2px;
  background: var(--cian);
}

.w-contacto__icono {
  width: 24px;
  height: 24px;
  margin-bottom: .5rem;
  color: var(--cian-luz);
}

.w-contacto__etq {
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--niebla);
}

.w-contacto__dato {
  font-family: var(--serif);
  font-size: 1.2rem;
  line-height: 1.3;
  color: var(--hormigon);
  text-decoration: none;
}

/* mismo color en todas las tarjetas; la que es enlace se reconoce por
   el subrayado cian y la flecha, no por cambiar de tono */
a.w-contacto__dato {
  align-self: flex-start;
  text-decoration: underline;
  text-decoration-color: var(--cian);
  text-decoration-thickness: 1px;
  text-underline-offset: .25em;
}

a.w-contacto__dato::after {
  content: " →";
  font-family: var(--mono);
  font-size: .85em;
  color: var(--cian-luz);
  display: inline-block;
  transition: transform .25s var(--curva);
}

a.w-contacto__dato:hover { color: var(--cian-luz); text-decoration-thickness: 2px; }
a.w-contacto__dato:hover::after { transform: translateX(3px); }

.w-contacto__nota {
  font-size: .9rem;
  line-height: 1.45;
  color: var(--niebla);
}

/* contacto: el bloque de contacto sube justo debajo del héroe */
body[class*="contacto"] .w-principal { display: flex; flex-direction: column; }
body[class*="contacto"] .w-heroe { order: 1; }
body[class*="contacto"] .w-remate { order: 2; text-align: left; padding-block: clamp(2.5rem, 5vw, 4rem); }
body[class*="contacto"] .w-remate__in { max-width: calc(var(--ancho) - 2 * var(--margen)); }
body[class*="contacto"] .w-contacto { margin-top: 2rem; }
body[class*="contacto"] .w-documento { order: 3; }
body[class*="contacto"] .w-anexos { order: 4; }
body[class*="contacto"] .w-remate__accion { display: none; }

/* contacto con pieza propia: sin foto de banco en el héroe (la foto se
   reserva a otras páginas) y un cuadro de mandos con el teléfono en grande */
body[class*="contacto"] .w-heroe__lado > .w-foto { display: none; }

body[class*="contacto"] .w-heroe__in:not(:has(.w-datos)) {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: none;
  grid-template-areas: "migas" "ante" "titulo" "entr" "acc" "coord" "coti";
}

body[class*="contacto"] .w-heroe__in:not(:has(.w-datos)) > .w-heroe__lado { display: none; }

/* en contacto el teléfono ya está en el texto y en la ficha del héroe:
   la rejilla no lo repite y se queda con recogida, cotizador y servicio */
body[class*="contacto"] .w-contacto {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-color: rgba(0, 166, 200, .45);
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) 0 0 / 24px 24px,
    rgba(30, 35, 39, .85);
}

body[class*="contacto"] .w-contacto__item:first-child { display: none; }
body[class*="contacto"] .w-contacto__item:nth-child(2) { border-left: 0; }

/* ---------- 11. Recorrido del cotizador ---------- */
.w-recorrido {
  min-height: 60vh;
  padding: clamp(1.5rem, 4vw, 3rem) var(--margen) clamp(3rem, 7vw, 5.5rem);
  background-color: var(--noche);
  background-image:
    linear-gradient(var(--rejilla) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px);
  background-size: 96px 96px;
}

.w-recorrido__in { max-width: 820px; margin: 0 auto; }

.w-recorrido .w-migas { margin-bottom: 1.25rem; }

.w-recorrido__marca {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 1.25rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--cian-luz);
}

.w-recorrido__marca::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(0, 166, 200, .6), transparent);
}

/* ---------- 12. Pie ---------- */
.w-pie {
  background: var(--noche-2);
  border-top: 1px solid var(--linea);
  font-size: .9375rem;
  color: var(--niebla);
}

.w-pie__in {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 4.5rem) var(--margen) 2.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr));
  gap: 2.5rem clamp(1.5rem, 4vw, 3.5rem);
}

.w-pie__marca p { max-width: 24rem; margin: 1.1rem 0 0; color: var(--niebla); }

.w-pie__tel {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .3rem .9rem;
}

.w-pie__tel a {
  font-family: var(--serif);
  font-size: 1.3rem;
  color: var(--hormigon);
  text-decoration: none;
}

.w-pie__tel a:hover { color: var(--cian-luz); }

.w-pie__tel span {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.w-pie__rotulo {
  margin: 0 0 .9rem;
  padding-bottom: .6rem;
  border-bottom: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--cian-luz);
}

.w-pie ul { margin: 0; padding: 0; list-style: none; }
.w-pie li { margin: 0 0 .45rem; }

.w-pie__col a {
  color: #D5DBE0;
  text-decoration: none;
}

.w-pie__col a:hover { color: var(--cian-luz); text-decoration: underline; }

.w-pie__base {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: 1.25rem var(--margen) 2rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .5rem 2rem;
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .02em;
  color: var(--niebla);
}

.w-pie__base p { margin: 0; }
.w-pie__base a { color: #D5DBE0; }
.w-pie__base a:hover { color: var(--cian-luz); }

/* ==========================================================================
   13. Portada
   ========================================================================== */
.p-seccion { padding: clamp(4rem, 9vw, 7.5rem) var(--margen); }

.p-seccion.zona-papel {
  background-image: linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: 96px 100%;
}

.p-seccion.zona-hormigon {
  background-image:
    var(--poro),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px);
  background-size: 180px 180px, 96px 100%, 100% 24px;
  border-top: 1px solid var(--gris);
  border-bottom: 1px solid var(--gris);
}

.p-oscura {
  background-color: var(--noche);
  background-image:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: 24px 24px;
  border-top: 1px solid var(--linea);
}

.p-in { max-width: var(--ancho); margin: 0 auto; }

.p-kicker {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 1.25rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--acc);
}

.p-kicker::after {
  content: "";
  width: 3rem;
  height: 1px;
  background: currentColor;
}

.p-cabeza {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 1.25rem clamp(2rem, 6vw, 6rem);
  align-items: end;
  margin-bottom: clamp(2.25rem, 5vw, 3.75rem);
}

.p-cabeza > .p-kicker { grid-column: 1 / -1; margin-bottom: 0; }
.p-cabeza h2 { max-width: 15em; }

.p-intro {
  margin: 0;
  font-size: clamp(1.0625rem, 1rem + .3vw, 1.1875rem);
  line-height: 1.6;
  color: var(--fg2);
  max-width: 34em;
}

/* modalidades */
.p-modos {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--linea-2);
  background: var(--superficie);
}

.p-modo {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border-left: 1px solid var(--linea-2);
  transition: background-color .25s var(--curva);
}

.p-modo:first-child { border-left: 0; }
.p-modo:hover { background: rgba(0, 111, 135, .04); }

.p-modo__cab {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.p-modo__icono { width: 52px; height: 52px; color: var(--cian-hondo); }

.p-modo__num {
  font-family: var(--serif);
  font-size: 2.2rem;
  line-height: 1;
  color: var(--cian-hondo);
}

.p-modo h3 { font-size: clamp(1.3rem, 1.15rem + .5vw, 1.6rem); font-weight: 400; }
.p-modo p { margin: 0; color: var(--fg2); }

.p-spec {
  margin: .25rem 0 0;
  border-top: 1px solid var(--linea-2);
}

.p-spec div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: .6rem 0;
  border-bottom: 1px solid var(--linea);
}

.p-spec dt {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--fg2);
}

.p-spec dd {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.05rem;
  text-align: right;
  color: var(--fg);
}

.p-modo__enlace {
  margin-top: auto;
  padding-top: .75rem;
  font-weight: 600;
  text-decoration: none;
}

.p-modo__enlace::after {
  content: " →";
  font-family: var(--mono);
  display: inline-block;
  transition: transform .25s var(--curva);
}

.p-modo__enlace:hover::after { transform: translateX(4px); }

.p-modo__enlace::before {
  content: "";
  position: absolute;
  inset: 0;
}

.p-otros {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 1.5rem clamp(2rem, 5vw, 4rem);
  margin-top: clamp(2rem, 4vw, 3rem);
  align-items: start;
}

.p-otros p { margin: 0; color: var(--fg); }

.p-aviso {
  display: flex;
  gap: .8rem;
  align-items: flex-start;
  padding: 1rem 1.1rem;
  border: 1px solid var(--linea-2);
  border-left: 3px solid var(--cian-hondo);
  background: var(--superficie);
  font-size: .95rem;
  line-height: 1.5;
}

.p-aviso svg { flex: none; width: 20px; height: 20px; margin-top: .1rem; color: var(--cian-hondo); }

/* banda de foto */
.p-banda {
  border: 0;
  border-top: 1px solid var(--linea);
  border-bottom: 1px solid var(--linea);
}

.p-banda img {
  aspect-ratio: 16 / 6;
  object-fit: cover;
  object-position: center 55%;
}

.p-banda figcaption {
  justify-content: center;
  padding: 1rem var(--margen);
  background: var(--noche);
  color: var(--niebla);
}

/* ruta */
.p-dos {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(2.5rem, 6vw, 6rem);
  align-items: start;
}

.p-dos .p-kicker + h2 { margin-bottom: 1.5rem; }
.p-texto p { color: var(--fg); }
.p-texto p:last-child { margin-bottom: 0; }

.p-ruta {
  position: relative;
  border: 1px solid var(--linea-2);
  background: var(--superficie);
}

.p-ruta ol {
  margin: 0;
  padding: 1.5rem clamp(1.1rem, 2.5vw, 2rem);
  list-style: none;
}

.p-ruta__rotulo {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin: 0;
  padding: .75rem clamp(1.1rem, 2.5vw, 2rem);
  border-bottom: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fg2);
}

.p-ruta li {
  position: relative;
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  gap: 0 1rem;
  padding-bottom: 1.4rem;
}

.p-ruta li:last-child { padding-bottom: 0; }

.p-ruta li::before {
  content: "";
  position: absolute;
  left: calc(1.125rem - .5px);
  top: 1.6rem;
  bottom: .2rem;
  width: 1px;
  background: repeating-linear-gradient(180deg, var(--cian-hondo) 0 4px, transparent 4px 8px);
}

.p-ruta li:last-child::before { display: none; }

.p-ruta__nodo {
  display: grid;
  place-items: center;
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid var(--cian-hondo);
  border-radius: 50%;
  background: var(--blanco);
  font-family: var(--mono);
  font-size: .72rem;
  color: var(--cian-hondo);
}

.p-ruta li:first-child .p-ruta__nodo,
.p-ruta li:last-child .p-ruta__nodo {
  background: var(--cian-hondo);
  color: var(--blanco);
}

.p-ruta strong {
  display: block;
  padding-top: .35rem;
  font-family: var(--serif);
  font-size: 1.1rem;
  font-weight: 400;
}

.p-ruta span.p-ruta__dato {
  display: block;
  font-size: .95rem;
  color: var(--fg2);
}

.p-ruta code {
  display: inline-block;
  margin-top: .25rem;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .04em;
  color: var(--cian-hondo);
}

/* agencia */
.p-asim {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(2.5rem, 6vw, 5.5rem);
  align-items: center;
}

.p-asim .w-foto img { aspect-ratio: 4 / 5; object-fit: cover; }

.p-pasos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  margin: 2rem 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--linea-2);
  border-left: 1px solid var(--linea-2);
  counter-reset: paso;
}

.p-pasos li {
  padding: 1.15rem 1.2rem 1.25rem;
  border-right: 1px solid var(--linea-2);
  border-bottom: 1px solid var(--linea-2);
  counter-increment: paso;
}

.p-pasos li::before {
  content: counter(paso, decimal-leading-zero);
  display: block;
  margin-bottom: .5rem;
  font-family: var(--serif);
  font-size: 1.9rem;
  line-height: 1;
  color: var(--acc);
}

.p-pasos strong { display: block; margin-bottom: .2rem; font-weight: 600; }
.p-pasos span { display: block; font-size: .95rem; line-height: 1.5; color: var(--fg2); }

.p-nota {
  padding-left: 1rem;
  border-left: 2px solid var(--cian);
  color: var(--fg);
}

.p-nota a { white-space: nowrap; }

.p-fichas { display: grid; gap: 1rem; }

.p-ficha {
  padding: 1.25rem 1.3rem;
  border: 1px solid var(--linea-2);
  background: var(--superficie);
}

.p-ficha h3 { margin-bottom: .5rem; font-size: 1.15rem; }
.p-ficha p { margin: 0; font-size: .97rem; color: var(--fg2); }

.p-ficha__etq {
  display: block;
  margin-bottom: .6rem;
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--acc);
}

/* destinos: mapa + atlas */
.p-destinos {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 6vw, 5rem);
  align-items: center;
}

.p-mapa {
  margin: 0;
  padding: clamp(.75rem, 2vw, 1.5rem);
  border: 1px solid var(--linea-2);
  background:
    radial-gradient(70% 60% at 60% 45%, rgba(0, 166, 200, .1), transparent 70%),
    var(--grafito);
}

.p-mapa svg {
  display: block;
  width: 100%;
  max-width: 30rem;
  height: auto;
  margin: 0 auto;
}

.p-mapa figcaption {
  margin-top: .75rem;
  padding-top: .65rem;
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .04em;
  color: var(--niebla);
}

.p-mapa__silueta {
  fill: rgba(0, 166, 200, .1);
  stroke: var(--cian);
  stroke-width: 1.4;
  stroke-linejoin: round;
}

.p-mapa__ruta {
  fill: none;
  stroke: var(--cian-luz);
  stroke-width: 1.4;
  stroke-dasharray: 5 5;
  animation: p-avance 1.6s linear infinite;
}

@keyframes p-avance { to { stroke-dashoffset: -20; } }

.p-atlas {
  margin-top: clamp(2.5rem, 5vw, 4rem);
  border-top: 1px solid var(--linea-2);
}

.p-atlas__cab {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .8rem 0;
  border-bottom: 1px solid var(--linea-2);
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--niebla);
}

/* atlas en tarjetas: una por Land, plegadas; al abrir, la tarjeta ocupa la fila entera */
.p-atlas {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.25rem;
  border-top: 0;
}

.p-atlas__cab { grid-column: 1 / -1; margin-bottom: .5rem; }

.p-land {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .5rem;
  padding: 1.6rem 1.6rem 1.35rem;
  border: 1px solid var(--linea-2);
  background: rgba(255, 255, 255, .03);
  scroll-margin-top: calc(var(--cab) + 1rem);
  transition: border-color .2s var(--curva), background-color .2s var(--curva);
}

.p-land::before {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 1.75rem;
  height: 2px;
  background: var(--cian);
}

.p-land:hover { border-color: rgba(0, 166, 200, .6); }

.p-land:has(details[open]) {
  grid-column: 1 / -1;
  background: rgba(0, 166, 200, .05);
  border-color: rgba(0, 166, 200, .6);
}

.p-land details { margin-top: auto; padding-top: .5rem; border-top: 1px solid var(--linea); }
.p-land details summary { margin-bottom: 0; }
.p-land details[open] summary { margin-bottom: .75rem; }

.p-land__capital {
  margin: 0;
  font-size: .9rem;
  color: var(--niebla);
}

.p-land__nombre { font-size: clamp(1.3rem, 1.15rem + .45vw, 1.5rem); font-weight: 400; line-height: 1.2; }

.p-land__nombre a {
  color: var(--hormigon);
  text-decoration: none;
}

.p-land__nombre a:hover { color: var(--cian-luz); text-decoration: underline; }

.p-land__iso {
  display: block;
  margin-bottom: .3rem;
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .1em;
  color: var(--niebla);
}

.p-land details summary {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin-bottom: .6rem;
  list-style: none;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--cian-luz);
  cursor: pointer;
}

.p-land details summary::-webkit-details-marker { display: none; }

.p-land details summary::before {
  content: "";
  width: .45rem;
  height: .45rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform .2s var(--curva);
}

.p-land details[open] summary::before { transform: rotate(45deg); }

.p-land ul {
  margin: 0;
  padding: 0;
  list-style: none;
  columns: 4 11rem;
  column-gap: 2rem;
}

.p-land li { break-inside: avoid; }

.p-land li a {
  display: block;
  padding: .2rem 0;
  font-size: .95rem;
  line-height: 1.4;
  color: #DCE1E5;
  text-decoration: none;
  overflow-wrap: anywhere;
}

.p-land li a:hover { color: var(--cian-luz); text-decoration: underline; }

.p-land__solo {
  margin: auto 0 0;
  padding-top: .5rem;
  border-top: 1px solid var(--linea);
  font-size: .95rem;
  color: var(--niebla);
}

/* comunidades de origen: agrupadas por el paso fronterizo que les toca,
   en columnas de filas (nombre a la izquierda, km a la derecha) */
.p-salidas {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 2.5vw, 1.75rem);
  align-items: start;
}

.p-salida {
  position: relative;
  padding: clamp(1.25rem, 2.5vw, 1.75rem) clamp(1.1rem, 2.2vw, 1.6rem) 1.4rem;
  border: 1px solid var(--linea-2);
  background: var(--superficie);
}

.p-salida::before {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 2.5rem;
  height: 2px;
  background: var(--cian);
}

.p-salida__paso {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  margin: 0 0 .9rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--acc);
}

.p-salida__paso span + span { color: var(--fg2); letter-spacing: .02em; text-transform: none; }

.p-salida h3 { margin-bottom: .55rem; font-size: clamp(1.3rem, 1.1rem + .6vw, 1.6rem); font-weight: 400; }

.p-salida__txt {
  margin: 0 0 1.1rem;
  font-size: .97rem;
  line-height: 1.55;
  color: var(--fg2);
}

.p-salida__lista {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--linea-2);
}

.p-salida__lista a {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  padding: .7rem 0;
  border-bottom: 1px solid var(--linea);
  color: var(--fg);
  text-decoration: none;
  line-height: 1.35;
  transition: color .2s var(--curva), padding .2s var(--curva);
}

.p-salida__lista a:hover { color: var(--acc); padding-left: .35rem; }
.p-salida__lista a:hover .p-salida__nombre { text-decoration: underline; text-underline-offset: .2em; }

.p-salida__nombre { min-width: 0; }

.p-salida__km {
  flex: none;
  font-family: var(--mono);
  font-size: .8125rem;
  letter-spacing: .02em;
  color: var(--acc);
  white-space: nowrap;
}

.p-salida__nota {
  margin: .9rem 0 0;
  font-size: .9rem;
  line-height: 1.5;
  color: var(--fg2);
}

.p-salida--mar { background: var(--hormigon); }

.p-salidas__pie {
  margin: 1.25rem 0 0;
  font-size: .9375rem;
  color: var(--fg2);
}

/* el enlace es largo (≈ 410 px a 15 px): parte línea como texto normal,
   nunca en una sola línea, que en 390 px se salía 36 px por la derecha */
.p-salidas__pie a { font-weight: 600; overflow-wrap: break-word; }

.p-fichas--fila {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 2.5vw, 1.75rem);
  margin-top: clamp(2rem, 4vw, 3rem);
}

/* grandes ciudades: fila destacada antes del atlas */
.p-ciudades {
  margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: clamp(1.75rem, 3vw, 2.5rem);
  border-top: 1px solid var(--linea-2);
}

.p-ciudades__cab {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: 1rem clamp(2rem, 5vw, 4rem);
  align-items: end;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.p-ciudades__cab h3,
.p-atlas__intro h3 {
  font-size: clamp(1.45rem, 1.15rem + 1vw, 2rem);
  font-weight: 400;
  color: var(--hormigon);
}

.p-ciudades__cab p,
.p-atlas__intro p {
  margin: 0;
  max-width: 34em;
  font-size: 1rem;
  color: #DCE1E5;
}

.p-ciudades__lista {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.p-ciudad {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "num  num"
    "nombre nombre"
    "land land"
    "km   km";
  align-content: start;
  gap: .45rem;
  height: 100%;
  padding: 1.6rem 1.6rem 1.5rem;
  border: 1px solid var(--linea-2);
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    var(--grafito);
  color: var(--hormigon);
  text-decoration: none;
  transition: border-color .2s var(--curva), transform .2s var(--curva);
}

.p-ciudad::before {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 1.75rem;
  height: 2px;
  background: var(--cian);
}

.p-ciudad:hover { border-color: rgba(0, 166, 200, .7); transform: translateY(-2px); }
.p-ciudad:hover .p-ciudad__nombre { color: var(--cian-luz); }

/* nombre, Land y distancia: dos datos por tarjeta, sin numeración */
.p-ciudad__num { display: none; }

.p-ciudad__nombre {
  grid-area: nombre;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 1.1rem + .6vw, 1.6rem);
  line-height: 1.15;
  text-wrap: balance;
  hyphens: none;
  transition: color .2s var(--curva);
}

.p-ciudad__land {
  grid-area: land;
  font-size: .9375rem;
  line-height: 1.45;
  color: #E4E8EB;
}

.p-ciudad__km {
  grid-area: km;
  margin-top: .75rem;
  padding-top: .7rem;
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: 1.15rem;
  color: var(--cian-luz);
}

/* atlas de Länder: intro propia, rejilla fija de 4 / 2 / 1 columnas */
.p-atlas__intro {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: 1rem clamp(2rem, 5vw, 4rem);
  align-items: end;
  margin: 0 0 .5rem;
}

/* un solo dato de apoyo por tarjeta (la autopista de entrada), en texto
   corrido y claro; nada de microdatos mono apilados */
.p-land__acceso {
  margin: 0 0 .35rem;
  font-size: .9375rem;
  line-height: 1.5;
  color: #DCE1E5;
}

/* FAQ de portada: el título y un bloque de contacto fijos a la izquierda */
.p-faq { counter-reset: seccion 5; }
.p-faq .w-faq { padding: 0; border-top: 0; }


.p-faq .p-faq__apoyo {
  margin-top: .5rem;
  padding: 1.2rem 1.25rem 1.3rem;
  border: 1px solid var(--linea-2);
  border-top: 2px solid var(--cian);
  background: var(--superficie);
}

.p-faq__etq {
  margin: 0 0 .5rem;
  font-family: var(--mono);
  font-size: .6875rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--acc);
}

.p-faq__apoyo p { font-size: .97rem; color: var(--fg2); }

.p-faq__tel {
  display: block;
  margin: 0 0 1rem;
  font-family: var(--serif);
  font-size: 1.35rem;
  color: var(--fg);
  text-decoration: none;
  white-space: nowrap;
}

.p-faq__tel:hover { color: var(--acc); }
.p-faq__apoyo .w-cta { font-size: .95rem; padding: .7rem 1.1rem; }

/* ==========================================================================
   14. Movimiento reducido
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ==========================================================================
   15. Ajustes responsive (siempre al final)
   ========================================================================== */
@media (max-width: 1100px) {
  .w-pie__in { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-pie__marca { grid-column: 1 / -1; }
}

@media (max-width: 1000px) {
  .w-cab__burger { display: inline-flex; }

  /* sin backdrop-filter al abrir: si no, el panel fijo se mide contra la cabecera */
  .w-cab--abierta {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    background: var(--noche);
  }

  .js .w-menu {
    position: fixed;
    top: var(--cab);
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    padding: 1rem var(--margen) 2.5rem;
    overflow-y: auto;
    background: var(--noche);
    border-top: 1px solid var(--linea);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity .25s var(--curva), transform .25s var(--curva), visibility 0s .25s;
  }

  .js .w-cab--abierta .w-menu {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity .25s var(--curva), transform .25s var(--curva), visibility 0s;
  }

  html:not(.js) .w-cab__burger { display: none; }
  html:not(.js) .w-cab__in { flex-wrap: wrap; height: auto; padding-block: .75rem; }
  html:not(.js) .w-menu { width: 100%; margin: 0; }
  html:not(.js) .w-menu__lista { flex-wrap: wrap; }
  html:not(.js) .w-menu__sub { display: none; }

  .js .w-menu__lista {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }

  .js .w-menu__lista > li { border-bottom: 1px solid var(--linea); }

  .js .w-menu__lista > li > a,
  .js .w-menu__boton {
    width: 100%;
    justify-content: space-between;
    padding: 1rem 0;
    font-size: 1.125rem;
    border-radius: 0;
  }

  .js .w-menu__lista > li > a:hover,
  .js .w-menu__boton:hover,
  .js .w-menu__boton[aria-expanded="true"] { background: none; }

  .js .w-menu__boton { cursor: default; pointer-events: none; color: var(--niebla); font-family: var(--mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; padding-bottom: .25rem; }
  .js .w-menu__flecha { display: none; }

  .js .w-menu__sub {
    position: static;
    min-width: 0;
    padding: 0 0 .75rem;
    background: none;
    border: 0;
    box-shadow: none;
    opacity: 1;
    visibility: visible;
    transform: none;
  }

  .js .w-menu__sub::after { display: none; }

  .js .w-menu__sub a { padding: .65rem 0; font-size: 1.0625rem; }

  .js .w-menu__lista > .w-menu__cta { margin: 1.5rem 0 0; border-bottom: 0; }

  .js .w-menu__lista > .w-menu__cta > a {
    justify-content: center;
    padding: 1rem;
    font-size: 1rem;
    border-radius: var(--radio);
  }
}

@media (max-width: 900px) {
  .w-heroe__in,
  .w-heroe__in:not(:has(.w-datos, .w-foto)) {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    grid-template-areas: "migas" "ante" "titulo" "entr" "acc" "mas1" "mas2" "lado" "plano" "ficha" "coord" "coti";
  }

  .w-heroe__in > .w-heroe__ficha,
  .w-heroe__lado { margin-top: 2rem; align-self: start; }
  .w-heroe__lado > .w-foto { flex: none; aspect-ratio: 16 / 9; min-height: 0; max-height: none; }
  .p-portada .w-heroe__lado > .w-foto { aspect-ratio: 16 / 9; min-height: 0; max-height: none; }
  .w-heroe__acciones { margin-top: 1.75rem; }

  .w-heroe__fondo::after {
    background:
      linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(180deg, rgba(30, 35, 39, .93), rgba(30, 35, 39, .9));
  }

  .w-contacto { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-contacto__item:nth-child(3) { border-left: 0; }
  .w-contacto__item:nth-child(n+3) { border-top: 1px solid var(--linea-2); }

  .w-seccion,
  .w-faq { grid-template-columns: minmax(0, 1fr); }

  .w-seccion > *,
  .w-faq > * { grid-column: 1; }

  .w-seccion > h2,
  .w-faq > h2 {
    grid-row: auto;
    position: static;
    padding-bottom: 1.1rem;
  }

  .p-cabeza,
  .p-dos,
  .p-asim,
  .p-destinos,
  .p-otros { grid-template-columns: minmax(0, 1fr); }

  .p-modos { grid-template-columns: minmax(0, 1fr); }
  .p-modo { border-left: 0; border-top: 1px solid var(--linea-2); }
  .p-modo:first-child { border-top: 0; }

  .p-asim .w-foto img { aspect-ratio: 16 / 9; }
  .p-banda img { aspect-ratio: 16 / 9; }
}

@media (max-width: 640px) {
  :root { --cab: 60px; }

  body { font-size: 1rem; }

  .w-cab__in { gap: .75rem; }
  .w-marca__icono { width: 30px; height: 30px; }
  .w-marca__txt { font-size: .94rem; }
  .w-cab__burger-txt { display: none; }
  .w-cab__burger { width: 44px; padding: 0; justify-content: center; }

  .w-heroe__in { padding-top: 1.25rem; }
  .w-migas { margin-bottom: 1.25rem; }
  .w-heroe__coord { margin-top: 1.75rem; }

  .w-datos { padding: .1rem .9rem .3rem; }
  .w-datos__fila { grid-template-columns: minmax(0, 6.25rem) minmax(0, 1fr); gap: .75rem; padding: .65rem 0; }
  .w-datos dd { font-size: .95rem; }
  .w-heroe__rotulo { padding: .65rem .9rem; }

  .w-franja-cotizar { padding: 1.5rem .75rem; }
  .w-cotizador { padding: .5rem; }

  .w-indice__letras {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .w-indice__letras a { flex: none; }
  .w-indice__grupo { grid-template-columns: 2.25rem minmax(0, 1fr); gap: .9rem; }
  .w-indice__grupo h3 { font-size: 1.8rem; }
  .w-indice__grupo p { columns: 2 8.5rem; column-gap: 1.25rem; }

  .w-faq__resp { padding-right: 0; }

  .w-hermanas__enlaces { columns: 2 9rem; column-gap: 1.25rem; }

  .w-pie__in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }

  .p-pasos { grid-template-columns: minmax(0, 1fr); }
  .p-land ul { columns: 2 8.5rem; column-gap: 1.25rem; }

  .w-contacto { grid-template-columns: minmax(0, 1fr); }
  .w-contacto__item { border-left: 0; padding: 1.1rem 1rem; }
  .w-contacto__item + .w-contacto__item { border-top: 1px solid var(--linea-2); }
  .p-banda figcaption { justify-content: flex-start; }
}

@media (max-width: 400px) {
  .w-pie__in { grid-template-columns: minmax(0, 1fr); }
  .w-hermanas__enlaces { columns: 1; }
}

/* ==========================================================================
   Entradas distintas según el nivel (para que 11.000 páginas no abran
   todas con el mismo molde ni con la misma tarjeta a la derecha):
   · Land: plano con la capital y los km a la derecha; el perfil del Land
     en banda horizontal bajo el titular
   · región administrativa: tabla de datos a la derecha, sin plano
   · ciudad: plano y perfil del destino unidos en un solo panel
   · distrito: foto a la derecha y la ficha en banda horizontal
   · municipio: foto arriba y la ficha debajo, como pie técnico (nunca
     encima de la foto)
   · origen: plano de ruta España → Alemania con los datos de ruta debajo
   ========================================================================== */
@media (min-width: 901px) {
  /* Land: plano a la derecha, perfil en banda */
  :is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__in {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "coti   coti";
  }

  :is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__in > .w-heroe__lado { display: contents; }

  :is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  :is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-plano__mapa {
    height: clamp(19rem, 25vw, 24rem);
    margin: 1.25rem auto .75rem;
  }

  :is(body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

  /* Land y distrito: ficha en banda horizontal bajo el titular, cada
     dato en su columna */
  :is(body[class*="comarca"], body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__ficha .w-datos {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    padding: 0;
  }

  :is(body[class*="comarca"], body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__ficha .w-datos__fila {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: .45rem;
    padding: 1.1rem 1.2rem 1.25rem;
    border-top: 0;
    border-left: 1px solid var(--linea);
  }

  :is(body[class*="comarca"], body[class*="region"], body[class*="land"]):not([class*="origen"], [class*="desde"], [class*="comunidad"], [class*="provincia"]) .w-heroe__ficha .w-datos__fila:first-child { border-left: 0; }

  /* distrito: plano del Land con el distrito marcado a la derecha */
  body[class*="comarca"] .w-heroe__in {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "coti   coti";
  }

  body[class*="comarca"] .w-heroe__in > .w-heroe__lado { display: contents; }

  body[class*="comarca"] .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  body[class*="comarca"] .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

}

/* región administrativa: la ficha se lee como tabla (etiqueta en su
   columna sombreada, valor al lado, filas alternas) y no lleva plano */
body[class*="division"] .w-heroe__lado > .w-plano { display: none; }
body[class*="division"] .w-heroe__lado { align-self: start; }

body[class*="division"] .w-heroe__ficha .w-datos { padding: 0; }

body[class*="division"] .w-heroe__ficha .w-datos__fila {
  grid-template-columns: minmax(6.5rem, 38%) minmax(0, 1fr);
  gap: 0;
  padding: 0;
}

body[class*="division"] .w-heroe__ficha .w-datos dt {
  padding: .8rem 1rem .8rem 1.1rem;
  background: rgba(255, 255, 255, .04);
  border-right: 1px solid var(--linea);
}

body[class*="division"] .w-heroe__ficha .w-datos dd { padding: .75rem 1.1rem; }
body[class*="division"] .w-heroe__ficha .w-datos__fila:nth-child(even) { background: rgba(0, 166, 200, .05); }

/* ciudad: plano y perfil del destino en un mismo panel; los datos en
   dos columnas y, si son impares, el último a todo el ancho */
body[class*="ciudad"] .w-heroe__lado { gap: 0; align-self: start; }
body[class*="ciudad"] .w-heroe__lado > .w-heroe__ficha { border-top: 0; }
body[class*="ciudad"] .w-heroe__lado > .w-heroe__ficha::before { display: none; }
body[class*="ciudad"] .w-plano::after { display: none; }

body[class*="ciudad"] .w-heroe__ficha .w-datos {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 1.25rem;
}

body[class*="ciudad"] .w-heroe__ficha .w-datos__fila {
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: .3rem;
}

body[class*="ciudad"] .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 0; }
body[class*="ciudad"] .w-heroe__ficha .w-datos__fila:last-child:nth-child(odd) { grid-column: 1 / -1; }

/* municipio: foto arriba y ficha debajo, unidas como una lámina con su
   pie técnico; la ficha nunca tapa la foto */
:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) { gap: 0; }

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-foto { min-height: clamp(14rem, 20vw, 18rem); }

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-heroe__ficha {
  border-top: 2px solid var(--cian);
  background: var(--noche-2);
}

:is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-heroe__ficha::before { display: none; }

/* origen: plano de ruta arriba y datos de ruta debajo, en el mismo panel */
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado { gap: 0; align-self: start; }
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-heroe__ficha { border-top: 0; }
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-heroe__ficha::before,
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano::after { display: none; }

@media (max-width: 900px) {
  :is(body[class*="municipio"], body[class*="localidad"]) .w-heroe__lado:has(> .w-foto) > .w-foto { min-height: 0; }
  body[class*="ciudad"] .w-heroe__ficha .w-datos { column-gap: 1rem; }
}

@media (max-width: 400px) {
  body[class*="ciudad"] .w-heroe__ficha .w-datos { grid-template-columns: minmax(0, 1fr); }
  body[class*="ciudad"] .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 1px solid var(--linea); }
}

@media (max-width: 1000px) {
  .js .w-menu__lista > li:not(.w-menu__cta) > a[aria-current]::after { left: 0; right: auto; bottom: .55rem; width: 1.75rem; }
  .js .w-menu__lista > li > a[aria-current] { color: var(--cian-luz); }
}

@media (max-width: 900px) {
  /* tres tarjetas apiladas: nunca una celda vacía en una rejilla de dos */
  body[class*="contacto"] .w-contacto { grid-template-columns: minmax(0, 1fr); }
  body[class*="contacto"] .w-contacto__item { border-left: 0; }
  body[class*="contacto"] .w-contacto__item:nth-child(n+3) { border-top: 1px solid var(--linea-2); }
  body[class*="contacto"] .w-contacto__item:nth-child(2) { border-top: 0; }
}

/* tarjetas de la portada: rótulos mono legibles (13 px) y con contraste */
.p-land__iso,
.p-land details summary { font-size: .8125rem; letter-spacing: .06em; }

/* la tarjeta se queda con nombre, capital y un dato: el código ISO sobra */
.p-land__iso { display: none; }
.p-land__capital { font-size: 1rem; color: #E4E8EB; }
.p-atlas__cab,
.w-heroe__rotulo,
.w-cotizador__cabeza,
.p-ruta__rotulo,
.p-ficha__etq,
.p-faq__etq,
.w-contacto__etq,
.w-tarjeta::before { font-size: .75rem; }

/* FAQ de portada: columna izquierda (título + contacto) fija mientras
   se leen las preguntas, y con datos útiles para que no quede hueca */
.p-faq .w-faq { grid-template-columns: minmax(0, 20rem) minmax(0, 1fr); }

.p-faq__lado {
  grid-column: 1;
  grid-row: 1 / span 6;
  align-self: start;
  position: sticky;
  top: calc(var(--cab) + 1.5rem);
}

.p-faq__lado > h2 { font-size: clamp(1.45rem, 1.15rem + 1.1vw, 2.1rem); padding-bottom: 1rem; }

.p-faq__lado > h2::before {
  content: "§ 06";
  display: block;
  margin-bottom: .8rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  color: var(--acc);
}

.p-faq__datos { margin: 0 0 1.1rem; border-top: 1px solid var(--linea); }

.p-faq__datos div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .5rem 0;
  border-bottom: 1px solid var(--linea);
  font-size: .9rem;
}

.p-faq__datos dt { font-family: var(--mono); font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--fg2); }
.p-faq__datos dd { margin: 0; text-align: right; color: var(--fg); }

@media (max-width: 900px) {
  .p-faq .w-faq { grid-template-columns: minmax(0, 1fr); }
  .p-faq__lado { display: contents; }
  .p-faq__lado > h2 { order: -1; }
  .p-faq .p-faq__apoyo { order: 1; margin-top: 1.5rem; }
}

/* portada: columnas de origen, ciudades y atlas siempre en filas
   completas (3 / 1; 4 / 2 / 1), nunca una fila descompensada */
@media (max-width: 1000px) {
  .p-ciudades__lista,
  .p-atlas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .p-salidas,
  .p-fichas--fila,
  .p-ciudades__cab,
  .p-atlas__intro { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 640px) {
  .p-ciudades__lista,
  .p-atlas { grid-template-columns: minmax(0, 1fr); }

  /* ciudades compactas en móvil: nombre y km en una línea */
  .p-ciudad {
    grid-template-areas:
      "nombre km"
      "land   land";
    align-items: baseline;
    gap: .2rem 1rem;
    padding: 1rem 1.1rem;
  }

  .p-ciudad__num { display: none; }
  .p-ciudad__km { margin: 0; padding: 0; border: 0; font-size: 1rem; white-space: nowrap; }
}

/* ==========================================================================
   16. Revisión «diseño 7.5»
   ========================================================================== */

/* ciudad y origen: el plano se queda junto al titular y la ficha baja a
   una banda de ancho completo, así la columna izquierda no se queda
   vacía bajo el botón mientras la derecha sigue bajando */
@media (min-width: 901px) {
  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "coti   coti";
  }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__in:has(.w-datos) > .w-heroe__lado { display: contents; }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano::after { display: block; }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
    border-top: 1px solid var(--linea-2);
  }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__lado > .w-heroe__ficha::before { display: block; }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__ficha .w-datos {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    column-gap: 0;
    padding: 0;
  }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__ficha .w-datos__fila:nth-child(n) {
    grid-column: auto;
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: .45rem;
    padding: 1.1rem 1.2rem 1.25rem;
    border-top: 0;
    border-left: 1px solid var(--linea);
  }

  :is(body[class*="ciudad"], body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-heroe__ficha .w-datos__fila:first-child { border-left: 0; }
}

/* ciudades: la distancia con el mismo criterio y formato que el Land
   (≈ km por carretera desde La Jonquera, en grande) */
html:has(link[rel="canonical"]:is([href$=".com/baviera/alta-baviera/munich/"], [href$=".com/hesse/darmstadt/francfort-del-meno/"], [href$=".com/sajonia/leipzig/"],
  [href$=".com/renania-del-norte-westfalia/arnsberg/dortmund/"], [href$=".com/baviera/franconia-media/nuremberg/"])) {
  --dato: block;
  --dato-pie: "por carretera desde La Jonquera";
}

html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/munich/"]) { --km: 1250; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/francfort-del-meno/"]) { --km: 1180; }
html:has(link[rel="canonical"][href$=".com/sajonia/leipzig/"]) { --km: 1610; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/dortmund/"]) { --km: 1310; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/nuremberg/"]) { --km: 1330; }

/* migas: el separador pasa al final de cada miga para dejar sitio a los
   rótulos que distinguen la región administrativa de su ciudad
   («Región de Stuttgart» / «Stuttgart (ciudad)») */
.w-migas li + li::before { content: none; }

.w-migas li:not(:last-child)::after {
  content: "/";
  margin: 0 .6rem;
  color: var(--cian);
}

.w-migas a:is([href$="/baden-wurtemberg/stuttgart/"], [href$="/baden-wurtemberg/karlsruhe/"], [href$="/baden-wurtemberg/friburgo/"], [href$="/baden-wurtemberg/tubinga/"],
  [href$="/hesse/darmstadt/"], [href$="/hesse/giessen/"], [href$="/hesse/kassel/"],
  [href$="/renania-del-norte-westfalia/dusseldorf/"], [href$="/renania-del-norte-westfalia/colonia/"], [href$="/renania-del-norte-westfalia/munster/"],
  [href$="/renania-del-norte-westfalia/detmold/"], [href$="/renania-del-norte-westfalia/arnsberg/"])::before { content: "Región de "; }

html:has(link[rel="canonical"]:is([href$=".com/baden-wurtemberg/stuttgart/"], [href$=".com/baden-wurtemberg/karlsruhe/"], [href$=".com/baden-wurtemberg/friburgo/"], [href$=".com/baden-wurtemberg/tubinga/"],
  [href$=".com/hesse/darmstadt/"], [href$=".com/hesse/giessen/"], [href$=".com/hesse/kassel/"],
  [href$=".com/renania-del-norte-westfalia/dusseldorf/"], [href$=".com/renania-del-norte-westfalia/colonia/"], [href$=".com/renania-del-norte-westfalia/munster/"],
  [href$=".com/renania-del-norte-westfalia/detmold/"], [href$=".com/renania-del-norte-westfalia/arnsberg/"])) .w-migas [aria-current]::before { content: "Región de "; margin: 0; color: inherit; white-space: pre; }

html:has(link[rel="canonical"]:is([href$=".com/baden-wurtemberg/stuttgart/stuttgart/"], [href$=".com/baden-wurtemberg/karlsruhe/karlsruhe/"], [href$=".com/bremen/bremen/"])) .w-migas [aria-current]::after { content: " (ciudad)"; white-space: pre; }

/* antetítulo del municipio: nivel y región administrativa delante del
   Land que pone la fábrica («Municipio · Región de Stuttgart · …») */
:is(body[class*="municipio"], body[class*="localidad"]) { --ante-nivel: "Municipio"; }

html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/"]) { --ante-region: " · Región de Stuttgart"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/"]) { --ante-region: " · Región de Karlsruhe"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/"]) { --ante-region: " · Región de Friburgo"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/"]) { --ante-region: " · Región de Tubinga"; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/"]) { --ante-region: " · Alta Baviera"; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/"]) { --ante-region: " · Baja Baviera"; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/"]) { --ante-region: " · Alto Palatinado"; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/"]) { --ante-region: " · Alta Franconia"; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/"]) { --ante-region: " · Franconia Media"; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/"]) { --ante-region: " · Baja Franconia"; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/"]) { --ante-region: " · Suabia"; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/"]) { --ante-region: " · Región de Darmstadt"; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/"]) { --ante-region: " · Región de Giessen"; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/"]) { --ante-region: " · Región de Kassel"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/"]) { --ante-region: " · Región de Düsseldorf"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/"]) { --ante-region: " · Región de Colonia"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/"]) { --ante-region: " · Región de Münster"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/"]) { --ante-region: " · Región de Detmold"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/"]) { --ante-region: " · Región de Arnsberg"; }

:is(body[class*="municipio"], body[class*="localidad"]) .w-antetitulo {
  flex-wrap: wrap;
  gap: .2rem .45rem;
  padding-left: 2.5rem;
  background: linear-gradient(currentColor, currentColor) left .55em / 1.75rem 1px no-repeat;
}

:is(body[class*="municipio"], body[class*="localidad"]) .w-antetitulo::before {
  content: var(--ante-nivel) var(--ante-region, "") " ·";
  width: auto;
  height: auto;
  background: none;
}

/* franja de páginas hijas justo bajo el héroe: en el Land, sus regiones
   o distritos; en el distrito, sus municipios, como índice del plano */
.w-ramas {
  background-color: var(--noche-2);
  background-image:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px);
  background-size: 24px 24px;
  border-bottom: 1px solid var(--linea-2);
  color: var(--fg);
}

.w-ramas:not(:has(.w-hijas)) { display: none; }

.w-ramas__in {
  max-width: var(--ancho);
  margin: 0 auto;
  padding: clamp(2rem, 4vw, 3rem) var(--margen) clamp(2.25rem, 4.5vw, 3.25rem);
}

.w-ramas .w-hijas__titulo {
  font-size: clamp(1.3rem, 1.1rem + .8vw, 1.75rem);
  color: var(--hormigon);
}

.w-ramas .w-hijas__rejilla { margin-top: 1.25rem; }
.w-ramas .w-tarjeta { background: rgba(201, 203, 204, .04); }
.w-ramas .w-tarjeta:hover { background: rgba(0, 166, 200, .08); }

.w-ramas--plegada .w-hijas__rejilla {
  max-height: 12.5rem;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 60%, transparent);
  mask-image: linear-gradient(#000 60%, transparent);
}

body[class*="contacto"] .w-ramas { order: 1; }

/* portada: límites de los Länder dentro de la silueta */
.p-mapa__lander {
  fill: none;
  stroke: rgba(180, 190, 198, .5);
  stroke-width: .9;
  stroke-linejoin: round;
}

/* contacto: la flecha de los enlaces, separada del texto */
a.w-contacto__dato::after {
  content: "→";
  margin-left: .5em;
}

a.w-contacto__dato[href^="http"]::after { content: "↗"; }

/* portada: los 16 Länder agrupados en cuatro zonas plegables */
.p-atlas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }

.p-zona {
  position: relative;
  align-self: start;
  border: 1px solid var(--linea-2);
  background: rgba(255, 255, 255, .03);
  transition: border-color .2s var(--curva), background-color .2s var(--curva);
}

.p-zona::before {
  content: "";
  position: absolute;
  left: -1px;
  top: -1px;
  width: 1.75rem;
  height: 2px;
  background: var(--cian);
}

.p-zona:hover,
.p-zona[open] { border-color: rgba(0, 166, 200, .6); }
.p-zona[open] { grid-column: 1 / -1; background: rgba(0, 166, 200, .04); }

.p-zona__cab {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-areas:
    "num nombre total"
    "num lista  lista";
  gap: .3rem 1.1rem;
  align-items: center;
  padding: 1.35rem 1.5rem;
  list-style: none;
  cursor: pointer;
}

.p-zona__cab::-webkit-details-marker { display: none; }

.p-zona__num {
  grid-area: num;
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid var(--cian);
  font-family: var(--mono);
  font-size: 1rem;
  color: var(--cian-luz);
}

.p-zona__nombre {
  grid-area: nombre;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 1.15rem + .45vw, 1.55rem);
  line-height: 1.2;
  color: var(--hormigon);
}

.p-zona__lista {
  grid-area: lista;
  font-size: .9375rem;
  line-height: 1.45;
  color: #DCE1E5;
}

.p-zona__total {
  grid-area: total;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--cian-luz);
  white-space: nowrap;
}

.p-zona__total::after {
  content: "";
  width: .45rem;
  height: .45rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  transition: transform .2s var(--curva);
}

.p-zona[open] .p-zona__total::after { transform: rotate(-135deg) translateY(-2px); }
.p-zona__cab:hover .p-zona__nombre { color: var(--cian-luz); }

.p-zona__lander {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
  gap: 1rem;
  padding: .25rem 1.5rem 1.5rem;
}

@media (max-width: 640px) {
  .p-atlas { grid-template-columns: minmax(0, 1fr); }
  .p-zona__cab { padding: 1.1rem 1rem; gap: .3rem .8rem; }
  .p-zona__num { width: 2.25rem; height: 2.25rem; font-size: .875rem; }
  .p-zona__lander { padding: .25rem .75rem .9rem; }
  .p-zona .p-land { padding: 1.25rem 1.1rem 1.1rem; }
}

/* ==========================================================================
   17. Revisión «diseño 7.0»
   ========================================================================== */

/* portada · «La ruta, en tres cifras»: cada fila como la ficha de abajo,
   cifra grande en cian y mono a la izquierda; etiqueta en negrita y
   descripción en gris, cada una en su línea */
.p-trayecto {
  position: relative;
  border: 1px solid var(--linea-2);
  background: linear-gradient(180deg, #323A40, #2A3035);
  box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .9);
}

.p-trayecto::before {
  content: "";
  position: absolute;
  top: -1px;
  left: -1px;
  width: 12px;
  height: 12px;
  border: 0 solid var(--cian);
  border-top-width: 2px;
  border-left-width: 2px;
}

.p-trayecto__etapas {
  margin: 0;
  padding: .2rem 1.1rem .45rem;
  list-style: none;
}

.p-trayecto__etapas li {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr);
  gap: .9rem;
  align-items: baseline;
  padding: .8rem 0;
  border-top: 1px solid var(--linea);
}

.p-trayecto__etapas li:first-child { border-top: 0; }

.p-trayecto__cifra {
  font-family: var(--mono);
  font-size: clamp(1.6rem, 1.2rem + 1.1vw, 2.1rem);
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--cian-luz);
}

.p-trayecto__txt {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  min-width: 0;
  font-size: .9375rem;
  line-height: 1.45;
  color: var(--niebla);
}

.p-trayecto__txt strong {
  font-weight: 600;
  color: var(--hormigon);
}

/* portada · los dieciséis Länder: rejilla de tarjetas como la de las
   grandes ciudades (zona, nombre, capital, entrada, km y sus destinos);
   la tarjeta abierta ocupa la fila entera con sus enlaces en columnas */
.p-atlas {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  align-items: stretch;
}

.p-atlas .p-land {
  gap: .4rem;
  padding: 1.4rem 1.4rem 1.2rem;
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    var(--grafito);
}

.p-atlas .p-land:has(details[open]) { background: var(--grafito); }

.p-land__zona {
  margin: 0;
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--cian-luz);
}

.p-atlas .p-land__nombre {
  margin: 0;
  font-family: var(--serif);
  text-wrap: balance;
  hyphens: none;
}

.p-atlas .p-land__acceso {
  display: flex;
  flex-direction: column;
  gap: .15rem;
  margin: .35rem 0 0;
}

.p-land__acceso span {
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--niebla);
}

.p-land__km {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  margin: auto 0 0;
  padding-top: .7rem;
  border-top: 1px solid var(--linea);
  font-family: var(--mono);
  font-size: 1.15rem;
  color: var(--cian-luz);
  white-space: nowrap;
}

.p-land__km span {
  font-size: .75rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--niebla);
}

.p-atlas .p-land__km + details,
.p-atlas .p-land__km + .p-land__solo { margin-top: 0; }

/* niveles interiores: un momento visual propio en cada uno
   · servicio: esquema de la carga (bulto, palet, camión…) en lugar de foto
   · región administrativa: el mapa con su sede, como el resto de niveles
   · Land: franja de foto del territorio a todo el ancho bajo el perfil */
:root {
  --esquema-paquete: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cg fill='rgba(0,166,200,0.08)' stroke='%2300A6C8' stroke-width='1.6' stroke-linejoin='round'%3E%3Cpath d='M110 110L190 140V210L110 180Z'/%3E%3Cpath d='M190 140L260 110V180L190 210Z'/%3E%3Cpath d='M110 110L180 80L260 110L190 140Z' fill='rgba(0,166,200,0.2)'/%3E%3C/g%3E%3Cpath d='M145 95L225 125V195' fill='none' stroke='%235CD3EC' stroke-width='1.2'/%3E%3Cpath d='M180 76V52' stroke='%23B4BEC6' stroke-dasharray='3 3'/%3E%3Ctext x='180' y='42' text-anchor='middle' font-size='14' fill='%235CD3EC' color='%235CD3EC'%3E%E2%89%A4 40 kg por bulto%3C/text%3E%3Cg font-size='12' letter-spacing='0.6' fill='%23DCE1E5' color='%23DCE1E5'%3E%3Ctext x='20' y='228'%3EHASTA 25 BULTOS%3C/text%3E%3Ctext x='340' y='228' text-anchor='end'%3E900 KG EN TOTAL%3C/text%3E%3C/g%3E%3C/svg%3E");
  --esquema-palet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cg fill='rgba(0,166,200,0.1)' stroke='%2300A6C8' stroke-width='1.4'%3E%3Crect x='94' y='90' width='76' height='30'/%3E%3Crect x='170' y='90' width='76' height='30'/%3E%3Crect x='94' y='120' width='76' height='30'/%3E%3Crect x='170' y='120' width='76' height='30'/%3E%3Crect x='94' y='150' width='76' height='30'/%3E%3Crect x='170' y='150' width='76' height='30'/%3E%3C/g%3E%3Crect x='90' y='86' width='160' height='94' fill='none' stroke='%235CD3EC' stroke-dasharray='4 3'/%3E%3Cg fill='rgba(180,190,198,0.12)' stroke='%23B4BEC6' stroke-width='1.4'%3E%3Crect x='88' y='180' width='164' height='7'/%3E%3Crect x='92' y='187' width='22' height='12'/%3E%3Crect x='159' y='187' width='22' height='12'/%3E%3Crect x='226' y='187' width='22' height='12'/%3E%3Crect x='88' y='199' width='164' height='6'/%3E%3C/g%3E%3Cg stroke='%23B4BEC6' fill='none'%3E%3Cpath d='M272 86V205M266 86H278M266 205H278'/%3E%3Cpath d='M88 218H252M88 212V224M252 212V224'/%3E%3Cpath d='M170 50V84' stroke-dasharray='3 3'/%3E%3C/g%3E%3Ctext x='170' y='40' text-anchor='middle' font-size='14' fill='%235CD3EC' color='%235CD3EC'%3E%E2%89%A4 1.500 kg por palet%3C/text%3E%3Cg font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3E%3Ctext x='284' y='150'%3E%E2%89%A4 220 cm%3C/text%3E%3Ctext x='170' y='236' text-anchor='middle'%3E120%C3%9780 %C2%B7 120%C3%97100 %C2%B7 60%C3%9780%3C/text%3E%3C/g%3E%3C/svg%3E");
  --esquema-camion: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Crect x='40' y='90' width='196' height='88' fill='rgba(0,166,200,0.06)' stroke='%2300A6C8' stroke-width='1.6'/%3E%3Cg fill='rgba(0,166,200,0.2)' stroke='%235CD3EC' stroke-dasharray='4 3'%3E%3Crect x='50' y='128' width='56' height='44'/%3E%3Crect x='112' y='128' width='56' height='44'/%3E%3C/g%3E%3Cpath d='M240 118H282L312 150V178H240Z' fill='rgba(0,166,200,0.12)' stroke='%2300A6C8' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M248 126H278L298 148H248Z' fill='none' stroke='%235CD3EC' stroke-width='1.2'/%3E%3Cpath d='M24 178H316' stroke='%23B4BEC6' stroke-width='1.4'/%3E%3Cg fill='%232A3035' stroke='%23DCE1E5' stroke-width='1.6'%3E%3Ccircle cx='80' cy='190' r='12'/%3E%3Ccircle cx='110' cy='190' r='12'/%3E%3Ccircle cx='276' cy='190' r='12'/%3E%3C/g%3E%3Cpath d='M18 204H342' stroke='%23B4BEC6' stroke-dasharray='2 4'/%3E%3Cpath d='M22 172H40M22 172V178' fill='none' stroke='%235CD3EC' stroke-width='2'/%3E%3Ctext x='138' y='74' text-anchor='middle' font-size='12' letter-spacing='0.6' fill='%235CD3EC' color='%235CD3EC'%3ECARGA PARCIAL O COMPLETA%3C/text%3E%3Cg font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3E%3Ctext x='20' y='230'%3EFRANJA DE 3 O 6 H%3C/text%3E%3Ctext x='340' y='230' text-anchor='end'%3EPLATAFORMA ELEVADORA%3C/text%3E%3C/g%3E%3C/svg%3E");
  --esquema-urgente: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cpath d='M70 112H196L238 142V180H70Z' fill='rgba(0,166,200,0.1)' stroke='%2300A6C8' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M200 120L228 144H200Z' fill='none' stroke='%235CD3EC' stroke-width='1.2'/%3E%3Cpath d='M60 180H250' stroke='%23B4BEC6' stroke-width='1.4'/%3E%3Cg fill='%232A3035' stroke='%23DCE1E5' stroke-width='1.6'%3E%3Ccircle cx='102' cy='190' r='12'/%3E%3Ccircle cx='208' cy='190' r='12'/%3E%3C/g%3E%3Cpath d='M18 204H342' stroke='%23B4BEC6' stroke-dasharray='2 4'/%3E%3Cpath d='M18 128H56M28 148H60M14 168H54' stroke='%235CD3EC' stroke-width='1.6' stroke-linecap='round'/%3E%3Ccircle cx='292' cy='100' r='32' fill='rgba(42,48,53,0.6)' stroke='%2300A6C8' stroke-width='1.6'/%3E%3Cpath d='M292 100V68A32 32 0 0 1 324 100Z' fill='rgba(0,166,200,0.28)'/%3E%3Cpath d='M292 100V76M292 100L308 108' stroke='%23DCE1E5' stroke-width='1.8' stroke-linecap='round'/%3E%3Cg font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3E%3Ctext x='20' y='40'%3ESALE EN EL MOMENTO%3C/text%3E%3Ctext x='340' y='54' text-anchor='end' fill='%235CD3EC' color='%235CD3EC'%3EFRANJA M%C3%8DNIMA 3 H%3C/text%3E%3Ctext x='20' y='230'%3EVEH%C3%8DCULO DEDICADO%3C/text%3E%3C/g%3E%3C/svg%3E");
  --esquema-ofertas: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cg font-size='12' fill='%23B4BEC6' color='%23B4BEC6'%3E%3Ctext x='20' y='92'%3EOFERTA A%3C/text%3E%3Ctext x='20' y='132'%3EOFERTA B%3C/text%3E%3Ctext x='20' y='172'%3EOFERTA C%3C/text%3E%3C/g%3E%3Cg fill='rgba(180,190,198,0.18)' stroke='%23B4BEC6'%3E%3Crect x='100' y='80' width='210' height='16'/%3E%3Crect x='100' y='160' width='180' height='16'/%3E%3C/g%3E%3Crect x='100' y='120' width='140' height='16' fill='rgba(0,166,200,0.35)' stroke='%235CD3EC'/%3E%3Cpath d='M252 128l6 6 12-14' fill='none' stroke='%235CD3EC' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M100 70V188' stroke='%23B4BEC6' stroke-dasharray='2 3'/%3E%3Ctext x='20' y='40' font-size='12' letter-spacing='0.4' fill='%235CD3EC' color='%235CD3EC'%3EPRECIOS CERRADOS, UNO AL LADO DEL OTRO%3C/text%3E%3Ctext x='20' y='224' font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3ECOMPARAS PRECIO Y PLAZO, Y ELIGES%3C/text%3E%3C/svg%3E");
  --esquema-retorno: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 240' font-family='ui-monospace,Menlo,Consolas,monospace'%3E%3Cg fill='rgba(0,166,200,0.12)' stroke='%2300A6C8' stroke-width='1.6'%3E%3Crect x='250' y='56' width='76' height='40'/%3E%3Crect x='34' y='150' width='76' height='40'/%3E%3C/g%3E%3Cg font-size='18' text-anchor='middle' fill='%23EEF0F2' color='%23EEF0F2'%3E%3Ctext x='288' y='82'%3EDE%3C/text%3E%3Ctext x='72' y='176'%3EES%3C/text%3E%3C/g%3E%3Cpath d='M250 84C196 92 168 150 116 166' fill='none' stroke='%235CD3EC' stroke-width='1.6' stroke-dasharray='6 5'/%3E%3Cpath d='M110 168L121 170L118 160Z' fill='%235CD3EC'/%3E%3Cg font-size='12' text-anchor='middle' fill='%23B4BEC6' color='%23B4BEC6'%3E%3Ctext x='288' y='114'%3ERECOGIDA%3C/text%3E%3Ctext x='72' y='208'%3EENTREGA%3C/text%3E%3C/g%3E%3Ctext x='20' y='36' font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3ESIN ADUANA: RUTA DENTRO DE LA UE%3C/text%3E%3Ctext x='340' y='214' text-anchor='end' font-size='12' fill='%23DCE1E5' color='%23DCE1E5'%3ETR%C3%81NSITO POR FRANCIA%3C/text%3E%3C/svg%3E");
}

body.pag-servicio { --esquema: var(--esquema-ofertas); }
html:has(link[rel="canonical"][href*=".com/enviar-paquete-a-alemania/"]) body.pag-servicio { --esquema: var(--esquema-paquete); }
html:has(link[rel="canonical"][href*=".com/grupaje-alemania/"]) body.pag-servicio { --esquema: var(--esquema-palet); }
html:has(link[rel="canonical"][href*=".com/camion-completo-alemania/"]) body.pag-servicio { --esquema: var(--esquema-camion); }
html:has(link[rel="canonical"][href*=".com/transporte-urgente-alemania/"]) body.pag-servicio { --esquema: var(--esquema-urgente); }
html:has(link[rel="canonical"][href*=".com/de-alemania-a-espana/"]) body.pag-servicio { --esquema: var(--esquema-retorno); }

body.pag-servicio .w-heroe__lado > .w-foto { display: none; }
body.pag-servicio .w-plano { display: block; --rotulo: "Esquema de carga"; }

body.pag-servicio .w-plano__mapa {
  width: 100%;
  aspect-ratio: 360 / 240;
  margin: 1rem auto;
  background-image: var(--esquema);
  background-size: contain;
}

/* región administrativa: ya no es el único nivel sin mapa; su sede
   marcada en el Land en cian y la tabla de datos en banda debajo */
body.pag-division .w-heroe__lado > .w-plano { display: block; --rotulo: "Sede de la región"; }

/* Land: foto del territorio (llanura del norte, puertos, valles del sur,
   autopistas del centro) en lugar de la foto de banco */
body.pag-region .w-heroe__lado > .w-foto {
  display: block;
  --foto-cambio: block;
  --foto-op: 0;
}

html:has(link[rel="canonical"]:is([href$=".com/baden-wurtemberg/"], [href$=".com/baviera/"], [href$=".com/hesse/"], [href$=".com/renania-palatinado/"], [href$=".com/turingia/"])) { --foto-lugar: url("/img/banco-internacional-6-1280.webp"); }
html:has(link[rel="canonical"]:is([href$=".com/brandeburgo/"], [href$=".com/baja-sajonia/"], [href$=".com/mecklemburgo-pomerania-occidental/"], [href$=".com/sajonia-anhalt/"], [href$=".com/schleswig-holstein/"])) { --foto-lugar: url("/img/banco-internacional-4-1280.webp"); }
html:has(link[rel="canonical"]:is([href$=".com/bremen/"], [href$=".com/hamburgo/"], [href$=".com/renania-del-norte-westfalia/"])) { --foto-lugar: url("/img/banco-internacional-3-1280.webp"); }
html:has(link[rel="canonical"]:is([href$=".com/berlin/"], [href$=".com/sajonia/"], [href$=".com/sarre/"])) { --foto-lugar: url("/img/banco-internacional-8-1280.webp"); }

/* antetítulo con la misma fórmula que el municipio en todos los niveles:
   tipo de entidad · padre · abuelo («Distrito · Región de Stuttgart ·
   Baden-Wurtemberg», «Comunidad autónoma · España») */
body[class*="comarca"] { --ante-nivel: "Distrito"; }
body[class*="origen-region"] { --ante-nivel: "Comunidad autónoma"; }
html:has(link[rel="canonical"]:is([href$=".com/desde/ceuta/"], [href$=".com/desde/melilla/"])) body[class*="origen-region"] { --ante-nivel: "Ciudad autónoma"; }
body[class*="origen-provincia"] { --ante-nivel: "Provincia"; }

html:has(link[rel="canonical"]:is([href*=".com/baden-wurtemberg/stuttgart/"], [href*=".com/baden-wurtemberg/karlsruhe/"], [href*=".com/baden-wurtemberg/friburgo/"], [href*=".com/baden-wurtemberg/tubinga/"],
  [href*=".com/hesse/darmstadt/"], [href*=".com/hesse/giessen/"], [href*=".com/hesse/kassel/"],
  [href*=".com/renania-del-norte-westfalia/dusseldorf/"], [href*=".com/renania-del-norte-westfalia/colonia/"], [href*=".com/renania-del-norte-westfalia/munster/"],
  [href*=".com/renania-del-norte-westfalia/detmold/"], [href*=".com/renania-del-norte-westfalia/arnsberg/"])) { --ante-padre: " Región de"; }

:is(body[class*="comarca"], body[class*="origen-region"], body[class*="origen-provincia"]) .w-antetitulo {
  flex-wrap: wrap;
  gap: .2rem .45rem;
  padding-left: 2.5rem;
  background: linear-gradient(currentColor, currentColor) left .55em / 1.75rem 1px no-repeat;
}

:is(body[class*="comarca"], body[class*="origen-region"], body[class*="origen-provincia"]) .w-antetitulo::before {
  content: var(--ante-nivel) " ·";
  width: auto;
  height: auto;
  background: none;
}

body[class*="comarca"] .w-antetitulo::before { content: var(--ante-nivel) " ·" var(--ante-padre, ""); }

@media (min-width: 901px) {
  /* servicio y región administrativa: dibujo a la derecha del titular y
     la ficha en banda bajo él (como el Land), sin hueco bajo la tabla */
  :is(body.pag-servicio, body.pag-division) .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "coti   coti";
  }

  :is(body.pag-servicio, body.pag-division) .w-heroe__in:has(.w-datos) > .w-heroe__lado { display: contents; }

  :is(body.pag-servicio, body.pag-division) .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  :is(body.pag-servicio, body.pag-division) .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

  body.pag-servicio .w-heroe__ficha .w-datos {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    padding: 0;
  }

  body.pag-servicio .w-heroe__ficha .w-datos__fila {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: .45rem;
    padding: 1.1rem 1.2rem 1.25rem;
    border-top: 0;
    border-left: 1px solid var(--linea);
  }

  body.pag-servicio .w-heroe__ficha .w-datos__fila:first-child { border-left: 0; }

  /* tabla de la región en dos columnas, filas alternas por pares */
  body.pag-division .w-heroe__ficha .w-datos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.pag-division .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 0; }
  body.pag-division .w-heroe__ficha .w-datos__fila:nth-child(n) { background: none; }
  body.pag-division .w-heroe__ficha .w-datos__fila:is(:nth-child(4n+3), :nth-child(4n+4)) { background: rgba(0, 166, 200, .05); }
  body.pag-division .w-heroe__ficha .w-datos__fila:nth-child(even) { border-left: 1px solid var(--linea); }
  body.pag-division .w-heroe__ficha .w-datos__fila:last-child:nth-child(odd) { grid-column: 1 / -1; }

  /* Land: la franja del territorio, a todo el ancho bajo el perfil */
  html body.pag-region .w-heroe__in:has(.w-foto) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "franja franja"
      "coti   coti";
  }

  body.pag-region .w-heroe__lado > .w-foto {
    grid-area: franja;
    height: clamp(8rem, 13vw, 11rem);
    min-height: 0;
    max-height: none;
    margin-top: 1rem;
  }
}

/* portada: atlas en 4 / 2 / 1 columnas, filas siempre completas */
@media (max-width: 1000px) {
  .p-atlas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* móvil: las fichas de 5 datos (perfil del Land, datos de ruta, ficha
   del servicio, datos del distrito) pasan a dos columnas compactas;
   la franja del Land va tras la ficha */
@media (max-width: 900px) {
  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1rem;
  }

  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos__fila {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: .3rem;
  }

  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 0; }
  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos__fila:last-child:nth-child(odd) { grid-column: 1 / -1; }

  body.pag-region .w-heroe__lado > .w-foto { order: 3; aspect-ratio: 21 / 9; }
}

@media (max-width: 640px) {
  .p-atlas { grid-template-columns: minmax(0, 1fr); }
  .p-atlas .p-land { padding: 1.2rem 1.1rem 1.1rem; }
  .p-trayecto__etapas { padding: .1rem .9rem .3rem; }
  .p-trayecto__etapas li { grid-template-columns: 3rem minmax(0, 1fr); gap: .75rem; padding: .65rem 0; }
}

@media (max-width: 360px) {
  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos { grid-template-columns: minmax(0, 1fr); }
  :is(body.pag-region, body.pag-servicio, body[class*="comarca"], body[class*="origen"]) .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 1px solid var(--linea); }
}

/* ==========================================================================
   18. Revisión «diseño 7.4»
   ========================================================================== */

/* --- tipografía: la mono se queda en cifras y etiquetas de datos; rótulos,
   migas, antetítulos, pies y valores de ficha pasan a Work Sans --- */
.w-cab__burger,
.js .w-menu__boton,
.w-migas ol,
.w-antetitulo,
.w-heroe__rotulo,
.w-cotizador__cabeza,
.w-foto figcaption,
.w-tabla th,
.w-plegar,
.w-remate__tel,
.w-contacto__etq,
.w-recorrido__marca,
.w-pie__tel span,
.w-pie__rotulo,
.w-pie__base,
.p-kicker,
.p-ruta__rotulo,
.p-ficha__etq,
.p-mapa figcaption,
.p-salida__paso,
.p-faq__etq,
.p-zona__total,
.p-land__zona,
.p-land__acceso span { font-family: var(--sans); }

.w-migas ol { font-size: .8125rem; letter-spacing: .01em; }

:is(.w-antetitulo, .w-heroe__rotulo, .w-cotizador__cabeza, .w-tabla th, .w-plegar, .w-contacto__etq, .w-recorrido__marca, .w-pie__rotulo, .p-kicker, .p-ruta__rotulo, .p-ficha__etq, .p-salida__paso, .p-faq__etq) {
  font-weight: 500;
  letter-spacing: .09em;
}

.w-datos dd {
  font-family: var(--sans);
  font-size: 1rem;
  font-weight: 500;
}

.w-datos__fila--destacado dd,
.w-datos dd .w-datos__cifra { font-family: var(--mono); font-weight: 400; }

/* --- distancia: un solo componente grande (≈ km por carretera) en la
   ficha de Land, región, ciudad y origen; el plano ya no lleva cifra --- */
.w-plano__dato,
.w-heroe__km { display: none; }

:is(body.pag-region, body.pag-division, body.pag-ciudad, body[class*="origen"]) .w-heroe__ficha > .w-heroe__km {
  display: var(--dato, none);
  counter-reset: km var(--km, 0);
  margin: 0;
  padding: 1rem 1.1rem 1.05rem;
  border-bottom: 1px solid var(--linea);
  background: linear-gradient(90deg, rgba(0, 166, 200, .1), transparent 75%);
}

.w-heroe__km::before {
  content: "≈ " counter(km) " km";
  display: inline-block;
  margin-right: 1rem;
  font-family: var(--mono);
  font-size: clamp(1.6rem, 1.15rem + 1.3vw, 2.2rem);
  line-height: 1.1;
  letter-spacing: -.01em;
  color: var(--cian-luz);
  white-space: nowrap;
}

.w-heroe__km::after {
  content: var(--dato-pie, "por carretera");
  display: inline-block;
  font-family: var(--sans);
  font-size: .9375rem;
  line-height: 1.45;
  color: var(--niebla);
}

/* sedes de región y ciudades que son capital de su Land: la misma cifra
   que el Land, con la misma métrica */
html:has(link[rel="canonical"]:is([href$=".com/baden-wurtemberg/stuttgart/"], [href$=".com/baviera/alta-baviera/"], [href$=".com/renania-del-norte-westfalia/dusseldorf/"])) {
  --dato: block;
  --dato-pie: "por carretera desde La Jonquera hasta la sede de la región";
}

html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/"]) { --km: 1120; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/"]) { --km: 1250; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/"]) { --km: 1260; }

html:has(link[rel="canonical"]:is([href$=".com/baja-sajonia/hannover/"], [href$=".com/sajonia/dresde/"], [href$=".com/sajonia-anhalt/magdeburgo/"], [href$=".com/schleswig-holstein/kiel/"],
  [href$=".com/turingia/erfurt/"], [href$=".com/renania-palatinado/maguncia/"], [href$=".com/hesse/darmstadt/wiesbaden/"])) {
  --dato: block;
  --dato-pie: "por carretera desde La Jonquera";
}

html:has(link[rel="canonical"][href$=".com/baja-sajonia/hannover/"]) { --km: 1510; }
html:has(link[rel="canonical"][href$=".com/sajonia/dresde/"]) { --km: 1640; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/magdeburgo/"]) { --km: 1650; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/kiel/"]) { --km: 1770; }
html:has(link[rel="canonical"][href$=".com/turingia/erfurt/"]) { --km: 1450; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/maguncia/"]) { --km: 1190; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/wiesbaden/"]) { --km: 1190; }

/* --- mapa con zoom en región y distrito: encuadre del Land (centro y
   escala sobre la proyección x = 15 + (lon − 6) · 37,75 ;
   y = 72 + (54 − lat) · 60). La región encuadra su Land entero; el
   distrito acerca más y se centra en su propio punto --- */
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --zx: 37.9%; --zy: 79%; --zs-land: 2.4; }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --zx: 61.1%; --zy: 74.5%; --zs-land: 1.75; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --zx: 77.4%; --zy: 34.1%; --zs-land: 2.3; }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --zx: 38.9%; --zy: 55.7%; --zs-land: 2.6; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --zx: 73.8%; --zy: 17.2%; --zs-land: 2; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --zx: 37.2%; --zy: 30.3%; --zs-land: 1.5; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --zx: 27.2%; --zy: 46.2%; --zs-land: 2.4; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --zx: 22.1%; --zy: 65%; --zs-land: 2.6; }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --zx: 79.9%; --zy: 50.9%; --zs-land: 2.6; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --zx: 66.2%; --zy: 39%; --zs-land: 2.6; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --zx: 43.5%; --zy: 14.5%; --zs-land: 2.4; }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --zx: 60.5%; --zy: 52.4%; --zs-land: 2.6; }

body.pag-division { --zs: var(--zs-land, 1.6); }

/* distrito: punto en su centro (media de sus municipios, GeoNames) */
body.pag-comarca {
  --pin: block;
  --pin-x: calc((49 + (var(--lo) - 6) * 37.75) / 410 * 100%);
  --pin-y: calc((84 + (54 - var(--la)) * 60) / 520 * 100%);
  --zx: var(--pin-x);
  --zy: var(--pin-y);
  --zs: min(calc(var(--zs-land, 2) * 1.35), 3.2);
}

body:is(.pag-division, .pag-comarca) .w-plano__mapa {
  --ztam: calc(var(--zs, 1.6) * 100%);
  --zpx: calc((50% - var(--zs, 1.6) * var(--zx, 50%)) / (1 - var(--zs, 1.6)));
  --zpy: calc((50% - var(--zs, 1.6) * var(--zy, 50%)) / (1 - var(--zs, 1.6)));
  overflow: hidden;
  outline: 1px solid var(--linea);
  background-image: var(--mapa-lander);
  background-size: var(--ztam) var(--ztam);
  background-position: var(--zpx) var(--zpy);
}

body:is(.pag-division, .pag-comarca) .w-plano__mapa::before {
  background-size: var(--ztam) var(--ztam);
  background-position: var(--zpx) var(--zpy);
  -webkit-mask-size: var(--ztam) var(--ztam);
  mask-size: var(--ztam) var(--ztam);
  -webkit-mask-position: var(--zpx) var(--zpy);
  mask-position: var(--zpx) var(--zpy);
}

body:is(.pag-division, .pag-comarca) .w-plano__pin {
  left: calc((var(--pin-x, 50%) - var(--zx, 50%)) * var(--zs, 1.6) + 50%);
  top: calc((var(--pin-y, 50%) - var(--zy, 50%)) * var(--zs, 1.6) + 50%);
}

/* Ostalbkreis: su capital, Aalen */
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-ostalbkreis/"]) { --la: 48.837; --lo: 10.093; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-boblingen/"]) { --la: 48.666; --lo: 8.938; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-rems-murr-kreis/"]) { --la: 48.892; --lo: 9.469; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-heidenheim/"]) { --la: 48.643; --lo: 10.195; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-esslingen/"]) { --la: 48.643; --lo: 9.372; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-ludwigsburg/"]) { --la: 48.945; --lo: 9.148; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-schwabisch-hall/"]) { --la: 49.125; --lo: 9.896; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-goppingen/"]) { --la: 48.663; --lo: 9.679; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-heilbronn/"]) { --la: 49.167; --lo: 9.202; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-hohenlohekreis/"]) { --la: 49.273; --lo: 9.605; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/distrito-main-tauber-kreis/"]) { --la: 49.570; --lo: 9.702; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-karlsruhe/"]) { --la: 49.091; --lo: 8.564; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-rhein-neckar-kreis/"]) { --la: 49.374; --lo: 8.729; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-rastatt/"]) { --la: 48.805; --lo: 8.221; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-enzkreis/"]) { --la: 48.908; --lo: 8.740; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-freudenstadt/"]) { --la: 48.474; --lo: 8.526; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-neckar-odenwald-kreis/"]) { --la: 49.423; --lo: 9.217; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/distrito-calw/"]) { --la: 48.685; --lo: 8.657; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-schwarzwald-baar-kreis/"]) { --la: 48.049; --lo: 8.400; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-ortenaukreis/"]) { --la: 48.411; --lo: 8.005; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-konstanz/"]) { --la: 47.782; --lo: 8.897; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-lorrach/"]) { --la: 47.699; --lo: 7.768; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-waldshut/"]) { --la: 47.674; --lo: 8.222; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-breisgau-hochschwarzwald/"]) { --la: 47.940; --lo: 7.848; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-emmendingen/"]) { --la: 48.148; --lo: 7.837; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-rottweil/"]) { --la: 48.243; --lo: 8.518; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/distrito-tuttlingen/"]) { --la: 48.058; --lo: 8.798; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-bodenseekreis/"]) { --la: 47.713; --lo: 9.377; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-zollernalbkreis/"]) { --la: 48.250; --lo: 8.890; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-tubingen/"]) { --la: 48.469; --lo: 9.010; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-biberach/"]) { --la: 48.104; --lo: 9.781; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-ravensburg/"]) { --la: 47.841; --lo: 9.674; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-alb-donau-kreis/"]) { --la: 48.382; --lo: 9.859; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-reutlingen/"]) { --la: 48.445; --lo: 9.339; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/distrito-sigmaringen/"]) { --la: 48.050; --lo: 9.225; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-furstenfeldbruck/"]) { --la: 48.182; --lo: 11.200; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-neuburg-schrobenhausen/"]) { --la: 48.653; --lo: 11.223; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-munich/"]) { --la: 48.093; --lo: 11.619; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-bad-tolz-wolfratshausen/"]) { --la: 47.780; --lo: 11.489; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-muhldorf-am-inn/"]) { --la: 48.240; --lo: 12.382; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-ebersberg/"]) { --la: 48.073; --lo: 11.900; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-weilheim-schongau/"]) { --la: 47.790; --lo: 11.061; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-starnberg/"]) { --la: 48.023; --lo: 11.270; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-dachau/"]) { --la: 48.329; --lo: 11.370; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-freising/"]) { --la: 48.455; --lo: 11.748; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-traunstein/"]) { --la: 47.903; --lo: 12.583; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-altotting/"]) { --la: 48.202; --lo: 12.707; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-rosenheim/"]) { --la: 47.893; --lo: 12.194; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-berchtesgadener-land/"]) { --la: 47.745; --lo: 12.922; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-miesbach/"]) { --la: 47.770; --lo: 11.796; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-erding/"]) { --la: 48.299; --lo: 11.988; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-pfaffenhofen-an-der-ilm/"]) { --la: 48.601; --lo: 11.520; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-eichstatt/"]) { --la: 48.866; --lo: 11.361; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-garmisch-partenkirchen/"]) { --la: 47.611; --lo: 11.151; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/distrito-landsberg-am-lech/"]) { --la: 48.036; --lo: 10.948; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-dingolfing-landau/"]) { --la: 48.635; --lo: 12.585; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-passau/"]) { --la: 48.565; --lo: 13.360; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-kelheim/"]) { --la: 48.803; --lo: 11.881; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-rottal-inn/"]) { --la: 48.403; --lo: 12.877; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-landshut/"]) { --la: 48.543; --lo: 12.204; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-deggendorf/"]) { --la: 48.777; --lo: 13.003; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-freyung-grafenau/"]) { --la: 48.818; --lo: 13.477; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-straubing-bogen/"]) { --la: 48.927; --lo: 12.627; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/distrito-regen/"]) { --la: 49.018; --lo: 13.063; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-regensburg/"]) { --la: 49.013; --lo: 12.142; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-amberg-sulzbach/"]) { --la: 49.481; --lo: 11.783; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-schwandorf/"]) { --la: 49.392; --lo: 12.287; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-cham/"]) { --la: 49.227; --lo: 12.695; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-neumarkt-in-der-oberpfalz/"]) { --la: 49.213; --lo: 11.535; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-neustadt-an-der-waldnaab/"]) { --la: 49.693; --lo: 12.132; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/distrito-tirschenreuth/"]) { --la: 49.909; --lo: 12.132; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-wunsiedel-im-fichtelgebirge/"]) { --la: 50.083; --lo: 12.056; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-coburg/"]) { --la: 50.245; --lo: 10.977; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-bayreuth/"]) { --la: 49.902; --lo: 11.578; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-bamberg/"]) { --la: 49.905; --lo: 10.877; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-lichtenfels/"]) { --la: 50.135; --lo: 11.156; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-hof/"]) { --la: 50.287; --lo: 11.818; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-forchheim/"]) { --la: 49.697; --lo: 11.160; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-kronach/"]) { --la: 50.330; --lo: 11.356; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/distrito-kulmbach/"]) { --la: 50.107; --lo: 11.523; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-furth/"]) { --la: 49.466; --lo: 10.872; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-nurnberger-land/"]) { --la: 49.491; --lo: 11.373; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-erlangen-hochstadt/"]) { --la: 49.640; --lo: 10.928; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-wei-enburg-gunzenhausen/"]) { --la: 49.043; --lo: 10.896; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-roth/"]) { --la: 49.224; --lo: 11.087; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-neustadt-an-der-aisch-bad-windsheim/"]) { --la: 49.569; --lo: 10.469; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/distrito-ansbach/"]) { --la: 49.240; --lo: 10.463; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-aschaffenburg/"]) { --la: 50.018; --lo: 9.218; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-rhon-grabfeld/"]) { --la: 50.365; --lo: 10.274; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-main-spessart/"]) { --la: 49.968; --lo: 9.640; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-ha-berge/"]) { --la: 50.061; --lo: 10.608; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-wurzburg/"]) { --la: 49.747; --lo: 9.925; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-bad-kissingen/"]) { --la: 50.220; --lo: 9.982; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-schweinfurt/"]) { --la: 49.990; --lo: 10.250; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-miltenberg/"]) { --la: 49.780; --lo: 9.237; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/distrito-kitzingen/"]) { --la: 49.743; --lo: 10.231; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-augsburg/"]) { --la: 48.366; --lo: 10.758; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-aichach-friedberg/"]) { --la: 48.411; --lo: 11.045; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-neu-ulm/"]) { --la: 48.268; --lo: 10.135; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-oberallgau/"]) { --la: 47.614; --lo: 10.266; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-donau-ries/"]) { --la: 48.814; --lo: 10.698; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-ostallgau/"]) { --la: 47.802; --lo: 10.625; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-unterallgau/"]) { --la: 48.034; --lo: 10.349; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-gunzburg/"]) { --la: 48.350; --lo: 10.385; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-lindau/"]) { --la: 47.604; --lo: 9.855; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/distrito-dillingen-an-der-donau/"]) { --la: 48.594; --lo: 10.498; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-oberhavel/"]) { --la: 52.846; --lo: 13.196; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-havelland/"]) { --la: 52.635; --lo: 12.621; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-barnim/"]) { --la: 52.824; --lo: 13.773; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-dahme-spreewald/"]) { --la: 52.075; --lo: 13.799; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-uckermark/"]) { --la: 53.237; --lo: 13.945; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-oder-spree/"]) { --la: 52.254; --lo: 14.241; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-ostprignitz-ruppin/"]) { --la: 52.933; --lo: 12.623; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-teltow-flaming/"]) { --la: 52.103; --lo: 13.306; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-markisch-oderland/"]) { --la: 52.577; --lo: 14.167; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-potsdam-mittelmark/"]) { --la: 52.284; --lo: 12.710; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-oberspreewald-lausitz/"]) { --la: 51.526; --lo: 13.918; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-wokrejs-sprjewja-nysa/"]) { --la: 51.763; --lo: 14.419; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-prignitz/"]) { --la: 53.117; --lo: 11.931; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/distrito-elbe-elster/"]) { --la: 51.582; --lo: 13.520; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-main-kinzig-kreis/"]) { --la: 50.210; --lo: 9.159; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-gro-gerau/"]) { --la: 49.921; --lo: 8.464; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-hochtaunuskreis/"]) { --la: 50.260; --lo: 8.517; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-offenbach/"]) { --la: 50.031; --lo: 8.820; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-bergstra-e/"]) { --la: 49.614; --lo: 8.676; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-main-taunus-kreis/"]) { --la: 50.106; --lo: 8.466; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-wetteraukreis/"]) { --la: 50.344; --lo: 8.890; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-rheingau-taunus-kreis/"]) { --la: 50.118; --lo: 8.097; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-darmstadt-dieburg/"]) { --la: 49.853; --lo: 8.765; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/distrito-odenwaldkreis/"]) { --la: 49.721; --lo: 8.962; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/distrito-marburg-biedenkopf/"]) { --la: 50.830; --lo: 8.725; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/distrito-lahn-dill-kreis/"]) { --la: 50.633; --lo: 8.386; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/distrito-limburg-weilburg/"]) { --la: 50.436; --lo: 8.171; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/distrito-gie-en/"]) { --la: 50.589; --lo: 8.770; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/distrito-vogelsbergkreis/"]) { --la: 50.644; --lo: 9.262; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-hersfeld-rotenburg/"]) { --la: 50.894; --lo: 9.773; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-kassel/"]) { --la: 51.371; --lo: 9.436; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-waldeck-frankenberg/"]) { --la: 51.167; --lo: 8.883; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-werra-mei-ner-kreis/"]) { --la: 51.190; --lo: 9.977; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-schwalm-eder-kreis/"]) { --la: 51.032; --lo: 9.366; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/distrito-fulda/"]) { --la: 50.557; --lo: 9.763; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-mecklenburgische-seenplatte/"]) { --la: 53.575; --lo: 12.992; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-vorpommern-greifswald/"]) { --la: 53.820; --lo: 13.791; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-vorpommern-rugen/"]) { --la: 54.324; --lo: 13.038; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-mecklemburgo-noroccidental/"]) { --la: 53.806; --lo: 11.260; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-rostock/"]) { --la: 53.941; --lo: 12.199; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/distrito-ludwigslust-parchim/"]) { --la: 53.456; --lo: 11.494; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-region-hannover/"]) { --la: 52.385; --lo: 9.730; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-hameln-pyrmont/"]) { --la: 52.094; --lo: 9.391; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-grafschaft-bentheim/"]) { --la: 52.471; --lo: 7.004; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-emsland/"]) { --la: 52.763; --lo: 7.456; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-stade/"]) { --la: 53.574; --lo: 9.436; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-osnabruck/"]) { --la: 52.393; --lo: 7.995; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-harburg/"]) { --la: 53.311; --lo: 9.942; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-diepholz/"]) { --la: 52.685; --lo: 8.693; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-verden/"]) { --la: 52.974; --lo: 9.099; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-nienburg-weser/"]) { --la: 52.651; --lo: 9.152; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-oldenburg/"]) { --la: 52.951; --lo: 8.487; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-cuxhaven/"]) { --la: 53.676; --lo: 8.937; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-heidekreis/"]) { --la: 52.821; --lo: 9.662; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-northeim/"]) { --la: 51.725; --lo: 9.856; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-osterholz/"]) { --la: 53.267; --lo: 8.829; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-ammerland/"]) { --la: 53.211; --lo: 8.023; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-vechta/"]) { --la: 52.650; --lo: 8.206; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-wesermarsch/"]) { --la: 53.339; --lo: 8.434; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-schaumburg/"]) { --la: 52.316; --lo: 9.228; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-aurich/"]) { --la: 53.550; --lo: 7.301; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-friesland/"]) { --la: 53.527; --lo: 7.977; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-gottingen/"]) { --la: 51.566; --lo: 10.102; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-leer/"]) { --la: 53.263; --lo: 7.502; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-rotenburg-wumme/"]) { --la: 53.253; --lo: 9.313; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-cloppenburg/"]) { --la: 52.899; --lo: 7.903; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-peine/"]) { --la: 52.284; --lo: 10.265; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-goslar/"]) { --la: 51.882; --lo: 10.410; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-hildesheim/"]) { --la: 52.099; --lo: 9.925; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-helmstedt/"]) { --la: 52.255; --lo: 10.912; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-celle/"]) { --la: 52.644; --lo: 10.149; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-wolfenbuttel/"]) { --la: 52.121; --lo: 10.580; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-gifhorn/"]) { --la: 52.528; --lo: 10.611; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-luneburg/"]) { --la: 53.244; --lo: 10.476; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-wittmund/"]) { --la: 53.617; --lo: 7.577; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-uelzen/"]) { --la: 53.008; --lo: 10.575; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-luchow-dannenberg/"]) { --la: 53.020; --lo: 11.146; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/distrito-holzminden/"]) { --la: 51.893; --lo: 9.543; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/distrito-rhein-kreis-neuss/"]) { --la: 51.148; --lo: 6.651; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/distrito-wesel/"]) { --la: 51.588; --lo: 6.610; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/distrito-mettmann/"]) { --la: 51.227; --lo: 6.960; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/distrito-cleveris/"]) { --la: 51.630; --lo: 6.275; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/distrito-viersen/"]) { --la: 51.283; --lo: 6.332; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-stadteregion-aachen/"]) { --la: 50.766; --lo: 6.194; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-rheinisch-bergischer-kreis/"]) { --la: 51.027; --lo: 7.164; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-rhein-sieg-kreis/"]) { --la: 50.757; --lo: 7.203; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-rhein-erft-kreis/"]) { --la: 50.898; --lo: 6.765; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-oberbergischer-kreis/"]) { --la: 51.011; --lo: 7.518; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-heinsberg/"]) { --la: 51.038; --lo: 6.117; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-duren/"]) { --la: 50.821; --lo: 6.432; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/distrito-euskirchen/"]) { --la: 50.544; --lo: 6.635; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/distrito-recklinghausen/"]) { --la: 51.634; --lo: 7.185; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/distrito-steinfurt/"]) { --la: 52.208; --lo: 7.586; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/distrito-borken/"]) { --la: 51.954; --lo: 6.917; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/distrito-warendorf/"]) { --la: 51.875; --lo: 7.959; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/distrito-coesfeld/"]) { --la: 51.857; --lo: 7.407; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-minden-lubbecke/"]) { --la: 52.327; --lo: 8.714; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-lippe/"]) { --la: 51.977; --lo: 8.930; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-gutersloh/"]) { --la: 51.946; --lo: 8.357; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-herford/"]) { --la: 52.177; --lo: 8.602; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-paderborn/"]) { --la: 51.684; --lo: 8.716; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/distrito-hoxter/"]) { --la: 51.698; --lo: 9.160; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-siegen-wittgenstein/"]) { --la: 50.903; --lo: 8.122; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-markischer-kreis/"]) { --la: 51.262; --lo: 7.702; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-ennepe-ruhr-kreis/"]) { --la: 51.349; --lo: 7.337; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-unna/"]) { --la: 51.574; --lo: 7.632; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-hochsauerlandkreis/"]) { --la: 51.298; --lo: 8.416; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-soest/"]) { --la: 51.566; --lo: 8.177; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/distrito-olpe/"]) { --la: 51.085; --lo: 7.937; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-mainz-bingen/"]) { --la: 49.900; --lo: 8.107; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-birkenfeld/"]) { --la: 49.723; --lo: 7.272; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-mayen-koblenz/"]) { --la: 50.326; --lo: 7.319; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-ahrweiler/"]) { --la: 50.436; --lo: 7.003; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-rhein-pfalz-kreis/"]) { --la: 49.446; --lo: 8.343; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-bad-durkheim/"]) { --la: 49.492; --lo: 8.156; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-alzey-worms/"]) { --la: 49.754; --lo: 8.142; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-bernkastel-wittlich/"]) { --la: 49.930; --lo: 6.940; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-rhein-lahn-kreis/"]) { --la: 50.265; --lo: 7.856; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-germersheim/"]) { --la: 49.135; --lo: 8.243; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-trier-saarburg/"]) { --la: 49.702; --lo: 6.707; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-rhein-hunsruck-kreis/"]) { --la: 50.024; --lo: 7.486; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-eifelkreis-bitburg-prum/"]) { --la: 50.039; --lo: 6.399; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-westerwaldkreis/"]) { --la: 50.556; --lo: 7.866; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-sudliche-weinstra-e/"]) { --la: 49.185; --lo: 8.063; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-altenkirchen/"]) { --la: 50.713; --lo: 7.686; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-donnersbergkreis/"]) { --la: 49.641; --lo: 7.908; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-bad-kreuznach/"]) { --la: 49.823; --lo: 7.688; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-kaiserslautern/"]) { --la: 49.453; --lo: 7.660; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-neuwied/"]) { --la: 50.563; --lo: 7.483; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-vulkaneifel/"]) { --la: 50.244; --lo: 6.802; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-sudwestpfalz/"]) { --la: 49.222; --lo: 7.621; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-kusel/"]) { --la: 49.557; --lo: 7.478; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/distrito-cochem-zell/"]) { --la: 50.142; --lo: 7.181; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-vogtlandkreis/"]) { --la: 50.471; --lo: 12.272; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-mittelsachsen/"]) { --la: 50.940; --lo: 13.099; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-sachsische-schweiz/"]) { --la: 50.930; --lo: 13.891; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-mei-en/"]) { --la: 51.246; --lo: 13.487; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-bautzen/"]) { --la: 51.221; --lo: 14.209; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-leipzig/"]) { --la: 51.231; --lo: 12.542; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-nordsachsen/"]) { --la: 51.467; --lo: 12.764; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-gorlitz/"]) { --la: 51.169; --lo: 14.724; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-zwickau/"]) { --la: 50.755; --lo: 12.551; }
html:has(link[rel="canonical"][href*=".com/sajonia/distrito-erzgebirgskreis/"]) { --la: 50.628; --lo: 12.928; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-burgenlandkreis/"]) { --la: 51.142; --lo: 11.842; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-harz/"]) { --la: 51.844; --lo: 11.046; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-anhalt-bitterfeld/"]) { --la: 51.734; --lo: 12.155; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-saalekreis/"]) { --la: 51.410; --lo: 11.844; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-salzlandkreis/"]) { --la: 51.855; --lo: 11.613; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-mansfeld-sudharz/"]) { --la: 51.518; --lo: 11.388; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-altmarkkreis-salzwedel/"]) { --la: 52.730; --lo: 11.137; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-jerichower-land/"]) { --la: 52.273; --lo: 11.926; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-borde/"]) { --la: 52.208; --lo: 11.343; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-wittenberg/"]) { --la: 51.791; --lo: 12.680; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/distrito-stendal/"]) { --la: 52.730; --lo: 11.898; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-segeberg/"]) { --la: 53.922; --lo: 10.162; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-pinneberg/"]) { --la: 53.731; --lo: 9.698; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-stormarn/"]) { --la: 53.719; --lo: 10.358; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-herzogtum-lauenburg/"]) { --la: 53.601; --lo: 10.586; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-steinburg/"]) { --la: 53.940; --lo: 9.518; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-rendsburg-eckernforde/"]) { --la: 54.278; --lo: 9.789; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-schleswig-flensburg/"]) { --la: 54.629; --lo: 9.555; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-nordfriesland/"]) { --la: 54.606; --lo: 8.892; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-dithmarschen/"]) { --la: 54.146; --lo: 9.112; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-holstein-oriental/"]) { --la: 54.178; --lo: 10.845; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/distrito-plon/"]) { --la: 54.264; --lo: 10.342; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-wartburgkreis/"]) { --la: 50.876; --lo: 10.204; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-ilm-kreis/"]) { --la: 50.788; --lo: 10.983; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-unstrut-hainich-kreis/"]) { --la: 51.174; --lo: 10.671; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-altenburger-land/"]) { --la: 50.955; --lo: 12.380; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-saalfeld-rudolstadt/"]) { --la: 50.612; --lo: 11.294; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-schmalkalden-meiningen/"]) { --la: 50.615; --lo: 10.394; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-weimarer-land/"]) { --la: 50.965; --lo: 11.386; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-kyffhauserkreis/"]) { --la: 51.299; --lo: 11.020; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-eichsfeld/"]) { --la: 51.363; --lo: 10.180; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-greiz/"]) { --la: 50.815; --lo: 12.087; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-gotha/"]) { --la: 50.949; --lo: 10.740; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-saale-orla-kreis/"]) { --la: 50.642; --lo: 11.720; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-saale-holzland-kreis/"]) { --la: 50.888; --lo: 11.729; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-hildburghausen/"]) { --la: 50.456; --lo: 10.688; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-nordhausen/"]) { --la: 51.470; --lo: 10.693; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-sonneberg/"]) { --la: 50.436; --lo: 11.114; }
html:has(link[rel="canonical"][href*=".com/turingia/distrito-sommerda/"]) { --la: 51.125; --lo: 11.098; }

/* --- cabecera distinta por nivel ---------------------------------------
   · Land: foto del territorio a sangre detrás del héroe, en duotono cian,
     con el plano translúcido encima
   · región: plano con zoom al Land y franja de foto bajo la tabla
   · distrito: plano con zoom al propio distrito
   · ciudad: foto grande con el minimapa en la esquina
   · origen: foto junto al titular y la ruta animada en banda bajo él */

/* Land: una foto propia por Land (ninguna de la portada) */
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/"]) { --foto-land: url("/img/banco-internacional-6-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/baviera/"]) { --foto-land: url("/img/banco-internacional-8-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/berlin/"]) { --foto-land: url("/img/banco-paqueteria-4-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/brandeburgo/"]) { --foto-land: url("/img/banco-internacional-4-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/bremen/"]) { --foto-land: url("/img/banco-internacional-3-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/hamburgo/"]) { --foto-land: url("/img/banco-camion-6-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/hesse/"]) { --foto-land: url("/img/banco-palets-1-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/mecklemburgo-pomerania-occidental/"]) { --foto-land: url("/img/banco-grupaje-4-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/"]) { --foto-land: url("/img/banco-internacional-4-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/"]) { --foto-land: url("/img/banco-grupaje-3-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/"]) { --foto-land: url("/img/banco-palets-3-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/sarre/"]) { --foto-land: url("/img/banco-camion-5-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/sajonia/"]) { --foto-land: url("/img/europalet-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/"]) { --foto-land: url("/img/banco-paqueteria-1-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/"]) { --foto-land: url("/img/almacen-1280.webp"); }
html:has(link[rel="canonical"][href$=".com/turingia/"]) { --foto-land: url("/img/banco-palets-2-1280.webp"); }

body.pag-region .w-heroe {
  background-color: #1D6577;
  background-image: var(--foto-land, url("/img/banco-internacional-4-1280.webp"));
  background-size: cover;
  background-position: center 55%;
  background-repeat: no-repeat;
  background-blend-mode: luminosity;
}

body.pag-region .w-heroe::before {
  background:
    linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, rgba(23, 27, 30, .95) 0%, rgba(23, 27, 30, .88) 40%, rgba(23, 27, 30, .5) 68%, rgba(23, 27, 30, .3) 100%),
    linear-gradient(180deg, rgba(23, 27, 30, .1) 0%, rgba(23, 27, 30, .25) 55%, rgba(23, 27, 30, .92) 100%);
}

body.pag-region .w-plano {
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    rgba(23, 27, 30, .8);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}

/* la foto ya está detrás del héroe: fuera la franja bajo la ficha */
body.pag-region .w-heroe__lado > .w-foto { display: none; }

/* región: franja con la foto de la página bajo la tabla */
body.pag-division .w-heroe__lado > .w-foto { display: block; }

/* ciudad: foto grande con el minimapa (Land y punto) en la esquina */
body.pag-ciudad .w-heroe__lado > .w-foto { display: block; }
body.pag-ciudad .w-heroe__lado > .w-plano .w-heroe__rotulo { display: none; }

body.pag-ciudad .w-heroe__lado > .w-plano {
  width: clamp(6.5rem, 30%, 9rem);
  background: rgba(23, 27, 30, .86);
}

body.pag-ciudad .w-plano .w-plano__mapa {
  width: calc(100% - .8rem);
  height: auto;
  max-width: none;
  aspect-ratio: 410 / 520;
  margin: .4rem;
  background-image: var(--mapa-lander);
}

body.pag-ciudad .w-plano .w-plano__pin {
  width: 12px;
  height: 12px;
  margin: -6px 0 0 -6px;
  border-width: 1px;
  background: radial-gradient(circle, var(--cian-luz) 0 2.5px, transparent 3px);
  box-shadow: 0 0 0 3px rgba(0, 166, 200, .25);
}

body.pag-ciudad .w-plano .w-plano__pin::before,
body.pag-ciudad .w-plano .w-plano__pin::after { display: none; }

/* fotos de banco que no cuadran con una ciudad o una región alemana, o
   que ya salen en las bandas de la portada */
:is(body.pag-ciudad, body.pag-division) .w-heroe__lado > .w-foto:has(img[src*="banco-internacional-1-"], img[src*="/internacional-"], img[src*="aduanas-"], img[src*="banco-camion-2-"]) {
  --foto-cambio: block;
  --foto-op: 0;
}

/* origen: la foto se queda en el héroe y la ruta pasa a una banda */
html body[class*="origen"] .w-heroe__lado > .w-foto { display: block; }

@keyframes w-ruta { to { background-position: 11px 0; } }

.w-plano__ruta { animation: w-ruta .9s linear infinite; }

@media (min-width: 901px) {
  /* región: franja de foto a todo el ancho bajo la tabla */
  html body.pag-division .w-heroe__in:has(.w-foto) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "franja franja"
      "coti   coti";
  }

  body.pag-division .w-heroe__lado > .w-foto {
    grid-area: franja;
    height: clamp(9rem, 14vw, 12rem);
    min-height: 0;
    max-height: none;
    margin-top: 1rem;
  }

  /* ciudad: foto en la columna derecha y el minimapa encima, en su esquina */
  body.pag-ciudad .w-heroe__lado > .w-foto {
    grid-area: lado;
    align-self: stretch;
    min-height: 22rem;
    max-height: none;
    margin-top: .25rem;
  }

  body.pag-ciudad .w-heroe__lado > .w-plano {
    grid-area: lado;
    justify-self: end;
    align-self: start;
    z-index: 2;
    margin: 1rem 1rem 0 0;
  }

  /* origen: titular y foto arriba; debajo, la banda de ruta con el plano
     grande y los datos de ruta al lado */
  html body[class*="origen"] .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ruta   ficha"
      "coti   coti";
  }

  html body[class*="origen"] .w-heroe__lado > .w-foto {
    grid-area: lado;
    align-self: stretch;
    min-height: 19rem;
    max-height: none;
    margin-top: .25rem;
  }

  html body[class*="origen"] .w-heroe__lado > .w-plano {
    grid-area: ruta;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

  html body[class*="origen"] .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

  html body[class*="origen"] .w-heroe__ficha .w-datos {
    grid-template-columns: minmax(0, 1fr);
    grid-auto-flow: row;
    padding: .2rem 1.1rem .45rem;
  }

  html body[class*="origen"] .w-heroe__ficha .w-datos__fila:nth-child(n) {
    grid-column: auto;
    grid-template-columns: minmax(5.5rem, 34%) minmax(0, 1fr);
    gap: .9rem;
    padding: .8rem 0;
    border-left: 0;
    border-top: 1px solid var(--linea);
  }

  html body[class*="origen"] .w-heroe__ficha .w-datos__fila:first-child { border-top: 0; }
}

/* --- franja de hijas bajo el héroe en gris hormigón claro, con poro:
   el héroe oscuro, el hormigón, el papel y otra vez el hormigón --- */
.w-ramas.zona-hormigon {
  background-color: var(--fondo);
  background-image:
    var(--poro),
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px),
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px);
  background-size: 180px 180px, 100% 48px, 96px 100%;
  border-bottom: 1px solid var(--gris);
  color: var(--fg);
}

.w-ramas.zona-hormigon .w-hijas__titulo { color: var(--fg); }

.w-ramas.zona-hormigon .w-tarjeta {
  border-color: rgba(28, 34, 40, .28);
  background: var(--blanco);
}

.w-ramas.zona-hormigon .w-tarjeta:hover {
  border-color: var(--acc);
  background: var(--blanco);
  box-shadow: 0 14px 28px -22px rgba(28, 34, 40, .6);
}

/* --- portada ----------------------------------------------------------- */

/* héroe: el camión se lee; velo fuerte solo detrás del texto y duotono
   cian por luminosidad, no por multiplicación */
.w-heroe__fondo { background: linear-gradient(120deg, #17596A, #2B8EA6); }

.w-heroe__fondo img {
  filter: grayscale(1) contrast(1.12) brightness(1.06);
  mix-blend-mode: luminosity;
}

.w-heroe__fondo::after {
  background:
    linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, rgba(23, 27, 30, .93) 0%, rgba(23, 27, 30, .84) 36%, rgba(23, 27, 30, .4) 64%, rgba(23, 27, 30, .16) 100%);
}

.p-portada .w-heroe::before {
  background:
    radial-gradient(60% 70% at 88% 0%, rgba(0, 166, 200, .14), transparent 70%),
    linear-gradient(180deg, transparent 78%, rgba(30, 35, 39, .7));
}

.p-portada .w-heroe__lado > .p-trayecto,
.p-portada .w-heroe--foto .w-heroe__ficha {
  background: rgba(23, 27, 30, .82);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}

.p-banda--ruta img { object-position: center 50%; }

/* origen: más aire y menos letra pequeña en las tres columnas */
.p-salidas { gap: clamp(1.25rem, 3vw, 2.25rem); }
.p-salida { padding: clamp(1.5rem, 3vw, 2.1rem) clamp(1.25rem, 2.5vw, 1.85rem) 1.6rem; }
.p-salida h3 { margin-bottom: 1rem; }

/* destinos: texto y lista compacta de Länder junto al mapa (fijo al
   desplazar); las grandes ciudades, en su propia fila debajo */
.p-in--destinos {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  grid-template-areas:
    "texto    mapa"
    "lander   mapa"
    "ciudades ciudades";
  column-gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
}

.p-in--destinos > .p-destinos { display: contents; }
.p-in--destinos .p-destinos > .p-texto { grid-area: texto; }

.p-in--destinos .p-destinos > .p-mapa {
  grid-area: mapa;
  position: sticky;
  top: calc(var(--cab) + 1.5rem);
}

.p-in--destinos > .p-lander { grid-area: lander; }
.p-in--destinos > .p-ciudades { grid-area: ciudades; }

.p-lander {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 2rem;
  margin-top: clamp(2rem, 4vw, 2.75rem);
  border-top: 1px solid var(--linea-2);
}

.p-lander__intro { grid-column: 1 / -1; padding: 1.5rem 0 .9rem; }

.p-lander__intro h3 {
  font-size: clamp(1.35rem, 1.15rem + .8vw, 1.8rem);
  font-weight: 400;
  color: var(--hormigon);
}

.p-lander__intro p {
  margin: .55rem 0 0;
  max-width: 34em;
  font-size: 1rem;
  color: #DCE1E5;
}

.p-lander__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "nombre km"
    "mas    mas";
  align-items: baseline;
  gap: .2rem 1rem;
  padding: .9rem 0 .85rem;
  border-bottom: 1px solid var(--linea);
}

.p-lander__item:has(details[open]) { grid-column: 1 / -1; }

.p-lander__nombre {
  grid-area: nombre;
  margin: 0;
  font-size: 1.125rem;
  font-weight: 400;
  line-height: 1.25;
}

.p-lander__nombre a { color: var(--hormigon); text-decoration: none; }
.p-lander__nombre a:hover { color: var(--cian-luz); text-decoration: underline; }

.p-lander__km {
  grid-area: km;
  margin: 0;
  font-family: var(--mono);
  font-size: .9375rem;
  color: var(--cian-luz);
  white-space: nowrap;
}

.p-lander__mas,
.p-lander__solo { grid-area: mas; margin: 0; }

.p-lander__solo { font-size: .875rem; color: var(--niebla); }

.p-lander__mas summary {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .15rem 0;
  list-style: none;
  font-size: .875rem;
  color: var(--niebla);
  cursor: pointer;
}

.p-lander__mas summary::-webkit-details-marker { display: none; }

.p-lander__mas summary::before {
  content: "";
  width: .4rem;
  height: .4rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform .2s var(--curva);
}

.p-lander__mas[open] summary::before { transform: rotate(45deg); }
.p-lander__mas summary:hover,
.p-lander__mas[open] summary { color: var(--cian-luz); }

.p-lander__mas ul {
  margin: .8rem 0 .4rem;
  padding: .9rem 0 0;
  list-style: none;
  columns: 3 11rem;
  column-gap: 1.75rem;
  border-top: 1px solid var(--linea);
}

.p-lander__mas li { break-inside: avoid; }

.p-lander__mas li a {
  display: block;
  padding: .2rem 0;
  font-size: .9375rem;
  line-height: 1.4;
  color: #DCE1E5;
  text-decoration: none;
  overflow-wrap: anywhere;
}

.p-lander__mas li a:hover { color: var(--cian-luz); text-decoration: underline; }

.p-in--destinos .p-ciudades { margin-top: clamp(3.5rem, 7vw, 5rem); }

/* --- ajustes responsive de esta revisión (al final) --- */
@media (max-width: 900px) {
  body.pag-region .w-heroe::before {
    background:
      linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(180deg, rgba(23, 27, 30, .8), rgba(23, 27, 30, .92));
  }

  .w-heroe__fondo::after {
    background:
      linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(180deg, rgba(23, 27, 30, .82), rgba(23, 27, 30, .9));
  }

  body.pag-division .w-heroe__lado > .w-foto { order: 3; aspect-ratio: 21 / 9; min-height: 0; flex: none; }

  body.pag-ciudad .w-heroe__lado { position: relative; }

  body.pag-ciudad .w-heroe__lado > .w-plano {
    position: absolute;
    top: .75rem;
    right: .75rem;
    z-index: 2;
  }

  body.pag-ciudad .w-heroe__lado > .w-foto { aspect-ratio: 4 / 3; min-height: 0; flex: none; }

  html body[class*="origen"] .w-heroe__lado > .w-foto { aspect-ratio: 16 / 9; min-height: 0; flex: none; }

  .p-in--destinos {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "texto" "mapa" "lander" "ciudades";
  }

  .p-in--destinos .p-destinos > .p-mapa { position: static; margin-top: 2rem; }
}

@media (max-width: 640px) {
  .p-lander { grid-template-columns: minmax(0, 1fr); }
  .p-lander__mas ul { columns: 2 9rem; column-gap: 1.25rem; }
  .w-heroe__km::before { display: block; margin: 0 0 .2rem; }
}

/* ==========================================================================
   19. Revisión «diseño 7.5» (segunda): bandas, mapas, km y un rasgo
   propio por nivel
   ========================================================================== */

/* --- portada: la banda del viaducto (foto clara, con niebla) pasa al
   duotono oscuro del héroe: fondo cian hondo, foto por luminosidad y un
   velo de hormigón en sombra; el pie queda por encima del velo --- */
.p-banda--ruta {
  background: linear-gradient(120deg, #123F4B, #1D6577 55%, #2B8EA6);
}

.p-banda--ruta img {
  aspect-ratio: 16 / 6;
  object-position: center 68%;
  filter: grayscale(1) contrast(1.25) brightness(.78);
  mix-blend-mode: luminosity;
}

.p-banda--ruta::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
    linear-gradient(180deg, rgba(23, 27, 30, .35), rgba(23, 27, 30, .6));
  pointer-events: none;
}

.p-banda--ruta figcaption { z-index: 2; }

/* --- encuadre del Land en región, distrito y municipio: el Land entero
   con margen (caja del Land en la proyección x = 15 + (lon − 6) · 37,75 ;
   y = 72 + (54 − lat) · 60), en un lienzo 4:3 que ocupa todo el panel,
   sin recuadro interior. --ajx/--ajy: centro de la caja; --ajs: escala
   para que quepa con un 8 % de aire por lado --- */
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --ajx: 39.6%; --ajy: 77.9%; --ajs: 1.87; }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --ajx: 61.7%; --ajy: 74.8%; --ajs: 1.3; }
html:has(link[rel="canonical"][href*=".com/berlin/"]) { --ajx: 80.2%; --ajy: 33.3%; --ajs: 2.4; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --ajx: 76.6%; --ajy: 33.8%; --ajs: 1.96; }
html:has(link[rel="canonical"][href*=".com/bremen/"]) { --ajx: 37.1%; --ajy: 23.8%; --ajs: 3; }
html:has(link[rel="canonical"][href*=".com/hamburgo/"]) { --ajx: 49%; --ajy: 21.2%; --ajs: 3; }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --ajx: 39.6%; --ajy: 56.3%; --ajs: 1.88; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --ajx: 71.7%; --ajy: 17.3%; --ajs: 2.39; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --ajx: 40.7%; --ajy: 32.5%; --ajs: 1.66; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --ajx: 27.3%; --ajy: 45.9%; --ajs: 1.94; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --ajx: 24%; --ajy: 62.9%; --ajs: 2.19; }
html:has(link[rel="canonical"][href*=".com/sarre/"]) { --ajx: 20.1%; --ajy: 69.5%; --ajs: 4; }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --ajx: 80.6%; --ajy: 51.6%; --ajs: 2.84; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --ajx: 66%; --ajy: 39.4%; --ajs: 2.05; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --ajx: 45.5%; --ajy: 13.8%; --ajs: 2.58; }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --ajx: 60.4%; --ajy: 51.6%; --ajs: 2.97; }

/* lienzo 4:3: el mapa (410 × 520) se escala a lo ancho, así que en
   vertical la escala efectiva es --ajs · (520 / 410) · (4 / 3) */
html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa {
  --ajk: calc(var(--ajs, 1.6) * 1.6911);
  --aj-tam: calc(var(--ajs, 1.6) * 100%) auto;
  --aj-pos: calc((50% - var(--ajs, 1.6) * var(--ajx, 50%)) / (1 - var(--ajs, 1.6))) calc((50% - var(--ajk) * var(--ajy, 50%)) / (1 - var(--ajk)));
  width: 100%;
  max-width: none;
  height: auto;
  aspect-ratio: 4 / 3;
  margin: 0;
  outline: 0;
  overflow: hidden;
  background-image: var(--mapa-lander);
  background-size: var(--aj-tam);
  background-position: var(--aj-pos);
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa::before {
  background-size: var(--aj-tam);
  background-position: var(--aj-pos);
  -webkit-mask-size: var(--aj-tam);
  mask-size: var(--aj-tam);
  -webkit-mask-position: var(--aj-pos);
  mask-position: var(--aj-pos);
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__pin,
html body:is(.pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__paso {
  left: calc(50% + (var(--pin-x, 50%) - var(--ajx, 50%)) * var(--ajs, 1.6));
  top: calc(50% + (var(--pin-y, 50%) - var(--ajy, 50%)) * var(--ajk));
}

/* distrito y municipio: el Land atenuado y la zona del distrito resaltada
   (un círculo de ~40 km, el tamaño medio de un Kreis) en su centro real */
html body:is(.pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa::before { opacity: .45; }

html body:is(.pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__paso {
  display: block;
  width: max(1.9rem, calc(var(--ajs, 1.6) * 5.5%));
  height: auto;
  aspect-ratio: 1;
  margin: 0;
  translate: -50% -50%;
  border: 1px dashed var(--cian-luz);
  background: radial-gradient(circle, rgba(92, 211, 236, .7) 0 18%, rgba(0, 166, 200, .34) 20% 100%);
  box-shadow: 0 0 0 5px rgba(0, 166, 200, .12), 0 0 22px rgba(92, 211, 236, .45);
}

/* municipio: su zona sale del distrito (o, si cuelga directamente de la
   región o del Land, de la sede o la capital); sin cruz de precisión */
body.pag-municipio {
  --mla: var(--la, var(--la-div, var(--la-land, 51)));
  --mlo: var(--lo, var(--lo-div, var(--lo-land, 10)));
  --pin: none;
  --pin-x: calc((49 + (var(--mlo) - 6) * 37.75) / 410 * 100%);
  --pin-y: calc((84 + (54 - var(--mla)) * 60) / 520 * 100%);
}

/* sede de cada región administrativa y capital de cada Land (lat, lon),
   para los municipios que no cuelgan de un distrito */
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --la-land: 48.776; --lo-land: 9.183; }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --la-land: 48.137; --lo-land: 11.575; }
html:has(link[rel="canonical"][href*=".com/berlin/"]) { --la-land: 52.52; --lo-land: 13.405; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --la-land: 52.391; --lo-land: 13.064; }
html:has(link[rel="canonical"][href*=".com/bremen/"]) { --la-land: 53.079; --lo-land: 8.802; }
html:has(link[rel="canonical"][href*=".com/hamburgo/"]) { --la-land: 53.551; --lo-land: 9.994; }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --la-land: 50.082; --lo-land: 8.24; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --la-land: 53.63; --lo-land: 11.401; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --la-land: 52.376; --lo-land: 9.732; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --la-land: 51.227; --lo-land: 6.774; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --la-land: 49.993; --lo-land: 8.247; }
html:has(link[rel="canonical"][href*=".com/sarre/"]) { --la-land: 49.24; --lo-land: 6.997; }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --la-land: 51.05; --lo-land: 13.738; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --la-land: 52.121; --lo-land: 11.628; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --la-land: 54.323; --lo-land: 10.123; }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --la-land: 50.978; --lo-land: 11.029; }

html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/"]) { --la-div: 48.776; --lo-div: 9.183; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/"]) { --la-div: 49.009; --lo-div: 8.404; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/"]) { --la-div: 47.999; --lo-div: 7.842; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/"]) { --la-div: 48.522; --lo-div: 9.052; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/"]) { --la-div: 48.137; --lo-div: 11.575; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/"]) { --la-div: 48.537; --lo-div: 12.152; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/"]) { --la-div: 49.013; --lo-div: 12.102; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/"]) { --la-div: 49.946; --lo-div: 11.578; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/"]) { --la-div: 49.301; --lo-div: 10.572; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/"]) { --la-div: 49.792; --lo-div: 9.953; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/"]) { --la-div: 48.371; --lo-div: 10.898; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/"]) { --la-div: 49.873; --lo-div: 8.651; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/"]) { --la-div: 50.584; --lo-div: 8.678; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/"]) { --la-div: 51.313; --lo-div: 9.48; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/"]) { --la-div: 51.227; --lo-div: 6.774; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/"]) { --la-div: 50.938; --lo-div: 6.96; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/"]) { --la-div: 51.961; --lo-div: 7.626; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/"]) { --la-div: 51.938; --lo-div: 8.879; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/"]) { --la-div: 51.396; --lo-div: 8.064; }

/* --- distancia: la misma medida (≈ km por carretera desde La Jonquera)
   y el mismo componente grande en región, distrito y municipio que en
   el Land; se mide hasta la sede de la región o la capital del Land, y
   el pie lo dice. Mismas cifras que el Land y la portada --- */
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --kmr: 1120; --kmr-pie: "por carretera desde La Jonquera hasta Stuttgart, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --kmr: 1250; --kmr-pie: "por carretera desde La Jonquera hasta Múnich, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/berlin/"]) { --kmr: 1720; --kmr-pie: "por carretera desde La Jonquera hasta Berlín"; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --kmr: 1700; --kmr-pie: "por carretera desde La Jonquera hasta Potsdam, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/bremen/"]) { --kmr: 1540; --kmr-pie: "por carretera desde La Jonquera hasta Bremen"; }
html:has(link[rel="canonical"][href*=".com/hamburgo/"]) { --kmr: 1670; --kmr-pie: "por carretera desde La Jonquera hasta Hamburgo"; }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --kmr: 1190; --kmr-pie: "por carretera desde La Jonquera hasta Wiesbaden, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --kmr: 1790; --kmr-pie: "por carretera desde La Jonquera hasta Schwerin, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --kmr: 1510; --kmr-pie: "por carretera desde La Jonquera hasta Hannover, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --kmr: 1260; --kmr-pie: "por carretera desde La Jonquera hasta Düsseldorf, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --kmr: 1190; --kmr-pie: "por carretera desde La Jonquera hasta Maguncia, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/sarre/"]) { --kmr: 1000; --kmr-pie: "por carretera desde La Jonquera hasta Sarrebruck, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --kmr: 1640; --kmr-pie: "por carretera desde La Jonquera hasta Dresde, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --kmr: 1650; --kmr-pie: "por carretera desde La Jonquera hasta Magdeburgo, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --kmr: 1770; --kmr-pie: "por carretera desde La Jonquera hasta Kiel, capital del Land"; }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --kmr: 1450; --kmr-pie: "por carretera desde La Jonquera hasta Erfurt, capital del Land"; }

html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/stuttgart/"]) { --kmr: 1120; --kmr-pie: "por carretera desde La Jonquera hasta Stuttgart, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/karlsruhe/"]) { --kmr: 1040; --kmr-pie: "por carretera desde La Jonquera hasta Karlsruhe, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/friburgo/"]) { --kmr: 900; --kmr-pie: "por carretera desde La Jonquera hasta Friburgo, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/tubinga/"]) { --kmr: 1150; --kmr-pie: "por carretera desde La Jonquera hasta Tubinga, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-baviera/"]) { --kmr: 1250; --kmr-pie: "por carretera desde La Jonquera hasta Múnich, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-baviera/"]) { --kmr: 1320; --kmr-pie: "por carretera desde La Jonquera hasta Landshut, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/alto-palatinado/"]) { --kmr: 1380; --kmr-pie: "por carretera desde La Jonquera hasta Ratisbona, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/alta-franconia/"]) { --kmr: 1410; --kmr-pie: "por carretera desde La Jonquera hasta Bayreuth, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/franconia-media/"]) { --kmr: 1290; --kmr-pie: "por carretera desde La Jonquera hasta Ansbach, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/baja-franconia/"]) { --kmr: 1230; --kmr-pie: "por carretera desde La Jonquera hasta Wurzburgo, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/baviera/suabia/"]) { --kmr: 1220; --kmr-pie: "por carretera desde La Jonquera hasta Augsburgo, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/hesse/darmstadt/"]) { --kmr: 1140; --kmr-pie: "por carretera desde La Jonquera hasta Darmstadt, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/hesse/giessen/"]) { --kmr: 1240; --kmr-pie: "por carretera desde La Jonquera hasta Giessen, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/hesse/kassel/"]) { --kmr: 1370; --kmr-pie: "por carretera desde La Jonquera hasta Kassel, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/dusseldorf/"]) { --kmr: 1260; --kmr-pie: "por carretera desde La Jonquera hasta Düsseldorf, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/colonia/"]) { --kmr: 1220; --kmr-pie: "por carretera desde La Jonquera hasta Colonia, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/munster/"]) { --kmr: 1380; --kmr-pie: "por carretera desde La Jonquera hasta Münster, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/detmold/"]) { --kmr: 1450; --kmr-pie: "por carretera desde La Jonquera hasta Detmold, sede de la región"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/arnsberg/"]) { --kmr: 1360; --kmr-pie: "por carretera desde La Jonquera hasta Arnsberg, sede de la región"; }

body:is(.pag-division, .pag-comarca, .pag-municipio) {
  --dato: block;
  --km: var(--kmr, 0);
  --dato-pie: var(--kmr-pie, "por carretera desde La Jonquera");
}

:is(body.pag-comarca, body.pag-municipio) .w-heroe__ficha > .w-heroe__km {
  display: var(--dato, none);
  counter-reset: km var(--km, 0);
  margin: 0;
  padding: 1rem 1.1rem 1.05rem;
  border-bottom: 1px solid var(--linea);
  background: linear-gradient(90deg, rgba(0, 166, 200, .1), transparent 75%);
}

/* --- héroe de lugar: el botón va justo bajo el titular y la entradilla
   después, así el H1 respira y la acción queda en el primer pantallazo
   aunque la entradilla sea larga --- */
:is(body.pag-region, body.pag-division, body.pag-comarca, body.pag-ciudad, body.pag-municipio, body[class*="origen"]) .w-heroe__in > .w-heroe__acciones:not(:has(.w-cotizador)) {
  grid-area: entr;
  margin-top: 1.5rem;
}

:is(body.pag-region, body.pag-division, body.pag-comarca, body.pag-ciudad, body.pag-municipio, body[class*="origen"]) .w-heroe__in > .w-entradilla { grid-area: acc; }

:is(body.pag-region, body.pag-division, body.pag-comarca, body.pag-ciudad, body.pag-municipio, body[class*="origen"]) .w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :first-child {
  grid-area: acc;
  margin-top: 1.5rem;
}

/* --- municipio: plano de situación grande (el Land encuadrado y la zona
   del municipio) con la ficha pegada debajo; los códigos postales, en
   la primera línea de la ficha y a todo el ancho. Sin foto de banco --- */
body.pag-municipio .w-plano { --rotulo: "Situación en el Land"; }

html body.pag-municipio .w-heroe__in .w-heroe__lado {
  position: static;
  gap: 0;
  align-self: start;
}

html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-foto { display: none; }

html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-plano {
  display: block;
  position: relative;
  inset: auto;
  width: auto;
  margin: 0;
  background:
    linear-gradient(var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    linear-gradient(90deg, var(--rejilla-fina) 1px, transparent 1px) -1px -1px / 24px 24px,
    radial-gradient(70% 60% at 60% 45%, rgba(0, 166, 200, .12), transparent 70%),
    var(--grafito);
}

html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-plano > .w-heroe__rotulo { display: flex; }
html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-plano::after { display: none; }

html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-heroe__ficha {
  margin-top: 0;
  border-top: 2px solid var(--cian);
  background: var(--noche-2);
}

html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-heroe__ficha::before { display: none; }

html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 1rem;
}

html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila {
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: .3rem;
}

html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:first-child {
  grid-column: 1 / -1;
}

html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:first-child dd {
  font-family: var(--mono);
  font-weight: 400;
  font-size: clamp(1.3rem, 1.05rem + .8vw, 1.7rem);
  line-height: 1.15;
  color: var(--cian-luz);
}

html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(2) { border-top: 1px solid var(--linea); }
html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(odd):not(:first-child) { border-left: 1px solid var(--linea); padding-left: 1rem; }
html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:last-child:nth-child(even) { grid-column: 1 / -1; }

/* --- distrito: la lista de municipios como tabla técnica (inicial en su
   columna, cada municipio numerado en su celda, filetes de rejilla) --- */
.w-ramas:has(.w-indice) { display: block; }

.w-ramas .w-indice {
  padding: 0;
  border-top: 0;
  counter-reset: municipio;
}

.w-ramas .w-indice__titulo {
  font-size: clamp(1.3rem, 1.1rem + .8vw, 1.75rem);
  color: var(--fg);
}

.w-ramas .w-indice__letras {
  margin: 1.25rem 0 0;
  padding: .55rem .6rem;
  border: 1px solid var(--grafito);
  background: var(--grafito);
  box-shadow: none;
}

.w-ramas .w-indice__letras a {
  min-width: 1.9rem;
  height: 1.9rem;
  border-color: rgba(201, 203, 204, .22);
  background: transparent;
  font-family: var(--mono);
  font-size: .875rem;
  color: var(--hormigon);
}

.w-ramas .w-indice__letras a:hover {
  border-color: var(--cian-luz);
  background: var(--cian-luz);
  color: var(--noche);
}

.w-ramas .w-indice__grupo {
  grid-template-columns: 3.25rem minmax(0, 1fr);
  gap: 0;
  padding: 0;
  border: 1px solid var(--linea-2);
  border-top: 0;
  background: var(--blanco);
}

.w-ramas .w-indice__grupo h3 {
  display: flex;
  justify-content: center;
  padding: .6rem 0;
  border-right: 1px solid var(--linea-2);
  background: var(--gris-papel);
  font-family: var(--mono);
  font-size: 1.125rem;
  color: var(--acc);
}

.w-ramas .w-indice__grupo p {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(13.5rem, 1fr));
  columns: auto;
}

.w-ramas .w-indice__grupo a {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  align-items: baseline;
  padding: .5rem .9rem;
  border-right: 1px solid var(--linea);
  border-bottom: 1px solid var(--linea);
  font-size: .9375rem;
  color: var(--fg);
}

.w-ramas .w-indice__grupo a::before {
  counter-increment: municipio;
  content: counter(municipio, decimal-leading-zero);
  font-family: var(--mono);
  font-size: .75rem;
  color: var(--fg2);
}

.w-ramas .w-indice__grupo a:hover {
  background: rgba(0, 166, 200, .08);
  color: var(--acc);
}

/* --- origen: la foto de banco sale y el hueco es para el esquema de la
   ruta, junto al titular; los datos de ruta debajo, como etapas
   numeradas sobre una línea discontinua --- */
:is(body[class*="origen"]) .w-plano { --rotulo: "Esquema de la ruta"; }

html body[class*="origen"] .w-heroe__lado > .w-foto { display: none; }

/* la comunidad o provincia de salida, resaltada bajo su punto */
:is(body[class*="desde"], body[class*="origen"], body[class*="comunidad"], body[class*="provincia"]) .w-plano__mapa::after {
  content: "";
  display: var(--pin, none);
  position: absolute;
  left: calc(var(--ox, 50) * 1%);
  top: calc(var(--oy, 50) * 1%);
  width: 15%;
  aspect-ratio: 1;
  translate: -50% -50%;
  border: 1px dashed var(--cian-luz);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(92, 211, 236, .4), rgba(0, 166, 200, .14) 70%);
  pointer-events: none;
}

body[class*="origen-provincia"] .w-plano__mapa::after { width: 9%; }

html body[class*="origen"] .w-heroe__ficha .w-datos { counter-reset: tramo; }

html body[class*="origen"] .w-heroe__ficha .w-datos__fila {
  position: relative;
  padding-left: 2.5rem;
  counter-increment: tramo;
}

html body[class*="origen"] .w-heroe__ficha .w-datos__fila::before {
  content: counter(tramo, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: .7rem;
  display: grid;
  place-items: center;
  width: 1.65rem;
  height: 1.65rem;
  border: 1px solid var(--cian);
  background: var(--noche-2);
  font-family: var(--mono);
  font-size: .6875rem;
  color: var(--cian-luz);
}

html body[class*="origen"] .w-heroe__ficha .w-datos__fila:not(:last-child)::after {
  content: "";
  position: absolute;
  left: .8rem;
  top: 2.35rem;
  bottom: -.7rem;
  border-left: 1px dashed rgba(92, 211, 236, .55);
}

@media (min-width: 901px) {
  /* origen: plano de ruta y etapas en la columna derecha, a la altura
     del titular */
  html body[class*="origen"] .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "coti   coti";
  }

  html body[class*="origen"] .w-heroe__in:has(.w-datos) > .w-heroe__lado {
    display: flex;
    grid-area: lado;
    gap: 0;
    align-self: start;
  }

  html body[class*="origen"] .w-heroe__in .w-heroe__lado > :is(.w-plano, .w-heroe__ficha) {
    grid-area: auto;
    margin-top: 0;
  }

  html body[class*="origen"] .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n) { padding-left: 2.5rem; }
  html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-heroe__ficha { border-top: 0; }
  html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-heroe__ficha::before { display: none; }

  /* ciudad: el último dato no salta a una segunda fila; la banda sigue
     la retícula de columnas iguales con su filete entre cada una */
  html body.pag-ciudad .w-heroe__in .w-heroe__ficha .w-datos__fila:last-child:nth-child(odd) { grid-column: auto; }

  /* servicio: cada columna toma el ancho de su valor (los largos, como
     el pago o la recogida, caben en una línea en escritorio) */
  html body.pag-servicio .w-heroe__ficha .w-datos { grid-auto-columns: auto; }
  html body.pag-servicio .w-heroe__ficha .w-datos dd { font-size: .9375rem; }
}

@media (max-width: 900px) {
  /* fichas de dos columnas: filete vertical entre la pareja de datos */
  :is(body.pag-region, body.pag-servicio, body.pag-comarca, body.pag-ciudad) .w-heroe__ficha .w-datos__fila:nth-child(even) {
    border-left: 1px solid var(--linea);
    padding-left: 1rem;
  }

  html body.pag-ciudad .w-heroe__ficha .w-datos__fila:last-child:nth-child(odd) { border-left: 0; padding-left: 0; }

  /* origen: las etapas, en una sola columna también en móvil */
  html body[class*="origen"] .w-heroe__in .w-heroe__ficha .w-datos { grid-template-columns: minmax(0, 1fr); }
  html body[class*="origen"] .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n) {
    grid-column: auto;
    grid-template-columns: minmax(5.5rem, 34%) minmax(0, 1fr);
    gap: .9rem;
    padding: .8rem 0 .8rem 2.5rem;
    border-top: 1px solid var(--linea);
    border-left: 0;
  }

  html body[class*="origen"] .w-heroe__in .w-heroe__ficha .w-datos__fila:first-child { border-top: 0; }
  html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-plano { margin-bottom: 0; }

  .w-ramas .w-indice__grupo p { grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); }
}

@media (max-width: 640px) {
  .p-banda--ruta img { aspect-ratio: 16 / 9; }
  .w-ramas .w-indice__grupo { grid-template-columns: 2.4rem minmax(0, 1fr); }
  .w-ramas .w-indice__grupo a { grid-template-columns: 1.9rem minmax(0, 1fr); padding: .45rem .6rem; }
}

@media (max-width: 400px) {
  html body.pag-ciudad .w-heroe__ficha .w-datos__fila:nth-child(n) { border-left: 0; padding-left: 0; }
  html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos { grid-template-columns: minmax(0, 1fr); }
  html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n) { grid-column: auto; border-left: 0; padding-left: 0; border-top: 1px solid var(--linea); }
  html body.pag-municipio .w-heroe__in .w-heroe__ficha .w-datos__fila:first-child { border-top: 0; }
  .w-ramas .w-indice__grupo p { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 360px) {
  :is(body.pag-region, body.pag-servicio, body.pag-comarca, body.pag-ciudad) .w-heroe__ficha .w-datos__fila:nth-child(even) { border-left: 0; padding-left: 0; }
}

/* ==========================================================================
   20. Revisión «diseño 6.5»: un solo botón por héroe, mismo orden en
   todas las plantillas, plano rotulado, ruta a todo el ancho, entradilla
   de cuatro líneas, foto en las ciudades y contraste de la portada
   ========================================================================== */

/* --- héroe: antetítulo → H1 → entradilla → botón, en todos los niveles
   (deshace el cambio de la revisión 7.5 que subía el botón sobre la
   entradilla) y 36 px de aire entre el texto y el botón --- */
html body .w-heroe .w-heroe__in > .w-entradilla { grid-area: entr; }

html body .w-heroe .w-heroe__in > .w-entradilla:not(:has(> :nth-child(4))) > :first-child {
  grid-area: entr;
  margin-top: 1.4rem;
}

html body .w-heroe .w-heroe__in > .w-heroe__acciones:not(:has(.w-cotizador)) {
  grid-area: acc;
  align-items: center;
  margin-top: 2.25rem;
}

/* un solo botón: el de la fábrica, si lo trae; el de la plantilla solo
   sale cuando el héroe lleva el cotizador entero (va a su banda) o no
   trae ninguno, y ocupa el mismo sitio con el mismo aire */
.w-heroe__in > .w-heroe__boton {
  grid-area: acc;
  margin: 2.25rem 0 0;
}

.w-heroe__in > .w-heroe__acciones:has(.w-cta):not(:has(.w-cotizador)) ~ .w-heroe__boton { display: none; }
.w-heroe__in > .w-heroe__acciones:not(:has(.w-cta, .w-cotizador)) { display: none; }

/* --- entradilla del héroe: se lee entera (el recorte a cuatro líneas
   partía palabras y frases; la revisión 7.4 lo quitó con su botón) --- */

/* --- plano de región, distrito y municipio: el Land entero, con los
   Länder vecinos fundidos hacia el borde (nada queda «cortado») y, al
   pie, el nombre del lugar y su Land, con la misma marca que el mapa --- */
html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa {
  box-shadow: inset 0 0 2rem 1.1rem var(--grafito);
}

html body:is(.pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa::before { opacity: .6; }

.w-plano__nombre { display: none; }

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-plano > .w-plano__nombre:not(:empty) {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .25rem .7rem;
  margin: 0;
  padding: .7rem 1.1rem .8rem;
  border-top: 1px solid var(--linea);
  font-family: var(--serif);
  font-size: 1.125rem;
  line-height: 1.25;
  color: var(--hormigon);
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-plano > .w-plano__nombre:not(:empty)::before {
  content: "";
  flex: none;
  align-self: center;
  width: 10px;
  height: 10px;
  border: 1px dashed var(--cian-luz);
  border-radius: 50%;
  background: radial-gradient(circle, var(--cian-luz) 0 2px, rgba(0, 166, 200, .35) 2.5px);
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-plano > .w-plano__nombre:not(:empty)::after {
  content: attr(data-land);
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--niebla);
}

/* --- origen: el esquema de la ruta ocupa todo el ancho de la columna,
   como la ficha de debajo (antes se encogía a ~190 px) --- */
html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-plano {
  align-self: stretch;
  width: 100%;
}

html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-plano .w-plano__mapa {
  width: calc(100% - 2rem);
  max-width: none;
}

/* --- ciudades con distrito propio (municipios que no cuelgan de un
   distrito: Stuttgart, Heilbronn, Ulm…): foto en duotono cian bajo el
   plano y la ficha, como en las grandes ciudades --- */
html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio .w-heroe__in .w-heroe__lado > .w-foto {
  display: block;
  order: 3;
  flex: none;
  position: relative;
  height: clamp(9rem, 13vw, 11.5rem);
  min-height: 0;
  max-height: none;
  margin: 1rem 0 0;
  border: 1px solid var(--linea-2);
  background: linear-gradient(120deg, #123F4B, #1D6577 55%, #2B8EA6);
}

html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio .w-heroe__in .w-heroe__lado > .w-foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1) contrast(1.2) brightness(.95);
  mix-blend-mode: luminosity;
}

/* --- módulos de datos por nivel: en el distrito, la primera cifra (sus
   municipios) en grande; el Land va en banda, la región en tabla y el
   municipio con el CP a todo el ancho --- */
html body.pag-comarca .w-heroe__ficha .w-datos__fila:first-child dd {
  font-family: var(--mono);
  font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.2rem);
  font-weight: 400;
  line-height: 1.05;
  color: var(--cian-luz);
}

/* --- contacto: un solo botón y la columna derecha con foto y ficha --- */
html body.pag-contacto .w-heroe__in .w-heroe__lado > .w-foto {
  display: block;
  flex: none;
  height: clamp(10rem, 16vw, 13rem);
  min-height: 0;
  max-height: none;
}

/* --- portada: texto secundario de las bandas con más contraste --- */
.p-oscura { --fg2: #D3DAE0; }
.p-oscura .p-pasos span { font-size: 1rem; color: #D3DAE0; }
.p-oscura .p-nota { color: var(--hormigon); }
.p-banda figcaption { color: #E4E8EB; }

.p-ruta__rotulo { color: #2A3238; }
.p-ruta span.p-ruta__dato { font-size: 1rem; color: #2A3238; }
.p-ruta code { font-size: .8125rem; color: #00586B; }

/* Länder numerados, como un índice de atlas */
.p-lander { counter-reset: land; }
.p-lander__item { counter-increment: land; }

.p-lander__nombre::before {
  content: counter(land, decimal-leading-zero);
  display: inline-block;
  min-width: 1.9rem;
  font-family: var(--mono);
  font-size: .75rem;
  color: var(--cian-luz);
}

.p-lander__nombre { font-family: var(--serif); font-size: 1.2rem; }

/* ciudades: la distancia manda (cifra grande) y una barra a escala
   (0 – 1800 km) para comparar de un vistazo */
.p-ciudad {
  grid-template-areas:
    "km     km"
    "nombre nombre"
    "land   land"
    "barra  barra";
  gap: .4rem;
}

.p-ciudad__km {
  margin: 0 0 .35rem;
  padding: 0;
  border: 0;
  font-size: clamp(1.5rem, 1.15rem + .9vw, 1.95rem);
  line-height: 1;
  letter-spacing: -.01em;
}

.p-ciudad__barra {
  grid-area: barra;
  display: block;
  height: 3px;
  margin-top: .9rem;
  background: linear-gradient(90deg, var(--cian) calc(var(--d, 0) / 1800 * 100%), rgba(201, 203, 204, .2) 0);
}

@media (max-width: 640px) {
  .p-ciudad {
    grid-template-areas:
      "nombre km"
      "land   land"
      "barra  barra";
    gap: .2rem 1rem;
  }

  .p-ciudad__km { margin: 0; font-size: 1.05rem; }
  .p-ciudad__barra { margin-top: .6rem; }

  html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-plano > .w-plano__nombre:not(:empty) { font-size: 1rem; }
}

/* ==========================================================================
   21. Revisión «diseño 7.4» (tercera): un mapa por nivel con su rótulo,
   km propios en distrito y municipio, fichas en banda, rótulos del
   esquema de ruta fuera de los trazos, portada con más ritmo y contacto
   ========================================================================== */

/* --- un encuadre por nivel sobre el mismo dibujo (centro --cx/--cy en %
   del mapa de 410 × 520, escala --cs sobre el lienzo 4:3):
   · región: el Land entero, atenuado, con la zona de la región resaltada
     alrededor de su sede
   · distrito: más cerca (× 2,2), centrado entre la sede de la región y el
     distrito, con el distrito resaltado
   · municipio: más cerca aún (× 3), centrado en el municipio (ciudades
     sin distrito, con su coordenada) o en la zona de su distrito --- */
body.pag-division {
  --cx: var(--ajx, 50%);
  --cy: var(--ajy, 50%);
  --cs: var(--ajs, 1.6);
  --etq-r: 19%;
}

body.pag-comarca {
  --sede-x: calc((49 + (var(--lo-div, var(--lo-land, 10)) - 6) * 37.75) / 410 * 100%);
  --sede-y: calc((84 + (54 - var(--la-div, var(--la-land, 51))) * 60) / 520 * 100%);
  --cx: calc((var(--pin-x, 50%) + var(--sede-x)) / 2);
  --cy: calc((var(--pin-y, 50%) + var(--sede-y)) / 2);
  --cs: min(calc(var(--ajs, 1.6) * 2.2), 7);
  --etq-r: max(.95rem, calc(var(--cs) * 2.75%));
}

body.pag-municipio {
  --cx: var(--pin-x, 50%);
  --cy: var(--pin-y, 50%);
  --cs: min(calc(var(--ajs, 1.6) * 3), 9);
  --etq-r: max(.95rem, calc(var(--cs) * 2.75%));
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__mapa {
  --ajk: calc(var(--cs) * 1.6911);
  --aj-tam: calc(var(--cs) * 100%) auto;
  --aj-pos: calc((50% - var(--cs) * var(--cx)) / (1 - var(--cs))) calc((50% - var(--ajk) * var(--cy)) / (1 - var(--ajk)));
}

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado :is(.w-plano__pin, .w-plano__paso, .w-plano__etq) {
  left: calc(50% + (var(--pin-x, 50%) - var(--cx)) * var(--cs));
  top: calc(50% + (var(--pin-y, 50%) - var(--cy)) * var(--ajk));
}

html body:is(.pag-comarca, .pag-municipio) .w-heroe__in .w-heroe__lado .w-plano__paso {
  width: max(1.9rem, calc(var(--cs) * 5.5%));
}

/* región: el Land atenuado y la zona de la región (≈ un cuarto del Land)
   en cian, con su sede marcada */
html body.pag-division .w-heroe__in .w-heroe__lado .w-plano__mapa::before { opacity: .5; }

html body.pag-division .w-heroe__in .w-heroe__lado .w-plano__paso {
  display: block;
  width: 38%;
  height: auto;
  aspect-ratio: 1;
  margin: 0;
  translate: -50% -50%;
  border: 1px dashed var(--cian-luz);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(92, 211, 236, .34), rgba(0, 166, 200, .14) 70%);
  box-shadow: 0 0 24px rgba(92, 211, 236, .25);
}

/* ciudades sin distrito: su punto exacto, sin la zona de distrito */
html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio {
  --pin: block;
  --etq-r: 14px;
}

html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio .w-heroe__in .w-heroe__lado .w-plano__paso { display: none; }

/* rótulos del panel según lo que enseña */
body.pag-division .w-heroe__lado > .w-plano { --rotulo: "La región en su Land"; }
body.pag-comarca .w-plano { --rotulo: "El distrito en su región"; }
body.pag-municipio .w-plano { --rotulo: "El municipio en su distrito"; }
html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio .w-plano { --rotulo: "La ciudad en su región"; }

/* nombre del lugar rotulado sobre su marca, dentro del mapa */
.w-plano__etq { display: none; }

html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__lado .w-plano__etq:not(:empty),
body.pag-region .w-plano__etq {
  display: block;
  position: absolute;
  z-index: 3;
  margin-top: calc(-1 * var(--etq-r, 14px) - .3rem);
  translate: -50% -100%;
  padding: .2rem .5rem;
  border-bottom: 2px solid var(--cian-luz);
  background: rgba(23, 27, 30, .88);
  font-family: var(--sans);
  font-size: .8125rem;
  font-weight: 500;
  line-height: 1.3;
  color: var(--hormigon);
  white-space: nowrap;
  pointer-events: none;
}

/* Land: la capital rotulada en el mapa de Alemania (el panel se llama
   «Capital del Land») */
body.pag-region .w-plano__etq {
  left: var(--pin-x, 50%);
  top: var(--pin-y, 50%);
}

body.pag-region .w-plano__etq::before { content: var(--capital, ""); }

html:has(link[rel="canonical"][href*=".com/baden-wurtemberg/"]) { --capital: "Stuttgart"; }
html:has(link[rel="canonical"][href*=".com/baviera/"]) { --capital: "Múnich"; }
html:has(link[rel="canonical"][href*=".com/berlin/"]) { --capital: "Berlín"; }
html:has(link[rel="canonical"][href*=".com/brandeburgo/"]) { --capital: "Potsdam"; }
html:has(link[rel="canonical"][href*=".com/bremen/"]) { --capital: "Bremen"; }
html:has(link[rel="canonical"][href*=".com/hamburgo/"]) { --capital: "Hamburgo"; }
html:has(link[rel="canonical"][href*=".com/hesse/"]) { --capital: "Wiesbaden"; }
html:has(link[rel="canonical"][href*=".com/mecklemburgo-pomerania-occidental/"]) { --capital: "Schwerin"; }
html:has(link[rel="canonical"][href*=".com/baja-sajonia/"]) { --capital: "Hannover"; }
html:has(link[rel="canonical"][href*=".com/renania-del-norte-westfalia/"]) { --capital: "Düsseldorf"; }
html:has(link[rel="canonical"][href*=".com/renania-palatinado/"]) { --capital: "Maguncia"; }
html:has(link[rel="canonical"][href*=".com/sarre/"]) { --capital: "Sarrebruck"; }
html:has(link[rel="canonical"][href*=".com/sajonia/"]) { --capital: "Dresde"; }
html:has(link[rel="canonical"][href*=".com/sajonia-anhalt/"]) { --capital: "Magdeburgo"; }
html:has(link[rel="canonical"][href*=".com/schleswig-holstein/"]) { --capital: "Kiel"; }
html:has(link[rel="canonical"][href*=".com/turingia/"]) { --capital: "Erfurt"; }

/* coordenadas (GeoNames, de arbol.json) de los municipios que no cuelgan
   de un distrito: ciudades con distrito propio y capitales de distrito
   con página directa bajo su región o su Land */
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/stuttgart/"]) { --la: 48.777; --lo: 9.178; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/heilbronn/"]) { --la: 49.142; --lo: 9.223; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/ludwigsburg/"]) { --la: 48.897; --lo: 9.191; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/goppingen/"]) { --la: 48.703; --lo: 9.655; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/boblingen/"]) { --la: 48.68; --lo: 9.02; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/stuttgart/schwabisch-hall/"]) { --la: 49.111; --lo: 9.74; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/karlsruhe/"]) { --la: 49.008; --lo: 8.398; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/heidelberg/"]) { --la: 49.41; --lo: 8.694; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/pforzheim/"]) { --la: 48.892; --lo: 8.716; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/baden-baden/"]) { --la: 48.75; --lo: 8.25; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/rastatt/"]) { --la: 48.857; --lo: 8.196; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/calw/"]) { --la: 48.708; --lo: 8.753; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/karlsruhe/freudenstadt/"]) { --la: 48.465; --lo: 8.418; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/konstanz/"]) { --la: 47.661; --lo: 9.175; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/lorrach/"]) { --la: 47.618; --lo: 7.659; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/tuttlingen/"]) { --la: 47.98; --lo: 8.807; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/emmendingen/"]) { --la: 48.119; --lo: 7.848; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/friburgo/rottweil/"]) { --la: 48.168; --lo: 8.627; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/ulm/"]) { --la: 48.398; --lo: 9.992; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/reutlingen/"]) { --la: 48.491; --lo: 9.205; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/tubingen/"]) { --la: 48.523; --lo: 9.052; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/ravensburg/"]) { --la: 47.782; --lo: 9.618; }
html:has(link[rel="canonical"][href$=".com/baden-wurtemberg/tubinga/sigmaringen/"]) { --la: 48.083; --lo: 9.217; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/ingolstadt/"]) { --la: 48.767; --lo: 11.415; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/rosenheim-alta-baviera/"]) { --la: 47.855; --lo: 12.123; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/freising/"]) { --la: 48.394; --lo: 11.733; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/dachau/"]) { --la: 48.262; --lo: 11.445; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/furstenfeldbruck-alta-baviera/"]) { --la: 48.183; --lo: 11.246; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/erding/"]) { --la: 48.3; --lo: 11.908; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/landsberg-am-lech-alta-baviera/"]) { --la: 48.053; --lo: 10.869; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/garmisch-partenkirchen/"]) { --la: 47.5; --lo: 11.1; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/pfaffenhofen-an-der-ilm/"]) { --la: 48.528; --lo: 11.502; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/starnberg/"]) { --la: 48.01; --lo: 11.333; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/muhldorf-am-inn/"]) { --la: 48.25; --lo: 12.522; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/traunstein/"]) { --la: 47.87; --lo: 12.639; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/eichstatt/"]) { --la: 48.897; --lo: 11.172; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/altotting/"]) { --la: 48.226; --lo: 12.659; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/ebersberg/"]) { --la: 48.086; --lo: 11.975; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-baviera/miesbach/"]) { --la: 47.786; --lo: 11.837; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/landshut/"]) { --la: 48.536; --lo: 12.152; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/passau/"]) { --la: 48.573; --lo: 13.451; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/straubing/"]) { --la: 48.884; --lo: 12.58; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/deggendorf/"]) { --la: 48.845; --lo: 12.958; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/kelheim/"]) { --la: 48.909; --lo: 11.876; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-baviera/regen/"]) { --la: 48.968; --lo: 13.128; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/amberg-alto-palatinado/"]) { --la: 49.445; --lo: 11.859; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/weiden-in-der-oberpfalz/"]) { --la: 49.674; --lo: 12.166; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/neumarkt-in-der-oberpfalz/"]) { --la: 49.28; --lo: 11.458; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/schwandorf/"]) { --la: 49.324; --lo: 12.099; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/cham/"]) { --la: 49.214; --lo: 12.658; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/tirschenreuth/"]) { --la: 49.879; --lo: 12.337; }
html:has(link[rel="canonical"][href$=".com/baviera/alto-palatinado/neustadt-an-der-waldnaab/"]) { --la: 49.731; --lo: 12.173; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/bamberg/"]) { --la: 49.893; --lo: 10.891; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/bayreuth/"]) { --la: 49.946; --lo: 11.576; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/hof-alta-franconia/"]) { --la: 50.321; --lo: 11.917; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/coburg/"]) { --la: 50.259; --lo: 10.958; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/forchheim-alta-franconia/"]) { --la: 49.72; --lo: 11.058; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/kulmbach/"]) { --la: 50.105; --lo: 11.443; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/lichtenfels-alta-franconia/"]) { --la: 50.146; --lo: 11.063; }
html:has(link[rel="canonical"][href$=".com/baviera/alta-franconia/kronach/"]) { --la: 50.242; --lo: 11.326; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/furth-franconia-media/"]) { --la: 49.471; --lo: 10.997; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/erlangen/"]) { --la: 49.589; --lo: 11.01; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/schwabach/"]) { --la: 49.332; --lo: 11.03; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/ansbach/"]) { --la: 49.301; --lo: 10.569; }
html:has(link[rel="canonical"][href$=".com/baviera/franconia-media/roth-franconia-media/"]) { --la: 49.26; --lo: 11.146; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/wurzburg/"]) { --la: 49.797; --lo: 9.934; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/aschaffenburg/"]) { --la: 49.976; --lo: 9.148; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/schweinfurt/"]) { --la: 50.044; --lo: 10.227; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/bad-kissingen/"]) { --la: 50.201; --lo: 10.076; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/kitzingen/"]) { --la: 49.736; --lo: 10.16; }
html:has(link[rel="canonical"][href$=".com/baviera/baja-franconia/miltenberg/"]) { --la: 49.704; --lo: 9.261; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/neu-ulm/"]) { --la: 48.393; --lo: 10.011; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/kaufbeuren/"]) { --la: 47.894; --lo: 10.632; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/memmingen/"]) { --la: 47.983; --lo: 10.173; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/lindau-suabia/"]) { --la: 47.578; --lo: 9.692; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/gunzburg/"]) { --la: 48.453; --lo: 10.262; }
html:has(link[rel="canonical"][href$=".com/baviera/suabia/dillingen-an-der-donau/"]) { --la: 48.578; --lo: 10.51; }
html:has(link[rel="canonical"][href$=".com/brandeburgo/potsdam/"]) { --la: 52.399; --lo: 13.066; }
html:has(link[rel="canonical"][href$=".com/brandeburgo/cottbus/"]) { --la: 51.756; --lo: 14.32; }
html:has(link[rel="canonical"][href$=".com/brandeburgo/brandenburg-an-der-havel/"]) { --la: 52.419; --lo: 12.523; }
html:has(link[rel="canonical"][href$=".com/bremen/bremen/"]) { --la: 53.089; --lo: 8.791; }
html:has(link[rel="canonical"][href$=".com/bremen/bremerhaven/"]) { --la: 53.555; --lo: 8.593; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/darmstadt/"]) { --la: 49.872; --lo: 8.648; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/offenbach-am-main/"]) { --la: 50.105; --lo: 8.762; }
html:has(link[rel="canonical"][href$=".com/hesse/darmstadt/gross-gerau/"]) { --la: 49.924; --lo: 8.494; }
html:has(link[rel="canonical"][href$=".com/hesse/giessen/giessen/"]) { --la: 50.585; --lo: 8.674; }
html:has(link[rel="canonical"][href$=".com/hesse/kassel/kassel/"]) { --la: 51.317; --lo: 9.491; }
html:has(link[rel="canonical"][href$=".com/hesse/kassel/fulda/"]) { --la: 50.552; --lo: 9.683; }
html:has(link[rel="canonical"][href$=".com/mecklemburgo-pomerania-occidental/schwerin-mecklemburgo-pomerania-occidental/"]) { --la: 53.631; --lo: 11.409; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/oldenburg/"]) { --la: 53.141; --lo: 8.217; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/osnabruck/"]) { --la: 52.274; --lo: 8.052; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/wolfsburg/"]) { --la: 52.424; --lo: 10.781; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/gottingen/"]) { --la: 51.513; --lo: 9.954; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/salzgitter/"]) { --la: 52.122; --lo: 10.376; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/hildesheim/"]) { --la: 52.153; --lo: 9.956; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/delmenhorst/"]) { --la: 53.051; --lo: 8.629; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/wilhelmshaven/"]) { --la: 53.523; --lo: 8.108; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/luneburg/"]) { --la: 53.233; --lo: 10.408; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/celle/"]) { --la: 52.618; --lo: 10.085; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/wolfenbuttel/"]) { --la: 52.158; --lo: 10.558; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/peine/"]) { --la: 52.323; --lo: 10.231; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/cuxhaven/"]) { --la: 53.858; --lo: 8.709; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/emden/"]) { --la: 53.37; --lo: 7.203; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/goslar/"]) { --la: 51.906; --lo: 10.429; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/gifhorn/"]) { --la: 52.493; --lo: 10.534; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/aurich/"]) { --la: 53.472; --lo: 7.478; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/cloppenburg/"]) { --la: 52.848; --lo: 8.046; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/vechta/"]) { --la: 52.727; --lo: 8.285; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/uelzen/"]) { --la: 52.968; --lo: 10.562; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/northeim/"]) { --la: 51.703; --lo: 9.989; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/helmstedt/"]) { --la: 52.232; --lo: 11.002; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/rotenburg-wumme/"]) { --la: 53.12; --lo: 9.424; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/wittmund/"]) { --la: 53.591; --lo: 7.765; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/holzminden/"]) { --la: 51.82; --lo: 9.465; }
html:has(link[rel="canonical"][href$=".com/baja-sajonia/diepholz/"]) { --la: 52.608; --lo: 8.366; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/dusseldorf/"]) { --la: 51.225; --lo: 6.774; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/mulheim-an-der-ruhr/"]) { --la: 51.427; --lo: 6.881; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/solingen/"]) { --la: 51.173; --lo: 7.094; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/remscheid/"]) { --la: 51.18; --lo: 7.187; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/viersen/"]) { --la: 51.256; --lo: 6.392; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/wesel/"]) { --la: 51.657; --lo: 6.622; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/dusseldorf/mettmann/"]) { --la: 51.256; --lo: 6.971; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/leverkusen/"]) { --la: 51.031; --lo: 6.99; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/duren/"]) { --la: 50.801; --lo: 6.479; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/euskirchen/"]) { --la: 50.661; --lo: 6.794; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/colonia/heinsberg/"]) { --la: 51.066; --lo: 6.106; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/munster-munster/"]) { --la: 51.96; --lo: 7.631; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/bottrop/"]) { --la: 51.523; --lo: 6.925; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/recklinghausen/"]) { --la: 51.613; --lo: 7.196; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/borken/"]) { --la: 51.851; --lo: 6.866; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/coesfeld/"]) { --la: 51.931; --lo: 7.171; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/warendorf/"]) { --la: 51.948; --lo: 7.991; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/munster/steinfurt/"]) { --la: 52.139; --lo: 7.364; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/paderborn/"]) { --la: 51.714; --lo: 8.755; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/gutersloh/"]) { --la: 51.907; --lo: 8.377; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/herford/"]) { --la: 52.101; --lo: 8.672; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/detmold/hoxter/"]) { --la: 51.796; --lo: 9.397; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/hagen-arnsberg/"]) { --la: 51.361; --lo: 7.479; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/hamm-arnsberg/"]) { --la: 51.68; --lo: 7.813; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/herne/"]) { --la: 51.543; --lo: 7.219; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/unna/"]) { --la: 51.53; --lo: 7.676; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/soest/"]) { --la: 51.56; --lo: 8.089; }
html:has(link[rel="canonical"][href$=".com/renania-del-norte-westfalia/arnsberg/olpe/"]) { --la: 50.998; --lo: 7.838; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/koblenz/"]) { --la: 50.357; --lo: 7.593; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/trier/"]) { --la: 49.754; --lo: 6.639; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/kaiserslautern/"]) { --la: 49.45; --lo: 7.795; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/worms/"]) { --la: 49.633; --lo: 8.362; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/neuwied/"]) { --la: 50.433; --lo: 7.463; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/bad-kreuznach/"]) { --la: 49.848; --lo: 7.838; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/neustadt-an-der-weinstrasse/"]) { --la: 49.347; --lo: 8.149; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/speyer/"]) { --la: 49.323; --lo: 8.428; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/landau-in-der-pfalz/"]) { --la: 49.194; --lo: 8.099; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/frankenthal-pfalz/"]) { --la: 49.539; --lo: 8.354; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/pirmasens/"]) { --la: 49.215; --lo: 7.629; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/zweibrucken/"]) { --la: 49.249; --lo: 7.365; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/germersheim/"]) { --la: 49.209; --lo: 8.359; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/bad-durkheim/"]) { --la: 49.456; --lo: 8.081; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/birkenfeld-renania-palatinado/"]) { --la: 49.639; --lo: 7.163; }
html:has(link[rel="canonical"][href$=".com/renania-palatinado/kusel/"]) { --la: 49.538; --lo: 7.402; }
html:has(link[rel="canonical"][href$=".com/sarre/neunkirchen-sarre/"]) { --la: 49.345; --lo: 7.18; }
html:has(link[rel="canonical"][href$=".com/sarre/saarlouis/"]) { --la: 49.307; --lo: 6.76; }
html:has(link[rel="canonical"][href$=".com/sajonia/zwickau/"]) { --la: 50.711; --lo: 12.493; }
html:has(link[rel="canonical"][href$=".com/sajonia/gorlitz/"]) { --la: 51.15; --lo: 14.983; }
html:has(link[rel="canonical"][href$=".com/sajonia/bautzen/"]) { --la: 51.183; --lo: 14.429; }
html:has(link[rel="canonical"][href$=".com/sajonia/meissen/"]) { --la: 51.165; --lo: 13.486; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/wittenberg/"]) { --la: 51.874; --lo: 12.606; }
html:has(link[rel="canonical"][href$=".com/sajonia-anhalt/stendal/"]) { --la: 52.605; --lo: 11.86; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/flensburg/"]) { --la: 54.786; --lo: 9.431; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/neumunster/"]) { --la: 54.073; --lo: 9.983; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/pinneberg/"]) { --la: 53.659; --lo: 9.801; }
html:has(link[rel="canonical"][href$=".com/schleswig-holstein/plon/"]) { --la: 54.158; --lo: 10.413; }
html:has(link[rel="canonical"][href$=".com/turingia/jena/"]) { --la: 50.933; --lo: 11.587; }
html:has(link[rel="canonical"][href$=".com/turingia/gera/"]) { --la: 50.878; --lo: 12.082; }
html:has(link[rel="canonical"][href$=".com/turingia/weimar/"]) { --la: 50.98; --lo: 11.326; }
html:has(link[rel="canonical"][href$=".com/turingia/gotha/"]) { --la: 50.948; --lo: 10.702; }
html:has(link[rel="canonical"][href$=".com/turingia/nordhausen/"]) { --la: 51.492; --lo: 10.795; }
html:has(link[rel="canonical"][href$=".com/turingia/suhl/"]) { --la: 50.608; --lo: 10.696; }
html:has(link[rel="canonical"][href$=".com/turingia/sonneberg/"]) { --la: 50.356; --lo: 11.169; }
html:has(link[rel="canonical"][href$=".com/turingia/greiz/"]) { --la: 50.658; --lo: 12.191; }
html:has(link[rel="canonical"][href$=".com/turingia/sommerda/"]) { --la: 51.15; --lo: 11.1; }
html:has(link[rel="canonical"][href$=".com/turingia/hildburghausen/"]) { --la: 50.427; --lo: 10.726; }

/* --- distancia propia en distrito y municipio: la cifra de la sede (la
   misma del Land y la región) escalada por la distancia real desde La
   Jonquera (42,42 N · 2,87 E) hasta el centro del distrito o el
   municipio, redondeada a 5 km; el pie dice hasta dónde se mide --- */
@property --kmc {
  syntax: "<integer>";
  inherits: true;
  initial-value: 0;
}

body:is(.pag-comarca, .pag-municipio) {
  --kla: var(--la, var(--la-div, var(--la-land, 51)));
  --klo: var(--lo, var(--lo-div, var(--lo-land, 10)));
  --sla: var(--la-div, var(--la-land, 51));
  --slo: var(--lo-div, var(--lo-land, 10));
  --kmc: round(nearest, calc(var(--kmr, 1000) * sqrt(pow(var(--kla) - 42.42, 2) + pow((var(--klo) - 2.87) * cos((var(--kla) + 42.42) * .5deg), 2)) / sqrt(pow(var(--sla) - 42.42, 2) + pow((var(--slo) - 2.87) * cos((var(--sla) + 42.42) * .5deg), 2))), 5);
  --km: var(--kmc);
}

body.pag-comarca { --dato-pie: "por carretera desde La Jonquera hasta el centro del distrito (estimación)"; }
body.pag-municipio { --dato-pie: "por carretera desde La Jonquera hasta el centro de su distrito (estimación)"; }
html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio { --dato-pie: "por carretera desde La Jonquera hasta el municipio (estimación)"; }

@media (min-width: 901px) {
  /* --- municipio: plano a la derecha del titular y la ficha en banda a
     todo el ancho (la columna derecha ya no baja 300-400 px más que la
     izquierda); la foto de las ciudades sin distrito, en franja --- */
  html body.pag-municipio .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "franja franja"
      "coti   coti";
  }

  html body.pag-municipio .w-heroe__in:has(.w-datos) > .w-heroe__lado { display: contents; }

  html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  html body.pag-municipio .w-heroe__in .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
  }

  html:not(:has(link[rel="canonical"][href*="/distrito-"])) body.pag-municipio .w-heroe__in .w-heroe__lado > .w-foto {
    grid-area: franja;
    height: clamp(9rem, 14vw, 12rem);
    margin-top: 1rem;
  }

  /* --- fichas en banda: tres columnas por fila (Múnich partía sus
     valores en dos líneas con cinco columnas); el último dato suelto
     ocupa el hueco que queda --- */
  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-columns: auto;
    column-gap: 0;
    padding: 0;
  }

  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n) {
    grid-column: auto;
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: .4rem;
    padding: 1.1rem 1.2rem 1.2rem;
    border-top: 0;
    border-left: 1px solid var(--linea);
  }

  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(3n+1) { border-left: 0; }
  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n+4) { border-top: 1px solid var(--linea); }
  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(3n+2):last-child { grid-column: span 2; }
  html body:is(.pag-municipio, .pag-ciudad, [class*="origen"]) .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(3n+1):last-child { grid-column: 1 / -1; }

  /* --- origen: el esquema de ruta junto al titular y las etapas en banda
     bajo él (deshace la columna plano + ficha de la sección 19) --- */
  html body[class*="origen"] .w-heroe__in:has(.w-datos) {
    grid-template-rows: auto auto auto auto auto auto auto 1fr auto auto;
    grid-template-areas:
      "migas  migas"
      "ante   lado"
      "titulo lado"
      "entr   lado"
      "acc    lado"
      "mas1   lado"
      "mas2   lado"
      "coord  lado"
      "ficha  ficha"
      "coti   coti";
  }

  html body[class*="origen"] .w-heroe__in:has(.w-datos) > .w-heroe__lado { display: contents; }

  html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-plano {
    grid-area: lado;
    align-self: start;
    margin-top: .25rem;
  }

  html body[class*="origen"] .w-heroe__in .w-heroe__lado > .w-heroe__ficha {
    grid-area: ficha;
    align-self: start;
    margin-top: clamp(2rem, 3.5vw, 2.75rem);
    border-top: 1px solid var(--linea-2);
  }

  /* etapas en fila: el número arriba de cada columna, sin la línea
     vertical entre etapas */
  html body[class*="origen"] .w-heroe .w-heroe__in .w-heroe__ficha .w-datos__fila:nth-child(n) { padding-left: 3.4rem; }
  html body[class*="origen"] .w-heroe__ficha .w-datos__fila::before { left: 1.2rem; top: 1.05rem; }
  html body[class*="origen"] .w-heroe__ficha .w-datos__fila:not(:last-child)::after { display: none; }
}

/* --- portada: héroe con el texto sobre velo casi opaco y la foto
   desplazada a la derecha (el camión ya no queda detrás del H1) --- */
@media (min-width: 901px) {
  .p-portada .w-heroe__fondo img {
    transform: translateX(7%) scale(1.14);
    transform-origin: center;
  }

  .p-portada .w-heroe__fondo::after {
    background:
      linear-gradient(var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(90deg, var(--rejilla) 1px, transparent 1px) -1px -1px / 96px 96px,
      linear-gradient(90deg, rgba(23, 27, 30, .97) 0%, rgba(23, 27, 30, .94) 46%, rgba(23, 27, 30, .66) 62%, rgba(23, 27, 30, .2) 100%);
  }
}

.p-portada .w-heroe__in > :is(h1, .w-entradilla) { text-shadow: 0 1px 14px rgba(23, 27, 30, .85); }

/* destinos: las grandes ciudades salen de la banda oscura a una de
   hormigón claro (cambia el ritmo de la sección más larga) */
.p-seccion#destinos { padding-bottom: 0; }

.p-in--destinos > .p-ciudades {
  --linea: rgba(28, 34, 40, .16);
  --linea-2: rgba(28, 34, 40, .3);
  margin-top: clamp(3.5rem, 7vw, 5rem);
  padding: clamp(3rem, 6vw, 4.5rem) 0 clamp(4rem, 8vw, 6rem);
  border-top: 0;
  border-image: linear-gradient(var(--hormigon-real), var(--hormigon-real)) fill 0 / 0 / 0 100vmax;
}

.p-in--destinos > .p-ciudades .p-ciudades__cab h3 { color: var(--grafito); }
.p-in--destinos > .p-ciudades .p-ciudades__cab p { color: #3A444B; }
.p-in--destinos > .p-ciudades .p-ciudad { border-color: transparent; box-shadow: 0 16px 30px -24px rgba(28, 34, 40, .7); }

/* Länder: lista más aireada, menos «muro de enlaces» */
.p-lander { column-gap: clamp(2.5rem, 5vw, 4rem); }
.p-lander__item { padding: 1.2rem 0 1.15rem; row-gap: .4rem; }
.p-lander__nombre { font-size: 1.3rem; }
.p-lander__mas ul { columns: 2 12rem; column-gap: 2rem; }
.p-lander__mas li a { padding: .3rem 0; }

/* banda del almacén: foto clara y pie en hormigón, entre la banda oscura
   de destinos y las preguntas */
.p-banda--almacen img { object-position: center 62%; }

.p-banda--almacen figcaption {
  background: var(--hormigon-real);
  color: var(--grafito);
}

/* --- contacto: sin foto de banco; el panel de atención se centra con el
   titular y el héroe no deja hueco bajo el botón --- */
html body.pag-contacto .w-heroe__in .w-heroe__lado > .w-foto { display: none; }

@media (min-width: 901px) {
  html body.pag-contacto .w-heroe__in { align-items: center; }
  html body.pag-contacto .w-heroe__in > .w-heroe__lado { align-self: center; }
}

/* --- móvil (390 px): ningún dato ni rótulo desborda --- */
@media (max-width: 480px) {
  .w-heroe__ficha .w-datos :is(dt, dd) { overflow-wrap: anywhere; }
  .w-plano { max-width: 100%; }

  html body:is(.pag-division, .pag-comarca, .pag-municipio) .w-heroe__lado .w-plano__etq:not(:empty),
  body.pag-region .w-plano__etq {
    max-width: 10rem;
    font-size: .75rem;
    white-space: normal;
    text-align: center;
  }

  .w-heroe__km::after { display: block; }
}
