/* ===========================================================================
   Triángulo Púrpura — Índigo sobre gris
   Índigo y no azul: el sitio se llama Púrpura y la marca (el logo y el
   monito) es morada. El índigo es el punto donde el azul y el morado se
   dan la mano, así que el nombre deja de sonar prestado sin que la
   pantalla se vuelva lila.
   Los tokens son los del portal. Aquí solo se añaden dos tamaños de la escala
   (titular de bienvenida y campo de pregunta) porque en este sitio la pregunta
   es el dato, no una etiqueta de formulario.
   =========================================================================== */

:root{
  /* identidad */
  --tono-1:#4338CA; --tono-2:#818CF8; --tono-suave:#E7E9FD;
  --tono-hondo:#312E81; --tono-borde:#C7CBF7;
  --tono-grad:linear-gradient(90deg,#4338CA 0%,#818CF8 100%);
  --tono-grad-txt:linear-gradient(90deg,#4338CA 0%,#6366F1 100%);
  --tono-rgb:67,56,202;

  /* advertencia: un solo trabajo */
  --avisa:#B45309; --avisa-txt:#92400e; --avisa-bg:#FEF3C7;
  --avisa-bg2:#FFFBEB; --avisa-borde:#FDE68A; --avisa-rgb:180,83,9;

  /* neutros y estados */
  --fondo:#f8fafc; --panel:#fff; --hueco:#f9fafb;
  --tinta:#0f172a; --suave:#64748b; --tenue:#cbd5e1;
  --linea:rgba(2,6,23,.08); --linea-alta:rgba(2,6,23,.14); --ic-borde:#eef2ff;
  --ok:#15803d; --ok-bg:#f0fdf4; --ok-borde:#bbf7d0;
  --mal:#b91c1c; --mal-bg:#fef2f2; --mal-borde:#fecaca;

  /* formas */
  --r-ch:10px; --r-md:14px; --r-gr:16px;
  --sombra:0 6px 20px rgba(15,23,42,.06);
  --sombra-alta:0 14px 30px rgba(15,23,42,.12);

  /* tipografía */
  --txt:"Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --nota:"Newsreader",ui-serif,Georgia,"Times New Roman",serif;
  /* Las cuatro del buscador. Cada una tiene un trabajo y solo uno:
     --dice     lo que dice el monito
     --pregunta el campo donde se escribe
     --lectura  el resumen y las citas: es lo que de verdad se lee
     --rotulo   la palabra grande del titular */
  --dice:"Trirong",ui-serif,Georgia,"Times New Roman",serif;
  --pregunta:"Ruda",system-ui,-apple-system,"Segoe UI",sans-serif;
  --lectura:"Open Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --rotulo-gr:"Caacupe One",ui-rounded,system-ui,cursive;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
/* El fondo no es un gris plano: son tres manchas de índigo muy diluidas sobre
   el mismo gris de siempre. `fixed` las deja quietas al bajar, así que se
   comportan como luz del cuarto y no como decoración que rueda con el texto.
   Todo va por debajo del 15 % de opacidad a propósito: se tiene que notar
   cuando lo buscas, no cuando lees. */
body{background:
       radial-gradient(48% 38% at 10% 4%,   rgba(59,130,246,.14) 0%, transparent 70%),
       radial-gradient(44% 34% at 92% 10%,  rgba(96,165,250,.13) 0%, transparent 72%),
       radial-gradient(58% 44% at 82% 92%,  rgba(37,99,235,.11) 0%, transparent 74%),
       radial-gradient(70% 50% at 20% 78%,  rgba(99,102,241,.09) 0%, transparent 72%),
       linear-gradient(180deg,#fcfdff 0%,var(--fondo) 42%,#e9f0fa 100%);
     background-attachment:fixed;background-repeat:no-repeat;
     color:var(--tinta);font-family:var(--txt);
     -webkit-font-smoothing:antialiased;padding:26px 16px 60px;min-height:100vh}
.envoltura{max-width:760px;margin:0 auto}
a{color:var(--tono-1)}

/* ── Encabezado ─────────────────────────────────────────── */
.saludo{margin-bottom:28px}
.saludo .fila{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.pildora{display:inline-flex;align-items:center;gap:7px;background:var(--tono-suave);
  color:var(--tono-hondo);border:1px solid var(--tono-borde);border-radius:999px;
  padding:5px 13px;font-size:10.5px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;text-decoration:none}
.pildora .punto{width:6px;height:6px;border-radius:50%;background:var(--tono-1);
  animation:latido 2.6s ease-in-out infinite}
@keyframes latido{0%,100%{opacity:1}50%{opacity:.25}}
.reloj{font-family:var(--mono);font-size:13.5px;color:var(--tenue);padding-top:4px}
h1{font-size:clamp(31px,5.2vw,46px);font-weight:800;line-height:1.04;
   letter-spacing:-.03em;margin:16px 0 10px}
.grad{background:var(--tono-grad-txt);-webkit-background-clip:text;background-clip:text;
  color:transparent;padding-right:.08em;margin-right:-.08em}
.saludo p{color:var(--suave);font-size:15.5px;max-width:46ch;line-height:1.55}
.raya{height:2px;margin-top:22px;border-radius:2px;
  background:linear-gradient(90deg,#4338CA 0%,#818CF8 34%,
             rgba(2,6,23,.08) 34%,rgba(2,6,23,.08) 100%)}
.volver{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;
  color:var(--suave);background:none;border:0;cursor:pointer;font-family:var(--txt);
  padding:0;margin-bottom:18px;text-decoration:none}
.volver:hover{color:var(--tono-1)}
.et-seccion{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--suave);margin:26px 0 12px}

/* ── La bienvenida: el saludo gigante de la portada ──────────────────────────
   Es la única pantalla donde todavía no hay nada que hacer, así que puede
   permitirse el gesto: el nombre a tamaño de cartel y una frase que cambia
   en cada visita. Va sobre `.saludo`, que aparece en media docena de
   pantallas más; aquí solo se añade, nunca se toca la base.

   OJO CON EL NOMBRE: esto NO se llama «.puerta». Ese nombre ya era de la
   pantalla de entrada (max-width 470 px, centrada), y al estrenarlo aquí el
   saludo salió encajonado en media página. Se vio al mirarlo, no al leerlo.

   El monito se pone al lado, alineado con la base del texto. En el teléfono
   desaparece: a 375 px de ancho, o cabe el saludo grande o cabe él. */
.bienvenida{animation:asomar .55s cubic-bezier(.22,1,.36,1) both}
.bienvenida-fila{display:flex;align-items:flex-end;gap:20px;margin-top:18px}
.bienvenida-txt{flex:1 1 auto;min-width:0}
.bienvenida-monito{flex:0 0 auto}
.bienvenida-monito .monito{width:128px;height:128px;cursor:default}
.bienvenida-t{font-size:clamp(36px,6.6vw,66px);font-weight:800;letter-spacing:-.04em;
  line-height:.98;margin:0}
/* La frase iba a 15-18 px en gris claro y no se leía: quedaba de pie de foto
   debajo de un titular de 66 px. Es lo único que cambia en cada visita, así
   que tiene que verse. Sube de tamaño, de peso y de contraste hasta la mitad
   justa del titular: 35 px contra 66 px. Más arriba compite con el saludo y
   la portada pierde su jerarquía; 26 px se quedaba corto y él lo dijo dos
   veces. El ancho cae a 26ch — a este cuerpo, un renglón largo se vuelve un
   párrafo, y esto es una frase suelta. */
/* OJO CON EL SELECTOR DOBLE, no es adorno. Arriba vive `.saludo p`, que fija
   15.5 px y el gris `--suave` para las media docena de pantallas que usan la
   cabecera. Ese selector pesa (0,1,1) y `.bienvenida-frase` a secas pesa
   (0,1,0): gana el de arriba aunque este esté escrito después, y la frase se
   quedaba en 15.5 px pasara lo que pasara con el número de aquí. Se cambió el
   tamaño dos veces sin que se moviera nada en pantalla hasta dar con esto.
   Con `.bienvenida .bienvenida-frase` pesa (0,2,0) y manda. */
.bienvenida .bienvenida-frase{margin-top:18px;font-size:clamp(23px,3.9vw,35px);
  line-height:1.25;font-weight:500;letter-spacing:-.018em;color:#334155;
  max-width:26ch;
  animation:asomar .55s cubic-bezier(.22,1,.36,1) both;animation-delay:.14s}
.bienvenida .raya{margin-top:26px}

/* Los cuadros entran un pelo después que el saludo. Es medio segundo de
   diferencia y es lo que hace que la pantalla se sienta armada, no volcada. */
.cuadros{animation:asomar .55s cubic-bezier(.22,1,.36,1) both;animation-delay:.1s}

@media (max-width:639px){
  .bienvenida-monito{display:none}
  .bienvenida-fila{margin-top:14px}
  .bienvenida-t{letter-spacing:-.04em}
  .bienvenida .bienvenida-frase{max-width:none}
}
@media (prefers-reduced-motion:reduce){
  .bienvenida,.bienvenida-frase,.cuadros{animation:none}
}

/* ── Etiquetas de área ───────────────────────────────────────────────────────
   Dos primos que no son el mismo botón, y conviene tenerlo claro:

   `.filtro` vive en el buscador. Es un interruptor de búsqueda: encendido
   significa "acota por esto". Lleva el número de documentos detrás.

   `.eti` vive en Subir. Es una marca sobre un documento: puesta significa
   "este documento es de esto". Sin número.

   Comprobado antes de estrenar los nombres: ninguna de las dos clases existía
   ya en esta hoja. La que casi choca es `.niv`, de los niveles de acceso —
   parecida en forma y en comportamiento, pero de una sola opción a la vez,
   por eso no se reutiliza.

   Apagado es blanco con borde fino; encendido es el índigo suave de la marca
   con borde de color. NO se usa solo el color del texto para decir cuál está
   puesto: en una pantalla al sol eso no se ve. */
.filtros{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px}
.filtros-atajos{display:flex;gap:6px;margin-right:2px}
.filtros-atajos .mini{padding:6px 12px;font-size:12.5px}

/* Casilla de verdad dentro de la píldora. El `:has(:checked)` pinta el fondo
   índigo: encendido se ve por el color Y por la marca, que en una pantalla al
   sol es la diferencia entre saberlo y adivinarlo. */
.filtro{display:inline-flex;align-items:center;gap:8px;background:var(--panel);
  border:1px solid var(--linea);border-radius:999px;padding:7px 14px;cursor:pointer;
  font-family:var(--txt);font-size:13.5px;font-weight:700;color:var(--suave);
  transition:.16s;line-height:1;user-select:none}
.filtro:hover{border-color:var(--tono-borde);color:var(--tono-1)}
.filtro input{width:15px;height:15px;margin:0;accent-color:var(--tono-1);cursor:pointer;
  flex:0 0 auto}
.filtro:has(input:checked){background:var(--tono-suave);border-color:var(--tono-borde);
  color:var(--tono-hondo)}
.filtro:focus-within{outline:2px solid var(--tono-2);outline-offset:2px}
/* El contador. En la píldora encendida tiene que seguir leyéndose sobre el
   fondo índigo, así que cambia de papel, no solo de tinta. */
.filtro-n{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--tenue);
  background:var(--hueco);border-radius:999px;padding:2px 6px;line-height:1}
.filtro:has(input:checked) .filtro-n{background:#fff;color:var(--tono-1)}
/* Una etiqueta sin documentos se puede marcar igual — mañana los tendrá —
   pero no se anuncia como si tuviera algo detrás. */
.filtro.vacio{opacity:.55}
.filtros-raya{width:1px;height:20px;background:var(--linea-alta);margin:0 4px}
.filtro-fuera svg{opacity:.75}

/* Las marcas de Subir. Cuadradas y no de píldora: no son un filtro, y que se
   distingan de un vistazo evita confundir las dos pantallas. */
.etis{display:flex;flex-wrap:wrap;gap:7px}
.eti{display:inline-flex;align-items:center;gap:6px;background:var(--panel);
  border:1px solid var(--linea);border-radius:var(--r-ch);padding:7px 11px;
  cursor:pointer;font-family:var(--txt);font-size:13px;font-weight:700;
  color:var(--suave);transition:.16s;line-height:1.2;text-align:left}
.eti:hover{border-color:var(--tono-borde);color:var(--tono-1)}
.eti.puesta{background:var(--tono-suave);border-color:var(--tono-borde);
  color:var(--tono-hondo)}

/* Las del panel de mantenimiento no se pulsan para marcar: solo se retiran. */
.eti-fija{cursor:default;color:var(--tinta);padding-right:6px}
.eti-fija:hover{border-color:var(--linea);color:var(--tinta)}
.eti-x{background:none;border:0;cursor:pointer;font-size:17px;line-height:1;
  color:var(--tenue);padding:0 4px;border-radius:6px;font-family:var(--txt)}
.eti-x:hover{color:var(--mal);background:var(--mal-bg)}
.etis-admin{margin-bottom:26px}
.etis-nueva{display:flex;gap:8px;margin-top:10px}
.etis-nueva .campo-in{flex:1 1 auto;min-width:0;font-size:14px;padding:10px 12px}
.etis-nueva .btn{flex:0 0 auto;padding:10px 16px;font-size:13.5px}

@media (max-width:639px){
  .filtro{font-size:12.5px;padding:6px 11px;gap:7px}
  .filtros-atajos{flex:1 1 100%}
  .etis-nueva{flex-direction:column}
  .etis-nueva .btn{width:100%;justify-content:center}
}

/* ── Cuadros de la portada ──────────────────────────────────────────────────
   DOS PUERTAS Y DOS ATAJOS. Antes esto era un bento: el Buscador se llevaba
   la columna entera y los otros tres se apilaban al lado. Pero al sitio se
   entra por dos sitios, no por uno — a preguntar o a preparar la reunión —,
   así que Buscador y Perlas van arriba con el mismo tamaño y el mismo peso, y
   Pastoreo y Subir bajan a la fila de renglones, que es lo que son: atajos.

   EL ORDEN DE ESTE BLOQUE IMPORTA. `.cuadro` va primero con lo común, y
   `.cuadro-gr` / `.cuadro-ch` después: comparten clase, y al revés gana la
   regla de arriba. Ya pasó una vez y el cuadro grande salió cuadrado.
   ────────────────────────────────────────────────────────────────────────── */
.cuadros{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:stretch}

.cuadro{position:relative;isolation:isolate;overflow:hidden;
  display:flex;flex-direction:column;justify-content:space-between;text-align:left;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--r-gr);
  box-shadow:var(--sombra);padding:24px;cursor:pointer;font-family:var(--txt);
  color:var(--tinta);text-decoration:none;
  transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s,border-color .3s}

/* La barra de arriba: empieza a un tercio y se llena al pasar. */
.cuadro::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;z-index:5;
  background:var(--tono-grad);transform-origin:left;transform:scaleX(.34);
  transition:transform .42s cubic-bezier(.22,1,.36,1)}
.cuadro:hover::before,.cuadro:focus-visible::before{transform:scaleX(1)}

/* La trama de puntos del fondo, que se desvanece hacia la esquina. */
.cuadro::after{content:"";position:absolute;inset:0;z-index:-2;opacity:.5;
  background-image:radial-gradient(circle at 1px 1px,var(--tono-suave) 1px,transparent 0);
  background-size:16px 16px;
  -webkit-mask-image:linear-gradient(215deg,#000 0%,transparent 62%);
  mask-image:linear-gradient(215deg,#000 0%,transparent 62%)}

.cuadro:hover,.cuadro:focus-visible{transform:translateY(-5px);
  box-shadow:0 18px 40px rgba(var(--tono-rgb),.17);border-color:var(--tono-borde)}
.cuadro:focus-visible{outline:2px solid var(--tono-1);outline-offset:3px}
.cuadro:active{transform:translateY(-2px)}

/* ── Las dos capas de efecto ──────────────────────────────────────────────
   Son <span> vacíos en el HTML y no pseudo-elementos porque ::before y
   ::after ya están ocupados por la barra y por la trama.

   .fulgor  la mancha de luz que sigue al cursor. portada.js le escribe --mx
            y --my en píxeles; sin JS (o en un teléfono) se queda en el valor
            de reserva y sigue siendo un degradado decente, no un agujero.

   .aura    el borde degradado. Es un relleno de 1 px al que se le recorta el
            centro con dos máscaras: una pinta el cuadro entero, la otra solo
            la caja de contenido, y `exclude` deja nada más el marco. Es la
            única forma de tener un borde con degradado: border-color no
            admite degradados y box-shadow tampoco. */
.fulgor,.aura{position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  opacity:0;transition:opacity .35s ease}
.fulgor{z-index:0;
  background:radial-gradient(320px circle at var(--mx,50%) var(--my,0%),
             rgba(var(--tono-rgb),.16) 0%,rgba(var(--tono-rgb),.05) 42%,transparent 70%)}
.aura{z-index:4;padding:1px;
  background:linear-gradient(135deg,#4338CA 0%,#818CF8 42%,#C7CBF7 62%,#4338CA 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
          mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude}
.cuadro:hover .fulgor,.cuadro:focus-visible .fulgor{opacity:1}
.cuadro:hover .aura,.cuadro:focus-visible .aura{opacity:.9}

/* El icono gigante del fondo. */
.marca{position:absolute;right:-26px;bottom:-30px;width:148px;height:148px;z-index:-1;
  color:var(--tono-suave);opacity:.9;transition:transform .3s ease,color .3s ease}
.cuadro:hover .marca{transform:scale(1.07) rotate(-4deg);color:var(--tono-borde)}

/* El icono de arriba. Al pasar se llena de degradado y se ladea un poco: es
   el gesto que dice «esto es un botón», no una tarjeta de adorno. */
.cuadro .ic{position:relative;z-index:1;width:46px;height:46px;border-radius:var(--r-md);
  background:var(--tono-suave);border:1px solid var(--tono-borde);color:var(--tono-1);
  display:grid;place-items:center;box-shadow:0 2px 8px rgba(var(--tono-rgb),.10);
  transition:transform .32s cubic-bezier(.22,1,.36,1),background .25s,color .25s,
             box-shadow .25s,border-color .25s}
.cuadro:hover .ic{background:var(--tono-grad);color:#fff;border-color:transparent;
  box-shadow:0 6px 18px rgba(var(--tono-rgb),.30);
  transform:translateY(-2px) rotate(-6deg) scale(1.06)}

.cuadro h2{font-size:clamp(28px,5.2vw,40px);font-weight:800;letter-spacing:-.03em;
  line-height:1;margin-top:auto}
.cuadro .et{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);
  font-size:11.5px;color:var(--suave);margin-top:10px}
.cuadro .et .barrita{width:14px;height:2px;border-radius:2px;background:var(--tono-2)}

/* Sin permiso: apagado, sin efectos y con el candado. Se quitan fulgor y aura
   aquí y no en el HTML para que el marcado sea el mismo en los dos casos. */
.cuadro.cerrado{cursor:not-allowed;background:var(--hueco);box-shadow:none}
.cuadro.cerrado .fulgor,.cuadro.cerrado .aura{display:none}
.cuadro.cerrado::before{background:var(--tenue);transform:scaleX(.34)}
.cuadro.cerrado::after{background-image:radial-gradient(circle at 1px 1px,var(--linea) 1px,transparent 0)}
.cuadro.cerrado:hover{transform:none;box-shadow:none;border-color:var(--linea)}
.cuadro.cerrado .marca,.cuadro.cerrado:hover .marca{color:rgba(2,6,23,.05);transform:none}
.cuadro.cerrado .ic,.cuadro.cerrado:hover .ic{background:#fff;border-color:var(--linea);
  color:var(--tenue);box-shadow:none;transform:none}
.cuadro.cerrado h2{color:var(--suave)}
.cuadro.cerrado .et{color:var(--avisa-txt)}
.cuadro.cerrado .et .barrita{background:var(--avisa)}

/* ── Los dos grandes ────────────────────────────────────────────────────── */
/* min-height y no aspect-ratio: los dos tienen que medir lo mismo aunque uno
   lleve dos renglones más de texto, y en el grid `stretch` ya los iguala. El
   mínimo existe para que en pantallas anchas no queden dos tarjetas chatas. */
.cuadro-gr{padding:28px 28px 24px;min-height:344px}
.cuadro-gr h2{font-size:clamp(28px,3.7vw,40px);margin-top:0;line-height:1.02}
.cuadro-gr p{color:var(--suave);font-size:14.5px;line-height:1.5;max-width:31ch;margin-top:10px}
.cuadro-gr-txt{margin-top:auto;position:relative;z-index:1}
.cuadro-gr .et{margin-top:14px}
.cuadro-gr.cerrado h2,.cuadro-gr.cerrado p{color:var(--suave)}

/* La pista de «entra por aquí». Aparece al pasar por encima; en el teléfono
   se deja fija, porque ahí no hay cursor que la despierte. */
/* `flex` y no `inline-flex`: al lado va la línea de datos, que sí es inline, y
   las dos se pegaban en el mismo renglón — «17,162 fragmentos BUSCAR →». Un
   flex es de nivel bloque y se baja solo; el `width:fit-content` evita que el
   área del subrayado se estire a todo el ancho de la tarjeta. */
.cuadro-ir{display:flex;width:fit-content;align-items:center;gap:7px;margin-top:16px;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--tono-1);
  opacity:0;transform:translateY(7px);
  transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}
.cuadro-gr:hover .cuadro-ir,.cuadro-gr:focus-visible .cuadro-ir{opacity:1;transform:none}
.cuadro-ir svg{transition:transform .3s cubic-bezier(.22,1,.36,1)}
.cuadro-gr:hover .cuadro-ir svg{transform:translateX(4px)}

/* El arte de cada uno: el monito en el Buscador, la gema en Perlas. Va en la
   esquina de abajo a la derecha, debajo del texto (z-index 0 contra 1) para
   que si algún día el texto crece, gane el texto. */
.cuadro-arte{position:absolute;right:4px;bottom:6px;z-index:0;pointer-events:none;
  transition:transform .45s cubic-bezier(.22,1,.36,1)}
.cuadro-gr:hover .cuadro-arte{transform:translateY(-5px) scale(1.05)}
.cuadro-arte .monito{width:134px;height:134px;cursor:inherit}
.monito.curioso .lupa{opacity:1;transform:translate(-26px,26px) rotate(-8deg)}
.cuadro-gr:hover .monito.curioso .lupa{animation:lupa-barre 2.2s ease-in-out infinite}
.cuadro-gr:hover .monito.curioso .ojo{animation:mirar 2.2s ease-in-out infinite}

/* La joya de Perlas. Se llama .joya y NO .gema: `.gema` ya estaba tomada por
   el dibujo de la firma de la puerta (más abajo en este archivo), y como esa
   regla va después, le ganaba a esta y la joya salía del tamaño equivocado.
   Es el segundo choque de nombre del proyecto, después de `.marca`.
   Flota siempre —despacio, para que se vea viva sin pedir
   atención— y el destello solo se enciende al pasar por encima. */
.cuadro-arte .joya{width:132px;height:132px;display:block;
  animation:joya-flota 6s ease-in-out infinite}
@keyframes joya-flota{
  0%,100%{transform:translateY(0)   rotate(0deg)}
  50%    {transform:translateY(-7px) rotate(2.5deg)}}
.joya-destello{opacity:0;transform-origin:63px 40px}
.cuadro-gr:hover .joya-destello{animation:joya-brilla 1.9s ease-in-out infinite}
@keyframes joya-brilla{
  0%,100%{opacity:0;transform:scale(.5) rotate(0deg)}
  45%    {opacity:.95;transform:scale(1.15) rotate(35deg)}}
.cuadro-perlas.cerrado .joya{animation:none;filter:grayscale(1);opacity:.4}

/* ── Los chicos ─────────────────────────────────────────────────────────── */
/* Son renglones, no cuadrados. El `justify-content` se repite porque la base
   reparte en vertical (space-between) y al girar la fila mandaba el texto al
   otro extremo del renglón. */
.cuadro-ch{flex-direction:row;align-items:center;justify-content:flex-start;
  gap:14px;padding:16px 18px}
.cuadro-ch h2{font-size:20px;margin-top:0}
.cuadro-ch .et{margin-top:3px}
.cuadro-ch-txt{min-width:0;position:relative;z-index:1}
.cuadro-ch .ic{width:38px;height:38px;flex:0 0 auto}
/* Sin icono gigante al fondo: en un renglón de 70 px de alto no es textura,
   es un garabato encima del nombre. */
.cuadro-ch .marca{display:none}
.cuadro-ch .llave{top:50%;right:16px;transform:translateY(-50%);padding:5px}

.llave{position:absolute;top:24px;right:24px;color:var(--avisa);background:var(--avisa-bg2);
  border:1px solid var(--avisa-borde);border-radius:999px;padding:6px;display:grid;place-items:center}

/* ── Tarjetas ───────────────────────────────────────────── */
.tarjeta{position:relative;background:var(--panel);border:1px solid var(--linea);
  border-radius:var(--r-gr);box-shadow:var(--sombra);overflow:hidden;margin-bottom:18px}
.tarjeta-cab{background:var(--tono-grad);color:#fff;padding:12px 18px;
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.tarjeta-cab .que{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.tarjeta-cab .dato{font-family:var(--mono);font-size:12.5px;opacity:.9}
.tarjeta-cuerpo{padding:22px 18px}

/* ── Campos ─────────────────────────────────────────────── */
.campo-et{display:block;font-size:10.5px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--suave);margin-bottom:8px}
.campo-in{width:100%;font-family:var(--txt);font-size:16px;font-weight:600;color:var(--tinta);
  background:var(--hueco);border:1px solid var(--linea);border-radius:var(--r-md);
  padding:13px 15px;outline:none;transition:.15s}
.campo-in:focus{background:var(--panel);border-color:var(--tono-2);
  box-shadow:0 0 0 4px rgba(var(--tono-rgb),.12)}
.campo-in.mono{font-family:var(--mono);font-size:15px}
.campo-mal{display:block;font-size:13px;color:var(--mal);margin-top:7px}
.campo-in.mal{background:var(--mal-bg);border-color:var(--mal-borde)}
.ayuda{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--suave);margin-top:7px}
.ayuda .chispa{color:var(--tono-1)}

/* el campo de pregunta: aquí la pregunta es el dato */
.campo-nota{position:relative}
.campo-nota .ic{position:absolute;left:17px;top:50px;color:var(--tono-1);
  width:26px;height:26px;pointer-events:none}
textarea.campo-in.nota{min-height:112px;resize:vertical;font-family:var(--nota);
  font-size:clamp(18px,2.6vw,21px);line-height:1.5;font-weight:400;
  letter-spacing:-.01em;padding:18px 18px 18px 56px}
textarea.campo-in.nota::placeholder{color:var(--tenue)}
.campo-nota-pie{display:flex;justify-content:space-between;gap:12px;
  margin-top:10px;font-size:13.5px;color:var(--suave)}
.campo-nota-pie .cuenta{font-family:var(--mono);color:var(--tenue)}

/* ── Botones ────────────────────────────────────────────── */
.acciones{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:14px 24px;
  font-size:17px;font-weight:700;font-family:var(--txt);border:1px solid transparent;
  cursor:pointer;transition:.15s;text-decoration:none}
.btn-color{background:var(--tono-1);color:#fff;box-shadow:0 4px 14px rgba(var(--tono-rgb),.25)}
.btn-color:hover{background:var(--tono-hondo)}
.btn-color[disabled]{opacity:.5;cursor:progress}
.btn-liso{background:var(--panel);color:var(--tinta);border-color:var(--linea-alta)}
.btn-liso:hover{background:var(--hueco)}
.mini{border-radius:999px;padding:8px 15px;font-size:13.5px;font-weight:700;
  font-family:var(--txt);cursor:pointer;transition:.15s;border:1px solid;
  background:var(--panel);border-color:var(--linea);color:var(--tinta)}
.mini:hover{border-color:var(--tono-borde);background:var(--hueco)}
.mini.si{background:var(--avisa);color:#fff;border-color:var(--avisa)}
.mini.no{background:#fff;color:var(--avisa-txt);border-color:var(--avisa-borde)}

/* ── Respuesta ──────────────────────────────────────────── */
.cita{font-family:var(--nota);font-size:clamp(17px,2.2vw,19.5px);line-height:1.66;
  color:var(--tinta);border-left:4px solid var(--tono-2);padding-left:18px}
.ref{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px}
.ref .fuente{font-family:var(--mono);font-size:14px;color:var(--tono-hondo);
  background:var(--tono-suave);border:1px solid var(--tono-borde);border-radius:999px;padding:4px 11px}
.ref .fecha{font-family:var(--mono);font-size:14px;color:var(--suave)}
.sello{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:4px 10px}
.sello.vigente{color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-borde)}
.divisor{height:1px;background:var(--linea);margin:20px 0}
.resumen{font-family:var(--lectura);font-size:18.5px;line-height:1.62;color:var(--tinta)}

/* ── Avisos (el ámbar, con su fecha o su motivo detrás) ─── */
.alerta-vence,.panel-aviso{display:flex;gap:11px;align-items:flex-start;
  background:var(--avisa-bg2);border:1px solid var(--avisa-borde);
  border-left:3px solid var(--avisa);border-radius:var(--r-ch);padding:12px 14px;margin-top:14px}
.alerta-vence>svg,.panel-aviso>svg{flex:0 0 auto;color:var(--avisa);margin-top:2px}
.alerta-vence p,.panel-aviso p{font-size:14.5px;line-height:1.55;color:var(--avisa-txt)}
.panel-aviso h3{font-size:15.5px;font-weight:800;color:var(--avisa-txt);margin-bottom:5px}
.alerta-vence b,.panel-aviso b{font-family:var(--mono);font-weight:700}
.aviso-botones{display:flex;gap:9px;margin-top:13px;flex-wrap:wrap}
.panel-mal{background:var(--mal-bg);border:1px solid var(--mal-borde);border-left:3px solid var(--mal);
  border-radius:var(--r-ch);padding:12px 14px;font-size:14.5px;color:var(--mal);margin-top:14px}

/* ── Zona de soltar ─────────────────────────────────────── */
.soltar{position:relative;overflow:hidden;background:var(--panel);
  border:2px dashed var(--tono-borde);border-radius:var(--r-gr);
  padding:38px 24px;text-align:center;cursor:pointer;transition:.2s}
.soltar::after{content:"";position:absolute;inset:0;z-index:0;opacity:.5;
  background-image:radial-gradient(circle at 1px 1px,var(--tono-suave) 1px,transparent 0);
  background-size:16px 16px;
  -webkit-mask-image:radial-gradient(circle at 50% 40%,#000 0%,transparent 72%);
  mask-image:radial-gradient(circle at 50% 40%,#000 0%,transparent 72%)}
.soltar>*{position:relative;z-index:1}
.soltar:hover,.soltar.encima{border-color:var(--tono-2);background:#fff;box-shadow:var(--sombra-alta)}
.soltar .ic{width:60px;height:60px;margin:0 auto 16px;border-radius:var(--r-md);
  background:var(--tono-grad);color:#fff;display:grid;place-items:center;
  box-shadow:0 6px 18px rgba(var(--tono-rgb),.28)}
.soltar h2{font-size:28px;font-weight:800;letter-spacing:-.025em;margin-bottom:8px}
.soltar p{font-size:15.5px;color:var(--suave);line-height:1.55}
.formatos{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-top:16px}
.fmt{font-family:var(--mono);font-size:11.5px;color:var(--tono-hondo);background:var(--tono-suave);
  border:1px solid var(--tono-borde);border-radius:999px;padding:4px 11px}
.fmt.mejor{background:var(--tono-1);color:#fff;border-color:var(--tono-1)}

/* ── Cifras ─────────────────────────────────────────────── */
.cifras{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}
.cifra{background:var(--hueco);border:1px solid var(--linea);border-radius:var(--r-md);padding:14px 13px}
.cifra .n{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1;
  background:var(--tono-grad-txt);-webkit-background-clip:text;background-clip:text;
  color:transparent;padding-right:.08em;margin-right:-.08em}
.cifra .q{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--suave);margin-top:7px;line-height:1.35}

/* ── Niveles de acceso ──────────────────────────────────── */
.niveles{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.niveles.dos{grid-template-columns:repeat(2,1fr)}
.niv{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r-md);
  padding:13px 11px;cursor:pointer;text-align:left;font-family:var(--txt);transition:.15s}
.niv:hover{border-color:var(--tono-borde);background:var(--hueco)}
.niv .num{display:block;font-family:var(--mono);font-size:11.5px;color:var(--tenue)}
.niv .nom{display:block;font-size:14.5px;font-weight:700;margin-top:5px;line-height:1.25}
.niv.puesto{background:var(--tono-suave);border-color:var(--tono-1);
  box-shadow:0 0 0 3px rgba(var(--tono-rgb),.13)}
.niv.puesto .num{color:var(--tono-1)}
.niv.puesto .nom{color:var(--tono-hondo)}

/* ── Listas ─────────────────────────────────────────────── */
.sugerencias{display:flex;flex-direction:column;gap:8px}
.sug{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:var(--panel);
  border:1px solid var(--linea);border-radius:999px;padding:14px 20px;font-family:var(--txt);
  font-size:15.5px;color:var(--tinta);line-height:1.4;cursor:pointer;transition:.15s}
.sug:hover{border-color:var(--tono-borde);background:var(--hueco);transform:translateX(2px)}
.sug svg{flex:0 0 auto;color:var(--tono-1)}
.recientes{display:grid;gap:9px}
.rec{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--linea);
  border-radius:var(--r-md);padding:13px 15px}
.rec .pt{width:8px;height:8px;border-radius:50%;background:var(--tono-2);flex:0 0 auto}
.rec .t{font-size:15px;font-weight:700}
.rec .m{font-family:var(--mono);font-size:11.5px;color:var(--tenue);margin-top:2px}
.rec .niv-eti{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--tono-hondo);
  background:var(--tono-suave);border:1px solid var(--tono-borde);border-radius:999px;
  padding:4px 10px;white-space:nowrap}

/* El renglón se abre para corregir. En vez de una pantalla aparte, el
   formulario cae debajo del propio documento: así se ve qué se está tocando
   sin tener que acordarse de cuál era. El renglón pasa a rejilla porque el
   formulario ocupa toda la anchura y en fila se metía entre el título y la
   etiqueta de nivel. */
.rec{flex-wrap:wrap}
.rec-datos{min-width:0;flex:1 1 auto}
/* El <details> es el que abre. Cerrado ocupa lo que el botón; abierto se
   queda con el renglón entero para el formulario. */
.rec-editor{flex:0 0 auto;min-width:0}
.rec-editor[open]{flex:1 1 100%}
.rec-editor > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center}
.rec-editor > summary::-webkit-details-marker{display:none}
.rec-editor[open] > summary{margin-bottom:2px}
.rec-editor[open]{border-top:1px solid transparent}
.rec:has(.rec-editor[open]){border-color:var(--tono-borde);box-shadow:var(--sombra)}
.rec-forma{margin-top:12px;padding-top:13px;border-top:1px solid var(--linea);
  animation:panel-entra .2s ease-out}
.rec-forma .campo-arriba{margin-top:12px}
.rec-forma .acciones{display:flex;gap:9px;margin-top:14px}
.rec-forma .niv{padding:9px 10px}
.rec-aviso:not(:empty){margin-top:12px}
@media (max-width:560px){
  .rec-forma .acciones{flex-direction:column}
  .rec-forma .acciones .btn{width:100%;justify-content:center}
}

/* ── La biblioteca: la lista de lo subido ────────────────────────────────────
   Vivía en `.subir-lado`, la columna de 320 px. Con cien documentos era
   inservible y Óscar lo dijo con esas palabras. Ahora ocupa el ancho entero
   debajo de la zona de subida, y la columna estrecha se queda solo con el
   panel de etiquetas, que sí cabe.

   OJO CON LOS NOMBRES: `.rec-eti` y no `.marca-eti`. Ya existe `.marca` —el
   icono gigante del fondo de los cuadros de la portada— y ya pasó una vez que
   una clase nueva llamada así se comiera aquello. Todo lo de aquí lleva el
   prefijo de su sitio. */
.biblioteca{margin-top:38px}
.biblio-cab{display:flex;align-items:center;gap:10px}
.biblio-cab .et-seccion{margin:0}
.biblio-total{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--tono-1);
  background:var(--tono-suave);border:1px solid var(--tono-borde);border-radius:999px;
  padding:3px 9px;line-height:1}

.biblio-barra{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0 12px}
.biblio-buscar{display:flex;align-items:center;gap:9px;flex:1 1 260px;min-width:0;
  background:var(--panel);border:1px solid var(--linea);border-radius:999px;padding:0 16px}
.biblio-buscar:focus-within{border-color:var(--tono-1)}
.biblio-buscar svg{flex:0 0 auto;color:var(--tenue)}
.biblio-buscar:focus-within svg{color:var(--tono-1)}
.biblio-buscar input{flex:1 1 auto;min-width:0;border:0;outline:none;background:none;
  font-family:var(--txt);font-size:15px;color:var(--tinta);padding:12px 0}
.biblio-buscar input::-webkit-search-cancel-button{cursor:pointer}
.biblio-cuenta{font-family:var(--mono);font-size:12px;color:var(--tenue);margin-left:auto}
.biblio-todos{flex:0 0 auto}
.biblio-nada{color:var(--suave);font-size:15px;padding:22px 2px}

/* La casilla de selección. Grande a propósito: se van a marcar decenas
   seguidas y un cuadradito de 13 px se falla con el dedo. */
/* Pegada arriba y no al centro: el renglón creció con las etiquetas debajo
   del título, y una casilla centrada quedaba a la altura de la fecha, lejos
   del nombre que en realidad se está marcando. */
.rec-sel{flex:0 0 auto;display:inline-flex;align-self:flex-start;margin-top:3px;
  cursor:pointer;padding:2px}
.rec-check{width:18px;height:18px;accent-color:var(--tono-1);cursor:pointer;margin:0}
.rec:has(.rec-check:checked){border-color:var(--tono-borde);background:var(--tono-suave)}

/* Las etiquetas puestas, visibles sin abrir el renglón. No se pulsan: son
   una lectura. Por eso no llevan el aspecto de botón de `.eti`. */
.rec-marcas{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.rec-eti{font-size:11px;font-weight:700;line-height:1;padding:4px 8px;border-radius:6px;
  color:var(--tono-hondo);background:var(--tono-suave);border:1px solid var(--tono-borde)}
.rec-eti-sin{color:var(--tenue);background:var(--hueco);border-color:var(--linea)}

/* La barra del lote. Pegada al fondo mientras se baja por la lista: con cien
   renglones, marcar arriba y tener que volver arriba para aplicar sería peor
   que ir de uno en uno. */
.lote{position:sticky;bottom:14px;z-index:5;display:flex;flex-wrap:wrap;align-items:center;
  gap:10px;margin:12px 0;padding:12px 16px;background:var(--panel);
  border:1px solid var(--tono-borde);border-radius:999px;box-shadow:var(--sombra-alta)}
.lote-n{font-size:14px;font-weight:700;color:var(--tinta);white-space:nowrap}
.lote-n b{font-family:var(--mono);color:var(--tono-1)}
.lote .campo-in.lote-eti{flex:0 1 auto;width:auto;min-width:170px;padding:9px 12px;
  font-size:14px;border-radius:999px}
.lote .btn{padding:9px 18px;font-size:13.5px}
.lote-aviso{flex:1 1 100%;font-size:13px;color:var(--suave);line-height:1.4}
.lote-aviso:empty{display:none}

@media (max-width:639px){
  .lote{border-radius:var(--r-md);bottom:8px}
  .lote .btn,.lote .campo-in.lote-eti{flex:1 1 auto;justify-content:center}
  .biblio-cuenta{margin-left:0}
}

/* ── Discursos: el guion y su bosquejo ───────────────────────────────────────
   OJO CON LOS NOMBRES. Esto se llamó `.pestanas` y `.pest` durante media hora
   y no pintaba nada: esas dos clases YA EXISTEN más abajo en esta hoja, en el
   control de dos columnas con guía deslizante, y al estar después ganaban. Se
   vio mirando los estilos calculados, no leyendo el CSS. Todo lo de aquí lleva
   el prefijo `guion-`.
   Dos pestañas sobre el mismo trabajo. «El discurso» es lo que se lee en la
   plataforma; «El bosquejo» es la versión corta para repasar. No son dos
   documentos: uno es el índice del otro.

   EL GUION SE LEE DE PIE, A UN METRO DE DISTANCIA. Por eso va más grande que
   cualquier otro texto del sitio y con el renglón muy suelto: perder la línea
   a media frase delante de la congregación es el fallo que hay que evitar. */
.guion-pes{display:flex;align-items:center;gap:8px;margin:26px 0 16px}
.guion-pes-b{background:var(--panel);border:1px solid var(--linea);border-radius:999px;
  padding:9px 18px;cursor:pointer;font-family:var(--txt);font-size:14px;font-weight:700;
  color:var(--suave);transition:.16s}
.guion-pes-b:hover{border-color:var(--tono-borde);color:var(--tono-1)}
.guion-pes-b.puesta{background:var(--tono-suave);border-color:var(--tono-borde);color:var(--tono-hondo)}
.guion-dato{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--tenue)}
.guion-pes .mini{flex:0 0 auto;padding:7px 14px;font-size:13px}

/* La barra de tramos. Se enseña mientras escribe y se apaga al terminar: una
   barra al 100% que se queda ahí para siempre solo ocupa sitio. */
.guion-progreso{margin-bottom:18px;transition:opacity .4s}
.guion-progreso.acabado{opacity:.45}
.guion-barra{height:4px;background:var(--hueco);border-radius:999px;overflow:hidden}
.guion-barra i{display:block;height:100%;width:0;border-radius:999px;
  background:var(--tono-grad);transition:width .5s ease-out}
.guion-paso{margin-top:8px;font-family:var(--mono);font-size:12px;color:var(--suave)}

.guion{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r-md);
  padding:26px 26px 22px;box-shadow:var(--sombra)}
.guion-tramo{margin-bottom:26px}
.guion-tramo:last-child{margin-bottom:0}
.guion-tramo > .rotulo{margin-bottom:14px}
.guion-parrafo{font-family:var(--lectura);font-size:clamp(17px,2.3vw,20px);line-height:1.75;
  color:var(--tinta);margin-bottom:15px}
/* En la demostración, el nombre en su propio renglón visual: buscar quién
   habla a mitad de un párrafo, ensayando, es justo lo que no se puede pedir. */
.guion-turno{font-family:var(--lectura);font-size:clamp(16.5px,2.2vw,19px);line-height:1.7;
  color:var(--tinta);margin-bottom:14px;padding-left:16px;
  border-left:2px solid var(--tono-borde)}
.guion-turno b{color:var(--tono-hondo)}
.guion-fallo .panel-mal{display:flex;flex-wrap:wrap;align-items:center;gap:10px}

/* El bosquejo: telegráfico, y por eso mismo apretado. */
.bosq-ind{font-size:15.5px;color:var(--suave);line-height:1.6;margin-bottom:18px}
.bosq-puntos{list-style:none;margin:0 0 18px;padding:0}
.bosq-punto{padding:14px 0;border-bottom:1px solid var(--linea)}
.bosq-punto:last-child{border-bottom:0}
.bosq-t{font-size:16px;font-weight:700;display:flex;align-items:baseline;gap:10px}
.bosq-n{font-family:var(--mono);font-size:11.5px;color:var(--tenue)}
.bosq-min{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--tenue)}
.bosq-razon{margin-top:6px;font-size:15px;line-height:1.55;color:var(--suave)}
.bosq-apl{margin-top:5px;font-size:14.5px;line-height:1.5;color:var(--tono-hondo)}
.bosq-v{display:inline-block;margin-top:8px;font-family:var(--mono);font-size:13px;
  color:var(--tono-1);text-decoration:none;border-bottom:1px dotted var(--tono-borde)}
.bosq-frase{font-family:var(--nota);font-style:italic;font-size:14.5px;color:var(--suave)}
.bosq-fuentes{margin-top:7px;font-family:var(--mono);font-size:12px;color:var(--tenue)}
/* Un punto sin respaldo NO se esconde: se da igual, pero marcado. Que se vea
   distinto es lo único que impide que acabe en la plataforma sin revisar. */
.bosq-punto.sin-respaldo{border-left:3px solid var(--avisa);padding-left:13px;
  margin-left:-16px;background:var(--avisa-bg2)}
.bosq-sin{margin-top:7px;font-size:12.5px;font-weight:700;color:var(--avisa-txt)}
.bosq-decisiones{margin:0;padding-left:20px;font-size:14.5px;line-height:1.65;color:var(--suave)}
.bosq-decisiones li{margin-bottom:6px}

/* La zona de soltar del bosquejo asignado: la misma de Subir, más baja. */
.soltar-chico{padding:22px 18px;margin-bottom:0}
.soltar-chico .ic{width:44px;height:44px;margin-bottom:10px}
.soltar-chico p{font-size:14.5px}
.soltar.encima{border-color:var(--tono-1);background:var(--tono-suave)}

@media (max-width:639px){
  .guion{padding:18px 16px 16px}
  .guion-pes{flex-wrap:wrap}
  .guion-dato{margin-left:0;order:9;flex:1 1 100%}
}

/* ── Perlas escondidas ───────────────────────────────────────────────────────
   CASI TODO SE HEREDA DEL BUSCADOR. Esta pantalla usa `.pliego`, `.hallado`,
   `.hallado-caja`, `.rotulo`, `.resumen` y `.ref`: la misma letra, los mismos
   tamaños y el mismo papel. Nació con un juego propio de `.perla-*` y quedaba
   como otro sitio dentro del mismo sitio; se borró entero.

   Aquí abajo solo queda lo que de verdad NO existe en el buscador. Si algo se
   puede quitar de esta lista reutilizando una clase de allí, quítalo. */

/* Los tres selectores del pasaje. El libro se lleva el doble: «El Cantar de
   los Cantares» no cabe en un tercio, y los capítulos son dos dígitos. */
.perlas-fila{display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:640px){
  .perlas-fila{grid-template-columns:2fr 1fr 1fr;gap:14px}
}

/* EL PASAJE ES EL DATO DE ESTA PANTALLA, igual que la pregunta lo es en el
   buscador. Con la letra de un formulario cualquiera no lo parecía: se leía
   como tres campos de trámite. Ahora el libro va grande y el número de
   capítulo en monoespaciada y más grande todavía — un número que se compara
   de un vistazo se lee mejor en mono, y aquí se comparan dos.

   La flecha del <select> se dibuja aquí en vez de dejar la del sistema: la de
   macOS es diminuta al lado de este cuerpo y desequilibraba el campo. Va como
   fondo SVG en data: porque la CSP no deja traerla de fuera. */
.perlas-fila .campo-in{
  appearance:none;-webkit-appearance:none;
  font-size:19px;font-weight:700;padding:15px 40px 15px 16px;line-height:1.25;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%234338CA' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;
  cursor:pointer}
.perlas-fila .campo-in.mono{font-size:22px;letter-spacing:.04em;text-align:center;
  padding-left:16px}
.perlas-fila .campo-et{font-size:11px}

@media (max-width:639px){
  .perlas-fila .campo-in{font-size:17px;padding:13px 36px 13px 14px}
  .perlas-fila .campo-in.mono{font-size:19px}
}

/* EL VERSÍCULO, ARRIBA DEL TODO. Es lo primero que se lee de cada perla, y va
   con `.cita` —la misma comilla del buscador— porque es exactamente lo mismo:
   un pasaje citado. Solo sube de cuerpo y se separa del punto que viene
   debajo. Sale de la Biblia subida (app/Biblia.php); si no se pudo localizar,
   el bloque simplemente empieza por el punto.
   Va en su propio bloque de color —el índigo suave de la identidad— y con la
   serif de las citas (--nota), para que se distinga a un golpe de vista qué es
   texto bíblico y qué es comentario. La referencia va DENTRO del bloque, con
   el versículo, que es donde se busca al leerlo. Óscar lo pidió así. */
.perla-bib{background:var(--tono-suave);border:1px solid var(--tono-borde);
  border-left:4px solid var(--tono-1);border-radius:var(--r-ch);
  padding:18px 20px 15px;margin-bottom:20px}
.perla-bib-t{font-family:var(--nota);font-size:clamp(20px,2.8vw,23px);
  line-height:1.6;color:var(--tono-hondo)}
.perla-bib-c{display:block;margin-top:11px;font-family:var(--mono);
  font-size:13px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--tono-1)}

/* La referencia de la esquina (arriba a la derecha del número), más presente:
   a 12 px clarita costaba encontrarla. */
.hallado .rotulo-dato.perla-ref{font-size:15.5px;font-weight:800;
  color:var(--tono-hondo)}

/* El punto, un punto por encima del resumen del buscador: aquí es lo único
   que hay, no acompaña a una lista de citas. */
.perla-caja .resumen{font-size:19.5px;line-height:1.62}

/* Las dos etiquetas de la lección, debajo del punto.
   Estuvieron a 16.5 px y se leían como una nota al pie; Óscar lo dijo, «están
   muy chicos». No son una nota: la lección y su aplicación son la mitad del
   trabajo — el detalle sin lección es un dato curioso. Ahora van casi al
   mismo cuerpo que el punto y con la letra de lectura, solo medio tono más
   claras para que se siga viendo cuál es cuál. */
.perla-lec{margin-top:14px;font-family:var(--lectura);font-size:19px;
  line-height:1.65;color:#475569}
.perla-lec b{color:var(--tono-hondo);font-weight:700}

/* LA FUENTE ES LO QUE SE VA A COMPROBAR, así que tiene que leerse.
   Heredada del buscador iba a 14 px en mono y clarita, y ahí es una etiqueta
   más entre muchas; aquí es el único dato duro de la perla. Sube de cuerpo,
   engorda y se le marca el borde. */
.perla-caja .ref{gap:9px;margin-top:18px}
.perla-caja .ref .fuente{font-size:15.5px;font-weight:600;letter-spacing:-.01em;
  color:var(--tono-hondo);background:var(--tono-suave);
  border:1.5px solid var(--tono-2);padding:6px 13px}
.perla-caja .ref .bajar{font-size:14.5px}

@media (max-width:639px){
  .perla-caja .resumen{font-size:18px}
  .perla-lec{font-size:17.5px}
  .perla-caja .ref .fuente{font-size:14.5px}
}

/* Una perla sin respaldo NO se esconde: se da igual, pero marcada. Que se vea
   distinta es lo único que impide que se comente en la reunión sin comprobar. */
.hallado-caja.sin-respaldo{border-left:3px solid var(--avisa);background:var(--avisa-bg2)}
.sello.sin{color:var(--avisa-txt);background:var(--avisa-bg);border:1px solid var(--avisa-borde)}

/* «PARA HACER ESTA SEMANA» NO ES UNA ETIQUETA MÁS. Es lo único de la pantalla
   que pide una acción, y a 10 px se perdía entre los demás rótulos: se leía
   como el pie de otro bloque. Aquí rompe deliberadamente la escala de
   `.rotulo` —cuerpo de titular, letra del sitio y tinta índigo— para que al
   bajar la página el ojo se pare ahí antes que en nada. La regla de la
   derecha se engorda a 2 px para que acompañe al cuerpo nuevo. */
.hallado > .rotulo.rotulo-semana{
  font-family:var(--txt);font-size:clamp(25px,4.6vw,32px);font-weight:800;
  letter-spacing:-.02em;line-height:1.1;color:var(--tono-hondo);
  flex-wrap:wrap;gap:14px;margin-bottom:20px}
/* `.rotulo > span` es `flex:0 0 auto` —una etiqueta de 10 px nunca estorba—,
   pero a 32 px «PARA HACER ESTA SEMANA» no cabe en 390 px y se salía de la
   pantalla. Aquí sí puede encoger y partirse en dos renglones. */
.rotulo.rotulo-semana > span{flex:0 1 auto;min-width:0}
.rotulo-semana i{height:2px;min-width:24px;background:linear-gradient(90deg,
  var(--tono-2) 0%, var(--tono-borde) 45%, transparent 100%)}

@media (max-width:639px){
  /* En el teléfono la regla se baja a su propio renglón: al lado del titular
     se quedaba en un guion de tres píxeles. */
  .hallado > .rotulo.rotulo-semana{gap:9px;font-size:clamp(23px,6.4vw,27px)}
  .rotulo.rotulo-semana > span{flex:1 1 100%}
  .rotulo-semana i{flex:1 1 100%}
}

.perlas-practicas{margin:0;padding-left:22px;font-family:var(--lectura);
  font-size:17.5px;line-height:1.7;color:var(--tinta)}
.perlas-practicas li{margin-bottom:10px}
.perlas-practicas li:last-child{margin-bottom:0}

/* La lista de la semana y el monito, hombro con hombro. El monito va a la
   DERECHA por una razón concreta: su pulgar está dibujado en el lado
   izquierdo del SVG, así que puesto ahí la mano apunta hacia la lista. Al
   revés señalaría el margen.
   `align-items:flex-end` lo apoya en la última línea: colgando del centro
   flotaba encima de una lista de dos renglones. */
.semana-fila{display:flex;align-items:flex-end;gap:18px}
.semana-fila .perlas-practicas{flex:1 1 auto;min-width:0}
.semana-fila .monito{flex:0 0 auto;width:116px;height:116px;cursor:default;
  margin-bottom:-6px}

@media (max-width:639px){
  /* En el teléfono NO se esconde —es lo que hace que el bloque se note— pero
     se achica y baja a su propia línea, a la derecha, para no comerle el
     ancho a la lista. */
  .semana-fila{flex-wrap:wrap;gap:6px}
  .semana-fila .perlas-practicas{flex:1 1 100%}
  .semana-fila .monito{width:84px;height:84px;margin-left:auto}
}

.perlas-bloque .bosq-decisiones{font-size:16px;line-height:1.7}

/* ── Ayudante ───────────────────────────────────────────── */
.presenta{display:flex;gap:16px;align-items:flex-start}
.monito{flex:0 0 auto;width:88px;height:88px;animation:flotar 4.5s ease-in-out infinite}
.globo{flex:1 1 auto;position:relative;background:var(--hueco);border:1px solid var(--linea);
  border-radius:var(--r-md);padding:14px 16px}
.globo::before{content:"";position:absolute;left:-7px;top:26px;width:12px;height:12px;
  background:var(--hueco);border-left:1px solid var(--linea);border-bottom:1px solid var(--linea);
  transform:rotate(45deg)}
.globo .hola{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--suave);margin-bottom:6px}
.globo .dice{font-family:var(--dice);font-size:16.5px;line-height:1.55;color:var(--tinta)}
@keyframes flotar{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes parpadeo{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}}
@keyframes cinta{0%,100%{transform:rotate(0)}50%{transform:rotate(6deg)}}
.ojo{transform-box:fill-box;transform-origin:center;animation:parpadeo 5.2s ease-in-out infinite}
.ojo.der{animation-delay:.08s}
.cinta{transform-box:fill-box;transform-origin:top center;animation:cinta 3.4s ease-in-out infinite}

/* ── Estados ────────────────────────────────────────────── */
.oculto{display:none!important}
.cargando{display:flex;align-items:center;gap:11px;font-size:15.5px;color:var(--suave);
  padding:22px 0}
.girito{width:20px;height:20px;border:2.5px solid var(--tono-suave);border-top-color:var(--tono-1);
  border-radius:50%;animation:gira .8s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
.vacio p{font-size:16px;line-height:1.6;color:var(--suave)}
.vacio p+p{margin-top:10px}
.vacio strong{color:var(--tinta)}
.nota-pie{font-size:13px;color:var(--suave);line-height:1.6;margin-top:28px;
  padding-top:18px;border-top:1px solid var(--linea)}

/* ── Entrada ────────────────────────────────────────────── */
.entrada{max-width:420px;margin:8vh auto 0}
.entrada .tarjeta-cuerpo{padding:26px 22px}
.entrada .campo+.campo{margin-top:16px}

/* Franja intermedia (tableta en vertical, ventana a medias). Dos columnas
   CABEN, pero no deben: con 340 px por tarjeta el monito se le monta encima
   a la línea de datos — se vio en una captura a 700 px, «17,162 fragmentos»
   con la lupa dentro. Una sola columna deja la tarjeta ancha y baja, que es
   la forma en la que texto y dibujo conviven sin pelearse.
   Debajo de 561 px manda el bloque de móvil, que además quita el dibujo. */
@media (max-width:767px){
  .cuadros{grid-template-columns:1fr}
}
@media (min-width:561px) and (max-width:767px){
  .cuadro-gr{min-height:212px;padding:22px 22px 20px}
  .cuadro-gr h2{font-size:30px}
  .cuadro-gr p{max-width:36ch}
  .cuadro-arte .monito,.cuadro-arte .joya{width:112px;height:112px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .cuadro:hover,.sug:hover{transform:none}
  /* Sin movimiento, la pista tiene que verse siempre o no se ve nunca. */
  .cuadro-ir{opacity:1;transform:none}
}
@media (max-width:560px){
  /* En el teléfono no hay dos columnas que valgan: todo en una, y el arte
     del cuadro grande se va — a 375 px o cabe él o cabe el texto. Y la
     pista de «entra por aquí» se queda fija: sin cursor no hay hover que la
     despierte, y escondida no la vería nadie. */
  .cuadros{grid-template-columns:1fr;grid-template-rows:auto;gap:12px}
  .cuadro-gr{padding:20px;min-height:0}
  .cuadro-gr p{max-width:none}
  .cuadro-gr h2{font-size:30px}
  .cuadro-arte{display:none}
  .cuadro-ir{opacity:1;transform:none;margin-top:14px}
  .cuadro-ch{padding:14px 16px}
  .cuadro .ic{width:38px;height:38px}
  .marca{width:112px;height:112px;right:-20px;bottom:-22px}
  .llave{top:16px;right:16px}
  .saludo .fila{flex-direction:column;gap:8px}
  .cifras{grid-template-columns:1fr;gap:9px}
  .cifra{display:flex;align-items:baseline;gap:12px}
  .cifra .q{margin-top:0}
  .niveles{grid-template-columns:1fr}
  .acciones .btn{flex:1 1 auto;justify-content:center}
  .tarjeta-cuerpo{padding:18px 15px}
  .soltar{padding:30px 18px}
  textarea.campo-in.nota{padding-left:48px}
  .campo-nota .ic{left:14px;width:22px;height:22px}
  .monito{width:70px;height:70px}
  .sug{font-size:15px;padding:12px 16px}
}

.et-seccion.pegada{margin:0 0 8px}

/* ── Entrada sin contraseñas ─────────────────────────────── */
.btn-ancho{width:100%;justify-content:center}
.ayuda-centro{justify-content:center;text-align:center;margin-top:11px}
.ayuda-suelta{margin-top:16px;display:block}
.campo-arriba{margin-top:18px}

.separador{display:flex;align-items:center;gap:12px;margin:22px 0;
  font-size:12.5px;color:var(--tenue);font-family:var(--mono)}
.separador::before,.separador::after{content:"";flex:1;height:1px;background:var(--linea)}

.resumen-plegable{display:inline-flex;align-items:center;gap:9px;cursor:pointer;
  font-size:15px;font-weight:700;color:var(--tono-1);list-style:none;
  padding:10px 0;user-select:none}
.resumen-plegable::-webkit-details-marker{display:none}
.resumen-plegable:hover{color:var(--tono-hondo)}
details[open] .resumen-plegable{margin-bottom:8px}

.campo-in.grande{font-family:var(--mono);font-size:28px;font-weight:700;
  letter-spacing:.22em;text-align:center;padding:16px 12px}
.campo-in.grande::placeholder{color:var(--tenue);letter-spacing:.22em}
.campo-in.mayus{text-transform:uppercase;letter-spacing:.14em;font-size:24px}

.panel-bien{background:var(--ok-bg);border:1px solid var(--ok-borde);
  border-left:3px solid var(--ok);border-radius:var(--r-ch);
  padding:12px 14px;font-size:14.5px;color:var(--ok);margin-top:14px}

/* ── Autenticador ────────────────────────────────────────── */
.qr-caja{display:flex;justify-content:center;padding:18px;background:#fff;
  border:1px solid var(--linea);border-radius:var(--r-md);margin-top:6px}
.qr-caja svg{display:block;border-radius:6px}
.secreto{font-family:var(--mono);font-size:17px;font-weight:700;letter-spacing:.12em;
  color:var(--tono-hondo);background:var(--tono-suave);border:1px solid var(--tono-borde);
  border-radius:var(--r-md);padding:14px 16px;word-break:break-all;line-height:1.7}
.secreto-grande{font-size:26px;letter-spacing:.2em;text-align:center}
.a-mano{margin-top:14px}

@media (max-width:560px){
  .campo-in.grande{font-size:24px;letter-spacing:.16em}
  .campo-in.mayus{font-size:20px}
  .secreto-grande{font-size:21px}
}

/* ═══════════════════════════════════════════════════════════
   LA PUERTA — pantalla de entrada
   Una tarjeta, la firma en horizontal y dos pestañas. La altura
   no salta al cambiar de método: el panel se sustituye dentro
   del mismo hueco.
   ═══════════════════════════════════════════════════════════ */
.puerta{max-width:470px;margin:0 auto;padding-top:7vh}

.portal{background:var(--panel);border:1px solid var(--linea);border-radius:20px;
  box-shadow:var(--sombra-alta);overflow:hidden}
.portal-filo{height:5px;background:var(--tono-grad)}
.portal-cuerpo{padding:26px 24px 24px}

/* ── La firma: gema + nombre, en horizontal ──────────────── */
.firma{display:flex;align-items:flex-start;gap:16px;margin-bottom:24px}
.gema{flex:0 0 auto;width:clamp(60px,15vw,76px);height:auto}
.firma-txt{min-width:0}
.marca-nombre{font-size:clamp(27px,6.6vw,36px);letter-spacing:-.03em;
  line-height:1.08;margin:2px 0 8px;text-wrap:balance}
.lema{color:var(--suave);font-size:14.5px;line-height:1.5}

/* Las tres caras respiran de brillo por turnos: el volumen se
   percibe porque cambian de tono, no porque haya sombras. */
.cara{opacity:0;animation:cara-sale .55s cubic-bezier(.16,1,.3,1) forwards}
.c1{animation-delay:.08s}
.c2{animation-delay:.20s}
.c3{animation-delay:.32s}
@keyframes cara-sale{from{opacity:0;transform:translateY(-6px)}
                     to  {opacity:1;transform:translateY(0)}}
.cara{transform-box:view-box}

/* la luz recorre la piedra cada seis segundos */
.lustre{animation:lustre-pasa 6s 1.2s ease-in-out infinite}
@keyframes lustre-pasa{0%,58%,100%{transform:translateX(0)}
                       84%        {transform:translateX(200px)}}

.filo{stroke-dasharray:250;stroke-dashoffset:250;
  animation:filo-traza 1.1s .1s cubic-bezier(.16,1,.3,1) forwards}
@keyframes filo-traza{to{stroke-dashoffset:0}}

/* ── Pestañas ────────────────────────────────────────────── */
.pestanas{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:0;
  background:var(--hueco);border:1px solid var(--linea);border-radius:999px;
  padding:4px;margin-bottom:20px}
.pest{position:relative;z-index:1;display:inline-flex;align-items:center;
  justify-content:center;gap:8px;padding:11px 8px;border:0;background:none;
  border-radius:999px;cursor:pointer;font-family:var(--txt);font-size:15px;
  font-weight:700;color:var(--suave);transition:color .22s}
.pest:hover{color:var(--tinta)}
.pest.activa{color:#fff}
.pest svg{flex:0 0 auto}

/* la guía se desliza por detrás en vez de encenderse de golpe */
.pest-guia{position:absolute;z-index:0;top:4px;left:4px;bottom:4px;
  width:calc(50% - 4px);border-radius:999px;background:var(--tono-grad);
  box-shadow:0 3px 10px rgba(var(--tono-rgb),.30);
  transition:transform .28s cubic-bezier(.32,.72,0,1)}
.pestanas.derecha .pest-guia{transform:translateX(100%)}

/* ── Paneles ─────────────────────────────────────────────── */
.panel{animation:panel-entra .3s ease-out}
@keyframes panel-entra{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.panel-dice{font-size:15.5px;line-height:1.55;color:var(--suave);margin-bottom:16px}
.panel .acciones{margin-top:0}
/* dentro del formulario sí hace falta aire: el botón venía pegado a la ayuda */
.panel form .acciones{margin-top:20px}

/* ── Pie ─────────────────────────────────────────────────── */
.puerta-pie{display:flex;flex-direction:column;gap:7px;margin-top:22px;
  text-align:center;font-size:13px;color:var(--suave);line-height:1.6}
.puerta-pie a{font-weight:700;text-decoration:none}
.puerta-pie a:hover{text-decoration:underline;text-underline-offset:3px}

@media (max-width:520px){
  .puerta{padding-top:3vh}
  .portal-cuerpo{padding:20px 17px 20px}
  .firma{gap:13px;margin-bottom:20px}
  .pest{font-size:14px;gap:6px}
}

@media (prefers-reduced-motion:reduce){
  .cara{opacity:1;animation:none}
  .lustre,.filo{animation:none}
  .filo{stroke-dashoffset:0}
  .panel{animation:none}
  .pest-guia{transition:none}
}

/* ═══════════════════════════════════════════════════════════
   LA BARRA — navegación con la sesión abierta
   ═══════════════════════════════════════════════════════════ */
.barra{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);
  backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);
  border-bottom:1px solid var(--linea)}
.barra-dentro{max-width:1160px;margin:0 auto;padding:10px 16px;
  display:flex;align-items:center;gap:14px}

.barra-marca{display:inline-flex;align-items:center;gap:9px;text-decoration:none;
  color:var(--tinta);flex:0 0 auto}
.barra-marca svg{width:26px;height:26px;flex:0 0 auto}
.barra-nombre{font-size:16px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}

/* los módulos solo en pantalla ancha: en el móvil ya están los cuadros */
.barra-nav{display:none;flex:1 1 auto;gap:2px;margin-left:10px}
.barra-enl{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;
  border-radius:999px;font-size:14.5px;font-weight:700;color:var(--suave);
  text-decoration:none;transition:.16s;white-space:nowrap}
.barra-enl:hover{color:var(--tinta);background:var(--hueco)}
.barra-enl.aqui{color:var(--tono-hondo);background:var(--tono-suave)}
.barra-enl.cerrado{color:var(--tenue);cursor:not-allowed}
.barra-enl.cerrado:hover{background:none;color:var(--tenue)}

/* ── El chip de la cuenta ────────────────────────────────── */
.barra-yo{position:relative;margin-left:auto;flex:0 0 auto}
.yo-chip{display:inline-flex;align-items:center;gap:9px;padding:5px 11px 5px 5px;
  background:var(--panel);border:1px solid var(--linea);border-radius:999px;
  cursor:pointer;font-family:var(--txt);color:var(--tinta);transition:.16s}
.yo-chip:hover,.yo-chip.abierto{border-color:var(--tono-borde);box-shadow:var(--sombra)}
.yo-inicial{width:28px;height:28px;border-radius:50%;background:var(--tono-grad);
  color:#fff;display:grid;place-items:center;font-size:14px;font-weight:800;flex:0 0 auto}
.yo-nombre{display:none;font-size:14.5px;font-weight:700}
.yo-punta{color:var(--tenue);transition:transform .2s}
.yo-chip.abierto .yo-punta{transform:rotate(180deg)}

.yo-menu{position:absolute;top:calc(100% + 9px);right:0;min-width:230px;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--r-md);
  box-shadow:var(--sombra-alta);padding:6px;animation:menu-cae .16s ease-out}
@keyframes menu-cae{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}

.yo-cabecera{padding:10px 12px 11px}
.yo-quien{font-size:15.5px;font-weight:800;letter-spacing:-.01em}
.yo-dato{font-family:var(--mono);font-size:11px;color:var(--suave);margin-top:3px}

.yo-op{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-ch);
  font-size:14.5px;font-weight:700;color:var(--tinta);text-decoration:none;transition:.14s}
.yo-op:hover{background:var(--hueco)}
.yo-op svg{color:var(--suave);flex:0 0 auto}
.yo-op:hover svg{color:var(--tono-1)}
.yo-salir{color:var(--mal)}
.yo-salir svg,.yo-salir:hover svg{color:var(--mal)}
.yo-salir:hover{background:var(--mal-bg)}
.yo-raya{height:1px;background:var(--linea);margin:5px 8px}

/* con barra, el contenido no arranca pegado al borde */
.barra + .envoltura{padding-top:26px}

/* ═══════════════════════════════════════════════════════════
   COMPUTADORA — el sitio deja de ser una columna de teléfono
   ═══════════════════════════════════════════════════════════ */
@media (min-width:768px){
  .barra-nav{display:flex}
  .yo-nombre{display:inline}
  body{padding:0 24px 70px}
  .envoltura{max-width:900px}
}

@media (min-width:1024px){
  .envoltura{max-width:1120px}

  /* Con más ancho los dos grandes respiran. Siguen midiendo lo mismo: en
     cuanto uno gana sitio deja de ser una pareja y vuelve a haber un módulo
     principal y otro de segunda, que es lo que se quitó. */
  .cuadros{gap:18px}
  .cuadro-gr{padding:32px 32px 26px;min-height:376px}
  .cuadro-arte .monito{width:150px;height:150px}
  .cuadro-arte .joya{width:146px;height:146px}

  /* El buscador ya no se parte en dos. Tenía al lado "lo último que se
     preguntó" y era ruido: aquí se viene a preguntar, no a mirar. Sin esa
     columna, lo que queda se centra y se le pone freno al ancho — una tarjeta
     de 1100 px de ancha no se lee, se recorre. */
  .buscar-suelto{max-width:860px;margin:0 auto}

  /* El texto largo no se estira: pasados los 70 caracteres por línea
     el ojo pierde el renglón al volver. */
  .cita,.resumen,.panel-dice,.vacio p{max-width:68ch}

  /* Subir y cuenta aprovechan el ancho en dos columnas */
  .subir-cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;
    gap:30px;align-items:start}
  .cuenta-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    gap:22px;align-items:start}

  .par{grid-template-columns:1fr 1fr}
  .niveles{grid-template-columns:repeat(3,1fr)}
  .cifras{grid-template-columns:repeat(3,1fr)}
}

@media (min-width:1024px){
  /* en pantalla ancha, los botones vuelven a su ancho natural */
  .acciones .btn{flex:0 0 auto}
}

.subir-lado .et-seccion{margin-top:0}
@media (min-width:1024px){.subir-lado{position:sticky;top:82px}}

/* ═══════════════════════════════════════════════════════════
   PERSONAS — administración
   ═══════════════════════════════════════════════════════════ */
.fichas-gente{display:grid;gap:16px}
.persona.apagada{opacity:.62}
.persona.apagada .tarjeta-cab{background:var(--tenue)}

.persona-datos{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:4px}
.dato-chip{font-family:var(--mono);font-size:11px;color:var(--suave);
  background:var(--hueco);border:1px solid var(--linea);border-radius:999px;padding:4px 10px}
.dato-chip.si{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-borde)}
.dato-chip.mal{color:var(--mal);background:var(--mal-bg);border-color:var(--mal-borde)}

/* ── Interruptores de permiso ────────────────────────────── */
.palancas{display:grid;gap:9px}
.palanca{display:flex;align-items:flex-start;gap:12px;cursor:pointer;
  background:var(--hueco);border:1px solid var(--linea);border-radius:var(--r-md);
  padding:12px 14px;transition:.15s}
.palanca:hover{border-color:var(--tono-borde);background:var(--panel)}
.palanca input{position:absolute;opacity:0;width:0;height:0}

.palanca-pista{flex:0 0 auto;width:42px;height:24px;border-radius:999px;
  background:var(--tenue);position:relative;transition:background .2s;margin-top:1px}
.palanca-bola{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(15,23,42,.28);transition:transform .2s}
.palanca input:checked + .palanca-pista{background:var(--tono-grad)}
.palanca input:checked + .palanca-pista .palanca-bola{transform:translateX(18px)}
.palanca input:focus-visible + .palanca-pista{box-shadow:0 0 0 4px rgba(var(--tono-rgb),.22)}

.palanca-txt{min-width:0}
.palanca-t{display:block;font-size:15px;font-weight:700;line-height:1.25}
.palanca-d{display:block;font-size:12.5px;color:var(--suave);margin-top:3px;line-height:1.4}

.persona-acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;
  padding-top:16px;border-top:1px solid var(--linea)}
