/* =====================================================================
   AniYHWH — estilos (interfaz propia estilo MMORPG)
   Paleta: noche (fondo), acero (paneles), pluma (texto), ala (rojo),
   halo (oro), bruma (texto secundario)
   ===================================================================== */
:root {
  --noche: #120e1f;
  --noche-2: #1b1530;
  --acero: #2c2738;
  --acero-2: #16121f;
  --pluma: #ece6f5;
  --ala: #c22a3c;
  --halo: #e3b04b;
  --bruma: #a49bbd;
  --oro-claro: #f7dd92;
  --oro-oscuro: #5a3a0c;
  --borde-oro: linear-gradient(140deg, var(--oro-claro), color-mix(in srgb, var(--halo) 60%, var(--oro-oscuro)) 22%, var(--oro-oscuro) 45%, var(--halo) 62%, color-mix(in srgb, var(--oro-oscuro) 80%, var(--halo)) 82%, color-mix(in srgb, var(--oro-claro) 85%, var(--halo)));
  --fuente-titulo: "Grenze Gotisch", "Palatino Linotype", serif;
  --fuente-marca: var(--fuente-titulo);
  --fuente-texto: "Alegreya Sans", "Segoe UI", sans-serif;
  /* título AniYHWH */
  --marca-tam: 1;
  --marca-color: var(--pluma);
  --marca-brillo: color-mix(in srgb, var(--ala) 35%, transparent);
  /* ángel de fondo */
  --angel-img: url("../img/angel.webp");
  --angel-op: .42;
  --angel-ancho: 118vw;
  --angel-y: 41%;
  --angel-ancho-cel: 170vw;
  --angel-y-cel: 24%;
  --angel-brillo: color-mix(in srgb, var(--ala) 35%, transparent);
  --angel-op-secciones: 0;
  /* marco de los paneles */
  --esq-img: url("../img/esquina.svg");
  --esq-escala: 1;
  --marco-grosor: 3px;
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
  background: var(--noche);
  color: var(--pluma);
  font-family: var(--fuente-texto);
  font-size: 18px;
  line-height: 1.5;
  overflow: hidden;
  -webkit-tap-highlight-color: transparent;
}
body.con-cursor, body.con-cursor button, body.con-cursor a { cursor: none; }
button { font: inherit; color: inherit; }
a { color: var(--halo); }
:focus-visible { outline: 2px solid var(--halo); outline-offset: 5px; }

/* ---------- capas fijas ---------- */
#cielo, #escena3d { position: fixed; inset: 0; width: 100vw; height: 100vh; display: block; }
#cielo { z-index: 0; }
#escena3d { z-index: 30; pointer-events: none; }

/* ángel AniYHWH de fondo (la imagen que identifica a la marca) */
#angel {
  position: fixed; z-index: 1; left: 50%; top: var(--angel-y);
  width: min(var(--angel-ancho), 2200px); height: 100vh;
  transform: translate(-50%, -50%);
  background: var(--angel-img) center / contain no-repeat;
  opacity: var(--angel-op); pointer-events: none;
  filter: drop-shadow(0 0 38px var(--angel-brillo));
  animation: angel-flota 8s ease-in-out infinite;
}
body.angel-quieto #angel, body.angel-quieto .vista-angel { animation: none; }
body.sin-angel #angel, body.sin-angel .vista-angel { display: none; }
.vista-angel {
  position: absolute; left: 50%; top: 45%; width: min(var(--angel-ancho), 2200px); height: 100vh;
  transform: translate(-50%, -50%); pointer-events: none;
  background: var(--angel-img) center / contain no-repeat; opacity: var(--angel-op-secciones);
}
@keyframes angel-flota {
  0%, 100% { transform: translate(-50%, -50%); }
  50%      { transform: translate(-50%, calc(-50% - 12px)); }
}
@media (max-width: 700px) { #angel { width: var(--angel-ancho-cel); top: var(--angel-y-cel); } }

#cursor {
  position: fixed; left: 0; top: 0; z-index: 60; pointer-events: none;
  width: 26px; height: 10px; margin: -5px 0 0 -13px;
  border: 2px solid var(--halo); border-radius: 50%;
  box-shadow: 0 0 10px color-mix(in srgb, var(--halo) 70%, transparent);
  opacity: 0; transition: opacity .2s, width .15s, margin .15s;
}
body.con-cursor.cursor-visto #cursor { opacity: 1; }
#cursor.sobre { width: 38px; margin-left: -19px; }

