/*
 * 13Bodas · Liebe invitation adapter
 *
 * The purchased theme remains the visual foundation. This file owns only the
 * dynamic invitation composition so the view can stay semantic and the theme
 * can be upgraded without reintroducing a large inline patch.
 */

:root {
    --liebe-ink: #303444;
    --liebe-muted: #6f706f;
    --liebe-paper: #fffdf9;
    --liebe-canvas: #f6f1ec;
    --liebe-line: rgba(48, 52, 68, 0.13);
    --liebe-accent-rgb: 134, 177, 161;
    --liebe-shadow: 0 24px 70px rgba(55, 47, 42, 0.13);
    --liebe-shadow-soft: 0 14px 40px rgba(55, 47, 42, 0.09);
}

body.template-liebe {
    max-inline-size: 100%;
    overflow-x: clip;
    background-color: #fdf2f9;
    background-image: url("../img/ornaments/bgtexture1.png");
    background-position: top center;
    background-size: cover;
    background-attachment: fixed;
    color: var(--liebe-ink);
    text-rendering: optimizeLegibility;
}

.template-liebe *,
.template-liebe *::before,
.template-liebe *::after {
    box-sizing: border-box;
}

.template-liebe img {
    max-inline-size: 100%;
}

.template-liebe p,
.template-liebe li,
.template-liebe label,
.template-liebe input,
.template-liebe select,
.template-liebe textarea {
    color: #303444 !important;
}

.template-liebe section {
    clear: both;
}

.template-liebe #save-date,
.template-liebe #story,
.template-liebe #event,
.template-liebe #quote,
.template-liebe #rsvp {
    position: relative;
    max-inline-size: 100%;
    overflow-x: clip;
}

@supports not (overflow: clip) {
    body.template-liebe,
    .template-liebe #save-date,
    .template-liebe #story,
    .template-liebe #event,
    .template-liebe #quote,
    .template-liebe #rsvp {
        overflow-x: hidden;
    }
}

.liebe-responsive-background.invitation-background-ready {
    background-image: var(--invitation-background-image) !important;
}

.template-liebe-demo .navbar-custom {
    top: var(--demo-banner-height, 58px);
}

.template-liebe .section-heading {
    margin-block-end: clamp(30px, 5vw, 68px);
}

.template-liebe .section-heading h2 {
    color: var(--liebe-ink);
    letter-spacing: -0.035em;
}

.template-liebe .section-heading .hr {
    margin-block-start: 15px;
}

.template-liebe .btn,
.template-liebe .liebe-map-link {
    min-height: 44px;
}

/* Navigation ------------------------------------------------------------- */

.template-liebe .navbar-custom {
    border: 0;
    background: rgba(255, 253, 249, 0.92);
    box-shadow: 0 8px 28px rgba(48, 52, 68, 0.08);
    -webkit-backdrop-filter: blur(16px);
    backdrop-filter: blur(16px);
}

.template-liebe .navbar-custom .navbar-nav > li > a {
    color: var(--liebe-ink) !important;
}

.template-liebe .brand-monogram {
    display: grid;
    place-items: center;
    min-width: 78px;
    min-height: 78px;
}

.template-liebe .brand-monogram-inner {
    display: grid;
    place-items: center;
    width: 70px;
    height: 70px;
    border: 1px solid color-mix(in srgb, var(--liebe-accent) 58%, transparent);
    border-radius: 50%;
    background: var(--liebe-paper);
    box-shadow: 0 8px 20px rgba(48, 52, 68, 0.1);
}

.template-liebe .brand-monogram-letter {
    color: var(--liebe-accent);
    font-size: 25px;
    line-height: 1;
}

@media (min-width: 1201px) {
    .navbar-custom > .container {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-wrap: nowrap;
        gap: clamp(5px, 0.8vw, 16px);
    }

    .navbar-custom .navbar-collapse,
    .navbar-custom .navbar-collapse.collapse {
        display: contents !important;
    }

    .navbar-custom .navbar-header {
        order: 2;
        float: none;
        flex: 0 0 auto;
    }

    .navbar-custom .navbar-brand-centered,
    .navbar-custom .navbar-brand.navbar-brand-centered {
        position: static;
        float: none;
        width: auto;
        height: auto;
        margin: 0;
        padding: 0;
    }

    .navbar-custom .navbar-brand-centered .brand-monogram {
        position: static;
        width: auto;
        margin: 0;
    }

    .navbar-custom .navbar-nav {
        display: flex;
        align-items: center;
        float: none;
        min-width: 0;
        margin: 0;
    }

    .navbar-custom .navbar-nav:not(.navbar-right) {
        order: 1;
        justify-content: flex-end;
    }

    .navbar-custom .navbar-nav.navbar-right {
        order: 3;
        justify-content: flex-start;
        float: none !important;
        margin-right: 0;
    }

    .navbar-custom .navbar-nav > li {
        display: flex;
        float: none;
        align-items: center;
    }

    .navbar-custom .navbar-nav > li > a {
        padding-inline: clamp(6px, 0.65vw, 13px);
        white-space: nowrap;
    }

    .navbar-custom .navbar-nav > li::after {
        margin-left: 0;
    }
}

