/**
 * Tema ESENCIA (Minimalist) — papel crema, acuarela y olivo.
 * Tipografía Cormorant Garamond (serif en versalitas) + Alex Brush (caligrafía).
 *
 * La invitación se presenta como una tarjeta vertical centrada (ancho móvil) sobre
 * un fondo neutro. Todas las reglas viven dentro de `.theme-minimalist-esencia`
 * para que ningún estilo escape a otras plantillas.
 */

.theme-minimalist-esencia {
    --es-bg: #e9e3d7;          /* fondo exterior (desktop) */
    --es-paper: #f9f6ef;       /* tarjeta; tono medio del papel de la ilustración */
    --es-text: #454a40;
    --es-text-soft: #6f746a;
    --es-gold: #b89f74;
    --es-olive: #5b6a4e;      /* verde oliva oscuro: titular caligráfico */
    --es-line: #b9bdb3;

    --es-font-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
    --es-font-script: 'Alex Brush', 'Cormorant Garamond', cursive;

    --site-bg: var(--es-bg);

    background: var(--es-bg);
    color: var(--es-text);
    font-family: var(--es-font-serif);
    line-height: 1.6;
    min-height: 100vh;
    overflow-x: clip;
}

.theme-minimalist-esencia img,
.theme-minimalist-esencia svg,
.theme-minimalist-esencia video {
    max-width: 100%;
}

/* Tarjeta vertical: a ancho completo en móvil, centrada y con sombra en desktop. */
.theme-minimalist-esencia .es-page {
    position: relative;
    max-width: 520px;
    margin: 0 auto;
    min-height: 100vh;
    min-height: 100dvh;
    background: var(--es-paper);
    overflow-x: clip;
}

@media (min-width: 640px) {
    .theme-minimalist-esencia {
        padding: 32px 16px;
    }
    .theme-minimalist-esencia .es-page {
        min-height: auto;
        border-radius: 18px;
        box-shadow: 0 18px 50px rgba(59, 56, 51, 0.14);
    }
}

.theme-minimalist-esencia h1,
.theme-minimalist-esencia h2,
.theme-minimalist-esencia h3 {
    font-family: var(--es-font-serif);
    font-weight: 400;
    color: var(--es-text);
}

/* ─── HERO ──────────────────────────────────────────────────── */
.theme-minimalist-esencia .es-hero {
    position: relative;
    text-align: center;
    padding: 0 28px 52px;
    overflow: hidden;
    border-radius: inherit;
}

