/* ═══════════════════════════════════════════════════════════════════════
   RELIC — EL ENCUADRE DE LA FICHA
   Dónde cae el botón de comprar, y qué se lee sin bajar.

   POR QUÉ EXISTE ESTA HOJA
   ------------------------
   Hoy, 19-08-2026, hay cuatro procesos escribiendo esta ficha a la vez:
   uno unifica el color del suelo de las cajas, otro rehace los filtros de
   /tienda, otro recompone los dibujos y otro porta el configurador de
   eclipseando. `estilo.css`, `venta.css` y `galeria.css` ya tienen dueño y
   escribir en las tres a cuatro manos pierde reglas —ya ha pasado hoy—.
   Aquí sólo va lo MÍO y sólo de una página: ALTURA y COLOCACIÓN. Ni un
   color, ni una tipografía, ni un borde: eso es de las otras tres hojas.
   Se carga la última de todas (ver el bloque `hoja_pagina` de pieza.html)
   para que, a igualdad de peso, gane la que conoce las medidas nuevas.

   EL ENCARGO, LITERAL
   -------------------
   Del dueño, 19-08-2026: «El botón de añadir y comprar está muy abajo.»

   LO QUE HABÍA, MEDIDO (borde superior de «Comprar ahora», píxeles desde
   arriba del documento, las seis familias, con Playwright):

                        1440x900          390x844
        camiseta          1.459            1.963
        camiseta mujer    1.335            1.926
        sudadera          1.352            1.878
        capucha           1.287            1.881
        taza              1.353            1.944
        lámina            1.217            1.765

   El pliegue está en 900 y en 844. O sea: entre 317 y 559 px de recorrido
   en escritorio y entre 921 y 1.119 en el móvil, sólo para VER el botón.
   La barra fija de abajo lo salvaba a medias, pero la ficha no lo enseñaba
   donde se decide.

   QUÉ BAJA (y no se borra: baja)
   ------------------------------
     · la tira de 21 diseños ...... 315 px — a detrás del botón (pieza.html)
     · la línea de fábrica ........  92 px — a detrás del botón (pieza.html)
     · el pie de la galería .......  64 px — al bloque de detalle (pieza.html)
     · el nombre del país repetido.  30 px — lo dice sólo el <select>
     · el «1» del paso único ......  26 px — no hay escalera que numerar
   Y lo que se aprieta, aquí:
     · la cabecera (miga + etiqueta + h1) y la foto del móvil.

   QUÉ NO BAJA, PASE LO QUE PASE
   -----------------------------
     · El PRECIO CON IVA y el GASTO DE ENVÍO, delante del botón y separados
       el uno del otro: «23,95 €» arriba, «envío 4,29 €» debajo. El envío
       nunca dentro del precio —regla de la casa— y los dos antes de pagar
       —art. 20 y 60 del TRLGDCU—.
     · El PLAZO de entrega, que es la otra pregunta que se hace antes de
       pulsar. La cifra sale de app/plazo.py y aquí no se toca.
     · El sello de DOMINIO PÚBLICO y la procedencia: son el argumento de la
       casa. Se aprietan de alto, no se quitan.
   ═══════════════════════════════════════════════════════════════════════ */


/* ── 1 · LA CABECERA DE LA FICHA ────────────────────────────────────────
   Miga, etiqueta con el sello y h1. Ocupaba 163 px en escritorio (117→280)
   y 187 en el móvil (168→355) antes de que empezara la foto.

   El h1 se comía 92 px porque el nombre de la prenda —«· Camiseta unisex de
   algodón, 142 g/m²»— va al mismo cuerpo que el nombre del diseño y a 2 rem
   no cabe en un renglón. Sigue estando entero, por SEO y porque quien llega
   de un buscador tiene que ver en la primera línea que esto es una camiseta
   y no una taza; sólo deja de gritar tanto como el nombre propio, que es lo
   que se reconoce. Es la jerarquía del molde («El Pequod · camiseta unisex
   de algodón»), sólo que aquí el segundo trozo pesa lo que pesa. */
