/* styles/carta.css */
/*
 * Invitaciones del Grupo Bio2energies: la carta.
 *
 * Una hoja de papel sobre un fondo cálido, con el borde de correo aéreo en
 * los colores del logo, el membrete de BIO2ENERGIES, un matasellos con la
 * fecha y el lugar, y las firmas a mano. Las animaciones (carta.js) solo
 * mueven opacidad y transformaciones; sin JavaScript, o con «reducir
 * movimiento», todo se ve desde el principio.
 *
 * Va en una hoja propia (no en las reglas del editor) para que Instatic la
 * publique tal cual.
 */

:root {
  --bg-body: #ebe7df; /* también es el fondo de la entrada (page-transition.js) */
  --cv-paper: #fffdf8;
  --cv-ink: #1b1a17;
  --cv-ink-soft: #46423b;
  --cv-muted: #8b8478;
  --cv-line: rgba(27, 26, 23, 0.12);
  --cv-blue: #0868c8;
  --cv-sky: #2cb5fd;
  --cv-red: #e31827;
  --cv-yellow: #fbca1a;
  --cv-pen: #1d3a86; /* tinta de las firmas */
  --cv-serif: "Newsreader", "Iowan Old Style", Georgia, serif;
  --cv-display: "Cormorant Garamond", "Newsreader", Georgia, serif;
  --cv-sans: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --cv-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  --cv-script: "Mrs Saint Delafield", "Snell Roundhand", cursive;
  --cv-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

html,
body {
  background-color: var(--bg-body);
}

body {
  color: var(--cv-ink);
  font-family: var(--cv-serif);
  text-rendering: optimizeLegibility;
}

/* ---------------------------------------------------------------- página */

.cv-page {
  min-height: 100vh;
  min-height: 100svh;
  padding: clamp(14px, 4vw, 72px) clamp(10px, 4vw, 48px) clamp(28px, 5vw, 64px);
  background-image: radial-gradient(120% 70% at 50% 0%, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0) 65%);
  overflow-x: clip;
}

.cv-sheet {
  position: relative;
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(44px, 8vw, 96px) clamp(22px, 7.5vw, 92px) clamp(40px, 7vw, 84px);
  border-radius: 4px;
  background-color: var(--cv-paper);
  box-shadow:
    0 1px 1px rgba(27, 26, 23, 0.05),
    0 3px 8px -3px rgba(27, 26, 23, 0.08),
    0 44px 80px -44px rgba(27, 26, 23, 0.38);
}

/* Borde de correo aéreo, arriba y abajo. */
.cv-air {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 7px;
  border-radius: 4px 4px 0 0;
  background-image: repeating-linear-gradient(
    -45deg,
    var(--cv-red) 0 11px,
    transparent 11px 18px,
    var(--cv-blue) 18px 29px,
    transparent 29px 36px
  );
  opacity: 0.9;
}

.cv-air-b {
  top: auto;
  bottom: 0;
  border-radius: 0 0 4px 4px;
}

/* ------------------------------------------------------------- membrete */

.cv-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding-bottom: clamp(20px, 4vw, 30px);
  border-bottom: 1px solid var(--cv-line);
}

.cv-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

