/*
 * Tema «Registro» · astiz.com.es — Recuperando la memoria de los Astiz
 * Un archivo familiar como libro de registro: papel, tinta violeta de sello, asientos numerados y fichas.
 * Tipografías: IM Fell English (titulares, nombres) y Cardo (texto). Paleta y escala en :root.
 */
:root {
  --papel: #f2eee6;
  --papel-hondo: #e8e2d5;
  --cartulina: #fbf9f4;
  --tinta: #26212b;
  --tinta-2: #3a3340;
  --tenue: #625a69;
  --violeta: #5b3a78;
  --violeta-oscuro: #3f2856;
  --violeta-claro: #c9b6e0;
  --violeta-tinte: #ece4f3;
  --sepia: #94764f;
  --filete: #d8cfbf;
  --noche: #231d29;
  --noche-2: #2f2736;
  --sobre-noche: #efe9f2;
  --tenue-noche: #bdb2c7;

  --f-titulos: "IM Fell English", "Iowan Old Style", Georgia, serif;
  --f-texto: "Cardo", "Iowan Old Style", Georgia, serif;

  /* escala tipográfica */
  --t-xs: .8125rem;
  --t-s: .9375rem;
  --t-m: 1.125rem;
  --t-l: 1.375rem;
  --t-xl: clamp(1.5rem, 2.6vw, 1.875rem);
  --t-2xl: clamp(1.875rem, 4vw, 2.75rem);
  --t-3xl: clamp(2.25rem, 5.4vw, 3.75rem);
  --t-4xl: clamp(3rem, 7.6vw, 6.25rem);

  /* espacios (múltiplos de 8) */
  --e-1: .5rem;
  --e-2: 1rem;
  --e-3: 1.5rem;
  --e-4: 2rem;
  --e-5: 3rem;
  --e-6: 4rem;
  --e-7: 6rem;

  --ancho: 74rem;
  --cabecera: 4.5rem;

  /* variables del contenido común */
  --ancho-texto: 40rem;
  --ancho-amplio: 74rem;
  --radio: 2px;
  --color-texto: var(--tinta);
  --color-fondo: var(--papel);
  --color-suave: var(--papel-hondo);
  --color-borde: var(--filete);
  --color-acento: var(--violeta);
  --color-acento-texto: var(--cartulina);
  --color-tenue: var(--tenue);
  --fuente-texto: var(--f-texto);
  --fuente-titulos: var(--f-titulos);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 1rem; scrollbar-color: var(--violeta) var(--papel-hondo); accent-color: var(--violeta); }
html.menu-abierto { overflow: hidden; }
body { margin: 0; background: var(--papel); color: var(--tinta); font-family: var(--f-texto); font-size: var(--t-m); line-height: 1.65; text-rendering: optimizeLegibility; font-variant-numeric: oldstyle-nums; }
::selection { background: var(--violeta-tinte); color: var(--violeta-oscuro); }
img { max-width: 100%; height: auto; }
a { color: var(--violeta); text-decoration-thickness: 1px; text-underline-offset: .2em; transition: color .18s ease, text-decoration-color .18s ease; }
a:hover { color: var(--violeta-oscuro); text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--violeta); outline-offset: 3px; border-radius: 2px; }
h1, h2, h3, h4 { font-family: var(--f-titulos); font-weight: 400; line-height: 1.12; text-wrap: balance; margin: 0; }
p { text-wrap: pretty; }
main { display: block; }
main:focus { outline: none; }

.envoltorio { width: min(100% - 2.75rem, var(--ancho)); margin-inline: auto; }
.saltar { position: absolute; left: 1rem; top: -4rem; z-index: 100; background: var(--violeta); color: var(--cartulina); padding: .75rem 1.25rem; text-decoration: none; transition: top .18s ease; }
.saltar:focus { top: 1rem; }

/* ---------------------------------------------------------------- elementos comunes */
.antetitulo { font-family: var(--f-texto); font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violeta); margin: 0 0 var(--e-2); font-variant-numeric: lining-nums; }
.antetitulo a { color: inherit; }
.antetitulo-claro { color: var(--violeta-claro); }
.titular { font-size: var(--t-3xl); color: var(--tinta); }
.titular em, .apertura-titular em { font-style: italic; color: var(--violeta); }
.titular-pequeno { font-size: var(--t-2xl); margin-block: var(--e-5) var(--e-3); }
.bloque { padding-block: var(--e-7); }
.bloque-cabecera { margin-bottom: var(--e-5); max-width: 48rem; }
.bloque-cabecera-partida { display: grid; gap: var(--e-3); max-width: none; align-items: end; }
.bloque-entradilla { color: var(--tenue); font-style: italic; max-width: 32rem; margin: 0; }
@media (min-width: 56rem) { .bloque-cabecera-partida { grid-template-columns: 1.3fr 1fr; gap: var(--e-6); } }