@media (max-width: 1200px) {
    .template-liebe .navbar-custom .navbar-toggle {
        display: grid;
        place-items: center;
        width: 46px;
        height: 46px;
        margin-block: 12px;
    }

    .navbar-custom .navbar-collapse.collapse.in,
    .navbar-custom .navbar-collapse.collapsing {
        background: rgba(255, 255, 255, 0.96);
        -webkit-backdrop-filter: blur(16px);
        backdrop-filter: blur(16px);
        border-top: 1px solid rgba(48, 52, 68, 0.12);
        box-shadow: 0 20px 42px rgba(48, 52, 68, 0.17);
        overflow-y: auto !important;
        max-height: calc(100vh - var(--demo-banner-height, 0px) - 86px);
    }

    .navbar-custom:has(.navbar-collapse.in),
    .navbar-custom:has(.navbar-collapse.collapsing) {
        z-index: 10003;
    }

    .navbar-custom .navbar-collapse .navbar-nav > li > a {
        display: flex;
        align-items: center;
        justify-content: center;
        padding-block: 12px !important;
        min-height: 44px;
    }

    .navbar-custom .navbar-collapse .navbar-nav > li {
        border-top: 1px solid rgba(48, 52, 68, 0.09);
    }

    .navbar-custom .navbar-collapse .navbar-nav > li::after {
        display: none;
    }
}

/* Hero ------------------------------------------------------------------- */

.template-liebe #intro {
    display: grid;
    min-height: min(900px, 100svh);
    padding: clamp(130px, 13vw, 180px) max(24px, calc((100vw - 1240px) / 2)) 70px;
    background: transparent;
}

.liebe-hero-shell {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(280px, 0.75fr);
    align-items: center;
    gap: clamp(28px, 6vw, 90px);
    width: min(1240px, 100%);
    margin: auto;
}

.template-liebe #intro .ornament1 {
    left: 7% !important;
    z-index: 5 !important;
    opacity: 1 !important;
    pointer-events: none;
}

.liebe-hero-collage {
    position: relative;
    min-height: clamp(430px, 49vw, 640px);
    isolation: isolate;
}

.liebe-hero-collage__photo {
    position: absolute;
    overflow: hidden;
    margin: 0;
    padding: 10px 10px 42px;
    background: var(--liebe-paper);
    box-shadow: var(--liebe-shadow);
    transform-origin: 50% 80%;
}

.liebe-hero-collage__photo picture,
.liebe-hero-collage__photo img {
    display: block;
    width: 100%;
    height: 100%;
}

.liebe-hero-collage__photo img {
    aspect-ratio: 4 / 5;
    object-fit: cover;
}

.liebe-hero-collage__photo--1 {
    z-index: 2;
    top: 4%;
    left: 17%;
    width: 54%;
    transform: rotate(-2deg);
}

.liebe-hero-collage__photo--2 {
    z-index: 1;
    bottom: 2%;
    left: 0;
    width: 37%;
    transform: rotate(-8deg);
}

.liebe-hero-collage__photo--3 {
    z-index: 3;
    right: 0;
    bottom: 7%;
    width: 39%;
    transform: rotate(7deg);
}

.liebe-hero-collage[data-photo-count="1"] .liebe-hero-collage__photo--1 {
    top: 2%;
    left: 13%;
    width: 72%;
    transform: rotate(-2deg);
}

.liebe-hero-collage[data-photo-count="2"] .liebe-hero-collage__photo--1 {
    left: 5%;
    width: 58%;
}

.liebe-hero-collage[data-photo-count="2"] .liebe-hero-collage__photo--2 {
    right: 1%;
    bottom: 4%;
    left: auto;
    width: 49%;
    transform: rotate(6deg);
}

.liebe-hero-empty {
    display: grid;
    place-items: center;
    width: min(520px, 88%);
    min-height: 540px;
    margin: 0 auto;
    border: 1px solid var(--liebe-line);
    background: var(--liebe-paper);
    box-shadow: var(--liebe-shadow);
}

.liebe-hero-empty span {
    color: var(--liebe-accent);
    font-size: clamp(38px, 7vw, 84px);
}

.template-liebe .intro-heading {
    position: relative;
    z-index: 4;
    padding: 0;
}

