/*
 * marca.css — Identidad visual de Tarsis One (01/09/2026).
 *
 * De dónde sale: Jacobo trajo el logo nuevo (máscara tartésica dorada + «TARSIS» cian +
 * «ONE» dorado) y un documento de propuesta gráfica, `Tarsis_One_Liquid_Glass_Design_
 * Foundation.md`, con el encargo explícito de NO aplicarlo como decisión unilateral, sino
 * de contrastarlo con lo que el proyecto ya tenía decidido y respetar lo que tiene peso.
 * Esto es el resultado de ese contraste. Las tres decisiones que lo definen:
 *
 * 1. EL FONDO BLANCO MANDA, y eso invierte el documento. La propuesta recomienda modo
 *    oscuro como experiencia principal (obsidiana/navy). Jacobo pidió lo contrario: «debe
 *    predominar el fondo limpio y blanco». Así que la paleta oscura del documento NO es la
 *    base del producto — es la paleta del TEMA OSCURO, que es exactamente su sitio y donde
 *    mejora al gris neutro que teníamos.
 *
 * 2. EL CIAN DE MARCA NO PUEDE SER TEXTO SOBRE BLANCO. Medido: #18D7F4 sobre blanco da
 *    1,74 de contraste, y el mínimo legible es 4,5. El oro, 2,08. Los dos están calculados
 *    para fondo oscuro. Sobre blanco hacen falta versiones oscurecidas del MISMO tono
 *    (188°), igual que hoy el verde de marca #63BE21 convive con el #3f6b1e de los textos.
 *    Por eso hay dos escalones y no uno:
 *        cian de MARCA   #18D7F4  · relleno, indicadores, gráficos, el logo, tinte del vidrio
 *        cian de TEXTO   #0E7E8F  · enlaces, rótulos, fondos sólidos con texto blanco (4,77)
 *    Poner el cian de marca en un enlace sería el error que este bloque existe para evitar.
 *
 * 3. NO SE RENOMBRAN LOS TOKENS. La familia `--verde-*` está usada ~250 veces en 4.000
 *    líneas de CSS y en el JS. Renombrarla sería una limpieza cosmética con riesgo real de
 *    romper algo invisible (la lección del 31/08: borrar por posición en un fichero grande
 *    es una apuesta, no una limpieza). Se cambia el VALOR y se deja el nombre: el token es
 *    «el acento de la marca», y la marca ya no es verde. El día que se renombre, se hace
 *    con un script que verifique referencias, no a mano.
 *
 * Lo que el documento aporta y se adopta: la tipografía (Sora + Inter frente a Arial), el
 * oro como color patrimonial con papel acotado, la paleta oscura, los radios, el motion y
 * la regla de que el símbolo NO se repite en todos los módulos.
 *
 * Lo que se respeta del proyecto y no se toca: el Liquid Glass (directriz de Jacobo del
 * 18/07/2026, `docs/DISENO-LIQUID-GLASS.md`), la marca de agua de Mitra, y las carpetas y
 * los resultados de búsqueda de Radar.
 *
 * Se carga DESPUÉS de liquid.css: gana la cascada con los mismos selectores.
 */

/* ============================== Tipografía vendorizada ==============================
   Fuentes VARIABLES: un solo fichero cubre todos los pesos (Google sirve el mismo woff2
   para 400, 500, 600 y 700 — comprobado por md5). Van vendorizadas, no enlazadas: el
   proyecto no hace peticiones externas en tiempo de ejecución, igual que el mapa de
   España. 73 KB entre las dos, subconjunto latino. */
@font-face {
  font-family: 'Sora';
  src: url('/vendor/fuentes/sora.woff2?v=779e9507b3') format('woff2');
  font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Inter';
  src: url('/vendor/fuentes/inter.woff2?v=f11d729bb0') format('woff2');
  font-weight: 100 900; font-style: normal; font-display: swap;
}

:root {
  /* --- COLORES DE MARCA, tal como vienen del documento y del propio logo -------------
     (el logo real usa #00CCF8 y #E8B830; los tokens del documento son su versión
     ligeramente calmada, que es la que funciona en interfaz. Se usan los del documento.) */
  --tarsis-cian: #18D7F4;
  --tarsis-cian-vivo: #43E7FF;
  --tarsis-oro: #D7AF43;
  --tarsis-oro-claro: #E8C966;
  --tarsis-oro-oscuro: #A98224;

  /* --- LOS COLORES EN LOS QUE ESTÁ IMPRESO EL LOGO (Jacobo, 01/09/2026) -----------------
     El logo llegó con los colores de marca tal cual —cian de neón y oro brillante— y sobre
     blanco desaparecía: 1,87 y 1,80 de contraste, cuando lo mínimo para que un gráfico se
     lea son 3,0. Sobre el navy del tema oscuro daban 10, así que el mismo fichero parecía
     dos logos distintos. Jacobo pidió UN SOLO logo legible en los dos fondos.
     Barriendo brillo Y saturación sobre el tono exacto del logo, el techo de un color único
     está en 4,3 — y se alcanza sin apagarlo: este cian conserva el 75 % de saturación.
         cian  #0086A3   4,25 sobre blanco · 4,45 sobre navy
         oro   #A5702C   4,24 sobre blanco · 4,47 sobre navy
     El ORO es EXACTAMENTE el del botón BRONCE (encargo de Jacobo: «que coincida con el color
     del botón de bronce»). El primer intento fue #9A7304, del mismo peso pero un oro oliváceo
     de luz 31 %: correcto por contraste y apagado a la vista. El bronce sube a luz 41 % y es
     más cálido, así que el logo aclara sin perder legibilidad. El cian se recalculó para pesar
     lo MISMO que el bronce sobre blanco, y a ese peso el más saturado posible es este —al
     100 %, frente al 75 % de antes—: aclara y además gana viveza.
     No sustituyen a los de arriba: aquellos siguen siendo el color de MARCA para rellenos,
     indicadores y gráficos, donde el tamaño y la masa hacen que sí se vean. Estos son los
     del DIBUJO, que es todo trazo fino y no se puede permitir el lujo. */
  --tarsis-cian-logo: #0086A3;
  --tarsis-oro-logo: #A5702C;
  /*
   * EL COLOR DE LO COMPARADO (07/09/2026, encargo de Jacobo: «el comparativo de color bronce
   * dorado, también el del sistema»). Es el MISMO bronce del plan —#A5702C— y por eso tiene token
   * propio en vez de ir escrito a mano en la gráfica: sobre el fondo oscuro ese bronce se hunde,
   * igual que le pasa al cian, así que allí aclara al oro de marca. Es la misma regla que ya sigue
   * `--verde-oscuro`: en oscuro el acento ACLARA, no oscurece.
   */
  --comparado: #A5702C;

  /* --- Escalones oscurecidos para fondo BLANCO. El número entre paréntesis es el
         contraste medido sobre blanco; 4,5 es el mínimo para texto normal. */
  --tarsis-cian-medio: #12A9C4;   /* 2,80 — reglas, bordes, relleno decorativo */
  --tarsis-cian-texto: #0E7E8F;   /* 4,77 — enlaces y rótulos */
  --tarsis-cian-hondo: #0C6C7A;   /* 6,10 — texto sobre tinte claro */
  --tarsis-cian-tinta: #0A5A66;   /* 7,87 — texto fuerte */

  /* --- LA FAMILIA DE ACENTO. Mismo nombre de siempre, valor nuevo (ver cabecera §3).
         El brillo de cada tono se conserva del verde original y solo rota el tono: así el
         diseño mantiene su ritmo tonal y únicamente cambia el color. */
  --verde: #12A9C4;
  --verde-oscuro: #0E7E8F;
  --verde-solido: #0E7E8F;
  --verde-texto: #0C6C7A;
  --verde-texto-2: #0A5A66;
  /* Los tintes van MÁS APAGADOS de lo que salía al rotar el tono sin más, y esto es un
     ajuste hecho mirando, no calculando: a la misma luminosidad el cian claro pesa más que
     el verde claro —el ojo es más sensible al azul contra blanco—, así que la rotación
     mecánica dejaba las tarjetas sin leer del Radar gritando en turquesa. Bajada la
     saturación, el fondo vuelve a leerse como blanco con un matiz, que es el encargo. */
  --verde-bg: #E9F7FB;
  --verde-sinleer: #E4F7FD;
  --verde-sinleer-bd: #B7E4F0;
  --verde-bg-hover: #F1FAFD;
  --verde-bg-cal: #F7FCFE;
  --verde-bg-panel: #F0F9FC;
  --verde-bg-dg: #EDF8FC;
  --verde-bg-badge: #DDF2F9;
  --verde-bg-chip: #D6EFF7;
  --verde-bd: #C9E9F2;
  --verde-bd-2: #B4E0EC;
  --verde-bd-dg: #C4E7F2;
  --verde-bd-card: #C2E2EA;
  --verde-bd-sub: #DCEFF4;
  --verde-foto: #EBF2F4;
  /* `--verde-ok` NO se toca: es el verde SEMÁNTICO de «correcto», y el documento es
     explícito en que los colores semánticos no se sustituyen por el color de marca. */

  /* --- ORO. Sustituye al ámbar. Papel acotado por el documento: marca, premium y estados
         especiales; nunca superficies grandes ni botón primario general. */
  --ambar: #A98224;
  --ambar-fondo: #FBF4E2;

  /* --- Tipografía. Sora para lo que es marca e interfaz (títulos, navegación, botones,
         números destacados) e Inter para el texto denso (tablas, formularios, listas de
         impactos). Es la combinación que recomienda el documento y la que hace que las
         letras del logo no queden huérfanas al lado de una Arial. */
  --tipo-marca: 'Sora', 'Segoe UI', system-ui, sans-serif;
  --tipo-texto: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
}

/* ============================== TEMA OSCURO ==============================
   Aquí SÍ manda el documento: obsidiana y navy en vez del gris neutro que había. Es su
   sitio natural, y de paso el tema oscuro deja de ser «el claro apagado» para tener
   identidad propia. Los textos usan el blanco azulado del documento, nunca #fff puro. */
html[data-modo="incognito-oscuro"] {
  --fondo: #08111E;          /* obsidiana */
  --superficie: #0D1828;     /* medianoche */
  --superficie-2: #111E30;   /* navy profundo */
  --marco: #050A11;          /* vacío */
  --gris-fila: #101B2B;
  --texto: #F5F8FC;
  --texto-suave: #B9C5D6;
  --linea: #1E2C42;

  --verde: #2FC6E0;
  --verde-oscuro: #5FE0F5;   /* en oscuro el acento de texto ACLARA, no oscurece */
  --comparado: #D7AF43;      /* el mismo bronce, en su variante legible sobre obsidiana */
  --verde-solido: #0E5E6C;
  --verde-texto: #8DE9FA;
  --verde-texto-2: #B7F2FF;
  --verde-bg: #10283A;
  --verde-sinleer: #0F2E3C;
  --verde-sinleer-bd: #1D5568;
  --verde-bg-hover: #122A3C;
  --verde-bg-cal: #0C1E2E;
  --verde-bg-panel: #0C2030;
  --verde-bg-dg: #102636;
  --verde-bg-badge: #14364A;
  --verde-bg-chip: #123043;
  --verde-bd: #1E3D52;
  --verde-bd-2: #275068;
  --verde-bd-dg: #1E3D52;
  --verde-bd-card: #1E3D52;
  --verde-bd-sub: #183346;
  --verde-foto: #14283A;

  --ambar: #E8C966;
  --ambar-fondo: #2A2313;

  /* El vidrio, en oscuro, sobre navy: el canto especular baja y el vidrio se oscurece. */
  --lg-vidrio: rgba(20, 38, 60, 0.56);
  --lg-vidrio-denso: rgba(20, 38, 60, 0.70);
  --lg-panel: rgba(17, 30, 48, 0.80);
  --lg-panel-solido: rgba(17, 30, 48, 0.94);
  --lg-rim: rgba(255, 255, 255, 0.12);
  --lg-rim-suave: rgba(255, 255, 255, 0.06);
  --lg-borde: rgba(150, 200, 220, 0.16);
}

/* El borde del vidrio en claro llevaba un tinte VERDE (rgba(120,130,120,…)). Se pasa a un
   gris azulado neutro: con la marca en cian, un canto verdoso desafinaba. */
:root { --lg-borde: rgba(90, 120, 135, 0.22); }

/* ============================== Tipografía aplicada ============================== */
html, body { font-family: var(--tipo-texto); }

/* Sora en lo que es marca e interfaz. Ligeramente apretada: la geométrica pide menos
   espacio entre letras que la Arial que había, y si no los títulos se ven flojos. */
h1, h2, h3, h4,
.logo, .barra-superior button, .btn-nav,
.tar-radar-btn, .tar-pill, .boton-primario, .boton-secundario,
.badge, .dos-meta, .subtitulo {
  font-family: var(--tipo-marca);
}
h1, h2, h3, h4 { letter-spacing: -.018em; }
h1 { letter-spacing: -.028em; }

/* Las MAYÚSCULAS solo funcionan en etiquetas pequeñas, y con aire entre letras
   (regla §11 del documento). Es donde ya vive la insignia del plan. */
.badge, .tar-plan, .dos-etiqueta { letter-spacing: .06em; }

/* ============================== El logo en la cabecera ==============================
   El lockup horizontal es la versión principal (regla §19 del documento). El símbolo va
   al ~115 % de la altura visual del texto, que es la proporción que trae el propio
   fichero, así que basta con fijar la altura del conjunto. */
/* ALINEADO POR EL CENTRO DEL TEXTO, no por el de la imagen (Jacobo, 01/09/2026: «que se vea
   que están alineados por el centro, siendo el centro del texto del logo el centro del logo al
   completo»). La máscara baja mucho más que las letras, así que el centro del dibujo y el
   centro de lo que se lee NO son el mismo punto: en el fichero hay 11,5 px de diferencia sobre
   132 de alto. Centrando la imagen —que es lo que hacía el navegador— las letras quedaban 2,5
   px por debajo de los botones, que estaban todos clavados en la misma línea.

   El desplazamiento va en PROPORCIÓN a la altura (11,5/132 = 0,087) y no como un número fijo,
   para que siga valiendo si algún día se cambia el tamaño del logo. Y va en `transform`, que no
   ocupa espacio: así no altera la altura de la barra. */
.logo-tarsis {
  --logo-alto: 30px;
  height: var(--logo-alto); width: auto; display: block;
  transform: translateY(calc(var(--logo-alto) * -0.087));
}
@media (max-width: 720px) { .logo-tarsis { --logo-alto: 26px; } }

/* ============================== Foco y selección ============================== */
:focus-visible {
  outline: 2px solid var(--tarsis-cian-texto);
  outline-offset: 2px;
}
::selection { background: rgba(24, 215, 244, .26); }

/* ============================== Movimiento ==============================
   La curva del documento. Es más contenida que un rebote y encaja con el vidrio: las
   cosas entran deprisa y se posan, no saltan. */
