.btn--secundario{padding:.6rem 1.3rem;border-radius:999px;background:#fff;color:var(--rosa-600);
  border:1.5px solid var(--rosa-300);font:600 .92rem var(--f-texto);box-shadow:none}
.btn--secundario:hover{background:var(--rosa-50);border-color:var(--rosa-400);transform:translateY(-1px)}

/* Estado vacío (sin fotos / sin cartas / sin momentos): tarjeta "agregar" grande, no un texto perdido */
.vacio{grid-column:1/-1;text-align:center;padding:3rem 1.5rem;color:var(--rosa-600)}
.vacio__icono{width:84px;height:84px;margin:0 auto 1rem;border-radius:50%;background:var(--rosa-100);
  display:grid;place-items:center;font-size:2.2rem;box-shadow:0 0 0 10px var(--rosa-50)}
.vacio p{font:600 1.05rem var(--f-texto)}
.vacio--accion{cursor:pointer;border:2px dashed var(--rosa-300);border-radius:var(--radio);transition:background .2s,border-color .2s}
.vacio--accion:hover{background:var(--rosa-50);border-color:var(--rosa-400)}
.vacio--accion small{display:block;margin-top:.3rem;color:var(--rosa-400);font-weight:600}

/* CONTADOR */
.contador-wrap{position:relative}
.lluvia{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.lluvia span{position:absolute;top:-8%;font-size:1.3rem;opacity:.4;animation:caer linear infinite}
@keyframes caer{to{transform:translateY(100vh) rotate(20deg)}}
@media (prefers-reduced-motion:reduce){.lluvia{display:none}}
.contador{position:relative;z-index:1;display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}
.contador div{background:#fff;border-radius:var(--radio);padding:.7rem 1.1rem;min-width:78px;box-shadow:var(--sombra)}
.contador b{display:block;font:700 1.8rem var(--f-titulo);color:var(--rosa-600)}
.contador span{font-size:.8rem}

.desde{font:italic 1.1rem var(--f-titulo);color:var(--rosa-800)}

/* SOBRE */
.sobre{display:grid;grid-template-columns:1fr 1.3fr;gap:2rem;align-items:center}
.sobre img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radio);box-shadow:var(--sombra);background:var(--rosa-200)}
.sobre h2{margin-bottom:.8rem}
@media (max-width:700px){.sobre{grid-template-columns:1fr}}

/* GALERÍA (se acomoda sola) */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.2rem}
.card{background:#fff;border-radius:var(--radio);overflow:hidden;box-shadow:var(--sombra);transition:transform .25s;margin:0}
.card:hover{transform:translateY(-6px) rotate(-1deg)}
.card img{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--rosa-200)}
.card figcaption{padding:.8rem 1rem;text-align:center}
.card small{display:block;color:var(--rosa-400)}

