/* DeListado — hoja común de delistado.com.
   Una sola para la portada, la guía y los legales: así el diseño no se
   desincroniza entre páginas. */

@font-face { font-family:'Poppins';
             /* WOFF2 primero: 7 KB frente a los 156 del TTF, recortado a los
                caracteres que esta web puede necesitar. El TTF queda de
                respaldo para navegadores viejos, pero no lo descarga nadie. */
             src:url('/marca/Poppins-Regular.woff2') format('woff2'),
                 url('/marca/Poppins-Regular.ttf') format('truetype');
             font-weight:400; font-display:swap; }
@font-face { font-family:'Poppins';
             src:url('/marca/Poppins-Bold.woff2') format('woff2'),
                 url('/marca/Poppins-Bold.ttf') format('truetype');
             font-weight:700; font-display:swap; }

/* Paleta del kit de marca. Los dos verdes no son un capricho: el contraste
   sobre fondo oscuro y sobre claro necesita valores distintos para cumplir
   WCAG AA.

   El gris secundario lo demuestra: --ink-3 era #6B7280 en los DOS modos y no
   llegaba a 4,5:1 en ninguno (4,44 sobre el crema, 3,85 sobre la tinta). Ahora
   cada modo tiene el suyo, medido: 4,95 en oscuro y 5,16 en claro. Los valores
   del modo claro se volvieron a ajustar al añadir la banda crema; el porqué
   está en el bloque de «prefers-color-scheme: light». */