/* Ilustración de cabecera: centrada, con margen de papel a los lados. */
.theme-minimalist-esencia .es-hero__art-wrap {
    padding: 18px 6% 0;
}
.theme-minimalist-esencia .es-hero__art {
    display: block;
    width: 100%;
    height: auto;
    /* Funde los bordes del JPEG con el papel (su fondo no es un color plano). */
    -webkit-mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, #000 68%, transparent 100%);
    mask-image: radial-gradient(ellipse 80% 80% at 50% 50%, #000 68%, transparent 100%);
}

/* Ramas de olivo. Ambos PNG traen el tallo abajo a la derecha y las hojas hacia
   arriba-izquierda:
     - izquierda: espejada en horizontal → el tallo sale por el borde izquierdo
       y las hojas suben hacia la derecha, pegada a la esquina superior.
     - derecha: tal cual → el tallo sale por el borde derecho a media altura
       de la ilustración y las hojas apuntan hacia arriba-izquierda. */
.theme-minimalist-esencia .es-hero__flower {
    position: absolute;
    height: auto;
    pointer-events: none;
    user-select: none;
    z-index: 2;
    /* Elimina el halo claro que traen los PNG sobre el papel crema. */
    mix-blend-mode: multiply;
}
.theme-minimalist-esencia .es-hero__flower--left {
    top: 0;
    left: 0;
    width: 36%;
    max-width: 200px;
    --es-sway-base: translate(0, 0);
    transform-origin: 100% 100%; /* el tallo está abajo a la derecha */
    animation: esSwayLeft 7.5s ease-in-out infinite;
}
.theme-minimalist-esencia .es-hero__flower--right {
    top: 33%;
    right: -18px;
    width: 42%;
    max-width: 230px;
    --es-sway-base: translate(20%, 0);
    transform: var(--es-sway-base);
    transform-origin: 100% 100%; /* el tallo sale por el borde derecho */
    animation: esSwayRight 9s ease-in-out infinite;
    animation-delay: -3s; /* desfasada respecto a la izquierda */
}

/* Brisa: balanceo lento de ±1,5º alrededor del tallo, con una leve deriva
   para que no parezca un péndulo. */
@keyframes esSwayLeft {
    0%   { transform: var(--es-sway-base) rotate(0deg); }
    30%  { transform: var(--es-sway-base) rotate(1.6deg) translateY(-2px); }
    55%  { transform: var(--es-sway-base) rotate(-0.6deg); }
    80%  { transform: var(--es-sway-base) rotate(1deg) translateY(-1px); }
    100% { transform: var(--es-sway-base) rotate(0deg); }
}
@keyframes esSwayRight {
    0%   { transform: var(--es-sway-base) rotate(0deg); }
    35%  { transform: var(--es-sway-base) rotate(-1.4deg) translateY(-2px); }
    60%  { transform: var(--es-sway-base) rotate(0.5deg); }
    85%  { transform: var(--es-sway-base) rotate(-0.9deg) translateY(-1px); }
    100% { transform: var(--es-sway-base) rotate(0deg); }
}
@media (prefers-reduced-motion: reduce) {
    .theme-minimalist-esencia .es-hero__flower--left,
    .theme-minimalist-esencia .es-hero__flower--right,
    .theme-minimalist-esencia .es-places__flower,
    .theme-minimalist-esencia .es-rsvp__flower {
        animation: none;
    }
}

.theme-minimalist-esencia .es-hero__content {
    position: relative;
    z-index: 1;
    margin-top: -18px;
}

/* "¡Nos casamos!" en caligrafía dorada. */
.theme-minimalist-esencia .es-hero__title {
    font-family: var(--es-font-script);
    font-weight: 400;
    font-size: clamp(2.6rem, 12vw, 3.6rem);
    line-height: 1.1;
    color: var(--es-olive);
    margin: 0 0 14px;
}

/* Frases en versalitas con tracking amplio. */
.theme-minimalist-esencia .es-hero__intro,
.theme-minimalist-esencia .es-hero__closing {
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.78rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    line-height: 1.45;
    color: var(--es-text);
    max-width: 330px;
    margin: 0 auto;
}
.theme-minimalist-esencia .es-hero__intro {
    margin-bottom: 30px;
}

.theme-minimalist-esencia .es-hero__closing {
    margin-top: 28px;
}

/* Nombres: serif ligera, mayúsculas y mucho tracking. */
.theme-minimalist-esencia .es-hero__names {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 400;
    font-size: clamp(2.2rem, 10.5vw, 3.1rem);
    letter-spacing: 0.34em;
    text-transform: uppercase;
    line-height: 1.1;
    color: var(--es-olive);
    /* Compensa el tracking final para que el texto quede centrado ópticamente. */
    padding-left: 0.34em;
}
.theme-minimalist-esencia .es-hero__name {
    display: block;
}
.theme-minimalist-esencia .es-hero__amp {
    display: flex;
    align-items: center;
    gap: 14px;
    font-family: var(--es-font-script);
    font-size: 0.6em;
    letter-spacing: 0;
    text-transform: none;
    line-height: 1;
    color: var(--es-olive);
    margin: 6px 0 4px -0.34em;
}
/* Líneas finas a ambos lados de la "y". */
.theme-minimalist-esencia .es-hero__amp::before,
.theme-minimalist-esencia .es-hero__amp::after {
    content: '';
    width: 64px;
    height: 1px;
    background: var(--es-line);
}

@media (max-width: 380px) {
    .theme-minimalist-esencia .es-hero {
        padding-left: 20px;
        padding-right: 20px;
    }
    .theme-minimalist-esencia .es-hero__art-wrap {
        padding: 14px 4% 0;
    }
}

/* ─── FRANJA FECHA / CEREMONIA / CELEBRACIÓN ────────────────── */
.theme-minimalist-esencia .es-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: start;
    gap: 0;
    width: 100%;
    box-sizing: border-box;
    padding: 6px 14px 34px;
    text-align: center;
}
.theme-minimalist-esencia .es-strip__col {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    padding: 0 8px;
    min-width: 0;
}
.theme-minimalist-esencia .es-strip__col + .es-strip__col {
    border-left: 1px solid var(--es-line);
}
.theme-minimalist-esencia .es-strip__icon {
    display: block;
    width: 28px;
    height: 28px;
    color: var(--es-olive);
    margin-bottom: 6px;
}
.theme-minimalist-esencia .es-strip__icon svg {
    width: 100%;
    height: 100%;
    display: block;
}
/* Iconos en acuarela (PNG): un poco más grandes que la silueta SVG y fundidos
   con el papel para eliminar el halo claro del PNG. */