.boton { display: inline-flex; align-items: center; justify-content: center; gap: .6rem; min-height: 3rem; padding: .7rem 1.4rem; border: 1px solid var(--violeta); border-radius: var(--radio); background: var(--violeta); color: var(--cartulina); font-family: var(--f-texto); font-size: 1rem; font-weight: 700; letter-spacing: .02em; line-height: 1.2; text-decoration: none; cursor: pointer; transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease; }
.boton:hover { background: var(--violeta-oscuro); border-color: var(--violeta-oscuro); color: var(--cartulina); transform: translateY(-1px); }
.boton:active { transform: translateY(0); }
.boton .icono { width: 1.25rem; height: 1.25rem; }
.boton-linea { background: transparent; color: var(--violeta); }
.boton-linea:hover { background: var(--violeta-tinte); color: var(--violeta-oscuro); }
.botones-fila { display: flex; flex-wrap: wrap; gap: var(--e-2); margin-top: var(--e-4); }
.enlace-flecha { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; font-weight: 700; text-decoration: none; }
.enlace-flecha .icono { width: 1.15rem; height: 1.15rem; transition: transform .18s ease; }
.enlace-flecha:hover .icono { transform: translateX(3px); }
.enlace-flecha .cuenta { font-weight: 400; color: var(--tenue); }
.icono { width: 1.25rem; height: 1.25rem; flex: none; }
.volver { display: flex; flex-wrap: wrap; gap: var(--e-2); margin-top: var(--e-5); }

/* sello de fecha en tinta violeta */
.sello { --s: 4.25rem; flex: none; display: inline-grid; place-content: center; justify-items: center; width: var(--s); height: var(--s); border-radius: 50%; border: 2px solid currentColor; box-shadow: inset 0 0 0 3px var(--papel), inset 0 0 0 4px currentColor; color: var(--violeta); transform: rotate(-9deg); font-family: var(--f-texto); line-height: 1; font-variant-numeric: lining-nums; opacity: .92; }
.sello-dia { font-family: var(--f-titulos); font-size: calc(var(--s) * .34); }
.sello-mes { font-size: calc(var(--s) * .16); font-weight: 700; letter-spacing: .14em; margin-top: .1em; }
.sello-anio { font-size: calc(var(--s) * .15); letter-spacing: .08em; margin-top: .15em; }
.sello-grande { --s: 6rem; }
.sello-vacio { border-style: dashed; box-shadow: none; opacity: .4; }

/* ---------------------------------------------------------------- cabecera */
.cabecera { position: relative; z-index: 20; background: var(--papel); border-bottom: 1px solid var(--filete); box-shadow: 0 3px 0 -2px var(--filete); }
.cabecera-fila { display: flex; align-items: center; gap: var(--e-3); min-height: var(--cabecera); }
.marca { display: flex; align-items: center; gap: .75rem; color: var(--tinta); text-decoration: none; margin-right: auto; min-height: 2.75rem; }
.marca:hover { color: var(--tinta); }
.marca-monograma { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 1.5px solid var(--violeta); box-shadow: inset 0 0 0 2px var(--papel), inset 0 0 0 3px var(--violeta); color: var(--violeta); font-family: var(--f-titulos); font-size: 1.5rem; line-height: 1; padding-top: .1em; flex: none; }
.marca-texto { display: flex; flex-direction: column; line-height: 1.05; }
.marca-nombre { font-family: var(--f-titulos); font-size: 1.75rem; letter-spacing: .01em; }
.marca-lema { font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--tenue); margin-top: .2rem; }
.navegacion { display: flex; align-items: center; gap: var(--e-3); }
.navegacion .menu { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--e-3); }
.navegacion a { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.75rem; color: var(--tinta-2); text-decoration: none; font-size: 1.0625rem; border-bottom: 1px solid transparent; }
.navegacion a:hover, .navegacion a[aria-current="page"] { color: var(--violeta); border-bottom-color: currentColor; }
.navegacion-buscar .icono { width: 1.1rem; height: 1.1rem; }
.menu-boton { display: none; }

@media (max-width: 63.99rem) {
  :root { --cabecera: calc(4rem - 1px); }
  .marca-nombre { font-size: 1.5rem; }
  .marca-monograma { width: 2.5rem; height: 2.5rem; font-size: 1.35rem; }
  .menu-boton { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; padding: 0; margin-right: -.25rem; border: 1px solid var(--filete); border-radius: 50%; background: var(--cartulina); color: var(--tinta); cursor: pointer; }
  .menu-boton-rayas, .menu-boton-rayas::before, .menu-boton-rayas::after { display: block; width: 1.1rem; height: 1.5px; background: currentColor; transition: transform .2s ease, background-color .2s ease; }
  .menu-boton-rayas { position: relative; }
  .menu-boton-rayas::before, .menu-boton-rayas::after { content: ""; position: absolute; left: 0; }
  .menu-boton-rayas::before { top: -6px; }
  .menu-boton-rayas::after { top: 6px; }
  .menu-boton[aria-expanded="true"] .menu-boton-rayas { background: transparent; }
  .menu-boton[aria-expanded="true"] .menu-boton-rayas::before { transform: translateY(6px) rotate(45deg); }
  .menu-boton[aria-expanded="true"] .menu-boton-rayas::after { transform: translateY(-6px) rotate(-45deg); }
  .navegacion { position: fixed; inset: var(--cabecera) 0 0; z-index: 30; display: none; flex-direction: column; align-items: stretch; gap: 0; padding: var(--e-3) 1.375rem calc(var(--e-5) + env(safe-area-inset-bottom)); background: var(--papel); background-image: repeating-linear-gradient(to bottom, transparent 0 calc(3.5rem - 1px), var(--filete) calc(3.5rem - 1px) 3.5rem); overflow-y: auto; overscroll-behavior: contain; }
  .navegacion.abierto { display: flex; }
  .navegacion .menu { flex-direction: column; gap: 0; }
  .navegacion a { width: 100%; min-height: 3.5rem; font-family: var(--f-titulos); font-size: 1.75rem; border-bottom: 0; }
  .navegacion a[aria-current="page"] { font-style: italic; }
  .navegacion-buscar { font-family: var(--f-texto) !important; font-size: 1.125rem !important; }
}