.template-liebe .intro-heading::before {
    display: block;
    width: 56px;
    height: 1px;
    margin: 0 auto 24px;
    background: var(--liebe-accent);
    content: "";
}

.template-liebe .intro-heading h1 {
    margin: 8px 0 4px;
    color: var(--liebe-ink);
    font-size: clamp(58px, 7vw, 104px);
    line-height: 0.9;
}

.template-liebe .intro-heading h5 {
    margin-top: 18px;
    color: var(--liebe-accent);
    font-size: clamp(28px, 3.5vw, 48px);
}

.liebe-hero-eyebrow {
    color: var(--liebe-muted);
    font: 700 11px/1.4 Montserrat, sans-serif;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

/* Couple, story and attendants ------------------------------------------ */

.template-liebe #save-date .well {
    border: 0;
    background:
        linear-gradient(rgba(255, 253, 249, 0.95), rgba(255, 253, 249, 0.95)),
        repeating-linear-gradient(0deg, transparent 0 28px, rgba(48, 52, 68, 0.035) 29px);
    box-shadow: var(--liebe-shadow-soft);
}

.template-liebe #save-date .well::before,
.template-liebe #about .well::before,
.template-liebe #event .well::before,
.template-liebe #schedule .well::before,
.template-liebe #menu .well::before,
.template-liebe #rsvp .well::before {
    display: none;
}

.template-liebe #about .container {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(30px, 6vw, 82px);
}

.template-liebe #about .section-heading {
    grid-column: 1 / -1;
}

.template-liebe #about .col-md-5 {
    float: none;
    width: auto;
    margin: 0;
    text-align: center;
}

.template-liebe #about .main-img,
.template-liebe .liebe-portrait-empty {
    width: min(360px, 86vw);
    aspect-ratio: 1;
    margin: 0 auto 28px;
    border: 10px solid rgba(255, 255, 255, 0.88);
    border-radius: 50%;
    box-shadow: var(--liebe-shadow-soft);
    object-fit: cover;
}

.template-liebe .liebe-portrait-empty,
.template-liebe .liebe-party-empty {
    display: grid;
    place-items: center;
    background: color-mix(in srgb, var(--liebe-soft) 72%, white);
}

.template-liebe .liebe-portrait-empty span,
.template-liebe .liebe-party-empty span {
    color: var(--liebe-accent);
    font-size: 52px;
}

.template-liebe #story .polaroid-item {
    background-color: var(--liebe-paper);
    background-image: url("../img/ornaments/polaroid_texture.png");
    background-repeat: repeat;
    box-shadow: var(--liebe-shadow-soft);
}

.template-liebe #story .polaroid-item picture,
.template-liebe #story .polaroid-item img {
    display: block;
    width: 100%;
}

.template-liebe #story .polaroid-item img {
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.template-liebe #attendants .member .wrap {
    border: 8px solid var(--liebe-paper);
    background: var(--liebe-paper);
    box-shadow: var(--liebe-shadow-soft);
}

.template-liebe #attendants .member img,
.template-liebe #attendants .liebe-party-empty {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
}

/* Each location owns its media, map and logistics ----------------------- */

.template-liebe #event {
    padding-block: clamp(80px, 10vw, 145px);
    background:
        radial-gradient(circle at 85% 22%, color-mix(in srgb, var(--liebe-soft) 58%, transparent), transparent 30%),
        var(--liebe-canvas);
}

.liebe-location-list {
    display: grid;
    gap: clamp(70px, 9vw, 125px);
}

.liebe-event-location-row {
    position: relative;
}

.liebe-location-card {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(300px, 0.82fr);
    align-items: center;
    gap: 0;
    width: min(1140px, 100%);
    margin: 0 auto;
}

.liebe-location-card--reverse {
    grid-template-columns: minmax(300px, 0.82fr) minmax(0, 1.18fr);
}

.liebe-location-card--reverse .liebe-location-card__visual {
    grid-column: 2;
    grid-row: 1;
}

.liebe-location-card--reverse .liebe-location-card__paper {
    grid-column: 1;
    grid-row: 1;
    margin-right: -42px;
    margin-left: 0;
    transform: rotate(-1deg);
}

.liebe-location-card__visual {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    min-height: 440px;
    overflow: hidden;
    border: 10px solid var(--liebe-paper);
    background: color-mix(in srgb, var(--liebe-soft) 62%, white);
    box-shadow: var(--liebe-shadow);
}

.liebe-location-card__visual > :only-child {
    grid-column: 1 / -1;
}

.liebe-location-card__photo,
.liebe-location-card__map {
    min-width: 0;
    min-height: 440px;
}

.liebe-location-card__photo picture,
.liebe-location-card__photo img,
.liebe-location-card__map iframe {
    display: block;
    width: 100%;
    height: 100%;
}