.theme-minimalist-esencia .es-strip__icon--img {
    width: 36px;
    height: 36px;
    object-fit: contain;
    mix-blend-mode: multiply;
}
.theme-minimalist-esencia .es-strip__icon--wide {
    width: 50px;
}
.theme-minimalist-esencia .es-strip__label,
.theme-minimalist-esencia .es-strip__sub {
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.56rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    line-height: 1.45;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-strip__sub {
    font-weight: 400;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-strip__day {
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-variant-numeric: lining-nums;
    font-size: 2rem;
    line-height: 1;
    letter-spacing: 0.02em;
    color: var(--es-text);
    margin: 2px 0;
}
.theme-minimalist-esencia .es-strip__name {
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.68rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    line-height: 1.4;
    color: var(--es-text);
    margin: 2px 0;
    overflow-wrap: anywhere;
}

/* ─── CUENTA ATRÁS ──────────────────────────────────────────── */
.theme-minimalist-esencia .es-countdown {
    padding: 4px 22px 36px;
    text-align: center;
}

/* Titular sobre la pincelada. La imagen es 3:1 y lleva la ramita en la parte
   superior, por eso el texto se centra en el tercio inferior de la mancha. */
.theme-minimalist-esencia .es-countdown__head {
    position: relative;
    display: inline-block;
    margin: 0 auto 18px;
}
.theme-minimalist-esencia .es-countdown__head--brush {
    width: min(330px, 92%);
    aspect-ratio: 2.4 / 1;
}
.theme-minimalist-esencia .es-countdown__brush {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    /* fill: se estira un poco en vertical para que la mancha sea más alta. */
    object-fit: fill;
    mix-blend-mode: multiply;
    pointer-events: none;
    user-select: none;
}
.theme-minimalist-esencia .es-countdown__title {
    position: relative;
    z-index: 1;
    margin: 0;
    font-family: var(--es-font-script);
    font-size: clamp(1.9rem, 8vw, 2.4rem);
    line-height: 1;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-countdown__head--brush .es-countdown__title {
    position: absolute;
    left: 0;
    right: 0;
    top: 60%;
    transform: translateY(-50%);
}

/* Cuatro casillas. */
.theme-minimalist-esencia .es-countdown__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    max-width: 380px;
    margin: 0 auto;
}
.theme-minimalist-esencia .es-countdown__cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 4px 10px;
    background: #fdfcf9;
    border: 1px solid var(--es-line);
    border-radius: 6px;
    min-width: 0;
}
.theme-minimalist-esencia .es-countdown__num {
    font-family: var(--es-font-serif);
    font-variant-numeric: lining-nums tabular-nums;
    font-weight: 500;
    font-size: 1.55rem;
    line-height: 1;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-countdown__label {
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.5rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--es-text-soft);
}

/* ─── PROGRAMA ──────────────────────────────────────────────── */
.theme-minimalist-esencia .es-program {
    padding: 8px 26px 40px;
}

/* Titular caligráfico entre filetes + ramita. */
.theme-minimalist-esencia .es-program__head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    margin: 0 auto;
}
.theme-minimalist-esencia .es-program__rule {
    flex: 1 1 auto;
    max-width: 90px;
    height: 1px;
    background: var(--es-line);
}
.theme-minimalist-esencia .es-program__title {
    margin: 0;
    font-family: var(--es-font-script);
    font-weight: 800;
    font-size: clamp(2rem, 8.5vw, 2.5rem);
    line-height: 1;
    color: var(--es-olive);
    white-space: nowrap;
}
/* Ramita bajo el titular: imagen `separator` del componente (rama de olivo). */
.theme-minimalist-esencia .es-program__sprig {
    display: block;
    width: var(--es-sep-width, 90px);
    max-width: 50%;
    height: auto;
    margin: 8px auto 22px;
    mix-blend-mode: multiply;
    pointer-events: none;
    user-select: none;
}

/* Lista: icono | línea con punto | hora | texto. */
.theme-minimalist-esencia .es-program__list {
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
}
.theme-minimalist-esencia .es-program__item {
    position: relative;
    display: grid;
    grid-template-columns: 54px 26px auto minmax(0, 1fr);
    align-items: center;
    column-gap: 10px;
    padding: 12px 0;
}
/* Línea vertical continua detrás de los puntos. */
.theme-minimalist-esencia .es-program__item::before {
    content: '';
    position: absolute;
    left: calc(54px + 10px + 13px);
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--es-text-soft);
    opacity: 0.55;
}
.theme-minimalist-esencia .es-program__item:first-child::before { top: 50%; }
.theme-minimalist-esencia .es-program__item:last-child::before { bottom: 50%; }