/* ---------------------------------------------------------------- portada: apertura */
.apertura { position: relative; padding-block: var(--e-6) var(--e-7); background-image: repeating-linear-gradient(to bottom, transparent 0 calc(2rem - 1px), rgba(91, 58, 120, .09) calc(2rem - 1px) 2rem); border-bottom: 1px solid var(--filete); overflow: hidden; }
.apertura::before { content: ""; position: absolute; top: 0; bottom: 0; left: max(1rem, calc((100% - var(--ancho)) / 2 - 1.5rem)); border-left: 1px solid rgba(91, 58, 120, .35); box-shadow: -4px 0 0 -3px rgba(91, 58, 120, .35); }
/* la línea de margen solo cuando cabe a 1,5rem del texto (por debajo de 80rem quedaba pegada a él) */
@media (max-width: 79.99rem) { .apertura::before { display: none; } }
.apertura-rejilla { display: grid; gap: var(--e-5); align-items: center; }
.apertura-titular { font-size: var(--t-4xl); line-height: 1.02; letter-spacing: -.01em; max-width: 13ch; }
.escudo { margin: 0; justify-self: center; text-align: center; }
.escudo-marco { display: grid; place-items: center; width: 13.5rem; height: 17rem; border-radius: 50%; background: var(--cartulina); border: 1px solid var(--sepia); box-shadow: inset 0 0 0 6px var(--cartulina), inset 0 0 0 7px var(--filete), 0 18px 40px -24px rgba(38, 33, 43, .55); }
.escudo-img { width: 106px; height: auto; display: block; }
.escudo figcaption { margin-top: var(--e-2); font-size: var(--t-xs); font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--tenue); }
@media (min-width: 52rem) {
  .apertura-rejilla { grid-template-columns: 1fr auto; gap: var(--e-6); }
  .escudo { margin-right: var(--e-4); }
}

/* acta de apertura (texto de la página de portada) */
.acta { padding-block: var(--e-7) 0; }
.acta-rejilla { display: grid; gap: var(--e-4); background: var(--cartulina); border: 1px solid var(--filete); padding: var(--e-5) var(--e-3); box-shadow: 0 1px 0 var(--filete), 0 24px 48px -36px rgba(38, 33, 43, .45); }
.acta-margen { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "num num" "sello fecha" "sello titulo"; column-gap: var(--e-3); align-items: center; }
.acta-margen .asiento-numero { grid-area: num; }
.acta-margen .sello { grid-area: sello; }
.acta-fecha { grid-area: fecha; margin: 0; color: var(--tenue); font-style: italic; align-self: end; }
.acta-titulo { grid-area: titulo; margin: 0; font-family: var(--f-titulos); font-size: var(--t-l); line-height: 1.2; align-self: start; }
.asiento-numero { margin: 0 0 var(--e-2); font-size: var(--t-xs); font-weight: 700; letter-spacing: .2em; color: var(--violeta); font-variant-numeric: lining-nums; }
.acta-contenido { font-size: 1.25rem; line-height: 1.7; }
.acta-contenido > * { margin-left: 0; }
.capitular > p:first-child::first-letter { float: left; font-family: var(--f-titulos); font-size: 4.6em; line-height: .82; margin: .06em .1em 0 0; color: var(--violeta); }
@media (min-width: 52rem) {
  .acta-rejilla { grid-template-columns: 15rem 1fr; gap: var(--e-6); padding: var(--e-6) var(--e-6); }
  .acta-margen { display: block; border-right: 1px solid var(--filete); padding-right: var(--e-4); align-self: stretch; }
  .acta-margen .sello { margin: var(--e-2) 0 var(--e-3); }
  .acta-fecha { margin-bottom: var(--e-1); }
}

/* lo que buscamos */
.busca-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--e-4); }
.busca-lista li { position: relative; padding-top: var(--e-3); border-top: 2px solid var(--tinta); }
.busca-numero { display: block; font-family: var(--f-titulos); font-size: 1.25rem; color: var(--violeta); letter-spacing: .08em; }
.busca-lista h3 { font-size: var(--t-2xl); font-style: italic; margin: var(--e-1) 0 var(--e-2); }
@media (max-width: 47.99rem) { .busca-lista { gap: 0; } .busca-lista li { display: grid; grid-template-columns: 2.5rem 1fr; column-gap: var(--e-2); padding-block: var(--e-2); border-top-width: 1px; } .busca-lista li:first-child { border-top-width: 2px; } .busca-numero { grid-row: span 2; padding-top: .35rem; } .busca-lista h3 { margin: 0; font-size: 1.75rem; } }
@media (min-width: 48rem) { .busca-lista { grid-template-columns: repeat(3, 1fr); gap: var(--e-5); } }