#aviso {
  position: fixed; left: 50%; top: 14px; transform: translateX(-50%);
  z-index: 70; margin: 0; padding: 6px 14px; border-radius: 6px;
  background: rgba(18, 14, 31, .9); border: 1px solid color-mix(in srgb, var(--halo) 40%, transparent);
  color: var(--bruma); font-size: 14px;
  pointer-events: none; max-width: calc(100vw - 32px); text-align: center;
}
#aviso:empty { display: none; }

/* =====================================================================
   PANEL: marco metálico con borde dorado y gemas en las esquinas
   ===================================================================== */
.panel {
  position: relative;
  border: var(--marco-grosor) solid transparent;
  background:
    url("../img/ruido.svg") padding-box,
    linear-gradient(180deg, var(--acero), var(--acero-2)) padding-box,
    var(--borde-oro) border-box;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, .85),
    inset 0 0 0 3px color-mix(in srgb, var(--halo) 16%, transparent),
    inset 0 2px 18px rgba(0, 0, 0, .6),
    0 18px 40px rgba(0, 0, 0, .5);
  border-radius: 6px;
}
.esq {
  position: absolute; z-index: 5; pointer-events: none;
  width: calc(var(--esq, 34px) * var(--esq-escala)); height: calc(var(--esq, 34px) * var(--esq-escala));
  background: var(--esq-img) no-repeat center / contain;
  filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .7));
}
.esq.e1 { top: calc(var(--esq, 34px) * var(--esq-escala) * -.27); left: calc(var(--esq, 34px) * var(--esq-escala) * -.27); }
.esq.e2 { top: calc(var(--esq, 34px) * var(--esq-escala) * -.27); right: calc(var(--esq, 34px) * var(--esq-escala) * -.27); transform: scaleX(-1); }
.esq.e3 { bottom: calc(var(--esq, 34px) * var(--esq-escala) * -.27); left: calc(var(--esq, 34px) * var(--esq-escala) * -.27); transform: scaleY(-1); }
.esq.e4 { bottom: calc(var(--esq, 34px) * var(--esq-escala) * -.27); right: calc(var(--esq, 34px) * var(--esq-escala) * -.27); transform: scale(-1, -1); }
body.sin-esquinas .esq { display: none; }
/* marco con imagen propia (PNG de 9 partes: esquinas, bordes y centro) */
body.marco-imagen .panel {
  border-style: solid; border-width: var(--marco-ancho, 24px);
  border-image: var(--marco-img) var(--marco-corte, 30) var(--marco-relleno, ) / var(--marco-ancho, 24px) var(--marco-repetir, stretch);
}

/* placa grabada (títulos) */
.placa {
  display: block; position: relative; z-index: 2;
  padding: 5px 10px 6px; text-align: center;
  border: 2px solid transparent; border-radius: 4px;
  background: linear-gradient(180deg, #3b3149, #1c1727) padding-box, var(--borde-oro) border-box;
  box-shadow: 0 6px 14px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .08);
}

