:root{
    --jm-bg:#f7efe5;
    --jm-card:#fffaf3;
    --jm-soft:#fff3e0;
    --jm-text:#4a2e1f;
    --jm-accent:#b45309;
    --jm-accent-2:#7c3f10;
    --jm-border:#f4c67a;
    --jm-success:#166534;
    --jm-error:#991b1b;
    --event-accent:#b45309;
}
*{box-sizing:border-box}
body{margin:0;font-family:Arial, Helvetica, sans-serif;background:linear-gradient(180deg,#fff7ed 0%, #f7efe5 100%);color:var(--jm-text)}
a{color:inherit}
img,video{max-width:100%;display:block}
.jm-topbar{position:sticky;top:0;z-index:10;background:rgba(255,250,243,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--jm-border)}
.jm-topbar__inner{max-width:1100px;margin:0 auto;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.jm-brand{text-decoration:none;font-weight:700;color:var(--jm-accent-2);font-size:1.2rem}
.jm-nav{display:flex;flex-wrap:wrap;gap:14px}
.jm-nav a{text-decoration:none;color:var(--jm-accent-2)}
.jm-layout{max-width:1100px;margin:0 auto;padding:24px 18px 48px}
.jm-stack{display:grid;gap:18px}
.jm-grid{display:grid;gap:18px}
.jm-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.jm-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.jm-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.jm-hero{padding:18px 0}
.jm-landing-hero .jm-card{background:linear-gradient(135deg,#fff7ed 0%,#fffaf3 100%)}
.jm-price{font-size:2rem;font-weight:800;color:var(--jm-accent-2)}
.jm-card{background:var(--jm-card);border:1px solid var(--jm-border);border-radius:18px;padding:24px;box-shadow:0 18px 40px rgba(0,0,0,.08)}
.jm-card--soft{background:var(--jm-soft)}
.jm-badge{display:inline-flex;padding:6px 10px;border-radius:999px;background:#fff3e0;border:1px solid var(--jm-border);color:var(--jm-accent-2);font-size:.85rem;margin-bottom:10px}
.jm-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}
.jm-inline-actions{display:grid;gap:8px}
.jm-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:0;cursor:pointer;padding:12px 16px;border-radius:12px;background:var(--jm-accent);color:#fff;font-weight:700}
.jm-btn.active{outline:3px solid rgba(180,83,9,.18)}
.jm-btn--secondary{background:#f6dec0;color:var(--jm-accent-2)}
.jm-btn--ghost{background:#fff;color:var(--jm-accent-2);border:1px solid var(--jm-border)}
.jm-auth-wrap{min-height:calc(100vh - 140px);display:flex;align-items:center;justify-content:center}
.jm-auth{width:min(520px, 100%)}
.jm-form{display:grid;gap:14px}
.jm-form--grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.jm-form label{display:grid;gap:8px;font-weight:600}
.jm-form input,.jm-form select,.jm-form textarea{width:100%;border:1px solid #e9c388;border-radius:12px;padding:12px 14px;background:#fff;color:var(--jm-text)}
.jm-form textarea{resize:vertical}
.jm-form__full{grid-column:1/-1}
.jm-alert{padding:14px 16px;border-radius:12px;border:1px solid transparent}
.jm-alert ul{margin:0;padding-left:18px}
.jm-alert--success{background:#ecfdf3;color:var(--jm-success);border-color:#a7f3d0}
.jm-alert--error{background:#fef2f2;color:var(--jm-error);border-color:#fecaca}
.jm-table-wrap{overflow:auto}
.jm-table{width:100%;border-collapse:collapse}
.jm-table th,.jm-table td{text-align:left;vertical-align:top;padding:12px;border-bottom:1px solid #f1dcc0}
.jm-between{display:flex;align-items:center;justify-content:space-between;gap:14px}
.jm-stat{font-size:2rem;font-weight:800;color:var(--jm-accent-2);margin:8px 0 0}
.jm-mini-stats{display:flex;flex-wrap:wrap;gap:10px;color:var(--jm-accent-2);font-weight:700}
.jm-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
.jm-check{display:flex !important;align-items:center;gap:10px;padding:12px 14px;border:1px solid #efd2aa;border-radius:12px;background:#fffdf8}
.jm-check input{width:auto}
.jm-event-hero{overflow:hidden}
.jm-event-cover{margin:-24px -24px 18px;background:#f3e2c7}
.jm-event-cover img{width:100%;max-height:360px;object-fit:cover}
.jm-event-mini-cover{background:#f3e2c7;border-radius:14px;overflow:hidden;margin-bottom:12px;min-height:150px}
.jm-event-mini-cover img{width:100%;height:150px;object-fit:cover}
.jm-cover-placeholder{min-height:150px;display:flex;align-items:center;justify-content:center;color:var(--jm-accent-2);font-weight:700}
.jm-url-box{padding:12px 14px;border-radius:12px;background:#fff;border:1px solid #efd2aa;word-break:break-all}
.jm-qr-box,.jm-qr-block{display:flex;gap:16px;align-items:center}
.jm-qr-box img{width:180px;height:180px}
.jm-qr-block{padding:14px;border-radius:14px;background:#fff3e0;border:1px solid #efd2aa;margin-top:14px}
.jm-qr-block img{width:110px;height:110px}
.jm-memory-card{padding:18px}
.jm-memory-media{background:#f7eddc;border-radius:14px;overflow:hidden;margin-bottom:12px}
.jm-memory-media img,.jm-memory-media video{width:100%;max-height:340px;object-fit:cover}
.jm-media-open{position:relative;display:block;width:100%;padding:0;border:0;background:none;cursor:pointer}
.jm-media-open video{pointer-events:none}
.jm-media-badge{position:absolute;right:12px;bottom:12px;background:rgba(20,10,5,.72);color:#fff;border-radius:999px;padding:8px 12px;font-size:.85rem;font-weight:700}
.jm-memory-note{min-height:140px;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--jm-accent-2)}
.jm-memory-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;color:var(--jm-accent-2)}
.jm-like-btn{border:0;background:#fee2e2;color:#991b1b;border-radius:999px;padding:8px 12px;cursor:pointer;font-weight:700}
.jm-comments{margin-top:16px;display:grid;gap:10px}
.jm-comment{padding:10px 12px;border-radius:12px;background:#fff3e0;border:1px solid #efd2aa}
.jm-comment p{margin:6px 0 0}
.jm-comment-form{display:grid;gap:10px}
.jm-comment-form input{width:100%;border:1px solid #e9c388;border-radius:12px;padding:10px 12px}
.jm-lightbox{position:fixed;inset:0;background:rgba(20,10,5,.92);display:none;align-items:center;justify-content:center;padding:10px;z-index:80}
.jm-lightbox--open{display:flex}
.jm-lightbox__box{position:relative;width:min(96vw,1100px);height:min(94vh,900px);display:flex;align-items:center;justify-content:center;background:#120a05;border-radius:24px;padding:12px}
.jm-lightbox__box img,.jm-lightbox__box video{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:16px}
.jm-lightbox__close{position:absolute;top:10px;right:12px;width:48px;height:48px;border:0;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font-size:30px;cursor:pointer}
.jm-countdown-wrap{margin-top:18px}
.jm-countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
.jm-countdown-item{padding:18px;border-radius:16px;background:linear-gradient(135deg,var(--event-accent), #7c3f10);color:#fff;text-align:center;box-shadow:0 18px 30px rgba(0,0,0,.12)}
.jm-countdown-item strong{display:block;font-size:2rem}
.jm-timeline{display:grid;gap:18px;position:relative}
.jm-timeline:before{content:'';position:absolute;left:11px;top:0;bottom:0;width:3px;background:#ecd2aa}
.jm-timeline-item{position:relative;padding-left:34px}
.jm-timeline-dot{position:absolute;left:0;top:26px;width:24px;height:24px;border-radius:999px;background:var(--event-accent);border:4px solid #fff3e0;box-shadow:0 0 0 1px #e7c794}
.jm-slideshow{display:block}
.jm-slide{display:none}
.jm-slide.is-active{display:block}
.jm-theme-classic{--jm-card:#fffaf3;--jm-soft:#fff3e0;--jm-border:#f4c67a}
.jm-theme-gold{--jm-card:#fff8e7;--jm-soft:#fff1c9;--jm-border:#e6c46e}
.jm-theme-romantic{--jm-card:#fff8fb;--jm-soft:#ffe8f1;--jm-border:#f1c7d7}
.jm-theme-night{--jm-card:#1e1f28;--jm-soft:#272a36;--jm-border:#3b3f50;--jm-text:#f5f5f5}
.jm-theme-night .jm-card,.jm-theme-night .jm-card--soft{color:#f5f5f5}
.jm-theme-night .jm-url-box,.jm-theme-night .jm-check,.jm-theme-night .jm-comment,.jm-theme-night .jm-qr-block{background:#2f3342;color:#f5f5f5;border-color:#43495d}
.jm-theme-pastel{--jm-card:#fcfbff;--jm-soft:#f1eeff;--jm-border:#d8cff9}
.jm-theme-party{--jm-card:#fff7f9;--jm-soft:#ffe5ee;--jm-border:#ffb5ca}
@media (max-width: 860px){
    .jm-grid--2,.jm-grid--3,.jm-grid--4,.jm-form--grid,.jm-check-grid,.jm-countdown{grid-template-columns:1fr}
    .jm-topbar__inner,.jm-between,.jm-qr-box,.jm-qr-block{flex-direction:column;align-items:flex-start}
    .jm-qr-box img,.jm-qr-block img{width:160px;height:160px}
}


.jm-brand{display:flex;align-items:center;gap:10px}
.jm-brand-logo{width:38px;height:38px;object-fit:contain;border-radius:10px;background:#fff;border:1px solid #eed3a8}
.jm-brand-preview img{max-width:180px;border-radius:16px;border:1px solid #efd2aa;background:#fff;padding:8px}
.jm-owner-brand{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff3e0;border:1px solid #efd2aa;border-radius:12px;margin-bottom:16px}
.jm-owner-brand img{width:42px;height:42px;object-fit:contain;border-radius:10px;background:#fff}
.jm-theme-night .jm-owner-brand{background:#2f3342;color:#f5f5f5;border-color:#43495d}


.jm-inline-form {
    display: grid;
    gap: 8px;
}

.jm-inline-form select {
    width: 100%;
    border: 1px solid #e9c388;
    border-radius: 12px;
    padding: 10px 12px;
    background: #fff;
    color: var(--jm-text);
}

.jm-invitation-preview,
.jm-invitation-card {
    background:
        radial-gradient(circle at top left, rgba(255, 255, 255, .85), transparent 32%),
        linear-gradient(135deg, #fff7ed 0%, #fffaf3 100%);
}

.jm-invitation-card {
    text-align: center;
    overflow: hidden;
}

.jm-invitation-card h1 {
    font-size: clamp(2rem, 6vw, 4.2rem);
    margin: 8px 0;
    color: var(--event-accent);
}

.jm-invitation-card h2 {
    font-size: clamp(1.4rem, 4vw, 2.4rem);
    margin: 6px 0 18px;
}

.jm-invitation-logo {
    width: 86px;
    height: 86px;
    object-fit: contain;
    margin: 0 auto 12px;
    border-radius: 22px;
    background: #fff;
    border: 1px solid #efd2aa;
    padding: 10px;
}

.jm-invitation-cover {
    margin: 18px auto;
    max-width: 760px;
    border-radius: 24px;
    overflow: hidden;
    border: 1px solid #efd2aa;
    box-shadow: 0 18px 40px rgba(0,0,0,.12);
}

.jm-invitation-cover img {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
}


.jm-inline-form {
    display: grid;
    gap: 8px;
}

.jm-inline-form select {
    width: 100%;
    border: 1px solid #e9c388;
    border-radius: 12px;
    padding: 10px 12px;
    background: #fff;
    color: var(--jm-text);
}

.jm-invitation-preview,
.jm-invitation-card {
    background:
        radial-gradient(circle at top left, rgba(255,255,255,.9), transparent 32%),
        linear-gradient(135deg, #fff7ed 0%, #fffaf3 100%);
}

.jm-invitation-card {
    text-align: center;
    overflow: hidden;
}

.jm-invitation-card h1 {
    font-size: clamp(2rem, 6vw, 4.2rem);
    margin: 8px 0;
    color: var(--event-accent);
}

.jm-invitation-card h2 {
    font-size: clamp(1.4rem, 4vw, 2.4rem);
    margin: 6px 0 18px;
}

.jm-invitation-logo {
    width: 86px;
    height: 86px;
    object-fit: contain;
    margin: 0 auto 12px;
    border-radius: 22px;
    background: #fff;
    border: 1px solid #efd2aa;
    padding: 10px;
}

.jm-invitation-cover {
    margin: 18px auto;
    max-width: 760px;
    border-radius: 24px;
    overflow: hidden;
    border: 1px solid #efd2aa;
    box-shadow: 0 18px 40px rgba(0,0,0,.12);
}

.jm-invitation-cover img {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
}

.jm-invitation-template-gold {
    background: linear-gradient(135deg, #fff8db 0%, #fffaf0 44%, #f7d774 100%);
}

.jm-invitation-template-neon {
    background: radial-gradient(circle at top, rgba(255, 0, 128, .22), transparent 35%), linear-gradient(135deg, #1b1030 0%, #32104f 100%);
    color: #fff;
}

.jm-invitation-template-neon .jm-card--soft,
.jm-invitation-template-neon .jm-qr-block {
    background: rgba(255,255,255,.12);
    border-color: rgba(255,255,255,.25);
    color: #fff;
}

.jm-invitation-template-romantic {
    background: linear-gradient(135deg, #fff0f6 0%, #fffafc 55%, #ffd6e8 100%);
}


.jm-upload-progress {
    width: 100%;
    background: #fff3e0;
    border: 1px solid #efd2aa;
    border-radius: 999px;
    overflow: hidden;
    margin-top: 14px;
}

.jm-upload-progress > div {
    width: 0%;
    min-width: 42px;
    background: var(--jm-accent);
    color: #fff;
    text-align: center;
    padding: 8px 10px;
    font-weight: 700;
    transition: width .2s ease;
}


.jm-builder-block {
    border-left: 6px solid var(--jm-accent);
}

.jm-inv-block {
    margin: 16px 0;
}

.jm-inv-block-hero {
    margin: 12px auto 22px;
}

.jm-inv-divider {
    width: min(420px, 80%);
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--event-accent), transparent);
    margin: 28px auto;
}

.jm-center-actions {
    justify-content: center;
}

.jm-btn--whatsapp {
    background: #128c7e;
}

.jm-analytics-bars {
    display: grid;
    gap: 12px;
}

.jm-bar-row {
    display: grid;
    grid-template-columns: 110px 1fr 48px;
    gap: 10px;
    align-items: center;
}

.jm-bar {
    background: #fff3e0;
    border: 1px solid #efd2aa;
    border-radius: 999px;
    overflow: hidden;
    height: 18px;
}

.jm-bar i {
    display: block;
    height: 100%;
    background: var(--jm-accent);
    border-radius: 999px;
}

@media (max-width: 700px) {
    .jm-bar-row {
        grid-template-columns: 1fr;
    }
}


.jm-code-block {
    background: #2f1b10;
    color: #fff7ed;
    border-radius: 14px;
    padding: 16px;
    overflow: auto;
    font-size: .92rem;
}


.jm-sortable-ghost {
    opacity: .45;
    transform: scale(.99);
}

.jm-builder-block .jm-badge {
    cursor: grab;
}

.jm-block-media-preview img,
.jm-inv-block-image img {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
    border-radius: 18px;
    border: 1px solid #efd2aa;
    box-shadow: 0 12px 28px rgba(0,0,0,.08);
}

.jm-inv-block-image {
    margin: 22px auto;
    max-width: 820px;
}


.jm-price-card {
    position: relative;
    overflow: hidden;
}

.jm-feature-list {
    display: grid;
    gap: 8px;
    padding-left: 20px;
}

.jm-feature-list li {
    line-height: 1.45;
}


/* =========================================================
   Javo Momentos Scrapbook / Álbum tipo libro
   Inspirado en la referencia React, adaptado a PHP + JS.
   Mantiene: likes, comentarios, lightbox, subida optimizada, admin y export.
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@500;700&family=Patrick+Hand&display=swap');

.jm-scrapbook-shell {
    position: relative;
    background:
        radial-gradient(circle at top left, rgba(255, 255, 255, .9), transparent 30%),
        linear-gradient(135deg, #f7e7c8 0%, #fff7e8 48%, #e8c68e 100%);
    border: 1px solid #d7a85a;
    border-radius: 30px;
    padding: clamp(18px, 3vw, 34px);
    box-shadow: 0 30px 80px rgba(78, 42, 15, .22);
    overflow: hidden;
}

.jm-scrapbook-shell::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        linear-gradient(90deg, transparent 0 48%, rgba(87, 46, 16, .08) 49%, rgba(87, 46, 16, .16) 50%, rgba(87, 46, 16, .08) 51%, transparent 52%),
        radial-gradient(circle at 20% 20%, rgba(146, 64, 14, .08), transparent 20%),
        radial-gradient(circle at 80% 70%, rgba(217, 119, 6, .07), transparent 20%);
}

.jm-scrapbook-head {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 18px;
}

.jm-scrapbook-head h2 {
    font-size: clamp(2rem, 5vw, 4rem);
    line-height: .95;
    margin: 4px 0 8px;
    color: #78350f;
    font-family: 'Caveat', cursive;
}

.jm-scrapbook-head p {
    margin: 0;
    color: #7c3f10;
}

.jm-scrapbook-controls {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
}

.jm-scrapbook-controls button:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.jm-book-stage {
    position: relative;
    z-index: 2;
    min-height: clamp(620px, 76vh, 820px);
    perspective: 1800px;
}

.jm-book-cover,
.jm-book-page {
    position: absolute;
    inset: 0;
    opacity: 0;
    pointer-events: none;
    transform: translateX(28px) rotateY(-18deg) scale(.965);
    transition: opacity .45s ease, transform .55s cubic-bezier(.2,.8,.2,1);
    transform-origin: left center;
}

.jm-book-cover[data-direction="backward"],
.jm-book-page[data-direction="backward"] {
    transform: translateX(-28px) rotateY(18deg) scale(.965);
    transform-origin: right center;
}

.jm-book-cover.is-active,
.jm-book-page.is-active {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0) rotateY(0) scale(1);
}

.jm-book-cover.is-prev,
.jm-book-page.is-prev {
    transform: translateX(-40px) rotateY(20deg) scale(.94);
}

.jm-book-cover {
    display: grid;
    place-items: center;
    border-radius: 28px;
    overflow: hidden;
    background:
        linear-gradient(145deg, rgba(92, 48, 16, .96), rgba(146, 64, 14, .96)),
        repeating-linear-gradient(45deg, rgba(255,255,255,.08) 0 2px, transparent 2px 7px);
    color: #fff7ed;
    box-shadow:
        inset 14px 0 30px rgba(0,0,0,.25),
        inset -10px 0 16px rgba(255,255,255,.08),
        0 34px 70px rgba(76, 38, 12, .35);
}

.jm-book-cover__shine {
    position: absolute;
    inset: -20%;
    background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.22), transparent 54%);
    transform: translateX(-40%);
    animation: jm-cover-shine 7s ease-in-out infinite;
}

@keyframes jm-cover-shine {
    0%, 55% { transform: translateX(-55%) rotate(8deg); }
    75%, 100% { transform: translateX(55%) rotate(8deg); }
}

.jm-book-cover__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .22;
    filter: sepia(.25) contrast(1.15);
}

.jm-book-cover__content {
    position: relative;
    z-index: 2;
    width: min(780px, 88%);
    text-align: center;
    padding: clamp(26px, 5vw, 54px);
    border: 2px solid rgba(255, 248, 220, .35);
    border-radius: 28px;
    background: rgba(67, 32, 10, .42);
    backdrop-filter: blur(8px);
}

.jm-book-cover__label {
    display: inline-flex;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.28);
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.jm-book-cover__content h2 {
    margin: 18px 0 10px;
    font-size: clamp(3rem, 9vw, 7rem);
    line-height: .82;
    font-family: 'Caveat', cursive;
}

.jm-book-cover__content p {
    font-size: clamp(1.1rem, 2vw, 1.35rem);
    line-height: 1.55;
}

.jm-book-cover__footer {
    display: flex;
    justify-content: center;
    gap: 18px;
    flex-wrap: wrap;
    margin-top: 22px;
    color: #fde68a;
    font-family: 'Patrick Hand', cursive;
    font-size: 1.1rem;
}

.jm-page-paper {
    position: relative;
    height: 100%;
    padding: clamp(20px, 4vw, 46px);
    overflow-y: auto;
    border-radius: 22px;
    background:
        linear-gradient(rgba(255, 248, 236, .96), rgba(250, 235, 205, .96)),
        radial-gradient(circle at 12% 10%, rgba(146, 64, 14, .08), transparent 16%),
        radial-gradient(circle at 86% 76%, rgba(217, 119, 6, .08), transparent 22%),
        repeating-linear-gradient(0deg, transparent 0 29px, rgba(146,64,14,.055) 30px);
    box-shadow:
        inset 18px 0 24px rgba(120, 53, 15, .12),
        inset -18px 0 24px rgba(255,255,255,.36),
        0 28px 50px rgba(90, 45, 12, .18);
}

.jm-page-number {
    position: absolute;
    right: 22px;
    bottom: 18px;
    color: rgba(120, 53, 15, .55);
    font-family: 'Patrick Hand', cursive;
}

.jm-paper-corner {
    position: absolute;
    top: 18px;
    right: 18px;
    width: 44px;
    height: 44px;
    border-top: 3px solid rgba(120, 53, 15, .25);
    border-right: 3px solid rgba(120, 53, 15, .25);
}

.jm-polaroid-card {
    position: relative;
    width: min(760px, 100%);
    margin: clamp(16px, 4vh, 42px) auto;
    padding: clamp(16px, 3vw, 26px);
    border: 2px solid #ead0a8;
    border-radius: 18px;
    background: #fff8ea;
    box-shadow:
        0 20px 40px rgba(70, 36, 12, .20),
        inset 0 0 0 1px rgba(255,255,255,.7);
    transform: rotate(var(--tilt));
}

.jm-polaroid-card::before,
.jm-polaroid-card::after {
    content: "";
    position: absolute;
    width: 22px;
    height: 22px;
    z-index: 2;
}

.jm-polaroid-card::before {
    left: 10px;
    top: 10px;
    border-left: 2px solid rgba(120, 53, 15, .28);
    border-top: 2px solid rgba(120, 53, 15, .28);
}

.jm-polaroid-card::after {
    right: 10px;
    bottom: 10px;
    border-right: 2px solid rgba(120, 53, 15, .28);
    border-bottom: 2px solid rgba(120, 53, 15, .28);
}

.jm-tape {
    position: absolute;
    top: -14px;
    left: 50%;
    z-index: 4;
    width: 96px;
    height: 28px;
    transform: translateX(-50%) rotate(-2deg);
    background: rgba(254, 243, 199, .72);
    border-left: 1px solid rgba(146, 64, 14, .18);
    border-right: 1px solid rgba(146, 64, 14, .18);
    box-shadow: 0 4px 8px rgba(0,0,0,.08);
}

.jm-polaroid-media {
    position: relative;
    width: 100%;
    border: 0;
    padding: 10px;
    margin: 0 0 16px;
    background: #fff;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px #ead0a8;
}

.jm-polaroid-media img,
.jm-polaroid-media video {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
    filter: sepia(.14) contrast(1.06);
}

.jm-letter-card {
    min-height: 260px;
    display: grid;
    place-items: center;
    padding: 22px;
    border-radius: 16px;
    background:
        linear-gradient(135deg, rgba(255,255,255,.4), rgba(255,243,224,.75)),
        repeating-linear-gradient(0deg, transparent 0 28px, rgba(146,64,14,.08) 29px);
    border: 1px solid #ead0a8;
}

.jm-letter-card p,
.jm-handwritten {
    color: #78350f;
    font-family: 'Caveat', cursive;
    font-size: clamp(1.5rem, 4vw, 2.4rem);
    line-height: 1.18;
    text-align: center;
}

.jm-polaroid-meta {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: center;
    padding-top: 8px;
    color: #7c3f10;
    font-family: 'Patrick Hand', cursive;
    font-size: 1.1rem;
}

.jm-polaroid-meta small {
    color: rgba(124, 63, 16, .72);
    font-size: .9rem;
}

.jm-comment-toggle {
    border: 1px solid #efd2aa;
    background: #fff7ed;
    color: #7c3f10;
    border-radius: 999px;
    padding: 8px 12px;
    cursor: pointer;
    font-weight: 700;
}

.jm-book-comments {
    margin-top: 12px;
    padding: 12px;
    border: 1px dashed #d7a85a;
    border-radius: 14px;
    background: rgba(255, 247, 237, .7);
}

.jm-book-progress {
    position: relative;
    z-index: 2;
    display: grid;
    gap: 8px;
    margin-top: 16px;
    color: #7c3f10;
    font-weight: 700;
}

.jm-book-progress__bar {
    height: 10px;
    background: rgba(255,255,255,.55);
    border: 1px solid #d7a85a;
    border-radius: 999px;
    overflow: hidden;
}

.jm-book-progress__bar i {
    display: block;
    width: 0%;
    height: 100%;
    background: linear-gradient(90deg, #92400e, #f59e0b);
    transition: width .3s ease;
}

.jm-scrapbook-empty {
    position: relative;
    z-index: 2;
    min-height: 420px;
    display: grid;
    place-items: center;
    text-align: center;
    border-radius: 22px;
    background: rgba(255, 248, 236, .8);
    border: 1px dashed #d7a85a;
}

.jm-scrapbook-empty h3 {
    font-size: clamp(2rem, 5vw, 4rem);
    color: #7c3f10;
    font-family: 'Caveat', cursive;
    margin: 0;
}

.jm-mobile-memory-list {
    display: none;
}

@media (max-width: 760px) {
    .jm-scrapbook-head {
        display: grid;
    }

    .jm-scrapbook-controls {
        justify-content: stretch;
    }

    .jm-scrapbook-controls .jm-btn {
        flex: 1 1 100px;
    }

    .jm-book-stage {
        min-height: 620px;
    }

    .jm-page-paper {
        padding: 16px;
    }

    .jm-polaroid-card {
        padding: 14px;
        transform: none;
    }

    .jm-polaroid-media img,
    .jm-polaroid-media video {
        max-height: 310px;
    }

    .jm-letter-card {
        min-height: 220px;
    }
}

@media (max-width: 480px) {
    .jm-book-stage {
        min-height: 570px;
    }

    .jm-book-cover__content {
        width: 92%;
        padding: 22px;
    }

    .jm-book-cover__content h2 {
        font-size: 3.25rem;
    }

    .jm-polaroid-meta {
        display: grid;
        gap: 4px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .jm-book-cover,
    .jm-book-page,
    .jm-book-cover__shine {
        animation: none !important;
        transition: none !important;
    }
}


/* =========================================================
   Javo Momentos Global UI — Scrapbook System Theme
   Aplica el estilo del ZIP de referencia a TODO el sistema.
   ========================================================= */

:root {
    --jm-bg: #f4e4c6;
    --jm-bg-2: #fff7e8;
    --jm-card: rgba(255, 250, 238, .94);
    --jm-soft: rgba(255, 243, 224, .92);
    --jm-text: #4a2e1f;
    --jm-muted: #8a6a4f;
    --jm-accent: #92400e;
    --jm-accent-2: #78350f;
    --jm-border: #d7a85a;
    --jm-paper-line: rgba(146, 64, 14, .065);
    --jm-shadow: 0 22px 50px rgba(78, 42, 15, .16);
    --jm-shadow-soft: 0 12px 30px rgba(78, 42, 15, .10);
}

body {
    min-height: 100vh;
    font-family: Arial, Helvetica, sans-serif;
    background:
        radial-gradient(circle at 8% 10%, rgba(146,64,14,.12), transparent 24%),
        radial-gradient(circle at 90% 24%, rgba(245,158,11,.12), transparent 26%),
        linear-gradient(135deg, var(--jm-bg) 0%, var(--jm-bg-2) 48%, #e8c68e 100%);
    background-attachment: fixed;
}

body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: -1;
    opacity: .42;
    background:
        repeating-linear-gradient(0deg, transparent 0 31px, rgba(120,53,15,.04) 32px),
        repeating-linear-gradient(90deg, transparent 0 37px, rgba(120,53,15,.025) 38px);
}

.jm-topbar {
    position: sticky;
    top: 0;
    z-index: 40;
    background: rgba(255, 250, 238, .86);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(215, 168, 90, .72);
    box-shadow: 0 12px 32px rgba(78, 42, 15, .08);
}

.jm-topbar__inner {
    max-width: 1240px;
    padding: 12px 18px;
}

.jm-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--jm-accent-2);
    font-family: 'Caveat', cursive;
    font-size: 1.9rem;
    line-height: 1;
}

.jm-brand::before {
    content: "";
    width: 36px;
    height: 36px;
    flex: 0 0 auto;
    border-radius: 12px;
    background:
        linear-gradient(145deg, #92400e, #d97706);
    box-shadow:
        inset 0 0 0 2px rgba(255,255,255,.25),
        0 10px 18px rgba(120, 53, 15, .22);
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M4 4.8A2.8 2.8 0 0 1 6.8 2H19a1 1 0 0 1 1 1v16.4a2.6 2.6 0 0 1-2.6 2.6H6.8A2.8 2.8 0 0 1 4 19.2V4.8Zm3 .2v12h10V5H7Zm0 14a.8.8 0 0 0 .8.8h9.6a.6.6 0 0 0 .6-.6V19H7Z'/%3E%3C/svg%3E") center / 72% no-repeat;
}

.jm-brand-logo {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    border: 1px solid rgba(215, 168, 90, .85);
    box-shadow: var(--jm-shadow-soft);
}

.jm-nav {
    align-items: center;
    gap: 8px;
}

.jm-nav a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 38px;
    padding: 9px 11px;
    border: 1px solid rgba(215,168,90,.62);
    border-radius: 999px;
    background: rgba(255, 253, 248, .72);
    color: var(--jm-accent-2);
    font-weight: 800;
    font-size: .9rem;
    text-decoration: none;
    box-shadow: 0 8px 18px rgba(78,42,15,.06);
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.jm-nav a:hover {
    transform: translateY(-1px);
    background: #fff7ed;
    box-shadow: 0 12px 22px rgba(78,42,15,.12);
}

.jm-nav svg,
.jm-btn svg,
.jm-action-icon {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-layout {
    max-width: 1240px;
    padding: 28px 18px 64px;
}

.jm-card {
    position: relative;
    background:
        linear-gradient(rgba(255, 250, 238, .94), rgba(255, 244, 226, .94)),
        repeating-linear-gradient(0deg, transparent 0 29px, var(--jm-paper-line) 30px);
    border: 1px solid rgba(215, 168, 90, .88);
    border-radius: 24px;
    box-shadow: var(--jm-shadow);
}

.jm-card::after {
    content: "";
    position: absolute;
    top: 12px;
    right: 12px;
    width: 34px;
    height: 34px;
    border-top: 2px solid rgba(120, 53, 15, .18);
    border-right: 2px solid rgba(120, 53, 15, .18);
    pointer-events: none;
}

.jm-card--soft {
    background:
        linear-gradient(rgba(255, 247, 237, .95), rgba(255, 240, 218, .95)),
        repeating-linear-gradient(0deg, transparent 0 29px, rgba(146,64,14,.05) 30px);
}

.jm-card h1,
.jm-card h2,
.jm-card h3,
.jm-landing-hero h1,
.jm-event-hero h1 {
    color: var(--jm-accent-2);
}

.jm-card h1,
.jm-landing-hero h1,
.jm-event-hero h1 {
    font-family: 'Caveat', cursive;
    font-size: clamp(2.4rem, 6vw, 4.8rem);
    line-height: .95;
    margin-top: 0;
}

.jm-card h2 {
    font-family: 'Caveat', cursive;
    font-size: clamp(1.8rem, 4vw, 3rem);
    line-height: 1;
}

.jm-card p {
    line-height: 1.6;
}

.jm-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(255, 243, 224, .92);
    border: 1px solid rgba(215, 168, 90, .8);
    color: var(--jm-accent-2);
    font-weight: 900;
    letter-spacing: .02em;
}

.jm-badge::before {
    content: "";
    width: 14px;
    height: 14px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='m12 2 2.7 6.7 7.3.5-5.6 4.6 1.8 7.1L12 17.1 5.8 20.9l1.8-7.1L2 9.2l7.3-.5L12 2Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-btn {
    gap: 8px;
    border-radius: 14px;
    background: linear-gradient(145deg, #92400e, #b45309);
    box-shadow: 0 12px 24px rgba(120,53,15,.18);
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.jm-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 16px 30px rgba(120,53,15,.24);
    filter: brightness(1.03);
}

.jm-btn--secondary {
    background: linear-gradient(145deg, #f8dfb8, #f6c874);
    color: #78350f;
}

.jm-btn--ghost {
    background: rgba(255, 253, 248, .84);
    color: var(--jm-accent-2);
    border: 1px solid rgba(215, 168, 90, .88);
    box-shadow: 0 10px 20px rgba(78,42,15,.08);
}

.jm-form input,
.jm-form select,
.jm-form textarea,
.jm-inline-form select,
.jm-comment-form input {
    border: 1px solid rgba(215, 168, 90, .88);
    background: rgba(255, 253, 248, .92);
    color: var(--jm-text);
    border-radius: 14px;
    box-shadow: inset 0 2px 5px rgba(78,42,15,.04);
}

.jm-form input:focus,
.jm-form select:focus,
.jm-form textarea:focus {
    outline: 3px solid rgba(217,119,6,.18);
    border-color: #d97706;
}

.jm-check {
    background: rgba(255, 253, 248, .86);
    border: 1px solid rgba(215, 168, 90, .78);
    box-shadow: 0 8px 18px rgba(78,42,15,.06);
}

.jm-table {
    background: rgba(255, 250, 238, .72);
    border: 1px solid rgba(215, 168, 90, .75);
    border-radius: 18px;
    overflow: hidden;
    border-collapse: separate;
    border-spacing: 0;
}

.jm-table th {
    background: rgba(246, 222, 192, .8);
    color: var(--jm-accent-2);
    font-weight: 900;
}

.jm-table th,
.jm-table td {
    border-bottom: 1px solid rgba(215, 168, 90, .45);
}

.jm-table tr:hover td {
    background: rgba(255, 247, 237, .55);
}

.jm-alert {
    border-radius: 16px;
    box-shadow: var(--jm-shadow-soft);
}

.jm-alert--success {
    background: rgba(236, 253, 243, .94);
}

.jm-alert--error {
    background: rgba(254, 242, 242, .94);
}

.jm-stat {
    font-family: 'Patrick Hand', cursive;
    font-size: 2.5rem;
}

.jm-event-mini-cover,
.jm-event-cover,
.jm-memory-media,
.jm-invitation-cover,
.jm-block-media-preview img {
    border: 1px solid rgba(215,168,90,.82);
    box-shadow: inset 0 0 0 4px rgba(255,255,255,.55), var(--jm-shadow-soft);
}

.jm-event-mini-cover img,
.jm-event-cover img,
.jm-memory-media img,
.jm-memory-media video {
    filter: sepia(.08) contrast(1.03);
}

.jm-memory-card {
    transform: rotate(-.25deg);
}

.jm-memory-card:nth-child(even) {
    transform: rotate(.25deg);
}

.jm-qr-box,
.jm-qr-block {
    background: rgba(255, 243, 224, .78);
    border: 1px solid rgba(215, 168, 90, .84);
    box-shadow: var(--jm-shadow-soft);
}

.jm-qr-box img,
.jm-qr-block img {
    background: #fff;
    padding: 8px;
    border-radius: 14px;
    border: 1px solid rgba(215,168,90,.72);
}

.jm-auth-wrap {
    padding: 28px 0;
}

.jm-auth .jm-card {
    overflow: hidden;
}

.jm-auth .jm-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at top left, rgba(217,119,6,.16), transparent 34%);
    pointer-events: none;
}

.jm-price-card {
    border-width: 2px;
}

.jm-price {
    font-family: 'Patrick Hand', cursive;
    font-size: clamp(2.2rem, 5vw, 3.4rem);
}

.jm-feature-list li {
    margin-bottom: 8px;
    line-height: 1.5;
}

.jm-feature-list li::marker {
    color: var(--jm-accent);
}

/* Botones de acción con icono automático por tipo común */
.jm-actions .jm-btn[href*="event_edit"]::before,
.jm-actions .jm-btn[href*="settings"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M4 17.5V20h2.5L17.1 9.4l-2.5-2.5L4 17.5ZM19 7.5 16.5 5 18 3.5 20.5 6 19 7.5Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="memories"]::before,
.jm-actions .jm-btn[href*="export"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm1 3v10h12V7H6Zm2 8 2.5-3 2 2.3 1.5-1.8 2 2.5H8Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="invitation"]::before,
.jm-actions .jm-btn[href*="send_invitations"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M3 6.5A2.5 2.5 0 0 1 5.5 4h13A2.5 2.5 0 0 1 21 6.5v11A2.5 2.5 0 0 1 18.5 20h-13A2.5 2.5 0 0 1 3 17.5v-11ZM5 8l7 4.5L19 8V6.8l-7 4.5-7-4.5V8Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="analytics"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M5 20V10h3v10H5Zm5 0V4h3v16h-3Zm5 0v-7h3v7h-3Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="guests"]::before,
.jm-actions .jm-btn[href*="users"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M9.5 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2c-3.7 0-6.5 2-6.5 4.5V20h13v-2.5C16 15 13.2 13 9.5 13Zm7-1.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm.8 2.1c.9.9 1.7 2.1 1.7 3.9V20h2v-2.3c0-2.1-1.6-3.6-3.7-4.1Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="video"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M4 6h10a2 2 0 0 1 2 2v1.4l4-2.4v10l-4-2.4V16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="reminders"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M12 22a2.5 2.5 0 0 0 2.45-2h-4.9A2.5 2.5 0 0 0 12 22ZM5 18h14l-1.5-2V11a5.5 5.5 0 0 0-4.5-5.4V4a1 1 0 0 0-2 0v1.6A5.5 5.5 0 0 0 6.5 11v5L5 18Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-actions .jm-btn[href*="event_extras"]::before,
.jm-actions .jm-btn[href*="billing"]::before,
.jm-actions .jm-btn[href*="checkout"]::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2 2h14V7H5v2Zm2 5v2h5v-2H7Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

@media (max-width: 820px) {
    .jm-topbar__inner {
        align-items: flex-start;
        display: grid;
    }

    .jm-nav {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
    }

    .jm-nav a {
        justify-content: center;
        border-radius: 14px;
        min-height: 44px;
    }

    .jm-nav a span {
        font-size: .82rem;
    }

    .jm-between {
        align-items: flex-start;
        display: grid;
    }

    .jm-actions {
        width: 100%;
    }

    .jm-actions .jm-btn {
        flex: 1 1 160px;
    }
}

@media (max-width: 520px) {
    .jm-layout {
        padding-left: 12px;
        padding-right: 12px;
    }

    .jm-card {
        border-radius: 18px;
        padding: 18px;
    }

    .jm-nav {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .jm-nav svg {
        width: 16px;
        height: 16px;
    }

    .jm-grid--2,
    .jm-grid--3,
    .jm-grid--4,
    .jm-form--grid,
    .jm-check-grid {
        grid-template-columns: 1fr;
    }
}


/* Panel de acciones más intuitivo */
.jm-event-actions-board {
    display: grid;
    gap: 14px;
    margin-top: 18px;
}

.jm-action-group {
    position: relative;
    padding: 14px;
    border: 1px solid rgba(215, 168, 90, .7);
    border-radius: 18px;
    background: rgba(255, 253, 248, .58);
    box-shadow: 0 10px 22px rgba(78,42,15,.07);
}

.jm-action-group h3 {
    margin: 0 0 10px;
    font-family: 'Patrick Hand', cursive;
    color: var(--jm-accent-2);
    font-size: 1.35rem;
}

.jm-action-group .jm-actions {
    margin-top: 0;
}

@media (min-width: 980px) {
    .jm-event-actions-board {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}


/* =========================================================
   Landing Page estilo ZIP de referencia
   Convertido de React/Tailwind a PHP + CSS plano.
   ========================================================= */

.jm-landing-body {
    background: #fff;
    color: #111827;
}

.jm-lp-nav {
    position: sticky;
    top: 0;
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 16px clamp(16px, 4vw, 42px);
    background: rgba(255,255,255,.88);
    backdrop-filter: blur(18px);
    border-bottom: 1px solid rgba(124, 58, 237, .12);
    box-shadow: 0 12px 30px rgba(76, 29, 149, .08);
}

.jm-lp-logo {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #5b21b6;
    text-decoration: none;
    font-size: 1.35rem;
}

.jm-lp-logo-mark {
    width: 42px;
    height: 42px;
    display: inline-grid;
    place-items: center;
    border-radius: 14px;
    background: linear-gradient(135deg, #7c3aed, #6d28d9);
    color: #fff;
    box-shadow: 0 12px 24px rgba(109, 40, 217, .24);
}

.jm-lp-logo svg,
.jm-lp-icon svg,
.jm-lp-step-icon svg,
.jm-lp-btn svg,
.jm-lp-floating svg,
.jm-lp-price-card li svg,
.jm-lp-pill svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-lp-nav nav {
    display: flex;
    gap: 22px;
    align-items: center;
}

.jm-lp-nav nav a,
.jm-lp-link {
    color: #4b5563;
    text-decoration: none;
    font-weight: 700;
    transition: color .2s ease;
}

.jm-lp-nav nav a:hover,
.jm-lp-link:hover {
    color: #6d28d9;
}

.jm-lp-nav-actions {
    display: flex;
    gap: 12px;
    align-items: center;
}

.jm-lp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 54px;
    padding: 14px 22px;
    border: 0;
    border-radius: 14px;
    background: #fff;
    color: #6d28d9;
    font-weight: 900;
    text-decoration: none;
    box-shadow: 0 18px 36px rgba(76, 29, 149, .18);
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.jm-lp-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 24px 46px rgba(76, 29, 149, .24);
}

.jm-lp-btn--small {
    min-height: 40px;
    padding: 10px 15px;
    background: linear-gradient(135deg, #7c3aed, #6d28d9);
    color: #fff;
}

.jm-lp-btn--outline {
    background: rgba(255,255,255,.08);
    color: #fff;
    border: 2px solid rgba(255,255,255,.32);
    backdrop-filter: blur(10px);
}

.jm-lp-btn--dark {
    width: 100%;
    background: #111827;
    color: #fff;
}

.jm-lp-btn--yellow {
    width: 100%;
    background: #facc15;
    color: #4c1d95;
}

.jm-lp-btn--light {
    color: #6d28d9;
    background: #fff;
}

.jm-lp-container {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
}

.jm-lp-hero {
    position: relative;
    overflow: hidden;
    color: #fff;
    background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 45%, #4c1d95 100%);
}

.jm-lp-hero-bg {
    position: absolute;
    inset: 0;
    background-image: url('https://images.unsplash.com/photo-1511795409834-ef04bbd61622?w=1600');
    background-size: cover;
    background-position: center;
    opacity: .10;
}

.jm-lp-hero::after {
    content: "";
    position: absolute;
    inset: auto -10% -120px -10%;
    height: 220px;
    background: #fff;
    transform: rotate(-3deg);
    transform-origin: left top;
}

.jm-lp-hero-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: clamp(34px, 7vw, 80px);
    align-items: center;
    padding: clamp(72px, 10vw, 128px) 0 clamp(94px, 12vw, 150px);
}

.jm-lp-hero-copy {
    display: grid;
    gap: 26px;
}

.jm-lp-pill {
    width: fit-content;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 9px 15px;
    border-radius: 999px;
    background: rgba(255,255,255,.11);
    border: 1px solid rgba(255,255,255,.20);
    backdrop-filter: blur(10px);
    font-weight: 800;
}

.jm-lp-pill svg {
    color: #fde047;
}

.jm-lp-hero h1 {
    margin: 0;
    font-size: clamp(3.2rem, 8vw, 6.8rem);
    line-height: .94;
    letter-spacing: -.055em;
    font-weight: 950;
}

.jm-lp-hero h1 span {
    display: block;
    color: transparent;
    background: linear-gradient(90deg, #fde047, #fb923c);
    -webkit-background-clip: text;
    background-clip: text;
}

.jm-lp-hero p {
    margin: 0;
    max-width: 650px;
    color: #ede9fe;
    font-size: clamp(1.12rem, 2vw, 1.35rem);
    line-height: 1.65;
}

.jm-lp-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.jm-lp-stats {
    display: flex;
    gap: clamp(18px, 4vw, 38px);
    flex-wrap: wrap;
    padding-top: 8px;
}

.jm-lp-stats div {
    display: grid;
    gap: 2px;
}

.jm-lp-stats strong {
    font-size: 2.1rem;
    line-height: 1;
}

.jm-lp-stats span {
    color: #ddd6fe;
    font-size: .92rem;
}

.jm-lp-hero-preview {
    position: relative;
    min-height: 470px;
}

.jm-lp-photo-card {
    position: relative;
    z-index: 2;
    background: #fff;
    border-radius: 24px;
    padding: 16px;
    transform: rotate(2deg);
    box-shadow: 0 36px 80px rgba(17, 24, 39, .35);
    transition: transform .28s ease;
}

.jm-lp-photo-card:hover {
    transform: rotate(0) translateY(-4px);
}

.jm-lp-photo-card img {
    width: 100%;
    display: block;
    border-radius: 18px;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.jm-lp-floating {
    position: absolute;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 13px 18px;
    border-radius: 999px;
    font-weight: 950;
    box-shadow: 0 22px 44px rgba(17,24,39,.22);
}

.jm-lp-floating--top {
    top: 34px;
    right: -10px;
    background: #facc15;
    color: #4c1d95;
    transform: rotate(12deg);
}

.jm-lp-floating--bottom {
    bottom: 20px;
    left: 22px;
    background: #fff;
    color: #4c1d95;
    transform: rotate(-5deg);
}

.jm-lp-section {
    padding: clamp(72px, 10vw, 108px) 0;
    background: #fff;
}

.jm-lp-section--soft {
    background: #f9fafb;
}

.jm-lp-section--gradient {
    background: linear-gradient(135deg, #faf5ff 0%, #ede9fe 100%);
}

.jm-lp-section-head {
    text-align: center;
    max-width: 760px;
    margin: 0 auto 54px;
}

.jm-lp-section-head h2 {
    margin: 0 0 14px;
    color: #111827;
    font-size: clamp(2.3rem, 5vw, 4rem);
    line-height: 1.05;
    letter-spacing: -.04em;
}

.jm-lp-section-head p {
    margin: 0;
    color: #6b7280;
    font-size: 1.2rem;
    line-height: 1.65;
}

.jm-lp-feature-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
}

.jm-lp-card {
    padding: 28px;
    border: 2px solid transparent;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 14px 32px rgba(17,24,39,.06);
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.jm-lp-card:hover {
    transform: translateY(-4px);
    border-color: #ddd6fe;
    box-shadow: 0 24px 46px rgba(76,29,149,.12);
}

.jm-lp-icon {
    width: 58px;
    height: 58px;
    display: grid;
    place-items: center;
    border-radius: 20px;
    color: #fff;
    background: linear-gradient(135deg, #8b5cf6, #6d28d9);
    margin-bottom: 20px;
    box-shadow: 0 16px 30px rgba(109,40,217,.22);
}

.jm-lp-icon svg {
    width: 30px;
    height: 30px;
}

.jm-lp-card h3,
.jm-lp-step h3,
.jm-lp-price-card h3 {
    margin: 0 0 10px;
    color: #111827;
    font-size: 1.35rem;
}

.jm-lp-card p,
.jm-lp-step p,
.jm-lp-price-card p {
    margin: 0;
    color: #6b7280;
    line-height: 1.65;
}

.jm-lp-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 42px;
}

.jm-lp-step {
    position: relative;
    text-align: center;
}

.jm-lp-step:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 40px;
    left: calc(50% + 54px);
    width: calc(100% - 70px);
    height: 2px;
    background: linear-gradient(90deg, #c4b5fd, transparent);
}

.jm-lp-step-icon {
    position: relative;
    width: 82px;
    height: 82px;
    display: grid;
    place-items: center;
    margin: 0 auto 22px;
    border-radius: 999px;
    color: #fff;
    background: linear-gradient(135deg, #8b5cf6, #6d28d9);
    box-shadow: 0 20px 36px rgba(109,40,217,.25);
}

.jm-lp-step-icon svg {
    width: 38px;
    height: 38px;
}

.jm-lp-step-icon span {
    position: absolute;
    top: -9px;
    right: -9px;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: #facc15;
    color: #4c1d95;
    font-weight: 950;
    box-shadow: 0 10px 20px rgba(17,24,39,.16);
}

.jm-lp-pricing {
    max-width: 980px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 26px;
}

.jm-lp-price-card {
    position: relative;
    padding: 32px;
    border-radius: 24px;
    background: #fff;
    border: 2px solid #e5e7eb;
    box-shadow: 0 18px 38px rgba(17,24,39,.08);
}

.jm-lp-price-card--popular {
    overflow: hidden;
    color: #fff;
    background: linear-gradient(135deg, #7c3aed, #6d28d9);
    border: 4px solid #facc15;
    box-shadow: 0 28px 62px rgba(76,29,149,.26);
}

.jm-lp-price-card--popular h3,
.jm-lp-price-card--popular p,
.jm-lp-price-card--popular li {
    color: #fff;
}

.jm-lp-ribbon {
    position: absolute;
    top: 0;
    right: 0;
    padding: 9px 20px;
    background: #facc15;
    color: #4c1d95;
    text-transform: uppercase;
    font-weight: 950;
    font-size: .8rem;
}

.jm-lp-price {
    margin: 28px 0;
    color: #111827;
    font-size: clamp(3rem, 6vw, 4rem);
    font-weight: 950;
    line-height: 1;
}

.jm-lp-price-card--popular .jm-lp-price {
    color: #fff;
}

.jm-lp-price span {
    margin-left: 8px;
    color: #6b7280;
    font-size: 1rem;
    font-weight: 700;
}

.jm-lp-price-card--popular .jm-lp-price span {
    color: #ddd6fe;
}

.jm-lp-price-card ul {
    display: grid;
    gap: 14px;
    padding: 0;
    margin: 0 0 28px;
    list-style: none;
}

.jm-lp-price-card li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    color: #374151;
    line-height: 1.45;
}

.jm-lp-price-card li svg {
    width: 23px;
    height: 23px;
    flex: 0 0 auto;
    color: #16a34a;
}

.jm-lp-price-card--popular li svg {
    color: #fde047;
}

.jm-lp-extra-note {
    max-width: 980px;
    margin: 22px auto 0;
    padding: 16px 18px;
    border-radius: 18px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(124,58,237,.14);
    color: #4b5563;
    text-align: center;
}

.jm-lp-testimonials {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
}

.jm-lp-testimonial {
    display: grid;
    grid-template-columns: 64px 1fr;
    gap: 14px;
    padding: 28px;
    border-radius: 24px;
    background: #f9fafb;
    border: 2px solid #f3f4f6;
    box-shadow: 0 14px 32px rgba(17,24,39,.05);
}

.jm-lp-avatar {
    width: 64px;
    height: 64px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: linear-gradient(135deg, #8b5cf6, #6d28d9);
    color: #fff;
    font-weight: 950;
    font-size: 1.6rem;
}

.jm-lp-testimonial strong {
    display: block;
    color: #111827;
}

.jm-lp-testimonial span {
    color: #7c3aed;
    font-size: .92rem;
    font-weight: 800;
}

.jm-lp-stars {
    grid-column: 1 / -1;
    color: #facc15;
    letter-spacing: 2px;
}

.jm-lp-testimonial p {
    grid-column: 1 / -1;
    margin: 0;
    color: #374151;
    line-height: 1.65;
    font-style: italic;
}

.jm-lp-cta {
    padding: clamp(72px, 10vw, 110px) 0;
    color: #fff;
    text-align: center;
    background: linear-gradient(90deg, #7c3aed, #6d28d9);
}

.jm-lp-cta h2 {
    max-width: 850px;
    margin: 0 auto 18px;
    font-size: clamp(2.6rem, 6vw, 5rem);
    line-height: 1;
    letter-spacing: -.045em;
}

.jm-lp-cta p {
    max-width: 680px;
    margin: 0 auto 28px;
    color: #ede9fe;
    font-size: 1.22rem;
    line-height: 1.65;
}

.jm-lp-footer {
    color: #d1d5db;
    background: #111827;
    padding: 54px 0 26px;
}

.jm-lp-footer-grid {
    display: grid;
    grid-template-columns: 1.5fr 1fr 1fr 1fr;
    gap: 28px;
}

.jm-lp-footer h3,
.jm-lp-footer h4 {
    color: #fff;
    margin: 0 0 14px;
}

.jm-lp-footer p {
    color: #9ca3af;
    line-height: 1.65;
}

.jm-lp-footer a {
    display: block;
    color: #9ca3af;
    text-decoration: none;
    margin: 8px 0;
}

.jm-lp-footer a:hover {
    color: #c4b5fd;
}

.jm-lp-copy {
    width: min(1180px, calc(100% - 32px));
    margin: 34px auto 0;
    padding-top: 24px;
    border-top: 1px solid #1f2937;
    color: #6b7280;
    text-align: center;
    font-size: .92rem;
}

@media (max-width: 940px) {
    .jm-lp-nav {
        display: grid;
    }

    .jm-lp-nav nav {
        order: 3;
        width: 100%;
        justify-content: center;
        flex-wrap: wrap;
    }

    .jm-lp-nav-actions {
        justify-content: flex-end;
    }

    .jm-lp-hero-grid,
    .jm-lp-feature-grid,
    .jm-lp-steps,
    .jm-lp-pricing,
    .jm-lp-testimonials,
    .jm-lp-footer-grid {
        grid-template-columns: 1fr;
    }

    .jm-lp-step:not(:last-child)::after {
        display: none;
    }

    .jm-lp-hero-preview {
        min-height: auto;
    }
}

@media (max-width: 560px) {
    .jm-lp-nav {
        padding: 12px;
    }

    .jm-lp-nav nav {
        display: none;
    }

    .jm-lp-nav-actions {
        width: 100%;
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .jm-lp-link,
    .jm-lp-btn--small {
        justify-content: center;
    }

    .jm-lp-hero-grid {
        padding-top: 54px;
    }

    .jm-lp-actions,
    .jm-lp-stats {
        display: grid;
    }

    .jm-lp-floating {
        position: static;
        margin-top: 12px;
        transform: none;
        width: fit-content;
    }

    .jm-lp-price-card {
        padding: 24px;
    }
}


/* =========================================================
   Javo Momentos Panel UI — estilo Panel/SuperAdmin
   Diseño global del sistema: dashboard limpio, cards blancas,
   fondo ámbar/naranja suave, botones naranja/morado.
   El estilo scrapbook queda limitado al álbum.
   ========================================================= */

:root {
    --jm-bg: #fff7ed;
    --jm-bg-2: #ffedd5;
    --jm-card: #ffffff;
    --jm-soft: #fff7ed;
    --jm-text: #111827;
    --jm-muted: #6b7280;
    --jm-accent: #ea580c;
    --jm-accent-2: #c2410c;
    --jm-purple: #7c3aed;
    --jm-purple-2: #6d28d9;
    --jm-border: #fed7aa;
    --jm-success: #166534;
    --jm-error: #991b1b;
    --event-accent: #ea580c;
    --jm-shadow: 0 16px 36px rgba(15, 23, 42, .08);
    --jm-shadow-lg: 0 24px 54px rgba(15, 23, 42, .12);
}

body:not(.jm-landing-body) {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    background:
        radial-gradient(circle at top left, rgba(251, 146, 60, .18), transparent 28%),
        linear-gradient(135deg, #fffbeb 0%, #fff7ed 48%, #ffedd5 100%);
    color: var(--jm-text);
}

body:not(.jm-landing-body)::before {
    content: none !important;
}

.jm-topbar {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(251, 146, 60, .22);
    box-shadow: 0 8px 24px rgba(15, 23, 42, .06);
}

.jm-topbar__inner {
    max-width: 1280px;
    padding: 14px 20px;
}

.jm-brand {
    font-family: Arial, Helvetica, sans-serif !important;
    font-size: 1.28rem;
    font-weight: 900;
    color: #111827;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.jm-brand::before {
    content: "";
    width: 38px;
    height: 38px;
    border-radius: 12px;
    background: linear-gradient(135deg, #f97316, #ea580c);
    box-shadow: 0 12px 24px rgba(234, 88, 12, .28);
    mask: none;
}

.jm-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.jm-nav a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 38px;
    padding: 9px 12px;
    border: 1px solid transparent;
    border-radius: 12px;
    background: transparent;
    color: #4b5563;
    font-weight: 800;
    font-size: .9rem;
    text-decoration: none;
    box-shadow: none;
    transition: background .18s ease, color .18s ease, transform .18s ease;
}

.jm-nav a:hover {
    background: #fff7ed;
    color: #ea580c;
    transform: translateY(-1px);
}

.jm-nav svg,
.jm-btn svg,
.jm-action-icon {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-layout {
    max-width: 1280px;
    padding: 28px 20px 64px;
}

.jm-card {
    position: relative;
    background: #ffffff;
    border: 1px solid #f3f4f6;
    border-radius: 18px;
    padding: 24px;
    box-shadow: var(--jm-shadow);
}

.jm-card::after,
.jm-card::before {
    content: none !important;
}

.jm-card--soft {
    background: #fff7ed;
    border-color: #fed7aa;
}

.jm-card h1,
.jm-card h2,
.jm-card h3,
.jm-event-hero h1 {
    font-family: Arial, Helvetica, sans-serif !important;
    color: #111827;
    line-height: 1.12;
}

.jm-card h1 {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 950;
    letter-spacing: -.04em;
}

.jm-card h2 {
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 900;
}

.jm-card h3 {
    font-size: 1.08rem;
    font-weight: 900;
}

.jm-card p {
    color: #4b5563;
    line-height: 1.6;
}

.jm-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 11px;
    border-radius: 999px;
    background: #ffedd5;
    border: 1px solid #fed7aa;
    color: #c2410c;
    font-size: .8rem;
    font-weight: 900;
    letter-spacing: .02em;
}

.jm-badge::before {
    content: none !important;
}

.jm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 42px;
    padding: 11px 16px;
    border: 0;
    border-radius: 12px;
    background: #ea580c;
    color: #fff;
    font-weight: 900;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 12px 22px rgba(234, 88, 12, .20);
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.jm-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 16px 30px rgba(234, 88, 12, .26);
    filter: brightness(1.03);
}

.jm-btn--secondary {
    background: #7c3aed;
    color: #fff;
    box-shadow: 0 12px 22px rgba(124, 58, 237, .20);
}

.jm-btn--ghost {
    background: #fff;
    color: #374151;
    border: 1px solid #e5e7eb;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .06);
}

.jm-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 16px;
}

.jm-grid,
.jm-stack {
    gap: 18px;
}

.jm-form {
    display: grid;
    gap: 14px;
}

.jm-form label {
    display: grid;
    gap: 8px;
    color: #374151;
    font-weight: 800;
}

.jm-form input,
.jm-form select,
.jm-form textarea,
.jm-inline-form select,
.jm-comment-form input {
    width: 100%;
    border: 1px solid #d1d5db;
    background: #fff;
    color: #111827;
    border-radius: 10px;
    padding: 12px 14px;
    box-shadow: none;
}

.jm-form input:focus,
.jm-form select:focus,
.jm-form textarea:focus {
    outline: 3px solid rgba(249, 115, 22, .18);
    border-color: #f97316;
}

.jm-check {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    padding: 12px;
    box-shadow: none;
}

.jm-table {
    width: 100%;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    overflow: hidden;
    border-collapse: separate;
    border-spacing: 0;
}

.jm-table th {
    background: #f9fafb;
    color: #374151;
    font-weight: 900;
    text-align: left;
}

.jm-table th,
.jm-table td {
    padding: 14px 16px;
    border-bottom: 1px solid #f3f4f6;
}

.jm-table tr:hover td {
    background: #fff7ed;
}

.jm-alert {
    padding: 14px 16px;
    border-radius: 14px;
    border: 1px solid transparent;
    box-shadow: var(--jm-shadow);
}

.jm-alert--success {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.jm-alert--error {
    background: #fef2f2;
    color: #991b1b;
    border-color: #fecaca;
}

.jm-stat {
    color: #111827;
    font-family: Arial, Helvetica, sans-serif !important;
    font-size: 2.4rem;
    font-weight: 950;
}

.jm-admin-page-head {
    border-left: 5px solid #f97316;
}

.jm-public-header-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 24px;
    border-left: 5px solid #f97316;
}

.jm-public-mode-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 8px;
    background: #fff;
    border: 1px solid #f3f4f6;
    border-radius: 16px;
    box-shadow: var(--jm-shadow);
}

.jm-public-mode-tabs a {
    flex: 1 1 180px;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 44px;
    padding: 10px 14px;
    border-radius: 12px;
    text-decoration: none;
    color: #4b5563;
    font-weight: 900;
}

.jm-public-mode-tabs a.active {
    background: #ea580c;
    color: #fff;
    box-shadow: 0 10px 20px rgba(234, 88, 12, .18);
}

.jm-invitation-modern {
    display: grid;
    grid-template-columns: .95fr 1.05fr;
    gap: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #f3f4f6;
    border-radius: 24px;
    box-shadow: var(--jm-shadow-lg);
}

.jm-invitation-modern__media {
    min-height: 680px;
    background: linear-gradient(135deg, #fb923c, #7c3aed);
}

.jm-invitation-modern__media img,
.jm-invitation-modern__placeholder {
    width: 100%;
    height: 100%;
    min-height: 680px;
    object-fit: cover;
}

.jm-invitation-modern__placeholder {
    background:
        radial-gradient(circle at 20% 20%, rgba(255,255,255,.35), transparent 30%),
        linear-gradient(135deg, #fb923c, #7c3aed);
}

.jm-invitation-modern__content {
    padding: clamp(24px, 5vw, 54px);
    display: grid;
    gap: 18px;
    align-content: center;
}

.jm-invitation-modern__content h1 {
    margin: 0;
    color: #111827;
    font-size: clamp(2.4rem, 5vw, 4.6rem);
    line-height: .98;
    letter-spacing: -.05em;
    font-weight: 950;
}

.jm-invitation-modern__content h2 {
    margin: 0;
    color: #ea580c;
    font-size: clamp(1.5rem, 3vw, 2.4rem);
}

.jm-invitation-modern__content > p {
    color: #4b5563;
    font-size: 1.1rem;
    line-height: 1.65;
}

.jm-invitation-details-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.jm-invitation-details-grid .jm-card {
    padding: 16px;
    box-shadow: none;
}

.jm-countdown {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.jm-countdown > div {
    padding: 14px 10px;
    border-radius: 14px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    text-align: center;
}

.jm-countdown strong {
    display: block;
    color: #ea580c;
    font-size: clamp(1.5rem, 4vw, 2.2rem);
    line-height: 1;
}

.jm-countdown span {
    color: #6b7280;
    font-size: .82rem;
    font-weight: 800;
}

.jm-countdown--hero > div {
    background: linear-gradient(135deg, #fff7ed, #ffedd5);
}

.jm-public-action-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.jm-public-action-card {
    display: grid;
    gap: 4px;
    padding: 16px;
    border-radius: 16px;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    text-decoration: none;
    color: #111827;
    transition: transform .18s ease, border-color .18s ease;
}

.jm-public-action-card:hover {
    transform: translateY(-2px);
    border-color: #fb923c;
}

.jm-public-action-card strong {
    font-size: 1rem;
}

.jm-public-action-card span,
.jm-public-action-card small {
    color: #6b7280;
}

.jm-upload-hero-card {
    align-items: stretch;
}

.jm-upload-hero-cover {
    width: min(340px, 100%);
    border-radius: 18px;
    overflow: hidden;
}

.jm-upload-hero-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.jm-builder-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.jm-builder-step {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px;
    border-radius: 16px;
    background: #fff;
    border: 1px solid #e5e7eb;
    box-shadow: var(--jm-shadow);
}

.jm-builder-step strong {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: #f3f4f6;
    color: #374151;
}

.jm-builder-step.active strong {
    background: #ea580c;
    color: #fff;
}

.jm-builder-step span {
    font-weight: 900;
    color: #374151;
}

.jm-builder-block-picker {
    display: grid;
    gap: 10px;
}

.jm-builder-block-option {
    display: flex !important;
    grid-template-columns: auto 1fr;
    align-items: flex-start;
    gap: 12px !important;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    background: #fff;
    cursor: pointer;
}

.jm-builder-block-option:hover {
    border-color: #fb923c;
    background: #fff7ed;
}

.jm-builder-block-option input {
    width: auto;
    margin-top: 4px;
}

.jm-builder-block-option span {
    display: grid;
    gap: 3px;
}

.jm-builder-block-option small {
    color: #6b7280;
}

.jm-builder-preview-card {
    position: sticky;
    top: 92px;
    align-self: start;
    border-left: 5px solid #7c3aed;
}

.jm-builder-block-list {
    display: grid;
    gap: 14px;
    margin-top: 18px;
}

.jm-builder-block-card {
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    padding: 16px;
    background: #fff;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .05);
}

.jm-builder-block-card__head {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 14px;
    align-items: center;
    margin-bottom: 14px;
}

.jm-builder-block-card__head small {
    display: block;
    color: #6b7280;
}

.jm-drag-handle {
    border: 1px solid #fed7aa;
    background: #fff7ed;
    color: #c2410c;
    border-radius: 10px;
    padding: 8px 10px;
    cursor: grab;
    font-weight: 900;
}

.jm-builder-visible {
    min-width: 110px;
}

.jm-builder-delete-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.jm-event-actions-board {
    display: grid;
    gap: 14px;
    margin-top: 18px;
}

.jm-action-group {
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    background: #f9fafb;
}

.jm-action-group h3 {
    margin: 0 0 10px;
    color: #111827;
    font-size: 1rem;
    font-weight: 950;
}

@media (min-width: 980px) {
    .jm-event-actions-board {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 920px) {
    .jm-topbar__inner {
        display: grid;
        align-items: flex-start;
    }

    .jm-nav {
        width: 100%;
    }

    .jm-nav a {
        flex: 1 1 130px;
        justify-content: center;
    }

    .jm-invitation-modern,
    .jm-grid--2,
    .jm-grid--3,
    .jm-grid--4,
    .jm-form--grid,
    .jm-builder-steps,
    .jm-public-action-cards,
    .jm-invitation-details-grid {
        grid-template-columns: 1fr;
    }

    .jm-invitation-modern__media,
    .jm-invitation-modern__media img,
    .jm-invitation-modern__placeholder {
        min-height: 340px;
    }

    .jm-public-header-card {
        display: grid;
    }

    .jm-builder-preview-card {
        position: static;
    }
}

@media (max-width: 560px) {
    .jm-layout {
        padding-left: 12px;
        padding-right: 12px;
    }

    .jm-card {
        padding: 18px;
        border-radius: 16px;
    }

    .jm-countdown {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .jm-builder-block-card__head {
        grid-template-columns: 1fr;
    }

    .jm-actions .jm-btn,
    .jm-btn {
        width: 100%;
    }
}

/* =========================================================
   Álbum principal + Momentos de la fiesta
   Separación pública solicitada: Invitación / Álbum / Momentos
   ========================================================= */

.jm-main-album-cover {
    position: relative;
    min-height: clamp(430px, 60vh, 680px);
    display: grid;
    place-items: center;
    overflow: hidden;
    border-radius: 26px;
    background: linear-gradient(135deg, #f97316, #7c3aed);
    box-shadow: var(--jm-shadow-lg, 0 24px 54px rgba(15,23,42,.12));
}

.jm-main-album-cover > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.jm-main-album-cover__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(17,24,39,.76), rgba(17,24,39,.28));
}

.jm-main-album-cover__content {
    position: relative;
    z-index: 2;
    width: min(850px, 92%);
    color: #fff;
    text-align: center;
    display: grid;
    gap: 16px;
    justify-items: center;
}

.jm-main-album-cover__content h1 {
    margin: 0;
    color: #fff;
    font-size: clamp(2.8rem, 7vw, 6rem);
    line-height: .95;
    letter-spacing: -.05em;
}

.jm-main-album-cover__content p {
    color: #f9fafb;
    font-size: 1.15rem;
    line-height: 1.7;
    max-width: 720px;
}

.jm-main-album-logo {
    width: 78px;
    height: 78px;
    object-fit: contain;
    border-radius: 18px;
    background: #fff;
    padding: 8px;
    box-shadow: 0 16px 32px rgba(0,0,0,.18);
}

.jm-upload-limit-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 14px;
    border-radius: 999px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #c2410c;
    font-weight: 900;
}

.jm-file-preview__item {
    padding: 12px 14px;
    border-radius: 14px;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    color: #374151;
    font-weight: 800;
}

.jm-file-preview__item.is-error {
    background: #fef2f2;
    border-color: #fecaca;
    color: #991b1b;
}

.jm-main-album-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    margin-top: 18px;
}

.jm-main-memory-card,
.jm-party-moment-card {
    overflow: hidden;
    border-radius: 18px;
    background: #fff;
    border: 1px solid #e5e7eb;
    box-shadow: 0 12px 26px rgba(15,23,42,.08);
}

.jm-main-memory-media,
.jm-party-moment-media {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    border: 0;
    padding: 0;
    background: #111827;
    cursor: pointer;
    overflow: hidden;
}

.jm-main-memory-media img,
.jm-main-memory-media video,
.jm-party-moment-media img,
.jm-party-moment-media video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .22s ease;
}

.jm-main-memory-media:hover img,
.jm-main-memory-media:hover video,
.jm-party-moment-media:hover img,
.jm-party-moment-media:hover video {
    transform: scale(1.04);
}

.jm-main-memory-media span,
.jm-party-moment-media span {
    position: absolute;
    left: 12px;
    bottom: 12px;
    padding: 7px 10px;
    border-radius: 999px;
    background: rgba(17,24,39,.82);
    color: #fff;
    font-weight: 900;
}

.jm-main-memory-body,
.jm-party-moment-info {
    padding: 16px;
}

.jm-main-memory-body h3,
.jm-party-moment-info strong {
    margin: 0 0 8px;
    color: #111827;
    font-size: 1.05rem;
}

.jm-party-moments-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-top: 18px;
}

.jm-party-hero {
    border-left: 5px solid #7c3aed;
}

.jm-empty-state {
    display: grid;
    justify-items: center;
    gap: 10px;
    min-height: 220px;
    place-content: center;
    text-align: center;
    background: #f9fafb;
    border: 1px dashed #d1d5db;
    border-radius: 18px;
    margin-top: 18px;
    padding: 24px;
}

@media (max-width: 980px) {
    .jm-main-album-grid,
    .jm-party-moments-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .jm-main-album-grid,
    .jm-party-moments-grid {
        grid-template-columns: 1fr;
    }

    .jm-main-album-cover {
        min-height: 420px;
    }
}

/* Álbum prefiesta tipo libro abierto */
.jm-preparty-album-page{min-height:100vh;padding:18px;background:radial-gradient(circle at top,rgba(251,191,36,.28),transparent 30%),linear-gradient(135deg,#78350f,#451a03 48%,#1c0a02)}
.jm-album-only-header{position:sticky;top:12px;z-index:30;width:min(1180px,calc(100% - 20px));margin:0 auto 16px;display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.jm-album-top-btn,.jm-album-top-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:999px;text-decoration:none;font-weight:900;box-shadow:0 12px 24px rgba(0,0,0,.22)}
.jm-album-top-btn{background:#fbbf24;color:#451a03}.jm-album-top-link{background:rgba(255,251,235,.92);color:#78350f}
.jm-preparty-cover{position:relative;width:min(1180px,calc(100% - 20px));min-height:320px;margin:0 auto 26px;border-radius:24px;overflow:hidden;background:linear-gradient(135deg,#92400e,#451a03);box-shadow:0 35px 70px rgba(0,0,0,.42)}
.jm-preparty-cover>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.38}.jm-preparty-cover__content{position:relative;z-index:2;width:min(780px,92%);margin:0 auto;padding:52px 20px;text-align:center;color:#fffbeb}
.jm-preparty-logo{width:74px;height:74px;object-fit:contain;border-radius:18px;background:#fff;padding:8px;margin-bottom:10px}.jm-preparty-cover__content span{display:inline-flex;padding:7px 13px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);font-weight:900}
.jm-preparty-cover__content h1{margin:14px 0 10px;font-size:clamp(3rem,8vw,6rem);line-height:.92;letter-spacing:-.05em}.jm-preparty-cover__content p{margin:0 auto;max-width:640px;color:#fde68a;font-size:1.15rem;line-height:1.55}
.jm-book-shell{position:relative;width:min(1240px,calc(100% - 20px));margin:0 auto 34px;min-height:720px;display:flex;align-items:center;justify-content:center}
.jm-open-book{position:relative;display:grid;grid-template-columns:1fr 1fr;width:100%;min-height:700px;background:#fef3c7;border-radius:14px;box-shadow:0 35px 65px rgba(0,0,0,.55);overflow:hidden}
.jm-book-spine{position:absolute;left:50%;top:0;bottom:0;width:34px;margin-left:-17px;background:linear-gradient(to right,rgba(120,53,15,.28),rgba(69,26,3,.55),rgba(120,53,15,.28));z-index:3}
.jm-book-side{position:relative;min-height:700px;background:linear-gradient(rgba(255,248,240,.95),rgba(250,240,220,.95)),repeating-linear-gradient(0deg,transparent 0 29px,rgba(120,53,15,.045) 30px);overflow:hidden}
.jm-book-left{box-shadow:inset -10px 0 15px rgba(0,0,0,.12);padding-right:26px}.jm-book-right{box-shadow:inset 10px 0 15px rgba(0,0,0,.12);padding-left:26px}
.jm-book-page-content{height:100%;max-height:700px;overflow-y:auto;padding:54px 34px 70px}.jm-book-page-number{position:absolute;bottom:26px;color:rgba(120,53,15,.55);font-size:18px;z-index:2}.jm-book-left .jm-book-page-number{right:42px}.jm-book-right .jm-book-page-number{left:42px}
.jm-ref-empty-page{height:100%;display:flex;align-items:center;justify-content:center;text-align:center;color:rgba(120,53,15,.52);font-size:1.6rem;line-height:1.25;padding:28px}
.jm-ref-memory-card{position:relative;background:rgba(255,255,255,.78);border:2px solid rgba(251,191,36,.55);box-shadow:0 16px 30px rgba(120,53,15,.22);border-radius:10px;padding:17px;margin:0 auto 30px;max-width:520px;transform:rotate(var(--rot))}
.jm-ref-memory-card:before{content:"";position:absolute;top:-14px;left:50%;width:86px;height:25px;background:rgba(254,243,199,.75);border-left:1px solid rgba(251,191,36,.6);border-right:1px solid rgba(251,191,36,.6);transform:translateX(-50%) rotate(-2deg);box-shadow:0 2px 5px rgba(0,0,0,.12)}
.jm-ref-memory-media{position:relative;width:100%;border:8px solid #fff;border-bottom-width:28px;box-shadow:0 10px 16px rgba(0,0,0,.18);background:#fff;margin-bottom:12px;padding:0;cursor:pointer}.jm-ref-memory-media img,.jm-ref-memory-media video{display:block;width:100%;max-height:330px;object-fit:cover}.jm-ref-memory-media span{position:absolute;inset:auto 10px 10px auto;background:rgba(69,26,3,.86);color:#fff;padding:7px 10px;border-radius:999px;font-size:.8rem;font-weight:900}
.jm-ref-message-only{padding:28px 16px;font-size:2rem;line-height:1.08;text-align:center;color:#92400e;background:rgba(254,243,199,.7);border:2px dashed rgba(217,119,6,.4);border-radius:8px;white-space:pre-wrap}.jm-ref-memory-text{font-size:1rem;line-height:1.5;color:#78350f;white-space:pre-wrap}.jm-ref-memory-meta{display:flex;justify-content:space-between;gap:10px;align-items:center;color:#92400e;font-size:.95rem;margin-top:14px;border-top:1px solid rgba(251,191,36,.45);padding-top:10px}
.jm-book-nav{position:absolute;top:50%;z-index:8;transform:translateY(-50%);border:0;border-radius:999px;width:56px;height:56px;background:rgba(120,53,15,.95);color:#fff;font-size:45px;line-height:48px;box-shadow:0 12px 24px rgba(0,0,0,.38);cursor:pointer}.jm-book-nav:disabled{opacity:.32;cursor:not-allowed}.jm-book-nav--prev{left:-18px}.jm-book-nav--next{right:-18px}.jm-book-indicator{position:absolute;bottom:-44px;left:0;right:0;text-align:center;color:#fde68a;font-size:18px;font-weight:900}
.jm-album-upload-panel{width:min(980px,calc(100% - 20px));margin:70px auto 30px;background:#fffbeb;border:2px solid #fbbf24;border-radius:22px;padding:24px;box-shadow:0 25px 55px rgba(0,0,0,.28)}
.jm-party-window-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.jm-party-window-info div{padding:13px;border:1px solid #fed7aa;border-radius:14px;background:#fff7ed}.jm-party-window-info strong,.jm-party-window-info span{display:block}.jm-party-window-info span{color:#6b7280;margin-top:3px}
.jm-party-moments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin-top:18px}.jm-party-moment-card{overflow:hidden;border:1px solid #e5e7eb;border-radius:18px;background:#fff;box-shadow:0 14px 32px rgba(15,23,42,.08)}.jm-party-moment-media{position:relative;width:100%;aspect-ratio:1/1;border:0;padding:0;background:#111827;cursor:pointer}.jm-party-moment-media img,.jm-party-moment-media video{width:100%;height:100%;object-fit:cover}.jm-party-moment-media span{position:absolute;inset:auto 10px 10px auto;padding:7px 10px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-size:.8rem;font-weight:900}.jm-party-moment-info{padding:14px}.jm-party-moment-info p{margin:6px 0 0;color:#6b7280}
@media(max-width:800px){.jm-preparty-album-page{padding:10px}.jm-open-book{grid-template-columns:1fr;min-height:640px}.jm-book-side{min-height:640px}.jm-book-right.hidden,.jm-book-spine.hidden{display:none!important}.jm-book-left{padding-right:0}.jm-book-page-content{max-height:640px;padding:42px 22px 66px}.jm-book-nav--prev{left:0}.jm-book-nav--next{right:0}.jm-preparty-cover__content h1{font-size:3rem}.jm-album-only-header{position:static}.jm-album-top-btn,.jm-album-top-link{flex:1 1 100%}.jm-party-window-info{grid-template-columns:1fr}}

/* Organizadores / mayoreo */
.jm-organizer-plan-card {
    border-left: 5px solid #7c3aed;
}

.jm-organizer-plan-card .jm-price {
    color: #6d28d9;
}

.jm-role-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 9px;
    border-radius: 999px;
    background: #ede9fe;
    color: #6d28d9;
    font-size: .78rem;
    font-weight: 900;
}

/* === Builder con popups === */
.jm-builder-command-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}
.jm-builder-command-card {
    border-left: 5px solid #ea580c;
}
.jm-builder-preview-strip {
    display: grid;
    grid-template-columns: 1fr minmax(280px, 420px);
    gap: 18px;
    align-items: center;
}
.jm-builder-block-card--compact {
    padding: 14px;
}
.jm-builder-block-list--compact {
    margin-top: 16px;
}
.jm-modal[hidden] {
    display: none !important;
}
.jm-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-items: center;
    padding: 18px;
}
.jm-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, .62);
    backdrop-filter: blur(4px);
}
.jm-modal__card {
    position: relative;
    z-index: 2;
    width: min(560px, 96vw);
    max-height: 90vh;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 22px;
    padding: 24px;
    box-shadow: 0 35px 80px rgba(15, 23, 42, .34);
}
.jm-modal__card--wide {
    width: min(820px, 96vw);
}
.jm-modal__close {
    position: absolute;
    top: 12px;
    right: 14px;
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 999px;
    background: #fff7ed;
    color: #c2410c;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
}
.jm-modal-open {
    overflow: hidden;
}
.jm-builder-phone-preview {
    border-radius: 24px;
    border: 8px solid #111827;
    background: #fff7ed;
    padding: 22px;
    box-shadow: inset 0 0 0 1px #fed7aa;
}
.jm-builder-phone-preview h3 {
    margin: 12px 0 4px;
    font-size: 2rem;
}
.jm-builder-phone-preview h4 {
    margin: 0 0 12px;
    color: #ea580c;
}

/* === Album limpio sin header global === */
.jm-layout--album-clean {
    max-width: none;
    padding: 0;
}
.jm-album-body-no-header {
    overflow-x: hidden;
}
.jm-floating-javomoment {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 80;
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 950;
    color: #451a03;
    background: linear-gradient(135deg, #fbbf24, #fff7ed);
    border: 2px solid rgba(255,255,255,.55);
    box-shadow: 0 18px 34px rgba(0,0,0,.35);
}

/* === Momentos estilo upload app === */
.jm-momentos-upload-page {
    min-height: calc(100vh - 80px);
    margin: -28px -20px -64px;
    padding: 28px 16px 64px;
    background: linear-gradient(135deg, #a855f7 0%, #ec4899 46%, #f97316 100%);
}
.jm-momentos-shell {
    width: min(605px, 100%);
    margin: 0 auto;
    display: grid;
    gap: 22px;
}
.jm-momentos-top-card,
.jm-momentos-progress-card,
.jm-momentos-upload-card {
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(255,255,255,.65);
    border-radius: 13px;
    box-shadow: 0 18px 38px rgba(15,23,42,.16);
}
.jm-momentos-top-card {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    padding: 18px 22px;
}
.jm-momentos-top-card h1 {
    margin: 0;
    color: #111827;
    font-size: 1.45rem;
    line-height: 1.1;
}
.jm-momentos-top-card p {
    margin: 4px 0 0;
    color: #6b7280;
}
.jm-momentos-mini-btn,
.jm-momentos-link-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 8px 14px;
    border-radius: 8px;
    background: #fff;
    border: 1px solid #e5e7eb;
    color: #111827;
    font-weight: 800;
    text-decoration: none;
}
.jm-momentos-progress-card {
    padding: 16px 22px;
}
.jm-momentos-progress-row {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    color: #475569;
    font-size: .88rem;
    margin-bottom: 8px;
}
.jm-momentos-progress-track {
    height: 12px;
    overflow: hidden;
    border-radius: 999px;
    background: #e5e7eb;
}
.jm-momentos-progress-track i {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #a855f7, #ec4899);
}
.jm-party-window-info--compact {
    margin-top: 12px;
    grid-template-columns: 1fr 1fr;
}
.jm-party-window-info--compact div {
    padding: 8px 10px;
    font-size: .82rem;
}
.jm-momentos-upload-card {
    padding: 28px 30px 30px;
}
.jm-momentos-card-head {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 14px;
    position: relative;
    margin-bottom: 24px;
}
.jm-momentos-card-head h2 {
    margin: 0;
    font-size: 1.08rem;
    text-align: center;
    color: #111827;
}
.jm-momentos-link-btn {
    position: absolute;
    right: 0;
    top: -4px;
    color: #9333ea;
}
.jm-momentos-form {
    display: grid;
    gap: 22px;
}
.jm-momentos-dropzone {
    min-height: 216px;
    border: 3px dashed #d8b4fe;
    border-radius: 18px;
    display: grid;
    place-items: center;
    text-align: center;
    padding: 22px;
    cursor: pointer;
    transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.jm-momentos-dropzone input,
.jm-momentos-action-btn input {
    display: none;
}
.jm-momentos-dropzone.is-dragover {
    background: #faf5ff;
    border-color: #a855f7;
    transform: scale(1.01);
}
.jm-momentos-upload-icon {
    color: #a855f7;
}
.jm-momentos-upload-icon svg {
    width: 62px;
    height: 62px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.jm-momentos-dropzone strong {
    display: block;
    margin-top: 12px;
    color: #111827;
}
.jm-momentos-dropzone small {
    color: #6b7280;
}
.jm-momentos-actions-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.jm-momentos-action-btn {
    min-height: 112px;
    display: grid;
    place-items: center;
    gap: 9px;
    text-align: center;
    border-radius: 12px;
    border: 1.8px solid #f9a8d4;
    background: rgba(255,255,255,.65);
    color: #db2777;
    cursor: pointer;
}
.jm-momentos-action-btn--gallery {
    border-color: #d8b4fe;
    color: #9333ea;
}
.jm-momentos-action-btn svg {
    width: 38px;
    height: 38px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.jm-momentos-action-btn strong {
    color: #111827;
}
.jm-momentos-submit {
    width: 100%;
}
.jm-momentos-gallery-section {
    scroll-margin-top: 20px;
}
@media (max-width: 760px) {
    .jm-builder-command-grid,
    .jm-builder-preview-strip,
    .jm-momentos-actions-grid,
    .jm-party-window-info--compact {
        grid-template-columns: 1fr;
    }
    .jm-momentos-upload-page {
        margin: -28px -12px -64px;
    }
    .jm-momentos-card-head {
        display: grid;
    }
    .jm-momentos-link-btn {
        position: static;
    }
}

/* === Album cerrado + popup de subida === */
.jm-album-closed-cover {
    position: relative;
    width: min(620px, calc(100% - 28px));
    min-height: 760px;
    margin: 36px auto 52px;
    display: block;
    border: 0;
    border-radius: 22px 34px 34px 22px;
    overflow: hidden;
    cursor: pointer;
    background: linear-gradient(135deg, #78350f, #451a03);
    box-shadow: 34px 34px 65px rgba(0,0,0,.52), inset -18px 0 22px rgba(0,0,0,.22);
    transform: perspective(1100px) rotateY(-7deg);
    transition: transform .35s ease, box-shadow .35s ease;
}
.jm-album-closed-cover:hover {
    transform: perspective(1100px) rotateY(-2deg) translateY(-6px);
    box-shadow: 38px 42px 78px rgba(0,0,0,.58), inset -18px 0 22px rgba(0,0,0,.22);
}
.jm-album-closed-cover.is-hidden {
    display: none;
}
.jm-album-closed-cover > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .58;
}
.jm-album-closed-cover::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0,0,0,.30), transparent 28%, rgba(0,0,0,.42));
}
.jm-album-closed-cover__content {
    position: relative;
    z-index: 2;
    min-height: 760px;
    padding: 58px 34px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 14px;
    color: #fffbeb;
    text-align: center;
}
.jm-album-closed-cover__content small {
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.16);
    border: 1px solid rgba(255,255,255,.24);
    font-weight: 900;
}
.jm-album-closed-cover__content strong {
    font-size: clamp(3rem, 9vw, 6rem);
    line-height: .9;
    letter-spacing: -.06em;
}
.jm-album-closed-cover__content em {
    margin-top: 18px;
    font-style: normal;
    padding: 10px 16px;
    border-radius: 999px;
    background: #fbbf24;
    color: #451a03;
    font-weight: 950;
}
.jm-book-shell--closed {
    display: none !important;
}
.jm-book-shell.is-open {
    animation: jmAlbumOpen .42s ease both;
}
@keyframes jmAlbumOpen {
    from { opacity: 0; transform: translateY(20px) scale(.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.jm-album-upload-modal .jm-album-upload-panel {
    width: 100%;
    margin: 0;
    box-shadow: none;
}

/* === Preview rápido corregido === */
.jm-modal__card--preview {
    width: min(920px, 96vw);
}
.jm-builder-preview-device {
    max-width: 520px;
    margin: 18px auto;
    overflow: hidden;
    border-radius: 28px;
    background: #fff;
    border: 10px solid #111827;
    box-shadow: 0 24px 55px rgba(15,23,42,.24);
}
.jm-builder-preview-hero {
    position: relative;
    min-height: 260px;
    background: linear-gradient(135deg, #f97316, #7c3aed);
}
.jm-builder-preview-hero img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.jm-builder-preview-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.70));
}
.jm-builder-preview-hero__content {
    position: absolute;
    inset: auto 0 0 0;
    padding: 24px;
    color: #fff;
}
.jm-builder-preview-hero__content span {
    display: inline-flex;
    padding: 6px 11px;
    border-radius: 999px;
    background: rgba(255,255,255,.16);
    font-weight: 900;
}
.jm-builder-preview-hero__content h3 {
    margin: 12px 0 3px;
    font-size: 2.4rem;
    line-height: .95;
}
.jm-builder-preview-hero__content h4 {
    margin: 0;
    color: #fde68a;
}
.jm-builder-preview-body {
    padding: 22px;
}
.jm-builder-preview-details {
    display: grid;
    gap: 10px;
    margin-top: 14px;
}
.jm-builder-preview-details div {
    display: grid;
    gap: 2px;
    padding: 11px;
    border-radius: 13px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.jm-builder-preview-details span {
    color: #6b7280;
}
@media (max-width: 700px) {
    .jm-album-closed-cover {
        min-height: 560px;
    }
    .jm-album-closed-cover__content {
        min-height: 560px;
    }
}

/* === /album PWA móvil === */
.jm-album-install-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 10px 16px;
    border: 0;
    border-radius: 999px;
    background: #7c3aed;
    color: #fff;
    font-weight: 900;
    box-shadow: 0 12px 24px rgba(0,0,0,.22);
}

.jm-mobile-upload-box {
    display: grid;
    gap: 14px;
}

.jm-mobile-dropzone {
    min-height: 180px;
    display: grid !important;
    place-items: center;
    text-align: center;
    gap: 8px !important;
    padding: 20px;
    border: 3px dashed #fbbf24;
    border-radius: 18px;
    background: #fffbeb;
    cursor: pointer;
    transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.jm-mobile-dropzone.is-dragover {
    transform: scale(1.01);
    background: #fef3c7;
    border-color: #ea580c;
}

.jm-mobile-dropzone input,
.jm-mobile-action-btn input {
    display: none;
}

.jm-mobile-upload-icon svg,
.jm-mobile-action-btn svg {
    width: 42px;
    height: 42px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-mobile-upload-icon {
    color: #ea580c;
}

.jm-mobile-dropzone strong {
    color: #451a03;
    font-size: 1.05rem;
}

.jm-mobile-dropzone small {
    max-width: 340px;
    color: #78350f;
}

.jm-mobile-upload-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.jm-mobile-action-btn {
    min-height: 110px;
    display: grid !important;
    place-items: center;
    gap: 8px !important;
    padding: 14px;
    border: 2px solid #fbbf24;
    border-radius: 16px;
    background: #fff;
    color: #ea580c;
    text-align: center;
    cursor: pointer;
}

.jm-mobile-action-btn--gallery {
    color: #7c3aed;
    border-color: #c4b5fd;
}

.jm-mobile-action-btn strong {
    color: #111827;
}

@media (display-mode: standalone) {
    .jm-album-only-header {
        padding-top: env(safe-area-inset-top);
    }

    .jm-floating-javomoment {
        bottom: calc(18px + env(safe-area-inset-bottom));
    }
}

@media (max-width: 760px) {
    .jm-preparty-album-page {
        padding: 10px 10px 42px;
    }

    .jm-album-only-header {
        width: 100%;
        margin: 0 auto 12px;
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .jm-album-top-btn,
    .jm-album-top-link,
    .jm-album-install-btn {
        width: 100%;
        min-height: 48px;
    }

    .jm-album-closed-cover {
        width: min(430px, calc(100% - 10px));
        min-height: 610px;
        margin-top: 14px;
        transform: none;
        border-radius: 24px;
    }

    .jm-album-closed-cover:hover {
        transform: translateY(-3px);
    }

    .jm-album-closed-cover__content {
        min-height: 610px;
        padding: 34px 20px;
    }

    .jm-album-closed-cover__content strong {
        font-size: clamp(2.5rem, 15vw, 4.6rem);
    }

    .jm-modal {
        padding: 8px;
        align-items: end;
    }

    .jm-modal__card {
        width: 100%;
        max-height: 92vh;
        border-radius: 24px 24px 0 0;
        padding: 18px;
    }

    .jm-album-upload-modal .jm-album-upload-panel {
        border-radius: 24px 24px 0 0;
    }

    .jm-form--grid {
        grid-template-columns: 1fr !important;
    }

    .jm-mobile-upload-actions {
        grid-template-columns: 1fr;
    }

    .jm-open-book {
        min-height: 72vh;
    }

    .jm-book-side {
        min-height: 72vh;
    }

    .jm-book-page-content {
        max-height: 72vh;
        padding: 34px 18px 62px;
    }

    .jm-ref-memory-card {
        max-width: 100%;
        margin-bottom: 18px;
        transform: none !important;
    }

    .jm-floating-javomoment {
        width: 48px;
        height: 48px;
        right: 12px;
        bottom: 12px;
    }
}

/* =========================================================
   Javo Momentos Premium Themes + Momentos PWA Mobile
   ========================================================= */

/* Menú inferior público */
.jm-public-bottom-nav {
    position: fixed;
    left: 50%;
    bottom: max(14px, env(safe-area-inset-bottom));
    transform: translateX(-50%);
    z-index: 120;
    width: min(420px, calc(100% - 28px));
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    padding: 8px;
    border-radius: 999px;
    background: rgba(255,255,255,.92);
    border: 1px solid rgba(255,255,255,.65);
    box-shadow: 0 20px 46px rgba(15,23,42,.24);
    backdrop-filter: blur(18px);
}
.jm-public-bottom-nav a {
    min-height: 44px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    text-decoration: none;
    color: #475569;
    font-weight: 950;
}
.jm-public-bottom-nav a.active {
    background: linear-gradient(135deg, #a855f7, #ec4899);
    color: #fff;
    box-shadow: 0 10px 22px rgba(168,85,247,.28);
}
.jm-preparty-album-page,
.jm-momentos-upload-page {
    padding-bottom: 92px !important;
}

/* Momentos sin bordes cafés, más app */
.jm-layout--momentos-pwa {
    max-width: none;
    padding: 0;
}
.jm-momentos-pwa-body {
    background: #a855f7;
}
.jm-momentos-upload-page {
    min-height: 100vh;
    margin: 0 !important;
    padding: max(18px, env(safe-area-inset-top)) 14px calc(96px + env(safe-area-inset-bottom)) !important;
    background:
        radial-gradient(circle at 15% 10%, rgba(255,255,255,.24), transparent 25%),
        linear-gradient(135deg, #a855f7 0%, #ec4899 48%, #f97316 100%);
}
.jm-momentos-shell {
    width: min(590px, 100%);
}
.jm-momentos-top-card,
.jm-momentos-progress-card,
.jm-momentos-upload-card {
    border: 0 !important;
    background: rgba(255,255,255,.94);
    box-shadow: 0 22px 45px rgba(15,23,42,.18);
}
.jm-momentos-progress-card .jm-party-window-info div,
.jm-party-window-info--compact div {
    border: 0 !important;
    background: rgba(255,255,255,.72) !important;
    box-shadow: inset 0 0 0 1px rgba(148,163,184,.18);
}
.jm-momentos-top-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: flex-end;
}
.jm-momentos-mini-btn,
.jm-momentos-link-btn {
    border: 0 !important;
    box-shadow: 0 10px 22px rgba(15,23,42,.10);
}
.jm-momentos-upload-card {
    border-radius: 22px !important;
}
.jm-momentos-dropzone {
    border-color: #d8b4fe !important;
    background: rgba(255,255,255,.55);
}
.jm-momentos-action-btn {
    border: 0 !important;
    background: rgba(255,255,255,.75);
    box-shadow: inset 0 0 0 1px rgba(236,72,153,.25), 0 12px 24px rgba(15,23,42,.08);
}
.jm-momentos-action-btn--gallery {
    box-shadow: inset 0 0 0 1px rgba(168,85,247,.25), 0 12px 24px rgba(15,23,42,.08);
}
@media (max-width: 640px) {
    body .jm-topbar {
        display: none;
    }
    .jm-momentos-upload-page {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }
    .jm-momentos-shell {
        gap: 14px;
    }
    .jm-momentos-top-card {
        border-radius: 0 0 24px 24px;
        margin: calc(-1 * max(18px, env(safe-area-inset-top))) -12px 0;
        padding: calc(18px + env(safe-area-inset-top)) 18px 18px;
    }
    .jm-momentos-top-card h1 {
        font-size: 1.25rem;
    }
    .jm-momentos-top-actions {
        gap: 6px;
    }
    .jm-momentos-mini-btn {
        min-height: 38px;
        padding: 8px 10px;
        font-size: .86rem;
    }
    .jm-momentos-progress-card,
    .jm-momentos-upload-card,
    .jm-momentos-gallery-section {
        border-radius: 22px;
    }
    .jm-momentos-upload-card {
        padding: 22px 18px;
    }
    .jm-momentos-dropzone {
        min-height: 190px;
    }
    .jm-momentos-actions-grid {
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }
    .jm-momentos-action-btn {
        min-height: 96px;
        padding: 12px 8px;
    }
    .jm-momentos-action-btn svg {
        width: 34px;
        height: 34px;
    }
    .jm-party-window-info--compact {
        grid-template-columns: 1fr 1fr !important;
    }
    .jm-public-bottom-nav {
        width: min(360px, calc(100% - 20px));
    }
}

/* Temas Premium globales */
.jm-theme-premium-luxury {
    --event-accent: #d4af37;
}
.jm-theme-premium-luxury.jm-public-invitation-page,
.jm-theme-premium-luxury.jm-preparty-album-page,
.jm-theme-premium-luxury.jm-momentos-upload-page {
    background:
        radial-gradient(circle at top left, rgba(212,175,55,.20), transparent 30%),
        linear-gradient(135deg, #080808 0%, #1f1304 52%, #3b2405 100%) !important;
}
.jm-theme-card-premium-luxury,
.jm-theme-premium-luxury .jm-card,
.jm-theme-premium-luxury .jm-momentos-top-card,
.jm-theme-premium-luxury .jm-momentos-progress-card,
.jm-theme-premium-luxury .jm-momentos-upload-card {
    background: rgba(15,15,15,.92) !important;
    color: #fff7d6 !important;
    border-color: rgba(212,175,55,.34) !important;
}
.jm-theme-premium-luxury h1,
.jm-theme-premium-luxury h2,
.jm-theme-premium-luxury h3,
.jm-theme-premium-luxury p,
.jm-theme-card-premium-luxury h1,
.jm-theme-card-premium-luxury h2,
.jm-theme-card-premium-luxury p {
    color: #fff7d6 !important;
}
.jm-theme-premium-luxury .jm-badge,
.jm-theme-premium-luxury .jm-momentos-link-btn,
.jm-theme-premium-luxury .jm-momentos-mini-btn {
    background: linear-gradient(135deg, #d4af37, #fff1a8) !important;
    color: #211400 !important;
    border: 0 !important;
}

.jm-theme-premium-neon {
    --event-accent: #22d3ee;
}
.jm-theme-premium-neon.jm-public-invitation-page,
.jm-theme-premium-neon.jm-preparty-album-page,
.jm-theme-premium-neon.jm-momentos-upload-page {
    background:
        radial-gradient(circle at 10% 10%, rgba(34,211,238,.36), transparent 28%),
        radial-gradient(circle at 90% 20%, rgba(236,72,153,.36), transparent 28%),
        linear-gradient(135deg, #0f172a 0%, #312e81 50%, #831843 100%) !important;
}
.jm-theme-premium-neon .jm-card,
.jm-theme-premium-neon .jm-momentos-top-card,
.jm-theme-premium-neon .jm-momentos-progress-card,
.jm-theme-premium-neon .jm-momentos-upload-card,
.jm-theme-card-premium-neon {
    background: rgba(15,23,42,.84) !important;
    color: #e0f2fe !important;
    border-color: rgba(34,211,238,.26) !important;
    box-shadow: 0 0 35px rgba(34,211,238,.18), 0 24px 50px rgba(0,0,0,.26) !important;
}
.jm-theme-premium-neon h1,
.jm-theme-premium-neon h2,
.jm-theme-premium-neon p,
.jm-theme-card-premium-neon h1,
.jm-theme-card-premium-neon h2,
.jm-theme-card-premium-neon p {
    color: #e0f2fe !important;
}
.jm-theme-premium-neon .jm-public-bottom-nav a.active,
.jm-theme-premium-neon .jm-btn,
.jm-theme-premium-neon .jm-momentos-link-btn {
    background: linear-gradient(135deg, #22d3ee, #ec4899) !important;
    color: #fff !important;
}

.jm-theme-premium-romantic {
    --event-accent: #be185d;
}
.jm-theme-premium-romantic.jm-public-invitation-page,
.jm-theme-premium-romantic.jm-preparty-album-page,
.jm-theme-premium-romantic.jm-momentos-upload-page {
    background:
        radial-gradient(circle at top, rgba(255,255,255,.44), transparent 26%),
        linear-gradient(135deg, #fff1f2 0%, #fbcfe8 45%, #fda4af 100%) !important;
}
.jm-theme-premium-romantic .jm-card,
.jm-theme-premium-romantic .jm-momentos-top-card,
.jm-theme-premium-romantic .jm-momentos-progress-card,
.jm-theme-premium-romantic .jm-momentos-upload-card,
.jm-theme-card-premium-romantic {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(244,114,182,.26) !important;
}
.jm-theme-premium-romantic h1,
.jm-theme-premium-romantic h2,
.jm-theme-premium-romantic h3 {
    color: #831843 !important;
}
.jm-theme-premium-romantic .jm-btn,
.jm-theme-premium-romantic .jm-public-bottom-nav a.active,
.jm-theme-premium-romantic .jm-momentos-link-btn {
    background: linear-gradient(135deg, #be185d, #fb7185) !important;
    color: #fff !important;
}

.jm-theme-premium-minimal {
    --event-accent: #111827;
}
.jm-theme-premium-minimal.jm-public-invitation-page,
.jm-theme-premium-minimal.jm-preparty-album-page,
.jm-theme-premium-minimal.jm-momentos-upload-page {
    background: linear-gradient(135deg, #f8fafc 0%, #e5e7eb 100%) !important;
}
.jm-theme-premium-minimal .jm-card,
.jm-theme-premium-minimal .jm-momentos-top-card,
.jm-theme-premium-minimal .jm-momentos-progress-card,
.jm-theme-premium-minimal .jm-momentos-upload-card,
.jm-theme-card-premium-minimal {
    background: rgba(255,255,255,.96) !important;
    border: 0 !important;
    box-shadow: 0 20px 50px rgba(15,23,42,.10) !important;
}
.jm-theme-premium-minimal h1,
.jm-theme-premium-minimal h2 {
    letter-spacing: -.06em;
    color: #111827 !important;
}
.jm-theme-premium-minimal .jm-btn,
.jm-theme-premium-minimal .jm-public-bottom-nav a.active,
.jm-theme-premium-minimal .jm-momentos-link-btn {
    background: #111827 !important;
    color: #fff !important;
}

/* =========================================================
   Fix público sin header + invitación legible
   ========================================================= */

/* Quitar espacio visual del layout cuando las páginas públicas no usan header */
.jm-layout--album-clean,
.jm-layout--momentos-pwa {
    max-width: none !important;
    padding: 0 !important;
}

/* Menú inferior del álbum con estética del libro */
.jm-public-bottom-nav--album {
    width: min(520px, calc(100% - 28px));
    grid-template-columns: .85fr 1fr 1fr;
    background:
        linear-gradient(135deg, rgba(255, 251, 235, .96), rgba(254, 243, 199, .96));
    border: 1px solid rgba(251, 191, 36, .55);
    box-shadow: 0 22px 48px rgba(69, 26, 3, .34);
}
.jm-public-bottom-nav--album a {
    color: #78350f;
}
.jm-public-bottom-nav--album a.active {
    background: linear-gradient(135deg, #78350f, #451a03);
    color: #fef3c7;
}
.jm-public-bottom-nav--album a:first-child {
    background: #fbbf24;
    color: #451a03;
}
.jm-public-bottom-nav--album a:first-child.active {
    background: #fbbf24;
    color: #451a03;
}

/* Menú inferior de Momentos tipo app */
.jm-public-bottom-nav--momentos {
    width: min(420px, calc(100% - 24px));
    background: rgba(255, 255, 255, .94);
    border: 0;
}
.jm-public-bottom-nav--momentos a.active {
    background: linear-gradient(135deg, #a855f7, #ec4899);
    color: #fff;
}

/* Ocultar topbar en públicas aunque algún CSS anterior lo fuerce */
.jm-album-body-no-header .jm-topbar,
.jm-momentos-pwa-body .jm-topbar {
    display: none !important;
}

/* Invitación: asegurar legibilidad con fondos premium o portada */
.jm-public-invitation-page {
    color: #111827;
}
.jm-invitation-modern {
    background: rgba(255, 255, 255, .96) !important;
}
.jm-invitation-modern__content {
    position: relative;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,247,237,.92));
    border-left: 1px solid rgba(15, 23, 42, .06);
}
.jm-invitation-modern__content h1,
.jm-invitation-modern__content h2,
.jm-invitation-modern__content h3,
.jm-invitation-modern__content p,
.jm-invitation-modern__content .jm-card h3,
.jm-invitation-modern__content .jm-card p {
    color: #111827 !important;
    text-shadow: none !important;
}
.jm-invitation-modern__content h2 {
    color: #ea580c !important;
}
.jm-invitation-modern__content .jm-badge {
    color: #c2410c !important;
    background: #ffedd5 !important;
}
.jm-invitation-modern__content .jm-public-action-card strong,
.jm-invitation-modern__content .jm-public-action-card span,
.jm-invitation-modern__content .jm-public-action-card small {
    color: #111827 !important;
}
.jm-invitation-modern__content .jm-public-action-card span,
.jm-invitation-modern__content .jm-public-action-card small {
    color: #6b7280 !important;
}

/* Temas premium: no permitir que el tema pinte el texto de la tarjeta de invitación oscuro sobre oscuro */
.jm-theme-premium-luxury .jm-invitation-modern,
.jm-theme-premium-neon .jm-invitation-modern,
.jm-theme-premium-romantic .jm-invitation-modern,
.jm-theme-premium-minimal .jm-invitation-modern {
    background: rgba(255,255,255,.96) !important;
}
.jm-theme-premium-luxury .jm-invitation-modern__content,
.jm-theme-premium-neon .jm-invitation-modern__content,
.jm-theme-premium-romantic .jm-invitation-modern__content,
.jm-theme-premium-minimal .jm-invitation-modern__content {
    background: rgba(255,255,255,.95) !important;
}
.jm-theme-premium-luxury .jm-invitation-modern__content *,
.jm-theme-premium-neon .jm-invitation-modern__content *,
.jm-theme-premium-romantic .jm-invitation-modern__content *,
.jm-theme-premium-minimal .jm-invitation-modern__content * {
    text-shadow: none !important;
}
.jm-theme-premium-luxury .jm-invitation-modern__content h1,
.jm-theme-premium-luxury .jm-invitation-modern__content h3,
.jm-theme-premium-luxury .jm-invitation-modern__content p,
.jm-theme-premium-neon .jm-invitation-modern__content h1,
.jm-theme-premium-neon .jm-invitation-modern__content h3,
.jm-theme-premium-neon .jm-invitation-modern__content p,
.jm-theme-premium-romantic .jm-invitation-modern__content h1,
.jm-theme-premium-romantic .jm-invitation-modern__content h3,
.jm-theme-premium-romantic .jm-invitation-modern__content p,
.jm-theme-premium-minimal .jm-invitation-modern__content h1,
.jm-theme-premium-minimal .jm-invitation-modern__content h3,
.jm-theme-premium-minimal .jm-invitation-modern__content p {
    color: #111827 !important;
}
.jm-theme-premium-luxury .jm-invitation-modern__content h2,
.jm-theme-premium-neon .jm-invitation-modern__content h2,
.jm-theme-premium-romantic .jm-invitation-modern__content h2,
.jm-theme-premium-minimal .jm-invitation-modern__content h2 {
    color: var(--event-accent, #ea580c) !important;
}

/* Mejor ajuste en móvil de invitación */
@media (max-width: 920px) {
    .jm-invitation-modern__content {
        background: rgba(255,255,255,.96) !important;
    }
    .jm-public-invitation-page {
        padding-bottom: 34px;
    }
}
@media (max-width: 640px) {
    .jm-public-bottom-nav--album {
        grid-template-columns: .8fr 1fr 1fr;
        width: min(390px, calc(100% - 18px));
    }
    .jm-public-bottom-nav a {
        font-size: .88rem;
        min-height: 42px;
    }
}

/* === Invitación sin header + botón fijo JM === */
.jm-layout--invitation-clean {
    max-width: none !important;
    padding: 0 !important;
}

.jm-invitation-body-no-header .jm-topbar,
.jm-momentos-pwa-body .jm-topbar,
.jm-album-body-no-header .jm-topbar {
    display: none !important;
}

.jm-invitation-body-no-header .jm-public-invitation-page {
    min-height: 100vh;
    padding: 24px 14px 96px;
}

.jm-invitation-body-no-header .jm-public-mode-tabs {
    width: min(1120px, calc(100% - 20px));
    margin: 0 auto 18px;
}

.jm-invitation-body-no-header .jm-invitation-modern {
    width: min(1120px, calc(100% - 20px));
    margin: 0 auto;
}

.jm-floating-javomoment {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 130;
    width: 54px;
    height: 54px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 950;
    color: #451a03;
    background: linear-gradient(135deg, #fbbf24, #fff7ed);
    border: 2px solid rgba(255,255,255,.65);
    box-shadow: 0 18px 34px rgba(0,0,0,.35);
}

.jm-floating-javomoment--momentos {
    bottom: calc(82px + env(safe-area-inset-bottom));
}

.jm-invitation-body-no-header .jm-floating-javomoment {
    bottom: calc(18px + env(safe-area-inset-bottom));
}

@media (max-width: 640px) {
    .jm-invitation-body-no-header .jm-public-invitation-page {
        padding: 12px 10px 92px;
    }

    .jm-invitation-body-no-header .jm-public-mode-tabs,
    .jm-invitation-body-no-header .jm-invitation-modern {
        width: 100%;
    }

    .jm-floating-javomoment {
        width: 48px;
        height: 48px;
        right: 12px;
    }
}

/* === Corazones en álbum y comentarios === */
.jm-heart-btn {
    border: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 36px;
    padding: 8px 11px;
    border-radius: 999px;
    background: #fee2e2;
    color: #be123c;
    cursor: pointer;
    font-weight: 950;
    line-height: 1;
    transition: transform .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}

.jm-heart-btn:hover {
    transform: translateY(-1px) scale(1.03);
    box-shadow: 0 10px 18px rgba(190, 18, 60, .16);
}

.jm-heart-btn svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-heart-btn.is-liked {
    background: #be123c;
    color: #fff;
}

.jm-heart-btn.is-liked svg {
    fill: currentColor;
}

.jm-like-btn {
    background: #fee2e2 !important;
    color: #be123c !important;
}

.jm-like-btn.is-liked {
    background: #be123c !important;
    color: #fff !important;
}

.jm-comment__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}

.jm-comment-like-btn {
    min-height: 30px;
    padding: 6px 9px;
    font-size: .82rem;
}

.jm-comment-like-btn svg {
    width: 15px;
    height: 15px;
}

/* === Fix comentarios, portada y botón JM en /album === */
.jm-comments[hidden] {
    display: none !important;
}

.jm-comment-toggle {
    border: 0;
    border-radius: 999px;
    padding: 8px 12px;
    background: #fef3c7;
    color: #78350f;
    cursor: pointer;
    font-weight: 900;
}

.jm-comment-toggle[aria-expanded="true"] {
    background: #78350f;
    color: #fef3c7;
}

.jm-album-body-no-header .jm-floating-javomoment {
    bottom: calc(82px + env(safe-area-inset-bottom)) !important;
}

.jm-album-closed-cover.has-no-cover,
.jm-album-closed-cover:not(:has(img)) {
    background:
        radial-gradient(circle at 20% 10%, rgba(251,191,36,.35), transparent 28%),
        linear-gradient(135deg, #78350f 0%, #451a03 55%, #1c0a02 100%) !important;
}

.jm-album-closed-cover.has-no-cover .jm-album-closed-cover__content::before {
    content: "Álbum";
    display: inline-grid;
    place-items: center;
    width: 88px;
    height: 88px;
    margin-bottom: 12px;
    border-radius: 24px;
    background: rgba(251,191,36,.95);
    color: #451a03;
    font-weight: 950;
    box-shadow: 0 18px 32px rgba(0,0,0,.28);
}

@media (max-width: 640px) {
    .jm-album-body-no-header .jm-floating-javomoment {
        bottom: calc(78px + env(safe-area-inset-bottom)) !important;
    }
}

/* === Animación de pasar página + ícono de comentarios en /album === */
.jm-open-book {
    transform-style: preserve-3d;
    perspective: 1600px;
}

.jm-open-book::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 50%;
    pointer-events: none;
    z-index: 7;
    opacity: 0;
    background:
        linear-gradient(90deg, rgba(255,255,255,.06), rgba(120,53,15,.22)),
        linear-gradient(135deg, rgba(254,243,199,.92), rgba(255,251,235,.98));
    box-shadow: -18px 0 28px rgba(69,26,3,.18);
    transform-origin: left center;
}

.jm-open-book.jm-page-turn-next::after {
    right: 0;
    opacity: 1;
    animation: jmPageTurnNext .48s ease-in-out both;
}

.jm-open-book.jm-page-turn-prev::after {
    left: 0;
    opacity: 1;
    transform-origin: right center;
    animation: jmPageTurnPrev .48s ease-in-out both;
}

.jm-open-book.jm-page-turn-settle {
    animation: jmBookSettle .24s ease-out both;
}

@keyframes jmPageTurnNext {
    0% {
        transform: rotateY(0deg);
        filter: brightness(1);
    }
    48% {
        transform: rotateY(-82deg);
        filter: brightness(.92);
    }
    100% {
        transform: rotateY(-178deg);
        filter: brightness(1);
    }
}

@keyframes jmPageTurnPrev {
    0% {
        transform: rotateY(0deg);
        filter: brightness(1);
    }
    48% {
        transform: rotateY(82deg);
        filter: brightness(.92);
    }
    100% {
        transform: rotateY(178deg);
        filter: brightness(1);
    }
}

@keyframes jmBookSettle {
    from { transform: scale(.992); }
    to { transform: scale(1); }
}

.jm-comment-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.jm-comment-toggle svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.1;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-comment-toggle[aria-expanded="true"] svg {
    fill: rgba(254,243,199,.22);
}

@media (max-width: 800px) {
    .jm-open-book::after {
        width: 100%;
    }

    .jm-open-book.jm-page-turn-next::after,
    .jm-open-book.jm-page-turn-prev::after {
        left: 0;
        right: auto;
        transform-origin: left center;
    }
}

/* === Borrar solo recuerdos propios en /album === */
.jm-delete-memory-btn {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 6;
    border: 0;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 32px;
    padding: 7px 10px;
    border-radius: 999px;
    background: rgba(127, 29, 29, .92);
    color: #fff;
    cursor: pointer;
    font-size: .78rem;
    font-weight: 950;
    box-shadow: 0 10px 18px rgba(0,0,0,.20);
}

.jm-delete-memory-btn svg {
    width: 15px;
    height: 15px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.1;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jm-delete-memory-btn:hover {
    background: #dc2626;
    transform: translateY(-1px);
}

/* === Música ambiente flotante en invitación === */
.jm-floating-audio {
    position: fixed;
    left: 18px;
    bottom: calc(18px + env(safe-area-inset-bottom));
    z-index: 132;
    display: flex;
    align-items: center;
    gap: 10px;
    max-width: min(310px, calc(100% - 94px));
    padding: 10px 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(255,255,255,.70);
    box-shadow: 0 18px 34px rgba(0,0,0,.22);
    backdrop-filter: blur(16px);
}
.jm-floating-audio button {
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 999px;
    background: linear-gradient(135deg, #a855f7, #ec4899);
    color: #fff;
    font-weight: 950;
    cursor: pointer;
}
.jm-floating-audio__text {
    display: grid;
    line-height: 1.1;
}
.jm-floating-audio__text strong {
    color: #111827;
    font-size: .86rem;
}
.jm-floating-audio__text small {
    color: #6b7280;
    font-size: .76rem;
}

/* === Ajuste PWA móvil real para /momentos === */
.jm-momentos-pwa-body {
    min-height: 100dvh;
    overflow-x: hidden;
    background: linear-gradient(135deg, #a855f7, #ec4899, #f97316) !important;
}
.jm-momentos-pwa-body .jm-layout--momentos-pwa {
    min-height: 100dvh;
}
.jm-momentos-pwa-body .jm-public-bottom-nav--momentos {
    position: fixed !important;
    left: 50% !important;
    right: auto !important;
    bottom: max(10px, env(safe-area-inset-bottom)) !important;
    transform: translateX(-50%) !important;
    z-index: 150 !important;
}
.jm-momentos-pwa-body .jm-floating-javomoment--momentos {
    z-index: 151 !important;
    bottom: calc(78px + env(safe-area-inset-bottom)) !important;
}
.jm-momentos-pwa-body .jm-momentos-upload-page {
    padding-bottom: calc(118px + env(safe-area-inset-bottom)) !important;
}
.jm-momentos-action-btn {
    appearance: none;
    -webkit-appearance: none;
    font-family: inherit;
}

@media (display-mode: standalone) {
    .jm-momentos-pwa-body .jm-momentos-upload-page {
        padding-top: calc(18px + env(safe-area-inset-top)) !important;
        padding-bottom: calc(126px + env(safe-area-inset-bottom)) !important;
    }
    .jm-momentos-pwa-body .jm-public-bottom-nav--momentos {
        bottom: max(12px, env(safe-area-inset-bottom)) !important;
    }
}

@media (max-width: 640px) {
    .jm-floating-audio {
        left: 12px;
        bottom: calc(72px + env(safe-area-inset-bottom));
        max-width: calc(100% - 82px);
    }
    .jm-floating-audio__text strong {
        font-size: .8rem;
    }
    .jm-floating-audio__text small {
        font-size: .7rem;
    }

    .jm-momentos-pwa-body .jm-momentos-top-card {
        border-radius: 0 0 24px 24px !important;
    }
    .jm-momentos-pwa-body .jm-public-bottom-nav--momentos {
        width: min(360px, calc(100% - 20px)) !important;
        grid-template-columns: 1fr 1fr !important;
    }
    .jm-momentos-pwa-body .jm-public-bottom-nav--momentos a {
        min-height: 46px !important;
    }
}

/* === Fix /album móvil: portada primero, libro después === */
.jm-album-body-no-header,
.jm-album-body-no-header body {
    overflow-x: hidden;
}

.jm-preparty-album-page {
    min-height: 100dvh;
}

/* Asegura que el álbum cerrado se vea como portada completa en celular */
@media (max-width: 820px) {
    .jm-preparty-album-page {
        padding: 12px 10px calc(96px + env(safe-area-inset-bottom)) !important;
        display: block;
    }

    .jm-album-closed-cover {
        width: min(430px, 100%) !important;
        height: auto !important;
        min-height: min(680px, calc(100dvh - 128px)) !important;
        margin: 12px auto 26px !important;
        border-radius: 28px !important;
        transform: none !important;
        box-shadow: 0 26px 54px rgba(0,0,0,.46), inset -12px 0 18px rgba(0,0,0,.20) !important;
    }

    .jm-album-closed-cover:hover {
        transform: none !important;
    }

    .jm-album-closed-cover__content {
        min-height: min(680px, calc(100dvh - 128px)) !important;
        padding: 32px 18px !important;
    }

    .jm-album-closed-cover__content small {
        max-width: 92%;
        white-space: normal;
    }

    .jm-album-closed-cover__content strong {
        font-size: clamp(2.45rem, 15vw, 4.7rem) !important;
        max-width: 100%;
        overflow-wrap: anywhere;
    }

    .jm-album-closed-cover__content em {
        font-size: .95rem;
        margin-top: 8px;
    }

    .jm-album-closed-cover > img {
        object-fit: cover !important;
        opacity: .64 !important;
    }

    /* Cuando se abre, el libro ocupa el móvil de forma limpia */
    .jm-book-shell {
        width: 100% !important;
        min-height: calc(100dvh - 126px) !important;
        margin: 10px auto calc(74px + env(safe-area-inset-bottom)) !important;
        padding: 0 4px !important;
        display: flex;
    }

    .jm-book-shell.jm-book-shell--closed {
        display: none !important;
    }

    .jm-book-shell.is-open {
        display: flex !important;
    }

    .jm-open-book {
        width: 100% !important;
        min-height: calc(100dvh - 148px) !important;
        border-radius: 18px !important;
        grid-template-columns: 1fr !important;
        overflow: hidden !important;
    }

    .jm-book-side {
        min-height: calc(100dvh - 148px) !important;
    }

    .jm-book-left {
        padding-right: 0 !important;
        box-shadow: none !important;
    }

    .jm-book-right.hidden,
    .jm-book-spine.hidden,
    .jm-book-spine {
        display: none !important;
    }

    .jm-book-page-content {
        max-height: calc(100dvh - 148px) !important;
        padding: 34px 18px 66px !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch;
    }

    .jm-book-page-number {
        bottom: 20px !important;
        right: 24px !important;
        left: auto !important;
        font-size: 15px !important;
    }

    .jm-book-nav {
        width: 48px !important;
        height: 48px !important;
        font-size: 38px !important;
        line-height: 42px !important;
        top: auto !important;
        bottom: 12px !important;
        transform: none !important;
        z-index: 20 !important;
    }

    .jm-book-nav--prev {
        left: 18px !important;
    }

    .jm-book-nav--next {
        right: 18px !important;
    }

    .jm-book-indicator {
        bottom: -42px !important;
        color: #fef3c7 !important;
        font-size: 14px !important;
    }

    .jm-ref-memory-card {
        max-width: 100% !important;
        transform: none !important;
        margin-bottom: 18px !important;
        padding: 14px !important;
    }

    .jm-ref-memory-media img,
    .jm-ref-memory-media video {
        max-height: 48dvh !important;
    }

    .jm-ref-message-only {
        font-size: 1.5rem !important;
    }

    .jm-public-bottom-nav--album {
        bottom: max(10px, env(safe-area-inset-bottom)) !important;
        z-index: 150 !important;
    }

    .jm-album-body-no-header .jm-floating-javomoment {
        bottom: calc(78px + env(safe-area-inset-bottom)) !important;
        z-index: 151 !important;
    }
}

/* Animación más clara al abrir en móvil */
@media (max-width: 820px) {
    .jm-book-shell.is-open {
        animation: jmAlbumMobileOpen .34s ease both;
    }

    @keyframes jmAlbumMobileOpen {
        from {
            opacity: 0;
            transform: translateY(18px) scale(.98);
        }
        to {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }
}

/* === Album: cierre automático de subidas al iniciar evento === */
.jm-public-bottom-nav a.is-disabled {
    opacity: .62;
    filter: grayscale(.15);
}

.jm-album-upload-status {
    display: inline-flex;
    margin-top: 6px;
    padding: 8px 12px;
    border-radius: 999px;
    background: rgba(127, 29, 29, .86);
    color: #fff7ed;
    font-style: normal;
    font-weight: 950;
    font-size: .88rem;
}

/* === Admin event_edit más intuitivo + invitados por familia === */
.jm-event-edit-grid {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}
.jm-event-edit-sidebar {
    position: sticky;
    top: 16px;
    display: grid;
    gap: 10px;
}
.jm-event-edit-sidebar a {
    display: block;
    padding: 10px 12px;
    border-radius: 12px;
    background: #fff7ed;
    color: #9a3412;
    text-decoration: none;
    font-weight: 900;
}
.jm-event-edit-content {
    display: grid;
    gap: 18px;
}
.jm-current-media {
    display: grid;
    gap: 10px;
}
.jm-current-media img {
    width: min(360px, 100%);
    max-height: 220px;
    object-fit: cover;
    border-radius: 18px;
    border: 1px solid #fed7aa;
}
.jm-admin-guests-page .jm-stat-card {
    display: grid;
    gap: 6px;
}
.jm-admin-guests-page .jm-stat-card span {
    color: #6b7280;
    font-weight: 800;
}
.jm-admin-guests-page .jm-stat-card strong {
    font-size: 2.2rem;
    color: #ea580c;
}
.jm-family-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px;
}
.jm-family-card {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
    padding: 14px;
    border-radius: 16px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.jm-family-card strong,
.jm-family-card span {
    display: block;
}
.jm-family-card span {
    color: #6b7280;
    margin-top: 4px;
}
.jm-copy-input {
    width: min(420px, 100%);
    padding: 8px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    font-size: .82rem;
    color: #475569;
}
@media (max-width: 900px) {
    .jm-event-edit-grid {
        grid-template-columns: 1fr;
    }
    .jm-event-edit-sidebar {
        position: static;
    }
}

/* === Dominios personalizados manuales === */
.jm-steps-list {
    margin: 0;
    padding-left: 1.25rem;
    display: grid;
    gap: 8px;
}
.jm-status-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: .82rem;
    font-weight: 950;
    background: #e5e7eb;
    color: #374151;
}
.jm-status-pill--pending {
    background: #fef3c7;
    color: #92400e;
}
.jm-status-pill--configuring {
    background: #dbeafe;
    color: #1d4ed8;
}
.jm-status-pill--verified,
.jm-status-pill--active {
    background: #dcfce7;
    color: #166534;
}
.jm-status-pill--rejected {
    background: #fee2e2;
    color: #991b1b;
}

/* === Contador de vencimiento de galería === */
.jm-gallery-expiry-counter {
    width: min(760px, calc(100% - 24px));
    margin: 12px auto 18px;
    display: flex;
    gap: 10px;
    align-items: center;
    justify-content: center;
    padding: 12px 16px;
    border-radius: 999px;
    background: rgba(255,255,255,.92);
    color: #7c2d12;
    box-shadow: 0 12px 28px rgba(15,23,42,.14);
    text-align: center;
}
.jm-gallery-expiry-counter strong {
    color: #dc2626;
}
@media(max-width:640px){
    .jm-gallery-expiry-counter {
        border-radius: 18px;
        align-items: flex-start;
        flex-direction: column;
    }
}

/* === Admin Events rediseñado === */
.jm-admin-events-hero {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: center;
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.24), transparent 30%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}
.jm-admin-events-hero h1 {
    margin: 0;
    font-size: clamp(2rem, 4vw, 3.4rem);
    letter-spacing: -.06em;
}
.jm-events-kpis .jm-card {
    display: grid;
    gap: 8px;
    padding: 18px;
}
.jm-events-kpis span {
    color: #78716c;
    font-weight: 900;
}
.jm-events-kpis strong {
    font-size: 2.2rem;
    color: #9a3412;
}
.jm-events-list {
    display: grid;
    gap: 18px;
}
.jm-event-dashboard-card {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 0;
    overflow: hidden;
    background: #fffaf3;
    border: 1px solid #f4c67a;
    border-radius: 24px;
    box-shadow: 0 18px 42px rgba(15,23,42,.10);
}
.jm-event-dashboard-cover {
    position: relative;
    min-height: 280px;
    background: linear-gradient(135deg, #78350f, #f59e0b);
}
.jm-event-dashboard-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.jm-event-status-pill {
    position: absolute;
    left: 14px;
    top: 14px;
    padding: 7px 11px;
    border-radius: 999px;
    background: rgba(255,255,255,.92);
    color: #451a03;
    font-size: .78rem;
    font-weight: 950;
}
.jm-event-status-published {
    background: #dcfce7;
    color: #166534;
}
.jm-event-status-draft {
    background: #fef3c7;
    color: #92400e;
}
.jm-event-status-closed {
    background: #fee2e2;
    color: #991b1b;
}
.jm-event-dashboard-main {
    padding: 22px;
    display: grid;
    gap: 16px;
}
.jm-event-dashboard-title {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: start;
}
.jm-event-dashboard-title h2 {
    margin: 0 0 4px;
    font-size: clamp(1.45rem, 3vw, 2.1rem);
}
.jm-event-dashboard-title p {
    margin: 0;
    color: #78716c;
}
.jm-event-quick-stats {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}
.jm-event-quick-stats span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 8px 11px;
    border-radius: 999px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #7c2d12;
    font-weight: 900;
}
.jm-event-quick-stats strong {
    color: #ea580c;
}
.jm-album-state.open {
    background: #dcfce7 !important;
    color: #166534 !important;
    border-color: #bbf7d0 !important;
}
.jm-album-state.waiting {
    background: #dbeafe !important;
    color: #1d4ed8 !important;
    border-color: #bfdbfe !important;
}
.jm-album-state.closed {
    background: #fee2e2 !important;
    color: #991b1b !important;
    border-color: #fecaca !important;
}
.jm-album-state.neutral {
    background: #e5e7eb !important;
    color: #374151 !important;
    border-color: #d1d5db !important;
}
.jm-gallery-admin-status {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border-radius: 16px;
    background: #fffbeb;
    border: 1px dashed #fbbf24;
    color: #713f12;
}
.jm-gallery-admin-status small {
    color: #92400e;
}
.jm-event-action-sections {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
.jm-event-action-sections > div {
    display: grid;
    gap: 7px;
    padding: 12px;
    border-radius: 16px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.jm-event-action-sections h3 {
    margin: 0 0 3px;
    font-size: .92rem;
    color: #9a3412;
}
.jm-event-action-sections a {
    text-decoration: none;
    color: #451a03;
    font-weight: 800;
    padding: 7px 8px;
    border-radius: 10px;
}
.jm-event-action-sections a:hover {
    background: #fed7aa;
}
@media (max-width: 960px) {
    .jm-event-dashboard-card {
        grid-template-columns: 1fr;
    }
    .jm-event-dashboard-cover {
        min-height: 220px;
    }
    .jm-event-action-sections {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 620px) {
    .jm-admin-events-hero,
    .jm-event-dashboard-title {
        display: grid;
    }
    .jm-events-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
    .jm-event-action-sections {
        grid-template-columns: 1fr;
    }
}

/* === Fix QR invitación: texto legible === */
.jm-qr-block {
    background: rgba(255,255,255,.94) !important;
    border: 1px solid rgba(15,23,42,.08) !important;
    color: #111827 !important;
}
.jm-qr-block strong,
.jm-qr-block p {
    color: #111827 !important;
    text-shadow: none !important;
}
.jm-qr-block p {
    word-break: break-all;
    opacity: .82;
}

/* === Selector de idioma === */
.jm-language-select label {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--jm-accent-2);
    font-weight: 800;
    font-size: .9rem;
}
.jm-language-select select {
    border: 1px solid var(--jm-border);
    border-radius: 999px;
    background: #fffaf3;
    color: var(--jm-accent-2);
    padding: 8px 10px;
    font-weight: 800;
}

/* === Invitation builder 2 columnas + preview vivo === */
.jm-builder-split-page {
    display: grid;
    gap: 18px;
}
.jm-builder-split-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    background: linear-gradient(135deg, #fffaf3, #fff7ed);
    border: 1px solid var(--jm-border);
    border-radius: 24px;
    padding: 22px;
    box-shadow: 0 18px 40px rgba(15,23,42,.08);
}
.jm-builder-split-head h1 {
    margin: 0;
    font-size: clamp(1.8rem, 4vw, 3rem);
}
.jm-builder-split {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(380px, .95fr);
    gap: 18px;
    align-items: start;
}
.jm-builder-left {
    display: grid;
    gap: 18px;
}
.jm-builder-right {
    min-width: 0;
}
.jm-builder-preview-sticky {
    position: sticky;
    top: 18px;
    display: grid;
    gap: 12px;
}
.jm-builder-preview-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 16px;
    background: #451a03;
    color: #fff7ed;
}
.jm-builder-preview-toolbar a {
    color: #fbbf24;
    font-weight: 900;
    text-decoration: none;
}
.jm-live-invitation-preview {
    overflow: hidden;
    border-radius: 28px;
    background: #fff;
    border: 1px solid #fed7aa;
    box-shadow: 0 24px 60px rgba(15,23,42,.18);
}
.jm-live-preview-cover {
    width: 100%;
    height: 260px;
    object-fit: cover;
}
.jm-live-preview-content {
    display: grid;
    gap: 14px;
    padding: 22px;
    background: linear-gradient(180deg, #fff, #fff7ed);
}
.jm-live-preview-content h2 {
    margin: 0;
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    color: #9a3412;
}
.jm-live-preview-content h3 {
    margin: 0;
    color: #111827;
}
.jm-live-preview-details {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.jm-live-preview-details div {
    padding: 12px;
    border-radius: 14px;
    background: #fffbeb;
    border: 1px solid #fed7aa;
}
.jm-live-preview-details strong,
.jm-live-preview-details span {
    display: block;
}
.jm-live-preview-details span {
    color: #6b7280;
    margin-top: 4px;
}
.jm-live-preview-blocks {
    display: grid;
    gap: 10px;
}
.jm-live-preview-block {
    padding: 12px;
    border-radius: 14px;
    background: #fffaf3;
    border: 1px solid #fed7aa;
}
.jm-live-preview-block h4 {
    margin: 0 0 6px;
    color: #9a3412;
}
.jm-live-preview-block p {
    margin: 0;
}
.jm-builder-live-blocks {
    display: grid;
    gap: 14px;
}
.jm-builder-live-block {
    padding: 14px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.jm-builder-live-block__top {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}
.jm-save-status {
    align-self: center;
    color: #166534;
    font-weight: 900;
}
@media (max-width: 1050px) {
    .jm-builder-split {
        grid-template-columns: 1fr;
    }
    .jm-builder-preview-sticky {
        position: static;
    }
}
@media (max-width: 720px) {
    .jm-builder-split-head {
        display: grid;
    }
    .jm-live-preview-details {
        grid-template-columns: 1fr;
    }
    .jm-builder-live-block__top {
        grid-template-columns: 1fr;
    }
    .jm-topbar__inner {
        align-items: flex-start;
        flex-wrap: wrap;
    }
}

/* === Builder full width + preview fiel a /invitacion === */
.jm-layout--builder-full {
    max-width: 100% !important;
    width: 100% !important;
    padding: 18px clamp(12px, 2vw, 28px) 48px !important;
}
.jm-layout--builder-full .jm-builder-split-page {
    width: 100%;
}
.jm-layout--builder-full .jm-builder-split {
    grid-template-columns: minmax(420px, .82fr) minmax(560px, 1.18fr);
    gap: 22px;
}
.jm-layout--builder-full .jm-builder-right {
    min-width: 0;
}
.jm-builder-public-preview-shell {
    width: 100%;
    max-height: calc(100vh - 160px);
    overflow: auto;
    border-radius: 28px;
    background: linear-gradient(135deg, #fff7ed, #f8fafc);
    border: 1px solid #fed7aa;
}
.jm-public-invitation-page--builder {
    min-height: auto !important;
    padding: 18px !important;
    transform-origin: top center;
}
.jm-public-invitation-page--builder .jm-public-mode-tabs {
    position: sticky;
    top: 0;
    z-index: 5;
    margin-bottom: 14px;
}
.jm-builder-faithful-preview {
    width: 100% !important;
    margin: 0 auto !important;
    min-height: 720px;
}
.jm-builder-faithful-preview .jm-invitation-modern__media {
    min-height: 720px;
}
.jm-builder-faithful-preview .jm-invitation-modern__content {
    min-height: 720px;
}
.jm-builder-faithful-preview .jm-live-preview-blocks {
    display: grid;
    gap: 12px;
}
.jm-builder-faithful-preview .jm-live-preview-block {
    background: rgba(255,255,255,.75);
}
@media (max-width: 1180px) {
    .jm-layout--builder-full .jm-builder-split {
        grid-template-columns: 1fr;
    }
    .jm-builder-public-preview-shell {
        max-height: none;
    }
}
@media (min-width: 1500px) {
    .jm-layout--builder-full .jm-builder-split {
        grid-template-columns: minmax(460px, .7fr) minmax(760px, 1.3fr);
    }
}

/* === iOS PWA install guide === */
.jm-ios-pwa-guide[hidden] {
    display: none !important;
}
.jm-ios-pwa-guide {
    position: fixed;
    inset: 0;
    z-index: 260;
    display: grid;
    place-items: end center;
    padding: 16px;
    background: rgba(15, 23, 42, .48);
    backdrop-filter: blur(10px);
}
.jm-ios-pwa-guide__card {
    width: min(430px, 100%);
    border-radius: 28px;
    padding: 22px;
    background: rgba(255,255,255,.96);
    color: #111827;
    box-shadow: 0 28px 70px rgba(15,23,42,.35);
    position: relative;
}
.jm-ios-pwa-guide__card h2 {
    margin: 0 0 8px;
    color: #7e22ce;
}
.jm-ios-pwa-guide__card ol {
    margin: 12px 0;
    padding-left: 22px;
    display: grid;
    gap: 8px;
}
.jm-ios-pwa-guide__note {
    border-radius: 16px;
    padding: 10px 12px;
    background: #fff7ed;
    color: #9a3412;
    font-weight: 800;
}
.jm-ios-pwa-guide__close {
    position: absolute;
    right: 14px;
    top: 12px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 999px;
    background: #f3f4f6;
    color: #111827;
    font-size: 24px;
    cursor: pointer;
}
@media (display-mode: standalone) {
    #installMomentosPwa {
        display: none !important;
    }
}

/* === /momentos con estilo coherente a /invitacion === */
.jm-momentos-upload-page {
    position: relative;
    min-height: 100dvh;
    padding: 18px 14px calc(118px + env(safe-area-inset-bottom)) !important;
    background:
        radial-gradient(circle at top left, rgba(255,255,255,.32), transparent 28%),
        radial-gradient(circle at bottom right, rgba(251,191,36,.22), transparent 30%),
        linear-gradient(135deg, #7c3aed 0%, #ec4899 52%, #f97316 100%) !important;
}
.jm-momentos-shell {
    width: min(980px, 100%);
    margin: 0 auto;
    display: grid;
    gap: 16px;
}
.jm-momentos-top-card,
.jm-momentos-progress-card,
.jm-momentos-upload-card,
.jm-momentos-gallery-card {
    border-radius: 30px !important;
    border: 1px solid rgba(255,255,255,.42) !important;
    background: rgba(255,255,255,.88) !important;
    color: #111827 !important;
    box-shadow: 0 24px 70px rgba(15,23,42,.22) !important;
    backdrop-filter: blur(18px);
}
.jm-momentos-top-card {
    overflow: hidden;
    position: relative;
    padding: 22px !important;
}
.jm-momentos-top-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(135deg, rgba(255,255,255,.36), transparent 48%),
        radial-gradient(circle at 85% 20%, rgba(249,115,22,.22), transparent 28%);
    pointer-events: none;
}
.jm-momentos-top-card > * {
    position: relative;
    z-index: 1;
}
.jm-momentos-top-card h1 {
    margin: 0 0 4px;
    font-size: clamp(2.2rem, 8vw, 4.6rem);
    letter-spacing: -.06em;
    color: #7e22ce;
}
.jm-momentos-top-card p {
    color: #374151 !important;
    font-size: 1.05rem;
}
.jm-momentos-mini-btn,
.jm-momentos-action-btn,
.jm-momentos-submit-btn {
    border-radius: 999px !important;
    background: linear-gradient(135deg, #7e22ce, #ec4899) !important;
    color: #fff !important;
    border: 0 !important;
    box-shadow: 0 14px 28px rgba(126,34,206,.24);
    font-weight: 950 !important;
}
.jm-momentos-mini-btn:hover,
.jm-momentos-action-btn:hover,
.jm-momentos-submit-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 18px 34px rgba(126,34,206,.30);
}
.jm-momentos-progress-row {
    gap: 12px !important;
}
.jm-momentos-progress-step {
    border-radius: 20px !important;
    background: #fff7ed !important;
    border: 1px solid #fed7aa !important;
}
.jm-momentos-progress-step.is-active {
    background: linear-gradient(135deg, #7e22ce, #ec4899) !important;
    color: #fff !important;
    border-color: transparent !important;
}
.jm-momentos-dropzone {
    border-radius: 28px !important;
    border: 2px dashed rgba(126,34,206,.30) !important;
    background:
        radial-gradient(circle at center, rgba(236,72,153,.10), transparent 35%),
        #fffaf3 !important;
}
.jm-momentos-dropzone svg,
.jm-momentos-action-btn svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
}
.jm-momentos-action-grid {
    gap: 12px !important;
}
.jm-momentos-preview-card {
    border-radius: 24px !important;
    background: #fff !important;
    border: 1px solid #fed7aa !important;
}
.jm-moment-card {
    border-radius: 24px !important;
    overflow: hidden;
    background: rgba(255,255,255,.92) !important;
    border: 1px solid rgba(255,255,255,.55) !important;
    box-shadow: 0 18px 42px rgba(15,23,42,.16);
}
.jm-moment-card__media img,
.jm-moment-card__media video {
    border-radius: 18px;
}
.jm-guest-chip {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin-top: 8px;
    padding: 8px 12px;
    border-radius: 999px;
    background: #fff7ed;
    color: #9a3412;
    font-weight: 900;
    border: 1px solid #fed7aa;
}
.jm-public-bottom-nav--momentos {
    background: rgba(255,255,255,.92) !important;
    border: 1px solid rgba(255,255,255,.70) !important;
    box-shadow: 0 22px 48px rgba(15,23,42,.22) !important;
}
.jm-public-bottom-nav--momentos a {
    color: #7e22ce !important;
}
.jm-public-bottom-nav--momentos a.is-active,
.jm-public-bottom-nav--momentos a:hover {
    background: linear-gradient(135deg, #7e22ce, #ec4899) !important;
    color: #fff !important;
}
@media(max-width: 640px) {
    .jm-momentos-upload-page {
        padding: 10px 10px calc(122px + env(safe-area-inset-bottom)) !important;
    }
    .jm-momentos-top-card,
    .jm-momentos-progress-card,
    .jm-momentos-upload-card,
    .jm-momentos-gallery-card {
        border-radius: 24px !important;
    }
    .jm-momentos-action-grid {
        grid-template-columns: 1fr !important;
    }
}

/* === Sistema de cupones === */
.jm-coupons-page .jm-status-pill {
    width: fit-content;
}
.jm-coupon-box {
    border: 1px dashed #f59e0b !important;
}
.jm-coupon-box input {
    text-transform: uppercase;
    font-weight: 900;
    letter-spacing: .04em;
}

/* === Checkout mejorado === */
.jm-checkout-page {
    max-width: 1180px;
    margin: 0 auto;
}
.jm-checkout-hero {
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.24), transparent 32%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}
.jm-checkout-hero h1 {
    margin: 0;
    font-size: clamp(2.1rem, 5vw, 4rem);
    letter-spacing: -.07em;
}
.jm-checkout-plan-card {
    overflow: hidden;
    border-radius: 28px !important;
}
.jm-checkout-plan-head {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    padding-bottom: 18px;
    border-bottom: 1px solid #fed7aa;
    margin-bottom: 18px;
}
.jm-checkout-plan-head h2 {
    margin: 0;
    font-size: clamp(1.6rem, 3vw, 2.4rem);
}
.jm-checkout-price {
    margin: 0;
    padding: 12px 18px;
    border-radius: 20px;
    background: #451a03;
    color: #fef3c7 !important;
    white-space: nowrap;
}
.jm-checkout-section {
    display: grid;
    gap: 14px;
    padding: 18px;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff7ed, #fffbeb);
    border: 1px solid #fed7aa;
}
.jm-checkout-section-head h3,
.jm-checkout-coupon-card h3 {
    margin: 0;
}
.jm-checkout-extra-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
.jm-checkout-extra-card {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
    align-items: center;
    min-height: 118px;
    padding: 16px;
    border-radius: 22px;
    background: rgba(255,255,255,.88);
    border: 1px solid #fed7aa;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.jm-checkout-extra-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 34px rgba(120,53,15,.12);
    border-color: #f59e0b;
}
.jm-checkout-extra-card input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.jm-checkout-extra-card:has(input[type="checkbox"]:checked) {
    border-color: #9a3412;
    box-shadow: 0 18px 36px rgba(154,52,18,.20);
    background: #fff7ed;
}
.jm-checkout-extra-card:has(input[type="checkbox"]:checked)::after {
    content: "✓";
    position: absolute;
    top: 10px;
    right: 12px;
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 999px;
    background: #9a3412;
    color: #fff;
    font-weight: 950;
}
.jm-checkout-extra-icon {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 16px;
    background: linear-gradient(135deg, #78350f, #f59e0b);
    color: #fff;
    font-weight: 950;
    font-size: 1.2rem;
}
.jm-checkout-extra-content {
    display: grid;
    gap: 6px;
}
.jm-checkout-extra-content strong {
    color: #451a03;
}
.jm-checkout-extra-content small {
    color: #78716c;
    line-height: 1.35;
}
.jm-checkout-extra-card--number input[type="number"] {
    margin-top: 4px;
    max-width: 120px;
    border-radius: 14px;
    border: 1px solid #fed7aa;
    padding: 10px 12px;
}
.jm-checkout-coupon-card {
    display: grid;
    grid-template-columns: minmax(220px, .5fr) minmax(280px, 1fr);
    gap: 18px;
    align-items: end;
    padding: 18px;
    border-radius: 24px;
    background:
        radial-gradient(circle at top right, rgba(251,191,36,.18), transparent 28%),
        linear-gradient(135deg, #fff, #fff7ed);
    border: 1px dashed #f59e0b;
}
.jm-checkout-coupon-card label {
    display: grid;
    gap: 8px;
    font-weight: 900;
}
.jm-checkout-coupon-card input {
    text-transform: uppercase;
    font-weight: 950;
    letter-spacing: .05em;
    border-radius: 16px !important;
}
@media (max-width: 900px) {
    .jm-checkout-plan-head,
    .jm-checkout-coupon-card {
        grid-template-columns: 1fr;
        display: grid;
    }
    .jm-checkout-extra-grid {
        grid-template-columns: 1fr;
    }
    .jm-checkout-price {
        width: fit-content;
    }
}

/* === Temas unificados para invitación, álbum y momentos === */
.jm-theme-classic,
.jm-theme-gold {
    --jm-event-bg:
        radial-gradient(circle at 14% 8%, rgba(251,191,36,.28), transparent 26%),
        linear-gradient(135deg, #78350f 0%, #451a03 54%, #1c0a02 100%);
    --jm-event-card: rgba(255,251,235,.94);
    --jm-event-soft: #fff7ed;
    --jm-event-text: #451a03;
    --jm-event-accent: #f59e0b;
    --jm-event-accent-2: #78350f;
    --jm-event-border: #fed7aa;
}
.jm-theme-romantic,
.jm-theme-premium-romantic {
    --jm-event-bg:
        radial-gradient(circle at 18% 12%, rgba(244,114,182,.35), transparent 26%),
        linear-gradient(135deg, #831843 0%, #be185d 48%, #f9a8d4 100%);
    --jm-event-card: rgba(255,241,242,.94);
    --jm-event-soft: #fff1f2;
    --jm-event-text: #831843;
    --jm-event-accent: #ec4899;
    --jm-event-accent-2: #9d174d;
    --jm-event-border: #fbcfe8;
}
.jm-theme-night,
.jm-theme-premium-neon {
    --jm-event-bg:
        radial-gradient(circle at 78% 15%, rgba(34,211,238,.26), transparent 28%),
        linear-gradient(135deg, #020617 0%, #111827 50%, #581c87 100%);
    --jm-event-card: rgba(15,23,42,.88);
    --jm-event-soft: rgba(30,41,59,.86);
    --jm-event-text: #f8fafc;
    --jm-event-accent: #22d3ee;
    --jm-event-accent-2: #a78bfa;
    --jm-event-border: rgba(148,163,184,.28);
}
.jm-theme-pastel {
    --jm-event-bg:
        radial-gradient(circle at 20% 10%, rgba(186,230,253,.52), transparent 28%),
        linear-gradient(135deg, #fdf2f8 0%, #ecfeff 48%, #fef3c7 100%);
    --jm-event-card: rgba(255,255,255,.90);
    --jm-event-soft: #fdf2f8;
    --jm-event-text: #4c1d95;
    --jm-event-accent: #a78bfa;
    --jm-event-accent-2: #7c3aed;
    --jm-event-border: #e9d5ff;
}
.jm-theme-party {
    --jm-event-bg:
        radial-gradient(circle at 15% 18%, rgba(251,191,36,.34), transparent 28%),
        linear-gradient(135deg, #7c3aed 0%, #ec4899 50%, #f97316 100%);
    --jm-event-card: rgba(255,255,255,.90);
    --jm-event-soft: #fff7ed;
    --jm-event-text: #111827;
    --jm-event-accent: #ec4899;
    --jm-event-accent-2: #7e22ce;
    --jm-event-border: rgba(255,255,255,.48);
}
.jm-theme-premium-luxury,
.jm-theme-premium-minimal {
    --jm-event-bg:
        radial-gradient(circle at 20% 8%, rgba(245,158,11,.18), transparent 28%),
        linear-gradient(135deg, #0f172a 0%, #1e1b4b 48%, #78350f 100%);
    --jm-event-card: rgba(255,251,235,.94);
    --jm-event-soft: #fffbeb;
    --jm-event-text: #111827;
    --jm-event-accent: #d97706;
    --jm-event-accent-2: #451a03;
    --jm-event-border: #facc15;
}
.jm-preparty-album-page,
.jm-public-invitation-page,
.jm-momentos-upload-page {
    background: var(--jm-event-bg, radial-gradient(circle at top,#92400e 0,#451a03 48%,#1c0a02 100%)) !important;
}
.jm-public-invitation-page .jm-invitation-modern,
.jm-preparty-album-page .jm-open-book,
.jm-momentos-upload-page .jm-momentos-top-card,
.jm-momentos-upload-page .jm-momentos-progress-card,
.jm-momentos-upload-page .jm-momentos-upload-card,
.jm-momentos-upload-page .jm-momentos-gallery-card {
    background: var(--jm-event-card, #fff7ed) !important;
    color: var(--jm-event-text, #451a03) !important;
    border-color: var(--jm-event-border, #fed7aa) !important;
}
.jm-public-invitation-page .jm-public-mode-tabs,
.jm-preparty-album-page .jm-public-bottom-nav,
.jm-momentos-upload-page .jm-public-bottom-nav {
    background: color-mix(in srgb, var(--jm-event-card, #fff7ed) 88%, transparent) !important;
    border-color: var(--jm-event-border, #fed7aa) !important;
}
.jm-public-invitation-page .jm-public-mode-tabs a.active,
.jm-preparty-album-page .jm-public-bottom-nav a.is-active,
.jm-momentos-upload-page .jm-public-bottom-nav a.is-active {
    background: var(--jm-event-accent-2, #78350f) !important;
    color: #fff !important;
}
.jm-public-invitation-page .jm-badge,
.jm-momentos-upload-page .jm-badge,
.jm-preparty-album-page .jm-badge {
    background: var(--jm-event-soft, #fff7ed) !important;
    color: var(--jm-event-accent-2, #78350f) !important;
    border-color: var(--jm-event-border, #fed7aa) !important;
}
.jm-public-invitation-page h1,
.jm-public-invitation-page h2,
.jm-momentos-top-card h1,
.jm-preparty-album-page .jm-album-closed-cover__content strong {
    color: var(--jm-event-accent-2, #78350f) !important;
}
.jm-theme-night .jm-public-invitation-page h1,
.jm-theme-night .jm-public-invitation-page h2,
.jm-theme-night .jm-momentos-top-card h1,
.jm-theme-premium-neon .jm-public-invitation-page h1,
.jm-theme-premium-neon .jm-public-invitation-page h2,
.jm-theme-premium-neon .jm-momentos-top-card h1 {
    color: var(--jm-event-accent, #22d3ee) !important;
}
.jm-invitation-modern {
    border-radius: 30px !important;
    overflow: hidden;
    box-shadow: 0 34px 80px rgba(0,0,0,.34) !important;
}
.jm-invitation-modern__content {
    background:
        linear-gradient(rgba(255,248,236,.90), rgba(250,235,205,.86)),
        repeating-linear-gradient(0deg, transparent 0 29px, rgba(146,64,14,.045) 30px) !important;
}
.jm-theme-night .jm-invitation-modern__content,
.jm-theme-premium-neon .jm-invitation-modern__content {
    background:
        linear-gradient(rgba(15,23,42,.92), rgba(30,41,59,.88)),
        repeating-linear-gradient(0deg, transparent 0 29px, rgba(255,255,255,.04) 30px) !important;
}

/* === Fix acento real + contraste Night/Neon === */

/* El color elegido en /admin/event_edit ahora sí domina botones, tabs y acentos */
.jm-public-invitation-page,
.jm-preparty-album-page,
.jm-momentos-upload-page {
    --jm-event-accent-real: var(--event-accent, var(--jm-event-accent, #f97316));
}

/* Botones de /momentos: antes se quedaban morados fijos */
.jm-momentos-mini-btn,
.jm-momentos-action-btn,
.jm-momentos-submit-btn,
.jm-momentos-upload-page .jm-btn,
.jm-momentos-upload-page button[type="submit"] {
    background: linear-gradient(135deg, var(--jm-event-accent-real), var(--jm-event-accent-2, var(--jm-event-accent-real))) !important;
    color: #fff !important;
    border: 0 !important;
    box-shadow: 0 14px 30px color-mix(in srgb, var(--jm-event-accent-real) 38%, transparent) !important;
}

.jm-momentos-mini-btn:hover,
.jm-momentos-action-btn:hover,
.jm-momentos-submit-btn:hover {
    box-shadow: 0 18px 38px color-mix(in srgb, var(--jm-event-accent-real) 46%, transparent) !important;
}

/* Acento en invitación */
.jm-public-invitation-page .jm-public-action-card,
.jm-public-invitation-page .jm-countdown div,
.jm-public-invitation-page .jm-qr-block {
    border-color: color-mix(in srgb, var(--jm-event-accent-real) 45%, white) !important;
}

.jm-public-invitation-page .jm-countdown strong,
.jm-public-invitation-page .jm-public-action-card strong {
    color: var(--jm-event-accent-real) !important;
}

.jm-public-invitation-page .jm-public-mode-tabs a.active {
    background: var(--jm-event-accent-real) !important;
    color: #fff !important;
}

/* Acento en álbum */
.jm-preparty-album-page .jm-book-nav,
.jm-preparty-album-page .jm-heart-btn.is-liked,
.jm-preparty-album-page .jm-comment-toggle[aria-expanded="true"],
.jm-preparty-album-page .jm-public-bottom-nav a.is-active {
    background: var(--jm-event-accent-real) !important;
    color: #fff !important;
}

.jm-preparty-album-page .jm-album-closed-cover__content strong,
.jm-preparty-album-page .jm-book-page-number,
.jm-preparty-album-page .jm-ref-memory-author {
    color: var(--jm-event-accent-real) !important;
}

/* Acento en Momentos */
.jm-momentos-upload-page .jm-public-bottom-nav--momentos a.is-active,
.jm-momentos-upload-page .jm-public-bottom-nav--momentos a:hover,
.jm-momentos-upload-page .jm-momentos-progress-step.is-active {
    background: var(--jm-event-accent-real) !important;
    color: #fff !important;
}

.jm-momentos-upload-page .jm-momentos-top-card h1,
.jm-momentos-upload-page .jm-guest-chip,
.jm-momentos-upload-page .jm-moment-card strong {
    color: var(--jm-event-accent-real) !important;
}

/* Night / Premium Neon: contraste fuerte */
.jm-theme-night,
.jm-theme-premium-neon {
    --jm-event-card: rgba(15, 23, 42, .94);
    --jm-event-soft: rgba(30, 41, 59, .96);
    --jm-event-text: #f8fafc;
    --jm-event-muted: #cbd5e1;
    --jm-event-border: rgba(125, 211, 252, .36);
}

.jm-theme-night .jm-invitation-modern,
.jm-theme-premium-neon .jm-invitation-modern,
.jm-theme-night .jm-momentos-top-card,
.jm-theme-night .jm-momentos-progress-card,
.jm-theme-night .jm-momentos-upload-card,
.jm-theme-night .jm-momentos-gallery-card,
.jm-theme-premium-neon .jm-momentos-top-card,
.jm-theme-premium-neon .jm-momentos-progress-card,
.jm-theme-premium-neon .jm-momentos-upload-card,
.jm-theme-premium-neon .jm-momentos-gallery-card {
    background: rgba(15, 23, 42, .94) !important;
    color: #f8fafc !important;
    border-color: rgba(125, 211, 252, .34) !important;
}

.jm-theme-night .jm-invitation-modern__content,
.jm-theme-premium-neon .jm-invitation-modern__content {
    background:
        linear-gradient(rgba(15,23,42,.96), rgba(15,23,42,.92)),
        repeating-linear-gradient(0deg, transparent 0 29px, rgba(255,255,255,.045) 30px) !important;
    color: #f8fafc !important;
}

.jm-theme-night .jm-invitation-modern__content p,
.jm-theme-night .jm-invitation-modern__content span,
.jm-theme-night .jm-invitation-modern__content small,
.jm-theme-night .jm-momentos-top-card p,
.jm-theme-night .jm-momentos-upload-card p,
.jm-theme-night .jm-momentos-gallery-card p,
.jm-theme-night .jm-moment-card p,
.jm-theme-premium-neon .jm-invitation-modern__content p,
.jm-theme-premium-neon .jm-invitation-modern__content span,
.jm-theme-premium-neon .jm-invitation-modern__content small,
.jm-theme-premium-neon .jm-momentos-top-card p,
.jm-theme-premium-neon .jm-momentos-upload-card p,
.jm-theme-premium-neon .jm-momentos-gallery-card p,
.jm-theme-premium-neon .jm-moment-card p {
    color: #e2e8f0 !important;
}

.jm-theme-night .jm-live-preview-details div,
.jm-theme-night .jm-public-action-card,
.jm-theme-night .jm-countdown div,
.jm-theme-night .jm-live-preview-block,
.jm-theme-night .jm-momentos-progress-step,
.jm-theme-night .jm-momentos-dropzone,
.jm-theme-night .jm-moment-card,
.jm-theme-premium-neon .jm-live-preview-details div,
.jm-theme-premium-neon .jm-public-action-card,
.jm-theme-premium-neon .jm-countdown div,
.jm-theme-premium-neon .jm-live-preview-block,
.jm-theme-premium-neon .jm-momentos-progress-step,
.jm-theme-premium-neon .jm-momentos-dropzone,
.jm-theme-premium-neon .jm-moment-card {
    background: rgba(30, 41, 59, .92) !important;
    border-color: rgba(125, 211, 252, .28) !important;
    color: #f8fafc !important;
}

.jm-theme-night .jm-public-action-card strong,
.jm-theme-night .jm-countdown strong,
.jm-theme-night .jm-live-preview-details strong,
.jm-theme-night .jm-momentos-top-card h1,
.jm-theme-night .jm-momentos-upload-card h2,
.jm-theme-night .jm-momentos-gallery-card h2,
.jm-theme-premium-neon .jm-public-action-card strong,
.jm-theme-premium-neon .jm-countdown strong,
.jm-theme-premium-neon .jm-live-preview-details strong,
.jm-theme-premium-neon .jm-momentos-top-card h1,
.jm-theme-premium-neon .jm-momentos-upload-card h2,
.jm-theme-premium-neon .jm-momentos-gallery-card h2 {
    color: var(--jm-event-accent-real) !important;
    text-shadow: 0 0 18px color-mix(in srgb, var(--jm-event-accent-real) 40%, transparent);
}

.jm-theme-night .jm-public-mode-tabs,
.jm-theme-night .jm-public-bottom-nav,
.jm-theme-premium-neon .jm-public-mode-tabs,
.jm-theme-premium-neon .jm-public-bottom-nav {
    background: rgba(15, 23, 42, .92) !important;
    border-color: rgba(125, 211, 252, .30) !important;
}

.jm-theme-night .jm-public-mode-tabs a,
.jm-theme-night .jm-public-bottom-nav a,
.jm-theme-premium-neon .jm-public-mode-tabs a,
.jm-theme-premium-neon .jm-public-bottom-nav a {
    color: #e2e8f0 !important;
}

.jm-theme-night .jm-qr-block,
.jm-theme-premium-neon .jm-qr-block {
    background: rgba(248, 250, 252, .96) !important;
    color: #111827 !important;
}

.jm-theme-night .jm-qr-block strong,
.jm-theme-night .jm-qr-block p,
.jm-theme-premium-neon .jm-qr-block strong,
.jm-theme-premium-neon .jm-qr-block p {
    color: #111827 !important;
}

/* Dropzone/input contraste en neon/night */
.jm-theme-night .jm-momentos-upload-card input,
.jm-theme-night .jm-momentos-upload-card textarea,
.jm-theme-premium-neon .jm-momentos-upload-card input,
.jm-theme-premium-neon .jm-momentos-upload-card textarea {
    background: rgba(255,255,255,.96) !important;
    color: #111827 !important;
}

/* Fallback para navegadores sin color-mix */
@supports not (color: color-mix(in srgb, red, white)) {
    .jm-momentos-mini-btn,
    .jm-momentos-action-btn,
    .jm-momentos-submit-btn {
        box-shadow: 0 14px 30px rgba(0,0,0,.22) !important;
    }
}

/* === Fix fuerte de legibilidad para Night y Premium Neon === */
.jm-theme-night,
.jm-theme-premium-neon {
    --jm-event-card: #0f172a;
    --jm-event-soft: #1e293b;
    --jm-event-text: #ffffff;
    --jm-event-muted: #e2e8f0;
    --jm-event-border: rgba(125, 211, 252, .48);
}

/* Invitación: todo el contenido sobre fondo oscuro debe ser claro */
.jm-theme-night .jm-invitation-modern,
.jm-theme-premium-neon .jm-invitation-modern {
    background: #0f172a !important;
    color: #ffffff !important;
}

.jm-theme-night .jm-invitation-modern__content,
.jm-theme-premium-neon .jm-invitation-modern__content {
    background:
        radial-gradient(circle at top right, rgba(34, 211, 238, .12), transparent 34%),
        linear-gradient(180deg, #0f172a 0%, #111827 100%) !important;
    color: #ffffff !important;
}

.jm-theme-night .jm-invitation-modern__content *,
.jm-theme-premium-neon .jm-invitation-modern__content * {
    color: inherit;
}

.jm-theme-night .jm-invitation-modern__content h1,
.jm-theme-night .jm-invitation-modern__content h2,
.jm-theme-night .jm-invitation-modern__content h3,
.jm-theme-night .jm-invitation-modern__content p,
.jm-theme-night .jm-invitation-modern__content li,
.jm-theme-night .jm-invitation-modern__content span,
.jm-theme-night .jm-invitation-modern__content small,
.jm-theme-premium-neon .jm-invitation-modern__content h1,
.jm-theme-premium-neon .jm-invitation-modern__content h2,
.jm-theme-premium-neon .jm-invitation-modern__content h3,
.jm-theme-premium-neon .jm-invitation-modern__content p,
.jm-theme-premium-neon .jm-invitation-modern__content li,
.jm-theme-premium-neon .jm-invitation-modern__content span,
.jm-theme-premium-neon .jm-invitation-modern__content small {
    color: #ffffff !important;
    text-shadow: 0 2px 18px rgba(0,0,0,.42) !important;
}

.jm-theme-night .jm-invitation-modern__content h1,
.jm-theme-night .jm-invitation-modern__content h2,
.jm-theme-premium-neon .jm-invitation-modern__content h1,
.jm-theme-premium-neon .jm-invitation-modern__content h2 {
    color: var(--jm-event-accent-real, #22d3ee) !important;
    text-shadow: 0 0 22px color-mix(in srgb, var(--jm-event-accent-real, #22d3ee) 50%, transparent), 0 2px 12px rgba(0,0,0,.62) !important;
}

/* Bloques internos de invitación */
.jm-theme-night .jm-public-action-card,
.jm-theme-night .jm-countdown div,
.jm-theme-night .jm-live-preview-details div,
.jm-theme-night .jm-live-preview-block,
.jm-theme-night .jm-invitation-block,
.jm-theme-premium-neon .jm-public-action-card,
.jm-theme-premium-neon .jm-countdown div,
.jm-theme-premium-neon .jm-live-preview-details div,
.jm-theme-premium-neon .jm-live-preview-block,
.jm-theme-premium-neon .jm-invitation-block {
    background: rgba(30, 41, 59, .96) !important;
    color: #ffffff !important;
    border-color: rgba(125, 211, 252, .40) !important;
}

.jm-theme-night .jm-public-action-card *,
.jm-theme-night .jm-countdown div *,
.jm-theme-night .jm-live-preview-details div *,
.jm-theme-night .jm-live-preview-block *,
.jm-theme-night .jm-invitation-block *,
.jm-theme-premium-neon .jm-public-action-card *,
.jm-theme-premium-neon .jm-countdown div *,
.jm-theme-premium-neon .jm-live-preview-details div *,
.jm-theme-premium-neon .jm-live-preview-block *,
.jm-theme-premium-neon .jm-invitation-block * {
    color: #ffffff !important;
}

/* Momentos: fuerza legibilidad general */
.jm-theme-night.jm-momentos-upload-page,
.jm-theme-premium-neon.jm-momentos-upload-page {
    color: #ffffff !important;
}

.jm-theme-night .jm-momentos-top-card,
.jm-theme-night .jm-momentos-progress-card,
.jm-theme-night .jm-momentos-upload-card,
.jm-theme-night .jm-momentos-gallery-card,
.jm-theme-night .jm-moment-card,
.jm-theme-premium-neon .jm-momentos-top-card,
.jm-theme-premium-neon .jm-momentos-progress-card,
.jm-theme-premium-neon .jm-momentos-upload-card,
.jm-theme-premium-neon .jm-momentos-gallery-card,
.jm-theme-premium-neon .jm-moment-card {
    background: #0f172a !important;
    color: #ffffff !important;
    border-color: rgba(125, 211, 252, .42) !important;
}

.jm-theme-night .jm-momentos-top-card *,
.jm-theme-night .jm-momentos-progress-card *,
.jm-theme-night .jm-momentos-upload-card *,
.jm-theme-night .jm-momentos-gallery-card *,
.jm-theme-night .jm-moment-card *,
.jm-theme-premium-neon .jm-momentos-top-card *,
.jm-theme-premium-neon .jm-momentos-progress-card *,
.jm-theme-premium-neon .jm-momentos-upload-card *,
.jm-theme-premium-neon .jm-momentos-gallery-card *,
.jm-theme-premium-neon .jm-moment-card * {
    color: #ffffff !important;
}

.jm-theme-night .jm-momentos-top-card h1,
.jm-theme-night .jm-momentos-upload-card h2,
.jm-theme-night .jm-momentos-gallery-card h2,
.jm-theme-night .jm-moment-card strong,
.jm-theme-premium-neon .jm-momentos-top-card h1,
.jm-theme-premium-neon .jm-momentos-upload-card h2,
.jm-theme-premium-neon .jm-momentos-gallery-card h2,
.jm-theme-premium-neon .jm-moment-card strong {
    color: var(--jm-event-accent-real, #22d3ee) !important;
    text-shadow: 0 0 18px color-mix(in srgb, var(--jm-event-accent-real, #22d3ee) 45%, transparent) !important;
}

.jm-theme-night .jm-momentos-dropzone,
.jm-theme-night .jm-momentos-preview-card,
.jm-theme-night .jm-momentos-progress-step,
.jm-theme-premium-neon .jm-momentos-dropzone,
.jm-theme-premium-neon .jm-momentos-preview-card,
.jm-theme-premium-neon .jm-momentos-progress-step {
    background: #1e293b !important;
    color: #ffffff !important;
    border-color: rgba(125, 211, 252, .42) !important;
}

.jm-theme-night .jm-momentos-dropzone *,
.jm-theme-night .jm-momentos-preview-card *,
.jm-theme-night .jm-momentos-progress-step *,
.jm-theme-premium-neon .jm-momentos-dropzone *,
.jm-theme-premium-neon .jm-momentos-preview-card *,
.jm-theme-premium-neon .jm-momentos-progress-step * {
    color: #ffffff !important;
}

/* Inputs siguen claros para escribir bien */
.jm-theme-night .jm-momentos-upload-card input,
.jm-theme-night .jm-momentos-upload-card textarea,
.jm-theme-premium-neon .jm-momentos-upload-card input,
.jm-theme-premium-neon .jm-momentos-upload-card textarea {
    background: #ffffff !important;
    color: #111827 !important;
    border-color: rgba(125, 211, 252, .55) !important;
}

.jm-theme-night .jm-momentos-upload-card input::placeholder,
.jm-theme-night .jm-momentos-upload-card textarea::placeholder,
.jm-theme-premium-neon .jm-momentos-upload-card input::placeholder,
.jm-theme-premium-neon .jm-momentos-upload-card textarea::placeholder {
    color: #64748b !important;
}

/* Menú y tabs oscuros */
.jm-theme-night .jm-public-mode-tabs,
.jm-theme-night .jm-public-bottom-nav,
.jm-theme-premium-neon .jm-public-mode-tabs,
.jm-theme-premium-neon .jm-public-bottom-nav {
    background: rgba(15, 23, 42, .96) !important;
    border-color: rgba(125, 211, 252, .42) !important;
}

.jm-theme-night .jm-public-mode-tabs a,
.jm-theme-night .jm-public-bottom-nav a,
.jm-theme-premium-neon .jm-public-mode-tabs a,
.jm-theme-premium-neon .jm-public-bottom-nav a {
    color: #ffffff !important;
}

.jm-theme-night .jm-public-mode-tabs a.active,
.jm-theme-night .jm-public-bottom-nav a.is-active,
.jm-theme-premium-neon .jm-public-mode-tabs a.active,
.jm-theme-premium-neon .jm-public-bottom-nav a.is-active {
    background: var(--jm-event-accent-real, #22d3ee) !important;
    color: #020617 !important;
}

/* /album: comentarios con mismo color que mensaje */
.jm-ref-message-only,
.jm-ref-memory-message,
.jm-comment p,
.jm-comment strong {
    color: var(--jm-event-accent-real, #78350f) !important;
}

.jm-comment {
    background: color-mix(in srgb, var(--jm-event-accent-real, #78350f) 8%, #fff8ea) !important;
    border-color: color-mix(in srgb, var(--jm-event-accent-real, #78350f) 30%, #ead0a8) !important;
}

/* En temas oscuros, comentarios del álbum siguen legibles */
.jm-theme-night .jm-comment,
.jm-theme-premium-neon .jm-comment {
    background: rgba(30,41,59,.92) !important;
    border-color: rgba(125,211,252,.38) !important;
}

.jm-theme-night .jm-ref-message-only,
.jm-theme-night .jm-ref-memory-message,
.jm-theme-night .jm-comment p,
.jm-theme-night .jm-comment strong,
.jm-theme-premium-neon .jm-ref-message-only,
.jm-theme-premium-neon .jm-ref-memory-message,
.jm-theme-premium-neon .jm-comment p,
.jm-theme-premium-neon .jm-comment strong {
    color: #ffffff !important;
}

/* === /momentos lightbox igual al álbum === */
.jm-lightbox.jm-lightbox--open {
    display: flex !important;
}
.jm-lightbox .jm-lightbox-content {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
}
.jm-lightbox .jm-lightbox-content img,
.jm-lightbox .jm-lightbox-content video {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: 16px;
}

/* === Opciones de video post-evento === */
.jm-video-options-form {
    margin-top: 18px;
    padding: 18px;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff7ed, #fffbeb);
    border: 1px solid #fed7aa;
}
.jm-video-options-form h2 {
    margin: 0;
}
.jm-current-audio {
    display: grid;
    gap: 10px;
    padding: 14px;
    border-radius: 18px;
    background: #fff;
    border: 1px solid #fed7aa;
}
.jm-current-audio audio {
    width: 100%;
}
.jm-help-text {
    padding: 12px 14px;
    border-radius: 16px;
    background: #ecfdf5;
    color: #166534;
    font-weight: 800;
}

/* === Fix color comentario álbum + UI limpia video admin === */

/* Comentarios del álbum: regresar cafecito igual al meta */
.jm-preparty-album-page .jm-comment,
.jm-preparty-album-page .jm-comment p,
.jm-preparty-album-page .jm-comment strong,
.jm-preparty-album-page .jm-comment small {
    color: #7c3f10 !important;
}

.jm-preparty-album-page .jm-comment {
    background: #fff3e0 !important;
    border-color: #efd2aa !important;
}

.jm-preparty-album-page .jm-ref-memory-meta,
.jm-preparty-album-page .jm-ref-memory-meta * {
    color: #7c3f10 !important;
}

/* En temas oscuros se mantiene legible, pero el álbum normal queda cafecito */
.jm-preparty-album-page.jm-theme-night .jm-comment,
.jm-preparty-album-page.jm-theme-night .jm-comment p,
.jm-preparty-album-page.jm-theme-night .jm-comment strong,
.jm-preparty-album-page.jm-theme-premium-neon .jm-comment,
.jm-preparty-album-page.jm-theme-premium-neon .jm-comment p,
.jm-preparty-album-page.jm-theme-premium-neon .jm-comment strong {
    color: #fef3c7 !important;
}

/* Video admin más intuitivo */
.jm-video-admin-page {
    max-width: 1180px;
    margin: 0 auto;
}

.jm-video-hero {
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.24), transparent 30%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}

.jm-video-hero h1 {
    margin: 0;
    font-size: clamp(2.2rem, 5vw, 4rem);
    letter-spacing: -.07em;
}

.jm-video-admin-grid {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
    gap: 18px;
    align-items: start;
}

.jm-video-panel {
    display: grid;
    gap: 16px;
    border-radius: 28px !important;
}

.jm-video-panel-head {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: center;
}

.jm-video-panel-head h2 {
    margin: 0;
}

.jm-video-options-form {
    display: grid;
    gap: 14px;
    margin-top: 0 !important;
}

.jm-video-upload-box {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
    align-items: center;
    padding: 18px;
    border-radius: 22px;
    background: #fff7ed;
    border: 1px dashed #f59e0b;
    cursor: pointer;
}

.jm-video-upload-box input {
    grid-column: 1 / -1;
    width: 100%;
}

.jm-video-upload-icon,
.jm-video-outro-mark {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 16px;
    background: linear-gradient(135deg, #78350f, #f59e0b);
    color: #fff;
    font-weight: 950;
}

.jm-video-option-card,
.jm-video-outro-card {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
    align-items: center;
    padding: 14px;
    border-radius: 20px;
    background: #fff;
    border: 1px solid #fed7aa;
}

.jm-video-option-card input {
    width: 20px;
    height: 20px;
}

.jm-video-option-card strong,
.jm-video-outro-card strong,
.jm-video-upload-box strong {
    display: block;
    color: #451a03;
}

.jm-video-option-card small,
.jm-video-outro-card small,
.jm-video-upload-box small {
    display: block;
    color: #78716c;
    margin-top: 3px;
}

.jm-video-generate-card {
    display: grid;
    gap: 12px;
    padding: 18px;
    border-radius: 24px;
    background: linear-gradient(135deg, #451a03, #78350f);
}

.jm-video-generate-card .jm-btn {
    justify-content: center;
}

.jm-video-latest {
    display: grid;
    gap: 12px;
    padding: 14px;
    border-radius: 22px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-video-latest h3 {
    margin: 0;
}

.jm-video-latest video {
    width: 100%;
    max-height: 360px;
    border-radius: 18px;
    background: #111827;
}

.jm-video-empty {
    padding: 24px;
    border-radius: 22px;
    background: #fffbeb;
    border: 1px solid #fed7aa;
}

@media (max-width: 900px) {
    .jm-video-admin-grid {
        grid-template-columns: 1fr;
    }
}

/* === Invitados: WhatsApp y límite individual Momentos === */
.jm-mini-input {
    width: 84px;
    padding: 8px 10px;
    border: 1px solid var(--jm-border, #f4c67a);
    border-radius: 12px;
    background: #fff;
    color: var(--jm-text, #4a2e1f);
    font-weight: 800;
}
.jm-inline-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 8px;
}
.jm-inline-form {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

/* === Acceso QR y memorias separadas === */
.jm-access-hero,
.jm-access-ticket-card {
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.22), transparent 30%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}

.jm-access-ticket-head {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
}

.jm-access-ticket-head h2 {
    margin: 0;
    font-size: clamp(1.8rem, 4vw, 3rem);
}

.jm-access-ticket-count {
    display: grid;
    place-items: center;
    min-width: 130px;
    padding: 18px;
    border-radius: 24px;
    background: #451a03;
    color: #fef3c7;
}

.jm-access-ticket-count strong {
    font-size: 3rem;
    line-height: 1;
}

.jm-access-progress {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0;
}

.jm-access-progress div {
    padding: 18px;
    border-radius: 20px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-access-progress strong {
    display: block;
    font-size: 2rem;
    color: #9a3412;
}

.jm-access-entry-form {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: end;
    padding: 16px;
    border-radius: 20px;
    background: #fffbeb;
    border: 1px dashed #f59e0b;
    margin-bottom: 18px;
}

.jm-access-entry-form input {
    max-width: 130px;
}

.jm-guest-access-qr-card {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 18px;
    align-items: center;
    margin-top: 18px;
    padding: 18px;
    border-radius: 24px;
    background: rgba(255,255,255,.92);
    border: 1px solid rgba(15,23,42,.10);
    color: #111827;
}

.jm-guest-access-qr-card h3 {
    margin: 0;
    color: #451a03;
}

.jm-guest-access-qr-card img {
    width: 180px;
    max-width: 100%;
    border-radius: 18px;
    background: #fff;
    padding: 10px;
}

.jm-admin-memories-page .jm-memory-section-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
}

.jm-memory-section-card {
    display: grid;
    gap: 16px;
}

.jm-admin-memory-card {
    padding: 16px;
}

.jm-memory-meta-admin {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 8px 0;
}

.jm-memory-meta-admin span {
    padding: 6px 10px;
    border-radius: 999px;
    background: #fff3e0;
    color: #7c3f10;
    font-weight: 800;
    font-size: .86rem;
}

@media (max-width: 900px) {
    .jm-admin-memories-page .jm-memory-section-grid,
    .jm-access-progress {
        grid-template-columns: 1fr;
    }

    .jm-access-ticket-head,
    .jm-guest-access-qr-card {
        display: grid;
    }
}

/* === Fix Premium Neon / Night en álbum: texto legible en tarjetas claras === */
.jm-preparty-album-page.jm-theme-premium-neon .jm-book-memory-card,
.jm-preparty-album-page.jm-theme-night .jm-book-memory-card,
.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-memory-card,
.jm-preparty-album-page.jm-theme-night .jm-ref-memory-card {
    background: #fff8e6 !important;
    color: #7c3f10 !important;
    border-color: #f6c76b !important;
}

.jm-preparty-album-page.jm-theme-premium-neon .jm-book-memory-card *,
.jm-preparty-album-page.jm-theme-night .jm-book-memory-card *,
.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-memory-card *,
.jm-preparty-album-page.jm-theme-night .jm-ref-memory-card * {
    color: #7c3f10 !important;
    text-shadow: none !important;
}

.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-memory-message,
.jm-preparty-album-page.jm-theme-night .jm-ref-memory-message,
.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-message-only,
.jm-preparty-album-page.jm-theme-night .jm-ref-message-only {
    color: #7c3f10 !important;
    background: #fff3cf !important;
    border-color: #f6c76b !important;
    text-shadow: none !important;
}

.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-memory-meta,
.jm-preparty-album-page.jm-theme-night .jm-ref-memory-meta,
.jm-preparty-album-page.jm-theme-premium-neon .jm-ref-memory-meta *,
.jm-preparty-album-page.jm-theme-night .jm-ref-memory-meta * {
    color: #7c3f10 !important;
    text-shadow: none !important;
}

.jm-preparty-album-page.jm-theme-premium-neon .jm-heart-btn,
.jm-preparty-album-page.jm-theme-night .jm-heart-btn,
.jm-preparty-album-page.jm-theme-premium-neon .jm-comment-toggle,
.jm-preparty-album-page.jm-theme-night .jm-comment-toggle {
    color: #7c3f10 !important;
    background: #fff0bd !important;
}

.jm-preparty-album-page.jm-theme-premium-neon .jm-book-empty,
.jm-preparty-album-page.jm-theme-night .jm-book-empty {
    color: #b58363 !important;
    text-shadow: none !important;
}

/* Links de invitación individual */
.jm-guest-chip {
    color: #7c3f10 !important;
    background: #fff3e0 !important;
    border-color: #f4c67a !important;
}

/* === Dashboard personalizado y familias simplificadas === */
.jm-dashboard-page {
    max-width: 1180px;
    margin: 0 auto;
}
.jm-dashboard-hero,
.jm-guests-hero {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 18px;
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.24), transparent 30%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}
.jm-dashboard-hero h1,
.jm-guests-hero h1 {
    margin: 0;
    font-size: clamp(2.2rem, 5vw, 4rem);
    letter-spacing: -.07em;
}
.jm-dashboard-hero p,
.jm-guests-hero p {
    max-width: 720px;
    color: #7c3f10;
}
.jm-dashboard-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-end;
}
.jm-dashboard-kpis .jm-card,
.jm-guests-kpis .jm-card {
    display: grid;
    gap: 8px;
    padding: 18px;
}
.jm-dashboard-kpis span,
.jm-guests-kpis span {
    font-weight: 900;
    color: #8a5a2b;
}
.jm-dashboard-kpis strong,
.jm-guests-kpis strong {
    font-size: 2.3rem;
    color: #7c3f10;
}
.jm-dashboard-action-card {
    display: grid;
    align-content: start;
    gap: 10px;
}
.jm-dashboard-action-card h2 {
    margin: 0;
}
.jm-dashboard-next-event,
.jm-dashboard-plan-card {
    background: linear-gradient(135deg, #fffaf3, #fff7ed);
}
.jm-dashboard-event-list {
    display: grid;
    gap: 12px;
}
.jm-dashboard-event-row {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: center;
    padding: 14px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.jm-dashboard-event-row strong,
.jm-dashboard-event-row span {
    display: block;
}
.jm-dashboard-event-row span {
    margin-top: 4px;
    color: #8a5a2b;
}
.jm-code-block {
    padding: 12px;
    border-radius: 14px;
    background: #451a03;
    color: #fff7ed;
    overflow-x: auto;
}
.jm-guests-page .jm-table td {
    vertical-align: top;
}
.jm-guests-page .jm-copy-input {
    min-width: 280px;
}
@media(max-width: 900px) {
    .jm-dashboard-hero,
    .jm-guests-hero,
    .jm-dashboard-event-row {
        display: grid;
    }
    .jm-dashboard-hero-actions {
        justify-content: start;
    }
    .jm-dashboard-kpis,
    .jm-guests-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}
@media(max-width: 620px) {
    .jm-dashboard-kpis,
    .jm-guests-kpis {
        grid-template-columns: 1fr !important;
    }
}

/* === Escáner QR + Push === */
.jm-scanner-card {
    background: linear-gradient(135deg, #0f172a, #1e1b4b) !important;
    color: #fff !important;
    border-color: rgba(255,255,255,.14) !important;
}
.jm-scanner-card h2,
.jm-scanner-card p {
    color: #fff !important;
}
.jm-scanner-frame {
    position: relative;
    overflow: hidden;
    margin-top: 16px;
    border-radius: 24px;
    background: #020617;
    border: 1px solid rgba(255,255,255,.18);
}
.jm-scanner-frame video {
    width: 100%;
    max-height: 520px;
    object-fit: cover;
}
.jm-scanner-line {
    position: absolute;
    left: 10%;
    right: 10%;
    top: 50%;
    height: 3px;
    border-radius: 99px;
    background: #22d3ee;
    box-shadow: 0 0 18px #22d3ee;
    animation: jmScanLine 1.6s ease-in-out infinite alternate;
}
@keyframes jmScanLine {
    from { transform: translateY(-120px); }
    to { transform: translateY(120px); }
}
.jm-scanner-status {
    margin-top: 12px;
    color: #dbeafe !important;
}
.jm-push-mini-btn {
    border: 0;
    border-radius: 999px;
    padding: 10px 14px;
    background: linear-gradient(135deg, #f97316, #ec4899);
    color: #fff;
    font-weight: 900;
    cursor: pointer;
}

/* === Eventos comprados / bloqueo sin compra === */
.jm-no-events-card,
.jm-event-quota-card,
.jm-superadmin-purchases-page .jm-admin-page-head {
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.22), transparent 30%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}

.jm-event-quota-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    border: 1px solid #fed7aa !important;
}

.jm-event-quota-card.is-empty {
    border-color: #fecaca !important;
    background: linear-gradient(135deg, #fff7ed, #fef2f2);
}

.jm-event-quota-card h2 {
    margin: 0;
    color: #7c2d12;
}

.jm-superadmin-purchases-page .jm-card--soft {
    background: #fff7ed;
    border-color: #fed7aa;
}

/* === Web Push / VAPID superadmin === */
.jm-webpush-page .jm-webpush-key-box {
    display: grid;
    gap: 8px;
    padding: 14px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    margin-bottom: 12px;
}

.jm-webpush-page .jm-webpush-key-box code {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    padding: 10px;
    border-radius: 12px;
    background: #451a03;
    color: #fff7ed;
}

.jm-status-pill--done {
    background: #dcfce7 !important;
    color: #166534 !important;
}

.jm-status-pill--pending {
    background: #fef3c7 !important;
    color: #92400e !important;
}

.jm-status-pill--error {
    background: #fee2e2 !important;
    color: #991b1b !important;
}

/* === Logo icon en header/panel y landing === */
.jm-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.jm-brand-logo {
    width: 34px;
    height: 34px;
    border-radius: 12px;
    object-fit: contain;
    background: #fff7ed;
    border: 1px solid rgba(124, 63, 16, .16);
    padding: 3px;
    box-shadow: 0 8px 18px rgba(124, 63, 16, .12);
}

.jm-lp-logo {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.jm-lp-logo-img {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    object-fit: contain;
    background: rgba(255,255,255,.9);
    border: 1px solid rgba(255,255,255,.42);
    padding: 4px;
    box-shadow: 0 12px 28px rgba(0,0,0,.16);
}

/* === Botón de notificaciones acorde al tema de invitación === */
.jm-public-mode-tabs .jm-push-mini-btn,
.jm-push-mini-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 42px;
    border: 0;
    border-radius: 999px;
    padding: 10px 16px;
    background:
        radial-gradient(circle at 15% 20%, rgba(255,255,255,.42), transparent 30%),
        linear-gradient(135deg, var(--event-accent, #f97316), color-mix(in srgb, var(--event-accent, #f97316) 72%, #ec4899));
    color: #fff;
    font-weight: 900;
    letter-spacing: -.01em;
    cursor: pointer;
    box-shadow: 0 14px 30px color-mix(in srgb, var(--event-accent, #f97316) 38%, transparent);
    transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}

.jm-public-mode-tabs .jm-push-mini-btn::before,
.jm-push-mini-btn::before {
    content: "";
    width: 18px;
    height: 18px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18 8a6 6 0 1 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Z' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18 8a6 6 0 1 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Z' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm-public-mode-tabs .jm-push-mini-btn:hover,
.jm-push-mini-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 38px color-mix(in srgb, var(--event-accent, #f97316) 46%, transparent);
}

.jm-public-mode-tabs .jm-push-mini-btn.is-loading,
.jm-push-mini-btn.is-loading {
    opacity: .78;
    cursor: wait;
}

.jm-public-mode-tabs .jm-push-mini-btn.is-active,
.jm-push-mini-btn.is-active {
    background: linear-gradient(135deg, #16a34a, #22c55e);
    box-shadow: 0 14px 30px rgba(34,197,94,.28);
}

.jm-theme-night .jm-push-mini-btn,
.jm-theme-premium-neon .jm-push-mini-btn {
    color: #fff !important;
    text-shadow: none !important;
    border: 1px solid rgba(255,255,255,.24);
}

@media (max-width: 720px) {
    .jm-public-mode-tabs .jm-push-mini-btn {
        width: 100%;
        order: -1;
    }
}

/* === Ajuste solicitado: jm-brand solo icono, sin cuadro/fondo === */
.jm-brand .jm-brand-logo {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    width: 34px !important;
    height: 34px !important;
    object-fit: contain !important;
}

/* === Fix header logo: quitar icono naranja generado y usar logo real === */
.jm-brand::before {
    content: none !important;
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    background: none !important;
    mask: none !important;
    -webkit-mask: none !important;
}

/* === Header panel: regresar cuadrito alrededor del logo real === */
.jm-brand .jm-brand-logo {
    width: 38px !important;
    height: 38px !important;
    object-fit: contain !important;
    border-radius: 12px !important;
    background: #fffaf3 !important;
    border: 1px solid rgba(215, 168, 90, .85) !important;
    padding: 4px !important;
    box-shadow: 0 10px 20px rgba(120, 53, 15, .14) !important;
}

/* === Legal pages and legal links === */
.jm-layout--legal {
    max-width: 980px;
    margin: 0 auto;
    padding: 32px 18px 56px;
}

.jm-legal-page {
    width: 100%;
}

.jm-legal-card {
    display: grid;
    gap: 18px;
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.18), transparent 28%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
}

.jm-legal-card h1 {
    margin: 0;
    font-size: clamp(2rem, 5vw, 3.4rem);
    letter-spacing: -.06em;
    color: #451a03;
}

.jm-legal-updated {
    margin: 0;
    color: #8a5a2b;
    font-weight: 800;
}

.jm-legal-content {
    display: grid;
    gap: 16px;
    color: #5f3816;
    line-height: 1.75;
}

.jm-legal-content h2 {
    margin: 12px 0 0;
    color: #7c2d12;
    font-size: 1.35rem;
}

.jm-legal-content p {
    margin: 0;
}

.jm-legal-inline,
.jm-public-legal-note {
    font-size: .92rem;
    line-height: 1.55;
    color: #7c3f10;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    border-radius: 16px;
    padding: 12px 14px;
}

.jm-legal-inline a,
.jm-public-legal-note a {
    color: #9a3412;
    font-weight: 900;
    text-decoration: underline;
}

.jm-app-legal-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
    justify-content: center;
    align-items: center;
    padding: 22px 16px 30px;
    color: #8a5a2b;
    font-size: .88rem;
}

.jm-app-legal-footer a {
    color: #8a5a2b;
    font-weight: 800;
    text-decoration: none;
}

.jm-app-legal-footer a:hover {
    color: #9a3412;
    text-decoration: underline;
}

.jm-lp-footer a {
    line-height: 1.6;
}

/* === Legal profesional producción === */
.jm-legal-card--professional {
    position: relative;
    overflow: hidden;
}

.jm-legal-subtitle {
    max-width: 760px;
    margin: -8px 0 0;
    color: #7c3f10;
    font-size: 1.06rem;
    line-height: 1.65;
}

.jm-legal-disclaimer {
    padding: 16px 18px;
    border-radius: 18px;
    background: #fffbeb;
    border: 1px solid #fbbf24;
    color: #78350f;
    line-height: 1.55;
}

.jm-legal-index {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 6px 0 12px;
    padding: 12px;
    border-radius: 18px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(217, 119, 6, .16);
}

.jm-legal-index a {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 7px 12px;
    border-radius: 999px;
    background: #fff7ed;
    color: #7c2d12;
    font-weight: 900;
    font-size: .9rem;
    text-decoration: none;
    border: 1px solid #fed7aa;
}

.jm-legal-index a:hover {
    background: #fed7aa;
}

.jm-legal-content--professional ul {
    margin: 0;
    padding-left: 1.25rem;
    display: grid;
    gap: 8px;
}

.jm-legal-content--professional li {
    padding-left: 4px;
}

.jm-legal-content--professional strong {
    color: #7c2d12;
}

.jm-legal-content--professional a {
    color: #9a3412;
    font-weight: 900;
    text-decoration: underline;
}

.jm-legal-related {
    padding: 18px;
    border-radius: 22px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-legal-related h2 {
    margin: 0 0 12px;
    color: #7c2d12;
}

.jm-legal-related-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.jm-legal-related-grid a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 10px 12px;
    border-radius: 16px;
    background: #fff;
    color: #7c2d12;
    font-weight: 900;
    text-decoration: none;
    border: 1px solid #fed7aa;
}

.jm-legal-related-grid a:hover {
    background: #ffedd5;
}

@media (max-width: 720px) {
    .jm-legal-related-grid {
        grid-template-columns: 1fr;
    }

    .jm-legal-index {
        display: grid;
    }
}

/* === Invitación: aviso legal movido al footer === */
.jm-public-legal-note--footer {
    margin: 18px auto 0;
    max-width: 980px;
    text-align: center;
    opacity: .92;
}

/* === Límite de videos === */
.jm-video-limit-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    background:
        radial-gradient(circle at top left, rgba(251,191,36,.22), transparent 32%),
        linear-gradient(135deg, #fffaf3, #fff7ed);
    border: 1px solid #fed7aa !important;
}

.jm-video-limit-card h2 {
    margin: 0;
    color: #7c2d12;
}

.jm-video-limit-card p {
    margin: 8px 0 0;
    color: #7c3f10;
}

.jm-video-limit-card > strong {
    display: grid;
    place-items: center;
    min-width: 110px;
    min-height: 86px;
    border-radius: 22px;
    background: #451a03;
    color: #fff7ed;
    font-size: 1.65rem;
    box-shadow: 0 16px 34px rgba(69,26,3,.18);
}

.jm-video-generate-card .jm-btn[disabled] {
    opacity: .62;
    cursor: not-allowed;
    filter: grayscale(.2);
}

/* === Seguridad auth + Google OAuth === */
.jm-google-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    min-height: 48px;
    border-radius: 16px;
    border: 1px solid rgba(120, 53, 15, .16);
    background: #fff;
    color: #451a03;
    font-weight: 900;
    text-decoration: none;
    box-shadow: 0 12px 24px rgba(69, 26, 3, .08);
}

.jm-google-btn span {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #fff7ed;
    color: #dc2626;
    border: 1px solid #fed7aa;
    font-weight: 950;
}

.jm-auth-separator {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #8a5a2b;
    font-size: .88rem;
    font-weight: 800;
    margin: 14px 0;
}

.jm-auth-separator::before,
.jm-auth-separator::after {
    content: "";
    flex: 1;
    height: 1px;
    background: #fed7aa;
}

.jm-auth-small {
    text-align: center;
    color: #7c3f10;
}

.jm-auth-small a {
    color: #9a3412;
    font-weight: 900;
}

.jm-momentos-closed-card {
    display: grid;
    gap: 12px;
    padding: 22px;
    border-radius: 28px;
    background:
        radial-gradient(circle at top left, color-mix(in srgb, var(--event-accent, #a855f7) 22%, transparent), transparent 34%),
        linear-gradient(135deg, #fff, #fff7ed);
    border: 1px solid rgba(168, 85, 247, .18);
    box-shadow: 0 20px 48px rgba(17, 24, 39, .08);
}

.jm-momentos-closed-card h2 {
    margin: 0;
    color: #451a03;
}

.jm-momentos-closed-card p {
    margin: 0;
    color: #7c3f10;
    line-height: 1.6;
}


/* === Responsive interno: panel/admin/login/checkout/legales === */
.jm-mobile-menu-title {
    display: none;
}

.jm-mini-input {
    max-width: 96px;
}

@media (max-width: 920px) {
    body.jm-has-topbar {
        background: linear-gradient(180deg, #fff7ed 0%, #f7efe5 100%);
        overflow-x: hidden;
    }

    body.jm-has-topbar .jm-topbar {
        position: sticky;
        top: 0;
        z-index: 900;
    }

    body.jm-has-topbar .jm-topbar__inner {
        max-width: 100%;
        display: grid;
        grid-template-columns: 1fr auto;
        align-items: center;
        gap: 10px;
        padding: 10px 12px 12px;
    }

    body.jm-has-topbar .jm-brand {
        min-width: 0;
        display: inline-flex;
        align-items: center;
        gap: 8px;
        font-size: 1rem;
    }

    body.jm-has-topbar .jm-brand span {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 48vw;
    }

    body.jm-has-topbar .jm-brand-logo {
        width: 34px !important;
        height: 34px !important;
        flex: 0 0 auto;
    }

    body.jm-has-topbar .jm-mobile-menu-title {
        display: block;
        grid-column: 1 / -1;
        margin-top: 2px;
        color: #8a5a2b;
        font-size: .78rem;
        font-weight: 900;
        text-transform: uppercase;
        letter-spacing: .08em;
    }

    body.jm-has-topbar .jm-nav {
        grid-column: 1 / -1;
        order: 10;
        display: flex;
        flex-wrap: nowrap;
        overflow-x: auto;
        gap: 8px;
        padding: 2px 2px 4px;
        margin: 0 -2px;
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
    }

    body.jm-has-topbar .jm-nav::-webkit-scrollbar {
        height: 0;
    }

    body.jm-has-topbar .jm-nav a {
        flex: 0 0 auto;
        scroll-snap-align: start;
        display: inline-flex;
        align-items: center;
        gap: 7px;
        min-height: 40px;
        padding: 9px 12px;
        border-radius: 999px;
        background: #fff7ed;
        border: 1px solid #fed7aa;
        box-shadow: 0 8px 18px rgba(120, 53, 15, .08);
        font-weight: 900;
        font-size: .88rem;
    }

    body.jm-has-topbar .jm-nav svg {
        width: 18px;
        height: 18px;
        flex: 0 0 auto;
    }

    body.jm-has-topbar .jm-language-select {
        justify-self: end;
    }

    body.jm-has-topbar .jm-language-select label {
        display: grid;
        gap: 2px;
        font-size: .72rem;
        color: #8a5a2b;
        font-weight: 900;
    }

    body.jm-has-topbar .jm-language-select select {
        min-height: 34px;
        max-width: 110px;
        border-radius: 999px;
        border: 1px solid #fed7aa;
        background: #fffaf3;
        color: #7c2d12;
        font-weight: 900;
        padding: 6px 10px;
    }

    body.jm-has-topbar .jm-layout,
    body.jm-has-topbar .jm-layout--legal {
        width: 100%;
        max-width: 100%;
        padding: 14px 12px 34px;
    }

    body.jm-has-topbar .jm-stack {
        gap: 14px;
    }

    body.jm-has-topbar .jm-card {
        border-radius: 18px;
        padding: 16px;
    }

    body.jm-has-topbar .jm-card h1,
    body.jm-has-topbar .jm-dashboard-hero h1,
    body.jm-has-topbar .jm-guests-hero h1,
    body.jm-has-topbar .jm-admin-page-head h1 {
        font-size: clamp(1.7rem, 8vw, 2.4rem);
        letter-spacing: -.045em;
        line-height: 1.05;
    }

    body.jm-has-topbar .jm-card h2 {
        font-size: clamp(1.25rem, 5.8vw, 1.65rem);
        line-height: 1.12;
    }

    body.jm-has-topbar .jm-grid,
    body.jm-has-topbar .jm-grid--2,
    body.jm-has-topbar .jm-grid--3,
    body.jm-has-topbar .jm-grid--4,
    body.jm-has-topbar .jm-form--grid,
    body.jm-has-topbar .jm-check-grid {
        grid-template-columns: 1fr !important;
    }

    body.jm-has-topbar .jm-between,
    body.jm-has-topbar .jm-dashboard-hero,
    body.jm-has-topbar .jm-guests-hero,
    body.jm-has-topbar .jm-admin-page-head,
    body.jm-has-topbar .jm-event-quota-card,
    body.jm-has-topbar .jm-video-limit-card,
    body.jm-has-topbar .jm-access-ticket-head {
        display: grid !important;
        grid-template-columns: 1fr !important;
        align-items: start;
    }

    body.jm-has-topbar .jm-actions,
    body.jm-has-topbar .jm-dashboard-hero-actions,
    body.jm-has-topbar .jm-inline-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 9px;
        width: 100%;
    }

    body.jm-has-topbar .jm-actions .jm-btn,
    body.jm-has-topbar .jm-btn,
    body.jm-has-topbar button.jm-btn,
    body.jm-has-topbar a.jm-btn {
        width: 100%;
        min-height: 46px;
    }

    body.jm-has-topbar .jm-form {
        gap: 12px;
    }

    body.jm-has-topbar .jm-form input,
    body.jm-has-topbar .jm-form select,
    body.jm-has-topbar .jm-form textarea,
    body.jm-has-topbar input,
    body.jm-has-topbar select,
    body.jm-has-topbar textarea {
        min-height: 46px;
        font-size: 16px;
    }

    body.jm-has-topbar .jm-auth-wrap {
        min-height: auto;
        padding: 10px 0 24px;
        align-items: start;
    }

    body.jm-has-topbar .jm-auth {
        width: 100%;
    }

    body.jm-has-topbar .jm-table-wrap {
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        border-radius: 16px;
        border: 1px solid #fed7aa;
        background: #fffaf3;
    }

    body.jm-has-topbar .jm-table {
        min-width: 760px;
    }

    body.jm-has-topbar .jm-table th,
    body.jm-has-topbar .jm-table td {
        padding: 10px;
        font-size: .9rem;
    }

    body.jm-has-topbar .jm-copy-input,
    body.jm-has-topbar .jm-guests-page .jm-copy-input {
        min-width: 220px;
        width: 100%;
    }

    body.jm-has-topbar .jm-mini-input {
        width: 100%;
        max-width: none;
    }

    body.jm-has-topbar .jm-dashboard-kpis,
    body.jm-has-topbar .jm-guests-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    body.jm-has-topbar .jm-dashboard-kpis .jm-card,
    body.jm-has-topbar .jm-guests-kpis .jm-card {
        padding: 14px;
    }

    body.jm-has-topbar .jm-dashboard-kpis strong,
    body.jm-has-topbar .jm-guests-kpis strong {
        font-size: 1.85rem;
    }

    body.jm-has-topbar .jm-dashboard-event-row,
    body.jm-has-topbar .jm-access-progress,
    body.jm-has-topbar .jm-access-entry-form,
    body.jm-has-topbar .jm-inline-form {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px;
    }

    body.jm-has-topbar .jm-event-action-sections {
        grid-template-columns: 1fr !important;
    }

    body.jm-has-topbar .jm-event-card,
    body.jm-has-topbar .jm-dashboard-event-row {
        overflow: hidden;
    }

    body.jm-has-topbar .jm-url-box,
    body.jm-has-topbar .jm-code-block,
    body.jm-has-topbar pre {
        max-width: 100%;
        overflow-x: auto;
        white-space: pre-wrap;
        word-break: break-word;
    }

    body.jm-has-topbar .jm-qr-box,
    body.jm-has-topbar .jm-qr-block {
        display: grid;
        justify-items: center;
        text-align: center;
    }

    body.jm-has-topbar .jm-scanner-frame video {
        max-height: 70vh;
    }

    body.jm-has-topbar .jm-legal-card h1 {
        font-size: clamp(1.8rem, 8vw, 2.6rem);
    }

    body.jm-has-topbar .jm-legal-index,
    body.jm-has-topbar .jm-legal-related-grid {
        display: grid;
        grid-template-columns: 1fr;
    }

    body.jm-has-topbar .jm-app-legal-footer {
        padding: 18px 12px 26px;
        display: grid;
        text-align: center;
        gap: 8px;
        font-size: .82rem;
    }
}

@media (max-width: 520px) {
    body.jm-has-topbar .jm-dashboard-kpis,
    body.jm-has-topbar .jm-guests-kpis {
        grid-template-columns: 1fr !important;
    }

    body.jm-has-topbar .jm-nav a span {
        max-width: 132px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    body.jm-has-topbar .jm-card {
        padding: 14px;
    }
}

/* === Landing responsive, sin tocar invitación/álbum/momentos === */
@media (max-width: 900px) {
    .jm-lp-header,
    .jm-lp-nav,
    .jm-lp-hero,
    .jm-lp-grid,
    .jm-lp-pricing-grid,
    .jm-lp-footer-grid {
        grid-template-columns: 1fr !important;
    }

    .jm-lp-header {
        position: sticky;
        top: 0;
        z-index: 80;
        gap: 12px;
        padding: 12px;
    }

    .jm-lp-nav {
        display: flex;
        overflow-x: auto;
        gap: 8px;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
    }

    .jm-lp-nav a {
        flex: 0 0 auto;
        padding: 9px 12px;
        border-radius: 999px;
        background: rgba(255,255,255,.78);
        border: 1px solid rgba(255,255,255,.36);
        font-weight: 900;
    }

    .jm-lp-hero {
        padding: 24px 12px;
    }

    .jm-lp-hero h1 {
        font-size: clamp(2.1rem, 10vw, 3.2rem);
        line-height: 1;
    }

    .jm-lp-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .jm-lp-actions .jm-btn,
    .jm-lp-actions a {
        width: 100%;
        min-height: 46px;
    }

    .jm-lp-section,
    .jm-lp-footer {
        padding-left: 12px;
        padding-right: 12px;
    }
}


/* === Menú inferior móvil interno === */
.jm-mobile-bottom-nav {
    display: none;
}

@media (max-width: 920px) {
    body.jm-has-topbar {
        padding-bottom: 84px;
    }

    body.jm-has-topbar .jm-mobile-bottom-nav {
        position: fixed;
        left: 10px;
        right: 10px;
        bottom: 10px;
        z-index: 1200;
        display: grid;
        grid-template-columns: repeat(3, 1fr) auto;
        align-items: center;
        gap: 7px;
        padding: 8px;
        border-radius: 24px;
        background: rgba(255, 250, 243, .94);
        border: 1px solid rgba(244, 198, 122, .88);
        box-shadow: 0 20px 45px rgba(69, 26, 3, .18);
        backdrop-filter: blur(16px);
    }

    body.jm-has-topbar .jm-mobile-bottom-nav > a {
        min-height: 54px;
        display: grid;
        place-items: center;
        gap: 3px;
        padding: 6px 4px;
        border-radius: 18px;
        color: #7c2d12;
        text-decoration: none;
        font-size: .73rem;
        font-weight: 950;
    }

    body.jm-has-topbar .jm-mobile-bottom-nav > a:hover,
    body.jm-has-topbar .jm-mobile-bottom-nav > a:focus {
        background: #fff7ed;
        outline: none;
    }

    body.jm-has-topbar .jm-mobile-bottom-nav svg {
        width: 21px;
        height: 21px;
    }

    body.jm-has-topbar .jm-mobile-flags {
        display: grid;
        grid-template-columns: 1fr;
        gap: 4px;
        padding-left: 6px;
        border-left: 1px solid #fed7aa;
    }

    body.jm-has-topbar .jm-mobile-flags a {
        display: grid;
        place-items: center;
        width: 34px;
        height: 24px;
        border-radius: 999px;
        text-decoration: none;
        font-size: 1rem;
        background: #fff;
        border: 1px solid transparent;
    }

    body.jm-has-topbar .jm-mobile-flags a.active {
        border-color: #b45309;
        background: #ffedd5;
    }

    body.jm-has-topbar .jm-app-legal-footer {
        padding-bottom: 104px;
    }

    /* En móvil el select de idioma superior queda oculto porque usamos banderas abajo */
    body.jm-has-topbar .jm-language-select {
        display: none;
    }
}


/* === Fix /billing celular: evitar vista con zoom / overflow horizontal === */
@media (max-width: 920px) {
    body.jm-has-topbar .jm-billing-page {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
    }

    body.jm-has-topbar .jm-billing-page .jm-grid,
    body.jm-has-topbar .jm-billing-page .jm-grid--2 {
        display: grid !important;
        grid-template-columns: 1fr !important;
        width: 100%;
        max-width: 100%;
    }

    body.jm-has-topbar .jm-billing-page .jm-price-card {
        width: 100%;
        min-width: 0 !important;
        max-width: 100%;
        overflow: hidden;
    }

    body.jm-has-topbar .jm-billing-page .jm-price {
        font-size: clamp(1.75rem, 9vw, 2.35rem);
        word-break: break-word;
    }

    body.jm-has-topbar .jm-billing-page .jm-feature-list {
        padding-left: 0;
        list-style: none;
        display: grid;
        gap: 8px;
    }

    body.jm-has-topbar .jm-billing-page .jm-feature-list li {
        min-width: 0;
        border-radius: 14px;
        padding: 10px 12px;
        background: #fff7ed;
        border: 1px solid #fed7aa;
        line-height: 1.35;
    }

    body.jm-has-topbar .jm-billing-page .jm-card--soft {
        width: 100%;
        min-width: 0;
    }

    body.jm-has-topbar .jm-billing-page .jm-table-wrap {
        max-width: calc(100vw - 24px);
    }
}


/* === Access Scan móvil / app independiente === */
.jm-access-app-body {
    background: #0f172a !important;
    color: #e5e7eb;
}

.jm-access-app-layout {
    width: 100%;
    max-width: 520px;
    margin: 0 auto;
    min-height: 100vh;
    padding: 14px 12px 28px;
}

.jm-access-app {
    display: grid;
    gap: 14px;
}

.jm-access-app-top {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 4px 10px;
    background: linear-gradient(180deg, #0f172a 70%, rgba(15,23,42,0));
}

.jm-access-app-top span {
    display: block;
    color: #93c5fd;
    font-size: .78rem;
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.jm-access-app-top h1 {
    margin: 2px 0 0;
    color: #fff;
    font-size: 1.2rem;
    line-height: 1.1;
}

.jm-access-app-top a {
    flex: 0 0 auto;
    color: #dbeafe;
    text-decoration: none;
    font-weight: 900;
    padding: 9px 12px;
    border-radius: 999px;
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.14);
}

.jm-access-app-card {
    border-radius: 26px;
    background: #111827;
    border: 1px solid rgba(148,163,184,.22);
    padding: 18px;
    box-shadow: 0 20px 45px rgba(0,0,0,.24);
}

.jm-access-scan-main {
    background:
        radial-gradient(circle at top left, rgba(59,130,246,.30), transparent 38%),
        linear-gradient(135deg, #111827, #020617);
}

.jm-access-scan-main h2,
.jm-access-app-card h2 {
    margin: 0 0 6px;
    color: #fff;
    font-size: 1.5rem;
}

.jm-access-scan-main p,
.jm-access-app-card p {
    color: #cbd5e1;
}

.jm-access-scan-button,
.jm-access-big-confirm {
    width: 100%;
    min-height: 56px;
    margin-top: 10px;
    border-radius: 20px;
    background: linear-gradient(135deg, #2563eb, #06b6d4) !important;
    font-size: 1.05rem;
}

.jm-access-install-button {
    width: 100%;
    min-height: 52px;
    margin-top: 8px;
    border-radius: 20px;
}

.jm-access-app .jm-scanner-frame {
    position: relative;
    overflow: hidden;
    border-radius: 24px;
    border: 2px solid rgba(96,165,250,.7);
    margin-top: 14px;
    background: #000;
}

.jm-access-app .jm-scanner-frame video {
    width: 100%;
    min-height: 320px;
    max-height: 58vh;
    object-fit: cover;
}

.jm-access-app .jm-scanner-line {
    position: absolute;
    left: 10%;
    right: 10%;
    top: 50%;
    height: 3px;
    background: #22d3ee;
    box-shadow: 0 0 18px #22d3ee;
    animation: jmScanLine 1.7s infinite ease-in-out;
}

@keyframes jmScanLine {
    0%, 100% { transform: translateY(-120px); opacity: .4; }
    50% { transform: translateY(120px); opacity: 1; }
}

.jm-access-app .jm-scanner-status {
    color: #bfdbfe;
    font-size: .92rem;
    line-height: 1.45;
}

.jm-access-manual-card summary,
.jm-access-adjust summary {
    cursor: pointer;
    color: #bfdbfe;
    font-weight: 950;
}

.jm-access-app .jm-form input,
.jm-access-app input {
    min-height: 48px;
    background: #020617;
    color: #fff;
    border-color: rgba(148,163,184,.32);
}

.jm-access-app .jm-access-ticket-card {
    background: #f8fafc;
    color: #0f172a;
}

.jm-access-app .jm-access-ticket-card h2,
.jm-access-app .jm-access-ticket-card p,
.jm-access-app .jm-access-ticket-card span {
    color: #0f172a;
}

.jm-access-app .jm-access-progress {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.jm-access-app .jm-access-progress > div {
    border-radius: 20px;
    padding: 16px;
    background: #e0f2fe;
    text-align: center;
}

.jm-access-app .jm-access-progress strong {
    display: block;
    font-size: 2.1rem;
    color: #075985;
}

.jm-access-desktop-card {
    text-align: center;
    max-width: 680px;
    margin: 0 auto;
}

.jm-access-desktop-qr {
    width: 260px;
    height: 260px;
    margin: 18px auto;
    border-radius: 24px;
    background: #fff;
    padding: 12px;
}

.jm-access-url {
    word-break: break-all;
    color: #7c3f10;
    font-weight: 800;
}

.jm-event-scan-link {
    background: #0f172a !important;
    color: #fff !important;
    border-radius: 14px;
    padding: 10px 12px !important;
    font-weight: 950;
}

/* === Invitación: QR en popup fullscreen === */
.jm-qr-popup-launch-card {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 14px;
    margin-top: 18px;
    padding: 16px;
    border-radius: 22px;
    background: color-mix(in srgb, var(--event-accent, #f97316) 10%, #fff);
    border: 1px solid color-mix(in srgb, var(--event-accent, #f97316) 35%, transparent);
}

.jm-qr-popup-launch-card strong {
    display: block;
    color: #451a03;
    font-size: 1.08rem;
}

.jm-qr-popup-launch-card p {
    margin: 3px 0 0;
    font-size: .9rem;
    opacity: .82;
    word-break: break-word;
}

.jm-qr-fullscreen-modal[hidden] {
    display: none !important;
}

.jm-qr-fullscreen-modal {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: grid;
    place-items: center;
    padding: 18px;
    background: rgba(15,23,42,.88);
    backdrop-filter: blur(14px);
}

.jm-qr-fullscreen-panel {
    position: relative;
    width: min(94vw, 520px);
    max-height: 92vh;
    overflow: auto;
    display: grid;
    justify-items: center;
    gap: 12px;
    padding: 22px;
    border-radius: 30px;
    background: #fffaf3;
    color: #451a03;
    box-shadow: 0 30px 90px rgba(0,0,0,.36);
    text-align: center;
}

.jm-qr-fullscreen-panel h2 {
    margin: 0;
    font-size: clamp(1.4rem, 6vw, 2rem);
}

.jm-qr-fullscreen-panel img {
    width: min(78vw, 360px);
    height: min(78vw, 360px);
    background: #fff;
    padding: 14px;
    border-radius: 24px;
    border: 1px solid #fed7aa;
}

.jm-qr-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 0;
    background: #451a03;
    color: #fff;
    font-size: 1.8rem;
    line-height: 1;
    cursor: pointer;
}

body.jm-modal-open {
    overflow: hidden;
}

@media (max-width: 720px) {
    .jm-qr-popup-launch-card {
        grid-template-columns: 1fr;
    }

    .jm-qr-popup-launch-card .jm-btn {
        width: 100%;
    }
}


/* === Pantalla en vivo / proyector de Momentos === */
.jm-live-screen-body {
    margin: 0;
    background: #050505 !important;
    color: #fff;
    overflow: hidden;
}

.jm-live-screen-layout {
    max-width: none !important;
    width: 100%;
    min-height: 100vh;
    padding: 0 !important;
    margin: 0 !important;
}

.jm-live-screen {
    position: relative;
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto 1fr auto;
    overflow: hidden;
    background:
        radial-gradient(circle at 18% 18%, rgba(249, 115, 22, .24), transparent 34%),
        radial-gradient(circle at 85% 20%, rgba(168, 85, 247, .22), transparent 32%),
        linear-gradient(135deg, #030712, #050505 60%, #111827);
}

.jm-live-bg-glow {
    pointer-events: none;
    position: absolute;
    inset: -20%;
    background:
        radial-gradient(circle, rgba(255,255,255,.08), transparent 42%),
        conic-gradient(from 180deg, rgba(249,115,22,.16), rgba(168,85,247,.16), rgba(34,211,238,.14), rgba(249,115,22,.16));
    filter: blur(80px);
    opacity: .42;
    animation: jmLiveGlow 18s infinite linear;
}

@keyframes jmLiveGlow {
    to { transform: rotate(360deg); }
}

.jm-live-topbar,
.jm-live-footer {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 22px 28px;
}

.jm-live-topbar h1 {
    margin: 4px 0 2px;
    font-size: clamp(1.8rem, 4vw, 3.8rem);
    line-height: .95;
    letter-spacing: -.06em;
}

.jm-live-topbar p,
.jm-live-footer span {
    margin: 0;
    color: rgba(255,255,255,.74);
}

.jm-live-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border-radius: 999px;
    padding: 7px 12px;
    background: rgba(255,255,255,.12);
    color: #fff;
    border: 1px solid rgba(255,255,255,.18);
    backdrop-filter: blur(12px);
    font-size: .85rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.jm-live-top-actions,
.jm-live-footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    justify-content: flex-end;
}

.jm-live-btn,
.jm-live-footer-links a,
.jm-live-footer-links button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    border: 0;
    border-radius: 999px;
    padding: 11px 16px;
    background: linear-gradient(135deg, #f97316, #ec4899);
    color: #fff;
    font-weight: 950;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 16px 32px rgba(236,72,153,.25);
}

.jm-live-btn--ghost,
.jm-live-footer-links a,
.jm-live-footer-links button {
    background: rgba(255,255,255,.11);
    border: 1px solid rgba(255,255,255,.18);
    box-shadow: none;
}

.jm-live-btn--secondary {
    background: rgba(255,255,255,.88);
    color: #111827;
    box-shadow: none;
}

.jm-live-stage {
    position: relative;
    z-index: 2;
    min-height: 0;
    display: grid;
    place-items: center;
    padding: 0 28px 8px;
}

.jm-live-empty {
    display: grid;
    justify-items: center;
    gap: 14px;
    text-align: center;
    width: min(620px, 92vw);
    padding: 38px;
    border-radius: 34px;
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.18);
    backdrop-filter: blur(18px);
}

.jm-live-empty img {
    width: 86px;
    height: 86px;
    object-fit: contain;
    filter: drop-shadow(0 18px 34px rgba(0,0,0,.35));
}

.jm-live-empty h2 {
    margin: 0;
    font-size: clamp(2rem, 6vw, 4rem);
    letter-spacing: -.06em;
}

.jm-live-empty p {
    margin: 0;
    color: rgba(255,255,255,.76);
    font-size: 1.1rem;
    line-height: 1.55;
}

.jm-live-media-wrap {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 56vh;
    display: grid;
    place-items: center;
}

.jm-live-media-wrap img,
.jm-live-media-wrap video {
    max-width: 100%;
    max-height: calc(100vh - 190px);
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 28px;
    box-shadow: 0 30px 90px rgba(0,0,0,.48);
    border: 1px solid rgba(255,255,255,.14);
    animation: jmLiveMediaIn .55s ease both;
}

@keyframes jmLiveMediaIn {
    from { opacity: 0; transform: scale(.985) translateY(8px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

.jm-live-caption {
    position: absolute;
    left: 50%;
    bottom: 24px;
    transform: translateX(-50%);
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 12px;
    width: min(900px, 88vw);
    padding: 14px 18px;
    border-radius: 999px;
    background: rgba(0,0,0,.56);
    color: #fff;
    backdrop-filter: blur(12px);
    text-align: center;
}

.jm-live-caption strong {
    color: #fed7aa;
}

.jm-live-caption span {
    color: rgba(255,255,255,.9);
}

.jm-live-footer {
    border-top: 1px solid rgba(255,255,255,.08);
}

.jm-live-footer strong {
    display: block;
    font-size: 1.2rem;
}

.jm-live-start-overlay[hidden] {
    display: none !important;
}

.jm-live-start-overlay {
    position: fixed;
    inset: 0;
    z-index: 50;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(3,7,18,.84);
    backdrop-filter: blur(18px);
}

.jm-live-start-card {
    display: grid;
    justify-items: center;
    gap: 14px;
    width: min(540px, 92vw);
    padding: 34px;
    border-radius: 34px;
    background: linear-gradient(135deg, rgba(255,255,255,.16), rgba(255,255,255,.08));
    border: 1px solid rgba(255,255,255,.18);
    color: #fff;
    text-align: center;
    box-shadow: 0 30px 80px rgba(0,0,0,.38);
}

.jm-live-start-card h1,
.jm-live-start-card h2 {
    margin: 0;
    font-size: clamp(2rem, 7vw, 3.4rem);
    line-height: .98;
    letter-spacing: -.06em;
}

.jm-live-start-card p,
.jm-live-start-card small {
    color: rgba(255,255,255,.76);
    line-height: 1.55;
}

.jm-event-live-link {
    background: linear-gradient(135deg, #f97316, #ec4899) !important;
    color: #fff !important;
    border-radius: 14px;
    padding: 10px 12px !important;
    font-weight: 950;
}

@media (max-width: 780px) {
    .jm-live-topbar,
    .jm-live-footer {
        display: grid;
        padding: 16px;
    }

    .jm-live-top-actions,
    .jm-live-footer-links {
        justify-content: stretch;
        display: grid;
        grid-template-columns: 1fr 1fr;
    }

    .jm-live-btn,
    .jm-live-footer-links a,
    .jm-live-footer-links button {
        width: 100%;
    }

    .jm-live-stage {
        padding: 0 12px;
    }

    .jm-live-media-wrap img,
    .jm-live-media-wrap video {
        max-height: calc(100vh - 250px);
        border-radius: 20px;
    }

    .jm-live-caption {
        bottom: 10px;
        border-radius: 18px;
    }
}


/* === Fix álbum lightbox fullscreen === */
.jm-lightbox.open,
.jm-lightbox.jm-lightbox--open {
    display: flex !important;
    z-index: 7000 !important;
}

.jm-lightbox .jm-lightbox-content {
    width: min(96vw, 1200px);
    height: min(94vh, 900px);
    display: grid;
    place-items: center;
}

.jm-lightbox .jm-lightbox-content img,
.jm-lightbox .jm-lightbox-content video {
    max-width: 100%;
    max-height: 94vh;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 18px;
    box-shadow: 0 24px 80px rgba(0,0,0,.45);
}

.jm-lightbox-close {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 7010;
    width: 54px;
    height: 54px;
    border: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.16);
    color: #fff;
    font-size: 34px;
    cursor: pointer;
}

/* === Access scan: búsqueda manual por familia === */
.jm-access-search-form {
    gap: 10px;
}

.jm-access-family-results {
    display: grid;
    gap: 10px;
    margin-top: 14px;
}

.jm-access-family-results a {
    display: grid;
    gap: 5px;
    padding: 14px;
    border-radius: 18px;
    background: #020617;
    color: #e5e7eb;
    text-decoration: none;
    border: 1px solid rgba(148,163,184,.28);
}

.jm-access-family-results a strong {
    color: #fff;
    font-size: 1.06rem;
}

.jm-access-family-results a span {
    color: #93c5fd;
    font-weight: 900;
}

.jm-access-family-results a small {
    color: #cbd5e1;
}

.jm-access-code-details {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid rgba(148,163,184,.22);
}

.jm-access-table-number {
    display: inline-flex;
    gap: 5px;
    align-items: center;
    margin-top: 8px !important;
    padding: 8px 10px;
    border-radius: 999px;
    background: #e0f2fe;
    color: #075985 !important;
    font-weight: 900;
}


/* === Misiones Fotográficas === */
.jm-photo-missions-hero {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
}

.jm-photo-missions-admin .jm-feature-list {
    display: grid;
    gap: 10px;
    margin: 0;
    padding-left: 18px;
}

.jm-momentos-missions-card {
    display: grid;
    gap: 14px;
    padding: 18px;
    border-radius: 28px;
    background:
        radial-gradient(circle at top left, color-mix(in srgb, var(--event-accent, #f97316) 28%, transparent), transparent 34%),
        linear-gradient(135deg, #fff7ed, #fffaf3);
    border: 1px solid color-mix(in srgb, var(--event-accent, #f97316) 32%, #fed7aa);
    box-shadow: 0 18px 42px rgba(17,24,39,.08);
}

.jm-mission-head h2 {
    margin: 0;
    color: #451a03;
}

.jm-mission-head p {
    margin: 6px 0 0;
    color: #7c3f10;
    line-height: 1.45;
}

.jm-mission-current {
    display: grid;
    gap: 7px;
    padding: 16px;
    border-radius: 22px;
    background:
        radial-gradient(circle at 15% 20%, rgba(255,255,255,.42), transparent 30%),
        linear-gradient(135deg, var(--event-accent, #f97316), color-mix(in srgb, var(--event-accent, #f97316) 68%, #ec4899));
    color: #fff;
    box-shadow: 0 18px 36px color-mix(in srgb, var(--event-accent, #f97316) 34%, transparent);
}

.jm-mission-current strong {
    font-size: 1.35rem;
    line-height: 1.1;
}

.jm-mission-current p {
    margin: 0;
    color: rgba(255,255,255,.9);
}

.jm-mission-current span {
    justify-self: start;
    display: inline-flex;
    padding: 7px 12px;
    border-radius: 999px;
    background: rgba(0,0,0,.24);
    font-weight: 950;
}

.jm-mission-next-list {
    display: grid;
    gap: 8px;
    padding: 14px;
    border-radius: 20px;
    background: rgba(255,255,255,.7);
    color: #7c3f10;
}

.jm-mission-next-list strong {
    color: #451a03;
}

.jm-mission-next-list span {
    padding: 8px 10px;
    border-radius: 14px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    font-weight: 800;
}

.jm-mission-select {
    display: grid;
    gap: 7px;
    padding: 12px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #7c3f10;
    font-weight: 900;
}

.jm-mission-select select {
    min-height: 46px;
    border-radius: 14px;
    border: 1px solid #fed7aa;
    background: #fff;
    color: #451a03;
    font-weight: 900;
    padding: 10px 12px;
}

/* Pantalla en vivo: banner de misión */
.jm-live-mission-banner {
    position: relative;
    z-index: 4;
    margin: 0 28px 12px;
    display: grid;
    gap: 6px;
    padding: 18px 22px;
    border-radius: 26px;
    background:
        radial-gradient(circle at top left, rgba(255,255,255,.24), transparent 38%),
        linear-gradient(135deg, rgba(249,115,22,.96), rgba(236,72,153,.94));
    border: 1px solid rgba(255,255,255,.20);
    color: #fff;
    box-shadow: 0 22px 48px rgba(236,72,153,.24);
}

.jm-live-mission-banner[hidden] {
    display: none !important;
}

.jm-live-mission-banner.is-results {
    background:
        radial-gradient(circle at top left, rgba(255,255,255,.22), transparent 36%),
        linear-gradient(135deg, rgba(34,197,94,.94), rgba(14,165,233,.92));
    box-shadow: 0 22px 48px rgba(14,165,233,.24);
}

.jm-live-mission-banner span {
    font-size: .82rem;
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: rgba(255,255,255,.84);
}

.jm-live-mission-banner strong {
    font-size: clamp(1.5rem, 4vw, 3rem);
    line-height: 1;
    letter-spacing: -.055em;
}

.jm-live-mission-banner p,
.jm-live-mission-banner em {
    margin: 0;
    color: rgba(255,255,255,.9);
    font-style: normal;
}

@media (max-width: 780px) {
    .jm-photo-missions-hero {
        display: grid;
    }

    .jm-live-mission-banner {
        margin: 0 14px 10px;
        border-radius: 20px;
        padding: 14px;
    }
}


/* === /pantalla fullscreen limpio: solo fotos/videos === */
body.jm-live-fullscreen-mode .jm-live-topbar,
body.jm-live-fullscreen-mode .jm-live-footer,
body.jm-live-fullscreen-mode .jm-live-start-overlay,
body.jm-live-fullscreen-mode .jm-live-empty a,
body.jm-live-screen-body:fullscreen .jm-live-topbar,
body.jm-live-screen-body:fullscreen .jm-live-footer,
html:fullscreen .jm-live-topbar,
html:fullscreen .jm-live-footer {
    display: none !important;
}

body.jm-live-fullscreen-mode .jm-live-screen,
html:fullscreen .jm-live-screen {
    grid-template-rows: 1fr !important;
}

body.jm-live-fullscreen-mode .jm-live-stage,
html:fullscreen .jm-live-stage {
    padding: 0 !important;
    min-height: 100vh !important;
}

body.jm-live-fullscreen-mode .jm-live-media-wrap,
html:fullscreen .jm-live-media-wrap {
    min-height: 100vh !important;
}

body.jm-live-fullscreen-mode .jm-live-media-wrap img,
body.jm-live-fullscreen-mode .jm-live-media-wrap video,
html:fullscreen .jm-live-media-wrap img,
html:fullscreen .jm-live-media-wrap video {
    width: 100vw !important;
    height: 100vh !important;
    max-width: 100vw !important;
    max-height: 100vh !important;
    object-fit: contain !important;
    border-radius: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
}

body.jm-live-fullscreen-mode .jm-live-caption,
html:fullscreen .jm-live-caption {
    bottom: 28px;
    max-width: 72vw;
    opacity: .82;
    font-size: .96rem;
}

body.jm-live-fullscreen-mode .jm-live-mission-banner,
html:fullscreen .jm-live-mission-banner {
    position: fixed !important;
    left: 50% !important;
    top: 24px !important;
    transform: translateX(-50%);
    z-index: 20;
    width: min(760px, 86vw);
    margin: 0 !important;
    padding: 12px 18px !important;
    border-radius: 999px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 10px;
    opacity: .9;
}

body.jm-live-fullscreen-mode .jm-live-mission-banner[hidden],
html:fullscreen .jm-live-mission-banner[hidden] {
    display: none !important;
}

body.jm-live-fullscreen-mode .jm-live-mission-banner p,
body.jm-live-fullscreen-mode .jm-live-mission-banner em,
html:fullscreen .jm-live-mission-banner p,
html:fullscreen .jm-live-mission-banner em {
    display: none !important;
}

body.jm-live-fullscreen-mode .jm-live-mission-banner strong,
html:fullscreen .jm-live-mission-banner strong {
    font-size: clamp(1rem, 2vw, 1.6rem) !important;
    letter-spacing: -.02em;
}

body.jm-live-fullscreen-mode .jm-live-mission-banner span,
html:fullscreen .jm-live-mission-banner span {
    font-size: .78rem !important;
}

/* === /admin/access_scan: registro dinámico de entradas === */
.jm-access-fast-entry {
    display: grid;
    gap: 12px;
    margin-top: 14px;
}

.jm-access-fast-entry h3 {
    margin: 0;
    color: #0f172a;
    font-size: 1.35rem;
}

.jm-access-fast-entry p {
    margin: 0;
    color: #475569 !important;
}

.jm-access-fast-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.jm-access-count-btn {
    width: 100%;
    min-height: 74px;
    border: 0;
    border-radius: 22px;
    background: linear-gradient(135deg, #0ea5e9, #2563eb);
    color: #fff;
    font-size: 2rem;
    font-weight: 950;
    box-shadow: 0 16px 34px rgba(37,99,235,.24);
}

.jm-access-count-btn:active {
    transform: scale(.97);
}

.jm-access-adjust-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin-top: 10px;
}

.jm-access-adjust-chip {
    min-height: 44px;
    border: 1px solid #bae6fd;
    border-radius: 999px;
    background: #f0f9ff;
    color: #075985;
    font-weight: 900;
}

.jm-access-adjust-chip.active {
    background: #075985;
    color: #fff;
    border-color: #075985;
}

@media (max-width: 420px) {
    .jm-access-fast-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .jm-access-count-btn {
        min-height: 68px;
    }
}


/* === /pantalla seguridad + scroll normal === */
.jm-live-screen-body {
    overflow: auto !important;
}

body.jm-live-fullscreen-mode,
html:fullscreen,
html:fullscreen body {
    overflow: hidden !important;
}

.jm-live-empty h2:empty,
.jm-live-empty p:empty {
    display: none !important;
}

.jm-video-source-select {
    display: grid;
    gap: 8px;
    width: 100%;
    padding: 12px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #7c3f10;
    font-weight: 900;
}

.jm-video-source-select select {
    width: 100%;
    min-height: 46px;
    border-radius: 14px;
    border: 1px solid #fed7aa;
    background: #fff;
    color: #451a03;
    font-weight: 900;
    padding: 10px 12px;
}


/* === Invitación: editor visual independiente del tema === */
.jm-inv-design-card {
    max-width: var(--jm-inv-card-width, 1080px) !important;
    background:
        linear-gradient(rgba(0,0,0,var(--jm-inv-overlay, .18)), rgba(0,0,0,var(--jm-inv-overlay, .18))),
        var(--jm-inv-card, #fffaf3) !important;
    color: var(--jm-inv-text, #451a03) !important;
    border-radius: var(--jm-inv-radius, 32px) !important;
    font-family: var(--jm-inv-font, Inter, ui-sans-serif, system-ui, sans-serif) !important;
    gap: var(--jm-inv-spacing, 22px) !important;
}

.jm-inv-design-card .jm-invitation-modern__content {
    text-align: var(--jm-inv-align, center) !important;
    color: var(--jm-inv-text, #451a03) !important;
    padding: var(--jm-inv-spacing, 22px) !important;
}

.jm-inv-design-card h1 {
    font-size: var(--jm-inv-title-size, 48px) !important;
    color: var(--jm-inv-text, #451a03) !important;
}

.jm-inv-design-card h2 {
    font-size: var(--jm-inv-subtitle-size, 26px) !important;
    color: var(--jm-inv-muted, #7c3f10) !important;
}

.jm-inv-design-card p,
.jm-inv-design-card span,
.jm-inv-design-card small,
.jm-inv-design-card .jm-live-preview-details span,
.jm-inv-design-card .jm-invitation-details-grid p {
    font-size: var(--jm-inv-body-size, 17px);
    color: var(--jm-inv-muted, #7c3f10);
}

.jm-inv-design-card .jm-invitation-modern__media img,
.jm-inv-design-card .jm-invitation-modern__placeholder {
    border-radius: var(--jm-inv-image-radius, 28px) !important;
    object-fit: var(--jm-inv-image-fit, cover) !important;
    object-position: var(--jm-inv-image-position, center center) !important;
}

.jm-inv-design-card .jm-btn,
.jm-inv-design-card .jm-public-action-card,
.jm-inv-design-card .jm-qr-popup-launch-card .jm-btn {
    background: var(--jm-inv-button, #f97316) !important;
    color: var(--jm-inv-button-text, #ffffff) !important;
    border-color: color-mix(in srgb, var(--jm-inv-button, #f97316) 70%, transparent) !important;
}

.jm-inv-design-layout-stack .jm-inv-design-card,
.jm-inv-design-layout-poster .jm-inv-design-card,
.jm-inv-design-layout-minimal .jm-inv-design-card {
    grid-template-columns: 1fr !important;
}

.jm-inv-design-layout-stack .jm-inv-design-card .jm-invitation-modern__media,
.jm-inv-design-layout-poster .jm-inv-design-card .jm-invitation-modern__media {
    min-height: 360px;
}

.jm-inv-design-layout-poster .jm-inv-design-card {
    width: min(760px, 96vw) !important;
}

.jm-inv-design-layout-minimal .jm-inv-design-card .jm-invitation-modern__media {
    display: none !important;
}

.jm-inv-design-layout-magazine .jm-inv-design-card {
    grid-template-columns: .82fr 1.18fr !important;
}

/* === Invitation Builder Pro === */
.jm-builder-design-card {
    border: 1px solid #fed7aa !important;
    background:
        radial-gradient(circle at top left, rgba(251, 146, 60, .16), transparent 32%),
        #fffaf3 !important;
}

.jm-design-tabs {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    padding: 8px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-design-tabs button {
    min-height: 40px;
    border: 0;
    border-radius: 14px;
    background: transparent;
    color: #7c2d12;
    font-weight: 900;
    cursor: pointer;
}

.jm-design-tabs button.active {
    background: #9a3412;
    color: #fff;
}

.jm-design-pane {
    display: none;
    gap: 12px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.jm-design-pane.active {
    display: grid;
}

.jm-design-pane label {
    display: grid;
    gap: 7px;
}

.jm-design-pane input[type="color"] {
    width: 100%;
    min-height: 46px;
    border-radius: 14px;
    padding: 4px;
    border: 1px solid #fed7aa;
    background: #fff;
}

.jm-design-pane input[type="range"] {
    width: 100%;
    accent-color: #9a3412;
}

.jm-design-pane .jm-check {
    grid-template-columns: auto 1fr;
}

@media (max-width: 900px) {
    .jm-design-tabs,
    .jm-design-pane.active {
        grid-template-columns: 1fr;
    }
}

/* === Pantalla en vivo: reto activo sin imágenes === */
.jm-live-mission-stage {
    display: grid;
    justify-items: center;
    align-content: center;
    gap: 14px;
    width: min(980px, 92vw);
    min-height: 58vh;
    padding: clamp(28px, 6vw, 72px);
    border-radius: 44px;
    text-align: center;
    background:
        radial-gradient(circle at top left, rgba(255,255,255,.25), transparent 35%),
        linear-gradient(135deg, rgba(249,115,22,.96), rgba(236,72,153,.92));
    color: #fff;
    box-shadow: 0 34px 100px rgba(236,72,153,.32);
    border: 1px solid rgba(255,255,255,.22);
}

.jm-live-mission-stage[hidden] {
    display: none !important;
}

.jm-live-mission-stage span {
    display: inline-flex;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(0,0,0,.22);
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: .12em;
}

.jm-live-mission-stage strong {
    font-size: clamp(2.4rem, 8vw, 6.5rem);
    line-height: .95;
    letter-spacing: -.07em;
}

.jm-live-mission-stage p {
    max-width: 760px;
    margin: 0;
    color: rgba(255,255,255,.9);
    font-size: clamp(1.15rem, 2vw, 1.7rem);
    line-height: 1.35;
}

.jm-live-mission-stage em {
    font-style: normal;
    color: rgba(255,255,255,.85);
    font-weight: 900;
}


/* === Builder más fácil de usar: presets, dispositivos y valores visibles === */
.jm-builder-helper-box {
    display: grid;
    gap: 4px;
    padding: 13px 14px;
    border-radius: 18px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #7c2d12;
}

.jm-builder-helper-box strong {
    color: #451a03;
}

.jm-builder-helper-box p {
    margin: 0;
    line-height: 1.4;
}

.jm-design-preset-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
}

.jm-design-preset-grid button,
.jm-preview-device-switch button {
    border: 1px solid #fed7aa;
    border-radius: 999px;
    background: #fff;
    color: #7c2d12;
    font-weight: 950;
    min-height: 38px;
    cursor: pointer;
}

.jm-design-preset-grid button.active,
.jm-preview-device-switch button.active {
    background: #9a3412;
    color: #fff;
    border-color: #9a3412;
}

.jm-design-pane label small[data-range-value-for] {
    justify-self: end;
    display: inline-flex;
    margin-top: -4px;
    padding: 4px 8px;
    border-radius: 999px;
    background: #ffedd5;
    color: #7c2d12;
    font-weight: 950;
}

.jm-builder-preview-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.jm-preview-device-switch {
    display: inline-flex;
    gap: 6px;
    padding: 5px;
    border-radius: 999px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-preview-device-switch button {
    min-height: 32px;
    padding: 6px 10px;
    font-size: .82rem;
}

.jm-builder-public-preview-shell {
    transition: max-width .2s ease;
    margin-inline: auto;
}

.jm-builder-public-preview-shell.preview-desktop {
    max-width: 100%;
}

.jm-builder-public-preview-shell.preview-tablet {
    max-width: 820px;
}

.jm-builder-public-preview-shell.preview-mobile {
    max-width: 420px;
}

.jm-builder-public-preview-shell.preview-mobile .jm-public-mode-tabs {
    display: grid;
    grid-template-columns: 1fr;
}

.jm-builder-design-card .jm-form {
    gap: 16px;
}

.jm-builder-live-block {
    border-left: 5px solid #fed7aa;
}

.jm-builder-live-block__top strong::before {
    content: "✦ ";
    color: #b45309;
}

@media (max-width: 980px) {
    .jm-design-preset-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .jm-builder-preview-toolbar {
        display: grid;
    }

    .jm-preview-device-switch {
        width: 100%;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Evita icono roto en pantalla cuando no hay imagen activa */
.jm-live-media-wrap[hidden] img,
.jm-live-media-wrap[hidden] video,
#liveImage[hidden],
#liveVideo[hidden] {
    display: none !important;
}


/* === /pantalla: evitar corte inferior en fullscreen === */
body.jm-live-fullscreen-mode .jm-live-media-wrap,
html:fullscreen .jm-live-media-wrap {
    padding: 2vh 2vw !important;
}

body.jm-live-fullscreen-mode .jm-live-media-wrap img,
body.jm-live-fullscreen-mode .jm-live-media-wrap video,
html:fullscreen .jm-live-media-wrap img,
html:fullscreen .jm-live-media-wrap video {
    width: auto !important;
    height: auto !important;
    max-width: 96vw !important;
    max-height: 96vh !important;
    object-fit: contain !important;
    object-position: center center !important;
}

body.jm-live-fullscreen-mode .jm-live-caption,
html:fullscreen .jm-live-caption {
    bottom: 14px !important;
    transform: translateX(-50%) scale(.94);
}


/* === Preview exacto del builder === */
.jm-builder-exact-preview-frame {
    width: 100%;
    min-height: 760px;
    border: 0;
    border-radius: 24px;
    background: #fff;
    box-shadow: inset 0 0 0 1px rgba(120,53,15,.12);
}

.jm-builder-preview-note {
    margin: 10px 0 0;
    font-size: .88rem;
    color: #7c3f10;
    line-height: 1.45;
}

.jm-builder-public-preview-shell.preview-tablet {
    max-width: 820px;
}

.jm-builder-public-preview-shell.preview-mobile {
    max-width: 430px;
}

.jm-builder-public-preview-shell.preview-mobile .jm-builder-exact-preview-frame {
    min-height: 780px;
}

.jm-block-library-card {
    background:
        radial-gradient(circle at top left, rgba(251,146,60,.14), transparent 32%),
        var(--jm-card) !important;
}

.jm-block-library-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.jm-block-library-grid form {
    margin: 0;
}

.jm-block-library-btn {
    width: 100%;
    min-height: 92px;
    display: grid;
    align-content: start;
    gap: 6px;
    text-align: left;
    border: 1px solid #fed7aa;
    border-radius: 18px;
    background: #fff7ed;
    color: #451a03;
    padding: 14px;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}

.jm-block-library-btn:hover {
    transform: translateY(-2px);
    background: #fff;
    box-shadow: 0 16px 34px rgba(120,53,15,.10);
}

.jm-block-library-btn strong {
    font-size: 1rem;
}

.jm-block-library-btn span {
    color: #7c3f10;
    line-height: 1.35;
    font-size: .9rem;
}

.jm-builder-advanced-add {
    margin-top: 12px;
    padding: 12px;
    border-radius: 16px;
    background: #fffaf3;
    border: 1px dashed #fed7aa;
}

.jm-builder-advanced-add summary {
    cursor: pointer;
    font-weight: 950;
    color: #7c2d12;
}

.jm-builder-live-block {
    background:
        linear-gradient(135deg, #fffaf3, #fff7ed);
    border: 1px solid #fed7aa !important;
    border-left: 6px solid #f97316 !important;
}

.jm-builder-live-block__top {
    gap: 10px;
}

.jm-drag-handle {
    border: 0;
    border-radius: 999px;
    background: #451a03;
    color: #fff;
    padding: 8px 11px;
    cursor: grab;
    font-weight: 950;
}

/* === Memories admin: retos separados === */
.jm-memory-missions-wrap {
    display: grid;
    gap: 16px;
}

.jm-memory-mission-list {
    display: grid;
    gap: 16px;
}

.jm-memory-mission-card {
    display: grid;
    gap: 14px;
    padding: 16px;
    border-radius: 20px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-memory-mission-card > .jm-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 980px) {
    .jm-block-library-grid,
    .jm-memory-mission-card > .jm-grid {
        grid-template-columns: 1fr;
    }

    .jm-builder-exact-preview-frame {
        min-height: 700px;
    }
}


/* === Invitación Builder: más controles visuales aplicados === */
.jm-inv-design-card {
    border-color: var(--jm-inv-border, #fed7aa) !important;
    border-width: var(--jm-inv-border-width, 1px) !important;
    box-shadow: var(--jm-inv-shadow, 0 18px 36px rgba(17,24,39,.18)) !important;
}

.jm-public-invitation-page.jm-inv-design-layout-split,
.jm-public-invitation-page.jm-inv-design-layout-stack,
.jm-public-invitation-page.jm-inv-design-layout-poster,
.jm-public-invitation-page.jm-inv-design-layout-minimal,
.jm-public-invitation-page.jm-inv-design-layout-magazine {
    background:
        radial-gradient(circle at top left, color-mix(in srgb, var(--jm-inv-button, #f97316) 12%, transparent), transparent 36%),
        var(--jm-inv-bg, #fff7ed) !important;
}

.jm-inv-design-card .jm-card,
.jm-inv-design-card .jm-card--soft,
.jm-inv-design-card .jm-public-action-card,
.jm-inv-design-card .jm-qr-popup-launch-card {
    background: var(--jm-inv-soft-card, #fff3e0) !important;
    border-color: var(--jm-inv-border, #fed7aa) !important;
    color: var(--jm-inv-details-text, #451a03) !important;
}

.jm-inv-design-card .jm-card--soft,
.jm-inv-design-card .jm-public-action-card {
    background: var(--jm-inv-soft-card, #fff3e0) !important;
}

.jm-inv-design-card .jm-badge,
.jm-inv-design-card .jm-countdown div,
.jm-inv-design-card .jm-public-action-card small,
.jm-inv-design-card .jm-live-preview-details div {
    background: var(--jm-inv-details-bg, #fff7ed) !important;
    border-color: var(--jm-inv-border, #fed7aa) !important;
    color: var(--jm-inv-details-text, #451a03) !important;
}

.jm-inv-design-card .jm-badge {
    background: var(--jm-inv-badge-bg, #fff3e0) !important;
    color: var(--jm-inv-badge-text, #7c2d12) !important;
}

.jm-inv-design-card .jm-live-preview-block,
.jm-inv-design-card .jm-custom-block,
.jm-inv-design-card .jm-invitation-block {
    background: var(--jm-inv-block-bg, #fffaf3) !important;
    color: var(--jm-inv-block-text, #451a03) !important;
    border-color: var(--jm-inv-border, #fed7aa) !important;
}

.jm-inv-design-card .jm-invitation-modern__media,
.jm-inv-design-card .jm-invitation-modern__media img,
.jm-inv-design-card .jm-invitation-modern__placeholder {
    min-height: var(--jm-inv-media-height, 520px) !important;
    max-height: var(--jm-inv-media-height, 520px);
}

.jm-inv-design-layout-stack .jm-inv-design-card .jm-invitation-modern__media,
.jm-inv-design-layout-poster .jm-inv-design-card .jm-invitation-modern__media {
    min-height: var(--jm-inv-media-height, 520px) !important;
}

/* Pantalla: empty más pequeño */
.jm-live-empty {
    width: min(360px, 78vw) !important;
    padding: 18px !important;
    border-radius: 22px !important;
}

.jm-live-empty img {
    width: 54px !important;
    height: 54px !important;
}

.jm-live-empty h2:empty {
    display: none !important;
}


/* === Plantillas adaptadas a configuración visual nueva === */
.jm-invitation-template-classic.jm-inv-design-card,
.jm-invitation-template-romantic.jm-inv-design-card,
.jm-invitation-template-elegant.jm-inv-design-card,
.jm-invitation-template-modern.jm-inv-design-card,
.jm-theme-card-classic.jm-inv-design-card,
.jm-theme-card-night.jm-inv-design-card,
.jm-theme-card-premium-neon.jm-inv-design-card {
    background: var(--jm-inv-card, #fffaf3) !important;
    color: var(--jm-inv-text, #451a03) !important;
    border-color: var(--jm-inv-border, #fed7aa) !important;
    box-shadow: var(--jm-inv-shadow, 0 18px 36px rgba(17,24,39,.18)) !important;
}

.jm-invitation-template-classic.jm-inv-design-card *,
.jm-invitation-template-romantic.jm-inv-design-card *,
.jm-invitation-template-elegant.jm-inv-design-card *,
.jm-invitation-template-modern.jm-inv-design-card *,
.jm-theme-card-classic.jm-inv-design-card *,
.jm-theme-card-night.jm-inv-design-card *,
.jm-theme-card-premium-neon.jm-inv-design-card * {
    border-color: var(--jm-inv-border, #fed7aa);
}

.jm-invitation-template-classic.jm-inv-design-card .jm-card--soft,
.jm-invitation-template-romantic.jm-inv-design-card .jm-card--soft,
.jm-invitation-template-elegant.jm-inv-design-card .jm-card--soft,
.jm-invitation-template-modern.jm-inv-design-card .jm-card--soft,
.jm-theme-card-classic.jm-inv-design-card .jm-card--soft,
.jm-theme-card-night.jm-inv-design-card .jm-card--soft,
.jm-theme-card-premium-neon.jm-inv-design-card .jm-card--soft {
    background: var(--jm-inv-soft-card, #fff3e0) !important;
    color: var(--jm-inv-details-text, #451a03) !important;
}

.jm-invitation-template-classic.jm-inv-design-card .jm-btn,
.jm-invitation-template-romantic.jm-inv-design-card .jm-btn,
.jm-invitation-template-elegant.jm-inv-design-card .jm-btn,
.jm-invitation-template-modern.jm-inv-design-card .jm-btn,
.jm-theme-card-classic.jm-inv-design-card .jm-btn,
.jm-theme-card-night.jm-inv-design-card .jm-btn,
.jm-theme-card-premium-neon.jm-inv-design-card .jm-btn {
    background: var(--jm-inv-button, #f97316) !important;
    color: var(--jm-inv-button-text, #fff) !important;
}


/* === Invitation Builder: opciones scrolleables + preview siempre visible === */
.jm-builder-split {
    width: min(100%, 1680px);
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(380px, 520px) minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}

.jm-builder-left {
    position: sticky;
    top: 86px;
    height: calc(100vh - 104px);
    min-height: 520px;
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 8px;
    scroll-behavior: smooth;
}

.jm-builder-left::-webkit-scrollbar {
    width: 8px;
}

.jm-builder-left::-webkit-scrollbar-thumb {
    background: #fed7aa;
    border-radius: 999px;
}

.jm-builder-left::-webkit-scrollbar-track {
    background: rgba(255,247,237,.65);
    border-radius: 999px;
}

.jm-builder-right {
    position: sticky;
    top: 86px;
    height: calc(100vh - 104px);
    min-height: 520px;
    overflow: hidden;
}

.jm-builder-preview-sticky {
    position: static !important;
    height: 100%;
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 10px;
}

.jm-builder-public-preview-shell {
    min-height: 0;
    height: 100%;
    display: grid;
}

.jm-builder-exact-preview-frame {
    height: 100% !important;
    min-height: 0 !important;
}

.jm-builder-split-head {
    width: min(100%, 1680px);
    margin: 0 auto 18px;
}

.jm-builder-left .jm-card {
    margin-bottom: 14px;
}

.jm-builder-left .jm-card:last-child {
    margin-bottom: 0;
}

.jm-builder-preview-note {
    display: none !important;
}

@media (max-width: 1180px) {
    .jm-builder-split {
        grid-template-columns: minmax(320px, 430px) minmax(0, 1fr);
    }
}

@media (max-width: 920px) {
    .jm-builder-split {
        display: grid;
        grid-template-columns: 1fr;
    }

    .jm-builder-left,
    .jm-builder-right {
        position: static;
        height: auto;
        min-height: 0;
        overflow: visible;
        padding-right: 0;
    }

    .jm-builder-preview-sticky {
        min-height: 680px;
    }

    .jm-builder-exact-preview-frame {
        min-height: 680px !important;
    }
}


/* === Builder: bloques preestablecidos y edición segura === */
.jm-builder-block-config {
    margin-top: 12px;
}

.jm-builder-edit-note,
.jm-builder-preset-note {
    padding: 11px 12px;
    border-radius: 14px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #7c2d12;
    font-weight: 800;
    line-height: 1.35;
}

.jm-builder-preset-note {
    background: #f8fafc;
    border-color: #e5e7eb;
    color: #475569;
}

.jm-block-media-preview {
    display: grid;
    gap: 8px;
    padding: 10px;
    border-radius: 16px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
}

.jm-block-media-preview img {
    width: 100%;
    max-height: 260px;
    object-fit: contain;
    border-radius: 14px;
    background: #fff;
}

.jm-block-media-preview small {
    color: #7c3f10;
    word-break: break-all;
}

.jm-inv-block-image {
    display: grid;
    justify-items: center;
    gap: 10px;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
}

.jm-inv-block-image img {
    width: 100%;
    max-height: var(--jm-inv-media-height, 520px);
    object-fit: contain;
    border-radius: var(--jm-inv-image-radius, 28px);
    border: var(--jm-inv-border-width, 1px) solid var(--jm-inv-border, #fed7aa);
    background: var(--jm-inv-soft-card, #fff3e0);
}

.jm-inv-block-image.is-empty {
    padding: 14px !important;
    background: var(--jm-inv-soft-card, #fff3e0) !important;
    border: 1px dashed var(--jm-inv-border, #fed7aa) !important;
}

.jm-inv-divider {
    height: 4px;
    width: min(360px, 78%);
    margin: 18px auto;
    border-radius: 999px;
    background: var(--jm-divider-color, var(--jm-inv-button, #f97316)) !important;
    box-shadow: 0 10px 24px color-mix(in srgb, var(--jm-divider-color, #f97316) 32%, transparent);
}

.jm-inv-block-button {
    display: grid;
    justify-items: center;
}


/* === Builder: preview temporal antes de guardar === */
.jm-preview-live-pill {
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border-radius: 999px;
    background: #ecfdf5;
    color: #166534;
    font-size: .78rem;
    font-weight: 950;
    border: 1px solid #bbf7d0;
}