.persona-aviso:empty{display:none}

@media (min-width:1024px){
  .fichas-gente{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .palancas{gap:8px}
}

/* En la ficha de una persona los tres niveles caben en fila hasta en el móvil:
   son etiquetas, no una decisión de alta. Apilarlos alarga la pantalla sin
   ganar nada cuando hay cuatro cuentas. */
@media (max-width:639px){
  .persona .niveles{grid-template-columns:repeat(3,1fr);gap:6px}
  .persona .niv{padding:9px 7px}
  .persona .niv .nom{font-size:12.5px;margin-top:3px}
}

/* ── "Buscando…", la pastilla de abajo ───────────────────────────────────
   Fija a la pantalla, no al documento: en el teléfono el monito se queda
   arriba y desde abajo no se veía si estaba pasando algo. Con los segundos
   corriendo se distingue "está trabajando" de "se colgó".
   El env(safe-area-inset-bottom) la sube por encima de la barra del iPhone. */
.buscando{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));
  transform:translateX(-50%);z-index:60;display:inline-flex;align-items:center;gap:10px;
  background:var(--tono-1);color:#fff;border-radius:999px;padding:11px 18px;
  font-size:14px;font-weight:700;white-space:nowrap;
  box-shadow:0 8px 24px rgba(var(--tono-rgb),.38);
  animation:asomar .25s cubic-bezier(.22,1,.36,1) both}
