/* =====================================================================
   galeria.css — las dos galerías, una sola hoja

   Galeria-Medieval.html y Galeria-Metalco.html tenían 1.000 líneas de CSS
   en línea cada una y compartían 48 de sus 52 selectores. De lo que
   difería, el 81 % era color: el mismo `.gallery-item` con el borde en oro
   o en azul, el mismo overlay con el degradado en marrón o en marino.
   Duplicar mil líneas para cambiar cuatro tonos es lo que hacía que una
   corrección se arreglara en una página y siguiera rota en la otra —el
   lightbox colapsado y el `padStart` sobre el identificador estaban en las
   dos, palabra por palabra—.

   Aquí la estructura está una vez. Lo que cambia de una marca a otra sale
   de los tokens de sistema.css: cada página declara `data-marca` en <html>
   y hereda su luz. Lo único que esta hoja añade por marca son las dos
   decisiones que no son color y están al principio del archivo.

   Depende de sistema.css (tokens, `.m-corte`, `.m-boton`) y de
   catalogo.css (`.filtros`, `.filtro`, `.estado`, `.rejilla`).
   Orden de carga: fuentes → sistema → catalogo → galeria.
   ===================================================================== */

/* =====================================================================
   Lo que de verdad separa a las dos marcas

   La proporción de la tarjeta. La forja fotografía piezas verticales
   —espadas, armaduras, yelmos sobre un fondo—; el taller CNC fotografía
   estructuras, mesas de corte y planchas, que son horizontales. Recortar
   ambas al mismo rectángulo dejaba media espada fuera o media plancha con
   aire negro.
   ===================================================================== */
/* La forja iba a 4/5 —vertical— porque se supuso que sus piezas son
   espadas de pie. Las 33 fotografías que hay de verdad en la galería dicen
   otra cosa: las piezas están tumbadas sobre la mesa del taller y su
   proporción va de 0,75 a 1,37, con la mediana en 1,01. Recortar todo eso
   a 0,8 se comía las puntas de las hojas y los cantos de las bandejas de
   yelmos. Un cuadrado está en el centro de esa distribución y recorta poco
   en las dos direcciones; lo que sobre lo coloca el punto focal. */
[data-marca='medieval'] {
  --pieza-proporcion: 1 / 1;
  --pieza-titular-peso: 700;
}

[data-marca='cnc'] {
  --pieza-proporcion: 4 / 3;
  /* Inter aguanta menos peso que Cinzel al tamaño de una tarjeta: a 700
     el titular industrial se emborrona sobre la fotografía. */
  --pieza-titular-peso: 600;
}

/* El espaciado del titular lo decide sistema.css con --m-titular-ajuste:
   la marca industrial titula en Inter y quiere el tracking cerrado; la
   medieval titula en Cinzel y quiere el contrario. Aquí solo se consume. */

/* =====================================================================
   Base de página
   ===================================================================== */
body {
  margin: 0;
  background: var(--m-negro-1);
  color: var(--m-texto);
  font-family: var(--m-cuerpo);
  font-size: var(--m-txt-base);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* Ancla de salto para el teclado: primera parada del tabulador. */
.saltar {
  position: absolute;
  left: var(--m-esp-sm);
  top: -4rem;
  z-index: var(--m-capa-modal);
  padding: var(--m-esp-2xs) var(--m-esp-sm);
  background: var(--m-negro-3);
  color: var(--m-acento-claro);
  border: 1px solid var(--m-acento);
  border-radius: var(--m-radio-sm);
  text-decoration: none;
  transition: top var(--m-rapido) var(--m-salida);
}

.saltar:focus {
  top: var(--m-esp-sm);
}

/* =====================================================================
   Cabecera

   La altura es fija (3,4 rem) porque la barra de filtros de catalogo.css
   se pega justo debajo, en `top: 3.4rem`. Si la cabecera creciera con el
   logo, entre las dos quedaría una franja por la que se vería pasar el
   contenido.
   ===================================================================== */
.cabecera {
  position: sticky;
  top: 0;
  z-index: var(--m-capa-cabecera);
  display: flex;
  align-items: center;
  gap: var(--m-esp-sm);
  min-height: 3.4rem;
  padding: var(--m-esp-3xs) var(--m-canal);
  background: color-mix(in srgb, var(--m-negro-0) 88%, transparent);
  backdrop-filter: blur(14px);
  border-block-end: 1px solid color-mix(in srgb, var(--m-acento) 20%, transparent);
}

.cabecera__marca {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  text-decoration: none;
}

/* El logo es una imagen ancha: se fija el alto y el ancho lo calcula el
   navegador con la proporción de los atributos. */
.cabecera__logo {
  height: clamp(1.6rem, 4.5vw, 2.2rem);
  width: auto;
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--m-acento) 25%, transparent));
}