.cv-logo-mark,
.cv-card-mark {
  flex: none;
  width: 38px;
  height: 38px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cpath fill='%232cb5fd' fill-rule='evenodd' d='M93.2 1a100.4 100.4 0 0 0-93 107 98 98 0 0 0 27.5 60.2l2 2-.8 1.5a10 10 0 0 1-4.2 4.3l-1.3.6-.4-1.7q-1.1-6.1-6.6-6.4a6 6 0 0 0-5.2 2c-5.8 5.7.3 14.2 9.7 13.6 4.6-.3 7.6-1.7 12.5-6l2.3-2q.3 0 2.2 1.4A99.8 99.8 0 0 0 197 123.4c9-36-3.4-74.7-31.9-98.7A101 101 0 0 0 93.2 1'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M130 28.5A34 34 0 0 0 117.4 45a42 42 0 0 0-1 24.2c.4 3 .5 8.6.1 10.5-.7 3.1-2.1 4.2-6.4 4.6a18 18 0 0 0-8 2.1c-.4.4-.1.4 2.3.6 2.6.3 4.5 1.2 8.2 4a53 53 0 0 0 25.7 9.6c0-.2-1-1-2.2-2a15 15 0 0 1-3.4-3.6 47 47 0 0 1 19.6 3.5c5.3 2.1 8.2 2.5 10.3 1.4 1-.5 2.1-1.7 1.9-2l-2.6-.2c-2.9-.2-5.3-.8-9.8-2.6a76 76 0 0 0-19.9-6c-6.2-.8-6-.4-4.4-9.2 1-6.5 1-10-.3-18.4s-.6-14.8 3.1-29.7l1-4.3zm-26 75c-3.1 1.5-3.7 5.3-1.1 7.5 4.3 3.7 10.3-2.3 6.3-6.3a4.5 4.5 0 0 0-5.2-1.1m.4.5a3.8 3.8 0 0 0-1.1 6.5 4 4 0 0 0 5.4-.3c2.9-2.9-.4-7.7-4.3-6.2m.3 11.6a4 4 0 0 0-2.5 2.3c-.3.9-.3 1.2 0 5.1l.9 12.4c.9 12.4.9 12.3 2.1 13.5a4.3 4.3 0 0 0 6.2-.4c1-1.2 1-1.2.1-13l-.6-8.4c-.6-9.2-.7-9.7-1.7-10.6a4 4 0 0 0-4.5-1m-.6 1q-.8.5-1.2 1.4l-.5 1 .8 9.4c1 14.3 1.4 18.4 1.7 19 1 2.8 5.4 2.8 6.5 0 .3-.8.3-1-.3-9.4-.4-4.6-.9-11-1-14-.3-4-.5-5.7-.8-6.2-.7-1.6-3.4-2.2-5.2-1.2m60.2 13.1c.1 6.4-.1 11.4-.8 17.8-.7 6-.8 5.3 1 5.2l7.5-.7a55 55 0 0 0-4.3-21.5c-1-2.2-3.1-6.4-3.3-6.4zm-2.8 8.9c-1 3.8-3.8 9.7-5.7 12.1l-1 1.4 2.3.1c1.3 0 2.7.2 3.2.4l1 .3v-.6c.2-.7.8-14.3.8-15zm-43 16q-4.5 6.1-10 5.5-2.5-.2-5-3l-1.9-1.6-1 1q-.6 1-2 2.1c-4.6 3.9-9.7 3.9-14 0l-1.5-1.3-1.8 1.5c-6.2 5.9-13.2 6.8-19 2.6q-1.8-1-2 .4c-.2 1 2.6 3 5.6 4 2.3.8 6.2.8 8.6 0 3-1 6.2-3 8-4.9l.6-.6.8.7a11.7 11.7 0 0 0 16.4-.7l1.4-1.4.6.6c2.6 2.7 7 3.8 10.5 2.6 2.3-.8 5-2.7 6.6-5l.8-1 1 1c3.7 3.9 8.8 4.3 13.3 1l1-.6 1 .9a15 15 0 0 0 4.8 2.7c3 1.1 7.7.2 10.1-1.9l.8-.6 1 .8c2.3 2 5.9 3.2 8.9 3 2.9-.2 6.8-1.8 7.7-3.2a16 16 0 0 1 2.8-2.5l2.8-2.4c.3-.5.5-.5-7 0-8.8.6-18.2 1-18.7 1q-.9-.4.6.6c1.3.6 1.3.6.1 1.5-4 3-10 2.2-14-2.1l-.7-.8-1.5 1.1a10 10 0 0 1-6.8 2.2 10 10 0 0 1-6.5-4.3c-.5-1-1-.8-2.4 1.1m.7 10.2c-3.4 4.2-5.8 5.5-9.7 5.5-2.8 0-4.2-.5-6.3-2.6l-1.5-1.2-1.5 1.2c-4.7 4.4-10.7 5-15.4 1.4-1.6-1.2-2.1-1.3-2.7-.5q-1 1 1.3 2.6c5.4 4 12 3.8 17-.4l1.2-1.1 1.2.9a11 11 0 0 0 12.9.7 20 20 0 0 0 4.4-4q0-.6 1.4.6c3.6 3.4 9.4 3.4 13.4.1l.9-.7.7.6c4.3 3.4 9.9 3.8 14.5 1q1.8-1 1.5-2.1-.2-1.2-2.1 0a11 11 0 0 1-13.1-1.2c-1.5-1.3-1.4-1.3-2.6-.3-4.5 4-10 3.5-13.4-.9l-.8-1z'/%3E%3Cpath fill='%23fbca1a' fill-rule='evenodd' d='M136.8 115.4c-14.3 2.7-20 17.8-10.3 27.5 11.2 11.1 31.1 3.9 31.1-11.3 0-10-10.3-18.1-20.8-16.2'/%3E%3Cpath fill='%230868c8' fill-rule='evenodd' d='M92.8 42.2c3.4 4 5 9.6 5 17.9 0 10.9-2.5 18.3-8.1 23.7a24 24 0 0 1-7.7 5.3c-.9.3-.9 1.2 0 1.7q.6.3.8 0l1.4-.7a28 28 0 0 0 11.9-12c2.4-5.4 3.8-14 3.2-20-.6-7-2.4-11.7-5.9-15.3zm-18.7.7c-2.5.6-5.2 3-6.9 6-3 5.3-5.1 13.8-8.4 33.7l-6.4 37.8a237 237 0 0 1-5 25.5q-3 10.8-7.1 20.3a68 68 0 0 1-5.7 10.5q-1 1.5.4 0 .6-.6 1-.7c.2 0 2.7-3.4 4-5.6a97 97 0 0 0 10-27.3c1.1-4.2 2.1-9.7 5.5-30.2l4.9-29c4-25 6.8-34.2 11.8-38.1a9 9 0 0 1 8.7-1.4q.8.4.2 0c-1.5-1.3-5-2-7-1.5m12.3 17q0 1.5.1 1V59zM66 87.4h1.4zM63.2 89c-.6 1-.5 2.5 0 3.4 1 1.3 2.3 2 5.7 3l4.7 1.3q-1.5-1.1-5.6-2.3c-3.8-1-4.2-1.4-4.3-4.2l-.1-1.9zM90 97.4a33 33 0 0 1 5 20c-.4 15-7.5 29-18 35.6-5 3-11.9 4-16.1 2.2q-1.4-.5.3.4a15 15 0 0 0 11 1c10.8-2.3 21.2-16 23.6-31.4 1.9-11.5-.3-22.2-5.5-27.8l-.9-.9zm-8.2 20v.7-1.6zM66 138c1.3 2.5.6 5.6-1.4 7.1-2.7 2-3.1 2.6-2.5 3.9q.4.8 1.1 1.2 1 .9.5.1-1.2-1.7 1.9-3.6c2.1-1.4 2.7-2.5 2.5-5.2q0-2.7-2-4.1l-.6-.5z'/%3E%3Cpath fill='%23e31827' fill-rule='evenodd' d='M74.2 36c-14 2.5-23.7 15.7-28.2 38.4-1.3 6.4-1.6 9-3 23.1l-2.3 20.8c-.6 5-2.2 15.3-3 19.4-5.6 28.6-8.1 36-13 38.3l-1.3.6-.4-1.7q-1.1-6.1-6.6-6.4a6 6 0 0 0-5.2 2c-4.7 4.8-1.5 11.9 6.1 13.4 4.1.8 9.4-.5 13-3.2 1.2-1 4-3.3 3.8-3.3l.5-.7a72 72 0 0 0 5.7-10.5q4.2-9.5 7.1-20.3c1.6-5.7 2.4-10 5-25.5L57 93.9l2-11.3c3.9-24.2 6.3-32.4 10.8-37 2.2-2.2 3.5-2.8 6.3-2.8 2 0 2.2 0 3.7.8q7.7 3.8 6.7 19.5c-.7 10.5-3.2 16.9-8.2 21-2.8 2.2-5.4 3-10.2 3.3-1.7 0-3.3.2-3.7.4l-.6.2v1.7c0 3 .5 3.6 4 4.5 4 1 5.5 1.8 7.8 4q8 7.4 5.6 29.6c-1.5 13.6-5.8 21.7-12.4 23.4-2 .6-3.4.3-5.3-1-2.3-1.5-2-2.7 1.3-5 3.4-2.6 2.5-8.5-1.6-9.7-5.5-1.6-10.5 3.3-9.9 9.6 1.4 13 18.1 14.9 29.2 3.5A46 46 0 0 0 95 117.5q.5-19.1-11.9-26.2c-1.4-.8-1.6-1-1.6-1.5q0-.6.6-.7a26 26 0 0 0 7.7-5.3c5.6-5.4 8-12.8 8.1-23.7a29 29 0 0 0-1.2-10.3A19 19 0 0 0 74.2 36m30.5 67.9a3.8 3.8 0 0 0-2.4 5.4c1.9 3.5 7.4 2.3 7.4-1.7a4 4 0 0 0-5-3.7m-.1 12.4q-.7.3-1.1.8c-1 1.1-1 1.5-.6 7l.6 7.7c1 14 1.2 15.5 1.8 16.3 1.5 2.2 5.5 1.5 6.2-1 .2-.8 0-2.7-.8-12.8l-1.2-16.3c-.6-1.6-3.2-2.5-5-1.7'/%3E%3C/svg%3E") center / contain no-repeat;
}