.ficha-cabecera h1.pieza-titulo{margin:.1rem 0 .35rem; max-width:46ch}
.ficha-cabecera .pieza-titulo-forma{font-size:.58em; letter-spacing:0}
/* La miga de pan: 22 px de aire por encima de una sola línea de 14 px. */
.miga{padding-top:14px}
.ficha-cabecera{margin-bottom:.75rem}


/* ── 2 · LA CAJA: EL AIRE ENTRE LOS BLOQUES ─────────────────────────────
   `.caja` es una rejilla con `gap:.75rem` (12 px) y dentro cada bloque trae
   además su propio margen. Entre el precio y el botón hay seis bloques, o
   sea seis huecos: bajarlo a .55rem son 19 px menos por encima del botón
   sin que nada se toque. */
.pieza-detalle .caja{gap:.55rem}


/* ── 3 · EL MÓVIL, QUE ES DONDE DUELE ───────────────────────────────────
   A 390x844 la primera pantalla NO ENSEÑABA EL PRECIO: la caja de compra
   empezaba en el píxel 851 con la ventana acabada en el 844.

   La cuenta, sumada: 119 px de cabecera del sitio + 187 de cabecera de
   ficha + 459 de galería = 765 px antes del primer dato de la compra. La
   galería es lo único que se puede recortar sin quitar nada: la foto pasa
   de 270 a 218 px de alto —la prenda entera se sigue viendo, va con
   `object-fit:contain` y por debajo de 200 el estampado deja de leerse— y
   las miniaturas de 62 a 52. El pie técnico ya se fue al bloque de detalle
   desde la plantilla. Total: 459 → 296.

   Con eso, y con lo que baja, la caja empieza a media pantalla en vez de
   por debajo de ella, y color, talla y botón caben en la primera pasada. */
@media (max-width:767.98px){
  .pieza-detalle .galeria-principal{height:218px; padding:8px}
  .pieza-detalle .galeria-tiras .tira{width:52px}
  .pieza-detalle .galeria{gap:8px}
  /* El h1 del móvil, con el nombre de la prenda a media voz: dos renglones
     cortos en vez de tres largos. */
  .ficha-cabecera h1.pieza-titulo{font-size:1.45rem; margin:.1rem 0 .3rem}
  .ficha-cabecera .pieza-titulo-forma{font-size:.72em}
  .miga{padding-top:10px; font-size:.82rem}
  .ficha-cabecera{margin-bottom:.5rem}
  /* La etiqueta y el sello: dos renglones para cuatro palabras. Caben en
     uno si el nombre de la obra puede cortarse por su ancho. */
  .ficha-cabecera .etiqueta{gap:.4rem .6rem; font-size:.72rem; line-height:1.25}
  .pieza-detalle.hoja{row-gap:.9rem}
  .pieza-detalle .caja{padding:.8rem; gap:.5rem}
}


/* ── 4 · LA CANTIDAD, DEBAJO DE LOS BOTONES EN EL MÓVIL ─────────────────
   No es un paso de la decisión: nace en 1 y la inmensa mayoría de los
   pedidos son de 1. Pero ocupa 113 px justo encima del botón, y en 844 px
   de pantalla eso es la diferencia entre ver el botón y no verlo.

   En ESCRITORIO se queda donde está —hay sitio de sobra y es el orden del
   molde—. En MÓVIL baja detrás de los dos botones con `order`, que es la
   única forma de moverlo sin cambiar el orden del HTML: así el lector de
   pantalla y el tabulador siguen leyendo cantidad → añadir → comprar, que
   es el orden correcto, y sólo cambia lo que se ve. Quien quiera tres
   camisetas las tiene a un dedo, con su importe al lado, y el total del
   botón se reescribe solo. */
@media (max-width:767.98px){
  .pieza-detalle .comprar{display:flex; flex-direction:column; gap:.5rem}
  .pieza-detalle .comprar > *{order:1}
  .pieza-detalle .comprar > .caja-cantidad{order:3; margin-top:.25rem}
  .pieza-detalle .comprar > .cfg-boton-cesta{order:2}
  .pieza-detalle .comprar > .cfg-boton-pago{order:2}
}