.theme-minimalist-esencia .es-program__icon {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: #ecebe3;
    color: var(--es-olive);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 9px;
    box-sizing: border-box;
}
.theme-minimalist-esencia .es-program__icon svg {
    width: 100%;
    height: 100%;
    display: block;
}
/* Icono en acuarela (PNG) dentro del círculo. */
.theme-minimalist-esencia .es-program__icon--img {
    padding: 7px;
    overflow: hidden; /* el escalado no debe salirse del círculo */
}
.theme-minimalist-esencia .es-program__icon--img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
    mix-blend-mode: multiply;
    /* Factor por icono (icon_image_scale), útil con PNG apaisados. */
    transform: scale(var(--es-icon-scale, 1));
    transform-origin: center;
}
.theme-minimalist-esencia .es-program__dot {
    position: relative;
    z-index: 1;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--es-text-soft);
    justify-self: center;
}
.theme-minimalist-esencia .es-program__time {
    font-family: var(--es-font-serif);
    font-variant-numeric: lining-nums tabular-nums;
    font-weight: 500;
    font-size: 0.95rem;
    letter-spacing: 0.03em;
    color: var(--es-text);
    white-space: nowrap;
    padding-right: 4px;
}
.theme-minimalist-esencia .es-program__event {
    margin: 0 0 2px;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.72rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    line-height: 1.4;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-program__desc {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.78rem;
    line-height: 1.45;
    color: var(--es-text-soft);
}

@media (max-width: 380px) {
    .theme-minimalist-esencia .es-program { padding-left: 16px; padding-right: 16px; }
    .theme-minimalist-esencia .es-program__item { grid-template-columns: 46px 22px auto minmax(0, 1fr); column-gap: 8px; }
    .theme-minimalist-esencia .es-program__item::before { left: calc(46px + 8px + 11px); }
    .theme-minimalist-esencia .es-program__icon { width: 46px; height: 46px; padding: 9px; }
    .theme-minimalist-esencia .es-program__time { font-size: 0.9rem; }
}

/* ─── UBICACIONES ───────────────────────────────────────────── */
.theme-minimalist-esencia .es-places {
    --es-places-band: #e3e6d8;
    position: relative;
    z-index: 2; /* su mancha de fondo pasa por encima de la sección del hotel */
    padding: 34px 0 24px;
    margin-top: 10px;
    overflow-x: clip;   /* recorta las ramas a los lados... */
    overflow-y: visible; /* ...pero deja que la mancha baje sobre el hotel */
}
/* Banda verde tipo mancha de acuarela: contorno irregular y bordes difusos. */
.theme-minimalist-esencia .es-places::before {
    content: '';
    position: absolute;
    inset: 16px -10% -40px; /* se prolonga hacia abajo, sobre el hotel, y se difumina */
    background: var(--es-places-band);
    border-radius: 46% 54% 42% 58% / 26% 22% 20% 28%;
    filter: blur(14px);
    z-index: 0;
    pointer-events: none;
}
.theme-minimalist-esencia .es-places__inner {
    position: relative;
    z-index: 2;
    padding: 0 60px;
}

/* Ramas en los bordes, centradas en vertical. Los PNG ya vienen orientados
   (tallo hacia el borde, hojas hacia dentro). */
.theme-minimalist-esencia .es-places__flower {
    position: absolute;
    top: 50%;
    width: 22%;
    max-width: 120px;
    height: auto;
    pointer-events: none;
    user-select: none;
    mix-blend-mode: multiply;
    z-index: 999;
}
.theme-minimalist-esencia .es-places__flower--left {
    left: 0;
    --es-sway-base: translate(-22%, -50%);
    transform: var(--es-sway-base);
    transform-origin: 0% 50%; /* el tallo sale por el borde izquierdo */
    animation: esSwayRight 8.5s ease-in-out infinite; /* gira hacia dentro: mismo sentido que la rama derecha del hero */
    animation-delay: -1.5s;
}
.theme-minimalist-esencia .es-places__flower--right {
    right: 0;
    --es-sway-base: translate(22%, -50%);
    transform: var(--es-sway-base);
    transform-origin: 100% 50%; /* el tallo sale por el borde derecho */
    animation: esSwayLeft 10s ease-in-out infinite;
    animation-delay: -4.5s;
}

/* Titular caligráfico entre filetes. */
.theme-minimalist-esencia .es-places__head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin: 0 auto 20px;
}
.theme-minimalist-esencia .es-places__head--with-sprig {
    margin-bottom: 0;
}
.theme-minimalist-esencia .es-places__sprig,
.theme-minimalist-esencia .es-rsvp__sprig {
    display: block;
    width: var(--es-sep-width, 90px);
    max-width: 50%;
    height: auto;
    margin: 8px auto 20px;
    mix-blend-mode: multiply;
    pointer-events: none;
    user-select: none;
}
.theme-minimalist-esencia .es-places__rule {
    flex: 1 1 auto;
    max-width: 70px;
    height: 1px;
    background: var(--es-text-soft);
    opacity: 0.5;
}
.theme-minimalist-esencia .es-places__title {
    margin: 0;
    font-family: var(--es-font-script);
    font-weight: 800;
    font-size: 2.8rem;
    line-height: 1;
    color: var(--es-olive);
    white-space: nowrap;
}