.cv-logo-name {
  flex: none;
  width: 150px;
  height: 13.2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='7.6 -69.8 808.9 71.1'%3E%3Cpath fill='%2312151b' d='M45 0H7.6v-68.6H45q5.5 0 9.9 2.1 4.3 2.1 6.8 5.9 2.5 3.8 2.5 8.9 0 3.9-1.5 7.1-1.5 3.2-4 5.4-2.6 2.1-5.8 3.2v.4q3.8.8 6.8 3 3 2.3 4.7 5.8 1.7 3.4 1.7 7.9 0 6.4-2.8 10.6-2.9 4.2-7.6 6.3Q50.9 0 45 0M20.6-29.7v18.6h22.7q4.1 0 6.8-2.2 2.6-2.3 2.6-7.1 0-2.8-1.1-4.9-1.1-2.1-3.4-3.2-2.2-1.2-5.7-1.2zm0-27.8v16.9h21q3 0 5-1.1 2.1-1.1 3.1-3 1.1-1.9 1.1-4.2 0-4.4-2.3-6.5-2.4-2.1-6.2-2.1zM97.2 0h-13v-68.6h13zm52.7 1.2q-10.7 0-18.5-3.8-7.8-3.9-12-11.8-4.1-7.9-4.1-19.9 0-12.1 4.2-20 4.1-7.8 11.9-11.7 7.8-3.8 18.5-3.8 10.8 0 18.5 3.8 7.8 3.9 12 11.8 4.1 7.8 4.1 19.9 0 12-4.2 19.9-4.1 7.9-11.9 11.8-7.7 3.8-18.5 3.8m0-11q5.2 0 9.2-1.5 3.9-1.5 6.6-4.4 2.7-3 4.1-7.4 1.4-4.3 1.4-10v-2.2q0-5.8-1.4-10.2-1.4-4.4-4.1-7.4-2.7-2.9-6.6-4.4-4-1.5-9.2-1.5-5.2 0-9.2 1.5-3.9 1.5-6.6 4.4-2.7 3-4 7.4-1.4 4.4-1.4 10.2v2.2q0 5.7 1.4 10 1.3 4.4 4 7.4 2.7 2.9 6.7 4.4 3.9 1.5 9.1 1.5m98 9.8h-47.8v-3.3q0-4.5 1.6-8.2 1.6-3.7 4.3-6.7 2.7-3.1 6-5.9l6.8-5.2q4.2-3.1 7.9-6.2 3.7-3.2 6-6.9 2.3-3.6 2.3-8.1 0-2.1-1-4.2-1-2.1-3.2-3.5-2.3-1.4-6.1-1.4-3.8 0-6.3 1.3-2.5 1.2-3.7 3.5-1.3 2.3-1.3 5.7v4.1h-12.2l-.2-1.5-.1-2.5q0-7.4 3.3-12 3.4-4.5 9-6.7 5.5-2.1 12-2.1 6.8 0 11.2 2 4.3 2 6.8 5.1 2.4 3.1 3.4 6.6.9 3.5.9 6.4 0 4.8-1.7 8.8-1.6 3.9-4.5 7.4-2.9 3.4-6.9 6.6-3.9 3.1-8.4 6.3l-4.5 3.2q-2.2 1.6-3.8 3.2-1.7 1.6-2.6 3.2h32.8zm72.4 0h-54.1v-68.6h53.5v11.1h-40.5v16.9h36.1v11.1h-36.1v18.4h41.1zm31.6 0h-12.5v-68.6h12.4l29.3 40.5 1.2 1.7 1.3 2 .8 1.6h.5v-45.8h12.5V0h-12.3l-29.4-40.8-1.8-3-1.5-2.4h-.5zm120.8 0h-54.1v-68.6h53.5v11.1h-40.5v16.9h36.1v11.1h-36.1v18.4h41.1zm32.1 0h-13v-68.6h36.1q7.6 0 12.6 2.6 5 2.6 7.5 7.4 2.5 4.8 2.5 11.3 0 6.7-3 11.8-3 5.2-8.8 7.8L552.9 0h-14.2l-12.6-25.5h-21.3zm0-57.5v21.1h22.1q5 0 7.7-2.9 2.7-2.9 2.7-8 0-3.3-1.2-5.6-1.2-2.2-3.5-3.4-2.3-1.2-5.7-1.2zm95.4 58.7q-15.9 0-24.7-8.5-8.8-8.6-8.8-27 0-12.1 4.1-20 4.2-7.8 12-11.7 7.9-3.8 18.9-3.8 6.6 0 12.4 1.5 5.8 1.5 10.3 4.5 4.4 3.1 6.9 7.7 2.5 4.6 2.5 10.9h-13.4q0-3.3-1.4-5.8-1.5-2.6-4-4.4-2.6-1.7-5.9-2.6-3.3-.8-7-.8-5.5 0-9.6 1.4-4.2 1.5-7 4.4-2.7 3-4 7.4-1.4 4.4-1.4 10.3v2.1q0 8.1 2.3 13.3 2.3 5.2 7 7.6 4.6 2.5 11.5 2.5 5.9 0 10.4-1.8 4.4-1.8 7-5.3 2.5-3.4 2.5-8.4v-.7h-21.9v-10.8h34.9V0h-9.3l-1.1-7.6q-3 3-6.4 5-3.4 1.9-7.5 2.9-4.1.9-9.3.9M667.4 0h-13v-68.6h13zm75.3 0h-54.1v-68.6h53.5v11.1h-40.5v16.9h36.1v11.1h-36.1v18.4h41.1zm44.7 1.2q-5.7 0-10.9-1.2-5.2-1.3-9.2-4-4-2.6-6.3-6.5-2.3-4-2.3-9.4v-1.2l.1-.9h13.1v.8l-.1.9q0 3.3 1.9 5.7 1.9 2.3 5.5 3.5 3.6 1.3 8.5 1.3 3.3 0 5.8-.4 2.6-.4 4.5-1.2 1.8-.7 3-1.7 1.2-1.1 1.8-2.4.5-1.3.5-2.8 0-2.9-1.8-4.8-1.8-1.9-4.9-3.2-3-1.3-6.9-2.3l-7.9-2.2q-4-1.1-7.8-2.7-3.9-1.5-7-3.7-3-2.2-4.8-5.5-1.8-3.4-1.8-8.1 0-4.8 2-8.4 2.1-3.6 5.9-6 3.7-2.3 8.7-3.5 5-1.1 10.9-1.1 5.5 0 10.4 1.1 4.8 1.2 8.5 3.7 3.7 2.4 5.8 6.1 2.1 3.8 2.1 9v1.2h-12.9v-1q0-2.9-1.7-4.9-1.8-2-5-3.1-3.1-1.1-7.3-1.1-4.5 0-7.7.8-3.2.9-4.9 2.5-1.7 1.7-1.7 4.1 0 2.5 1.8 4.2 1.8 1.7 4.9 2.9 3 1.2 6.8 2.2l8 2.1q4 1.2 7.9 2.7 3.8 1.5 6.9 3.8 3 2.2 4.8 5.5 1.8 3.3 1.8 7.9 0 7.7-3.7 12.4-3.8 4.7-10.4 6.8-6.5 2.1-14.9 2.1'/%3E%3C/svg%3E") center / contain no-repeat;
}