/* ---------------------------------------------------------------- el apellido */
.apellido { background: var(--noche); color: var(--sobre-noche); }
.apellido a { color: var(--violeta-claro); }
.apellido a:hover { color: #fff; }
.apellido-cita { margin: 0 0 var(--e-6); max-width: 56rem; }
.apellido-cita blockquote { margin: 0; position: relative; padding-left: clamp(2.25rem, 4.5vw, 3.5rem); }
.apellido-cita blockquote::before { content: "“"; position: absolute; left: -.08em; top: -.32em; font-family: var(--f-titulos); font-size: clamp(4rem, 8vw, 6rem); line-height: 1; color: var(--violeta-claro); opacity: .7; }
.apellido-cita blockquote p { margin: 0; font-family: var(--f-titulos); font-size: clamp(1.625rem, 3.4vw, 2.75rem); font-style: italic; line-height: 1.22; text-indent: 0; }
.apellido-cita figcaption { margin-top: var(--e-3); padding-left: clamp(2.25rem, 4.5vw, 3.5rem); font-size: var(--t-s); color: var(--tenue-noche); }
.apellido-autor { font-weight: 700; color: var(--sobre-noche); letter-spacing: .04em; }
.lugares { display: grid; gap: var(--e-5); padding-block: var(--e-5); border-block: 1px solid rgba(239, 233, 242, .18); }
.lugares h3 { font-family: var(--f-texto); font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--tenue-noche); margin-bottom: var(--e-2); }
/* el separador va delante de cada lugar y el de principio de línea queda fuera (recortado): nunca cuelga un «·» al final */
.lugares-grupo { overflow: hidden; }
.lugares ul { list-style: none; margin: 0 0 0 -1.2em; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem 0; }
.lugares li { font-family: var(--f-titulos); line-height: 1.15; }
.lugares li::before { content: "·"; display: inline-block; width: 1.2em; text-align: center; color: var(--violeta-claro); }
.lugares-hoy ul { font-size: clamp(2rem, 4.6vw, 3.5rem); }
.lugares-tambien ul { font-size: clamp(1.5rem, 2.8vw, 2.125rem); color: var(--tenue-noche); }
@media (min-width: 56rem) { .lugares { grid-template-columns: 1.5fr 1fr; align-items: end; } }
.lugares-cartas-titulo { font-family: var(--f-texto); font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--tenue-noche); margin: var(--e-5) 0 var(--e-3); }
.lugares-cartas { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--e-3); grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); }
.lugares-cartas li { position: relative; padding: var(--e-3) var(--e-3) calc(2.75rem + var(--e-3)); background: var(--noche-2); border-top: 2px solid var(--violeta-claro); }
.lugar-nombre { margin: 0; font-family: var(--f-titulos); font-size: 1.625rem; line-height: 1.1; }
.lugar-zona { margin: .25rem 0 0; font-size: var(--t-xs); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violeta-claro); }
.lugar-nota { margin: var(--e-2) 0 0; font-style: italic; color: var(--tenue-noche); font-size: 1rem; line-height: 1.5; }
.lugar-enlace { position: absolute; bottom: var(--e-2); right: var(--e-2); display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 1px solid rgba(201, 182, 224, .45); }
.lugar-enlace:hover { background: var(--violeta-claro); color: var(--noche); }

