/* Atelier · Pasaporte. Documentos de viaje: pasaporte de piel azul marino, pase de abordar de cartulina crema, sellos de tinta.
   Una sola luz desde arriba a la izquierda. El acabado protagonista es el relieve dorado de la tapa. */
.inv[data-theme="at-pasaporte"]{
  --at-papel:#F3ECDD; --at-fondo:#E9E1D0; --at-tinta:#1F2A3F; --at-tenue:#6C7282; --at-acento:#B3372B; --at-linea:rgba(31,42,63,.18);
  --at-fd:'Libre Caslon Text'; --at-ft:'Libre Caslon Text'; --mono:'Courier Prime';
  --marino:#1B2A47; --marino2:#111C33; --oro:#C8A961; --oro2:#8F7334; --crema:#F3ECDD; --tinta:#1F2A3F; --rojo:#B3372B;
  font-size:18px; line-height:1.6;
}
.pp{position:relative;padding:0 0 40px}
.pp .pp-k,.pp .pp-k2,.pp small,.pp .pp-ticket-h,.pp .pp-cal-d,.pp .pp-vh{font-family:var(--mono),monospace}

/* ---------- Apertura: pasaporte ---------- */
.pp-op{background:#0F1526;color:var(--crema);perspective:1400px}
.pp-mesa{position:absolute;inset:0;background:
  radial-gradient(80% 60% at 50% 30%,rgba(60,78,120,.45),transparent 70%),
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),
  linear-gradient(180deg,#141C33,#0B101E)}
.pp-arriba{position:absolute;top:max(44px,8vh);left:0;right:0;z-index:3;display:grid;gap:10px;justify-items:center;text-align:center;padding:0 24px}
.pp-op .at-para{font-family:var(--mono),monospace;letter-spacing:.3em;color:var(--oro);opacity:1}
.pp-pista{margin:0;font:italic 400 19px/1.2 'Libre Caslon Text',serif;color:rgba(243,236,221,.7)}
.pp-op .at-skip{color:var(--crema);font-family:var(--mono),monospace;box-shadow:inset 0 0 0 1px rgba(243,236,221,.3)}
.pp-libro{--w:min(62vw,250px);position:relative;z-index:2;width:var(--w);aspect-ratio:88/125;padding:0;border:0;background:none;cursor:pointer;transform-style:preserve-3d;
  transform:rotateX(14deg) rotateY(-6deg) translateY(2vh);transition:transform 1.6s cubic-bezier(.5,.05,.2,1)}
/* La sombra va en las caras, no como filtro del libro: un filtro aplanaría el preserve-3d de la tapa. */
.pp-libro:hover{transform:rotateX(12deg) rotateY(-10deg) translateY(2vh)}
.pp-libro>span{position:absolute;display:block}
.pp-interior{inset:0;border-radius:6px 10px 10px 6px;background:#D9D0BE;transform:translateZ(-1px);overflow:visible;box-shadow:0 40px 40px -10px rgba(0,0,0,.6)}
.pp-pagina{position:absolute;inset:3% 3% 3% 2%;border-radius:4px 8px 8px 4px;background:var(--crema);box-shadow:inset 0 0 0 1px rgba(31,42,63,.12),inset -8px 0 14px -10px rgba(0,0,0,.25);overflow:hidden;display:grid;align-content:start;justify-items:center;gap:8px;padding:12% 10% 0}
.pp-guill{position:absolute;inset:0;opacity:.35;background:
  repeating-radial-gradient(circle at 50% 50%,transparent 0 6px,rgba(31,42,63,.18) 6px 6.6px),
  repeating-radial-gradient(circle at 20% 80%,transparent 0 8px,rgba(179,55,43,.1) 8px 8.6px)}
.pp-visa{position:relative;width:52%;aspect-ratio:3/4;border-radius:3px;overflow:hidden;box-shadow:0 0 0 1px rgba(31,42,63,.2),0 2px 6px rgba(0,0,0,.2)}
.pp-visa img{width:100%;height:100%;object-fit:cover;filter:sepia(.22) contrast(1.02)}
.pp-pagina-t{position:relative;display:grid;gap:2px;text-align:center;color:var(--tinta)}
.pp-pagina-t b{font:400 clamp(11px,3vw,14px)/1.2 'Libre Caslon Text',serif;letter-spacing:.06em;text-transform:uppercase}
.pp-pagina-t small{font:400 8px/1.2 'Courier Prime',monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
/* Pase de abordar guardado en el pasaporte */
.pp-pase{position:absolute;left:8%;right:8%;top:14%;z-index:2;display:grid;gap:6px;padding:10px 12px 12px;border-radius:4px;background:var(--crema);color:var(--tinta);text-align:left;
  box-shadow:0 0 0 1px rgba(31,42,63,.15),0 10px 20px -10px rgba(0,0,0,.5);transform:translateY(46%);transform-origin:50% 100%;transition:transform 1.1s cubic-bezier(.5,.05,.2,1) 1.25s;overflow:hidden}
.pp-pase-h{display:flex;justify-content:space-between;align-items:center;font:400 8px/1 'Courier Prime',monospace;letter-spacing:.22em;text-transform:uppercase;color:var(--at-tenue);padding-bottom:6px;border-bottom:1px dashed rgba(31,42,63,.3)}
.pp-pase-h svg{width:14px;height:14px;color:var(--rojo)}
.pp-pase-n{display:block;font:400 clamp(14px,3.8vw,18px)/1.1 'Libre Caslon Text',serif;text-transform:uppercase;letter-spacing:.06em;padding:2px 0}
.pp-pase-n em{font-style:normal}.pp-pase-n i{font-style:italic;text-transform:none;margin:0 .25em;color:var(--rojo)}
.pp-pase-g{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}
.pp-pase-g span{display:grid}.pp-pase-g small{font:400 7px/1.3 'Courier Prime',monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--at-tenue)}
.pp-pase-g b{font:400 10px/1.3 'Courier Prime',monospace;letter-spacing:.04em}
.pp-barras{display:block;width:100%;height:18px;color:var(--tinta);opacity:.85}
.pp-admitido{position:absolute;right:8%;top:30%;display:grid;justify-items:center;padding:6px 10px;border:2px solid var(--rojo);border-radius:4px;color:var(--rojo);font:700 13px/1 'Courier Prime',monospace;letter-spacing:.2em;text-transform:uppercase;
  transform:rotate(-14deg) scale(2.4);opacity:0;mix-blend-mode:multiply;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='80' height='80'><filter id='r'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.6 -.25'/></filter><rect width='100%' height='100%' filter='url(%23r)'/></svg>");mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='80' height='80'><filter id='r'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.6 -.25'/></filter><rect width='100%' height='100%' filter='url(%23r)'/></svg>")}
.pp-admitido small{font-size:8px;letter-spacing:.12em;margin-top:3px}
/* Tapa de piel */
.pp-tapa{inset:0;transform-origin:0 50%;transform-style:preserve-3d;transition:transform 1.5s cubic-bezier(.6,.05,.2,1) .12s;z-index:3}
.pp-tapa-f,.pp-tapa-b{position:absolute;inset:0;border-radius:6px 10px 10px 6px;backface-visibility:hidden}
.pp-tapa-f{display:grid;align-content:start;justify-items:center;gap:6px;padding:16% 10% 10%;color:var(--oro);text-align:center;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='l'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .16 0'/></filter><rect width='100%' height='100%' filter='url(%23l)'/></svg>"),
    radial-gradient(120% 80% at 20% 0,rgba(255,255,255,.14),transparent 50%),linear-gradient(160deg,#243659,#172544 60%,#101B33);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),inset 0 0 0 8px rgba(0,0,0,.08),inset 0 0 0 9px rgba(200,169,97,.35),inset 0 0 0 10px rgba(0,0,0,.1),inset -3px 0 6px rgba(0,0,0,.35),0 14px 30px -8px rgba(0,0,0,.6)}
.pp-tapa-f::before{content:"";position:absolute;left:0;top:0;bottom:0;width:9%;background:linear-gradient(90deg,rgba(0,0,0,.35),rgba(255,255,255,.06) 40%,rgba(0,0,0,.25));border-radius:6px 0 0 6px}
.pp-tapa-b{transform:rotateY(180deg);background:linear-gradient(200deg,#D7CDB9,#C2B69E);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.pp-tapa-eb,.pp-tapa-t,.pp-tapa-n,.pp-tapa-a{position:relative;display:block;text-shadow:0 1px 0 rgba(255,255,255,.12),0 -1px 0 rgba(0,0,0,.5)}
.pp-tapa-eb{font:400 8px/1 'Courier Prime',monospace;letter-spacing:.32em;text-transform:uppercase;opacity:.9}
.pp-escudo{width:46%;height:auto;margin:6% 0 4%;color:var(--oro);filter:drop-shadow(0 1px 0 rgba(0,0,0,.5))}
.pp-tapa-t{font:400 clamp(16px,4.6vw,22px)/1 'Libre Caslon Text',serif;letter-spacing:.3em;text-transform:uppercase}
.pp-tapa-n{font:italic 400 clamp(11px,3vw,14px)/1.2 'Libre Caslon Text',serif;letter-spacing:.04em;opacity:.95;margin-top:2px}
.pp-tapa-a{font:400 9px/1 'Courier Prime',monospace;letter-spacing:.3em;margin-top:auto;opacity:.85}
/* Secuencia: la tapa se abre, el pase sale y crece, cae el sello, todo se acerca. */
.pp-op.is-opening .pp-tapa{transform:rotateY(-158deg)}
.pp-op.is-opening .pp-libro{transform:rotateX(4deg) rotateY(0) translateY(6vh) scale(1.08);transition-delay:.1s}
.pp-op.is-opening .pp-pase{transform:translateY(-14%) scale(1.42);box-shadow:0 0 0 1px rgba(31,42,63,.15),0 40px 50px -20px rgba(0,0,0,.7)}
.pp-op.is-opening .pp-admitido{animation:pp-sellar .5s cubic-bezier(.3,1.1,.5,1) 2.45s forwards}
.pp-op.is-opening .pp-pista,.pp-op.is-opening .at-para,.pp-op.is-opening .at-skip{opacity:0;transition:opacity .5s .4s}
.pp-op.is-opening::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:var(--at-fondo);opacity:0;animation:pp-fundido .7s ease-in 3.25s forwards}
@keyframes pp-sellar{0%{opacity:0;transform:rotate(-14deg) scale(2.4)}60%{opacity:.95;transform:rotate(-12deg) scale(.96)}100%{opacity:.92;transform:rotate(-12deg) scale(1)}}
@keyframes pp-fundido{to{opacity:1}}
@media (prefers-reduced-motion:reduce){.pp-op.is-opening .pp-admitido{animation:none;opacity:.92;transform:rotate(-12deg)}.pp-op.is-opening::after{animation:none}}

/* ---------- Página: un material por sección ----------
   El lino (pasaporte-lino-teja.jpg) es el muro base y corre con el contenido: dos capas de la misma teja espejada, desfasadas y multiplicadas.
   Encima, cada sección es un patio a todo lo ancho con su material del viaje: ventanilla de avión (foto), mesa de madera clara,
   página interior del pasaporte, mapa náutico, piel azul del pasaporte, kraft, y otra vez lino. Nada fijo al viewport.
   Soportes con imagen: papel en ::after, sombra en ::before con inset 8–12 %; nunca filter. */
.inv[data-theme="at-pasaporte"]{position:relative;background:#E4D9C4}
.inv[data-theme="at-pasaporte"]::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:
  radial-gradient(120% 600px at 22% 0,rgba(255,250,240,.32),transparent 60%),
  linear-gradient(rgba(238,230,214,.3),rgba(238,230,214,.3)),
  url(/img/texturas/pasaporte-lino-teja.jpg) calc(50% + 170px) 280px/min(140%,900px) auto repeat,
  url(/img/texturas/pasaporte-lino-teja.jpg) center top/min(180%,1150px) auto repeat #E4D9C4;background-blend-mode:normal,normal,multiply,normal}
.inv[data-theme="at-pasaporte"] .inv-main{position:relative;z-index:1}
.pp{background:none}

/* Patios */
.pp-patio{position:relative;isolation:isolate}
.pp-sec{position:relative;max-width:640px;margin:0 auto;padding:96px clamp(32px,10vw,56px);text-align:center}
.pp-ancho .pp-sec{max-width:940px}
.pp-breve .pp-sec{padding-top:52px;padding-bottom:52px}
.pp-h{text-align:center;margin:0 0 40px}
.pp-k{margin:0 0 12px;font-size:13px;line-height:1.6;letter-spacing:.24em;text-transform:uppercase;color:var(--at-tenue);text-wrap:balance}
.pp-k i{display:inline-block;width:18px;height:18px;margin-right:9px;vertical-align:-3px;color:var(--at-acento)}.pp-k svg{display:block;width:18px;height:18px}
.pp-k2{margin:0 0 8px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
.pp-k2 svg{width:15px;height:15px;color:var(--at-acento)}
.pp-t{margin:0;font:400 clamp(32px,8vw,46px)/1.1 var(--at-fd),serif;text-transform:uppercase;letter-spacing:.06em;text-wrap:balance}
.pp-intro{margin:0 auto;max-width:36ch;font-size:18px;line-height:1.6}
.pp-centro{margin:0 auto 30px;text-align:center}
.pp-nota{margin:16px 0 0;font-style:italic;color:var(--at-tenue);font-size:17px}
/* Dos patios de lino seguidos: los separa una ruta punteada con su escala. */
.pp-lino + .pp-lino .pp-sec::before{content:"";position:absolute;top:0;left:50%;width:120px;height:9px;transform:translateX(-50%);
  background:radial-gradient(circle,var(--at-acento) 0 3px,transparent 3.5px) 50% 50%/9px 9px no-repeat,radial-gradient(circle,rgba(31,42,63,.5) 1.1px,transparent 1.6px) 0 50%/8px 9px repeat-x}
/* Botón de piel con pespunte dorado */
.inv[data-theme="at-pasaporte"] .pp-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin-top:18px;padding:0 24px;border-radius:4px;color:#F3ECDD;text-decoration:none;
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(0,0,0,.14)),url(/img/texturas/pasaporte-piel.jpg) center/480px auto #1B2A47;
  font:400 13px/1 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;outline:1px dashed rgba(200,169,97,.55);outline-offset:-5px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 1px rgba(0,0,0,.25),0 10px 18px -10px rgba(20,25,40,.7);transition:transform .3s,box-shadow .3s}
.inv[data-theme="at-pasaporte"] .pp-btn:hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 2px 2px rgba(0,0,0,.2),0 14px 22px -10px rgba(20,25,40,.7)}
.inv[data-theme="at-pasaporte"] .pp-enlace{display:inline-block;padding:6px 0;border-bottom:1px solid rgba(179,55,43,.5);color:var(--at-acento);text-decoration:none;font:400 13px/1.2 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase}
.pp-perf{display:none}

/* ---------- Sello de tinta (raster como máscara, teñido con el rojo de la paleta) ---------- */
.pp-tinta{position:absolute;z-index:2;display:grid;place-items:center;width:112px;aspect-ratio:1;color:#A7302A;mix-blend-mode:multiply;transform:rotate(var(--rot,-12deg));pointer-events:none;container-type:inline-size}
.pp-tinta::before{content:"";position:absolute;inset:0;background:currentColor;opacity:.9;
  -webkit-mask:url(/img/texturas/pasaporte-sello.png) center/contain no-repeat;mask:url(/img/texturas/pasaporte-sello.png) center/contain no-repeat}
.pp-tinta-t{position:relative;display:grid;justify-items:center;gap:3cqw;width:50%;margin-top:6cqw;text-align:center;font-family:var(--mono),monospace;text-transform:uppercase;line-height:1;opacity:.88}
.pp-tinta-t b{font-weight:700;font-size:10cqw;line-height:1.05;letter-spacing:.04em}
.pp-tinta-t small{font-size:7cqw;letter-spacing:.18em;font-family:inherit}

/* ---------- Pase de abordar de la portada (raster) ----------
   pasaporte-pase.png (fuente; se sirve como .webp) mide 1024×1536: banda de filetes arriba (hasta ~150 px), filete doble a ~60 px de cada lado,
   perforación con muescas a 338 px del pie. Es un raster de líneas impresas sobre cartulina lisa: el centro solo se estira en alto. */
.pp-pase-s{position:relative;isolation:isolate;container-type:inline-size;width:min(100%,520px);margin:0 auto;display:flex;flex-direction:column;color:var(--tinta)}
.pp-pase-s::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;border:0 solid transparent;
  border-image:url(/img/texturas/pasaporte-pase.webp) 150 100 380 fill / 14.65cqw 9.77cqw 37.1cqw round}
.pp-pase-s::before{content:"";position:absolute;inset:14px 6cqw 10px;z-index:-2;pointer-events:none;border-radius:8px;
  box-shadow:0 26px 46px -8px rgba(48,36,18,.42),0 6px 14px rgba(48,36,18,.14)}
.pp-pase-c{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:17cqw 12cqw 5cqw}
.pp-pase-t{flex:none;height:33cqw;display:grid;align-content:center;justify-items:center;gap:2.4cqw;padding:5cqw 13cqw 8cqw}
.pp-pase-t .pp-barras{width:100%;height:8.5cqw;opacity:.78;color:var(--tinta)}
.pp-talon-l{margin:0;font:400 12.5px/1.35 var(--mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--at-tenue);text-align:center;max-width:100%}

/* Portada (lino): el pase a todo el alto del teléfono */
.pp-portada{padding:max(14px,2svh) 12px 64px;max-width:640px;margin:0 auto}
.pp-pase-portada{min-height:calc(100svh - max(28px,4svh));min-height:calc(100vh - 28px)}
@supports (height:100svh){.pp-pase-portada{min-height:calc(100svh - max(28px,4svh))}}
.pp-pase-portada .pp-pase-c{justify-content:space-between;gap:12px}
.pp-ticket-h{display:flex;justify-content:space-between;align-items:center;width:100%;padding-bottom:12px;border-bottom:1px dashed rgba(31,42,63,.35);font-size:13px;letter-spacing:.24em;text-transform:uppercase;color:var(--at-tenue)}
.pp-ticket-h svg{width:20px;height:20px;color:var(--at-acento)}
.pp-pase-k{margin:4px 0 0;font:400 13px/1 var(--mono),monospace;letter-spacing:.34em;text-transform:uppercase;color:var(--at-acento)}
.pp-nombres{margin:auto 0 0;font:400 min(10.6cqw,60px)/1 var(--at-fd),serif;text-transform:uppercase;letter-spacing:.05em;display:grid;gap:.14em;overflow-wrap:break-word}
.pp-nombres em{font:italic 400 .5em/1 var(--at-fd),serif;text-transform:none;color:var(--at-acento)}
.pp-fecha{margin:4px 0 auto;font:italic 400 clamp(18px,5.6cqw,23px)/1.42 var(--at-fd),serif;max-width:26ch;text-wrap:balance}
.pp-rutabox{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:6px 14px;width:100%;padding:6px 0 2px}
.pp-rutabox .pp-ruta{grid-column:1/-1;grid-row:1}
.pp-rutabox span{display:grid;gap:3px;text-align:left}.pp-rutabox span:last-child{text-align:right;justify-items:end}
.pp-rutabox small{font:400 12px/1.3 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
.pp-rutabox b{font:400 16px/1.2 var(--at-fd),serif;letter-spacing:.04em;text-transform:uppercase;max-width:15ch}
.pp-ruta{width:100%;height:30px;color:var(--at-acento)}
.pp-ticket-f{display:grid;grid-template-columns:1fr 1fr;gap:14px 10px;width:100%;padding:14px 0 0;border-top:1px dashed rgba(31,42,63,.35);text-align:left}
.pp-ticket-f span{display:grid;gap:4px}
.pp-ticket-f small{font:400 12px/1.2 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
.pp-ticket-f b{font:400 16px/1.2 var(--mono),monospace;letter-spacing:.02em;white-space:nowrap}
/* El sello cae sobre la perforación y el talón, sin tapar los datos del vuelo; el talón de la portada deja libre su lado derecho. */
.pp-tinta-portada{right:6cqw;bottom:-25cqw;width:28cqw;--rot:-14deg}
.pp-pase-portada .pp-pase-t{justify-items:start;padding-right:36cqw}
.pp-pase-portada .pp-talon-l{text-align:left}
/* Foto: postal de cartulina con el sello del destino */
.pp-foto{position:relative;width:min(100%,470px);margin:34px auto 6px;padding:3.4% 3.4% 11%;transform:rotate(-1.4deg);
  background:linear-gradient(rgba(250,246,238,.2),rgba(250,246,238,.2)),url(/img/texturas/pasaporte-cartulina.jpg) center/520px auto #F1EADB;
  box-shadow:0 0 0 1px rgba(31,42,63,.08),0 2px 3px rgba(48,36,18,.12),0 24px 40px -20px rgba(48,36,18,.55)}
.pp-foto-in{display:block;aspect-ratio:4/3;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(31,42,63,.18)}
.pp-foto-in img{width:100%;height:100%;object-fit:cover}
.pp-tinta-foto{right:-4%;bottom:-4%;width:min(34%,140px);--rot:-10deg}

/* ---------- Mensaje: ventanilla de avión al atardecer (fotografía de escena) ----------
   La ventanilla ocupa el tercio de arriba de la foto; la cita va en blanco roto sobre la penumbra de la cabina. */
.pp-ventanilla{min-height:min(100svh,880px);display:grid;align-items:end;color:#F4EDE1;background:url(/img/texturas/pasaporte-ventanilla.jpg) 50% 0/cover #231A14}
.pp-ventanilla::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(20,14,10,.35),rgba(20,14,10,0) 14%,rgba(20,14,10,0) 46%,rgba(20,14,10,.55) 66%,rgba(20,14,10,.82))}
.pp-ventanilla .pp-sec{padding-top:min(62svh,560px);padding-bottom:80px}
.pp-ventanilla blockquote{margin:0}
.pp-ventanilla blockquote p{margin:0;font:italic 400 clamp(25px,6.6vw,34px)/1.38 var(--at-fd),serif;color:#FBF5EA;text-wrap:balance;text-shadow:0 2px 22px rgba(0,0,0,.5)}
.pp-ventanilla cite{display:block;margin-top:18px;font:400 13px/1.3 var(--mono),monospace;font-style:normal;letter-spacing:.22em;text-transform:uppercase;color:rgba(244,237,225,.8)}
.pp-ventanilla .pp-intro{margin-top:26px;color:rgba(251,245,234,.9);text-shadow:0 1px 14px rgba(0,0,0,.45)}
.pp-firma{margin:26px 0 0;font:italic 400 21px/1.2 var(--at-fd),serif;color:#E8C98A}
/* En escritorio la foto no se amplía a lo ancho: se muestra a su alto y los lados se funden con la penumbra de la cabina. */
@media (min-width:760px){
  .pp-ventanilla{background-size:auto 100%;background-position:50% 0}
  .pp-ventanilla::before{background:
    linear-gradient(90deg,#231A14 calc(50% - min(100svh,880px) * .34),rgba(35,26,20,0) calc(50% - min(100svh,880px) * .2),rgba(35,26,20,0) calc(50% + min(100svh,880px) * .2),#231A14 calc(50% + min(100svh,880px) * .34)),
    linear-gradient(180deg,rgba(20,14,10,.35),rgba(20,14,10,0) 14%,rgba(20,14,10,0) 46%,rgba(20,14,10,.55) 66%,rgba(20,14,10,.82))}
}

/* ---------- Cuenta: etiqueta de equipaje (PNG con ojal y cordel) sobre mesa de madera clara ---------- */
.pp-madera{background:url(/img/texturas/pasaporte-madera-teja.jpg) center top/900px auto repeat,#E4D2B4;background-blend-mode:multiply}
.pp-madera::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(70% 520px at 50% 35%,rgba(255,248,236,.18),transparent 70%),linear-gradient(180deg,rgba(70,48,24,.22),rgba(70,48,24,0) 16%,rgba(70,48,24,0) 84%,rgba(70,48,24,.22))}
.pp-madera .pp-sec{padding:64px max(6vw,20px) 80px}
/* La etiqueta (582×1200): cartulina de x 3 % a 97 %, de y 13 % al pie; el ojal termina en y 26 %. */
.pp-etq{position:relative;isolation:isolate;width:min(82vw,340px);aspect-ratio:582/1200;margin:0 auto;padding:58% 13% 16%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--tinta);rotate:-2.2deg}
.pp-etq::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:url(/img/texturas/pasaporte-etiqueta.webp) center/100% 100% no-repeat}
.pp-etq::before{content:"";position:absolute;inset:18% 9% 3%;z-index:-2;pointer-events:none;border-radius:8px;box-shadow:14px 26px 40px -6px rgba(60,40,18,.5),3px 6px 12px rgba(60,40,18,.22)}
.pp-etq-k{margin:0;padding-bottom:12px;width:100%;border-bottom:1px solid rgba(31,42,63,.28);font:400 12.5px/1.4 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
.pp-etq-t{margin:22px 0 0;font:italic 400 clamp(30px,8.4vw,38px)/1 var(--at-fd),serif;color:var(--at-acento)}
.pp-cd{display:flex;justify-content:center;gap:clamp(14px,4.4vw,22px);padding:16px 0 12px}
.pp-cd .cdu{display:grid;justify-items:center;gap:6px}
.pp-cd b{font:400 clamp(40px,11vw,52px)/1 var(--at-fd),serif;font-variant-numeric:lining-nums tabular-nums}
.pp-cd small{font:400 12px/1 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--at-tenue)}
.pp-etq-f{margin:6px 0 0;padding-top:14px;width:100%;border-top:1px dashed rgba(31,42,63,.32);font:400 16px/1.3 var(--mono),monospace;letter-spacing:.06em;white-space:nowrap}
.pp-etq-a{margin:14px 0 0}

/* ---------- Familias: página interior del pasaporte (cartulina con guilloché tenue), limpia ---------- */
.pp-folio{color:var(--tinta);background:
  url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='72'><g fill='none' stroke='%231F2A3F' stroke-opacity='.075' stroke-width='.7'><path d='M0 36C30 6 90 6 120 36S210 66 240 36'/><path d='M0 36C30 66 90 66 120 36S210 6 240 36'/><path d='M0 26C30 0 90 0 120 26S210 52 240 26'/><path d='M0 46C30 72 90 72 120 46S210 20 240 46'/><path d='M0 16C30 -6 90 -6 120 16S210 38 240 16'/><path d='M0 56C30 78 90 78 120 56S210 34 240 56'/></g></svg>") center top/240px 72px repeat,
  url(/img/texturas/pasaporte-cartulina-teja.jpg) center/420px auto repeat #F1EADB}
.pp-folio::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(60% 50% at 50% 50%,rgba(250,246,238,.55),transparent 100%),linear-gradient(180deg,rgba(80,60,30,.14),transparent 10px,transparent calc(100% - 10px),rgba(80,60,30,.14))}
/* Filete de página: doble línea azul a lo largo, como el margen impreso del pasaporte */
.pp-folio::after{content:"";position:absolute;inset:18px max(14px,3vw);z-index:-1;pointer-events:none;border:1px solid rgba(31,42,63,.22);outline:1px solid rgba(179,55,43,.2);outline-offset:-5px}
.pp-fam{display:grid;gap:34px;text-align:center}
.pp-nom{margin:0;font:400 clamp(21px,5.4vw,25px)/1.36 var(--at-fd),serif}
@media(min-width:600px){.pp-fam{grid-template-columns:1fr 1fr}.pp-fam-g:nth-child(3):last-child{grid-column:1/-1}}

/* ---------- Lugares: mapa náutico antiguo; cada destino es una postal con su sello de llegada ---------- */
.pp-mapa{background:url(/img/texturas/pasaporte-mapa.jpg) 50% 0/max(100%,900px) auto repeat-y #D9C7A3}
.pp-mapa::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(242,232,212,.72),rgba(242,232,212,.3) 260px,rgba(242,232,212,.14) 50%,rgba(242,232,212,.3)),linear-gradient(90deg,rgba(90,64,30,.16),transparent 18%,transparent 82%,rgba(90,64,30,.16))}
.pp-mapa .pp-sec{padding:96px max(7vw,20px) 104px}
.pp-mapa .pp-k{color:#5A4A33}
.pp-dest{display:grid;gap:56px}
.pp-postal-l{position:relative;display:grid;padding:4.5% 4.5% 0;rotate:var(--r);color:var(--tinta);
  background:linear-gradient(rgba(250,246,238,.25),rgba(250,246,238,.25)),url(/img/texturas/pasaporte-cartulina-teja.jpg) center/420px auto #F1EADB;
  box-shadow:0 0 0 1px rgba(60,44,20,.12),0 2px 3px rgba(48,36,18,.18),0 30px 40px -18px rgba(48,30,10,.6)}
.pp-postal-f{aspect-ratio:16/10;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(31,42,63,.2)}
.pp-postal-f img{width:100%;height:100%;object-fit:cover;filter:sepia(.12)}
.pp-postal-fw{min-height:20px}
.pp-tinta-dest{right:-5%;bottom:-6%;width:min(30%,118px);--rot:-9deg}
.pp-postal-t{position:relative;padding:34px 10% 40px;text-align:center}
.pp-postal-t::before{content:"";position:absolute;left:0;right:0;top:16px;height:3px;background:radial-gradient(circle,rgba(70,55,35,.42) 1.2px,transparent 1.7px) 0 0/9px 3px repeat-x}
.pp-postal-t h3{margin:6px 0 8px;font:400 clamp(24px,6vw,30px)/1.15 var(--at-fd),serif;text-wrap:balance}
.pp-hora{margin:0;font-style:italic;font-size:19px;color:var(--at-acento)}
.pp-dir{margin:8px auto 0;max-width:30ch;color:#5F6576;font-size:17px;line-height:1.5}
@media(min-width:900px){.pp-mapa .pp-sec{max-width:940px}.pp-dest{grid-template-columns:1fr 1fr;gap:48px}}

/* ---------- Programa: tarjeta de embarque alargada sobre la piel azul del pasaporte ---------- */
.pp-piel{color:#F3ECDD;background:url(/img/texturas/pasaporte-piel-teja.jpg) center top/520px auto repeat #1B2A47}
.pp-piel::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(80% 500px at 30% 0,rgba(150,175,225,.14),transparent 70%),linear-gradient(180deg,rgba(6,10,20,.22),transparent 18%,transparent 82%,rgba(6,10,20,.28))}
/* Pespunte dorado a lo ancho, como la orilla de la tapa */
.pp-piel::after{content:"";position:absolute;inset:14px 0;z-index:-1;pointer-events:none;border-top:1.5px dashed rgba(200,169,97,.5);border-bottom:1.5px dashed rgba(200,169,97,.5)}
.pp-piel .pp-sec{padding:84px max(5vw,16px) 92px}
/* Tarjeta: cartulina en ::after con las muescas de la perforación recortadas por máscara; sombra en ::before */
.pp-embarque,.pp-migra{--talon:160px;position:relative;isolation:isolate;max-width:460px;margin:0 auto;color:var(--tinta);--at-tenue:#5F6576;--at-linea:rgba(31,42,63,.22)}
.pp-embarque::after,.pp-migra::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;border-radius:6px;
  background:linear-gradient(rgba(250,246,238,.22),rgba(250,246,238,.22)),url(/img/texturas/pasaporte-cartulina-teja.jpg) center/420px auto #F1EADB;
  box-shadow:inset 0 0 0 1px rgba(60,44,20,.12);
  -webkit-mask:radial-gradient(circle 12px at 0 calc(100% - var(--talon)),#0000 96%,#000) left/51% 100% no-repeat,radial-gradient(circle 12px at 100% calc(100% - var(--talon)),#0000 96%,#000) right/51% 100% no-repeat;
  mask:radial-gradient(circle 12px at 0 calc(100% - var(--talon)),#0000 96%,#000) left/51% 100% no-repeat,radial-gradient(circle 12px at 100% calc(100% - var(--talon)),#0000 96%,#000) right/51% 100% no-repeat}
.pp-embarque::before,.pp-migra::before{content:"";position:absolute;inset:3% 8%;z-index:-2;pointer-events:none;border-radius:10px;box-shadow:0 30px 50px -6px rgba(0,0,0,.55),0 8px 16px rgba(0,0,0,.25)}
.pp-emb-h,.pp-migra-h{display:flex;justify-content:space-between;align-items:center;padding:30px 9% 14px;font:400 13px/1 var(--mono),monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--at-tenue);
  background:linear-gradient(var(--rojo),var(--rojo)) 0 0/100% 5px no-repeat,linear-gradient(var(--marino),var(--marino)) 0 9px/100% 2px no-repeat;border-radius:6px 6px 0 0}
.pp-emb-h svg{width:20px;height:20px;color:var(--at-acento)}
.pp-embarque .pp-h{margin:22px 9% 26px}
.pp-embarque .pp-k{color:var(--at-tenue)}
.pp-vuelo{list-style:none;margin:0;padding:0 9% 34px;display:grid;gap:0;text-align:left}
.pp-vuelo li{position:relative;display:grid;grid-template-columns:96px 18px 1fr;align-items:start;gap:0 12px;padding:14px 0}
.pp-vh{font-size:14px;letter-spacing:0;padding-top:4px;white-space:nowrap}
.pp-vd{position:relative;display:block;width:11px;height:11px;margin:8px 0 0 3px;border-radius:50%;background:#F3ECDD;box-shadow:0 0 0 1.5px var(--tinta)}
.pp-vuelo li::after{content:"";position:absolute;left:116px;top:36px;bottom:-12px;border-left:1px dashed rgba(31,42,63,.45)}
.pp-vuelo li:last-child::after{display:none}
.pp-vuelo li:last-child .pp-vd{background:var(--at-acento);box-shadow:0 0 0 1.5px var(--at-acento)}
.pp-vt{display:grid;gap:3px}.pp-vt strong{font:400 20px/1.25 var(--at-fd),serif}.pp-vt small{font-size:16px;color:var(--at-tenue);font-family:var(--at-ft),serif;font-style:italic}
/* Talón: altura fija (--talon) para que las muescas caigan justo en la perforación */
.pp-stub{position:relative;height:var(--talon);box-sizing:border-box;display:grid;align-content:center;gap:12px;padding:10px 10%;
  background:radial-gradient(circle,rgba(70,55,35,.45) 1.3px,transparent 1.8px) 16px 0/9px 4px repeat-x}
.pp-stub .pp-barras{width:100%;height:30px;opacity:.8;color:var(--tinta)}
.pp-emb-t{display:grid;grid-template-columns:auto auto 1fr;gap:8px 18px;text-align:left;align-items:start}
.pp-emb-t span{display:grid;gap:3px;min-width:0}
.pp-emb-t small{font:400 11px/1.2 var(--mono),monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--at-tenue)}
.pp-emb-t b{font:400 14px/1.25 var(--mono),monospace}

/* ---------- Vestimenta: lino crudo con etiquetas de tela cosidas ---------- */
.pp-lino{--at-tenue:#4E5566}
.pp-tela{max-width:36ch;margin:0 auto}
.pp-tela > p:first-child{margin:0}
.pp-etelas{display:flex;flex-wrap:wrap;justify-content:center;gap:22px 16px;margin:34px 0 8px}
.pp-etela{display:grid;justify-items:center;gap:10px;transform:rotate(var(--r))}
/* Cinta tejida del color: trama fina, puntas dobladas y pespunte en las orillas */
.pp-etela i{position:relative;display:block;width:78px;height:40px;background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.1) 0 1px,transparent 1px 3px),repeating-linear-gradient(0deg,rgba(0,0,0,.08) 0 1px,transparent 1px 3px),var(--c);
  box-shadow:inset 6px 0 0 rgba(0,0,0,.14),inset -6px 0 0 rgba(0,0,0,.14),0 1px 1px rgba(40,28,12,.3),0 6px 10px -4px rgba(40,28,12,.4)}
.pp-etela i::before,.pp-etela i::after{content:"";position:absolute;top:3px;bottom:3px;width:0;border-left:1.5px dashed rgba(250,245,235,.7)}
.pp-etela i::before{left:10px}.pp-etela i::after{right:10px}
.pp-etela small{font:400 11px/1 var(--mono),monospace;letter-spacing:.1em;color:var(--at-tenue)}

/* ---------- Galería: polaroids sobre kraft ---------- */
.pp-kraft{background:url(/img/texturas/pasaporte-kraft-teja.jpg) center top/380px auto repeat #C29A6B;--at-tenue:#3B2A18}
.pp-kraft::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(60,40,18,.2),rgba(60,40,18,0) 14%,rgba(60,40,18,0) 86%,rgba(60,40,18,.22))}
.pp-kraft .pp-t{color:#2A1F14}
.pp-kraft .pp-k i{color:#7E2219}
.pp-polaroids{display:grid;grid-template-columns:repeat(2,1fr);gap:22px 16px;max-width:760px;margin:0 auto}
.pp-polaroid{rotate:var(--r);transition:rotate .5s}
.pp-polaroid:hover{rotate:0deg}
.inv[data-theme="at-pasaporte"] .pp-polaroid .gal-i{display:block;padding:7% 7% 26%;border-radius:1px;
  background:linear-gradient(rgba(252,250,245,.55),rgba(252,250,245,.55)),url(/img/texturas/papel-crema.jpg) center/300px auto #F7F3EA;box-shadow:0 1px 1px rgba(40,26,10,.3),0 18px 24px -12px rgba(40,26,10,.6)}
.pp-polaroid img{aspect-ratio:1;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}
@media(min-width:720px){.pp-polaroids{grid-template-columns:repeat(3,1fr);gap:34px 28px}}

/* ---------- Regalos: sobres de correo aéreo sobre lino limpio ---------- */
.pp-sobres{display:grid;gap:30px}
.pp-sobre{position:relative;padding:44px 12% 38px;text-align:center;color:var(--tinta);rotate:var(--r);
  border:10px solid transparent;border-image:repeating-linear-gradient(-45deg,#B3372B 0 12px,transparent 12px 18px,#1B2A47 18px 30px,transparent 30px 36px) 10;
  background:linear-gradient(rgba(252,249,242,.12),rgba(252,249,242,.12)) padding-box,url(/img/texturas/papel-crema.jpg) center/420px auto border-box #EFE7D6;
  box-shadow:0 1px 1px rgba(40,28,12,.25),0 22px 30px -14px rgba(40,28,12,.55)}
.pp-avion{position:absolute;left:18px;top:14px;margin:0;font:italic 700 12px/1 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:#2A4A8A}
/* Timbre: papel dentado con el avión grabado */
.pp-timbre{position:absolute;right:16px;top:14px;display:grid;place-items:center;width:46px;height:56px;color:#F3ECDD;background:#7E2A23;
  box-shadow:inset 0 0 0 3px #F3EEE3,inset 0 0 0 4px rgba(126,42,35,.6);
  -webkit-mask:linear-gradient(#000,#000) center/calc(100% - 6px) calc(100% - 6px) no-repeat,radial-gradient(circle 2.4px,#0000 95%,#000) -3px -3px/6px 6px;mask:linear-gradient(#000,#000) center/calc(100% - 6px) calc(100% - 6px) no-repeat,radial-gradient(circle 2.4px,#0000 95%,#000) -3px -3px/6px 6px}
.pp-timbre svg{width:24px;height:24px}
.pp-sobre .pp-k2{margin-top:16px}
.pp-sobre p{margin:6px 0 0}
.pp-sobre .at-clabe{margin-top:12px}

/* ---------- Hospedaje: página del pasaporte; cada hotel es una visa ---------- */
.pp-visas{display:grid;gap:30px}
.pp-visa-h{position:relative;padding:30px 10% 32px;border:1.5px solid rgba(42,74,138,.6);border-radius:12px;outline:1px solid rgba(42,74,138,.35);outline-offset:-7px;
  background:rgba(250,246,238,.35);transform:rotate(-.6deg)}
.pp-visa-h:nth-child(2n){transform:rotate(.7deg)}
.pp-visa-h .pp-k2{color:#2A4A8A}
.pp-visa-h h3{margin:0 0 8px;font:400 23px/1.2 var(--at-fd),serif}
.pp-visa-h p{margin:4px 0 0}
.pp-tel{color:inherit;font-family:var(--mono),monospace;letter-spacing:.06em}

/* ---------- Notas y hashtag (lino) ---------- */
.pp-notas{margin:0;padding:0;list-style:none;text-align:center;font-style:italic;font-size:19px;display:grid;gap:10px}
.pp-tag{margin:0;font:italic 400 clamp(26px,6.4vw,36px)/1.1 var(--at-fd),serif;color:var(--at-acento)}

/* ---------- Confirmación: formulario migratorio de cartulina sobre la mesa de madera, con el sello de «Admitido» ---------- */
.pp-rsvp .pp-sec{padding:80px max(4vw,14px) 96px}
.pp-migra{--talon:120px;text-align:left}
.pp-migra-h{padding-top:30px}
.pp-tinta-migra{right:4%;top:62px;width:min(30%,124px);--rot:-15deg}
.pp-migra .pp-h{margin:30px 10% 26px;padding-right:18%;text-align:left}
.pp-migra .pp-h .pp-k{color:var(--at-tenue)}
.pp-migra .pp-t{font-size:clamp(28px,7.4vw,40px)}
.inv[data-theme="at-pasaporte"] .pp-migra .pass,.inv[data-theme="at-pasaporte"] .pp-migra .lead,.inv[data-theme="at-pasaporte"] .pp-migra .rsvp,.inv[data-theme="at-pasaporte"] .pp-migra .rsvp-done,.inv[data-theme="at-pasaporte"] .pp-migra .alt{margin-left:10%;margin-right:10%;max-width:none}
.inv[data-theme="at-pasaporte"] .pp-migra .rsvp{padding-bottom:34px}
.inv[data-theme="at-pasaporte"] .pp-migra .lead{margin-bottom:26px;text-align:left;color:#4E5566}
.pp-migra .pp-stub{justify-items:center}
.inv[data-theme="at-pasaporte"] .pp-migra .fld > span{font:400 13px/1.3 var(--mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--at-tenue)}
/* Casillas del formulario: renglón con caja, como los formularios impresos */
.inv[data-theme="at-pasaporte"] .pp-migra .fld input,.inv[data-theme="at-pasaporte"] .pp-migra .fld select,.inv[data-theme="at-pasaporte"] .pp-migra .fld textarea{font-size:17px;padding:10px 12px;border:1px solid rgba(31,42,63,.32);border-radius:2px;background-color:rgba(255,253,248,.6)}
.inv[data-theme="at-pasaporte"] .pp-migra .fld select{background-position:calc(100% - 18px) 55%,calc(100% - 13px) 55%}
.inv[data-theme="at-pasaporte"] .pp-migra .seg span{font-size:16px}
.inv[data-theme="at-pasaporte"] .rsvp .btn{color:#F3ECDD;font:400 14px/1 var(--mono),monospace;letter-spacing:.2em;text-transform:uppercase;border-radius:4px;min-height:52px;
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(0,0,0,.14)),url(/img/texturas/pasaporte-piel.jpg) center/480px auto #1B2A47;outline:1px dashed rgba(200,169,97,.55);outline-offset:-6px}
.inv[data-theme="at-pasaporte"] .seg input:checked + span{background:var(--marino);color:var(--crema)}

/* ---------- Cierre: lino con el avión de hélice en grabado a una tinta ---------- */
.pp-cierre .pp-sec{padding:80px max(10vw,32px) 64px;display:grid;justify-items:center;gap:18px}
.pp-emblema{display:block;width:min(64vw,280px);aspect-ratio:1;margin:0 auto 4px;background:url(/img/texturas/pasaporte-avion.webp) center/contain no-repeat;mix-blend-mode:multiply;opacity:.92}
.pp-firma-g{margin:0;font:italic 400 clamp(30px,8vw,40px)/1.1 var(--at-fd),serif}
.pp-cierre .pp-k{margin:0}
.inv[data-theme="at-pasaporte"] .inv-brand{color:var(--at-tenue)}

/* ---------- Apertura en video (pasaporte que se abre) ----------
   El póster es lino claro arriba y abajo, con el pasaporte azul al centro: nombres en tinta azul sobre el lino de arriba,
   «Toca para abrir» como botón de piel sobre el lino de abajo. */
/* El video es 9:16 y el pase llega casi de orilla a orilla: se muestra entero (sin recorte lateral) sobre el mismo lino,
   con los bordes de arriba y abajo fundidos. El lino de la textura y el del video miden casi el mismo tono (211,194,174 / 218,201,177). */
.inv[data-template="pasaporte"] .op-video{background:url(/img/texturas/pasaporte-lino.jpg) center/cover #D6C7B0}
.inv[data-template="pasaporte"] .opv{inset:auto;left:50%;top:50%;width:min(100%,calc(100svh * 9 / 16));height:auto;aspect-ratio:9/16;transform:translate(-50%,-50%);object-fit:cover;background:transparent;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(180deg,transparent,#000 7%,#000 93%,transparent)}
.inv[data-template="pasaporte"] .opv-ui .op-to{font:400 12.5px/1.4 'Courier Prime',monospace;letter-spacing:.26em;text-transform:uppercase;color:#4B5468;text-shadow:0 1px 0 rgba(255,250,240,.6)}
.inv[data-template="pasaporte"] .opv-ui .op-to strong{color:#1F2A3F;font-weight:700}
.inv[data-template="pasaporte"] .opv-n{margin-top:8px;font:italic 400 clamp(30px,8.6vw,42px)/1.12 'Libre Caslon Text',serif;color:#1B2A47;text-shadow:0 1px 0 rgba(255,250,240,.7),0 0 22px rgba(240,232,216,.9);text-wrap:balance;max-width:16ch}
.inv[data-template="pasaporte"] .opv-tap{white-space:nowrap;color:#F3ECDD;font:400 13px/1 'Courier Prime',monospace;letter-spacing:.24em;text-transform:uppercase;border-radius:4px;
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(0,0,0,.14)),url(/img/texturas/pasaporte-piel.jpg) center/480px auto #1B2A47;outline:1px dashed rgba(200,169,97,.6);outline-offset:-6px;
  box-shadow:0 14px 30px -10px rgba(30,22,10,.6);animation:pp-respira 2.6s ease-in-out infinite}
/* La piel no debe volverse gris: respira menos que el botón genérico. */
@keyframes pp-respira{50%{opacity:.8}}
.inv[data-template="pasaporte"] .opv-skip{min-height:40px;border-radius:999px;background:rgba(243,236,221,.78);color:#1F2A3F;font:400 12px/1 'Courier Prime',monospace;letter-spacing:.24em;
  box-shadow:inset 0 0 0 1px rgba(31,42,63,.2)}
/* Remate: los nombres quedan impresos sobre las páginas abiertas del pasaporte (mitad baja del último cuadro), sin tapar el pase sellado. */
.inv[data-template="pasaporte"] .opv-fin{place-items:start center;padding-top:calc(50svh + min(100svh, 100vw * 16 / 9) * .17 - 64px)}
.inv[data-template="pasaporte"] .opv-fin-eb{font:400 12px/1.4 'Courier Prime',monospace;letter-spacing:.3em;color:#4B5468;opacity:1}
.inv[data-template="pasaporte"] .opv-fin-n{font:italic 400 clamp(32px,9vw,46px)/1.08 'Libre Caslon Text',serif;color:#1B2A47;text-shadow:0 0 16px rgba(246,240,228,.95),0 0 4px rgba(246,240,228,.9)}
.inv[data-template="pasaporte"] .opv-fin-n .amp{color:#B3372B;margin:0 .26em}
.inv[data-template="pasaporte"] .opv-fin-f{margin:2px 0 0;font:400 13px/1.4 'Courier Prime',monospace;letter-spacing:.16em;text-transform:uppercase;color:#4B5468}