/* LIGHTBOX */
.lightbox{position:fixed;inset:0;z-index:50;display:none;place-items:center;align-content:center;gap:.8rem;background:rgba(90,42,61,.88);color:#fff}
.lightbox.open{display:grid}
.lightbox img{max-height:78vh;max-width:90vw;border-radius:var(--radio)}
.lightbox__x,.lightbox__nav{position:absolute;background:none;border:0;color:#fff;font-size:2.4rem}
.lightbox__x{top:1rem;right:1.5rem}.prev{left:1rem}.next{right:1rem}
.lightbox__nav{top:50%}

/* LÍNEA DE TIEMPO */
.timeline{list-style:none;border-left:3px solid var(--rosa-400);padding-left:1.6rem}
.timeline li{position:relative;margin-bottom:2rem}
.timeline li::before{content:"";position:absolute;left:-2.15rem;top:.35rem;width:14px;height:14px;border-radius:50%;background:var(--rosa-600)}
.timeline__fecha{font-weight:600;color:var(--rosa-600)}

/* CARTAS */
.letters{display:grid;gap:1rem;max-width:700px;margin:0 auto}
.letter{background:#fff;border:2px dashed var(--rosa-400);border-radius:var(--radio);padding:1rem 1.5rem;box-shadow:var(--sombra)}
.letter summary{font:600 1.2rem var(--f-titulo);color:var(--rosa-800);list-style:none}
.letter summary::before{content:"💌 "}
.letter[open] summary::before{content:"💖 "}
.letter p{margin-top:1rem;white-space:pre-line}
.letter small{color:var(--rosa-400)}

/* MENSAJE FINAL */
.mensaje{text-align:center}
.mensaje p{margin:1.5rem auto 0;font:italic 1.4rem var(--f-titulo);animation:sube .8s}
@keyframes sube{from{opacity:0;transform:translateY(15px)}}

/* PANTALLA DE BIENVENIDA */
.intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;text-align:center;
  background:linear-gradient(160deg,var(--rosa-100),var(--rosa-200));transition:opacity .7s}
.intro.out{opacity:0;pointer-events:none}
.intro__sobre{font-size:5rem;animation:late 1.6s infinite}
.intro h2{margin:.5rem 0 1.2rem}
@keyframes late{50%{transform:scale(1.15)}}

/* PUERTA (contraseña con calendario) */
.gate{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1rem;
  background:linear-gradient(160deg,var(--rosa-100),var(--rosa-200) 70%,var(--rosa-400));transition:opacity .6s}
.modal__titulo{color:var(--rosa-800);text-align:center;text-shadow:0 2px 14px rgba(255,255,255,.6)}
.gate.out{opacity:0;pointer-events:none}
.gate__box{background:#fff;border-radius:var(--radio);padding:2rem;max-width:380px;width:100%;text-align:center;display:grid;gap:1rem;box-shadow:var(--sombra)}
.gate__icon{font-size:3rem}
.gate__error{color:var(--rosa-600);font-weight:600}
.tiembla{animation:tiembla .4s}
@keyframes tiembla{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
body.bloqueado{overflow:hidden}

/* CALENDARIO */
.cal{display:grid;gap:.8rem}
.cal__bar{display:flex;align-items:center;justify-content:space-between;background:var(--rosa-100);border-radius:999px;padding:.3rem}
.cal__bar b{font:600 1.2rem var(--f-titulo);color:var(--rosa-800);text-transform:capitalize}
.cal__flecha{width:38px;height:38px;border:0;border-radius:50%;background:#fff;color:var(--rosa-600);font-size:1.4rem;line-height:1;box-shadow:var(--sombra);transition:background .2s}
.cal__flecha:hover{background:var(--rosa-200)}
.cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem}
.cal__dia{aspect-ratio:1;border:0;border-radius:50%;background:var(--rosa-50);color:var(--texto);font:600 .95rem var(--f-texto);transition:background .2s,transform .2s}
.cal__dia:hover{background:var(--rosa-200)}
.cal__dia.sel{background:var(--rosa-600);color:#fff;transform:scale(1.12);box-shadow:var(--sombra)}
.cal__sel{font:italic 1.05rem var(--f-titulo);color:var(--rosa-800)}

/* EDITAR / AGREGAR / ELIMINAR (sin código) */
.btn--agregar{display:block;margin:1.3rem auto 0}
.lapiz{border:0;background:none;cursor:pointer;font-size:.85em;opacity:.6;vertical-align:middle;margin-left:.3rem}
.lapiz:hover{opacity:1}
.borrar{position:absolute;top:.4rem;right:.4rem;z-index:2;border:0;background:rgba(255,255,255,.9);
  border-radius:50%;width:30px;height:30px;font-size:1rem;box-shadow:var(--sombra)}
.borrar--linea{position:static;float:right}
.card{position:relative}
.letter{position:relative}
.letter .borrar{top:.6rem;right:.6rem}
.modal__icon{width:56px;height:56px;margin:0 auto;border-radius:50%;background:var(--rosa-100);
  display:grid;place-items:center;font:700 1.8rem var(--f-texto);color:var(--rosa-600);line-height:1}
.modal__box{gap:.9rem}
.modal__box textarea{font:600 1rem var(--f-texto);padding:.7rem 1rem;border:2px dashed var(--rosa-400);
  border-radius:var(--radio);color:var(--rosa-800);background:var(--rosa-50);resize:vertical;width:100%}
.modal__box input[type=text],.modal__box input[type=date]{
  font:600 1rem var(--f-texto);padding:.7rem 1rem;border:2px dashed var(--rosa-400);border-radius:var(--radio);
  color:var(--rosa-800);background:var(--rosa-50);width:100%}
.archivo{display:flex;justify-content:center;cursor:pointer}
.archivo__btn{padding:.65rem 1.6rem;border-radius:999px;background:var(--rosa-600);color:#fff;
  font:600 .95rem var(--f-texto);white-space:nowrap}
.archivo__nombre{text-align:center;color:var(--rosa-800);font:600 .85rem var(--f-texto);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:-.4rem}
.btn-fecha{width:100%;text-align:center;font:600 1rem var(--f-texto);padding:.7rem 1rem;
  border:2px dashed var(--rosa-400);border-radius:var(--radio);color:var(--rosa-800);background:var(--rosa-50)}
.btn-fecha:hover{background:var(--rosa-100)}
.cal__acciones{display:flex;justify-content:center;gap:1.2rem}
.cerrar-modal{border:0;background:none;color:var(--rosa-600);text-decoration:underline;font:600 .95rem var(--f-texto)}