/* ─────────────────────────────────────────────────────────
   La Boda Nuestra — Estilos de la invitación (renderer)
   Compartido por editor, vista previa y página pública.
   Colores y tipografías llegan como variables desde la
   Template Definition (--inv-*). Mobile-first con container
   queries: el preview de dispositivo del editor se comporta
   igual que la invitación publicada.
   ───────────────────────────────────────────────────────── */

.inv{
  --inv-texture:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.38 0 0 0 0 0.28 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  container-type:inline-size;
  position:relative;
  max-width:600px;
  margin:0 auto;
  overflow:hidden;
  background:var(--inv-paper);
  color:var(--inv-ink);
  font-family:var(--inv-font-body);
  font-size:16px;
  line-height:1.6;
  text-align:center;
  -webkit-font-smoothing:antialiased;
}
.inv *,.inv *::before,.inv *::after{box-sizing:border-box}
.inv [hidden]{display:none!important}
.inv p,.inv h1,.inv h2,.inv h3,.inv ol,.inv figure{margin:0}

/* ── Secciones ─────────────────────────────────────────── */
.inv-section{position:relative;padding:64px 24px;background-color:var(--inv-paper)}
.inv--texture .inv-section{background-image:var(--inv-texture)}
.inv-alt{background-color:var(--inv-paper2)}
.inv-inner{position:relative;max-width:460px;margin:0 auto}

/* Bordes rasgados (papel) */
.inv-torn{z-index:2}
.inv-torn::after{
  content:'';position:absolute;left:0;right:0;bottom:-15px;height:16px;z-index:3;
  background:var(--inv-paper);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 16' preserveAspectRatio='none'%3E%3Cpath d='M0 0H200V8L190 14L178 9L166 15L150 10L138 16L120 9L106 15L92 10L78 16L62 9L48 15L34 10L20 16L8 10L0 14Z'/%3E%3C/svg%3E") repeat-x;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 16' preserveAspectRatio='none'%3E%3Cpath d='M0 0H200V8L190 14L178 9L166 15L150 10L138 16L120 9L106 15L92 10L78 16L62 9L48 15L34 10L20 16L8 10L0 14Z'/%3E%3C/svg%3E") repeat-x;
  -webkit-mask-size:200px 16px;mask-size:200px 16px;
}
.inv--texture .inv-torn::after{background-image:var(--inv-texture)}

/* ── Decoración ────────────────────────────────────────── */
.inv-decor{display:block;width:190px;max-width:70%;height:auto;margin:0 auto 20px;color:var(--inv-accent-soft)}
.inv-decor--bottom{margin:32px auto 0;transform:scaleX(-1)}
.inv-decor--line{width:160px}

/* ── Tipografía ────────────────────────────────────────── */
.inv-monogram{
  display:flex;align-items:center;justify-content:center;
  width:66px;height:66px;margin:0 auto 18px;border-radius:50%;
  border:1px solid var(--inv-accent-soft);
  font-family:var(--inv-font-title);font-size:17px;letter-spacing:.14em;color:var(--inv-accent);
}
.inv-monogram--small{width:50px;height:50px;font-size:13px;margin-top:24px}
.inv-eyebrow{font-size:12px;font-weight:600;letter-spacing:.32em;text-transform:uppercase;color:var(--inv-accent);margin-bottom:10px}
.inv-names{font-family:var(--inv-font-script);font-weight:400;font-size:52px;font-size:clamp(44px,13cqi,74px);line-height:1.02;color:var(--inv-ink);margin-bottom:16px}
.inv-names span{display:block}
.inv-names__amp{font-size:.55em;color:var(--inv-accent);margin:2px 0}
.inv[data-fonts="serif"] .inv-names{font-style:italic;font-weight:500}
.inv[data-fonts="modern"] .inv-names{font-size:48px;font-size:clamp(40px,12cqi,66px)}
.inv-date{font-family:var(--inv-font-title);font-size:20px;color:var(--inv-ink)}
.inv-date::first-letter{text-transform:uppercase}
.inv-date-short{margin-top:18px;font-size:12px;font-weight:600;letter-spacing:.3em;color:var(--inv-accent)}
.inv-lead{max-width:380px;margin:0 auto 8px;font-family:var(--inv-font-title);font-style:italic;font-size:21px;line-height:1.45;color:var(--inv-muted)}
.inv-title{font-family:var(--inv-font-title);font-weight:500;font-size:34px;font-size:clamp(30px,8cqi,42px);line-height:1.15;color:var(--inv-ink);margin-bottom:14px}
.inv[data-fonts="modern"] .inv-title{font-size:22px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.inv-intro{color:var(--inv-muted);margin-bottom:24px}
.inv-signature{margin:16px 0 4px;font-family:var(--inv-font-script);font-size:36px;font-size:clamp(30px,9cqi,46px);line-height:1.2;color:var(--inv-accent)}
.inv[data-fonts="serif"] .inv-signature{font-style:italic}
.inv-made{margin-top:30px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--inv-muted)}
.inv-placeholder{opacity:.5;font-style:italic}

