/* Lurra. El aspecto es el de una hoja de mapa topográfico: papel blanco, tinta negra, líneas finas
   y los colores de la cartografía (siena de las curvas de nivel, azul del agua, verde del monte,
   rojo de la parcela señalada). Tipografías propias en vendor/fuentes/. */
/* Cada subconjunto solo se descarga si la página tiene letras suyas (unicode-range). */
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url(vendor/fuentes/barlow-condensed-latin-600-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url(vendor/fuentes/barlow-condensed-latin-700-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url(vendor/fuentes/barlow-condensed-latin-ext-600-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url(vendor/fuentes/barlow-condensed-latin-ext-700-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url(vendor/fuentes/barlow-condensed-vietnamese-600-normal.woff2) format("woff2"); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url(vendor/fuentes/barlow-condensed-vietnamese-700-normal.woff2) format("woff2"); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url(vendor/fuentes/sofia-sans-condensed-cyrillic-wght-normal.woff2) format("woff2"); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url(vendor/fuentes/sofia-sans-condensed-cyrillic-wght-normal.woff2) format("woff2"); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url(vendor/fuentes/sofia-sans-condensed-greek-wght-normal.woff2) format("woff2"); unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url(vendor/fuentes/sofia-sans-condensed-greek-wght-normal.woff2) format("woff2"); unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(vendor/fuentes/source-sans-3-latin-wght-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(vendor/fuentes/source-sans-3-latin-ext-wght-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(vendor/fuentes/source-sans-3-vietnamese-wght-normal.woff2) format("woff2"); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(vendor/fuentes/source-sans-3-cyrillic-wght-normal.woff2) format("woff2"); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(vendor/fuentes/source-sans-3-greek-wght-normal.woff2) format("woff2"); unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-latin-400-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-latin-500-normal.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-latin-ext-400-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-latin-ext-500-normal.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-vietnamese-400-normal.woff2) format("woff2"); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-vietnamese-500-normal.woff2) format("woff2"); unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-cyrillic-400-normal.woff2) format("woff2"); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url(vendor/fuentes/ibm-plex-mono-cyrillic-500-normal.woff2) format("woff2"); unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
:root {
  color-scheme: light;
  --tinta: #1a1a17;
  --tinta-2: #43453e;
  --tinta-3: #5f6259;
  --papel: #ffffff;
  --papel-2: #f2f4ee;
  --regla: #c9cdc4;
  --regla-suave: #e3e6df;
  --cuadricula: #dfe7e2;
  --rojo: #c8321e;
  --siena: #a85f1f;
  --azul: #256fb0;
  --verde: #1f6b45;
  --verde-oscuro: #17503a;
  --verde-fondo: #e3f1e8;
  --franja: #eef2ee;
  --error: #b3261e;
  --ambar: #9a6700;
  --ambar-fondo: #fff4d6;
  --rojo-fondo: #fde7e4;
  --titulos: "Barlow Condensed", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --texto: "Source Sans 3", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, "Courier New", monospace;
  --ancho: 74rem;
  --lado: 1.25rem;
  --linea: 1.5px solid var(--tinta);
  /* Papel milimetrado: una cuadrícula fina con una línea más marcada cada cinco. */
  --milimetrado:
    linear-gradient(var(--cuadricula) 1px, transparent 1px) 0 0 / 100% 60px,
    linear-gradient(90deg, var(--cuadricula) 1px, transparent 1px) 0 0 / 60px 100%,
    linear-gradient(#edf2ee 1px, transparent 1px) 0 0 / 100% 12px,
    linear-gradient(90deg, #edf2ee 1px, transparent 1px) 0 0 / 12px 100%,
    #fbfcfa;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; font: 1.125rem/1.55 var(--texto); color: var(--tinta); background: var(--papel); }
h1, h2, h3 { font-family: var(--titulos); font-weight: 700; line-height: 1; margin: 0; overflow-wrap: break-word; hyphens: auto; hyphenate-limit-chars: 12 5 5; }
h1 { font-size: clamp(2.7rem, 5.6vw, 4.5rem); line-height: .96; }
h2 { font-size: clamp(2.1rem, 3.8vw, 3rem); }
h3 { font-size: 1.5rem; font-weight: 600; line-height: 1.08; }
p { margin: 0; }
a { color: var(--tinta); text-underline-offset: .18em; text-decoration-thickness: 1.5px; }
a:hover { color: var(--rojo); }
img, svg { max-width: 100%; }
:focus-visible { outline: 3px solid var(--azul); outline-offset: 3px; }
.oculto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.tenue { color: var(--tinta-3); }
[hidden] { display: none !important; }
.ico { width: 1.25em; height: 1.25em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.salto { position: absolute; inset-inline-start: -999px; top: 0; background: var(--tinta); color: #fff; padding: .6rem 1rem; font-weight: 600; }
.salto:focus { inset-inline-start: 1rem; top: 0; z-index: 2000; }

/* Anchos: todo lo que va centrado comparte el mismo margen lateral. */
.portada, .zona-informe > *, .bloque > *, .pie > *, .origen__dentro, .cima__coords { width: min(100% - 2 * var(--lado), var(--ancho)); margin-inline: auto; }

/* ---------- cabecera: la franja de título de la hoja */
.cabecera {
  position: absolute; top: 0; left: 0; right: 0; z-index: 2; height: 4.4rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-inline: max(var(--lado), calc((100% - var(--ancho)) / 2));
  background: #fff; border-bottom: var(--linea);
}
.marca { display: inline-flex; align-items: center; gap: .6rem; font: 700 1.9rem/1 var(--titulos); letter-spacing: .05em; text-transform: uppercase; color: var(--tinta); text-decoration: none; }
.marca img { width: 2.1rem; height: 2.1rem; display: block; }
.marca:hover { color: var(--tinta); }
.cabecera nav { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem 1.7rem; font: 600 1.22rem/1 var(--titulos); letter-spacing: .04em; text-transform: uppercase; }
.cabecera nav a { color: var(--tinta); text-decoration: none; padding: .35rem 0; border-bottom: 2px solid transparent; }
.cabecera nav a:hover { border-bottom-color: var(--rojo); color: var(--tinta); }
/* Menú de idiomas */
.idiomas { position: relative; }
.idiomas summary { display: inline-flex; align-items: center; gap: .4rem; cursor: pointer; list-style: none; font: 500 .85rem/1 var(--mono); letter-spacing: .06em; border: 1.5px solid var(--tinta); padding: .38rem .6rem; }
.idiomas summary::-webkit-details-marker { display: none; }
.idiomas summary .ico { width: 1.05rem; height: 1.05rem; }
.idiomas summary:hover, .idiomas[open] summary { background: var(--tinta); color: #fff; }
.idiomas ul {
  position: absolute; inset-inline-end: 0; top: calc(100% + .45rem); z-index: 1200; margin: 0; padding: .5rem; list-style: none;
  width: min(34rem, 100vw - 2 * var(--lado)); max-height: min(70vh, 30rem); overflow-y: auto;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); gap: 0 .3rem;
  background: #fff; border: var(--linea); box-shadow: 0 0 0 6px rgba(255, 255, 255, .8);
}
.cabecera .idiomas a { display: block; font: 400 1rem/1.25 var(--texto); letter-spacing: 0; text-transform: none; padding: .42rem .6rem; border: 0; }
.cabecera .idiomas a:hover { background: var(--papel-2); color: var(--tinta); }
.cabecera .idiomas a[aria-current] { background: var(--tinta); color: #fff; font-weight: 600; }
/* Aviso de que la página existe en el idioma del navegador */
.aviso-idioma { display: flex; align-items: center; justify-content: center; gap: .8rem; background: var(--tinta); color: #fff; padding: .45rem var(--lado); font-size: 1rem; }
.aviso-idioma a { color: #fff; font-weight: 600; }
.aviso-idioma a:hover { color: #fff; text-decoration-thickness: 2.5px; }
.aviso-idioma button { border: 0; background: none; color: #fff; font: inherit; font-size: 1.3rem; line-height: 1; cursor: pointer; padding: 0 .3rem; }
.aviso-idioma :focus-visible { outline-color: #fff; }

.boton {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border: 1.5px solid var(--tinta); cursor: pointer;
  background: var(--tinta); color: #fff; text-decoration: none; border-radius: 0;
  font: 600 1.3rem/1 var(--titulos); letter-spacing: .05em; text-transform: uppercase; padding: .85rem 1.4rem;
  transition: background-color .12s, border-color .12s, color .12s;
}
.boton:hover { background: var(--rojo); border-color: var(--rojo); color: #fff; }
.boton:active { transform: translateY(1px); }
.boton:disabled { opacity: .5; cursor: default; }
.boton--secundario { background: #fff; color: var(--tinta); }
.boton--secundario:hover { background: var(--tinta); border-color: var(--tinta); color: #fff; }
.boton--pequeno { padding: .5rem .8rem; font-size: 1.08rem; }
.boton--claro { background: #fff; border-color: #fff; color: var(--tinta); }
.boton--claro:hover { background: var(--rojo); border-color: var(--rojo); color: #fff; }
@media (prefers-reduced-motion: reduce) { .boton { transition: none; } }

/* ---------- cima: el mapa, con el título a un lado y el buscador como una cartela */
.cima {
  position: relative; padding-top: 4.4rem; border-bottom: var(--linea);
  background:
    linear-gradient(96deg, #fff 0%, #fff 40%, rgba(255, 255, 255, .82) 49%, rgba(255, 255, 255, .25) 60%, rgba(255, 255, 255, 0) 70%),
    #fff url(img/mapa.svg) center / cover no-repeat;
}
.portada {
  display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  gap: clamp(1.8rem, 4vw, 4rem); align-items: start;
  padding-block: clamp(1.6rem, 4.5vw, 3.4rem) clamp(3.6rem, 8vw, 6.5rem);
}
.portada h1 em { font-style: normal; color: var(--rojo); }
.entrada { font-size: 1.26rem; line-height: 1.5; color: var(--tinta-2); margin-top: 1.3rem; max-width: 32em; }
.avales { display: flex; align-items: center; gap: 1.1rem; margin-top: 1.6rem; }
.avales p { font: 500 .86rem/1.5 var(--mono); letter-spacing: .02em; color: var(--tinta-2); max-width: 20em; }
/* Sello de caucho: tinta roja, algo girado y con la tinta irregular. */
.sello { flex: none; display: inline-block; color: var(--rojo); border: 4px solid; border-radius: 7px; padding: 4px; transform: rotate(-6deg); filter: url(#tinta); text-align: center; text-transform: uppercase; font-family: var(--titulos); }
.sello > span { display: grid; justify-items: center; gap: .1rem; border: 1.5px solid; border-radius: 3px; padding: .3rem .95rem .4rem; }
.sello b { font-weight: 700; font-size: 2.9rem; line-height: 1; letter-spacing: .06em; white-space: nowrap; }
.sello i { font-style: normal; font-weight: 700; font-size: 1.02rem; line-height: 1.1; letter-spacing: .13em; max-width: 13em; }
.filtros { position: absolute; width: 0; height: 0; overflow: hidden; }
/* Coordenadas al pie del mapa, como en el marco de una hoja. */
.cima__coords { position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; font: 400 .7rem/1 var(--mono); color: var(--tinta-2); pointer-events: none; }
.cima__coords span { position: relative; padding: 0 0 .35rem .3rem; }
.cima__coords span::before { content: ""; position: absolute; left: 0; bottom: 0; height: .85rem; border-left: 1px solid var(--tinta); }
/* Norte y escala gráfica, en la esquina del mapa. */
.cima__escala { position: absolute; inset-inline-end: max(var(--lado), calc((100% - var(--ancho)) / 2)); bottom: 1.9rem; width: 11.5rem; height: auto; color: var(--tinta); pointer-events: none; }
.cima__escala text { font: 500 9px var(--mono); fill: currentColor; }

.herramienta { background: #fff; color: var(--tinta); border: var(--linea); box-shadow: 0 0 0 6px rgba(255, 255, 255, .8); }
.pestanas { display: flex; border-bottom: var(--linea); }
.pestanas button {
  flex: 1; border: 0; background: #fff; cursor: pointer; color: var(--tinta); border-radius: 0;
  font: 600 1.14rem/1.05 var(--titulos); letter-spacing: .03em; text-transform: uppercase; padding: .85rem .3rem; overflow-wrap: anywhere; hyphens: auto;
}
.pestanas button + button { border-inline-start: var(--linea); }
.pestanas button:hover { background: var(--papel-2); }
.pestanas button[aria-selected="true"] { background: var(--tinta); color: #fff; }
.pestanas button:focus-visible { outline-offset: -5px; outline-color: #7db6ea; }
[role="tabpanel"] { padding: 1.4rem; display: grid; gap: .8rem; }
form { display: grid; gap: .55rem; margin: 0; }
label { font-weight: 600; }
#form-ref > label { font: 500 .8rem/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-2); }
.fila-campo { display: flex; gap: .6rem; flex-wrap: wrap; }
.fila-campo input { flex: 1 1 14rem; }
input[type="text"], input[type="search"], input:not([type]) {
  font: inherit; color: var(--tinta); background: #fff; border: 1.5px solid var(--tinta);
  border-radius: 0; padding: .72rem .9rem; min-width: 0;
}
input::placeholder { color: #6a6d64; }
input:focus-visible { outline: 3px solid #7db6ea; outline-offset: 0; border-color: var(--azul); }
input[aria-invalid="true"] { border-color: var(--error); }
input[type="radio"], input[type="checkbox"] { accent-color: var(--tinta); }
#ref { text-transform: uppercase; font: 500 1.15rem/1.3 var(--mono); letter-spacing: .03em; }
.ayuda { font-size: .98rem; color: var(--tinta-3); }
.estado { font-size: 1.02rem; color: var(--verde-oscuro); font-weight: 600; }
.error { font-size: 1.02rem; color: var(--error); font-weight: 600; }
.error--bloque { background: var(--rojo-fondo); border-inline-start: 4px solid var(--error); padding: .9rem 1rem; margin-block: 1rem; }
.ejemplos { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .5rem; margin-top: .35rem; padding-top: .9rem; border-top: 1px dashed var(--tinta-3); }
.ejemplos > span { font: 500 .8rem/1.2 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--tinta-2); margin-inline-end: .3rem; }
.chip {
  display: inline-flex; align-items: center; gap: .45rem; cursor: pointer; font: 600 .98rem/1.2 var(--texto); text-align: start;
  color: var(--tinta); background: #fff; border: 1px solid var(--tinta); border-radius: 0; padding: .36rem .7rem;
}
.chip:hover { background: var(--tinta); color: #fff; }
.chip .punto { width: .65rem; height: .65rem; border-radius: 50%; flex: none; box-shadow: 0 0 0 1.5px #fff; }
.chip .punto--rojo { background: var(--error); }
.chip .punto--ambar { background: #d19a00; }
.resultados { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; }
.resultados button { width: 100%; text-align: start; border: 1px solid var(--tinta-3); background: #fff; border-radius: 0; padding: .5rem .7rem; font: inherit; font-size: .97rem; cursor: pointer; }
.resultados button:hover { background: var(--papel-2); }

.mapa-vivo { height: min(62vh, 30rem); min-height: 20rem; border: 1px solid var(--tinta); background: #e9ece8; z-index: 0; }
.mapa-vivo.leaflet-container { cursor: crosshair; font: inherit; font-size: .8rem; }
.mapa-controles { display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; align-items: center; justify-content: space-between; font-size: .98rem; }
.mapa-controles fieldset { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem 1rem; }
.mapa-controles label { font-weight: 400; }
.botones { display: flex; flex-wrap: wrap; gap: .4rem; }
.subir { position: relative; overflow: hidden; }
.subir input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.subir:focus-within { outline: 3px solid var(--azul); outline-offset: 3px; }

/* ---------- fuentes: la línea de créditos de la hoja */
.origen { border-bottom: var(--linea); background: #fff; }
.origen__dentro { padding-block: .8rem; display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem 1.8rem; }
.origen__titulo { font: 500 .78rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--rojo); }
.origen ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .15rem 1.8rem; }
.origen li { font: 600 1.25rem/1.2 var(--titulos); letter-spacing: .03em; text-transform: uppercase; }
.origen li span { font: 400 .92rem/1.2 var(--texto); letter-spacing: 0; text-transform: none; color: var(--tinta-3); }

/* ---------- zona del informe: la hoja sobre papel milimetrado */
.zona-informe { padding: 0 0 3.5rem; scroll-margin-top: 0; background: var(--milimetrado); border-bottom: var(--linea); }
.progreso { margin-block: 1.5rem 1rem; padding: 1.1rem 1.3rem; background: #fff; border: var(--linea); }
.progreso__titulo { font: 700 1.7rem/1 var(--titulos); }
.pasos { list-style: none; padding: 0; margin: .8rem 0 0; display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; font-size: 1rem; }
.paso__punto { display: inline-block; width: .7rem; height: .7rem; border-radius: 50%; margin-inline-end: .45rem; background: var(--regla); }
.paso--en_curso .paso__punto { background: var(--ambar); animation: pulso 1s ease-in-out infinite alternate; }
.paso--ok .paso__punto { background: var(--verde); }
.paso--error .paso__punto { background: var(--error); }
.paso__estado { color: var(--tinta-3); }
@keyframes pulso { from { opacity: .35; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .paso--en_curso .paso__punto { animation: none; } }
.zona-informe > .acciones {
  width: 100%; margin: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; padding: .7rem var(--lado);
  position: sticky; top: 0; background: #fff; border-bottom: var(--linea); z-index: 500;
}
.acciones .boton { padding: .6rem 1rem; font-size: 1.12rem; }
.sat-control { margin-top: 1.25rem; }
.zona-informe > .sat-control { width: min(100% - 2 * var(--lado), 54rem); }
.sat-avance { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; background: #fff; border: 1px solid var(--tinta); padding: .7rem 1rem; font-size: 1rem; }
.sat-avance progress { flex: 1 1 10rem; height: .6rem; accent-color: var(--verde); }
.sat-espera { margin: .4rem 0 0; font-size: .9rem; }

/* ---------- informe */
.informe { position: relative; max-width: 54rem; margin: 2rem auto 0; padding: clamp(1.25rem, 4vw, 2.75rem); font-size: 1.06rem; line-height: 1.5; background: #fff; border: 1px solid var(--tinta); }
.zona-informe > #informe { width: min(100%, 54rem + 2 * var(--lado)); padding-inline: var(--lado); }
.informe__sello { font: 400 .8em/1.4 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--tinta-3); }
.informe__sello .marca { display: inline; font: 700 1.5em/1 var(--titulos); letter-spacing: .05em; color: var(--tinta); }
.informe h1 { font-size: 2.7em; margin-top: .35rem; line-height: 1; }
.informe__lugar { font-size: 1.1em; margin-top: .45rem; }
.informe__ref { color: var(--tinta-2); font: 400 .88em/1.5 var(--mono); letter-spacing: .02em; }
.informe h2 { font-size: 1.75em; margin: 0 0 .6rem; font-weight: 700; line-height: 1.05; }
.informe h3 { font-size: 1.02em; margin: 1rem 0 .4rem; font-family: var(--texto); font-weight: 700; line-height: 1.3; }
.num-apartado { color: var(--rojo); }
.apartado { margin-top: 2rem; }
.apartado > p + p, .apartado > .tabla-marco + p, .apartado > p + .tabla-marco { margin-top: .7rem; }

.semaforo { display: flex; gap: .9rem; align-items: flex-start; margin: 1.2rem 0; padding: .9rem 1.1rem; border-inline-start: 5px solid; }
.semaforo__icono { flex: none; width: 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; font-weight: 700; color: #fff; }
.semaforo__titulo { font-weight: 700; font-size: 1.1em; }
.semaforo--verde { background: var(--verde-fondo); border-color: var(--verde); } .semaforo--verde .semaforo__icono { background: var(--verde); }
.semaforo--ambar { background: var(--ambar-fondo); border-color: #d19a00; } .semaforo--ambar .semaforo__icono { background: #b98300; }
.semaforo--rojo { background: var(--rojo-fondo); border-color: var(--error); } .semaforo--rojo .semaforo__icono { background: var(--error); }
.semaforo--incompleto { background: var(--franja); border-color: var(--tinta-3); } .semaforo--incompleto .semaforo__icono { background: var(--tinta-3); }

.resumen { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 1.4rem; align-items: start; }
.figura { margin: 0; }
.figura--ancha { margin-top: 1rem; }
.figura figcaption { font-size: .85em; color: var(--tinta-3); margin-top: .35rem; }
.mapa { display: block; width: 100%; height: auto; border: 1px solid var(--tinta); background: #e9ece8; }
.mapa text { font-family: var(--texto); }
.leyenda { list-style: none; display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; padding: 0; margin: .45rem 0 0; font-size: .85em; color: var(--tinta-2); }
.muestra { display: inline-block; width: 1.1rem; height: .7rem; margin-inline-end: .4rem; vertical-align: -1px; border: 1px solid rgba(20, 32, 27, .25); }
.muestra--parcela { background: #fff; border: 2px solid var(--tinta); }
.muestra--t500 { background: #9cc3f0; } .muestra--t100 { background: #4087d9; } .muestra--t10 { background: #184f95; }
.muestra--verde { background: repeating-linear-gradient(45deg, #14694a 0 2px, rgba(31, 138, 97, .25) 2px 5px); }

/* Si una tabla no cabe (móvil), se desplaza de lado y una sombra en el borde lo indica. */
.tabla-marco {
  overflow-x: auto;
  background:
    linear-gradient(to right, #fff 40%, rgba(255, 255, 255, 0)) left / 1.6rem 100% no-repeat local,
    linear-gradient(to left, #fff 40%, rgba(255, 255, 255, 0)) right / 1.6rem 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%, rgba(26, 26, 23, .22), transparent) left / .6rem 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%, rgba(26, 26, 23, .22), transparent) right / .6rem 100% no-repeat scroll;
}
.tabla { width: 100%; border-collapse: collapse; font-size: .95em; }
.tabla th, .tabla td { text-align: start; vertical-align: top; padding: .42rem 0; padding-inline-end: .6rem; border-bottom: 1px solid var(--regla-suave); }
.tabla thead th { font: 500 .78em/1.3 var(--mono); letter-spacing: .03em; text-transform: uppercase; color: var(--tinta-2); border-bottom: 1.5px solid var(--tinta); white-space: nowrap; }
.tabla tbody th { font-weight: 400; color: var(--tinta-2); width: 42%; }
.tabla--ficha tr:first-child th, .tabla--ficha tr:first-child td { border-top: 1.5px solid var(--tinta); }
.tabla .num { text-align: end; font-variant-numeric: tabular-nums; white-space: nowrap; padding-inline: .6rem 0; }
.tabla .num + td:not(.num), .tabla .num + th:not(.num) { padding-inline-start: 1.4rem; }
.fila-afecta td { font-weight: 600; }
.fila-error td { color: var(--error); }
.lista-simple { margin: 0; padding: 0; list-style: none; }
.nota { font-size: .87em; color: var(--tinta-3); margin-top: .6rem; }
.nota--aviso { color: var(--tinta); background: var(--ambar-fondo); padding: .5rem .7rem; border-inline-start: 3px solid #d19a00; }

.hallazgos { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .55rem; }
.hallazgo { display: flex; gap: .7rem; align-items: flex-start; }
.hallazgo__icono { flex: none; width: 1.35rem; height: 1.35rem; border-radius: 50%; display: grid; place-items: center; font-size: .8rem; font-weight: 700; color: #fff; margin-top: .12rem; }
.hallazgo--rojo .hallazgo__icono { background: var(--error); }
.hallazgo--ambar .hallazgo__icono { background: #b98300; }
.hallazgo--info .hallazgo__icono { background: var(--tinta-3); font-style: italic; font-family: Georgia, "Times New Roman", serif; }
.hallazgo__titulo { font-weight: 600; }

.grafico-marco { position: relative; margin: .6rem 0; }
.grafico { display: block; width: 100%; height: auto; overflow: visible; }
.grafico .rejilla { stroke: var(--regla-suave); stroke-width: 1; }
.grafico .eje { stroke: var(--tinta-3); stroke-width: 1; }
.grafico .tick { font: 10.5px var(--mono); fill: var(--tinta-3); }
.grafico .titulo-eje { font-weight: 500; }
.grafico .valor { fill: var(--tinta); font-weight: 500; font-size: 11.5px; }
.grafico .linea { fill: none; stroke: var(--verde); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.grafico .punto { fill: var(--verde); stroke: #fff; stroke-width: 2; }
.grafico .punto-menor { fill: var(--verde); stroke: #fff; stroke-width: 1; }
.grafico .caida { fill: #e34948; opacity: .14; }
.grafico .caida-texto { fill: #8f1d1c; font-weight: 500; }
.grafico .cursor-linea { stroke: var(--tinta-3); stroke-width: 1; }
.grafico rect[tabindex]:focus-visible { outline: 2px solid var(--azul); }
.globo { position: absolute; pointer-events: none; background: var(--tinta); color: #fff; font-size: .86rem; padding: .25rem .5rem; white-space: nowrap; margin-top: -2.2rem; }
.datos-tabla { margin-top: .6rem; font-size: .9em; }
.datos-tabla summary { cursor: pointer; text-decoration: underline; text-underline-offset: .18em; }
.datos-tabla .tabla-marco { max-height: 16rem; overflow-y: auto; margin-top: .4rem; }

.fuentes { font-size: .85em; color: var(--tinta-2); border-top: 1.5px solid var(--tinta); padding-top: 1.2rem; }
.fuentes ul { margin: 0 0 .8rem; padding-inline-start: 1.1rem; }
.fuentes h2 { font-size: 1.6em; }
.informe__traduccion { margin-top: 1.2rem; font-size: .85em; color: var(--tinta-3); }
.informe__opinion { margin-top: 1rem; padding: .7rem 1rem; border: 1px solid var(--tinta); background: #fff; }
.informe__pie { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; margin-top: 1.5rem; padding-top: .6rem; border-top: 1px solid var(--tinta); font: 400 .72em/1.5 var(--mono); color: var(--tinta-3); }

/* ---------- bloques de la portada */
main { counter-reset: bloque; }
.bloque { padding-block: clamp(3.2rem, 7vw, 5.6rem); border-bottom: var(--linea); }
.bloque--cuadricula { background: var(--milimetrado); }
/* Rótulo de sección: número de orden y nombre, en monoespaciada, con una regla hasta el margen. */
.antetitulo { display: flex; align-items: center; gap: .8rem; font: 500 .82rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-2); margin-bottom: 1.1rem; }
.antetitulo::before { counter-increment: bloque; content: counter(bloque, decimal-leading-zero); color: var(--rojo); }
.antetitulo::after { content: ""; flex: 1; border-top: 1px solid var(--tinta); }
.bloque h2 { text-transform: uppercase; letter-spacing: .005em; max-width: 16em; }
.bloque__entrada { color: var(--tinta-2); margin-top: 1rem; max-width: 38em; font-size: 1.2rem; }

/* Ejemplo real */
.ejemplo { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: center; margin-top: .4rem; }
.lista-hallazgos { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: .7rem; }
.lista-hallazgos li { display: flex; gap: .7rem; align-items: flex-start; }
.senal { flex: none; width: 1.5rem; height: 1.5rem; border-radius: 50%; display: grid; place-items: center; color: #fff; font: 700 .9rem/1 var(--texto); margin-top: .1rem; }
.senal--rojo { background: var(--error); } .senal--ambar { background: #b98300; } .senal--verde { background: var(--verde); } .senal--info { background: var(--tinta-3); }
.senal .ico { width: .95rem; height: .95rem; stroke-width: 3; }
.ejemplo__botones { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.8rem; }
/* La hoja de muestra: papel con marcas de corte en las esquinas y el sello de «muestra». */
.hoja { margin: 0; position: relative; padding: 1.1rem; }
.hoja::before { content: ""; position: absolute; inset: 0; pointer-events: none; background:
  linear-gradient(var(--tinta), var(--tinta)) left 0 top 1.1rem / .7rem 1px no-repeat, linear-gradient(var(--tinta), var(--tinta)) left 1.1rem top 0 / 1px .7rem no-repeat,
  linear-gradient(var(--tinta), var(--tinta)) right 0 top 1.1rem / .7rem 1px no-repeat, linear-gradient(var(--tinta), var(--tinta)) right 1.1rem top 0 / 1px .7rem no-repeat; }
.hoja__papel { position: relative; background: #fff; border: 1px solid var(--tinta); padding: clamp(1rem, 2.6vw, 1.7rem); font-size: .95rem; line-height: 1.4; }
.hoja__sello { font: 400 .72rem/1.4 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--tinta-3); }
.hoja__sello b { font: 700 1.25rem/1 var(--titulos); letter-spacing: .05em; color: var(--tinta); }
.hoja__titulo { font: 700 2rem/1 var(--titulos); margin-top: .3rem; }
.hoja__lugar { color: var(--tinta-2); margin-top: .2rem; }
.hoja .semaforo { margin: .8rem 0; padding: .65rem .85rem; }
.hoja .semaforo__icono { width: 1.6rem; height: 1.6rem; font-size: .95rem; }
.hoja .semaforo__titulo { font-size: 1rem; }
.hoja img { display: block; width: 100%; height: auto; border: 1px solid var(--tinta); }
.hoja__grafico { display: block; width: 100%; height: auto; margin-top: .8rem; }
.hoja__grafico text { font-family: var(--mono); }
.hoja__pie { font-size: .8rem; color: var(--tinta-3); margin-top: .35rem; }
.hoja .sello { position: absolute; inset-inline-end: -.4rem; top: -.2rem; transform: rotate(9deg); border-width: 3px; }
.hoja .sello b { font-size: 1.9rem; }
.hoja .sello > span { padding: .25rem .7rem .3rem; }
.hoja figcaption { font: 400 .78rem/1.5 var(--mono); color: var(--tinta-3); margin-top: .8rem; }

/* Qué incluye: una leyenda de mapa, con su muestra en cada casilla */
.apartados { list-style: none; padding: 0; margin-block: 2.4rem 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--tinta); border: var(--linea); }
.apartados li { background: #fff; padding: 1.3rem 1.3rem 1.5rem; display: grid; align-content: start; gap: .5rem; }
.apartados__cab { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: .5rem; }
.apartados__ico { width: 4.6rem; height: 3rem; border: 1px solid var(--tinta); display: block; overflow: hidden; background: #fff; }
.apartados__ico svg { display: block; width: 100%; height: 100%; }
.apartados__num { font: 500 .82rem/1 var(--mono); color: var(--tinta-3); }
.apartados p { color: var(--tinta-2); font-size: 1.04rem; line-height: 1.45; }
.apartados li:last-child { grid-column: span 2; background: var(--tinta); color: #fff; }
.apartados li:last-child p { color: rgba(255, 255, 255, .86); max-width: 30em; }
.apartados li:last-child .apartados__ico { border-color: #fff; background: var(--tinta); }
.apartados li:last-child .apartados__num { color: rgba(255, 255, 255, .75); }
.niveles { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
.nivel { display: inline-flex; align-items: center; gap: .45rem; font: 500 .8rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; padding: .4rem .6rem; border: 1px solid rgba(255, 255, 255, .6); color: #fff; }
.nivel::before { content: ""; width: .7rem; height: .7rem; border-radius: 50%; background: var(--c); }
.nivel--verde { --c: #57c98d; } .nivel--ambar { --c: #f0b429; } .nivel--rojo { --c: #f0635c; }

/* Cómo funciona: tres estaciones de un itinerario, unidas por una línea de trazos */
.pasos-como { list-style: none; padding: 0; margin-block: 2.6rem 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem clamp(1.5rem, 4vw, 3.5rem); counter-reset: paso; }
.pasos-como li { counter-increment: paso; position: relative; padding-top: 4.3rem; }
.pasos-como li::before { content: counter(paso); position: absolute; inset-inline-start: 5px; top: 5px; width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; background: #fff; border: var(--linea); box-shadow: 0 0 0 3.5px #fff, 0 0 0 5px var(--tinta); font: 700 1.7rem/1 var(--titulos); }
.pasos-como li::after { content: ""; position: absolute; top: 1.8rem; inset-inline: 4.4rem calc(-1 * clamp(1.5rem, 4vw, 3.5rem) + .7rem); border-top: 1.5px dashed var(--tinta); }
.pasos-como li:last-child::after { display: none; }
.pasos-como p { color: var(--tinta-2); margin-top: .55rem; }
.cobertura { margin-top: 2.8rem; padding: 1.2rem 1.4rem; background: #fff; border: 1px solid var(--tinta); display: flex; gap: 1rem; align-items: flex-start; }
.cobertura .ico { width: 1.7rem; height: 1.7rem; margin-top: .15rem; }
.cobertura strong { font-weight: 700; }

/* Límites: dos columnas de una misma tabla */
.limites { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin-top: 2.2rem; background: var(--tinta); border: var(--linea); }
.limites > div { background: #fff; padding: 1.5rem 1.6rem 1.7rem; }
.limites h3 { font-size: 1.9rem; font-weight: 700; text-transform: uppercase; }
.limites ul { list-style: none; padding: 0; margin: 1.1rem 0 0; display: grid; gap: .75rem; }
.limites li { display: flex; gap: .7rem; align-items: flex-start; }
.limites .ico { margin-top: .2rem; stroke-width: 2.4; }
.limites--no .ico { color: var(--error); }
.limites--si .ico { color: var(--verde); }

/* Guías: un índice */
.indice { list-style: none; padding: 0; margin-block: 2.2rem 0; border-top: var(--linea); counter-reset: guia; }
.indice li { counter-increment: guia; border-bottom: 1px solid var(--tinta); margin: 0; }
.indice a { display: grid; grid-template-columns: 3.4rem minmax(0, 1.1fr) minmax(0, 1fr) 2rem; gap: .3rem 1.5rem; align-items: center; padding: 1.05rem .6rem 1.05rem 0; text-decoration: none; color: var(--tinta); }
.indice a::before { content: counter(guia, decimal-leading-zero); font: 500 .85rem/1 var(--mono); color: var(--rojo); padding-left: .6rem; }
.indice strong { font: 600 1.6rem/1.05 var(--titulos); }
.indice span { color: var(--tinta-2); font-size: 1.02rem; line-height: 1.4; }
.indice .ico { width: 1.5rem; height: 1.5rem; justify-self: end; transition: transform .12s; }
.indice a:hover { background: var(--tinta); color: #fff; }
.indice a:hover::before, .indice a:hover span { color: #fff; }
.indice a:hover .ico { transform: translateX(.25rem); }
@media (prefers-reduced-motion: reduce) { .indice .ico { transition: none; } .indice a:hover .ico { transform: none; } }

/* Preguntas */
.preguntas { display: grid; grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); gap: 2rem clamp(2rem, 5vw, 4.5rem); align-items: start; }
.preguntas__nota { margin-top: 1rem; color: var(--tinta-2); max-width: 22em; }
.faq { border-top: var(--linea); }
.faq details { border-bottom: 1px solid var(--tinta); }
.faq summary { cursor: pointer; font-weight: 650; font-size: 1.14rem; padding: 1rem 0; padding-inline-end: 2.6rem; list-style: none; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::before, .faq summary::after { content: ""; position: absolute; inset-inline-end: .35rem; top: 50%; width: 1rem; border-top: 2px solid var(--tinta); }
.faq summary::after { transform: rotate(90deg); transition: transform .12s; }
.faq details[open] summary::after { transform: rotate(0); }
.faq summary:hover { color: var(--rojo); }
.faq p { padding: 0 0 1.1rem; padding-inline-end: 2.6rem; color: var(--tinta-2); }
@media (prefers-reduced-motion: reduce) { .faq summary::after { transition: none; } }

/* Llamada final: tinta negra con la cuadrícula en claro */
.cierre {
  color: #fff; text-align: center; border-bottom: 0;
  background:
    linear-gradient(rgba(255, 255, 255, .09) 1px, transparent 1px) 0 0 / 100% 60px,
    linear-gradient(90deg, rgba(255, 255, 255, .09) 1px, transparent 1px) 0 0 / 60px 100%,
    linear-gradient(rgba(255, 255, 255, .04) 1px, transparent 1px) 0 0 / 100% 12px,
    linear-gradient(90deg, rgba(255, 255, 255, .04) 1px, transparent 1px) 0 0 / 12px 100%,
    var(--tinta);
}
.cierre :focus-visible { outline-color: #fff; }
.cierre h2 { max-width: none; font-size: clamp(2.4rem, 5vw, 3.8rem); }
.cierre p { color: rgba(255, 255, 255, .86); margin: .9rem auto 1.8rem; max-width: 32em; font-size: 1.2rem; }
.cierre .boton { padding: 1rem 1.8rem; font-size: 1.45rem; }

.pie { background: #fff; color: var(--tinta-2); padding-block: 2.4rem 2.6rem; font-size: 1rem; border-top: var(--linea); }
.pie__arriba { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1.5rem 3rem; }
.pie__lema { margin-top: .7rem; max-width: 26em; }
.pie nav { display: flex; flex-wrap: wrap; gap: .5rem 1.6rem; align-content: start; }
.pie__idiomas { margin-top: 1.8rem; padding-top: 1.1rem; border-top: 1px solid var(--tinta); gap: .35rem 1.2rem; font-size: .95rem; }
.pie__idiomas strong { font: 500 .78rem/1.9 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--rojo); flex-basis: 100%; }
.pie__idiomas a[aria-current] { font-weight: 700; text-decoration: none; }
.pie__traduccion { margin-top: 1.1rem; font-size: .95rem; }
.pie__idiomas + .pie__fuentes { margin-top: 1.1rem; }
.pie__fuentes { margin-top: 2rem; padding-top: 1.1rem; border-top: 1px solid var(--tinta); font: 400 .78rem/1.6 var(--mono); color: var(--tinta-3); }

/* ---------- páginas de texto: guías y legales */
.cima--texto { background: linear-gradient(98deg, rgba(255, 255, 255, .96) 0%, rgba(255, 255, 255, .92) 50%, rgba(255, 255, 255, .55) 78%, rgba(255, 255, 255, .25) 100%), #fff url(img/mapa.svg) center 38% / cover no-repeat; }
.cima__titulo { width: min(100% - 2 * var(--lado), 46rem); margin-inline: auto; padding-block: clamp(1.6rem, 4.5vw, 3rem) clamp(2.2rem, 5vw, 3.6rem); }
.cima__titulo h1 { font-size: clamp(2.4rem, 4.8vw, 3.7rem); }
.cima__titulo .entrada { font-size: 1.22rem; margin-top: 1.1rem; max-width: none; }
.migas { font: 500 .8rem/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-3); margin-bottom: 1rem; }
.migas a { color: var(--tinta-2); }
.migas--abajo { margin: 1.4rem 0 0; }
.migas a:hover { color: var(--rojo); }
.legal { width: min(100% - 2 * var(--lado), 46rem); margin: 0 auto; padding: 2.2rem 0 4rem; }
.legal h2 { font-size: 2rem; margin: 2.6rem 0 .6rem; padding-top: .7rem; border-top: 1px solid var(--tinta); }
.legal > h2:first-child { margin-top: .4rem; }
.legal p, .legal li { margin-top: .7rem; }
.legal ul, .legal ol { padding-inline-start: 1.2rem; }
.legal li::marker { color: var(--rojo); }
.legal .pendiente { background: #fff3cd; padding: 0 .25rem; }
.legal .llamada { margin-top: 2.8rem; padding: 1.6rem 1.7rem 1.7rem; background: var(--tinta); color: #fff; }
.legal .llamada p { margin: 0; color: rgba(255, 255, 255, .88); }
.legal .llamada strong { display: block; font: 700 2rem/1 var(--titulos); text-transform: uppercase; color: #fff; margin-bottom: .5rem; }
.legal .llamada .boton { margin-top: 1.1rem; }
.legal .llamada :focus-visible { outline-color: #fff; }
.otras { margin-top: 3rem; }
.legal .otras h2 { font-size: 1.6rem; margin: 0; padding: 0; border: 0; text-transform: uppercase; }
.legal .indice { padding-left: 0; margin-top: .8rem; }
.legal .indice li { margin: 0; }
.legal .indice a { grid-template-columns: 2.8rem minmax(0, 1fr) 2rem; }
.legal .indice strong { font-size: 1.35rem; }
.legal .indice span { grid-column: 2; }
.legal .indice .ico { grid-column: 3; grid-row: 1 / span 2; }
.legal .otras .indice .ico { grid-row: 1; }
.error-404 { text-align: center; padding-block: 3rem 5rem; }
.error-404 p { display: flex; flex-wrap: wrap; justify-content: center; gap: .7rem; }

@media (max-width: 1080px) {
  .apartados { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .apartados li:last-child { grid-column: 1 / -1; }
  .indice a { grid-template-columns: 3rem minmax(0, 1fr) 2rem; }
  .indice span { grid-column: 2; }
  .indice .ico { grid-column: 3; grid-row: 1 / span 2; }
}
@media (max-width: 860px) {
  body { font-size: 1.0625rem; }
  .cima { padding-top: 3.8rem; background: linear-gradient(180deg, rgba(255, 255, 255, .95) 0, rgba(255, 255, 255, .9) 45%, rgba(255, 255, 255, .35) 100%), #fff url(img/mapa.svg) 62% 100% / auto 70% no-repeat; }
  .cima--texto { background: linear-gradient(180deg, rgba(255, 255, 255, .94), rgba(255, 255, 255, .8)), #fff url(img/mapa.svg) center / cover no-repeat; }
  .portada, .ejemplo, .preguntas, .limites { grid-template-columns: minmax(0, 1fr); }
  .resumen { grid-template-columns: 1fr; }
  .cabecera { height: 3.8rem; }
  .cabecera nav.plegable > a { display: none; }
  .cabecera nav { gap: .3rem 1.1rem; }
  .pestanas button { font-size: 1.02rem; padding: .75rem .3rem; }
  .pasos-como { grid-template-columns: minmax(0, 1fr); gap: 1.7rem; }
  .pasos-como li { padding: 0; padding-inline-start: 4.6rem; min-height: 3.4rem; }
  .pasos-como li::after { top: 4.1rem; bottom: -1.3rem; inset-inline: calc(5px + 1.5rem) auto; border-top: 0; border-inline-start: 1.5px dashed var(--tinta); }
  /* En el móvil la barra de acciones no se queda fija: taparía un tercio de la pantalla. */
  .zona-informe > .acciones { position: static; }
  .acciones .boton { flex: 1 1 45%; padding: .6rem .5rem; font-size: 1.02rem; text-align: center; }
  .informe { font-size: 1rem; }
  .cima__coords span:nth-child(even) { display: none; }
  .cima__escala { display: none; }
}
@media (max-width: 560px) {
  .apartados { grid-template-columns: minmax(0, 1fr); }
  .apartados li, .apartados li:last-child { grid-column: auto; grid-template-columns: 4.6rem minmax(0, 1fr); column-gap: 1rem; row-gap: .3rem; padding: 1.1rem; }
  .apartados__cab { grid-row: 1 / span 3; align-self: start; margin: .15rem 0 0; }
  .apartados__num { display: none; }
  .apartados li > :not(.apartados__cab) { grid-column: 2; }
  .fila-campo .boton { flex: 1 1 100%; }
  .pestanas button { font-size: .9rem; letter-spacing: 0; padding-inline: .25rem; }
  .ejemplo__botones .boton { flex: 1 1 100%; }
  .cobertura { flex-direction: column; gap: .5rem; }
  .avales { flex-direction: column; align-items: flex-start; gap: .8rem; }
  .sello b { font-size: 2.3rem; }
  .sello i { font-size: .9rem; }
  .hoja { padding: .8rem 0 0; }
  .hoja::before { display: none; }
  .hoja .sello { inset-inline-end: .2rem; top: -.6rem; }
  .hoja .sello b { font-size: 1.5rem; }
  /* En pantallas estrechas la hoja del informe ocupa todo el ancho y las tablas aprovechan el sitio. */
  .zona-informe > #informe { width: 100%; padding-inline: 0; }
  .informe { padding: 1.3rem 1rem 1.6rem; border-inline: 0; margin-top: 1rem; }
  .informe h1 { font-size: 2.3em; }
  .tabla thead th, .tabla thead th.num { white-space: normal; vertical-align: bottom; }
  .tabla thead ~ tbody td:first-child { min-width: 7.5rem; }
}

/* ---------- otros idiomas: sentido de lectura y escrituras no latinas */
.ico--flecha { transition: transform .12s; }
[dir="rtl"] .ico--flecha { transform: scaleX(-1); }
[dir="rtl"] .indice a:hover .ico { transform: scaleX(-1) translateX(.25rem); }
/* Los dibujos, los mapas y las referencias se leen siempre de izquierda a derecha. */
[dir="rtl"] svg, [dir="rtl"] .cima__coords, [dir="rtl"] .leaflet-container, [dir="rtl"] #ref, [dir="rtl"] .hoja__grafico { direction: ltr; }
[dir="rtl"] #ref { text-align: right; }
[dir="rtl"] .cima {
  background:
    linear-gradient(264deg, #fff 0%, #fff 40%, rgba(255, 255, 255, .82) 49%, rgba(255, 255, 255, .25) 60%, rgba(255, 255, 255, 0) 70%),
    #fff url(img/mapa.svg) center / cover no-repeat;
}
/* Escrituras sin versión condensada (árabe, hebreo, índicas, tailandesa, chino, japonés, coreano):
   títulos en la letra del sistema, algo menores y con más aire; sin espaciado entre letras,
   que rompería la unión de las letras árabes. */
.g-ancha {
  --titulos: "Barlow Condensed", var(--pila);
  --texto: "Source Sans 3", var(--pila);
  --mono: var(--pila); /* la monoespaciada latina separaría las palabras de estas escrituras */
  --pila: system-ui, -apple-system, "Segoe UI", "Noto Sans", Arial, sans-serif;
}
.g-ancha * { letter-spacing: 0 !important; }
.g-ancha body { line-height: 1.7; }
.g-ancha h1 { font-size: clamp(2.1rem, 4.2vw, 3.3rem); line-height: 1.25; }
.g-ancha h2 { font-size: clamp(1.7rem, 3vw, 2.3rem); line-height: 1.3; }
.g-ancha h3 { font-size: 1.25rem; line-height: 1.35; }
.g-ancha h1, .g-ancha h2, .g-ancha h3 { hyphens: manual; text-wrap: balance; }
.g-ancha #ref { font-family: "IBM Plex Mono", ui-monospace, monospace; }
.g-ancha .cabecera nav { font-size: 1rem; }
.g-ancha .boton { font-size: 1.08rem; line-height: 1.3; }
.g-ancha .boton--pequeno, .g-ancha .acciones .boton { font-size: .95rem; }
.g-ancha .cierre .boton { font-size: 1.2rem; }
.g-ancha .pestanas button { font-size: .98rem; line-height: 1.3; }
.g-ancha .origen li { font-size: 1.05rem; line-height: 1.5; }
.g-ancha .sello b { font-size: 2.1rem; line-height: 1.3; }
.g-ancha .sello i { font-size: .95rem; line-height: 1.4; }
.g-ancha .hoja .sello b { font-size: 1.4rem; }
.g-ancha .antetitulo, .g-ancha .tabla thead th, .g-ancha .migas, .g-ancha .nivel, .g-ancha .origen__titulo, .g-ancha #form-ref > label, .g-ancha .ejemplos > span, .g-ancha .pie__idiomas strong { font-size: .9rem; line-height: 1.5; }
.g-ancha .informe h1 { font-size: 2em; line-height: 1.25; }
.g-ancha .informe h2 { font-size: 1.45em; line-height: 1.3; }
.g-ancha .hoja__titulo, .g-ancha .progreso__titulo { font-size: 1.45rem; line-height: 1.3; }
.g-ancha .limites h3 { font-size: 1.5rem; }
.g-ancha .cierre h2 { font-size: clamp(1.9rem, 3.8vw, 2.8rem); }
.g-ancha .pasos-como li::before { font-family: "Barlow Condensed", sans-serif; }
.g-cjk { --pila: system-ui, -apple-system, "PingFang SC", "Hiragino Sans", "Yu Gothic UI", "Microsoft YaHei", "Malgun Gothic", "Noto Sans CJK SC", sans-serif; }
.g-cjk h1, .g-cjk h2, .g-cjk h3 { word-break: normal; line-break: strict; }
/* En japonés, los títulos se parten por frases y no en mitad de una palabra. */
:lang(ja) h1, :lang(ja) h2, :lang(ja) h3, :lang(ja) .pestanas button { word-break: auto-phrase; }
/* El coreano separa las palabras con espacios: no se parten. */
:lang(ko) h1, :lang(ko) h2, :lang(ko) h3, :lang(ko) .pestanas button, :lang(ko) .boton { word-break: keep-all; }
.g-arabe { --pila: "Segoe UI", "Geeza Pro", "Noto Sans Arabic", Tahoma, system-ui, sans-serif; }
.g-hebreo { --pila: "Segoe UI", "Arial Hebrew", "Noto Sans Hebrew", Arial, system-ui, sans-serif; }
.g-indica { --pila: "Nirmala UI", "Kohinoor Devanagari", "Kohinoor Bangla", "Noto Sans Devanagari", "Noto Sans Bengali", system-ui, sans-serif; }
.g-tailandesa { --pila: "Leelawadee UI", "Thonburi", "Noto Sans Thai", system-ui, sans-serif; }
.g-indica h1, .g-tailandesa h1, .g-arabe h1 { line-height: 1.4; }
@media (max-width: 860px) {
  .idiomas ul { position: fixed; inset-inline: var(--lado); top: 3.8rem; width: auto; }
}
@media print {
  .informe__traduccion { font-size: 8.5pt; }
  .informe__opinion { font-size: 8.5pt; padding: 0; border: 0; }
  .g-ancha .informe h1 { font-size: 22pt; }
  .g-ancha .informe h2 { font-size: 14.5pt; }
}

/* ---------- impresión: solo el informe */
@page { size: A4; margin: 14mm 14mm 16mm; }
@media print {
  body { font-size: 10.5pt; background: #fff; }
  .cabecera, .cima, .origen, .bloque, .pie, .aviso-idioma, .filtros, .acciones, .progreso, .sat-control, .salto, #informe-error, .datos-tabla, .globo { display: none !important; }
  .zona-informe { padding: 0; background: none; border: 0; }
  .tabla-marco { background: none; overflow: visible; }
  .zona-informe > #informe { width: auto; padding: 0; }
  .informe { max-width: none; margin: 0; padding: 0; font-size: 11pt; border: 0; }
  .resumen { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
  .informe h1 { font-size: 27pt; }
  .informe h2 { font-size: 17pt; }
  .apartado { margin-top: 1.3rem; }
  .apartado h2, .apartado h3, .apartado h2 + p { break-after: avoid; }
  .apartado h2 + p { break-inside: avoid; }
  .fuentes p, .fuentes ul { orphans: 3; widows: 3; }
  .tabla tr, .figura, .hallazgo, .semaforo, .grafico-marco { break-inside: avoid; }
  .semaforo, .nota--aviso, .caida, .muestra, .hallazgo__icono, .semaforo__icono { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a { color: inherit; text-decoration: none; }
}
