/* ============================================================
   Cementerios.info — hoja de estilo (moderna, con movimiento)
   Fraunces (display) + Inter (texto). Verde profundo + foto.
   ============================================================ */

:root {
  --fondo:      #f3f1ea;
  --papel:      #ffffff;
  --tinta:      #1b2620;
  --tinta-s:    #45514a;
  --suave:      #737d75;
  --verde:      #2f6d57;
  --verde-osc:  #1d4a3a;
  --verde-cl:   #e7f0eb;
  --salvia:     #8fb0a2;
  --oro:        #cd9a4e;
  --borde:      #e5e0d5;
  --borde-cl:   #eeeae0;
  --sombra-sm:  0 2px 8px rgba(27,38,32,.06);
  --sombra:     0 10px 30px -10px rgba(27,38,32,.18);
  --sombra-lg:  0 30px 60px -20px rgba(27,38,32,.3);
  --radio:      20px;
  --radio-sm:   12px;
  --ancho:      1200px;
  --display:    "Fraunces", Georgia, "Times New Roman", serif;
  --sans:       "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --ease:       cubic-bezier(.22,.61,.36,1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.65;
  color: var(--tinta);
  background: var(--fondo);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

h1, h2, h3, h4 { font-family: var(--display); font-weight: 600; line-height: 1.08; color: var(--tinta); letter-spacing: -.015em; margin: 0; }
h1 { font-size: clamp(2.2rem, 5.5vw, 4rem); font-weight: 600; }
h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); }
h3 { font-size: 1.25rem; letter-spacing: -.01em; }

p { margin: 0 0 1rem; }
a { color: var(--verde-osc); text-decoration: none; }
a:hover { color: var(--verde); }
img { max-width: 100%; height: auto; display: block; }

.contenedor { width: 100%; max-width: var(--ancho); margin-inline: auto; padding-inline: 22px; }

