/* ═══════════════════════════════════════════════════════════════════════
   LUZ — la home como un junk journal físico (2026-08-28, segunda pasada).

   Identidad SEPARADA de "Collage Indie" (estilos.css), que sigue rigiendo
   el resto del sitio: lectura, tienda, cuenta, cómo funciona, catálogo
   completo. Todo lo de este archivo cuelga de `body.tema-luz-activo`, que
   app.js pone y saca según la vista activa — un solo punto de contacto.

   Regla que gobierna el archivo:
   "no es una web con decoración de junk journal; es una web cuya interfaz
    entera está diseñada como un junk journal".

   Por eso NADA acá es un rectángulo de UI: todo bloque es una hoja con
   fibra, borde rasgado, giro propio y una sombra distinta de la de al lado.
   ═══════════════════════════════════════════════════════════════════════ */

body.tema-luz-activo{
  /* ---- paleta (§43): apagada, cálida, nada saturado digital ---- */
  --lz-crema:#F1EBDD;      --lz-crema-rgb:241,235,221;
  --lz-papel:#E8DCC6;      --lz-papel-2:#DFD0B4;   --lz-papel-3:#D6C4A3;
  --lz-oscuro:#272522;     --lz-oscuro-rgb:39,37,34;
  --lz-tinta:#4A4238;      --lz-tinta-suave:#6B6053;
  --lz-salvia:#68705C;     --lz-salvia-rgb:104,112,92;
  --lz-oliva:#77745D;      --lz-oliva-rgb:119,116,93;
  --lz-rosa:#C79B90;       --lz-rosa-rgb:199,155,144;
  --lz-terracota:#B66F52;  --lz-terracota-rgb:182,111,82;
  --lz-mostaza:#C5A044;    --lz-mostaza-rgb:197,160,68;
  --lz-azul:#71838A;       --lz-azul-rgb:113,131,138;
  --lz-oro:#B28A37;        --lz-oro-rgb:178,138,55;
  --lz-oro-tinta:#7F5C1F;  /* dorado legible: 5.12:1 sobre crema, medido */
  --lz-borgona:#7C443A;

  /* ═══ SISTEMA TIPOGRAFICO (2026-09-03) ═══════════════════════════════════
     El dueño eligio CINCO de diez muestras: O, P, N, L, G. Son de mundos
     distintos, asi que en vez de descartar cuatro, cada una toma el rol donde
     su forma SIGNIFICA algo — que es como funciona un collage de verdad: no
     una tipografia, sino recortes de varias fuentes con una logica.
       G · Poiret One          → titulos (art deco fino, la voz principal)
       O · Anton               → numerales y precios (impacto, contraste)
       L · Uncial Antiqua      → nombres de las cartas (letra de manuscrito)
       P · Petit Formal Script → notas de papel y poemas (escrito a mano)
       N · Shrikhand           → marca del footer y cinta (cierre calido)
     Jost queda en la UI; EB Garamond en los parrafos largos de la lectura. */
  --lz-serif:'Poiret One',Georgia,'Times New Roman',serif;   /* G */
  --lz-numero:'Anton',Impact,system-ui,sans-serif;           /* O */
  --lz-carta:'Uncial Antiqua',Georgia,serif;                 /* L */
  --lz-mano:'Petit Formal Script','Segoe Script',cursive;    /* P */
  --lz-marca:'Shrikhand',Georgia,serif;                      /* N */
  --lz-texto:'EB Garamond',Georgia,serif;   /* parrafos largos: la lectura misma */
  /* JOST = la Futura de Google Fonts: la voz geometrica mid-century para
     etiquetas en mayusculas, numerales chicos, botones y cuerpo corto.
     Reemplaza a Work Sans (2026-09-02, estructura V2). */
  --lz-sans:'Jost',system-ui,-apple-system,sans-serif;

  /* ---- sombras (§18, §35): tres pesos, para que NO todas las piezas
     lleven la misma. "objeto sobre papel", nunca "elevated card UI". ---- */
  --lz-s1:0 2px 6px rgba(40,30,20,.10);
  --lz-s2:0 6px 14px rgba(40,30,20,.15);
  --lz-s3:0 13px 28px rgba(40,30,20,.20);

  /* ---- fibra de papel: ruido procedural, tilea perfecto a cualquier
     tamaño (un swatch fotográfico deja costuras al repetir) ---- */
  --lz-fibra:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23f)' opacity='.5'/%3E%3C/svg%3E");
  /* ---- veteado de pulpa: manchas MUY suaves y grandes, no rayas.
     Primera versión usaba baseFrequency='.006 .5' (X bajísima, Y alta) y salía
     un rayado horizontal tipo cartón corrugado que dominaba toda la página —
     "la textura es ambiente, no protagonista" (§2.6, §42). Ahora la frecuencia
     es casi isotrópica y la opacidad baja 3×: se ve al acercarse, no de lejos. ---- */
  --lz-veteado:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420'%3E%3Cfilter id='h'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.011 .017' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='420' height='420' filter='url(%23h)' opacity='.14'/%3E%3C/svg%3E");

  background:var(--lz-crema);
}

/* Las capas de Collage Indie (grano oscuro, viñeta de vela, efímera) no
   aplican acá: Luz trae su propia materialidad. */
body.tema-luz-activo .velon,
body.tema-luz-activo .grano,
body.tema-luz-activo .efimera{display:none}
/* El toggle claro/oscuro no tiene sentido sobre una identidad de marca fija */
body.tema-luz-activo .tg-tema{display:none}

/* ═══ EL CANVAS — una sola hoja grande, no un stack de secciones (§6) ═══
   Tres capas de textura superpuestas:
   1. manchas de baja frecuencia (el papel no tiene un tono plano)
   2. hebras largas de fibra
   3. grano fino
   Ninguna sube de .06 de opacidad: textura de ambiente, nunca ruido (§42). */
body.tema-luz-activo #vCatalogo{
  position:relative; z-index:1; isolation:isolate;
  /* La hoja recorta sus propias decoraciones en el canto, como una página real.
     Causa medida antes de aplicarlo (§2.14 prohíbe usar esto como parche a
     ciegas): las piezas que asoman a propósito —carta de tarot en right:-3%,
     flor en left:-7%, tarjetas rotadas— generaban 9-16px de scroll horizontal
     real a ≤768px. `clip` y no `hidden`: no crea contenedor de scroll, así que
     no rompe posicionamiento ni agrega barra. Verificado que ningún texto vive
     a menos de 18px del borde, así que no se recorta contenido. */
  overflow-x:clip;
  color:var(--lz-oscuro); background:var(--lz-crema);
  background-image:
    radial-gradient(ellipse 40% 30% at 12% 8%,  rgba(182,111,82,.055), transparent 70%),
    radial-gradient(ellipse 45% 26% at 88% 22%, rgba(104,112,92,.05),  transparent 72%),
    radial-gradient(ellipse 35% 22% at 20% 62%, rgba(178,138,55,.045), transparent 70%),
    radial-gradient(ellipse 50% 30% at 78% 88%, rgba(124,68,58,.04),   transparent 74%),
    var(--lz-veteado), var(--lz-fibra);
  background-size:auto, auto, auto, auto, 420px 420px, 200px 200px;
  background-blend-mode:normal, normal, normal, normal, multiply, multiply;
}
/* Borde del canvas: el papel se oscurece apenas contra los cantos, como una
   hoja fotografiada. No es una viñeta de UI — es muy tenue y no se mueve. */
body.tema-luz-activo #vCatalogo::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    linear-gradient(90deg,  rgba(120,96,64,.07), transparent 9%, transparent 91%, rgba(120,96,64,.07)),
    linear-gradient(180deg, rgba(120,96,64,.05), transparent 5%, transparent 96%, rgba(120,96,64,.06));
}

/* ═══ UTILIDADES DE MATERIAL (§54) ═══════════════════════════════════════ */

/* Una hoja de papel: color + fibra + sombra. El borde rasgado lo pone
   .lz-rasgado-a/b/c por separado, para poder variarlo pieza por pieza. */
.lz-papel{
  position:relative;
  background-color:var(--lz-papel);
  background-image:var(--lz-fibra);
  background-size:200px 200px; background-blend-mode:multiply;
  box-shadow:var(--lz-s2);
}
/* Tres bordes rasgados DISTINTOS. Repetir uno solo delata el componente. */
.lz-rasgado-a{
  clip-path:polygon(0% 2.4%, 5% .5%, 13% 2.8%, 22% .4%, 31% 2.2%, 41% .6%, 52% 2.6%, 62% .5%,
                    71% 2.4%, 81% .7%, 90% 2.5%, 100% .8%,
                    99.3% 26%, 100% 52%, 99.2% 77%, 100% 98%,
                    91% 99.4%, 82% 97.3%, 72% 99.5%, 61% 97.4%, 50% 99.3%, 39% 97.2%, 29% 99.4%,
                    19% 97.5%, 10% 99.5%, 3% 97.6%, 0% 99%,
                    .8% 74%, 0% 49%, .7% 25%);
}
.lz-rasgado-b{
  clip-path:polygon(0% 1.6%, 8% 3.2%, 17% .4%, 26% 2.9%, 36% .7%, 47% 2.4%, 57% .3%, 68% 2.7%,
                    77% .6%, 87% 2.9%, 95% .5%, 100% 2.2%,
                    99.4% 31%, 100% 61%, 99.3% 88%, 100% 99%,
                    89% 97.4%, 78% 99.5%, 68% 97.2%, 57% 99.4%, 46% 97.3%, 36% 99.6%, 25% 97.4%,
                    14% 99.3%, 5% 97.5%, 0% 99.4%,
                    .6% 66%, 0% 38%, .8% 16%);
}
.lz-rasgado-c{
  clip-path:polygon(0% 3.4%, 6% .6%, 15% 3%, 25% .8%, 34% 2.6%, 44% .4%, 55% 2.8%, 65% .6%,
                    74% 3.1%, 84% .5%, 93% 2.7%, 100% 1%,
                    99.2% 22%, 100% 44%, 99.4% 68%, 100% 96.6%,
                    93% 99.5%, 84% 97.2%, 74% 99.4%, 63% 97.5%, 52% 99.2%, 42% 97.4%, 31% 99.5%,
                    21% 97.3%, 11% 99.4%, 4% 97.4%, 0% 98.8%,
                    .7% 70%, 0% 43%, .9% 21%);
}

/* Cinta de enmascarar. Semitransparente, beige amarillento, con hilos
   verticales tenues (el arrugado) y los DOS extremos rasgados por máscara —
   nunca un rectángulo perfecto (§19). */
.lz-cinta{
  position:absolute; z-index:60; pointer-events:none;
  width:82px; height:23px;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.13) 0 1px, transparent 1px 7px),
    linear-gradient(170deg, rgba(226,208,168,.68), rgba(203,182,138,.6));
  box-shadow:0 1px 3px rgba(40,30,20,.14);
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
  mask-image:linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
  transform:rotate(var(--cinta-giro,-4deg));
}
.lz-cinta::after{ /* fibra dentro de la propia cinta */
  content:""; position:absolute; inset:0; opacity:.5; mix-blend-mode:multiply;
  background-image:var(--lz-fibra); background-size:120px 120px;
}
.lz-cinta-a{ top:-11px; left:14%; --cinta-giro:-5deg }
.lz-cinta-b{ bottom:-10px; right:16%; --cinta-giro:3.5deg; width:66px }

/* ═══ RECORTE SOBRE PAPEL (§18) ═══════════════════════════════════════════
   Un recorte pálido (lirios blancos, palomas) sobre el fondo crema se lava y
   se lee como una mancha gris. La solución no es subirle el contraste a la
   foto: es la del propio junk journal — pegarlo sobre un papelito recortado
   un poco más grande, con su giro y su sombra. Sirve para cualquier pieza. */
.lz-recorte{ position:relative; display:block; transform:rotate(var(--giro,0deg)) }
.lz-recorte::before{
  content:""; position:absolute; inset:-8% -9%; z-index:0;
  background-color:#F7F2E6; background-image:var(--lz-fibra);
  background-size:150px 150px; background-blend-mode:multiply;
  box-shadow:var(--lz-s2); transform:rotate(var(--giro-papel,-3deg));
  clip-path:polygon(0% 4%, 8% .6%, 20% 4%, 33% .8%, 46% 3.6%, 59% .5%, 72% 4%, 85% .7%, 100% 3%,
                    98.8% 34%, 100% 68%, 99% 97%,
                    87% 99.4%, 74% 96.6%, 60% 99.5%, 46% 96.8%, 32% 99.4%, 18% 96.6%, 6% 99.5%, 0% 97%,
                    1.2% 66%, 0% 33%);
}
.lz-recorte img{ position:relative; z-index:1; width:100%; height:auto; display:block }

/* Sparkles: polvo dorado. Tamaño, opacidad, giro y ritmo VARIADOS (§41) —
   el mismo SVG repetido 30 veces con idéntico tamaño se nota. */
.lz-brillo{
  position:absolute; z-index:30; pointer-events:none; color:var(--lz-oro);
  width:var(--b,11px); height:var(--b,11px); opacity:.75;
  transform:rotate(var(--bg,0deg));
  animation:lzDestello var(--bd,4.2s) ease-in-out infinite var(--br,0s);
}
.lz-brillo svg{width:100%; height:100%}
@keyframes lzDestello{ 0%,100%{opacity:.28; transform:rotate(var(--bg,0deg)) scale(.82)}
                       50%{opacity:.9; transform:rotate(var(--bg,0deg)) scale(1)} }
@keyframes lzFlotar{ 0%,100%{transform:translateY(0) rotate(var(--giro,0deg))}
                     50%{transform:translateY(-4px) rotate(var(--giro,0deg))} }
@keyframes lzGiraLento{ to{transform:rotate(360deg)} }
@keyframes lzEntra{ from{opacity:0; transform:translateY(16px) rotate(var(--giro,0deg)) scale(.985)}
                    to{opacity:1; transform:translateY(0) rotate(var(--giro,0deg)) scale(1)} }

/* La flotacion va en el HIJO (img o recorte), no en la caja: la caja la mueve
   la entrada coreografiada y despues el parallax del mouse. Un `img` suelto
   flota sin rotar (la rotacion la tiene la caja); un `.lz-recorte` flota con
   su propio giro, que ya vive en el. */
@keyframes lzFlotarIn{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-4px)} }
.lz-flota > img{ animation:lzFlotarIn 6.5s ease-in-out infinite }
.lz-flota > .lz-recorte{ animation:lzFlotar 6.5s ease-in-out infinite }
.lz-flota-b > img, .lz-flota-b > .lz-recorte{ animation-duration:8s; animation-delay:-2.6s }
.lz-flota-c > img, .lz-flota-c > .lz-recorte{ animation-duration:5.4s; animation-delay:-1.3s }

@media (prefers-reduced-motion: reduce){
  .lz-flota, .lz-brillo, .lz-sol{animation:none}
  .lz-brillo{opacity:.6}
  [class*="lz-"]{animation-duration:.01ms !important; animation-iteration-count:1 !important}
}

/* ═══ HEADER (§24) ═══════════════════════════════════════════════════════ */
body.tema-luz-activo .top{padding:26px 44px 0; position:relative; z-index:70}
/* Logo apilado, como la referencia: el sol a la izquierda y "LUZ / TAROT" en
   dos líneas. `.word` trae el nombre en una sola cadena para no romper el resto
   del sitio; acá se parte en dos con ancho fijo + text-wrap. */
/* EL NOMBRE ESCRITO SE SACA, EL SOL QUEDA (2026-09-01, pedido en vivo: "que
   no diga hada tarot que no sirve de nada, deja espacio para los botones").
   Medido antes de tocar nada: a 900px de ancho el nav central quedaba
   literalmente PEGADO al logo de un lado y a los controles del otro -cero
   margen, `navLeft === brandRight` y `navRight === derLeft`-. El sol YA es
   un icono de marca reconocible por si solo -estaba ahi desde el primer
   diseño-, asi que sacar el texto no deja al header sin identidad: la deja
   mas chica. `.word` se conserva en el DOM (no se borra el texto) por
   accesibilidad -sigue siendo el nombre accesible del boton "ir al inicio"
   para lectores de pantalla- pero visualmente no ocupa lugar. */
body.tema-luz-activo .brand{gap:0; align-items:center}
body.tema-luz-activo .word{
  position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap;
}
/* Sol de tinta del logo, dibujado, no un icono geométrico. Un poco mas grande
   que antes (27px -> 32px): al quedar solo, el sol es el mark entero y
   necesita sentirse como una marca hecha y derecha, no como un adorno chico
   que se quedo sin la mitad de su logo. */
body.tema-luz-activo .brand::before{
  content:""; width:32px; height:32px; flex:0 0 auto; background:var(--lz-oro);
  -webkit-mask:var(--lz-sol-logo) center/contain no-repeat;
  mask:var(--lz-sol-logo) center/contain no-repeat;
}
body.tema-luz-activo{
  --lz-sol-logo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='black'%3E%3Ccircle cx='20' cy='20' r='7.4'/%3E%3Cpath d='M20 1.5c1 3.6 1.6 6.2 1.6 8.2 0 .7-.6.9-1 .3C19.4 7.6 19 4.9 20 1.5Zm0 37c-1-3.6-1.6-6.2-1.6-8.2 0-.7.6-.9 1-.3 1.2 2.4 1.6 5.1.6 8.5Zm18.5-18.5c-3.6 1-6.2 1.6-8.2 1.6-.7 0-.9-.6-.3-1 2.4-1.2 5.1-1.6 8.5-.6Zm-37 0c3.6-1 6.2-1.6 8.2-1.6.7 0 .9.6.3 1-2.4 1.2-5.1 1.6-8.5.6ZM33 7c-1.8 3.2-3.3 5.5-4.7 6.9-.5.5-1 .2-.8-.5.8-2.6 2.4-4.8 5.5-6.4ZM7 33c1.8-3.2 3.3-5.5 4.7-6.9.5-.5 1-.2.8.5-.8 2.6-2.4 4.8-5.5 6.4ZM33 33c-3.2-1.8-5.5-3.3-6.9-4.7-.5-.5-.2-1 .5-.8 2.6.8 4.8 2.4 6.4 5.5ZM7 7c3.2 1.8 5.5 3.3 6.9 4.7.5.5.2 1-.5.8C10.8 11.7 8.6 10.1 7 7Z'/%3E%3C/g%3E%3C/svg%3E");
}
body.tema-luz-activo .nav-centro{gap:30px}
body.tema-luz-activo .nav-centro a{
  font-family:var(--lz-sans); font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--lz-tinta); font-weight:500; position:relative; padding-bottom:3px;
}
/* Subrayado a mano alzada al pasar: trazo irregular, no un border-bottom */
body.tema-luz-activo .nav-centro a::after{
  content:""; position:absolute; left:-2px; right:-2px; bottom:0; height:4px; opacity:0;
  background:var(--lz-oro-tinta); transition:opacity .22s ease;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 5' preserveAspectRatio='none'%3E%3Cpath d='M1 3.4c9-1.6 18-2.2 27-1.6s18 2 27 1.4 15-1.4 24-.4' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 5' preserveAspectRatio='none'%3E%3Cpath d='M1 3.4c9-1.6 18-2.2 27-1.6s18 2 27 1.4 15-1.4 24-.4' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
}
body.tema-luz-activo .nav-centro a:hover{color:var(--lz-oscuro)}
body.tema-luz-activo .nav-centro a:hover::after{opacity:1}
body.tema-luz-activo .nav-der-link{font-family:var(--lz-sans); color:var(--lz-tinta); font-size:10px; letter-spacing:.13em}
body.tema-luz-activo .nav-der-link:hover{color:var(--lz-oro-tinta)}
body.tema-luz-activo .tg-idioma button{color:var(--lz-tinta-suave); font-family:var(--lz-sans)}
body.tema-luz-activo .tg-idioma button.activo{color:var(--lz-oscuro)}
body.tema-luz-activo .tg-idioma .sep{color:rgba(39,37,34,.28)}
/* "Mi cuenta": recorte de papel negro, no un botón de UI */
body.tema-luz-activo .entrar, body.tema-luz-activo .icono-cuenta{
  font-family:var(--lz-sans); background:var(--lz-oscuro); color:var(--lz-crema);
  border:0; border-radius:1px; padding:11px 20px; font-size:10.5px; letter-spacing:.13em;
  text-transform:uppercase; font-weight:600; display:flex; align-items:center; gap:8px;
  box-shadow:var(--lz-s2); transform:rotate(-.6deg);
  transition:transform .22s ease, box-shadow .22s ease;
  clip-path:polygon(0% 6%, 3% 0%, 40% 3%, 70% 0%, 100% 4%, 98% 50%, 100% 95%,
                    62% 100%, 28% 96%, 2% 100%, 0% 55%);
}
body.tema-luz-activo .entrar::before{content:"☆"; color:var(--lz-mostaza); font-size:12px}
body.tema-luz-activo .entrar:hover, body.tema-luz-activo .icono-cuenta:hover{
  transform:rotate(-.6deg) translateY(-2px); box-shadow:var(--lz-s3);
}
/* Chispitas de tinta alrededor del header, muy chicas */
body.tema-luz-activo .top::before, body.tema-luz-activo .top::after{
  content:""; position:absolute; pointer-events:none; background:var(--lz-oro); opacity:.5;
  -webkit-mask:var(--lz-chispa) center/contain no-repeat;
  mask:var(--lz-chispa) center/contain no-repeat;
}
body.tema-luz-activo{
  --lz-chispa:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0c.7 4.6 1.4 7.7 2.6 9.4C15.8 11 18.9 11.7 24 12c-4.6.7-7.7 1.4-9.4 2.6C13 15.8 12.3 18.9 12 24c-.7-4.6-1.4-7.7-2.6-9.4C8.2 13 5.1 12.3 0 12c4.6-.7 7.7-1.4 9.4-2.6C11 8.2 11.7 5.1 12 0Z' fill='black'/%3E%3C/svg%3E");
}
body.tema-luz-activo .top::before{left:35%; top:4px; width:13px; height:13px}
body.tema-luz-activo .top::after{right:19%; top:-2px; width:9px; height:9px; opacity:.38}
@media (max-width:860px){ body.tema-luz-activo .top::before, body.tema-luz-activo .top::after{display:none} }

/* ═══ MARGINALIA — la decoración recorre TODA la página ══════════════════
   Diferencia estructural con la referencia que faltaba: ahí los objetos no
   están sólo dentro del hero, bordean la hoja entera de arriba a abajo. Se
   posicionan en % del alto total de #vCatalogo, así siguen repartidos aunque
   el contenido crezca.

   NO quedan fuera del contenido, y el comentario anterior decia que si: media
   "verificado midiendo que ninguna invade el texto" y era falso. Medido en el
   navegador el 2026-09-01 a 1280px: `mg-ojo` ocupa x 12->106 y el h1 del hero
   empieza en x=44, o sea que la primera letra de "Descubre" quedaba tapada por
   el dije, y la "t" de "tiene para ti" por la lamina botanica.

   EL Z-INDEX BAJA DE 12 A 5. El 12 no competia contra `.lz-hero-texto`
   (z-index:50) como parecia: `.lz-hero-texto` vive DENTRO de `.lz-hero`, que
   es `position:relative; z-index:10` y por lo tanto su propio contexto de
   apilamiento -su 50 solo ordena a sus hermanos ahi adentro y nunca sale a
   competir afuera-. La comparacion real era marginalia(12) contra
   .lz-hero(10), y por eso el hero era la UNICA seccion tapada: todas las
   demas son z-index:20. Con 5 la decoracion queda debajo de todo el
   contenido, que es lo que corresponde a una decoracion de margen; ninguna
   tiene fondo opaco, asi que sigue viendose igual donde no hay texto.
   `pointer-events:none` la hacia invisible al diagnostico: `elementFromPoint`
   devolvia el H1 aunque el dije estuviera pintado encima. */
.lz-marginalia{position:absolute; inset:0; z-index:5; pointer-events:none}
.lz-mg{position:absolute; display:block; filter:drop-shadow(0 5px 10px rgba(40,30,20,.16))}
.lz-mg img, .lz-mg svg{width:100%; height:auto; display:block}