.cv-tag,
.cv-label {
  font: 500 10.5px/1.3 var(--cv-mono);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cv-muted);
}

.cv-meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px 16px;
  margin-top: 16px;
}

/* ------------------------------------------------------------ destinatario */

.cv-to {
  margin-top: clamp(40px, 8vw, 68px);
}

.cv-name {
  margin: 4px 0 12px;
  font: italic 500 clamp(68px, 19vw, 124px)/0.92 var(--cv-display);
  letter-spacing: -0.01em;
  color: var(--cv-ink);
}

/* carta.js mide el nombre y lo achica si hace falta: así nunca parte. */
.cv-name.cv-fit {
  white-space: nowrap;
}

.cv-org {
  font: 600 12px/1.3 var(--cv-sans);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cv-blue);
}

/* Matasellos: lo dibuja carta.js dentro de este hueco. */
.cv-stamp {
  position: absolute;
  top: clamp(26px, 5.5vw, 60px);
  right: clamp(14px, 5vw, 60px);
  width: clamp(92px, 22vw, 134px);
  height: clamp(92px, 22vw, 134px);
  color: var(--cv-blue);
  opacity: 0.9;
  transform: rotate(-12deg);
  mix-blend-mode: multiply;
  pointer-events: none;
}

.cv-stamp svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* ----------------------------------------------------------------- texto */