.cabecera__volver {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  margin-inline-start: auto;
  padding-inline: var(--m-esp-2xs);
  font-size: var(--m-txt-sm);
  color: var(--m-humo);
  text-decoration: none;
  white-space: nowrap;
}

.cabecera__volver:hover {
  color: var(--m-acento-claro);
}

/* En 390 px la cabecera son tres elementos peleando por 350 px de ancho
   útil. Lo primero que sobra es la mitad de la frase de vuelta. */
@media (max-width: 30rem) {
  .cabecera__volver-largo {
    display: none;
  }
}

/* =====================================================================
   Portada de la página
   ===================================================================== */
.portada {
  padding-block: var(--m-esp-xl) var(--m-esp-lg);
  text-align: center;
}

.portada__titulo {
  font-family: var(--m-titular);
  font-size: var(--m-txt-3xl);
  font-weight: 900;
  line-height: 1;
  letter-spacing: var(--m-titular-ajuste, 0.02em);
  margin: var(--m-esp-sm) 0 0;
  color: var(--m-texto);
  text-wrap: balance;
}

.portada__entrada {
  margin: var(--m-esp-sm) auto 0;
  max-width: 58ch;
  color: var(--m-humo);
  font-size: var(--m-txt-md);
  text-wrap: pretty;
}

.portada__corte {
  margin-block-start: var(--m-esp-lg);
}

/* Cifras de la galería. Nacen ocultas y las descubre el JS cuando sabe
   cuántos trabajos hay de verdad: una cifra escrita a mano en el HTML se
   queda mintiendo en cuanto el taller sube una foto más. */
.cifras {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--m-esp-xs) var(--m-esp-lg);
  margin-block-start: var(--m-esp-md);
  padding: 0;
  list-style: none;
}

.cifras[hidden] {
  display: none;
}

.cifras li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

.cifras b {
  font-family: var(--m-titular);
  font-size: var(--m-txt-lg);
  font-weight: 700;
  color: var(--m-acento-claro);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.cifras span {
  font-size: var(--m-txt-xs);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--m-humo-tenue);
}

/* =====================================================================
   Filtros

   Casi todo viene de catalogo.css. Aquí solo se añade lo que aquella hoja
   no puede saber: un filtro cuya sección no tiene ni una foto se esconde.
   `.filtro` declara display: inline-flex, que gana al display: none del
   atributo hidden de la hoja del navegador, así que hay que decirlo.
   ===================================================================== */
.filtro[hidden] {
  display: none;
}

/* Y si no hay ni una foto, tampoco hay nada que filtrar. */
.filtros[hidden] {
  display: none;
}

/* =====================================================================
   El mosaico

   Es la `.rejilla` de catalogo.css con dos ajustes.

   `--col` da 2 columnas en 390 px, 3 en 768 y 4 en 1440 sin una sola
   media query. Y `--n` —el número de trabajos visibles, que pone el JS—
   limita el ancho del mosaico a las columnas que de verdad se van a
   llenar: con una foto sola, la rejilla no la deja arrinconada a la
   izquierda de un espacio vacío de 1.300 px.
   ===================================================================== */