/* ── Fotografías: el frame lo define el template ─────── */
.inv-photo{position:relative;overflow:hidden;margin:28px auto;background:var(--inv-paper2)}
.inv-photo img{display:block;width:100%;height:100%;object-fit:cover}
.inv-photo--arch{width:min(78%,340px);aspect-ratio:3/4;border-radius:999px 999px 14px 14px;border:1px solid var(--inv-accent-soft);padding:6px;background:transparent}
.inv-photo--arch img{border-radius:999px 999px 10px 10px}
.inv-photo--frame-rect{border-radius:4px;padding:0;border:0;aspect-ratio:4/5;width:min(84%,380px)}
.inv-photo--frame-rect img{border-radius:0}
.inv-photo--rect{width:min(84%,380px);aspect-ratio:4/5;border-radius:4px}
.inv-photo--rounded{width:min(92%,420px);aspect-ratio:4/3;border-radius:18px}
.inv-photo--circle{width:96px;height:96px;border-radius:50%;margin:0 auto 12px}
.inv-photo--empty{display:flex;align-items:center;justify-content:center;border:1px dashed var(--inv-accent-soft);background:transparent}
.inv-photo__hint{font-size:13px;color:var(--inv-muted)}

/* ── Historia ──────────────────────────────────────────── */
.inv-timeline{list-style:none;padding:0;margin-top:12px}
.inv-moment{position:relative;padding:22px 0}
.inv-moment::before{content:'';display:block;width:9px;height:9px;margin:0 auto 12px;border-radius:50%;background:var(--inv-accent-soft)}
.inv-moment+.inv-moment{border-top:1px solid color-mix(in srgb, var(--inv-accent-soft) 45%, transparent)}
.inv-moment__year{font-family:var(--inv-font-title);font-size:28px;line-height:1.1;color:var(--inv-accent)}
.inv-moment__title{margin:6px 0 8px;font-family:var(--inv-font-body);font-size:12px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--inv-ink)}
.inv-moment__text{max-width:340px;margin:0 auto;color:var(--inv-muted)}

/* ── Detalles ──────────────────────────────────────────── */
.inv-cards{display:grid;gap:16px;margin-top:24px}
@container (min-width:520px){ .inv-cards{grid-template-columns:1fr 1fr} }
.inv-card{padding:26px 18px;border:1px solid var(--inv-accent-soft);border-radius:16px;background:var(--inv-paper2)}
.inv-card__label{margin-bottom:8px;font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--inv-accent)}
.inv-card__name{margin-bottom:6px;font-family:var(--inv-font-title);font-size:25px;font-weight:500;line-height:1.2}
.inv-card__address,.inv-card__when{margin-bottom:6px;font-size:14px;color:var(--inv-muted)}
.inv-card__when::first-letter{text-transform:uppercase}
.inv-note{margin-top:24px;padding-top:22px;border-top:1px solid var(--inv-accent-soft)}
.inv-note__title{margin-bottom:4px;font-family:var(--inv-font-title);font-size:24px}
.inv-note__text{font-size:14px;color:var(--inv-muted)}
.inv-note__code{margin:8px 0;font-size:13px;letter-spacing:.12em}

/* ── Botones ───────────────────────────────────────────── */
.inv-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}
.inv-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 22px;border-radius:999px;font-family:var(--inv-font-body);font-size:13px;font-weight:600;letter-spacing:.06em;text-decoration:none;cursor:pointer}
.inv-btn--ghost{border:1px solid var(--inv-accent);color:var(--inv-accent);background:transparent}
.inv-btn--solid{margin-top:20px;border:0;background:var(--inv-button);color:var(--inv-button-ink)}
.inv-btn:focus-visible,.inv-music__btn:focus-visible{outline:2px solid var(--inv-accent);outline-offset:3px}

/* ── Cuenta regresiva ──────────────────────────────────── */
.inv-band{background-color:var(--inv-button);color:var(--inv-button-ink)}
.inv--texture .inv-band{background-image:none}
.inv-band .inv-title,.inv-band .inv-date-short{color:inherit}
.inv-countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:380px;margin:20px auto 6px}
.inv-countdown__cell{padding:12px 4px;border:1px solid color-mix(in srgb, currentColor 35%, transparent);border-radius:12px}
.inv-countdown__num{display:block;font-family:var(--inv-font-title);font-size:34px;font-size:clamp(28px,9cqi,42px);line-height:1.1;font-variant-numeric:tabular-nums}
.inv-countdown__unit{font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.85}
.inv-countdown__done{margin:16px 0;font-family:var(--inv-font-title);font-size:26px}

/* ── Música (sin autoplay; control visible) ────────────── */
.inv-music{position:fixed;right:16px;bottom:16px;z-index:50}
.inv-music__btn{min-height:44px;padding:10px 18px;border:0;border-radius:999px;background:var(--inv-button);color:var(--inv-button-ink);font-family:var(--inv-font-body);font-size:13px;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,.18);cursor:pointer}

@media (prefers-reduced-motion:reduce){ .inv *{transition:none!important;animation:none!important} }