/* — borde izquierdo, de arriba a abajo — */
.lz-mg.mg-ojo{      left:1.4%; top:88px;  width:82px;  transform:rotate(-9deg) }
.lz-mg.mg-llave{    left:2.6%; top:210px; width:46px;  transform:rotate(14deg) }
.lz-mg.mg-botanica{ left:.6%;  top:330px; width:104px; --giro:-6deg; --giro-papel:4deg }
.lz-mg.mg-sol-chico{left:2%;   top:20%;   width:74px;  transform:rotate(7deg); opacity:.9 }
.lz-mg.mg-estrella{ left:3%;   top:38%;   width:52px;  transform:rotate(-4deg); opacity:.85 }
.lz-mg.mg-corazon{  left:1.6%; top:57%;   width:66px;  transform:rotate(9deg); opacity:.9 }

/* — borde derecho — */
.lz-mg.mg-mariposa{ right:1.2%; top:26%; width:88px; transform:rotate(8deg) }
.lz-mg.mg-luna{     right:2.4%; top:44%; width:58px; transform:rotate(-11deg); opacity:.9 }
.lz-mg.mg-espiral{  right:3.4%; top:62%; width:38px; color:var(--lz-oro); opacity:.7;
                    filter:none; transform:rotate(6deg) }
.lz-mg.mg-mariquita{right:2%;   top:74%; width:34px; transform:rotate(-16deg) }

/* En pantallas donde el contenido ya usa casi todo el ancho, la marginalia
   estorbaría: se apaga entera en vez de encimarse al texto. */
@media (max-width:1180px){ .lz-marginalia{display:none} }

/* ═══ HERO (§9, §32, §33) ════════════════════════════════════════════════
   Composición, no dos columnas rígidas: el texto y el collage se solapan y
   comparten aire. Más compacto y más denso que la primera pasada. */
.lz-hero{
  position:relative; z-index:10; max-width:var(--contenido); margin:0 auto;
  padding:38px 44px 30px; display:grid; grid-template-columns:1fr; gap:22px;
}
/* Papel grande de fondo del hero: la hoja sobre la que está pegado todo */
.lz-hero-hoja{
  position:absolute; z-index:-1; inset:6px 22px 34px;
  background-color:rgba(232,220,198,.5);
  background-image:var(--lz-fibra); background-size:200px 200px; background-blend-mode:multiply;
  box-shadow:var(--lz-s1); transform:rotate(-.5deg);
  clip-path:polygon(0% 2%, 7% .3%, 18% 2.4%, 30% .4%, 43% 2%, 56% .5%, 68% 2.3%, 80% .4%, 91% 2%, 100% .6%,
                    99.4% 30%, 100% 66%, 99.3% 98%,
                    88% 99.6%, 74% 97.6%, 60% 99.5%, 45% 97.5%, 31% 99.6%, 17% 97.6%, 6% 99.5%, 0% 98%,
                    .7% 64%, 0% 33%);
}
.lz-hero-texto{position:relative; z-index:50; max-width:540px; padding-top:10px}
.lz-hero-texto h1{
  font-family:var(--lz-serif); font-weight:700; font-size:clamp(46px,6.4vw,76px); line-height:.98;
  letter-spacing:-.02em; margin:0 0 20px; color:var(--lz-oscuro); font-optical-sizing:auto;
}
/* Cada linea del titulo entra desde abajo por una mascara (ver prepararTituloHero
   en app.js, que envuelve las lineas). El padding/margen negativo deja lugar a
   los descendentes de Bodoni y a la tira mostaza, que sobresale -3%. */