/* ---------------------------------------------------------------- ramas */
.ramas { background: var(--papel-hondo); border-block: 1px solid var(--filete); }
.ramas-rejilla { display: grid; gap: var(--e-4); }
@media (min-width: 64rem) { .ramas-rejilla { grid-template-columns: repeat(2, 1fr); gap: var(--e-5); align-items: start; } }
.rama { background: var(--cartulina); border: 1px solid var(--filete); padding: var(--e-4) var(--e-3); box-shadow: 0 20px 40px -32px rgba(38, 33, 43, .5); }
.rama-cabecera { display: flex; align-items: baseline; gap: var(--e-2); padding-bottom: var(--e-3); margin-bottom: var(--e-3); border-bottom: 1px solid var(--filete); }
.rama-numero { margin: 0; font-family: var(--f-titulos); font-size: 1.25rem; color: var(--violeta); }
.rama-titulo { font-size: var(--t-xl); font-style: italic; }
.rama-generaciones { list-style: none; margin: 0; padding: 0; position: relative; }
.rama-generaciones::before { content: ""; position: absolute; left: .4rem; top: .75rem; bottom: 1.5rem; border-left: 1px dashed var(--sepia); }
.generacion { position: relative; padding: 0 0 var(--e-3) var(--e-4); }
.generacion::before { content: ""; position: absolute; left: 0; top: .4rem; width: .8rem; height: .8rem; border-radius: 50%; background: var(--cartulina); border: 2px solid var(--violeta); }
.generacion:last-child { padding-bottom: 0; }
.generacion-etiqueta { margin: 0 0 .5rem; font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--tenue); line-height: 1.6; }
.generacion-personas { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.persona-rama { display: flex; flex-direction: column; padding: .55rem .85rem; border: 1px solid var(--filete); background: var(--papel); border-radius: var(--radio); line-height: 1.3; }
.persona-nombre { font-size: 1.0625rem; }
.persona-nota { font-size: .9375rem; font-style: italic; color: var(--tenue); }
.persona-destacada { background: var(--violeta-tinte); border-color: var(--violeta); }
.persona-destacada .persona-nombre { color: var(--violeta-oscuro); font-weight: 700; }
.rama-fuente { margin: var(--e-3) 0 0; padding-top: var(--e-2); border-top: 1px solid var(--filete); }
@media (min-width: 40rem) { .rama { padding: var(--e-4); } }

/* ---------------------------------------------------------------- cartas */
.cartas { list-style: none; margin: 0; padding: 0; columns: 2 22rem; column-gap: var(--e-4); }
.carta { break-inside: avoid; margin: 0 0 var(--e-4); scroll-margin-top: 1.5rem; }
.carta article { position: relative; background: var(--cartulina); border: 1px solid var(--filete); padding: var(--e-3); box-shadow: 0 16px 32px -28px rgba(38, 33, 43, .55); }
.carta article::before { content: ""; position: absolute; inset: 0 0 auto; height: 3px; background: repeating-linear-gradient(90deg, var(--violeta) 0 14px, transparent 14px 20px); opacity: .55; }
.carta:target article { border-color: var(--violeta); box-shadow: 0 0 0 3px var(--violeta-tinte); }
.carta-respuesta { margin-left: var(--e-4); }
.carta-cabecera { display: flex; align-items: center; gap: var(--e-2); margin-bottom: var(--e-2); }
.carta-cabecera .sello { --s: 3.75rem; }
.carta-autor { font-size: var(--t-xl); font-style: italic; line-height: 1.15; }
.carta-meta { margin: .2rem 0 0; font-size: var(--t-xs); color: var(--tenue); letter-spacing: .04em; }
.carta-asiento { font-weight: 700; color: var(--violeta); letter-spacing: .12em; font-variant-numeric: lining-nums; }
.carta-texto { font-size: 1.0625rem; line-height: 1.6; overflow-wrap: anywhere; hyphens: auto; }
.carta-texto p { margin: 0 0 .75em; }
.carta-texto p:last-child { margin-bottom: 0; }
.cartas-mas { margin: 0; }
.cartas-mas .enlace-flecha { display: inline-block; padding-block: .55rem; }
.cartas-mas .enlace-flecha .icono { vertical-align: -.2em; margin-left: .3rem; }
.cartas-bloque + .vecinos { margin-top: 0; }

/* ---------------------------------------------------------------- álbum y fichas */
.album { background: var(--papel-hondo); border-top: 1px solid var(--filete); }
.album-rejilla { display: grid; gap: var(--e-6); align-items: start; }
@media (min-width: 56rem) { .album-rejilla { grid-template-columns: minmax(0, 24rem) 1fr; gap: var(--e-7); } }
.polaroid { margin: 0; background: #fff; padding: .85rem .85rem 0; box-shadow: 0 1px 2px rgba(38, 33, 43, .2), 0 22px 44px -26px rgba(38, 33, 43, .55); transform: rotate(-2.2deg); max-width: 24rem; }
.polaroid img { display: block; width: 100%; aspect-ratio: 5 / 4; object-fit: cover; }
.polaroid figcaption { padding: .75rem .25rem 1.1rem; font-family: var(--f-titulos); font-style: italic; font-size: 1.5rem; text-align: center; color: var(--tinta-2); }
.album-fichas > .titular-pequeno:first-child { margin-top: 0; }
.fichas { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--e-2); }
.ficha-mini { position: relative; background: var(--cartulina); border: 1px solid var(--filete); border-top: 3px solid var(--violeta); padding: var(--e-3); }
.ficha-mini-tipo { margin: 0 0 .25rem; font-size: var(--t-xs); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violeta); }
.ficha-mini h3 { font-size: var(--t-xl); }
.ficha-mini h3 a { color: var(--tinta); text-decoration: none; }
.ficha-mini h3 a::after { content: ""; position: absolute; inset: 0; }
.ficha-mini:hover { border-color: var(--violeta); }
.ficha-mini p:last-child { margin: .5rem 0 0; color: var(--tenue); }

/* asientos (listados) */
.asientos { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--filete); }
.asiento { display: grid; grid-template-columns: auto 1fr; gap: var(--e-3); padding-block: var(--e-3); border-bottom: 1px solid var(--filete); align-items: start; }
.asiento .sello { --s: 3.75rem; }
.asiento-tipo { margin: 0 0 .25rem; font-size: var(--t-xs); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violeta); }
.asiento-titulo { font-size: var(--t-xl); }
.asiento-titulo a { color: var(--tinta); text-decoration-color: var(--filete); }
.asiento-titulo a:hover { color: var(--violeta); text-decoration-color: currentColor; }
.asiento-resumen { margin: .5rem 0 0; color: var(--tinta-2); }
.asiento-cartas { display: inline-flex; align-items: center; gap: .4rem; margin: .5rem 0 0; font-size: var(--t-s); color: var(--tenue); }
.asiento-cartas .icono { width: 1.1rem; height: 1.1rem; }

