/* ==============================================================
   Boda Andrea & Daniel
   Archetype: Ilustrado tierno / doodle a mano
   Paleta: crema #FFF8F3, rosa #F4AAC0, rosa profundo #E8829F,
           tinta #2E2620 (líneas de los personajes y texto)
   Tipografía: Baloo 2 (títulos redondeados), Quicksand (cuerpo)
   ============================================================== */

:root{
  --cream:#FFF8F3;
  --cream-2:#FFF1E9;
  --pink:#F4AAC0;
  --pink-deep:#E8829F;
  --pink-soft:#FCE4EC;
  --ink:#2E2620;
  --ink-soft:#6B5F56;
  --line: rgba(46,38,32,.14);
  --radius: 18px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; overflow-x:hidden; }
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Quicksand', sans-serif;
  font-size:16px;
  line-height:1.6;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }
a{ color:inherit; }
button{ font-family:inherit; }

.display{ font-family:'Baloo 2', sans-serif; font-weight:700; }

/* ---------------- Barra superior ---------------- */
.topbar{
  position:sticky;
  top:0;
  z-index:60;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  padding:14px 16px;
  background:rgba(255,248,243,.85);
  backdrop-filter:blur(6px);
  max-width:100vw;
}
.topbar .lbl{
  font-size:13px;
  color:var(--ink-soft);
  display:flex;
  align-items:center;
  gap:6px;
  white-space:nowrap;
  flex-shrink:1;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.topbar .switch{ flex-shrink:0; }
@media (max-width:400px){
  .topbar .lbl{ font-size:11.5px; }
}
.switch{
  position:relative;
  width:44px; height:24px;
  border-radius:999px;
  background:#e7ddd3;
  border:none;
  cursor:pointer;
  padding:0;
  transition:.25s;
}
.switch::before{
  content:'';
  position:absolute;
  top:3px; left:3px;
  width:18px; height:18px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.25);
  transition:.25s;
}
.switch.on{ background:var(--pink-deep); }
.switch.on::before{ left:23px; }

/* ---------------- Hero ---------------- */
.hero{
  position:relative;
  max-width:640px;
  margin:0 auto;
  padding:10px 24px 50px;
  text-align:center;
  overflow:hidden;
}
.floating-heart{
  position:absolute;
  color:var(--pink-deep);
  opacity:.85;
}
.hero h1.title{
  font-size:clamp(30px,7vw,42px);
  margin:6px 0 18px;
}
.hero .illustration{
  width:min(100%, 380px);
  height:auto;
  margin:0 auto 6px;
  object-fit:contain;
}
.ribbon{
  display:inline-block;
  background:var(--pink);
  color:#fff;
  padding:12px 34px;
  border-radius:999px;
  font-family:'Baloo 2', sans-serif;
  font-weight:700;
  font-size:clamp(22px,5vw,30px);
  margin:8px 0 18px;
  box-shadow:0 3px 0 rgba(0,0,0,.06);
}
.date-line{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  font-family:'Baloo 2', sans-serif;
  font-weight:700;
  font-size:clamp(24px,5.5vw,32px);
  color:var(--ink);
  margin:0 0 10px;
}
.date-line .dash{ color:var(--pink-deep); }
.hero .subtitle{ color:var(--ink-soft); font-size:16px; margin:0; }

/* ---------------- Detalles (4 columnas) ---------------- */
.detalles{
  max-width:980px;
  margin:0 auto;
  padding:30px 24px 10px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:24px;
  text-align:center;
}
.detalle-card .icon{ width:72px; height:72px; margin:0 auto 10px; object-fit:contain; }
.detalle-card h3{
  font-family:'Baloo 2', sans-serif;
  font-size:19px;
  margin:0 0 12px;
}
.detalle-card p{ margin:0 0 4px; font-size:14.5px; color:var(--ink-soft); }
.detalle-card p.dest{ color:var(--ink); font-weight:600; }
.pill{
  display:inline-block;
  background:var(--pink-soft);
  color:var(--pink-deep);
  font-weight:700;
  padding:6px 16px;
  border-radius:999px;
  font-size:14px;
  margin-top:8px;
}
.map-link{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-top:10px;
  background:var(--pink-soft);
  color:var(--pink-deep);
  border:none;
  padding:8px 16px;
  border-radius:999px;
  font-size:13px;
  font-weight:700;
  text-decoration:none;
  cursor:pointer;
}
.map-link svg{ width:14px; height:14px; }

