.capsule-link{background:#d9d0e9}.dates-link{background:#f3dfba}.guestbook-link{background:#d5e5db}.open-when{background:#f4e9e2;text-align:center}.open-when .section-copy,.guestbook .section-copy{color:#79505b}.when-grid{display:grid;gap:1rem;margin-top:2rem}.when-card{min-height:168px;border:1px solid #e9c9c3;border-radius:6px;background:#fffaf4;color:#8e1730;padding:1rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center}.when-card span{font-size:1.8rem}.when-card strong{font-family:"Playfair Display",serif;font-size:1.25rem;margin:.5rem 0}.when-card small{max-width:180px;line-height:1.4}.capsule{background:#b42844;color:#fff8ef;display:flex;gap:2rem;align-items:center;justify-content:space-between}.capsule .section-label{color:#ffc18d}.capsule h2{margin-top:.7rem}.capsule p{line-height:1.6;color:#ffe0d5;max-width:340px}.capsule-button{background:#fff5e9;border:0;border-radius:30px;padding:.85rem 1rem;color:#8d1730;font-weight:bold;cursor:pointer}.capsule-art{border:2px dashed #f7ba91;width:130px;height:170px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:rotate(7deg)}.capsule-art span{font-size:2.5rem;color:#f7ba91}.capsule-art small{font-size:.56rem;letter-spacing:.12em;margin-top:.8rem}.dates{background:#fffaf4}.dates-list{margin-top:1.7rem}.dates-list article{padding:1rem 0;border-top:1px solid #edced0;display:flex;gap:1.2rem;align-items:center}.dates-list time{display:block;width:52px;height:52px;border-radius:50%;background:#9b1c34;color:#fff7ef;flex:none;text-align:center;padding-top:.42rem;font-family:"Playfair Display",serif;line-height:1.05;font-size:1.25rem}.dates-list time small{font-family:"DM Sans",sans-serif;font-size:.55rem;letter-spacing:.1em}.dates-list h3{font-size:1.18rem;margin:0 0 .2rem}.dates-list p{margin:0;font-size:.8rem;color:#81525c}.future-date{opacity:.65}.guestbook{background:#eed6db;text-align:center}.guestbook form{max-width:560px;margin:1.7rem auto 0;text-align:left}.guestbook label{display:block;font-size:.74rem;font-weight:bold;letter-spacing:.07em;margin-bottom:.4rem}.guestbook textarea{width:100%;min-height:130px;resize:vertical;border:1px solid #dca4ad;background:#fffaf7;border-radius:5px;padding:1rem;font:1rem "DM Sans",sans-serif;color:#481625}.guestbook form button{margin-top:.75rem;border:0;border-radius:30px;background:#8e1730;color:#fff8ef;padding:.82rem 1.2rem;font-weight:bold;cursor:pointer}.sync-note{font-size:.72rem;color:#81525c;margin:1.35rem auto 0;max-width:460px;line-height:1.5}@media(min-width:720px){.when-grid{grid-template-columns:repeat(3,1fr)}}

.guest-messages{max-width:560px;margin:1.5rem auto 0;display:grid;gap:.8rem;text-align:left}.guest-message-card{background:#fffaf7;border:1px solid #e0b8bf;border-radius:8px;padding:1rem 1.1rem;box-shadow:0 5px 16px rgba(90,24,40,.06)}.guest-message-card p{margin:0;color:#481625;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.guest-message-card small{display:block;margin-top:.6rem;color:#8b6870;font-size:.7rem}.guestbook form button:disabled{opacity:.65;cursor:wait}

/* Cartitas animadas */
.letters-intro{max-width:600px;margin:.5rem auto 0;}
.envelopes{grid-template-columns:1fr;}
.envelope{position:relative;overflow:hidden;isolation:isolate;transition:transform .28s ease,box-shadow .28s ease,filter .28s ease;box-shadow:0 8px 20px rgba(72,22,37,.06);}
.envelope::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 49%,rgba(142,23,48,.08) 50%,transparent 51%);opacity:0;transition:opacity .3s ease;}
.envelope::after{content:"";position:absolute;left:12%;right:12%;bottom:-42px;height:70px;background:#fffaf4;border-radius:4px;box-shadow:0 4px 14px rgba(72,22,37,.12);transform:translateY(0);transition:transform .35s ease;z-index:-1;}
.envelope:hover{transform:translateY(-7px) rotate(-.5deg);box-shadow:0 15px 30px rgba(72,22,37,.12);}
.envelope:hover::before{opacity:1;}
.envelope:hover::after{transform:translateY(-12px);}
.envelope:active{transform:translateY(-2px) scale(.98);}
.envelope-icon{display:inline-block;transition:transform .45s cubic-bezier(.2,.8,.2,1);}
.envelope:hover .envelope-icon{transform:translateY(-5px) rotate(-7deg) scale(1.12);}
.when-grid{grid-template-columns:1fr;}
.when-card{transition:transform .25s ease,box-shadow .25s ease;box-shadow:0 5px 15px rgba(72,22,37,.04);}
.when-card:hover{transform:translateY(-5px);box-shadow:0 12px 25px rgba(72,22,37,.1);}

.letter-dialog{width:min(92vw,680px);max-width:680px;padding:0;background:transparent;box-shadow:none;overflow:visible;}
.letter-dialog::backdrop{background:rgba(68,16,28,.72);backdrop-filter:blur(4px);}
.letter-paper{position:relative;background:#fffaf4;border-radius:10px;padding:2.8rem clamp(1.4rem,5vw,3rem) 2.2rem;box-shadow:0 24px 70px rgba(30,8,16,.28);border:1px solid #f1d7d0;transform:translateY(26px) scale(.94) rotate(-1deg);opacity:0;transition:transform .48s cubic-bezier(.2,.9,.2,1),opacity .3s ease;max-height:80vh;overflow:auto;}
.letter-dialog.is-opening .letter-paper{transform:translateY(0) scale(1) rotate(0);opacity:1;}
.letter-paper::before{content:"";position:absolute;inset:14px;border:1px dashed #e6c0b9;border-radius:7px;pointer-events:none;}
.letter-seal{position:absolute;right:1.4rem;top:1rem;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#8e1730;color:#fff5ed;font-size:1rem;box-shadow:0 5px 12px rgba(72,22,37,.15);z-index:2;animation:sealPop .55s .15s both;}
@keyframes sealPop{from{transform:scale(.4) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
.letter-dialog .close{z-index:3;right:.7rem;top:.35rem;font-size:2.1rem;}
.letter-dialog .message-date{position:relative;z-index:1;}
.letter-dialog h2{position:relative;z-index:1;font-size:clamp(2rem,7vw,3rem);margin-bottom:1.1rem;}
.dialog-body{position:relative;z-index:1;animation:letterTextIn .55s .15s both;}
.dialog-body p{line-height:1.75;color:#6f4050;margin-bottom:1rem;}
.letter-signoff{position:relative;z-index:1;margin:1.2rem 0 0;font-family:"Playfair Display",serif;color:#8e1730;font-size:1.1rem;}
@keyframes letterTextIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:720px){.envelopes{grid-template-columns:repeat(2,1fr)}.when-grid{grid-template-columns:repeat(2,1fr)}}

/* Cartas nuevas que se van acumulando */
.personal-letters{margin-top:4rem;padding-top:3rem;border-top:1px dashed #e4c2bd;text-align:center;}
.personal-letters h3{font-family:"Playfair Display",serif;font-size:clamp(2rem,5vw,3rem);color:#6e2638;margin:.4rem 0 .5rem;}
.personal-letters .section-copy{max-width:620px;margin:0 auto;color:#79505b;}
.personal-letters-list{max-width:760px;margin:2rem auto 0;display:grid;gap:1rem;text-align:left;}
.personal-letter-card{position:relative;background:#fffaf4;border:1px solid #e5c5bf;border-radius:9px;padding:1.2rem 1.25rem;box-shadow:0 8px 22px rgba(72,22,37,.06);transition:transform .25s ease,box-shadow .25s ease;}
.personal-letter-card:hover{transform:translateY(-4px) rotate(-.2deg);box-shadow:0 14px 28px rgba(72,22,37,.1);}
.personal-letter-card .letter-date{font-size:.68rem;letter-spacing:.12em;color:#9b1c34;font-weight:700;text-transform:uppercase;}
.personal-letter-card h4{font-family:"Playfair Display",serif;color:#6e2638;font-size:1.35rem;margin:.35rem 0 .35rem;}
.personal-letter-card p{margin:0;color:#79505b;line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;}
.personal-letter-card button{margin-top:.9rem;border:1px solid #dbaeb0;background:#fff5ed;color:#8e1730;border-radius:999px;padding:.55rem .9rem;font-weight:700;cursor:pointer;}
.letters-empty{font-size:.82rem;color:#9b737c;margin:1.5rem 0;}
.letter-editor{max-width:620px;margin:2rem auto 0;text-align:left;background:#fff8f2;border:1px solid #e1bfc0;border-radius:10px;padding:1rem 1.1rem;}
.letter-editor summary{cursor:pointer;color:#8e1730;font-weight:700;list-style-position:inside;}
.letter-editor form{display:grid;gap:.45rem;margin-top:1rem;}
.letter-editor label{font-size:.72rem;font-weight:700;letter-spacing:.05em;color:#6e2638;margin-top:.5rem;}
.letter-editor input,.letter-editor textarea{width:100%;border:1px solid #dca4ad;background:#fffaf7;border-radius:6px;padding:.75rem;font:1rem "DM Sans",sans-serif;color:#481625;box-sizing:border-box;}
.letter-editor textarea{min-height:190px;resize:vertical;line-height:1.55;}
.letter-editor form button{margin-top:.7rem;border:0;border-radius:30px;background:#8e1730;color:#fff8ef;padding:.8rem 1.1rem;font-weight:700;cursor:pointer;}
.editor-status{font-size:.75rem;color:#81525c;min-height:1.1em;margin:.2rem 0 0;}
@media(min-width:720px){.personal-letters-list{grid-template-columns:repeat(2,1fr)}}

/* Secciones interactivas */
.section-editor{max-width:620px;margin:2rem auto 0;background:#fff8f2;border:1px solid #e1bfc0;border-radius:10px;padding:1rem 1.1rem;text-align:left;}
.section-editor summary{cursor:pointer;color:#8e1730;font-weight:700;list-style-position:inside;}
.section-editor form{display:grid;gap:.45rem;margin-top:1rem;}
.section-editor label{font-size:.72rem;font-weight:700;letter-spacing:.05em;color:#6e2638;margin-top:.4rem;}
.section-editor input,.section-editor textarea{width:100%;box-sizing:border-box;border:1px solid #dca4ad;background:#fffaf7;border-radius:6px;padding:.75rem;font:1rem "DM Sans",sans-serif;color:#481625;}
.section-editor textarea{min-height:110px;resize:vertical;}
.section-editor button{margin-top:.7rem;border:0;border-radius:30px;background:#8e1730;color:#fff8ef;padding:.8rem 1.1rem;font-weight:700;cursor:pointer;}
.memory-date{font-size:.7rem!important;letter-spacing:.1em;text-transform:uppercase;}
.photo-slot{position:relative;overflow:hidden;cursor:pointer;transition:transform .25s ease,box-shadow .25s ease;}
.photo-slot:hover{transform:translateY(-5px);box-shadow:0 14px 28px rgba(72,22,37,.12);}
.photo-slot img, .photo-slot video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.photo-slot.has-photo::after{content:"Cambiar foto";position:absolute;right:.65rem;bottom:.65rem;background:rgba(72,22,37,.78);color:#fff;padding:.35rem .55rem;border-radius:999px;font-size:.65rem;z-index:2;}
.photo-slot.has-photo span,.photo-slot.has-photo p,.photo-slot.has-photo small{display:none;}
.photo-upload{font:inherit;color:inherit;text-align:center;}
.photo-upload small{font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;margin-top:.35rem;}
.gallery-note{text-align:center;color:#896b73;font-size:.72rem;margin:1rem auto 0;}
.timeline-line .timeline-item.user-memory{animation:memoryIn .5s ease both;}
@keyframes memoryIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.capsule-button.ready{animation:capsulePulse 1.5s infinite alternate;}
@keyframes capsulePulse{from{transform:scale(1)}to{transform:scale(1.04)}}

/* Galería online */
.photo-grid .saved-photo { overflow: hidden; padding: 0; border: 0; cursor: pointer; position:relative; min-height:220px; }
.photo-grid .saved-photo img, .photo-grid .saved-photo video { width: 100%; height: 100%; min-height: 220px; object-fit: cover; display: block; transition: transform .35s ease; }
.photo-grid .saved-photo:hover img, .photo-grid .saved-photo:hover video { transform: scale(1.04); }
.photo-grid .saved-photo .video-badge { position: absolute; top: 8px; right: 8px; background: rgba(0,0,0,0.65); color: #fff; padding: 2px 8px; border-radius: 12px; font-size: 0.7rem; font-weight: bold; pointer-events: none; z-index: 2; }
.photo-grid .photo-add { cursor: pointer; }
.gallery-note.error { color: #b42318; }