.mosaico {
  --col: clamp(10rem, 26vw, 17rem);
  --col-tope: 17rem;
  max-width: calc(var(--n, 99) * (var(--col-tope) + var(--m-esp-md)));
  margin-inline: auto;
}

/* Con uno o dos trabajos la columna estrecha se ve a maqueta sin
   terminar. Menos piezas, más grandes: es la misma decisión que toma una
   sala de exposición cuando cuelga tres cuadros en vez de treinta. */
.mosaico[data-pocas] {
  --col: clamp(14rem, 60vw, 26rem);
  --col-tope: 26rem;
}

/* =====================================================================
   La pieza

   Es un <button>: abre el visor, así que es un botón y no un enlace, y
   así el teclado lo alcanza con Tab y lo dispara con Enter o espacio sin
   que haya que programar nada. El objetivo táctil es la tarjeta entera,
   muy por encima de los 44 px.
   ===================================================================== */
.pieza {
  position: relative;
  display: flex;
  flex-direction: column;
  /* La tarjeta es su propio contexto de consulta: en dos columnas de 390 px
     mide 155 px y en una sola de 1440 mide 440. Lo que tiene que encoger es
     el texto de la tarjeta, no el de la página, así que la medida de
     referencia es la tarjeta y no la ventana. */
  container-type: inline-size;
  width: 100%;
  padding: 0;
  border: 1px solid color-mix(in srgb, var(--m-acento) 18%, transparent);
  border-radius: var(--m-radio-md);
  background: linear-gradient(165deg, var(--m-negro-3), var(--m-negro-1) 60%);
  color: inherit;
  font: inherit;
  text-align: start;
  overflow: hidden;
  cursor: pointer;
  transition:
    transform var(--m-medio) var(--m-salida),
    border-color var(--m-medio) var(--m-salida),
    box-shadow var(--m-medio) var(--m-salida);
}

.pieza:hover,
.pieza:focus-visible {
  transform: translateY(-4px);
  border-color: color-mix(in srgb, var(--m-acento) 55%, transparent);
  box-shadow:
    var(--m-sombra-media),
    0 0 0 1px color-mix(in srgb, var(--m-acento) 25%, transparent);
}

/* ── La tarjeta, en el taller ───────────────────────────────────────
   El proyecto industrial se enseña como una lámina de plano: escuadra
   recta, sin degradado de fondo y sin el resplandor del lienzo. Lo que
   queda es la fotografía, su título y una regla. Es lo que pedía el
   encargo —quitar adorno, ganar aire y alineación—, y de paso deja que
   la plancha o la estructura sean lo más brillante del cuadro.

   Va después de las reglas base para ganar por orden, no por !important. */
[data-marca='cnc'] .pieza {
  border-radius: 0;
  background: var(--m-negro-2);
}

[data-marca='cnc'] .pieza:hover,
[data-marca='cnc'] .pieza:focus-visible {
  /* Sin el anillo exterior: en una rejilla de rectángulos rectos, el halo
     redondeaba ópticamente la esquina que se acaba de enderezar. */
  box-shadow: var(--m-sombra-media);
}

[data-marca='cnc'] .pieza__lienzo {
  background: var(--m-negro-0);
}

.pieza__lienzo {
  position: relative;
  display: grid;
  place-items: center;
  aspect-ratio: var(--pieza-proporcion, 4 / 5);
  overflow: hidden;
  background:
    radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--m-acento-hondo) 22%, transparent), transparent 70%),
    var(--m-negro-2);
}

.pieza__foto {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* El punto focal del trabajo, o el centro. Contrato en catalogo.css. */
  object-position: var(--foco, 50% 50%);
  /* La foto entra un punto apagada y recupera el color al acercarse: es
     lo que hace la luz de un taller cuando te acercas a la mesa. */
  filter: saturate(0.85) contrast(1.05) brightness(0.9);
  transform: scale(1.01);
  transition:
    filter var(--m-lento) var(--m-salida),
    transform var(--m-lento) var(--m-salida);
}