.liebe-location-card__photo img {
    object-fit: cover;
}

.liebe-location-card__map iframe {
    min-height: 440px;
    border: 0;
    filter: saturate(0.72) sepia(0.08);
}

.liebe-location-card__paper {
    position: relative;
    z-index: 2;
    margin-left: -42px;
    padding: clamp(34px, 5vw, 66px);
    border: 1px solid rgba(48, 52, 68, 0.08);
    background:
        radial-gradient(circle at 15% 20%, rgba(48, 52, 68, 0.025) 0 1px, transparent 1.5px) 0 0 / 9px 9px,
        var(--liebe-paper);
    box-shadow: var(--liebe-shadow-soft);
    transform: rotate(1deg);
}

.liebe-location-card__paper::before {
    position: absolute;
    top: 18px;
    right: 20px;
    width: 52px;
    height: 14px;
    background: color-mix(in srgb, var(--liebe-accent) 28%, transparent);
    content: "";
    transform: rotate(4deg);
}

.liebe-event-location-card__top,
.liebe-card-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
}

.liebe-location-index {
    margin-right: 5px;
    color: var(--liebe-accent);
    font: 700 25px/1 Playfair Display, serif;
}

.liebe-pill,
.liebe-course-tag {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 12px;
    border: 1px solid var(--liebe-line);
    border-radius: 999px;
    color: var(--liebe-muted);
    font: 700 10px/1.2 Montserrat, sans-serif;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.liebe-pill--accent,
.liebe-course-tag {
    border-color: color-mix(in srgb, var(--liebe-accent) 38%, transparent);
    background: color-mix(in srgb, var(--liebe-accent) 15%, white);
    color: var(--liebe-ink);
}

.liebe-location-card__paper h3 {
    margin: 0 0 18px;
    color: var(--liebe-ink);
    font-size: clamp(29px, 3.2vw, 45px);
    line-height: 1.1;
}

.liebe-event-location-card__address {
    margin-bottom: 13px;
    font-weight: 600;
}

.liebe-event-location-card__address .fa {
    margin-right: 7px;
    color: var(--liebe-accent);
}

.liebe-event-location-card__description {
    margin-bottom: 24px;
    color: var(--liebe-muted) !important;
}

.liebe-map-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 0;
    border-bottom: 1px solid var(--liebe-accent);
    color: var(--liebe-ink);
    font: 700 11px/1.2 Montserrat, sans-serif;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.liebe-location-empty {
    width: min(680px, 100%);
    margin: 0 auto;
    padding: 50px;
    border: 1px dashed var(--liebe-line);
    background: var(--liebe-paper);
    text-align: center;
}

/* Supporting invitation modules ---------------------------------------- */

.template-liebe #schedule .row,
.template-liebe #menu .row,
.template-liebe #faqs .row,
.template-liebe #registry .row {
    display: flex;
    flex-wrap: wrap;
}

.template-liebe .liebe-card-col,
.template-liebe #faqs .col-md-6,
.template-liebe #registry [class*="col-"] {
    display: flex;
    margin-bottom: 28px;
}

.template-liebe .liebe-schedule-card,
.template-liebe .liebe-menu-card,
.template-liebe #faqs .well,
.template-liebe .liebe-registry-card {
    width: 100%;
    border: 1px solid rgba(48, 52, 68, 0.08);
    border-radius: 0;
    background: var(--liebe-paper);
    box-shadow: var(--liebe-shadow-soft);
}

.template-liebe .liebe-schedule-card:nth-child(odd),
.template-liebe .liebe-registry-card:nth-child(odd) {
    transform: rotate(-0.45deg);
}

.template-liebe .liebe-menu-card {
    background:
        linear-gradient(var(--liebe-paper), var(--liebe-paper)) padding-box,
        linear-gradient(135deg, var(--liebe-accent), var(--liebe-soft)) border-box;
}

.template-liebe #faqs .well {
    position: relative;
    padding-top: 42px;
}

.template-liebe #faqs .well::after {
    position: absolute;
    top: 18px;
    left: 50%;
    width: 45px;
    height: 10px;
    background: color-mix(in srgb, var(--liebe-accent) 22%, transparent);
    content: "";
    transform: translateX(-50%) rotate(-2deg);
}

.template-liebe #quote {
    display: grid;
    place-items: center;
    min-height: clamp(430px, 60vw, 700px);
    padding: 90px 24px;
    background-color: var(--liebe-ink);
    background-image: none;
    background-position: center;
    background-size: cover;
    isolation: isolate;
}