.buscando[hidden]{display:none}
.buscando b{font-variant-numeric:tabular-nums;opacity:.85;font-weight:700}
.buscando-aro{width:15px;height:15px;flex:0 0 auto;border-radius:50%;
  border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;
  animation:gira .8s linear infinite}
@media (prefers-reduced-motion:reduce){
  .buscando{animation:none}
  .buscando-aro{animation:gira 2.4s linear infinite}
}

/* ── El ayudante, con estados ────────────────────────────
   El monito no es adorno: es el indicador de estado. Mientras piensa se mueve
   más rápido, mira de un lado a otro y saca la lupa; cuando encuentra, pega un
   brinco. Así no hace falta una barra de "cargando" aparte. */
.saludo-corto{margin-bottom:20px}
.consulta .presenta{margin-bottom:4px}
.monito{cursor:pointer}
.monito .lupa{opacity:0;transform-box:fill-box;transform-origin:center;
  transform:scale(.4);transition:opacity .25s,transform .25s}
.puntitos{display:none;gap:5px;margin-top:9px}
.puntitos i{width:7px;height:7px;border-radius:50%;background:var(--tono-2);
  animation:puntito 1.1s ease-in-out infinite}
.puntitos i:nth-child(2){animation-delay:.15s}
.puntitos i:nth-child(3){animation-delay:.3s}
@keyframes puntito{0%,100%{opacity:.25;transform:translateY(0)}
  50%{opacity:1;transform:translateY(-4px)}}