/* La foto que se enseña entera.

   `cover` recorta hasta llenar el hueco, y en una rejilla 4:5 eso le come
   los lados a una panorámica y la cabeza a un retrato. Cuando el panel
   marca la imagen como completa, entra dentro con su proporción intacta y
   lo que sobra queda de fondo. El zoom al pasar el puntero se desactiva
   aquí: agrandar una foto que ya se ve entera solo la recorta otra vez. */
.pieza__foto--completa {
  object-fit: contain;
  object-position: center;
  transform: none;
  padding: var(--m-esp-2xs);
}

.pieza:hover .pieza__foto--completa,
.pieza:focus-visible .pieza__foto--completa {
  transform: none;
}

.pieza:hover .pieza__foto,
.pieza:focus-visible .pieza__foto {
  filter: none;
  transform: scale(1.05);
}

/* Velo inferior: sin él, un título claro sobre una plancha clara no se
   lee. Va siempre puesto, no solo al pasar el ratón: en un teléfono no
   hay ratón y el título se quedaba invisible. */
.pieza__lienzo::after {
  content: '';
  position: absolute;
  inset-inline: 0;
  inset-block-end: 0;
  height: 62%;
  /* Tres paradas y no dos: con el degradado lineal, la etiqueta caía
     justo donde el velo iba por la mitad, y el oro sobre una plancha
     clara dejaba de leerse. Abajo el velo llega casi opaco. */
  background: linear-gradient(
    180deg,
    transparent 0%,
    color-mix(in srgb, var(--m-negro-0) 55%, transparent) 55%,
    color-mix(in srgb, var(--m-negro-0) 97%, transparent) 100%
  );
  pointer-events: none;
}

/* Escuadras de esquina: la decoración que traían las dos galerías. Se
   conservan porque son parte de la casa, pero encendidas solo al
   acercarse, que es cuando aportan. */
.pieza__lienzo::before {
  content: '';
  position: absolute;
  inset: var(--m-esp-2xs);
  z-index: 1;
  /* Cuatro rayas de 1 px: la vertical y la horizontal de la esquina
     superior izquierda, y las mismas en la inferior derecha. Con
     background y no con border, porque un borde entero dibujaría el
     rectángulo completo y lo que se quiere son las dos escuadras. */
  --escuadra: color-mix(in srgb, var(--m-acento-claro) 75%, transparent);
  background:
    linear-gradient(var(--escuadra), var(--escuadra)) 0 0 / 1px 20% no-repeat,
    linear-gradient(var(--escuadra), var(--escuadra)) 0 0 / 20% 1px no-repeat,
    linear-gradient(var(--escuadra), var(--escuadra)) 100% 100% / 1px 20% no-repeat,
    linear-gradient(var(--escuadra), var(--escuadra)) 100% 100% / 20% 1px no-repeat;
  opacity: 0;
  transition: opacity var(--m-medio) var(--m-salida);
  pointer-events: none;
}

.pieza:hover .pieza__lienzo::before,
.pieza:focus-visible .pieza__lienzo::before {
  opacity: 1;
}

/* El trabajo sin fotografía no finge tenerla: enseña el glifo de su
   sección sobre el rayado de la plancha marcada, que es lo que hay en el
   taller antes de cortar. Nunca una imagen prestada. */
.pieza__marcador,
.visor__marcador {
  display: grid;
  place-items: center;
  /* Sin place-content, las dos filas se reparten el alto y el rótulo se
     va al fondo del recuadro, justo debajo del velo donde ya está la
     etiqueta de la sección. Centrados como un bloque, no se pisan. */
  place-content: center;
  gap: var(--m-esp-2xs);
  width: 100%;
  height: 100%;
  padding: var(--m-esp-sm);
  background: repeating-linear-gradient(
    45deg,
    var(--m-negro-2) 0 14px,
    var(--m-negro-3) 14px 28px
  );
  color: color-mix(in srgb, var(--m-acento) 45%, transparent);
  text-align: center;
}

.pieza__marcador svg,
.visor__marcador svg {
  width: clamp(3.5rem, 34%, 7.5rem);
  height: auto;
}