/* ---------------- Caja "te esperamos" ---------------- */
.care-box{
  max-width:900px;
  margin:50px auto;
  padding:36px 24px;
  border:2px solid var(--pink-soft);
  border-radius:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:28px;
  text-align:center;
  flex-wrap:nowrap;
}
.care-box .char{ width:110px; height:170px; flex-shrink:0; object-fit:contain; }
.care-box .msg{ max-width:340px; min-width:0; flex:1 1 auto; }
.care-box .msg p{ margin:0 0 6px; font-size:17px; }
.care-box .msg .cta{
  font-family:'Baloo 2', sans-serif;
  color:var(--pink-deep);
  font-size:22px;
  margin-top:8px;
}

/* ---------------- Acciones (4 columnas) ---------------- */
.acciones{
  max-width:980px;
  margin:0 auto;
  padding:10px 24px 40px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:24px;
  text-align:center;
}
.accion-card h3{
  font-family:'Baloo 2', sans-serif;
  font-size:18px;
  margin:0 0 12px;
}
.accion-card .icon{ width:72px; height:72px; margin:0 auto 10px; object-fit:contain; }
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:none;
  background:var(--pink);
  color:#fff;
  padding:11px 20px;
  border-radius:999px;
  font-weight:700;
  font-size:14px;
  cursor:pointer;
  transition:.2s;
  text-decoration:none;
}
.btn:hover{ background:var(--pink-deep); }
.btn.outline{ background:transparent; color:var(--pink-deep); border:2px solid var(--pink-soft); }
.btn svg{ width:16px; height:16px; }

.countdown{
  display:flex;
  gap:10px;
  justify-content:center;
  font-family:'Baloo 2', sans-serif;
  flex-wrap:wrap;
}
.countdown .unit{ text-align:center; min-width:52px; }
.countdown .num{
  font-size:clamp(22px, 4.8vw, 28px);
  background:var(--pink-soft);
  border-radius:10px;
  padding:4px 0;
  color:var(--pink-deep);
}
.countdown .lbl{
  font-size:9.5px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink-soft);
  margin-top:4px;
}

/* ---------------- Paneles interactivos (RSVP / regalos / álbum) --- */
.overlay{
  position:fixed; inset:0;
  background:rgba(46,38,32,.45);
  display:none;
  align-items:flex-start;
  justify-content:center;
  padding:40px 16px;
  overflow-y:auto;
  z-index:200;
}
.overlay.open{ display:flex; }
.panel{
  background:var(--cream);
  border-radius:28px;
  max-width:560px;
  width:100%;
  padding:34px 28px 30px;
  position:relative;
  text-align:left;
}
.panel .panel-close{
  position:absolute;
  top:16px; right:18px;
  border:none;
  background:var(--pink-soft);
  color:var(--pink-deep);
  width:32px; height:32px;
  border-radius:50%;
  font-size:16px;
  cursor:pointer;
  line-height:1;
}
.panel h2{
  font-family:'Baloo 2', sans-serif;
  font-size:26px;
  text-align:center;
  margin:0 0 4px;
  color:var(--pink-deep);
}
.panel .panel-sub{ text-align:center; color:var(--ink-soft); font-size:14px; margin:0 0 24px; }