/* botón metálico */
.boton-metal {
  border: 2px solid transparent; border-radius: 6px;
  background: linear-gradient(180deg, #423955, #211b2e) padding-box, var(--borde-oro) border-box;
  box-shadow: 0 4px 10px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .1);
  padding: 7px 18px; font-size: 16px; font-weight: 500;
  text-shadow: 0 1px 0 #000;
}
.boton-metal:hover { background: linear-gradient(180deg, #54476b, #2a2239) padding-box, var(--borde-oro) border-box; }
.boton-metal[aria-pressed="true"] {
  background: linear-gradient(180deg, #6a2232, #3a1019) padding-box, var(--borde-oro) border-box;
  box-shadow: 0 0 14px color-mix(in srgb, var(--ala) 55%, transparent), inset 0 1px 0 rgba(255, 255, 255, .12);
}

/* divisor con gema */
.divisor {
  display: block; position: relative; height: 16px; margin: 6px 0 26px;
  background: linear-gradient(90deg, transparent, var(--halo) 18%, #7f5014 50%, var(--halo) 82%, transparent) center / 100% 2px no-repeat;
}
.divisor::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 12px;
  transform: translate(-50%, -50%) rotate(45deg);
  background: radial-gradient(circle at 35% 35%, #ffc4cc, var(--ala) 45%, #43050f);
  border: 2px solid var(--halo); box-shadow: 0 0 10px color-mix(in srgb, var(--ala) 70%, transparent);
}

/* =====================================================================
   INICIO
   ===================================================================== */
#inicio {
  position: relative; z-index: 10; height: 100vh; height: 100dvh;
  display: grid; grid-template-rows: auto 1fr auto; justify-items: center;
  padding: clamp(24px, 6vh, 64px) 16px 112px;
  overflow-y: auto;
}
.marca { text-align: center; position: relative; }
.marca h1 {
  font-family: var(--fuente-titulo); font-weight: 700;
  font-size: calc(clamp(54px, min(10vw, 14vh), 128px) * var(--marca-tam)); line-height: .9; margin: 0;
  font-family: var(--fuente-marca);
  color: var(--marca-color);
  text-shadow: 0 0 24px var(--marca-brillo), 0 2px 0 rgba(0, 0, 0, .4);
}
body.sin-halo .marca::before { display: none; }
.marca::before { /* halo dorado: la firma del ángel */
  content: ""; position: absolute; left: 50%; top: -.1em;
  width: clamp(120px, 16vw, 210px); aspect-ratio: 4 / 1;
  transform: translate(-50%, -60%);
  border: 3px solid var(--halo); border-radius: 50%;
  box-shadow: 0 0 22px color-mix(in srgb, var(--halo) 55%, transparent), inset 0 0 12px color-mix(in srgb, var(--halo) 40%, transparent);
  font-size: clamp(54px, 10vw, 128px);
}
.marca p { margin: .6em 0 0; color: var(--bruma); font-size: clamp(16px, 2vw, 20px); text-shadow: 0 0 10px var(--noche), 0 0 4px var(--noche), 0 1px 2px #000; }

#ventanas {
  align-self: start; margin-top: clamp(10px, 3vh, 34px);
  display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-end;
  gap: clamp(18px, 2.6vw, 38px);
  width: min(1240px, 100%);
  padding-top: 30px;
}
.ventana {
  --esq: 34px;
  display: flex; flex-direction: column;
  width: clamp(150px, min(15vw, 22vh), 206px);
  padding: 9px 9px 14px; text-align: center;
  transition: transform .25s ease, box-shadow .25s ease;
}
.ventana:nth-child(2), .ventana:nth-child(4) { margin-bottom: 22px; }
.ventana:nth-child(3) { margin-bottom: 44px; }
.ventana:hover, .ventana:focus-visible {
  transform: translateY(-6px);
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, .85), inset 0 0 0 3px color-mix(in srgb, var(--halo) 16%, transparent),
    0 24px 50px rgba(0, 0, 0, .55), 0 0 28px color-mix(in srgb, var(--halo) 30%, transparent);
}
.retrato {
  position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden;
  border-radius: 3px; background: #0c0915;
  box-shadow: 0 0 0 1px #000, 0 0 0 2px color-mix(in srgb, var(--halo) 35%, transparent);
}
.retrato::after { /* bisel interior */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  box-shadow: inset 0 0 24px rgba(0, 0, 0, .85), inset 0 0 0 1px rgba(255, 255, 255, .06);
}
.ventana-fx { position: absolute; inset: 0; width: 100%; height: 100%; }
.ventana .placa { margin: -20px 6px 0; }
.ventana-titulo {
  display: block; font-family: var(--fuente-titulo); font-weight: 700;
  font-size: clamp(20px, 1.9vw, 25px); line-height: 1.05; color: var(--pluma);
  text-shadow: 0 2px 0 #000;
}
.ventana-desc { display: block; margin-top: 10px; font-size: 14px; line-height: 1.3; color: var(--bruma); }
.tecla {
  position: absolute; z-index: 3; top: 14px; left: 50%; transform: translateX(-50%);
  min-width: 24px; height: 24px; padding: 0 6px; line-height: 20px;
  font-size: 13px; font-weight: 700; color: var(--halo);
  border: 2px solid transparent; border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #3b3149, #120e1f) padding-box, var(--borde-oro) border-box;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .7);
}

/* golpe de espada */
.golpe { animation: temblor .32s linear; }
.golpe .retrato::before, .golpe .modelo-media::before {
  content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
  background:
    linear-gradient(118deg, transparent 46%, rgba(255, 246, 220, .95) 49%, color-mix(in srgb, var(--halo) 90%, transparent) 50%, transparent 54%),
    radial-gradient(circle at 50% 60%, rgba(255, 240, 210, .9), color-mix(in srgb, var(--halo) 35%, transparent) 40%, transparent 70%);
  animation: destello .45s ease-out forwards;
}
@keyframes temblor {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-6px, 3px) rotate(-1deg); }
  40% { transform: translate(5px, -2px) rotate(1deg); }
  60% { transform: translate(-3px, 2px); }
  80% { transform: translate(2px, -1px); }
}
@keyframes destello { from { opacity: 1; } to { opacity: 0; } }