/* El pie de la tarjeta sube 3,5 rem sobre el lienzo: el marcador deja ese
   sitio libre para que el rótulo no acabe debajo del nombre de la pieza. */
.pieza__marcador {
  padding-block-end: 3.5rem;
}

.pieza__marcador span,
.visor__marcador span {
  font-size: var(--m-txt-xs);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--m-humo-tenue);
}

.pieza__pie {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--m-esp-3xs);
  margin-block-start: -3.5rem;   /* el texto sube sobre el velo */
  padding: var(--m-esp-sm);
}

.pieza__seccion {
  display: flex;
  align-items: center;
  gap: var(--m-esp-3xs);
  font-size: var(--m-txt-xs);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--m-acento);
}

.pieza__seccion svg {
  width: 1.1em;
  height: 1.1em;
  flex: none;
}

.pieza__nombre {
  font-family: var(--m-titular);
  font-size: var(--m-txt-md);
  font-weight: var(--pieza-titular-peso, 700);
  letter-spacing: var(--m-titular-ajuste, 0.02em);
  line-height: 1.2;
  color: var(--m-texto);
  /* Dos líneas y punto: un título de cuatro líneas descuadraba la fila
     entera. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* En la tarjeta estrecha —dos columnas en un teléfono— el titular a
   tamaño de escritorio se comía tres líneas y se cortaba a mitad de
   palabra. Es una consulta de contenedor, no de ventana: la misma
   tarjeta puede ser estrecha en 1440 px si el filtro dejó una sola. */
@container (max-width: 13rem) {
  .pieza__nombre {
    font-size: var(--m-txt-sm);
  }

  .pieza__seccion {
    font-size: 0.66rem;
    letter-spacing: 0.1em;
  }

  .pieza__pie {
    padding: var(--m-esp-2xs);
  }
}

/* La lupa aparece al acercarse y dice qué hace el clic. */
.pieza__ampliar {
  position: absolute;
  inset-block-start: var(--m-esp-sm);
  inset-inline-end: var(--m-esp-sm);
  z-index: 2;
  display: grid;
  place-items: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--m-negro-0) 70%, transparent);
  color: var(--m-acento-claro);
  opacity: 0;
  transform: scale(0.85);
  transition:
    opacity var(--m-medio) var(--m-salida),
    transform var(--m-medio) var(--m-salida);
  pointer-events: none;
}

.pieza__ampliar svg {
  width: 1rem;
  height: 1rem;
}

.pieza:hover .pieza__ampliar,
.pieza:focus-visible .pieza__ampliar {
  opacity: 1;
  transform: none;
}

/* =====================================================================
   El visor

   Era un div con position: fixed, sin foco atrapado, sin fondo inerte y
   con dos defectos que se veían: al abrir un trabajo sin fotografía la
   imagen quedaba de 0×0 y el visor colapsaba, y al cerrar se le ponía
   src='' —que para el navegador es «pide otra vez esta misma página como
   si fuera una imagen»—. Ahora es <dialog>: Escape, el foco y el fondo
   inerte los pone el navegador, y el hueco vacío tiene su marcador.
   ===================================================================== */
.visor {
  width: 100%;
  max-width: 100%;
  height: 100%;
  max-height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--m-texto);
  overflow: hidden;
}

.visor::backdrop {
  background: color-mix(in srgb, var(--m-negro-0) 92%, transparent);
  backdrop-filter: blur(12px);
}

.visor__escenario {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: calc(2.75rem + var(--m-esp-md)) clamp(3.5rem, 9vw, 6rem) var(--m-esp-md);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.visor__figura {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--m-esp-sm);
  width: 100%;
  max-width: 78rem;
  margin: 0;
}

/* El marco reserva sitio antes de que la foto llegue: sin él, el pie de
   foto salta de la mitad de la pantalla al borde inferior en cuanto
   carga. */
.visor__marco {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: min(52vh, 24rem);
}