.template-liebe #quote.liebe-quote--ornamental {
    background-image:
        radial-gradient(circle at 20% 25%, color-mix(in srgb, var(--liebe-soft) 35%, transparent), transparent 28%),
        radial-gradient(circle at 82% 75%, color-mix(in srgb, var(--liebe-accent) 32%, transparent), transparent 30%),
        linear-gradient(135deg, #303444, color-mix(in srgb, var(--liebe-ink) 84%, var(--liebe-accent)));
}

.template-liebe #quote::before {
    position: absolute;
    z-index: -1;
    inset: 0;
    background: linear-gradient(115deg, rgba(28, 31, 38, 0.78), rgba(28, 31, 38, 0.5));
    content: "";
}

.liebe-quote__content {
    position: relative;
    z-index: 1;
    float: none;
}

.template-liebe #quote blockquote,
.template-liebe #quote h2 {
    color: #fff !important;
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.34);
}

.template-liebe .liebe-registry-card__media {
    position: relative;
    display: block;
    overflow: hidden;
    background: color-mix(in srgb, var(--liebe-soft) 28%, white);
}

.template-liebe .liebe-registry-card__media:focus-visible {
    outline: 3px solid var(--liebe-accent);
    outline-offset: 4px;
}

.template-liebe .liebe-registry-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: contain;
}

.template-liebe .liebe-registry-card__zoom {
    position: absolute;
    right: 14px;
    bottom: 14px;
    display: grid;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: rgba(48, 52, 68, 0.88);
    color: #fff;
    place-items: center;
    transition: transform 180ms ease, background-color 180ms ease;
}

.template-liebe .liebe-registry-card__media:hover .liebe-registry-card__zoom,
.template-liebe .liebe-registry-card__media:focus-visible .liebe-registry-card__zoom {
    background: var(--liebe-accent);
    transform: scale(1.06);
}

.template-liebe .liebe-registry-card__content { padding-top: 24px; }

.template-liebe .liebe-registry--single .liebe-registry__grid {
    display: block;
    max-width: 960px;
    margin-inline: auto;
}

.template-liebe .liebe-registry--single .liebe-registry__item {
    display: block;
    float: none;
    width: 100%;
    margin-inline: auto;
}

.template-liebe .liebe-registry--single .liebe-registry-card {
    display: grid;
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    align-items: center;
    gap: clamp(28px, 5vw, 64px);
    padding: clamp(24px, 4vw, 48px);
    text-align: left;
    transform: none;
}

.template-liebe .liebe-registry--single .liebe-registry-card__image { aspect-ratio: 4 / 5; }
.template-liebe .liebe-registry--single .liebe-registry-card__content { padding-top: 0; }

.template-liebe #gallery .gallery-thumb picture,
.template-liebe #gallery .gallery-thumb img {
    display: block;
    width: 100%;
}

.template-liebe #gallery .gallery-thumb img {
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

/* RSVP ------------------------------------------------------------------ */

.template-liebe #rsvp {
    padding-block: clamp(85px, 10vw, 145px);
    background:
        radial-gradient(circle at 10% 75%, color-mix(in srgb, var(--liebe-soft) 70%, transparent), transparent 34%),
        #f5f0eb;
}

.template-liebe .liebe-rsvp__layout {
    display: grid;
    grid-template-columns: minmax(0, 0.82fr) minmax(420px, 1.18fr);
    align-items: stretch;
    gap: 0;
}

.template-liebe .liebe-rsvp__layout > .section-heading {
    grid-column: 1 / -1;
}

.template-liebe .liebe-rsvp__media,
.template-liebe .liebe-rsvp__paper {
    float: none;
    width: auto;
    margin: 0;
}

.template-liebe .liebe-rsvp__media {
    min-height: 690px;
    border: 10px solid var(--liebe-paper);
    background: var(--liebe-soft);
    box-shadow: var(--liebe-shadow);
    transform: rotate(-1.4deg);
}

.template-liebe .liebe-rsvp__media picture,
.template-liebe .liebe-rsvp__media img {
    display: block;
    width: 100%;
    height: 100%;
}

.template-liebe .liebe-rsvp__media img {
    min-height: 670px;
    object-fit: cover;
}

.template-liebe .liebe-rsvp__paper {
    position: relative;
    z-index: 2;
    align-self: center;
    margin-left: -28px;
    padding: clamp(34px, 5vw, 64px);
    border: 1px solid rgba(48, 52, 68, 0.08);
    border-radius: 0;
    background: rgba(255, 253, 249, 0.98);
    box-shadow: var(--liebe-shadow);
}

.template-liebe #rsvp .form-group {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px 18px;
    text-align: left;
}

.template-liebe #rsvp .form-group > label,
.template-liebe #rsvp .form-group > input:not([type="radio"]),
.template-liebe #rsvp .form-group > select,
.template-liebe #rsvp .form-group > p,
.template-liebe #rsvp .form-group > div,
.template-liebe #rsvp .form-group > .text-center {
    grid-column: 1 / -1;
}