.cv-body {
  margin-top: clamp(34px, 6vw, 56px);
}

.cv-greet {
  margin-bottom: 18px;
  font: italic 400 clamp(23px, 5.2vw, 29px)/1.3 var(--cv-serif);
  color: var(--cv-ink);
}

.cv-p {
  font: 400 clamp(17.5px, 4.5vw, 20px)/1.66 var(--cv-serif);
  color: var(--cv-ink-soft);
}

.cv-p + .cv-p {
  margin-top: 1em;
}

/* ------------------------------------------------------ nuevos productos */

.cv-products {
  margin-top: 24px;
  border-top: 1px solid var(--cv-line);
}

.cv-prod {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  align-items: baseline;
  gap: 4px 18px;
  padding: 15px 0 14px;
  border-bottom: 1px solid var(--cv-line);
}

.cv-prod-name {
  font: 600 14px/1.2 var(--cv-sans);
  letter-spacing: 0.16em;
  color: var(--cv-blue);
}

.cv-prod-txt {
  font: 400 clamp(16.5px, 4.2vw, 18px)/1.5 var(--cv-serif);
  color: var(--cv-ink-soft);
}

.cv-honor {
  margin-top: 26px;
}

/* --------------------------------------------------------- fecha y lugar */

.cv-event {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: clamp(20px, 5vw, 40px);
  margin: clamp(38px, 7vw, 58px) 0;
  padding: clamp(24px, 5vw, 34px) 0;
  border-top: 1px solid var(--cv-line);
  border-bottom: 1px solid var(--cv-line);
}