:root {
  --bg:#111317; --surface:#191C21; --line:#2E333B;
  --ink:#F7F5F0; --ink-2:#B6BDC8; --ink-3:#7C8494;
  --verde:#2BD9AB;

  /* ── Los tonos del ritmo visual ─────────────────────────────────────────
     La página dejó de ser un solo fondo de arriba abajo. «crema-2» es la
     banda alterna —un paso de temperatura, no un color nuevo— y «tinta» es
     la banda oscura de contraste, que es la MISMA en modo claro y en oscuro
     a propósito: su trabajo es romper el ritmo, y un fondo que cambia con el
     tema no rompe nada en uno de los dos. */
  --crema-2:#15181D;
  --tinta:#0D1014; --tinta-ink:#F7F5F0; --tinta-ink-2:#B6BDC8; --tinta-line:#282E37;

  /* Las mismas que la aplicación. Las de antes eran las barras del isotipo y
     tenían tres problemas medidos el 20/08/2026: el cine llevaba el rojo de
     error, los libros el VERDE DE LA MARCA y series/cómics eran casi el mismo
     color con daltonismo. La aplicación las cambió ese día; esta hoja se quedó
     con las viejas cinco meses.

     Los nueve medios llevan color desde el rediseño de agosto: antes solo
     había cinco y las categorías nuevas salían en gris. */
  --cine:#e66767; --serie:#3987e5; --libro:#c98500; --extra:#d95926; --musica:#9085e9;
  --comic:#d55181; --juego:#199e70; --mesa:#35c0dc; --directo:#d95926; --cartas:#d89ad0;

  /* El ancho de la columna. Lo fija la envoltura y lo lee «.dentro», que es
     lo que permite que una banda ocupe la pantalla entera y su contenido siga
     alineado con el resto de la página. */
  --ancho:680px;
}
@media (prefers-color-scheme: light) {
  /* ── El verde y el gris se oscurecieron al añadir la banda crema ────────
     Medido el 22/08/2026, y por eso están así:

     La página dejó de tener un solo fondo. Sobre el crema de siempre
     (#F7F5F0) el verde #087F67 daba 4,54:1 y el gris #656C77 daba 4,86 —los
     dos justos—. Sobre la banda nueva (#EFEBE1), que es un pelín más oscura,
     caían a 4,16 y 4,45: por debajo del mínimo.

     La tentación era aclarar la banda. Aclararla hasta que cumpliera la deja
     indistinguible del fondo, o sea sin banda. Así que se oscurecen los DOS
     colores hasta que cumplen en el sitio más exigente, y de paso cumplen con
     holgura en el resto:

       verde  #077865 → 4,54 en la banda · 4,96 sobre el crema · 5,41 en blanco
       gris   #616873 → 4,72 en la banda · 5,16 sobre el crema · 5,62 en blanco */
  :root { --bg:#F7F5F0; --surface:#FFFFFF; --line:#DCDFE4;
          --ink:#111317; --ink-2:#4B5563; --ink-3:#616873; --verde:#077865;
          --crema-2:#EFEBE1; }
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth;
       /* La cabecera es fija: sin esto, un enlace «#invitacion» deja el
          titular de la sección escondido debajo de ella. */
       scroll-padding-top:76px; }
body { margin:0; background:var(--bg); color:var(--ink);
       font-family:'Poppins',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
       line-height:1.65; -webkit-font-smoothing:antialiased;
       }

/* ── Estructura: envoltura, columna y bandas ───────────────────────────────
   La envoltura ya no recorta: solo declara cuánto mide la columna. Recortar
   es trabajo de «.dentro», y así una banda de color puede llegar de borde a
   borde con su contenido alineado con el resto. */
/* El recorte horizontal va AQUÍ y no en el body, y es importante.

   En el body no funciona: cuando <html> tiene «overflow: visible» —lo normal—
   el navegador se lleva el overflow del body al viewport entero. El resultado
   medido en Chrome: la página deja de desplazarse y la cabecera fija se va
   bajando sola por la pantalla. Con la regla en un div de por medio no hay
   propagación que valga.

   Y «clip» en vez de «hidden» porque «hidden» crea un contenedor de scroll, y
   eso sí rompe «position: sticky» de la cabecera. Los dos recortan igual; solo
   uno tiene efectos secundarios. */
/* El recorte horizontal va AQUÍ y no en el body, y no es un detalle.

   En el body no funciona: cuando <html> tiene «overflow: visible» —lo normal—
   el navegador se lleva el overflow del body al viewport entero, y la página
   deja de desplazarse bien. Con un div de por medio no hay propagación.

   Y «clip» en vez de «hidden» porque «hidden» crea un contenedor de scroll, y
   eso rompe «position: sticky» de la cabecera. Los dos recortan igual; solo
   uno tiene efectos secundarios. Comprobado con la cabecera puesta. */
.envoltura { margin:0; padding:0; overflow-x:clip; }
.envoltura-ancha { --ancho:1180px; }
/* Las páginas de tarea de la guía: algo más anchas porque llevan el índice
   al lado. El texto sigue en columna corta; lo que se ensancha es la página. */
.envoltura-guia { --ancho:920px; }

.dentro { max-width:var(--ancho); margin:0 auto; padding-left:22px; padding-right:22px; }
.dentro-ancho { --ancho:1280px; }

/* Las páginas de texto —guía y legales— siguen leyéndose en columna estrecha:
   una línea de 110 caracteres no se lee, se recorre. */
.pagina { padding-top:34px; padding-bottom:76px; }

/* 60 px y no 76. Con el aire de antes la página salía un 6 % MÁS LARGA que la
   que se venía a acortar: el texto había bajado un 22 %, pero las piezas
   visuales nuevas —la línea, las capturas grandes, el panel de privacidad—
   ocupan sitio. Recortar el respiro entre bandas devuelve esos 400 px sin
   quitar nada de lo que se ve. */
.franja { padding:60px 0; }
.franja-apretada { padding:40px 0; }
.franja-crema { background:var(--crema-2); }
.franja-tinta { background:var(--tinta); color:var(--tinta-ink); }
.franja-borde { border-top:1px solid var(--line); }

.franja-tinta p, .franja-tinta li { color:var(--tinta-ink-2); }
.franja-tinta strong, .franja-tinta h2, .franja-tinta h3 { color:var(--tinta-ink); }
.franja-tinta a { color:#2BD9AB; }
.franja-tinta .entradilla { color:#A7AFBC; }

/* Un botón dentro de la franja oscura sigue siendo un botón.

   La regla de arriba pinta de verde TODOS los enlaces de la franja, y pesa más
   que «.btn-principal» —dos partes contra una—. El día que la caja de alta pasó
   de llevar un <button> a llevar un <a class="btn-principal">, el resultado fue
   texto verde sobre fondo verde: el botón se veía como un rectángulo vacío.

   Se arregla con la misma especificidad, no subiéndola de más: dos partes
   contra dos, y gana la última declarada. */
.franja-tinta .btn-principal { color:var(--bg); }
.franja-tinta .btn-secundario { color:var(--tinta-ink); }

.marca img { width:100%; max-width:400px; height:auto; }
.marca-peq img { height:30px; width:auto; vertical-align:middle; }

/* Qué logotipo se ve según el tema. OJO: aquí NO se puede poner «display» en
   ninguna regla de imagen más específica —como «.marca-peq img»— porque le
   ganaría a estas y se pintarían los dos logos, uno debajo del otro. Ya pasó
   una vez. */
.solo-claro { display:none; } .solo-oscuro { display:block; }
@media (prefers-color-scheme: light) { .solo-claro{display:block;} .solo-oscuro{display:none;} }

h1 { font-size:29px; line-height:1.3; margin:34px 0 14px; letter-spacing:-.01em; }
h2 { font-size:20px; margin:42px 0 12px; }
h3 { font-size:16px; margin:28px 0 8px; }
p, li { color:var(--ink-2); }
p { margin:0 0 16px; }
strong { color:var(--ink); }
a { color:var(--verde); }
code { font-family:ui-monospace,"SF Mono",Menlo,monospace; font-size:.9em;
       background:var(--surface); padding:2px 5px; border-radius:5px; }

.destacado { font-size:18px; }
.entradilla { color:var(--ink-3); font-size:14px; margin-top:-8px; }

ul, ol { padding-left:20px; margin:0 0 18px; }
li { margin:6px 0; }

.lista { list-style:none; margin:0 0 28px; padding:0; }
.lista li { display:flex; gap:13px; align-items:flex-start; padding:9px 0; }
.lista .icono { flex:none; margin-top:2px; }

/* ── La cabecera fija ──────────────────────────────────────────────────────
   Compacta y siempre presente: la acción principal deja de depender de dónde
   esté el visitante en una página larga. Ocupa 60 px, que es lo que cabe sin
   comerse el primer pantallazo en un móvil apaisado. */
.cabecera { position:sticky; top:0; z-index:60;
            background:var(--bg); border-bottom:1px solid var(--line); }
.cabecera .dentro { display:flex; align-items:center; gap:16px;
                    min-height:60px; padding-top:8px; padding-bottom:8px; }
.cabecera-marca { flex:0 0 auto; display:inline-flex; align-items:center;
                  min-height:44px; padding:9px 2px; }
.cabecera-marca img { height:26px; width:auto; display:block; }

.menu { margin-left:auto; display:flex; align-items:center; gap:2px; flex-wrap:wrap; }
/* 11 px arriba y abajo, no 10: con 10 el enlace medía 43,9 px y se quedaba a
   una décima del objetivo táctil mínimo. Una décima incumple igual. */
.menu a { color:var(--ink-2); text-decoration:none; font-size:14.5px;
          padding:11px 12px; border-radius:8px; display:inline-block; }
.menu a:hover { color:var(--ink); background:var(--crema-2); }
.menu .menu-cta { background:var(--verde); color:var(--bg); font-weight:700;
                  padding:11px 18px; margin-left:8px; }
.menu .menu-cta:hover { background:var(--verde); filter:brightness(1.08); color:var(--bg); }

/* El botón del menú en móvil. Existe siempre en el HTML —esconderlo con CSS
   es más fiable que pintarlo con JavaScript, porque si el guion no llega la
   navegación se ve igual— y se oculta en pantallas anchas. */
.menu-boton { display:none; margin-left:auto; align-items:center; gap:9px;
              min-height:44px; padding:10px 14px; border-radius:9px;
              background:transparent; color:var(--ink); border:1px solid var(--line);
              font:inherit; font-size:14.5px; cursor:pointer; }
.menu-barras { display:block; width:17px; height:2px; background:currentColor;
               position:relative; }
.menu-barras::before, .menu-barras::after {
  content:""; position:absolute; left:0; width:17px; height:2px; background:currentColor; }
.menu-barras::before { top:-5px; } .menu-barras::after { top:5px; }

@media (max-width:900px) {
  .menu-boton { display:inline-flex; }
  .menu { position:absolute; left:0; right:0; top:100%; margin:0;
          flex-direction:column; align-items:stretch; gap:2px;
          background:var(--bg); border-bottom:1px solid var(--line);
          padding:10px 22px 18px; display:none; }
  .cabecera-abierta .menu { display:flex; }
  .menu a { padding:13px 12px; font-size:16px; }
  .menu .menu-cta { margin:8px 0 0; text-align:center; }
}

/* ── El hero ───────────────────────────────────────────────────────────────
   Dos columnas en escritorio: el mensaje a la izquierda y una demostración
   del producto a la derecha. En móvil, el texto y los botones PRIMERO —quien
   llega tiene que poder actuar sin desplazarse— y la escena justo después. */
.hero { padding:36px 0 18px; }
.hero .dentro { display:grid; gap:36px; align-items:center; }

@media (min-width:960px) {
  .hero { padding:52px 0 22px; }
  .hero .dentro { grid-template-columns:minmax(0,1.02fr) minmax(0,1fr); gap:52px; }
}

.hero-texto { min-width:0; }
.hero-sobretitulo { color:var(--ink-3); font-size:12.5px; letter-spacing:.09em;
                    text-transform:uppercase; margin:0 0 10px; }
.hero h1 { font-size:clamp(31px, 5.2vw, 47px); line-height:1.12; margin:0 0 18px;
           letter-spacing:-.022em; color:var(--ink); }
.hero .destacado { font-size:clamp(16.5px, 1.9vw, 19px); margin:0 0 24px; max-width:34em; }
.hero-confianza { display:flex; flex-wrap:wrap; gap:8px 16px; margin:16px 0 0;
                  font-size:13.5px; color:var(--ink-3); }
.hero-confianza span { display:inline-flex; align-items:center; gap:7px; }
.hero-confianza .punto { width:6px; height:6px; border-radius:50%;
                         background:var(--verde); flex:none; }

/* La escena: la interfaz de verdad, con tres momentos suyos sacados afuera y
   una curva que los une. No es una ilustración: la imagen grande es una
   captura y las tarjetas repiten datos que están dentro de ella. */
.escena { position:relative; }
.escena-marco { margin:0; position:relative; z-index:1; }
.escena-marco img { width:100%; height:auto; display:block; border-radius:14px;
                    border:1px solid var(--line);
                    box-shadow:0 24px 60px rgba(0,0,0,.30), 0 3px 10px rgba(0,0,0,.16); }
.escena-pie { margin:12px 2px 0; font-size:12.5px; color:var(--ink-3); }

.escena-momentos { list-style:none; margin:18px 0 0; padding:0;
                   display:grid; gap:10px; }
.momento { background:var(--surface); border:1px solid var(--line);
           border-left:3px solid var(--tinte, var(--verde));
           border-radius:11px; padding:11px 14px; margin:0;
           box-shadow:0 10px 26px rgba(0,0,0,.16); }
.momento .momento-fecha { display:block; font-size:11.5px; letter-spacing:.06em;
                          text-transform:uppercase; color:var(--ink-3); margin-bottom:3px; }
.momento .momento-obra { display:block; color:var(--ink); font-weight:700;
                         font-size:14.5px; line-height:1.3; }
.momento .momento-obra .icono { vertical-align:-4px; margin-right:6px; }
.momento .momento-estado { display:block; font-size:12.5px; color:var(--ink-2); margin-top:3px; }

/* El hilo del hero.

   Va POR DELANTE de la captura, y es la decisión que hace que se vea. Detrás
   quedaba escondido: la imagen es opaca y solo asomaban los dos extremos, así
   que el elemento que anuncia la identidad de la marca no se veía en el primer
   pantallazo, que es el único sitio donde tenía que verse.

   Delante son tres píxeles de color cruzando una captura de 540: no estorba la
   lectura, y en cambio cuenta de un vistazo lo que la página tarda dos
   secciones en explicar — que las obras van enhebradas. Sale de detrás de cada
   tarjeta y entra en la siguiente, y toma el color de su medio por el camino.

   Las tarjetas van por encima (z-index 3) para que el hilo parezca pasar por
   debajo de ellas y no cortarlas. */
/* La caja del hilo se sale por la IZQUIERDA, donde hay hueco entre las dos
   columnas, y no por la derecha, donde está el borde de la página: con
   «inset» simétrico se salía 30 px y eso es barra horizontal a 1180 px. */
.escena-curva { display:none; position:absolute; top:-12%; left:-19%;
                width:119%; height:124%; z-index:2; pointer-events:none; }
.escena-curva .halo { fill:none; stroke:url(#hilo-hero); stroke-width:10; opacity:.28;
                      stroke-linecap:round; vector-effect:non-scaling-stroke; }
.escena-curva .hilo { fill:none; stroke:url(#hilo-hero); stroke-width:3;
                      stroke-linecap:round; vector-effect:non-scaling-stroke;
                      stroke-dasharray:1400; stroke-dashoffset:1400;
                      animation:trazar 1.8s ease-out .3s forwards; }
@keyframes trazar { from { stroke-dashoffset:1400; } to { stroke-dashoffset:0; } }
@keyframes dibujar { from { stroke-dashoffset:2600; } to { stroke-dashoffset:0; } }

/* A partir de 1080 px las tarjetas se despegan y flotan sobre la captura. Por
   debajo se quedan debajo, en columna: superpuestas en una pantalla estrecha
   taparían justo lo que hay que ver. */
@media (min-width:1080px) {
  .escena-momentos { display:block; margin:0; }
  .momento { position:absolute; z-index:3; width:236px; }
  .momento-1 { top:2%; left:-10%; }
  .momento-2 { top:42%; right:-8%; }
  /* Desde abajo, pero por encima del pie de foto: con «bottom:-4%» la tarjeta
     se comía la línea que dice de dónde salen los datos, que es justo la que
     no puede faltar. */
  .momento-3 { bottom:15%; left:-6%; }
  .escena-curva { display:block; }
}
/* ── La fila de categorías ─────────────────────────────────────────────────
   Es lo que cuenta de un vistazo qué cabe aquí dentro, sin tener que leer
   nada. Cada icono lleva el color de su medio, y el color NUNCA va solo: al
   lado está siempre la palabra. */
.categorias { display:flex; flex-wrap:wrap; gap:10px 20px; align-items:center;
              margin:0 0 26px; font-size:14.5px; color:var(--ink-2); }
/* Cada icono viaja pegado a su palabra: si se dejan sueltos, al partirse la
   línea el dibujo se queda al final de una y el nombre al principio de la
   siguiente, y no hay forma de saber cuál es cuál. */
.categorias span { display:inline-flex; align-items:center; gap:7px; white-space:nowrap; }

@media (max-width:420px) { .categorias { gap:8px 14px; font-size:13.5px; } }

/* La versión en fichas de la misma fila: cada medio con su color, su icono y
   un ejemplo real de la biblioteca de ejemplo. */
.medios { list-style:none; display:grid; gap:10px; margin:0; padding:0;
          grid-template-columns:repeat(auto-fit, minmax(148px, 1fr)); }
@media (min-width:700px) { .medios { grid-template-columns:repeat(3, 1fr); gap:14px; } }
.medio { margin:0; background:var(--surface); border:1px solid var(--line);
         border-top:3px solid var(--tinte, var(--verde));
         border-radius:11px; padding:13px 14px; }
.medio-nombre { display:block; color:var(--ink); font-weight:700; font-size:14.5px;
                line-height:1.35; }
.medio-nombre .icono { vertical-align:-4px; margin-right:7px; }
.medio-ejemplo { display:block; margin-top:5px; font-size:12.5px; color:var(--ink-3);
                 line-height:1.45; }

/* ── La línea temporal cultural ────────────────────────────────────────────
   El elemento de identidad de la marca, y no un adorno: es el producto
   dibujado. Cada nodo es una obra con su fecha real, sacada de la biblioteca
   de ejemplo que cualquiera puede abrir sin registrarse.

   ── Por qué el hilo va en degradado ─────────────────────────────────────

   Porque es lo único que cuenta la idea sin una sola palabra: el hilo entra
   en cada nodo con el color del medio anterior y sale con el del siguiente.
   Un juego de mesa se vuelve libro, el libro se vuelve película, la película
   se vuelve concierto. Nueve medios y una sola historia — que es justo lo que
   la portada tardaba tres párrafos en explicar.

   Las paradas del degradado las calcula el generador con las MISMAS
   posiciones que colocan los nodos, así que el color cambia exactamente donde
   está la obra y no unos píxeles más allá.

   ── Dos formas para dos sitios, y ninguna es la otra apilada ────────────

   · En móvil, una línea VERTICAL con los hitos en fila india, y el mismo
     degradado de arriba abajo. Se lee como se lee un móvil, y no saca barra
     horizontal.
   · A partir de 900 px, una curva que atraviesa la pantalla. Los puntos del
     trazo salen de los mismos desplazamientos que las tarjetas, así que los
     nodos caen SOBRE la línea y no cerca. Por eso el trazo y las tarjetas no
     se pueden tocar por separado. */
.linea-caja { position:relative; }
.linea-trazo { display:none; }

.linea-cultural { list-style:none; margin:0; padding:0 0 0 34px; position:relative; }
.linea-cultural::before { content:""; position:absolute; left:9px; top:10px; bottom:10px;
                          width:3px; border-radius:3px;
                          background:var(--hilo, linear-gradient(var(--verde), var(--line))); }

.hito { position:relative; margin:0 0 22px; }
.hito:last-child { margin-bottom:0; }
/* El nodo de móvil. Lleva halo del color de su medio: es lo que hace que la
   línea se lea como una sucesión de momentos y no como una lista con viñetas. */
.hito::before { content:""; position:absolute; left:-31px; top:15px;
                width:13px; height:13px; border-radius:50%;
                background:var(--tinte, var(--verde));
                box-shadow:0 0 0 4px color-mix(in srgb, var(--tinte, #2BD9AB) 26%, transparent); }
.hito-nodo { display:none; }

.hito-caja { display:flex; gap:13px; align-items:center; }
.hito-caratula { flex:none; width:40px; height:58px; border-radius:6px;
                 display:flex; align-items:center; justify-content:center;
                 font-weight:700; font-size:16px; color:var(--tinte, var(--ink));
                 background:color-mix(in srgb, var(--tinte, #2BD9AB) 14%, transparent);
                 border:1px solid color-mix(in srgb, var(--tinte, #2BD9AB) 42%, transparent);
                 border-bottom:3px solid var(--tinte, var(--verde)); }
.hito-fecha { display:block; font-size:11.5px; letter-spacing:.07em;
              text-transform:uppercase; color:var(--tinte, var(--ink-3)); font-weight:700; }
.hito-obra { display:block; color:var(--ink);
             font-weight:700; font-size:14.5px; line-height:1.35; margin-top:3px; }
.hito-obra .icono { vertical-align:-4px; margin-right:5px; }
.hito-estado { display:block; font-size:12.5px; color:var(--ink-2); margin-top:2px; }
.franja-tinta .hito-obra { color:var(--tinta-ink); }
.franja-tinta .hito-estado { color:#A7AFBC; }

@media (min-width:900px) {
  .linea-caja { height:320px; margin:24px 0 8px; }
  .linea-trazo { display:block; position:absolute; left:0; top:0;
                 width:100%; height:320px; pointer-events:none; }
  .linea-trazo path { fill:none; stroke-linecap:round; stroke-linejoin:round;
                      vector-effect:non-scaling-stroke; }
  .linea-trazo .hilo { stroke:url(#hilo-delistado); stroke-width:3; }
  /* El resplandor: el mismo trazo, más grueso y translúcido. Da la sensación
     de luz sin ninguna imagen y sin ningún filtro caro de pintar. */
  .linea-trazo .halo { stroke:url(#hilo-delistado); stroke-width:11; opacity:.22; }

  .linea-cultural { padding:0; display:grid; grid-auto-flow:column;
                    grid-auto-columns:1fr; height:320px; }
  .linea-cultural::before { display:none; }

  /* El eje está a 160 px del borde de arriba. «--y» es cuánto se separa de él
     ese hito, y lo escriben el nodo, la tarjeta y el trazo a la vez. */
  .hito { height:320px; margin:0; padding:0 9px; }
  .hito::before { display:none; }
  .hito-nodo { display:block; position:absolute; left:50%;
               top:calc(160px + var(--y, 0px)); margin:-8px 0 0 -8px;
               width:16px; height:16px; border-radius:50%;
               background:var(--tinte, var(--verde));
               border:3px solid var(--bg);
               box-shadow:0 0 0 4px color-mix(in srgb, var(--tinte, #2BD9AB) 30%, transparent); }
  .hito-caja { position:absolute; left:9px; right:9px;
               display:block; text-align:center; }
  .hito-caratula { margin:0 auto 9px; }
  /* Arriba y abajo alternos: es lo que convierte una fila de tarjetas en una
     línea con ritmo. La clase la pone el generador junto al «--y», nunca a
     mano, para que el nodo y la tarjeta no se puedan separar. */
  .franja-tinta .hito-nodo { border-color:var(--tinta); }
  .hito-abajo .hito-caja { top:calc(160px + var(--y, 0px) + 20px); }
  .hito-arriba .hito-caja { bottom:calc(160px - var(--y, 0px) + 20px); }
}

/* La línea se dibuja al llegar a ella, y SIN JavaScript.
   «animation-timeline: view()» ata el avance de la animación al del scroll,
   así que no hace falta ni un observador ni un guion. Envuelto en @supports a
   propósito: donde no exista, el navegador se salta el bloque entero y la
   línea sale dibujada desde el principio. Nunca queda invisible, que es el
   fallo clásico de las animaciones de entrada mal puestas. */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .linea-trazo path { stroke-dasharray:2600;
                        animation:dibujar linear both;
                        animation-timeline:view();
                        animation-range:entry 15% cover 45%; }
  }
}

.etapas { list-style:none; display:grid; gap:16px; margin:34px 0 0; padding:0;
          grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); }
.etapa { margin:0; padding:17px 19px; border-radius:12px;
         background:rgba(255,255,255,.04); border:1px solid var(--tinta-line); }
.etapa-numero { display:inline-flex; align-items:center; justify-content:center;
                width:26px; height:26px; border-radius:50%; font-size:13px; font-weight:700;
                background:var(--verde); color:#0D1014; margin-bottom:9px; }
.etapa h3 { margin:0 0 5px; font-size:15.5px; }
.etapa p { margin:0; font-size:14px; }

/* ── La demostración con pestañas ──────────────────────────────────────────
   Sustituye a la rejilla de cuatro capturas pequeñas, que era ilegible: una
   captura de 1.100 px metida en 320 no enseña nada. Aquí se ve una sola, a
   tamaño grande, y se cambia de pantalla con pestañas de teclado. */
.pestanas { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 22px; padding:0; }
.pestanas button { font:inherit; font-size:14.5px; cursor:pointer;
                   min-height:44px; padding:11px 18px; border-radius:10px;
                   background:transparent; color:var(--ink-2);
                   border:1px solid var(--line); display:inline-flex;
                   align-items:center; gap:8px; }
.pestanas button:hover { color:var(--ink); border-color:var(--ink-3); }
.pestanas button[aria-selected="true"] { background:var(--ink); color:var(--bg);
                                         border-color:var(--ink); font-weight:700; }

.panel { display:grid; gap:26px; }
.panel[hidden] { display:none; }
@media (min-width:940px) { .panel { grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);
                                    gap:34px; align-items:center; } }
.panel h3 { margin:0 0 10px; font-size:clamp(19px,2.4vw,24px); line-height:1.25; }
.panel p { margin:0 0 14px; }

.panel-imagen { margin:0; }
.panel-imagen img { width:100%; height:auto; display:block; border-radius:13px;
                    border:1px solid var(--line);
                    box-shadow:0 18px 46px rgba(0,0,0,.24); }

/* Las llamadas gráficas: lo que hay que mirar dentro de la captura. Van como
   lista de texto y no como flechas dibujadas encima porque una flecha sobre
   una imagen se descoloca en cuanto cambia el ancho, y además no la lee un
   lector de pantalla. */
.senales { list-style:none; margin:0; padding:0; display:grid; gap:11px; }
.senal { margin:0; display:flex; gap:11px; align-items:flex-start; font-size:14.5px;
         color:var(--ink-2); }
.senal-num { flex:none; width:23px; height:23px; border-radius:50%;
             background:var(--verde); color:var(--bg); font-size:12.5px; font-weight:700;
             display:inline-flex; align-items:center; justify-content:center; margin-top:1px; }
.senal strong { display:block; color:var(--ink); }

/* ── Las tres escenas ──────────────────────────────────────────────────────
   Tu historia, tu colección y lo que sigue. Tres composiciones DISTINTAS a
   propósito: tres tarjetas iguales con tres textos parecidos es exactamente
   lo que hacía que la página se leyera como un documento. */
.escenas { display:grid; gap:20px; margin:0; }
@media (min-width:900px) { .escenas { grid-template-columns:repeat(3,1fr); gap:24px; } }
.escenita { background:var(--surface); border:1px solid var(--line);
            border-radius:14px; padding:22px; display:flex; flex-direction:column; }
.escenita h3 { margin:0 0 8px; font-size:17px; }
.escenita p { margin:0 0 14px; font-size:14.5px; }
.escenita .entradilla { margin-top:auto; }

/* Una estantería dibujada con las carátulas tipográficas del propio producto:
   cuando una obra no tiene imagen, la aplicación pinta la inicial sobre el
   color de su medio. Aquí se usa lo mismo, así que no hay ningún mockup. */
/* La estantería tiene que parecer una estantería: con cinco carátulas de 57 px
   parecía una fila de pestañas. Cuatro, más grandes y de alturas distintas,
   sí se leen como lomos en un estante. */
.estante { display:flex; gap:9px; align-items:flex-end; margin:8px 0 14px;
           min-height:148px; }
.caratula { flex:1 1 0; aspect-ratio:2/3; border-radius:6px;
            background:var(--crema-2); border:1px solid var(--line);
            display:flex; align-items:center; justify-content:center;
            color:var(--tinte, var(--ink-3)); font-weight:700; font-size:17px;
            border-bottom:3px solid var(--tinte, var(--line)); }
.caratula-alta { aspect-ratio:2/3.6; }
/* La carátula tipográfica del propio producto: cuando una obra no tiene
   imagen, la aplicación pinta la inicial sobre el color de su medio y le pone
   debajo el icono de la categoría. Aquí se hace igual — no es un dibujo
   inventado para la portada, es el componente de verdad. */
.caratula-icono { display:block; margin-top:5px; opacity:.85; }
.caratula-icono svg { width:14px; height:14px; display:block; }

.pie-estante { font-size:12.5px; color:var(--ink-3); margin:0 0 14px; }

.barra-progreso { height:7px; border-radius:5px; background:var(--crema-2);
                  border:1px solid var(--line); overflow:hidden; margin:9px 0 4px; }
.barra-progreso span { display:block; height:100%; background:var(--verde); }
.progreso-linea { display:flex; justify-content:space-between; gap:10px;
                  font-size:12.5px; color:var(--ink-3); margin:0 0 14px; }

/* ── El mes: la sección de las fechas ──────────────────────────────────────
   La más memorable de la página, y la que justifica el producto entero. Va
   sobre la banda oscura porque a estas alturas el ojo necesita un corte. */
.mes { display:grid; gap:28px; align-items:start; }
@media (min-width:940px) { .mes { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
                                  gap:48px; } }
.mes-titulo { font-size:clamp(30px,4.6vw,44px); line-height:1.08; margin:0 0 14px;
              letter-spacing:-.022em; }
.mes-lista { list-style:none; margin:0; padding:0; display:grid; gap:2px; }
.mes-fila { margin:0; display:flex; gap:14px; align-items:baseline;
            padding:13px 2px; border-bottom:1px solid var(--tinta-line); }
.mes-fila:last-child { border-bottom:0; }
.mes-dia { flex:none; width:52px; font-size:12.5px; letter-spacing:.05em;
           color:#A7AFBC; text-transform:uppercase; }
.mes-obra { color:var(--tinta-ink); font-weight:700; font-size:15.5px; }
.mes-que { display:block; font-size:13.5px; color:#A7AFBC; margin-top:2px; }
.mes-nota { margin:20px 0 0; padding:16px 18px; border-radius:12px;
            background:rgba(255,255,255,.045); border:1px solid var(--tinta-line);
            font-size:14.5px; font-style:italic; }

/* ── Las importaciones, como un recorrido ──────────────────────────────────
   De dónde vienes → qué pasa → dónde acabas. Los servicios van en texto y no
   con sus logotipos: reproducir una marca ajena exige permiso, y el nombre
   escrito comunica lo mismo sin pedirlo. */
.flujo { display:grid; gap:16px; align-items:center; margin:0; }
@media (min-width:900px) { .flujo { grid-template-columns:1fr auto 1fr auto 1fr; gap:20px; } }
.flujo-paso { background:var(--surface); border:1px solid var(--line);
              border-radius:14px; padding:20px; }
.flujo-paso h3 { margin:0 0 10px; font-size:15px; }
.flujo-paso p { margin:0; font-size:14px; }
.flujo-flecha { display:flex; align-items:center; justify-content:center;
                color:var(--verde); font-size:20px; line-height:1; }
@media (max-width:899px) { .flujo-flecha { transform:rotate(90deg); } }

.servicios { display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none; }
.servicios li { margin:0; }
.servicios a, .servicios span { display:inline-flex; align-items:center; min-height:44px;
                                padding:10px 14px; border-radius:9px;
                                background:var(--crema-2); border:1px solid var(--line);
                                font-size:13.5px; color:var(--ink-2); text-decoration:none; }
.servicios a:hover { color:var(--ink); border-color:var(--ink-3); }

/* ── Los cuatro bloques de funciones ───────────────────────────────────────
   Antes eran ocho tarjetas blancas seguidas, todas del mismo tamaño y con el
   mismo aspecto: la parte de la página donde el ojo se rendía. Ahora son
   cuatro grupos, cada uno con su pieza visual. */
.bloques { display:grid; gap:18px; margin:0; }
@media (min-width:760px) { .bloques { grid-template-columns:1fr 1fr; gap:22px; } }
.bloque { background:var(--surface); border:1px solid var(--line); border-radius:14px;
          padding:24px; }
.bloque h3 { margin:0 0 6px; font-size:17px; display:flex; align-items:center; gap:9px; }
.bloque > p { margin:0 0 14px; font-size:14.5px; }
.etiquetas { display:flex; flex-wrap:wrap; gap:7px; margin:0; padding:0; list-style:none; }
.etiquetas li { margin:0; padding:6px 11px; border-radius:7px; font-size:13px;
                background:var(--crema-2); border:1px solid var(--line); color:var(--ink-2); }

/* ── El móvil ──────────────────────────────────────────────────────────────
   Un marco sencillo y sin brillos: el objetivo es que se entienda que se
   instala, no dibujar un iPhone. */
.moviles { display:grid; gap:26px; align-items:center; margin:0; }
@media (min-width:900px) { .moviles { grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);
                                      gap:44px; } }
.pantallas { display:flex; gap:16px; justify-content:center; align-items:flex-end; }
@media (max-width:420px) {
  /* En 320 px los dos aparatos no caben a tamaño fijo. Se encogen en vez de
     partirse en dos filas: enseñar el móvil ANTES y el móvil DESPUÉS uno al
     lado del otro es lo que cuenta la sección. */
  .pantallas { gap:11px; }
  .pantalla { width:114px; padding:7px 5px; }
  .pantalla-alta { width:130px; }
}
.pantalla { width:132px; flex:0 0 auto; border:2px solid var(--line); border-radius:20px;
            background:var(--bg); padding:9px 7px; }
.pantalla-alta { width:152px; }
.pantalla-barra { height:4px; width:38px; border-radius:3px; background:var(--line);
                  margin:0 auto 9px; }
.pantalla-rejilla { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin:0;
                    padding:0; list-style:none; }
.pantalla-rejilla li { margin:0; aspect-ratio:1; border-radius:8px; background:var(--crema-2);
                       border:1px solid var(--line); }
.pantalla-rejilla .icono-app { background:var(--verde); border-color:var(--verde);
                               display:flex; align-items:center; justify-content:center; }
.pantalla-obras { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; margin:0;
                  padding:0; list-style:none; }
.pantalla-obras li { margin:0; aspect-ratio:2/3; border-radius:4px;
                     background:color-mix(in srgb, var(--tinte, #2BD9AB) 20%, transparent);
                     border-bottom:2px solid var(--tinte, var(--line)); }
.pantalla-pie { text-align:center; font-size:11.5px; color:var(--ink-3); margin:9px 0 0; }

.pasos { list-style:none; counter-reset:paso; margin:0; padding:0; display:grid; gap:14px; }
.pasos li { margin:0; counter-increment:paso; display:flex; gap:13px; align-items:flex-start;
            font-size:15px; }
.pasos li::before { content:counter(paso); flex:none; width:27px; height:27px;
                    border-radius:50%; background:var(--verde); color:var(--bg);
                    font-weight:700; font-size:13.5px;
                    display:inline-flex; align-items:center; justify-content:center; }

/* ── Privacidad, como un panel ─────────────────────────────────────────────
   Enseñar los interruptores apagados dice en un segundo lo que un párrafo
   tarda cinco líneas en decir. Son dibujos, no controles: no se pueden pulsar
   y están ocultos a los lectores de pantalla, que leen la lista de al lado. */
.panel-privacidad { background:var(--surface); border:1px solid var(--line);
                    border-radius:14px; padding:8px 20px; margin:0; }
.ajuste { display:flex; align-items:center; gap:14px; padding:15px 0;
          border-bottom:1px solid var(--line); }
.ajuste:last-child { border-bottom:0; }
.ajuste-texto { flex:1 1 auto; }
.ajuste-texto strong { display:block; font-size:14.5px; }
.ajuste-texto span { display:block; font-size:13px; color:var(--ink-3); }
.interruptor { flex:none; width:42px; height:24px; border-radius:13px;
               background:var(--crema-2); border:1px solid var(--line); position:relative; }
.interruptor::after { content:""; position:absolute; top:2px; left:2px;
                      width:18px; height:18px; border-radius:50%; background:var(--ink-3); }
.interruptor-si { background:var(--verde); border-color:var(--verde); }
.interruptor-si::after { left:auto; right:2px; background:var(--bg); }
.ajuste-estado { flex:none; font-size:12.5px; color:var(--ink-3); width:70px;
                 text-align:right; }

.descargas { display:flex; flex-wrap:wrap; gap:10px; margin:18px 0 0; }
.descarga { display:inline-flex; align-items:center; gap:9px; min-height:44px;
            padding:11px 17px; border-radius:10px; border:1px solid var(--line);
            background:var(--crema-2); color:var(--ink); font-size:14.5px; font-weight:700; }

/* ── La biblioteca pública ─────────────────────────────────────────────────
   Un trozo de verdad: las mismas carátulas tipográficas, las mismas fechas y
   el mismo orden que en /p/elena, y un enlace para ir a comprobarlo. */
.rejilla-obras { list-style:none; display:grid; gap:14px; margin:0 0 22px; padding:0;
                 grid-template-columns:repeat(auto-fill, minmax(104px, 1fr)); }
.obra { margin:0; }
.obra .caratula { font-size:27px; margin-bottom:9px; flex-direction:column; }
.obra-titulo { display:block; font-size:13px; color:var(--ink); font-weight:700;
               line-height:1.3; }
.obra-fecha { display:block; font-size:12px; color:var(--ink-3); margin-top:2px; }

/* ── El cierre ─────────────────────────────────────────────────────────────*/
.cierre { text-align:center; }
.cierre h2 { font-size:clamp(24px,3.6vw,34px); line-height:1.18; margin:0 0 12px;
             letter-spacing:-.02em; }
.cierre .destacado { margin:0 auto 26px; max-width:30em; }
.cierre .tarjeta { text-align:left; max-width:560px; margin-left:auto; margin-right:auto; }
.cierre-nodo { position:relative; display:block; width:16px; height:16px; border-radius:50%;
               margin:0 auto 22px; background:var(--tinta); border:3px solid var(--verde);
               box-shadow:0 0 0 5px rgba(43,217,171,.22); }
/* El hilo llega hasta aquí. Es lo que cierra la idea: la línea que empezó en
   el primer pantallazo termina justo encima de la caja donde se pide entrar. */
.cierre-nodo::before { content:""; position:absolute; left:50%; bottom:100%;
                       width:2px; height:56px; margin:0 0 9px -1px;
                       background:linear-gradient(transparent, var(--verde)); }
.cierre .tarjeta h2 { font-size:20px; letter-spacing:0; }

.tarjeta { background:var(--surface); border:1px solid var(--line); border-radius:12px;
           padding:22px 24px; margin:26px 0; }
/* Dentro de la banda oscura, la tarjeta también es oscura. Con la blanca de
   siempre, el texto secundario —gris claro— quedaba sobre blanco: ilegible
   en modo claro, y justo en la caja del formulario. */
.franja-tinta .tarjeta { background:rgba(255,255,255,.05); border-color:var(--tinta-line); }
.franja-tinta .formulario input[type=email] { background:var(--tinta); color:var(--tinta-ink);
                                              border-color:var(--tinta-line); }
.tarjeta h2, .tarjeta h3 { margin-top:0; }
/* El titular de una tarjeta de la guía ES el enlace a esa parte de la guía:
   es lo más pulsado del concentrador y medía 28 px de alto. */
.tarjeta h2 a, .tarjeta h3 a { display:inline-block; padding:8px 0; }

.boton { display:inline-block; background:var(--verde); color:var(--bg); text-decoration:none;
         font-weight:700; padding:14px 26px; border-radius:10px; font-size:16px; }
.boton:hover { filter:brightness(1.08); }
.boton.secundario { background:transparent; color:var(--ink-2); border:1px solid var(--line); font-weight:400; }

table { width:100%; border-collapse:collapse; margin:0 0 20px; font-size:14.5px; }
th { text-align:left; color:var(--ink-3); font-weight:400; font-size:12px;
     text-transform:uppercase; letter-spacing:.08em; padding:0 12px 8px 0;
     border-bottom:1px solid var(--line); }
td { padding:9px 12px 9px 0; border-bottom:1px solid var(--line); color:var(--ink-2);
     vertical-align:top; }
.tabla-envoltura { overflow-x:auto; }
/* Un enlace que es TODO el contenido de una celda no está «dentro de una
   frase», así que no le vale la excepción de WCAG para enlaces en línea: tiene
   que poder tocarse. Los que van dentro de un párrafo se quedan como están. */
td > a:only-child { display:inline-block; padding:12px 0; }

.superior { display:flex; justify-content:space-between; align-items:center; gap:16px;
            margin-bottom:26px; flex-wrap:wrap; }
.superior nav a { color:var(--ink-3); text-decoration:none; font-size:14px; margin-left:14px; }
.superior nav a:hover { color:var(--ink); }

.pie { margin-top:0; padding:30px 0 40px; border-top:1px solid var(--line);
       font-size:13px; color:var(--ink-3); background:var(--bg); }
.pie a { color:var(--ink-3); }
.pie nav a { margin-right:14px; display:inline-block; }

/* ── Aviso de cookies ──────────────────────────────────────────────────────
   Los dos botones son deliberadamente IGUALES: mismo tamaño, mismo peso, mismo
   color. Hacer «Aceptar» más llamativo que «Rechazar» es una de las cosas por
   las que la AEPD sanciona, y además es una guarrada. */
#aviso-cookies { position:fixed; inset:auto 0 0 0; z-index:9999;
                 background:var(--surface); border-top:1px solid var(--line);
                 box-shadow:0 -8px 32px rgba(0,0,0,.28); }
.aviso-cookies-caja { max-width:900px; margin:0 auto; padding:18px 22px;
                      display:flex; gap:22px; align-items:center; flex-wrap:wrap; }
.aviso-cookies-texto { flex:1 1 340px; }
.aviso-cookies-texto strong { display:block; font-size:15px; margin-bottom:4px; }
.aviso-cookies-texto p { margin:0; font-size:13.5px; line-height:1.55; }
.aviso-cookies-botones { display:flex; gap:10px; flex:0 0 auto; }
.aviso-cookies-botones button {
  font-family:inherit; font-size:14.5px; font-weight:400;
  padding:11px 24px; min-width:118px; border-radius:9px; cursor:pointer;
  background:transparent; color:var(--ink); border:1px solid var(--line); }
.aviso-cookies-botones button:hover { background:var(--bg); border-color:var(--ink-3); }
.aviso-cookies-botones button:focus-visible { outline:2px solid var(--verde); outline-offset:2px; }

@media (max-width:560px) {
  .aviso-cookies-caja { padding:16px 18px; gap:14px; }
  .aviso-cookies-botones { width:100%; }
  .aviso-cookies-botones button { flex:1; min-width:0; }
}

.enlace-desnudo { background:none; border:0; padding:0; font:inherit;
                  color:var(--ink-3); text-decoration:underline; cursor:pointer; }
.enlace-desnudo:hover { color:var(--ink); }

/* ── Formulario de invitación ──────────────────────────────────────────────
   En la propia portada: antes había que saltar a otro dominio para dejar el
   correo, y cada salto pierde gente. */
.formulario { display:flex; gap:10px; flex-wrap:wrap; margin:0; }
.formulario input[type=email] {
  flex:1 1 220px; font-family:inherit; font-size:16px;   /* 16px evita que el
     iPhone amplíe la página al enfocar el campo, que descoloca todo */
  padding:13px 16px; border-radius:10px;
  border:1px solid var(--line); background:var(--bg); color:var(--ink); }
.formulario input[type=email]:focus-visible { outline:2px solid var(--verde); outline-offset:1px; }
.formulario button { flex:0 0 auto; border:0; cursor:pointer; font-family:inherit; }
.formulario button[disabled] { opacity:.6; cursor:default; }

/* El campo señuelo: fuera de la vista pero sin display:none ni hidden, que es
   lo que los robots buenos detectan para saltárselo. */
.senuelo { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.aviso-formulario { margin:14px 0 0; font-size:14.5px; }
.aviso-formulario:empty { margin:0; }
.aviso-formulario.bien { color:var(--verde); }
.aviso-formulario.mal { color:#FF5A5F; }

/* Para lectores de pantalla, no para la vista. */
.oculto { position:absolute; width:1px; height:1px; overflow:hidden;
          clip:rect(0 0 0 0); white-space:nowrap; }

/* ── Las capturas de pantalla ──────────────────────────────────────────────
   Van con «loading=lazy» y con las medidas puestas en el HTML: sin ellas, la
   página da un salto cuando cada imagen termina de cargar, y ese salto es lo
   que hace pulsar donde no era. */
.capturas { display:grid; gap:26px; margin:26px 0 0; }
@media (min-width:820px) { .capturas { grid-template-columns:1fr 1fr; } }

.captura { margin:0; }
.captura img { width:100%; height:auto; display:block;
               border:1px solid var(--line); border-radius:12px; }
.captura figcaption { margin:10px 2px 0; font-size:14.5px; color:var(--ink-2);
                      line-height:1.5; }
.captura figcaption strong { color:var(--ink); }

/* Columnas de rejilla. Parecen vacías y no lo son: sin «min-width:0» una
   celda de rejilla no baja de su contenido más ancho, y un título largo o una
   URL sin espacios ensanchan la fila entera hasta sacar barra horizontal. */
.hito-texto, .panel-texto, .mes-texto, .moviles-texto, .privacidad-texto,
.contenido-guia { min-width:0; }

/* La línea corta de «Tu historia»: la misma pieza, sin trazo y sin curva.
   Nunca pasa a horizontal, ni siquiera en escritorio: vive dentro de una
   columna de un tercio. */
.linea-mini { margin:4px 0 16px; }
.linea-mini .hito { margin-bottom:14px; }
@media (min-width:900px) {
  .linea-mini { display:block; height:auto; padding-left:34px; }
  .linea-mini::before { display:block; }
  .linea-mini .hito { height:auto; padding:0; position:relative; }
  .linea-mini .hito::before { display:block; }
  .linea-mini .hito-caja { position:static; display:block; text-align:left; }
}

/* ── Componentes de la guía ────────────────────────────────────────────────
   La guía estaba bien organizada y no tenía ni una imagen: quien sigue una
   tarea necesita ver la pantalla de la que se le habla. Estas piezas son las
   mismas en todas las páginas para que una tarea nueva no invente su formato. */
.figura { margin:22px 0; }
.figura img { width:100%; height:auto; display:block; border-radius:12px;
              border:1px solid var(--line); }
.figura figcaption { margin:10px 2px 0; font-size:13.5px; color:var(--ink-3);
                     line-height:1.5; }
.figura figcaption strong { color:var(--ink-2); }

.consejo, .advertencia { border-radius:12px; padding:16px 18px; margin:20px 0;
                         border:1px solid var(--line); background:var(--crema-2);
                         font-size:14.5px; }
.consejo { border-left:3px solid var(--verde); }
.advertencia { border-left:3px solid #d95926; }
.consejo p, .advertencia p { margin:0; }
.consejo strong, .advertencia strong { display:block; margin-bottom:4px; color:var(--ink); }

.indice-lateral { margin:0 0 26px; }
.indice-lateral ol { margin:0; }
/* Es un <h2> porque va detrás del <h1> y antes de los <h2> de las secciones:
   con <h3> el documento saltaba un nivel, y un lector de pantalla que navega
   por titulares se encuentra un hueco. Que se vea pequeño es cosa aparte. */
.indice-lateral h2 { font-size:12.5px; margin:0 0 10px; letter-spacing:.07em;
                     text-transform:uppercase; color:var(--ink-3); }
.indice-lateral a { display:inline-block; padding:10px 0; }

@media (min-width:1100px) {
  /* En escritorio el índice se queda a la vista mientras se baja: en una
     página de tarea, saber cuántos pasos quedan es la mitad de la tranquilidad. */
  .con-indice { display:grid; grid-template-columns:212px minmax(0,1fr); gap:44px;
                align-items:start; }
  .indice-lateral { position:sticky; top:84px; margin:0; }
  .indice-lateral .tarjeta { margin:0; padding:16px 18px; }
}

/* ── Saltar al contenido ───────────────────────────────────────────────────
   Escondido hasta que se le da el foco con el tabulador. No con
   «display:none», que lo quitaría también del orden de tabulación y lo dejaría
   inservible: se saca de la pantalla y vuelve al enfocarlo. */
.saltar { position:absolute; left:-9999px; top:0; z-index:100;
          background:var(--verde); color:var(--bg); padding:12px 18px;
          border-radius:0 0 10px 0; font-weight:600; text-decoration:none; }
.saltar:focus { left:0; }

/* El foco, visible siempre. Sin esto, quien navega con teclado no sabe dónde
   está — y el navegador lo quita en cuanto se le toca el estilo a un botón. */
a:focus-visible, button:focus-visible, input:focus-visible, summary:focus-visible {
  outline:3px solid var(--verde); outline-offset:2px; border-radius:4px;
}

/* Objetivos táctiles de 44 px. Los enlaces de la navegación y del pie eran de
   17 px de alto: imposibles de acertar con el pulgar en marcha. */
.superior nav a, .pie nav a, .pie a { display:inline-block; padding:12px 4px; }
/* El botón de preferencias vive en la misma fila que los enlaces legales y
   tenía la mitad de alto: parece un enlace, así que tiene que tocarse igual. */
.pie .enlace-desnudo { padding:12px 4px; }

/* ── La llamada a la acción del principio ──────────────────────────────────
   Antes el primer botón de «pedir invitación» aparecía tras 1.823 caracteres
   de texto: quien llegaba tenía que leerse media página para encontrar qué
   hacer. Ahora está en el primer pantallazo, con UNA acción principal y una
   secundaria, no cinco botones distintos para lo mismo.

   Los 44 px de alto no son estética: son el objetivo táctil mínimo de WCAG
   2.2, y un botón de 34 px se falla con el pulgar en marcha. */
.llamada { display:flex; gap:12px; flex-wrap:wrap; margin:22px 0 10px; }

.btn-principal, .btn-secundario {
  display:inline-flex; align-items:center; justify-content:center;
  min-height:44px; padding:12px 22px; border-radius:10px;
  font-size:16px; font-weight:600; text-decoration:none;
}
.btn-principal { background:var(--verde); color:var(--bg); }
.btn-principal:hover { filter:brightness(1.08); }
.btn-secundario { border:1px solid var(--line); color:var(--ink); }
.btn-secundario:hover { border-color:var(--ink-3); }
.franja-tinta .btn-secundario { border-color:var(--tinta-line); color:var(--tinta-ink); }

/* ── Migas de pan ──────────────────────────────────────────────────────────
   Dicen dónde estás y cómo volver. Hacen falta desde que la guía dejó de ser
   una página: sin ellas, quien llega a «/guia/traer-tus-datos.html» desde un
   buscador no sabe que hay más ni cómo llegar. */
.migas { font-size:13.5px; color:var(--ink-3); margin:0 0 12px; line-height:1.5; }
/* Los enlaces de las migas medían 18 px de alto. Son la forma de volver
   atrás, o sea de lo más pulsado de una página de tarea, y eran lo más
   difícil de acertar de toda la web. */
.migas a { color:var(--ink-3); display:inline-block; padding:12px 3px; }
.migas span { color:var(--ink-2); }

/* ── En móvil, los botones ocupan el ancho ─────────────────────────────────
   Con 390 px de pantalla, dos botones uno debajo de otro y con el ancho de su
   texto dejan una zona de toque estrecha y desalineada. A ancho completo se
   aciertan sin mirar, que es como se usa el móvil andando.

   El principal primero y separado del secundario: son dos acciones distintas y
   pegadas se pulsa la que no era. */
@media (max-width: 480px) {
  .llamada { flex-direction: column; gap: 10px; }
  .btn-principal, .btn-secundario { width: 100%; }
}

/* ── Cuando se pide menos movimiento ───────────────────────────────────────
   No es una preferencia estética: para quien tiene trastornos vestibulares,
   una animación puede provocar mareo real. Aquí se apaga TODO, incluido el
   desplazamiento suave, y la página queda idéntica en lo que cuenta. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after {
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important; scroll-behavior:auto !important;
  }
  .escena-curva path { stroke-dashoffset:0; }
}