:root {
  --ease-premium: cubic-bezier(.2, .8, .2, 1);
  --dur-rapida: 160ms;
  --dur-ui: 220ms;
  --dur-panel: 340ms;
}
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* ============================== El oro, con su papel acotado ==============================
   Regla del documento (§2.2 y §27): el oro es marca, valor y estados especiales; nunca
   superficies grandes ni el botón primario. Aquí se le dan sus tres sitios y ninguno más.

   NO se le da a la insignia BRONCE, aunque parezca lo obvio: la escalera del negocio es
   Gratis → Bronce → **Oro**, así que el oro tiene que quedar libre para el plan que viene.
   El bronce se queda bronce (#a5702c). Y DESDE EL 10/10/2026 (Jacobo), más hondo: la pastilla BRONCE
   es #94622A, sólida (5,2:1 con la letra blanca; con #a5702c al 95 % eran 3,89). Es `--bronce-plan`;
   el oro del LOGO (`--tarsis-oro-logo`, #A5702C) y el color de lo comparado no cambian. */
:root { --bronce-plan: #94622A; --bronce-plan-hondo: #7E5323; }

/* 1. PRO — lo que exige plan de pago. */
.tar-herr-pro {
  /* #A98224 daba 3,29 sobre este tinte y es texto de 10 px, que exige 4,5. Medido al aplicar
     los colores del logo, y arreglado de paso porque es la misma familia. #8A6A15 da 4,68. */
  color: #8A6A15;
  background: rgba(215, 175, 67, .11);
  border-color: rgba(215, 175, 67, .34);
}
html[data-modo="incognito-oscuro"] .tar-herr-pro {
  color: var(--tarsis-oro-claro);
  background: rgba(215, 175, 67, .14);
  border-color: rgba(215, 175, 67, .30);
}

/* 2. (Retirado el 23/09/2026.) El tablón GLOBAL de Tareas llevaba el borde de oro por ser el
      tablón especial; desde que es un tablón más (Jacobo: se renombra, se mueve y se borra
      como cualquiera), ya no hay nada especial que señalar. */

/* 3. La máscara. Vive en el logo y en el favicon, y en ningún otro sitio (regla §20:
      repetirla en cada módulo le quita valor simbólico). */

/* La mesa de las CARPETAS de dossiers llevaba un gris verdoso (#f1f4ee) que era el verde de
   la marca vieja rebajado. Se pasa a un gris frío del mismo peso: las carpetas y su
   comportamiento no se tocan —son decisión con peso del proyecto—, solo el color del tapete. */
:root { --tar-zona-carpetas: #EEF3F5; }
html[data-modo="incognito-oscuro"] { --tar-zona-carpetas: #0C1828; }

/* ==================== LA CABECERA, HIJA DEL LOGO ====================
 * «Que todos los botones del header sean coherentes y se note que son hijos del logo»
 * (Jacobo, 01/09/2026). De las cuatro propuestas eligió la CÁPSULA GRABADA, que toma dos
 * cosas del dibujo y ninguna es una copia de él:
 *
 *   · DEL LOGOTIPO, las mayúsculas con mucho aire entre letras. Es su rasgo más
 *     reconocible —«T A R S I S  O N E»— y el que hace que un botón se lea como pariente
 *     suyo sin dibujar nada.
 *   · DE LA MÁSCARA, la grieta: la línea vertical que le parte la cara en dos mitades.
 *     Aquí separa a Radar de Mitra dentro de una cápsula compartida.
 *
 * Y respeta el Liquid Glass, que es directriz con peso: la cápsula sigue siendo la forma
 * por defecto de los controles, y el vidrio se queda en UN solo sitio por grupo.
 */

/* SIN CÁPSULA ENVOLVENTE (Jacobo, 01/09/2026: «no debe ser una pastilla, basta con que haya
   un separador»). El primer montaje metía a Radar y Mitra dentro de una cápsula de vidrio, y
   eran dos marcos concéntricos discutiendo: el de fuera y el del botón activo. Ahora el grupo
   no dibuja nada — solo ordena— y lo único que se ve es la grieta entre los dos y la pastilla
   cian del que está abierto. De paso desaparece el vidrio sobre vidrio del que hablaba la
   regla §8, porque ya no hay vidrio ninguno aquí. */
.tar-herr-grupo {
  display: inline-flex; align-items: center; gap: 0;
  padding: 0; border: 0; background: transparent; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.tar-herr-grupo .tar-radar-menu { display: inline-flex; }

/* Los botones, dentro del grupo: planos, en versalitas espaciadas. */
.tar-herr-grupo .tar-radar-btn {
  background: transparent; border: 0; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
  font-family: var(--tipo-marca);
  font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  padding: 8px 17px;
  transition: color var(--dur-ui, .22s) var(--ease-premium, ease),
              background var(--dur-ui, .22s) var(--ease-premium, ease);
}
.tar-herr-grupo .tar-radar-btn:hover { background: rgba(0,134,163,.07); color: var(--verde-oscuro); }
html[data-modo="incognito-oscuro"] .tar-herr-grupo .tar-radar-btn:hover { background: rgba(47,198,224,.12); }

/* LA HERRAMIENTA ABIERTA. El cian es el de «TARSIS», que es la mitad del logo que nombra a
   la plataforma; el bronce se reserva para la cuenta (ver más abajo). */
.tar-herr-grupo .tar-radar-btn.activo {
  background: rgba(0,134,163,.09);
  color: var(--verde-oscuro);
  box-shadow: inset 0 0 0 1.5px var(--verde-oscuro);
  border-radius: 999px;
}
html[data-modo="incognito-oscuro"] .tar-herr-grupo .tar-radar-btn.activo {
  background: rgba(47,198,224,.14);
  box-shadow: inset 0 0 0 1.5px rgba(95,224,245,.55);
}

/* EL DESPLEGABLE DE RADAR ES LA MISMA CÁPSULA, EN VERTICAL (01/09/2026).
   Primer intento: solo se les pusieron las versalitas y se dejaron como estaban — tres trozos
   de vidrio sueltos de 37 px de alto, con sombra de panel flotante, al lado de unos botones
   planos de 34. No se parecían en nada a la cabecera y Jacobo lo cazó a la primera.
   Ahora el vidrio vive en la CAJA y las filas van planas, exactamente igual que Radar y Mitra
   dentro de su grupo; entre fila y fila, la misma grieta, aquí tumbada. */
.tar-submenu-caja {
  display: flex; flex-direction: column; align-items: stretch; min-width: 216px;
  padding: 3px; border-radius: 18px;
  background: var(--lg-panel-solido, rgba(255,255,255,.94));
  border: 1.5px solid var(--lg-borde, rgba(0,0,0,.1));
  backdrop-filter: blur(var(--lg-blur, 18px)) saturate(var(--lg-sat, 1.75));
  -webkit-backdrop-filter: blur(var(--lg-blur, 18px)) saturate(var(--lg-sat, 1.75));
  box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
  transform-origin: top left;
  opacity: 0; transform: translateY(-9px) scale(.97); pointer-events: none;
  transition: opacity .2s ease, transform .3s cubic-bezier(.34,1.4,.64,1);
}
/* Se abre con los MISMOS disparadores que tenían las pastillas, para no tocar la interacción:
   hover del botón, hover del propio menú, o foco de teclado. */
.tar-radar-btn:hover + .tar-submenu .tar-submenu-caja,
.tar-submenu:hover .tar-submenu-caja,
.tar-radar-menu:has(:focus-visible) .tar-submenu-caja { opacity: 1; transform: none; pointer-events: auto; }
.tar-radar-menu.cerrado .tar-submenu-caja {
  opacity: 0 !important; transform: translateY(-9px) scale(.97) !important; pointer-events: none !important;
}

/* Las filas: planas y con la métrica EXACTA de los botones del grupo. Vale para el
   desplegable Y para el índice de Configuración: es la misma pieza en dos sitios, así que
   comparte selector en vez de duplicarse (si se duplicara, se separarían con el tiempo). */
.tar-submenu .tar-pill, .cfg-nav .tar-pill {
  /* `pointer-events: INHERIT`, y esto no es un detalle: con `auto` las filas seguían siendo
     tocables aunque su caja estuviera invisible, así que pasar el ratón por DONDE ESTARÍA el
     menú —debajo de Mitra, debajo del plan— lo abría. El menú se desplegaba desde su propio
     fantasma. Heredando, la caja manda: si ella no recibe el ratón, sus filas tampoco, y el
     menú solo se abre desde la pastilla o el icono. */
  opacity: 1; transform: none; pointer-events: inherit; transition-delay: 0s !important;
  align-self: stretch;
  background: transparent; border: 0; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
  padding: 8px 15px; font-family: var(--tipo-marca);
  font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  transition: background var(--dur-ui, .22s) var(--ease-premium, ease), color var(--dur-ui, .22s) var(--ease-premium, ease);
}
.tar-submenu .tar-pill:hover, .cfg-nav .tar-pill:hover { background: rgba(0,134,163,.08); color: var(--verde-oscuro); }
html[data-modo="incognito-oscuro"] .tar-submenu .tar-pill:hover,
html[data-modo="incognito-oscuro"] .cfg-nav .tar-pill:hover { background: rgba(47,198,224,.13); }
/* LA GRIETA, tumbada: separa fila de fila igual que separa a Radar de Mitra. */
.tar-submenu .tar-pill + .tar-pill,
.cfg-nav .tar-pill + .tar-pill { border-top: 1.5px solid var(--lg-borde, rgba(0,0,0,.1)); }

/* LAS ESQUINAS DEL RESALTADO SIGUEN A LA CAJA (Jacobo, 01/09/2026). Cuando una fila se pinta
   —al pasar el ratón, o porque es una carpeta con color— su forma tiene que encajar con la
   cápsula que la contiene: la de arriba redondea SOLO arriba, la de abajo SOLO abajo, y las
   del medio van rectas. Antes la primera era una pastilla entera y sobresalía del dibujo.
   15 px y no 18: es el radio de la caja menos su relleno, que es la regla de radios
   concéntricos del Liquid Glass — el hijo tiene el radio del padre menos el hueco. */
.tar-submenu .tar-pill, .cfg-nav .tar-pill { border-radius: 0; }
.tar-submenu .tar-pill:first-child, .cfg-nav .tar-pill:first-child { border-radius: 15px 15px 0 0; }
.tar-submenu .tar-pill:last-child,  .cfg-nav .tar-pill:last-child  { border-radius: 0 0 15px 15px; }
.tar-submenu .tar-pill:only-child,  .cfg-nav .tar-pill:only-child  { border-radius: 15px; }
/* La carpeta fijada conserva SU color —es una función, no decoración— pero ya como fila. */
.tar-submenu .tar-pill-carpeta { background: color-mix(in srgb, var(--pill-color, #F5D76E) 88%, transparent); }
.tar-submenu .tar-pill-carpeta:hover { background: var(--pill-color, #F5D76E); }

/* LA ZONA DE LA CUENTA, con la misma regla que la de las herramientas (Jacobo, 01/09/2026):
   SOLO SE ENCAPSULA LO QUE ES UN ESTADO, no lo que es una acción.
     · A la izquierda: la herramienta ABIERTA lleva pastilla; la otra es texto suelto.
     · A la derecha: el PLAN lleva pastilla —es un estado de la cuenta, y además el único
       sitio donde el bronce es un fondo—; «Salir» y el conmutador de tema son acciones y
       van desnudos, con el mismo color que Radar y Mitra.
   El primer montaje les puso a los dos borde y color bronce, y quedaban como dos botones
   compitiendo con la insignia del plan que tenían al lado. */
.tar-plan { border-width: 1.5px; letter-spacing: .11em; font-family: var(--tipo-marca); }
/* ADMIN (la cuenta de Jacobo) y ORGANIZACIÓN (el nombre de la organización en vez de BRONCE),
   10/09/2026. Van AQUÍ y no en tarsis.css porque liquid.css pinta `.tar-plan` como vidrio de
   control (fondo incluido) y, cargándose después, dejaba la pastilla ADMIN en blanco sobre blanco.
   El admin puede pulsar la suya para ver Tarsis como una cuenta Bronce. */
.tar-plan-admin { background: var(--tarsis-cian-tinta, #0A5A66); border-color: var(--tarsis-cian-tinta, #0A5A66); color: #fff; cursor: pointer; }
.tar-plan-admin:hover { filter: brightness(1.15); }
.tar-plan-org { background: var(--lg-vidrio, rgba(255,255,255,.55)); border-color: var(--lg-borde, rgba(0,0,0,.14)); color: var(--texto); text-transform: none; letter-spacing: .02em; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: default; }
/* En la cabecera del teléfono (11/10/2026): el nombre de una organización no cabe entero al lado del
   logo y de los dos iconos. Con 180 px, «Diario de la Costa» empujaba el engranaje fuera de la pantalla
   y la página se iba de lado (medido a 390: 405 px). Se corta con puntos suspensivos, como ADMIN o
   BRONCE ocupan su sitio; el nombre entero está en Configuración. */
@media (max-width: 720px) { #cuenta-zona .tar-plan-org { max-width: min(96px, 25vw); padding-left: 10px; padding-right: 10px; } }
/* El admin «viendo como Bronce»: la pastilla dice BRONCE pero lleva un aro, para que se sepa que
   es una vista y que pulsándola se vuelve. */
.tar-plan-previa { box-shadow: 0 0 0 2px color-mix(in srgb, var(--tarsis-cian-medio, #12A9C4) 45%, transparent); cursor: pointer; }

/* La zona de la cuenta era un `<span>` en bloque, así que sus hijos se alineaban por la LÍNEA
   BASE del texto y no por el centro: por eso el engranaje no cuadraba con la pastilla del plan
   (Jacobo, 01/09/2026). Con flex y `center` se alinean de verdad. */
/* LA MISMA DISTANCIA TRES VECES (Jacobo, 10/09/2026): pastilla → divisor → engranaje → borde de
   la barra. Medido antes: 10, 16 y 40 px (el hueco de la zona; ese hueco más el margen del menú;
   y los 24 px que el marco interior, centrado a 1080, dejaba a cada lado más sus 16 de relleno).
   Primero fueron 24 px las tres; Jacobo las vio en su pantalla y pidió menos aire («deja menos
   espacio entre el botón de configuración, el de dividir pantalla y admin», 11/09): ahora son
   16 px las tres. El hueco de la zona es 16, el menú del engranaje no añade margen, y el marco
   interior deja de centrarse: ocupa la barra entera con 15 px de relleno a la derecha (más el
   borde de 1 px: 16 hasta el canto visible) y, a la izquierda, el mismo relleno que antes le daba
   el centrado —calculado con el ancho de la barra, en cualquier ventana—, para que el logo no se
   mueva ni un píxel. En móvil el relleno izquierdo también es 16: simétrico. */
.barra-superior #cuenta-zona { display: inline-flex; align-items: center; gap: 16px; }
/* LOS TRES ICONOS, JUNTOS (Jacobo, 11/09/2026): dividir · PDF · engranaje van en su propio grupo
   con 6 px entre ellos. Los 16 de la zona quedan solo entre la pastilla y el grupo. */
.tar-cab-iconos { display: inline-flex; align-items: center; gap: 6px; }

/* ══ EL PANEL EDITABLE (11/09/2026) ══ Los accesos directos de la barra en modo edición: cada uno
   con su flecha para cambiarlo y un «+» al final para añadir; y fuera de la edición, la flecha «›»
   que recoge los que no caben. Los desplegables son la misma cápsula de siempre, abierta por CLIC
   (clase `abierto`) y no por hover: en edición no hay hover que valga. */
.tar-acc { position: relative; display: inline-flex; align-items: center; }
.tar-herr-grupo.editando { flex-wrap: wrap; row-gap: 6px; }
.tar-herr-grupo.editando [data-herr] { pointer-events: none; }
.tar-herr-grupo.editando .tar-radar-menu .tar-submenu:not(.tar-elige) { display: none; }
.tar-acc-cambiar, .tar-acc-mas {
  width: 22px; height: 22px; padding: 0; margin-left: 2px; border-radius: 999px; cursor: pointer;
  display: inline-grid; place-items: center; color: var(--texto);
  border: 1.5px solid var(--lg-borde, rgba(0,0,0,.14)); background: var(--lg-panel-solido, rgba(255,255,255,.94));
  transition: background var(--dur-ui, .22s) var(--ease-premium, ease), color var(--dur-ui, .22s) var(--ease-premium, ease);
}
.tar-acc-cambiar .tar-ico, .tar-acc-mas .tar-ico { width: 13px; height: 13px; vertical-align: 0; }
.tar-acc-mas { margin-left: 10px; }
.tar-acc-cambiar:hover, .tar-acc-mas:hover { background: rgba(0,134,163,.09); color: var(--verde-oscuro); border-color: var(--verde-oscuro); }
.tar-elige { z-index: 90; }
.tar-elige.abierto { pointer-events: auto; }
.tar-elige.abierto .tar-submenu-caja { opacity: 1; transform: none; pointer-events: auto; }
.tar-submenu .tar-pill-quitar { color: #b00020; }
.tar-mas .tar-mas-btn { padding: 8px 10px; }
.tar-mas .tar-mas-btn .tar-ico { width: 15px; height: 15px; vertical-align: 0; }
.tar-acc.tar-oculto { display: none !important; }
.tar-submenu .tar-pill.activo { background: rgba(0,134,163,.09); color: var(--verde-oscuro); }
.barra-interior { max-width: none; margin: 0; padding: 8px 15px 8px max(16px, calc((100% - var(--max) + 32px) / 2)); }
.tar-menu-ajustes { margin-left: 0; align-self: center; }

.tar-salir, .barra-superior .btn-nav {
  border: 0; background: transparent; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
  color: var(--texto);
  transition: background var(--dur-ui, .22s) var(--ease-premium, ease), color var(--dur-ui, .22s) var(--ease-premium, ease);
}
.tar-salir {
  font-family: var(--tipo-marca);
  font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  padding: 8px 15px; border-radius: 999px;
}
.barra-superior .btn-nav { border-radius: 999px; }
/* Al pasar el ratón aparece la misma pastilla cian que en Radar y Mitra: es la señal de
   «esto se puede pulsar», y tiene que ser una sola en toda la barra. */
.tar-salir:hover, .barra-superior .btn-nav:hover {
  background: rgba(0,134,163,.08); color: var(--verde-oscuro); border-color: transparent;
}
html[data-modo="incognito-oscuro"] .tar-salir:hover,
html[data-modo="incognito-oscuro"] .barra-superior .btn-nav:hover { background: rgba(47,198,224,.13); }

/* En pantalla estrecha la cápsula compartida no se parte: se encoge. */
@media (max-width: 720px) {
  .tar-herr-grupo .tar-radar-btn { font-size: .6875rem; padding: 7px 12px; letter-spacing: .08em; }
  .tar-salir { font-size: .65625rem; padding: 5px 11px; }
}

/* EL AIRE A LOS DOS LADOS DEL LOGO, IGUAL (Jacobo, 01/09/2026: «tiene que estar
   equilibrado»). Medido antes de tocar nada: del canto de la barra al primer píxel de la
   máscara había 16,8 px, y del último píxel de «ONE» a la cápsula de Radar solo 12 — el
   `gap` de la barra—. El logo quedaba escorado. El margen extra lleva ese hueco al mismo
   valor que el sangrado de la barra, así que el logo respira lo mismo por los dos lados. */
.barra-superior .logo { margin-right: 5px; }

/* ══ «‹» PARA VOLVER EN LA APP DE LA PANTALLA DE INICIO (09/10/2026) ══
   Solo existe con Tarsis instalado (`html.tar-app`) y cuando hay a dónde volver dentro de Tarsis
   (lo crea y lo enseña `pintarVolverApp` en radar.js): sin barra del navegador no hay otro «atrás».
   Es un `.btn-nav` como los de la derecha (transparente, pastilla cian al tocar), de 44 × 44 para el
   dedo, pero solo cuesta 28 px de fila: se mete 12 en el relleno de la cápsula y 4 en el hueco hasta
   el logo. En el móvil, mientras está a la vista, el logo puede encogerse para que la cabecera siga
   en una fila (medido: 131 px de ancho a 430, 113 a 390, 98 a 375, 83 a 360). */
.tar-volver-app[hidden] { display: none !important; }
html.tar-app .barra-superior .tar-volver-app { flex: none; width: 44px; height: 44px; margin: 0 -4px 0 -12px; padding: 0; }
html.tar-app .barra-superior .tar-volver-app .tar-ico { width: 24px; height: 24px; }
@media (max-width: 720px) {
  html.tar-app.tar-puede-volver .barra-superior .logo { flex: 0 1 auto; min-width: 0; }
  html.tar-app.tar-puede-volver .logo-tarsis { max-width: 100%; object-fit: contain; object-position: left center; }
}

/* ==================== EL MENÚ DE AJUSTES (engranaje) ====================
 * Reutiliza la caja del desplegable de Radar —vidrio en la caja, filas planas, la grieta
 * entre ellas— porque no puede haber dos clases de menú en el mismo producto. Lo único
 * distinto es de qué lado se descuelga: este vive en el canto derecho, así que se ancla a
 * la derecha o se saldría de la pantalla. */
.tar-menu-ajustes { position: relative; display: inline-flex; }
.tar-submenu-der { left: auto; right: 0; }
.tar-submenu-der .tar-submenu-caja { transform-origin: top right; }
.tar-menu-ajustes:hover .tar-submenu,
.tar-menu-ajustes:has(:focus-visible) .tar-submenu { pointer-events: auto; }
.tar-menu-ajustes:hover .tar-submenu-caja,
.tar-menu-ajustes:has(:focus-visible) .tar-submenu-caja { opacity: 1; transform: none; pointer-events: auto; }
.tar-menu-ajustes.cerrado .tar-submenu-caja {
  opacity: 0 !important; transform: translateY(-9px) scale(.97) !important; pointer-events: none !important;
}
/* El engranaje gira un poco al pasar por encima: es el único adorno de la barra y encaja con
   lo que el objeto ES — una rueda dentada. Se apaga con «movimiento reducido». */
.tar-engranaje .tar-ico { transition: transform var(--dur-panel, .34s) var(--ease-premium, ease); }
.tar-menu-ajustes:hover .tar-engranaje .tar-ico { transform: rotate(60deg); }
@media (prefers-reduced-motion: reduce) { .tar-menu-ajustes:hover .tar-engranaje .tar-ico { transform: none; } }
/* Las filas de este menú llevan icono, así que necesitan algo más de sitio que las de Radar. */
.tar-submenu-der .tar-pill { min-width: 190px; gap: 10px; }

/* ==================== LA PÁGINA DE CONFIGURACIÓN ====================
 * Dos columnas: a la izquierda los apartados, en la MISMA caja del desplegable —vidrio en la
 * caja, filas planas, la grieta entre ellas— para que la navegación de ajustes se reconozca
 * como pariente de la del menú. A la derecha, el contenido. En estrecho se apilan. */
.cfg-cab { margin: 6px 0 22px; }
.cfg-cab h1 { margin: 0 0 2px; font-size: 1.875rem; letter-spacing: -.03em; }
.cfg-marco { display: grid; grid-template-columns: 262px minmax(0, 1fr); gap: 26px; align-items: start; }   /* 262: «CONTRASEÑA Y SESIONES» cabe entera (11/10/2026) */
/* `minmax(0, 1fr)` y no `1fr` (09/10/2026, sistema móvil, D2): `1fr` es `minmax(auto, 1fr)` y la pista
   no bajaba del ancho mínimo de su contenido —las muestras de Aspecto—, así que Configuración medía
   454 px en cualquier iPhone y la página se iba de lado. */
@media (max-width: 860px) { .cfg-marco { grid-template-columns: minmax(0, 1fr); } }

.cfg-nav { position: sticky; top: 84px; display: flex; flex-direction: column; gap: 12px; }
@media (max-width: 860px) { .cfg-nav { position: static; } }
/* La caja del desplegable nace OCULTA (es su estado de reposo). Aquí no se despliega
   nada: es el índice de la página, así que se le devuelve la visibilidad. */
.cfg-nav-caja { min-width: 0; opacity: 1; transform: none; pointer-events: auto; }
/* Las filas del índice usan la pastilla del desplegable, pero aquí SÍ hay una seleccionada:
   es navegación, no una lista de acciones. Se marca en cian, como la herramienta abierta. */
.cfg-nav .tar-pill { cursor: pointer; text-align: left; justify-content: flex-start; }
.cfg-nav .tar-pill.activo { background: rgba(0,134,163,.09); color: var(--verde-oscuro); }
html[data-modo="incognito-oscuro"] .cfg-nav .tar-pill.activo { background: rgba(47,198,224,.14); }
/* Cerrar sesión va SUELTO y al final, fuera de la caja: no es un apartado más, es una salida.
   Y en rojo solo al pasar el ratón — anunciarse en rojo desde el principio sería alarmismo. */
.cfg-salir {
  display: inline-flex; align-items: center; gap: 10px; align-self: flex-start;
  font-family: var(--tipo-marca); font-size: .75rem; font-weight: 600;
  letter-spacing: .11em; text-transform: uppercase;
  padding: 8px 15px; border: 0; border-radius: 999px; background: transparent;
  color: var(--texto-suave); cursor: pointer;
  transition: background var(--dur-ui,.22s) var(--ease-premium,ease), color var(--dur-ui,.22s) var(--ease-premium,ease);
}
.cfg-salir:hover { background: rgba(194,63,63,.10); color: #A2373B; }
html[data-modo="incognito-oscuro"] .cfg-salir:hover { background: rgba(238,138,141,.14); color: #EE8A8D; }

.cfg-cuerpo h2 { margin: 0 0 6px; font-size: 1.3125rem; letter-spacing: -.02em; }
.cfg-cuerpo h3 { margin: 0 0 12px; font-size: .9375rem; letter-spacing: -.01em; }
.cfg-intro { color: var(--texto-suave); margin: 0 0 20px; max-width: 62ch; }
.cfg-bloque {
  background: var(--lg-panel, rgba(255,255,255,.8)); border: 1px solid var(--lg-borde, rgba(0,0,0,.1));
  border-radius: var(--lg-r-l, 20px); padding: 22px; margin-bottom: 18px;
}
.cfg-acciones { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.cfg-campo { display: block; margin-bottom: 14px; max-width: 420px; }
.cfg-campo > span { display: block; font-size: .78125rem; font-weight: 600; color: var(--texto-suave); margin-bottom: 5px; }
.cfg-campo input {
  width: 100%; padding: 10px 13px; font: inherit; font-size: .9375rem;
  border-radius: var(--lg-r-m, 14px); border: 1.5px solid var(--linea);
  background: var(--superficie); color: inherit;
}
.cfg-campo input:focus { outline: none; border-color: var(--verde-oscuro); box-shadow: 0 0 0 3px rgba(0,134,163,.16); }
.cfg-campo input:disabled { background: var(--gris-fila); color: var(--texto-suave); }

/* --- Aspecto: dos muestras de verdad, no dos palabras --- */
/* `min(210px, 100%)` (09/10/2026, D2): con el `max-width` definido el navegador calculaba DOS columnas
   de 210 para el ancho mínimo (434 px) aunque solo cupiera una. */
.cfg-temas { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(210px, 100%), 1fr)); gap: 14px; max-width: 620px; }
.cfg-tema {
  display: flex; flex-direction: column; gap: 4px; align-items: flex-start; text-align: left;
  padding: 14px; border-radius: var(--lg-r-l, 20px); cursor: pointer; font: inherit;
  background: var(--lg-panel, rgba(255,255,255,.8)); border: 1.5px solid var(--lg-borde, rgba(0,0,0,.1));
  transition: border-color var(--dur-ui,.22s) var(--ease-premium,ease), transform var(--dur-ui,.22s) var(--ease-premium,ease);
}
.cfg-tema:hover { transform: translateY(-2px); }
.cfg-tema.activo { border-color: var(--verde-oscuro); box-shadow: inset 0 0 0 1px var(--verde-oscuro); }
.cfg-tema b { font-family: var(--tipo-marca); font-size: .90625rem; }
.cfg-tema-muestra { display: block; width: 100%; height: 54px; border-radius: var(--lg-r-m, 14px); margin-bottom: 8px; border: 1px solid var(--lg-borde, rgba(0,0,0,.1)); }
.cfg-tema-claro  { background: linear-gradient(160deg, #ffffff 55%, #E9F7FB); }
.cfg-tema-oscuro { background: linear-gradient(160deg, #08111E 55%, #10283A); }
.cfg-tema-auto   { background: linear-gradient(110deg, #ffffff 0 49.5%, #08111E 50.5% 100%); }

/* --- Conexiones --- */
.cfg-cab-accion { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.cfg-actualizar { display: flex; align-items: center; gap: 10px; flex: none; }
.cfg-conex {
  display: flex; align-items: center; gap: 14px; padding: 14px 18px;
  background: var(--lg-panel, rgba(255,255,255,.8)); border: 1px solid var(--lg-borde, rgba(0,0,0,.1));
  border-radius: var(--lg-r-l, 20px); margin-bottom: 10px;
}
.cfg-conex-ico { flex: none; display: inline-flex; color: var(--texto-suave); }
.cfg-conex-ico .tar-ico { width: 20px; height: 20px; }
.cfg-conex-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cfg-conex-txt b { font-family: var(--tipo-marca); font-size: .90625rem; }
.cfg-conex-accion { flex: none; }
.cfg-chip {
  flex: none; font-size: .71875rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
  padding: 4px 11px; border-radius: 999px; white-space: nowrap;
}
.cfg-chip-ok    { background: rgba(46,158,68,.13); color: #1C6F4A; }
.cfg-chip-aviso { background: rgba(215,175,67,.16); color: #8A6A15; }
.cfg-chip-gris  { background: var(--gris-fila); color: var(--texto-suave); }
html[data-modo="incognito-oscuro"] .cfg-chip-ok    { background: rgba(110,209,160,.14); color: #6ED1A0; }
html[data-modo="incognito-oscuro"] .cfg-chip-aviso { background: rgba(232,201,102,.15); color: #E0BE6A; }

/* --- Las guías de cada asistente en la pantalla del conector (09/10/2026, D28): desplegables
       sobrios, como una lista; la línea de terminal, en su caja con su «Copiar». --- */
.cfg-conex-movil { max-width: 720px; margin: -6px 0 18px; }
.cfg-conex-guias { max-width: 720px; margin: 8px 0 22px; }
.cfg-conex-guias h3 { font-size: 1rem; margin: 0 0 8px; }
.cfg-conex-guia { border-bottom: 1px solid var(--lg-borde, rgba(0,0,0,.08)); }
.cfg-conex-guia > summary {
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; min-height: 44px;
  font-family: var(--tipo-marca); font-size: .9375rem; font-weight: 600;
}
.cfg-conex-guia > summary::-webkit-details-marker { display: none; }
.cfg-conex-guia > summary::before {
  content: ''; flex: none; width: 7px; height: 7px; margin: 0 4px 0 2px;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: rotate(-45deg); transition: transform .15s ease; color: var(--texto-suave);
}
.cfg-conex-guia[open] > summary::before { transform: rotate(45deg); }
.cfg-conex-guia-cuerpo { padding: 0 2px 14px 22px; font-size: .9375rem; line-height: 1.6; }
.cfg-conex-guia-cuerpo ol { margin: 0 0 6px; padding-left: 20px; }
.cfg-conex-guia-cuerpo p { margin: 6px 0; }
.cfg-conex-cmd { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0; }
.cfg-conex-cmd code {
  flex: 1 1 260px; min-width: 0; font-size: .8125rem; padding: 9px 12px; border-radius: 10px;
  background: rgba(0,0,0,.05); border: 1px solid var(--lg-borde, rgba(0,0,0,.12)); user-select: all; word-break: break-all;
}
html[data-modo="incognito-oscuro"] .cfg-conex-cmd code { background: rgba(255,255,255,.06); }

/* --- Configuración → Conexiones en el MÓVIL (09/10/2026, D25). La fila era un `flex` de cuatro
       columnas sin regla móvil y el texto se quedaba en una o dos palabras de ancho: la fila del
       conector medía ~1.000 px de alto a 390. Dos filas: icono y texto arriba, estado y acción abajo. */
@media (max-width: 720px) {
  /* El estado ocupa las dos primeras columnas: si fuera solo la del icono, la ensancharía y el texto
     se quedaría en media fila (medido a 390: 180 px de texto con la versión de dos columnas). */
  .cfg-conex {
    display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; grid-template-areas: "ico txt txt" "chip chip accion";
    gap: 10px 12px; align-items: center; padding: 12px 14px;
  }
  .cfg-conex-ico { grid-area: ico; align-self: start; padding-top: 2px; }
  .cfg-conex-txt { grid-area: txt; }
  .cfg-conex > .cfg-chip { grid-area: chip; justify-self: start; }
  .cfg-conex-accion { grid-area: accion; justify-self: end; }
  .cfg-conex-accion .boton-mini, .cfg-conex-cmd .cfg-conex-copiar { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding-inline: 16px; }
  .cfg-conex-txt .dos-meta { overflow-wrap: anywhere; }
  .cfg-conex-guia-cuerpo { padding-left: 4px; }
}

/* --- Estado vacío honesto, y el aviso de «esto está dibujado, no construido» --- */
.cfg-vacio {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px;
  padding: 44px 26px; border: 1.5px dashed var(--lg-borde, rgba(0,0,0,.14));
  border-radius: var(--lg-r-xl, 26px); color: var(--texto-suave); max-width: 56ch;
}
.cfg-vacio .tar-ico { width: 30px; height: 30px; margin-bottom: 6px; opacity: .5; }
.cfg-vacio b { font-family: var(--tipo-marca); font-size: 1rem; color: var(--texto); }
.cfg-honesto { color: var(--texto-suave); font-size: .84375rem; margin: 14px 0 0; max-width: 62ch; }
.cfg-honesto-fuerte {
  background: var(--ambar-fondo); border: 1px solid color-mix(in srgb, var(--ambar) 30%, transparent);
  color: var(--texto); border-radius: var(--lg-r-m, 14px); padding: 11px 15px; margin: 0 0 18px;
}

/* --- Suscripción --- */
.cfg-plan { display: flex; align-items: center; gap: 14px; }
.cfg-plan-txt { display: flex; flex-direction: column; gap: 2px; }
.cfg-plan-txt b { font-family: var(--tipo-marca); font-size: .9375rem; }

/* ==================== CONFIGURACIÓN EN EL MÓVIL (11/10/2026) ====================
 * Encargo de Jacobo: «mejorar y perfeccionar las opciones de configuración y cómo se ven en mobile».
 * Hasta 720 px la página era el índice de escritorio apilado encima del apartado: siete filas de
 * versalitas y, debajo, el contenido, con el «Cerrar sesión» en medio. Ahora es como Ajustes de iOS:
 * una LISTA agrupada (la ficha de la cuenta arriba; lo de este navegador; la cuenta y su organización;
 * la salida aparte, en rojo) y, al tocar una fila, el apartado SOLO, con «‹ Configuración» para volver.
 * Las dos vistas salen del mismo HTML (`vistaConfiguracion`): `.cfg-en-lista` cuando la dirección no
 * pide un apartado (`?sec=`). En el escritorio no cambia nada: índice a la izquierda, apartado a la derecha. */
.cfg-lista-movil, .cfg-volver { display: none; }
.cfg-tema-marca { display: none; }
.cfg-acciones a.boton-secundario, .cfg-vacio a.boton-secundario { display: inline-flex; align-items: center; text-decoration: none; }
.cfg-vacio a.boton-secundario { margin-top: 10px; }
.cfg-herr { margin-top: 14px; }
/* Contraseña y sesiones */
.cfg-sesiones { list-style: none; margin: 0; padding: 0; }
.cfg-sesiones li { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 8px 0; border-top: 1px solid var(--lg-borde, var(--linea)); }
.cfg-sesiones li:first-child { border-top: 0; }
.cfg-sesion-ico { display: inline-flex; flex: none; color: var(--texto-suave); }
.cfg-sesion-ico .tar-ico { width: 20px; height: 20px; }
.cfg-sesion-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cfg-sesion-txt b { font-size: .90625rem; font-weight: 600; }
.cfg-sesion-txt small { font-size: .78125rem; color: var(--texto-suave); }
.cfg-sesion-esta { font-size: .6875rem; font-weight: 700; padding: 1px 7px; border-radius: 999px; vertical-align: 1px; background: rgba(0,134,163,.10); color: var(--tarsis-cian-hondo, #0C6C7A); }
html[data-modo="incognito-oscuro"] .cfg-sesion-esta { background: rgba(47,198,224,.14); color: var(--verde-oscuro); }

@media (max-width: 720px) {
  .cfg-marco { display: block; }
  .cfg-nav { display: none; }
  .cfg-cab { margin: 2px 0 16px; }
  .cfg-cab .dos-meta { display: none; }            /* el correo ya va en la ficha de la cuenta */
  .cfg-pantalla.cfg-en-lista .cfg-cuerpo { display: none; }
  .cfg-pantalla.cfg-en-lista .cfg-lista-movil { display: block; }
  .cfg-pantalla:not(.cfg-en-lista) .cfg-cab { display: none; }
  .cfg-volver { display: inline-flex; margin-bottom: 2px; }
  .cfg-cuerpo > h2 { font-size: var(--m-titulo, 1.75rem); line-height: 1.15; letter-spacing: -.028em; margin: 2px 0 10px; padding-bottom: 0; border-bottom: 0; }
  .cfg-intro { font-size: .9375rem; margin-bottom: 16px; }

  /* La ficha de la cuenta: iniciales, nombre, correo y su pastilla; lleva a «Cuenta y suscripción». */
  .cfg-perfil {
    display: flex; align-items: center; gap: 14px; min-height: 76px; padding: 14px 14px 14px 16px; margin: 0 0 22px;
    border-radius: 18px; background: var(--lg-panel-solido, var(--superficie)); border: 1px solid var(--lg-borde, var(--linea));
    color: var(--texto); text-decoration: none; font-family: inherit; font-size: inherit; font-weight: inherit;
  }
  .cfg-perfil:hover { text-decoration: none; }
  .cfg-av {
    display: inline-flex; align-items: center; justify-content: center; flex: none; width: 54px; height: 54px; border-radius: 50%;
    background: var(--verde-solido, #0E7E8F); color: #fff; font-family: var(--tipo-marca); font-size: 1.125rem; font-weight: 700; letter-spacing: .02em;
  }
  .cfg-perfil-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
  .cfg-perfil-txt b { font-family: var(--tipo-marca); font-size: 1.0625rem; font-weight: 600; letter-spacing: -.01em; }
  .cfg-perfil-txt small { font-size: .8125rem; color: var(--texto-suave); overflow-wrap: anywhere; }
  .cfg-perfil .tar-plan { min-height: 0; padding: 2px 9px; margin-top: 5px; font-size: .75rem; cursor: inherit; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* Los grupos: cajas de filas de 50 px con el filete empezando después del icono, como en iOS. */
  .cfg-grupo { margin: 0 0 22px; border-radius: 18px; overflow: hidden; background: var(--lg-panel-solido, var(--superficie)); border: 1px solid var(--lg-borde, var(--linea)); }
  .cfg-fila {
    position: relative; display: flex; align-items: center; gap: 12px; width: 100%; min-height: 50px; padding: 7px 14px;
    border: 0; background: transparent; color: var(--texto); text-decoration: none; text-align: left;
    font: inherit; font-size: 1rem; font-weight: 500; -webkit-tap-highlight-color: transparent; cursor: pointer;
  }
  .cfg-fila:hover { text-decoration: none; }
  .cfg-fila + .cfg-fila::before { content: ''; position: absolute; top: 0; left: 56px; right: 0; border-top: 1px solid var(--lg-borde, var(--linea)); }
  .cfg-fila:active { background: rgba(0,0,0,.05); }
  .cfg-fila-ico {
    display: inline-flex; align-items: center; justify-content: center; flex: none; width: 30px; height: 30px; border-radius: 8px;
    background: rgba(0,134,163,.10); color: var(--tarsis-cian-hondo, #0C6C7A);
  }
  .cfg-fila-ico .tar-ico, .cfg-fila-ico svg { width: 18px; height: 18px; }
  .cfg-fila-txt { flex: 1 1 auto; min-width: 0; }
  .cfg-fila-valor { flex: 0 1 auto; max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .9375rem; color: var(--texto-suave); }
  .cfg-fila .tar-chev { flex: none; width: 15px; height: 15px; color: var(--texto-suave); opacity: .55; }
  .cfg-perfil .tar-chev { flex: none; width: 15px; height: 15px; color: var(--texto-suave); opacity: .55; }
  .cfg-fila-salir { justify-content: center; font-weight: 600; color: #A2373B; }
  .cfg-version { margin: -8px 0 18px; text-align: center; font-size: .75rem; color: var(--texto-suave); }

  /* Aspecto como en iOS: tres muestras de teléfono con su marca de elegido debajo del nombre. */
  .cfg-temas { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: none; }
  .cfg-tema { align-items: center; text-align: center; gap: 6px; padding: 14px 6px 14px; border-radius: 18px; }
  .cfg-tema:hover { transform: none; }
  .cfg-tema .dos-meta { display: none; }
  .cfg-tema-muestra { width: 58%; height: 100px; margin: 0 auto 6px; border-radius: 12px; }
  .cfg-tema b { font-size: .9375rem; }
  .cfg-tema-marca {
    display: block; width: 22px; height: 22px; border-radius: 50%; margin-top: 2px;
    border: 1.5px solid color-mix(in srgb, var(--texto-suave) 55%, transparent); background: transparent;
  }
  .cfg-tema.activo .cfg-tema-marca {
    border-color: var(--verde-solido, #0E7E8F); background: var(--verde-solido, #0E7E8F);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E");
    background-size: 15px 15px; background-position: center; background-repeat: no-repeat;
  }

  /* Bloques y formularios a dedo: campos de 44 px y letra de 16 px (iOS no amplía al enfocarlos). */
  .cfg-bloque { padding: 16px; border-radius: 18px; }
  .cfg-campo { max-width: none; }
  .cfg-campo input { min-height: 44px; font-size: 1rem; }
  .cfg-acciones > button, .cfg-acciones > a { flex: 1 1 auto; justify-content: center; min-height: 44px; }
  .cfg-plan { flex-direction: column; align-items: flex-start; gap: 8px; }
  .cfg-cab-accion { flex-direction: column; gap: 4px; }
  .cfg-actualizar { width: 100%; justify-content: space-between; }
  .cfg-actualizar .boton-secundario { min-height: 44px; }
  .cfg-vacio { padding: 30px 18px; max-width: none; }
  .cfg-sesiones .boton-mini { min-height: 44px; display: inline-flex; align-items: center; padding-inline: 16px; }
}
html[data-modo="incognito-oscuro"] .cfg-fila-ico { background: rgba(47,198,224,.14); color: var(--verde-oscuro); }
html[data-modo="incognito-oscuro"] .cfg-fila-salir { color: #EE8A8D; }
html[data-modo="incognito-oscuro"] .cfg-fila:active { background: rgba(255,255,255,.06); }
@media (max-width: 720px) {
  html.tar-texto-grande .cfg-temas { grid-template-columns: minmax(0, 1fr); }
  html.tar-texto-grande .cfg-fila { flex-wrap: wrap; }
  html.tar-texto-grande .cfg-fila-valor { max-width: none; flex-basis: 100%; padding-left: 42px; white-space: normal; }
}

/* ==================== LA FRANJA DE AVISOS DE CONEXIÓN ====================
 * Un solo sitio para todos, justo bajo la cabecera, y una sola forma de fila:
 * qué se ha desconectado a la izquierda y el botón para arreglarlo a la derecha.
 * Toma la cápsula y el vidrio del resto del sistema; lo único propio es el tinte ámbar,
 * que es el color semántico de «atención» — ni el cian de marca ni el bronce del plan,
 * porque esto no es identidad, es un estado. */
.tar-avisos {
  max-width: var(--max, 1080px);
  margin: 14px auto 0;
  padding: 0 16px;
  display: flex; flex-direction: column; gap: 10px;
}
.tar-avisos[hidden] { display: none; }

.tar-aviso {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 18px;
  border-radius: var(--lg-r-l, 20px);
  background: var(--ambar-fondo);
  border: 1.5px solid color-mix(in srgb, var(--ambar) 32%, transparent);
  box-shadow: var(--lg-sombra-control, 0 2px 8px rgba(0,0,0,.06));
}
.tar-aviso-ico { flex: none; display: inline-flex; color: var(--ambar); }
.tar-aviso-ico .tar-ico, .tar-aviso-ico svg { width: 19px; height: 19px; }
.tar-aviso-txt { flex: 1 1 auto; min-width: 0; font-size: .90625rem; line-height: 1.45; }
.tar-aviso-txt b { font-family: var(--tipo-marca); font-weight: 600; }
.tar-aviso-accion { flex: none; }
/* El botón de arreglarlo hereda el primario del sistema, solo que en pequeño y sin
   fabricar una variante nueva: la señal de «pulsa aquí» ya existe y es una sola. */
.tar-aviso .boton-mini { font-size: .78125rem; padding: 7px 15px; white-space: nowrap; }

@media (max-width: 620px) {
  .tar-aviso { flex-wrap: wrap; }
  .tar-aviso-accion { width: 100%; }
  .tar-aviso .boton-mini { width: 100%; text-align: center; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════
   AJUSTES A LAS GUÍAS DE APPLE (11/09/2026, encargo de Jacobo): macOS en el escritorio, iOS en el
   móvil. Van aquí, al final de la última hoja, para ganar la cascada sin tocar las otras.
   ══════════════════════════════════════════════════════════════════════════════════════════ */

/* 1. LOS DESPLEGABLES SE ABREN TAMBIÉN POR TOQUE (clase `abierto`, la pone radar.js en pantallas
      sin hover). Misma cápsula, mismo despliegue que con el ratón. */
.tar-radar-menu.abierto .tar-submenu, .tar-menu-ajustes.abierto .tar-submenu { pointer-events: auto; }
.tar-radar-menu.abierto .tar-submenu-caja, .tar-menu-ajustes.abierto .tar-submenu-caja { opacity: 1; transform: none; pointer-events: auto; }
.tar-radar-menu.abierto .tar-pill { opacity: 1; transform: none; pointer-events: auto; }

/* 2. FOCO VISIBLE EN TODO LO QUE SE PUEDE ACTIVAR CON EL TECLADO: un aro del cian de marca, fuera
      del control, para que se vea también sobre vidrio y en oscuro. Los campos que ya llevan su
      propio resaltado de foco (box-shadow) lo conservan. */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible, summary:focus-visible, [tabindex]:not([tabindex="-1"]):focus-visible {
  outline: 2px solid var(--tarsis-cian-texto, #0E7E8F); outline-offset: 2px;
}
html[data-modo="incognito-oscuro"] a:focus-visible, html[data-modo="incognito-oscuro"] button:focus-visible,
html[data-modo="incognito-oscuro"] [role="button"]:focus-visible, html[data-modo="incognito-oscuro"] [tabindex]:not([tabindex="-1"]):focus-visible {
  outline-color: var(--tarsis-cian-vivo, #43E7FF);
}
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--tarsis-cian-texto, #0E7E8F); outline-offset: 1px; }

/* 3. MOVIMIENTO REDUCIDO, DE VERDAD EN TODA LA CASA: quien lo pide en su sistema no ve tintineos,
      ni apariciones, ni transiciones. Los retardos se conservan (el cartel de carga sigue
      esperando sus 600 ms antes de salir). */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}

/* 4. PANTALLAS TÁCTILES: objetivos de 44 × 44 pt (iOS). El dibujo puede ser más pequeño; lo que
      crece es la zona que responde al dedo. */
@media (hover: none) and (pointer: coarse) {
  .barra-superior .btn-nav { width: 44px; height: 44px; }
  .tar-cab-iconos { gap: 2px; }
  .tar-herr-grupo .tar-radar-btn { min-height: 44px; padding-top: 12px; padding-bottom: 12px; }
  .tar-mas .tar-mas-btn { min-width: 44px; }
  .tar-submenu .tar-pill, .cfg-nav .tar-pill { min-height: 44px; }
  .tar-plan { min-height: 36px; padding-top: 8px; padding-bottom: 8px; }
  .tar-acc-cambiar, .tar-acc-mas { width: 30px; height: 30px; position: relative; }
  .tar-acc-cambiar::before, .tar-acc-mas::before { content: ''; position: absolute; inset: -7px; }
  .boton-primario, .boton-secundario { min-height: 44px; }
  .boton-mini { min-height: 36px; }
  .dos-rango, .dos-tab, .cal-v, .tt-tab { min-height: 40px; }
  input[type="checkbox"], input[type="radio"] { width: 22px; height: 22px; }
  /* Sin hover no hay estados de hover que se queden pegados tras el toque. */
  .tar-herr:hover { transform: none; }
}

/* 5. EL MÓVIL (≤ 720 px), COMO UNA APP DE iOS:
      · la barra en DOS filas y no tres: logo y cuenta arriba, los accesos debajo (la de antes
        medía 133 px de alto: un tercio de la pantalla de un iPhone);
      · márgenes seguros (notch y barra de inicio);
      · letra base de 16 px (los campos también, que a menos Safari hace zoom al enfocarlos);
      · versalitas de la barra e insignias a 11-12 px, el mínimo legible de Apple. */
@media (max-width: 720px) {
  html { font-size: 16px; }
  body { font-size: 1rem; }
  .barra-interior { flex-wrap: wrap; row-gap: 6px; padding-left: max(16px, env(safe-area-inset-left)); padding-right: max(15px, env(safe-area-inset-right)); }
  .barra-superior .logo { order: 1; margin-right: 0; }
  .tar-hueco { display: none; }   /* el hueco flexible añadía dos huecos de 12 px y echaba la cuenta a otra fila */
  .tar-cabecera-der { order: 3; margin-left: auto; }
  .tar-herr-grupo { order: 4; flex-basis: 100%; width: 100%; }
  .tar-herr-grupo .tar-radar-btn { font-size: .75rem; padding-left: 12px; padding-right: 12px; }
  .tar-plan { font-size: .6875rem; }
  .tar-herr-pro { font-size: .6875rem; }
  body { padding-bottom: env(safe-area-inset-bottom); }
  input, select, textarea { font-size: 1rem; }
  .modal { padding: 18px; width: calc(100% - 24px); }
}

/* 6. CONTRASTE (medido con el fondo compuesto, pantalla a pantalla, claro y oscuro):
      · el botón principal y los rangos activos llevaban el tinte al 94 % y se quedaban en 4,29
        sobre blanco con letra blanca; sólido, da 4,77 (es el mismo cian de texto, --verde-solido);
      · la herramienta ABIERTA en la barra y en el índice de Configuración iba en --verde-oscuro
        sobre su tinte (4,25): pasa al cian hondo (5,5);
      · «Abrir» en las tarjetas de búsqueda va sobre el color de su fuente (verde, azul, violeta)
        y bajaba a 2,8: una sombra interior oscurece el fondo bajo la letra sin tocar el color de
        la tarjeta ni la letra (5,2 / 4,7 / 7+; en oscuro los colores son más claros y se oscurece más);
      · en OSCURO: los colores de marca de las redes (X y TikTok son negro), los ámbar y verdes de
        estado y el botón mini de vidrio se aclaran o se asientan sobre panel sólido. */
.boton-primario, .dos-rango.activo, .dos-rango.activa { background: var(--verde-solido); }
.tar-herr-grupo .tar-radar-btn.activo, .cfg-nav .tar-pill.activo, .tar-submenu .tar-pill.activo { color: var(--tarsis-cian-hondo, #0C6C7A); }
html[data-modo="incognito-oscuro"] .tar-herr-grupo .tar-radar-btn.activo,
html[data-modo="incognito-oscuro"] .cfg-nav .tar-pill.activo,
html[data-modo="incognito-oscuro"] .tar-submenu .tar-pill.activo { color: var(--verde-oscuro); }
.dos-sola .boton-primario, .dos-varias .boton-primario { box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .26), 0 2px 10px rgba(0, 0, 0, .12); }
html[data-modo="incognito-oscuro"] .dos-sola .boton-primario, html[data-modo="incognito-oscuro"] .dos-varias .boton-primario { box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .42), 0 2px 10px rgba(0, 0, 0, .3); }
html[data-modo="incognito-oscuro"] { --ambar-texto: #E8C56A; }
html[data-modo="incognito-oscuro"] .rrss-red-tag { color: color-mix(in srgb, var(--red-col, #888) 40%, #fff); }
html[data-modo="incognito-oscuro"] .rrss-t-problema, html[data-modo="incognito-oscuro"] .rrss-t-hueco { color: #E0A84A; }
html[data-modo="incognito-oscuro"] .rrss-t-delta.sube, html[data-modo="incognito-oscuro"] .rrss-kpi-delta.sube, html[data-modo="incognito-oscuro"] .tar-delta-pct.sube { color: #5CCB86; }
html[data-modo="incognito-oscuro"] .boton-mini:not(.boton-primario) { background: var(--lg-panel-solido); }

/* 7. LETRA: nada por debajo de 11 px, que es el mínimo de Apple. Las etiquetas de cifras de las
      tarjetas de redes iban a 9,5, la insignia PRO a 10. */
.rrss-t-cif i, .rs-cifra i, .tar-herr-pro, .tar-herr-llave, .dos-portada-reg, .pp-aparece-eti { font-size: .6875rem; }
.viz-pico-num { font-size: .6875rem; }

/* 8. MÓVIL, segunda parte: los textos secundarios que iban a 11-11,5 px suben a 12,5 (en un
      teléfono se leen a más distancia y con menos luz); los campos de texto a 16 px SIEMPRE
      (a menos, Safari de iOS hace zoom al entrar en ellos), aunque su clase diga otra cosa. */
@media (max-width: 720px) {
  .dos-meta, .dos-card-fecha, .rrss-t-desde, .rrss-t-pie, .rrss-t-problema, .rrss-t-hueco, .tar-mitra-sello, .can-pil, .dos-kw-mas, .tar-carpeta-docs { font-size: .78125rem; }
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), select, textarea { font-size: 1rem !important; }
}

/* 9. TÁCTIL, segunda parte: los botones redondos de las tarjetas (26 px), los selectores
      pequeños, los desplegables <summary> y el logo alcanzan su zona de 36-44 px. */
@media (hover: none) and (pointer: coarse) {
  .dos-circ { width: 36px; height: 36px; }
  select.dos-imp-mover, .tar-sel-mini, .dos-kw-mas, .can-una { min-height: 36px; }
  summary { padding-top: 12px; padding-bottom: 12px; }
  .barra-superior .logo { padding: 6px 0; }
}

/* 10. Etiquetas de red con el color de la marca de cada red: sobre blanco, Facebook (#1877F2) se
       quedaba en 4,23 y YouTube en 4,0; un 15 % de negro las lleva por encima de 4,5 sin que dejen
       de reconocerse. (En oscuro se aclaran, arriba.) */
.rrss-red-tag { color: color-mix(in srgb, var(--red-col, #888) 85%, #000); }

/* 11. «Aumentar contraste» del sistema (prefers-contrast: more): texto secundario más oscuro,
       líneas más marcadas y los paneles de vidrio con borde sólido. */
@media (prefers-contrast: more) {
  :root { --texto-suave: #4A4A4A; --linea: #8E8E8E; --lg-borde: rgba(0, 0, 0, .45); }
  html[data-modo="incognito-oscuro"] { --texto-suave: #C9D3DE; --linea: #7F8FA3; --lg-borde: rgba(255, 255, 255, .5); }
  .tar-herr, .tar-submenu-caja, .dos-busqueda-card, .modal, .toast { border: 1.5px solid var(--lg-borde); }
  .boton-primario, .dos-rango.activo { box-shadow: inset 0 0 0 1.5px rgba(0, 0, 0, .35); }
}

/* 12. El aviso de error se queda hasta que se cierra: lleva su botón; y el aviso no se mete
       bajo la barra de inicio del iPhone.
       Y SE COLOCA DONDE SE VE (09/10/2026, sistema móvil, D1 del informe 2-movil-global). Iba con
       `left: 50%` + `translateX(-50%)`, así que su ancho «encogido» solo disponía de la mitad derecha
       de la pantalla (195 px en un iPhone de 390: tres renglones), salía ENCIMA de la barra de pestañas
       y, con un diálogo abierto, DETRÁS de él (z 200 frente a 300: «Prueba enviada a…» no se veía
       nunca en el móvil). Ahora se centra con márgenes automáticos entre 12 px a cada lado, se apoya
       sobre lo que ocupe la barra de abajo (`--m-abajo`, bloque «EL SISTEMA MÓVIL») y va por encima
       de las hojas (`--z-aviso`). Radio 22 y no cápsula: con dos renglones, 999 px es un óvalo. */
.toast {
  display: inline-flex; align-items: center; gap: 12px;
  left: max(12px, env(safe-area-inset-left, 0px)); right: max(12px, env(safe-area-inset-right, 0px));
  margin-inline: auto; width: fit-content; max-width: 640px; transform: none;
  bottom: var(--m-abajo, max(24px, env(safe-area-inset-bottom, 0px))); z-index: var(--z-aviso, 400); border-radius: 22px;
}
/* El de error es rojo: con la letra del vidrio (casi negra) se quedaba en 2,4:1. */
.toast.error { color: #fff; }
.toast-cerrar { flex: none; width: 28px; height: 28px; margin: -4px -8px -4px 0; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .18); color: #fff; font-size: 1.25rem; line-height: 1; cursor: pointer; }
.toast-cerrar:hover { background: rgba(255, 255, 255, .3); }
@media (hover: none) and (pointer: coarse) { .toast-cerrar { width: 40px; height: 40px; margin-right: -12px; } }


/* ═══════════════ LAS DECISIONES DE JACOBO SOBRE LAS GUÍAS DE APPLE (12/09/2026) ═══════════════
   Vio la página de antes/después y dijo sí a la barra de pestañas del móvil, a «Como el sistema» de
   fábrica, a la tipografía dinámica, a las tarjetas opacas y a las versalitas de 12 px; y no a
   Title Case ni a la letra del sistema. Lo que va aquí es lo que se ve; la tipografía dinámica vive
   en tema.js (el tamaño raíz sigue al iPhone) y en que TODOS los tamaños de letra están en rem. */

/* 1. LA BARRA DE PESTAÑAS DEL MÓVIL, AL ESTILO DE INSTAGRAM EN iOS 26 (09/10/2026, encargo de Jacobo:
   «la barra inferior de la app de Instagram en iOS con liquid glass es una barra perfecta en fluidez y
   diseño y quiero una réplica casi exacta»). La pinta y la mueve public/js/tabbar.js (`TarsisBarra`)
   con lo que le da radar.js (`pintarTabBar`); especificación y medidas en
   docs/investigacion-movil-2026-10-09/1-barra-instagram-ios26.md. Se ve solo hasta 720 px, fuera de
   los marcos de la pantalla dividida y sin «Editar panel» en marcha.
   · Cápsula de vidrio de 62 px a 21 px de los lados, como la nativa; 86 px por pestaña + 16, centrada
     si caben. La lente, de 54, lleva DENTRO una copia de la fila con los glifos rellenos (la «lupa»).
   · El JS solo anima transform y opacity; los tamaños los escribe al maquetar, nunca en una animación.
   · SIN SOMBRA POR DEBAJO (Jacobo, 24/09/2026): se derramaba en el hueco con la barra de Safari y se
     veía como una franja oscura. El vidrio se separa del contenido con su borde y su canto de luz.
   · `--tar-hueco-abajo` (contrato del plan del 09/10, §3): lo que ocupa abajo la barra con su margen y
     el área segura; con teclado o sin barra, el hueco mínimo. Vive en <html> (lo usa también
     `scroll-padding`); la clase `tar-con-barra` la pone tabbar.js.
     ENCOGIDA NO CAMBIA (medido el 09/10 con CPU 4× en Radar: cambiar una propiedad heredada en <html>
     recalcula el documento entero, 100-400 ms por cada vez que la barra se encoge o vuelve, en mitad de
     un desplazamiento). El valor encogido está en `--tar-hueco-abajo-encogida`, fijo: quien quiera
     bajar con la barra lo usa con su propia regla `html.tar-barra-encogida .lo-suyo { … }`, que solo
     recalcula lo suyo. */
:root {
  --tb-h: 62px; --tb-insercion: 4px; --tb-relleno: 8px; --tb-ico: 27px;
  /* App a pantalla completa: 34 − 13 = 21 pt del borde, como la nativa; en Safari, 10 px sobre su barra
     (lo fijo con bottom: 0 va encima de la barra de Safari a propósito: WebKit 297779). */
  --tb-abajo: max(10px, calc(env(safe-area-inset-bottom, 0px) - 13px));
  --tb-hueco-lleno: calc(var(--tb-abajo) + var(--tb-h) + 12px);
  --tar-hueco-abajo: max(24px, env(safe-area-inset-bottom, 0px));
  --tar-hueco-abajo-encogida: calc(var(--tb-abajo) + var(--tb-h) * .88 + 7px);   /* 0,88 hacia abajo y 5 px más cerca del borde */
  --tb-vidrio: rgba(250, 251, 253, .66);          /* el vidrio de la cápsula, sobre blur(14px) saturate(1,9) */
  --tb-borde: rgba(0, 0, 0, .075);
  --tb-luz: rgba(255, 255, 255, .9);              /* canto de luz arriba… */
  --tb-luz-lado: rgba(255, 255, 255, .45);        /* …y en los lados */
  --tb-ico-color: #1A1F26;                        /* glifo en reposo */
  --tb-activo: var(--tarsis-cian-hondo, #0C6C7A); /* glifo activo: cian Tarsis (decisión de Jacobo), 5,4:1 sobre la bandeja */
  --tb-platina: color-mix(in srgb, var(--tarsis-cian, #18D7F4) 15%, rgba(255, 255, 255, .72));   /* la bandeja de la lente */
  --tb-platina-aro: rgba(0, 0, 0, .035);
  --tb-lupa: rgba(250, 251, 253, .70);            /* tapa los glifos de debajo de la gota */
  --tb-sombra-gota: 0 8px 22px rgba(0, 0, 0, .16), 0 1px 3px rgba(0, 0, 0, .10);   /* solo la gota levantada */
  --tb-gota-aro: rgba(255, 255, 255, .55); --tb-gota-canto: rgba(255, 255, 255, .85);   /* la luz de la gota levantada… */
  --tb-gota-reflejo: rgba(255, 255, 255, .45); --tb-gota-reflejo-2: rgba(255, 255, 255, .22);   /* …y sus dos reflejos */
  --tb-rojo: #FF3B30;
  --tb-solido: #F2F3F6;                           /* transparencia reducida */
}
html[data-modo="incognito-oscuro"] {
  --tb-vidrio: rgba(26, 28, 32, .64); --tb-borde: rgba(255, 255, 255, .10);
  --tb-luz: rgba(255, 255, 255, .16); --tb-luz-lado: rgba(255, 255, 255, .07); --tb-ico-color: #EEF2F6;
  --tb-activo: var(--tarsis-cian-vivo, #43E7FF); --tb-platina: rgba(67, 231, 255, .16); --tb-platina-aro: rgba(255, 255, 255, .06);
  --tb-lupa: rgba(24, 34, 50, .74); --tb-sombra-gota: 0 8px 22px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .3);
  /* En oscuro la luz de la gota es la mitad: con la del claro se veía una burbuja plateada sobre la noche. */
  --tb-gota-aro: rgba(255, 255, 255, .22); --tb-gota-canto: rgba(255, 255, 255, .34); --tb-gota-reflejo: rgba(255, 255, 255, .12); --tb-gota-reflejo-2: rgba(255, 255, 255, .06);
  --tb-rojo: #FF453A; --tb-solido: #1C1D21;
}
/* La app instalada en la pantalla de inicio (`html.tar-app`, la pone el agente de la app; o la consulta
   del navegador): sin barra de Safari, la cápsula nunca queda a menos de 16 px del borde aunque el
   sistema no declare área segura (el iPhone SE, Android). Con la del iPhone, 21 pt como la nativa. */
html.tar-app { --tb-abajo: max(16px, calc(env(safe-area-inset-bottom, 0px) - 13px)); }
@media (display-mode: standalone) { :root { --tb-abajo: max(16px, calc(env(safe-area-inset-bottom, 0px) - 13px)); } }
.tar-tabbar, .tb-borde { display: none; }
@media (max-width: 720px) {
  html:not(.tar-enmarcado) body:not(.tar-editando) .tar-tabbar {
    display: block; position: fixed; left: 0; right: 0; bottom: var(--tb-abajo); height: var(--tb-h);
    z-index: var(--z-barras, 60); pointer-events: none;
    transition: transform .32s cubic-bezier(.2, .8, .2, 1), opacity .2s ease;
  }
  /* El hueco del contenido sale de `--tar-hueco-abajo` (el de la barra entera, que no cambia al
     encogerse; con el teclado, el mínimo). Era 96 px fijos: las herramientas que miden su alto con la
     variable (el correo) dejaban 10-12 px de desplazamiento sobrante. */
  html:not(.tar-enmarcado) body:not(.tar-editando) { padding-bottom: var(--tar-hueco-abajo); }
  /* En el teléfono la fila de accesos de arriba no sale NUNCA, tampoco al editar el panel: la barra de
     abajo se personaliza en su propia hoja (D13 del informe 2-movil-global). */
  html:not(.tar-enmarcado) .tar-herr-grupo { display: none; }
  html.tar-con-barra:not(.tar-enmarcado) { --tar-hueco-abajo: var(--tb-hueco-lleno); }
  html.tar-con-barra.tar-teclado:not(.tar-enmarcado) { --tar-hueco-abajo: 12px; }
  /* CON EL TECLADO ABIERTO LA BARRA SE VA, como en las apps de iOS (radar.js, `vigilarTeclado`):
     mientras se escribe no se usa, tapa lo que se escribe y bailaría con el teclado. */
  html.tar-teclado:not(.tar-enmarcado) body:not(.tar-editando) .tar-tabbar { transform: translateY(calc(100% + 40px + env(safe-area-inset-bottom, 0px))); opacity: 0; }
  html.tar-teclado .tar-tabbar * { pointer-events: none !important; }
  /* EL BORDE DE DESPLAZAMIENTO de iOS 26 («scroll edge effect» suave): el contenido se apaga y se
     difumina justo debajo de la barra. Lleva backdrop-filter, así que Safari 26 tiñe su propia franja
     con el color de la página y no con el de este elemento (WebKit 319479): no hay franja oscura. */
  html:not(.tar-enmarcado) body:not(.tar-editando) .tb-borde {
    display: block; position: fixed; left: 0; right: 0; bottom: 0; height: calc(var(--tb-abajo) + var(--tb-h) + 44px);
    z-index: calc(var(--z-barras, 60) - 1); pointer-events: none;
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    background: linear-gradient(to top, color-mix(in srgb, var(--fondo) 55%, transparent), transparent);
    -webkit-mask-image: linear-gradient(to top, #000 35%, transparent); mask-image: linear-gradient(to top, #000 35%, transparent);
    transition: opacity .2s ease;
  }
  html.tar-teclado .tb-borde { opacity: 0; }
}
/* La cápsula: UNA sola pieza de vidrio (dos juntas dejan costura: cada backdrop-filter difumina solo lo
   que tiene debajo). Al pulsar se ensancha con transform. Las pestañas son solo el glifo, de 27 px
   (Jacobo, 24/09: «los iconos solo, sin los nombres»); el nombre va en aria-label. */
.tb-grupo { position: absolute; inset: 0; transform-origin: 50% 100%; will-change: transform; pointer-events: none; }
.tb-caja { position: absolute; top: 0; height: var(--tb-h); }   /* left y width: tabbar.js, al maquetar */
.tb-pieza {
  position: absolute; inset: 0; border-radius: calc(var(--tb-h) / 2); transform-origin: 0 0; will-change: transform;
  -webkit-backdrop-filter: blur(14px) saturate(1.9); backdrop-filter: blur(14px) saturate(1.9);
  background: var(--tb-vidrio); border: .5px solid var(--tb-borde);
  box-shadow: inset 0 1px 0 var(--tb-luz), inset 1px 0 0 var(--tb-luz-lado), inset -1px 0 0 var(--tb-luz-lado);
}
.tb-brillo-recorte { position: absolute; inset: 0; border-radius: calc(var(--tb-h) / 2); overflow: hidden; pointer-events: none; }
.tb-brillo {
  position: absolute; left: 0; top: 50%; width: 93px; height: 93px; margin-top: -46.5px; border-radius: 50%; opacity: 0;
  will-change: transform, opacity; background: radial-gradient(closest-side, var(--tb-gota-canto), var(--tb-gota-reflejo-2) 55%, rgba(255, 255, 255, 0));
}
.tb-items {
  position: absolute; inset: 0; display: flex; padding: 0 var(--tb-relleno); pointer-events: auto;
  touch-action: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none;
}
.tb-item {
  position: relative; flex: 1 1 0; min-width: 44px; display: grid; place-items: center; box-sizing: border-box;
  margin: 0; padding: 0; border: 0; border-radius: 999px; background: none; font: inherit; color: var(--tb-ico-color);
  text-decoration: none; cursor: pointer; outline: none; -webkit-appearance: none; appearance: none;
  -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none;
}
.tb-item:hover { text-decoration: none; }
.tb-item:focus-visible, html[data-modo="incognito-oscuro"] .tb-item:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--tarsis-cian-texto, #0E7E8F); }
html[data-modo="incognito-oscuro"] .tb-item:focus-visible { box-shadow: inset 0 0 0 2px var(--tarsis-cian-vivo, #43E7FF); }
.tb-glifo { position: relative; display: block; width: var(--tb-ico); height: var(--tb-ico); }
.tb-glifo > .t, .tb-glifo > .r { position: absolute; inset: 0; display: block; }
.tb-glifo > .r { display: none; }
.tb-glifo svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; overflow: visible; }
.tb-insignia {
  position: absolute; left: calc(50% + 6px); top: calc(50% - var(--tb-ico) / 2 - 7px); box-sizing: border-box; min-width: 18px; height: 18px;
  padding: 0 5px; border-radius: 9px; background: var(--tb-rojo); color: #fff; text-align: center;
  font: 600 min(.75rem, 13px)/18px var(--tipo-texto, sans-serif); box-shadow: 0 0 0 1.5px var(--fondo);
}
.tb-punto { position: absolute; left: 50%; top: calc(50% + var(--tb-ico) / 2 + 4px); width: 5px; height: 5px; margin-left: -2.5px; border-radius: 50%; background: var(--tb-rojo); }
/* LA LENTE (la gota): sombra, vidrio con lupa y luz especular, que solo se encienden al pulsar. La
   bandeja (platina) marca la pestaña abierta en reposo; dentro, la copia de la fila con los glifos
   RELLENOS en cian: fuera de la lente se ven los de trazo, así que el color viaja recortado por ella. */
.tb-lente { position: absolute; left: 0; top: var(--tb-insercion); height: calc(var(--tb-h) - 2 * var(--tb-insercion)); transform-origin: 50% 50%; will-change: transform, opacity; pointer-events: none; }
.tb-lente > * { position: absolute; inset: 0; border-radius: 999px; }
.tb-l-sombra { box-shadow: var(--tb-sombra-gota); opacity: 0; will-change: opacity; }
.tb-l-vidrio { overflow: hidden; -webkit-backdrop-filter: blur(3px) saturate(1.5) brightness(1.04); backdrop-filter: blur(3px) saturate(1.5) brightness(1.04); background: var(--tb-lupa); }
.tb-l-platina { position: absolute; inset: 0; border-radius: 999px; background: var(--tb-platina); box-shadow: 0 0 0 .5px var(--tb-platina-aro); will-change: opacity; }
.tb-l-luz {
  opacity: 0; will-change: opacity;
  box-shadow: inset 0 0 0 .75px var(--tb-gota-aro), inset 0 1.5px 1.5px var(--tb-gota-canto), inset 0 -2px 5px rgba(0, 0, 0, .07);
  background: radial-gradient(110% 70% at 30% 0%, var(--tb-gota-reflejo), transparent 62%), radial-gradient(80% 60% at 75% 110%, var(--tb-gota-reflejo-2), transparent 60%);
}
.tb-fila-copia { position: absolute; left: 0; top: 0; height: var(--tb-h); display: flex; box-sizing: border-box; padding: 0 var(--tb-relleno); transform-origin: 0 0; will-change: transform; }
.tb-fila-copia .tb-item { color: var(--tb-activo); cursor: default; }
.tb-fila-copia .tb-glifo > .t { display: none; }
.tb-fila-copia .tb-glifo > .r { display: block; }
/* EL MENÚ «MÁS»: una cápsula de vidrio que brota de la pestaña, como los menús de iOS 26 (tabbar.js
   la escala y la funde con muelle). Filas de 48 px con glifo y nombre; la abierta, en cian y rellena. */
.tb-menu {
  position: fixed; z-index: var(--z-menu, 80); right: 16px; bottom: calc(var(--tb-abajo) + var(--tb-h) + 10px);
  box-sizing: border-box; min-width: 228px; max-width: calc(100vw - 32px);
  max-height: calc(100vh - var(--tb-abajo) - var(--tb-h) - 110px); max-height: calc(100dvh - var(--tb-abajo) - var(--tb-h) - 110px);
  overflow-y: auto; overscroll-behavior: contain; padding: 8px; border-radius: 26px;
  transform-origin: 100% 100%; transform: scale(.35); opacity: 0; pointer-events: none; will-change: transform, opacity;
  background: color-mix(in srgb, var(--superficie, #fff) 72%, transparent); border: .5px solid var(--tb-borde);
  -webkit-backdrop-filter: blur(22px) saturate(1.9); backdrop-filter: blur(22px) saturate(1.9);
  box-shadow: inset 0 1px 0 var(--tb-luz), 0 12px 40px rgba(0, 0, 0, .18);
  font-family: var(--tipo-marca); color: var(--texto);
}
.tb-menu.abierto { pointer-events: auto; }
.tb-menu-fila {
  position: relative; display: flex; align-items: center; gap: 12px; box-sizing: border-box; width: 100%; min-height: 48px; padding: 0 14px;
  margin: 0; border: 0; border-radius: 18px; background: none; color: var(--texto); font: inherit; font-size: .9375rem; font-weight: 600;
  text-align: left; text-decoration: none; cursor: pointer; -webkit-appearance: none; appearance: none; -webkit-tap-highlight-color: transparent;
}
.tb-menu .tb-menu-fila:hover, .tb-menu .tb-menu-fila:active, .tb-menu .tb-menu-fila:focus-visible,
html[data-modo="incognito-oscuro"] .tb-menu .tb-menu-fila:focus-visible { background: color-mix(in srgb, var(--texto) 8%, transparent); outline: none; text-decoration: none; opacity: 1; }
.tb-menu-fila[aria-current="page"] { color: var(--tb-activo); }
.tb-menu-fila[aria-current="page"] .tb-glifo > .t { display: none; }
.tb-menu-fila[aria-current="page"] .tb-glifo > .r { display: block; }
.tb-menu-glifo { flex: none; display: grid; place-items: center; width: 24px; height: 24px; }
.tb-menu-glifo .tb-glifo, .tb-menu-glifo > svg { width: 24px; height: 24px; }
.tb-menu-sep { height: 1px; margin: 6px 12px; background: var(--tb-borde); }
/* EL VISOR DE CONTENIDO GRANDE: con texto de accesibilidad, mantener pulsada una pestaña enseña su
   glifo y su nombre en grande (UILargeContentViewer); la barra no crece. */
.tb-visor {
  position: fixed; z-index: calc(var(--z-barras, 60) + 2); left: 50%; bottom: calc(var(--tb-abajo) + var(--tb-h) + 24px); transform: translateX(-50%);
  min-width: 150px; padding: 18px 22px 16px; border-radius: 26px; display: none; flex-direction: column; align-items: center; gap: 8px;
  font: 600 1.375rem/1.2 var(--tipo-marca); color: var(--texto); pointer-events: none;
  background: color-mix(in srgb, var(--superficie, #fff) 84%, transparent); border: .5px solid var(--tb-borde);
  -webkit-backdrop-filter: blur(22px) saturate(1.8); backdrop-filter: blur(22px) saturate(1.8); box-shadow: 0 12px 40px rgba(0, 0, 0, .2);
}
.tb-visor.visible { display: flex; }
.tb-visor svg { width: 56px; height: 56px; }
/* LA HÁPTICA DE SAFARI (iOS 18+): tocar un <label> con un <input type="checkbox" switch> dentro hace
   vibrar el iPhone, y desde iOS 26.5 solo con un toque REAL; por eso cada objetivo táctil lleva su label
   encima, a toda su superficie (tabbar.js). El interruptor va escondido con visibility. Con ratón el
   label no existe: el clic cae en el enlace y Ctrl/Cmd+clic o el botón central abren otra pestaña. */
.tb-tic { position: absolute; inset: 0; z-index: 2; border-radius: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; }
.tb-tic input { position: absolute; visibility: hidden; width: 1px; height: 1px; margin: 0; pointer-events: none; }
@media (hover: hover) and (pointer: fine) { .tb-tic { display: none; } }
.tb-haptica { position: fixed; left: -200px; top: 0; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; }
/* El interruptor del label de la háptica programada, escondido igual que los de las pestañas: se
   seguía midiendo 13×13 y la auditoría HIG lo contaba como control sin nombre (09/10/2026). */
.tb-haptica input { position: absolute; visibility: hidden; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.tb-defs { position: absolute; width: 0; height: 0; overflow: hidden; }
/* Accesibilidad: «Reducir movimiento» lo lleva tabbar.js (muelles críticos y cortos, sin elevación ni
   estiramiento); aquí, la transición del teclado. «Aumentar contraste»: bordes, glifos negros (blancos
   en oscuro) y aro en la bandeja. «Reducir transparencia» (Safari no la deja leer; vale donde exista):
   vidrio opaco y sin borde de desplazamiento. */
@media (prefers-reduced-motion: reduce) { .tar-tabbar, .tb-borde { transition-duration: .01ms !important; } }
@media (prefers-contrast: more) {
  :root { --tb-borde: rgba(0, 0, 0, .5); --tb-ico-color: #000; --tb-activo: var(--tarsis-cian-tinta, #0A5A66); --tb-vidrio: rgba(250, 251, 253, .9); }
  html[data-modo="incognito-oscuro"] { --tb-borde: rgba(255, 255, 255, .55); --tb-ico-color: #fff; --tb-activo: var(--tarsis-cian-vivo, #43E7FF); --tb-vidrio: rgba(26, 28, 32, .9); }
  .tb-pieza { border-width: 1px; }
  .tb-l-platina { box-shadow: inset 0 0 0 1.5px var(--tb-activo); }
}
@media (prefers-reduced-transparency: reduce) {
  .tb-pieza, .tb-l-vidrio, .tb-menu, .tb-visor { -webkit-backdrop-filter: none; backdrop-filter: none; }
  .tb-pieza, .tb-l-vidrio { background: var(--tb-solido); }
  .tb-menu, .tb-visor { background: var(--superficie, #fff); }
  .tb-borde { display: none !important; }
}
/* EDITAR PANEL EN EL TELÉFONO (D13): el aviso no habla de «la barra de arriba», que en el móvil no
   existe, y trae el botón de «Personalizar la barra» (la hoja, en radar.js). En el escritorio, igual. */
.tar-panel-edicion .tb-ed-movil, .tar-panel-edicion #tar-personalizar-barra { display: none; }
@media (max-width: 720px) {
  .tar-panel-edicion .tb-ed-escritorio { display: none; }
  .tar-panel-edicion .tb-ed-movil { display: inline; }
  .tar-panel-edicion #tar-personalizar-barra { display: inline-flex; }
  .tar-panel-edicion > .tb-ed-botones { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .tar-panel-edicion > .tb-ed-botones > button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: 0; }
}
/* LA HOJA «PERSONALIZAR LA BARRA» (D13): la vista previa de la barra, las pestañas que van en ella con
   su asa para ordenarlas y su botón de quitar, y las que se quedan fuera con el de añadir (el patrón de
   iOS para personalizar). Panel va siempre primero. Se guarda al momento, como «Editar panel». */
.tb-pers-previa { display: flex; justify-content: center; gap: 4px; margin: 0 0 16px; padding: 10px 8px; border-radius: 999px; background: var(--superficie-2, color-mix(in srgb, var(--texto) 5%, transparent)); border: 1px solid var(--lg-borde, var(--linea)); }
.tb-pers-previa span { display: grid; place-items: center; width: 52px; height: 36px; color: var(--tb-ico-color); }
.tb-pers-previa span.activa { color: var(--tb-activo); }
.tb-pers-previa svg { width: 24px; height: 24px; display: block; }
.tb-pers-tit { margin: 14px 2px 6px; font: 600 .75rem/1.2 var(--tipo-marca); letter-spacing: .12em; text-transform: uppercase; color: var(--texto-suave); }
.tb-pers-lista { list-style: none; margin: 0; padding: 3px; border-radius: 18px; border: 1.5px solid var(--lg-borde, var(--linea)); background: var(--lg-panel-solido, var(--superficie)); }
.tb-pers-fila { position: relative; display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 6px 0 4px; background: var(--lg-panel-solido, var(--superficie)); transition: transform .2s ease; }
.tb-pers-fila + .tb-pers-fila { border-top: 1.5px solid var(--lg-borde, var(--linea)); }
.tb-pers-fila:first-child { border-radius: 15px 15px 0 0; }
.tb-pers-fila:last-child { border-radius: 0 0 15px 15px; }
.tb-pers-fila:only-child { border-radius: 15px; }
.tb-pers-fila.arrastrando { z-index: 2; border-radius: 15px; transition: none; box-shadow: 0 8px 24px rgba(0, 0, 0, .16); }
.tb-pers-glifo { flex: none; width: 24px; height: 24px; color: var(--texto); }
.tb-pers-glifo svg { width: 24px; height: 24px; display: block; }
.tb-pers-nombre { flex: 1; min-width: 0; font: 600 .9375rem/1.2 var(--tipo-marca); color: var(--texto); }
.tb-pers-nota { font: 500 .8125rem/1.2 var(--tipo-texto); color: var(--texto-suave); padding-right: 10px; }
.tb-pers-btn {
  flex: none; display: grid; place-items: center; width: 44px; height: 44px; margin: 0; padding: 0; border: 0; border-radius: 999px;
  background: none; color: var(--texto-suave); cursor: pointer; -webkit-appearance: none; appearance: none;
}
.tb-pers-btn svg { width: 22px; height: 22px; display: block; }
.tb-pers-btn.quitar { color: #C9373D; }
.tb-pers-btn.anadir { color: var(--verde-oscuro, #0E7E8F); }
.tb-pers-btn:disabled { opacity: .35; cursor: default; }
.tb-pers-btn.asa { touch-action: none; cursor: grab; }
html[data-modo="incognito-oscuro"] .tb-pers-btn.quitar { color: #EE8A8D; }
.tb-pers-pie { margin: 12px 2px 0; font-size: .8125rem; color: var(--texto-suave); }
/* EL MUELLE DE LA CASA (24/09/2026): la curva con la que se mueven otras piezas (la hoja inferior, por
   ejemplo). Ya no la usa la barra, que lleva muelles físicos en tabbar.js. */
:root { --tar-muelle: cubic-bezier(.34, 1.3, .64, 1); }
@supports (transition-timing-function: linear(0, 1)) {
  :root { --tar-muelle: linear(0, 0.0265, 0.094, 0.1868, 0.2929, 0.4029, 0.5102, 0.6102, 0.7001, 0.7783, 0.8445, 0.8988, 0.942, 0.9754, 1, 1.0174, 1.0287, 1.0353, 1.0381, 1.0382, 1.0363, 1.0332, 1.0293, 1.0251, 1.0209, 1.0169, 1.0133, 1.01, 1.0072, 1.0049, 1.003, 1.0016, 1.0005, 0.9996, 0.9991, 0.9988, 1); }
}

/* Y LA FLECHA SE ESCONDE DE VERDAD. El JS le pone `hidden` cuando no recoge ningún acceso, pero el
   `display: none` del navegador para `[hidden]` no lleva !important y cualquier regla de display lo
   pisa: aquí lo hacía `.tar-herr-grupo .tar-radar-menu { display: inline-flex }` (que además, dentro
   de un contenedor flex, calcula «flex»). Por eso la flecha salía siempre, aunque no hubiera nada
   detrás. Esta regla es más específica y llega después. */
.tar-herr-grupo .tar-radar-menu[hidden], #tar-mas[hidden] { display: none; }

/* 5. TARJETAS OPACAS. Liquid Glass reserva el vidrio a la capa de navegación (barra, menús, avisos)
   y quiere el contenido opaco para que se lea sin competir con lo que hay detrás. Las tarjetas del
   panel (tarsis.css), las de cuenta y los KPI de Redes, los tablones de Tareas, las tarjetas de
   Google y las portadas dejan el vidrio; el color es el mismo panel sólido que usan los menús. */
.rrss-kpi, .rrss-tarjeta, .rrss-lienzo, .tar-gcard, .tt-tablon, .dos-prensa-tile {
  backdrop-filter: none; -webkit-backdrop-filter: none;
  background: var(--lg-panel-solido, #fff);
}

/* 7. VERSALITAS A 12 PX EN EL MÓVIL. 11 pt es el mínimo de Apple; 12 se lee sin esfuerzo. Solo las
   que estaban por debajo de 12. */
@media (max-width: 720px) {
  .tar-plan, .tar-herr-pro, .tar-herr-llave, .tar-salir, .tar-herr-grupo .tar-radar-btn, .desplegable h4, .rotulo, .metrica .etq,
  .dos-stat-l, .dos-grupo-tit, .rrss-kpi-lab, .dos-card-periodo, .rrss-t-cif i, .cal-dia-nombre, .cfg-tr.cfg-th,
  .pp-aparece-eti, .dos-an-ctx-tit { font-size: .75rem; }
}

/* ═══════════════ EL MÓVIL, SEGUNDA VUELTA (24/09/2026, Jacobo) ═══════════════
   «Debe haber 3 iconos por fila, manteniendo las proporciones del icono pero reduciendo el tamaño.
   En Radar igual pero dos búsquedas por fila.» Esto actualiza PARA EL MÓVIL la norma de las
   pastillas de tamaño fijo del 12/09: en el escritorio y en la pantalla dividida siguen midiendo
   212 y 256; en el teléfono la rejilla es de tres y de dos columnas iguales, y lo de dentro se
   reduce en proporción (el icono no se deforma: se hace más pequeño).
   DENTRO DE UN MARCO DE LA PANTALLA DIVIDIDA NO (09/10/2026, pantalla dividida, D3): la media query
   mira el ancho del marco, y cualquier mitad de una ventana de menos de 1.450 px le aplicaba el
   diseño de teléfono (pastillas de 143 × 155 sin frase). Cada selector va precedido de
   `:where(html:not(.tar-enmarcado), .tar-en-pareja)`: fuera de los marcos, como siempre; en un marco,
   solo en la «pareja» del teléfono, donde el marco ES la pantalla entera. `:where()` no suma
   especificidad: ninguna otra regla cambia de ganadora. */
@media (max-width: 720px) {
  /* EL PANEL: tres por fila, como la pantalla de inicio del iPhone. Icono y nombre; la frase de
     debajo no cabe a este tamaño y se queda para el escritorio. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-panel { grid-template-columns: repeat(3, minmax(0, 1fr)); justify-content: stretch; gap: 12px 10px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr {
    width: auto; height: auto; aspect-ratio: 1 / 1.08; min-width: 0;
    padding: 26px 6px 10px; gap: 7px; justify-content: flex-start; border-radius: 20px;
  }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-icono, :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-ico { width: 56px; height: 56px; border-radius: 16px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-nombre { font-size: .8125rem; line-height: 1.2; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  /* El nombre corto («Redes» y no «Redes sociales», que no cabía): el largo se queda para el
     lector de pantalla, escondido a la vista pero no para él. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-nombre .tar-nom-corto { display: inline; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-nombre .tar-nom-largo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-desc { display: none; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-pro, :where(html:not(.tar-enmarcado), .tar-en-pareja) .tar-herr-llave { top: 5px; right: 5px; padding: 3px 5px; letter-spacing: .04em; }

  /* RADAR: dos búsquedas por fila. La tarjeta entera abre la búsqueda, así que «Abrir» sobra a
     este tamaño; «Editar» y «Regenerar» se quedan, a medias del ancho. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas { grid-template-columns: repeat(2, minmax(0, 1fr)); justify-content: stretch; gap: 20px 10px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-slot { padding: 12px 4px 4px; min-height: 0; border-radius: 14px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-busqueda-card { padding: 10px 9px 9px; gap: 6px; min-width: 0; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-sup { gap: 5px; min-height: 0; }
  /* El nombre de la fuente («Prensa») no cabía y salía «Pre…»: a este tamaño lo dice su icono. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-sola .dos-card-fuente, :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-varias .dos-card-fuente { display: none; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-mandos { gap: 6px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-kws { padding-right: 0; min-height: 0; gap: 4px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-kws .dos-kw-chip { font-size: .75rem; padding: 3px 8px; }
  /* Si con «+N» la primera palabra aún no cabe (una larga, como «fernandez calle»), se encoge con
     puntos suspensivos; solo entonces, para que el cálculo de cuántas caben (radar.js,
     `ajustarKeywords`) mida las palabras a su tamaño de verdad. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-kws:has(.dos-kw-mas) .dos-kw-chip:first-child { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-kws .dos-kw-mas { flex: none; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-ambito { font-size: .75rem; letter-spacing: .04em; gap: 4px; min-width: 0; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-ambito > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-stats { min-height: 0; gap: 5px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-n { font-size: 1.5rem; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-fecha { font-size: .75rem; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-acc { padding-top: 8px; gap: 6px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-acc > .boton-primario { display: none; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-card-acc > .boton-secundario, :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-cj .dos-card-acc > * {
    flex: 1 1 0; min-width: 0; min-height: 40px; padding: 6px 4px; font-size: .75rem;
    display: inline-flex; align-items: center; justify-content: center; text-align: center;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  /* En el móvil, «Editar» y «Regenerar» son su icono (el nombre va en aria-label y en title). */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-acc-ico { display: block; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-acc-txt, :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-cj-menu > svg:not(.dos-acc-ico) { display: none; }
}
/* En el escritorio, al revés: el texto y no el icono; y el nombre largo de la herramienta. */
.dos-acc-ico { display: none; flex: none; }
.tar-nom-corto { display: none; }

/* CON EL DEDO, LA BÚSQUEDA SE COGE CON PULSACIÓN LARGA (radar.js, `initTablon`): encima de las
   tarjetas la página se desplaza como en cualquier otro sitio, y al mantener una pulsada ~0,4 s
   se levanta un poco para decir «ya puedes moverme». Sin el menú de iOS al mantener pulsado. */
@media (hover: none) and (pointer: coarse) {
  .dos-busquedas .dos-busqueda-card { touch-action: pan-y; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; }
}
.dos-busqueda-card.dos-armada {
  transform: scale(1.035); z-index: 4;
  box-shadow: var(--lg-sombra-alta, 0 18px 50px rgba(0,0,0,.18));
  transition: transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .22s ease;
}
@media (prefers-reduced-motion: reduce) { .dos-busqueda-card.dos-armada { transform: none; } }

/* LA CABECERA EN UNA SOLA FILA también en los teléfonos de 360-375 px: en 375 se partía en dos
   por 9 px (logo 131 + hueco 12 + cuenta 184 contra 318 útiles). Menos hueco y, en los más
   estrechos, el logo un poco más bajo. En «Editar panel» sí se parte, porque debajo vuelve la
   fila de accesos con sus flechas. */
@media (max-width: 720px) {
  body:not(.tar-editando) .barra-interior { flex-wrap: nowrap; gap: 8px; }
  .barra-superior #cuenta-zona { gap: 8px; }
}
@media (max-width: 380px) { .logo-tarsis { --logo-alto: 23px; } }

/* LAS BARRAS, QUIETAS (24/09/2026, Jacobo: «los menús de arriba y de abajo deben estar siempre
   fijos… especialmente cuando se abre un teclado»). Lo investigado (WebKit 297779, iOS 26):
   · al tirar de la página más allá del principio o del final, iOS rebotaba TODO, la cabecera
     también: sin rebote en la raíz, las dos barras se quedan quietas;
   · que la de abajo acompañe a la barra de Safari cuando esta se encoge al desplazar es cosa de
     Safari, a propósito (lo fijo abajo se coloca SOBRE su barra), y es lo que deja que el contenido
     pase por debajo del vidrio del navegador, que es lo que hace que la web parezca infinita;
   · con el teclado abierto, iOS desplaza la vista para enseñar el campo y lo pegado arriba o abajo
     salía y entraba a saltos: mientras se escribe se van las dos, como la de abajo en las apps de
     iOS, y vuelven al cerrarlo (radar.js, `vigilarTeclado`). */
@media (max-width: 720px) {
  html, body { overscroll-behavior-y: none; }
  .barra-superior { transition: transform .28s cubic-bezier(.2, .8, .2, 1), opacity .2s ease; }
  html.tar-teclado:not(.tar-enmarcado) .barra-superior { transform: translateY(calc(-100% - 16px)); opacity: 0; pointer-events: none; }
  /* El fallo de iOS 26 al cerrar el teclado deja la parte visible desplazada respecto a la página y
     la cabecera quedaba medio escondida: se mueve exactamente ese desplazamiento, que mide radar.js
     (`--vv-top`, en `vigilarTeclado`). LA BARRA DE ABAJO NO (24/09, 11:42, en el iPhone de Jacobo):
     al desplazar, iOS declara también ese desfase, la barra bajaba con él y Safari la cortaba por la
     mitad, porque no deja que nada fijo pase por debajo del borde de su barra. */
  html:not(.tar-enmarcado) .barra-superior { translate: 0 var(--vv-top, 0px); }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v345 · LA PASTILLA DEL TABLÓN, REORDENADA (Jacobo, 30/09/2026)
   «Prensa y su icono arriba pero más pequeño, después el número de impactos y el número de medios,
   después las keyword, después el ámbito de los medios y por último la fecha.» Y los tres botones
   iguales: mismo alto, misma línea base y la misma reacción al pasar por encima (ninguno se subraya).
   ══════════════════════════════════════════════════════════════════════════════════════════════ */
.dos-v345 > * { flex-shrink: 0; }
.dos-v345 .dos-card-sup { min-height: 24px; gap: 6px; }
.dos-v345 .dos-amb-ico { width: 20px; height: 20px; border-radius: 6px; }
.dos-v345 .dos-amb-ico svg { width: 12px; height: 12px; }
.dos-v345 .dos-card-ambitos > .dos-amb-ico + .dos-amb-ico { margin-left: -3px; }
.dos-v345 .dos-card-fuente { font-family: var(--tipo-marca); font-size: .6875rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--texto-suave); }
.dos-v345:not(.dos-cj) .dos-card-stats { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 14px; min-height: 30px; margin-top: 2px; }
.dos-card-cifra { display: inline-flex; align-items: baseline; gap: 5px; font-size: .8125rem; color: var(--texto-suave); white-space: nowrap; }
.dos-card-cifra b { font-size: 1.375rem; font-weight: 700; line-height: 1.05; letter-spacing: -.02em; color: var(--texto); font-variant-numeric: tabular-nums; }
.dos-card-cifra.dcf-medios b { color: var(--f-medios-t); }
.dos-card-cifra.dcf-rrss b { color: var(--f-rrss-t); }
.dos-card-cifra.dcf-trends b { color: var(--f-trends-t); }
.dos-v345 .dos-card-kws { padding-right: 0; }
.dos-v345 > .dos-card-fecha { flex-basis: auto; font-size: .71875rem; color: var(--texto-suave); }
.dos-v345 .dos-card-acc { display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; }
.dos-acc {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 32px; padding: 0 9px; margin: 0; border-radius: 10px;
  font-family: var(--tipo-marca); font-size: .78125rem; font-weight: 600; line-height: 1;
  color: var(--texto); background: var(--superficie);
  border: 1px solid var(--lg-borde, var(--linea)); box-shadow: none;
  text-decoration: none; white-space: nowrap; cursor: pointer; flex: 1 1 auto;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.dos-acc:hover, .dos-acc:focus-visible { text-decoration: none; background: rgba(0,134,163,.08); color: var(--verde-oscuro); border-color: color-mix(in srgb, var(--verde-oscuro) 35%, transparent); }
html[data-modo="incognito-oscuro"] .dos-acc:hover { background: rgba(47,198,224,.13); }
.dos-acc-abrir { color: #fff; background: var(--src, var(--verde-solido)); border-color: transparent; box-shadow: inset 0 0 0 999px rgba(0,0,0,.26); }
.dos-acc-abrir:hover, .dos-acc-abrir:focus-visible { color: #fff; background: var(--src, var(--verde-solido)); border-color: transparent; box-shadow: inset 0 0 0 999px rgba(0,0,0,.36); }
.dos-mix-medios-rrss .dos-acc-abrir { background: linear-gradient(100deg, var(--f-medios), var(--f-rrss)); }
.dos-mix-medios-trends .dos-acc-abrir { background: linear-gradient(100deg, var(--f-medios), var(--f-trends)); }
.dos-mix-rrss-trends .dos-acc-abrir { background: linear-gradient(100deg, var(--f-rrss), var(--f-trends)); }
.dos-mix-medios-rrss-trends .dos-acc-abrir { background: linear-gradient(100deg, var(--f-medios), var(--f-rrss) 55%, var(--f-trends)); }
.dos-acc .dos-acc-ico { width: 15px; height: 15px; }
.dos-acc > svg:not(.dos-acc-ico) { flex: none; }

/* EL «+N» Y SU BOCADILLO, como los desplegables de la cabecera: la caja de vidrio, las esquinas de la
   cápsula y el rótulo en versalitas espaciadas. Trae solo las palabras que no caben en la pastilla. */
.dos-minipop.dos-minipop-kws {
  width: auto; min-width: 150px; max-width: 232px; padding: 10px 11px 11px; gap: 8px;
  border-radius: 16px; border: 1.5px solid var(--lg-borde, var(--linea));
  background: var(--lg-panel-solido, var(--superficie)); box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
  animation: dos-kws-entra .18s ease;
}
.dos-minipop-kws .dos-minipop-tit { font-family: var(--tipo-marca); letter-spacing: .11em; font-weight: 600; }
.dos-minipop-kws .dos-kw-todas { display: flex; flex-wrap: wrap; gap: 5px; }
@keyframes dos-kws-entra { from { opacity: 0; transform: translateY(-4px) scale(.98); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .dos-minipop.dos-minipop-kws { animation: none; } }

/* EN EL MÓVIL, UNA BÚSQUEDA POR FILA Y A TODO EL ANCHO (Jacobo, 30/09/2026: «no tiene que haber dos
   pastillas por fila, así es mejor y cabe más información»). Vuelven el nombre de la fuente, «Abrir»
   y el texto de «Editar» y «Regenerar», que a media anchura no cabían.
   Como la segunda vuelta de arriba, NO dentro de un marco de la pantalla dividida (09/10/2026, D3):
   allí las búsquedas siguen midiendo 256 (norma del 12/09); en la «pareja» del teléfono, sí. */
@media (max-width: 720px) {
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-slot { padding: 10px 6px 6px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-busqueda-card.dos-v345 { padding: 12px 14px 12px; gap: 8px; min-height: 0; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-sola.dos-v345, :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-varias.dos-v345 { padding-top: 22px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345 .dos-card-fuente { display: inline; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345 .dos-card-kws .dos-kw-chip { font-size: .8125rem; padding: 4px 11px; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345 .dos-card-acc > .dos-acc { display: inline-flex; flex: 1 1 0; min-width: 0; height: 40px; font-size: .8125rem; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345 .dos-acc-txt { display: inline; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345 .dos-acc-ico { display: none; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) .dos-busquedas .dos-v345.dos-cj .dos-cj-menu > svg:not(.dos-acc-ico) { display: inline; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v345 · NUEVA BÚSQUEDA: LOS INGREDIENTES (Jacobo, 30/09/2026)
   «¿Qué ingredientes añadimos en tu búsqueda?» y una pastilla por ingrediente, con el icono de las
   pastillas del tablón, su color sutil y una frase. Se eligen uno o varios; debajo, «Definir búsqueda».
   ══════════════════════════════════════════════════════════════════════════════════════════════ */
.tar-ingr-elegir { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; margin-top: 18px; }
.tar-ingr {
  --ing: var(--verde); --ing-t: var(--verde-texto, var(--texto));
  position: relative; display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: center;
  column-gap: 12px; row-gap: 8px; padding: 18px 18px 18px 16px; text-align: left; cursor: pointer;
  font: inherit; color: var(--texto); border-radius: 20px;
  border: 1.5px solid color-mix(in srgb, var(--ing) 22%, var(--lg-borde, var(--linea)));
  background: color-mix(in srgb, var(--ing) 6%, var(--superficie));
  box-shadow: var(--lg-sombra-control, 0 1px 3px rgba(0,0,0,.05));
  transition: border-color .18s ease, background .18s ease, box-shadow .18s ease, transform .18s ease;
}
.tar-ingr.dos-f-medios { --ing: var(--f-medios); --ing-t: var(--f-medios-t); }
.tar-ingr.dos-f-trends { --ing: var(--f-trends); --ing-t: var(--f-trends-t); }
.tar-ingr.dos-f-rrss { --ing: var(--f-rrss); --ing-t: var(--f-rrss-t); }
.tar-ingr:hover { transform: translateY(-1px); border-color: color-mix(in srgb, var(--ing) 45%, transparent); box-shadow: 0 8px 22px -10px color-mix(in srgb, var(--ing) 60%, transparent); }
.tar-ingr.activo { border-color: var(--ing); background: color-mix(in srgb, var(--ing) 12%, var(--superficie)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ing) 16%, transparent); }
.tar-ingr-ico { grid-row: 1; grid-column: 1; width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; color: var(--ing-t); background: color-mix(in srgb, var(--ing) 15%, var(--superficie)); border: 1px solid color-mix(in srgb, var(--ing) 35%, transparent); }
.tar-ingr-ico svg, .tar-ingr-ico .tar-ico { width: 20px; height: 20px; }
.tar-ingr-nombre { grid-row: 1; grid-column: 2; font-family: var(--tipo-marca); font-weight: 600; font-size: 1.0625rem; color: var(--texto); padding-right: 30px; }
.tar-ingr-frase { grid-row: 2; grid-column: 1 / -1; font-size: .84375rem; line-height: 1.45; color: var(--texto-suave); }
/* La marca de elegido: un círculo que se rellena del color del ingrediente. */
.tar-ingr-marca { position: absolute; top: 16px; right: 16px; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid color-mix(in srgb, var(--ing) 45%, var(--linea)); background: var(--superficie); transition: background .15s ease, border-color .15s ease; }
.tar-ingr.activo .tar-ingr-marca { background: var(--ing) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M3.6 8.4l2.9 2.9 5.9-6.4" fill="none" stroke="white" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center / 14px no-repeat; border-color: var(--ing); }
.tar-ingr-pie { display: flex; justify-content: center; margin-top: 26px; }
.tar-ingr-definir { min-width: 220px; min-height: 46px; font-size: .9375rem; border-radius: 999px; }
.tar-ingr-definir[disabled] { opacity: .5; cursor: not-allowed; }
@media (max-width: 720px) {
  .tar-ingr-elegir { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .tar-ingr-definir { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .tar-ingr, .tar-ingr:hover { transition: none; transform: none; } }

/* LA BARRA DE INGREDIENTES, con un solo «+ Añadir ingrediente» y su menú (como los de la cabecera). */
.tar-ingredientes { align-items: center; }
.tar-ing-activo.dos-f-medios, .tar-ing-activo.dos-f-trends, .tar-ing-activo.dos-f-rrss { border: 1px solid color-mix(in srgb, currentColor 30%, transparent); }
.tar-ing-cadena { color: var(--texto); background: var(--superficie); }
.tar-ing-cadena.hecho { color: var(--texto-suave); }
.tar-ing-quitar { display: inline-grid; place-items: center; width: 20px; height: 20px; margin: -2px -6px -2px 0; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--texto-suave); cursor: pointer; }
.tar-ing-quitar:hover { background: rgba(194, 52, 52, .1); color: #c23434; }
.tar-ing-quitar svg { width: 11px; height: 11px; }
.tar-ing-mas { position: relative; display: inline-flex; }
button.tar-ing-anadir { cursor: pointer; font: inherit; font-size: .825rem; font-weight: 600; color: var(--texto-suave); background: transparent; }
button.tar-ing-anadir:hover, button.tar-ing-anadir[aria-expanded="true"] { background: rgba(0,134,163,.08); color: var(--verde-oscuro); border-color: color-mix(in srgb, var(--verde-oscuro) 45%, transparent); }
.tar-ing-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; display: flex; flex-direction: column; min-width: 280px; max-width: min(340px, 86vw);
  padding: 4px; border-radius: 18px; border: 1.5px solid var(--lg-borde, var(--linea));
  background: var(--lg-panel-solido, var(--superficie)); box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
  animation: dos-kws-entra .18s ease;
}
.tar-ing-menu[hidden] { display: none; }
.tar-ing-op { display: flex; align-items: flex-start; gap: 11px; width: 100%; padding: 10px 12px; border: 0; border-radius: 14px; background: transparent; text-align: left; cursor: pointer; font: inherit; color: var(--texto); }
.tar-ing-op + .tar-ing-op { border-top: 1.5px solid var(--lg-borde, var(--linea)); border-radius: 0 0 14px 14px; }
.tar-ing-op:hover, .tar-ing-op:focus-visible { background: rgba(0,134,163,.07); }
.tar-ing-op-ico { flex: none; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; border: 1px solid; }
.tar-ing-op-ico .tar-ico, .tar-ing-op-ico svg { width: 16px; height: 16px; }
.tar-ing-op.dos-f-medios, .tar-ing-op.dos-f-trends, .tar-ing-op.dos-f-rrss { background: transparent; border-color: transparent; color: var(--texto); }
.dos-f-medios > .tar-ing-op-ico { color: var(--f-medios-t); border-color: color-mix(in srgb, var(--f-medios) 40%, transparent); background: color-mix(in srgb, var(--f-medios) 12%, var(--superficie)); }
.dos-f-trends > .tar-ing-op-ico { color: var(--f-trends-t); border-color: color-mix(in srgb, var(--f-trends) 40%, transparent); background: color-mix(in srgb, var(--f-trends) 12%, var(--superficie)); }
.dos-f-rrss > .tar-ing-op-ico { color: var(--f-rrss-t); border-color: color-mix(in srgb, var(--f-rrss) 40%, transparent); background: color-mix(in srgb, var(--f-rrss) 12%, var(--superficie)); }
.tar-ing-op-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tar-ing-op-txt b { font-family: var(--tipo-marca); font-size: .875rem; font-weight: 600; }
.tar-ing-op-txt small { font-size: .78125rem; line-height: 1.35; color: var(--texto-suave); }
.tar-paso-cadena { margin: 6px 0 12px; }

/* TEMÁTICOS, junto a «Todos · Ninguno»: un desplegable con una casilla por temática. */
.tar-tem-caja { position: relative; display: inline-flex; }
/* El menú abierto sube su tarjeta por encima de la siguiente (cada .dos-campo crea su propio apilamiento). */
.dos-campo:has(.tar-tem-menu:not([hidden])) { z-index: 80; }
.tar-tem-btn { display: inline-flex; align-items: center; gap: 6px; }
.tar-tem-flecha { display: inline-flex; transition: transform .18s ease; }
.tar-tem-flecha svg { width: 11px; height: 11px; }
.tar-tem-btn.abierto .tar-tem-flecha { transform: rotate(180deg); }
.tar-tem-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 40; display: flex; flex-direction: column; min-width: 230px;
  padding: 4px; border-radius: 16px; border: 1.5px solid var(--lg-borde, var(--linea));
  background: var(--lg-panel-solido, var(--superficie)); box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
}
.tar-tem-menu[hidden] { display: none; }
.tar-tem-op { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 11px; cursor: pointer; font-size: .875rem; }
.tar-tem-op:hover { background: rgba(0,134,163,.07); }
.tar-tem-nom { flex: 1; }
/* «Ninguno» ya no pliega: la caja del árbol queda siempre abierta (radar.js, `modo`). */

/* A FONDO O RÁPIDA: dos casillas excluyentes y la explicación de la elegida debajo. */
.dos-modo-casillas { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.dos-modo-op { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; font-weight: 600; font-size: .9375rem; }
.dos-modo-op input { margin: 0; }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v345 · LA PÁGINA DE RESULTADOS (Jacobo, 30/09/2026)
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* LOS FILTROS, COMO LA CABECERA. «Opciones limpias que, si pasas el cursor por encima o las tocas en el
   móvil, se destacan con el color del sistema»: texto plano en versalitas espaciadas de la marca, la
   pastilla cian al pasar, y el contorno cian de «Radar» cuando está elegido. El número va al lado, discreto. */
.dos-filtros { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 12px; }
.dos-filtros-fila { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 2px; }
.dos-filtros-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: 4px 0 2px 10px; border-left: 1.5px solid var(--lg-borde, var(--linea)); margin-left: 10px; }
.dos-filtros-grupo { display: inline-flex; flex-wrap: nowrap; align-items: center; gap: 2px; }
.dos-filtro {
  display: inline-flex; align-items: center; gap: 7px; min-height: 34px; padding: 7px 14px; margin: 0;
  border: 0; border-radius: 999px; background: transparent; box-shadow: none; cursor: pointer;
  font-family: var(--tipo-marca); font-size: .71875rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  color: var(--texto);
  transition: background var(--dur-ui, .22s) var(--ease-premium, ease), color var(--dur-ui, .22s) var(--ease-premium, ease), box-shadow var(--dur-ui, .22s) var(--ease-premium, ease);
}
.dos-filtro:hover:not([disabled]), .dos-filtro:focus-visible { background: rgba(0,134,163,.07); color: var(--verde-oscuro); }
.dos-filtro.activa { background: rgba(0,134,163,.09); color: var(--verde-oscuro); box-shadow: inset 0 0 0 1.5px var(--verde-oscuro); }
.dos-filtro[disabled] { opacity: .38; cursor: default; }
.dos-filtro-n { font-family: var(--tipo-texto); letter-spacing: 0; font-size: .75rem; font-weight: 600; color: var(--texto-suave); font-variant-numeric: tabular-nums; }
.dos-filtro.activa .dos-filtro-n { color: var(--verde-oscuro); }
.dos-filtro-flecha { display: inline-flex; margin-left: -2px; transition: transform .18s ease; }
.dos-filtro-flecha svg { width: 11px; height: 11px; }
.dos-filtro-flecha.abierta { transform: rotate(180deg); }
.dos-filtro-sub { text-transform: none; letter-spacing: .01em; font-size: .8125rem; font-family: var(--tipo-texto); font-weight: 600; }
.dos-filtro-sub .dos-flag { width: 16px; height: 11px; border-radius: 2px; }
.dos-filtros-sep { width: 1.5px; height: 18px; margin: 0 6px; background: var(--lg-borde, var(--linea)); }
html[data-modo="incognito-oscuro"] .dos-filtro:hover:not([disabled]) { background: rgba(47,198,224,.12); }
html[data-modo="incognito-oscuro"] .dos-filtro.activa { background: rgba(47,198,224,.14); box-shadow: inset 0 0 0 1.5px rgba(95,224,245,.55); }
@media (hover: none) and (pointer: coarse) { .dos-filtro { min-height: 40px; } }
@media (max-width: 720px) {
  .dos-filtros-fila { gap: 4px; }
  .dos-filtros-sep { display: none; }
  .dos-filtro { padding: 7px 11px; }
}

/* ── LA FICHA DE LA NOTICIA ──────────────────────────────────────────────────────────────────── */
/* LIGERA AL DESPLAZAR (Jacobo: «la página de resultados se nota pesada y tarda en hacer el scroll»). Cada
   ficha llevaba vidrio (`backdrop-filter`: desenfoca lo que hay detrás en cada fotograma) y se levantaba al
   pasar el ratón con sombra animada; con cientos de fichas en pantalla eso es lo que se come el
   desplazamiento. Ahora es un panel liso del mismo color, sin animaciones de tamaño, y fuera de pantalla no
   se pinta (`content-visibility`). */
.dos-impacto.dos-imp-v345 {
  -webkit-backdrop-filter: none; backdrop-filter: none;
  background: var(--lg-panel-solido, var(--superficie));
  border: 1px solid var(--lg-borde, var(--verde-bd)); box-shadow: 0 1px 2px rgba(20,30,20,.04);
  padding: 14px 18px 14px; transition: border-color .15s ease;
  display: flex; flex-direction: column; gap: 10px;
}
.dos-impacto.dos-imp-v345:hover { transform: none; box-shadow: 0 1px 2px rgba(20,30,20,.04); border-color: color-mix(in srgb, var(--verde-oscuro) 30%, var(--lg-borde, transparent)); background: var(--lg-panel-solido, var(--superficie)); }
.dos-lista > .dos-impacto.dos-imp-v345 { contain-intrinsic-size: auto 420px; }
.dos-imp-v345 > input[type="checkbox"] { position: static; }
.dos-imp-top { display: flex; align-items: center; gap: 10px; min-width: 0; }
.dos-imp-top > input[type="checkbox"] { position: static; flex: none; width: 17px; height: 17px; margin: 0; accent-color: var(--verde-solido); cursor: pointer; }
.dos-imp-top .dos-imp-cab { margin: 0; padding: 0; min-width: 0; flex: 0 1 auto; }
.dos-imp-top-der { margin-left: auto; display: inline-flex; align-items: center; gap: 10px; flex: none; }
/* La fecha, «más grande y visible», a la izquierda del desplegable. */
.dos-imp-fecha { font-family: var(--tipo-marca); font-size: .9375rem; font-weight: 600; color: var(--texto); letter-spacing: .01em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.dos-imp-fecha .dos-fecha-est { font-size: .8125rem; }
.dos-imp-v345 select.dos-imp-mover { position: static; margin: 0; max-width: 170px; padding: 5px 10px; font-size: .78125rem; color: var(--texto); }
.dos-imp-v345 .dos-imp-noticia { gap: 14px; }
.dos-imp-v345 .dos-imp-titular { font-size: 1.1875rem; line-height: 1.3; }

/* EL PÁRRAFO EMBORRONADO Y, EN SU MITAD, LAS BURBUJAS DE IMPACTOS POR PALABRA (radar.js, `parrafoConCuentas`).
   Van en el flujo, entre las dos mitades del párrafo, y montan un poco sobre las líneas de arriba y de abajo:
   flotan en medio del texto sin tapar nunca la palabra en amarillo. */
.dos-imp-parrafo { margin: 2px 0 0; min-width: 0; }
.dos-imp-parrafo .dos-imp-frag { margin: 0; }
.dos-imp-parrafo .dos-imp-frag + .dos-imp-frag-corte { margin-top: 12px; }
.dos-imp-parrafo .dos-imp-frags > .dos-imp-cuentas { position: relative; z-index: 1; margin: -4px 0; }
.dos-imp-parrafo.sin-texto > .dos-imp-cuentas { justify-content: flex-start; padding-left: 0; }
.dos-imp-cuentas { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 10px; padding: 4px; }
.dos-imp-cuenta {
  display: inline-flex; align-items: baseline; gap: 6px; padding: 8px 16px 8px 14px; border-radius: 999px;
  background: var(--superficie); border: 1.5px solid color-mix(in srgb, var(--verde-oscuro) 38%, transparent);
  box-shadow: 0 1px 2px rgba(22,45,35,.10), 0 10px 24px -12px rgba(22,45,35,.45);
  font-size: .875rem; color: var(--texto-suave); white-space: nowrap;
}
.dos-imp-cuenta b { font-family: var(--tipo-marca); font-size: 1.375rem; line-height: 1; font-weight: 700; color: var(--verde-oscuro); font-variant-numeric: tabular-nums; }
.dos-imp-cuenta-kw { font-weight: 700; color: var(--texto); background: var(--dos-hl-bg, #FFE04D); padding: 1px 7px; border-radius: 6px; }

/* EL VELO, SIN `filter`. `filter: blur()` en cada trozo de texto crea una capa por trozo y se repinta al
   desplazar; la sombra del propio texto, con la letra transparente, se ve igual de emborronada y cuesta
   mucho menos. La palabra del impacto sigue nítida y en amarillo. */
.dos-imp-v345 .dos-velo { filter: none; opacity: 1; color: transparent; text-shadow: 0 0 6px rgba(70, 78, 86, .62); }
html[data-modo="incognito-oscuro"] .dos-imp-v345 .dos-velo { text-shadow: 0 0 6px rgba(200, 206, 212, .5); }

/* LA PASTILLA GRANDE DEL ANÁLISIS: la frase centrada y, debajo, el botón bastante más grande. Crece con el
   análisis dentro. */
.dos-imp-v345 .dos-imp-analisis {
  position: static; z-index: auto; overflow: visible;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  padding: 18px 18px 18px; text-align: center;
  border-radius: 20px; border: 1.5px solid color-mix(in srgb, var(--verde-oscuro) 22%, var(--lg-borde, transparent));
  background: color-mix(in srgb, var(--verde-oscuro) 4%, var(--superficie));
  box-shadow: none;
}
.dos-imp-v345 .dos-imp-an-frase { flex: none; margin: 0; font-family: var(--tipo-marca); font-size: 1.0625rem; line-height: 1.4; font-weight: 500; color: var(--texto); max-width: 60ch; }
.dos-imp-v345 .dos-imp-an-frase b { font-weight: 700; }
.boton-primario.dos-imp-an-btn { min-width: 220px; min-height: 48px; padding: 12px 34px; border-radius: 999px; font-size: 1rem; font-weight: 700; letter-spacing: .01em; }
.dos-imp-v345 .dos-imp-an-res { width: 100%; text-align: left; }
.dos-imp-v345 .dos-imp-an-res:not(:empty) { padding: 0; }
.dos-imp-v345 .dos-imp-an-res.abierta { border-top: 1px solid var(--lg-borde, rgba(120,130,120,.22)); padding-top: 12px; }

.dos-imp-v345 .dos-imp-pie { margin-top: 0; }
@media (max-width: 720px) {
  .dos-impacto.dos-imp-v345 { padding: 12px 13px; }
  .dos-imp-top { flex-wrap: wrap; row-gap: 8px; }
  .dos-imp-top-der { margin-left: 0; flex: 1 0 100%; justify-content: space-between; }
  .dos-imp-fecha { font-size: .875rem; }
  .dos-imp-v345 .dos-imp-titular { font-size: 1.0625rem; }
  .dos-imp-cuenta { padding: 7px 13px 7px 12px; }
  .dos-imp-cuenta b { font-size: 1.1875rem; }
  .boton-primario.dos-imp-an-btn { width: 100%; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v345 · EL POPUP DEL ENVÍO AUTOMÁTICO (Jacobo, 30/09/2026: «va bastante lento en el scroll y parece que le
   cuesta cargar»). Lo lento era el vidrio: el fondo desenfocaba la página entera (7 px) y el propio popup,
   que se desplaza por dentro, desenfocaba lo de detrás a 28 px en cada fotograma. Aquí el fondo es un velo
   liso y el popup un panel opaco: se desplaza como una página normal. En el móvil ocupa la pantalla.
   ══════════════════════════════════════════════════════════════════════════════════════════════ */
.modal-fondo.tar-envio-fondo { background: rgba(15, 22, 26, .46); -webkit-backdrop-filter: none; backdrop-filter: none; }
.modal.tar-envio {
  -webkit-backdrop-filter: none; backdrop-filter: none;
  background: var(--superficie); border: 1px solid var(--lg-borde, var(--linea)); box-shadow: 0 24px 60px rgba(10, 30, 40, .28);
  max-width: 720px; width: min(720px, calc(100vw - 24px)); max-height: calc(100vh - 32px); padding: 22px 26px 18px;
  overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; contain: content;
  border-radius: 22px; text-align: left;
}
html.tar-modal-abierto, html.tar-modal-abierto body { overflow: hidden; }
.tar-envio-cab { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.tar-envio-cab h2 { margin: 0; flex: 1; display: flex; align-items: center; gap: 10px; font-family: var(--tipo-marca); font-size: 1.375rem; }
.tar-envio-carta { font-size: 1.5rem; line-height: 1; }
.tar-envio-cerrar { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--lg-borde, var(--linea)); background: var(--superficie); color: var(--texto-suave); display: grid; place-items: center; cursor: pointer; flex: none; }
.tar-envio-cerrar:hover { color: var(--texto); background: rgba(0,134,163,.07); }
.tar-envio-intro { margin: 0 0 14px; font-size: .96875rem; line-height: 1.5; color: var(--texto); }
.tar-envio-ultimo { margin: -4px 0 14px; font-size: .8125rem; padding: 7px 12px; border-radius: 10px; background: rgba(0,134,163,.06); color: var(--texto-suave); }
.tar-envio-ultimo.fallo { background: var(--ambar-fondo, #fff6e0); color: var(--texto); }
.tar-envio-sec { padding: 14px 0; border-top: 1px solid var(--lg-borde, var(--linea)); }
.tar-envio-sec h3 { margin: 0 0 10px; font-family: var(--tipo-marca); font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: var(--verde-oscuro); }
.tar-envio-nota { margin: 8px 0 0; font-size: .8125rem; line-height: 1.45; color: var(--texto-suave); }
.tar-envio-remitente select, .tar-envio-campo select, .tar-envio-campo input {
  width: 100%; min-height: 40px; padding: 8px 12px; border: 1px solid var(--lg-borde, var(--linea)); border-radius: 12px;
  background: var(--superficie); color: var(--texto); font: inherit; font-size: .875rem;
}
.tar-envio-botones { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.tar-envio-botones .boton-mini, .tar-envio-aviso-rec .boton-mini { text-decoration: none; }
.tar-envio-aviso-rec { margin: 10px 0 0; padding: 9px 12px; border-radius: 10px; background: var(--ambar-fondo, #fff6e0); font-size: .84375rem; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.tar-envio-conectar { margin-top: 10px; padding: 12px; border: 1.5px dashed var(--lg-borde, var(--linea)); border-radius: 14px; }
.tar-envio-conectar[hidden] { display: none; }
.tar-envio-conectar p { margin: 0 0 8px; }
.tar-envio .tar-envio-add { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.tar-envio .tar-envio-add input { flex: 1 1 160px; min-height: 40px; }
.tar-envio .tar-envio-dest { display: flex; flex-wrap: wrap; gap: 6px; }
.tar-envio .tar-dest-chip { display: inline-flex; align-items: center; gap: 7px; padding: 5px 6px 5px 12px; }
.tar-envio .tar-dest-chip small { font-weight: 400; opacity: .75; }
.tar-envio .tar-dest-chip button { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; }
.tar-envio .tar-dest-chip button:hover { background: rgba(194, 52, 52, .12); color: #c23434; }
.tar-envio .tar-dest-chip button svg { width: 11px; height: 11px; }
.tar-envio .tar-envio-pauta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.tar-envio-campo { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.tar-envio-campo > span { font-size: .78125rem; font-weight: 600; color: var(--texto-suave); }
.tar-envio-campo[hidden] { display: none; }
.tar-envio-campo-ancho { margin-bottom: 10px; }
.tar-envio #te-cuerpo { width: 100%; margin-top: 8px; padding: 10px 12px; border: 1px solid var(--lg-borde, var(--linea)); border-radius: 12px; background: var(--superficie); color: var(--texto); font: inherit; font-size: .875rem; line-height: 1.5; resize: vertical; min-height: 140px; }
.tar-envio .tar-var-chip:hover { transform: none; background: rgba(0,134,163,.08); }
.tar-envio .tar-envio-previa { margin-top: 12px; background: var(--superficie); max-height: 320px; overflow: auto; overscroll-behavior: contain; }
.tar-previa-cab { margin-bottom: 6px; }
.tar-envio-acciones { position: sticky; bottom: -18px; margin: 4px -26px -18px; padding: 12px 26px 16px; background: var(--superficie); border-top: 1px solid var(--lg-borde, var(--linea)); align-items: center; }
.tar-envio-hueco { flex: 1; }
.tar-envio-probar { white-space: nowrap; }
@media (max-width: 720px) {
  .modal-fondo.tar-envio-fondo { padding: 0; align-items: stretch; }
  .modal.tar-envio { width: 100vw; max-width: 100vw; max-height: 100dvh; height: 100dvh; border-radius: 0; padding: 16px 16px 0; border: 0; }
  .tar-envio-cab h2 { font-size: 1.1875rem; }
  .tar-envio .tar-envio-pauta { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .tar-envio .tar-envio-add input, .tar-envio .tar-envio-add button { flex: 1 1 100%; }
  .tar-envio-acciones { margin: 4px -16px 0; padding: 10px 16px calc(12px + env(safe-area-inset-bottom)); bottom: 0; flex-wrap: wrap; }
  .tar-envio-acciones > button { flex: 1 1 auto; min-height: 44px; }
  .tar-envio-hueco { display: none; }
  .tar-envio-probar { flex-basis: 100% !important; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v347 · FECHA Y HORA, AIRE ENTRE NOTICIAS Y LA BARRA DE AÑADIR UNA NOTICIA (Jacobo, 30/09/2026)
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* «La hora debe aparecer con tipografía light y la fecha en negrita, con más espacio entre ambos para
   diferenciar las cifras» (radar.js, `fechaHoraHTML`). En la ficha de la noticia y en el pie de la pastilla. */
.fh-d { font-weight: 700; }
.fh-h { font-weight: 300; margin-left: .75em; }
.dos-imp-fecha { font-weight: 400; }
.dos-imp-fecha .fh-d { font-weight: 700; }
.dos-imp-fecha .fh-h { font-weight: 300; margin-left: .8em; }
.dos-card-fecha .fh-d { font-weight: 700; }
.dos-card-fecha .fh-h { font-weight: 300; margin-left: .65em; }

/* «Tiene que haber más espacio entre noticia y noticia en los resultados.» */
.dos-lista { gap: 24px; }
@media (max-width: 720px) { .dos-lista { gap: 18px; } }

/* «Más espacio en el hueco para añadir una nueva noticia… y más separación con las opciones de clasificación.»
   Un solo enlace cada vez: es un campo de una línea (radar.js). */
.dos-manual { margin: 22px 0 30px; }
.dos-manual-barra { gap: 8px 14px; padding: 8px 8px 8px 18px; min-height: 58px; }
.dos-manual-url { flex: 1 1 220px; min-height: 42px; padding: 10px 0; font-size: .9375rem; }
.dos-manual-btn { min-height: 42px; padding-left: 18px; padding-right: 18px; }
@media (max-width: 720px) {
  .dos-manual { margin: 18px 0 24px; }
  .dos-manual-barra { padding: 8px 8px 8px 14px; }
}

/* «Cuando hay búsquedas conjuntas no hace falta que estén los nombres de los ingredientes, pueden estar solo los
   iconos y deben estar a la misma distancia entre sí como lo están el botón del mail y el de eliminar búsqueda.»
   Una sola variable para los dos huecos: el de los iconos no puede separarse del de los botones. */
.dos-v345 { --hueco-mandos: 5px; }
.dos-busquedas .dos-v345 { --hueco-mandos: 6px; }
.dos-v345 .dos-card-mandos { gap: var(--hueco-mandos); }
.dos-v345.dos-varias .dos-card-fuente,
.dos-busquedas .dos-v345.dos-varias .dos-card-fuente { display: none; }
.dos-v345.dos-varias .dos-card-ambitos { gap: var(--hueco-mandos); }
.dos-v345.dos-varias .dos-card-ambitos > .dos-amb-ico + .dos-amb-ico { margin-left: 0; }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v350 · LA PASTILLA DEL CONJUNTO (Jacobo, 01/10/2026: «cuando hay dos búsquedas conjuntas, regenerar se pinta fuera
   de la pastilla y el desplegable no es del estilo exacto del site»)
   ══════════════════════════════════════════════════════════════════════════════════════════════ */
/* Los tres botones caben: en el escritorio no encogían (flex 1 1 auto sin min-width) y «Regenerar ⌄» salía 16 px por la
   derecha de una tarjeta de 238. Con la flecha hacen falta ~225 px y la tarjeta estrecha del escritorio deja 212: ahí la
   flecha se va (el botón sigue abriendo su menú) y quedan como los de las demás pastillas; con sitio (el móvil, a todo el
   ancho), vuelve. Y si aun así faltara, el texto se recorta dentro de su botón en vez de empujar fuera. */
.dos-v345.dos-cj { container: cj / inline-size; }
.dos-v345.dos-cj .dos-card-acc > .dos-acc { min-width: 0; }
.dos-v345.dos-cj .dos-acc-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.dos-v345.dos-cj .dos-cj-menu > svg:not(.dos-acc-ico) { width: 9px; height: 9px; flex: none; }
@container cj (max-width: 300px) { .dos-cj-menu > svg:not(.dos-acc-ico) { display: none !important; } }

/* El desplegable, EL DE LA CABECERA (`.tar-submenu-caja` y sus filas): la caja de vidrio de esquinas de 18, filas planas en
   versalitas espaciadas de la marca, el cian suave al pasar y la grieta entre fila y fila. */
.dos-minipop.dos-minipop-cj {
  width: max-content; min-width: 216px; max-width: min(300px, calc(100vw - 32px)); padding: 3px; gap: 0;
  border-radius: 18px; border: 1.5px solid var(--lg-borde, var(--linea));
  background: var(--lg-panel-solido, var(--superficie)); box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
  animation: dos-kws-entra .18s ease;
}
.dos-minipop-cj .dos-minipop-tit { padding: 9px 15px 7px; font-family: var(--tipo-marca); font-size: .625rem; font-weight: 600; letter-spacing: .14em; color: var(--texto-suave); }
.dos-minipop-cj .dos-minipop-op {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  padding: 8px 15px; margin: 0; border: 0; border-radius: 14px; background: transparent; box-shadow: none;
  font-family: var(--tipo-marca); font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  color: var(--texto); text-align: left; line-height: 1.35;
  transition: background var(--dur-ui, .22s) var(--ease-premium, ease), color var(--dur-ui, .22s) var(--ease-premium, ease);
}
.dos-minipop-cj .dos-minipop-tit + .dos-minipop-op { border-top: 0; }
.dos-minipop-cj .dos-minipop-op + .dos-minipop-op { border-top: 1.5px solid var(--lg-borde, var(--linea)); border-radius: 0 0 14px 14px; }
.dos-minipop-cj .dos-minipop-op:hover, .dos-minipop-cj .dos-minipop-op:focus-visible { background: rgba(0,134,163,.08); color: var(--verde-oscuro); border-color: var(--lg-borde, var(--linea)); }
.dos-minipop-cj .dos-minipop-op-azul { color: var(--verde-oscuro); }
.dos-minipop-cj .dos-minipop-n { float: none; flex: none; background: var(--verde-oscuro); color: #fff; letter-spacing: 0; }
html[data-modo="incognito-oscuro"] .dos-minipop-cj .dos-minipop-op:hover,
html[data-modo="incognito-oscuro"] .dos-minipop-cj .dos-minipop-op:focus-visible { background: rgba(47,198,224,.13); }
@media (prefers-reduced-motion: reduce) { .dos-minipop.dos-minipop-cj { animation: none; } }

/* v350: el icono de la pestaña «Conjunto» se veía como un círculo blanco vacío: el trazo es `currentColor` y la pestaña activa
   pinta su texto en blanco, sobre el círculo blanco. El icono va en el cian de la marca. */
.dos-tab.activo .dos-tab-ico { color: var(--verde-oscuro); }
.dos-tab .dos-tab-ico svg { display: block; }

/* v350 · EL POPUP DEL ENVÍO, MÁS FLUIDO AL DESPLAZAR (Jacobo, 01/10/2026: «ha fallado un poco en fluidez en el scroll»). El
   popup ya era un panel liso (v345), pero DETRÁS seguía vivo el tablón: la cabecera y las pastillas de vidrio con desenfoque
   (`backdrop-filter`) y el barrido animado de las búsquedas en marcha. Con la capa semitransparente encima, cada fotograma del
   desplazamiento volvía a componer ese fondo. Mientras hay un popup abierto el fondo se congela (animaciones en pausa, sin
   desenfoque: detrás de la capa no se distingue) y el popup se desplaza en su propia capa. */
html.tar-modal-abierto main.contenido *,
html.tar-modal-abierto .barra-superior,
html.tar-modal-abierto .barra-superior * { animation-play-state: paused !important; }
html.tar-modal-abierto main.contenido *,
html.tar-modal-abierto .barra-superior { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.modal.tar-envio { will-change: scroll-position; transform: translateZ(0); }

/* ══ v352 · LA VISTA DE REDES CON EL ARMAZÓN DE NOTICIAS (Claude Code, 01/10/2026) ══════════════════════
   Jacobo: «que se parezca más a cómo se ve una búsqueda de noticias, sin renunciar a que cada post se vea
   como se ve en su red social». El marco es el de la ficha de noticias (.dos-impacto.dos-imp-v345, sus
   pastillas, burbujas y secciones) y la réplica de cada red (.rs-post) va dentro, intacta y a su ancho. */
.dos-imp-rs { gap: 12px; }
.dos-lista > .dos-impacto.dos-imp-rs { contain-intrinsic-size: auto 560px; }
.dos-imp-rs > .rs-post { align-self: flex-start; }
.dos-imp-rs .dos-imp-red .dos-burbuja-red,
.dos-imp-rs .dos-imp-pie .dos-burbuja-red { width: 16px; height: 16px; border-radius: 5px; }
.dos-imp-rs .dos-imp-red .dos-burbuja-red svg,
.dos-imp-rs .dos-imp-pie .dos-burbuja-red svg { width: 16px; height: 16px; }
.dos-imp-rs .dos-imp-meta { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-left: 8px; }
.dos-imp-rs .rs-badge-conv, .dos-imp-rs .rs-badge-resp, .dos-imp-rs .rs-badge-loc {
  display: inline-flex; align-items: center; gap: 5px; font-size: .75rem; font-weight: 600; color: var(--texto-suave);
  background: color-mix(in srgb, var(--verde-oscuro) 7%, transparent); border-radius: 999px; padding: 3px 9px; white-space: nowrap;
}
.rs-ico { width: 13px; height: 13px; flex: none; vertical-align: -2px; }
.dos-imp-rs .dos-imp-cuentas { justify-content: flex-start; padding: 2px 0 0; }
.dos-imp-rs .dos-imp-pie { margin-top: 0; }
/* Dentro del marco, el término y «Ver en X» ya los dicen las burbujas de impactos y el pie: no se repiten. */
.dos-imp-rs .rs-stats .rs-marca-kw, .dos-imp-rs .rs-stats .rs-stats-ver { display: none; }
/* La palabra, en el MISMO amarillo que en noticias (antes, un beige de una variable que no existía). */
.dos-imp-rs .rs-x-texto mark, .dos-imp-rs .rs-yt-titulo mark, .dos-imp-rs .rs-hilo mark { background: var(--dos-hl-bg, #FFE04D); color: inherit; }
/* La réplica, con la letra de las redes (es lo que ya prometía el comentario de tarsis.css). */
.dos-imp-rs .rs-cuerpo { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; }
/* Las secciones por red: el logo donde noticias pone la bandera, y a la derecha cómo se recorrió. */
.dos-grupo-rrss .dos-grupo-tit { display: flex; align-items: center; gap: 8px; }
.dos-grupo-rrss .dos-grupo-tit .dos-burbuja-red { width: 18px; height: 18px; border-radius: 5px; }
.dos-grupo-rrss .dos-grupo-tit .dos-burbuja-red svg { width: 18px; height: 18px; }
.dos-grupo-rrss .dos-grupo-meta { margin-left: auto; font-size: .75rem; font-weight: 500; color: var(--texto-suave); text-transform: none; letter-spacing: 0; }
/* Las burbujas de las redes llevan su logo, como en el tablón. */
.dos-filtros-rrss .dos-filtro .dos-burbuja-red { margin-right: 6px; }
.dos-resumen-rrss .dos-stat-sub { white-space: normal; }
.dos-acciones-rrss { margin: 6px 0 12px; display: flex; gap: 10px; }
.dos-rrss-vacias { margin: 2px 0 10px; }
.dos-rrss-noleidos { margin: 22px 0 8px; }
.dos-rrss-noleidos > summary { cursor: pointer; font-weight: 600; color: var(--texto-suave); }
.tar-rrss-aviso { display: flex; gap: 8px; align-items: flex-start; }
.tar-rrss-aviso .rs-ico { margin-top: 3px; color: #b26a00; }
@media (max-width: 720px) {
  .dos-imp-rs > .rs-post { max-width: 100%; }
  .dos-imp-rs .dos-imp-top { flex-wrap: wrap; }
  .dos-imp-rs .dos-imp-top-der { margin-left: 27px; width: 100%; }
}
@media (max-width: 480px) {
  /* En el móvil, las burbujas de red enseñan solo el logo y el número. */
  .dos-filtros-rrss .dos-filtro-red-n { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .dos-filtros-rrss .dos-filtro .dos-burbuja-red { margin-right: 4px; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v370 · NOMBRES PROPIOS, EL CONJUNTO POR INGREDIENTES Y LA FICHA MÁS BAJA (Jacobo, 05/10/2026)
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* EL NOMBRE DE LAS PASTILLAS. «Si clicamos en el nombre se puede editar… las individuales y la de conjunto deben tener el
   mismo estilo de tipografía, tamaño y color.» Es un botón que se cambia por un campo al pulsarlo (radar.js,
   `editarNombreEnSitio`). Los iconos de los ingredientes también son botón: en una búsqueda de varios ingredientes son lo
   único que se ve hasta que tenga nombre propio (decisión del 30/09: bastan los iconos). */
.dos-card-sup > .dos-card-ambitos {
  -webkit-appearance: none; appearance: none; background: none; border: 0; padding: 0; margin: 0; box-shadow: none;
  font: inherit; color: inherit; cursor: pointer; border-radius: 7px;
}
.dos-card-sup > .dos-card-ambitos:focus-visible { outline: 2px solid var(--verde-oscuro); outline-offset: 2px; }
.dos-card-nombre {
  -webkit-appearance: none; appearance: none; display: inline-flex; align-items: center; gap: 5px;
  flex: 0 1 auto; min-width: 0; max-width: 100%; margin: 0 0 0 -4px; padding: 2px 4px; border: 0; border-radius: 6px;
  background: none; box-shadow: none; cursor: text; text-align: left; white-space: nowrap;
  font-family: var(--tipo-marca); font-size: .8125rem; font-weight: 700; line-height: 1.3; letter-spacing: 0; text-transform: none;
  color: var(--verde-texto-2, #0A5A66);
  transition: background .15s ease;
}
.dos-card-nombre svg { flex: none; }
.dos-card-nombre-txt { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.dos-card-nombre:hover, .dos-card-nombre:focus-visible { background: rgba(0,134,163,.08); outline: none; }
html[data-modo="incognito-oscuro"] .dos-card-nombre { color: #7fd8ea; }
.dos-v345.dos-varias .dos-card-nombre:not(.propio) { display: none; }
/* En el móvil (pastilla a todo el ancho) el nombre se ve siempre, como el de la fuente antes. */
@media (max-width: 720px) { .dos-busquedas .dos-v345.dos-sola .dos-card-nombre { display: inline-flex; } }
.dos-nombre-input {
  flex: 1 1 auto; min-width: 0; width: 100%; margin: 0; padding: 2px 7px;
  font-family: var(--tipo-marca); font-size: .8125rem; font-weight: 700; color: var(--texto);
  background: var(--superficie); border: 1.5px solid var(--verde-oscuro); border-radius: 7px;
  outline: none; box-shadow: 0 0 0 3px rgba(0,134,163,.14);
}
.dos-nombre-input::placeholder { color: var(--texto-suave); font-weight: 600; }

/* EL DESPLEGABLE DE «EDITAR» Y «REGENERAR» DEL CONJUNTO, CON LOS BOTONES DE LA PASTILLA. «Debe ser como los botones de la
   pastilla y ahora se parece al menú de la cabecera»: sin rótulo, y cada opción con el marco, la letra y el cian al pasar
   de «Editar» y «Regenerar». */
.dos-minipop.dos-minipop-cj {
  width: max-content; min-width: 200px; max-width: min(300px, calc(100vw - 32px)); padding: 6px; gap: 5px;
  border-radius: 14px; border: 1px solid var(--lg-borde, var(--linea));
  background: var(--lg-panel-solido, var(--superficie)); box-shadow: 0 12px 28px rgba(0,0,0,.14);
}
.dos-minipop.dos-minipop-cj .dos-minipop-op.dos-acc {
  display: flex; align-items: center; justify-content: flex-start; gap: 8px; width: 100%; height: auto; min-height: 34px;
  margin: 0; padding: 7px 11px; border: 1px solid var(--lg-borde, var(--linea)); border-radius: 10px;
  background: var(--superficie); box-shadow: none; text-align: left; white-space: nowrap;
  font-family: var(--tipo-marca); font-size: .78125rem; font-weight: 600; letter-spacing: 0; text-transform: none; line-height: 1.2;
  color: var(--texto);
}
.dos-minipop.dos-minipop-cj .dos-minipop-op.dos-acc:hover,
.dos-minipop.dos-minipop-cj .dos-minipop-op.dos-acc:focus-visible { background: rgba(0,134,163,.08); color: var(--verde-oscuro); border-color: color-mix(in srgb, var(--verde-oscuro) 35%, transparent); }
.dos-minipop.dos-minipop-cj .dos-minipop-op-azul.dos-acc { color: var(--verde-oscuro); border-color: color-mix(in srgb, var(--verde-oscuro) 35%, transparent); }
.dos-minipop.dos-minipop-cj .dos-mp-txt { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.dos-minipop.dos-minipop-cj .dos-minipop-n { float: none; flex: none; margin-left: 6px; background: var(--verde-oscuro); color: #fff; }
html[data-modo="incognito-oscuro"] .dos-minipop.dos-minipop-cj .dos-minipop-op.dos-acc:hover { background: rgba(47,198,224,.13); }

/* LA MARCA DE CADA BÚSQUEDA en el desplegable y en las pestañas del conjunto: la bandera de su región, o el icono de su
   ingrediente si no es de prensa. */
.dos-marca-flag { width: 18px; height: 12px; border-radius: 2px; flex: none; object-fit: cover; box-shadow: 0 0 0 .5px rgba(0,0,0,.15); }
.dos-marca-ico { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 19px; height: 19px; border-radius: 6px; border: 0; }
.dos-marca-ico svg { width: 12px; height: 12px; display: block; }
.dos-tab .dos-marca-flag, .dos-tab .dos-marca-ico { margin-left: -4px; }
.dos-tab.activo .dos-marca-ico { background: #fff; }

/* LA CABECERA DE LOS RESULTADOS. El nombre se cambia pulsándolo; los botones son las burbujas de Todos · Nacionales ·
   Regionales («misma tipo y misma forma de clicarse»), y el del PDF lleva el contorno de la burbuja elegida. */
.dos-cab-tit { min-width: 0; flex: 1 1 320px; }
.dos-cab h1 { display: flex; align-items: center; gap: 6px; min-width: 0; }
.dos-cab-eslabon { display: inline-flex; flex: none; color: var(--verde-oscuro); }
.dos-cab-eslabon svg { width: 18px; height: 18px; }
.dos-titulo-nombre {
  -webkit-appearance: none; appearance: none; min-width: 0; margin: 0 0 0 -6px; padding: 2px 6px; border: 0; border-radius: 9px;
  background: none; box-shadow: none; font: inherit; color: inherit; letter-spacing: inherit; text-align: left; cursor: text;
  overflow-wrap: anywhere; transition: background .15s ease;
}
.dos-titulo-nombre:hover, .dos-titulo-nombre:focus-visible { background: rgba(0,134,163,.07); outline: none; }
.dos-nombre-input.dos-nombre-input-h1 { font: inherit; width: min(100%, 680px); padding: 1px 8px; border-radius: 9px; }
.dos-cab-desc { margin-top: 2px; }
.dos-acciones.dos-acciones-cab { gap: 4px; align-items: center; }
a.dos-filtro.dos-cab-btn, a.dos-filtro.dos-cab-btn:hover { text-decoration: none; }
.dos-filtro.dos-cab-btn-pdf { color: var(--verde-oscuro); box-shadow: inset 0 0 0 1.5px var(--verde-oscuro); }
.dos-filtro.dos-cab-btn-pdf:hover, .dos-filtro.dos-cab-btn-pdf:focus-visible { background: rgba(0,134,163,.1); }
html[data-modo="incognito-oscuro"] .dos-filtro.dos-cab-btn-pdf { box-shadow: inset 0 0 0 1.5px rgba(95,224,245,.55); }
/* En el móvil caben los dos en una fila: menos aire entre letras y en los bordes.
   PERO YA SON TRES (09/10/2026, sistema móvil, D2): con «Editar», «Regenerar informe» y «Generar dossier
   (PDF)» en una fila sin partir, el del PDF llegaba a x = 413 y la página entera se iba de lado. Ahora se
   parten: el dossier, que es la acción principal, en su propia fila y a todo el ancho. */
@media (max-width: 720px) {
  .dos-acciones.dos-acciones-cab { width: 100%; flex-wrap: wrap; gap: 4px 2px; }
  .dos-filtro.dos-cab-btn { padding: 7px 9px; letter-spacing: .05em; font-size: .6875rem; white-space: nowrap; }
  .dos-acciones-cab > .dos-filtro.dos-cab-btn-pdf { flex: 1 1 100%; justify-content: center; }
}

/* EL CONJUNTO: fuera la barra que separaba las pestañas del recuento («quitemos la barra horizontal»), y cada ingrediente
   con su cabecera de su color, uno debajo de otro; del segundo en adelante, con un filete de su color encima. */
.dos-conj-tabs { border-bottom: 0; padding-bottom: 0; }
.dos-conj-bloque { margin-top: 16px; border-top: 0; padding-top: 0; }
.dos-ingr-cab { --ingr: var(--f-medios); --ingr-t: var(--f-medios-t); display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin: 6px 0 14px; }
.dos-ingr-cab.dos-ingr-rrss { --ingr: var(--f-rrss); --ingr-t: var(--f-rrss-t); }
.dos-ingr-cab.dos-ingr-trends { --ingr: var(--f-trends); --ingr-t: var(--f-trends-t); }
.dos-ingr-cab ~ .dos-ingr-cab { margin-top: 44px; padding-top: 22px; border-top: 2px solid color-mix(in srgb, var(--ingr) 45%, transparent); }
.dos-ingr-cab .dos-amb-ico { width: 28px; height: 28px; border-radius: 8px; }
.dos-ingr-cab .dos-amb-ico svg { width: 16px; height: 16px; }
.dos-ingr-tit { font-family: var(--tipo-marca); font-size: .875rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ingr-t); }
.dos-ingr-det { font-size: .8125rem; color: var(--texto-suave); min-width: 0; }
.dos-ingr-sub { display: flex; align-items: center; gap: 8px; margin: 22px 0 10px; font-size: 1rem; }

/* LA FICHA DE LA NOTICIA, UN POCO MÁS BAJA, y la pastilla de «Qué se dice de…» y su botón, más pequeños. */
.dos-impacto.dos-imp-v345 { padding: 12px 16px; gap: 8px; }
.dos-imp-v345 .dos-imp-titular { font-size: 1.125rem; line-height: 1.28; }
.dos-imp-v345 .dos-imp-frag { font-size: .875rem; line-height: 1.5; }
.dos-imp-cuenta { padding: 6px 14px 6px 12px; }
.dos-imp-cuenta b { font-size: 1.25rem; }
.dos-imp-v345 .dos-imp-analisis { gap: 8px; padding: 10px 14px; border-radius: 16px; }
.dos-imp-v345 .dos-imp-an-frase { font-size: .9375rem; line-height: 1.35; }
.boton-primario.dos-imp-an-btn { min-width: 160px; min-height: 36px; padding: 7px 24px; font-size: .875rem; }
@media (max-width: 720px) {
  .dos-impacto.dos-imp-v345 { padding: 11px 12px; }
  .dos-imp-v345 .dos-imp-titular { font-size: 1rem; }
  .boton-primario.dos-imp-an-btn { width: 100%; min-height: 40px; }
}

/* LA PALABRA DEL PÁRRAFO DE FONDO, TAMBIÉN EMBORRONADA. «Aunque salga en amarillo, también difuminado, para que se mimetice
   con el resto y no desvíe la atención de los destacados»: el número de impactos, el titular y el subtítulo, que siguen
   nítidos. Sin `filter` (ver el velo, v345): la letra transparente con su sombra y el amarillo como un halo. */
.dos-imp-v345 .dos-imp-frag .dos-hl {
  color: transparent; text-shadow: 0 0 6px rgba(70, 78, 86, .55);
  background: color-mix(in srgb, var(--dos-hl-bg, #FFE04D) 55%, transparent);
  box-shadow: 0 0 7px 3px color-mix(in srgb, var(--dos-hl-bg, #FFE04D) 55%, transparent);
  border-radius: 6px; user-select: none; -webkit-user-select: none;
}
html[data-modo="incognito-oscuro"] .dos-imp-v345 .dos-imp-frag .dos-hl { text-shadow: 0 0 6px rgba(200, 206, 212, .45); }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   v371 · MITRA: EL RANKING DE PUBLICACIONES CITADAS POR LA PRENSA, POR RED (Jacobo, 06/10/2026)
   «Un selector por redes sociales como el de la herramienta de redes, nada de mezclar… con una visión de cómo se ve el post
   en la red social, y debajo el listado de medios donde aparece.» Las burbujas son las de la vista de redes de Radar; la
   réplica de cada publicación es la misma (`.rs-post`), y debajo, «Aparece en».
   ══════════════════════════════════════════════════════════════════════════════════════════════ */
.pp-redes .dos-filtros-fila { margin: 2px 0 14px; }
.pp-redes .dos-filtro .dos-burbuja-red { margin-right: 6px; }
.pp-lista.pp-lista-rs { gap: 16px; }
.pp-item {
  display: flex; flex-direction: column; gap: 10px; padding: 12px 14px 14px;
  border: 1px solid var(--lg-borde, var(--linea)); border-radius: 18px;
  background: var(--lg-panel-solido, var(--superficie));
}
.pp-item-cab { display: flex; align-items: baseline; gap: 10px; }
.pp-item .pp-pos { font-family: var(--tipo-marca); font-size: 1.125rem; font-weight: 700; color: var(--verde-oscuro); text-align: left; padding: 0; min-width: 1.4em; }
.pp-cuantas { font-size: .8125rem; color: var(--texto-suave); }
.pp-cuantas b { color: var(--texto); font-variant-numeric: tabular-nums; }
/* La columna de cada red, la suya (X 600, Instagram 470…): como en su feed, sin estirarse al ancho de la tarjeta. */
.pp-item > .rs-post { align-self: flex-start; max-width: min(100%, var(--ancho, 600px)); }
.pp-item .pp-aparece { margin-top: 2px; }
/* Las pastillas de los medios, sin vidrio: con veinticinco publicaciones son cientos, y el desenfoque de cada una era lo
   que más pesaba al desplazar la pantalla. */
.pp-item .pp-medio { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--superficie); box-shadow: none; }
.pp-item a.pp-medio:hover { background: rgba(0,134,163,.08); color: var(--verde-oscuro); }
.pp-mas { margin: 14px auto 0; display: flex; }
@media (max-width: 560px) { .pp-item { padding: 10px 10px 12px; } }

/* EL ÍNDICE DICE CUÁNDO SE CALCULÓ («no parece un índice muy actualizado»): al lado del título, discreto. */
.tar-ix-actualizado { font-size: .78125rem; color: var(--texto-suave); white-space: nowrap; }
/* En el teléfono puede partirse (09/10/2026, sistema móvil, D2): sin partir, en el iPhone SE llegaba a
   x = 386 y Mitra se iba de lado. */
@media (max-width: 720px) { .tar-ix-actualizado { white-space: normal; min-width: 0; } }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   EL SISTEMA MÓVIL (09/10/2026, encargo de Jacobo: «el diseño y la usabilidad de mobile deben ser
   perfectos», coherentes con el escritorio y usables con el dedo). Informe
   docs/investigacion-movil-2026-10-09/2-movil-global.md, §3: las piezas que comparten TODAS las
   herramientas en el teléfono —tokens, avisos, hoja inferior, objetivos de 44, letra mínima—, para
   que ninguna se haga la suya. Casi todo vale solo hasta 720 px o en pantallas táctiles; en el
   escritorio solo cambian los avisos (D1) y los contrastes (D4).
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* 1. TOKENS. `--tar-hueco-abajo` (lo que ocupa abajo la barra de pestañas, con su margen y el área
   segura) lo DEFINE el bloque de la barra; aquí se CONSUME con respaldo, en `--m-abajo`, que es lo
   que usan los avisos, las barras fijas y el `scroll-padding`. Se declara también en `body` para
   que se resuelva allí si algún día la barra declara su hueco en `body` (hoy lo declara en <html>,
   con `tar-con-barra`). El respaldo del móvil (10 de margen + 68 + 12 de aire, la barra del 24/09)
   solo vale si la variable faltara. La escala de capas sustituye a los 32 z-index sueltos (P8): de
   momento la usan los avisos, las barras fijas, la barra de pestañas y las hojas. */
:root {
  --m-sep: 12px; --m-sep-l: 20px;
  --m-tacto: 44px; --m-campo: 44px;
  --m-titulo: 1.75rem; --m-subtitulo: 1.375rem; --m-letra-min: .75rem;
  --z-contenido: 1; --z-pegado: 20; --z-barras: 60; --z-menu: 80; --z-hoja: 300; --z-aviso: 400; --z-arrastre: 3000;
  --error-texto: #b00020;
}
:root, body { --m-abajo: var(--tar-hueco-abajo, max(24px, env(safe-area-inset-bottom, 0px))); }
html[data-modo="incognito-oscuro"] { --error-texto: #FF8A8F; }   /* 7,9:1 sobre la medianoche */
@media (max-width: 720px) {
  html:not(.tar-enmarcado) body:not(.tar-editando):not(.web) { --m-abajo: var(--tar-hueco-abajo, calc(90px + env(safe-area-inset-bottom, 0px))); }
  html.tar-teclado:not(.tar-enmarcado) body:not(.tar-editando):not(.web) { --m-abajo: var(--tar-hueco-abajo, 12px); }
}

/* 2. LAS BARRAS FIJAS DE ABAJO (D1, D5). El aviso (`.toast`) está en el punto 12 de arriba; el de
   versión nueva, en tarsis.css, y la barra de comparar de Redes, en redes.css: las tres se centran
   igual (márgenes automáticos, nunca `left: 50%`) y se apoyan sobre `--m-abajo`. Si el aviso de
   versión está puesto, el aviso pasajero sale encima de él y no detrás. Y el botón de cerrar un
   error llega a 44 px con el dedo sin engordar el aviso (márgenes negativos sobre su relleno). */
body:has(> .tar-aviso-version) .toast { bottom: calc(var(--m-abajo) + 72px); }
/* Con una hoja abierta en el teléfono, el aviso sale ARRIBA, sobre el velo, como los avisos de iOS:
   abajo se montaba sobre el contenido de la hoja y no se leía ni lo uno ni lo otro. */
@media (max-width: 720px) {
  html.tar-modal-abierto .toast { top: max(12px, env(safe-area-inset-top, 0px)); bottom: auto; }
}
@media (hover: none) and (pointer: coarse) { .toast-cerrar { width: 44px; height: 44px; margin: -10px -14px -10px 0; } }

/* 3. CONTRASTE EN OSCURO (D4, medido con el fondo compuesto). BRONCE no se toca: es el color de marca
   del plan y lo decide Jacobo.
   · La palabra en su burbuja amarilla iba con `--texto`, que en oscuro es casi blanco: 1,49:1. Va con
     la letra del resaltado (`--dos-hl-tx`), oscura en los dos temas; y la de las réplicas de redes
     (heredaba el color) igual.
   · «Abrir» en la tarjeta de Radar: en oscuro el color de la fuente es mucho más claro y la sombra
     interior del 26 % no bastaba (≈3,7): al 46 % queda por encima de 5,7 con cualquier fuente.
   · El número de un filtro elegido (y su nombre) iban en cian sobre su tinte: 4,25 en claro; con el
     cian hondo, 5,5. En oscuro se quedan como estaban. */
.dos-imp-cuenta-kw,
.dos-imp-rs .rs-x-texto mark, .dos-imp-rs .rs-yt-titulo mark, .dos-imp-rs .rs-hilo mark { color: var(--dos-hl-tx, #1a1a1a); }
html[data-modo="incognito-oscuro"] .dos-acc-abrir { box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .46); }
html[data-modo="incognito-oscuro"] .dos-acc-abrir:hover, html[data-modo="incognito-oscuro"] .dos-acc-abrir:focus-visible { box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .56); }
.dos-filtro.activa, .dos-filtro.activa .dos-filtro-n { color: var(--tarsis-cian-hondo, #0C6C7A); }
html[data-modo="incognito-oscuro"] .dos-filtro.activa, html[data-modo="incognito-oscuro"] .dos-filtro.activa .dos-filtro-n { color: var(--verde-oscuro); }

/* 4. LETRA MÍNIMA DE 12 PX EN EL MÓVIL (D11; reabre sin querer la decisión 7 de Jacobo del 12/09).
   Las piezas nacidas después de aquella lista (v345-v372) volvieron a los 11-11,5 px: los filtros y
   los botones de la cabecera de resultados, la fecha de la tarjeta de Radar (su regla de escritorio
   ganaba a la del móvil por especificidad), el «lanzado el…» del resumen, el recuento de cada grupo,
   la tabla de Usuarios y el registro técnico. TODA pieza nueva que baje de 12 px en el móvil usa
   `var(--m-letra-min)`. */
@media (max-width: 720px) {
  .dos-filtro, .dos-filtro.dos-cab-btn, .dos-v345 > .dos-card-fecha, .dos-stat-sub, .dos-grupo-n,
  .us-tr small, .us-cifra small, .pa-log-lista, .dos-minipop-cj .dos-minipop-tit { font-size: var(--m-letra-min); }
}

/* 5. TARJETAS SIN VIDRIO (D17; decisión 5 de Jacobo, 12/09: el vidrio es de la capa de navegación y el
   contenido va opaco). La tarjeta de búsqueda, los bloques del formulario, el resumen de resultados,
   los avisos en página, el selector de medios y las tarjetas de Mitra seguían desenfocando lo de
   detrás en cada fotograma: diez tarjetas en Radar. El color no cambia: su panel ya era opaco al
   78-92 % sobre una página de un solo color, así que desenfocar no añadía nada que se viera.
   OJO, el «gotcha» de tarsis.css (§12 del traspaso): sin `backdrop-filter`, `.dos-campo` deja de crear
   contexto de apilamiento. Los desplegables de dentro (temáticas, ingredientes, ayuda) quedan así
   por encima de la tarjeta siguiente sin más; los `:has()` que la elevaban siguen valiendo. */
.dos-busqueda-card, .dos-campo, .dos-resumen, .dos-enmarcha, .dos-medios-sel, .dos-impacto, .tar-ix {
  -webkit-backdrop-filter: none; backdrop-filter: none;
}

/* 6. TOQUES DE iOS (P1, P2, P3, P6).
   · EL VELO DE ARRIBA («scroll edge effect» de Liquid Glass, DISENO-LIQUID-GLASS §4): por encima de
     la cabecera flotante asomaba el contenido al desplazar, y en oscuro se leía a través de su vidrio.
     Un degradado fijo del color de la página, debajo de la cabecera.
   · SIN EL DESTELLO GRIS AL TOCAR, y a cambio una respuesta propia: lo que se pulsa se atenúa
     mientras está bajo el dedo (la barra de pestañas tiene la suya). iOS solo aplica `:active` si
     la página escucha `touchstart`: lo hace radar.js (bloque de la hoja inferior).
   · `scroll-padding`: lo que se busca con un ancla o `scrollIntoView` no queda bajo la cabecera ni
     bajo la barra de abajo.
   · El aviso «Revisión incompleta» (título en negrita y texto) salía en dos columnas: apilado. */
@media (max-width: 720px) {
  html:not(.tar-enmarcado) body:not(.web)::after {
    content: ''; position: fixed; z-index: calc(var(--z-barras) - 1); left: 0; right: 0; top: 0; pointer-events: none;
    height: calc(env(safe-area-inset-top, 0px) + 18px);
    background: linear-gradient(to bottom, var(--fondo), color-mix(in srgb, var(--fondo) 0%, transparent));
  }
  html { scroll-padding-top: calc(84px + env(safe-area-inset-top, 0px)); }
  html:not(.tar-enmarcado) { scroll-padding-bottom: var(--tar-hueco-abajo, calc(90px + env(safe-area-inset-bottom, 0px))); }
  .dos-enmarcha:not(.dos-aviso-plegable):has(> b:first-child) { flex-direction: column; align-items: flex-start; gap: 4px; }
}
@media (hover: none) {
  a, button, summary, label, input, select, textarea, [role="button"] { -webkit-tap-highlight-color: transparent; }
  :where(a[href], button:not(:disabled), summary, [role="button"]):not(.tar-tabbar *):active { opacity: .62; }
}

/* 7. OBJETIVOS DE 44 PX CON EL DEDO (D9). Donde el dibujo no debe cambiar, crece solo la zona que
   responde (un `::before` transparente, como las flechas de «Editar panel»); donde sí puede, el
   control entero. El árbol de medios y el Canario quedan aparte (son listas de trabajo densas). */
@media (hover: none) and (pointer: coarse) {
  button.tar-plan { position: relative; }
  button.tar-plan::before { content: ''; position: absolute; inset: -4px -3px; }
  .dos-circ { position: relative; }
  .dos-circ::before { content: ''; position: absolute; inset: -4px; border-radius: 50%; }
  .dos-imp-v345 select.dos-imp-mover, select.dos-imp-mover { min-height: 44px; }
  .tar-doc-acciones .boton-mini { min-width: 44px; min-height: 44px; display: inline-grid; place-items: center; padding: 0; }
  .tar-doc-acciones .boton-mini .tar-ico { width: 18px; height: 18px; }
  .tar-ix-item, .tar-rama-abre, .cfg-salir, .tt-add-tarea, #ix-refrescar, #mitra-rango { min-height: 44px; }
  .tt-comp summary { padding-top: 11px; padding-bottom: 11px; }
  /* Las cápsulas de elegir (rangos, pestañas, filtros) y el botón de analizar se quedaban en 40. */
  .dos-rango, .dos-tab, .tt-tab, .dos-filtro, .boton-primario.dos-imp-an-btn, .dos-manual-url, .dos-manual-btn { min-height: 44px; }
  /* «Leer en …» del pie de cada noticia: pastilla de 24-28 px; crece la zona, no el dibujo. */
  a.dos-imp-medio-chip { position: relative; }
  a.dos-imp-medio-chip::before { content: ''; position: absolute; inset: -9px -2px; }
  .tt-col-borrar, .tt-tab-color, .tt-add-col { position: relative; }
  .tt-col-borrar::before, .tt-tab-color::before { content: ''; position: absolute; inset: -10px; border-radius: 50%; }
  .tt-add-col::before { content: ''; position: absolute; inset: -11px -4px; }
  /* La casilla de cada noticia: 22 px de dibujo y 44 de zona. El borde transparente de 11 px es parte
     de la casilla —responde al dedo— y el fondo y el aro solo se pintan dentro (`padding-box`). */
  .dos-imp-top > input[type="checkbox"] {
    -webkit-appearance: none; appearance: none; box-sizing: border-box; flex: none;
    width: 44px; height: 44px; margin: -11px; border: 11px solid transparent; border-radius: 17px;
    background: var(--superficie) padding-box; box-shadow: inset 0 0 0 1.5px var(--texto-suave); cursor: pointer;
  }
  .dos-imp-top > input[type="checkbox"]:checked {
    box-shadow: none;
    background: var(--verde-solido) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M3.6 8.4l2.9 2.9 5.9-6.4" fill="none" stroke="white" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center / 15px no-repeat padding-box;
  }
  .dos-imp-top > input[type="checkbox"]:focus-visible { outline: 2px solid var(--tarsis-cian-texto); outline-offset: -11px; }
}
@media (max-width: 720px) {
  .dos-busquedas .dos-v345 .dos-card-acc > .dos-acc { height: 44px; }
}

/* 8. UN SOLO CAMPO (D16): 44 px, radio 14 (la cápsula, solo para buscar), letra de 16, borde del
   vidrio y el foco en el CONTENEDOR. `.tar-campo` es la pieza para lo que se haga a partir de ahora;
   los campos de siempre se igualan aquí en el móvil sin tocar su HTML. Fuera el doble anillo de los
   campos con fichas (brillaba el contenedor y además el `input` de dentro pintaba su rectángulo), y
   los iconos de red de Redes heredan la letra de la casa (caían en la del navegador). */
.tar-campo {
  box-sizing: border-box; width: 100%; min-height: var(--m-campo); padding: 10px 14px;
  font: inherit; font-size: 1rem; color: var(--texto); background: var(--superficie);
  border: 1px solid var(--lg-borde, var(--linea)); border-radius: var(--lg-r-m, 14px);
}
.tar-campo:focus { outline: none; border-color: color-mix(in srgb, var(--verde) 55%, transparent); box-shadow: 0 0 0 4px color-mix(in srgb, var(--verde) 18%, transparent); }
.tar-campo[type="search"] { border-radius: 999px; }
.dos-chips-input input:focus-visible { outline: none; }
.rd-red { font: inherit; }
@media (max-width: 720px) {
  .dos-chips-input { min-height: var(--m-campo); }
  .dos-chips-input input { min-height: 30px; }
  .cfg-campo input, .tar-envio-remitente select, .tar-envio-campo select, .tar-envio-campo input, .tar-envio .tar-envio-add input { min-height: var(--m-campo); border-radius: var(--lg-r-m, 14px); }
}

/* 9. LA AYUDA «ⓘ» ES UN BOTÓN (D18). Solo aparecía con el ratón (`:hover` de un `<span>`): en el
   iPhone no existía y el lector de pantalla no la anunciaba. Ahora se abre y se cierra tocándola
   (clase `abierta`, radar.js), con Escape o tocando fuera; el ratón sigue abriéndola al pasar. */
button.tar-info { -webkit-appearance: none; appearance: none; background: none; border: 0; padding: 2px; margin: -2px; border-radius: 999px; font: inherit; cursor: pointer; }
.tar-info.abierta { color: var(--texto); }
.tar-info.abierta .tar-info-caja { opacity: 1; transform: none; pointer-events: auto; }
.dos-campo:has(.tar-info.abierta) { z-index: 90; }
@media (hover: none) and (pointer: coarse) {
  button.tar-info::before { content: ''; position: absolute; inset: -13px; border-radius: 50%; }
}

/* 10. LA HOJA INFERIOR `.tar-hoja` (D7 y D12). UN componente para todos los diálogos del teléfono:
   anclada abajo, radio 26 arriba, asa, contenido que se desplaza por dentro sin arrastrar la página
   (`overscroll-behavior: contain`), acciones pegadas abajo con el área segura, `100dvh` (en iOS
   `100vh` es la altura con las barras de Safari recogidas: la parte de abajo quedaba tras su barra),
   el fondo bloqueado (`html.tar-modal-abierto`) y opaca (el vidrio denso se desenfocaba en cada
   fotograma, igual que el del envío, v345). Escape, tocar fuera o arrastrarla hacia abajo la cierran.
   La HEREDA todo `#modal` sin tocar las vistas: el observador «MODALES ACCESIBLES» de radar.js le pone
   `tar-hoja` a cada diálogo que aparece (salvo el envío automático, que en el móvil ya es una
   pantalla completa); y `abrirHoja()` —`window.TarsisHoja.abrir`— la crea de cero. En el escritorio
   el mismo HTML se ve como el diálogo centrado de siempre: estas reglas solo valen hasta 720 px (y, dentro de un
   marco de la pantalla dividida, solo en la «pareja» del teléfono: 10/10/2026, como el panel). */
@keyframes tar-hoja-sube { from { transform: translateY(100%); } to { transform: translateY(0); } }
@keyframes tar-hoja-velo { from { opacity: 0; } to { opacity: 1; } }
.tar-hoja-sub { margin: -4px 0 14px; font-size: .875rem; color: var(--texto-suave); overflow-wrap: anywhere; }
.tar-hoja-filas {
  display: flex; flex-direction: column; padding: 3px; margin: 0 0 4px; border-radius: 18px;
  border: 1.5px solid var(--lg-borde, var(--linea)); background: var(--lg-panel-solido, var(--superficie));
}
.tar-hoja-fila {
  -webkit-appearance: none; appearance: none; display: flex; align-items: center; gap: 12px; width: 100%; min-height: 50px;
  padding: 10px 15px; margin: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; cursor: pointer;
  font: inherit; font-family: var(--tipo-marca); font-size: .9375rem; font-weight: 600; text-align: left; text-decoration: none; color: var(--texto);
}
.tar-hoja-fila + .tar-hoja-fila { border-top: 1.5px solid var(--lg-borde, var(--linea)); }
.tar-hoja-fila:first-child { border-radius: 15px 15px 0 0; }
.tar-hoja-fila:last-child { border-radius: 0 0 15px 15px; }
.tar-hoja-fila:only-child { border-radius: 15px; }
.tar-hoja-fila:hover, .tar-hoja-fila:focus-visible { background: rgba(0,134,163,.08); color: var(--verde-oscuro); text-decoration: none; }
.tar-hoja-fila .tar-ico { width: 20px; height: 20px; flex: none; color: var(--texto-suave); }
.tar-hoja-fila.peligro, .tar-hoja-fila.peligro .tar-ico { color: #A2373B; }
html[data-modo="incognito-oscuro"] .tar-hoja-fila.peligro, html[data-modo="incognito-oscuro"] .tar-hoja-fila.peligro .tar-ico { color: #EE8A8D; }
@media (max-width: 720px) {
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal-fondo.tar-hoja-fondo {
    align-items: flex-end; justify-content: center; padding: max(12px, env(safe-area-inset-top, 0px)) 0 0;
    z-index: var(--z-hoja); background: rgba(10, 18, 24, .42); -webkit-backdrop-filter: none; backdrop-filter: none;
    animation: tar-hoja-velo .24s ease backwards;
  }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja {
    --m-hoja-pie: calc(16px + env(safe-area-inset-bottom, 0px));
    --m-hoja-lado: max(18px, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
    position: relative; box-sizing: border-box; flex: none; margin: 0;
    width: 100% !important; max-width: none !important;
    max-height: calc(100vh - 24px); max-height: calc(100dvh - max(12px, env(safe-area-inset-top, 0px)) - 12px);
    padding: 22px var(--m-hoja-lado) var(--m-hoja-pie) !important;
    border: 0; border-top: 1px solid var(--lg-borde, var(--linea)); border-radius: 26px 26px 0 0 !important;
    background: var(--superficie) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    /* La segunda sombra es un trozo de hoja de 60 px por DEBAJO de la pantalla: el muelle de la entrada
       se pasa un 4 % hacia arriba y, sin ella, asomaba la página por debajo de la hoja. */
    box-shadow: 0 -8px 40px rgba(0, 0, 0, .16), 0 60px 0 var(--superficie);
    overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
    animation: tar-hoja-sube .5s var(--tar-muelle, cubic-bezier(.34, 1.3, .64, 1)) backwards;
  }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja:not(.modal-actualizar) { overflow-y: auto; }
  /* El asa: dice «esto se arrastra» y se queda arriba aunque el contenido se desplace. `top` negativo
     porque lo pegajoso se mide desde el borde del CONTENIDO (dentro del relleno de 22): -14 = a 8 px
     del canto, que es donde nace. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja::before {
    content: ''; display: block; flex: none; position: sticky; top: -14px; z-index: 3;
    width: 36px; height: 5px; margin: -14px auto 13px; border-radius: 999px;
    background: color-mix(in srgb, var(--texto-suave) 45%, transparent);
  }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja.arrastrando { animation: none; transition: none; }
  /* En el teléfono el engranaje abre la hoja (radar.js, `abrirHojaAjustes`): su desplegable de
     escritorio no se enseña nunca (con el dedo, el `:hover` que deja el toque lo abría por detrás). */
  .tar-menu-ajustes .tar-submenu { display: none; }
  /* Las acciones, pegadas abajo y por encima del indicador de inicio, como en el envío. */
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja > .modal-acciones {
    position: sticky; bottom: calc(-1 * var(--m-hoja-pie)); z-index: 2;
    display: flex; flex-wrap: wrap; gap: 8px;
    margin: 14px calc(-1 * var(--m-hoja-lado)) calc(-1 * var(--m-hoja-pie));
    padding: 12px var(--m-hoja-lado) var(--m-hoja-pie);
    background: var(--superficie); border-top: 1px solid var(--lg-borde, var(--linea));
  }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja > .modal-acciones > :is(button, a) { flex: 1 1 auto; min-height: 44px; justify-content: center; text-align: center; }
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja > .modal-acciones > span:empty { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  :where(html:not(.tar-enmarcado), .tar-en-pareja) #modal .modal.tar-hoja, #modal .modal-fondo.tar-hoja-fondo { animation: none; }
}

/* 11. APAISADO (D6). Con `viewport-fit=cover` Safari pinta por debajo de la isla dinámica cuando el
   teléfono está tumbado, y la cabecera y el contenido quedaban a 12 y 20 px del borde: debajo de la
   isla. Las áreas seguras laterales valen en cualquier ancho (en el escritorio son 0 y no cambia
   nada). Y con poca altura y el dedo, la cabecera se compacta: era el 21 % de la pantalla. */
.barra-superior { width: min(calc(100% - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)), calc(var(--max) + 48px)); }
@media screen {
  main.contenido { padding-left: max(20px, env(safe-area-inset-left, 0px)); padding-right: max(20px, env(safe-area-inset-right, 0px)); }
}
@media (max-height: 500px) and (pointer: coarse) {
  .barra-superior { top: 6px; margin-top: 6px; }
  .barra-interior { padding-top: 3px; padding-bottom: 3px; }
}

/* 12. ICONOS DE TRAZO DONDE HABÍA EMOJIS (D15; norma de Jacobo del 17/09). Cada sitio fija su tamaño. */
.tar-upsell-ico .tar-ico { width: 30px; height: 30px; color: var(--texto-suave); }
.tar-envio-carta .tar-ico { width: 22px; height: 22px; color: var(--verde-oscuro); vertical-align: -3px; }
.tar-ico-linea { display: inline-flex; vertical-align: -3px; margin-right: 6px; }
.tar-ico-linea .tar-ico, .tar-ico-linea .rs-ico { width: 16px; height: 16px; }
.tar-aviso-version .tar-ico { width: 17px; height: 17px; flex: none; }
.tar-menu-ctx button .tar-ico { width: 15px; height: 15px; margin-right: 7px; vertical-align: -3px; flex: none; }
.rs-publica { display: inline-flex; vertical-align: -2px; }
.rs-publica .tar-ico { width: 12px; height: 12px; }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   EL SISTEMA MÓVIL, SEGUNDA PASADA (v374, 10/10/2026, decisiones de Jacobo sobre el informe 2-movil-global)
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* 13. EL MENÚ CORTO (radar.js, `menuOpciones`): hasta tres opciones, anclado a su botón, la misma caja de vidrio
   y las mismas filas en versalitas que los desplegables de la cabecera, con 44 px de alto. Con más de tres
   opciones se abre la hoja común. */
.tar-menu-corto {
  position: fixed; z-index: var(--z-menu, 80); min-width: 216px; max-width: calc(100vw - 24px);
  display: flex; flex-direction: column; padding: 3px; border-radius: 18px;
  background: var(--lg-panel-solido, var(--superficie)); border: 1.5px solid var(--lg-borde, var(--linea));
  -webkit-backdrop-filter: blur(var(--lg-blur, 18px)) saturate(var(--lg-sat, 1.75)); backdrop-filter: blur(var(--lg-blur, 18px)) saturate(var(--lg-sat, 1.75));
  box-shadow: var(--lg-sombra, 0 8px 24px rgba(0,0,0,.1));
  opacity: 0; transform: translateY(-6px) scale(.97); transition: opacity .2s ease, transform .3s var(--tar-muelle, ease);
}
.tar-menu-corto.abierto { opacity: 1; transform: none; }
.tar-menu-corto-op {
  -webkit-appearance: none; appearance: none; display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 15px;
  margin: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; cursor: pointer; text-align: left;
  font-family: var(--tipo-marca); font-size: .75rem; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; color: var(--texto);
}
.tar-menu-corto-op + .tar-menu-corto-op { border-top: 1.5px solid var(--lg-borde, var(--linea)); }
.tar-menu-corto-op:first-child { border-radius: 15px 15px 0 0; }
.tar-menu-corto-op:last-child { border-radius: 0 0 15px 15px; }
.tar-menu-corto-op:only-child { border-radius: 15px; }
.tar-menu-corto-op:hover, .tar-menu-corto-op:focus-visible { background: rgba(0,134,163,.08); color: var(--verde-oscuro); }
html[data-modo="incognito-oscuro"] .tar-menu-corto-op:hover, html[data-modo="incognito-oscuro"] .tar-menu-corto-op:focus-visible { background: rgba(47,198,224,.13); }
.tar-menu-corto-op .tar-ico { width: 17px; height: 17px; flex: none; }
.tar-menu-corto-op.peligro { color: #A2373B; }
html[data-modo="incognito-oscuro"] .tar-menu-corto-op.peligro { color: #EE8A8D; }
/* Filas con casilla en una hoja (la de «Filtrar»): la marca, el nombre con su explicación y la cifra. */
.tar-hoja-check .tar-hoja-marca { flex: none; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 7px; box-shadow: inset 0 0 0 1.5px var(--lg-borde, var(--linea)); }
.tar-hoja-check.activa .tar-hoja-marca { background: var(--verde-solido); box-shadow: none; }
.tar-hoja-fila.tar-hoja-check .tar-hoja-marca .tar-ico { width: 15px; height: 15px; color: #fff; }
.tar-hoja-fila-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tar-hoja-fila-txt small { font-family: var(--tipo-texto); font-size: .8125rem; font-weight: 400; line-height: 1.35; color: var(--texto-suave); }
.tar-hoja-n { flex: none; font-variant-numeric: tabular-nums; font-weight: 600; color: var(--texto-suave); }
.tar-hoja-fila:disabled { opacity: .45; cursor: default; }

/* 14. RESULTADOS EN EL MÓVIL (D8, aprobado por Jacobo el 10/10/2026). La primera noticia quedaba a ~1.040 px: había
   que bajar más de una pantalla para ver un resultado. Hasta 720 px:
   · cabecera: «‹ Radar», el título y «⋯» (Editar, Regenerar, Añadir noticia a mano); «Generar dossier» es el botón
     principal, a todo el ancho;
   · «Revisión incompleta», plegado a una línea con «Ver»;
   · las pestañas de ingrediente y las burbujas, en UNA fila que se desliza; dónde aparece la palabra (Titulares,
     Subtítulos, En el texto) pasa a la hoja «Filtrar», cuyo botón se queda a la vista al final de la fila;
   · el resumen, en una fila de cifras compactas; la barra de añadir a mano, dentro de «⋯».
   En el escritorio nada de esto se ve y la pantalla es la de siempre. */
.dos-cab-mas, .tar-volver, .dos-filtrar, .dos-aviso-ver { display: none; }
@media (max-width: 720px) {
  .dos-cab.dos-cab-res { flex-wrap: wrap; align-items: flex-start; gap: 6px 8px; margin-bottom: 10px; }
  .dos-cab-res .dos-cab-tit { flex: 1 1 0; min-width: 0; }
  .dos-cab-mas {
    display: inline-grid; place-items: center; flex: none; width: 44px; height: 44px; margin: 0 -8px 0 0; padding: 0;
    border: 0; border-radius: 999px; background: transparent; color: var(--texto); cursor: pointer;
  }
  .dos-cab-mas .tar-ico { width: 24px; height: 24px; }
  .dos-cab-mas[aria-expanded="true"] { background: rgba(0,134,163,.09); color: var(--verde-oscuro); }
  .dos-cab-res .dos-acciones-cab { gap: 0; }
  .dos-cab-res .dos-acciones-cab > .dos-cab-btn:not(.dos-cab-btn-pdf) { display: none; }
  .dos-cab-res .dos-acciones-cab > .dos-filtro.dos-cab-btn-pdf {
    flex: 1 1 100%; min-height: 46px; justify-content: center; border-radius: 999px;
    background: var(--verde-solido); color: #fff; box-shadow: none;
    font-family: var(--tipo-marca); font-size: .9375rem; font-weight: 600; letter-spacing: 0; text-transform: none;
  }
  .dos-cab-res .dos-acciones-cab > .dos-filtro.dos-cab-btn-pdf:hover { background: var(--verde-solido); filter: brightness(1.08); color: #fff; }
  .dos-cab-res ~ .dos-bloque .dos-manual { display: none; }
  .dos-cab-res ~ .dos-bloque .dos-grupos > .dos-grupo:first-child { margin-top: 10px; }
  /* Menos aire entre la cabecera flotante y el título en el móvil (era de 24 px): la pantalla es corta. */
  main.contenido { padding-top: 12px; }

  .dos-enmarcha.dos-aviso-plegable { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0 8px; padding: 2px 2px 2px 14px; margin-bottom: 8px; }
  .dos-aviso-plegable:not(.abierto) .dos-aviso-txt { display: none; }
  .dos-aviso-plegable.abierto .dos-aviso-txt { order: 3; flex: 1 1 100%; padding: 0 11px 10px 0; }
  .dos-aviso-ver {
    display: inline-flex; align-items: center; margin-left: auto; min-height: 38px; padding: 0 16px; position: relative;
    border: 0; border-radius: 999px; background: transparent; cursor: pointer;
    font: inherit; font-family: var(--tipo-marca); font-weight: 600; color: var(--tarsis-cian-hondo, #0C6C7A);
  }
  html[data-modo="incognito-oscuro"] .dos-aviso-ver { color: var(--verde-oscuro); }
  .dos-aviso-ver::before { content: ''; position: absolute; inset: -3px 0; }

  .tar-amb-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; margin-bottom: 8px; padding: 2px 0; }
  .tar-amb-tabs::-webkit-scrollbar { display: none; }
  .tar-amb-tabs > .dos-tab { flex: none; }

  /* El resumen: «2 IMPACTOS · 2 NOTICIAS · 2 MEDIOS» en una fila y, debajo, el periodo y cuándo se lanzó. */
  .dos-resumen:not(.dos-resumen-rrss) { flex-wrap: wrap; margin-bottom: 8px; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat {
    flex: 1 1 0; min-width: 0; flex-direction: row-reverse; justify-content: flex-end; align-items: baseline;
    gap: 5px; padding: 8px 10px 2px; border-left: 0;
  }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat-l { min-width: 0; letter-spacing: .03em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat-n { flex: none; font-size: 1.25rem; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat:last-child { flex: 1 1 100%; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; gap: 0 8px; padding: 0 10px 8px; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat:last-child .dos-stat-l { display: none; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat-t { font-size: .8125rem; line-height: 1.3; }
  .dos-resumen:not(.dos-resumen-rrss) .dos-stat-sub { line-height: 1.3; }

  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros { margin-bottom: 8px; }
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-fila,
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-sub {
    flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-fila::-webkit-scrollbar,
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-sub::-webkit-scrollbar { display: none; }
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-fila > *,
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-sub > * { flex: none; }
  .dos-burbujas-caja:not(.dos-burbujas-rrss) .dos-filtros-fila > [data-ubic] { display: none; }
  .dos-filtrar {
    display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 7px 14px 7px 22px; margin-left: auto;
    position: sticky; right: 0; border: 0; border-radius: 0 999px 999px 0; cursor: pointer; color: var(--texto);
    background: linear-gradient(to right, color-mix(in srgb, var(--fondo) 0%, transparent), var(--fondo) 16px);
    font-family: var(--tipo-marca); font-size: var(--m-letra-min, .75rem); font-weight: 600; letter-spacing: .11em; text-transform: uppercase;
  }
  .dos-filtrar .tar-ico { width: 17px; height: 17px; }
  .dos-filtrar.activa { color: var(--tarsis-cian-hondo, #0C6C7A); }
  html[data-modo="incognito-oscuro"] .dos-filtrar.activa { color: var(--verde-oscuro); }
  .dos-filtrar .dos-filtro-n { min-width: 18px; padding: 0 5px; border-radius: 999px; background: var(--verde-solido); color: #fff; text-align: center; }
}

/* 15. LA CABECERA DE PANTALLA (D10, aprobado el 10/10/2026). Había cinco tratamientos de título y las pantallas raíz no
   tenían `h1`: en el móvil el título es lo único que dice dónde estás (la barra de abajo marca la herramienta, no la
   subpantalla) y VoiceOver navega por encabezados. Ahora:
   · la RAÍZ de cada herramienta lleva su `h1`: en el escritorio con el mismo aspecto que el `h2` de antes (19 px y
     filete: no cambia ni un píxel) y en el móvil a 28 px, sin filete. Panel, Radar y Redes, que no tenían título, lo
     llevan solo a la vista en el móvil (`.tar-titulo-movil`); Mitra, nunca a la vista (Jacobo, 31/08: «fuera el
     título, el buscador es el protagonista»), solo para el lector de pantalla (`.tar-titulo-oculto`);
   · las SUBPANTALLAS, su `h1` de 22 px de siempre y, en el móvil, «‹ Radar» (o la herramienta de la que cuelgan)
     encima, como el botón de volver de iOS; el «← Radar» de escritorio se queda para el escritorio. */
.tar-doss-cab > h1.tar-titulo-raiz {
  margin: 0; font-size: 1.1875rem; letter-spacing: -.018em;
  padding-bottom: 6px; border-bottom: 1px solid var(--linea);
}
.tar-titulo-movil, .tar-titulo-oculto {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
@media (max-width: 720px) {
  .tar-titulo-movil {
    position: static; width: auto; height: auto; margin: 2px 0 12px; overflow: visible; clip: auto; white-space: normal;
    font-size: var(--m-titulo, 1.75rem); line-height: 1.15; letter-spacing: -.028em;
  }
  .tar-doss-cab > h1.tar-titulo-raiz, .tt-cab > h2, .cfg-cab h1 {
    font-size: var(--m-titulo, 1.75rem); line-height: 1.15; letter-spacing: -.028em; padding-bottom: 0; border-bottom: 0;
  }
  .tar-doss-cab:has(> h1.tar-titulo-raiz), .tar-doss-cab.tt-cab { margin-top: 2px; }
  /* El primer apartado de Radar («Búsquedas») ya no es lo primero de la pantalla: el título de la herramienta va encima. */
  .tar-titulo-movil + .tar-cab-busquedas { margin-top: 0; }
  .dos-cab h1, .rd-cab-txt h1 { font-size: var(--m-subtitulo, 1.375rem); }
  .tar-volver {
    display: inline-flex; align-items: center; gap: 1px; min-height: 44px; margin: -6px 0 -4px -10px; padding: 0 12px 0 4px;
    font-family: var(--tipo-marca); font-size: 1.0625rem; font-weight: 500; letter-spacing: -.01em; text-decoration: none;
    color: var(--tarsis-cian-hondo, #0C6C7A); border-radius: 999px;
  }
  .tar-volver:hover { text-decoration: none; }
  .tar-volver .tar-ico { width: 24px; height: 24px; flex: none; }
  html[data-modo="incognito-oscuro"] .tar-volver { color: var(--verde-oscuro); }
  .tar-cab-tit { min-width: 0; }
  .dos-cab > div:has(> .tar-volver) { display: flex; flex-direction: column; align-items: flex-start; }
  .tar-volver-escritorio { display: none; }
}

/* 16. TEXTO GRANDE (D3, aprobado el 10/10/2026). Con «Texto más grande» de iOS al 200 % (tema.js sube la raíz hasta
   32 px y, por encima del 125 %, pone `html.tar-texto-grande`), los tamaños de letra crecían pero las cajas no: la
   cabecera se salía, los nombres del panel se cortaban y los botones cortaban su texto. A ese tamaño: la píldora del
   plan sale de la cabecera (su estado sigue en Configuración), el panel pasa a dos columnas con el nombre entero, los
   botones crecen en alto (alturas mínimas en rem, no alturas fijas) y lo que no cabe en una fila se parte. La barra
   de pestañas NO crece (HIG: las pestañas no escalan). */
html.tar-texto-grande .barra-superior .tar-plan, html.tar-texto-grande .web-ventana-barra .tar-plan { display: none; }
html.tar-texto-grande :is(.contenido, .web-main) p a { overflow-wrap: anywhere; }
@media (max-width: 720px) {
  html.tar-texto-grande .tar-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html.tar-texto-grande .tar-herr { aspect-ratio: auto; min-height: 0; padding: 18px 8px 14px; }
  html.tar-texto-grande :is(h1, h2) { overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
  html.tar-texto-grande .tar-herr-nombre { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
  html.tar-texto-grande .tar-herr-pro, html.tar-texto-grande .tar-herr-llave { position: static; order: 3; }
  html.tar-texto-grande .tar-doss-cab, html.tar-texto-grande .dos-acciones, html.tar-texto-grande .tar-cab-acciones,
  html.tar-texto-grande .tt-cab-acciones, html.tar-texto-grande .rd-cab-quien, html.tar-texto-grande .cfg-cab-accion { flex-wrap: wrap; min-width: 0; }
  html.tar-texto-grande .dos-acc, html.tar-texto-grande .dos-busquedas .dos-v345 .dos-card-acc > .dos-acc { height: auto; min-height: 2.75rem; white-space: normal; }
  html.tar-texto-grande .dos-busquedas .dos-v345 .dos-card-acc { flex-wrap: wrap; }
  html.tar-texto-grande .dos-busquedas .dos-v345 .dos-card-acc > .dos-acc { flex: 1 1 100%; }
  html.tar-texto-grande .dos-filtro, html.tar-texto-grande .dos-cab-btn, html.tar-texto-grande .cfg-nav .tar-pill,
  html.tar-texto-grande .web-proximamente, html.tar-texto-grande .tar-salir, html.tar-texto-grande .boton-primario,
  html.tar-texto-grande .boton-secundario { white-space: normal; }
  html.tar-texto-grande .tar-buscador { flex: 1 1 100%; margin-left: 0; min-width: 0; }
  html.tar-texto-grande .tar-arbol-filtro { min-width: 0; width: 100%; }
  html.tar-texto-grande .web-pie-interior { grid-template-columns: minmax(0, 1fr); }
  html.tar-texto-grande .rd-cab-txt { min-width: 0; }
  html.tar-texto-grande .dos-cab h1, html.tar-texto-grande .can-inc-cab, html.tar-texto-grande .web-precio-plan { flex-wrap: wrap; }
  html.tar-texto-grande .can-pil { white-space: normal; }
  html.tar-texto-grande .us-cifra { min-width: 0; }
  html.tar-texto-grande .us-cifra span { overflow-wrap: anywhere; }
}

/* 17. LO QUE QUEDABA DE LOS 44 PX (D9). En el teléfono el nombre de la tarjeta de Radar es texto (radar.js,
   `tarjetaBusquedaHTML`): no se pinta como botón y cambiarlo va al «⋯» de la tarjeta. Los puntos de las carpetas
   (13 px) y los campos de nombre de Tareas (26-28 px) alcanzan su zona de 44 sin cambiar el dibujo. */
.dos-circ-mas { display: none; }
.dos-circ-mas .tar-ico { width: 17px; height: 17px; }
span.dos-card-nombre, span.dos-card-ambitos { cursor: inherit; }
span.dos-card-nombre:hover { background: none; }
@media (max-width: 720px) { .dos-circ-mas { display: inline-flex; } }
@media (hover: none) and (pointer: coarse) {
  .tar-carpeta-color::before { content: ''; position: absolute; inset: -15.5px; border-radius: 50%; }
  .tar-escritorio.editando .tar-carpeta-punto::before { content: ''; position: absolute; inset: -14.5px; border-radius: 50%; }
  .tt-col-nombre { min-height: 44px; }
  .tt-tab-titulo { min-height: 44px; padding-top: 11px; padding-bottom: 11px; }
  /* Los campos que se quedaban en 30-40: el de fichas (el campo de dentro ocupa ya el alto entero), el buscador del
     árbol de medios, el de completadas de Tareas y «+ Añadir ingrediente». */
  .dos-chips-input { padding-top: 0; padding-bottom: 0; }
  .dos-chips-input input { min-height: 42px; }
  .tar-arbol-filtro, #tt-comp-buscar, button.tar-ing-anadir { min-height: 44px; }
  .tt-comp summary { padding-top: 12px; padding-bottom: 12px; }
}

/* 18. LOS MENÚS DE MÁS DE TRES OPCIONES, COMO HOJA (§3 del informe). Los que son una lista de acciones pasan por la
   hoja común desde radar.js (`menuOpciones`: el «⋯» de Resultados, el de la tarjeta, Editar/Regenerar del conjunto,
   las opciones de un dossier). Las temáticas de Nueva búsqueda son casillas vivas enganchadas a su árbol, así que no se
   mueven de sitio: en el teléfono la misma caja se presenta como hoja (anclada abajo, asa, velo que cierra al tocarlo). */
@media (max-width: 720px) {
  .tar-tem-menu:not([hidden]) {
    position: fixed; left: 0; right: 0; top: auto; bottom: 0; z-index: var(--z-hoja, 300); min-width: 0;
    max-height: min(70dvh, 560px); overflow-y: auto; overscroll-behavior: contain;
    padding: 22px max(14px, env(safe-area-inset-right, 0px)) calc(16px + env(safe-area-inset-bottom, 0px)) max(14px, env(safe-area-inset-left, 0px));
    border: 0; border-top: 1px solid var(--lg-borde, var(--linea)); border-radius: 26px 26px 0 0; background: var(--superficie);
    box-shadow: 0 -8px 40px rgba(0, 0, 0, .16), 0 60px 0 var(--superficie);
    animation: tar-hoja-sube .5s var(--tar-muelle, cubic-bezier(.34, 1.3, .64, 1)) backwards;
  }
  .tar-tem-menu:not([hidden])::before {
    content: ''; display: block; flex: none; width: 36px; height: 5px; margin: -14px auto 12px; border-radius: 999px;
    background: color-mix(in srgb, var(--texto-suave) 45%, transparent);
  }
  .tar-tem-caja:has(> .tar-tem-menu:not([hidden]))::before {
    content: ''; position: fixed; inset: 0; z-index: calc(var(--z-hoja, 300) - 1);
    background: rgba(10, 18, 24, .42); animation: tar-hoja-velo .24s ease backwards;
  }
  .tar-tem-op { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .tar-tem-menu:not([hidden]), .tar-tem-caja::before { animation: none; }
}
