/*
 * CSS de la INVITACIÓN publicada. Este fichero es lo único que necesita: ya no
 * carga veridika.css, la hoja de la web de venta (117 KB, 1.270 reglas), de la
 * que solo usaba unas 200. Así un cambio en la web no puede descolocar una
 * invitación ya publicada de un cliente.
 *
 * Dos partes:
 *   1. Base heredada de veridika.css — las reglas que la invitación usaba de
 *      verdad, copiadas tal cual el 23-09-2026 (reset, tipografía, rejilla
 *      .cuerpo, botones, formularios, popovers…). Si algo se ve raro en una
 *      invitación antigua, lo más probable es que falte aquí una regla.
 *   2. Lo propio de la invitación — titulares y secciones (más abajo).
 *
 * Los colores y las tipografías de cada diseño siguen llegando en línea desde
 * invitacion.php, porque cambian con la plantilla.
 */

/* ══ 1. Base heredada de veridika.css ══════════════════════════════════════ */

:root { --barra-ios: calc(100lvh - 100dvh); --border-color: #284467; --color-beige: #f4f0e9; --color-amarillo: #ffb200; --color-rojo: #ff0000; --color-marron: #a9975f; --color-gris: #666666; --color-blanco:#ffffff; --color-negro:#1c1c1b; --color-rosa:#f8bcca; --color-rosa-rgb: 248, 188, 202; --color-fondo: #E7E7E0; --color-fondo-rgb: 231, 231, 224; --box-shadow: 0 0 10px -2px rgba(0, 0, 0, 0.20); --color-fondo-inputs: #e4e4d9; --color-primary: #2D4C47; --color-primary-rgb: 45, 76, 71; --color-secondary: #d1b6b0; --color-secondary-rgb: 209, 182, 176; --color-tertiary: #b5796a; --color-tertiary-rgb: 181, 121, 106; --bs-primary: #2D4C47; }
a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video { margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline }
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { display:block }
body { line-height:1 }
ol,ul { list-style:none }
blockquote,q { quotes:none }
blockquote:after,blockquote:before,q:after,q:before { content:'';content:none }
table { border-collapse:collapse;border-spacing:0 }
* { -moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box }
html, body { font-size:16px; font-family: "Source Sans 3", sans-serif; margin:0px; padding:0px; color:#2c2c2c; height: 100%; background-color:var(--color-fondo); }
a[href] { color:var(--color-primary); text-decoration: none; }
a:hover { text-decoration: none; }
h1, h2, h3, h4, h5, h6 { margin: 0;font-family: inherit;font-weight: 300; color:inherit; text-rendering: optimizelegibility; }
strong { font-weight:700 }
p { margin:0px; margin-bottom:4px; }
ul { margin:0px; }
hr { margin-top:5px; margin-bottom:5px; padding:0px; height:1px; border:0px; background-color:#cccccc }
img { max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic; }
.hide { display:none !important }
.align-center { text-align:center !important; }
.tipo-standard { font-family: 'Source Sans 3', sans-serif !important; font-weight: 200; }
.display-block { display:block !important; }
.display-flex { display:flex !important; }
.d-flex { display: flex !important; }
.justify-content-end { justify-content: flex-end !important; }
.align-items-center { align-items: center !important; }
.gap-4 { gap: 4px !important; }
.max-width-900 { max-width: 900px !important; margin: auto; }
.width-100 { width: 100% !important; }
.px-0 { padding-left: 0px !important; padding-right: 0px !important; }
.pb-0 { padding-bottom: 0px !important; }
.mt-10 { margin-top: 10px !important; }
.mt-20 { margin-top: 20px !important; }
.mb-10 { margin-bottom: 10px !important; }
.mb-20 { margin-bottom: 20px !important; }
.mb-40 { margin-bottom: 40px !important; }
blockquote { padding: 10px 20px; margin: 0 0 20px 20px; font-size: 16px; border-left: 5px solid var(--color-rosa); font-style: italic; }
blockquote p { margin-bottom: 5px !important; font-size: 15px; font-style: italic; }
.cuerpo { width:1400px; margin:auto; clear:both; position: relative }
.cuerpo H1 { margin-top:0px; margin-top:5px; }
:root { --alto-cabecera: 120px; }
@media (min-width: 821px) and (max-width: 999px) {
  :root { --alto-cabecera: 152px; }
}
@media (max-width: 820px) {
  :root { --alto-cabecera: 96px; }
}
@media (max-width: 500px) {
  :root { --alto-cabecera: 88px; }
}
HEADER { overflow:visible; z-index:20; padding-top: 20px; padding-bottom: 20px; width:100%; webkit-transition: background-color .4s ease-in-out; -moz-transition: background-color .4s ease-in-out; -o-transition: background-color .4s ease-in-out; transition: background-color .4s ease-in-out; display: flex; }
.separacion { margin-top: 10px;margin-bottom: 10px; clear:both }
.subir { position: fixed; bottom: 0px; left: Calc(50% - 27px); z-index: 99999; display: none; transform: translateY(calc(-1 * var(--barra-ios, 0px))); transition: transform .15s ease-out; }
.subir SPAN { color: #FFF; padding: 12px; background-color:var(--color-primary); cursor: pointer; border-radius: 12px 12px 0 0; }
.subir SPAN A { color: #FFF; font-size: 25px; padding-top: 5px; }
.home-header { height:700px; position: relative; overflow: hidden; background: url(/images/hero.webp) no-repeat center bottom; background-size: cover; }
.fullscreen-arrow { position: absolute; bottom:50px; left: 0; right: 0; margin: auto; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); width:40px; height:40px; border-right: 3px solid #ffffff; border-bottom: 3px solid #ffffff; opacity: 0.6; z-index: 999; }
.fullscreen-arrow:hover { cursor:pointer; bottom: 45px; }
.fullscreen-arrow { -webkit-animation: slide 1s linear infinite; animation: slide 1s linear infinite; }
@-webkit-keyframes slide { 0% { opacity:0; transform: translateY(0px) rotate(45deg); }
50% { opacity:1; transform: translateY(10px) rotate(45deg); }
100% { opacity:0; transform: translateY(0px) rotate(45deg); }
} @keyframes slide { 0% { opacity:0; transform: translateY(0px) rotate(45deg); }
50% { opacity:1; transform: translateY(10px) rotate(45deg); }
100% { opacity:0; transform: translateY(0px) rotate(45deg); }
} .carrusel { width:100%; position:relative; margin:auto; height: 100%; z-index: 0 }
.flexxx { display: flex; align-items: center; justify-content: center; height: 100%; }
.carrusel_slide { margin:auto; overflow:hidden; display:block; width:100%; height:100%; }
.carrusel_textos { display:block; width:100%; overflow:visible; text-align:left; z-index:2; color:#2c2c2c; position: relative; margin-top: 30px; }
.carrusel_textos UL { padding: 0 }
.carrusel_textos UL LI { background: url(/images/ico-check.svg) no-repeat left top; background-size: 20px; padding-left:30px; list-style: none; margin-bottom: 10px; line-height: 20px; }
.home-header .swiper-pagination-horizontal { display: flex !important; align-items: center; justify-content: flex-end; padding: 5px 15px; }
.carrusel *:focus { outline:none; }
.carrusel_imagen { background-size: cover; background-repeat: no-repeat; background-color: var(--color-fondo); background-position: bottom; height: 100%; position: absolute; top: 0; bottom: 0; width: 100%; }
.swiper { overflow-y: hidden !important; overflow-x: hidden !important; }
.swiper-scrollbar-drag { background:var(--color-primary) !important; height: 2px !important; border-radius: 0 !important; top: 0px !important; }
.swiper-scrollbar-horizontal { left: 0 !important; height: 2px !important; overflow: visible !important; background-color: #CCCFCF !important; width: 70% !important; margin: 32px auto 2px auto; }
.swiper-button-prev:after, .swiper-rtl .swiper-button-next:after { content: '' !important; }
.swiper-button-next:after, .swiper-rtl .swiper-button-prev:after { content: '' !important; }
.swiper-button-next { width: auto !important; right: 0 !important; }
.swiper-button-prev { width: auto !important; left: 0 !important; }
.swiper-pagination-bullet-active { background-color: var(--color-primary) !important; width: 12px !important; height: 12px !important; }
.swiper-pagination-horizontal { display: flex !important; align-items: center; justify-content: center; }
.swiper-pagination-bullet { margin: 0 3px !important; }
.my-gallery { overflow: hidden; margin-bottom:0 }
.my-gallery figure { margin: 0px; position: relative; display: flex;flex-direction: column; align-items: center; }
.my-gallery figcaption { display: none; background-color: #FFFFFF; height: auto !important; position: absolute !important; bottom: -16px; padding: 20px !important; margin: auto !important; color: #000 !important; text-align: center; flex-direction: column; gap: 12px; border-radius: 16px; }
.my-gallery img { width: 100%; height: 400px; object-fit: cover; padding: 1px; border-radius: 0px !important;-webkit-transform: scale(1.01); -moz-transform: scale(1.01); -ms-transform: scale(1.01); -o-transform: scale(1.01); transform: scale(1.01); -webkit-transition: all, 0.6s; -moz-transition: all, 0.6s; -o-transition: all, 0.6s; transition: all, 0.6s; }
.my-gallery figure:hover img { -webkit-transform: scale(0.95); -moz-transform: scale(0.95); -ms-transform: scale(0.95); -o-transform: scale(0.95); transform: scale(0.95); -webkit-transition: all, 0.6s; -moz-transition: all, 0.6s; -o-transition: all, 0.6s; transition: all, 0.6s; }
.pswp__bg { background-color:#000d0a !important }
.appinvitacion .carrusel_textos { height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap:20px; align-items: center; }
#countdown { font-size: 18px; display: none }
#countdown SPAN { font-size: 48px; margin-left: 20px; }
.appinvitacion .carrusel_slide { background-color: #333; }
.banda-ubicaciones { padding: 20px 0; }
.listado-ubicaciones { display: flex; justify-content: center; text-align: center; margin: auto; gap:8px; }
.listado-ubicaciones .ubicacion { min-width: 250px; max-width: 350px; padding: 48px 0; }
.listado-ubicaciones .nombre { font-size: 35px; margin-bottom: 10px; }
.listado-ubicaciones .fechaUbicacion { font-size: 25px; margin: 20px 0; color: var(--color-principal); display: flex; justify-content: center; align-items: center; }
.listado-ubicaciones .fechaUbicacion .separacion { width: 1px; background-color:var(--color-principal); height: 60px; margin:0 20px; }
.listado-ubicaciones .lugar { font-size: 18px; margin-top: 10px; color:var(--color-principal); }
.listado-ubicaciones .direccion { font-size: 16px; color:var(--color-principal); line-height: 17px; }
.banda-ubicaciones A { color: var(--color-principal); }
.appinvitacion .notas { text-align: center; padding:40px 10px 0 10px; }
.banda-asistencia { color:var(--color-principal); text-align: center; padding: 60px 0; }
.banda-contacto { color:#333; text-align: center; }
.banda-contacto .cuerpo { padding: 60px 0 }
.appinvitacion .form-floating > label { font-size: 15px; }
.appinvitacion .popover { -webkit-box-shadow: none;box-shadow: none; }
.appinvitacion .popover .wrap { background-color: transparent; height: 100% }
.appinvitacion .popover .content { height: 100%; display: flex; justify-content: center; align-items: center; width: 100%; flex-direction: column; }
.appinvitacion .contenido-video { width:auto; }
.appinvitacion .popover-cerrar { top: 0 }
.appinvitacion .popover { width: auto; min-width: auto; top: 10px; left: 10px; bottom: 10px; height: 100%; margin: 0px auto !important; padding: 0px; right: 10px; position: fixed; overflow: hidden; }
@media(max-width: 499px) {
  .appinvitacion .carrusel_textos { height: calc(100% - 100px); }
  .appinvitacion #countdown SPAN { font-size:28px; margin-left: 10px; }
  .appinvitacion .banda-ubicaciones { padding: 0px 0; }
  .appinvitacion .listado-ubicaciones { flex-direction: column; gap:12px; }
  .appinvitacion .banda-asistencia { padding: 60px 0; }
  .appinvitacion .fullscreen-arrow { bottom:40px; }
}
.popover { position:fixed; max-height:auto; min-width:400px; width:800px; -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 1px 15px 0 rgba(0, 0, 0, 0.2); z-index: 999999; clear:both; left: Calc(50% - 400px); top: Calc(50% - 190px); display: none; }
.popover .wrap { background: #ffffff; border: 0px solid #ffffff; }
.popover .content { padding: 0px; margin: 0px; max-height: auto; line-height: 1.3em; font-size: 14px; overflow: hidden; }
.popover H1 { margin-bottom:15px; font-size:32px; font-weight:300; color:#000; line-height:34px; }
.modal-backdrop { position: fixed;top:0; right:0; bottom: 0; left:0; z-index:30; background-color: #090909; opacity: 0.8; filter: alpha(opacity=90); display: none; }
.popover-cerrar { text-align:right; margin:10px; font-size:30px; position:absolute; right:0px; z-index: 2; }
.popover input { margin-bottom:5px; }
.popover INPUT { -webkit-appearance: none !important; -moz-appearance: none !important; sborder-radius:0; margin-bottom:5px !important; display: block }
.contenido-video { line-height: 0.8em }
.modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #090909; opacity: 0.8; filter: alpha(opacity=80); }
.boton { font-family: inherit; text-align: center; line-height: 28px; border-width: 2px; border-radius: 32px; margin: 0px; letter-spacing: 0px; font-weight: 500; font-size: 18px; background: transparent; color: #3B2D0E !important; width: auto; user-select: none; white-space: nowrap; vertical-align: middle; border: 2px solid #3B2D0E; display: inline-flex; flex-direction: row; justify-content: center; align-items: center; padding: 10px 40px; gap: 8px; flex: none; order: 1; flex-grow: 0; transition: ease-in-out 0.2s; -webkit-transition: ease-in-out 0.2s; -moz-transition: ease-in-out 0.2s; -ms-transition: ease-in-out 0.2s; -o-transition: ease-in-out 0.2s; }
.boton:hover { background: var(--color-beige) !important; border-color: var(--color-beige) !important; color: #3B2D0E !important;cursor: pointer; text-decoration: none }
.boton.boton-beige { color: #fff; border: 2px solid var(--color-beige); background-color:var(--color-beige); }
.boton.boton-beige:hover { background: var(--color-secondary) !important; border-color: var(--color-secondary) !important; color: var(--color-beige) !important; }
.boton.sm { line-height:15px; border-width: 2px; margin: 0px; padding: 8px 20px; letter-spacing: 0px; font-weight: 500; font-size: 16px }
.boton.boton-xl { line-height:20px; border-width: 2px; margin: 0px; padding: 24px 50px; vertical-align: middle;font-weight:400; font-size:20px; border-radius: 60px; }
.boton.boton-icon { display: inline-flex; align-items: center; justify-content: center; padding: 0; height: calc(1em + 1rem + 4px); width: calc(1em + 1rem + 4px); border-radius: 90px; }
.boton:not([href]):hover { background-color: transparent!important; cursor: auto; color: inherit !important; }
input[type="text"], input[type="number"], input[type="date"], input[type="month"], input[type="password"], input[type="tel"], input[type="time"], input[type="email"], textarea, select { border: 1px solid rgba(var(--color-fondo-rgb), 0.25);border-radius: 16px; color: inherit; background: var(--color-fondo-inputs); outline: none; width: 100%; font-family: inherit; font-size: 15px; padding: 20px 16px; margin: 0px; line-height: normal; }
@media (pointer: coarse) {
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), select, textarea { font-size: 16px !important; }
}
.boton-principal { background: var(--color-principal) !important; color: var(--color-terciario) !important; border: 2px solid var(--color-principal) !important; }
.boton-principal:hover { background: var(--color-terciario) !important; border-color: var(--color-principal) !important; color: var(--color-principal) !important; }
.form-control { display: block; width: 100%; padding: 10px 16px; font-size: 16px; font-weight: 500; color: #5E6278; background-color: #fff; background-clip: padding-box; border: 1px solid #CCCFCF; appearance: none; border-radius: 16px; box-shadow: false; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }
.form-control:focus { color: var(#5E6278); background-color: #ffffff;border-width: 2px; border-color: var(--color-fondo); outline: 0; box-shadow: false, 0 0 0 0.25rem rgba(var(--color-azul), 0.25); }
.form-control::-webkit-date-and-time-value { height: 1.5em; }
.form-control::-webkit-datetime-edit { display: block; padding: 0; }
.form-control::placeholder { color: #A1A5B7; opacity: 1; }
.form-control:disabled { color: #A1A5B7; background-color: #F4F4F4; border-color: #E1E3EA; opacity: 1; }
.form-floating { position: relative; }
.form-floating::before:not(.form-control:disabled) { position: absolute; top: 1px; left: 1px; width: calc(100% - (calc(calc(0.375em + 0.3875rem) + calc(0.75em + 0.775rem)))); height: 1.875em; content: ""; background-color:#fff; border-radius: 16px; }
.form-floating > .form-control, .form-floating > .form-control-plaintext, .form-floating > .form-select { line-height: 1.25; }
.form-floating > label { position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 20px 16px; overflow: hidden; text-align: start; text-overflow: ellipsis; white-space: nowrap; pointer-events: none; border: 1px solid transparent; transform-origin: 0 0; transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; }
.form-control-solid { border: 1px solid rgba(var(--color-fondo-rgb), 0.25); border-radius: 16px; color: inherit; background: rgba(var(--color-fondo-rgb), 0.25); }
@media (prefers-reduced-motion: reduce) {
  .form-floating > label { transition: none; }
}
.form-floating > .form-control,.form-floating > .form-control-plaintext { padding: 20px 16px; }
.form-floating > .form-control::placeholder,.form-floating > .form-control-plaintext::placeholder { color: transparent; }
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), .form-floating > .form-control-plaintext:focus,.form-floating > .form-control-plaintext:not(:placeholder-shown) { padding: 20px 16px; }
.form-floating > .form-control:-webkit-autofill,.form-floating > .form-control-plaintext:-webkit-autofill { padding: 20px 16px; -webkit-box-shadow: 0 0 0 30px white inset !important; box-shadow: 0 0 0 30px white inset !important; border-color: cadetblue; }
.form-floating > .form-control:focus ~ label, .form-floating > .form-control:not(:placeholder-shown) ~ label, .form-floating > .form-control-plaintext ~ label, .form-floating > .form-select ~ label { transform: scale(0.85) translateY(-0.2rem) translateX(0.55rem); background: transparent; width: auto; padding: 0 10px; height: auto; top: 10px; }
.form-floating > .form-control:-webkit-autofill ~ label { transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); top:0 }
.form-floating > .form-control:disabled ~ label { color: #7E8299; }
textarea.form-control { height: auto !important; }
.required:after { content: "*"; position: relative; font-size: inherit; color: #F1416C; padding-left: 0.25rem; font-weight: bold; }
* { box-sizing: border-box; }
.fecha { font-size:14px; color:#aaaaaa; line-height:30px; }
.txt-negro { color:#090909 !important; }
.txt-09 { font-size:0.9em !important; }
a img { border:none }
a img:hover { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; }
@media (max-width: 1400px) {
  .cuerpo { width:1284px; margin:auto }
  .carrusel .cuerpo { width:85% !important; margin: auto; display: block !important; }
  .carrusel_textos p { margin-top: 10px; margin-left: 0px; width:100%; }
}
@media (max-width: 1284px) {
  .carrusel { padding: 0px; }
  .carrusel .cuerpo { width: inherit !important; }
  .cuerpo { width:1150px; margin:auto }
}
@media(min-width:1025px) and (max-width: 1150px) {
  .cuerpo { width:95%; margin:auto }
}
@media (max-width: 1024px) {
  HEADER { padding-bottom: 10px }
  .cuerpo { width:95%; margin:auto }
  .popover H1 { font-size:22px; line-height:22px; }
}
@media (max-width:820px) {
  html, body { padding-top:0px; }
  HEADER { padding: 0 }
  nav.activo ul { list-style-type: none; padding: 0; margin: 0; transition: all 0.3s ease-in-out; }
  nav.activo ul li { transform: translateY(50px); display: block; margin: 0; }
  nav.activo ul li a { display: block; font-size: 1.2em; text-decoration: none; padding: 5px 0; text-align: center; color: #fff; font-weight: bold; transition: all 0.2s ease-in-out; }
  nav.activo ul li a:hover { color: var(--color-rosa); }
  nav.activo { opacity: 1; visibility: visible; }
  nav.activo ul { top: 70px; }
  nav.activo ul li { transform: translateY(0px); opacity: 1 !important; }
  nav.activo ul li:nth-child(1) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.1s; }
  nav.activo ul li:nth-child(2) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.2s; }
  nav.activo ul li:nth-child(3) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.3s; }
  nav.activo ul li:nth-child(4) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.4s; }
  nav.activo ul li:nth-child(5) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.5s; }
  nav.activo ul li:nth-child(6) { transition: all 0.3s cubic-bezier(0.6, 0, 0.8, 1.5) 0.6s; }
  .carrusel { width:100%; }
  .carrusel_textos p { margin-top: 20px; margin-left: 0px; width:100% }
  .carrusel_textos { margin-top: 0px; padding: 40px; width: 100%; }
  .carrusel_textos .cuerpo { width:85% }
  .carrusel_textos p { margin-top: 10px; margin-left: 0px; width:100%; }
}
@media (max-width:769px) {
  html, body { margin-top:0px; }
  .cuerpo { width:90%; margin:auto }
  .carrusel_textos p { font-size:17px; line-height:17px; }
  .separacion { margin-bottom:10px; margin-top: 10px; }
}
@media (max-width:500px) {
  html, body { padding-top:0px; }
  blockquote { margin-left: 15px; }
  .cuerpo { width:90%; margin:auto }
  HEADER .cuerpo { width: 100% }
  .popover { max-width: 400px; width: 400px; left: Calc(50% - 200px); top: Calc(50% - 270px); }
  .popover { width: auto; min-width:auto; top: 10px; left: 10px; bottom: 10px; height: 100%; margin: 0px auto !important; padding: 0px; right: 10px; position: fixed; overflow: hidden; }
  .popover .wrap { height: 97%; left: 0; right: 0 }
  .popover .content { height:100%; }
  .popover H1 { font-size:22px; line-height:22px; }
  .home-header { height: 400px; }
  .fullscreen-arrow { bottom: 80px; }
  .carrusel { width:100%; background: none; }
  .carrusel_textos { margin-top: 0px; padding: 40px }
  .carrusel_textos .cuerpo { width:85% }
  .carrusel_textos p { margin-top: 10px; margin-left: 0px; width:100%; font-size: 15px; line-height:17px; }
  .carrusel .boton { margin: auto; display: block; text-align: center; font-size: 18px; padding: 10px 20px; }
}
@media (max-width:499px) {
  .cuerpo { width:90%; margin:auto }
}
:root { --color-rosa-palo: #e8d5cc; --pie-borde: rgba(45, 76, 71, 0.16); }

/* ══ 2. Propio de la invitación ═════════════════════════════════════════════ */

/*
 * Titulares de la INVITACIÓN publicada.
 *
 * Antes las invitaciones usaban .heading-L / .heading-M / .heading-XXS de
 * veridika.css, las mismas clases que la web de venta: tocar un titular de la
 * home cambiaba, sin avisar, las invitaciones ya publicadas de los clientes.
 * Aquí viven las suyas, con los mismos valores que tenían el 23-09-2026, para
 * que la web y las invitaciones puedan evolucionar por separado.
 *
 * Quién las usa: web/app/vistas/appinvitaciones/invitacion.php (títulos de
 * sección: historia, cuenta atrás, ubicaciones, programa, regalos, música,
 * asistencia y mensajes).
 *
 * Las plantillas pueden cambiarlas por dos vías, y las dos apuntan ya a estas
 * clases: el ajuste «Título de sección» del ADM (plantilla > Elementos) y el
 * CSS personalizado de cada plantilla.
 *
 * `!important` como en veridika.css: .tipografia_1 y otras reglas del sitio
 * también lo llevan, y sin él no ganarían.
 */
.inv-tit-l   { font-size: 40px !important; font-style: normal; font-weight: 300; line-height: 40px; }
.inv-tit-m   { font-size: 34px !important; font-style: normal; font-weight: 300; line-height: 36px; }
.inv-tit-xxs { font-size: 17px !important; font-style: normal; font-weight: 300; line-height: 20px !important; }

/* ── Pantalla de bienvenida (vídeo o portada) ─────────────────────────────────────────────────────
   Estaba en un <style> dentro de invitacion.php; aquí se cachea y no viaja
   en cada invitación que se abre. Usa las variables de color y tipografía
   que la propia invitación define en línea, porque cambian con el diseño. */
    /* Pantalla de bienvenida con vídeo mudo a full screen. La portada
       (imagen + aviso) queda por encima; al pulsar, hace fade-out y el
       vídeo se ve por debajo hasta terminar. */
    .wk-bienvenida-cine {
        position: fixed; inset: 0; z-index: 9998;
        width: 100vw; height: 100vh;
        overflow: hidden; background: #000;
    }
    .wk-bienvenida-cine video {
        position: absolute; inset: 0;
        width: 100%; height: 100%;
        object-fit: cover;
        opacity: 0;                                    /* invisible hasta que arranca */
        transition: opacity .3s ease;
    }
    .wk-bienvenida-cine[data-activo="1"] video { opacity: 1; }

    .wk-bienvenida-portada {
        position: fixed; inset: 0; z-index: 9999;
        width: 100vw; height: 100vh;
        cursor: pointer; overflow: hidden;
        background: #000 center/cover no-repeat;
        transition: opacity .8s ease;
    }
    .wk-bienvenida-portada img {
        position: absolute; inset: 0;
        width: 100%; height: 100%;
        object-fit: cover;
    }
    .wk-bienvenida-portada .wk-bienvenida-aviso {
        position: absolute; left: 50%; bottom: 40px; transform: translateX(-50%);
        color: #fff; font-size: 14px; letter-spacing: .18em; text-transform: uppercase;
        background: rgba(0,0,0,.35); padding: 10px 22px; border-radius: 999px;
        pointer-events: none;
        white-space: nowrap;                     /* que no se parta el pill en dos lineas cuando el mockup es estrecho */
    }
    .wk-bienvenida-portada[data-oculto="1"] { opacity: 0; pointer-events: none; }
    /* Nombres del invitado sobre la imagen. :where() deja la especificidad a 0
       para que el CSS personalizado de la plantilla pueda recolocarlos. */
    :where(.wk-bienvenida-portada .wk-sobre-nombres) {
        position: absolute; left: 50%; bottom: 25%; transform: translateX(-50%);
        width: 80%; max-width: 560px; text-align: center;
        color: var(--color-principal); font-size: clamp(28px, 7vw, 56px); line-height: 1.15;
        pointer-events: none;
    }

    body.wk-sin-scroll { overflow: hidden; }

/* ── Itinerario · línea de tiempo ─────────────────────────────────────────────────────
   Estaba en un <style> dentro de invitacion.php; aquí se cachea y no viaja
   en cada invitación que se abre. Usa las variables de color y tipografía
   que la propia invitación define en línea, porque cambian con el diseño. */
.banda-itinerario { padding: 20px 0; }
.iti-timeline { list-style: none; padding: 0 0 0 30px; margin: 0 auto; max-width: 640px; position: relative; }
.iti-timeline:before {
    content: ''; position: absolute; left: 134px; top: 8px; bottom: 8px;
    width: 1px; background: var(--color-secundario); opacity: .35;
}
.iti-tl-item { position: relative; padding: 0 0 20px 144px; min-height: 56px; }
.iti-tl-item:last-child { padding-bottom: 0; }
.iti-tl-dot {
    position: absolute; left: 98px; top: 6px;
    width: 13px; height: 13px; border-radius: 50%;
    background: var(--color-secundario);
    border: 1px solid var(--color-principal);
    z-index: 1;
    display: flex; align-items: center; justify-content: center;
}
.iti-tl-dot.has-icon {
    left: 88px; top: 0;
    width: 32px; height: 32px;
    font-size: 14px;
    color: var(--color-principal);
}
.iti-tl-dot.has-icon i { line-height: 1; }
.iti-tl-hora {
    position: absolute; left: 0; top: 8px; width: 72px;
    text-align: right; font-size: 18px; font-weight: 600;
    color: var(--color-principal);
}
.iti-tl-body { padding-top: 6px; }
.iti-tl-titulo { font-size: 18px; margin: 0 0 4px; font-weight: 600; }
.iti-tl-desc   { font-size: 14px; color: #666; margin: 0; line-height: 1.4; }
@media (max-width: 600px) {
    .iti-timeline:before { left: 110px; }
    .iti-tl-dot { left: 74px; }
    .iti-tl-dot.has-icon { left: 64px; }
    .iti-tl-item { padding-left: 108px; }
    .iti-tl-hora { width: 52px; font-size: 16px; }
}

/* ── Álbum · mosaico de fotos y QR ─────────────────────────────────────────────────────
   Estaba en un <style> dentro de invitacion.php; aquí se cachea y no viaja
   en cada invitación que se abre. Usa las variables de color y tipografía
   que la propia invitación define en línea, porque cambian con el diseño. */
.banda-album { padding: 60px 20px; text-align: center; }
.banda-album .album-mosaico {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
	gap: 4px;
	margin: 24px 0;
}
.banda-album .album-mosaico img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.banda-album .album-qr { margin-top: 18px; }

/* ── Botón de música de fondo ─────────────────────────────────────────────────────
   Estaba en un <style> dentro de invitacion.php; aquí se cachea y no viaja
   en cada invitación que se abre. Usa las variables de color y tipografía
   que la propia invitación define en línea, porque cambian con el diseño. */
.mus-fondo-btn {
    position: fixed; top: 20px; right: 20px; z-index: 10001;
    width: 44px; height: 44px; border-radius: 50%; border: 0; cursor: pointer;
    background: rgba(0,0,0,0.45); color: #fff; padding: 0; line-height: 0;
    display: none; align-items: center; justify-content: center;
    box-shadow: 0 4px 14px rgba(0,0,0,.25);
    transition: background .2s ease, opacity .3s ease;
    pointer-events: auto;
}
.mus-fondo-btn[data-visible="1"] { display: flex; }
.mus-fondo-btn:hover { background: rgba(0,0,0,0.6); }
.mus-fondo-btn svg { width: 20px; height: 20px; }
.mus-fondo-btn .wk-icon-on,
.mus-fondo-btn .wk-icon-off { display: none; }
.mus-fondo-btn[data-mute="0"] .wk-icon-on  { display: block; }
.mus-fondo-btn[data-mute="1"] .wk-icon-off { display: block; }

/* ── Diálogos (SweetAlert) ────────────────────────────────────────────────────
   La invitación carga `sweetalert2@11.js`, que es el bundle con sus estilos
   dentro, pero NO carga `veridika.css`, donde el resto del sitio le da su
   acabado. Resultado: los popups de mensajes y de asistencia salían con las
   esquinas casi rectas (5px) y el título pegado arriba, distintos de los del
   panel. Aquí se repiten esas mismas reglas. */
div:where(.swal2-container) div:where(.swal2-popup) { border-radius: 24px !important; overflow: hidden; }
.swal2-modal .swal2-title { padding-top: 50px !important; font-size: 22px !important; }
.swal2-container .swal2-close:focus { box-shadow: none !important; }
/* Sin rebote al abrir: la animación de serie de SweetAlert sobrepasa el tamaño
   final (scale 1.05 → 0.95 → 1) y en una invitación se nota mucho. Se cambia
   por un fundido corto con una subida mínima. */
@keyframes swal-suave { from { opacity: 0; transform: scale(.97) translateY(6px); } to { opacity: 1; transform: none; } }
.swal2-popup.swal2-show { animation: swal-suave .18s ease-out !important; }