/* Buscando.
   El gesto tiene que leerse de un vistazo: antes la lupa giraba en su esquina
   y el monito flotaba seis píxeles, y a 88 px de tamaño eso parece quieto.
   Ahora la lupa RECORRE el libro, que es el gesto que cualquiera reconoce
   como buscar, y el halo late para que se note desde el rabillo del ojo. */
.monito.pensando{
  animation:flotar-busca 1.2s ease-in-out infinite, halo-busca 1.6s ease-in-out infinite}
@keyframes flotar-busca{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes halo-busca{
  0%,100%{filter:drop-shadow(0 3px 5px rgba(67,56,202,.14))}
  50%{filter:drop-shadow(0 5px 16px rgba(99,102,241,.42))}}

/* La lupa barre la cara del libro en diagonal, de izquierda a derecha */
.monito.pensando .lupa{opacity:1;animation:lupa-barre 2.2s ease-in-out infinite}
@keyframes lupa-barre{
  0%  {transform:translate(-58px,30px) rotate(-10deg) scale(1)}
  25% {transform:translate(-34px,18px) rotate(6deg)   scale(1.08)}
  50% {transform:translate(-8px,32px)  rotate(-6deg)  scale(1)}
  75% {transform:translate(-34px,46px) rotate(8deg)   scale(1.08)}
  100%{transform:translate(-58px,30px) rotate(-10deg) scale(1)}}

/* Los ojos siguen a la lupa, con el mismo compás */
.monito.pensando .ojo{animation:mirar 2.2s ease-in-out infinite}
@keyframes mirar{
  0%,100%{transform:translateX(-2.5px) scaleY(1)}
  25%{transform:translateX(0) scaleY(1)}
  48%{transform:translateX(2.5px) scaleY(1)}
  52%{transform:translateX(2.5px) scaleY(.1)}
  56%{transform:translateX(2.5px) scaleY(1)}
  75%{transform:translateX(0) scaleY(1)}}

/* El filo interior LATE mientras busca.
   Antes eran puntadas de costura corriendo por el borde; el monito ya no es
   un parche de tela, así que la misma señal se da encendiendo el filo. Sigue
   siendo lo que se ve de reojo: el borde entero, no un detalle de dentro. */
.monito.pensando .puntada{animation:filo-late 1.1s ease-in-out infinite}
@keyframes filo-late{0%,100%{opacity:.28}50%{opacity:.85}}

.monito.pensando + .globo .puntitos{display:flex}
.monito.pensando + .globo .puntitos i{width:8px;height:8px;background:#6366F1}

/* La boca es un estado más: cerrada mientras escucha y mientras busca,
   abierta solo al encontrar. Abierta siempre se lee como una mueca fija. */
.monito .pulgar{display:none}
.monito.contento .pulgar{display:block}
.monito .abierta{display:none}
.monito.contento .abierta{display:inline}
.monito.contento .cerrada{display:none}

/* Encontró algo */
.monito.contento{animation:salto .75s cubic-bezier(.34,1.56,.64,1)}
@keyframes salto{0%{transform:translateY(0)}
  30%{transform:translateY(-16px) rotate(-4deg)}
  60%{transform:translateY(0) scaleY(.93) scaleX(1.05)}
  100%{transform:translateY(0)}}

/* No encontró nada: se encoge un poco y baja la mirada */
.monito.triste{animation:none;transform:translateY(3px)}
.monito.triste .boca{transform:translateY(7px) rotate(180deg);transform-box:fill-box;
  transform-origin:center}
.monito.triste .ojo{animation:none;transform:scaleY(.62);transform-box:fill-box;
  transform-origin:center}

/* ── Estado «a la obra»: el de «Para hacer esta semana» ──────────────────
   Los otros tres estados informan de la búsqueda: busca, encontró, no
   encontró. Este no informa de nada — anima. Por eso el gesto es otro:
   no flota (reposo) ni barre con la lupa (buscando) ni pega un salto
   (encontró). Se balancea sobre su punta, como quien se remanga, con el
   pulgar puesto y la sonrisa abierta.

   El balanceo va sobre la punta de abajo (50% 88%), que es donde el triángulo
   apoya. Girando por el centro parecía una peonza.

   OJO CON `.pulgar`: en el SVG lleva un `transform` propio como atributo. Una
   animación de CSS sobre ese mismo elemento lo pisaría y la mano saldría
   disparada a la esquina. Aquí solo se enciende; el movimiento lo pone el
   cuerpo entero. */
.monito.a-la-obra{
  transform-origin:50% 88%;
  animation:anima-empuje 2.6s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes anima-empuje{
  0%,100%{transform:rotate(-4deg)}
  42%    {transform:rotate(5deg) translateY(-3px)}
  62%    {transform:rotate(3.5deg)}
}

/* Pulgar puesto y boca abierta: es el gesto de «esto se puede hacer». */
.monito.a-la-obra .pulgar{display:block}
.monito.a-la-obra .abierta{display:inline}
.monito.a-la-obra .cerrada{display:none}

/* Las cejas suben medio punto en el mismo compás del balanceo. Es lo que
   separa «animando» de «mareado»: sin ellas el vaivén se lee como un tropiezo. */
.monito.a-la-obra .ceja{transform-box:fill-box;transform-origin:center;
  animation:anima-cejas 2.6s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes anima-cejas{0%,100%{transform:translateY(0)}42%{transform:translateY(-1.6px)}}

/* La sombra se ensancha cuando se inclina, o el monito parece despegado. */
.monito.a-la-obra .sombra{transform-box:fill-box;transform-origin:center;
  animation:anima-sombra 2.6s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes anima-sombra{0%,100%{transform:scaleX(1);opacity:.09}
  42%{transform:scaleX(.86);opacity:.06}}

/* El filo interior, encendido flojo y lento. Nada que ver con el latido de
   `pensando`: aquí es calor, no actividad. */
.monito.a-la-obra .puntada{animation:anima-filo 3.4s ease-in-out infinite}
@keyframes anima-filo{0%,100%{opacity:.12}50%{opacity:.42}}

/* Quien prefiera la pantalla quieta, la tiene quieta. */
@media (prefers-reduced-motion:reduce){
  .monito,.monito *,.puntitos i{animation:none !important}
  /* Sin animación hay que decirlo de otra forma, o "buscando" y "listo" se
     ven igual: la lupa se queda puesta sobre el libro y los puntos, visibles. */
  .monito.pensando .lupa{opacity:1;transform:translate(-30px,30px)}
  .monito.pensando{filter:drop-shadow(0 4px 12px rgba(99,102,241,.38))}
  .monito.pensando + .globo .puntitos i{opacity:1}
}
.consulta .monito{width:184px;height:184px}
/* El del resumen se queda pequeño a propósito: acompaña a un texto,
   no informa de nada. Al doble le robaría el ancho a la respuesta. */
.monito.mini{width:64px;height:64px;cursor:default}
.vacio-monito{display:flex;gap:14px;align-items:center}
@media (max-width:639px){ .consulta .monito{width:168px;height:168px} }

/* ── Resultados ──────────────────────────────────────────
   La primera cita manda: va sola, en grande y con su porcentaje. Las demás
   quedan plegadas, que están por si la primera no era la buena — no para
   leerlas todas. */
.hallazgo{border-color:var(--tono-borde);box-shadow:0 10px 26px rgba(var(--tono-rgb),.10)}
.hallazgo .cita{font-size:clamp(17px,2.2vw,19.5px)}
/* La cita principal ya no es el bloque grande: el resumen va primero. */
.cita{font-size:clamp(16px,2vw,18px)}
.resumen-fila{display:flex;gap:14px;align-items:flex-start}
.resumen{font-family:var(--lectura);font-size:18.5px;line-height:1.6;color:var(--tinta)}
.cita.chica{font-size:16px;border-left-width:3px;padding-left:14px}

.otras{display:grid;gap:9px}
.otra{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r-md);
  overflow:hidden}
.otra summary{display:flex;align-items:center;gap:12px;padding:13px 15px;cursor:pointer;
  list-style:none;transition:.15s}
.otra summary::-webkit-details-marker{display:none}
.otra summary:hover{background:var(--hueco)}
.otra .orden{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:grid;
  place-items:center;background:var(--tono-suave);border:1px solid var(--tono-borde);
  color:var(--tono-hondo);font-family:var(--mono);font-size:12px}
.otra .otra-que{flex:1 1 auto;min-width:0;font-size:14.5px;font-weight:700;line-height:1.3}
.otra .otra-pct{flex:0 0 auto;font-family:var(--mono);font-size:12.5px;color:var(--tenue)}
.otra[open] summary{background:var(--hueco);border-bottom:1px solid var(--linea)}
.otra[open] .orden{background:var(--tono-grad);color:#fff;border-color:transparent}
.otra-cuerpo{padding:16px 15px 18px}
/* La barra de arriba es fija: sin este margen, al saltar a los resultados la
   barra tapa justo el encabezado de la cita principal. */
#resultados{scroll-margin-top:86px}
@media (max-width:639px){
  /* En el móvil el monito del resumen le robaba la mitad del ancho al texto.
     Arriba ya hay uno grande; con ese basta. */
  .resumen-fila .monito.mini{display:none}
  .resumen-fila{gap:0}
}

/* ── Discursos ───────────────────────────────────────────
   Un bosquejo se mira de reojo mientras hablas: los puntos tienen que
   distinguirse de un vistazo y los versículos saltar a la vista. */
.d-titulo{font-size:clamp(21px,3vw,27px);font-weight:800;letter-spacing:-.02em;line-height:1.15}
.d-punto{font-size:19px;font-weight:800;letter-spacing:-.01em;line-height:1.25;margin-bottom:10px}
.d-parte{font-size:16px;line-height:1.62;color:var(--tinta);margin-top:12px}
.d-parte:first-child{margin-top:0}
.d-et{display:block;font-size:10.5px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--suave);margin-bottom:5px}

.d-textos{display:grid;gap:8px;margin-top:14px}
.d-texto{display:block;background:var(--tono-suave);border:1px solid var(--tono-borde);
  border-radius:var(--r-md);padding:11px 14px;text-decoration:none;transition:.15s}
.d-texto:hover{background:var(--panel);border-color:var(--tono-1)}
.d-cita{display:block;font-family:var(--mono);font-size:13.5px;color:var(--tono-hondo);font-weight:700}
.d-frase{display:block;font-family:var(--nota);font-size:16px;line-height:1.5;
  color:var(--tinta);margin-top:5px}

.d-lista{margin:0;padding-left:20px;display:grid;gap:8px}
.d-lista li{font-size:15px;line-height:1.55;color:var(--suave)}
.d-lista li::marker{color:var(--tono-2)}

/* Punto sin respaldo: ámbar, que es el color de "ojo con esto" en este sitio */
.d-p.sin-fuente{border-left:3px solid var(--avisa);padding-left:15px;
  background:var(--avisa-bg2);border-radius:0 var(--r-ch) var(--r-ch) 0;
  padding-right:14px;padding-top:14px;padding-bottom:14px}
.d-p.sin-fuente .d-num{color:var(--avisa-txt)}
.d-marca{margin-top:14px;font-size:13px;font-weight:700;color:var(--avisa-txt);
  background:var(--avisa-bg2);border:1px solid var(--avisa-borde);
  border-radius:var(--r-ch);padding:9px 12px}
#d-salida .alerta-vence{margin-bottom:18px}

/* El bosquejo, de una pieza ─────────────────────────────
   Se lee seguido, de arriba abajo, como se va a dar. Las secciones se separan
   con aire y una línea fina, no con tarjetas: partirlo obligaba a saltar de
   una a otra para seguir el hilo. */
.d-doc{margin-top:20px}
.d-b,.d-p{padding-top:22px;margin-top:22px;border-top:1px solid var(--linea)}
.d-doc > :first-child{padding-top:0;margin-top:0;border-top:0}
.d-num{font-family:var(--mono);font-size:11.5px;color:var(--tono-1);margin-bottom:6px}

/* Demostración: quién habla, en negrita y delante de lo que dice */
.d-dial{display:grid;gap:12px;margin-top:12px}
.d-linea{font-size:16px;line-height:1.6}
.d-quien{display:block;font-family:var(--mono);font-size:11.5px;font-weight:700;
  color:var(--tono-hondo);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}

/* Tres campos en fila cuando cabe: los nombres de la demostración */
.tres{display:grid;gap:10px}
@media (min-width:640px){ .tres{grid-template-columns:repeat(3,1fr)} }
.et-flojo{font-weight:400;letter-spacing:0;text-transform:none;color:var(--tenue)}

/* Descargar el original: junto a la referencia, que es donde se pregunta
   "¿y esto de dónde salió?" */
.bajar{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;
  color:var(--tono-hondo);background:var(--tono-suave);border:1px solid var(--tono-borde);
  border-radius:999px;padding:5px 12px;text-decoration:none;transition:.15s}
.bajar:hover{background:var(--tono-1);border-color:var(--tono-1);color:#fff}
/* La de PDF va rellena: es la única de las dos que se lleva un archivo al
   disco, y conviene que no se confunda con el enlace a wol. */
.bajar.pdf{background:var(--tono-1);border-color:var(--tono-1);color:#fff}
.bajar.pdf:hover{background:var(--tono-hondo);border-color:var(--tono-hondo)}
/* La del video va perfilada, no rellena: la rellena es la que se lleva un
   archivo al disco, y esta solo abre jw.org. */
.bajar.video{background:var(--panel);color:var(--tono-1);border-color:var(--tono-borde)}
.bajar.video:hover{background:var(--tono-1);border-color:var(--tono-1);color:#fff}

/* ── El ayudante en la puerta ─────────────────────────────────────────────
   Aquí solo recibe, no trabaja: más pequeño que en el buscador y sin cursor
   de clic, porque no hay nada que pedirle todavía. */
.presenta-puerta{margin-bottom:22px}
/* En la puerta el ayudante hace de logo: va al lado del nombre, del tamaño
   que tenía la gema, y sin globo. */
.firma .monito{width:74px;height:74px;cursor:default;flex:0 0 auto}
.presenta-puerta .monito{width:74px;height:74px;cursor:default}
.presenta-puerta .globo .dice{font-size:15.5px}
@media (max-width:639px){
  .presenta-puerta{margin-bottom:18px}
  .presenta-puerta .monito{width:62px;height:62px}
  .firma .monito{width:62px;height:62px}
}

/* ── Fuentes del resumen ──────────────────────────────────────────────────
   El resumen lo escribe la IA; las citas están publicadas. Que se distinga
   una cosa de la otra no es un adorno: es lo que evita que un párrafo
   redactado por una máquina acabe repitiéndose como si fuera la publicación.
   Por eso cada marca [1] es un enlace a su cita, y debajo va la lista con
   la descarga del original y la búsqueda en wol. */
.marca-cita{display:inline-block;min-width:17px;height:17px;margin:0 1px;padding:0 4px;
  border-radius:5px;background:var(--tono-suave);color:var(--tono-hondo);
  font-family:var(--letra,inherit);font-size:11px;font-weight:800;line-height:17px;
  text-align:center;text-decoration:none;vertical-align:2px}
.marca-cita:hover{background:var(--tono-2);color:#fff}

.fuentes{margin-top:14px;padding-top:13px;border-top:1px solid var(--linea)}
.et-fuentes{margin-bottom:9px;font-size:10.5px;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--suave)}
.fuentes-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.fuentes-lista li{display:flex;gap:10px;align-items:flex-start}
.fnum{flex:0 0 auto;width:20px;height:20px;border-radius:6px;background:var(--tono-1);
  color:#fff;font-size:11px;font-weight:800;line-height:20px;text-align:center;
  text-decoration:none}
.fdatos{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 10px}
.fcita{font-weight:700;font-size:14px;color:var(--tinta);text-decoration:none}
.fcita:hover{text-decoration:underline;text-underline-offset:3px}
.ffecha{font-size:12.5px;color:var(--suave)}
.facciones{display:flex;flex-wrap:wrap;gap:5px 12px;width:100%}
.facciones a{font-size:12.5px;font-weight:700;color:var(--tono-1);text-decoration:none}
.facciones a:hover{text-decoration:underline;text-underline-offset:3px}

/* Al llegar desde una marca, la cita se señala un momento: sin esto uno
   aterriza a media página sin saber qué mirar. */
.resaltada{animation:senalar 1.6s ease-out}
@keyframes senalar{
  0%,55%{box-shadow:0 0 0 3px rgba(var(--tono-rgb),.35)}
  100%{box-shadow:0 0 0 3px rgba(var(--tono-rgb),0)}
}
@media (prefers-reduced-motion:reduce){ .resaltada{animation:none} }

/* ═══════════════════════════════════════════════════════════════════════════
   BUSCADOR — pliego editorial                            (rediseño ago. 2026)

   Antes: tres tarjetas blancas apiladas, cada una con su cabecera azul. Se veía
   como cualquier formulario. Ahora la pantalla se comporta como lo que el sitio
   es —un índice sobre publicaciones— y el carácter sale de tres decisiones:

     1. Reglas finas en vez de marcos. Una etiqueta diminuta seguida de una
        línea que llega hasta el borde separa mejor que una caja, y no encierra
        el contenido en un rectángulo más.
     2. La pareja grotesca + itálica serif. Los titulares en Bricolage y la
        palabra que importa en Newsreader cursiva. Si se unifican las dos, la
        pantalla vuelve a ser genérica: ese contraste ES la firma.
     3. Numerales de dos dígitos en monoespaciada. Un índice numera así, y es lo
        que hace que las citas se lean como entradas de un catálogo y no como
        tarjetas de una lista.

   Se respetan los tokens de «Índigo sobre gris». Ni un color suelto.
   ═══════════════════════════════════════════════════════════════════════════ */

.pliego{max-width:720px;margin:0 auto}

/* ── El rotulo: la etiqueta diminuta que encabeza cada cosa ───────────────── */
.rotulo{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:10.5px;
  font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--suave)}
.rotulo > span{flex:0 0 auto}
.rotulo-pt{color:var(--tenue)}
.rotulo-dato{color:var(--tono-1)}
/* La regla que cierra la etiqueta y llega al borde. Sustituye a la cabecera
   azul de las tarjetas: separa igual y no encierra nada. */
.rotulo-linea i{flex:1 1 auto;height:1px;background:linear-gradient(90deg,
  var(--linea-alta) 0%, var(--linea) 40%, transparent 100%)}

/* ── Cabecera ───────────────────────────────────────────────────────────── */
.pliego-cab{margin-bottom:34px}
.pliego-t{font-size:clamp(40px,8.4vw,66px);font-weight:800;letter-spacing:-.045em;
  line-height:.94;margin-top:14px}
.pliego-t em{font-family:inherit;font-style:normal;font-weight:800;letter-spacing:-.045em;
  background:var(--tono-grad-txt);-webkit-background-clip:text;background-clip:text;
  color:transparent;padding-right:.06em;margin-right:-.06em}

/* ── La pregunta ────────────────────────────────────────────────────────── */
/* Sin tarjeta: la pregunta se escribe sobre el papel, no dentro de un cuadro.
   La textura de puntos es la misma de los cuadros de la portada, para que la
   pantalla siga sonando a la misma casa. */
.consulta-pliego{position:relative;isolation:isolate;padding-bottom:34px;margin-bottom:30px;
  border-bottom:1px solid var(--linea)}
.consulta-pliego::before{content:"";position:absolute;z-index:-1;top:-18px;right:-14px;
  width:230px;height:150px;opacity:.75;
  background-image:radial-gradient(circle at 1px 1px,var(--tono-suave) 1px,transparent 0);
  background-size:15px 15px;
  -webkit-mask-image:linear-gradient(215deg,#000 0%,transparent 68%);
  mask-image:linear-gradient(215deg,#000 0%,transparent 68%)}

/* El monito, sentado a la izquierda del campo. Antes presentaba la pantalla
   desde arriba con una nota al margen; ahí ocupaba el sitio que necesitaba la
   pregunta. Aquí acompaña sin robar protagonismo, y por eso va más chico. */
.pregunta-fila{display:flex;gap:16px;align-items:flex-start}
.pregunta-col{flex:1 1 auto;min-width:0}
.pliego .pregunta-fila .monito{flex:0 0 auto;width:96px;height:96px;margin-top:-6px}

.pliego .presenta{gap:15px;align-items:center;margin-bottom:26px}
.pliego .globo{background:none;border:0;border-left:2px solid var(--tono-borde);
  border-radius:0;padding:3px 0 3px 15px;box-shadow:none}
.pliego .globo::before{display:none}
.pliego .globo .hola{font-family:var(--mono);letter-spacing:.17em;color:var(--tono-1);
  margin-bottom:5px}
.pliego .globo .dice{font-size:16px;line-height:1.5;color:var(--suave);max-width:44ch}
.pliego .consulta .monito,.pliego .monito{width:164px;height:164px}

/* El campo. Es el dato grande de la pantalla: serif, enorme, sin caja, con una
   sola regla debajo que se enciende al escribir. */
.rotulo-campo{margin-bottom:11px}
.pregunton{display:block;width:100%;resize:none;overflow:hidden;
  font-family:var(--pregunta);font-size:clamp(24px,4.2vw,33px);line-height:1.26;
  font-weight:400;color:var(--tinta);background:transparent;border:0;
  border-bottom:2px solid var(--tenue);border-radius:0;padding:0 0 12px;outline:none;
  transition:border-color .2s}
.pregunton::placeholder{color:var(--tenue);font-style:italic}
.pregunton:focus{border-bottom-color:var(--tono-1)}

.pregunton-pie{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  margin-top:11px}
.pregunton-ayuda{font-size:13.5px;color:var(--suave)}
.pregunton .cuenta,.pregunton-pie .cuenta{font-family:var(--mono);font-size:12px;color:var(--tenue)}
.pregunton-btn{margin-top:20px}

/* Buscar y Limpiar, en renglon. El margen sube a la fila para que los dos
   botones se alineen aunque uno de ellos este escondido. Limpiar es liso a
   proposito: borrar lo que acabas de encontrar no se ofrece en color. */
.pregunton-acciones{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px}
.pregunton-acciones .pregunton-btn{margin-top:0}
.btn-limpiar{color:var(--suave)}
.btn-limpiar:hover{color:var(--tinta)}

/* ── Atajos ─────────────────────────────────────────────────────────────── */
/* Entradas de índice, no botones: numeral, texto, regla punteada y flecha. */
.atajos{margin-top:34px}
.atajos-lista{list-style:none;margin:14px 0 0;padding:0}
.atajo{display:flex;align-items:baseline;gap:14px;width:100%;padding:13px 2px;
  background:none;border:0;border-bottom:1px solid var(--linea);cursor:pointer;
  font-family:var(--txt);text-align:left;color:var(--tinta);transition:.16s}
.atajo:hover{color:var(--tono-1);padding-left:8px;padding-right:0}
.atajo-n{flex:0 0 auto;font-family:var(--mono);font-size:11.5px;color:var(--tenue)}
.atajo:hover .atajo-n{color:var(--tono-2)}
.atajo-t{flex:1 1 auto;font-size:15.5px;font-weight:600;line-height:1.35}
.atajo-fl{flex:0 0 auto;color:var(--tenue);transition:transform .16s}
.atajo:hover .atajo-fl{color:var(--tono-1);transform:translateX(4px)}

/* ── Resultados ─────────────────────────────────────────────────────────── */
.hallado{margin-bottom:34px}
.hallado > .rotulo{margin-bottom:16px}
/* Las citas son el respaldo, no el plato fuerte: misma letra de lectura que
   el resumen, un punto más chicas y en gris. Lo que manda es el resumen. */
.hallado > .rotulo{font-family:var(--lectura);font-size:10px;letter-spacing:.12em}
/* "En resumen" es la excepción: es el bloque que importa, así que su rótulo va
   en negrita y en tinta, no en gris como el de las citas. */
.hallado-resumen > .rotulo{font-family:var(--txt);font-size:12px;font-weight:800;
  letter-spacing:.14em;color:var(--tinta)}

/* El resumen. Va sobre un papel ligeramente distinto para que se vea de un
   golpe que esto lo escribió una máquina y lo de abajo está publicado. */
.resumen-caja{background:var(--hueco);border:1px solid var(--linea);
  border-radius:var(--r-md);padding:20px 20px 18px}
.pliego .resumen{font-size:19.5px;line-height:1.6}
.pliego .fuentes{border-top-color:var(--linea-alta)}
.pliego .et-fuentes{font-family:var(--mono);letter-spacing:.17em}

/* El papel blanco de las citas. Pedido por Óscar en agosto: los bloques de
   «Otras fuentes» y de las citas plegadas estaban sueltos sobre el degradado
   del fondo y no se leían como bloques.

   Blanco puro (`--panel`) y no `--hueco` a propósito: el resumen se queda en
   `--hueco` porque su trabajo es avisar de que ESO lo escribió una máquina y
   lo de abajo está publicado. Si los tres fueran del mismo papel, esa señal
   se pierde. La sombra ayuda a separarlos, que entre #fff y #f9fafb no hay
   diferencia que se vea.

   El rótulo va FUERA de la caja — lo arma buscar.js así. */
.hallado-caja{background:var(--panel);border:1px solid var(--linea);
  border-radius:var(--r-md);padding:20px 20px 18px;box-shadow:var(--sombra)}
.hallado-caja-indice{padding:2px 18px}
/* La última fila ya la cierra el borde de la caja. */
.hallado-caja .indice > li:last-child{border-bottom:0}

/* La cita principal: pliego abierto, comilla enorme detrás, regla al costado.
   Es lo publicado, y tiene que pesar más que el resumen. */
.cita-mayor{position:relative;isolation:isolate;font-family:var(--lectura);
  font-size:clamp(14.5px,1.9vw,16px);line-height:1.6;color:var(--suave);
  border-left:3px solid transparent;
  border-image:var(--tono-grad) 1;padding:2px 0 2px 22px}
.cita-mayor::before{content:"\201C";position:absolute;z-index:-1;top:-12px;left:2px;
  font-family:var(--nota);font-size:100px;line-height:1;color:var(--tono-suave);
  opacity:.55;pointer-events:none}

/* Las demás: índice de verdad, con guía punteada hasta el porcentaje. */
.indice{list-style:none;margin:0;padding:0}
.indice > li{border-bottom:1px solid var(--linea)}
.renglon > summary{display:flex;align-items:baseline;gap:12px;padding:13px 2px;
  cursor:pointer;list-style:none;transition:.16s}
.renglon > summary::-webkit-details-marker{display:none}
.renglon > summary:hover{color:var(--tono-1)}
.ren-n{flex:0 0 auto;font-family:var(--mono);font-size:11.5px;color:var(--tenue)}
.ren-t{flex:0 0 auto;max-width:calc(100% - 130px);font-size:15px;font-weight:600;
  line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ren-guia{flex:1 1 auto;height:0;border-bottom:1px dotted var(--tenue);
  transform:translateY(-4px);min-width:14px}
.ren-p{flex:0 0 auto;font-family:var(--mono);font-size:12px;color:var(--tenue)}
.renglon[open] > summary{color:var(--tono-1)}
.renglon[open] .ren-n{color:var(--tono-1)}
.ren-cuerpo{padding:2px 2px 20px 34px}
.pliego .cita.chica{font-size:16.5px}

/* Al llegar desde una marca del resumen, el renglón se señala. Sin marco, que
   aquí no hay cajas: una franja de color a la izquierda. */
.pliego .resaltada{animation:senalar-pliego 1.6s ease-out}
@keyframes senalar-pliego{
  0%,55%{box-shadow:-14px 0 0 -10px var(--tono-2)}
  100%{box-shadow:-14px 0 0 -10px transparent}
}

/* ── Entrada ────────────────────────────────────────────────────────────── */
/* Una sola entrada escalonada al cargar. Nada más se mueve en esta pantalla
   salvo el monito, que informa. */
@keyframes asomar{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.pliego-cab,.consulta-pliego,.atajos{animation:asomar .5s cubic-bezier(.22,1,.36,1) both}
.consulta-pliego{animation-delay:.06s}
.atajos{animation-delay:.12s}
@media (prefers-reduced-motion:reduce){
  .pliego-cab,.consulta-pliego,.atajos{animation:none}
  .pliego .resaltada{animation:none}
}

/* ── Teléfono ───────────────────────────────────────────────────────────── */
/* Las consultas se hacen de pie en el Salón. Aquí manda el pulgar. */
@media (max-width:639px){
  .pliego-t{letter-spacing:-.035em}
  /* Con una etiqueta larga y un dato al final, la regla del medio se quedaba
     en nada y las dos se tocaban. Menos rastreo y menos cuerpo dan el aire. */
  .rotulo{gap:7px;font-size:9.8px;letter-spacing:.12em}
  .rotulo-linea i{min-width:10px}
  .pliego .presenta{gap:12px;margin-bottom:22px}
  .pliego .consulta .monito,.pliego .monito{width:124px;height:124px}
  .pliego .pregunta-fila .monito{width:70px;height:70px;margin-top:-2px}
  .pregunta-fila{gap:12px}
  .pliego .resumen{font-size:18px}
  .pliego .globo .dice{font-size:15px}
  .consulta-pliego::before{width:150px;height:110px;opacity:.6}
  .pregunton{border-bottom-width:2px;padding-bottom:10px}
  .pregunton-btn{width:100%;justify-content:center}
  .pregunton-acciones{flex-direction:column;align-items:stretch}
  .ren-t{max-width:calc(100% - 96px);font-size:14.5px}
  .ren-cuerpo{padding-left:2px}
  .cita-mayor::before{font-size:76px;top:-8px}
  .resumen-caja{padding:16px 15px 15px}
  .hallado-caja{padding:16px 15px 15px}
  .hallado-caja-indice{padding:2px 14px}
}