.skip-link { position: absolute; left: -999px; top: 0; background: var(--verde); color: #fff; padding: .6rem 1rem; z-index: 200; border-radius: 0 0 var(--radio-sm) 0; }
.skip-link:focus { left: 0; }
:focus-visible { outline: 3px solid var(--salvia); outline-offset: 3px; border-radius: 4px; }
.sr-only { position: absolute; left: -9999px; }

/* ---------- Cabecera ---------- */
.cabecera {
  position: sticky; top: 0; z-index: 100;
  background: rgba(243,241,234,.8);
  backdrop-filter: saturate(140%) blur(12px);
  -webkit-backdrop-filter: saturate(140%) blur(12px);
  border-bottom: 1px solid transparent;
  transition: background .3s, border-color .3s, box-shadow .3s;
}
.cabecera.scrolled { background: rgba(255,255,255,.92); border-bottom-color: var(--borde); box-shadow: var(--sombra-sm); }
.cabecera .contenedor { display: flex; align-items: center; gap: 1.5rem; min-height: 74px; }
.logo { display: inline-flex; align-items: center; gap: .55rem; font-family: var(--display); font-size: 1.4rem; font-weight: 600; color: var(--tinta); letter-spacing: -.02em; }
.logo svg { flex: none; transition: transform .4s var(--ease); }
.logo:hover svg { transform: rotate(-8deg) scale(1.08); }
.logo b { color: var(--verde); }
.nav-principal { margin-left: auto; display: flex; align-items: center; gap: 1.7rem; }
.nav-principal > a { color: var(--tinta-s); font-size: .97rem; font-weight: 500; position: relative; white-space: nowrap; }
.boton { white-space: nowrap; }
.boton--buscar { padding: .62rem 1.25rem; }

/* Menú: desplegable de provincias */
.nav-drop { position: relative; display: flex; align-items: center; }
.nav-drop__btn { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; cursor: pointer; font: 500 .97rem var(--sans); color: var(--tinta-s); padding: 0; }
.nav-drop__btn:hover { color: var(--verde); }
.nav-drop__btn svg { transition: transform .25s; }
.nav-drop:hover .nav-drop__btn svg, .nav-drop.abierto .nav-drop__btn svg { transform: rotate(180deg); }
.nav-panel { position: absolute; top: calc(100% + 16px); left: 50%; transform: translateX(-50%) translateY(8px); background: #fff; border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra-lg); padding: 1.1rem; width: 580px; max-width: 92vw; opacity: 0; visibility: hidden; transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s; z-index: 120; }
.nav-drop:hover .nav-panel, .nav-drop:focus-within .nav-panel, .nav-drop.abierto .nav-panel { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.nav-panel::before { content: ""; position: absolute; top: -7px; left: 50%; transform: translateX(-50%) rotate(45deg); width: 12px; height: 12px; background: #fff; border-left: 1px solid var(--borde); border-top: 1px solid var(--borde); }
.nav-panel__grid { columns: 3; column-gap: 1rem; }
.nav-panel__grid a { display: block; padding: .34rem .55rem; border-radius: 6px; font-size: .9rem; color: var(--tinta-s); text-decoration: none; break-inside: avoid; transition: background .15s, color .15s; }
.nav-panel__grid a:hover { background: var(--verde-cl); color: var(--verde-osc); }
.nav-panel__all { display: block; margin-top: .85rem; padding-top: .85rem; border-top: 1px solid var(--borde-cl); font-weight: 700; color: var(--verde-osc); text-decoration: none; }
.nav-destacado { color: var(--oro) !important; font-weight: 700 !important; }
.nav-destacado::after { background: var(--oro) !important; }
.nav-principal > a:not(.boton)::after { content: ""; position: absolute; left: 0; bottom: -5px; width: 0; height: 2px; background: var(--verde); transition: width .3s var(--ease); }
.nav-principal > a:not(.boton):hover::after { width: 100%; }
.nav-toggle { display: none; }

/* ---------- Botones ---------- */
.boton {
  --bg: var(--verde);
  display: inline-flex; align-items: center; gap: .5rem; justify-content: center;
  background: var(--bg); color: #fff; border: 0; padding: .8rem 1.5rem;
  border-radius: 999px; font: 600 .98rem/1 var(--sans); cursor: pointer;
  box-shadow: 0 8px 20px -8px rgba(47,109,87,.6);
  transition: transform .25s var(--ease), box-shadow .25s, background .2s;
  position: relative; overflow: hidden;
}
.boton:hover { background: var(--verde-osc); color: #fff; transform: translateY(-2px); box-shadow: 0 14px 28px -10px rgba(47,109,87,.7); }
.boton:active { transform: translateY(0); }
.boton--claro { background: #fff; color: var(--verde-osc); box-shadow: var(--sombra-sm); }
.boton--claro:hover { background: var(--verde-cl); color: var(--verde-osc); }
.boton--grande { padding: 1rem 1.8rem; font-size: 1.05rem; }

/* ---------- Buscador ---------- */
.buscador { display: flex; gap: .5rem; width: 100%; }
.buscador input[type="search"] {
  flex: 1; min-width: 0; padding: 1rem 1.3rem; font: 1.05rem var(--sans); color: var(--tinta);
  border: 1px solid var(--borde); border-radius: 999px; background: var(--papel); box-shadow: var(--sombra-sm);
  transition: box-shadow .25s, border-color .2s;
}
.buscador input[type="search"]:focus { outline: none; border-color: var(--salvia); box-shadow: 0 0 0 4px rgba(143,176,162,.3); }
.buscador--hero input { border-color: transparent; background: rgba(255,255,255,.95); box-shadow: var(--sombra-lg); }

label { font-weight: 600; font-size: .95rem; display: block; margin-bottom: .4rem; }
input, textarea, select { width: 100%; padding: .85rem 1rem; font: 1rem var(--sans); color: var(--tinta); border: 1px solid var(--borde); border-radius: var(--radio-sm); background: var(--papel); }
input:focus, textarea:focus { outline: none; border-color: var(--salvia); box-shadow: 0 0 0 3px rgba(143,176,162,.25); }
textarea { min-height: 150px; resize: vertical; }

/* ---------- Hero con foto ---------- */
.hero { position: relative; min-height: min(78vh, 680px); display: flex; align-items: center; color: #fff; overflow: hidden; isolation: isolate; }
.hero__bg { position: absolute; inset: 0; z-index: -2; background-size: cover; background-position: center; transform: scale(1.1); animation: kenburns 22s ease-out forwards; }
.hero__slides { position: absolute; inset: 0; z-index: -2; }
.hero__slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transform: scale(1.08); transition: opacity 1.2s ease; }
.hero__slide.is-active { opacity: 1; animation: kenburns 7s ease-out forwards; }
.hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(20,38,30,.55) 0%, rgba(20,38,30,.5) 40%, rgba(20,38,30,.82) 100%); }
.hero .contenedor { padding-block: clamp(3rem, 9vw, 6rem); max-width: 900px; }
.hero__badge { display: inline-flex; align-items: center; gap: .5rem; background: rgba(255,255,255,.15); backdrop-filter: blur(6px); border: 1px solid rgba(255,255,255,.25); color: #fff; padding: .45rem 1rem; border-radius: 999px; font-size: .88rem; font-weight: 500; margin-bottom: 1.4rem; }
.hero h1 { color: #fff; margin-bottom: 1rem; text-shadow: 0 2px 30px rgba(0,0,0,.25); }
.hero h1 em { font-style: italic; font-variation-settings: "SOFT" 60, "WONK" 1; color: #ffe9c7; }
.hero p { font-size: clamp(1.05rem, 2vw, 1.3rem); color: #e8efe9; max-width: 60ch; margin-bottom: 2rem; }
@keyframes kenburns { to { transform: scale(1); } }

/* animación de entrada del hero */
.hero__badge, .hero h1, .hero p, .hero .buscador { opacity: 0; transform: translateY(26px); animation: heroIn .9s var(--ease) forwards; }
.hero h1 { animation-delay: .1s; }
.hero p { animation-delay: .22s; }
.hero .buscador { animation-delay: .34s; }
@keyframes heroIn { to { opacity: 1; transform: none; } }

/* ---------- Secciones ---------- */
.seccion { padding-block: clamp(3rem, 6vw, 5rem); }
.seccion--alt { background: var(--papel); }
.seccion--oscura { background: linear-gradient(160deg, #1d3a2e, #142620); color: #e7efe9; }
.seccion--oscura h2, .seccion--oscura h3 { color: #fff; }
.seccion-cab { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 2rem; flex-wrap: wrap; }
.seccion-cab .et { color: var(--verde); font-weight: 700; font-size: .85rem; letter-spacing: .03em; display: block; margin-bottom: .6rem; }
.seccion-cab p { color: var(--suave); margin: .5rem 0 0; }
.enlace-mas { font-weight: 600; white-space: nowrap; display: inline-flex; align-items: center; gap: .35rem; transition: gap .25s var(--ease); }
.enlace-mas:hover { gap: .7rem; }

/* ---------- Franja de estadísticas ---------- */
.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; text-align: center; }
.stats .num { font-family: var(--display); font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 600; line-height: 1; color: #fff; font-variant-numeric: tabular-nums; }
.stats .lab { color: #b9ccc1; margin-top: .5rem; font-size: .98rem; }

/* ---------- Rejillas ---------- */
.rejilla { display: grid; gap: 1.3rem; }
.rejilla--prov { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.rejilla--cem  { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) { .rejilla--cem { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px)  { .rejilla--cem { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px)  { .rejilla--cem { grid-template-columns: 1fr; } }
.rejilla--art  { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }

/* ---------- Tarjeta provincia con GIRO 3D ---------- */
.flip { perspective: 1200px; height: 190px; }
.flip__in { position: relative; width: 100%; height: 100%; transition: transform .7s var(--ease); transform-style: preserve-3d; }
.flip:hover .flip__in, .flip:focus-within .flip__in, .flip.volteada .flip__in { transform: rotateY(180deg); }
.flip__cara { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra-sm); display: flex; }
.flip__frente { align-items: flex-end; }
.flip__frente img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.flip__frente .vel { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,38,30,0) 30%, rgba(20,38,30,.85)); }
.flip__frente .txt { position: relative; padding: 1.1rem 1.2rem; color: #fff; z-index: 1; width: 100%; display: flex; justify-content: space-between; align-items: center; }
.flip__frente .txt b { font-family: var(--display); font-size: 1.3rem; font-weight: 600; }
.flip__frente .txt .n { background: rgba(255,255,255,.2); border-radius: 999px; padding: .15rem .6rem; font-size: .82rem; font-weight: 600; backdrop-filter: blur(4px); }
.flip__dorso { transform: rotateY(180deg); background: linear-gradient(155deg, var(--verde), var(--verde-osc)); color: #fff; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: .5rem; padding: 1.2rem; }
.flip__dorso .big { font-family: var(--display); font-size: 2.4rem; font-weight: 600; line-height: 1; }
.flip__dorso .sub { color: #d6e6dd; font-size: .9rem; }
.flip__dorso .ir { margin-top: .4rem; background: #fff; color: var(--verde-osc); padding: .5rem 1.1rem; border-radius: 999px; font-weight: 600; font-size: .9rem; }

/* ---------- Tarjeta cementerio ---------- */
.cem-card { background: var(--papel); border-radius: var(--radio); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--sombra-sm); transition: transform .35s var(--ease), box-shadow .35s; }
.cem-card:hover { transform: translateY(-6px); box-shadow: var(--sombra); }
.cem-card__img { position: relative; aspect-ratio: 16/10; overflow: hidden; background: var(--verde-cl); }
.cem-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.cem-card:hover .cem-card__img img { transform: scale(1.08); }
.cem-card__prov { position: absolute; top: .8rem; left: .8rem; background: rgba(255,255,255,.92); color: var(--verde-osc); padding: .25rem .75rem; border-radius: 999px; font-size: .78rem; font-weight: 700; backdrop-filter: blur(4px); box-shadow: var(--sombra-sm); }
.cem-card__body { padding: 1.1rem 1.25rem 1.3rem; display: flex; flex-direction: column; gap: .4rem; flex: 1; }
.cem-card__body h3 { font-size: 1.12rem; }
.cem-card__body h3 a { color: var(--tinta); background: linear-gradient(var(--verde), var(--verde)) 0 100%/0 2px no-repeat; transition: background-size .3s; padding-bottom: 2px; }
.cem-card__body h3 a:hover { background-size: 100% 2px; color: var(--verde-osc); }
.ubic { color: var(--suave); font-size: .92rem; display: flex; align-items: center; gap: .4rem; }
.cem-card__pie { margin-top: auto; padding-top: .7rem; display: flex; align-items: center; justify-content: space-between; }
.flecha { color: var(--verde); font-weight: 600; font-size: .9rem; display: inline-flex; gap: .3rem; transition: gap .25s var(--ease); }
.cem-card:hover .flecha { gap: .6rem; }

/* lista de provincias en pastillas (búsqueda) */
.prov-pills { display: flex; flex-wrap: wrap; gap: .6rem; }
.prov-pill { display: inline-flex; align-items: center; gap: .5rem; background: var(--papel); border: 1px solid var(--borde); border-radius: 999px; padding: .55rem 1.1rem; color: var(--tinta); font-weight: 600; box-shadow: var(--sombra-sm); transition: transform .2s var(--ease), border-color .2s, color .2s; }
.prov-pill:hover { transform: translateY(-2px); border-color: var(--verde); color: var(--verde-osc); }
.prov-pill .n { background: var(--verde-cl); color: var(--verde-osc); border-radius: 999px; padding: .1rem .55rem; font-size: .78rem; }

.chip { display: inline-block; background: var(--verde-cl); color: var(--verde-osc); border-radius: 999px; padding: .25rem .8rem; font-size: .82rem; font-weight: 600; }
a.chip { transition: background .2s; }
a.chip:hover { background: #d8e7df; }

/* ---------- Migas ---------- */
.migas { font-size: .88rem; color: var(--suave); padding-block: 1.1rem 0; }
.migas ol { list-style: none; display: flex; flex-wrap: wrap; gap: .45rem; margin: 0; padding: 0; }
.migas li::after { content: "›"; margin-left: .45rem; color: var(--borde); }
.migas li:last-child::after { content: ""; }

/* ---------- Ficha ---------- */
.ficha-hero { position: relative; color: #fff; overflow: hidden; isolation: isolate; }
.ficha-hero__bg { position: absolute; inset: 0; z-index: -2; background-size: cover; background-position: center; transform: scale(1.08); animation: kenburns 18s ease-out forwards; }
.ficha-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(20,38,30,.28) 0%, rgba(20,38,30,.5) 55%, rgba(20,38,30,.82) 100%); }
.ficha-hero .contenedor { padding-block: clamp(2.4rem, 6vw, 4rem); }
.ficha-hero .chip { background: rgba(255,255,255,.18); color: #fff; backdrop-filter: blur(4px); }
.ficha-hero h1 { color: #fff; margin: .7rem 0 .5rem; }
.ficha-ubic { color: #e3ece6; font-size: 1.1rem; display: flex; align-items: center; gap: .5rem; }
.ficha-hero__credito { position: absolute; right: 10px; bottom: 8px; z-index: 2; font-size: .68rem; color: rgba(255,255,255,.75); background: rgba(0,0,0,.3); padding: .15rem .5rem; border-radius: 4px; max-width: 70%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ficha-hero__credito a { color: inherit; text-decoration: none; }
.ficha-hero__credito a:hover { text-decoration: underline; }

.ficha-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 2.5rem; align-items: start; padding-block: 3rem; }
.ficha-grid .ficha-aside { position: sticky; top: 96px; display: grid; gap: 1.3rem; }
.ficha-servicios { border: 1px solid var(--borde); border-radius: 16px; padding: 1.1rem 1.1rem 1rem; background: var(--crema, #faf8f3); }
.ficha-servicios h2 { font-size: 1.05rem; margin: 0 0 .7rem; }
.serv-card { display: flex; align-items: center; gap: .8rem; padding: .7rem .8rem; border: 1px solid var(--borde-cl); border-radius: 12px; text-decoration: none; color: inherit; margin-bottom: .55rem; transition: border-color .18s, transform .18s, box-shadow .18s; background: #fff; }
.serv-card:hover { border-color: var(--verde); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(29,74,58,.1); }
.serv-ico { font-size: 1.4rem; line-height: 1; flex: none; }
.serv-txt { display: flex; flex-direction: column; gap: .1rem; }
.serv-txt strong { font-size: .95rem; }
.serv-txt small { color: var(--suave); font-size: .82rem; line-height: 1.3; }
.serv-fl { margin-left: auto; color: var(--verde); font-weight: 700; flex: none; }
.serv-aviso { font-size: .72rem; color: var(--suave); margin: .5rem 0 0; line-height: 1.4; }
.intro-ficha { font-size: 1.12rem; color: var(--tinta-s); }
.datos-lista { list-style: none; margin: 1.4rem 0 0; padding: 0; border-radius: var(--radio); overflow: hidden; background: var(--papel); box-shadow: var(--sombra-sm); }
.datos-lista li { display: grid; grid-template-columns: 160px 1fr; gap: 1rem; padding: 1rem 1.3rem; border-bottom: 1px solid var(--borde-cl); align-items: center; }
.datos-lista li:last-child { border-bottom: 0; }
.datos-lista .k { color: var(--suave); font-size: .78rem; font-weight: 700; letter-spacing: .05em; display: flex; align-items: center; gap: .45rem; }
.di-ico { color: var(--salvia); flex: none; }
.datos-lista li { transition: background .2s; }
.datos-lista li:hover { background: color-mix(in srgb, var(--verde-cl) 45%, transparent); }
.datos-lista .v { font-size: 1.05rem; }
.datos-lista .v a { font-weight: 600; }
.mapa-marco { border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra); background: var(--verde-cl); }
.mapa-marco iframe { display: block; width: 100%; height: 380px; border: 0; }
.aviso-dato { font-size: .92rem; color: var(--verde-osc); background: var(--verde-cl); border-radius: var(--radio-sm); padding: .9rem 1.1rem; }

/* ---------- Mapa de provincias (Leaflet) ---------- */
.mapa-espana-wrap { background: var(--papel); border: 1px solid var(--borde); border-radius: var(--radio); padding: 1.1rem; box-shadow: var(--sombra); position: relative; }
#mapa-espana { width: 100%; height: min(680px, 72vh); min-height: 440px; border-radius: var(--radio-sm); background: radial-gradient(120% 120% at 50% 0, #eef4f1 0, #f3f1ea 70%); z-index: 1; }
@media (max-width: 900px) { #mapa-espana { height: 62vh; } }
#mapa-espana .leaflet-interactive { cursor: pointer; }
.leaflet-container { font-family: var(--sans); background: transparent; }
.leaflet-tooltip { font-size: .85rem; border: 0; border-radius: 8px; box-shadow: var(--sombra); color: var(--tinta); padding: .35rem .6rem; }
.leaflet-tooltip b { font-family: var(--display); }
.mapa-leyenda { display: flex; align-items: center; gap: .3rem; justify-content: center; margin-top: .9rem; font-size: .78rem; color: var(--suave); }
.mapa-leyenda i { width: 22px; height: 12px; border-radius: 2px; display: inline-block; }
@media (max-width: 640px) { #mapa-espana { height: 400px; } }

/* ---------- Anuncio (manual) ---------- */
.anuncio { margin: 2.2rem auto; max-width: 100%; text-align: center; overflow: hidden; }
.anuncio__lbl { display: block; font-size: .68rem; letter-spacing: .1em; color: var(--suave); opacity: .5; margin-bottom: .35rem; }
.anuncio ins { min-height: 90px; }

/* ---------- Generador de recordatorios ---------- */
.reco-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 2.6rem; align-items: start; }
.reco-form { display: flex; flex-direction: column; gap: 1.1rem; background: var(--papel); border: 1px solid var(--borde); border-radius: var(--radio); padding: 1.6rem; box-shadow: var(--sombra-sm); }
.reco-campo label { font-weight: 600; font-size: .9rem; display: block; margin-bottom: .35rem; }
.reco-fila { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.reco-estilos { display: flex; gap: .5rem; flex-wrap: wrap; }
.reco-estilo { padding: .5rem 1rem; border: 1px solid var(--borde); border-radius: 999px; background: var(--papel); cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--tinta-s); transition: all .2s; }
.reco-estilo:hover { border-color: var(--salvia); }
.reco-estilo.activo { background: var(--verde); border-color: var(--verde); color: #fff; }
.reco-acciones { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .4rem; }
.reco-previa { position: sticky; top: 96px; }

/* La tarjeta */
.reco-card { width: 100%; max-width: 430px; margin: 0 auto; aspect-ratio: 3 / 4.15; border-radius: 10px; overflow: hidden; box-shadow: var(--sombra-lg); background: #fff; }
.reco-card__inner { position: relative; height: 100%; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 2.3rem 1.9rem 1.6rem; box-sizing: border-box; }
.reco-orla { position: absolute; inset: 13px; border-radius: 6px; pointer-events: none; }
.reco-foto { width: 150px; height: 182px; border-radius: 8px; overflow: hidden; display: flex; align-items: center; justify-content: center; margin-bottom: 1.1rem; background: #eee; color: #9aa7a0; flex: none; }
.reco-foto img { width: 100%; height: 100%; object-fit: cover; }
.reco-foto-ph { display: flex; flex-direction: column; align-items: center; gap: .3rem; font-size: .8rem; }
.reco-foto.con-foto { background: none; }
.reco-pre { font-size: .82rem; letter-spacing: .14em; margin: 0 0 .35rem; }
.reco-nombre { font-family: var(--display); font-size: 1.55rem; font-weight: 600; line-height: 1.12; margin: 0 0 .35rem; }
.reco-fechas { font-size: 1.02rem; margin: 0 0 .5rem; }
.reco-sep { font-size: 1.15rem; color: var(--oro); margin: .15rem 0; }
.reco-frase { font-style: italic; font-size: 1.02rem; line-height: 1.5; margin: .55rem 0 0; max-width: 28ch; }
.reco-pie { margin-top: auto; font-size: .7rem; letter-spacing: .14em; opacity: .45; }

/* Estilo CLÁSICO */
.estilo-clasico { background: #fbfaf6; color: #2b2b26; }
.estilo-clasico .reco-orla { border: 1.5px solid #cdb27e; box-shadow: inset 0 0 0 3px #fbfaf6, inset 0 0 0 4px #e7dcc2; }
.estilo-clasico .reco-pre { color: #b08a48; }
.estilo-clasico .reco-fechas { color: #6b665a; }
.estilo-clasico .reco-frase { color: #4a463c; }
/* Estilo NATURAL */
.estilo-natural { background: linear-gradient(180deg, #eef4ef, #f6f4ee); color: #22312a; }
.estilo-natural .reco-orla { border: 1.5px solid #9bb6a8; }
.estilo-natural .reco-pre { color: #35594a; }
.estilo-natural .reco-sep { color: #35594a; }
.estilo-natural .reco-fechas { color: #566b61; }
.estilo-natural .reco-foto { border-radius: 50% 50% 8px 8px; }
/* Estilo SENCILLO */
.estilo-sencillo { background: #fff; color: #222; }
.estilo-sencillo .reco-orla { border: 1px solid #e6e2d8; }
.estilo-sencillo .reco-pre { color: #9a948a; }
.estilo-sencillo .reco-sep { color: #c9c2b4; }
.estilo-sencillo .reco-fechas { color: #777; }
/* Estilo OSCURO */
.estilo-oscuro { background: linear-gradient(180deg, #20302a, #16211c); color: #eef2ef; }
.estilo-oscuro .reco-orla { border: 1px solid rgba(205,154,78,.5); }
.estilo-oscuro .reco-pre { color: #cd9a4e; }
.estilo-oscuro .reco-sep { color: #cd9a4e; }
.estilo-oscuro .reco-fechas { color: #b7c4bd; }
.estilo-oscuro .reco-frase { color: #d7e0db; }
.estilo-oscuro .reco-foto { background: #2b3b34; }

@media (max-width: 860px) {
  .reco-layout { grid-template-columns: 1fr; gap: 1.8rem; }
  .reco-previa { position: static; order: -1; }
}

/* Impresión: solo la tarjeta */
@media print {
  body > *:not(main), .cabecera, .pie, .migas, .progreso, .reco-form, .pagina-cab { display: none !important; }
  .reco-layout { display: block; }
  .reco-card { max-width: 420px; box-shadow: none; }
}

/* ---------- Compartir ---------- */
.compartir { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin: 1.4rem 0 0; }
.compartir__lbl { font-size: .85rem; font-weight: 600; color: var(--suave); margin-right: .2rem; }
.compartir__btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 999px; background: var(--papel); border: 1px solid var(--borde); color: var(--tinta-s); cursor: pointer; transition: transform .2s var(--ease), border-color .2s, color .2s, background .2s; }
.compartir__btn:hover { transform: translateY(-2px); border-color: var(--salvia); color: var(--verde-osc); background: var(--verde-cl); }
.compartir__btn.copiado { background: var(--verde); border-color: var(--verde); color: #fff; }

/* ---------- Recuerdos / in memoriam ---------- */
.recuerdos { list-style: none; margin: 0 0 1.8rem; padding: 0; display: grid; gap: 1rem; }
.recuerdo { background: var(--papel); border: 1px solid var(--borde-cl); border-left: 3px solid var(--salvia); border-radius: var(--radio-sm); padding: 1.1rem 1.3rem; box-shadow: var(--sombra-sm); }
.recuerdo__difunto { font-family: var(--display); font-weight: 600; color: var(--verde-osc); margin: 0 0 .4rem; font-size: 1.08rem; }
.recuerdo__msg { margin: 0; border: 0; padding: 0; font-style: italic; color: var(--tinta-s); }
.recuerdo__meta { margin: .6rem 0 0; font-size: .82rem; color: var(--suave); }
.recuerdo-form summary { cursor: pointer; list-style: none; }
.recuerdo-form summary::-webkit-details-marker { display: none; }
.recuerdo-form[open] summary { opacity: .6; }

/* ---------- Prosa ---------- */
.prosa { max-width: 70ch; }
.prosa p { margin: 0 0 1.15rem; }
.prosa h2 { margin: 2.2rem 0 .9rem; }
.prosa h3 { margin: 1.7rem 0 .6rem; }
.prosa ul, .prosa ol { margin: 0 0 1.15rem; padding-left: 1.3rem; }
.prosa li { margin-bottom: .45rem; }
.prosa blockquote { margin: 1.5rem 0; padding: .6rem 0 .6rem 1.3rem; border-left: 3px solid var(--oro); color: var(--tinta-s); font-style: italic; }
.prosa a { text-decoration: underline; text-underline-offset: 2px; }

/* ---------- Artículos ---------- */
.art-card { background: var(--papel); border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra-sm); display: flex; flex-direction: column; transition: transform .35s var(--ease), box-shadow .35s; }
.art-card:hover { transform: translateY(-6px); box-shadow: var(--sombra); }
.art-card__img { aspect-ratio: 3/2; overflow: hidden; background: var(--verde-cl); }
.art-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.art-card:hover .art-card__img img { transform: scale(1.06); }
.art-card__body { padding: 1.3rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .55rem; }
.art-card .fecha { color: var(--suave); font-size: .82rem; font-weight: 500; }
.art-card h3 a { color: var(--tinta); }
.art-card h3 a:hover { color: var(--verde-osc); }
.art-card p { margin: 0; color: var(--tinta-s); font-size: .96rem; }
.articulo-hero { position: relative; color: #fff; overflow: hidden; isolation: isolate; }
.articulo-hero__bg { position: absolute; inset: 0; z-index: -2; background-size: cover; background-position: center; transform: scale(1.08); animation: kenburns 20s ease-out forwards; }
.articulo-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(20,38,30,.5), rgba(20,38,30,.86)); }
.articulo-hero .contenedor { padding-block: clamp(2.6rem, 7vw, 4.5rem); max-width: 820px; text-align: center; }
.articulo-hero h1 { color: #fff; }
.articulo-hero .fecha { color: #d6e2db; margin-bottom: .6rem; display: block; }
.articulo-cuerpo { max-width: 740px; margin-inline: auto; padding-block: 3rem; }

/* ---------- Paginación ---------- */
.paginacion { display: flex; gap: .4rem; justify-content: center; margin-top: 2.6rem; flex-wrap: wrap; }
.paginacion a, .paginacion span { min-width: 44px; text-align: center; padding: .6rem .75rem; border: 1px solid var(--borde); border-radius: var(--radio-sm); color: var(--tinta-s); background: var(--papel); font-variant-numeric: tabular-nums; transition: all .2s; }
.paginacion a:hover { border-color: var(--verde); color: var(--verde); transform: translateY(-2px); }
.paginacion .actual { background: var(--verde); color: #fff; border-color: var(--verde); }
.paginacion .puntos { border: 0; background: none; }

/* ---------- Pie ---------- */
.pie { background: #14201a; color: #aebcb2; }
.pie a { color: #dde7e0; }
.pie a:hover { color: #fff; }
.pie-grid { display: grid; grid-template-columns: 1.8fr 1fr 1fr; gap: 2.5rem; padding-block: 3.5rem 2.5rem; }
.pie h4 { color: #fff; font-size: 1rem; margin-bottom: 1rem; }
.pie ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; font-size: .95rem; }
.pie .logo { color: #fff; margin-bottom: .8rem; }
.pie .logo b { color: var(--salvia); }
.pie p { font-size: .93rem; color: #8b998f; max-width: 42ch; }
.pie-legal { border-top: 1px solid #28372f; padding-block: 1.3rem; display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; font-size: .85rem; color: #8b998f; }
.pie-legal nav { display: flex; gap: 1.3rem; flex-wrap: wrap; }

/* ---------- Varios ---------- */
.pagina-cab { padding-block: 2.6rem 0; }
.conteo { color: var(--suave); }
.aviso { background: var(--verde-cl); border-radius: var(--radio); padding: 1.3rem 1.5rem; color: var(--verde-osc); }
.vacio { text-align: center; padding: 3.5rem 1rem; color: var(--suave); }
.indice-letras { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: 1rem; }

/* ============================================================
   DISEÑO v2 — más diseño + motion graphics
   ============================================================ */

/* Botón Buscar del menú: claramente visible (gana a .nav-principal > a) */
.nav-principal > a.boton, .nav-principal > a.boton:hover { color: #fff; }
.boton--buscar { background: linear-gradient(135deg, #3a7a62, #27493b); box-shadow: 0 8px 22px -8px rgba(29,74,58,.65); }
.boton--buscar:hover { background: linear-gradient(135deg, #2f6d57, #1d4a3a); }

/* Brillo que recorre los botones al pasar */
.boton::after { content: ""; position: absolute; top: 0; left: -120%; width: 60%; height: 100%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); transform: skewX(-18deg); transition: left .6s var(--ease); pointer-events: none; }
.boton:hover::after { left: 140%; }

/* Hero: enlaces secundarios + badge flotante + degradado animado */
.hero__links { margin-top: 1.5rem; display: flex; gap: .7rem; align-items: center; color: #cfdbd4; font-size: .98rem; opacity: 0; transform: translateY(26px); animation: heroIn .9s var(--ease) .46s forwards; }
.hero__links a { color: #fff; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(255,255,255,.4); }
.hero__links a:hover { text-decoration-color: #fff; }
.hero__badge { animation: heroIn .9s var(--ease) forwards, flota 5s ease-in-out 1s infinite; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(60% 50% at 15% 10%, rgba(205,154,78,.22), transparent 60%); mix-blend-mode: screen; pointer-events: none; animation: brilloHero 9s ease-in-out infinite alternate; }
@keyframes flota { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes brilloHero { to { transform: translate(8%, 6%) scale(1.15); opacity: .7; } }

/* Cabecera de sección centrada */
.seccion-cab--centro { justify-content: center; text-align: center; }
.seccion-cab--centro > div { max-width: 640px; }
.seccion-cab .et { position: relative; display: inline-block; }

/* Bloque "Qué encontrarás" */
.features { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.3rem; }
.feature { background: var(--papel); border: 1px solid var(--borde-cl); border-radius: var(--radio); padding: 1.8rem 1.6rem; box-shadow: var(--sombra-sm); position: relative; overflow: hidden; transition: transform .35s var(--ease), box-shadow .35s, border-color .3s; }
.feature::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: linear-gradient(90deg, var(--verde), var(--oro)); transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ease); }
.feature:hover { transform: translateY(-7px); box-shadow: var(--sombra); border-color: transparent; }
.feature:hover::before { transform: scaleX(1); }
.feature__ico { display: inline-flex; align-items: center; justify-content: center; width: 54px; height: 54px; border-radius: 16px; background: var(--verde-cl); color: var(--verde-osc); margin-bottom: 1.1rem; transition: transform .4s var(--ease), background .3s, color .3s; }
.feature:hover .feature__ico { transform: rotate(-6deg) scale(1.08); background: var(--verde); color: #fff; }
.feature h3 { font-size: 1.18rem; margin-bottom: .5rem; }
.feature p { color: var(--tinta-s); font-size: .97rem; margin: 0; }

/* Sección final con llamada a la acción */
.seccion--cta { background: linear-gradient(135deg, #1d3a2e, #142620); color: #e7efe9; padding-block: clamp(2.6rem, 6vw, 4.5rem); position: relative; overflow: hidden; }
.seccion--cta::before { content: ""; position: absolute; inset: 0; background: radial-gradient(50% 80% at 85% 20%, rgba(205,154,78,.16), transparent 60%); pointer-events: none; }
.cta-box { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 2.5rem; flex-wrap: wrap; }
.cta-box > div { flex: 1; min-width: 300px; }
.cta-box h2 { color: #fff; margin-bottom: .8rem; }
.cta-box p { color: #c3d2ca; max-width: 62ch; margin: 0; }
.cta-box .boton { flex: none; }

/* Barra de progreso de lectura (arriba del todo) */
.progreso { position: fixed; top: 0; left: 0; height: 3px; width: 0; z-index: 200; background: linear-gradient(90deg, var(--verde), var(--oro)); box-shadow: 0 0 10px rgba(205,154,78,.4); transition: width .08s linear; }

/* ---------- Revelado al hacer scroll ---------- */
.reveal { opacity: 0; transform: translateY(32px) scale(.985); transition: opacity .8s var(--ease), transform .8s var(--ease); will-change: opacity, transform; }
.reveal.visible { opacity: 1; transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  .ficha-grid { grid-template-columns: 1fr; }
  .ficha-grid .ficha-aside { position: static; }
  .pie-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 680px) {
  body { font-size: 16px; }
  .stats { grid-template-columns: 1fr; gap: 2rem; }
  .nav-principal { position: fixed; inset: 74px 0 auto 0; background: #fff; flex-direction: column; align-items: stretch; gap: 0; padding: .5rem 22px 1.2rem; box-shadow: var(--sombra); display: none; }
  .nav-principal.abierto { display: flex; }
  .nav-principal > a { padding: .9rem 0; border-bottom: 1px solid var(--borde-cl); }
  .nav-principal .boton { margin-top: .8rem; }
  .nav-drop { display: block; width: 100%; }
  .nav-drop__btn { width: 100%; justify-content: space-between; padding: .9rem 0; border-bottom: 1px solid var(--borde-cl); font-size: 1rem; color: var(--tinta-s); }
  .nav-panel { position: static; transform: none !important; width: auto; max-width: none; box-shadow: none; border: 0; padding: .4rem 0 .6rem; display: none; opacity: 1; visibility: visible; }
  .nav-panel::before { display: none; }
  .nav-drop.abierto .nav-panel { display: block; }
  .nav-panel__grid { columns: 2; }
  .nav-toggle { display: inline-flex; margin-left: auto; background: none; border: 1px solid var(--borde); border-radius: var(--radio-sm); padding: .5rem .6rem; cursor: pointer; }
  .datos-lista li { grid-template-columns: 1fr; gap: .2rem; }
  .pie-grid { grid-template-columns: 1fr; gap: 1.6rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .hero__bg, .ficha-hero__bg, .articulo-hero__bg { transform: none; }
  .reveal { opacity: 1; transform: none; }
}

/* --- Vela virtual (ficha) --- */
.vela-box { display: flex; align-items: center; gap: 1.3rem; padding: 1.1rem 1.4rem; border: 1px solid var(--borde); border-radius: 16px; background: linear-gradient(180deg, #fffdf7, #f7f2e6); margin-bottom: 1.9rem; }
.vela { position: relative; width: 48px; height: 82px; border: 0; background: none; cursor: pointer; flex: none; padding: 0; }
.vela__cuerpo { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 26px; height: 50px; border-radius: 6px 6px 5px 5px; background: linear-gradient(90deg, #e4d8bf, #fff8ea 45%, #ddd0b4); box-shadow: inset -3px 0 5px rgba(0,0,0,.08); }
.vela__pabilo { position: absolute; left: 50%; bottom: 50px; transform: translateX(-50%); width: 2px; height: 8px; background: #3a3330; }
.vela__llama { position: absolute; left: 50%; bottom: 57px; width: 16px; height: 27px; transform: translateX(-50%) scale(0); transform-origin: bottom center; border-radius: 50% 50% 50% 50% / 62% 62% 40% 40%; background: radial-gradient(ellipse at 50% 72%, #fff7cc 0%, #ffd34d 34%, #ff8a1e 70%, rgba(255,120,0,0) 100%); transition: transform .35s var(--ease); }
.vela:not(.is-on):hover .vela__llama { transform: translateX(-50%) scale(.55); opacity: .5; }
.vela.is-on .vela__llama { animation: vela-flicker 1.4s infinite alternate ease-in-out; }
.vela.is-on { filter: drop-shadow(0 0 15px rgba(255,170,40,.55)); }
@keyframes vela-flicker {
  0%   { transform: translateX(-50%) scale(1) rotate(-1.5deg); opacity: 1; }
  50%  { transform: translateX(-52%) scale(1.07) rotate(1.5deg); opacity: .9; }
  100% { transform: translateX(-48%) scale(.96) rotate(-1deg); opacity: 1; }
}
.vela-info strong { display: block; font-family: var(--display); font-size: 1.1rem; color: var(--tinta); }
.vela-info p { margin: .25rem 0 0; color: var(--suave); font-size: .9rem; line-height: 1.45; }
#vela-n { color: var(--oro); font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .vela.is-on .vela__llama { animation: none; } }

/* --- Fondo tenue en movimiento en los bloques oscuros --- */
.seccion--oscura, .seccion--cta, .pie { position: relative; overflow: hidden; }
.seccion--oscura > *, .seccion--cta > *, .pie > * { position: relative; z-index: 1; }
.seccion--oscura::after, .seccion--cta::after, .pie::after {
  content: ""; position: absolute; inset: -12%; z-index: 0; pointer-events: none;
  background-size: cover; background-position: center;
  opacity: .07; filter: grayscale(.35);
  animation: fondo-deriva 48s ease-in-out infinite alternate;
}
.seccion--oscura::after { background-image: url('../fotos/85.jpg'); }
.seccion--cta::after    { background-image: url('../fotos/93.jpg'); animation-duration: 56s; }
.pie::after             { background-image: url('../fotos/67.jpg'); animation-duration: 64s; opacity: .05; }
@keyframes fondo-deriva {
  from { transform: scale(1.06) translate3d(-2%, -1%, 0); }
  to   { transform: scale(1.14) translate3d(2%, 1.5%, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .seccion--oscura::after, .seccion--cta::after, .pie::after { animation: none; }
}

/* --- Guía de trámites + checklist --- */
.guia-grid { display: grid; grid-template-columns: 1fr 340px; gap: 3rem; align-items: start; padding-block: 2.4rem 3.6rem; }
.guia-aside { position: sticky; top: 90px; }
.checklist { border: 1px solid var(--borde); border-radius: 18px; padding: 1.4rem; background: var(--papel); box-shadow: var(--sombra-sm); }
.checklist h2 { font-size: 1.15rem; margin: 0 0 1rem; }
.checklist-prog { height: 8px; border-radius: 99px; background: var(--verde-cl); overflow: hidden; margin-bottom: .5rem; }
.checklist-prog__bar { height: 100%; width: 0; background: linear-gradient(90deg, var(--verde), var(--oro)); transition: width .4s var(--ease); }
.checklist-cont { font-size: .85rem; color: var(--suave); margin: 0 0 1rem; }
.checklist ul { list-style: none; margin: 0 0 1.2rem; padding: 0; display: grid; gap: .1rem; }
.checklist li label { display: flex; gap: .6rem; align-items: flex-start; padding: .5rem .4rem; border-radius: 8px; cursor: pointer; font-size: .92rem; line-height: 1.35; transition: background .15s; }
.checklist li label:hover { background: var(--verde-cl); }
.checklist input { margin-top: .2rem; width: 17px; height: 17px; accent-color: var(--verde); flex: none; }
.checklist input:checked + span { color: var(--suave); text-decoration: line-through; }
.guia-cta { margin-top: 2.6rem; border: 1px solid var(--borde); border-radius: 18px; padding: 1.6rem 1.6rem 1.3rem; background: linear-gradient(135deg, var(--verde-cl), #fff); }
.guia-cta__row { display: grid; gap: .6rem; margin-bottom: .3rem; }
@media (max-width: 900px) {
  .guia-grid { grid-template-columns: 1fr; gap: 1.6rem; }
  .guia-aside { position: static; order: -1; }
}

/* --- Memoriales --- */
.memorial-hero { background: linear-gradient(160deg, #1d3a2e, #142620); color: #e7efe9; padding-block: clamp(2.2rem, 5vw, 3.6rem); position: relative; overflow: hidden; }
.memorial-hero::after { content: ""; position: absolute; inset: -12%; z-index: 0; background: url('../fotos/51.jpg') center/cover; opacity: .06; filter: grayscale(.4); animation: fondo-deriva 52s ease-in-out infinite alternate; }
.memorial-hero__inner { display: flex; gap: 2rem; align-items: center; flex-wrap: wrap; position: relative; z-index: 1; }
.memorial-foto { width: 150px; height: 150px; border-radius: 50%; overflow: hidden; flex: none; border: 4px solid rgba(255,255,255,.15); background: #2a4a3c; box-shadow: 0 12px 34px rgba(0,0,0,.32); }
.memorial-foto img { width: 100%; height: 100%; object-fit: cover; }
.memorial-foto--vacia { display: flex; align-items: center; justify-content: center; }
.memorial-foto--vacia span { font-family: var(--display); font-size: 3.6rem; color: #cbd8d0; }
.memorial-et { font-size: .8rem; letter-spacing: .03em; color: var(--salvia); font-weight: 700; }
.memorial-datos h1 { color: #fff; margin: .3rem 0 .4rem; }
.memorial-fechas { font-size: 1.15rem; color: #cbd8d0; margin: 0 0 .5rem; }
.memorial-epitafio { font-family: var(--display); font-style: italic; font-size: 1.25rem; color: #fff; max-width: 52ch; margin: .2rem 0; }
.memorial-cem { color: #aebcb2; font-size: .95rem; margin-top: .6rem; }
.memorial-cem a { color: #dde7e0; }
.memorial-cuerpo { max-width: 760px; padding-block: 2.4rem 3rem; }
.memorial-bio { margin-bottom: 1.6rem; }
.memorial-condolencias { border-top: 1px solid var(--borde-cl); margin-top: 2rem; padding-top: 2rem; }
.memorial-sub { color: var(--suave); margin-bottom: 1.3rem; }
.memorial-card .cem-card__img { position: relative; }
.memorial-card__ini { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--display); font-size: 3rem; color: var(--verde); background: linear-gradient(160deg, var(--verde-cl), #dce8e1); }
@media (max-width: 600px) { .memorial-foto { width: 112px; height: 112px; } .memorial-foto--vacia span { font-size: 2.8rem; } }

/* --- QR del memorial --- */
.memorial-qr { border-top: 1px solid var(--borde-cl); margin-top: 2rem; padding-top: 2rem; }
.qr-wrap { display: flex; gap: 1.6rem; align-items: center; flex-wrap: wrap; }
.qr-box { background: #fff; padding: 12px; border: 1px solid var(--borde); border-radius: 12px; width: max-content; line-height: 0; }
.qr-acciones { flex: 1; min-width: 240px; }

/* --- Funerarias (en ficha) --- */
.ficha-funerarias { border: 1px solid var(--borde); border-radius: 16px; padding: 1.1rem 1.1rem 1rem; background: var(--crema, #faf8f3); }
.ficha-funerarias h2 { font-size: 1.05rem; margin: 0 0 .3rem; }
.ficha-funerarias__sub { font-size: .84rem; color: var(--suave); margin: 0 0 .9rem; }
.fun-card { display: block; padding: .7rem .85rem; border: 1px solid var(--borde-cl); border-radius: 12px; text-decoration: none; color: inherit; margin-bottom: .55rem; background: #fff; transition: border-color .18s, transform .18s, box-shadow .18s; }
.fun-card:hover { border-color: var(--verde); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(29,74,58,.1); }
.fun-card strong { display: block; font-size: .95rem; }
.fun-card small { color: var(--suave); font-size: .82rem; }
.fun-card.destacada { border-color: var(--oro); box-shadow: 0 2px 10px rgba(205,154,78,.15); }
.fun-anunciate { font-size: .82rem; color: var(--suave); margin: .3rem 0 0; }

/* --- Velas: fila de velitas que crece + pop --- */
.vela-fila { display: flex; flex-wrap: wrap; gap: 2px; margin: .5rem 0 .3rem; min-height: 22px; }
.mini-vela { font-size: 1.05rem; line-height: 1; }
.mini-vela.nueva { animation: vela-aparece .42s ease; }
@keyframes vela-aparece { from { transform: scale(0) translateY(6px); opacity: 0; } to { transform: none; opacity: 1; } }
.mini-mas { font-size: .82rem; color: var(--suave); align-self: center; margin-left: 5px; font-weight: 600; }
.vela-cont { font-size: .9rem; color: var(--suave); margin: .1rem 0 0; }
.vela.vela-pop { animation: vela-pop .26s ease; }
@keyframes vela-pop { 0% { transform: scale(1); } 40% { transform: scale(1.18); } 100% { transform: scale(1); } }

/* --- Frases para recordatorios --- */
.frases-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.frase-item { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: .75rem 1rem; border: 1px solid var(--borde-cl); border-radius: 12px; background: var(--papel); }
.frase-txt { font-family: var(--display); font-style: italic; color: var(--tinta-s); }
.frase-usar { flex: none; color: var(--verde); font-weight: 700; text-decoration: none; font-size: .88rem; white-space: nowrap; }
.frase-usar:hover { text-decoration: underline; }

/* ---------- Anuncios: raíles laterales + bajo el mapa + cargador scroll ---------- */
.rail { position: fixed; top: 110px; width: 160px; z-index: 30; display: none; }
.rail--izq { left: 14px; }
.rail--der { right: 14px; }
.rail__in { position: sticky; top: 110px; }
.rail .anuncio { margin: 0; }
.anuncio--lateral ins { display: block; width: 160px; min-height: 600px; }
/* Solo cuando hay sitio de sobra a los lados, para no tapar el contenido */
@media (min-width: 1500px) { .rail { display: block; } }
.anuncio--bajomapa { margin-top: 1rem; position: sticky; top: 86px; }
.cem-cargando { text-align: center; color: var(--suave); padding: 1.4rem 0; font-size: .95rem; }

/* --- Migas dentro del hero (sobre imagen oscura) --- */
.migas--hero { padding: 0; margin: 0 0 .9rem; font-size: .82rem; position: relative; z-index: 2; }
.migas--hero ol { gap: .4rem; }
.migas--hero, .migas--hero a { color: rgba(255,255,255,.82); }
.migas--hero a { text-decoration: none; }
.migas--hero a:hover { color: #fff; text-decoration: underline; }
.migas--hero li::after { color: rgba(255,255,255,.5); }

/* --- Anuncios laterales (fijos, solo desktop ancho) + bajo mapa --- */
.anuncio--lateral { position: fixed; top: 110px; width: 160px; z-index: 20; display: none; margin: 0; }
.anuncio--lateral.izq { left: 14px; }
.anuncio--lateral.der { right: 14px; }
@media (min-width: 1500px) { .anuncio--lateral { display: block; } }
.anuncio--aside { margin: 1rem 0 0; }
.anuncio--aside ins { min-height: 250px; }