/* ── 5 · «OTROS DISEÑOS», QUE YA NO ES UN PASO ──────────────────────────
   Se queda con el mismo vestido de la tira (lo pone galeria.css) y sólo
   cambia lo que tiene que cambiar al dejar de ser el paso 1: se separa del
   bloque de arriba con un filete, como el resto de secciones de la caja, y
   deja de gastar el aire de un fieldset. */
.pieza-detalle .otros-disenos{
  border-top:1px solid var(--borde); padding-top:.75rem; margin-top:.25rem;
}
.pieza-detalle .otros-disenos .cartela{margin:0 0 .15rem}
.pieza-detalle .otros-disenos .paso-ayuda{margin:.15rem 0 .25rem}
/* En el móvil, 21 miniaturas en rejilla son cinco filas de nada. Un carril
   que se arrastra con el dedo enseña las mismas veintiuna en una sola fila
   —el mismo gesto que ya tiene la tira de fotos de la galería—. */
@media (max-width:767.98px){
  .pieza-detalle .otros-disenos .tira-disenos{
    display:flex; flex-wrap:nowrap; overflow-x:auto;
    overscroll-behavior-x:contain; scroll-snap-type:x proximity;
    scrollbar-width:none; padding:.35rem .25rem;
  }
  .pieza-detalle .otros-disenos .tira-disenos::-webkit-scrollbar{display:none}
  .pieza-detalle .otros-disenos .tarjeta-diseno{
    /* 3,4 rem (54 px) era el tope de cuando la tira llevaba los VEINTIUN
       disenos del catalogo y habia que meterlos todos en el ancho de un
       telefono. Ahora son los tres o cuatro de SU pelicula y se arrastran con
       el dedo, asi que caben grandes: a 5,5 rem el dibujo se reconoce sin
       abrir la ficha, que es para lo que esta la tira. */
    flex:0 0 auto; width:5.5rem; scroll-snap-align:start;
  }
}


/* ── 6 · QUE LA CAJA NO SE SALGA DE SU COLUMNA ──────────────────────────
   MEDIDO a 390x844 con el carril de diseños puesto: `.caja` medía 354 px y
   TODOS sus hijos 1.310. La causa es de libro y no se ve en ninguna captura
   parcial: `.caja` y `.caja-cabeza` son rejillas sin `grid-template-columns`,
   o sea una sola pista `auto`, y una pista `auto` nunca baja del min-content
   de lo que lleva dentro. Con 21 miniaturas de 3,4 rem en un carril de
   `flex-wrap:nowrap`, ese min-content son 1.310 px: la pista se ensancha, la
   caja entera se ensancha con ella y el precio, el plazo y el veredicto
   dejan de partir línea —el veredicto medía 19 px de alto, o sea un renglón
   que se iba por el borde derecho de la pantalla—.

   `minmax(0,1fr)` le dice a la pista que puede ser más estrecha que su
   contenido, que es justo lo que hace falta para que lo que se desborda sea
   el carril —que para eso lleva `overflow-x:auto`— y no la página. */
.pieza-detalle .caja{grid-template-columns:minmax(0,1fr)}
.pieza-detalle .caja-cabeza{grid-template-columns:minmax(0,1fr)}
.pieza-detalle .caja > *,
.pieza-detalle .caja-cabeza > *,
.pieza-detalle .comprar > *{min-width:0}
/* El <select> del destino no se encoge por debajo de su opción más larga:
   se le deja encogerse y cortar con puntos suspensivos. El nombre entero
   sigue en la lista al desplegarla. */
.pieza-detalle .envio-pais{min-width:0; max-width:100%}
.pieza-detalle .envio-pais select{max-width:100%; text-overflow:ellipsis}


/* ── 7 · LA ETIQUETA DE LA OBRA, EN UN RENGLÓN EN EL MÓVIL ──────────────
   «PALEONTOLOGÍA Y DINOSAURIOS (CIENCIA, DOMINIO PÚBLICO)» más el sello son
   55 px en dos renglones a 390 px de ancho. El sello NO se toca —es el
   argumento de la casa y va entero—; lo que se recorta con puntos
   suspensivos es el nombre de la obra, que además va escrito con todas sus
   letras dos veces más abajo en la ficha (en la miga de pan y en el bloque
   de procedencia). Un renglón: 27 px menos justo antes de la foto. */