/* ---------------------------------------------------------------- participa */
.participa { background: var(--violeta-oscuro); color: var(--sobre-noche); }
.participa .titular { color: #fff; }
.participa .titular em { color: var(--violeta-claro); }
.participa-rejilla { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--e-5); align-items: start; }
.participa-rejilla > * { min-width: 0; }
.participa-texto p:not(.antetitulo) { font-size: 1.1875rem; color: var(--tenue-noche); max-width: 30rem; margin: var(--e-3) 0 0; }
@media (min-width: 60rem) { .participa-rejilla { grid-template-columns: 1fr 1.15fr; gap: var(--e-7); } }
.formulario { background: var(--cartulina); color: var(--tinta); padding: var(--e-4) var(--e-3); border-radius: var(--radio); box-shadow: 0 28px 56px -36px rgba(0, 0, 0, .7); }
@media (min-width: 40rem) { .formulario { padding: var(--e-5) var(--e-4); } }
.x-contacto { gap: var(--e-2) var(--e-3); }
.x-contacto label { font-size: var(--t-s); font-weight: 700; letter-spacing: .02em; color: var(--tinta-2); }
.x-contacto label span { font-weight: 400; color: var(--tenue); }
.x-contacto input:not([type=checkbox]), .x-contacto textarea, .x-buscador input { font: inherit; font-size: 1.0625rem; background: #fff; color: var(--tinta); border: 1px solid #c9bfae; border-radius: var(--radio); padding: .75rem .9rem; min-height: 3rem; }
.x-contacto input:focus, .x-contacto textarea:focus, .x-buscador input:focus { outline: 3px solid var(--violeta-tinte); border-color: var(--violeta); }
.x-contacto .x-acepto label { font-weight: 400; font-size: var(--t-s); line-height: 1.5; }
.x-contacto .x-acepto input { width: 1.25rem; height: 1.25rem; }
.x-contacto .boton, .x-buscador button { min-height: 3rem; border-radius: var(--radio); background: var(--violeta); border-color: var(--violeta); color: var(--cartulina); font-weight: 700; }
.x-contacto .boton { width: 100%; justify-content: center; }
.x-contacto .boton:hover, .x-buscador button:hover { background: var(--violeta-oscuro); }
.x-aviso { border-radius: var(--radio); }

/* ---------------------------------------------------------------- páginas interiores */
.pagina-cabecera { padding-block: var(--e-5) var(--e-5); background-image: repeating-linear-gradient(to bottom, transparent 0 calc(2rem - 1px), rgba(91, 58, 120, .07) calc(2rem - 1px) 2rem); border-bottom: 1px solid var(--filete); }
.pagina-cabecera-fila { display: flex; align-items: center; gap: var(--e-4); }
.pagina-titular { font-size: var(--t-3xl); max-width: 22ch; }
.pagina-entradilla { margin: var(--e-2) 0 0; font-size: var(--t-l); font-style: italic; color: var(--tenue); max-width: 40rem; }
.migas ol { list-style: none; margin: 0 0 var(--e-3); padding: 0; display: flex; flex-wrap: wrap; gap: .25rem; font-size: var(--t-s); color: var(--tenue); }
.migas li:not(:last-child)::after { content: "/"; margin-left: .4rem; color: var(--filete); }
.migas a { display: inline-flex; align-items: center; min-height: 1.5rem; color: var(--tenue); }
.pagina-cuerpo { padding-block: var(--e-5) var(--e-6); }
.hoja-papel { max-width: 48rem; margin-inline: auto; background: var(--cartulina); border: 1px solid var(--filete); padding: var(--e-4) var(--e-3); box-shadow: 0 24px 48px -38px rgba(38, 33, 43, .5); }
@media (min-width: 40rem) { .hoja-papel { padding: var(--e-5) var(--e-6); } }
.hoja-firma { margin: 0 0 var(--e-3); font-size: var(--t-s); color: var(--tenue); font-style: italic; }
.hoja .contenido, .ficha .contenido { font-size: 1.1875rem; line-height: 1.7; }
.contenido h2 { font-size: var(--t-2xl); }
.contenido h3 { font-size: var(--t-xl); }
.contenido blockquote { font-family: var(--f-titulos); font-size: 1.25em; border-left-color: var(--violeta); }
.contenido .boton { color: var(--cartulina); }
.listado-total { margin: var(--e-2) 0 0; color: var(--tenue); }
.listado { max-width: 52rem; }
.sin-resultados { font-size: var(--t-l); font-style: italic; color: var(--tenue); }
.x-buscador { margin-top: var(--e-3); max-width: 36rem; gap: .5rem; }
.paginacion a, .paginacion span[aria-current] { min-width: 2.75rem; min-height: 2.75rem; display: inline-grid; place-items: center; border-radius: var(--radio); }
.paginacion span[aria-current] { background: var(--violeta); color: var(--cartulina); }

/* ficha de persona */
.ficha { position: relative; max-width: 46rem; background: var(--cartulina); border: 1px solid var(--filete); border-top: 4px solid var(--violeta); padding: var(--e-5) var(--e-3) var(--e-4); background-image: repeating-linear-gradient(to bottom, transparent 0 calc(2.25rem - 1px), rgba(91, 58, 120, .1) calc(2.25rem - 1px) 2.25rem); background-position: 0 1.25rem; box-shadow: 0 24px 48px -36px rgba(38, 33, 43, .5); }
.ficha-perforacion { position: absolute; top: 1rem; left: 50%; width: 1.1rem; height: 1.1rem; margin-left: -.55rem; border-radius: 50%; background: var(--papel); box-shadow: inset 0 1px 2px rgba(38, 33, 43, .35); }
.ficha-campos { margin: 0; display: grid; gap: var(--e-3); }
.ficha-campos > div { display: grid; gap: .25rem; }
.ficha-campos dt { font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violeta); }
.ficha-campos dd { margin: 0; }
.ficha-nombre { font-family: var(--f-titulos); font-size: var(--t-2xl); line-height: 1.1; }
.ficha-sello { position: absolute; top: var(--e-3); right: var(--e-3); }
.ficha-cartas { margin-top: var(--e-5); max-width: 46rem; }
.ficha-cartas .cartas { columns: 1; }
@media (min-width: 40rem) {
  .ficha { padding: var(--e-6) var(--e-6) var(--e-5); }
  .ficha-campos > div:not(.ficha-notas) { grid-template-columns: 11rem 1fr; align-items: baseline; }
}
@media (max-width: 39.99rem) { .ficha-sello { --s: 4.25rem; top: var(--e-4); } .ficha-nombre { padding-right: 4.5rem; } }