/* La fecha, como las tarjetas de la entrada: oscura, con la cara blanca. */
.cv-date {
  width: 138px;
  padding: 4px 4px 0;
  border-radius: 10px;
  background-color: #0d1014;
  box-shadow: 0 18px 32px -20px rgba(13, 16, 20, 0.6);
}

.cv-date-face {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 104px;
  border-radius: 7px;
  background-color: #ffffff;
}

.cv-wday {
  font: 600 10px/1 var(--cv-sans);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cv-red);
}

.cv-day {
  margin-top: 4px;
  font: 500 62px/0.9 var(--cv-display);
  color: #12151b;
}

.cv-date-label {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 32px;
  font: 500 10px/1 var(--cv-mono);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #8b95a3;
}

.cv-place-name {
  margin-top: 8px;
  font: 500 clamp(26px, 6vw, 34px)/1.12 var(--cv-display);
  color: var(--cv-ink);
}

.cv-addr {
  margin-top: 8px;
  font: 400 16.5px/1.5 var(--cv-serif);
  color: var(--cv-ink-soft);
}

.cv-map {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 16px;
  padding: 11px 16px 10px;
  border: 1px solid rgba(8, 104, 200, 0.28);
  border-radius: 999px;
  font: 600 11.5px/1 var(--cv-sans);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cv-blue);
  text-decoration: none;
  transition: background-color 0.25s ease, border-color 0.25s ease;
}

