@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;1,600&family=Great+Vibes&display=swap');
:root{--wine:#8e2946;--rose:#c65774;--cream:#fff8f2;--ink:#35262c;--muted:#7d6f74;--line:#eadde0;--shadow:0 20px 60px rgba(83,34,50,.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:'DM Sans',sans-serif;color:var(--ink);background:#fffaf7}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.topbar{height:72px;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(100,50,60,.08);background:rgba(255,250,247,.9);backdrop-filter:blur(16px);position:relative;z-index:20}.topbar nav{display:flex;gap:20px;align-items:center}.brand{font-family:'Playfair Display';font-size:25px;font-weight:700;color:var(--wine)}.btn{border:0;border-radius:999px;background:var(--wine);color:#fff;padding:14px 24px;font-weight:700;cursor:pointer;box-shadow:0 8px 25px rgba(142,41,70,.18);display:inline-flex;align-items:center;justify-content:center}.btn.small{padding:10px 18px}.btn.ghost{background:transparent;border:1px solid #cfbfc3;color:var(--ink);box-shadow:none}.btn.full{width:100%}.landing{background:radial-gradient(circle at 90% 20%,#fde6e7,transparent 32%),#fffaf7}.hero{min-height:690px;max-width:1250px;margin:auto;padding:70px 32px;display:grid;grid-template-columns:1.08fr .92fr;align-items:center;gap:70px}.hero h1{font:600 clamp(48px,6vw,82px)/1.03 'Playfair Display';margin:18px 0}.hero h1 em{color:var(--wine)}.hero p{font-size:19px;line-height:1.7;color:var(--muted);max-width:650px}.pill,.eyebrow{display:inline-block;text-transform:uppercase;letter-spacing:.17em;font-size:12px;font-weight:700;color:var(--rose)}.actions{display:flex;gap:12px;margin-top:30px}.hero-card{height:500px;border-radius:50% 45% 48% 42%;background:linear-gradient(145deg,#f2c9cf,#f9e7e0);display:grid;place-items:center;position:relative;box-shadow:var(--shadow)}.mini-envelope{width:285px;height:190px;border-radius:8px;background:#fffdf7;box-shadow:0 30px 50px rgba(77,35,48,.18);display:grid;place-items:center;position:relative;transform:rotate(-4deg);font-family:'Great Vibes';font-size:36px}.mini-envelope:after,.mini-envelope:before{content:"";position:absolute;inset:auto 0 0;border-style:solid;border-width:95px 142px 0;border-color:#f4ebe2 transparent transparent}.mini-envelope b{position:absolute;z-index:2;bottom:52px;background:var(--wine);color:white;border-radius:50%;width:44px;height:44px;display:grid;place-items:center}.float-heart{position:absolute;color:var(--rose);font-size:35px;animation:float 3s ease-in-out infinite}.h1{top:12%;left:8%}.h2{right:8%;top:28%;animation-delay:.6s}.h3{bottom:12%;left:18%;animation-delay:1.3s}@keyframes float{50%{transform:translateY(-18px) rotate(8deg)}}.section{max-width:1180px;margin:auto;padding:80px 28px}.section-title{text-align:center;max-width:700px;margin:auto auto 45px}.section-title h2{font:600 42px 'Playfair Display'}.feature-grid,.cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.feature-grid article{background:white;padding:32px;border:1px solid var(--line);border-radius:22px;box-shadow:0 12px 35px rgba(80,40,50,.05)}.feature-grid article>b{font-size:30px;color:#dab3be}.feature-grid h3{font-family:'Playfair Display';font-size:25px}footer{text-align:center;padding:35px;color:var(--muted)}.auth-bg,.recipient-gate,.share-bg{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#f7dadd,transparent 45%),#fff9f5}.auth-card,.gate-card,.share-card{width:min(480px,100%);background:rgba(255,255,255,.93);border:1px solid #efdee2;border-radius:28px;padding:40px;box-shadow:var(--shadow)}.auth-card h1,.gate-card h1,.share-card h1{font:600 38px 'Playfair Display';margin-bottom:8px}.auth-card>p,.gate-card>p,.share-card>p{color:var(--muted);line-height:1.6}.auth-card label,.gate-card label,.builder-card label,.payment-card label{display:block;font-weight:600;margin:18px 0 7px}.auth-card input,.gate-card input,.builder-card input,.builder-card textarea,.builder-card select,.payment-card input,.payment-card select{width:100%;border:1px solid #dccdd1;background:white;border-radius:13px;padding:14px 15px;outline:none}.auth-card input:focus,.builder-card input:focus,.builder-card textarea:focus{border-color:var(--rose);box-shadow:0 0 0 4px rgba(198,87,116,.09)}.muted{color:var(--muted);font-size:13px}.center{text-align:center}.alert{padding:12px 14px;border-radius:12px}.alert.error{background:#fff0f0;color:#a53a46}.dashboard h1{font:600 48px 'Playfair Display';margin:5px 0}.dash-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:34px}.cards-grid{grid-template-columns:repeat(3,1fr)}.project-card{background:#fff;border-radius:20px;overflow:hidden;border:1px solid var(--line);box-shadow:0 12px 35px rgba(75,38,48,.06)}.project-cover{height:180px;background-size:cover;background-position:center;position:relative;display:grid;place-items:center}.project-cover.romantico{background-color:#f6d9dd}.project-cover.noche{background-color:#252139}.project-cover.pastel{background-color:#dfebf3}.project-cover.elegante{background-color:#e8e0d6}.cover-heart{font-size:56px;color:white;text-shadow:0 5px 20px rgba(0,0,0,.18)}.status{position:absolute;right:12px;top:12px;padding:7px 10px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.1em}.status.paid{background:#e6f7ef;color:#25714f}.status.demo{background:#fff4dd;color:#9a6619}.project-body{padding:20px}.project-body h3{font-family:'Playfair Display';font-size:23px;margin:8px 0}.project-body p,.project-body small{color:var(--muted)}.project-actions{display:flex;gap:14px;border-top:1px solid #eee2e5;padding-top:15px;margin-top:15px;font-size:13px;font-weight:700}.project-actions .accent{color:var(--wine)}.empty{text-align:center;padding:70px;border:1px dashed #d9c1c6;border-radius:24px}.empty-heart{font-size:70px;color:#deb5bf}.builder-bg{background:#f8f5f3}.builder-shell{max-width:1180px;margin:45px auto;padding:0 24px;display:grid;grid-template-columns:260px 1fr;gap:28px}.steps{position:sticky;top:25px;height:max-content}.step{display:flex;gap:13px;padding:14px;border-radius:14px;margin-bottom:8px;cursor:pointer}.step span{width:36px;height:36px;border-radius:50%;border:1px solid #ddcfd2;display:grid;place-items:center;font-weight:700}.step small{display:block;color:var(--muted);margin-top:4px}.step.active{background:white;box-shadow:0 8px 25px rgba(70,40,50,.06)}.step.active span{background:var(--wine);color:white;border-color:var(--wine)}.builder-card{background:white;border:1px solid #eee3e4;border-radius:26px;padding:clamp(25px,5vw,55px);box-shadow:0 14px 45px rgba(70,40,50,.05)}.builder-card h1{font:600 39px 'Playfair Display';margin:9px 0}.builder-card>form>.form-step>p{color:var(--muted)}.form-step{display:none}.form-step.active{display:block;animation:fade .35s ease}@keyframes fade{from{opacity:0;transform:translateY(9px)}}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-actions{display:flex;justify-content:space-between;margin-top:26px}.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.upload-box{min-height:130px;border:1.5px dashed #d8c4c9;border-radius:15px;display:flex!important;align-items:center;justify-content:center;flex-direction:column;position:relative;overflow:hidden;color:var(--muted);cursor:pointer}.upload-box input{display:none}.upload-box span{font-size:28px}.upload-box img{position:absolute;width:100%;height:100%;object-fit:cover}.thumb{width:140px;height:90px;object-fit:cover;border-radius:12px}.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.theme-grid label{margin:0}.theme-grid input{display:none}.theme-card{display:flex;min-height:125px;border:2px solid transparent;border-radius:18px;padding:22px;flex-direction:column;justify-content:end;cursor:pointer}.theme-card b{font-family:'Playfair Display';font-size:23px}.theme-card small{opacity:.75}.theme-card.romantico{background:linear-gradient(135deg,#f9d8dd,#fff1e8)}.theme-card.noche{background:linear-gradient(135deg,#272139,#54425a);color:white}.theme-card.pastel{background:linear-gradient(135deg,#dfe8ef,#f8e6f0)}.theme-card.elegante{background:linear-gradient(135deg,#e6ded3,#f8f3e9)}.theme-grid input:checked+.theme-card{border-color:var(--wine);box-shadow:0 0 0 3px rgba(142,41,70,.08)}.preview-note{display:flex;gap:14px;background:#fff6ec;border:1px solid #f3dfc9;padding:18px;border-radius:15px;margin-top:25px}.preview-note span{font-size:25px}.preview-note p{margin:4px 0;color:var(--muted)}.sealed{width:100px;height:100px;border-radius:50%;display:grid;place-items:center;margin:0 auto 26px;background:#f4dce0;color:var(--wine);font-size:42px;box-shadow:0 0 0 13px #fbf0f1}.gate-card{text-align:center}.gate-card label{text-align:left}.demo-ribbon{position:fixed;top:0;left:0;right:0;z-index:100;background:#2e2530;color:white;text-align:center;padding:9px;font-size:12px;letter-spacing:.08em}.demo-ribbon a{text-decoration:underline}.love-view{background:var(--theme-bg,#fff8f2);overflow-x:hidden}.theme-romantico{--theme-bg:#fff6f2;--theme-accent:#a12e4b;--theme-soft:#f1ced5}.theme-noche{--theme-bg:#191522;--theme-accent:#e7a8bb;--theme-soft:#3c2f46;color:#f9eef2}.theme-pastel{--theme-bg:#f2f6f7;--theme-accent:#866381;--theme-soft:#e6ddeb}.theme-elegante{--theme-bg:#f3efe7;--theme-accent:#795d46;--theme-soft:#dfd2c1}.scene{min-height:100vh;padding:90px 25px;display:grid;place-items:center;position:relative}.scene-cover{background:linear-gradient(145deg,var(--theme-soft),var(--theme-bg));background-size:cover;background-position:center;text-align:center;transition:.8s}.cover-content{max-width:800px;padding:35px}.script{font:400 55px 'Great Vibes';color:var(--theme-accent)}.cover-content h1{font:600 clamp(48px,8vw,92px)/1.02 'Playfair Display';margin:15px 0}.cover-content p{font-size:19px;opacity:.77}.cover-content small{display:block;margin-top:22px}.open-letter{margin-top:32px;background:var(--theme-accent);color:white;border:0;padding:16px 27px;border-radius:999px;font-weight:700;cursor:pointer;box-shadow:0 12px 30px rgba(50,20,30,.2);animation:pulse 2s infinite}.envelope-icon{margin-right:9px}@keyframes pulse{50%{transform:scale(1.045)}}.opened .cover-content{animation:zoomAway .8s forwards}@keyframes zoomAway{to{opacity:.2;transform:scale(1.08)}}.letter-content.hidden{display:none}.paper{max-width:800px;background:#fffdf7;color:#47363c;padding:clamp(35px,7vw,80px);border-radius:3px;box-shadow:0 25px 70px rgba(40,20,25,.12);position:relative;transform:rotate(-.4deg)}.tiny-heart{position:absolute;top:25px;right:32px;color:var(--theme-accent)}.script.big{font-size:48px}.message{font:400 19px/2 'Playfair Display';white-space:pre-wrap;min-height:160px}.signature{text-align:right;margin-top:35px}.date-scene{text-align:center;background:var(--theme-soft)}.date-big{font:600 clamp(48px,9vw,105px) 'Playfair Display';color:var(--theme-accent);margin:20px}.date-scene p{max-width:600px;line-height:1.7}.gallery-scene{text-align:center;display:block;padding-top:100px}.gallery-scene h2{font:600 45px 'Playfair Display'}.polaroids{max-width:980px;margin:70px auto;display:grid;grid-template-columns:repeat(3,1fr);gap:36px}.polaroid{background:white;color:#44363a;padding:12px 12px 35px;box-shadow:0 16px 35px rgba(30,20,24,.17);transform:rotate(-3deg)}.polaroid:nth-child(even){transform:rotate(4deg)}.polaroid img{width:100%;aspect-ratio:1/1;object-fit:cover}.polaroid figcaption{font:28px 'Great Vibes';margin-top:14px}.final-scene{text-align:center;background:linear-gradient(var(--theme-bg),var(--theme-soft))}.final-heart{font-size:80px;color:var(--theme-accent);animation:heartbeat 1.4s infinite}@keyframes heartbeat{50%{transform:scale(1.15)}}.final-scene h2{font:600 clamp(42px,7vw,74px) 'Playfair Display';max-width:850px}.replay{background:none;border:0;text-decoration:underline;cursor:pointer;color:inherit}.hearts-layer{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden}.hearts-layer span{position:absolute;bottom:-30px;color:var(--theme-accent);opacity:.18;animation:rise linear infinite}@keyframes rise{to{transform:translateY(-115vh) rotate(320deg)}}.music-btn{position:fixed;right:22px;bottom:22px;z-index:30;width:50px;height:50px;border-radius:50%;border:0;background:var(--theme-accent);color:white;font-size:20px;cursor:pointer}.checkout-bg{background:#fffaf7}.checkout-shell{max-width:1000px;margin:70px auto;padding:0 25px;display:grid;grid-template-columns:1fr 420px;gap:55px;align-items:center}.checkout-shell h1{font:600 52px 'Playfair Display';margin:12px 0}.checkout-shell>section>p{font-size:18px;line-height:1.7;color:var(--muted)}.benefits{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:27px}.benefits div{background:white;border:1px solid var(--line);padding:14px;border-radius:12px}.payment-card{background:white;border-radius:26px;padding:34px;border:1px solid var(--line);box-shadow:var(--shadow)}.price{display:flex;flex-direction:column;text-align:center;padding-bottom:20px;border-bottom:1px solid var(--line)}.price strong{font:600 55px 'Playfair Display';color:var(--wine)}.check{display:flex!important;align-items:flex-start;gap:10px}.check input{width:auto!important;margin-top:4px}.share-card{width:min(650px,100%);text-align:center}.success-icon{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#e4f5eb;color:#297450;font-size:32px}.share-link{display:flex;margin:25px 0}.share-link input{flex:1;padding:14px;border:1px solid var(--line);border-radius:12px 0 0 12px}.share-link button{border:0;background:var(--wine);color:white;padding:0 18px;border-radius:0 12px 12px 0;cursor:pointer}.qrcode{width:max-content;margin:28px auto;background:white;padding:12px}.qr-mini{background:white;padding:10px;margin:20px auto;width:max-content}.center-actions{justify-content:center}.share-bg .actions{margin-top:30px}
@media(max-width:800px){.topbar nav span{display:none}.topbar{padding:0 18px}.topbar nav{gap:10px}.hero{grid-template-columns:1fr;padding-top:35px}.hero-card{height:360px}.hero h1{font-size:50px}.feature-grid,.cards-grid{grid-template-columns:1fr}.dash-head{align-items:start;gap:20px}.dash-head .btn{display:none}.builder-shell{grid-template-columns:1fr;margin-top:18px}.steps{display:flex;position:static;overflow:auto}.step div{display:none}.step{padding:6px}.builder-card{padding:25px}.two-col,.theme-grid{grid-template-columns:1fr}.upload-grid{grid-template-columns:repeat(2,1fr)}.checkout-shell{grid-template-columns:1fr;margin-top:35px}.polaroids{grid-template-columns:1fr 1fr;gap:20px}.scene{min-height:95vh;padding:70px 20px}.script{font-size:42px}.paper{padding:45px 28px}.message{font-size:17px}.demo-ribbon{font-size:10px}.actions{flex-wrap:wrap}}
@media(max-width:480px){.hero{padding-left:20px;padding-right:20px}.hero h1{font-size:43px}.mini-envelope{width:230px;height:155px}.polaroids{grid-template-columns:1fr}.upload-grid{grid-template-columns:1fr 1fr}.auth-card,.gate-card,.share-card{padding:28px 22px}.checkout-shell h1{font-size:42px}.benefits{grid-template-columns:1fr}}
.switch-row{display:flex!important;align-items:center;gap:12px;padding:16px;border:1px solid var(--line);border-radius:15px}.switch-row input{width:20px!important;height:20px}.switch-row span{font-weight:700}
/* ===== Constructor v2: previews, listas, mapa y ruleta ===== */
.cover-preview{width:100%;height:220px;border:1.5px dashed #d8c4c9;border-radius:18px;overflow:hidden;display:grid;place-items:center;background:#fcf9f7;color:var(--muted);margin:10px 0 22px}.cover-preview img{width:100%;height:100%;object-fit:cover}.upload-box .upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:4px}.upload-box .upload-placeholder small{font-size:12px}.upload-preview{z-index:2}.music-panel{margin-top:26px;padding:22px;border:1px solid var(--line);border-radius:18px;background:#fdfaf8}.music-panel h3{margin-top:0;font-family:'Playfair Display';font-size:25px}.music-panel p{color:var(--muted);line-height:1.55}.youtube-preview{margin-top:12px}.youtube-preview iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:15px}.preview-error{padding:12px;border-radius:12px;background:#fff0f0;color:#9b3d49}.audio-preview{width:100%;margin-top:10px}.or-divider{display:flex;align-items:center;gap:12px;color:var(--muted);margin:18px 0}.or-divider:before,.or-divider:after{content:"";height:1px;background:var(--line);flex:1}.suggestion-chips{display:flex;flex-wrap:wrap;gap:9px;margin:20px 0}.chip{border:1px solid #e1cfd3;background:#fff;color:#694c55;border-radius:999px;padding:10px 14px;cursor:pointer}.chip:hover{border-color:var(--rose);background:#fff4f5}.inline-add{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin:18px 0}.inline-add input{margin:0}.editable-list{display:grid;gap:10px}.editable-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fffaf8}.editable-item input{border:0!important;background:transparent!important;box-shadow:none!important;padding:8px!important}.remove-item,.remove-roulette{border:0;background:none;font-size:25px;color:#9d858b;cursor:pointer}.coupon-edit>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#f6dce2;color:var(--wine);flex:0 0 auto}.map-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.map-frame{width:100%;height:360px;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#f5f1ef}.map-frame iframe{width:100%;height:100%;border:0}.roulette-editor{display:grid;gap:12px;margin:20px 0}.roulette-edit-row{border:1px solid var(--line);border-radius:17px;padding:12px;background:#fffaf8}.roulette-edit-row .row-title{display:flex;align-items:center;gap:9px}.roulette-edit-row input,.roulette-edit-row textarea{margin:0}.drag-dot{color:var(--rose)}.roulette-mini-preview{margin-top:18px;padding:25px;border-radius:18px;background:linear-gradient(145deg,#f6a358,#dc6322);color:white;text-align:center}.wheel-static{width:160px;height:160px;border-radius:50%;display:grid;place-items:center;margin:auto auto 10px;background:conic-gradient(#ffbd68 0 60deg,#ef8a46 60deg 120deg,#f29b55 120deg 180deg,#e97836 180deg 240deg,#f5a05c 240deg 300deg,#ec8240 300deg);border:8px solid rgba(255,255,255,.18);font:700 22px 'Playfair Display'}.switch-line{display:flex!important;align-items:center;gap:12px;padding:16px;border:1px solid var(--line);border-radius:15px}.switch-line input{width:20px!important;height:20px}.switch-line span{font-weight:700}

/* ===== Experiencia del destinatario v2 ===== */
.section-inner{width:min(1000px,100%);text-align:center}.section-inner h2,.final-question-card h2{font:600 clamp(40px,6vw,68px)/1.05 'Playfair Display';margin:18px auto 30px;max-width:900px}.cover-music-note{margin-top:14px;font-size:12px;opacity:.75}.love-things-scene{background:linear-gradient(145deg,var(--theme-bg),var(--theme-soft))}.love-tags{display:flex;flex-wrap:wrap;gap:15px;justify-content:center;max-width:900px;margin:auto}.love-tags span{padding:15px 20px;border-radius:999px;background:rgba(255,255,255,.72);box-shadow:0 10px 25px rgba(30,20,25,.08);font-family:'Playfair Display';font-size:19px;color:#4e3540}.map-love-scene{background:var(--theme-bg)}.place-name{font-size:18px;margin-top:-10px;margin-bottom:25px}.recipient-map{width:min(880px,100%);height:480px;margin:auto;border-radius:25px;overflow:hidden;box-shadow:0 24px 60px rgba(40,20,25,.14)}.recipient-map iframe{width:100%;height:100%;border:0}.plans-scene{background:var(--theme-soft)}.plans-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;text-align:left}.plans-grid article{display:flex;align-items:center;gap:18px;padding:20px;border-radius:18px;background:rgba(255,255,255,.72);box-shadow:0 10px 25px rgba(30,20,25,.06)}.plans-grid article>span{font:600 28px 'Playfair Display';color:var(--theme-accent)}.plans-grid p{margin:0;font-size:17px}.coupons-scene{background:linear-gradient(150deg,var(--theme-bg),var(--theme-soft))}.love-coupons{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;max-width:900px;margin:auto}.love-coupons article{padding:24px;border-radius:20px;background:rgba(255,255,255,.88);color:#4b3740;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;text-align:left;transition:.3s}.coupon-heart{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#fde5c5;color:#c95742;font-size:22px}.redeem-coupon{border:0;border-radius:999px;padding:10px 14px;background:#f3b15e;color:#7b4a19;font-weight:800;cursor:pointer;font-size:11px}.love-coupons article.redeemed{opacity:.68;transform:scale(.985)}.roulette-scene{background:linear-gradient(160deg,#e96b25,#e87d25);color:white;overflow:hidden}.roulette-scene .eyebrow{color:#ffd59c}.roulette-inner>p{margin-top:-15px;font-weight:700}.roulette-wrap{position:relative;width:min(420px,82vw);aspect-ratio:1;margin:30px auto}.love-wheel{position:absolute;inset:0;border-radius:50%;border:10px solid rgba(255,255,255,.2);background:repeating-conic-gradient(from -30deg,#f5a05b 0 calc((360deg/var(--count)) - 1deg),#ef8443 calc((360deg/var(--count)) - 1deg) calc(360deg/var(--count)));box-shadow:0 20px 40px rgba(111,46,12,.25);transition:transform 4s cubic-bezier(.15,.8,.12,1);overflow:hidden}

/*.wheel-label{position:absolute;left:50%;top:50%;width:42%;transform-origin:0 0;transform:rotate(calc((360deg / var(--count)) * var(--i) + (180deg / var(--count)))) translate(12%,-50%);font:600 15px 'Playfair Display';text-align:right;padding-right:12px}*/

/* =========================================================
   RULETA - TEXTO DE LAS OPCIONES
========================================================= */

.wheel-label {
    position: absolute;

    /*
     * El punto inicial es el centro exacto de la ruleta.
     */
    left: 50%;
    top: 50%;

    /*
     * Cada etiqueta dispone de un espacio limitado.
     * Así un texto largo no puede extenderse indefinidamente.
     */
    width: 31%;
    height: 23%;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 3px 5px;

    box-sizing: border-box;

    text-align: center;

    /*
     * Permitir varias líneas.
     */
    white-space: normal;

    overflow-wrap: break-word;
    word-break: normal;

    line-height: 1.08;

    font-weight: 800;

    /*
     * Coloca cada texto en el centro angular de su opción.
     */
    transform:
        translate(-50%, -50%)
        rotate(
            calc(
                (360deg / var(--count)) * var(--i)
                + (180deg / var(--count))
            )
        )
        translateY(-135%)
        rotate(
            calc(
                -1 * (
                    (360deg / var(--count)) * var(--i)
                    + (180deg / var(--count))
                )
            )
        );

    transform-origin: center center;

    z-index: 4;

    pointer-events: none;
}


/*
|--------------------------------------------------------------------------
| Contenedor interior
|--------------------------------------------------------------------------
*/

.wheel-label-text {

    width: 100%;

    max-height: 100%;

    display: -webkit-box;

    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;

    overflow: hidden;

    text-align: center;

    text-wrap: balance;

    text-shadow:
        0 1px 2px rgba(255,255,255,.35);

}


/*
|--------------------------------------------------------------------------
| Tamaño automático según longitud
|--------------------------------------------------------------------------
*/

.wheel-text-sm {
    font-size: clamp(12px, 2.5vw, 17px);
}

.wheel-text-md {
    font-size: clamp(11px, 2.2vw, 15px);
}

.wheel-text-lg {
    font-size: clamp(10px, 1.9vw, 13px);
}

.wheel-text-xl {
    font-size: clamp(9px, 1.65vw, 11px);
}



.wheel-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(#a9222f,#e47724);font-size:24px;color:#ffd670;box-shadow:0 0 0 4px rgba(255,255,255,.14)}.roulette-pointer{position:absolute;z-index:3;left:50%;top:-10px;transform:translateX(-50%);width:0;height:0;border-left:18px solid transparent;border-right:18px solid transparent;border-top:34px solid #ffd37f;filter:drop-shadow(0 4px 3px rgba(80,30,0,.25))}.spin-wheel{border:0;border-radius:999px;background:rgba(255,190,106,.75);color:#7c430f;padding:16px 54px;font-weight:800;letter-spacing:.18em;cursor:pointer}.spin-wheel:disabled{opacity:.65}.roulette-result{width:min(500px,100%);margin:22px auto 0;padding:18px 24px;border-radius:18px;background:rgba(255,255,255,.14);backdrop-filter:blur(8px)}.roulette-result strong{font:600 30px 'Playfair Display'}.roulette-result p{margin-bottom:0}.final-question-scene{background:var(--theme-bg)}.final-question-card{width:min(850px,100%);text-align:center;padding:50px 30px;border:1px solid rgba(120,70,80,.12);border-radius:30px;background:rgba(255,255,255,.65);box-shadow:0 20px 60px rgba(40,20,25,.08)}.question-buttons{display:flex;gap:12px;justify-content:center}.yes-celebration{position:relative;margin-top:30px}.yes-celebration>div:first-child{font-size:62px;color:var(--theme-accent);animation:heartbeat 1.2s infinite}.yes-celebration h3{font:600 30px 'Playfair Display'}.soft-hide{opacity:.35}.burst-heart{position:absolute;left:50%;top:40px;color:var(--theme-accent);font-size:22px;animation:burst 1.8s ease-out forwards}@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(260deg);opacity:0}}.yt-music-player{position:fixed;width:1px;height:1px;left:-9999px;bottom:0;opacity:.001;pointer-events:none}


@media (max-width: 600px) {

    .wheel-label {
        width: 30%;
        height: 24%;

        padding: 2px;

        transform:
            translate(-50%, -50%)
            rotate(
                calc(
                    (360deg / var(--count)) * var(--i)
                    + (180deg / var(--count))
                )
            )
            translateY(-130%)
            rotate(
                calc(
                    -1 * (
                        (360deg / var(--count)) * var(--i)
                        + (180deg / var(--count))
                    )
                )
            );
    }

    .wheel-text-sm {
        font-size: 12px;
    }

    .wheel-text-md {
        font-size: 10.5px;
    }

    .wheel-text-lg {
        font-size: 9.5px;
    }

    .wheel-text-xl {
        font-size: 8.5px;
    }

}




@media(max-width:800px){.inline-add{grid-template-columns:1fr}.map-frame{height:300px}.plans-grid,.love-coupons{grid-template-columns:1fr}.recipient-map{height:360px}.love-coupons article{grid-template-columns:auto 1fr}.love-coupons article .redeem-coupon{grid-column:1/-1}.wheel-label{font-size:12px}.section-inner h2,.final-question-card h2{font-size:40px}}

/* ===== Ajustes v3: mapa exacto, ruleta centrada y reproductor visible ===== */
.love-wheel{
  background:repeating-conic-gradient(
    from calc(-180deg / var(--count)),
    #f5a05b 0 calc((360deg / var(--count)) - 1deg),
    #ef8443 calc((360deg / var(--count)) - 1deg) calc(360deg / var(--count))
  );
}
.wheel-label{
  transform:rotate(calc((360deg / var(--count)) * var(--i))) translate(12%,-50%);
}
.music-floating{position:fixed;right:22px;bottom:22px;z-index:120;display:flex;align-items:center;gap:8px}
.music-view-btn{border:0;border-radius:999px;padding:10px 14px;background:rgba(255,255,255,.9);color:#5a3a44;box-shadow:0 8px 25px rgba(40,20,25,.15);font-weight:700;cursor:pointer}
.music-preview-panel{position:fixed;right:22px;bottom:82px;z-index:121;width:min(360px,calc(100vw - 32px));padding:16px;background:rgba(255,255,255,.96);color:#3f3035;border:1px solid rgba(90,50,60,.12);border-radius:18px;box-shadow:0 20px 55px rgba(40,20,25,.22)}
.music-preview-panel[hidden]{display:none}
.music-preview-panel iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:12px;margin-top:10px}
.music-preview-panel audio{width:100%;margin-top:12px}
.music-preview-panel small{display:block;margin-top:9px;color:#857078}
.music-close-btn{position:absolute;right:10px;top:8px;border:0;background:none;font-size:26px;cursor:pointer;color:#8e737b}
@media(max-width:600px){.music-floating{right:12px;bottom:12px}.music-preview-panel{right:12px;bottom:70px}.music-view-btn{display:none}}


/* ===== Ajustes v4: ruleta alineada + reemplazo de fotografías ===== */
/* Cada sector tiene su centro exactamente en el mismo ángulo que usa JS.
   Sector 0 = centro superior, justo debajo de la flecha. */
.love-wheel{
  background:repeating-conic-gradient(
    from calc(-180deg / var(--count)),
    #f5a05b 0 calc((360deg / var(--count)) - 1.25deg),
    rgba(255,255,255,.23) calc((360deg / var(--count)) - 1.25deg) calc(360deg / var(--count))
  );
}
.wheel-label{
  left:51%;
  top:50%;
  width:auto;
  min-width:76px;
  max-width:112px;
  padding:6px 8px;
  text-align:center;
  line-height:1.1;
  white-space:normal;
  transform-origin:center center;
  /* 0° = arriba; desplazamos hacia el interior del sector y luego
     deshacemos la rotación para que el texto siempre quede legible. */
  transform:
    translate(-50%,-50%)
    rotate(calc((360deg / var(--count)) * var(--i)))
    translateY(-138px)
    rotate(calc((360deg / var(--count)) * var(--i) * -1));
  z-index:2;
  pointer-events:none;
  text-shadow:0 1px 2px rgba(112,53,14,.22);
}
.roulette-pointer{
  top:-8px;
  border-left-width:19px;
  border-right-width:19px;
  border-top-width:36px;
  z-index:5;
}
.wheel-center{z-index:4}

/* El cuadro completo continúa siendo clicable después de elegir una foto. */
.upload-box{cursor:pointer;isolation:isolate}
.upload-box .upload-preview{z-index:1;pointer-events:none}
.upload-box .upload-placeholder{z-index:2;transition:.2s}
.upload-box.has-image .upload-placeholder{opacity:0}
.upload-box::after{
  content:'Cambiar foto';
  position:absolute;
  z-index:3;
  left:50%;
  bottom:10px;
  transform:translateX(-50%) translateY(6px);
  padding:7px 12px;
  border-radius:999px;
  background:rgba(35,24,28,.78);
  color:#fff;
  font-size:12px;
  font-weight:700;
  white-space:nowrap;
  opacity:0;
  transition:.2s;
  pointer-events:none;
}
.upload-box.has-image::after,
.upload-box:hover::after{opacity:1;transform:translateX(-50%) translateY(0)}
.upload-box.has-image{border-style:solid;border-color:#d8c4c9}

@media(max-width:600px){
  .wheel-label{
    min-width:58px;
    max-width:76px;
    font-size:11px;
    transform:
      translate(-50%,-50%)
      rotate(calc((360deg / var(--count)) * var(--i)))
      translateY(-31vw)
      rotate(calc((360deg / var(--count)) * var(--i) * -1));
  }
}

/* ===== Ajustes v5: portada resaltada, reproductor visible y respuesta de ruleta ===== */
.cover-heading-card{
  width:min(760px,100%);
  margin:0 auto 22px;
  padding:24px 28px;
  border-radius:24px;
  background:rgba(255,250,247,.84);
  border:1px solid rgba(255,255,255,.58);
  box-shadow:0 18px 50px rgba(45,18,26,.18);
  backdrop-filter:blur(12px);
}
.cover-heading-card .script{
  color:var(--theme-accent);
  text-shadow:none;
}
.cover-heading-card h1{
  color:var(--theme-accent);
  text-shadow:0 2px 0 rgba(255,255,255,.65);
}
.cover-heading-card p{
  color:#4d3740;
  opacity:1;
  font-weight:700;
}
.cover-media-card{
  width:min(560px,92vw);
  margin:18px auto 8px;
  padding:12px;
  border-radius:20px;
  background:rgba(18,14,16,.92);
  box-shadow:0 22px 55px rgba(35,14,20,.28);
}
.cover-media-label{
  display:block;
  color:#fff3e9;
  font-size:12px;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  text-align:left;
  padding:4px 5px 10px;
}
.cover-youtube-player{
  display:block;
  width:100%;
  aspect-ratio:16/9;
  border:0;
  border-radius:13px;
  background:#000;
}
.cover-audio-player{
  display:block;
  width:100%;
  margin:4px 0;
}
.roulette-answer-buttons{
  display:flex;
  justify-content:center;
  gap:12px;
  margin-top:18px;
}
.roulette-answer-buttons button{
  min-width:110px;
  border:1px solid rgba(255,255,255,.45);
  border-radius:999px;
  padding:11px 22px;
  background:rgba(255,255,255,.18);
  color:#fff;
  font-weight:800;
  cursor:pointer;
  transition:.2s;
}
.roulette-answer-buttons button:first-child{
  background:#ffd07c;
  color:#7b3d0c;
  border-color:#ffd07c;
}
.roulette-answer-buttons button:hover{transform:translateY(-1px)}
.roulette-answer-buttons button:disabled{opacity:.6;cursor:default;transform:none}
.roulette-answer-message{
  margin-top:14px;
  padding:11px 14px;
  border-radius:13px;
  background:rgba(255,255,255,.13);
  font-weight:700;
}
.qrcode{scroll-margin-top:30px}

@media(max-width:600px){
  .cover-content{padding:18px 8px}
  .cover-heading-card{padding:20px 16px;border-radius:20px}
  .cover-heading-card .script{font-size:42px}
  .cover-heading-card h1{font-size:clamp(42px,14vw,64px)}
  .cover-media-card{padding:8px;border-radius:16px}
  .roulette-answer-buttons{flex-direction:column}
  .roulette-answer-buttons button{width:100%}
}

/* ===== Ajustes v6: reproductor dentro de la fase Tu historia ===== */
.story-music-card{
  width:min(620px,100%);
  margin:22px auto 34px;
  padding:16px;
  border-radius:22px;
  background:rgba(31,20,24,.94);
  border:1px solid rgba(255,255,255,.13);
  box-shadow:0 20px 48px rgba(45,18,26,.22);
  color:#fff7f1;
  transform:none;
}
.story-music-heading{
  display:flex;
  align-items:center;
  gap:11px;
  padding:2px 4px 13px;
  text-align:left;
}
.story-music-heading>span{
  width:38px;
  height:38px;
  flex:0 0 38px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:rgba(255,255,255,.1);
  color:#ffd28b;
  font-size:20px;
}
.story-music-heading small{
  display:block;
  margin:0 0 2px;
  font-size:9px;
  font-weight:800;
  letter-spacing:.20em;
  color:#e8cfc5;
}
.story-music-heading h3{
  margin:0;
  font:600 24px 'Playfair Display';
  color:#fff;
}
.story-music-video{
  width:100%;
  aspect-ratio:16/9;
  overflow:hidden;
  border-radius:15px;
  background:#000;
}
.story-music-video iframe{
  display:block;
  width:100%;
  height:100%;
  border:0;
}
.story-audio-player{
  display:block;
  width:100%;
  margin:2px 0 0;
}
@media(max-width:600px){
  .story-music-card{margin:18px auto 28px;padding:10px;border-radius:17px}
  .story-music-heading{padding:3px 4px 10px}
  .story-music-heading h3{font-size:21px}
}


/* ===== v7: descripciones por foto + fases Premium ===== */
.photo-caption-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0}.photo-caption-item{padding:14px;border:1px solid #eadde0;border-radius:20px;background:rgba(255,255,255,.55)}.photo-caption-item .upload-box{width:100%;min-height:220px;margin:0}.photo-caption-label{margin-top:12px}.photo-caption-label input{margin-top:6px}.premium-step-nav{position:relative}.premium-step-nav::after{content:'★';margin-left:auto;color:#d79a47}.premium-form-step{border:1px solid rgba(212,159,77,.28);background:linear-gradient(180deg,rgba(255,250,239,.96),rgba(255,255,255,.98));border-radius:24px;padding:24px}.premium-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;background:#fff0c7;color:#8a5b15;font-size:11px;font-weight:900;letter-spacing:.12em}.premium-lock-card{text-align:center;margin:25px 0;padding:28px;border:1px dashed #d5a552;border-radius:24px;background:linear-gradient(135deg,#fff8e7,#fff)}.premium-lock-card>div{font-size:38px}.premium-repeat-list{display:grid;gap:12px;margin:18px 0}.premium-repeat-row{position:relative;display:grid;grid-template-columns:180px 1fr;gap:10px;padding:14px 48px 14px 14px;border:1px solid #eadde0;border-radius:16px;background:#fff}.premium-repeat-row textarea{grid-column:1/-1}.remove-premium-row{position:absolute;right:12px;top:12px;border:0;background:none;font-size:24px;cursor:pointer}.love-timeline{width:min(760px,100%);margin:35px auto}.love-timeline article{display:grid;grid-template-columns:42px 1fr;gap:18px;position:relative;padding-bottom:34px}.love-timeline article:not(:last-child)::before{content:'';position:absolute;left:20px;top:40px;bottom:0;width:2px;background:rgba(255,255,255,.35)}.timeline-dot{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#fff0d7;color:#b94d4d;z-index:1}.love-timeline time{font-size:12px;letter-spacing:.12em;opacity:.75}.love-timeline h3{font:600 30px 'Playfair Display';margin:4px 0 8px}.love-timeline p{margin:0}.open-when-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:min(900px,100%);margin:30px auto}.open-when-envelope{border:1px solid rgba(255,255,255,.28);border-radius:22px;padding:28px 16px;background:rgba(255,255,255,.12);color:inherit;cursor:pointer;transition:.25s}.open-when-envelope:hover{transform:translateY(-6px)}.open-when-envelope span{display:block;font-size:44px}.open-when-envelope strong,.open-when-envelope small{display:block}.open-when-envelope small{margin-top:8px;opacity:.7}.open-when-message{position:relative;width:min(680px,100%);margin:24px auto 0;padding:30px;border-radius:24px;background:#fff8ed;color:#5b3740;box-shadow:0 20px 60px rgba(0,0,0,.18)}.open-when-message>div{font-size:32px}.open-when-close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:28px;cursor:pointer}.love-countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;width:min(760px,100%);margin:30px auto}.love-countdown>div{padding:22px 10px;border-radius:20px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.24)}.love-countdown strong{display:block;font:700 48px 'Playfair Display'}.love-countdown span{font-size:11px;text-transform:uppercase;letter-spacing:.14em}.future-stars{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:min(900px,100%);margin:30px auto}.future-stars article{padding:24px;border-radius:22px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24)}.future-stars span{font-size:28px;color:#ffd783}.secret-envelope{display:flex;flex-direction:column;align-items:center;gap:10px;margin:30px auto;padding:32px 58px;border:1px solid rgba(255,255,255,.35);border-radius:26px;background:rgba(255,255,255,.12);color:inherit;cursor:pointer}.secret-envelope span{font-size:58px}.secret-reveal{width:min(720px,100%);margin:25px auto;padding:34px;border-radius:26px;background:#fff7ec;color:#5b3740;box-shadow:0 22px 70px rgba(0,0,0,.18)}.secret-reveal>div{font-size:35px}.secret-reveal p{white-space:normal;line-height:1.9}.premium-timeline-scene,.open-when-scene,.countdown-scene,.future-scene,.secret-scene{min-height:100vh;display:grid;place-items:center;text-align:center;padding:70px 22px}.premium-timeline-scene{background:linear-gradient(150deg,#713247,#a84c57);color:#fff}.open-when-scene{background:linear-gradient(150deg,#8a3347,#d06c72);color:#fff}.countdown-scene{background:linear-gradient(150deg,#2f2348,#65466f);color:#fff}.future-scene{background:linear-gradient(150deg,#17233f,#4b3765);color:#fff}.secret-scene{background:linear-gradient(150deg,#542638,#9a4251);color:#fff}
@media(max-width:700px){.photo-caption-grid{grid-template-columns:1fr}.premium-repeat-row{grid-template-columns:1fr;padding-right:44px}.open-when-grid,.future-stars{grid-template-columns:1fr}.love-countdown{grid-template-columns:repeat(2,1fr)}.love-countdown strong{font-size:38px}}

/* ===== v8: tipos de carta, más temas y nuevas experiencias Premium ===== */
.type-picker{max-width:1180px}.type-picker-head{text-align:center;max-width:760px;margin:0 auto 38px}.type-picker-head h1{font:600 clamp(38px,5vw,62px) 'Playfair Display';margin:8px 0 12px}.type-picker-head p{color:var(--muted);font-size:17px;line-height:1.7}.type-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.type-card{min-height:280px;padding:26px;border-radius:24px;border:1px solid #eadde0;background:#fff;box-shadow:0 12px 40px rgba(70,40,50,.06);transition:.25s;display:flex;flex-direction:column}.type-card:hover{transform:translateY(-6px);box-shadow:0 22px 55px rgba(70,40,50,.12)}.type-icon{font-size:42px}.type-card h2{font:600 25px 'Playfair Display';margin:18px 0 8px}.type-card p{color:var(--muted);line-height:1.55;flex:1}.type-card b{color:var(--wine)}.type-amor{background:linear-gradient(160deg,#fff,#fff0f1)}.type-amistad{background:linear-gradient(160deg,#fff,#eef8ff)}.type-cumpleanos{background:linear-gradient(160deg,#fff,#fff7dc)}.type-perdon{background:linear-gradient(160deg,#fff,#f0f8f2)}.type-bienvenida{background:linear-gradient(160deg,#fff,#f2edff)}
.expanded-themes{grid-template-columns:repeat(3,1fr)}.theme-card.aurora{background:linear-gradient(135deg,#9fe8df,#d3b7ff,#ffd0dc)}.theme-card.lavanda{background:linear-gradient(135deg,#d9c6ff,#f5e8ff)}.theme-card.jardin{background:linear-gradient(135deg,#cfe7ca,#fff1d5)}.theme-card.oceano{background:linear-gradient(135deg,#164d74,#65b7ca);color:#fff}.theme-card.dorado{background:linear-gradient(135deg,#5f4520,#d5ae64,#fff2c8)}.theme-card.atardecer{background:linear-gradient(135deg,#fb8d68,#f8c276,#8b4d77);color:#fff}.theme-card.confeti{background:linear-gradient(135deg,#fff2a6,#ffcada,#b9e9ff)}.theme-card.cielo{background:linear-gradient(135deg,#dff4ff,#f6fbff)}
.theme-aurora{--theme-bg:#e8f7f4;--theme-accent:#775195;--theme-soft:#bde9df}.theme-lavanda{--theme-bg:#f7f0ff;--theme-accent:#76589a;--theme-soft:#d9c6ee}.theme-jardin{--theme-bg:#f3faef;--theme-accent:#567447;--theme-soft:#cfe3c2}.theme-oceano{--theme-bg:#e7f7fb;--theme-accent:#12607e;--theme-soft:#9fdce7}.theme-dorado{--theme-bg:#fff9e8;--theme-accent:#8a6423;--theme-soft:#ead39a}.theme-atardecer{--theme-bg:#fff1ea;--theme-accent:#a44c54;--theme-soft:#f3ad89}.theme-confeti{--theme-bg:#fffdf3;--theme-accent:#a54b72;--theme-soft:#ffd7e6}.theme-cielo{--theme-bg:#f1faff;--theme-accent:#4d7192;--theme-soft:#cbe6f6}
.project-cover.aurora{background-color:#bde9df}.project-cover.lavanda{background-color:#d9c6ee}.project-cover.jardin{background-color:#cfe3c2}.project-cover.oceano{background-color:#65b7ca}.project-cover.dorado{background-color:#d5ae64}.project-cover.atardecer{background-color:#f09a76}.project-cover.confeti{background-color:#ffd7e6}.project-cover.cielo{background-color:#cbe6f6}
.card-type-pill{display:inline-flex;margin-top:10px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.72);font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--theme-accent)}
.premium-unlocked-box,.premium-locked-inline{margin:22px 0;padding:18px 20px;border-radius:18px}.premium-unlocked-box{background:linear-gradient(135deg,#fff5d9,#fff);border:1px solid #ead09d}.premium-unlocked-box span{font-weight:900;color:#8a5b15;letter-spacing:.08em}.premium-locked-inline{background:#faf6f1;border:1px dashed #d7c4b1;color:#7b6b61;text-align:center}.premium-photo-grid{background:#fffaf0;padding:16px;border-radius:22px;border:1px solid #f0dfb9}
.timeline-photo-pair{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:12px}.timeline-photo-box{min-height:150px;border:1.5px dashed #d5c5c9;border-radius:16px;position:relative;overflow:hidden;display:grid!important;place-items:center;cursor:pointer;color:var(--muted);margin:0!important}.timeline-photo-box input[type=file]{display:none}.timeline-photo-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.timeline-photo-box span{z-index:2}.timeline-photo-box.has-image span{opacity:0}.timeline-photo-box.has-image::after{content:'Cambiar foto';position:absolute;z-index:3;bottom:9px;left:50%;transform:translateX(-50%);background:rgba(25,20,22,.78);color:#fff;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:800}.timeline-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.timeline-photos img{width:100%;height:220px;object-fit:cover;border-radius:18px;box-shadow:0 12px 30px rgba(0,0,0,.18)}
.reasons-scene,.promises-scene,.quiz-scene,.future-letter-scene{min-height:100vh;display:grid;place-items:center;text-align:center;padding:70px 22px;color:#fff}.reasons-scene{background:linear-gradient(145deg,#8f2948,#d5677e)}.promises-scene{background:linear-gradient(145deg,#38495b,#6c7d8c)}.quiz-scene{background:linear-gradient(145deg,#5a3b78,#9c68aa)}.future-letter-scene{background:linear-gradient(145deg,#44352f,#84624e)}.reason-cards{width:min(900px,100%);display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:28px auto}.reason-card{min-height:190px;border:1px solid rgba(255,255,255,.3);border-radius:24px;background:rgba(255,255,255,.12);color:#fff;padding:22px;cursor:pointer;position:relative;overflow:hidden;perspective:700px}.reason-card span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:20px;transition:.5s;backface-visibility:hidden}.reason-front{font:600 24px 'Playfair Display'}.reason-front b{font-size:32px;margin-top:10px}.reason-back{transform:rotateY(180deg);font-size:18px;line-height:1.6;background:rgba(255,255,255,.12)}.reason-card.revealed .reason-front{transform:rotateY(180deg)}.reason-card.revealed .reason-back{transform:rotateY(360deg)}.promise-list{width:min(800px,100%);margin:30px auto;display:grid;gap:13px}.promise-list article{display:grid;grid-template-columns:58px 1fr;align-items:center;text-align:left;padding:18px 22px;border-radius:18px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22)}.promise-list article span{font:700 28px 'Playfair Display';opacity:.65}.promise-list article p{margin:0;font-size:17px}.quiz-list{width:min(800px,100%);display:grid;gap:18px;margin:30px auto}.quiz-card{padding:24px;border-radius:22px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.24)}.quiz-card h3{font:600 24px 'Playfair Display'}.quiz-card>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quiz-card button{border:1px solid rgba(255,255,255,.35);border-radius:14px;padding:13px;background:rgba(255,255,255,.1);color:#fff;cursor:pointer}.quiz-card button.answer-ok{background:#5e9f74}.quiz-card button.answer-no{background:#9b5962}.quiz-feedback{font-weight:800}.future-letter-paper{width:min(760px,100%);margin:28px auto;padding:42px;border-radius:10px;background:#fff8e9;color:#5f493f;text-align:left;font:400 20px/1.9 'Playfair Display';box-shadow:0 24px 70px rgba(0,0,0,.22);transform:rotate(-1deg)}
.type-amistad .cover-heading-card,.type-cumpleanos .cover-heading-card,.type-perdon .cover-heading-card,.type-bienvenida .cover-heading-card{border-color:rgba(255,255,255,.75)}
@media(max-width:1050px){.type-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.expanded-themes{grid-template-columns:1fr 1fr}.type-grid{grid-template-columns:1fr}.timeline-photo-pair,.timeline-photos,.quiz-card>div{grid-template-columns:1fr}.timeline-photos img{height:220px}.reason-cards{grid-template-columns:1fr}.future-letter-paper{padding:26px;font-size:18px}}


/* ===== V9: pagos manuales Yape / Plin ===== */
.manual-payment-shell{width:min(1040px,calc(100% - 32px));margin:48px auto 80px;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
.manual-payment-card,.payment-status-card,.admin-payment-card{background:#fff;border:1px solid rgba(75,38,55,.10);border-radius:28px;box-shadow:0 24px 70px rgba(84,39,58,.10);padding:28px}
.manual-payment-card h1{font-size:48px;margin:8px 0 10px}.payment-qr-box{width:min(330px,100%);aspect-ratio:1;margin:24px auto;background:#fff;border:1px dashed rgba(75,38,55,.25);border-radius:24px;padding:14px;display:grid;place-items:center;overflow:hidden}.payment-qr-box img{width:100%;height:100%;object-fit:contain;display:block}.qr-placeholder{text-align:center;padding:24px;display:grid;gap:8px;color:#70525e}.qr-placeholder span{font-family:monospace;background:#f7eef2;padding:8px;border-radius:9px;font-size:12px}.payment-number{text-align:center;padding:16px;border-radius:18px;background:#fff5f8;display:grid;gap:4px}.payment-number strong{font-size:30px;letter-spacing:2px}.payment-warning{margin-top:18px;padding:15px 16px;border-radius:16px;background:#fff9e8;line-height:1.5}.payment-card textarea{width:100%;resize:vertical}.payment-status-wrap{width:min(720px,calc(100% - 32px));margin:70px auto}.payment-status-card{text-align:center}.status-big{font-size:58px}.payment-summary{margin:28px 0;display:grid;grid-template-columns:repeat(2,1fr);gap:12px;text-align:left}.payment-summary>div{padding:15px;background:#faf7f8;border-radius:15px;display:grid;gap:4px}.payment-summary small{color:#90727e}.payment-summary strong{word-break:break-word}.admin-payments{max-width:1180px}.payment-filters{display:flex;flex-wrap:wrap;gap:9px;margin:24px 0}.payment-filters a{padding:9px 14px;border-radius:999px;background:#f5edf0;text-decoration:none;color:#684653}.payment-filters a.active{background:#6d3449;color:white}.admin-payment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.admin-payment-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.pay-method{font-weight:800}.payment-state{font-size:11px;font-weight:800;letter-spacing:1px;padding:7px 10px;border-radius:999px}.payment-state.pendiente{background:#fff3cd;color:#7d5b00}.payment-state.aprobado{background:#e4f7ea;color:#24683b}.payment-state.rechazado{background:#fde9e9;color:#9a3232}.admin-payment-data{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.admin-payment-data>div{background:#faf7f8;border-radius:14px;padding:12px;display:grid;gap:3px}.admin-payment-data small{color:#947683}.admin-payment-data span{font-size:12px;color:#80636f}.operation-code{font-size:20px;letter-spacing:1px}.admin-note{background:#fff9e8;border-radius:12px;padding:12px}.review-form{border-top:1px solid #eee;padding-top:16px}.review-actions{display:flex;gap:10px;flex-wrap:wrap}.btn-danger{background:#a53a47!important}.status.demo{font-size:10px}
@media(max-width:800px){.manual-payment-shell,.admin-payment-grid{grid-template-columns:1fr}.manual-payment-shell{margin-top:25px}.admin-payment-data{grid-template-columns:1fr}.payment-summary{grid-template-columns:1fr}.manual-payment-card h1{font-size:38px}}

/* ===== v10: fotografías completas, portada legible y centrado móvil ===== */
/* Las fotografías se muestran completas: nunca se recorta una cara para llenar el marco. */
.polaroid img,
.timeline-photos img,
.upload-box .upload-preview,
.timeline-photo-box .upload-preview,
.cover-preview img{
  object-fit:contain !important;
  object-position:center center !important;
  background:#f7f2ef;
}
.polaroid img{aspect-ratio:1/1;width:100%;height:auto;min-height:0}
.timeline-photos img{height:220px}
.upload-box .upload-preview,.timeline-photo-box .upload-preview{width:100%;height:100%}

/* Firma y aviso musical legibles incluso sobre temas/fotos muy intensos. */
.scene-cover .cover-content>small,
.cover-music-note{
  width:max-content;
  max-width:100%;
  margin-left:auto;
  margin-right:auto;
  padding:8px 14px;
  border-radius:999px;
  background:rgba(20,14,18,.72);
  color:#fff !important;
  font-weight:800;
  text-shadow:0 1px 3px rgba(0,0,0,.65);
  box-shadow:0 7px 22px rgba(0,0,0,.16);
}
.cover-music-note{margin-top:10px !important;font-size:12px;line-height:1.4}
.field-help{display:block;margin:5px 0 8px;color:var(--muted);font-weight:400}

@media(max-width:600px){
  .scene-cover{padding-left:14px !important;padding-right:14px !important}
  .cover-content{width:100%;max-width:100%;padding:22px 0 !important;margin:0 auto;box-sizing:border-box}
  .cover-heading-card{width:calc(100% - 8px);max-width:100%;margin-left:auto !important;margin-right:auto !important;box-sizing:border-box;padding-left:18px !important;padding-right:18px !important}
  .cover-heading-card .script{font-size:clamp(38px,12vw,52px)}
  .cover-heading-card h1{overflow-wrap:anywhere}
  .scene-cover .cover-content>small,.cover-music-note{width:auto;max-width:calc(100% - 18px)}
  .timeline-photos img{height:190px}
}

/* El QR completo es clicable/tocable. */
.qrcode{cursor:pointer;position:relative;border-radius:16px;transition:transform .2s ease,box-shadow .2s ease}
.qrcode:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.12)}
.qr-action-hint{font-size:12px;color:var(--muted);margin-top:-15px;margin-bottom:20px}

/* ===== v11: sobre sellado, portada separada, otro momento y stickers temáticos ===== */
.animation-option{display:flex!important;align-items:flex-start;gap:12px;padding:16px 18px;border:1px solid #eadde0;border-radius:16px;background:#fffafc;margin:18px 0!important}
.animation-option input{width:auto!important;margin:4px 0 0!important;accent-color:var(--wine)}
.animation-option span{display:grid;gap:4px}.animation-option small{color:var(--muted);font-weight:400;line-height:1.45}
.other-place-field{padding:16px;border-radius:15px;background:#fff8ef;border:1px dashed #e4cfae}.other-place-field[hidden]{display:none!important}

.scene-cover{background:radial-gradient(circle at 50% 25%,rgba(255,255,255,.45),transparent 34%),linear-gradient(145deg,var(--theme-soft),var(--theme-bg))!important;background-image:none!important;overflow:hidden;align-content:center}
.opening-experience{width:min(860px,100%);display:grid;justify-items:center;text-align:center;position:relative;z-index:3}
.sealed-envelope{position:relative;width:min(460px,82vw);aspect-ratio:1.55/1;filter:drop-shadow(0 28px 34px rgba(40,20,30,.22));perspective:1200px;transition:transform .55s ease,opacity .45s ease}
.envelope-back,.envelope-front,.envelope-flap,.envelope-letter-peek{position:absolute;inset:0;border-radius:12px}
.envelope-back{background:linear-gradient(145deg,#fffdf6,#efe1d1);border:1px solid rgba(100,65,55,.12)}
.envelope-front{z-index:3;overflow:hidden;clip-path:polygon(0 38%,50% 78%,100% 38%,100% 100%,0 100%);background:linear-gradient(160deg,#f6eadc,#fffaf1 56%,#ead8c6)}
.envelope-front:before,.envelope-front:after{content:"";position:absolute;bottom:0;width:72%;height:76%;background:rgba(255,255,255,.28)}
.envelope-front:before{left:-18%;transform:skewX(31deg)}.envelope-front:after{right:-18%;transform:skewX(-31deg)}
.envelope-flap{z-index:4;transform-origin:50% 0;clip-path:polygon(0 0,100% 0,50% 64%);background:linear-gradient(180deg,#fffaf0,#ead6c2);transition:transform .82s cubic-bezier(.2,.75,.2,1),z-index .1s .4s}
.envelope-letter-peek{z-index:2;left:8%;right:8%;top:12%;bottom:9%;width:auto;height:auto;background:#fffefa;border:1px solid rgba(120,80,65,.1);box-shadow:0 6px 18px rgba(50,30,30,.08);transition:transform .75s .35s ease}
.wax-seal{position:absolute;z-index:6;left:50%;top:48%;transform:translate(-50%,-50%);width:86px;height:86px;border-radius:50%;border:0;color:#fff;background:radial-gradient(circle at 34% 28%,#cf6680 0 12%,#9f2e4d 38%,#6f1933 100%);box-shadow:0 8px 18px rgba(85,25,45,.35),inset 0 0 0 5px rgba(255,255,255,.12),inset 0 0 0 8px rgba(75,15,35,.12);cursor:pointer;display:grid;place-items:center;align-content:center;gap:1px;transition:transform .25s ease,box-shadow .25s ease}
.wax-seal:hover{transform:translate(-50%,-50%) scale(1.06);box-shadow:0 12px 24px rgba(85,25,45,.42),inset 0 0 0 5px rgba(255,255,255,.12)}
.wax-seal span{font-size:28px;line-height:1}.wax-seal small{font-size:9px;text-transform:uppercase;letter-spacing:.13em;font-weight:800}
.opening-hint{margin:22px 0 0;font-weight:700;color:var(--theme-accent);opacity:.8;animation:hintPulse 2s ease-in-out infinite}@keyframes hintPulse{50%{opacity:.45;transform:translateY(2px)}}
.scene-cover.opening .envelope-flap,.scene-cover.opened .envelope-flap{transform:rotateX(178deg);z-index:1}
.scene-cover.opening .envelope-letter-peek,.scene-cover.opened .envelope-letter-peek{transform:translateY(-38%)}
.scene-cover.opening .wax-seal,.scene-cover.opened .wax-seal{transform:translate(-50%,-50%) scale(.25);opacity:0;pointer-events:none}
.scene-cover.opened .sealed-envelope{transform:translateY(-25px) scale(.88);opacity:0;position:absolute;pointer-events:none}
.scene-cover.opened .opening-hint{display:none}
.cover-reveal-card{width:min(720px,calc(100vw - 36px));padding:clamp(26px,5vw,48px);border-radius:28px;background:rgba(255,253,249,.93);border:1px solid rgba(110,70,80,.13);box-shadow:0 26px 70px rgba(55,30,38,.16);backdrop-filter:blur(15px);color:#3e2d34;opacity:0;transform:translateY(28px) scale(.96);transition:opacity .55s ease,transform .55s ease}
.cover-reveal-card.visible{opacity:1;transform:none}.cover-reveal-card[hidden]{display:none}
.cover-for{font-size:clamp(42px,7vw,66px)!important;display:block}.cover-reveal-card h1{font:600 clamp(40px,7vw,72px)/1.02 'Playfair Display';margin:10px auto 16px;color:var(--theme-accent);overflow-wrap:anywhere}
.cover-entry-message{font:600 clamp(18px,2.8vw,24px)/1.55 'Playfair Display';margin:0 auto 24px;max-width:600px;color:#533f47}
.revealed-cover-photo{width:100%;max-height:520px;margin:22px auto;border-radius:22px;background:#f4eee9;overflow:hidden;display:grid;place-items:center;border:1px solid rgba(100,70,70,.09)}
.revealed-cover-photo img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain;object-position:center;background:#f4eee9}
.cover-signature{display:block;width:max-content;max-width:100%;margin:17px auto 0;padding:8px 14px;border-radius:999px;background:rgba(20,14,18,.78);color:#fff!important;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.continue-letter-btn{margin-top:20px;border:0;border-radius:999px;padding:12px 20px;background:var(--theme-accent);color:#fff;font-weight:800;cursor:pointer;box-shadow:0 8px 22px rgba(50,30,40,.15)}
.scene-cover .cover-music-note{display:block;width:max-content;max-width:100%;margin:10px auto 0!important}

.phase-sticker{font-size:clamp(48px,8vw,78px);line-height:1;margin:0 auto 18px;width:max-content;max-width:100%;filter:drop-shadow(0 8px 10px rgba(50,30,35,.12));animation:stickerFloat 2.8s ease-in-out infinite;transform-origin:center}
.phase-sticker:nth-child(odd){animation-delay:.35s}.date-special-sticker{font-size:clamp(72px,12vw,118px);margin-bottom:22px;animation:hugBounce 2.3s ease-in-out infinite}.light-sticker{filter:drop-shadow(0 8px 12px rgba(255,255,255,.15))}
@keyframes stickerFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}
@keyframes hugBounce{0%,100%{transform:scale(1) translateY(0)}45%{transform:scale(1.08) translateY(-8px)}60%{transform:scale(1.04) translateY(-4px)}}

@media(max-width:600px){
  .scene-cover{padding:58px 12px!important;min-height:100svh}
  .sealed-envelope{width:min(390px,88vw)}
  .wax-seal{width:74px;height:74px}.wax-seal span{font-size:24px}
  .cover-reveal-card{width:calc(100vw - 24px);padding:26px 18px;border-radius:22px;margin:0 auto}
  .cover-reveal-card h1{font-size:clamp(38px,12vw,58px)}
  .cover-entry-message{font-size:18px;line-height:1.5}
  .revealed-cover-photo{max-height:430px;margin-top:18px}.revealed-cover-photo img{max-height:430px}
  .phase-sticker{font-size:54px}.date-special-sticker{font-size:78px}
}

/* ===== v12: apertura de carta más lenta, continua y narrativa ===== */
/*
   Secuencia aproximada:
   0.00s sello responde al toque
   0.42s sello se desprende / solapa empieza a abrir
   1.18s la hoja empieza a salir
   2.25s hoja y tarjeta final se enlazan visualmente
   2.85s el sobre se retira y aparece el contenido
   3.50s queda disponible el resto de la carta
*/
.scene-cover .opening-experience{min-height:min(760px,100svh);align-content:center;transition:padding .7s ease}

.sealed-envelope{
  transform-origin:50% 62%;
  will-change:transform,opacity,filter;
  transition:transform .8s cubic-bezier(.16,1,.3,1),opacity .7s ease,filter .7s ease;
}

.envelope-flap{
  transition:transform 1s cubic-bezier(.22,.61,.36,1),z-index .1s .62s!important;
  backface-visibility:hidden;
  will-change:transform;
}

.envelope-letter-peek{
  transform-origin:50% 100%;
  transition:transform 1.2s cubic-bezier(.16,1,.3,1),
             opacity .55s ease,
             box-shadow .8s ease!important;
  will-change:transform,opacity;
}

.wax-seal{
  will-change:transform,opacity,filter;
  transition:transform .38s cubic-bezier(.2,.8,.2,1),
             opacity .32s ease,
             filter .32s ease,
             box-shadow .32s ease!important;
}

.opening-hint{transition:opacity .35s ease,transform .35s ease}

/* Etapa 1: el sello responde como si se presionara antes de abrir. */
.scene-cover.stage-seal .wax-seal{
  animation:v12SealPress .42s cubic-bezier(.34,1.56,.64,1) both;
}
.scene-cover.stage-seal .opening-hint{
  opacity:0!important;
  transform:translateY(8px);
  animation:none!important;
}
@keyframes v12SealPress{
  0%{transform:translate(-50%,-50%) scale(1);filter:none}
  45%{transform:translate(-50%,-50%) scale(.88) rotate(-3deg);filter:brightness(.96)}
  75%{transform:translate(-50%,-50%) scale(1.05) rotate(2deg)}
  100%{transform:translate(-50%,-50%) scale(.96);filter:brightness(.98)}
}

/* Etapa 2: el sello se desprende y la solapa se abre con recorrido completo. */
.scene-cover.stage-flap .wax-seal,
.scene-cover.opened .wax-seal{
  transform:translate(-50%,-50%) scale(.34) rotate(8deg)!important;
  opacity:0;
  filter:blur(1px);
  pointer-events:none;
}
.scene-cover.stage-flap .envelope-flap,
.scene-cover.stage-letter .envelope-flap,
.scene-cover.stage-transfer .envelope-flap,
.scene-cover.opened .envelope-flap{
  transform:rotateX(178deg)!important;
  z-index:1!important;
}

/* Etapa 3: la hoja realmente parece salir de dentro del sobre. */
.scene-cover.stage-letter .envelope-letter-peek,
.scene-cover.stage-transfer .envelope-letter-peek{
  transform:translateY(-67%) scaleX(.96)!important;
  box-shadow:0 22px 42px rgba(50,30,30,.16);
}
.scene-cover.stage-letter .sealed-envelope{
  transform:translateY(18px) scale(.985);
}

/* Etapa 4: la hoja se acerca al tamaño/posición del contenido final. */
.scene-cover.stage-transfer .envelope-letter-peek{
  transform:translateY(-91%) scale(1.06)!important;
  opacity:.92;
  box-shadow:0 28px 60px rgba(50,30,30,.18);
}
.scene-cover.stage-transfer .sealed-envelope{
  transform:translateY(34px) scale(.96);
}

/* La tarjeta final nace desde la posición de la hoja, no como un elemento aparte. */
.cover-reveal-card{
  will-change:transform,opacity;
  transition:opacity .8s ease,transform .95s cubic-bezier(.16,1,.3,1),box-shadow .8s ease!important;
}
.cover-reveal-card.preparing{
  opacity:0!important;
  transform:translateY(86px) scale(.72)!important;
  box-shadow:0 12px 34px rgba(55,30,38,.08)!important;
}
.cover-reveal-card.visible{
  opacity:1!important;
  transform:translateY(0) scale(1)!important;
}

/* Etapa 5: el sobre se retira hacia abajo mientras la carta toma protagonismo. */
.scene-cover.opened .sealed-envelope{
  transform:translateY(105px) scale(.84)!important;
  opacity:0!important;
  filter:drop-shadow(0 8px 10px rgba(40,20,30,.05));
  position:absolute;
  pointer-events:none;
}
.scene-cover.opened .envelope-letter-peek{opacity:0}
.scene-cover.opened .opening-hint{display:none}

/* Una aparición ligeramente escalonada del contenido refuerza la sensación de despliegue. */
.cover-reveal-card.visible .cover-for{animation:v12ContentRise .62s .12s both}
.cover-reveal-card.visible h1{animation:v12ContentRise .65s .22s both}
.cover-reveal-card.visible .cover-entry-message{animation:v12ContentRise .68s .32s both}
.cover-reveal-card.visible .revealed-cover-photo{animation:v12ContentRise .75s .44s both}
.cover-reveal-card.visible .card-type-pill,
.cover-reveal-card.visible .cover-signature,
.cover-reveal-card.visible .cover-music-note,
.cover-reveal-card.visible .continue-letter-btn{animation:v12ContentRise .62s .56s both}
@keyframes v12ContentRise{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:translateY(0)}
}

/* Respeta la preferencia del sistema para personas sensibles al movimiento. */
@media (prefers-reduced-motion:reduce){
  .scene-cover .sealed-envelope,
  .scene-cover .envelope-flap,
  .scene-cover .envelope-letter-peek,
  .scene-cover .wax-seal,
  .scene-cover .cover-reveal-card{transition-duration:.15s!important;animation-duration:.15s!important}
  .cover-reveal-card.visible>*{animation-duration:.15s!important;animation-delay:0s!important}
}

@media(max-width:600px){
  .scene-cover .opening-experience{min-height:calc(100svh - 60px)}
  .scene-cover.stage-letter .envelope-letter-peek,
  .scene-cover.stage-transfer .envelope-letter-peek{transform:translateY(-61%) scaleX(.96)!important}
  .scene-cover.stage-transfer .envelope-letter-peek{transform:translateY(-82%) scale(1.03)!important}
  .cover-reveal-card.preparing{transform:translateY(66px) scale(.76)!important}
  .scene-cover.opened .sealed-envelope{transform:translateY(86px) scale(.82)!important}
}

/* ===== v13 · Cuenta de usuario y administración de usuarios ===== */
.account-page,.admin-users{max-width:1180px;margin:auto}
.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:22px 0}
.account-card{background:rgba(255,255,255,.92);border:1px solid rgba(120,70,90,.12);border-radius:24px;padding:24px;box-shadow:0 18px 46px rgba(70,35,50,.08)}
.account-card h2{margin-top:0}.account-card form{display:grid;gap:14px}.account-card label{display:grid;gap:7px;font-weight:700}.account-card input,.account-card select,.user-search input{width:100%;box-sizing:border-box}
.account-section-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.history-count{padding:8px 12px;border-radius:999px;background:rgba(120,70,90,.08);font-size:.9rem;font-weight:800}
.responsive-table{width:100%;overflow-x:auto;border-radius:18px}.account-table{width:100%;border-collapse:collapse;min-width:780px}.account-table th,.account-table td{text-align:left;padding:14px 12px;border-bottom:1px solid rgba(100,70,80,.10);vertical-align:middle}.account-table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:#7f6671}.account-table td small{display:block;margin-top:4px;color:#8c7b82}.account-table tbody tr:last-child td{border-bottom:0}
.user-search{display:flex;gap:10px;align-items:center;margin:18px 0 24px;max-width:650px}.user-search input{border:1px solid rgba(100,70,80,.18);border-radius:14px;padding:12px 14px;background:#fff}
.role-badge{display:inline-flex;padding:7px 10px;border-radius:999px;font-size:.72rem;font-weight:900;letter-spacing:.05em}.role-badge.admin{background:#fff0d5;color:#8a5a00}.role-badge.usuario{background:#eef4ff;color:#41618b}
.admin-users-table{min-width:900px}.narrow-admin{max-width:900px}.user-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.user-stat-grid>div{background:rgba(255,255,255,.88);border:1px solid rgba(120,70,90,.1);border-radius:18px;padding:17px}.user-stat-grid small{display:block;color:#8b747e;margin-bottom:5px}.user-stat-grid b{font-size:1.35rem}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.soft{border:0;border-top:1px solid rgba(100,70,80,.12);margin:8px 0}.empty.compact{padding:30px 16px}
.alert.success{background:#edf9f1;color:#286642;border:1px solid #cbead6}
@media(max-width:760px){.account-grid{grid-template-columns:1fr}.form-two{grid-template-columns:1fr}.user-stat-grid{grid-template-columns:1fr 1fr}.account-card{padding:18px}.account-section-head{align-items:flex-start;flex-direction:column}.user-search{align-items:stretch;flex-wrap:wrap}.user-search input{flex:1 1 100%}}
@media(max-width:430px){.user-stat-grid{grid-template-columns:1fr 1fr}.user-stat-grid b{font-size:1.08rem}}

/* ===== v14 · Navegación responsive para celulares =====
   En escritorio se conserva la barra horizontal. En pantallas pequeñas
   la marca ocupa su propia fila y las acciones se ordenan en una grilla,
   evitando que los botones sobresalgan del ancho del dispositivo. */
@media (max-width:800px){
  .topbar{
    height:auto;
    min-height:72px;
    padding:12px 16px 14px;
    flex-direction:column;
    align-items:stretch;
    justify-content:center;
    gap:10px;
  }
  .topbar .brand{
    align-self:center;
    text-align:center;
    font-size:23px;
    line-height:1.2;
    padding:2px 8px;
  }
  .topbar nav{
    width:100%;
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    align-items:stretch;
  }
  .topbar nav span{display:none}
  .topbar nav a{
    min-width:0;
    min-height:40px;
    padding:9px 8px;
    border:1px solid rgba(142,41,70,.12);
    border-radius:12px;
    background:rgba(255,255,255,.72);
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    font-size:12px;
    font-weight:700;
    line-height:1.2;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .topbar nav a:hover{
    background:#fff;
    border-color:rgba(142,41,70,.24);
  }
  .topbar nav .btn.small{
    width:100%;
    max-width:none;
    min-height:42px;
    padding:10px 12px;
    border:0;
    border-radius:12px;
    font-size:12px;
    white-space:normal;
    box-shadow:0 7px 18px rgba(142,41,70,.16);
  }
}

@media (max-width:560px){
  .topbar{
    padding:11px 12px 13px;
    gap:9px;
  }
  .topbar .brand{font-size:22px}
  .topbar nav{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
  }
  .topbar nav a{
    min-height:39px;
    padding:8px 7px;
    font-size:11.5px;
  }
  /* El botón principal de crear carta queda en una fila completa. */
  .topbar nav .btn.small{
    grid-column:1/-1;
    min-height:42px;
  }
  .section{padding-left:16px;padding-right:16px}
}

@media (max-width:360px){
  .topbar{padding-left:9px;padding-right:9px}
  .topbar nav{gap:6px}
  .topbar nav a{font-size:11px;padding:8px 5px}
}



/* v15 - Tarjetas e invitaciones */
.dash-create-actions{display:flex;gap:10px;flex-wrap:wrap}.btn-card{background:#6d4a7d}.tarjeta-editor{max-width:850px;margin:auto}.tarjeta-editor select,.tarjeta-editor input,.tarjeta-editor textarea,.rsvp input{width:100%;border:1px solid #dccdd1;background:#fff;border-radius:13px;padding:14px 15px;outline:none}.tarjeta-mini{height:180px;display:grid;place-items:center;background-size:cover;background-position:center;text-align:center;padding:20px}.tarjeta-mini b{font:600 28px 'Playfair Display';padding:8px 15px;border-radius:14px;background:rgba(255,255,255,.78)}.fondo-celebracion{background:linear-gradient(135deg,#f8d8e5,#f8e9bd)}.fondo-elegante{background:linear-gradient(135deg,#29252c,#aa916b);color:#fff}.fondo-romantico{background:linear-gradient(135deg,#f4c9d2,#fff1e9)}.fondo-solemne{background:linear-gradient(135deg,#e8e4dc,#b8b1a4)}.fondo-juvenil{background:linear-gradient(135deg,#c7e9ff,#e4c9ff,#ffe0ae)}.fondo-minimalista{background:linear-gradient(135deg,#fff,#ece8e3)}
.tarjeta-publica{min-height:100vh;margin:0;padding:45px 18px;background-attachment:fixed;background-size:cover;background-position:center}.tarjeta-publica[style*="--tarjeta-img"]{background-image:linear-gradient(rgba(25,20,25,.28),rgba(25,20,25,.28)),var(--tarjeta-img)}.tarjeta-wrap{width:min(760px,100%);margin:auto}
.tarjeta-hero,.tarjeta-panel{background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.55);box-shadow:0 20px 55px rgba(40,25,30,.15);padding:clamp(28px,6vw,58px);border-radius:28px;margin-bottom:20px;text-align:center}.tarjeta-hero h1{font:600 clamp(42px,8vw,72px)/1.05 'Playfair Display';margin:15px 0}.tarjeta-hero p,.tarjeta-desc2{line-height:1.8;color:#66565d}.tarjeta-tipo{display:inline-block;text-transform:uppercase;letter-spacing:.16em;font-weight:800;font-size:12px;color:var(--wine)}.evento-datos{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:25px}.evento-datos div{padding:17px 10px;background:#fff8f5;border-radius:16px}.evento-datos b,.evento-datos span{display:block}.evento-datos span{margin-top:7px;color:var(--muted)}.rsvp{text-align:left}.rsvp h2{font:600 38px 'Playfair Display';margin:8px 0}.rsvp label{display:block;font-weight:700;margin:15px 0 7px}.rsvp-options{display:flex;gap:12px;margin:18px 0}.rsvp-options label{flex:1;border:1px solid var(--line);border-radius:14px;padding:14px;margin:0}.rsvp-options input{width:auto;margin-right:7px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px}.users-table{width:100%;border-collapse:collapse;min-width:680px}.users-table th,.users-table td{padding:14px 16px;border-bottom:1px solid #eee;text-align:left}
@media(max-width:800px){.dash-create-actions{display:none}.evento-datos{grid-template-columns:1fr}.tarjeta-publica{padding:18px 10px}.tarjeta-hero,.tarjeta-panel{border-radius:20px;padding:28px 20px}.rsvp-options{flex-direction:column}.topbar nav .btn-card{grid-column:1/-1}}

/* v16: tarjetas temáticas */
.tarjeta-publica{min-height:100vh;position:relative;overflow-x:hidden;background-attachment:fixed}
.tarjeta-publica:before,.tarjeta-publica:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0}
.tarjeta-wrap{position:relative;z-index:1}
.tarjeta-hero{position:relative;overflow:hidden;min-height:430px;display:flex;flex-direction:column;justify-content:center}
.evento-decor{position:absolute;inset:0;pointer-events:none;opacity:.95}
.evento-decor:before,.evento-decor:after{position:absolute;font-size:clamp(70px,12vw,150px);filter:drop-shadow(0 10px 18px rgba(0,0,0,.12));animation:tarjetaFloat 4.5s ease-in-out infinite}
.evento-decor:before{left:4%;top:8%}.evento-decor:after{right:4%;bottom:6%;animation-delay:-2s}
.tipo-quince .evento-decor:before{content:"🌸"}.tipo-quince .evento-decor:after{content:"👗🌹"}
.tipo-boda .evento-decor:before{content:"💍"}.tipo-boda .evento-decor:after{content:"🌿💐"}
.tipo-cumple .evento-decor:before,.tipo-dieciocho .evento-decor:before{content:"🎈"}.tipo-cumple .evento-decor:after,.tipo-dieciocho .evento-decor:after{content:"🎂✨"}
.tipo-solemne .evento-decor:before{content:"🕯️"}.tipo-solemne .evento-decor:after{content:"🤍🕊️"}
.tipo-religiosa .evento-decor:before{content:"🕊️"}.tipo-religiosa .evento-decor:after{content:"🌿✨"}
.tipo-baby .evento-decor:before{content:"🧸"}.tipo-baby .evento-decor:after{content:"☁️🍼"}
.tipo-graduacion .evento-decor:before{content:"🎓"}.tipo-graduacion .evento-decor:after{content:"📜✨"}
.tipo-despedida .evento-decor:before{content:"🥂"}.tipo-despedida .evento-decor:after{content:"✨🎉"}
.tipo-evento .evento-decor:before{content:"✨"}.tipo-evento .evento-decor:after{content:"🎊"}
.tipo-quince{background-image:radial-gradient(circle at 20% 15%,rgba(255,192,203,.55),transparent 28%),linear-gradient(135deg,#fff1f6,#f8dbe8 48%,#fff8fb)}
.tipo-boda{background-image:radial-gradient(circle at 80% 15%,rgba(219,200,151,.38),transparent 30%),linear-gradient(135deg,#fffdf7,#f3eee2,#f8fbf4)}
.tipo-solemne{background-image:linear-gradient(135deg,#f7f7f5,#e8e7e2,#fafafa)}
.tipo-baby{background-image:linear-gradient(135deg,#eef8ff,#fff1f7,#fff)}
.tipo-graduacion{background-image:linear-gradient(135deg,#f7f2df,#fff,#ece8d7)}
.tarjeta-protagonista{width:min(280px,38%);max-height:350px;object-fit:contain;align-self:flex-end;margin:12px 4% 8px auto;border-radius:28px;filter:drop-shadow(0 18px 28px rgba(0,0,0,.18));position:relative;z-index:2}
.evento-datos{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.demo-private-note{max-width:760px;margin:20px auto;padding:14px 18px;border-radius:16px;background:rgba(255,255,255,.88);text-align:center;font-weight:700;box-shadow:0 8px 25px rgba(0,0,0,.08)}
@keyframes tarjetaFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
@media(max-width:600px){.tarjeta-hero{min-height:390px}.evento-datos{grid-template-columns:1fr!important}.tarjeta-protagonista{width:min(220px,62%);max-height:250px;margin:8px auto}.evento-decor:before,.evento-decor:after{font-size:64px;opacity:.72}}

/* v17: invitaciones con composición editorial y fondo real */
.tarjeta-publica.has-custom-bg{
  background-image:linear-gradient(rgba(255,255,255,.12),rgba(255,255,255,.12)),var(--tarjeta-img)!important;
  background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important;
}
.tarjeta-publica.has-custom-bg:before{background:rgba(255,255,255,.08)}
.tarjeta-hero,.tarjeta-panel{position:relative;isolation:isolate}
.evento-decor{z-index:-1;opacity:.22!important;overflow:hidden}
.evento-decor:before,.evento-decor:after{z-index:-1!important;filter:blur(.2px) drop-shadow(0 8px 16px rgba(0,0,0,.08))!important}
.tarjeta-hero>h1,.tarjeta-hero>p,.tarjeta-hero>.tarjeta-protagonista{position:relative;z-index:3}
.tarjeta-hero h1{max-width:92%;margin-left:auto;margin-right:auto}
.tarjeta-hero p{max-width:620px;margin-left:auto;margin-right:auto}
.tipo-quince .tarjeta-hero{background:linear-gradient(180deg,rgba(255,250,253,.94),rgba(255,244,249,.90));border-color:rgba(226,151,184,.34)}
.tipo-boda .tarjeta-hero{background:linear-gradient(180deg,rgba(255,255,252,.95),rgba(250,248,240,.91));border-color:rgba(178,163,122,.30)}
.tipo-cumple .tarjeta-hero,.tipo-dieciocho .tarjeta-hero{background:linear-gradient(180deg,rgba(255,253,247,.94),rgba(255,247,237,.90))}
.tipo-solemne .tarjeta-hero{background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(244,244,241,.93))}
.tipo-religiosa .tarjeta-hero{background:linear-gradient(180deg,rgba(255,255,252,.96),rgba(245,249,244,.92))}
.tipo-baby .tarjeta-hero{background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(244,250,255,.91))}
.tipo-graduacion .tarjeta-hero{background:linear-gradient(180deg,rgba(255,254,249,.95),rgba(247,243,228,.91))}
.tipo-quince .evento-decor:before{content:"🌸"}.tipo-quince .evento-decor:after{content:"🌹 ✨ 🌸"}
.tipo-boda .evento-decor:before{content:"🌿 💍"}.tipo-boda .evento-decor:after{content:"💐 🌿"}
.tarjeta-protagonista{align-self:center!important;margin:18px auto!important;width:min(310px,72%)!important;max-height:390px!important;border-radius:50%!important;aspect-ratio:1/1;object-fit:cover!important;border:8px solid rgba(255,255,255,.88);box-shadow:0 15px 38px rgba(50,35,40,.18);filter:none!important}
@media(max-width:600px){.evento-decor{opacity:.15!important}.tarjeta-protagonista{width:min(235px,75%)!important;max-height:235px!important}.tarjeta-hero h1{font-size:clamp(38px,12vw,58px)}}

/* v18: la imagen subida es el fondo REAL de la invitación, no solo del body */
.tarjeta-publica.has-custom-bg{
  background-image:var(--tarjeta-img)!important;
  background-size:cover!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  background-attachment:fixed!important;
}
.tarjeta-publica.has-custom-bg .tarjeta-wrap{
  position:relative;
  overflow:hidden;
  border-radius:32px;
  padding:18px;
  background-image:linear-gradient(rgba(255,255,255,.18),rgba(255,255,255,.18)),var(--tarjeta-img)!important;
  background-size:cover!important;
  background-position:center!important;
  background-repeat:no-repeat!important;
  box-shadow:0 24px 70px rgba(30,20,25,.22);
}
.tarjeta-publica.has-custom-bg .tarjeta-hero,
.tarjeta-publica.has-custom-bg .tarjeta-panel{
  background:rgba(255,255,255,.72)!important;
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
.tarjeta-publica.has-custom-bg .tarjeta-hero{
  min-height:520px;
}
.tarjeta-publica.has-custom-bg .evento-decor{
  opacity:.13!important;
}
@media(max-width:600px){
  .tarjeta-publica.has-custom-bg .tarjeta-wrap{padding:9px;border-radius:22px}
  .tarjeta-publica.has-custom-bg .tarjeta-hero{min-height:470px}
  .tarjeta-publica.has-custom-bg .tarjeta-hero,
  .tarjeta-publica.has-custom-bg .tarjeta-panel{background:rgba(255,255,255,.68)!important}
}


/* v19: fondo personalizado ocupa TODO el viewport; sin contenedor exterior blanco */
body.tarjeta-publica.has-custom-bg{
  min-height:100vh!important;
  width:100%!important;
  margin:0!important;
  background-color:#222!important;
  background-image:linear-gradient(rgba(20,16,18,.10),rgba(20,16,18,.10)),var(--tarjeta-img)!important;
  background-size:cover!important;
  background-position:center center!important;
  background-repeat:no-repeat!important;
  background-attachment:fixed!important;
}
body.tarjeta-publica.has-custom-bg::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(0,0,0,.06))!important;
}
body.tarjeta-publica.has-custom-bg .tarjeta-wrap{
  width:min(760px,calc(100% - 24px))!important;
  margin:0 auto!important;
  padding:0!important;
  border-radius:0!important;
  overflow:visible!important;
  background:none!important;
  background-image:none!important;
  box-shadow:none!important;
}
body.tarjeta-publica.has-custom-bg .tarjeta-hero,
body.tarjeta-publica.has-custom-bg .tarjeta-panel{
  background:rgba(255,255,255,.82)!important;
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
}
@media(max-width:600px){
  body.tarjeta-publica.has-custom-bg{padding:12px 0!important;background-attachment:scroll!important}
  body.tarjeta-publica.has-custom-bg .tarjeta-wrap{width:calc(100% - 18px)!important}
}


/* v20: invitación tipo diseño impreso + fondo nítido sin deformar + decoración lateral */
body.tarjeta-publica{
  --rail-bg:linear-gradient(135deg,#fff7f2,#f7edf2);
  --rail-ink:#8f5367;
  background:var(--rail-bg)!important;
}
body.tarjeta-publica.tipo-cumple,body.tarjeta-publica.tipo-dieciocho{--rail-bg:linear-gradient(135deg,#083f63,#0c6380 48%,#103b5c);--rail-ink:#ffd45c}
body.tarjeta-publica.tipo-quince{--rail-bg:linear-gradient(135deg,#f8e8f5,#efdafa 48%,#f9edf5);--rail-ink:#b967b3}
body.tarjeta-publica.tipo-boda{--rail-bg:linear-gradient(135deg,#f8f5eb,#e8efe2 48%,#fffaf4);--rail-ink:#9a8454}
body.tarjeta-publica.tipo-baby{--rail-bg:linear-gradient(135deg,#eaf6ff,#fff0f7);--rail-ink:#77a7c8}
body.tarjeta-publica.tipo-graduacion{--rail-bg:linear-gradient(135deg,#1e2430,#5c4b28);--rail-ink:#e2bd62}
body.tarjeta-publica.tipo-solemne{--rail-bg:linear-gradient(135deg,#ecece8,#c9c9c3);--rail-ink:#77776f}
body.tarjeta-publica.tipo-religiosa{--rail-bg:linear-gradient(135deg,#f5f2e8,#e5eee4);--rail-ink:#9c956c}

/* La imagen personalizada se muestra completa: nunca se estira ni se desenfoca con cover. */
body.tarjeta-publica.has-custom-bg{
  background:var(--rail-bg)!important;
  background-image:var(--rail-bg)!important;
  background-attachment:scroll!important;
}
body.tarjeta-publica.has-custom-bg::before{
  content:""!important;
  position:fixed!important;
  top:0!important;bottom:0!important;
  left:50%!important;
  width:min(760px,100vw)!important;
  transform:translateX(-50%)!important;
  z-index:0!important;
  pointer-events:none!important;
  background-color:transparent!important;
  background-image:var(--tarjeta-img)!important;
  background-size:contain!important;
  background-position:center top!important;
  background-repeat:no-repeat!important;
  filter:none!important;
  opacity:1!important;
}
body.tarjeta-publica.has-custom-bg::after{display:none!important}
body.tarjeta-publica .tarjeta-wrap{position:relative;z-index:3;width:min(700px,calc(100% - 28px));padding:24px 0 60px!important}

/* Tarjeta más parecida a una invitación diseñada: una composición continua. */
body.tarjeta-publica .tarjeta-hero,
body.tarjeta-publica .tarjeta-panel{
  border-radius:0!important;
  margin:0!important;
  box-shadow:none!important;
  border:0!important;
  background:rgba(255,255,255,.80)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
body.tarjeta-publica .tarjeta-hero{padding:56px 48px 34px!important;min-height:500px}
body.tarjeta-publica .tarjeta-panel{padding:30px 48px 42px!important}

/*body.tarjeta-publica .tarjeta-hero:first-of-type{border-radius:34px 34px 0 0!important}*/

body.tarjeta-publica .tarjeta-panel:last-child{border-radius:0 0 34px 34px!important}


body.tarjeta-publica.has-custom-bg .tarjeta-hero,
body.tarjeta-publica.has-custom-bg .tarjeta-panel{background:rgba(255,255,255,.64)!important}
body.tarjeta-publica .tarjeta-protagonista{width:min(330px,76%)!important;max-height:330px!important;border:7px solid rgba(255,255,255,.94)!important}
body.tarjeta-publica .tarjeta-hero h1{font-size:clamp(44px,7vw,74px);letter-spacing:-.025em}
body.tarjeta-publica .evento-datos{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
body.tarjeta-publica .evento-datos div{background:rgba(255,255,255,.62);border:1px solid rgba(120,90,95,.10)}

/* Los adornos ya no pisan el texto: viven en los laterales del body. */
body.tarjeta-publica .evento-decor{display:none!important}
.evento-rails{position:fixed;inset:0;z-index:2;pointer-events:none;overflow:hidden;color:var(--rail-ink)}
.evento-rails span{position:absolute;font-size:clamp(42px,5vw,82px);opacity:.82;filter:drop-shadow(0 8px 12px rgba(0,0,0,.10));animation:railFloat 5.8s ease-in-out infinite}
.evento-rails span:nth-child(1){left:2.2vw;top:8%}.evento-rails span:nth-child(2){right:2.2vw;top:16%;animation-delay:-1s}.evento-rails span:nth-child(3){left:4vw;top:43%;animation-delay:-2.2s}.evento-rails span:nth-child(4){right:4vw;top:48%;animation-delay:-3.1s}.evento-rails span:nth-child(5){left:2.5vw;bottom:8%;animation-delay:-4s}.evento-rails span:nth-child(6){right:2.5vw;bottom:5%;animation-delay:-2.7s}
.tipo-cumple .evento-rails span:nth-child(1)::before{content:"🎈"}.tipo-cumple .evento-rails span:nth-child(2)::before{content:"🎉"}.tipo-cumple .evento-rails span:nth-child(3)::before{content:"🎂"}.tipo-cumple .evento-rails span:nth-child(4)::before{content:"✨"}.tipo-cumple .evento-rails span:nth-child(5)::before{content:"🎁"}.tipo-cumple .evento-rails span:nth-child(6)::before{content:"🎈"}
.tipo-dieciocho .evento-rails span:nth-child(1)::before{content:"🎈"}.tipo-dieciocho .evento-rails span:nth-child(2)::before{content:"✨"}.tipo-dieciocho .evento-rails span:nth-child(3)::before{content:"18"}.tipo-dieciocho .evento-rails span:nth-child(4)::before{content:"🎉"}.tipo-dieciocho .evento-rails span:nth-child(5)::before{content:"🎁"}.tipo-dieciocho .evento-rails span:nth-child(6)::before{content:"✨"}
.tipo-quince .evento-rails span:nth-child(1)::before{content:"🦋"}.tipo-quince .evento-rails span:nth-child(2)::before{content:"🌸"}.tipo-quince .evento-rails span:nth-child(3)::before{content:"✨"}.tipo-quince .evento-rails span:nth-child(4)::before{content:"🦋"}.tipo-quince .evento-rails span:nth-child(5)::before{content:"🌷"}.tipo-quince .evento-rails span:nth-child(6)::before{content:"✨"}
.tipo-boda .evento-rails span:nth-child(1)::before{content:"🌿"}.tipo-boda .evento-rails span:nth-child(2)::before{content:"🌸"}.tipo-boda .evento-rails span:nth-child(3)::before{content:"💍"}.tipo-boda .evento-rails span:nth-child(4)::before{content:"🌿"}.tipo-boda .evento-rails span:nth-child(5)::before{content:"🤍"}.tipo-boda .evento-rails span:nth-child(6)::before{content:"🌸"}
.tipo-baby .evento-rails span:nth-child(1)::before{content:"☁️"}.tipo-baby .evento-rails span:nth-child(2)::before{content:"🧸"}.tipo-baby .evento-rails span:nth-child(3)::before{content:"⭐"}.tipo-baby .evento-rails span:nth-child(4)::before{content:"🎈"}.tipo-baby .evento-rails span:nth-child(5)::before{content:"🍼"}.tipo-baby .evento-rails span:nth-child(6)::before{content:"☁️"}
.tipo-graduacion .evento-rails span:nth-child(1)::before{content:"🎓"}.tipo-graduacion .evento-rails span:nth-child(2)::before{content:"✨"}.tipo-graduacion .evento-rails span:nth-child(3)::before{content:"📜"}.tipo-graduacion .evento-rails span:nth-child(4)::before{content:"🎓"}.tipo-graduacion .evento-rails span:nth-child(5)::before{content:"⭐"}.tipo-graduacion .evento-rails span:nth-child(6)::before{content:"✨"}
.tipo-solemne .evento-rails span:nth-child(1)::before{content:"🕊️"}.tipo-solemne .evento-rails span:nth-child(2)::before{content:"🕯️"}.tipo-solemne .evento-rails span:nth-child(3)::before{content:"🤍"}.tipo-solemne .evento-rails span:nth-child(4)::before{content:"🌿"}.tipo-solemne .evento-rails span:nth-child(5)::before{content:"🕯️"}.tipo-solemne .evento-rails span:nth-child(6)::before{content:"🕊️"}
.tipo-religiosa .evento-rails span:nth-child(1)::before{content:"🕊️"}.tipo-religiosa .evento-rails span:nth-child(2)::before{content:"✨"}.tipo-religiosa .evento-rails span:nth-child(3)::before{content:"🌿"}.tipo-religiosa .evento-rails span:nth-child(4)::before{content:"🤍"}.tipo-religiosa .evento-rails span:nth-child(5)::before{content:"✨"}.tipo-religiosa .evento-rails span:nth-child(6)::before{content:"🕊️"}
@keyframes railFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}

/* En móvil no hay espacio lateral suficiente: los adornos se vuelven un marco discreto. */
@media(max-width:900px){
 .evento-rails span{font-size:34px;opacity:.28}
 .evento-rails span:nth-child(1),.evento-rails span:nth-child(3),.evento-rails span:nth-child(5){left:2px}
 .evento-rails span:nth-child(2),.evento-rails span:nth-child(4),.evento-rails span:nth-child(6){right:2px}
 body.tarjeta-publica .tarjeta-wrap{width:calc(100% - 22px);padding:11px 0 35px!important}
 body.tarjeta-publica .tarjeta-hero{padding:42px 22px 28px!important}
 body.tarjeta-publica .tarjeta-panel{padding:25px 20px 34px!important}
 body.tarjeta-publica.has-custom-bg::before{width:100vw!important;background-size:contain!important;background-position:center top!important}
}
@media(max-width:600px){
 body.tarjeta-publica .evento-datos{grid-template-columns:1fr}
 body.tarjeta-publica .tarjeta-protagonista{width:min(260px,80%)!important;max-height:260px!important}
}

/* =========================================================
   V21 - Invitaciones tipo plantilla gráfica
   El fondo personalizado vive SOLO dentro de .tarjeta-hero.
   ========================================================= */
body.tarjeta-publica,
body.tarjeta-publica.has-custom-bg{
  --hero-paper:#fffaf7;
  --hero-ink:#3d2d32;
  --hero-accent:#b36b79;
  margin:0!important;
  min-height:100vh;
  padding:34px 14px 60px!important;
  background:#f4f0ed!important;
  background-image:none!important;
  background-attachment:scroll!important;
}
body.tarjeta-publica.has-custom-bg::before,
body.tarjeta-publica.has-custom-bg::after{display:none!important;content:none!important}
body.tarjeta-publica .evento-rails{display:none!important}
body.tarjeta-publica .tarjeta-wrap{width:min(680px,100%)!important;margin:0 auto!important;padding:0!important;position:relative;z-index:1}

body.tarjeta-publica .tarjeta-hero{
  position:relative!important;
  isolation:isolate;
  overflow:hidden!important;
  min-height:820px!important;
  margin:0!important;
  padding:clamp(44px,7vw,74px) clamp(26px,7vw,64px)!important;
  border:0!important;
  border-radius:26px!important;
  box-shadow:0 22px 70px rgba(46,32,35,.16)!important;
  background:var(--hero-paper)!important;
  color:var(--hero-ink)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
body.tarjeta-publica.has-custom-bg .tarjeta-hero{
  background-color:var(--hero-paper)!important;
  background-image:linear-gradient(rgba(255,255,255,.10),rgba(255,255,255,.10)),var(--tarjeta-img)!important;
  background-repeat:no-repeat!important;
  background-position:center center!important;
  background-size:cover!important;
}
body.tarjeta-publica .tarjeta-hero-inner{
    position:relative;
    z-index:4;
    width:100%;
    text-align:center;
    /*display:flex;*/
    flex-direction:column;
    align-items:center}
body.tarjeta-publica .tarjeta-desc1,
body.tarjeta-publica .tarjeta-desc2-hero{
  width:min(540px,92%);margin:0 auto 24px!important;color:var(--hero-ink)!important;
  font-family:Georgia,'Times New Roman',serif;font-size:clamp(17px,2.4vw,21px);line-height:1.65!important;
  font-weight:600;text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 10px rgba(255,255,255,.6)
}
body.tarjeta-publica .tarjeta-desc2-hero{margin:10px auto 28px!important;font-weight:500}
body.tarjeta-publica .tarjeta-hero h1{
  max-width:96%!important;margin:18px auto 18px!important;color:var(--hero-accent)!important;
  font-family:'Playfair Display',Georgia,serif!important;font-size:clamp(48px,8vw,78px)!important;line-height:1.02!important;
  font-weight:600!important;text-shadow:0 2px 2px rgba(255,255,255,.9),0 0 16px rgba(255,255,255,.75)
}
body.tarjeta-publica .protagonista-frame{position:relative;width:min(350px,76vw);aspect-ratio:1/1;margin:6px auto 12px;z-index:3}
body.tarjeta-publica .tarjeta-protagonista{
  width:100%!important;height:100%!important;max-height:none!important;margin:0!important;display:block!important;
  object-fit:cover!important;object-position:center!important;border-radius:50%!important;
  border:7px solid rgba(255,255,255,.95)!important;box-shadow:0 12px 35px rgba(43,27,32,.18)!important
}
body.tarjeta-publica .evento-datos{width:100%;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:0!important;margin:16px auto 12px!important;border-top:1px solid color-mix(in srgb,var(--hero-accent) 35%,transparent);border-bottom:1px solid color-mix(in srgb,var(--hero-accent) 35%,transparent)}
body.tarjeta-publica .evento-datos div{padding:17px 8px!important;border-radius:0!important;border:0!important;background:transparent!important;min-width:0}
body.tarjeta-publica .evento-datos div+div{border-left:1px solid color-mix(in srgb,var(--hero-accent) 25%,transparent)!important}
body.tarjeta-publica .evento-datos b{font-size:13px;color:var(--hero-accent);letter-spacing:.03em}
body.tarjeta-publica .evento-datos span{font-family:Georgia,'Times New Roman',serif;color:var(--hero-ink)!important;font-size:15px;line-height:1.35;font-weight:600;text-shadow:0 1px 1px rgba(255,255,255,.8)}
body.tarjeta-publica .tarjeta-map-btn{margin-top:15px!important}

/* Decoración integrada en los bordes de la invitación, no encima del texto. */
body.tarjeta-publica .evento-decor{display:block!important;position:absolute!important;inset:0!important;z-index:1!important;pointer-events:none!important;opacity:1!important}
body.tarjeta-publica .evento-decor span{position:absolute;display:block;filter:drop-shadow(0 5px 7px rgba(0,0,0,.08));animation:templateFloat 6s ease-in-out infinite;font-size:64px}
body.tarjeta-publica .evento-decor span:nth-child(1){left:-5px;top:12px}
body.tarjeta-publica .evento-decor span:nth-child(2){right:-4px;top:18px;animation-delay:-1.4s}
body.tarjeta-publica .evento-decor span:nth-child(3){left:-8px;bottom:12px;animation-delay:-2.7s}
body.tarjeta-publica .evento-decor span:nth-child(4){right:-8px;bottom:10px;animation-delay:-4s}
@keyframes templateFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-8px) rotate(3deg)}}

/* Variantes completas según ocasión */
body.tipo-cumple{--hero-paper:#083f63;--hero-ink:#fff;--hero-accent:#ffd45d;background:#e9f1f5!important}
body.tipo-cumple:not(.has-custom-bg) .tarjeta-hero{background:radial-gradient(circle at 50% 22%,#17658d 0,#0b5278 36%,#073b5d 100%)!important}
body.tipo-cumple .evento-decor span:nth-child(1)::before{content:'🎈'}body.tipo-cumple .evento-decor span:nth-child(2)::before{content:'🎉'}body.tipo-cumple .evento-decor span:nth-child(3)::before{content:'🎁'}body.tipo-cumple .evento-decor span:nth-child(4)::before{content:'🎈'}
body.tipo-cumple .tarjeta-hero h1{font-family:Arial Rounded MT Bold,Arial,sans-serif!important;text-transform:uppercase;letter-spacing:.02em}
body.tipo-cumple .tarjeta-desc1,body.tipo-cumple .tarjeta-desc2-hero,body.tipo-cumple .evento-datos span{color:#fff!important;text-shadow:0 2px 3px rgba(0,0,0,.35)}

body.tipo-quince{--hero-paper:#f9eafa;--hero-ink:#8a4f85;--hero-accent:#b469b0;background:#f4e9f5!important}
body.tipo-quince:not(.has-custom-bg) .tarjeta-hero{background:linear-gradient(145deg,#fdeafa 0,#edf3ff 48%,#fce8f3 100%)!important}
body.tipo-quince .evento-decor span:nth-child(1)::before{content:'🦋'}body.tipo-quince .evento-decor span:nth-child(2)::before{content:'✨'}body.tipo-quince .evento-decor span:nth-child(3)::before{content:'🌸'}body.tipo-quince .evento-decor span:nth-child(4)::before{content:'🦋'}
body.tipo-quince .tarjeta-hero:after{content:'XV';position:absolute;z-index:2;top:42%;left:50%;transform:translate(-50%,-50%);font:italic 900 clamp(120px,23vw,190px)/1 Georgia,serif;color:rgba(178,105,176,.10)}
body.tipo-quince .tarjeta-hero h1{font-style:italic;font-weight:500!important}

body.tipo-boda{--hero-paper:#fffdf8;--hero-ink:#6d665c;--hero-accent:#dc8c8c;background:#f2eee9!important}
body.tipo-boda:not(.has-custom-bg) .tarjeta-hero{background:linear-gradient(180deg,#fffdfa,#fff9f4 58%,#fffdf9)!important}
body.tipo-boda .evento-decor span:nth-child(1)::before{content:'🌸'}body.tipo-boda .evento-decor span:nth-child(2)::before{content:'🌺'}body.tipo-boda .evento-decor span:nth-child(3)::before{content:'🌿'}body.tipo-boda .evento-decor span:nth-child(4)::before{content:'💍'}
body.tipo-boda .tarjeta-hero h1{font-style:italic;font-weight:500!important}
body.tipo-boda .protagonista-frame{width:min(390px,80vw);aspect-ratio:1/1.08}
body.tipo-boda .tarjeta-protagonista{border-radius:48% 48% 42% 42%!important;border-color:#f6dfcf!important}

body.tipo-dieciocho{--hero-paper:#15131d;--hero-ink:#fff;--hero-accent:#e9c76b;background:#24212b!important}
body.tipo-dieciocho:not(.has-custom-bg) .tarjeta-hero{background:radial-gradient(circle at 50% 25%,#3a3044,#17141f 68%)!important}
body.tipo-dieciocho .evento-decor span:nth-child(1)::before{content:'✨'}body.tipo-dieciocho .evento-decor span:nth-child(2)::before{content:'18'}body.tipo-dieciocho .evento-decor span:nth-child(3)::before{content:'🎉'}body.tipo-dieciocho .evento-decor span:nth-child(4)::before{content:'✨'}
body.tipo-dieciocho .tarjeta-desc1,body.tipo-dieciocho .tarjeta-desc2-hero,body.tipo-dieciocho .evento-datos span{color:#fff!important;text-shadow:0 2px 3px #000}

body.tipo-baby{--hero-paper:#f3f9ff;--hero-ink:#56728a;--hero-accent:#83add0;background:#eaf4fb!important}
body.tipo-baby .evento-decor span:nth-child(1)::before{content:'☁️'}body.tipo-baby .evento-decor span:nth-child(2)::before{content:'🧸'}body.tipo-baby .evento-decor span:nth-child(3)::before{content:'🍼'}body.tipo-baby .evento-decor span:nth-child(4)::before{content:'⭐'}
body.tipo-graduacion{--hero-paper:#fffaf0;--hero-ink:#39332b;--hero-accent:#b49343;background:#eee9dd!important}
body.tipo-graduacion .evento-decor span:nth-child(1)::before{content:'🎓'}body.tipo-graduacion .evento-decor span:nth-child(2)::before{content:'✨'}body.tipo-graduacion .evento-decor span:nth-child(3)::before{content:'📜'}body.tipo-graduacion .evento-decor span:nth-child(4)::before{content:'🎓'}
body.tipo-religiosa{--hero-paper:#fbfff9;--hero-ink:#5f705e;--hero-accent:#94a886;background:#edf3eb!important}
body.tipo-religiosa .evento-decor span:nth-child(1)::before{content:'🕊️'}body.tipo-religiosa .evento-decor span:nth-child(2)::before{content:'🌿'}body.tipo-religiosa .evento-decor span:nth-child(3)::before{content:'✨'}body.tipo-religiosa .evento-decor span:nth-child(4)::before{content:'🤍'}
body.tipo-solemne{--hero-paper:#f8f8f5;--hero-ink:#4b4b49;--hero-accent:#777b72;background:#ecece8!important}
body.tipo-solemne .evento-decor span:nth-child(1)::before{content:'🕊️'}body.tipo-solemne .evento-decor span:nth-child(2)::before{content:'🕯️'}body.tipo-solemne .evento-decor span:nth-child(3)::before{content:'🌿'}body.tipo-solemne .evento-decor span:nth-child(4)::before{content:'🤍'}
body.tipo-evento .evento-decor span:nth-child(1)::before{content:'✨'}body.tipo-evento .evento-decor span:nth-child(2)::before{content:'✦'}body.tipo-evento .evento-decor span:nth-child(3)::before{content:'✧'}body.tipo-evento .evento-decor span:nth-child(4)::before{content:'✨'}

/* La confirmación queda como módulo funcional separado de la pieza gráfica. */
body.tarjeta-publica .tarjeta-panel.rsvp{margin-top:22px!important;border-radius:24px!important;background:#fff!important;padding:32px!important;box-shadow:0 15px 45px rgba(46,32,35,.10)!important}
body.tarjeta-publica .demo-private-note{margin:18px 0 0}

@media(max-width:720px){
 body.tarjeta-publica,body.tarjeta-publica.has-custom-bg{padding:14px 0px 36px!important}
 body.tarjeta-publica .tarjeta-wrap{width:100%!important}
 body.tarjeta-publica .tarjeta-hero{
                                    /*border-radius:0!important;*/
                                    min-height:100svh!important;
                                    padding:38px 20px!important;
                                    box-shadow:none!important
     
 }
 body.tarjeta-publica.has-custom-bg .tarjeta-hero{background-size:cover!important;background-position:center!important}
 body.tarjeta-publica .evento-datos{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 body.tarjeta-publica .evento-datos div:nth-child(3){border-left:0!important;border-top:1px solid color-mix(in srgb,var(--hero-accent) 25%,transparent)!important}
 body.tarjeta-publica .evento-datos div:nth-child(4){border-top:1px solid color-mix(in srgb,var(--hero-accent) 25%,transparent)!important}
 body.tarjeta-publica .evento-decor span{font-size:45px;opacity:.82}
 body.tarjeta-publica .tarjeta-panel.rsvp{margin:16px 12px 0!important}
 body.tarjeta-publica .demo-private-note{margin:14px 12px 0}
}

/* V22 */
.text-style-control{display:grid;grid-template-columns:1fr .7fr 1.2fr;gap:10px;padding:12px 14px;margin:8px 0 18px;background:#fff8f7;border:1px solid var(--line);border-radius:14px}.text-style-control>strong{grid-column:1/-1;font-size:13px;color:var(--wine)}.text-style-control label{margin:0;font-size:12px}.text-style-control input[type=color]{height:42px;padding:3px}.event-style-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.event-style-grid .text-style-control{grid-template-columns:1fr 1fr;margin:0}.event-style-grid .text-style-control label:last-child{grid-column:1/-1}.photo-toggle{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fffaf8}body.tarjeta-publica .evento-datos{border-top:2px solid color-mix(in srgb,var(--hero-accent) 72%,#777)!important;border-bottom:2px solid color-mix(in srgb,var(--hero-accent) 72%,#777)!important}body.tarjeta-publica .evento-datos div+div{border-left:2px solid color-mix(in srgb,var(--hero-accent) 58%,#888)!important}@media(max-width:720px){.text-style-control,.event-style-grid{grid-template-columns:1fr}.event-style-grid .text-style-control{grid-template-columns:1fr 1fr}body.tarjeta-publica .evento-datos div:nth-child(3),body.tarjeta-publica .evento-datos div:nth-child(4){border-top:2px solid color-mix(in srgb,var(--hero-accent) 58%,#888)!important}}


/* V23: decoraciones más visibles y reservadas a los márgenes libres del hero */
body.tarjeta-publica .tarjeta-hero{isolation:isolate!important}
body.tarjeta-publica .evento-decor{z-index:2!important;opacity:1!important;overflow:hidden!important}
body.tarjeta-publica .tarjeta-hero-inner{z-index:4!important;position:relative!important}
body.tarjeta-publica .evento-decor span{
  font-size:clamp(58px,7vw,92px)!important;
  opacity:.88!important;
  filter:drop-shadow(0 7px 12px rgba(0,0,0,.15))!important;
}
/* Esquinas/laterales: no invaden la columna central donde están título y textos. */
body.tarjeta-publica .evento-decor span:nth-child(1){left:clamp(8px,2.2vw,24px)!important;top:18%!important}
body.tarjeta-publica .evento-decor span:nth-child(2){right:clamp(8px,2.2vw,24px)!important;top:29%!important}
body.tarjeta-publica .evento-decor span:nth-child(3){left:clamp(8px,2.2vw,24px)!important;bottom:23%!important}
body.tarjeta-publica .evento-decor span:nth-child(4){right:clamp(8px,2.2vw,24px)!important;bottom:12%!important}
/* La zona central queda limpia para la información. */
body.tarjeta-publica .tarjeta-hero-inner{width:min(82%,650px)!important;margin-inline:auto!important}
@media(max-width:720px){
 body.tarjeta-publica .tarjeta-hero-inner{width:min(88%,620px)!important}
 body.tarjeta-publica .evento-decor span{font-size:clamp(38px,11vw,56px)!important;opacity:.78!important}
 body.tarjeta-publica .evento-decor span:nth-child(1){left:4px!important;top:15%!important}
 body.tarjeta-publica .evento-decor span:nth-child(2){right:4px!important;top:34%!important}
 body.tarjeta-publica .evento-decor span:nth-child(3){left:4px!important;bottom:25%!important}
 body.tarjeta-publica .evento-decor span:nth-child(4){right:4px!important;bottom:10%!important}
}

/* V24: decoracion sobre fondo personalizado + etiquetas de datos con alto contraste */
body.tarjeta-publica.has-custom-bg .evento-decor{
  z-index:3!important;
  opacity:1!important;
  mix-blend-mode:normal!important;
}
body.tarjeta-publica.has-custom-bg .evento-decor span{
  opacity:1!important;
  font-size:clamp(52px,6vw,76px)!important;
  filter:drop-shadow(0 3px 2px rgba(255,255,255,.72)) drop-shadow(0 7px 12px rgba(0,0,0,.48))!important;
}
/* Se reservan los extremos del hero para los adornos; el contenido sigue por encima. */
body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(1){left:10px!important;top:7%!important}
body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(2){right:10px!important;top:21%!important}
body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(3){left:10px!important;bottom:20%!important}
body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(4){right:10px!important;bottom:6%!important}
body.tarjeta-publica.has-custom-bg .tarjeta-hero-inner{z-index:5!important}

/* Fecha / Hora / Lugar / Ubicacion: etiquetas mas grandes y siempre legibles. */
body.tarjeta-publica .evento-datos b{
  display:inline-block!important;
  font-size:15px!important;
  line-height:1.2!important;
  font-weight:900!important;
  letter-spacing:.045em!important;
  opacity:1!important;
  padding:5px 9px!important;
  margin-bottom:5px!important;
  border-radius:999px!important;
  color:var(--hero-accent)!important;
  background:rgba(255,255,255,.84)!important;
  text-shadow:none!important;
  box-shadow:0 2px 8px rgba(0,0,0,.08)!important;
}
body.tarjeta-publica.has-custom-bg .evento-datos b{
  color:#fff!important;
  background:rgba(0,0,0,.62)!important;
  border:1px solid rgba(255,255,255,.34)!important;
  text-shadow:0 1px 2px rgba(0,0,0,.9)!important;
  box-shadow:0 3px 10px rgba(0,0,0,.24)!important;
}
body.tarjeta-publica.has-custom-bg .evento-datos{
  border-top-color:rgba(255,255,255,.78)!important;
  border-bottom-color:rgba(255,255,255,.78)!important;
}
body.tarjeta-publica.has-custom-bg .evento-datos div+div{
  border-left-color:rgba(255,255,255,.62)!important;
}
@media(max-width:720px){
  body.tarjeta-publica.has-custom-bg .evento-decor span{font-size:clamp(38px,10vw,52px)!important;opacity:.96!important}
  body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(1){left:3px!important;top:5%!important}
  body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(2){right:3px!important;top:24%!important}
  body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(3){left:3px!important;bottom:22%!important}
  body.tarjeta-publica.has-custom-bg .evento-decor span:nth-child(4){right:3px!important;bottom:5%!important}
  body.tarjeta-publica .evento-datos b{font-size:14px!important;padding:5px 8px!important}
  body.tarjeta-publica.has-custom-bg .evento-datos div:nth-child(3),
  body.tarjeta-publica.has-custom-bg .evento-datos div:nth-child(4){border-top-color:rgba(255,255,255,.62)!important}
}




/* =========================================================
   V25 · TARJETAS EDITORIALES / APERTURA / ARCO
   ========================================================= */
body.tarjeta-publica.tarjeta-v25{overflow-x:hidden;background:radial-gradient(circle at 50% 0,#fff 0,#f4efec 55%,#e9e1dc 100%)!important}
body.tarjeta-publica.tarjeta-v25 .tarjeta-wrap{width:min(760px,100%)!important}
body.tarjeta-publica.tarjeta-v25 .tarjeta-hero{min-height:940px!important;border-radius:34px!important;border:1px solid rgba(255,255,255,.8)!important;box-shadow:0 32px 90px rgba(48,30,35,.20),inset 0 0 0 8px rgba(255,255,255,.18)!important}
body.tarjeta-publica.tarjeta-v25 .tarjeta-hero:after{content:"";position:absolute;inset:18px;border:1px solid color-mix(in srgb,var(--hero-accent) 55%,transparent);border-radius:25px;z-index:1;pointer-events:none}
body.tarjeta-publica.tarjeta-v25 .tarjeta-hero-inner{gap:18px!important}
body.tarjeta-publica.tarjeta-v25 .tarjeta-hero h1{margin:4px auto 2px!important;line-height:.98!important;max-width:92%;text-wrap:balance;text-shadow:0 2px 14px rgba(255,255,255,.38)}
body.tarjeta-publica.tarjeta-v25 .tarjeta-desc1,body.tarjeta-publica.tarjeta-v25 .tarjeta-desc2{max-width:580px!important;text-wrap:balance}
body.tarjeta-publica.tarjeta-v25 .protagonista-composition{position:relative;width:min(430px,92%);min-height:285px;display:grid;place-items:end center;margin:4px auto 0}
body.tarjeta-publica.tarjeta-v25 .protagonista-composition:not(.with-arc){min-height:auto;place-items:center}
body.tarjeta-publica.tarjeta-v25 .protagonista-composition .protagonista-frame{position:relative;z-index:3;margin:0!important;width:clamp(190px,38vw,265px)!important;height:clamp(190px,38vw,265px)!important;border-radius:50%!important;padding:8px;background:rgba(255,255,255,.9);box-shadow:0 16px 38px rgba(38,22,28,.22),0 0 0 2px var(--hero-accent)}
body.tarjeta-publica.tarjeta-v25 .protagonista-composition .tarjeta-protagonista{width:100%!important;height:100%!important;border-radius:50%!important;object-fit:cover!important}
body.tarjeta-publica.tarjeta-v25 .descripcion-arco{position:absolute;z-index:4;left:50%;top:-38px;transform:translateX(-50%);width:100%;height:245px;overflow:visible;pointer-events:none;filter:drop-shadow(0 2px 3px rgba(255,255,255,.72))}
body.tarjeta-publica.tarjeta-v25 .descripcion-arco text{font-weight:800;letter-spacing:.02em}
body.tarjeta-publica.tarjeta-v25 .evento-datos{width:min(650px,100%);margin-top:10px!important;background:rgba(255,255,255,.38);backdrop-filter:blur(5px);border-radius:18px;padding:12px 6px!important}
body.tarjeta-publica.tarjeta-v25.has-custom-bg .evento-datos{background:rgba(0,0,0,.24)}

/* Entrada de invitacion inspirada en la apertura de las cartas */
.tarjeta-opening{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:20px;background:radial-gradient(circle at 50% 35%,#fff9f7 0,#efe1df 55%,#cdaeb1 100%);transition:opacity .55s ease,visibility .55s ease}
.tarjeta-opening-glow{position:absolute;width:520px;height:520px;border-radius:50%;background:rgba(255,255,255,.38);filter:blur(30px);animation:tarjetaGlow 3s ease-in-out infinite}
.tarjeta-opening p{position:relative;margin:0;font-weight:800;letter-spacing:.04em;text-align:center;color:#5a3e46}
.tarjeta-envelope{position:relative;width:min(430px,86vw);aspect-ratio:1.45/1;perspective:1200px;filter:drop-shadow(0 28px 34px rgba(55,31,38,.24))}
.tarjeta-envelope-back,.tarjeta-envelope-front,.tarjeta-envelope-flap,.tarjeta-envelope-card{position:absolute;inset:0;border-radius:18px}
.tarjeta-envelope-back{background:linear-gradient(145deg,#f7e8e5,#d9b9bd)}
.tarjeta-envelope-front{z-index:4;clip-path:polygon(0 36%,50% 72%,100% 36%,100% 100%,0 100%);background:linear-gradient(160deg,#f7e8e5,#e0c3c5)}
.tarjeta-envelope-flap{z-index:5;transform-origin:50% 0;clip-path:polygon(0 0,100% 0,50% 67%);background:linear-gradient(180deg,#fff4ef,#dcbec2);transition:transform .75s cubic-bezier(.2,.8,.2,1)}
.tarjeta-envelope-card{z-index:3;inset:10% 8% 8%;padding:35px 25px 20px;background:#fffaf7;border:1px solid rgba(115,70,80,.18);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:transform .9s .38s cubic-bezier(.2,.8,.2,1);overflow:hidden}
.tarjeta-envelope-card:before{content:"";position:absolute;inset:10px;border:1px solid rgba(180,107,121,.35);border-radius:12px}
.tarjeta-envelope-card span{font-size:12px;text-transform:uppercase;letter-spacing:.18em;color:#9b6571}.tarjeta-envelope-card strong{font-family:Georgia,serif;font-size:clamp(22px,5vw,34px);color:#51353d;max-width:90%;text-wrap:balance}
.tarjeta-seal{position:absolute;z-index:8;left:50%;top:51%;transform:translate(-50%,-50%);width:82px;height:82px;border:0;border-radius:50%;background:radial-gradient(circle at 35% 28%,#d98b9a,#8e4252 72%);color:white;box-shadow:0 8px 22px rgba(80,31,44,.35),inset 0 0 0 4px rgba(255,255,255,.18);font-size:30px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center}.tarjeta-seal small{font-size:10px;font-weight:900;letter-spacing:.08em}
.tarjeta-opening.is-opening .tarjeta-envelope-flap{transform:rotateX(178deg);z-index:2}.tarjeta-opening.is-opening .tarjeta-envelope-card{transform:translateY(-47%) scale(1.04)}.tarjeta-opening.is-opening .tarjeta-seal{animation:sealPop .45s forwards}.tarjeta-opening.is-gone{opacity:0;visibility:hidden;pointer-events:none}
.tarjeta-content-hidden{opacity:0;transform:translateY(34px) scale(.985);pointer-events:none}.tarjeta-content-reveal{animation:tarjetaReveal .9s cubic-bezier(.2,.8,.2,1) both}
@keyframes tarjetaReveal{to{opacity:1;transform:none}}@keyframes sealPop{to{opacity:0;transform:translate(-50%,-50%) scale(1.35)}}@keyframes tarjetaGlow{50%{transform:scale(1.08);opacity:.72}}

/* Confirmacion final: nunca vuelve a mostrar el formulario tras un registro correcto. */
.rsvp-success-screen{position:fixed;inset:0;z-index:12000;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#fff9f6,#efe1e2);text-align:center}.rsvp-success-screen>div{width:min(480px,100%);padding:42px 28px;background:#fff;border-radius:28px;box-shadow:0 25px 80px rgba(56,32,39,.18)}.rsvp-success-screen span{display:grid;place-items:center;width:74px;height:74px;margin:0 auto 18px;border-radius:50%;background:#eaf8ef;color:#23834b;font-size:38px;font-weight:900}.rsvp-success-screen h2{margin:0 0 10px}.rsvp-success-screen p{margin:0;color:#6d6064}

/* Acabados por tipo: mas cercanos a plantillas editoriales que a una tarjeta generica. */
body.tarjeta-publica.tipo-cumpleanos .tarjeta-hero{background-image:radial-gradient(circle at 12% 10%,rgba(255,213,79,.24),transparent 24%),radial-gradient(circle at 90% 18%,rgba(80,155,255,.18),transparent 25%),linear-gradient(160deg,#fffdf5,#eef7ff)!important}
body.tarjeta-publica.tipo-quince .tarjeta-hero{background-image:radial-gradient(circle at 20% 15%,rgba(233,181,220,.24),transparent 28%),linear-gradient(160deg,#fffafd,#f6eefc)!important}
body.tarjeta-publica.tipo-matrimonio .tarjeta-hero{background-image:radial-gradient(circle at 12% 12%,rgba(135,169,128,.17),transparent 28%),linear-gradient(160deg,#fff,#fbf8f2)!important}
body.tarjeta-publica.tipo-baby .tarjeta-hero{background-image:linear-gradient(145deg,#fff9f2,#f0f8ff)!important}
body.tarjeta-publica.tipo-graduacion .tarjeta-hero{background-image:linear-gradient(145deg,#fffdf6,#f2f0ff)!important}
body.tarjeta-publica.has-custom-bg .tarjeta-hero{background-image:linear-gradient(rgba(255,255,255,.08),rgba(255,255,255,.08)),var(--tarjeta-img)!important}

@media(max-width:720px){body.tarjeta-publica.tarjeta-v25{padding:0!important}body.tarjeta-publica.tarjeta-v25 .tarjeta-wrap{width:100%!important}body.tarjeta-publica.tarjeta-v25 .tarjeta-hero{min-height:100svh!important;border-radius:0!important;padding:54px 24px 44px!important}body.tarjeta-publica.tarjeta-v25 .tarjeta-hero:after{inset:10px;border-radius:18px}body.tarjeta-publica.tarjeta-v25 .tarjeta-hero-inner{width:92%!important;gap:14px!important}body.tarjeta-publica.tarjeta-v25 .protagonista-composition{width:min(350px,100%);min-height:245px}body.tarjeta-publica.tarjeta-v25 .protagonista-composition .protagonista-frame{width:190px!important;height:190px!important}.descripcion-arco{height:205px!important}.tarjeta-envelope{width:min(350px,88vw)}.tarjeta-seal{width:70px;height:70px}.tarjeta-opening p{font-size:14px}.rsvp-success-screen>div{padding:34px 20px}}