.lz-linea{display:block; overflow:hidden; padding:0 .15em .12em; margin:0 -.15em -.12em}
.lz-linea-in{
  display:inline-block; transform:translateY(112%) rotate(2.5deg); transform-origin:0 100%;
  animation:lzLinea 1.05s calc(.22s + var(--i,0) * .12s) cubic-bezier(.16,.84,.44,1) both;
}
@keyframes lzLinea{to{transform:translateY(0) rotate(0)}}
body.lz-listo .lz-linea-in{animation:none; transform:none}
/* Tira de papel mostaza detrás de "universo": rasgada, no un rectángulo (§9) */
.lz-hero-texto h1 .lz-resalto{
  position:relative; display:inline-block; padding:.02em .2em .04em; color:var(--lz-oscuro);
  font-style:italic; font-weight:500; letter-spacing:-.01em;
}
.lz-hero-texto h1 .lz-resalto::before{
  content:""; position:absolute; inset:12% -3% 12%; z-index:-1;
  background:linear-gradient(178deg, var(--lz-mostaza), #BE9636);
  transform:rotate(-1.1deg); opacity:.92;
  clip-path:polygon(0% 8%, 6% 0%, 17% 6%, 29% 1%, 41% 7%, 54% 1%, 66% 6%, 78% 0%, 89% 6%, 100% 2%,
                    99% 92%, 88% 99%, 76% 93%, 63% 100%, 50% 93%, 37% 99%, 25% 93%, 13% 100%, 4% 94%, 0% 98%);
}
.lz-hero-sub{
  font-family:var(--lz-sans); font-size:16px; line-height:1.62; color:var(--lz-tinta);
  max-width:34ch; margin:0 0 26px;
}
.lz-hero-sub .lz-chispa-txt{display:inline-block; width:13px; height:13px; vertical-align:-1px; color:var(--lz-oro)}
.lz-hero-disclaimer{
  font-family:var(--lz-sans); font-size:9px; line-height:1.55; color:rgba(74,66,56,.62);
  max-width:40ch; margin:20px 0 0;
}

/* CTA: recorte de papel negro con la esquina irregular (§11, §57) */
.lz-cta{
  position:relative; display:inline-flex; align-items:center; gap:13px; cursor:pointer; border:0;
  background:var(--lz-oscuro); color:var(--lz-crema); font-family:var(--lz-sans); font-weight:600;
  font-size:12.5px; letter-spacing:.11em; text-transform:uppercase; padding:17px 30px;
  text-decoration:none; border-radius:1px; box-shadow:var(--lz-s2);
  transition:transform .24s cubic-bezier(.2,.8,.3,1), box-shadow .24s ease;
  clip-path:polygon(0% 5%, 2% 0%, 35% 3%, 68% 0%, 100% 4%, 98.6% 48%, 100% 96%,
                    66% 100%, 33% 96.5%, 2% 100%, 0% 52%);
}
.lz-cta::after{content:"→"; font-size:14px; transition:transform .24s ease}
.lz-cta:hover{transform:translateY(-2px); box-shadow:var(--lz-s3)}
.lz-cta:hover::after{transform:translateX(4px)}
.lz-cta:active{transform:translateY(0)}

/* ═══ COLLAGE DEL HERO — capas físicas (§13, §51) ════════════════════════
   z-index por capa, no valores arbitrarios:
   papel 10 · paisaje 20 · sol 30 · figura 40 · querubines/flores 50 ·
   carta 55 · stickers/nota 60 · brillos 65 */
.lz-collage{position:relative; z-index:20; min-height:430px; margin:0 -10px}
.lz-collage img{display:block}
.lz-pieza{position:absolute}
.lz-pieza img{width:100%; height:100%; object-fit:contain}

/* Scrap de papel suelto detrás del collage, rotado y con cinta */
.lz-scrap{
  position:absolute; z-index:10;
  background-color:var(--lz-papel-2); background-image:var(--lz-fibra);
  background-size:200px 200px; background-blend-mode:multiply; box-shadow:var(--lz-s1);
}
/* s1 se apaga: la hoja manuscrita real (.lz-papel-carta) ocupa ese lugar y hace
   el mismo trabajo con papel de verdad. Dos capas de respaldo en la misma zona
   se leían como suciedad, no como profundidad. */
.lz-scrap.s1{ display:none }
/* s2 también se apaga: era un rectángulo de color plano y ahora hay papel real
   (la carta manuscrita) haciendo de respaldo. */
.lz-scrap.s2{ display:none }

/* Paisaje de montañas: al fondo, difuminado en el borde superior para que no
   se lea como un bloque verde recortado con tijera. */
.lz-paisaje{ left:-3%; right:-3%; bottom:2%; height:30%; z-index:20; opacity:.42 }
.lz-paisaje svg{
  width:100%; height:100%; color:var(--lz-salvia);
  -webkit-mask-image:linear-gradient(180deg, transparent 0, #000 42%, #000 100%);
  mask-image:linear-gradient(180deg, transparent 0, #000 42%, #000 100%);
}

/* Sol: el elemento más grande del collage. Se solapa con la cabeza de la
   figura para leerse como HALO detrás de ella, igual que la referencia (§13).
   Asset del dueño (grabado dorado con cara, 440x443). Reemplaza a la xilografía
   de 1493, que en su fuente estaba superpuesta a una luna: recortarla partía la
   cara y dejaba un halo gris de los trazos del propio grabado. */
/* aspect-ratio del asset real (399x530), no 1:1: con la caja cuadrada el
   `object-fit:contain` dejaba aire muerto arriba y abajo y el sol se veía
   más chico de lo que su ancho sugería. */
/* Tres restricciones medidas, no estimadas:
   1. el sol no puede empezar antes de y≈70 o pisa el menú del header;
   2. su disco (el ~73% superior de la caja) no puede llegar a la cabeza;
   3. la referencia lo quiere GRANDE, así que en vez de achicarlo se corre la
      figura a la derecha (left:28%) y su cabeza queda fuera del disco. */
.lz-sol{
  top:-8%; left:17%; width:50%; max-width:356px; aspect-ratio:440/443; z-index:30;
  filter:drop-shadow(0 6px 14px rgba(40,30,20,.16));
}
/* El giro lento va en la IMAGEN, no en la caja: la caja la mueve el parallax
   del mouse, y dos animaciones sobre el mismo `transform` se pisan. */
.lz-sol img{animation:lzGiraLento 300s linear infinite}
/* Figura: recorte pegado encima del paisaje, sombra propia distinta (§14).
   Arranca a media altura para que el sol quede detrás de su cabeza. */
/* ESCENA: mujer + montañas + campo de flores en un solo bloque de papel, como
   la referencia. Sustituye al grabado rococó monocromo, que era el hueco visual
   más grande: la referencia tiene una FOTO en color dentro de un paisaje.
   El bloque trae pegados unos rayos de su propio sol en la esquina superior
   izquierda; la máscara los disuelve para que asome el sol de la capa de abajo,
   en vez de ver dos soles superpuestos. */
.lz-escena{
  position:absolute; left:9%; bottom:-3%; width:72%; max-width:496px; z-index:40;
  filter:drop-shadow(0 12px 22px rgba(40,30,20,.2));
  /* Borde rasgado: el bloque venía como un rectángulo perfecto y se leía como
     un <img> pegado, no como un recorte de papel (§27). */
  clip-path:polygon(0% 2.4%, 7% .5%, 17% 2.6%, 28% .6%, 39% 2.4%, 50% .5%, 61% 2.6%, 72% .6%,
                    83% 2.4%, 93% .7%, 100% 2%,
                    99.2% 28%, 100% 56%, 99.3% 84%, 100% 97.4%,
                    90% 99.5%, 79% 97.4%, 68% 99.6%, 56% 97.5%, 45% 99.4%, 33% 97.3%, 22% 99.5%,
                    11% 97.4%, 0% 99%,
                    .8% 72%, 0% 44%, .7% 20%);
}
.lz-escena img{
  width:100%; height:auto; display:block;
  /* Dos máscaras a la vez:
     1. disuelve los rayos del propio sol del bloque (esquina superior
        izquierda) para que asome el sol de la capa de abajo, no dos soles;
     2. desvanece el canto izquierdo en su mitad alta, que si no corta los
        rayos del sol con una vertical recta y delata el rectángulo. */
  -webkit-mask-image:
    radial-gradient(ellipse 40% 30% at 18% 6%, transparent 26%, #000 76%),
    linear-gradient(100deg, transparent 0, rgba(0,0,0,.35) 7%, #000 17%);
  mask-image:
    radial-gradient(ellipse 40% 30% at 18% 6%, transparent 26%, #000 76%),
    linear-gradient(100deg, transparent 0, rgba(0,0,0,.35) 7%, #000 17%);
  -webkit-mask-composite:source-in; mask-composite:intersect;
}

/* Querubines sobre la nube, arriba a la derecha (§8 de la referencia).
   z-index por encima de la nota: con 45 quedaban tapados por ella (z 60). */
.lz-querubines{
  position:absolute; right:-3%; top:-9%; width:42%; max-width:290px; z-index:62;
  transform:rotate(1.5deg); filter:drop-shadow(0 8px 16px rgba(40,30,20,.18));
  -webkit-mask-image:radial-gradient(ellipse 60% 58% at 52% 54%, #000 56%, transparent 90%);
  mask-image:radial-gradient(ellipse 60% 58% at 52% 54%, #000 56%, transparent 90%);
}
.lz-querubines img{width:100%; height:auto; display:block}
/* `figura-vintage.webp` (el grabado rococó con alfa derivado de la tinta) salió
   del hero: la referencia pide una FOTO en color dentro de un paisaje, no un
   grabado monocromo. El asset y su script de recorte quedan en el repo. */
/* NINGUNA pieza lleva ya máscara de CSS. Regla que queda de esta ronda: o el
   asset trae alfa real, o no entra al collage. Un `radial-gradient` como
   máscara no recorta — deja un rectángulo con los bordes desvanecidos, y sobre
   un fondo claro se lee exactamente como lo que es: una foto mal pegada. */

/* Mariposa joya y luna con cara: reemplazan a los querubines de Rafael, que
   estaban pintados sobre nubes y no tienen borde recortable. "Alas" y motivos
   celestes están en la lista del brief (§10) igual que los querubines. */
.lz-alado{ z-index:50 }
.lz-alado.a1{ top:-1%; right:0%; width:20%; max-width:132px; aspect-ratio:1;
  --giro:5deg; transform:rotate(5deg); filter:drop-shadow(0 8px 15px rgba(40,30,20,.22)) }
.lz-alado.a2{ top:22%; right:22%; width:12%; max-width:78px; aspect-ratio:260/306;
  --giro:-7deg; transform:rotate(-7deg); filter:drop-shadow(0 5px 10px rgba(40,30,20,.2)) }
/* Botánica y corazón de rayos, escalas muy distintas (§61) */
.lz-flor{ z-index:50 }
/* La flor va A LOS PIES de la figura, como el campo florido de la referencia;
   la del margen izquierdo es otra instancia, a otra escala y lejos, para que
   no se lean como el mismo objeto repetido. */
.lz-flor.f1{ left:2%; bottom:-1%; width:17%; max-width:112px;
  --giro:-7deg; --giro-papel:6deg }
.lz-flor.f2{ left:1%; top:6%; width:11%; max-width:70px; aspect-ratio:300/287;
  --giro:12deg; transform:rotate(12deg); filter:drop-shadow(0 5px 9px rgba(40,30,20,.18)) }

/* Carta de tarot: objeto físico con marco de papel, cinta y sombra fuerte (§15) */
.lz-carta-tarot{
  position:absolute;
  right:-1%; bottom:11%; width:22%; max-width:172px; z-index:55;
  transform:rotate(7.5deg); padding:6px 6px 20px;
  background:#FBF7EC; background-image:var(--lz-fibra); background-size:120px 120px;
  background-blend-mode:multiply;
  box-shadow:var(--lz-s3); border-radius:1px;
}
.lz-carta-tarot img{width:100%; height:auto; object-fit:cover; aspect-ratio:5/8.6}
/* Segunda carta asomando por detrás — profundidad barata y creíble */
.lz-carta-tarot::before{
  content:""; position:absolute; inset:8px -14px 4px 18px; z-index:-1;
  background:#F0E7D5; border-radius:1px; transform:rotate(6deg);
  box-shadow:var(--lz-s1);
}
/* Nota escrita a mano, sujeta con cinta (§4) */
.lz-nota{
  position:absolute; left:70%; top:30%; z-index:60; max-width:152px; margin:0;
  padding:16px 18px 14px; text-align:center; transform:rotate(-4.5deg);
  background:#FBF7EC; background-image:var(--lz-fibra); background-size:150px 150px;
  background-blend-mode:multiply; box-shadow:var(--lz-s2);
  clip-path:polygon(0% 5%, 10% 1%, 24% 5%, 38% 0%, 52% 5%, 67% 1%, 81% 5%, 93% 0%, 100% 4%,
                    99% 94%, 88% 99%, 74% 94%, 60% 100%, 45% 94%, 31% 99%, 17% 94%, 5% 99%, 0% 95%);
}
.lz-nota span{
  font-family:var(--lz-serif); font-size:15.5px; font-style:italic; font-weight:500; color:var(--lz-tinta);
  line-height:1.4; display:block;
}
.lz-nota::after{content:"♥"; display:block; margin-top:6px; color:var(--lz-terracota); font-size:11px}

/* Stickers sueltos (§16, §67). Los tres primeros son OBJETOS FOTOGRAFIADOS que
   mandó el dueño —corazón bordado con ojo, llave de bronce, mariquita—, no
   dibujos SVG: el brief pide "assets visuales vintage, no iconos" (§15, §16).
   Cada uno con su giro, escala y sombra distintos. */
.lz-sticker{ position:absolute; z-index:60 }
.lz-sticker svg, .lz-sticker img{width:100%; height:100%; object-fit:contain; display:block}
.lz-sticker.st-ojo{ left:-3%; top:31%; width:15%; max-width:96px; aspect-ratio:260/267;
  transform:rotate(-8deg); filter:drop-shadow(0 5px 10px rgba(40,30,20,.24)) }
.lz-sticker.st-llave{ left:7%; bottom:24%; width:8%; max-width:52px; aspect-ratio:130/331;
  transform:rotate(16deg); filter:drop-shadow(0 3px 7px rgba(40,30,20,.2)) }
/* La mariquita se posa SOBRE la flor de abajo, no flotando en el vacío: §66
   pide que cada objeto tenga un punto de apoyo visual. */
.lz-sticker.st-mariquita{ left:14%; bottom:14%; width:7%; max-width:44px; aspect-ratio:150/177;
  transform:rotate(-14deg); filter:drop-shadow(0 3px 6px rgba(40,30,20,.26)) }
.lz-sticker.st-espiral{ left:2%; bottom:40%; width:5.5%; max-width:32px; aspect-ratio:1;
  color:var(--lz-oro); opacity:.75; transform:rotate(8deg) }
.lz-sticker.st-espiral svg{height:100%}

/* Hoja manuscrita del siglo XIX detrás del collage: papel de verdad, con su
   borde rasgado real. Reemplaza a un `.lz-scrap` que era color plano + clip-path. */
.lz-papel-carta{
  position:absolute; right:1%; top:-4%; width:46%; max-width:310px; z-index:10;
  opacity:.92; transform:rotate(4deg); filter:drop-shadow(0 7px 14px rgba(40,30,20,.18));
}

/* ═══ CARTA DEL DÍA ══════════════════════════════════════════════════════
   Una carta boca abajo sobre el papel; al tocarla gira y muestra la carta real
   del mazo con su significado. Sin cuenta, sin pago y sin LLM — el significado
   sale del mazo, así que no compite por Ollama con el show en vivo. */
.lz-carta-dia{
  position:relative; z-index:20; max-width:940px; margin:12px auto 0;
  padding:36px 44px 4px; display:grid; grid-template-columns:1fr auto; gap:34px; align-items:center;
}
.lz-cd-eyebrow{
  display:block; font-family:var(--lz-sans); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--lz-oro-tinta); margin:0 0 10px;
}
.lz-cd-texto h2{
  font-family:var(--lz-serif); font-weight:600; font-size:clamp(24px,3vw,34px);
  margin:0 0 12px; color:var(--lz-oscuro); line-height:1.1;
}
.lz-cd-texto p{font-family:var(--lz-sans); font-size:14px; line-height:1.65; color:var(--lz-tinta); max-width:36ch; margin:0}
.lz-cd-mesa{display:flex; align-items:center; gap:26px; flex-wrap:wrap; justify-content:flex-end}

/* La carta: dos caras y un giro 3D real, como levantar una carta de la mesa */
.lz-cd-carta{
  position:relative; width:152px; aspect-ratio:5/8.4; flex:0 0 auto; padding:0; border:0;
  background:none; cursor:pointer; transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.2,.75,.3,1);
  transform:rotate(-2.5deg);
}
.lz-cd-carta.girada{transform:rotate(1.5deg) rotateY(180deg)}
.lz-cd-carta:hover:not(.girada){transform:rotate(-2.5deg) translateY(-5px)}
.lz-cd-carta:focus-visible{outline:2px solid var(--lz-oro-tinta); outline-offset:6px}
.lz-cd-cara{
  position:absolute; inset:0; backface-visibility:hidden; border-radius:2px;
  overflow:hidden; box-shadow:var(--lz-s3); background:#FBF7EC;
}
.lz-cd-cara svg, .lz-cd-cara img{width:100%; height:100%; object-fit:cover; display:block}
.lz-cd-frente{transform:rotateY(180deg); padding:5px; background:#FBF7EC}
/* El mazo viene en violetas y celestes saturados que chocan con la paleta
   cálida. §29 pide tratar tonalmente cualquier asset que no pertenezca a la
   pieza en vez de mezclarlo crudo: sepia leve + saturación baja lo integra
   sin desteñir la carta. */
.lz-cd-frente img{border-radius:1px; filter:sepia(.42) saturate(.82) contrast(1.04) brightness(1.02)}

.lz-cd-lectura{max-width:290px}
.lz-cd-lectura h3{
  font-family:var(--lz-serif); font-weight:600; font-size:19px; margin:0 0 8px; color:var(--lz-oscuro);
}
.lz-cd-lectura p{font-family:var(--lz-sans); font-size:13.5px; line-height:1.6; color:var(--lz-tinta); margin:0 0 12px}
.lz-cd-lectura a{font-family:var(--lz-sans); font-size:12.5px}
.lz-cd-pista{
  font-family:var(--lz-sans); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--lz-tinta-suave); margin:0;
}
@media (prefers-reduced-motion: reduce){ .lz-cd-carta{transition:none} }

/* ═══ "ELIGE TU LECTURA" (§20, §69) ══════════════════════════════════════ */
.lz-lecturas{position:relative; z-index:20; max-width:var(--contenido); margin:0 auto; padding:16px 44px 0}
.lz-titulo-seccion{text-align:center; position:relative; margin:0 0 34px}
.lz-titulo-seccion .lz-orna{display:block; width:190px; margin:0 auto 12px; color:var(--lz-oro)}
.lz-titulo-seccion .lz-orna svg{width:100%; height:auto}
.lz-titulo-seccion h2{
  font-family:var(--lz-serif); font-weight:600; font-size:clamp(28px,3.6vw,40px);
  margin:0; color:var(--lz-oscuro); letter-spacing:-.01em;
}

/* Las cuatro lecturas: mini páginas de un journal, NO product cards (§11, §37).
   Cada una: papel propio, arco arriba, cinta, giro, sello, sombra distinta. */
.lz-destacadas{
  display:grid; grid-template-columns:repeat(4,1fr); gap:22px; align-items:start;
}
/* El papel se pinta en un ::before, NO en el botón: el clip-path del borde
   rasgado recortaba la etiqueta "Más elegida" que sobresale por arriba,
   dejándola como una mancha negra. Clipeando solo la capa de papel, los
   elementos que salen del papel (badge, cinta, sello) siguen visibles. */
.lz-lectura{
  position:relative; display:flex; flex-direction:column; align-items:stretch;
  padding:16px 16px 20px; cursor:pointer; border:0; text-align:center;
  background:none; color:var(--lz-oscuro); overflow:visible;
  transform:rotate(var(--giro,0deg));
  transition:transform .3s cubic-bezier(.2,.8,.3,1), filter .3s ease;
  filter:drop-shadow(var(--lz-sombra-propia, 0 6px 14px rgba(40,30,20,.15)));
}
.lz-lectura::before{
  content:""; position:absolute; inset:0; z-index:0;
  background-color:var(--lz-papel); background-image:var(--lz-fibra);
  background-size:200px 200px; background-blend-mode:multiply;
  clip-path:polygon(0% 1.6%, 9% .2%, 22% 1.8%, 36% .3%, 50% 1.6%, 64% .2%, 78% 1.8%, 91% .3%, 100% 1.4%,
                    99.4% 34%, 100% 68%, 99.3% 98.4%,
                    89% 99.8%, 76% 98.2%, 62% 99.7%, 48% 98.3%, 34% 99.8%, 20% 98.2%, 8% 99.7%, 0% 98.6%,
                    .7% 66%, 0% 32%);
}
.lz-lectura > *{position:relative; z-index:1}
/* Tinte por lectura: color, sello, sombra Y TONO DE PAPEL propios — nunca
   cuatro clones (§21). Los cuatro papeles son de colores distintos, como
   cuatro hojas diferentes del mismo cuaderno. */
.lz-lectura.lzt-salvia{  --lzt:#4E5647; --lzt-rgb:var(--lz-salvia-rgb);  --lz-sombra-propia:0 5px 12px rgba(40,30,20,.15) }
.lz-lectura.lzt-rosa{    --lzt:#8E4B36; --lzt-rgb:var(--lz-rosa-rgb);    --lz-sombra-propia:0 3px 8px rgba(40,30,20,.13) }
.lz-lectura.lzt-oliva{   --lzt:#5C5A3F; --lzt-rgb:var(--lz-oliva-rgb);  --lz-sombra-propia:0 11px 22px rgba(40,30,20,.2) }
.lz-lectura.lzt-mostaza{ --lzt:#7F5C1F; --lzt-rgb:var(--lz-mostaza-rgb); --lz-sombra-propia:0 6px 14px rgba(40,30,20,.16) }
.lz-lectura.lzt-salvia::before{  background-color:#E2E1D2 }
.lz-lectura.lzt-rosa::before{    background-color:#EFDCD5 }
.lz-lectura.lzt-oliva::before{   background-color:#E1DFC8 }
.lz-lectura.lzt-mostaza::before{ background-color:#F0E5CC }

/* Hover 3D: la tarjeta se inclina siguiendo al mouse (--rx/--ry los setea
   app.js, solo con puntero fino). Sin mouse encima vuelve sola. */
.lz-lectura:hover{
  transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) rotate(calc(var(--giro,0deg) * .35)) translateY(-6px);
  z-index:5; filter:drop-shadow(0 18px 30px rgba(40,30,20,.26)) }
.lz-lectura:hover .lz-lectura-emblema{ transform:translateY(-3px) scale(1.04) }
.lz-lectura:hover .lz-lectura-flecha{ transform:translateX(5px) }
.lz-lectura:focus-visible{ outline:2px solid var(--lz-oro-tinta); outline-offset:4px }

/* Arco: panel de color liso con forma de carta de tarot, y la ilustración
   vintage CENTRADA encima. Antes acá iba una foto del catálogo recortada en
   arco, y eso convertía las cuatro en fichas de producto. */
.lz-lectura-arco{
  position:relative; display:grid; place-items:center; margin:4px 0 14px;
  aspect-ratio:1/1.2; border-radius:999px 999px 2px 2px;
  background:rgba(var(--lzt-rgb),.26);
  box-shadow:inset 0 0 0 1px rgba(var(--lzt-rgb),.42);
  overflow:hidden;
}
/* Rayos tenues detrás del emblema, como los grabados de la referencia */
.lz-lectura-arco::before{
  content:""; position:absolute; inset:0;
  background:repeating-conic-gradient(from 0deg at 50% 46%,
    rgba(var(--lzt-rgb),.16) 0deg 3deg, transparent 3deg 9deg);
  -webkit-mask-image:radial-gradient(circle at 50% 46%, #000 18%, transparent 62%);
  mask-image:radial-gradient(circle at 50% 46%, #000 18%, transparent 62%);
}
.lz-lectura-emblema{
  position:relative; z-index:1; width:58%; max-width:104px; height:auto;
  filter:drop-shadow(0 4px 9px rgba(40,30,20,.22));
  transition:transform .35s cubic-bezier(.2,.8,.3,1);
}

.lz-lectura-cuerpo{display:flex; flex-direction:column; gap:5px; padding-top:8px}
.lz-lectura-nombre{
  font-family:var(--lz-serif); font-weight:600; font-size:19px; line-height:1.18;
  color:var(--lz-oscuro); text-wrap:balance;
}
.lz-lectura-que{font-family:var(--lz-sans); font-size:12px; color:var(--lz-tinta-suave); letter-spacing:.02em}
.lz-lectura-precio{
  font-family:var(--lz-serif); font-weight:600; font-size:19px; color:var(--lzt);
  display:flex; align-items:center; justify-content:center; gap:5px; margin-top:3px;
}
.lz-lectura-precio .coin{font-style:normal; font-size:12px; opacity:.85}
.lz-lectura-flecha{
  font-family:var(--lz-sans); font-size:17px; color:var(--lz-tinta); margin-top:7px;
  transition:transform .24s ease;
}
/* "Empezá acá" / "La más completa": etiqueta de papel oscuro pegada arriba */
.lz-lectura-badge{
  position:absolute; z-index:65; top:-11px; left:50%; transform:translateX(-50%) rotate(-1.6deg);
  background:var(--lz-oscuro); color:var(--lz-crema); font-family:var(--lz-sans);
  font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; font-weight:600;
  padding:5px 11px; white-space:nowrap; box-shadow:var(--lz-s1); border-radius:1px;
}
.lz-lectura-badge::after{content:" ✦"; color:var(--lz-mostaza)}

.lz-pie-lecturas{
  display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap;
  margin:34px 0 0; font-family:var(--lz-sans); font-size:12.5px; color:var(--lz-tinta);
}
.lz-pie-sep{color:rgba(74,66,56,.4)}
.lz-link-tinta{color:var(--lz-oro-tinta); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px}
.lz-link-tinta:hover{color:var(--lz-oscuro)}

/* ═══ DIARIO DE LUZ (§20, §21, §70) ══════════════════════════════════════
   Hoja verde ARRANCADA y pegada: borde irregular en los cuatro lados, giro,
   textura propia, cinta que la sujeta y un querubín que se sale del bloque. */
/* La hoja verde se pinta en un ::before para que el borde rasgado NO recorte
   al querubín, que por diseño tiene que salirse del bloque (§26). */
/* width con gutter fijo en vez de margin:auto a secas: la hoja está ROTADA, y
   pegada al borde del viewport sus esquinas salían de la página (15px medidos
   a 1280). Con 44px de aire a cada lado la rotación y el querubín que asoma
   caben sin desbordar — §2.14: se arregla la causa, no se tapa con overflow. */
.lz-diario{
  position:relative; z-index:20; width:calc(100% - 88px); max-width:var(--contenido);
  margin:74px auto 0; padding:52px 46px 48px; color:#F4F1E7;
  transform:rotate(-.45deg); filter:drop-shadow(0 13px 28px rgba(40,30,20,.22));
  display:grid; grid-template-columns:minmax(190px,262px) 1fr; gap:40px;
}
.lz-diario::before{
  content:""; position:absolute; inset:0; z-index:0;
  /* Un punto más hondo que --lz-salvia para que el texto blanco pase AA (5.47:1
     medido, contra 4.58:1 con el salvia base). Sigue siendo el mismo verde. */
  background-color:#5C6451;
  background-image:
    radial-gradient(ellipse 50% 40% at 20% 30%, rgba(0,0,0,.09), transparent 70%),
    radial-gradient(ellipse 40% 35% at 82% 70%, rgba(255,255,255,.05), transparent 70%),
    var(--lz-veteado);
  background-size:auto, auto, 420px 420px; background-blend-mode:normal, normal, multiply;
  clip-path:polygon(0% 2.2%, 6% .4%, 15% 2.6%, 25% .5%, 35% 2.2%, 46% .3%, 57% 2.5%, 67% .4%,
                    77% 2.3%, 87% .5%, 95% 2.6%, 100% .8%,
                    99.2% 26%, 100% 53%, 99.3% 79%, 100% 97.6%,
                    92% 99.6%, 82% 97.4%, 71% 99.5%, 60% 97.3%, 49% 99.6%, 38% 97.4%, 27% 99.5%,
                    17% 97.3%, 8% 99.6%, 0% 98%,
                    .8% 76%, 0% 50%, .7% 24%);
}
.lz-diario > *{position:relative; z-index:1}
.lz-diario-texto b{
  font-family:var(--lz-serif); font-weight:600; font-size:clamp(27px,3.1vw,36px);
  display:block; line-height:1.06; margin:0 0 18px; letter-spacing:.02em;
}
/* Sin alpha: a .82 sobre el verde daba 3.52:1 -falla AA para texto de cuerpo-.
   A opacidad plena y con el verde de la hoja un punto más hondo, 5.47:1. */
.lz-diario-texto p{
  font-family:var(--lz-sans); font-size:13.5px; line-height:1.65;
  color:#F4F1E7; max-width:28ch; margin:0 0 26px;
}
.lz-diario .lz-cta{background:#F6F3E8; color:var(--lz-oscuro); box-shadow:0 4px 12px rgba(0,0,0,.22)}
.lz-diario-lista{display:grid; grid-template-columns:repeat(3,1fr); gap:22px}
/* Cada artículo: recorte pegado con cinta, giro propio, sombra propia (§25) */
.lz-articulo{
  position:relative; background:#FBF7EC; color:var(--lz-oscuro); border-radius:1px;
  padding:9px 9px 2px; transform:rotate(var(--giro,0deg));
  transition:transform .3s cubic-bezier(.2,.8,.3,1), box-shadow .3s ease;
}
.lz-articulo:nth-child(1){--giro:-2deg;  box-shadow:var(--lz-s2)}
.lz-articulo:nth-child(2){--giro:1.4deg; box-shadow:var(--lz-s3)}
.lz-articulo:nth-child(3){--giro:-.9deg; box-shadow:var(--lz-s2)}
.lz-articulo:hover{transform:rotate(calc(var(--giro,0deg) * .3)) translateY(-4px); box-shadow:var(--lz-s3)}
.lz-articulo-img{aspect-ratio:4/3; overflow:hidden; background:rgba(39,37,34,.07)}
.lz-articulo-img img{width:100%; height:100%; object-fit:cover; filter:sepia(.26) saturate(1.04) contrast(1.02)}
.lz-articulo h3, .lz-articulo h4{
  font-family:var(--lz-serif); font-size:16.5px; line-height:1.25; font-weight:600;
  margin:12px 5px 6px; letter-spacing:-.01em;
}
/* Parallax interno de la foto al scrollear (--sy lo setea app.js): la foto
   esta un 14% mas grande que su marco y se desliza dentro de el. */
.lz-articulo-img img{transform:translateY(var(--sy,0px)) scale(1.14); will-change:transform}
.lz-articulo time{
  display:block; margin:0 5px 12px; font-family:var(--lz-sans); font-size:9px;
  letter-spacing:.14em; color:rgba(39,37,34,.5); text-transform:uppercase;
}
/* Bola de cristal apoyada en el borde de la hoja verde (§26): se sale del
   bloque, tiene alfa real y es objeto de tarot, no un querubín borroso.
   Abajo y hacia afuera para no tapar el tercer artículo (§64). */
/* Más a la derecha y más abajo que el primer intento: centrada sobre el borde
   tapaba la última palabra del tercer artículo ("...en tu camino"). §64. */
/* SE VEIA MAL: A CABALLO ENTRE EL PAPEL VERDE Y EL FONDO CLARO (2026-09-01,
   reporte real con captura: "se ve mal la bola de cristal esta mal puesta").
   `bottom:-21%` la hacia colgar 68px por debajo del borde de `.lz-diario` a
   1280px -y `.lz-beneficios` no tiene fondo propio (es la crema de la pagina),
   asi que la mitad de arriba de la bola quedaba sobre el papel rasgado verde
   y la mitad de abajo sobre la crema: una esfera que reflejaria SU ALREDEDOR
   partida en dos colores planos, ni sentada en un lado ni en el otro. Medido
   en las tres resoluciones que la tocan (1280, 700, 400px): las tres cruzaban
   el borde. Ahora queda DENTRO del papel torn-edge de `.lz-diario::before`
   (que ademas esta inset ~2-3% del borde de la caja, ver ese selector) en las
   tres. */
.lz-diario-bola{
  position:absolute; right:-2%; bottom:38%; width:122px; height:auto; z-index:60;
  filter:drop-shadow(0 14px 20px rgba(0,0,0,.3));
}

/* ═══ BENEFICIOS (§23) — la pausa del journal, limpia pero no corporativa ═══ */
.lz-beneficios{
  position:relative; z-index:20; max-width:var(--contenido); margin:0 auto;
  padding:86px 44px 62px; display:grid; grid-template-columns:repeat(4,1fr); gap:34px;
}
.lz-beneficio{text-align:center; position:relative}
/* Ilustraciones vintage recortadas, no iconos de línea: el §19 pide "pequeño
   símbolo vintage", y cuatro SVG geométricos delataban la UI moderna debajo. */
.lz-ben-ilus{
  width:auto; height:46px; margin:0 auto 16px; display:block;
  filter:drop-shadow(0 3px 7px rgba(40,30,20,.18));
}
.lz-beneficio svg{width:36px; height:36px; color:var(--lz-oro); margin:0 auto 16px; display:block}
.lz-beneficio b{
  display:block; font-family:var(--lz-sans); font-size:11.5px; letter-spacing:.13em;
  text-transform:uppercase; margin:0 0 9px; color:var(--lz-oscuro); font-weight:600;
}
.lz-beneficio span{font-family:var(--lz-sans); font-size:13px; line-height:1.6; color:var(--lz-tinta)}
/* Filete de tinta entre columnas, a mano alzada */
.lz-beneficio + .lz-beneficio::before{
  content:""; position:absolute; left:-17px; top:12%; bottom:12%; width:2px; opacity:.3;
  background:var(--lz-oro);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 100' preserveAspectRatio='none'%3E%3Cpath d='M1.5 2c.7 16-.8 32 .3 48s-.4 32 .1 48' stroke='black' stroke-width='1' fill='none'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 100' preserveAspectRatio='none'%3E%3Cpath d='M1.5 2c.7 16-.8 32 .3 48s-.4 32 .1 48' stroke='black' stroke-width='1' fill='none'/%3E%3C/svg%3E") center/100% 100% no-repeat;
}

/* ═══ NEWSLETTER (§22) — hoja rosa pegada, no un banner ══════════════════ */
/* Mismo patrón: el papel rosa va en ::before para que la flor y el sol
   puedan salirse por las esquinas sin que el rasgado los corte. */
.lz-newsletter{
  position:relative; z-index:20; max-width:820px; margin:16px auto 92px; padding:50px 48px 46px;
  color:#3A211C; text-align:center; transform:rotate(.6deg);
  filter:drop-shadow(0 13px 28px rgba(40,30,20,.2));
}
.lz-newsletter::before{
  content:""; position:absolute; inset:0; z-index:0;
  background-color:var(--lz-rosa);
  background-image:
    radial-gradient(ellipse 48% 40% at 25% 25%, rgba(255,255,255,.13), transparent 70%),
    radial-gradient(ellipse 44% 36% at 80% 78%, rgba(124,68,58,.09), transparent 70%),
    var(--lz-fibra);
  background-size:auto, auto, 200px 200px; background-blend-mode:normal, normal, multiply;
  clip-path:polygon(0% 3%, 8% .5%, 19% 3.4%, 31% .6%, 43% 3%, 55% .4%, 67% 3.2%, 79% .6%, 90% 3%, 100% 1%,
                    99% 30%, 100% 62%, 99.2% 97%,
                    89% 99.5%, 77% 97%, 65% 99.6%, 52% 97.2%, 40% 99.5%, 27% 97.1%, 15% 99.6%, 0% 98%,
                    1% 66%, 0% 34%);
}
.lz-newsletter > *{position:relative; z-index:1}
.lz-newsletter h2{font-family:var(--lz-serif); font-weight:600; font-size:clamp(24px,2.8vw,32px); margin:0 0 11px}
.lz-newsletter p{font-family:var(--lz-sans); font-size:14px; max-width:42ch; margin:0 auto 28px; color:rgba(58,33,28,.8)}
.lz-newsletter form{display:flex; gap:10px; max-width:450px; margin:0 auto; flex-wrap:wrap; justify-content:center}
.lz-newsletter input{
  flex:1 1 230px; font-family:var(--lz-sans); font-size:13.5px; padding:14px 16px;
  border:1px solid rgba(58,33,28,.2); border-radius:1px; color:var(--lz-oscuro);
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:140px 140px;
  background-blend-mode:multiply;
}
.lz-newsletter input::placeholder{color:rgba(58,33,28,.5)}
.lz-newsletter input:focus{outline:2px solid var(--lz-borgona); outline-offset:1px}
.lz-newsletter button{
  font-family:var(--lz-sans); font-weight:600; font-size:11.5px; letter-spacing:.11em;
  text-transform:uppercase; background:var(--lz-oscuro); color:#FBF7EC; border:0;
  border-radius:1px; padding:14px 24px; cursor:pointer; box-shadow:var(--lz-s1);
  transition:transform .22s ease, box-shadow .22s ease;
}
.lz-newsletter button:hover{transform:translateY(-2px); box-shadow:var(--lz-s2)}
/* Lirios sobre su papelito, pegados en la esquina y saliéndose del bloque. */
.lz-newsletter-flor{
  position:absolute; left:-30px; top:-40px; width:124px; z-index:65;
  --giro:-11deg; --giro-papel:5deg;
}
.lz-newsletter-sol{
  position:absolute; right:38px; top:-30px; width:70px; height:70px; z-index:65;
  color:var(--lz-oro-tinta); filter:drop-shadow(0 5px 9px rgba(40,30,20,.22)); transform:rotate(6deg);
}

/* ═══ FOOTER (§46) — el collage sigue hasta el final ═════════════════════ */
.lz-footer{position:relative; z-index:20; max-width:var(--contenido); margin:0 auto; padding:12px 44px 120px}
.lz-footer::before{ /* filete de tinta, trazo irregular */
  content:""; display:block; height:2px; margin:0 0 44px; opacity:.28; background:var(--lz-oro);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 4' preserveAspectRatio='none'%3E%3Cpath d='M2 2.6c50-1.4 100-1.9 150-1.2s100 1.8 150 1.1 60-1.2 96-.4' stroke='black' stroke-width='1.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 4' preserveAspectRatio='none'%3E%3Cpath d='M2 2.6c50-1.4 100-1.9 150-1.2s100 1.8 150 1.1 60-1.2 96-.4' stroke='black' stroke-width='1.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
}
/* Tres cartas repartidas a mano, con marco de papel y sombras distintas */
.lz-footer-cartas{display:flex; justify-content:center; align-items:flex-end; gap:0; margin:0 0 42px}
.lz-footer-cartas img{
  width:104px; aspect-ratio:5/8.6; object-fit:cover; border-radius:1px;
  padding:5px; background:#FBF7EC;
}
.lz-footer-cartas img:nth-child(1){transform:rotate(-10deg) translateX(20px); z-index:1; box-shadow:var(--lz-s2)}
.lz-footer-cartas img:nth-child(2){transform:rotate(1.5deg) translateY(-10px); z-index:3; box-shadow:var(--lz-s3)}
.lz-footer-cartas img:nth-child(3){transform:rotate(9deg) translateX(-20px); z-index:2; box-shadow:var(--lz-s2)}
/* Adornos de borde del footer. Van FLANQUEANDO las cartas, no abajo: ahí
   pisaban el texto legal, y §64 lo prohíbe explícitamente. */
.lz-footer-flor{
  position:absolute; left:4%; top:52px; width:112px; z-index:20;
  --giro:8deg; --giro-papel:-5deg;
}
.lz-footer-querubin{
  position:absolute; right:4%; top:46px; width:120px; z-index:20;
  --giro:-6deg; --giro-papel:4deg;
}
body.tema-luz-activo .disclaimer{
  max-width:64ch; margin:0 auto; padding:0; font-family:var(--lz-sans);
  font-size:9.5px; line-height:1.6; color:rgba(74,66,56,.66); text-align:center;
}
.lz-footer-redes{
  display:flex; align-items:center; justify-content:center; gap:16px; margin:26px 0 24px;
  font-family:var(--lz-sans); font-size:10px; letter-spacing:.15em; text-transform:uppercase;
  color:var(--lz-tinta);
}
/* Antes eran <svg> sueltos con aria-hidden -puramente decorativos, sin link-.
   Ahora son <a href> reales (2026-09-01), asi que necesitan su propio estado
   de foco/hover -sin esto el teclado no puede ver donde esta parado, y un
   link sin subrayado ni color propio no se distingue de texto muerto. */
.lz-redes-iconos{display:flex; gap:15px}
.lz-redes-iconos a{
  display:flex; color:var(--lz-oro-tinta); transition:opacity .22s;
}
.lz-redes-iconos a:hover, .lz-redes-iconos a:focus-visible{opacity:.62}
.lz-redes-iconos a:focus-visible{outline:1.5px solid var(--lz-oro-tinta); outline-offset:3px; border-radius:2px}
.lz-redes-iconos svg{width:17px; height:17px}
.lz-footer-filas{
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px;
  font-family:var(--lz-sans); font-size:10px; letter-spacing:.09em; color:var(--lz-tinta-suave);
}
.lz-footer-legal{display:flex; gap:22px}
.lz-footer-legal a{color:inherit; text-decoration:none}
.lz-footer-legal a:hover{color:var(--lz-oro-tinta); text-decoration:underline; text-underline-offset:3px}

/* Brillos sembrados por todo el canvas, no en una sola zona */
.lz-polvo{position:absolute; inset:0; z-index:30; pointer-events:none; overflow:hidden}

/* ═══ REVELADO ═══
   `.revelar` NO se redefine acá a propósito: ya vive en estilos.css y lo usa
   también la página de lectura. Redefinirlo sin el prefijo `body.tema-luz-activo`
   filtraría el estilo al resto del sitio, justo lo que este archivo evita. */

/* ═══ ENTRADA COREOGRAFIADA DEL HERO (2026-09-02) ═══════════════════════════
   Antes: todas las piezas hacian el mismo fade de 16px, a la vez — se leia
   como "carga la pagina", no como un collage que se arma. Ahora cada pieza
   LLEGA desde su propio lado, con su giro que se asienta y su escala: el sol
   crece y frena con un pelo de rebote, la escena sube desde abajo, los
   querubines bajan desde la nube, la carta se reparte sobre la mesa, la nota
   y los stickers se PEGAN (bajan escalados y se aplastan). Un solo keyframe
   parametrizado: --dx/--dy (desde donde), --dr (giro extra al llegar),
   --ds (escala inicial), --fin (giro final, igual al estatico). `both` para
   que antes de su turno la pieza no exista (sin flash). Al terminar,
   `body.lz-listo` apaga la animacion y deja el transform estatico con el
   parallax del mouse (--px/--py, que setea app.js) — mismo valor final, asi
   que no salta. */
@keyframes lzLlega{
  from{opacity:0; transform:translate(var(--dx,0px), var(--dy,44px)) rotate(calc(var(--fin,0deg) + var(--dr,-5deg))) scale(var(--ds,.96))}
  to{opacity:1; transform:translate(0,0) rotate(var(--fin,0deg)) scale(1)}
}
.lz-hero-hoja{ --dy:0px; --dr:0deg; --ds:.985; animation:lzLlega 1.1s .02s cubic-bezier(.16,.84,.44,1) both }
.lz-hero-sub{ --dy:16px; --dr:0deg; --ds:1; animation:lzLlega .8s .82s cubic-bezier(.16,.84,.44,1) both }
.lz-hero-texto .lz-cta{ --dy:18px; --dr:-1.5deg; --ds:.97; animation:lzLlega .8s .95s cubic-bezier(.34,1.25,.5,1) both }
.lz-hero-disclaimer{ --dy:10px; --dr:0deg; --ds:1; animation:lzLlega .8s 1.1s ease-out both }

.lz-papel-carta{ --fin:4deg;   --dx:90px;  --dy:-10px; --dr:9deg;   --ds:.97; animation:lzLlega 1s .28s cubic-bezier(.16,.84,.44,1) both }
.lz-paisaje{     --fin:0deg;   --dx:0px;   --dy:34px;  --dr:0deg;   --ds:1;   animation:lzLlega 1s .36s cubic-bezier(.16,.84,.44,1) both }
.lz-sol{         --fin:0deg;   --dx:0px;   --dy:18px;  --dr:-24deg; --ds:.55; animation:lzLlega 1.15s .46s cubic-bezier(.34,1.3,.5,1) both }
.lz-escena{      --fin:0deg;   --dx:0px;   --dy:74px;  --dr:-2.5deg;--ds:.98; animation:lzLlega 1.05s .6s cubic-bezier(.16,.84,.44,1) both }
.lz-querubines{  --fin:1.5deg; --dx:56px;  --dy:-44px; --dr:6deg;   --ds:.94; animation:lzLlega 1s .76s cubic-bezier(.16,.84,.44,1) both }
.lz-alado.a1{    --fin:5deg;   --dx:24px;  --dy:-56px; --dr:16deg;  --ds:.9;  animation:lzLlega .9s .86s cubic-bezier(.16,.84,.44,1) both }
.lz-alado.a2{    --fin:-7deg;  --dx:0px;   --dy:-34px; --dr:-10deg; --ds:.9;  animation:lzLlega .9s .92s cubic-bezier(.16,.84,.44,1) both }
.lz-flor.f1{     --fin:0deg;   --dx:-64px; --dy:20px;  --dr:-9deg;  --ds:.94; animation:lzLlega .9s .9s cubic-bezier(.16,.84,.44,1) both }
.lz-flor.f2{     --fin:12deg;  --dx:-40px; --dy:-20px; --dr:-14deg; --ds:.9;  animation:lzLlega .9s .96s cubic-bezier(.16,.84,.44,1) both }
.lz-carta-tarot{ --fin:7.5deg; --dx:72px;  --dy:48px;  --dr:15deg;  --ds:.92; animation:lzLlega .95s 1.04s cubic-bezier(.34,1.2,.5,1) both }
.lz-nota{        --fin:-4.5deg;--dx:0px;   --dy:-30px; --dr:-7deg;  --ds:1.18;animation:lzLlega .7s 1.22s cubic-bezier(.34,1.35,.5,1) both }
.lz-sticker.st-mariquita{ --fin:-14deg; --dx:0px; --dy:-22px; --dr:20deg; --ds:1.45; animation:lzLlega .6s 1.34s cubic-bezier(.34,1.4,.5,1) both }
.lz-sticker.st-espiral{   --fin:8deg;   --dx:0px; --dy:-16px; --dr:-30deg;--ds:1.4;  animation:lzLlega .6s 1.42s cubic-bezier(.34,1.4,.5,1) both }
/* Marginalia: aparece al final, apenas escalada, sin tocar sus giros (van en la caja) */
.lz-mg img, .lz-mg svg{ opacity:0; animation:lzMgEntra .9s var(--mgd,1.4s) ease both }
@keyframes lzMgEntra{ from{opacity:0; transform:scale(.82)} to{opacity:1; transform:none} }
.lz-mg:nth-child(2n) img{--mgd:1.55s} .lz-mg:nth-child(3n) img, .lz-mg:nth-child(3n) svg{--mgd:1.7s}

/* Al terminar la entrada: transform estatico + parallax del mouse. --px/--py
   en [-1,1] los setea app.js sobre .lz-collage; --prof es cuantos px se
   desplaza cada capa por unidad — mas cerca de la camara, mas se mueve. */
body.lz-listo .lz-papel-carta, body.lz-listo .lz-paisaje, body.lz-listo .lz-sol, body.lz-listo .lz-escena,
body.lz-listo .lz-querubines, body.lz-listo .lz-alado, body.lz-listo .lz-flor, body.lz-listo .lz-carta-tarot,
body.lz-listo .lz-nota, body.lz-listo .lz-sticker{
  animation:none; opacity:1;
  transform:translate(calc(var(--px,0) * var(--prof,0px)), calc(var(--py,0) * var(--prof,0px))) rotate(var(--fin,0deg));
  transition:transform .9s cubic-bezier(.2,.8,.3,1);
}
body.lz-listo .lz-hero-hoja, body.lz-listo .lz-hero-sub, body.lz-listo .lz-hero-texto .lz-cta, body.lz-listo .lz-hero-disclaimer,
body.lz-listo .lz-mg img, body.lz-listo .lz-mg svg{ animation:none; opacity:1; transform:none }
.lz-paisaje{--prof:5px} .lz-papel-carta{--prof:8px} .lz-escena{--prof:9px} .lz-sol{--prof:14px}
.lz-flor.f1{--prof:20px} .lz-querubines{--prof:22px} .lz-flor.f2{--prof:26px} .lz-alado.a2{--prof:28px}
.lz-carta-tarot{--prof:30px} .lz-alado.a1{--prof:34px} .lz-nota{--prof:36px} .lz-sticker{--prof:42px}
/* La nota flota un pelo aunque el mouse no se mueva: es la unica pieza con
   texto, y un papel pegado con cinta nunca esta perfectamente quieto. */
body.lz-listo .lz-nota > span:last-child{ display:block; animation:lzFlotarIn 7s ease-in-out -2s infinite }

@media (prefers-reduced-motion: reduce){
  .lz-hero-hoja, .lz-hero-sub, .lz-hero-texto .lz-cta, .lz-hero-disclaimer, .lz-papel-carta, .lz-paisaje, .lz-sol,
  .lz-escena, .lz-querubines, .lz-alado, .lz-flor, .lz-carta-tarot, .lz-nota, .lz-sticker, .lz-mg img, .lz-mg svg,
  .lz-linea-in{ opacity:1; animation:none; transform:rotate(var(--fin,0deg)) }
  .lz-linea-in, .lz-hero-hoja, .lz-hero-sub, .lz-hero-disclaimer, .lz-mg img, .lz-mg svg{ transform:none }
  body.lz-listo .lz-nota > span:last-child{ animation:none }
}

/* ═══════════════════════════════════════════════════════════════════════
   RESPONSIVE (§40, §41, §47-§51). El collage NO se achica: se RECOMPONE.
   ═══════════════════════════════════════════════════════════════════════ */

/* ---- Desktop ancho: texto y collage lado a lado ---- */
@media (min-width:900px){
  .lz-hero{
    grid-template-columns:minmax(390px,.92fr) 1.08fr; align-items:center;
    padding:52px 44px 44px; min-height:600px; gap:14px;
  }
  .lz-hero-texto{padding-right:0}
  .lz-collage{min-height:530px; align-self:stretch}
}
@media (min-width:1200px){
  .lz-hero{min-height:660px; padding:60px 44px 48px}
  .lz-collage{min-height:580px}
}

/* ---- Tablet ---- */
@media (max-width:899px){
  .lz-hero{padding:34px 26px 20px; gap:14px}
  .lz-collage{min-height:440px; margin:0}
  .lz-carta-dia{padding:34px 26px 4px; gap:28px}
  .lz-cd-mesa{gap:20px}
  .lz-lecturas{padding:8px 26px 0}
  .lz-destacadas{grid-template-columns:repeat(2,1fr); gap:26px 20px}
  .lz-diario{grid-template-columns:1fr; padding:40px 30px 42px; margin-top:56px; gap:30px; width:calc(100% - 52px)}
  .lz-diario-lista{grid-template-columns:repeat(3,1fr); gap:14px}
  /* bottom:8% quedaba dentro del papel pero tapaba el TITULO del tercer
     articulo -el mismo problema de fondo que ya se habia peleado una vez
     (ver el comentario historico junto a la regla base), esta vez en la
     direccion vertical. 24% la sube para que quede sobre la FOTO de la
     tarjeta -que es decorativa- en vez de sobre el texto. */
  .lz-diario-bola{width:100px; height:auto; right:2%; bottom:24%}
  .lz-beneficios{grid-template-columns:repeat(2,1fr); padding:62px 26px 46px; gap:36px 26px}
  .lz-beneficio:nth-child(3)::before{display:none}
  .lz-newsletter{margin:14px 26px 76px; padding:40px 30px}
  .lz-footer{padding:12px 26px 116px}
}

/* ---- Mobile: el collage se apila y las piezas se reubican una por una ---- */
@media (max-width:640px){
  body.tema-luz-activo .top{padding:20px 18px 0}
  body.tema-luz-activo .brand::before{width:26px; height:26px}
  body.tema-luz-activo .entrar, body.tema-luz-activo .icono-cuenta{padding:9px 13px; font-size:9.5px}

  .lz-hero{padding:26px 18px 12px; gap:10px}
  .lz-hero-hoja{inset:4px 8px 20px}
  .lz-hero-texto h1{font-size:clamp(36px,10.5vw,48px); margin-bottom:16px}
  .lz-hero-sub{font-size:15px; margin-bottom:20px; max-width:30ch}
  .lz-hero-disclaimer{margin-top:14px; font-size:8.5px; line-height:1.5}
  .lz-cta{padding:15px 24px; font-size:11.5px}

  /* Collage vertical (§41, §43, §48): el sol arriba, la figura debajo cubriendo
     el ancho, la carta y los stickers alrededor. NO es el desktop achicado —
     cada pieza tiene su posición propia acá. Más alto que en desktop en
     proporción, porque en vertical el collage necesita aire para leerse. */
  /* El sol dejó de ser cuadrado (399x530): con el mismo ancho ocupa un 33% más
     de alto, así que acá se achica y el collage crece, o se comía a la figura. */
  .lz-collage{min-height:530px; margin:10px 0 0}
  .lz-scrap.s2{display:none}
  .lz-papel-carta{right:0%; top:0%; width:52%; max-width:190px}
  .lz-paisaje{bottom:4%; height:26%; left:-4%; right:-4%; opacity:.5}
  /* En vertical el sol y la escena tienen que SOLAPARSE igual que en desktop;
     con los valores de antes quedaba un hueco de 66px medido entre el fin del
     sol y el inicio de la escena, y ella caía debajo del pliegue. */
  .lz-sol{top:3%; left:11%; width:54%; max-width:196px}
  .lz-escena{left:3%; bottom:1%; width:96%; max-width:none}
  .lz-querubines{right:-5%; top:-4%; width:50%; max-width:166px}
  .lz-alado.a1{top:2%; right:-1%; width:26%; max-width:86px}
  .lz-alado.a2{top:26%; right:25%; width:14%; max-width:48px}
  .lz-flor.f1{left:-6%; bottom:0%; width:30%; max-width:98px}
  .lz-flor.f2{left:1%; top:1%; width:17%; max-width:52px}
  .lz-carta-tarot{right:-3%; bottom:12%; width:31%; max-width:110px; padding:4px 4px 13px}
  .lz-nota{display:none}
  .lz-sticker.st-ojo{left:-2%; top:42%; width:18%; max-width:54px}
  .lz-sticker.st-llave{display:none}
  .lz-sticker.st-espiral{display:none}
  .lz-sticker.st-mariquita{right:5%; bottom:1%; width:12%; max-width:32px}

  .lz-carta-dia{grid-template-columns:1fr; gap:22px; padding:30px 18px 4px; text-align:center}
  .lz-cd-texto p{max-width:none; margin:0 auto}
  .lz-cd-mesa{justify-content:center; gap:20px}
  .lz-cd-carta{width:132px}
  .lz-cd-lectura{max-width:none; text-align:center}

  .lz-lecturas{padding:14px 18px 0}
  .lz-titulo-seccion{margin-bottom:26px}
  .lz-titulo-seccion .lz-orna{width:150px}
  /* Dos columnas: las cuatro siguen leyéndose como papeles, no como lista */
  .lz-destacadas{grid-template-columns:repeat(2,1fr); gap:26px 13px}
  .lz-lectura{padding:12px 10px 16px}
  .lz-lectura-nombre{font-size:15.5px}
  .lz-lectura-que{font-size:11px}
  .lz-lectura-precio{font-size:16.5px}
  .lz-lectura-sello{width:36px; height:36px; margin-left:-18px; bottom:-15px}
  .lz-lectura-sello svg{width:21px; height:21px}
  .lz-lectura-badge{font-size:7.5px; padding:4px 8px; top:-9px}
  .lz-pie-lecturas{flex-direction:column; gap:8px; margin-top:28px; text-align:center}
  .lz-pie-sep{display:none}

  .lz-diario{
    margin-top:48px; padding:32px 22px 40px; gap:24px; transform:rotate(-.3deg);
    width:calc(100% - 36px);
  }
  .lz-diario-lista{grid-template-columns:1fr; gap:20px}
  .lz-diario-texto p{max-width:none}
  /* El querubín pasa arriba a la derecha: abajo taparía el tercer artículo */
  /* top:-5% cruzaba hacia la seccion de ARRIBA (misma familia de bug que el
     bottom de las otras dos resoluciones, ver la nota grande junto a la regla
     base de .lz-diario-bola). top:4% la dejaba dentro del papel pero tapando
     el titulo Y el parrafo -a este ancho `.lz-diario` es una sola columna y
     el texto ocupa el ancho completo (medido: parrafo llega a x=343 de 370
     totales), asi que no hay "al costado" donde meterla arriba-. Baja a 22%
     para que quede sobre la FOTO del primer articulo (decorativa) en vez de
     sobre texto: el primer articulo mide de por si 239px de foto antes de que
     empiece su titulo. */
  .lz-diario-bola{width:82px; height:88px; right:2%; top:22%; bottom:auto}

  .lz-beneficios{grid-template-columns:1fr 1fr; padding:52px 18px 38px; gap:32px 18px}
  .lz-beneficio + .lz-beneficio::before{display:none}
  .lz-beneficio svg{width:30px; height:30px; margin-bottom:12px}
  .lz-beneficio b{font-size:10.5px}
  .lz-beneficio span{font-size:12px}

  .lz-newsletter{margin:12px 18px 64px; padding:34px 22px 32px; transform:rotate(.4deg)}
  .lz-newsletter form{flex-direction:column; gap:9px}
  .lz-newsletter input, .lz-newsletter button{flex:1 1 auto; width:100%}
  .lz-newsletter-flor{width:76px; height:76px; left:-18px; top:-24px}
  .lz-newsletter-sol{width:38px; height:38px; right:14px; top:-15px}

  .lz-footer{padding:10px 18px 112px}
  .lz-footer::before{margin-bottom:32px}
  .lz-footer-cartas img{width:76px}
  .lz-footer-cartas img:nth-child(1){transform:rotate(-9deg) translateX(14px)}
  .lz-footer-cartas img:nth-child(3){transform:rotate(8deg) translateX(-14px)}
  /* right/left en 6px, no 0: ambos van rotados y a ras del borde la esquina
     girada se salía 4px del viewport (medido). */
  .lz-footer-flor{width:62px; height:62px; left:6px; top:38px; opacity:.82}
  .lz-footer-querubin{width:64px; height:64px; right:6px; top:30px; opacity:.82}
  .lz-footer-filas{flex-direction:column; text-align:center; gap:10px}
  .lz-footer-redes{margin:22px 0 20px}
}

/* ---- Muy angosto (360px): recorta decoración, nunca contenido ---- */
@media (max-width:380px){
  .lz-hero-texto h1{font-size:clamp(32px,10vw,40px)}
  .lz-collage{min-height:340px}
  .lz-sticker.st-ojo{display:none}
  .lz-alado.a2{display:none}
  .lz-destacadas{gap:22px 10px}
  .lz-lectura-nombre{font-size:14.5px}
  .lz-footer-cartas img{width:66px}
}

/* CARTAS NATALES DE LOS PRODUCTOS DE DOS PERSONAS (2026-09-01).
   Se pintan como dos fichas de papel, no como texto suelto: el producto las
   vende como parte de la lectura ("se leen las cartas natales de ambas
   personas") y hasta hoy no aparecian en ninguna parte de la pantalla. */
.lz-natales{display:flex; flex-wrap:wrap; gap:10px; margin-top:4px}
/* EL COLOR VA EXPLICITO, NO HEREDADO (2026-09-01). La primera version no
   declaraba `color` y heredaba el de `.burbuja`, que es texto CLARO porque esa
   burbuja tiene fondo oscuro. Sobre el papel claro de la ficha eso daba
   rgb(226,210,185) sobre rgb(232,220,198): **contraste 1,09** -medido con el
   arnes de Playwright, no a ojo-, o sea invisible. La captura lo mostro; el
   DOM no, porque `getBoundingClientRect` y `elementFromPoint` dan igual sobre
   texto ilegible. */
.lz-natal{
  display:flex; flex-direction:column; gap:2px;
  padding:9px 14px; min-width:132px;
  background:var(--lz-papel, #E8DCC6);
  color:var(--lz-oscuro, #272522);
  border:1px solid rgba(60,45,30,.16);
  clip-path:polygon(0 3%, 96% 0, 100% 94%, 3% 100%);
}
/* Sin `opacity`: bajarle la opacidad al rotulo es exactamente lo que lo volvia
   ilegible. La jerarquia se hace con el color y el tamaño, que se pueden medir. */
.lz-natal b{
  font:600 10px/1.3 var(--lz-mono, "Courier Prime", monospace);
  letter-spacing:.13em; text-transform:uppercase;
  color:var(--lz-tinta-suave, #6B6053);
}
.lz-natal i{
  font:italic 400 17px/1.25 var(--lz-serif, "EB Garamond", Georgia, serif);
  color:var(--lz-oscuro, #272522);
}

/* ═══ FICHA DE LECTURA EN "LUZ" (2026-09-02) ═══════════════════════════════
   Decision del dueño al ver las dos identidades lado a lado: la home y la
   pantalla donde se elige y se lee la carta son el mismo viaje, asi que
   comparten identidad. El catalogo, la tienda y el historial siguen en
   Collage Indie oscuro. Todo lo de abajo solo aplica cuando #pantallaLectura
   esta visible (mostrarPantalla activa body.tema-luz-activo).
   Regla: nada de colores nuevos — solo los tokens --lz-* de arriba. */
body.tema-luz-activo #pantallaLectura{
  position:relative; z-index:1; isolation:isolate; overflow-x:clip;
  color:var(--lz-oscuro); background:var(--lz-crema);
  background-image:
    radial-gradient(ellipse 40% 30% at 12% 8%,  rgba(182,111,82,.055), transparent 70%),
    radial-gradient(ellipse 45% 26% at 88% 22%, rgba(104,112,92,.05),  transparent 72%),
    radial-gradient(ellipse 35% 22% at 20% 62%, rgba(178,138,55,.045), transparent 70%),
    var(--lz-veteado), var(--lz-fibra);
  background-size:auto, auto, auto, 420px 420px, 200px 200px;
  background-blend-mode:normal, normal, normal, multiply, multiply;
  max-width:none; padding-bottom:70px;
}
/* Cada bloque conserva su ancho de lectura (640 la ficha y el formulario, 560
   el chat): la pantalla se estira al ancho de la ventana para pintar el papel
   de borde a borde, pero el contenido no. Una version anterior de esta regla
   estiraba TODO a 1280 y la cabecera quedaba como una cinta de pared a pared. */
body.tema-luz-activo .pl-compacta, body.tema-luz-activo .pl-detalle, body.tema-luz-activo .pl-bloque{margin-left:auto; margin-right:auto}
body.tema-luz-activo .pl-compacta{max-width:640px}
body.tema-luz-activo #pantallaLectura .volver{max-width:var(--contenido); margin-left:auto; margin-right:auto; display:flex}
/* Una vez que las cartas se desbloquearon, el formulario ya cumplio: se retira
   para que el boton "elegir mis cartas" no quede invitando a repetir el paso
   debajo de las cartas ya elegidas. (Sin JS: .desbloqueada ya existe.) */
body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-bloque-ritual{display:none}
body.tema-luz-activo #pantallaLectura .volver{
  font-family:var(--lz-sans); font-size:11px; letter-spacing:.13em; text-transform:uppercase; color:var(--lz-tinta);
}
body.tema-luz-activo #pantallaLectura .volver:hover{color:var(--lz-oro-tinta)}

/* Cabecera: la hoja de papel se queda, pero con la voz tipografica de Luz */
body.tema-luz-activo .pl-compacta{
  background-color:var(--lz-papel); background-image:var(--lz-fibra); background-size:200px 200px;
  box-shadow:var(--lz-s2); color:var(--lz-oscuro);
}
body.tema-luz-activo .pl-eyebrow{font-family:var(--lz-sans); font-size:10px; letter-spacing:.18em; color:var(--lz-oro-tinta)}
body.tema-luz-activo .pl-titulo-mini{font-family:var(--lz-serif); font-weight:700; text-transform:none; letter-spacing:-.015em; font-size:clamp(26px,3vw,34px); color:var(--lz-oscuro)}
body.tema-luz-activo .pl-meta-mini{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
body.tema-luz-activo .pl-meta-mini .precio{color:var(--lz-oro-tinta)}
body.tema-luz-activo .pl-meta-mini .coin{border-color:var(--lz-oro-tinta); color:var(--lz-oro-tinta)}
body.tema-luz-activo .pl-foto-mini img{filter:none}

/* "Sobre esta lectura": el poema en la cursiva de Luz */
body.tema-luz-activo .pl-detalle{max-width:640px}
body.tema-luz-activo .pl-detalle summary{font-family:var(--lz-sans); font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--lz-tinta-suave)}
body.tema-luz-activo .pl-detalle summary::before{color:var(--lz-oro-tinta); font-family:var(--lz-sans)}
body.tema-luz-activo .pl-poema{font-family:var(--lz-serif); font-style:italic; font-size:19px; color:var(--lz-oscuro); line-height:1.45}
body.tema-luz-activo .pl-detalle p:not(.pl-poema){font-family:var(--lz-sans); font-size:14px; line-height:1.65; color:var(--lz-tinta)}

/* Formulario */
body.tema-luz-activo .pl-bloque .et-eyebrow{font-family:var(--lz-sans); color:var(--lz-oro-tinta); letter-spacing:.16em}
body.tema-luz-activo .campo label{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
body.tema-luz-activo .pantalla input, body.tema-luz-activo .pantalla textarea{
  font-family:var(--lz-sans); font-size:14px; color:var(--lz-oscuro);
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:140px 140px; background-blend-mode:multiply;
  border:1px solid rgba(58,33,28,.2); border-radius:1px; box-shadow:var(--lz-s1);
}
body.tema-luz-activo .pantalla input::placeholder, body.tema-luz-activo .pantalla textarea::placeholder{color:var(--lz-tinta-suave)}
body.tema-luz-activo .pantalla input:focus, body.tema-luz-activo .pantalla textarea:focus{outline:2px solid var(--lz-oro-tinta); outline-offset:1px; border-color:transparent}

/* El boton principal es el mismo recorte de papel negro que "Sacar mi lectura"
   en el hero — un solo gesto de marca, no dos botones distintos por pantalla. */
body.tema-luz-activo #pantallaLectura .cta-dorado{
  background:var(--lz-oscuro); color:var(--lz-crema); border:0; border-radius:1px;
  font-family:var(--lz-sans); font-weight:600; font-size:12.5px; letter-spacing:.11em; text-transform:uppercase;
  padding:17px 30px; box-shadow:var(--lz-s2);
  clip-path:polygon(0% 5%, 2% 0%, 35% 3%, 68% 0%, 100% 4%, 98.6% 48%, 100% 96%, 66% 100%, 33% 96.5%, 2% 100%, 0% 52%);
  transition:transform .24s cubic-bezier(.2,.8,.3,1), box-shadow .24s ease;
}
body.tema-luz-activo #pantallaLectura .cta-dorado::after{color:var(--lz-mostaza); opacity:1}
body.tema-luz-activo #pantallaLectura .cta-dorado:hover{color:var(--lz-crema); transform:translateY(-2px); box-shadow:var(--lz-s3)}
body.tema-luz-activo #pantallaLectura .cta-envuelta::before{display:none}

/* Mesa */
body.tema-luz-activo .mesa-instruccion{font-family:var(--lz-serif); font-weight:700; text-transform:none; letter-spacing:-.01em; font-size:clamp(24px,2.6vw,30px); color:var(--lz-oscuro)}
body.tema-luz-activo .mesa-instruccion small{font-family:var(--lz-sans); color:var(--lz-oro-tinta); letter-spacing:.16em}
body.tema-luz-activo .mesa-restantes b{font-family:var(--lz-serif); color:var(--lz-oro-tinta); text-shadow:none}
body.tema-luz-activo .mesa-restantes span{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
/* El halo de vela oscuro no tiene sentido sobre crema: sombra de papel, no luz */
body.tema-luz-activo .mazo-zona::before{background:radial-gradient(ellipse 220px 90px at 50% 60%, rgba(120,96,64,.16), transparent 72%); filter:blur(18px); animation:none}
body.tema-luz-activo .mazo-candado{background:radial-gradient(ellipse 60% 60% at 50% 50%, rgba(241,235,221,.92) 40%, rgba(241,235,221,.55) 100%)}
body.tema-luz-activo .mazo-candado svg{color:var(--lz-oro-tinta); filter:none}
body.tema-luz-activo .abanico-elegir::before{background:linear-gradient(90deg, var(--lz-crema), transparent)}
body.tema-luz-activo .abanico-elegir::after{background:linear-gradient(270deg, var(--lz-crema), transparent)}
body.tema-luz-activo .ae-cuerpo{border-color:rgba(60,45,30,.25)}
body.tema-luz-activo .ae-sombra{box-shadow:0 14px 28px rgba(40,30,20,.35), 0 0 22px 4px rgba(178,138,55,.35)}
body.tema-luz-activo .mazo-preview span{border-color:rgba(60,45,30,.25); box-shadow:var(--lz-s2)}

/* La carta revelada */
body.tema-luz-activo .carta .cara{box-shadow:var(--lz-s3)}
body.tema-luz-activo .carta.revelada .cara{box-shadow:0 20px 40px rgba(40,30,20,.3)}
body.tema-luz-activo .carta .destello{background:radial-gradient(circle, rgba(255,250,236,.95), rgba(197,160,68,.45) 40%, transparent 72%)}

/* Panel "pagar y revelar": de caja oscura a hoja de papel rasgada */
body.tema-luz-activo .revelar-zona{
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:150px 150px; background-blend-mode:multiply;
  border:0; border-radius:1px; box-shadow:var(--lz-s3); transform:rotate(-.6deg); position:relative;
  clip-path:polygon(0% 5%, 10% 1%, 24% 5%, 38% 0%, 52% 5%, 67% 1%, 81% 5%, 93% 0%, 100% 4%, 99% 94%, 88% 99%, 74% 94%, 60% 100%, 45% 94%, 31% 99%, 17% 94%, 5% 99%, 0% 95%);
}
body.tema-luz-activo .revelar-titulo{font-family:var(--lz-serif); font-weight:600; font-size:22px; color:var(--lz-oscuro)}
body.tema-luz-activo .revelar-sello{background:var(--lz-papel-2); border-radius:1px}
body.tema-luz-activo .revelar-linea{background:var(--lz-tinta-suave); opacity:.45}
body.tema-luz-activo .revelar-sello-simbolo{color:var(--lz-oro-tinta); text-shadow:0 0 14px var(--lz-papel-2), 0 0 14px var(--lz-papel-2)}
body.tema-luz-activo .revelar-texto{font-family:var(--lz-sans); color:var(--lz-tinta)}
body.tema-luz-activo .revelar-cargando{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}

/* La lectura: una hoja escrita, no una burbuja de chat */
body.tema-luz-activo .chat{max-width:600px}
body.tema-luz-activo .msj:not(.mia) .burbuja{
  border-left:0; padding:26px 30px 24px;
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:180px 180px; background-blend-mode:multiply;
  box-shadow:var(--lz-s2); transform:rotate(.35deg);
}
body.tema-luz-activo .msj.mia .burbuja{
  background-color:var(--lz-papel); background-image:var(--lz-fibra); background-size:140px 140px; background-blend-mode:multiply;
  border:0; box-shadow:var(--lz-s1); transform:rotate(-.5deg); font-family:var(--lz-sans); color:var(--lz-oscuro);
}
body.tema-luz-activo .quien{font-family:var(--lz-sans); color:var(--lz-oro-tinta); letter-spacing:.16em}
body.tema-luz-activo .burbuja p{font-family:var(--lz-serif); font-size:17px; line-height:1.65; color:var(--lz-oscuro)}
body.tema-luz-activo .msj.mia .burbuja p{font-family:var(--lz-sans); font-size:13.5px; color:var(--lz-tinta)}
body.tema-luz-activo .pensando i{background:var(--lz-tinta-suave)}

/* Upsell, chips, notas de costo */
body.tema-luz-activo .upsell{border-top-color:rgba(60,45,30,.18)}
body.tema-luz-activo .upsell-titulo{font-family:var(--lz-serif); font-weight:600; text-transform:none; letter-spacing:-.01em; color:var(--lz-oscuro)}
body.tema-luz-activo .upsell-texto{font-family:var(--lz-sans); color:var(--lz-tinta)}
body.tema-luz-activo .chips-titulo{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
body.tema-luz-activo .chip{
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:140px 140px; background-blend-mode:multiply;
  border:1px solid rgba(58,33,28,.16); border-radius:1px; color:var(--lz-oscuro); font-family:var(--lz-sans); box-shadow:var(--lz-s1);
}
body.tema-luz-activo .chip:hover{border-color:var(--lz-oro-tinta)}
body.tema-luz-activo .costo-nota{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
body.tema-luz-activo .sin-monedas p{font-family:var(--lz-serif); text-transform:none; color:var(--lz-oscuro)}

@media (max-width:640px){
  body.tema-luz-activo #pantallaLectura{padding-bottom:110px}
}

/* Tarjetas del diario: ahora son atajos a lecturas — cursor y foco visibles */
.lz-articulo[data-abrir]{cursor:pointer}
.lz-articulo[data-abrir]:focus-visible{outline:2px solid var(--lz-oro-tinta); outline-offset:4px}

/* Boton "Escuchar lectura" en la ficha Luz: papel, no pastilla oscura */
body.tema-luz-activo .voz{
  border:1px solid rgba(58,33,28,.25); color:var(--lz-oscuro); font-family:var(--lz-sans);
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:120px 120px; background-blend-mode:multiply;
  box-shadow:var(--lz-s1);
}
body.tema-luz-activo .voz:hover{border-color:var(--lz-oro-tinta)}
body.tema-luz-activo .voz .play{background:var(--lz-oscuro); color:var(--lz-crema)}
body.tema-luz-activo .voz .ondas i{background:var(--lz-oro-tinta)}

/* Toast en Luz: nota de papel, no pastilla oscura del otro tema */
body.tema-luz-activo .toast{
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:120px 120px; background-blend-mode:multiply;
  border:1px solid rgba(58,33,28,.25); border-radius:1px; color:var(--lz-oscuro); font-family:var(--lz-sans);
  box-shadow:var(--lz-s3); transform:translateX(-50%) rotate(-.6deg); line-height:1.5; padding:13px 22px;
}
body.tema-luz-activo .toast b{color:var(--lz-oro-tinta)}

/* ═══════════════════════════════════════════════════════════════════════
   ESTRUCTURA V2 DE LA HOME (2026-09-02) — portada de revista, no template.
   Investigado antes de escribir: MidCenturian Tarot (numerales que ocupan un
   tercio de la composicion, bordes blancos, color plano optimista); trend
   "Peak Journal" 2026 (capas de ephemera, "hecho, no producido"); mid-century
   (asimetria balanceada por peso, circulos y arcos, sans geometrica en
   mayusculas — Jost); jurados de Awwwards (romper la grilla a proposito, UNA
   sola seccion fijada al scroll, transiciones que significan algo).
   Todo lo de abajo va despues del resto del archivo: gana por orden.
   ═══════════════════════════════════════════════════════════════════════ */

/* ---- Numerales de capitulo: el rasgo mid-century mas reconocible ---- */
.lz-numeral{
  display:block; font-family:var(--lz-serif); font-weight:700; line-height:.82; letter-spacing:-.04em;
  font-size:clamp(64px,8.5vw,124px); color:var(--lz-mostaza); user-select:none; pointer-events:none;
  font-optical-sizing:auto;
}
.lz-numeral-grande{
  position:absolute; left:-1.5%; top:-8%; z-index:0;
  font-size:clamp(150px,22vw,330px); color:transparent; -webkit-text-stroke:1.6px var(--lz-oro); opacity:.55;
}
.lz-numeral-claro{color:rgba(246,243,232,.28)}

/* ---- PORTADA ------------------------------------------------------------ */
.lz-hero.lz-portada{
  display:block; position:relative; z-index:10; max-width:none; margin:0;
  padding:26px 44px 84px; min-height:min(92vh,880px); overflow:visible;
}
.lz-portada .lz-hero-hoja{inset:6px 22px 40px}
.lz-portada-eyebrow{
  position:relative; z-index:50; display:flex; align-items:center; gap:16px; margin:0 0 14px;
  font-family:var(--lz-sans); font-size:12px; letter-spacing:.24em; text-transform:uppercase; color:var(--lz-tinta); font-weight:500;
}
.lz-num-eyebrow{
  font-family:var(--lz-serif); font-weight:700; font-size:22px; letter-spacing:0; text-transform:none; color:var(--lz-oro-tinta);
  border-bottom:2px solid var(--lz-mostaza); padding-bottom:1px;
}
.lz-portada .lz-hero-texto{position:relative; z-index:50; max-width:none; width:min(76%, 1040px); padding:0; pointer-events:none}
.lz-portada .lz-hero-texto h1{
  font-size:clamp(54px,9.4vw,140px); line-height:.92; letter-spacing:-.035em; margin:0 0 26px;
}
.lz-portada .lz-hero-texto h1 .lz-resalto{padding:.02em .14em .04em}
.lz-portada .lz-hero-sub{font-size:18px; max-width:40ch; margin:0; pointer-events:auto}
/* El collage ocupa la mitad derecha y SOLAPA el titulo: el sol queda detras
   de la palabra, la mujer y la carta delante de la ultima linea. */
.lz-portada .lz-collage{
  position:absolute; right:-2%; top:2%; width:58%; max-width:780px; height:92%; min-height:0; margin:0; z-index:20;
}
.lz-portada .lz-sol{top:-4%; left:22%; width:52%; max-width:400px; z-index:30}
.lz-portada .lz-escena{left:22%; bottom:-2%; width:70%; max-width:520px; z-index:56}
.lz-portada .lz-querubines{right:-2%; top:-6%; width:40%}
.lz-portada .lz-carta-tarot{right:2%; bottom:14%; width:21%; z-index:57}
.lz-portada .lz-nota{left:64%; top:34%}
.lz-portada .lz-papel-carta{right:4%; top:-2%; width:44%}
.lz-portada .lz-paisaje{left:8%; right:-3%; bottom:0; height:32%}
.lz-portada .lz-flor.f1{left:14%; bottom:-2%}
.lz-portada .lz-flor.f2{left:6%; top:12%}
.lz-portada .lz-sticker.st-mariquita{left:30%; bottom:16%}
/* Arco de color plano (mid-century) detras de la figura */
.lz-arco{
  position:absolute; z-index:25; left:24%; bottom:0; width:60%; max-width:470px; aspect-ratio:1/1.18;
  background:var(--lz-salvia); opacity:.34; border-radius:50% 50% 0 0 / 42% 42% 0 0;
  --fin:0deg; --dx:0px; --dy:60px; --dr:0deg; --ds:.9; animation:lzLlega 1.1s .3s cubic-bezier(.16,.84,.44,1) both;
}
body.lz-listo .lz-arco{animation:none; opacity:.34; transform:none}

/* Sello circular giratorio: es el CTA */
.lz-sello{
  position:absolute; z-index:60; left:44px; bottom:120px; width:172px; height:172px; border-radius:50%;
  display:grid; place-items:center; text-decoration:none; color:var(--lz-oscuro);
  --fin:0deg; --dx:0px; --dy:24px; --dr:-30deg; --ds:.6; animation:lzLlega .9s 1.1s cubic-bezier(.34,1.35,.5,1) both;
  transition:transform .35s cubic-bezier(.2,.8,.3,1);
}
body.lz-listo .lz-sello{animation:none; opacity:1; transform:none}
.lz-sello svg{position:absolute; inset:0; width:100%; height:100%; animation:lzGiraLento 26s linear infinite}
.lz-sello text{font-family:var(--lz-sans); font-size:15.5px; font-weight:600; letter-spacing:.2em; fill:var(--lz-oscuro)}
.lz-sello-centro{
  width:84px; height:84px; border-radius:50%; display:grid; place-items:center;
  background:var(--lz-oscuro); color:var(--lz-crema); font-size:30px; font-family:var(--lz-sans);
  box-shadow:var(--lz-s2); transition:transform .35s cubic-bezier(.2,.8,.3,1), background .3s;
}
.lz-sello::before{ /* papel del sello */
  content:""; position:absolute; inset:0; border-radius:50%; z-index:-1;
  background-color:#FBF7EC; background-image:var(--lz-fibra); background-size:120px 120px; background-blend-mode:multiply;
  box-shadow:var(--lz-s3), inset 0 0 0 1px rgba(58,33,28,.18);
}
.lz-sello:hover{transform:scale(1.04)}
.lz-sello:hover .lz-sello-centro{transform:rotate(-30deg) scale(1.06); background:var(--lz-oro-tinta)}
.lz-sello:focus-visible{outline:2px solid var(--lz-oro-tinta); outline-offset:6px}
.lz-portada .lz-hero-disclaimer{position:absolute; left:44px; bottom:34px; z-index:50; margin:0; max-width:44ch}
.lz-portada-cue{
  position:absolute; right:44px; bottom:34px; z-index:50; margin:0; display:flex; align-items:center; gap:8px;
  font-family:var(--lz-sans); font-size:11px; letter-spacing:.22em; text-transform:uppercase; color:var(--lz-tinta-suave);
}
.lz-portada-cue i{font-style:normal; animation:lzFlotarIn 1.8s ease-in-out infinite}

/* ---- MARQUEE: cinta de papel que cruza la frontera entre secciones -------- */
.lz-marquee{
  position:relative; z-index:40; width:112vw; margin:-30px 0 -22px -6vw; padding:15px 0; overflow:hidden;
  background-color:var(--lz-papel-2); background-image:var(--lz-fibra); background-size:200px 200px; background-blend-mode:multiply;
  box-shadow:var(--lz-s2); transform:rotate(-1.4deg);
}
.lz-marquee-track{display:flex; white-space:nowrap; width:max-content; animation:lzMarquee 46s linear infinite}
.lz-marquee:hover .lz-marquee-track{animation-play-state:paused}
.lz-marquee-track span{
  font-family:var(--lz-sans); font-weight:600; font-size:14px; letter-spacing:.26em; text-transform:uppercase;
  color:var(--lz-oscuro); padding-right:.6em;
}
@keyframes lzMarquee{to{transform:translateX(-50%)}}

/* ---- 01 · CARTA DEL DIA: numeral gigante + circulo mostaza --------------- */
.lz-carta-dia.lz-capitulo{
  position:relative; z-index:20; max-width:var(--contenido); margin:36px auto 0;
  padding:70px 44px 40px; display:grid; grid-template-columns:1.05fr 1fr; gap:40px; align-items:center;
}
.lz-capitulo .lz-cd-mesa{position:relative; justify-content:center; flex-direction:column; gap:18px; padding:30px 0}
.lz-capitulo .lz-cd-mesa::before{
  content:""; position:absolute; z-index:0; left:50%; top:50%; width:min(58vw,400px); aspect-ratio:1;
  transform:translate(-50%,-50%); border-radius:50%; background:var(--lz-mostaza); opacity:.82;
}
.lz-capitulo .lz-cd-carta{position:relative; z-index:1; width:170px}
.lz-capitulo .lz-cd-pista{position:relative; z-index:1; margin:0}
.lz-capitulo .lz-cd-texto{position:relative; z-index:1; max-width:44ch}
.lz-capitulo .lz-cd-texto h2{font-size:clamp(34px,4.2vw,58px); line-height:1; letter-spacing:-.025em; margin:0 0 16px}
.lz-capitulo .lz-cd-lectura{max-width:none; margin-top:22px; padding-top:18px; border-top:1px solid rgba(58,33,28,.18)}

/* ---- 02 · ESTANTE fijado al scroll ---------------------------------------- */
.lz-estante{position:relative; z-index:20; padding:0; max-width:none}
.lz-estante-pin{
  position:sticky; top:0; min-height:100vh; display:grid; grid-template-columns:minmax(300px,36%) 1fr;
  align-items:center; overflow:hidden; padding:60px 0 60px 44px; gap:30px;
}
.lz-estante-cab{position:relative; z-index:2; padding-right:20px}
.lz-estante-cab h2{font-family:var(--lz-serif); font-weight:600; font-size:clamp(34px,4.4vw,62px); line-height:.98; letter-spacing:-.03em; margin:6px 0 14px; color:var(--lz-oscuro)}
.lz-estante-sub{font-family:var(--lz-sans); font-size:15px; color:var(--lz-tinta); margin:0 0 22px; max-width:30ch}
.lz-estante-pista{
  display:flex; align-items:center; gap:10px; margin:0 0 26px;
  font-family:var(--lz-sans); font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--lz-oro-tinta); font-weight:600;
}
.lz-estante-pista i{font-style:normal; font-size:16px; animation:lzPista 1.6s ease-in-out infinite}
@keyframes lzPista{0%,100%{transform:translateX(0)} 50%{transform:translateX(6px)}}
.lz-estante .lz-pie-lecturas{margin:0; text-align:left; font-size:12.5px}
.lz-estante-riel{
  display:flex; align-items:flex-start; gap:30px; padding:40px 44px 40px 8px;
  transform:translateX(var(--rx,0px)); will-change:transform;
}
.lz-estante-riel .lz-lectura{flex:0 0 clamp(230px,21vw,290px); position:relative}
/* Numeral en cada tarjeta, como en el MidCenturian: grande, un tercio de la carta */
.lz-lectura-num{
  position:absolute; z-index:3; top:-18px; left:-10px; font-family:var(--lz-serif); font-weight:700;
  font-size:64px; line-height:.8; letter-spacing:-.04em; color:var(--lz-oscuro); pointer-events:none;
  text-shadow:2px 2px 0 var(--lz-crema);
}
.lz-lectura-mas{justify-content:center; align-items:center; min-height:380px; gap:10px}
.lz-lectura-mas .lz-lectura-mas-num{font-family:var(--lz-serif); font-weight:700; font-size:88px; line-height:.85; letter-spacing:-.04em; color:var(--lz-oscuro)}
.lz-lectura-mas .lz-lectura-nombre{font-family:var(--lz-sans); font-size:12px; letter-spacing:.22em; text-transform:uppercase; font-weight:600; color:var(--lz-oro-tinta)}
/* En tactil o sin movimiento: carril horizontal normal, sin pin */
@media (max-width:899px), (prefers-reduced-motion: reduce), (pointer:coarse){
  .lz-estante{height:auto}
  .lz-estante-pin{position:static; min-height:0; display:block; overflow:visible; padding:50px 0 20px}
  .lz-estante-cab{padding:0 26px 10px}
  .lz-estante-riel{
    transform:none; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none;
    padding:30px 26px 30px; -webkit-overflow-scrolling:touch;
  }
  .lz-estante-riel::-webkit-scrollbar{display:none}
  .lz-estante-riel .lz-lectura{scroll-snap-align:start; flex-basis:min(74vw,270px)}
}
@media (min-width:900px) and (pointer:fine) and (prefers-reduced-motion: no-preference){
  .lz-estante{height:260vh}
}

/* ---- 03 · MANIFIESTO: una frase enorme sobre una banda de papel ---------- */
.lz-manifiesto{
  position:relative; z-index:21; width:106vw; margin:20px 0 0 -3vw; padding:70px 8vw 64px;
  background-color:var(--lz-papel); background-image:var(--lz-fibra); background-size:200px 200px; background-blend-mode:multiply;
  box-shadow:var(--lz-s1); transform:rotate(.7deg); text-align:center;
}
.lz-manifiesto > *{transform:rotate(-.7deg)}
.lz-manifiesto .lz-numeral{display:inline-block; margin:0 0 6px}
.lz-manif-frase{
  font-family:var(--lz-serif); font-weight:600; font-size:clamp(28px,4.6vw,66px); line-height:1.04; letter-spacing:-.03em;
  color:var(--lz-oscuro); max-width:22ch; margin:0 auto 30px; text-wrap:balance;
}
.lz-manif-datos{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:14px 18px; margin:0;
  font-family:var(--lz-sans); font-size:12px; letter-spacing:.24em; text-transform:uppercase; color:var(--lz-tinta); font-weight:600;
}
.lz-manif-datos i{font-style:normal; color:var(--lz-oro); font-size:14px}
.lz-manif-datos b{color:var(--lz-oro-tinta)}
#benComunidad{display:inline-flex; gap:8px; align-items:center}

/* ---- 04 · DIARIO: rompe el borde y abanica las tarjetas ------------------ */
.lz-diario{margin-top:-58px; z-index:22; transform:rotate(-1.1deg); padding-top:64px}
.lz-diario > *{transform:rotate(1.1deg)}
.lz-diario .lz-numeral{position:absolute; right:3%; top:-38px; font-size:clamp(90px,11vw,160px); transform:rotate(1.1deg)}
.lz-diario-lista{display:flex; justify-content:center; align-items:flex-end; gap:0; padding:0 20px 10px}
.lz-diario-lista .lz-articulo{width:34%; max-width:300px}
.lz-diario-lista .lz-articulo + .lz-articulo{margin-left:-38px}
.lz-diario-lista .lz-articulo:nth-child(1){--giro:-7deg; z-index:1}
.lz-diario-lista .lz-articulo:nth-child(2){--giro:.5deg; z-index:2; margin-bottom:22px}
.lz-diario-lista .lz-articulo:nth-child(3){--giro:7deg; z-index:1}
.lz-diario-lista .lz-articulo:hover{z-index:5}

/* ---- NEWSLETTER como postal ------------------------------------------------ */
.lz-postal-sello{
  position:absolute; z-index:2; right:26px; top:22px; width:74px; height:88px; padding:8px;
  border:1.5px dashed rgba(58,33,28,.42); border-radius:2px; color:var(--lz-borgona); display:grid; place-items:center;
  background:rgba(251,247,236,.5); transform:rotate(4deg);
}
.lz-postal-sello .lz-newsletter-sol{position:static; width:100%; height:auto; transform:none; filter:none}
.lz-postal-sello::after{content:"HADA"; position:absolute; bottom:5px; font-family:var(--lz-sans); font-size:8px; letter-spacing:.3em}

/* ---- FOOTER: marca gigante recortada ------------------------------------- */
.lz-footer{overflow:hidden; padding-bottom:0}
.lz-footer-marca{
  font-family:var(--lz-serif); font-weight:700; font-size:clamp(84px,15.5vw,236px); line-height:.78; letter-spacing:-.045em;
  text-align:center; color:var(--lz-oscuro); opacity:.94; margin:56px 0 -.3em; white-space:nowrap; user-select:none;
}

/* ---- Sol: gira con el scroll, no con el reloj ---------------------------- */
.lz-sol img{animation:none; transform:rotate(calc(var(--sc,0) * 1deg)); transition:transform .25s linear}

/* ---- RESPONSIVE de la portada y capitulos -------------------------------- */
@media (max-width:899px){
  .lz-hero.lz-portada{padding:22px 26px 60px; min-height:0}
  .lz-portada .lz-hero-texto{width:100%}
  .lz-portada .lz-hero-texto h1{font-size:clamp(44px,12vw,72px); line-height:.94}
  .lz-portada .lz-collage{position:relative; right:auto; top:auto; width:100%; max-width:none; height:auto; min-height:470px; margin:26px 0 0}
  .lz-portada .lz-sol{top:2%; left:10%; width:54%; max-width:none}
  .lz-portada .lz-escena{left:6%; bottom:0; width:88%; max-width:none}
  .lz-portada .lz-querubines{right:-4%; top:-2%; width:46%}
  .lz-portada .lz-carta-tarot{right:0; bottom:8%; width:28%}
  .lz-portada .lz-nota{display:none}
  .lz-arco{left:8%; width:84%}
  .lz-sello{position:relative; left:auto; bottom:auto; margin:26px 0 0; width:140px; height:140px}
  .lz-sello text{font-size:17px}
  .lz-sello-centro{width:68px; height:68px; font-size:26px}
  .lz-portada .lz-hero-disclaimer{position:static; margin:22px 0 0}
  .lz-portada-cue{display:none}
  .lz-marquee{margin-top:-18px}
  .lz-carta-dia.lz-capitulo{grid-template-columns:1fr; gap:14px; padding:54px 26px 24px; text-align:center}
  .lz-numeral-grande{font-size:clamp(120px,32vw,200px); top:-16px; left:-2%}
  .lz-capitulo .lz-cd-texto{margin:0 auto}
  .lz-manifiesto{padding:54px 26px 46px}
  .lz-diario-lista{flex-direction:column; align-items:center; gap:14px}
  .lz-diario-lista .lz-articulo{width:min(78%,300px); max-width:none}
  .lz-diario-lista .lz-articulo + .lz-articulo{margin-left:0; margin-top:-20px}
  .lz-diario-lista .lz-articulo:nth-child(2){margin-bottom:0}
  .lz-diario .lz-numeral{top:-28px; font-size:90px}
  .lz-footer-marca{font-size:clamp(64px,20vw,120px)}
}
@media (max-width:640px){
  .lz-portada .lz-hero-texto h1{font-size:clamp(42px,13.5vw,60px)}
  .lz-numeral{font-size:56px}
  .lz-lectura-num{font-size:48px; top:-12px; left:-6px}
}
@media (prefers-reduced-motion: reduce){
  .lz-sello svg, .lz-marquee-track, .lz-portada-cue i, .lz-estante-pista i{animation:none}
  .lz-sol img{transform:none; transition:none}
  .lz-arco, .lz-sello{animation:none; opacity:1; transform:none}
  .lz-arco{opacity:.34}
}

/* ---- V2, ajustes tras la primera captura ---------------------------------- */
/* Ventana del estante: recorta el riel dentro de su columna (las tarjetas se
   deslizaban por encima del titulo). En tactil el riel es el que scrollea. */
.lz-estante-vent{overflow:hidden; align-self:stretch; display:flex; align-items:center; padding:0 0 0 14px}
.lz-estante-riel{padding-top:44px; padding-bottom:44px}
@media (max-width:899px), (prefers-reduced-motion: reduce), (pointer:coarse){
  .lz-estante-vent{overflow:visible; display:block; padding:0}
}
/* El indicador de scroll quedaba tapado por la cinta del marquee */
.lz-portada-cue{bottom:78px}

/* La frase del manifiesto rompia con "ojos." sola en la tercera linea: 22ch
   era mas angosto que la segunda oracion. 30ch la deja en dos lineas parejas. */
.lz-manif-frase{max-width:30ch}
/* Aire a la izquierda del riel para que el numeral de la tarjeta que entra no
   quede cortado justo por el borde de la ventana. */
.lz-estante-riel{padding-left:26px}

/* ═══ FOTOGRAFIA REAL Y DENSIDAD (2026-09-02) ═══════════════════════════════
   Pedido del dueño tras cuatro intentos: "falta fotografía real · falta que
   pase algo · falta densidad de collage" (el fondo claro se queda). El
   proyecto ya tenía 18 fotos de collage hermosas (velas, cartas antiguas,
   lavanda, amatista) que solo se veían a 72px o nada. Acá se usan grandes.
   ═══════════════════════════════════════════════════════════════════════ */

/* ---- 03 · MANIFIESTO sobre fotografía a sangre completa ------------------ */
.lz-manifiesto.lz-manif-foto{
  width:106vw; margin-left:-3vw; padding:120px 8vw 110px; overflow:hidden;
  background:none; box-shadow:none; isolation:isolate;
}
.lz-manif-fondo{position:absolute; inset:-8% -3%; z-index:-2; overflow:hidden}
.lz-manif-fondo img{
  width:100%; height:100%; object-fit:cover; object-position:center 42%;
  /* parallax al scroll: --sy lo setea app.js sobre .lz-manif-fondo */
  transform:translateY(var(--sy,0px)) scale(1.12);
}
/* Velo cálido: la foto es oscura, el texto va en crema. Dos capas para que el
   centro respire y los bordes se fundan con el papel de la página. */
.lz-manif-foto::before{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(ellipse 70% 60% at 50% 48%, rgba(20,14,10,.42), rgba(20,14,10,.72) 72%),
    linear-gradient(180deg, rgba(241,235,221,.9), transparent 14%, transparent 86%, rgba(241,235,221,.9));
}
.lz-manif-foto .lz-numeral{color:var(--lz-mostaza); opacity:.9; position:relative}
.lz-manif-foto .lz-manif-frase{color:#F6F1E4; text-shadow:0 2px 24px rgba(20,14,10,.5)}
.lz-manif-foto .lz-manif-datos{color:rgba(246,241,228,.9)}
.lz-manif-foto .lz-manif-datos i{color:var(--lz-mostaza)}
.lz-manif-foto .lz-manif-datos b{color:var(--lz-mostaza)}
/* La rotación de la banda de papel no aplica cuando es una foto a sangre */
.lz-manifiesto.lz-manif-foto{transform:none}
.lz-manifiesto.lz-manif-foto > *{transform:none}

/* ---- Tarjetas del estante: FOTO real dentro del arco + emblema encima ----
   El comentario viejo decía que la foto convertía las tarjetas en "fichas de
   producto". La diferencia ahora: la foto NO reemplaza al emblema, va DEBAJO
   — dos capas, como un recorte pegado sobre una foto. Eso es collage, no
   catálogo. */
.lz-lectura-foto{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:sepia(.3) saturate(.95) contrast(1.03) brightness(1.02);
  transition:transform .8s cubic-bezier(.16,.84,.44,1);
}
.lz-lectura-arco{position:relative; overflow:hidden}
.lz-lectura-arco::after{ /* tinte del color propio de cada lectura sobre la foto */
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(var(--lzt-rgb),.34), rgba(var(--lzt-rgb),.62));
  mix-blend-mode:multiply;
}
.lz-lectura-emblema{position:relative; z-index:2; filter:drop-shadow(0 6px 14px rgba(20,14,10,.45))}
.lz-lectura:hover .lz-lectura-foto{transform:scale(1.06)}

/* ---- Densidad: recortes que cruzan el borde entre secciones -------------- */
.lz-cruce{position:absolute; z-index:30; pointer-events:none; filter:drop-shadow(0 10px 20px rgba(40,30,20,.28))}
.lz-cruce img{width:100%; height:auto; display:block}
.lz-cruce.cr-vela{right:6%; top:-72px; width:118px; transform:rotate(-8deg)}
.lz-cruce.cr-mano{left:4%; top:-58px; width:150px; transform:rotate(6deg)}
@media (max-width:899px){
  .lz-manifiesto.lz-manif-foto{padding:80px 26px 70px}
  .lz-cruce.cr-vela{width:80px; right:4%; top:-48px}
  .lz-cruce.cr-mano{display:none}
}
@media (prefers-reduced-motion: reduce){
  .lz-manif-fondo img{transform:scale(1.12)}
  .lz-lectura-foto{transition:none}
}

/* ---- APERTURA: la pagina se abre, no carga ------------------------------- */
.lz-apertura{position:fixed; inset:0; z-index:200; pointer-events:none}
.lz-ap-hoja{
  position:absolute; left:-2vw; width:104vw; height:50.5%;
  background-color:var(--lz-crema); background-image:var(--lz-veteado), var(--lz-fibra);
  background-size:420px 420px, 200px 200px; background-blend-mode:multiply, multiply;
  box-shadow:0 0 40px rgba(40,30,20,.28);
}
/* Borde rasgado en la cara que se abre: papel partido a mano, no dos rectangulos */
.lz-ap-arriba{
  top:0; animation:lzApArriba 1.15s .75s cubic-bezier(.7,0,.3,1) forwards;
  clip-path:polygon(0 0, 100% 0, 100% 96%, 92% 99.4%, 83% 96.6%, 74% 99.5%, 65% 96.4%, 56% 99.6%,
                    47% 96.5%, 38% 99.4%, 29% 96.6%, 20% 99.5%, 11% 96.7%, 4% 99.3%, 0 97%);
}
.lz-ap-abajo{
  bottom:0; animation:lzApAbajo 1.15s .75s cubic-bezier(.7,0,.3,1) forwards;
  clip-path:polygon(0 3%, 4% .6%, 11% 3.4%, 20% .5%, 29% 3.3%, 38% .6%, 47% 3.5%, 56% .4%,
                    65% 3.6%, 74% .5%, 83% 3.4%, 92% .6%, 100% 4%, 100% 100%, 0 100%);
}
@keyframes lzApArriba{to{transform:translateY(-101%)}}
@keyframes lzApAbajo{to{transform:translateY(101%)}}
.lz-ap-centro{
  position:absolute; left:50%; top:50%; width:74px; height:74px; margin:-37px 0 0 -37px;
  color:var(--lz-oro); animation:lzApSol 1.5s cubic-bezier(.34,1.2,.5,1) forwards;
}
.lz-ap-centro svg{width:100%; height:100%}
/* El disco se dibuja como trazo y despues se rellena: se siente escrito a mano */
.lz-ap-disco{
  fill:none; stroke:currentColor; stroke-width:2.4;
  stroke-dasharray:47; stroke-dashoffset:47;
  animation:lzApTrazo .8s .12s cubic-bezier(.4,0,.2,1) forwards, lzApRelleno .35s .82s ease forwards;
}
.lz-ap-rayos{opacity:0; transform-origin:50% 50%; animation:lzApRayos .7s .5s cubic-bezier(.34,1.3,.5,1) forwards}
@keyframes lzApTrazo{to{stroke-dashoffset:0}}
@keyframes lzApRelleno{to{fill:currentColor}}
@keyframes lzApRayos{from{opacity:0; transform:rotate(-45deg) scale(.4)} to{opacity:1; transform:none}}
@keyframes lzApSol{0%{opacity:1; transform:scale(1)} 62%{opacity:1; transform:scale(1)} 100%{opacity:0; transform:scale(1.5)}}
@media (prefers-reduced-motion: reduce){ .lz-apertura{display:none} }

/* El abanico del diario tapaba los titulos: con el pivote en el CENTRO, la
   rotacion solapa igual arriba (foto) que abajo (texto), y la tarjeta del
   medio (z-index 2) comia el final de "Soltar lo que se esta cerrando" y el
   principio de "Señales de que estas en tu camino". Con el pivote ARRIBA el
   abanico se abre hacia abajo: las fotos siguen superpuestas y los textos
   quedan libres. Menos solape, ademas. */
.lz-diario-lista .lz-articulo{transform-origin:50% 0%}
.lz-diario-lista .lz-articulo + .lz-articulo{margin-left:-16px}
@media (max-width:899px){
  .lz-diario-lista .lz-articulo{transform-origin:50% 50%}
  .lz-diario-lista .lz-articulo + .lz-articulo{margin-left:0}
}

/* El solape negativo seguia comiendose el final y el principio de los titulos
   ("Soltar lo que se está cerrand[o]", "[Señ]ales de que estás..."): la
   tarjeta del medio (z-index 2) pisa a las laterales. El abanico lo hacen la
   ROTACION y el desnivel vertical, que no tapan texto; el solape horizontal
   no aportaba nada que no costara legibilidad. */
.lz-diario-lista{gap:16px}
.lz-diario-lista .lz-articulo + .lz-articulo{margin-left:0}

/* ═══ ROLES DEL SISTEMA TIPOGRAFICO (2026-09-03) ═════════════════════════
   Las cinco elegidas, cada una donde su forma dice algo. Va al final del
   archivo a proposito: gana por orden sobre las reglas de arriba.
   ═══════════════════════════════════════════════════════════════════════ */

/* O · ANTON — numerales de capitulo, precios y cifras. Sin remates, angosta y
   muy pesada: el contrapunto de peso al trazo finisimo de Poiret. */
.lz-numeral, .lz-lectura-num, .lz-lectura-mas-num, .lz-num-eyebrow,
.demo-num, .lz-mesa-restantes b, .mesa-restantes b{
  font-family:var(--lz-numero); font-weight:400; letter-spacing:0;
}
.lz-numeral{letter-spacing:-.01em}
.lz-lectura-precio, .lz-cd-eyebrow, .lz-lectura-badge{font-family:var(--lz-numero); font-weight:400; letter-spacing:.04em}
.lz-lectura-precio{font-size:20px}
.lz-lectura-badge{font-size:11px; letter-spacing:.12em}
.lz-cd-eyebrow{font-size:12px; letter-spacing:.2em}
/* Anton solo tiene un peso: cualquier 600/700 heredado lo deforma en el
   navegador (fauxbold). Se fija en 400 en todo lo que la use. */
.lz-numeral, .lz-lectura-num, .lz-lectura-mas-num, .lz-num-eyebrow{font-weight:400 !important}

/* P · PETIT FORMAL SCRIPT — lo escrito a mano: la nota pegada con cinta y el
   poema de cada lectura. Es el unico lugar donde una caligrafia es literal. */
.lz-nota span, .fp-nota.nota-frase, .nota-frase{
  font-family:var(--lz-mano); font-style:normal; font-weight:400;
}
.lz-nota span{font-size:19px; line-height:1.3}
.nota-frase{font-size:17px; line-height:1.5}
.fp-nota.nota-frase{font-size:20px; line-height:1.35}
body.tema-luz-activo .pl-poema{font-family:var(--lz-mano); font-style:normal; font-size:22px; line-height:1.4}

/* N · SHRIKHAND — el cierre calido: la marca gigante del pie y la cinta de
   temas. Gordita e inclinada, es lo ultimo que se ve. */
.lz-footer-marca{font-family:var(--lz-marca); font-weight:400; letter-spacing:-.02em; line-height:.9}
.lz-marquee-track span{font-family:var(--lz-marca); font-weight:400; letter-spacing:.1em; text-transform:none; font-size:15px}
.lz-diario-texto b{font-family:var(--lz-marca); font-weight:400; letter-spacing:0; line-height:1.15}

/* G · POIRET ONE — los titulos. Tiene un solo peso (400): pedirle 600/700
   produce fauxbold, asi que la jerarquia se hace con TAMAÑO, no con peso. */
.lz-hero-texto h1, .lz-estante-cab h2, .lz-titulo-seccion h2, .lz-capitulo .lz-cd-texto h2,
.lz-manif-frase, .lz-newsletter h2, .lz-articulo h3, .lz-articulo h4, .lz-lectura-nombre, .lz-cd-lectura h3,
body.tema-luz-activo .pl-titulo-mini{font-weight:400}
.lz-hero-texto h1{letter-spacing:.005em}
.lz-manif-frase{letter-spacing:.01em; font-weight:400}
.lz-portada .lz-hero-texto h1 .lz-resalto{font-style:normal; font-weight:400}
.demo-h1 .resalto, .lz-hero-texto h1 .lz-resalto{font-style:normal}

/* L · UNCIAL ANTIQUA — el nombre de la carta revelada. La letra de los
   manuscritos, exactamente donde hay una carta antigua en pantalla. */
.carta .f-nombre{font-family:var(--carta); font-weight:400; letter-spacing:.02em; font-size:9.5px}
.lz-cd-lectura h3{font-family:var(--lz-carta); font-weight:400; letter-spacing:.01em}

/* Poiret One es bastante MAS ANCHA que Bodoni con el mismo cuerpo: el titulo
   crecio hasta 1080px y la tira mostaza de "universo" se montaba sobre el sol.
   Se baja el cuerpo y se acota el bloque de texto; medido, no estimado. */
.lz-portada .lz-hero-texto{width:min(64%, 880px)}
.lz-portada .lz-hero-texto h1{font-size:clamp(46px,7.6vw,112px); line-height:1.02}
@media (max-width:899px){
  .lz-portada .lz-hero-texto{width:100%}
  .lz-portada .lz-hero-texto h1{font-size:clamp(38px,10.5vw,64px)}
}

/* EL TEXTO DE LA LECTURA VUELVE A EB GARAMOND. Poiret One es una display de
   trazo finisimo y un solo peso: preciosa en un titulo de 100px, agotadora en
   un parrafo. Y el texto de la lectura es LO QUE LA PERSONA PAGA POR LEER —
   es el unico lugar del sitio donde la legibilidad gana a la personalidad. */
body.tema-luz-activo .burbuja p{font-family:var(--lz-texto); font-size:17.5px; line-height:1.68}
body.tema-luz-activo .msj.mia .burbuja p{font-family:var(--lz-sans); font-size:13.5px}
body.tema-luz-activo .pl-detalle p:not(.pl-poema),
body.tema-luz-activo .lz-cd-lectura p{font-family:var(--lz-texto); font-size:16px; line-height:1.65}

/* ═══════════════════════════════════════════════════════════════════════════
   SISTEMA DE MATERIALES · "la mesa vista desde arriba" (2026-09-02)
   ---------------------------------------------------------------------------
   El dueño rechazo la pagina por "basica y barata" mostrando la seccion 01,
   que era un CIRCULO MOSTAZA PLANO detras de una carta. El diagnostico no fue
   que faltara decoracion: fue que la pagina estaba DIBUJADA CON CSS en vez de
   construida con materiales. Un collage no se siente collage por tener un
   color de acento; se siente collage porque cada cosa es un OBJETO APOYADO.

   Regla de este bloque — tres propiedades, no negociables, en toda pieza:
     1. SOMBRA CORTA Y DURA, desplazada hacia un lado. Una sombra difusa y
        centrada es "card de UI"; una corta y lateral es "papel sobre mesa".
     2. GIRO PROPIO. Ninguna pieza comparte angulo con la de al lado.
     3. ALGO LA SUJETA. Cinta, clip o alfiler — nada flota pegado por magia.

   Habia 25 recortes reales en arte/luz/ (querubines de Rafael, soles
   grabados, joyeria victoriana, botanica) y solo 5 se usaban mas de una vez.
   El material ya estaba comprado; la pagina no lo estaba usando.
   ═════════════════════════════════════════════════════════════════════════ */

body.tema-luz-activo{
  /* Sombra de objeto apoyado: corta, dura, lateral. Es LA diferencia entre
     "papel sobre mesa" y "card flotante" — se nota mas que cualquier color. */
  --mat-sombra:2px 3px 0 rgba(39,37,34,.07), 4px 7px 11px rgba(39,37,34,.17);
  --mat-sombra-alta:3px 5px 0 rgba(39,37,34,.06), 7px 13px 22px rgba(39,37,34,.22);
  --mat-cinta:rgba(230,214,178,.62);       /* washi color papel de arroz */
  --mat-cinta-borde:rgba(150,128,84,.28);
}

/* ---- Cinta washi ---------------------------------------------------------
   Dos tiras cruzadas en esquinas opuestas. El degradado vertical simula el
   translucido del papel de arroz, y las lineas repeating- son su fibra. */
.mat-cinta{position:relative}
.mat-cinta::before, .mat-cinta::after{
  content:""; position:absolute; z-index:4; width:74px; height:23px;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.16) 0 2px, transparent 2px 5px),
    linear-gradient(178deg, rgba(255,255,255,.42), var(--mat-cinta) 42%, rgba(174,150,100,.30));
  border-left:1px solid var(--mat-cinta-borde);
  border-right:1px solid var(--mat-cinta-borde);
  box-shadow:0 1px 3px rgba(39,37,34,.16);
  pointer-events:none;
}
.mat-cinta::before{top:-11px;  left:-19px;  transform:rotate(-38deg)}
.mat-cinta::after {bottom:-10px; right:-17px; transform:rotate(-33deg)}
.mat-cinta-1::after{display:none}                       /* una sola tira */
.mat-cinta-alta::before{top:-13px; left:50%; margin-left:-37px; transform:rotate(-2.2deg)}
.mat-cinta-alta::after{display:none}

/* ---- Hoja de papel apoyada ---------------------------------------------- */
.mat-papel{
  position:relative; background:var(--lz-papel);
  box-shadow:var(--mat-sombra);
  /* borde rasgado: los quiebres son irregulares a proposito, un poligono
     regular se lee como "forma", uno irregular se lee como "roto a mano" */
  clip-path:polygon(0 1.4%, 12% 0, 31% 1.1%, 55% .2%, 78% 1.3%, 100% .4%,
                    99.2% 26%, 100% 58%, 99.4% 82%, 100% 99%,
                    76% 98.6%, 49% 100%, 24% 98.8%, 0 99.6%,
                    .7% 71%, 0 43%, .8% 18%);
}
/* Grano y fibra: sin esto el papel es un rectangulo de color. */
.mat-grano::after{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  opacity:.30; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' width='170' height='170'>\
<filter id='f'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4'/>\
<feColorMatrix type='saturate' values='0'/></filter>\
<rect width='170' height='170' filter='url(%23f)' opacity='.42'/></svg>");
}

/* ---- Recortes sueltos: los objetos de la mesa ---------------------------- */
.mat-recorte{
  position:absolute; pointer-events:none; user-select:none; z-index:3;
  filter:drop-shadow(2px 4px 5px rgba(39,37,34,.26));
}
.mat-recorte img{display:block; width:100%; height:auto}
/* Envejecido: los recortes vienen de fuentes distintas y de fabrica NO
   combinan entre si. Sepia + saturacion baja los mete en una misma paleta. */
.mat-viejo img{filter:sepia(.30) saturate(.86) contrast(1.03)}

/* ---- Alfiler ------------------------------------------------------------- */
.mat-alfiler::before{
  content:""; position:absolute; z-index:5; top:-7px; left:50%; width:13px; height:13px;
  margin-left:-6px; border-radius:50%;
  background:radial-gradient(circle at 33% 30%, #E8DCC6, var(--lz-borgona) 62%, #4A211B);
  box-shadow:1px 2px 3px rgba(39,37,34,.42);
}

/* ---- 01 · CARTA DEL DIA, rehecha como mesa (2026-09-02) -------------------
   Antes: .lz-cd-mesa::before = un circle mostaza de 400px. Un div redondo.
   Ahora: el sol grabado ocupa ese lugar — mismo peso, pero es una cosa. */
.lz-capitulo .lz-cd-mesa::before{display:none}   /* muere el circulo */

.lz-capitulo .lz-cd-mesa{padding:44px 0 34px}
.cd-sol{
  left:50%; top:46%; width:min(60vw,410px); margin-left:min(-30vw,-205px);
  transform:translateY(-50%) rotate(-4deg); z-index:0; opacity:.92;
  animation:matGiro 190s linear infinite;   /* casi imperceptible, a proposito */
}
@keyframes matGiro{to{transform:translateY(-50%) rotate(356deg)}}
@media (prefers-reduced-motion: reduce){ .cd-sol{animation:none} }

/* Los querubines se CORTAN contra el borde inferior: en un collage las cosas
   se salen de la hoja. Un recorte entero y centrado se lee como icono. */
.cd-querubines{left:-42px; bottom:-26px; width:190px; transform:rotate(-6deg); z-index:2; opacity:.95}
.cd-llave{right:2%; top:6%; width:52px; transform:rotate(19deg); z-index:2}
.cd-mariquita{right:16%; bottom:9%; width:34px; transform:rotate(-24deg); z-index:4}
.cd-lirios{right:-58px; top:-40px; width:150px; transform:rotate(11deg); z-index:0; opacity:.8}

/* El bloque de texto deja de flotar sobre el fondo: es una hoja apoyada. */
.lz-capitulo .lz-cd-texto{
  background:rgba(232,220,198,.60); padding:30px 30px 28px;
  box-shadow:var(--mat-sombra); transform:rotate(-.7deg);
  clip-path:polygon(0 1.6%, 15% 0, 38% 1.2%, 62% .3%, 84% 1.4%, 100% .5%,
                    99.1% 30%, 100% 62%, 99.3% 85%, 100% 99%,
                    72% 98.5%, 44% 100%, 19% 98.7%, 0 99.5%,
                    .8% 68%, 0 39%, .9% 16%);
}
.lz-capitulo .lz-cd-carta{z-index:3}

@media (max-width:860px){
  .cd-sol{width:min(74vw,330px); margin-left:min(-37vw,-165px)}
  .cd-querubines{width:132px; left:-30px; bottom:-14px}
  .cd-lirios{display:none}
  .lz-capitulo .lz-cd-texto{padding:24px 22px; transform:rotate(-.5deg)}
}

/* ---- 01 · correcciones medidas sobre la captura (2026-09-02) --------------
   Tres defectos reales del primer intento, no estimados: (a) los lirios
   caian ENCIMA de "Saca una carta" y lo volvian ilegible; (b) quedaba un
   hueco muerto de ~250px entre la carta y el papel — la composicion estaba
   partida en dos mitades en vez de ser un monton; (c) los querubines se
   leian como un rectangulo de foto con el borde duro a la vista. */

/* (a) los lirios pasan DETRAS del papel y asoman por el borde: en un collage
       lo que esta abajo se ve por los costados, no encima del texto. */
.cd-lirios{right:-46px; top:auto; bottom:-34px; width:126px; transform:rotate(150deg); z-index:-1; opacity:.72}

/* (b) el papel PISA el sol. El solape es lo que convierte dos objetos
       separados en un monton apilado. */
.lz-capitulo .lz-cd-texto{margin-left:-72px; z-index:4}
.lz-carta-dia.lz-capitulo{grid-template-columns:1.18fr 1fr; gap:0; padding:70px 44px 46px}

/* (c) los querubines pasan a ser una FOTO: marco blanco y sombra propia. El
       rectangulo deja de ser un descuido y pasa a ser una decision. */
.cd-querubines{left:-24px; bottom:-40px; width:196px; transform:rotate(-7deg); filter:none}
.cd-querubines img{
  border:7px solid #FBF7EC; border-bottom-width:22px;
  box-shadow:var(--mat-sombra-alta); filter:sepia(.26) saturate(.9) contrast(1.03);
}

/* la llave se apoya SOBRE el papel y la mariquita camina por el borde de la
   carta — dos objetos sueltos en el vacio no son collage, son ruido. */
.cd-llave{right:24%; top:-14px; width:46px; transform:rotate(31deg); z-index:5}
.cd-mariquita{right:auto; left:47%; bottom:22%; width:27px; transform:rotate(-24deg); z-index:5}

@media (max-width:860px){
  .lz-capitulo .lz-cd-texto{margin-left:0}
  .cd-querubines{width:140px; left:-16px; bottom:-22px}
  .cd-lirios{display:none}
}

/* ---- 01 · tercera pasada: cerrar la composicion --------------------------
   Medido, no estimado: quedaban 348px de vacio entre la ultima pieza (1092)
   y el borde de la ventana, y el papel de texto tenia 320px de ancho — la
   escena entera vivia en la mitad izquierda. */
.lz-capitulo .lz-cd-texto{
  max-width:none; padding:34px 38px 32px;
  background:rgba(234,223,203,.94);   /* .60 dejaba pasar los lirios por
                                         debajo y cruzaban el parrafo */
}
.lz-capitulo .lz-cd-texto h2{font-size:clamp(36px,4vw,56px)}
.lz-capitulo .lz-cd-texto p{max-width:38ch}

/* la luna y la mariposa cierran el borde derecho */
.cd-luna{right:-10px; top:2%; width:104px; transform:rotate(13deg); z-index:2; opacity:.9}
.cd-mariposa{right:6%; bottom:-18px; width:96px; transform:rotate(-11deg); z-index:5}
.cd-lirios{right:auto; left:-30px; bottom:-30px; width:118px; transform:rotate(160deg); z-index:0; opacity:.66}

/* el numeral 01 se peleaba con el sol (ambos a la izquierda, opacity .55) */
.lz-carta-dia.lz-capitulo > .lz-numeral-grande{left:auto; right:2%; top:-6px; opacity:.30}

@media (max-width:860px){
  .cd-luna{width:64px; right:-4px}
  .cd-mariposa{width:62px; right:2%; bottom:-10px}
}

/* ---- 01 · cuarta pasada: el papel se estiro a una TIRA -------------------
   Al quitarle el max-width paso de 320px a 621px y quedo una banda chata:
   el titulo entra en una linea y el clip-path rasgado se estira hasta
   desaparecer. Una hoja tiene proporcion de hoja. */
.lz-capitulo .lz-cd-texto{max-width:520px; padding:36px 40px 34px}
.cd-lirios{left:-56px; bottom:-52px; width:132px; z-index:0}
.cd-luna{right:-22px; top:-8%}
.cd-mariposa{right:-30px; bottom:6%; width:88px}

/* ---- 01 · quinta pasada: los tres recortes ahora cuelgan de la SECCION ----
   Reposicionados contra la seccion (no contra el papel). Y el papel vuelve a
   proporcion de hoja: a 520px el titulo entraba en una linea y quedaba una
   tira de 523x223 (ratio 2.34). A 420 rompe en dos lineas. */
.lz-capitulo .lz-cd-texto{max-width:430px}
.lz-carta-dia.lz-capitulo > .cd-lirios{left:auto; right:3%; bottom:-42px; width:128px; transform:rotate(163deg); z-index:1; opacity:.7}
.lz-carta-dia.lz-capitulo > .cd-luna{right:5%; top:8%; width:98px; transform:rotate(14deg); z-index:1; opacity:.92}
.lz-carta-dia.lz-capitulo > .cd-mariposa{right:auto; left:56%; top:-16px; bottom:auto; width:84px; transform:rotate(-13deg); z-index:5}

/* ═══ SELLAR LAS JUNTURAS + MATERIALIZAR LA 02 (2026-09-02) ═════════════════
   Diagnostico tras capturar la home entera ventana por ventana: las piezas
   individuales estaban bien; lo que fallaba eran las JUNTURAS. Entre el fin
   del estante y la foto del manifiesto habia ~300px de crema plana donde no
   pasaba nada, y el bloque "02 Elige tu lectura" flotaba sin materialidad
   sobre el fondo. En un collage no hay junturas: algo siempre las cruza. */

/* ---- juntura 02 → 03 ----------------------------------------------------- */
.lz-cruce.cr-palomas{left:7%; top:-118px; width:168px; transform:rotate(-11deg) scaleX(-1); opacity:.95}
.lz-cruce.cr-corazon{right:11%; top:-96px; width:104px; transform:rotate(13deg)}
.lz-cruce.cr-papel{
  left:30%; top:-150px; width:210px; transform:rotate(-5deg); opacity:.9;
  filter:drop-shadow(2px 5px 8px rgba(40,30,20,.22));
}

/* ---- 02 · la cabecera pasa a ser una hoja apoyada ------------------------ */
.lz-estante-cab{
  background:rgba(232,220,198,.90); padding:34px 30px 30px; margin-right:14px;
  box-shadow:var(--mat-sombra-alta); transform:rotate(-1deg);
  clip-path:polygon(0 1.5%, 14% 0, 36% 1.1%, 60% .2%, 83% 1.3%, 100% .4%,
                    99.2% 28%, 100% 60%, 99.4% 84%, 100% 99%,
                    74% 98.6%, 46% 100%, 21% 98.8%, 0 99.6%,
                    .8% 70%, 0 41%, .9% 17%);
}
.est-corazon{right:-46px; top:-58px; width:92px; transform:rotate(15deg); z-index:6}
.est-figura{left:-58px; bottom:-46px; width:126px; transform:rotate(-9deg); z-index:0; opacity:.62}
.est-ojo{right:8%; bottom:-34px; width:56px; transform:rotate(-17deg); z-index:6}

/* La bola de cristal del diario quedaba cortada en seco por el borde del
   papel verde: se leia como error de recorte, no como objeto apoyado. */
.lz-diario-bola{filter:drop-shadow(3px 6px 10px rgba(40,30,20,.34))}

@media (max-width:899px){
  .lz-cruce.cr-palomas{width:104px; top:-72px; left:3%}
  .lz-cruce.cr-corazon{width:66px; top:-58px; right:5%}
  .lz-cruce.cr-papel{display:none}
  .lz-estante-cab{padding:26px 22px 24px; margin-right:0}
  .est-figura, .est-ojo{display:none}
  .est-corazon{width:58px; right:-16px; top:-30px}
}

/* ---- 02 · recortes reubicados contra .lz-estante-pin ----------------------
   Y el vacio vertical: la hoja quedaba flotando en el centro de una columna
   de 100vh con ~250px muertos arriba y abajo. Las piezas los ocupan. */
.lz-estante-pin > .est-corazon{left:26%; top:15%; width:96px; transform:rotate(16deg); z-index:6}
.lz-estante-pin > .est-figura{left:2%; bottom:6%; width:148px; transform:rotate(-8deg); z-index:1; opacity:.66}
.lz-estante-pin > .est-ojo{left:20%; bottom:18%; width:60px; transform:rotate(-18deg); z-index:6}
.lz-estante-pin{overflow:visible}
.lz-estante-vent{overflow:hidden}

@media (max-width:899px){
  .lz-estante-pin > .est-figura, .lz-estante-pin > .est-ojo{display:none}
  .lz-estante-pin > .est-corazon{width:58px; left:auto; right:6%; top:6%}
}

/* ---- 02 · las piezas PISAN la hoja ---------------------------------------
   Sueltas alrededor con aire de por medio se leen como iconos dispersos.
   Solapadas contra el borde de la hoja se leen como un monton. */
.lz-estante-pin > .est-corazon{left:auto; right:calc(100% - 505px); top:calc(50% - 205px); width:88px; transform:rotate(17deg)}
.lz-estante-pin > .est-figura{left:-14px; top:calc(50% + 90px); bottom:auto; width:150px; transform:rotate(-10deg); opacity:.7}
.lz-estante-pin > .est-ojo{left:auto; right:calc(100% - 470px); top:calc(50% + 140px); bottom:auto; width:54px; transform:rotate(-19deg)}

/* ---- Cruces ancladas a la seccion, con bottom (2026-09-02) ---------------
   BUG ENCONTRADO: .lz-cruce era hermana suelta dentro de #vCatalogo, que es
   position:relative y arranca en el tope de la pagina. Con top negativo las
   cuatro caian en y=-13 — arriba de todo, invisibles. cr-vela llevaba asi
   desde que se escribio: el comentario decia "cruza la frontera 01→02" y no
   cruzaba nada. Ahora cuelgan de su seccion y usan bottom. */
.lz-carta-dia.lz-capitulo > .cr-vela{top:auto; bottom:-84px; right:14%; width:120px; transform:rotate(-9deg)}
.lz-estante > .cr-palomas{top:auto; bottom:-64px; left:9%;  width:172px; transform:rotate(-11deg) scaleX(-1); opacity:.95}
.lz-estante > .cr-corazon{top:auto; bottom:-52px; right:13%; width:100px; transform:rotate(13deg)}
.lz-estante > .cr-papel  {top:auto; bottom:-92px; left:34%;  width:206px; transform:rotate(-5deg); opacity:.9;
                          filter:drop-shadow(2px 5px 8px rgba(40,30,20,.22))}
@media (max-width:899px){
  .lz-estante > .cr-palomas{width:100px; bottom:-40px; left:3%}
  .lz-estante > .cr-corazon{width:62px; bottom:-34px; right:5%}
  .lz-estante > .cr-papel{display:none}
  .lz-carta-dia.lz-capitulo > .cr-vela{width:76px; bottom:-48px; right:6%}
}

/* Las cruces salian recortadas en seco por el borde de la foto: el estante
   es z-index:20 y el manifiesto 21, asi que TODO el estante — cruces
   incluidas — quedaba debajo. Un hijo nunca supera al z-index de su
   ancestro, por mas z-index propio que tenga. Sube la seccion entera. */
.lz-estante{z-index:22}

/* ---- 01 · movil: mi regla de grid pisaba el responsive --------------------
   `.lz-carta-dia.lz-capitulo{grid-template-columns:1.18fr 1fr}` se escribio
   sin media query y, por orden de cascada, gano sobre la regla de 860px que
   apilaba en una columna: en 375px el papel quedaba en una tira de ~5
   palabras por linea. Va al final para ganar por orden. */
@media (max-width:860px){
  .lz-carta-dia.lz-capitulo{grid-template-columns:1fr; gap:16px; padding:58px 22px 30px; text-align:center}
  .lz-capitulo .lz-cd-texto{max-width:none; margin:0 auto; padding:26px 24px 24px; transform:rotate(-.6deg)}
  .lz-capitulo .lz-cd-texto p{max-width:none; margin-left:auto; margin-right:auto}
  .lz-carta-dia.lz-capitulo > .cd-luna{width:62px; right:2%; top:4%}
  .lz-carta-dia.lz-capitulo > .cd-mariposa{width:56px; left:auto; right:24%; top:-8px}
  .lz-carta-dia.lz-capitulo > .cd-lirios{width:88px; right:-18px; bottom:-24px}
  .cd-llave{width:36px; right:16%; top:-6px}
}
/* La polaroid de querubines tapaba "TOCA LA CARTA" en movil ("OCA LA CARTA"). */
@media (max-width:860px){
  .cd-querubines{width:118px; left:-20px; bottom:auto; top:34%}
  .lz-capitulo .lz-cd-pista{position:relative; z-index:6}
}

/* ═══════════════════════════════════════════════════════════════════════════
   PANTALLA DE LECTURA · "la mesa preparada" (2026-09-02)
   ---------------------------------------------------------------------------
   El dueño: "queda muy vacia a comparacion de la web principal". Medido: era
   una columna de 640px centrada en un canvas de 1440 — ~800px de crema vacia
   a los lados — con bandas horizontales de fondo que no significaban nada.

   Dos hallazgos que decidieron el rediseño:
     · `plFoto` YA carga el collage completo del producto (ARTE_COLLAGE[p.id],
       ~165KB de arte real) y se mostraba en un cuadrado de 72px.
     · El poema y la explicacion —el contenido que llenaria la pagina— vivian
       dentro de un <details> COLAPSADO.

   El rediseño no agrega contenido nuevo: pone a la vista el que ya existia.
   Dos columnas asimetricas — a la izquierda la FICHA de la lectura (el
   collage grande, apoyado con cinta), a la derecha LA CARTA QUE ESCRIBIS.
   Todo via grid sobre los hijos que ya estaban: el HTML de los campos no se
   toca, asi `modo-historial` y app.js siguen funcionando igual.
   ═════════════════════════════════════════════════════════════════════════ */

@media (min-width:1000px){
  body.tema-luz-activo #pantallaLectura{
    display:grid; grid-template-columns:minmax(320px,42%) 1fr;
    column-gap:46px; row-gap:0; align-items:start;
    max-width:1180px; margin:0 auto; padding:0 40px 60px; position:relative;
  }
  /* Por defecto todo hijo ocupa el ancho completo (chat, cartas, revelar…).
     Solo las tres piezas de la preparacion se reparten en columnas. */
  body.tema-luz-activo #pantallaLectura > *{grid-column:1 / -1}
  body.tema-luz-activo #pantallaLectura > .pl-compacta{grid-column:1; grid-row:2}
  body.tema-luz-activo #pantallaLectura > .pl-detalle {grid-column:1; grid-row:3; align-self:start}
  body.tema-luz-activo #pantallaLectura > .pl-bloque  {grid-column:2; grid-row:2 / span 2}

  /* ---- La ficha: el collage deja de ser un thumbnail ---- */
  body.tema-luz-activo .pl-compacta{
    display:block; max-width:none; margin:0; padding:16px 16px 22px;
    background:#FBF7EC; transform:rotate(-1.1deg);
    box-shadow:var(--mat-sombra-alta); clip-path:none; position:relative;
  }
  body.tema-luz-activo .pl-foto-mini{
    width:100%; height:auto; aspect-ratio:4/5; border-radius:0; margin-bottom:16px;
    box-shadow:0 3px 10px rgba(39,37,34,.28);
  }
  body.tema-luz-activo .pl-foto-mini img{filter:sepia(.16) saturate(.94) contrast(1.03)}
  /* cinta washi sujetando la ficha a la mesa */
  body.tema-luz-activo .pl-compacta::before{
    content:""; position:absolute; z-index:4; top:-13px; left:50%; margin-left:-42px;
    width:84px; height:24px;
    background:
      repeating-linear-gradient(90deg, rgba(255,255,255,.16) 0 2px, transparent 2px 5px),
      linear-gradient(178deg, rgba(255,255,255,.42), var(--mat-cinta) 42%, rgba(174,150,100,.30));
    border-left:1px solid var(--mat-cinta-borde); border-right:1px solid var(--mat-cinta-borde);
    box-shadow:0 1px 3px rgba(39,37,34,.16); transform:rotate(-2.4deg);
  }
  body.tema-luz-activo .pl-info-mini{padding:0 8px}
  body.tema-luz-activo .pl-titulo-mini{
    font-family:var(--lz-serif); font-weight:400; text-transform:none;
    font-size:clamp(30px,3.2vw,44px); line-height:1; letter-spacing:-.02em;
    margin:0 0 10px; color:var(--lz-oscuro);
  }
  body.tema-luz-activo .pl-meta-mini{gap:18px; font-family:var(--lz-sans)}
  body.tema-luz-activo .pl-meta-mini .precio{font-family:var(--lz-numero); font-weight:400; font-size:17px}

  /* ---- El detalle se ABRE: el poema es el argumento de venta ---- */
  body.tema-luz-activo .pl-detalle{
    max-width:none; margin:18px 0 0; padding:22px 24px 20px;
    background:rgba(232,220,198,.72); box-shadow:var(--mat-sombra);
    transform:rotate(.6deg); position:relative;
  }
  body.tema-luz-activo .pl-detalle summary{display:none}   /* ya no se colapsa */
  body.tema-luz-activo .pl-poema{
    font-family:var(--lz-mano); font-style:normal; font-size:19px; line-height:1.5;
    color:var(--lz-tinta); margin:0 0 12px; max-width:none;
  }

  /* ---- La carta que escribis ---- */
  body.tema-luz-activo .pl-bloque{
    max-width:none; margin:0; padding:34px 34px 32px;
    background:#F6F1E4; box-shadow:var(--mat-sombra-alta); transform:rotate(.5deg);
    position:relative;
  }
  /* renglones de hoja de carta, detras del formulario */
  body.tema-luz-activo .pl-bloque::after{
    content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.4;
    background:repeating-linear-gradient(180deg, transparent 0 33px, rgba(120,104,76,.16) 33px 34px);
  }
  body.tema-luz-activo .pl-bloque > *{position:relative; z-index:1}
  body.tema-luz-activo .pl-bloque .et-eyebrow{
    font-family:var(--lz-numero); font-weight:400; font-size:13px; letter-spacing:.16em;
    color:var(--lz-oro-tinta);
  }
}

/* ---- Recortes de la mesa (todas las anchuras) ---------------------------- */
body.tema-luz-activo #pantallaLectura{position:relative}
.pl-rc{display:none}
@media (min-width:1180px){
  body.tema-luz-activo .pl-rc{display:block}
  body.tema-luz-activo .pl-rc-sol      {left:-96px;  top:210px;  width:118px; transform:rotate(-9deg);  opacity:.85; z-index:0}
  body.tema-luz-activo .pl-rc-querubin {left:-70px;  top:560px;  width:112px; transform:rotate(7deg);   opacity:.9;  z-index:0}
  body.tema-luz-activo .pl-rc-flor     {right:-84px; top:150px;  width:126px; transform:rotate(12deg);  opacity:.8;  z-index:0}
  body.tema-luz-activo .pl-rc-estrella {right:-52px; top:520px;  width:78px;  transform:rotate(-14deg); opacity:.9;  z-index:0}
  body.tema-luz-activo .pl-rc-llave    {left:36%;    top:-16px;  width:44px;  transform:rotate(24deg);  z-index:6}
  body.tema-luz-activo .pl-rc-papel    {right:-60px; bottom:60px; width:150px; transform:rotate(-6deg); opacity:.72; z-index:0}
}

/* ---- Pantalla de lectura · correcciones medidas --------------------------
   (a) El poema seguia oculto: esconder el <summary> NO abre un <details>.
       El contenido de un details cerrado lo oculta el navegador, no el CSS
       del summary. Hay que forzar los hijos.
   (b) La columna derecha quedaba con ~600px vacios bajo el formulario
       (form terminaba en y=398, la ficha en y=810). El mazo bloqueado se
       muda ahi: es exactamente donde van a aparecer las cartas. */
@media (min-width:1000px){
  body.tema-luz-activo .pl-detalle:not([open]) > *:not(summary){display:block}
  body.tema-luz-activo .pl-detalle p{margin-bottom:0}
  body.tema-luz-activo #plExplicacion{
    font-family:var(--lz-texto); font-size:15.5px; line-height:1.6; color:var(--lz-tinta);
  }
  /* (b) el mazo sube a la columna derecha, bajo la carta que escribis */
  body.tema-luz-activo #pantallaLectura > .mazo-zona{grid-column:2; grid-row:4; margin:22px 0 0}
  body.tema-luz-activo #pantallaLectura > .pl-bloque{grid-row:2 / span 2}
  body.tema-luz-activo .mazo-zona{min-height:280px}
  /* la ficha se equilibra: 4/5 la estiraba 546px de alto contra un form de 279 */
  body.tema-luz-activo .pl-foto-mini{aspect-ratio:1/1}
  /* cuando la lectura arranca de verdad, el mazo vuelve a ancho completo */
  body.tema-luz-activo #pantallaLectura .mazo-zona.desbloqueada{grid-column:1 / -1; grid-row:auto}
}

/* ---- Pantalla de lectura · filas reordenadas -----------------------------
   El mazo caia en y=788 con el formulario terminando en 398: 390px de hueco.
   Ahora la ficha se estira sobre dos filas y la columna derecha las llena
   con el formulario arriba y el mazo debajo. */
@media (min-width:1000px){
  body.tema-luz-activo #pantallaLectura > .pl-compacta{grid-row:2 / span 2}
  body.tema-luz-activo #pantallaLectura > .pl-bloque  {grid-row:2}
  body.tema-luz-activo #pantallaLectura > .mazo-zona  {grid-row:3; align-self:center}
  body.tema-luz-activo #pantallaLectura > .pl-detalle {grid-row:4; margin-top:20px}
  body.tema-luz-activo .pl-compacta{height:100%; display:flex; flex-direction:column}
  body.tema-luz-activo .pl-foto-mini{aspect-ratio:auto; flex:1 1 auto; min-height:0}
  body.tema-luz-activo .pl-foto-mini img{height:100%}
}

/* ---- El mazo bloqueado deja de ser un placeholder ------------------------
   Medido: el dorso carga bien (706KB, 200 OK) pero `.mazo-candado` es una
   cortina crema al 92% encima. En el tema oscuro oscurece el mazo y funciona;
   en el tema claro lo BORRA — quedaba un rectangulo beige con un candado
   diminuto, que se lee como placeholder roto. Y el preview media 84x145 en
   una zona de 592x280.
   Ahora: el mazo se VE, y el bloqueo es una cinta cruzada con su sello. */
body.tema-luz-activo .mazo-zona:not(.desbloqueada) .mazo-preview{width:132px}
body.tema-luz-activo .mazo-zona:not(.desbloqueada) .mazo-candado{
  background:none; inset:auto; left:50%; top:50%; width:46px; height:46px;
  margin:-23px 0 0 -23px; border-radius:50%;
  background-image:radial-gradient(circle at 34% 30%, #9C5A47, var(--lz-borgona) 58%, #4A211B);
  box-shadow:2px 4px 8px rgba(39,37,34,.4), inset 0 1px 2px rgba(255,255,255,.28);
}
body.tema-luz-activo .mazo-zona:not(.desbloqueada) .mazo-candado svg{
  width:20px; height:20px; color:#F1EBDD; filter:none;
}
/* cinta cruzada: el mazo esta atado, no escondido */
body.tema-luz-activo .mazo-zona:not(.desbloqueada)::after{
  content:""; position:absolute; z-index:2; left:50%; top:50%; width:210px; height:26px;
  margin:-13px 0 0 -105px; transform:rotate(-19deg); pointer-events:none;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,.14) 0 2px, transparent 2px 5px),
    linear-gradient(178deg, rgba(255,255,255,.40), var(--mat-cinta) 42%, rgba(174,150,100,.32));
  border-top:1px solid var(--mat-cinta-borde); border-bottom:1px solid var(--mat-cinta-borde);
  box-shadow:0 2px 5px rgba(39,37,34,.20);
}

/* ---- La ficha vuelve a proporcion: 826px de alto separaban la foto del
   titulo. Deja de estirarse sobre dos filas. */
@media (min-width:1000px){
  body.tema-luz-activo #pantallaLectura > .pl-compacta{grid-row:2}
  body.tema-luz-activo #pantallaLectura > .pl-detalle {grid-row:3; margin-top:18px; align-self:start}
  body.tema-luz-activo #pantallaLectura > .pl-bloque  {grid-row:2; align-self:start}
  body.tema-luz-activo #pantallaLectura > .mazo-zona  {grid-row:3; align-self:start; margin:18px 0 0}
  body.tema-luz-activo .pl-compacta{height:auto; display:block}
  body.tema-luz-activo .pl-foto-mini{aspect-ratio:1/1; flex:none}
  body.tema-luz-activo .pl-foto-mini img{height:100%}
}

/* ---- Ultimo hueco: 326px entre el formulario (fin 398) y el mazo (724) ----
   La ficha abarca las dos filas de la derecha PERO con align-self:start, asi
   no se estira (eso fue lo que la llevo a 826px de alto en el intento
   anterior): solo hace que las filas se repartan su altura. */
@media (min-width:1000px){
  body.tema-luz-activo #pantallaLectura > .pl-compacta{grid-row:2 / span 2; align-self:start}
  body.tema-luz-activo #pantallaLectura > .pl-bloque  {grid-row:2}
  body.tema-luz-activo #pantallaLectura > .mazo-zona  {grid-row:3; margin:6px 0 0}
  body.tema-luz-activo #pantallaLectura > .pl-detalle {grid-row:4; margin-top:18px}
}

/* ---- Cuando la lectura ARRANCA, la mesa vuelve a una sola columna --------
   Con el mazo desbloqueado la ficha y el detalle seguian ocupando la columna
   izquierda y dejaban ~280px de hueco sobre las cartas. Mismo patron :has()
   que ya usaba .pl-bloque-ritual mas arriba en este archivo. */
@media (min-width:1000px){
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada){
    grid-template-columns:1fr; max-width:860px;
  }
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) > *{grid-column:1; grid-row:auto}
  /* la ficha se compacta: sigue diciendo QUE lectura es, sin ocupar media
     pantalla con la foto ahora que las cartas son el centro */
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-compacta{
    display:flex; flex-direction:row; align-items:center; gap:18px;
    padding:14px 20px; transform:rotate(-.6deg);
  }
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-foto-mini{
    width:64px; height:64px; flex:0 0 auto; margin:0;
  }
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-titulo-mini{font-size:26px; margin:0}
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-compacta::before{display:none}
  /* el poema ya cumplio su trabajo: convencer ANTES de empezar */
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-detalle{display:none}
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-rc{display:none}
}
/* El min-height:280px que le di al mazo bloqueado seguia reservando espacio
   una vez desbloqueado: quedaban ~280px de hueco sobre las cartas. */
body.tema-luz-activo .mazo-zona.desbloqueada{min-height:0; margin:0}

/* ═══ PANTALLA DE LECTURA · angosto (<1000px) ══════════════════════════════
   El rediseño de arriba vivia entero dentro de @media (min-width:1000px), asi
   que en tablet y movil la foto seguia siendo el thumbnail de 72px y el poema
   seguia colapsado: la pantalla que el dueño capturo NO habia cambiado en su
   ancho. Columna unica, pero con los mismos materiales. */
@media (max-width:999px){
  body.tema-luz-activo #pantallaLectura{max-width:560px; margin:0 auto; padding:0 20px 50px; position:relative}

  body.tema-luz-activo .pl-compacta{
    display:block; max-width:none; margin:8px 0 0; padding:13px 13px 18px;
    background:#FBF7EC; transform:rotate(-1deg); clip-path:none;
    box-shadow:var(--mat-sombra-alta); position:relative;
  }
  body.tema-luz-activo .pl-foto-mini{
    width:100%; height:auto; aspect-ratio:1/1; border-radius:0; margin-bottom:13px;
    box-shadow:0 3px 9px rgba(39,37,34,.26);
  }
  body.tema-luz-activo .pl-foto-mini img{filter:sepia(.16) saturate(.94) contrast(1.03)}
  body.tema-luz-activo .pl-compacta::before{   /* cinta washi */
    content:""; position:absolute; z-index:4; top:-11px; left:50%; margin-left:-36px;
    width:72px; height:21px;
    background:
      repeating-linear-gradient(90deg, rgba(255,255,255,.16) 0 2px, transparent 2px 5px),
      linear-gradient(178deg, rgba(255,255,255,.42), var(--mat-cinta) 42%, rgba(174,150,100,.30));
    border-left:1px solid var(--mat-cinta-borde); border-right:1px solid var(--mat-cinta-borde);
    box-shadow:0 1px 3px rgba(39,37,34,.16); transform:rotate(-2.6deg);
  }
  body.tema-luz-activo .pl-info-mini{padding:0 6px}
  body.tema-luz-activo .pl-titulo-mini{
    font-family:var(--lz-serif); font-weight:400; text-transform:none;
    font-size:clamp(27px,7.4vw,36px); line-height:1; letter-spacing:-.02em;
    margin:0 0 8px; color:var(--lz-oscuro);
  }
  body.tema-luz-activo .pl-meta-mini{font-family:var(--lz-sans); gap:15px}
  body.tema-luz-activo .pl-meta-mini .precio{font-family:var(--lz-numero); font-weight:400; font-size:16px}

  body.tema-luz-activo .pl-detalle{
    max-width:none; margin:16px 0 0; padding:19px 20px 17px;
    background:rgba(232,220,198,.72); box-shadow:var(--mat-sombra); transform:rotate(.7deg);
  }
  body.tema-luz-activo .pl-detalle summary{display:none}
  body.tema-luz-activo .pl-poema{
    font-family:var(--lz-mano); font-style:normal; font-size:17.5px; line-height:1.5;
    color:var(--lz-tinta); margin:0 0 10px; max-width:none;
  }
  body.tema-luz-activo #plExplicacion{font-family:var(--lz-texto); font-size:15px; line-height:1.58; color:var(--lz-tinta)}

  body.tema-luz-activo .pl-bloque{
    max-width:none; margin:18px 0 0; padding:24px 22px 22px;
    background:#F6F1E4; box-shadow:var(--mat-sombra-alta); transform:rotate(.5deg); position:relative;
  }
  body.tema-luz-activo .pl-bloque::after{
    content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.4;
    background:repeating-linear-gradient(180deg, transparent 0 33px, rgba(120,104,76,.16) 33px 34px);
  }
  body.tema-luz-activo .pl-bloque > *{position:relative; z-index:1}
  body.tema-luz-activo .pl-bloque .et-eyebrow{
    font-family:var(--lz-numero); font-weight:400; font-size:12.5px; letter-spacing:.15em;
    color:var(--lz-oro-tinta);
  }
  body.tema-luz-activo .mazo-zona:not(.desbloqueada){min-height:230px; margin:18px 0 0}

  /* con la lectura en curso la ficha se compacta igual que en desktop */
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-compacta{
    display:flex; flex-direction:row; align-items:center; gap:14px; padding:12px 15px;
  }
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-foto-mini{
    width:56px; height:56px; flex:0 0 auto; margin:0; aspect-ratio:auto;
  }
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-titulo-mini{font-size:22px; margin:0}
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-compacta::before{display:none}
  body.tema-luz-activo #pantallaLectura:has(.mazo-zona.desbloqueada) .pl-detalle{display:none}
}

/* ═══════════════════════════════════════════════════════════════════════════
   UNIFICACION · todo el sitio en "Luz" (2026-09-02)
   ---------------------------------------------------------------------------
   El dueño: "algunas subpaginas de redireccionamiento no tienen aplicado el
   nuevo diseño". No era que les faltara diseño: estaban en la OTRA identidad.
   Catalogo, tienda, historial y "sobre mi" seguian en Collage Indie oscuro
   mientras la home y la lectura ya eran claras — el salto se leia como
   paginas de otro sitio.

   Medido antes de tocar nada: al activar el tema claro en esas cuatro vistas
   quedaban 35 textos con contraste < 3:1. Pero los ratios se repetian en solo
   TRES valores (1.25, 1.65, 2.24) — no eran 35 problemas, eran los tres
   tokens de tinta de estilos.css pensados para fondo oscuro. Se redefinen los
   tokens y se arreglan los 35 de una vez.
   ═════════════════════════════════════════════════════════════════════════ */

body.tema-luz-activo{
  /* fondos y tintas: la paleta Luz ocupando los tokens de Collage Indie */
  --bg:#F1EBDD; --bg-1:#E8DCC6; --bg-2:#DFD0B4; --bg-3:#D6C4A3; --bg-rgb:241,235,221;
  --ink:#272522; --ink-dim:#4A4238; --ink-3:#6B6053;
  --linea:rgba(39,37,34,.16); --linea-fuerte:rgba(39,37,34,.32);
  --accent:#7F5C1F; --accent-2:#5E4019; --accent-3:#77745D;
  --on-accent:#F1EBDD; --accent-rgb:127,92,31;
  --ciruela:#7C443A; --ciruela-rgb:124,68,58;
  --rosa:#C79B90; --rosa-rgb:199,155,144;
  --papel:#E8DCC6; --papel-tinta:#272522;
  --sombra:0 14px 32px rgba(39,37,34,.18);
  --grade: saturate(.95) sepia(.12) contrast(1.03) brightness(1.01);
}
/* el fondo del documento entero, no solo el de las secciones */
body.tema-luz-activo{background:var(--lz-crema)}
/* Estas dos capas estaban calibradas para pintar sobre negro: sobre crema
   ensucian el papel en vez de darle grano. */
body.tema-luz-activo .velon, body.tema-luz-activo .efimera{display:none}
body.tema-luz-activo .grano{mix-blend-mode:multiply; opacity:.30}

/* ═══ LAS CUATRO SUBVISTAS, con los mismos materiales (2026-09-02) ═════════
   Unificado el tema, quedaron legibles pero PLANAS: ninguna tenia collage.
   Se les aplica el sistema .mat-* — sombra corta y lateral, giro propio y
   algo que las sujete. */

/* ---- Medallones de categoria: eran radiales a rgba(0,0,0,.55), pensados
   para brillar sobre negro. Sobre crema quedaban circulos GRISES SUCIOS. */
body.tema-luz-activo .cat-medallon{
  background:radial-gradient(circle at 46% 36%, #FBF7EC, rgba(var(--tinte-rgb,var(--accent-rgb)),.30) 74%);
  box-shadow:inset 0 0 0 1px rgba(39,37,34,.16), 2px 3px 6px rgba(39,37,34,.20);
  opacity:.9;
}
body.tema-luz-activo .cat.activa .cat-medallon{
  opacity:1; box-shadow:inset 0 0 0 1.5px var(--lz-oro-tinta), 2px 4px 9px rgba(39,37,34,.26);
}
body.tema-luz-activo .cat-medallon svg{color:var(--lz-oro-tinta)}

/* ---- Cabeceras de seccion: el titulo deja de flotar y se apoya ---------- */
body.tema-luz-activo .et-titulo{
  font-family:var(--lz-serif); font-weight:400; text-transform:none;
  font-size:clamp(38px,5vw,64px); letter-spacing:-.02em; color:var(--lz-oscuro);
}
body.tema-luz-activo .et-eyebrow{font-family:var(--lz-numero); font-weight:400; color:var(--lz-oro-tinta)}

/* ---- Tienda: los packs pasan a ser sobres apoyados --------------------- */
body.tema-luz-activo .pack{
  background:#FBF7EC; box-shadow:var(--mat-sombra); border-radius:0;
  padding:34px 20px 26px;
}
body.tema-luz-activo .pack:nth-child(1){--giro:-1.4deg}
body.tema-luz-activo .pack:nth-child(2){--giro:.9deg}
body.tema-luz-activo .pack:nth-child(3){--giro:-.5deg}
body.tema-luz-activo .pack:nth-child(4){--giro:1.5deg}
body.tema-luz-activo .pack:hover{box-shadow:var(--mat-sombra-alta)}
body.tema-luz-activo .pack.mejor{box-shadow:inset 0 0 0 1.5px var(--lz-oro-tinta), var(--mat-sombra-alta)}
/* "El más elegido" es un ancla social, no la mejor relación precio/moneda
   (esa es .mejor) -- un contorno mas discreto para que no compitan visualmente. */
body.tema-luz-activo .pack.elegido{box-shadow:inset 0 0 0 1.5px var(--lz-tinta-suave), var(--mat-sombra-alta)}
/* la foto de monedas era un cuadrado oscuro de 78px: sobre papel se leia como
   una mancha negra. Mas grande y con marco de foto. */
body.tema-luz-activo .pack-arte{
  width:112px; height:112px; object-fit:cover; border:5px solid #FBF7EC;
  box-shadow:0 2px 8px rgba(39,37,34,.28); filter:sepia(.2) saturate(.92) contrast(1.03);
}
body.tema-luz-activo .pack .n{font-family:var(--lz-numero); font-weight:400; font-size:40px}
body.tema-luz-activo .pack .n small{font-family:var(--lz-sans); color:var(--lz-tinta-suave)}
body.tema-luz-activo .pack .badge{
  font-family:var(--lz-numero); font-weight:400; letter-spacing:.12em; border-radius:0;
  color:#F1EBDD; background:var(--lz-oscuro); box-shadow:1px 2px 5px rgba(39,37,34,.3);
}
body.tema-luz-activo .pack .precio-usd{font-family:var(--lz-numero); font-weight:400}

/* ---- Recortes de mesa, comunes a las cuatro ---------------------------- */
.sub-rc{display:none}
@media (min-width:1100px){
  body.tema-luz-activo .sub-rc{display:block; position:absolute; pointer-events:none; z-index:0;
    filter:drop-shadow(2px 4px 5px rgba(39,37,34,.24))}
  body.tema-luz-activo .sub-rc img{display:block; width:100%; height:auto;
    filter:sepia(.28) saturate(.88) contrast(1.03)}
  body.tema-luz-activo .src-1{left:-8px;   top:96px;  width:118px; transform:rotate(-10deg); opacity:.82}
  body.tema-luz-activo .src-2{right:6px;   top:60px;  width:104px; transform:rotate(13deg);  opacity:.8}
  body.tema-luz-activo .src-3{left:24px;   bottom:70px; width:126px; transform:rotate(8deg); opacity:.7}
  body.tema-luz-activo .src-4{right:-6px;  bottom:110px; width:96px; transform:rotate(-15deg); opacity:.78}
}
body.tema-luz-activo #vLecturas, body.tema-luz-activo #vTienda,
body.tema-luz-activo #vHistorial, body.tema-luz-activo #vComoFunciona{position:relative}

/* ---- Historial vacio: la hoja sola en la nada -------------------------- */
body.tema-luz-activo .hist-vacio, body.tema-luz-activo #vHistorial .vacio{
  background:rgba(232,220,198,.82); box-shadow:var(--mat-sombra-alta);
  transform:rotate(-1deg); border-radius:0;
}
/* Los recortes con left/right negativos empujaban el ancho del documento:
   desborde horizontal en catalogo, tienda e historial (medido). overflow-x:
   clip en vez de hidden — no crea contexto de scroll ni rompe sticky. */
body.tema-luz-activo #vLecturas, body.tema-luz-activo #vTienda,
body.tema-luz-activo #vHistorial, body.tema-luz-activo #vComoFunciona{overflow-x:clip}

/* ---- Historial: tres defectos medidos sobre la captura -------------------
   (a) la llave salia cortada por el borde derecho (overflow-x:clip);
   (b) luna y palomas se solapaban entre si a la izquierda;
   (c) ~500px muertos abajo, porque la vista vacia tiene poco contenido. */
@media (min-width:1100px){
  body.tema-luz-activo #vHistorial .src-1{left:16px;  top:120px;   width:104px; transform:rotate(-11deg)}
  body.tema-luz-activo #vHistorial .src-2{right:70px; top:104px;   width:88px;  transform:rotate(14deg)}
  body.tema-luz-activo #vHistorial .src-3{left:60px;  top:420px;   bottom:auto; width:120px; transform:rotate(9deg)}
  body.tema-luz-activo #vHistorial .src-4{right:120px; top:470px;  bottom:auto; width:56px;  transform:rotate(-16deg)}
}
/* (c) la vista vacia deja de ser una hoja arriba con medio kilometro debajo */
body.tema-luz-activo #vHistorial:has(.vacio), body.tema-luz-activo #vHistorial:has(.hist-vacio){
  min-height:auto; padding-bottom:70px;
}
body.tema-luz-activo #vHistorial{padding-bottom:70px}
/* el boton de la hoja vacia era crema sobre crema */
body.tema-luz-activo #vHistorial .vacio .cta-dorado,
body.tema-luz-activo .hist-vacio .cta-dorado{
  background:var(--lz-oscuro); color:#F1EBDD; box-shadow:2px 3px 7px rgba(39,37,34,.3);
}

/* ---- Catalogo: el mismo producto tenia dos tipografias segun la pantalla
   ("Lectura General" en Courier Prime aca, en Poiret One en la home). El
   sistema de roles vale para todo el sitio, no solo para la home. */
body.tema-luz-activo #grillaCatalogo h3{
  font-family:var(--lz-serif); font-weight:400; text-transform:none;
  font-size:23px; letter-spacing:-.01em; color:var(--lz-oscuro);
}
body.tema-luz-activo .cl-precio{font-family:var(--lz-numero); font-weight:400; font-size:17px}
body.tema-luz-activo .cl-cartas{font-family:var(--lz-sans); font-size:12px; letter-spacing:.04em}
body.tema-luz-activo .cl-destacada{
  font-family:var(--lz-numero); font-weight:400; letter-spacing:.12em;
  background:var(--lz-oscuro); color:#F1EBDD;
}

/* ═══ MODALES en el tema Luz (2026-09-02) ═════════════════════════════════
   BUG QUE INTRODUJE YO al unificar el tema: `.modal::backdrop` en estilos.css
   es `rgba(var(--bg-rgb),.84)`, y al redefinir --bg-rgb a crema (241,235,221)
   para el tema Luz el velo paso a ser CREMA SOBRE CREMA: abrir el modal lavaba
   toda la pagina de blanco y el modal no destacaba de su propio fondo.
   La regla correcta ya existia para `:root[data-theme="light"]`, pero ese
   selector no aplica cuando el tema va por `body.tema-luz-activo`. */
body.tema-luz-activo .modal::backdrop{background:rgba(39,37,34,.52)}
body.tema-luz-activo .modal{
  background:#FBF7EC; color:var(--lz-oscuro);
  box-shadow:var(--mat-sombra-alta); border-radius:0;
}
body.tema-luz-activo .modal h3{
  font-family:var(--lz-serif); font-weight:400; text-transform:none;
  font-size:29px; letter-spacing:-.01em; color:var(--lz-oscuro);
}
body.tema-luz-activo .modal-sub{font-family:var(--lz-texto); font-size:15px; color:var(--lz-tinta)}
body.tema-luz-activo .modal input{background:#F1EBDD; color:var(--lz-oscuro); border-color:rgba(39,37,34,.22)}
body.tema-luz-activo .modal input::placeholder{color:var(--lz-tinta-suave)}
/* el enlace de alternar medía 4.48:1 — por debajo del minimo AA de 4.5 */
body.tema-luz-activo .modal-alt a{color:#6B4A16}

/* ═══ OBJETIVOS TACTILES (2026-09-03) ═══════════════════════════════════════
   Medido en 375px: los iconos de redes del pie eran de 17x17 px, el toggle de
   idioma 27x28, la marca 26x26 y los enlaces legales 16 px de alto. El minimo
   usable en tactil son 44x44 (WCAG 2.5.5) y el trafico de este sitio llega de
   TikTok, o sea casi todo movil.

   El area se agranda SIN agrandar el dibujo: un ::after invisible centrado
   sobre el elemento. Asi el pie sigue viendose igual de fino y el dedo acierta.
   ═════════════════════════════════════════════════════════════════════════ */
@media (pointer: coarse), (max-width: 899px) {
  .lz-redes-iconos a, .tg-idioma button, .brand,
  .lz-footer-legal a, .lz-footer-copy a{ position:relative }
  .lz-redes-iconos a::after, .tg-idioma button::after, .brand::after,
  .lz-footer-legal a::after{
    content:""; position:absolute; left:50%; top:50%;
    width:44px; height:44px; transform:translate(-50%,-50%);
    /* no pinta nada: solo amplia la zona que recibe el toque */
  }
  /* El CTA de la cinta ("Prueba la Lectura General") medía 24 px de alto. */
  #ctaGratis{ display:inline-block; padding:11px 0 }
}

/* ---- Las cruces de la juntura 02→03 pasan DETRAS de las tarjetas ---------
   Reportado por el dueño ("eso quedo raro ahi como que tapa de mas"): el papel
   manuscrito se comia el nombre y el precio de "Triada", y las palomas la
   flecha de "Lectura General". Medido a 1196px: las tarjetas terminan en
   y=280 y `cr-papel` arrancaba en 121 — 159px metida dentro de ellas.

   Lo introduje yo al subir `.lz-estante` a z-index 22 para que las cruces
   pasaran sobre la foto del manifiesto: de paso quedaron sobre las tarjetas de
   su propia seccion.

   El arreglo NO es moverlas -abajo no hay lugar para el papel, que es alto-
   sino corregir el APILAMIENTO: z-index 1 las deja detras de las tarjetas
   (que van en la ventana, z-index 2) y siguen delante del manifiesto, porque
   lo que gana esa comparacion es el z-index 22 de la seccion entera, no el de
   la cruz. Asomar por debajo del borde de una tarjeta es justamente lo que
   hace un collage. */
.lz-estante-vent{position:relative; z-index:2}
.lz-estante-cab{position:relative; z-index:3}
.lz-estante > .lz-cruce{z-index:1}

/* ---- Tienda: banner de bonus de primera recarga (2026-09-04) -----------
   Es el momento de mayor impulso (recien gastada la lectura gratis): un
   aviso breve arriba de los packs, no un modal que interrumpa. */
body.tema-luz-activo .tienda-bonus-recarga{
  max-width:520px; margin:0 auto 18px; padding:11px 18px; text-align:center;
  font-family:var(--lz-sans); font-size:14px; color:var(--lz-oscuro);
  background:rgba(178,138,55,.14); box-shadow:inset 0 0 0 1px rgba(178,138,55,.35);
}
body.tema-luz-activo .tienda-bonus-recarga b{color:var(--lz-oro-tinta); font-weight:600}

/* ---- Tienda: monto libre (2026-09-04) ----------------------------------
   Mismo material que los packs (sobre de papel apoyado), pero como una fila
   angosta debajo de la grilla: es una alternativa, no una quinta opcion que
   compita visualmente con las cuatro. */
body.tema-luz-activo .monto-libre{
  max-width:520px; margin:28px auto 0; padding:22px 26px;
  background:#FBF7EC; box-shadow:var(--mat-sombra); --giro:.6deg; text-align:center;
}
body.tema-luz-activo .monto-libre-titulo{
  font-family:var(--lz-serif); font-weight:400; font-size:19px;
  color:var(--lz-oscuro); margin:0 0 14px;
}
body.tema-luz-activo .monto-libre-form{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap; justify-content:center;
}
body.tema-luz-activo .monto-libre-campo{
  display:flex; align-items:center; gap:6px; background:var(--lz-crema,#F1EBDD);
  padding:10px 14px; box-shadow:inset 0 0 0 1px rgba(39,37,34,.16);
}
body.tema-luz-activo .monto-libre-usd{
  font-family:var(--lz-numero); color:var(--lz-tinta-suave); font-size:15px;
}
body.tema-luz-activo #montoLibreInput{
  width:88px; border:0; background:transparent; font-family:var(--lz-numero);
  font-size:19px; color:var(--lz-oscuro); outline:none;
}
/* Quita las flechitas del input numerico: en un monto de dinero incitan a
   clickear en vez de tipear, y desalinean el campo con "US$" a la izquierda. */
body.tema-luz-activo #montoLibreInput::-webkit-outer-spin-button,
body.tema-luz-activo #montoLibreInput::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}
body.tema-luz-activo #montoLibreInput{-moz-appearance:textfield}
body.tema-luz-activo .monto-libre-preview{
  font-family:var(--lz-sans); font-size:13px; color:var(--lz-tinta-suave); min-width:110px;
}
body.tema-luz-activo .monto-libre-form button{
  font-family:var(--lz-numero); font-weight:400; letter-spacing:.06em; border:0; cursor:pointer;
  background:var(--lz-oscuro); color:#F1EBDD; padding:11px 22px; box-shadow:1px 2px 5px rgba(39,37,34,.3);
  min-height:44px;
}
body.tema-luz-activo .monto-libre-form button:hover{background:rgba(94,64,25,.9)}
@media (max-width:480px){
  body.tema-luz-activo .monto-libre-form{flex-direction:column; align-items:stretch}
  body.tema-luz-activo .monto-libre-campo{justify-content:center}
}