.cv-map::after,
.cv-card-go::after {
  content: "→";
  font-family: var(--cv-sans);
  letter-spacing: 0;
  transition: transform 0.3s var(--cv-ease);
}

.cv-map:hover {
  border-color: rgba(8, 104, 200, 0.55);
  background-color: rgba(8, 104, 200, 0.06);
}

.cv-map:hover::after,
.cv-card:hover .cv-card-go::after {
  transform: translateX(4px);
}

/* -------------------------------------------------------- despedida y firmas */

/* Una sola firma: ancho de firma de verdad, no toda la hoja. */
.cv-signs {
  margin: 26px 0 22px;
}

.cv-sign {
  max-width: 360px;
}

/* Tres firmas (carta de María): una debajo de otra, cada una igual que la
 * firma única de las demás cartas. */
.cv-signs-3 .cv-sign + .cv-sign {
  margin-top: 26px;
}

.cv-sig {
  padding: 0 4px;
  font: 400 clamp(34px, 9.5vw, 48px)/1.3 var(--cv-script);
  color: var(--cv-pen);
  white-space: nowrap;
  transform: rotate(-4deg);
  transform-origin: 0 60%;
}

.cv-signame {
  margin-top: 4px;
  padding-top: 9px;
  border-top: 1px solid var(--cv-line);
  font: 600 10.5px/1.3 var(--cv-sans);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cv-ink-soft);
}

/* --------------------------------------------------------------- posdata */

.cv-ps {
  margin-top: clamp(40px, 7vw, 58px);
  padding-top: clamp(26px, 5vw, 36px);
  border-top: 1px dashed rgba(27, 26, 23, 0.2);
}

.cv-links {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 20px;
}

.cv-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 18px 18px 16px;
  border: 1px solid var(--cv-line);
  border-radius: 12px;
  background-color: #f7f4ed;
  color: inherit;
  text-decoration: none;
  transition: transform 0.35s var(--cv-ease), box-shadow 0.35s var(--cv-ease), border-color 0.35s ease;
}

.cv-card:hover {
  transform: translateY(-2px);
  border-color: rgba(27, 26, 23, 0.2);
  box-shadow: 0 18px 30px -22px rgba(27, 26, 23, 0.45);
}

.cv-card-top {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cv-card-mark {
  width: 28px;
  height: 28px;
}

.cv-card-niu {
  display: inline-flex;
  align-items: center;
  height: 28px;
  padding: 0 9px 1px;
  border-radius: 6px;
  background-color: #12151b;
  font: 600 13px/1 var(--cv-sans);
  letter-spacing: 0.02em;
  color: #ffffff;
}

.cv-card-url {
  font: 600 15px/1.2 var(--cv-sans);
  color: var(--cv-ink);
}

.cv-card-txt {
  font: 400 15.5px/1.45 var(--cv-serif);
  color: var(--cv-ink-soft);
}

.cv-card-go {
  display: inline-flex;
  gap: 8px;
  margin-top: auto;
  padding-top: 4px;
  font: 600 10.5px/1 var(--cv-sans);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cv-blue);
}