.pista { margin: 0; font-size: 14px; color: var(--bruma); text-align: center; }

/* =====================================================================
   BARRA DE ATAJOS (teclas 1-9)
   ===================================================================== */
#hud {
  position: fixed; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 25;
  display: flex; gap: 8px; padding: 8px 12px;
  --esq: 26px;
}
.ranura {
  position: relative; width: 56px; height: 56px; padding: 0;
  border: 2px solid transparent; border-radius: 5px;
  background: radial-gradient(circle at 50% 40%, #2e2640, #0e0b16 75%) padding-box, var(--borde-oro) border-box;
  box-shadow: inset 0 0 12px rgba(0, 0, 0, .9), 0 3px 8px rgba(0, 0, 0, .5);
  display: grid; place-items: center;
}
.ranura svg { width: 30px; height: 30px; stroke: var(--halo); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
  filter: drop-shadow(0 0 4px color-mix(in srgb, var(--halo) 45%, transparent)); }
.ranura:hover, .ranura.activa {
  background: radial-gradient(circle at 50% 40%, #5a2433, #1a0b12 75%) padding-box, var(--borde-oro) border-box;
  box-shadow: inset 0 0 12px rgba(0, 0, 0, .9), 0 0 16px color-mix(in srgb, var(--ala) 55%, transparent);
}
.ranura .num {
  position: absolute; right: 3px; bottom: 0; font-size: 12px; font-weight: 700;
  color: var(--pluma); text-shadow: 0 0 3px #000, 0 0 2px #000;
}
.ranura::after { /* nombre al pasar el cursor */
  content: attr(data-titulo); position: absolute; bottom: calc(100% + 12px); left: 50%;
  transform: translateX(-50%); white-space: nowrap; pointer-events: none;
  padding: 3px 10px; font-size: 14px; border-radius: 4px;
  background: rgba(18, 14, 31, .95); border: 1px solid color-mix(in srgb, var(--halo) 50%, transparent);
  opacity: 0; transition: opacity .15s;
}
.ranura:hover::after, .ranura:focus-visible::after { opacity: 1; }

/* =====================================================================
   VISTA DE SECCIÓN
   ===================================================================== */
#vista {
  position: fixed; inset: 0; z-index: 20; background: var(--noche);
  clip-path: circle(0 at var(--ox, 50%) var(--oy, 50%));
  transition: clip-path .7s cubic-bezier(.7, 0, .2, 1);
}
#vista.abierta { clip-path: circle(150% at var(--ox, 50%) var(--oy, 50%)); }
.vista-fx { position: absolute; inset: 0; width: 100%; height: 100%; }
.vista-cuerpo {
  position: absolute; inset: 0; overflow-y: auto;
  padding: clamp(18px, 4vh, 40px) 16px 120px;
}
.vista-cabecera {
  max-width: 1100px; margin: 0 auto;
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
}
.vista-cabecera h2 {
  margin: 0; font-family: var(--fuente-titulo); font-weight: 700;
  font-size: clamp(40px, 6vw, 72px); line-height: 1; text-shadow: 0 3px 0 #000, 0 0 20px color-mix(in srgb, var(--ala) 35%, transparent);
}
#vista .divisor { max-width: 1100px; margin-left: auto; margin-right: auto; }
#vista-contenido { max-width: 1100px; margin: 0 auto; }
.texto-seccion { max-width: 62ch; font-size: 20px; padding: 24px 28px; --esq: 30px; white-space: pre-line; }
.intro-seccion { margin: 0 0 30px; }
.ficha-video iframe { width: 100%; height: 100%; border: 0; display: block; }
.ficha-enlace { margin-top: 14px; }
.modelo-media .yt { position: absolute; right: 8px; bottom: 8px; z-index: 2; width: 34px; height: 24px; border-radius: 6px;
  background: #e62117; box-shadow: 0 2px 6px rgba(0,0,0,.6); }
.modelo-media .yt::after { content: ""; position: absolute; left: 13px; top: 6px; border: 6px solid transparent; border-left: 10px solid #fff; border-right: 0; }

/* ---------- cuadrícula de modelos (ranuras de ítem) ---------- */
.filtros { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 26px; }
.rejilla {
  display: grid; gap: clamp(26px, 3vw, 42px);
  grid-template-columns: repeat(auto-fill, minmax(min(220px, 40vw), 1fr));
  padding: 14px;
}
.modelo {
  --esq: 28px;
  display: block; width: 100%; padding: 7px; text-align: left; z-index: 1;
  transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s;
}
.modelo-media {
  position: relative; display: block; aspect-ratio: 1; overflow: hidden; border-radius: 3px;
  background: #0c0915; box-shadow: 0 0 0 1px #000, 0 0 0 2px color-mix(in srgb, var(--halo) 30%, transparent);
}
.modelo-media img, .modelo-media video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
}
.modelo-media video { opacity: 0; transition: opacity .3s; }
.modelo.abierto .modelo-media video { opacity: 1; }
.modelo-pie { margin: -16px 6px 2px; display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.modelo-nombre { font-family: var(--fuente-titulo); font-size: 21px; line-height: 1.1; text-shadow: 0 2px 0 #000; }
.modelo-precio { color: var(--halo); font-weight: 700; font-size: 15px; white-space: nowrap; }
.modelo.abierto {
  transform: scale(1.14); z-index: 5;
  box-shadow:
    inset 0 0 0 1px rgba(0, 0, 0, .85),
    0 26px 60px rgba(0, 0, 0, .6), 0 0 36px color-mix(in srgb, var(--halo) 40%, transparent);
}

/* ---------- ficha de modelo ---------- */
#ficha {
  position: fixed; inset: 0; z-index: 40; display: grid; place-items: center;
  padding: 24px 16px; background: rgba(8, 6, 14, .8); backdrop-filter: blur(4px);
}
#ficha[hidden] { display: none; }
.ficha-caja {
  --esq: 52px;
  width: min(1000px, 100%); max-height: calc(100dvh - 48px);
  display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  animation: aparecer .35s ease-out;
}
.ficha-scroll { display: contents; }
@keyframes aparecer { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: none; } }
.ficha-video { margin: 12px; background: #0c0915; aspect-ratio: 1; border-radius: 3px; overflow: hidden;
  box-shadow: 0 0 0 1px #000, 0 0 0 2px color-mix(in srgb, var(--halo) 35%, transparent); }
.ficha-video video { width: 100%; height: 100%; object-fit: cover; display: block; }
.ficha-info { padding: 24px 28px 26px 16px; overflow-y: auto; max-height: calc(100dvh - 60px); }
.ficha-info h3 { font-family: var(--fuente-titulo); font-size: clamp(34px, 4vw, 48px); line-height: 1; margin: 0 0 8px; text-shadow: 0 3px 0 #000; }
.ficha-cat { margin: 0 0 6px; color: var(--bruma); font-size: 15px; }
.ficha-precio { margin: 0 0 14px; color: var(--halo); font-size: 22px; font-weight: 700; }
#ficha-incluye { padding-left: 20px; color: var(--bruma); }
.ficha-cerrar {
  position: absolute; top: 12px; right: 14px; z-index: 6;
  width: 40px; height: 40px; padding: 0; font-size: 24px; line-height: 1; border-radius: 50%;
}

/* ---------- pagos ---------- */
.pagos { display: grid; gap: 10px; margin-top: 18px; }
.boton-pago {
  --relleno: #333;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 8px 18px; border-radius: 6px;
  border: 2px solid transparent;
  background: linear-gradient(180deg, rgba(255,255,255,.18), rgba(0,0,0,.18)) padding-box,
              linear-gradient(var(--relleno), var(--relleno)) padding-box,
              var(--borde-oro) border-box;
  box-shadow: 0 4px 10px rgba(0, 0, 0, .45);
  font-weight: 700; font-size: 17px; text-decoration: none; color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.5);
}
.boton-pago:hover { filter: brightness(1.12); }
.pago-paypal { --relleno: #ffc439; color: #14213d; text-shadow: none; }
.pago-yape { --relleno: #742284; }
.pago-bcp { --relleno: #002a8d; }
.pago-wsp { --relleno: #1f7a4d; }
.pago-enlace { --relleno: #5a2433; }
.pago-comprar { --relleno: var(--halo); color: #1a1205; text-shadow: none; width: 100%; font-size: 19px; }
.compra { display: grid; gap: 10px; }
.pedido { display: grid; gap: 10px; padding: 14px 16px; border-radius: 6px; background: rgba(10, 8, 18, .75); border: 1px solid color-mix(in srgb, var(--halo) 35%, transparent); }
.pedido[hidden] { display: none; }
.pedido-intro { margin: 0; color: var(--bruma); font-size: 15px; }
.pedido-campo { display: grid; gap: 4px; font-size: 14px; color: var(--bruma); }
.pedido input, .pedido textarea { font: inherit; font-size: 16px; color: var(--pluma); background: #0c0915; border: 1px solid color-mix(in srgb, var(--halo) 35%, transparent); border-radius: 5px; padding: 8px 10px; cursor: text; }
.pedido textarea { resize: vertical; }
.pedido input:focus, .pedido textarea:focus { outline: none; border-color: var(--halo); box-shadow: 0 0 0 2px color-mix(in srgb, var(--halo) 30%, transparent); }
.pedido-trampa { position: absolute !important; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.pedido-enviar { justify-self: start; }
.pedido-estado { margin: 0; color: var(--bruma); font-size: 14px; min-height: 1em; }
.pedido-ok { margin: 0; color: #c8f0cf; font-size: 17px; font-weight: 700; }
.formas-pago > summary { cursor: pointer; color: var(--bruma); font-size: 15px; padding: 4px 0; }
.formas-pago .pagos { margin-top: 8px; }
.ficha-video video[hidden] { display: none; }
.pago-detalle {
  background: rgba(10, 8, 18, .75); border: 1px solid color-mix(in srgb, var(--halo) 30%, transparent);
  border-radius: 6px; padding: 14px 16px; font-size: 16px;
}
.pago-detalle[hidden] { display: none; }
.pago-detalle img { display: block; width: min(250px, 100%); margin: 0 auto 8px; border-radius: 8px; }
.pago-detalle dl { margin: 0; }
.pago-detalle dt { color: var(--bruma); font-size: 14px; margin-top: 8px; }
.pago-detalle dt:first-child { margin-top: 0; }
.pago-detalle dd { margin: 0; font-size: 18px; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.copiar { margin-left: 8px; padding: 1px 10px; font-size: 13px; vertical-align: 2px; }
.nota-pago { color: var(--bruma); font-size: 14px; margin: 4px 0 0; }

.contacto-rejilla {
  display: grid; gap: 30px; align-items: start;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}
.contacto-rejilla > .panel { padding: 20px 22px; --esq: 30px; }
.contacto-rejilla h3 { font-family: var(--fuente-titulo); font-size: 30px; margin: 0 0 12px; line-height: 1; text-shadow: 0 2px 0 #000; }

/* ---------- celular ---------- */
@media (max-width: 760px) {
  body { font-size: 17px; }
  #inicio { padding-bottom: 40px; }
  #ventanas { gap: 18px; }
  .ventana { width: calc(50% - 12px); max-width: 190px; --esq: 28px; }
  .ventana:nth-child(n) { margin-bottom: 0; }
  #hud { display: none; }
  #aviso { top: auto; bottom: 14px; }
  .ficha-caja { grid-template-columns: 1fr; overflow-y: auto; --esq: 36px; }
  .ficha-info { max-height: none; padding: 8px 18px 22px; }
  .modelo.abierto { transform: scale(1.05); }
}

@media (prefers-reduced-motion: reduce) {
  #angel { animation: none; }
  #vista { transition: none; }
  .ventana, .modelo { transition: none; }
  .golpe { animation: none; }
}
