/* v3.2.1 — landing promo video, centered ticket preview, mobile pan/zoom lightbox and moderated reviews.
   Namespaced to landing-only blocks so editor/invitation UI is untouched. */
.landing-promo-section{
    width:min(1320px,calc(100% - 32px));
    margin:34px auto 96px;
    text-align:center;
}
.landing-promo-video-wrap{
    position:relative;
    width:min(430px,100%);
    margin:0 auto 56px;
    aspect-ratio:9/16;
    overflow:hidden;
    border-radius:34px;
    background:#171116;
    box-shadow:0 26px 70px rgba(88,34,53,.18),0 4px 18px rgba(45,26,34,.10);
}
.landing-promo-video{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
    background:#171116;
}
.landing-promo-sound{
    position:absolute;
    right:14px;
    bottom:14px;
    z-index:2;
    display:flex;
    align-items:center;
    gap:8px;
    min-height:42px;
    padding:9px 13px;
    border:1px solid rgba(255,255,255,.38);
    border-radius:999px;
    background:rgba(24,16,21,.72);
    color:#fff;
    box-shadow:0 8px 22px rgba(0,0,0,.18);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    cursor:pointer;
    font:inherit;
}
.landing-promo-sound strong{font-size:13px;line-height:1.1}
.landing-promo-sound span{font-size:16px;line-height:1}

/* Desktop: ticket occupies exactly half of the viewport and remains centered. */
.landing-ticket-showcase{
    width:50vw;
    margin:0 auto;
}
.landing-ticket-showcase h2{
    margin:0 0 24px;
    padding:0 16px;
    color:#2d2026;
    font-size:clamp(28px,4vw,52px);
    line-height:1.08;
    letter-spacing:-.025em;
}
.landing-ticket-preview{
    position:relative;
    display:block;
    width:100%;
    padding:0;
    border:0;
    border-radius:26px;
    overflow:hidden;
    background:#fff8fa;
    box-shadow:0 20px 60px rgba(99,44,62,.14);
    cursor:zoom-in;
}
.landing-ticket-preview img{display:block;width:100%;height:auto}
.landing-ticket-zoom{
    position:absolute;
    right:18px;
    bottom:18px;
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    border-radius:50%;
    background:rgba(255,255,255,.92);
    color:#c3365d;
    font-size:22px;
    box-shadow:0 8px 22px rgba(63,28,41,.16);
}

.landing-ticket-lightbox[hidden]{display:none!important}
.landing-ticket-lightbox{
    position:fixed;
    inset:0;
    z-index:10050;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:64px 18px 24px;
    background:rgba(22,13,18,.92);
    overflow:hidden;
    overscroll-behavior:contain;
}
.landing-ticket-lightbox-stage{
    position:relative;
    width:100%;
    height:100%;
    display:flex;
    justify-content:center;
    align-items:center;
    overflow:hidden;
}
.landing-ticket-lightbox-stage img{
    display:block;
    width:min(96vw,1536px);
    max-width:none;
    height:auto;
    max-height:calc(100vh - 92px);
    object-fit:contain;
    border-radius:18px;
    box-shadow:0 30px 90px rgba(0,0,0,.38);
    -webkit-user-select:none;
    user-select:none;
    -webkit-user-drag:none;
}
.landing-ticket-lightbox-close{
    position:fixed;
    top:max(14px,env(safe-area-inset-top));
    right:max(14px,env(safe-area-inset-right));
    z-index:4;
    width:48px;
    height:48px;
    border:1px solid rgba(255,255,255,.30);
    border-radius:50%;
    background:rgba(255,255,255,.96);
    color:#2f1f27;
    font:400 34px/42px Arial,sans-serif;
    cursor:pointer;
    box-shadow:0 12px 28px rgba(0,0,0,.25);
}
body.ticket-lightbox-open{overflow:hidden;touch-action:none}