.template-liebe #rsvp label {
    margin: 13px 0 3px;
    color: var(--liebe-ink);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-align: left;
}

.template-liebe #rsvp .form-control {
    width: 100%;
    min-height: 50px;
    border: 1px solid rgba(48, 52, 68, 0.2);
    border-radius: 0;
    background: #fff;
    box-shadow: none;
}

.template-liebe #rsvp textarea.form-control {
    min-height: 120px;
    resize: vertical;
}

.template-liebe #rsvp .form-control:focus {
    border-color: var(--liebe-accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--liebe-accent) 20%, transparent);
}

.template-liebe #rsvp input[type="radio"] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

.template-liebe #rsvp .form-group > .side-label {
    position: relative;
    grid-column: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    margin: 7px 0;
    padding: 10px 14px;
    border: 1px solid rgba(48, 52, 68, 0.2);
    background: #fff;
    cursor: pointer;
    text-align: center;
}

.template-liebe #rsvp .form-group > .side-label::before {
    position: static;
    display: inline-block !important;
    flex: 0 0 17px;
    width: 17px;
    height: 17px;
    margin: 0 10px 0 0;
    border: 1px solid rgba(48, 52, 68, 0.45);
    border-radius: 50%;
    background: #fff;
    content: "";
}

.template-liebe #rsvp input[type="radio"]:checked + .side-label {
    border-color: var(--liebe-accent);
    background: color-mix(in srgb, var(--liebe-accent) 16%, white);
}

.template-liebe #rsvp input[type="radio"]:checked + .side-label::before {
    border-color: var(--liebe-accent);
    background: var(--liebe-accent);
    box-shadow: inset 0 0 0 4px #fff;
}

.template-liebe #rsvp input[type="radio"]:focus-visible + .side-label {
    outline: 3px solid color-mix(in srgb, var(--liebe-accent) 48%, transparent);
    outline-offset: 2px;
}

.template-liebe #rsvp .help-block {
    margin: 0 0 5px;
    color: #a13737 !important;
    font-size: 12px;
}

.template-liebe #rsvp [data-message-count] {
    font-variant-numeric: tabular-nums;
}

.template-liebe #rsvp .message-comments {
    height: auto;
    margin-top: 18px;
    padding: 0;
    overflow: visible;
    opacity: 1;
}

.template-liebe #rsvp .liebe-rsvp__flash,
.template-liebe #liebe-rsvp-error-summary {
    margin-bottom: 15px;
}

.template-liebe #rsvp #submit_rsvp {
    min-width: 190px;
}

/* Footer ---------------------------------------------------------------- */

.template-liebe footer.liebe-footer {
    position: relative;
    padding: clamp(58px, 8vw, 96px) 0 calc(clamp(34px, 5vw, 58px) + var(--showroom-bar-height, 0px));
    overflow: hidden;
    background:
        radial-gradient(circle at 50% -25%, color-mix(in srgb, var(--liebe-accent) 42%, transparent), transparent 48%),
        var(--liebe-ink);
}

.template-liebe .liebe-footer__closing {
    display: grid;
    justify-items: center;
    gap: 10px;
    color: #fff;
}

.template-liebe .liebe-footer__eyebrow {
    color: rgba(255, 255, 255, 0.84);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
}

.template-liebe .liebe-footer__monogram {
    color: #fff;
    font-family: cursive;
    font-size: clamp(48px, 7vw, 82px);
    line-height: 1;
}

.template-liebe .liebe-footer .credits-couple {
    margin: 0;
    color: rgba(255, 255, 255, 0.9) !important;
    font-size: 16px;
}

.template-liebe footer .credits,
.template-liebe footer .credits-couple,
.template-liebe footer a {
    color: rgba(255, 255, 255, 0.86) !important;
}

.template-liebe #b13-branding-label,
.template-liebe #b13-branding-label a {
    color: rgba(255, 255, 255, 0.9) !important;
}

.template-liebe .liebe-footer #b13-branding {
    padding: 24px 16px 14px;
    color: rgba(255, 255, 255, 0.9);
}
.template-liebe .liebe-footer #b13-branding::before {
    width: min(240px, 52vw);
    margin-bottom: 20px;
    opacity: 0.22;
}
.template-liebe .liebe-footer .credits { min-height: 0; padding: 0; }