.visor__foto {
  max-width: 100%;
  max-height: min(70vh, 46rem);
  width: auto;
  height: auto;
  object-fit: contain;
  border: 1px solid color-mix(in srgb, var(--m-acento) 35%, transparent);
  border-radius: var(--m-radio-sm);
  background: var(--m-negro-0);
  box-shadow: var(--m-sombra-alta);
}

.visor__foto[hidden] {
  display: none;
}

.visor__marcador {
  width: min(28rem, 100%);
  aspect-ratio: 4 / 3;
  height: auto;
  border: 1px solid color-mix(in srgb, var(--m-acento) 25%, transparent);
  border-radius: var(--m-radio-sm);
}

.visor__marcador[hidden] {
  display: none;
}

.visor__pie {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--m-esp-3xs);
  text-align: center;
}

.visor__titulo {
  margin: 0;
  font-family: var(--m-titular);
  font-size: var(--m-txt-lg);
  font-weight: var(--pieza-titular-peso, 700);
  letter-spacing: var(--m-titular-ajuste, 0.02em);
  line-height: 1.2;
  color: var(--m-texto);
  text-wrap: balance;
}

.visor__meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--m-esp-2xs) var(--m-esp-sm);
  margin: 0;
  font-size: var(--m-txt-xs);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--m-humo-tenue);
}

.visor__seccion {
  color: var(--m-acento);
}

.visor__cuenta {
  font-variant-numeric: tabular-nums;
}

/* Los tres botones del visor comparten forma: 44 px, redondos y con el
   fondo lo bastante opaco para leerse sobre cualquier fotografía. */
.visor__boton {
  position: absolute;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid color-mix(in srgb, var(--m-acento) 30%, transparent);
  border-radius: 50%;
  background: color-mix(in srgb, var(--m-negro-0) 78%, transparent);
  color: var(--m-texto);
  cursor: pointer;
  transition:
    background var(--m-rapido),
    color var(--m-rapido),
    border-color var(--m-rapido),
    opacity var(--m-rapido);
}

.visor__boton svg {
  width: 1.25rem;
  height: 1.25rem;
}

.visor__boton:hover {
  background: var(--m-acento);
  border-color: var(--m-acento-claro);
  color: var(--m-negro-0);
}

.visor__boton:disabled {
  opacity: 0.3;
  cursor: default;
}

.visor__boton:disabled:hover {
  background: color-mix(in srgb, var(--m-negro-0) 78%, transparent);
  border-color: color-mix(in srgb, var(--m-acento) 30%, transparent);
  color: var(--m-texto);
}

.visor__cerrar {
  inset-block-start: var(--m-esp-sm);
  inset-inline-end: var(--m-esp-sm);
}

.visor__paso {
  inset-block-start: 50%;
  transform: translateY(-50%);
}

.visor__paso--atras {
  inset-inline-start: var(--m-esp-2xs);
}

.visor__paso--adelante {
  inset-inline-end: var(--m-esp-2xs);
}

/* =====================================================================
   Llamada final
   ===================================================================== */
.encargo {
  position: relative;
  margin-block-start: var(--m-esp-xl);
  padding: var(--m-esp-xl) var(--m-esp-md);
  text-align: center;
  border: 1px solid color-mix(in srgb, var(--m-acento) 22%, transparent);
  border-radius: var(--m-radio-lg);
  background:
    radial-gradient(90% 120% at 50% 0%, color-mix(in srgb, var(--m-acento-hondo) 20%, transparent), transparent 65%),
    var(--m-negro-2);
}

/* ── El cierre, en la forja ─────────────────────────────────────────
   Trama de grabado y las cuatro escuadras de la cartela, el mismo gesto
   que llevan la caja de estado y el cierre de las referencias. Todo con
   degradados: ni una imagen nueva. */
[data-marca='medieval'] .encargo {
  background:
    repeating-linear-gradient(
      135deg,
      transparent 0 5px,
      color-mix(in srgb, var(--m-acento) 5%, transparent) 5px 6px
    ),
    radial-gradient(90% 120% at 50% 0%, color-mix(in srgb, var(--m-acento-hondo) 20%, transparent), transparent 65%),
    var(--m-negro-2);
}