.field{ margin-bottom:16px; }
.field label{
  display:block;
  font-size:12.5px;
  font-weight:700;
  color:var(--ink-soft);
  margin-bottom:6px;
}
.field input[type=text],
.field input[type=number],
.field select,
.field textarea{
  width:100%;
  padding:11px 14px;
  border:2px solid var(--pink-soft);
  border-radius:14px;
  background:#fff;
  font-family:'Quicksand', sans-serif;
  font-size:15px;
  color:var(--ink);
}
.field textarea{ resize:vertical; min-height:80px; }
.radio-row{ display:flex; gap:18px; }
.radio-row label{
  display:flex; align-items:center; gap:6px;
  font-weight:500; font-size:14.5px; color:var(--ink); margin-bottom:0;
}
.panel .btn{ width:100%; justify-content:center; margin-top:6px; }
.rsvp-msg{ margin-top:14px; font-size:14px; text-align:center; }
.rsvp-msg.ok{ color:#2e6b45; }
.rsvp-msg.err{ color:#a13d3d; }
.wa-link{
  display:flex; align-items:center; justify-content:center; gap:8px;
  margin-top:12px; text-decoration:none;
  border:2px solid var(--pink-soft); border-radius:999px;
  padding:10px 18px; font-size:13.5px; font-weight:700; color:var(--pink-deep);
}

/* Regalos */
.regalo-item{
  border:2px solid var(--pink-soft);
  border-radius:18px;
  padding:16px 18px;
  margin-bottom:12px;
}
.regalo-item h4{ margin:0 0 4px; font-family:'Baloo 2', sans-serif; font-size:16px; color:var(--pink-deep); }
.regalo-item p{ margin:0; font-size:14px; color:var(--ink-soft); }

/* Álbum */
.galeria-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-bottom:20px;
}
.galeria-grid .ph{
  aspect-ratio:1;
  background:var(--pink-soft);
  border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  font-size:11px; color:var(--pink-deep); font-weight:700;
  cursor:pointer; overflow:hidden;
}
.galeria-grid .ph img{ width:100%; height:100%; object-fit:cover; }
.album-upload{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.album-upload input[type=file]{ flex:1; min-width:160px; font-size:13px; }

.firmas-list{
  margin-top:22px;
  display:flex; flex-direction:column; gap:12px;
  max-height:220px; overflow-y:auto;
}
.firma{ border-left:3px solid var(--pink); padding:2px 0 2px 14px; }
.firma .autor{ font-size:13.5px; font-weight:700; color:var(--ink); }
.firma .texto{ font-style:italic; color:var(--ink-soft); margin:2px 0 0; font-size:14px; }

/* Lightbox */
.lightbox{
  position:fixed; inset:0; background:rgba(46,38,32,.92);
  display:none; align-items:center; justify-content:center;
  z-index:300; padding:24px;
}
.lightbox.open{ display:flex; }
.lightbox img{ max-height:86vh; border-radius:12px; }
.lightbox .close{
  position:absolute; top:20px; right:26px;
  color:#fff; font-size:28px; cursor:pointer; background:none; border:none;
}

/* ---------------- Footer ---------------- */
.footer{
  text-align:center;
  padding:36px 24px 20px;
  color:var(--ink-soft);
}
.footer .care-box{
  display:block;
  max-width:420px;
  width:min(100%, 420px);
  height:auto;
  margin:24px auto 0;
  padding:0;
  border:none;
  border-radius:0;
  background:transparent;
}
.footer .divider{ color:var(--pink-deep); margin-bottom:14px; }
.footer .signoff{ font-size:14px; margin:0 0 4px; }
.footer .names{
  font-family:'Baloo 2', sans-serif;
  font-size:26px;
  color:var(--ink);
  margin:0 0 22px;
}
.footer .brand{
  font-size:12px;
  letter-spacing:.04em;
  padding-top:16px;
  border-top:1px solid var(--line);
  max-width:280px;
  margin:0 auto;
}
.footer .brand a{ color:var(--pink-deep); font-weight:700; text-decoration:none; }

/* ---------------- Responsive ---------------- */
@media (max-width:860px){
  .detalles{ grid-template-columns:repeat(2,1fr); }
  .acciones{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:640px){
  .hero{ padding:10px 16px 30px; }
  .hero .subtitle{ font-size:14px; }
  .date-line{ gap:8px; font-size:clamp(20px, 6vw, 26px); }
  .care-box{ padding:24px 14px; gap:12px; flex-wrap:nowrap; }
  .care-box .char{ width:90px; height:138px; }
  .care-box .msg p{ font-size:15px; }
}
@media (max-width:520px){
  .detalles{ grid-template-columns:1fr; }
  .acciones{ grid-template-columns:1fr; }
  .galeria-grid{ grid-template-columns:repeat(2,1fr); }
  .care-box{ padding:22px 12px; gap:10px; flex-wrap:nowrap; }
  .care-box .char{ width:70px; height:107px; }
  .care-box .msg p{ font-size:13px; }
  .care-box .msg .cta{ font-size:19px; }
  .detalle-card .icon,
  .accion-card .icon{ width:78px; height:78px; }
}
@media (max-width:380px){
  .care-box{ padding:18px 8px; gap:8px; }
  .care-box .char{ width:54px; height:83px; }
  .care-box .msg p{ font-size:11.5px; margin-bottom:4px; }
  .care-box .msg .cta{ font-size:16px; }
}

/* ---------------- Placeholders de gráficos (hasta subir las imágenes reales) --- */
.ph-slot{
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  background:var(--pink-soft);
  border:2px dashed var(--pink);
  border-radius:14px;
  color:var(--pink-deep);
  font-size:10.5px;
  font-weight:700;
  line-height:1.4;
  padding:6px;
  white-space:pre-line;
}
.illustration.ph-slot{ font-size:13px; border-radius:20px; }
.char.ph-slot{ border-radius:20px; }