body.template-liebe.liebe-lightbox-open { overflow: hidden; }
.template-liebe .liebe-lightbox {
    position: fixed;
    z-index: 100001;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 72px 68px;
    background: rgba(19, 17, 24, 0.92);
    backdrop-filter: blur(12px);
}
.template-liebe .liebe-lightbox[hidden] { display: none; }
.template-liebe .liebe-lightbox__image {
    max-width: min(1100px, 88vw);
    max-height: 84vh;
    border: 8px solid #fff;
    background: #fff;
    box-shadow: 0 28px 90px rgba(0, 0, 0, 0.52);
    object-fit: contain;
}
.template-liebe .liebe-lightbox__close,
.template-liebe .liebe-lightbox__nav {
    position: absolute;
    display: grid;
    width: 48px;
    height: 48px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.36);
    border-radius: 50%;
    background: rgba(48, 52, 68, 0.82);
    color: #fff;
    font: inherit;
    font-size: 28px;
    cursor: pointer;
    place-items: center;
}
.template-liebe .liebe-lightbox__close:focus-visible,
.template-liebe .liebe-lightbox__nav:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.template-liebe .liebe-lightbox__close { top: 20px; right: 20px; }
.template-liebe .liebe-lightbox__nav { top: 50%; transform: translateY(-50%); }
.template-liebe .liebe-lightbox__nav--prev { left: 16px; }
.template-liebe .liebe-lightbox__nav--next { right: 16px; }
.template-liebe .liebe-lightbox__nav[hidden] { display: none; }

/* Responsive ------------------------------------------------------------ */

@media (max-width: 991px) {
    body.template-liebe {
        background-attachment: scroll;
    }

    .template-liebe #intro {
        min-height: auto;
        padding-top: 125px;
    }

    .liebe-hero-shell {
        grid-template-columns: 1fr;
        gap: 24px;
    }

    .template-liebe .intro-heading {
        grid-row: 1;
    }

    .liebe-hero-collage {
        grid-row: 2;
        min-height: min(720px, 88vw);
    }

    /*
     * Entre 768 y 991 el collage ocupa casi todo el ancho y la foto girada
     * sobresalia doce pixeles. El bloque de 767 repite el ajuste porque alli
     * la foto crece al 47% y necesita el suyo.
     */
    .liebe-hero-collage__photo--3 {
        right: 4%;
    }


    .template-liebe #about .container,
    .template-liebe .liebe-rsvp__layout {
        grid-template-columns: 1fr;
    }

    .template-liebe #about .col-md-5 + .col-md-5 {
        margin-top: 55px;
    }

    .liebe-location-card,
    .liebe-location-card--reverse {
        grid-template-columns: 1fr;
    }

    .liebe-location-card--reverse .liebe-location-card__visual,
    .liebe-location-card--reverse .liebe-location-card__paper {
        grid-column: 1;
    }

    .liebe-location-card__visual,
    .liebe-location-card--reverse .liebe-location-card__visual {
        grid-row: 1;
    }

    .liebe-location-card__paper,
    .liebe-location-card--reverse .liebe-location-card__paper {
        grid-row: 2;
        margin: -32px 24px 0;
        transform: rotate(0.7deg);
    }

    .template-liebe .liebe-rsvp__media {
        min-height: 480px;
        transform: none;
    }

    .template-liebe .liebe-rsvp__media img {
        min-height: 460px;
    }

    .template-liebe .liebe-rsvp__paper {
        margin: -36px 24px 0;
    }
}