/* Tarjeta: foto a la izquierda, texto a la derecha. */
.theme-minimalist-esencia .es-place {
    display: grid;
    grid-template-columns: 44% minmax(0, 1fr);
    gap: 14px;
    align-items: center;
    background: #fbfaf6;
    border-radius: 12px;
    padding: 10px;
    margin: 0 auto 14px;
    box-shadow: 0 6px 18px rgba(59, 56, 51, 0.08);
}
.theme-minimalist-esencia .es-place:last-child {
    margin-bottom: 0;
}
.theme-minimalist-esencia .es-place__photo {
    aspect-ratio: 4 / 3;
    border-radius: 8px;
    overflow: hidden;
}
.theme-minimalist-esencia .es-place__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.theme-minimalist-esencia .es-place__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding-right: 4px;
}
.theme-minimalist-esencia .es-place__name {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 400;
    font-size: 0.95rem;
    line-height: 1.2;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-place__name strong,
.theme-minimalist-esencia .es-place__name span {
    display: block;
}
.theme-minimalist-esencia .es-place__name strong {
    font-weight: 600;
}
.theme-minimalist-esencia .es-place__address {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.72rem;
    line-height: 1.4;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-place__btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    padding: 7px 14px;
    border-radius: 999px;
    background: var(--es-olive);
    color: #f8f5ee;
    text-decoration: none;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.58rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    line-height: 1;
    white-space: nowrap;
}
.theme-minimalist-esencia .es-place__btn svg {
    width: 12px;
    height: 12px;
    flex: 0 0 auto;
}
.theme-minimalist-esencia .es-place__btn:hover {
    background: #4c5a41;
}

@media (max-width: 380px) {
    .theme-minimalist-esencia .es-places__inner { padding: 0 44px; }
    .theme-minimalist-esencia .es-place { grid-template-columns: 42% minmax(0, 1fr); gap: 10px; }
}

/* ─── RSVP ──────────────────────────────────────────────────── */
.theme-minimalist-esencia .es-rsvp {
    position: relative;
    padding: 36px 0 44px;
    overflow: hidden;
    text-align: center;
}
.theme-minimalist-esencia .es-rsvp__inner {
    position: relative;
    z-index: 2;
    padding: 0 48px;
}
.theme-minimalist-esencia .es-rsvp__flower {
    position: absolute;
    top: 50%;
    width: 22%;
    max-width: 120px;
    height: auto;
    pointer-events: none;
    user-select: none;
    mix-blend-mode: multiply;
    z-index: 999;
}
/* La rama izquierda se queda arriba, a la altura del titular "Confirma tu asistencia". */
.theme-minimalist-esencia .es-rsvp__flower--left {
    left: 0;
    top: 0;
    --es-sway-base: translate(-22%, 0);
    transform: var(--es-sway-base);
    transform-origin: 0% 50%;
    animation: esSwayRight 9.5s ease-in-out infinite;
    animation-delay: -6s;
}
.theme-minimalist-esencia .es-rsvp__flower--right {
    right: 0;
    --es-sway-base: translate(22%, -50%);
    transform: var(--es-sway-base);
    transform-origin: 100% 50%;
    animation: esSwayLeft 8s ease-in-out infinite;
    animation-delay: -2.5s;
}
.theme-minimalist-esencia .es-rsvp__title {
    margin: 0 0 6px;
    font-family: var(--es-font-script);
    font-weight: 800;
    font-size: 2.8rem;
    line-height: 1;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-rsvp__deadline {
    margin: -12px 0 22px;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.8rem;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-rsvp__deadline strong {
    font-weight: 600;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-rsvp__subtitle {
    margin: 0 0 22px;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.68rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--es-text);
}

/* El componente genérico, sin su fondo ni su tarjeta; hereda la paleta del tema.
   Las variables --cmp-* (colores del admin) siguen teniendo prioridad. */
.theme-minimalist-esencia .rsvp-section {
    --rsvp-accent: var(--cmp-primary, var(--es-olive));
    --rsvp-accent-light: color-mix(in srgb, var(--rsvp-accent) 70%, white);
    --rsvp-accent-hover: color-mix(in srgb, var(--rsvp-accent) 85%, #000);
    --rsvp-text-muted: var(--cmp-text-muted, var(--es-text-soft));
    --rsvp-field-text: var(--cmp-field-text, var(--es-text));
    --rsvp-field-bg: var(--cmp-input-bg, #fbfaf6);
    --rsvp-field-border: var(--es-line);
    --rsvp-form-bg: transparent;
    --rsvp-font-sans: var(--es-font-serif);
    --rsvp-font-script: var(--es-font-script);
    background: transparent;
    padding: 0;
    color: var(--es-text);
}
.theme-minimalist-esencia .rsvp-section__inner {
    padding: 0;
    max-width: none;
}
/* Sin tarjeta alrededor del formulario: va directamente sobre el papel. */
.theme-minimalist-esencia .rsvp {
    background: transparent;
    box-shadow: none;
    border: 0;
    border-radius: 0;
    padding: 0;
    max-width: none;
    margin: 0;
}
.theme-minimalist-esencia .rsvp-form {
    background: transparent;
    box-shadow: none;
    border: 0;
    padding: 0;
    border-radius: 0;
    max-width: none;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.theme-minimalist-esencia .rsvp-form__group {
    display: flex;
    flex-direction: column;
    gap: 5px;
    text-align: left;
}
.theme-minimalist-esencia .rsvp-form__label {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 700;
    font-size: 0.72rem;
    letter-spacing: 0.02em;
    color: var(--es-text);
}
.theme-minimalist-esencia .rsvp-form__input,
.theme-minimalist-esencia .rsvp-form__textarea,
.theme-minimalist-esencia .rsvp-form__group select {
    width: 100%;
    box-sizing: border-box;
    background: var(--rsvp-field-bg);
    border: 1px solid var(--rsvp-field-border);
    border-radius: 6px;
    color: var(--rsvp-field-text);
    padding: 9px 12px;
    font-family: var(--es-font-serif);
    font-size: 0.85rem;
    outline: none;
}
.theme-minimalist-esencia .rsvp-form__input::placeholder,
.theme-minimalist-esencia .rsvp-form__textarea::placeholder {
    color: var(--es-text-soft);
    opacity: 0.8;
}
.theme-minimalist-esencia .rsvp-form__input:focus,
.theme-minimalist-esencia .rsvp-form__textarea:focus,
.theme-minimalist-esencia .rsvp-form__group select:focus {
    border-color: var(--rsvp-accent);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--rsvp-accent) 15%, transparent);
}

/* Botones Sí/No y chips: el seleccionado en oliva, el resto en gris claro. */
.theme-minimalist-esencia .rsvp-form__choice-btn,
.theme-minimalist-esencia .rsvp-form__chip {
    border-radius: 6px;
    padding: 9px 8px;
    min-height: 0;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.78rem;
    line-height: 1.2;
    background: #e6e4dc;
    border: 1px solid transparent;
    color: var(--es-text);
}
/* Encabezados y notas internas del formulario (bloque de alergias por invitado). */
.theme-minimalist-esencia .rsvp-form__heading {
    font-family: var(--es-font-serif);
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.02em;
    color: var(--es-text);
    margin: 0;
    text-align: left;
    display: flex;
    align-items: center;
    gap: 6px;
}
.theme-minimalist-esencia .rsvp-form__heading-icon {
    width: 16px;
    height: 16px;
}
.theme-minimalist-esencia .rsvp-form__heading-icon svg {
    width: 100%;
    height: 100%;
}
.theme-minimalist-esencia .rsvp-form__guest-block {
    border-top: 1px solid var(--es-line);
    padding-top: 10px;
    margin-top: 2px;
}
.theme-minimalist-esencia .rsvp-form__guest-block-hint,
.theme-minimalist-esencia .rsvp-form__note {
    font-family: var(--es-font-serif);
    font-size: 0.72rem;
    color: var(--es-text-soft);
    text-align: left;
    margin: 0 0 4px;
}
.theme-minimalist-esencia .rsvp-form__choice-btn.is-selected,
.theme-minimalist-esencia .rsvp-form__chip.is-selected {
    background: var(--rsvp-accent);
    border-color: var(--rsvp-accent);
    color: #f8f5ee;
}

.theme-minimalist-esencia .rsvp-form__submit,
.theme-minimalist-esencia .rsvp-form button[type="submit"] {
    width: 100%;
    margin-top: 6px;
    padding: 13px 20px;
    border: 0;
    border-radius: 6px;
    background: var(--rsvp-accent);
    color: #f8f5ee;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.7rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    cursor: pointer;
}
.theme-minimalist-esencia .rsvp-form__submit:hover,
.theme-minimalist-esencia .rsvp-form button[type="submit"]:hover {
    background: var(--rsvp-accent-hover);
    color: #f8f5ee;
}

.theme-minimalist-esencia .rsvp__success-card {
    background: #fbfaf6;
    border: 1px solid var(--es-line);
    border-radius: 12px;
}

@media (max-width: 380px) {
    .theme-minimalist-esencia .es-rsvp__inner { padding: 0 44px; }
}

/* ─── ANIMACIONES DE ENTRADA ────────────────────────────────── */
/* Solo se ocultan si el JS del tema ha arrancado (clase es-js); así, sin JS,
   todo se ve. La clase is-visible la añade un IntersectionObserver al entrar
   en pantalla. --es-reveal-delay escalona elementos de un mismo bloque. */
.theme-minimalist-esencia.es-js .es-reveal {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22, 0.61, 0.36, 1);
    transition-delay: var(--es-reveal-delay, 0ms);
    will-change: opacity, transform;
}
.theme-minimalist-esencia.es-js .es-reveal--left {
    transform: translateX(-28px);
}
.theme-minimalist-esencia.es-js .es-reveal--scale {
    transform: scale(0.85);
}
.theme-minimalist-esencia.es-js .es-reveal.is-visible {
    opacity: 1;
    transform: none;
}
@media (prefers-reduced-motion: reduce) {
    .theme-minimalist-esencia.es-js .es-reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* ─── PIE DE PÁGINA ─────────────────────────────────────────── */
.theme-minimalist-esencia .es-footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 10px 28px 40px;
    text-align: center;
}
.theme-minimalist-esencia .es-footer__rule {
    display: block;
    width: 120px;
    height: 1px;
    background: var(--es-line);
    margin-bottom: 14px;
}
.theme-minimalist-esencia .es-footer__sprig {
    display: block;
    width: var(--es-sep-width, 90px);
    max-width: 50%;
    height: auto;
    margin: 0 auto 4px;
    mix-blend-mode: multiply;
    pointer-events: none;
    user-select: none;
}
.theme-minimalist-esencia .es-footer__names {
    margin: 0;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0.35em;
    font-family: var(--es-font-script);
    font-weight: 400;
    font-size: 2.2rem;
    line-height: 1.1;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-footer__amp {
    font-size: 0.7em;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-footer__date {
    margin: 2px 0 0;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.68rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-footer__credit {
    margin: 18px 0 0;
    font-family: var(--es-font-serif);
    font-size: 0.72rem;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-footer__link {
    color: var(--es-olive);
    text-decoration: none;
    border-bottom: 1px solid currentColor;
}
.theme-minimalist-esencia .es-footer__link:hover {
    color: var(--es-text);
}

/* ─── HOTEL ─────────────────────────────────────────────────── */
.theme-minimalist-esencia .es-hotel {
    --es-hotel-band: #eef0e6;
    position: relative;
    z-index: 1; /* su curva inferior se dibuja por encima de la sección siguiente */
    padding: 48px 0 72px; /* hueco abajo para la curva cóncava y el RSVP que sube */
    margin-top: -16px; /* se acerca a Ubicaciones */
    margin-bottom: 0;
    /* Del papel (arriba) al verde de la banda: suaviza la curva superior. */
    background: linear-gradient(180deg, var(--es-paper) 0%, var(--es-hotel-band) 42%, var(--es-hotel-band) 100%);
    text-align: center;
}
/* Borde superior cóncavo: el papel entra en la banda con una curva. */
.theme-minimalist-esencia .es-hotel::before {
    content: '';
    position: absolute;
    top: -1px;
    left: -12%;
    right: -12%;
    height: 44px;
    background: var(--es-paper);
    border-radius: 0 0 50% 50% / 0 0 100% 100%;
    pointer-events: none;
}
/* Borde inferior cóncavo: la sección siguiente (papel) sube "mordiendo" la banda. */
.theme-minimalist-esencia .es-hotel::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: -12%;
    right: -12%;
    height: 44px;
    background: var(--es-paper);
    border-radius: 50% 50% 0 0 / 100% 100% 0 0;
    pointer-events: none;
}
/* El RSVP sube sobre la curva para que su contenido entre en ella. */
.theme-minimalist-esencia .es-hotel + .es-rsvp {
    position: relative;
    z-index: 2;
    margin-top: -28px;
    padding-top: 12px;
}
.theme-minimalist-esencia .es-hotel__inner {
    padding: 0 22px;
}
.theme-minimalist-esencia .es-hotel__icon {
    display: block;
    width: 34px;
    height: 24px;
    margin: 0 auto 6px;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-hotel__icon svg {
    width: 100%;
    height: 100%;
    display: block;
}
.theme-minimalist-esencia .es-hotel__head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin: 0 auto 12px;
}
.theme-minimalist-esencia .es-hotel__rule {
    flex: 1 1 auto;
    max-width: 70px;
    height: 1px;
    background: var(--es-text-soft);
    opacity: 0.5;
}
.theme-minimalist-esencia .es-hotel__title {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 1.5rem;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    line-height: 1;
    color: var(--es-text);
    padding-left: 0.3em;
}
.theme-minimalist-esencia .es-hotel__subtitle {
    margin: 0 auto 22px;
    max-width: 340px;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    line-height: 1.7;
    color: var(--es-text);
}

/* Tarjeta: foto a la izquierda, texto a la derecha. */
.theme-minimalist-esencia .es-hotel__card {
    display: grid;
    grid-template-columns: 46% minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    text-align: left;
}
.theme-minimalist-esencia .es-hotel__photo {
    aspect-ratio: 4 / 3;
    border-radius: 10px;
    overflow: hidden;
}
.theme-minimalist-esencia .es-hotel__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.theme-minimalist-esencia .es-hotel__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
}
.theme-minimalist-esencia .es-hotel__name {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.78rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    line-height: 1.35;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-hotel__stars {
    margin: -2px 0 0;
    color: var(--es-olive);
    font-size: 0.8rem;
    letter-spacing: 0.1em;
    line-height: 1;
}
.theme-minimalist-esencia .es-hotel__desc {
    margin: 0;
    font-family: var(--es-font-serif);
    font-weight: 500;
    font-size: 0.74rem;
    line-height: 1.5;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-hotel__discount {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 6px;
    padding: 10px 14px;
    border-radius: 10px;
    background: #fbfaf6;
    width: 100%;
    box-sizing: border-box;
}
.theme-minimalist-esencia .es-hotel__discount-icon {
    width: 22px;
    height: 22px;
    flex: 0 0 auto;
    color: var(--es-olive);
}
.theme-minimalist-esencia .es-hotel__discount-icon svg {
    width: 100%;
    height: 100%;
    display: block;
}
.theme-minimalist-esencia .es-hotel__discount-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.theme-minimalist-esencia .es-hotel__discount-label {
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.68rem;
    color: var(--es-text);
}
.theme-minimalist-esencia .es-hotel__discount-code {
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.95rem;
    letter-spacing: 0.14em;
    /* Sin mayúsculas forzadas: el código se muestra tal cual se escribe (INMAyPEDRO). */
    color: var(--es-text);
    word-break: break-all;
}
.theme-minimalist-esencia .es-hotel__discount-benefit {
    font-family: var(--es-font-serif);
    font-size: 0.66rem;
    color: var(--es-text-soft);
}
.theme-minimalist-esencia .es-hotel__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 8px;
    width: 100%;
    box-sizing: border-box;
    padding: 10px 14px;
    border-radius: 999px;
    background: var(--es-olive);
    color: #f8f5ee;
    text-decoration: none;
    font-family: var(--es-font-serif);
    font-weight: 600;
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    white-space: nowrap;
}
.theme-minimalist-esencia .es-hotel__btn svg {
    width: 12px;
    height: 12px;
    flex: 0 0 auto;
}
.theme-minimalist-esencia .es-hotel__btn:hover {
    background: #4c5a41;
}

@media (max-width: 380px) {
    .theme-minimalist-esencia .es-hotel__card { grid-template-columns: 1fr; }
    .theme-minimalist-esencia .es-hotel__photo { aspect-ratio: 16 / 10; }
}