[data-marca='medieval'] .encargo::before {
  content: '';
  position: absolute;
  inset: var(--m-esp-xs);
  pointer-events: none;
  opacity: 0.5;
  background:
    linear-gradient(90deg, var(--m-acento) 0 100%) 0 0 / 1.6rem 1px no-repeat,
    linear-gradient(180deg, var(--m-acento) 0 100%) 0 0 / 1px 1.6rem no-repeat,
    linear-gradient(90deg, var(--m-acento) 0 100%) 100% 0 / 1.6rem 1px no-repeat,
    linear-gradient(180deg, var(--m-acento) 0 100%) 100% 0 / 1px 1.6rem no-repeat,
    linear-gradient(90deg, var(--m-acento) 0 100%) 0 100% / 1.6rem 1px no-repeat,
    linear-gradient(180deg, var(--m-acento) 0 100%) 0 100% / 1px 1.6rem no-repeat,
    linear-gradient(90deg, var(--m-acento) 0 100%) 100% 100% / 1.6rem 1px no-repeat,
    linear-gradient(180deg, var(--m-acento) 0 100%) 100% 100% / 1px 1.6rem no-repeat;
}

/* ── El cierre, en el taller ────────────────────────────────────────
   Ni resplandor ni esquina redonda: un bloque recto sobre el filete de
   acento, alineado al canto izquierdo y con más aire arriba y abajo. La
   llamada se lee como el pie de un plano, no como un cartel. */
[data-marca='cnc'] .encargo {
  border-radius: 0;
  border: 1px solid color-mix(in srgb, var(--m-acento) 16%, transparent);
  border-block-start: 2px solid var(--m-acento);
  padding: var(--m-esp-2xl) var(--m-esp-lg);
  background: var(--m-negro-2);
  text-align: start;
}

[data-marca='cnc'] .encargo p {
  margin-inline: 0;
}

.encargo__titulo {
  margin: 0 0 var(--m-esp-2xs);
  font-family: var(--m-titular);
  font-size: var(--m-txt-lg);
  color: var(--m-texto);
}

.encargo p {
  margin: 0 auto var(--m-esp-md);
  max-width: 52ch;
  color: var(--m-humo);
}

/* =====================================================================
   Pie
   ===================================================================== */
.pie {
  margin-block-start: var(--m-esp-xl);
  padding: var(--m-esp-lg) var(--m-canal);
  border-block-start: 1px solid color-mix(in srgb, var(--m-acento) 18%, transparent);
  text-align: center;
  color: var(--m-humo-tenue);
  font-size: var(--m-txt-sm);
}

/* 44 px de alto también aquí: un enlace de pie de 16 px de alto es el
   objetivo táctil que más se falla, porque además está pegado al borde
   inferior de la pantalla. */
.pie a {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  padding-inline: var(--m-esp-2xs);
  color: var(--m-humo);
}

/* Los glifos viven en un <svg> al final del documento, del que solo se
   usan las piezas con <use>. */
.glifos-fuente {
  display: none;
}


/* =====================================================================
   Pantallas de 320 px

   El nombre de la marca en Cinzel más el enlace de vuelta no caben en
   320 px y el segundo se salía por la derecha. Por debajo de 26 rem el
   nombre encoge y cede, y del enlace queda la flecha, que ya se entiende
   por su nombre accesible.
   ===================================================================== */
@media (max-width: 26rem) {
  .cabecera__marca {
    min-width: 0;
    font-size: var(--m-txt-sm);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .cabecera__volver-largo {
    display: none;
  }
}

/* =====================================================================
   Impresión

   Las reglas de marca llevan [data-marca] y pesan más que cualquier
   clase suelta: hay que nombrarlas con el mismo atributo para apagarlas.
   Ver el bloque de impresión de catalogo.css.
   ===================================================================== */
@media print {
  [data-marca='medieval'] .encargo {
    background: none;
  }

  [data-marca='medieval'] .encargo::before {
    display: none;
  }
}