@media (max-width: 767px) {
    .template-liebe .navbar-custom .navbar-brand-centered {
        position: absolute;
        top: 4px;
        left: 50%;
        margin: 0;
        transform: translateX(-50%);
    }

    .template-liebe .brand-monogram,
    .template-liebe .brand-monogram-inner {
        width: 62px;
        min-width: 62px;
        height: 62px;
        min-height: 62px;
    }

    .template-liebe #intro {
        padding: 110px 16px 45px;
    }

    .template-liebe .intro-heading h1 {
        font-size: clamp(50px, 18vw, 76px);
    }

    .liebe-hero-collage {
        min-height: 112vw;
        max-height: 620px;
    }

    .liebe-hero-collage__photo {
        padding: 7px 7px 28px;
    }

    .liebe-hero-collage__photo--1 {
        top: 2%;
        left: 12%;
        width: 70%;
    }

    .liebe-hero-collage__photo--2 {
        bottom: 1%;
        left: 0;
        width: 45%;
    }

    /*
     * Girar una caja ensancha el area que ocupa: siete grados sobre una foto
     * del 47% anaden aqui hasta doce pixeles por la derecha. Con el 1% de
     * antes no cabia y la pagina se desplazaba de lado en movil.
     *
     * Recortar la raiz no sirve como alternativa: `overflow-x` en `html`
     * colapsa el alto del documento y deja la invitacion sin scroll vertical.
     * Declararlo solo en `body` tampoco, porque con `html` en visible el
     * overflow se propaga al viewport en vez de recortar.
     */
    .liebe-hero-collage__photo--3 {
        right: 4%;
        bottom: 3%;
        width: 47%;
    }

    .liebe-hero-collage[data-photo-count="1"] .liebe-hero-collage__photo--1 {
        top: 0;
        left: 7%;
        width: 86%;
    }

    .template-liebe section {
        padding-inline: 0;
    }

    .template-liebe .section-heading {
        padding-inline: 16px;
    }

    .liebe-location-list {
        padding-inline: 14px;
        gap: 70px;
    }

    .liebe-location-card__visual {
        grid-template-columns: 1fr;
        min-height: 0;
        border-width: 7px;
    }

    .liebe-location-card__photo,
    .liebe-location-card__map,
    .liebe-location-card__map iframe {
        min-height: 310px;
    }

    .liebe-location-card__photo img {
        aspect-ratio: 1;
    }

    .liebe-location-card__paper,
    .liebe-location-card--reverse .liebe-location-card__paper {
        margin: -22px 12px 0;
        padding: 30px 24px;
    }

    .template-liebe #schedule .row,
    .template-liebe #menu .row,
    .template-liebe #faqs .row,
    .template-liebe #registry .row {
        display: block;
    }

    .template-liebe .liebe-card-col,
    .template-liebe #faqs .col-md-6,
    .template-liebe #registry [class*="col-"] {
        display: block;
    }

    .template-liebe .liebe-registry--single .liebe-registry-card {
        grid-template-columns: 1fr;
        gap: 26px;
        padding: 20px;
        text-align: center;
    }
    .template-liebe .liebe-registry--single .liebe-registry-card__image {
        aspect-ratio: 4 / 3;
        max-height: 480px;
    }
    .template-liebe .liebe-lightbox { padding: 68px 18px 24px; }
    .template-liebe .liebe-lightbox__image {
        max-width: 94vw;
        max-height: 78vh;
        border-width: 5px;
    }

    .template-liebe .liebe-rsvp__layout {
        padding-inline: 14px;
    }

    .template-liebe .liebe-rsvp__media {
        min-height: 390px;
        border-width: 7px;
    }

    .template-liebe .liebe-rsvp__media img {
        min-height: 376px;
    }

    .template-liebe .liebe-rsvp__paper {
        margin: -24px 8px 0;
        padding: 30px 22px;
    }

    .template-liebe #rsvp .form-group {
        grid-template-columns: 1fr;
    }

    .template-liebe #rsvp .side-label {
        grid-column: 1;
    }
}

@media (max-width: 420px) {
    .liebe-hero-collage {
        min-height: 126vw;
    }

    .liebe-location-card__photo,
    .liebe-location-card__map,
    .liebe-location-card__map iframe {
        min-height: 270px;
    }

    .template-liebe .liebe-rsvp__paper {
        padding-inline: 18px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .template-liebe *,
    .template-liebe *::before,
    .template-liebe *::after {
        scroll-behavior: auto !important;
        transition: none !important;
        animation: none !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }

    .template-liebe [data-0],
    .template-liebe [data-100],
    .template-liebe [data--100-start],
    .template-liebe [data-center],
    .template-liebe [data-center-bottom] {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* === Jerarquia de encabezados ===============================================
   Los titulos de item -momentos de la historia, agenda, menu, preguntas,
   regalos y los nombres de la pareja- eran h4 y h5 colgando de un h2 de
   seccion: saltos de dos y tres niveles que dejan a quien navega por
   encabezados sin saber donde esta. Suben todos a h3.

   El tema fija tamaños por etiqueta -h4 30/28/24px y h5 16/20/18px segun el
   ancho-, asi que subir de nivel los cambiaria de cuerpo. Estas dos clases
   conservan el tamaño que cada uno tenia: no es un rediseño, es el mismo
   aspecto con la estructura corregida. Los que ya llevaban clase propia
   -.name en el cortejo- se estilaban por ella y no necesitan nada.
   ========================================================================== */

.template-liebe .liebe-item-title--lg {
    font-size: 30px;
    color: #333;
}

.template-liebe .liebe-item-title--sm {
    font-size: 16px;
    margin: 0;
}

/* El rol del cortejo deja de ser encabezado -es el cargo de la persona, no un
   titulo- y pasa a parrafo: hay que anular el margen que trae de serie. */
.template-liebe .attendants-wrap .member .wrap .info p.description {
    margin: 0;
}

@media (max-width: 991px) {
    .template-liebe .liebe-item-title--lg { font-size: 28px; }
    .template-liebe .liebe-item-title--sm { font-size: 20px; }
}

@media (max-width: 480px) {
    .template-liebe .liebe-item-title--lg { font-size: 24px; }
    .template-liebe .liebe-item-title--sm { font-size: 18px; text-transform: uppercase; }
}