.landing-reviews-section{
    width:min(1240px,calc(100% - 40px));
    margin:0 auto 104px;
    text-align:center;
}
.landing-reviews-heading{margin:0 auto 34px;max-width:760px}
.landing-reviews-kicker{
    display:block;
    margin-bottom:10px;
    color:#d73d68;
    font-size:13px;
    font-weight:900;
    letter-spacing:.22em;
}
.landing-reviews-heading h2{
    margin:0;
    color:#2f2228;
    font-size:clamp(34px,4.4vw,58px);
    line-height:1.04;
    letter-spacing:-.035em;
}
.landing-reviews-heading a{
    display:inline-flex;
    margin-top:15px;
    color:#c9335d;
    font-weight:800;
    text-decoration:none;
    border-bottom:1px solid rgba(201,51,93,.28);
}
.landing-reviews-grid{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:20px;
}
.landing-review-card{
    position:relative;
    flex:1 1 330px;
    max-width:390px;
    min-height:220px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    margin:0;
    padding:30px;
    text-align:left;
    overflow:hidden;
    border:1px solid rgba(198,54,94,.12);
    border-radius:28px;
    background:linear-gradient(145deg,#fff 0%,#fff7fa 100%);
    box-shadow:0 18px 50px rgba(94,42,59,.08);
}
.landing-review-quote{
    position:absolute;
    top:4px;
    right:18px;
    color:rgba(215,61,104,.12);
    font:700 92px/1 Georgia,serif;
}
.landing-review-card p{
    position:relative;
    z-index:1;
    margin:0 0 30px;
    color:#44343b;
    font-size:17px;
    line-height:1.62;
}
.landing-review-card footer{
    position:relative;
    z-index:1;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding-top:17px;
    border-top:1px solid rgba(73,50,60,.09);
}
.landing-review-card footer strong{color:#2e2228;font-size:16px}
.landing-review-card footer time{color:#8c7a82;font-size:13px}
.landing-reviews-empty{
    max-width:620px;
    margin:0 auto;
    padding:28px;
    border:1px dashed rgba(199,55,94,.24);
    border-radius:24px;
    color:#806d75;
    background:#fff9fb;
}

@media (max-width:820px){
    .landing-promo-section{width:calc(100% - 20px);margin-top:22px;margin-bottom:72px}
    .landing-promo-video-wrap{width:min(88vw,390px);margin-bottom:38px;border-radius:28px}
    .landing-ticket-showcase{width:calc(100vw - 12px);margin:0 50%;transform:translateX(-50%)}
    .landing-ticket-showcase h2{font-size:30px;margin-bottom:17px;padding:0 12px}
    .landing-ticket-preview{border-radius:16px}
    .landing-ticket-zoom{right:10px;bottom:10px;width:40px;height:40px;font-size:19px}

    /* Mobile lightbox is a fixed viewport canvas. The ticket opens enlarged in the center;
       JS handles one-finger pan, pinch zoom and double-tap zoom. */
    .landing-ticket-lightbox{
        padding:0;
        align-items:stretch;
        justify-content:stretch;
        overflow:hidden;
        touch-action:none;
    }
    .landing-ticket-lightbox-stage{
        width:100vw;
        height:100vh;
        height:100dvh;
        overflow:hidden;
        touch-action:none;
        cursor:grab;
    }
    .landing-ticket-lightbox-stage.is-dragging{cursor:grabbing}
    .landing-ticket-lightbox-stage img{
        position:absolute;
        left:50%;
        top:50%;
        width:calc(100vw - 16px);
        max-width:none;
        max-height:none;
        border-radius:10px;
        transform:translate(-50%,-50%) translate3d(var(--ticket-x,0px),var(--ticket-y,0px),0) scale(var(--ticket-scale,1));
        transform-origin:center center;
        will-change:transform;
        touch-action:none;
    }
    .landing-ticket-lightbox-close{
        top:max(12px,env(safe-area-inset-top));
        right:max(12px,env(safe-area-inset-right));
        width:46px;
        height:46px;
        font-size:32px;
        line-height:40px;
    }
    .landing-reviews-section{width:calc(100% - 24px);margin-bottom:76px}
    .landing-reviews-heading h2{font-size:38px}
    .landing-review-card{flex-basis:100%;max-width:620px;min-height:0;padding:25px 22px;border-radius:24px}
}

@media (prefers-reduced-motion:reduce){
    .landing-promo-video{scroll-behavior:auto}
}