@media (max-width:767.98px){
  .ficha-cabecera .etiqueta{flex-wrap:nowrap; gap:.45rem}
  .ficha-cabecera .etiqueta-obra{
    min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  .ficha-cabecera .sello-dp{flex:none}
}


/* ── 8 · LA MARQUESINA, FUERA DE LA FICHA EN EL MÓVIL ───────────────────
   La cinta que corre bajo la cabecera —«Diseñado por nosotros · Impreso en
   la Unión Europea · Cada pieza con su procedencia · Dominio público, no fan
   art · Entrega en 3-4 días · 14 días para devolver»— mide 50 px y es
   DECORATIVA: lleva `aria-hidden="true"`, o sea que ni siquiera se lee en
   voz alta. En la portada y en la tienda hace su trabajo, que es prometer
   antes de que preguntes.

   En la ficha, no: las seis promesas están dichas otra vez y con más detalle
   dentro de la propia página —el sello de dominio público en la cabecera, el
   «impreso en la Unión Europea» en la línea de fábrica, el plazo pegado al
   precio, los 14 días en la lista de garantías y la procedencia en su propio
   bloque—. Repetirlas cuesta 50 px de la única pantalla donde se decide
   pagar, y en un móvil de 844 px eso es el 6 % del alto.

   Se quita SÓLO en la ficha (`:has(.pieza-detalle)`) y SÓLO por debajo de
   768 px. En escritorio sobra sitio y se queda. */
@media (max-width:767.98px){
  body:has(.pieza-detalle) .marquesina{display:none}
}


/* ── 9 · LA FOTO DEL MÓVIL: 200 px ──────────────────────────────────────
   La cuenta completa a 390x844, con todo lo de arriba ya aplicado y la
   barra fija tapando los 116 px de abajo (o sea 728 px de pantalla útil):

     119  cabecera del sitio
      31  miga de pan
      20  etiqueta con el sello de dominio público
      56  h1 (dos renglones: el diseño, y la prenda a media voz)
     200  la foto            ← esto
      66  las miniaturas
     ---
     ~500 antes del primer dato de la compra

   Por debajo de 200 px la camiseta deja de leerse: el estampado, que es lo
   que se vende, baja de 120 px de lado. Es el suelo, y por eso se para aquí
   y lo que falta lo pone el recorrido —una sola pasada de dedo— y la barra
   fija, que lleva el botón que cobra pegado a la pantalla desde el píxel 0. */
@media (max-width:767.98px){
  .pieza-detalle .galeria-principal{height:200px}
}


/* ── 10 · LOS ÚLTIMOS 40 PÍXELES ────────────────────────────────────────
   Con todo lo anterior puesto, «Comprar ahora» caía en el píxel 874 a
   1440x900: el borde de arriba se veía y el resto quedaba justo por debajo
   del pliegue. Estos recortes no quitan nada, sólo aire repetido:

     · el filete de la cantidad respiraba 12 px arriba y 12 abajo cuando el
       resto de bloques de la caja respiran 9;
     · «Color» y «Talla» llevaban 8 px por encima y 4 por debajo dentro de
       un paso que ya está separado del anterior por el hueco de la rejilla;
     · el borde interior de la caja, 16 px por los cuatro lados, es el del
       molde a 23 rem de ancho; a 21 rem sobra un punto. */
@media (min-width:768px){
  .pieza-detalle .caja{padding:.9rem}
  .pieza-detalle .caja-cantidad{padding-top:.55rem}
  .pieza-detalle .paso-rotulo{margin:.35rem 0 .2rem}
  .pieza-detalle .tira-disenos{padding:.35rem 0}
}
/* Y los últimos: el aire de la cabecera de la ficha y el de entre bloques
   del formulario. Con esto «Comprar ahora» entra entero en 1440x900 con la
   barra fija ya retirada —que es lo que pasa en cuanto el botón de verdad
   asoma: la barra se esconde sola y no tapa nada—. */
.miga{padding-top:10px}
.ficha-cabecera{margin-bottom:.5rem}
@media (min-width:768px){
  .pieza-detalle .comprar{gap:.6rem}
}