.ficha-rejilla { display: grid; gap: var(--e-5); align-items: start; }
@media (min-width: 60rem) { .ficha-rejilla { grid-template-columns: minmax(0, 46rem) 1fr; gap: var(--e-6); } .ficha-lateral { position: sticky; top: var(--e-3); } }
@media (min-width: 40rem) { .ficha-nombre { padding-right: 7rem; } }

/* nota con sus ramas al lado */
.hoja-con-ramas { display: grid; gap: var(--e-4); align-items: start; }
.hoja-con-ramas .hoja-papel { margin: 0; max-width: none; }
@media (min-width: 60rem) { .hoja-con-ramas { grid-template-columns: 1fr 1fr; gap: var(--e-5); } }
.hoja-ramas .antetitulo { margin-bottom: var(--e-2); }

/* inventario del archivo */
.inventario ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); }
.inventario li { border-top: 1px solid var(--filete); }
.inventario a { display: flex; flex-direction: column; gap: .15rem; padding: var(--e-2) var(--e-2) var(--e-2) 0; color: var(--tinta); text-decoration: none; min-height: 2.75rem; }
.inventario a:hover .inventario-cifra { color: var(--violeta-oscuro); }
.inventario-cifra { font-family: var(--f-titulos); font-size: clamp(2rem, 4vw, 2.75rem); line-height: 1; color: var(--violeta); font-variant-numeric: lining-nums; }
.inventario-texto { font-size: var(--t-s); color: var(--tenue); line-height: 1.35; }
.inventario-titulo { margin: 0 0 var(--e-2); font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violeta); }
.inventario-portada { margin-top: var(--e-6); }
.inventario-portada ul { border-bottom: 1px solid var(--filete); }
@media (min-width: 48rem) {
  .inventario-portada ul { grid-template-columns: repeat(4, 1fr); border-top: 2px solid var(--tinta); border-bottom: 0; }
  .inventario-portada li { border-top: 0; padding-left: var(--e-3); border-left: 1px solid var(--filete); }
  .inventario-portada li:first-child { padding-left: 0; border-left: 0; }
  .inventario-portada a { padding-block: var(--e-3) 0; }
}
.inventario-lateral { background: var(--cartulina); border: 1px solid var(--filete); padding: var(--e-3) var(--e-3) var(--e-2); }
.inventario-lateral ul { grid-template-columns: 1fr 1fr; column-gap: var(--e-3); }
.inventario-lateral .inventario-cifra { font-size: 1.875rem; white-space: nowrap; }
.inventario-hoja { margin-top: var(--e-4); }

/* anterior / siguiente */
.vecinos { display: grid; gap: var(--e-2); padding-block: 0 var(--e-6); }
.vecino { display: flex; flex-direction: column; gap: .25rem; padding: var(--e-3); background: var(--cartulina); border: 1px solid var(--filete); color: var(--tinta); text-decoration: none; font-family: var(--f-titulos); font-size: var(--t-l); line-height: 1.2; }
.vecino span { display: inline-flex; align-items: center; gap: .4rem; font-family: var(--f-texto); font-size: var(--t-xs); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violeta); }
.vecino span .icono { width: 1rem; height: 1rem; }
.vecino:hover { border-color: var(--violeta); color: var(--violeta-oscuro); }
@media (min-width: 48rem) { .vecinos { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); } .vecino-sig { text-align: right; align-items: flex-end; } }

/* 404 */
.error .x-buscador { margin-top: var(--e-4); }

/* ---------------------------------------------------------------- pie */
.pie { background: var(--noche); color: var(--tenue-noche); padding-top: var(--e-6); font-size: 1.0625rem; }
.pie a { color: var(--sobre-noche); text-decoration-color: rgba(239, 233, 242, .35); }
.pie a:hover { color: #fff; }
.pie-rejilla { display: grid; gap: var(--e-5); padding-bottom: var(--e-5); }
@media (min-width: 52rem) { .pie-rejilla { grid-template-columns: 1.6fr 1fr 1fr; gap: var(--e-6); } }
.pie-nombre { display: flex; align-items: center; gap: .75rem; margin: 0; font-family: var(--f-titulos); font-size: 2.25rem; color: var(--sobre-noche); line-height: 1; }
.pie-nombre .marca-monograma { border-color: var(--violeta-claro); color: var(--violeta-claro); box-shadow: inset 0 0 0 2px var(--noche), inset 0 0 0 3px var(--violeta-claro); }
.pie-lema { margin: var(--e-2) 0 0; font-family: var(--f-titulos); font-style: italic; font-size: var(--t-l); color: var(--sobre-noche); }
.pie-texto { margin: var(--e-2) 0 0; max-width: 30rem; line-height: 1.6; }
.pie-grupo h2 { font-family: var(--f-texto); font-size: var(--t-xs); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violeta-claro); margin-bottom: var(--e-2); }
.pie-grupo ul { list-style: none; margin: 0; padding: 0; }
.pie-grupo a { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; text-decoration: none; }
.pie-grupo a:hover { text-decoration: underline; }
.pie-grupo .icono { width: 1rem; height: 1rem; }
.pie-final { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--e-2); padding-block: var(--e-3) calc(var(--e-3) + env(safe-area-inset-bottom)); border-top: 1px solid rgba(239, 233, 242, .14); font-size: var(--t-s); }
.pie-final p { margin: 0; }
.pie-final a { display: inline-flex; align-items: center; min-height: 2.75rem; }