.cv-foot {
  margin-top: 22px;
  text-align: center;
  font: 500 10px/1.4 var(--cv-mono);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cv-muted);
}

/* -------------------------------------------------------- portada y 404 */

.cv-sheet-door {
  max-width: 620px;
  text-align: center;
}

.cv-sheet-door .cv-head {
  align-items: center;
}

.cv-door-title {
  margin: clamp(36px, 7vw, 56px) 0 18px;
  font: italic 500 clamp(52px, 13vw, 88px)/0.95 var(--cv-display);
  color: var(--cv-ink);
}

.cv-sheet-door .cv-links {
  margin-top: clamp(30px, 6vw, 44px);
  text-align: left;
}

/* ------------------------------------------------------------- móvil */

@media (max-width: 640px) {
  .cv-links {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 520px) {
  .cv-logo-mark {
    width: 32px;
    height: 32px;
  }

  .cv-logo-name {
    width: 128px;
    height: 11.3px;
  }

  .cv-event {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  /* En el móvil el matasellos baja junto al nombre, que deja sitio a la derecha. */
  .cv-to {
    position: relative;
  }

  .cv-stamp {
    top: -6px;
    right: -6px;
  }

  .cv-date {
    width: 128px;
  }
}

/* ------------------------------------------------------- animaciones
 * html.cv-js lo pone carta.js en cuanto se carga (y no lo pone con «reducir
 * movimiento»). Hasta que la entrada termina, la carta espera oculta; luego
 * cada bloque aparece al llegar a la pantalla, uno detrás de otro. */

.cv-js .cv-sheet {
  opacity: 0;
  transform: translateY(34px) scale(0.985);
}

.cv-js .cv-sheet.cv-in {
  opacity: 1;
  transform: none;
  transition: opacity 0.9s ease, transform 1.2s var(--cv-ease);
}

.cv-js .cv-fade,
.cv-js .cv-sig {
  opacity: 0;
}

.cv-js .cv-fade {
  transform: translateY(14px);
}

.cv-js .cv-fade.cv-in {
  opacity: 1;
  transform: none;
  transition: opacity 0.8s ease, transform 1s var(--cv-ease);
}

/* Palabras y letras: carta.js las envuelve en spans con su retraso (--d). */
.cv-w,
.cv-c {
  display: inline-block;
}

.cv-js .cv-words:not(.cv-split),
.cv-js .cv-chars:not(.cv-split) {
  opacity: 0;
}

.cv-js .cv-words .cv-w {
  opacity: 0;
  transform: translateY(0.5em);
}

.cv-js .cv-words.cv-in .cv-w {
  opacity: 1;
  transform: none;
  transition: opacity 0.7s ease var(--d, 0ms), transform 0.95s var(--cv-ease) var(--d, 0ms);
}

.cv-js .cv-chars .cv-c {
  opacity: 0;
  transform: translateY(0.32em) rotate(7deg);
}

.cv-js .cv-chars.cv-in .cv-c {
  opacity: 1;
  transform: none;
  transition: opacity 0.6s ease var(--d, 0ms), transform 1.1s var(--cv-ease) var(--d, 0ms);
}

/* Firmas: la tinta avanza de izquierda a derecha, como al escribir. */
.cv-js .cv-sig {
  clip-path: inset(-40% 104% -40% -8%);
}

.cv-js .cv-sig.cv-in {
  opacity: 1;
  clip-path: inset(-40% -8% -40% -8%);
  transition: clip-path 1.5s cubic-bezier(0.5, 0.1, 0.3, 1), opacity 0.2s linear;
}

/* Matasellos: cae y se queda un poco torcido. */
.cv-js .cv-stamp {
  opacity: 0;
  transform: rotate(-3deg) scale(1.6);
}

.cv-js .cv-stamp.cv-in {
  opacity: 0.9;
  transform: rotate(-12deg) scale(1);
  transition: opacity 0.18s ease, transform 0.5s cubic-bezier(0.3, 1.45, 0.5, 1);
}