/* rótulos en versalitas: cuerpo legible en móvil (≥ 15 px) con aspecto de etiqueta pequeña */
.antetitulo, .escudo figcaption, .asiento-numero, .lugares h3, .lugares-cartas-titulo, .lugar-zona, .generacion-etiqueta,
.asiento-tipo, .ficha-mini-tipo, .inventario-titulo, .ficha-campos dt, .vecino span, .pie-grupo h2 { font-size: 1.0625rem; text-transform: none; font-variant-caps: all-small-caps; letter-spacing: .12em; }

/* ---------------------------------------------------------------- móvil */
@media (max-width: 47.99rem) {
  .bloque { padding-block: var(--e-6); }
  .apertura { padding-block: var(--e-5) var(--e-6); }
  .apertura::before { display: none; }
  .escudo-marco { width: 11rem; height: 14rem; }
  .acta { padding-top: var(--e-5); }
  .acta-contenido { font-size: 1.125rem; }
  .cartas { columns: 1; }
  .carta-respuesta { margin-left: var(--e-2); }
  .asiento { gap: var(--e-2); }
  .asiento .sello { --s: 3.25rem; }
  .pagina-cabecera-fila { align-items: flex-start; gap: var(--e-3); }
  .pagina-cabecera-fila .sello-grande { --s: 4.25rem; margin-top: .25rem; }
  .botones-fila .boton { flex: 1 1 100%; }
  .volver .boton { flex: 1 1 100%; }
}

/* ---------------------------------------------------------------- movimiento e impresión */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
@media print {
  .cabecera, .pie, .participa, .botones-fila, .vecinos, .volver, .saltar, .x-buscador { display: none !important; }
  body { background: #fff; font-size: 11pt; }
  .apertura, .pagina-cabecera, .ramas, .album, .apellido { background: none !important; color: #000; }
  .apellido *, .lugares li { color: #000 !important; }
  .acta-rejilla, .hoja-papel, .rama, .carta article, .ficha { box-shadow: none; }
  .carta, .rama, .generacion { break-inside: avoid; }
}

/* mejora de diseño (25/10/2026) */
/* «Lo que buscamos»: cada línea como una ficha del registro, con su sello (pluma, rama, foto) y el número romano grande */
.busca-lista li { padding: var(--e-3) var(--e-3) var(--e-3); background: var(--cartulina); border: 1px solid var(--filete); border-top: 2px solid var(--tinta); box-shadow: 0 16px 32px -28px rgba(38, 33, 43, .55); transition: transform .2s ease, box-shadow .2s ease; }
.busca-lista li:hover { transform: translateY(-3px); box-shadow: 0 22px 36px -26px rgba(38, 33, 43, .6); }
.busca-numero { position: absolute; top: var(--e-2); right: var(--e-3); font-size: clamp(2.5rem, 5vw, 3.75rem); line-height: 1; color: var(--violeta-tinte); letter-spacing: .02em; }
.busca-sello { position: relative; display: grid; place-items: center; width: 3.25rem; height: 3.25rem; margin-bottom: var(--e-2); border-radius: 50%; border: 1.5px solid var(--violeta); color: var(--violeta); box-shadow: inset 0 0 0 3px var(--cartulina), inset 0 0 0 4px rgba(91, 58, 120, .45); transform: rotate(-8deg); }
.busca-sello .icono { width: 1.5rem; height: 1.5rem; }
.busca-lista h3 { position: relative; }
@media (max-width: 47.99rem) {
  .busca-lista { gap: var(--e-2); }
  .busca-lista li, .busca-lista li:first-child { display: block; padding: var(--e-2) var(--e-2) var(--e-2) 5rem; border-top-width: 2px; min-height: 5.5rem; }
  .busca-sello { position: absolute; left: var(--e-2); top: var(--e-2); margin: 0; }
  .busca-numero { font-size: 2.25rem; }
}
/* cartas en papel pautado: el texto se escribe sobre renglones */
.carta-texto { --renglon: 1.7em; line-height: var(--renglon); background-image: repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--renglon) - 1px), rgba(148, 118, 79, .28) calc(var(--renglon) - 1px), rgba(148, 118, 79, .28) var(--renglon)); }
.carta-texto p { margin: 0; }
.carta-texto p + p { margin-top: var(--renglon); }
/* la hoja de las notas, con la línea de margen del libro de registro */
.hoja-papel { background-image: linear-gradient(90deg, transparent 1.15rem, rgba(91, 58, 120, .28) 1.15rem, rgba(91, 58, 120, .28) calc(1.15rem + 1px), transparent calc(1.15rem + 1px)); }
@media (prefers-reduced-motion: reduce) { .busca-lista li:hover { transform: none; } }
@media print { .carta-texto, .hoja-papel { background-image: none; } .busca-sello { display: none; } }
