/* Invitario event page: 8 templates (.t-<tpl>) on one layout. Mobile-first (390px), fonts self-hosted (SIL OFL, Google Fonts). */
@font-face{font-family:"Great Vibes";src:url(/app/fonts/GreatVibes.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Parisienne";src:url(/app/fonts/Parisienne.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Dancing Script";src:url(/app/fonts/DancingScript.woff2) format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(/app/fonts/CormorantGaramond.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Playfair Display";src:url(/app/fonts/PlayfairDisplay.woff2) format("woff2");font-weight:400 900;font-display:swap}
@font-face{font-family:"Montserrat";src:url(/app/fonts/Montserrat.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Fredoka";src:url(/app/fonts/Fredoka.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Quicksand";src:url(/app/fonts/Quicksand.woff2) format("woff2");font-weight:300 700;font-display:swap}
.iv{--bg:#fff;--ink:#222;--muted:#666;--paper:#fff;--line:#0002;--acc:#0b7285;--acc-ink:#fff;--gold:#c9a24b;--orn:var(--gold);--f-script:"Great Vibes",cursive;--f-disp:"Cormorant Garamond",Georgia,serif;--f-body:"Montserrat",system-ui,sans-serif;--r:18px;--shadow:0 8px 30px #0000001a;
  position:relative;min-height:100vh;background:var(--bg);font-variant-numeric:lining-nums;color:var(--ink);font:16px/1.55 var(--f-body);text-align:center;overflow-x:hidden;padding-bottom:calc(30px + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased}
.iv *{box-sizing:border-box}.iv a{color:inherit}
.iv .testb{position:absolute;top:8px;right:8px;z-index:3;background:#ffd43b;color:#222;font:700 12px/1 system-ui;padding:5px 9px;border-radius:99px}
.iv .hero{position:relative;max-width:560px;margin:0 auto;padding:30px 22px 10px}
.iv .ornw{color:var(--orn);margin:0 auto 6px;max-width:300px}.iv .orn{display:block;width:100%;height:auto}.iv .orn.picado{position:absolute;left:0;right:0;top:0;width:100%;height:52px;max-width:none}
.iv .kick{font:600 15px/1.3 var(--f-body);letter-spacing:.32em;text-transform:uppercase;color:var(--muted);margin:8px 0 2px}
.iv .hosts{font:400 clamp(52px,15vw,76px)/1.05 var(--f-script);margin:4px 0 14px;color:var(--ink);overflow-wrap:anywhere}
.iv .ph{margin:8px auto 18px;width:min(78%,300px);aspect-ratio:4/5;border-radius:999px 999px 18px 18px;overflow:hidden;border:3px solid var(--gold);box-shadow:var(--shadow),0 0 0 8px color-mix(in srgb,var(--gold) 22%,transparent);background:var(--paper)}
.iv .ph img{width:100%;height:100%;object-fit:cover;display:block}
.iv .sub{font:500 italic 21px/1.4 var(--f-disp);margin:6px auto 18px;max-width:30ch;color:var(--ink)}
.iv .dateb{display:flex;align-items:center;justify-content:center;gap:14px;margin:10px auto 2px;max-width:330px;font-family:var(--f-body)}
.iv .dw,.iv .dm{flex:1;text-transform:uppercase;letter-spacing:.2em;font-size:13px;font-weight:600;padding:8px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.iv .dn{font:600 54px/1 var(--f-disp);color:var(--gold);min-width:60px}
.iv .yr{margin:4px 0 18px;letter-spacing:.2em;font-size:14px;color:var(--muted)}
.iv .hi{background:color-mix(in srgb,var(--paper) 85%,transparent);border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin:0 auto 14px;max-width:360px;font-weight:600}
.iv .cta{display:inline-block;background:var(--acc);color:var(--acc-ink);font:700 17px/1.2 var(--f-body);letter-spacing:.04em;padding:16px 28px;border-radius:999px;text-decoration:none;border:0;cursor:pointer;box-shadow:0 6px 18px color-mix(in srgb,var(--acc) 45%,transparent);min-height:52px}
.iv .cta.wide{width:100%;margin-top:6px}.iv .cta:disabled{opacity:.6}
.iv section{max-width:560px;margin:0 auto;padding:12px 18px}
.iv h2{font:600 30px/1.2 var(--f-disp);margin:6px 0 14px}
.iv .count .ch{text-transform:uppercase;letter-spacing:.3em;font-size:12px;color:var(--muted);margin:10px 0 10px}
.iv .cd{display:flex;justify-content:center;gap:10px}.iv .cb{background:var(--paper);border:1px solid var(--line);border-radius:14px;width:74px;padding:10px 0 8px;box-shadow:var(--shadow)}
.iv .cb b{display:block;font:600 30px/1.1 var(--f-disp);color:var(--ink)}.iv .cb span{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.iv .div{display:flex;align-items:center;justify-content:center;gap:10px;margin:18px auto 4px;max-width:240px;color:var(--gold)}.iv .div span{flex:1;height:1px;background:currentColor;opacity:.6}.iv .div svg{width:14px;height:14px;fill:currentColor}
.iv .details{display:grid;gap:14px}
.iv .card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:20px 18px 18px;box-shadow:var(--shadow)}
.iv .card .ci{font-size:26px;line-height:1}.iv .card h3{font:600 13px/1.3 var(--f-body);text-transform:uppercase;letter-spacing:.24em;color:var(--muted);margin:8px 0 6px}
.iv .card p{margin:2px 0}.iv .big{font:600 22px/1.3 var(--f-disp)}.iv .pre{white-space:pre-line;text-align:left}
.iv .row2{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}
.iv .btn2{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 16px;border-radius:999px;border:1.5px solid var(--acc);color:var(--ink);background:transparent;font:600 15px/1.2 var(--f-body);text-decoration:none;cursor:pointer;list-style:none}
.iv .btn2::-webkit-details-marker{display:none}.iv .calm{margin-top:12px}.iv .calm[open] summary{opacity:.6}
.iv .gg{display:grid;grid-template-columns:1fr 1fr;gap:8px}.iv .gg img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;display:block}
.iv .song iframe{width:100%;border:0;border-radius:14px}.iv .song iframe.youtube{aspect-ratio:16/9}.iv .song iframe.spotify{height:152px}
.iv .rsvp{padding-bottom:20px}.iv .by{color:var(--muted);margin:-6px 0 12px}
.iv #rbox{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:20px 18px;text-align:left;box-shadow:var(--shadow)}
.iv .lbl{display:block;font-weight:700;font-size:15px;margin:12px 0 6px;padding:0}
.iv input:not([type=radio]),.iv textarea{width:100%;font:16px/1.4 var(--f-body);padding:13px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;color:#222;min-height:48px}
.iv input:focus,.iv textarea:focus{outline:2px solid var(--acc);outline-offset:1px}
.iv .att{border:0;padding:0;margin:0;display:grid;gap:8px}.iv .opt{display:block;cursor:pointer}.iv .opt input{position:absolute;opacity:0;pointer-events:none}
.iv .opt span{display:block;padding:13px 14px;border-radius:12px;border:1.5px solid var(--line);font-weight:600;background:color-mix(in srgb,var(--paper) 70%,#fff 30%);color:var(--ink)}
.iv .opt input:checked+span{border-color:var(--acc);background:var(--acc);color:var(--acc-ink)}.iv .opt input:focus-visible+span{outline:2px solid var(--acc);outline-offset:2px}
.iv .step{display:flex;align-items:center;gap:14px}.iv .step button{width:48px;height:48px;border-radius:50%;border:1.5px solid var(--acc);background:transparent;color:var(--ink);font:700 24px/1 var(--f-body);cursor:pointer}.iv .step button:disabled{opacity:.35}
.iv .step output{font:700 26px/1 var(--f-body);min-width:30px;text-align:center}.iv .hint,.iv .forn{color:var(--muted);font-size:14px;margin:6px 0 0}.iv .forn{margin:0 0 4px;font-weight:600}
.iv .hpw{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.iv .err{color:#c92a2a;font-weight:700;min-height:1px;margin:10px 0 0;background:#fff;border-radius:8px}.iv .err:empty{display:none}.iv .err:not(:empty){padding:8px 10px}
.iv .done{text-align:center}.iv .done p{margin:6px 0}
.iv .ivf{max-width:560px;margin:10px auto 0;padding:14px 18px 10px;font-size:13px;color:var(--muted)}.iv .ivf a{color:var(--muted)}.iv .made{margin:0 0 8px;font-weight:600}
.iv #repd summary{cursor:pointer;list-style:none;text-decoration:underline;opacity:.8}.iv #repf{text-align:left;background:var(--paper);padding:14px;border-radius:14px;margin-top:10px;display:grid;gap:8px;color:var(--ink)}.iv .rr{display:block}
.iv .sticky{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom));z-index:5;background:var(--acc);color:var(--acc-ink);font:700 16px/1 var(--f-body);padding:16px 26px;border-radius:999px;text-decoration:none;box-shadow:0 8px 24px #0005;white-space:nowrap}
.iv .sticky[hidden]{display:none}
.iv.miss{display:flex;align-items:center;min-height:100vh}.iv.thumb{min-height:0;pointer-events:none}

/* ---- XV años elegante: plum night, champagne gold, script names, arch photo */
.t-xv{--bg:radial-gradient(120% 60% at 50% 0,#6a2463 0,#3a1039 45%,#1f0a22 100%);--ink:#fff3f8;--muted:#e9c9dc;--paper:#ffffff12;--line:#e7c08a55;--acc:#e7c08a;--acc-ink:#2a0c2b;--gold:#e7c08a;--shadow:0 10px 30px #0006;background-attachment:fixed}
.t-xv .hosts{color:#fff;text-shadow:0 2px 24px #e7c08a55}.t-xv .card,.t-xv .cb,.t-xv #rbox{backdrop-filter:blur(4px)}.t-xv .opt span{background:#ffffff14}.t-xv input:not([type=radio]),.t-xv textarea{background:#fff}
.t-xv .hero::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(2px 2px at 12% 18%,#fff8 50%,transparent),radial-gradient(1.6px 1.6px at 80% 12%,#fff9 50%,transparent),radial-gradient(1.4px 1.4px at 66% 42%,#fff6 50%,transparent),radial-gradient(2px 2px at 24% 60%,#e7c08a 50%,transparent),radial-gradient(1.5px 1.5px at 90% 70%,#fff7 50%,transparent)}
/* ---- Boda clásica: ivory paper, sage + gold, Parisienne */
.t-boda{--bg:#fbf8f2;--ink:#38362f;--muted:#7a7466;--paper:#fffdf9;--line:#d9cdb6;--acc:#5b7052;--acc-ink:#fff;--gold:#b08d57;--orn:#7d9271;--f-script:"Parisienne",cursive;--shadow:0 6px 24px #6b5a3a14}
.t-boda::before{content:"";position:absolute;inset:10px;border:1px solid #d9cdb6;outline:1px solid #e9e0cf;outline-offset:-6px;pointer-events:none;border-radius:4px}
.t-boda .hosts{font-size:clamp(48px,14vw,70px)}.t-boda .ph{border-color:#d9cdb6;box-shadow:var(--shadow),0 0 0 8px #efe6d4}
/* ---- Cumple infantil: confetti, balloons, round and bright */
.t-infantil{--bg:#fff8ea;--ink:#2d2a4a;--muted:#6b6790;--paper:#fff;--line:#2d2a4a1f;--acc:#d92f4a;--acc-ink:#fff;--gold:#ffb300;--orn:#2d2a4a;--f-script:"Fredoka",system-ui,sans-serif;--f-disp:"Fredoka",system-ui,sans-serif;--f-body:"Quicksand",system-ui,sans-serif;--r:24px;
  background-image:radial-gradient(circle at 10% 12%,#ff6b8155 0 5px,transparent 6px),radial-gradient(circle at 85% 8%,#4ecdc455 0 6px,transparent 7px),radial-gradient(circle at 70% 30%,#ffc94d66 0 4px,transparent 5px),radial-gradient(circle at 20% 40%,#6c5ce744 0 4px,transparent 5px),radial-gradient(circle at 92% 50%,#ff6b8144 0 5px,transparent 6px);background-size:260px 320px}
.t-infantil .hosts{font-weight:600;font-size:clamp(50px,15vw,72px);color:#6c5ce7;text-shadow:3px 3px 0 #ffc94d}.t-infantil .kick{color:#d92f4a;letter-spacing:.08em;font:700 22px/1.2 var(--f-disp);text-transform:none}
.t-infantil .sub{font:600 19px/1.4 var(--f-body)}.t-infantil .ph{border-radius:50%;aspect-ratio:1;border:6px dashed #4ecdc4;box-shadow:0 0 0 8px #fff,0 10px 30px #0002}
.t-infantil .dn{font-family:var(--f-disp);color:#d92f4a}.t-infantil .dw,.t-infantil .dm{border-color:#ffc94d;border-width:3px}
.t-infantil .card:nth-child(4n+1){border-top:6px solid #ff6b81}.t-infantil .card:nth-child(4n+2){border-top:6px solid #4ecdc4}.t-infantil .card:nth-child(4n+3){border-top:6px solid #ffc94d}.t-infantil .card:nth-child(4n+4){border-top:6px solid #6c5ce7}
.t-infantil h2,.t-infantil .big,.t-infantil .cb b{font-family:var(--f-disp);font-weight:600}.t-infantil .cb{border-radius:18px}.t-infantil .card h3{letter-spacing:.1em}
/* ---- Cumpleaños adulto: navy art-deco, gold, Playfair */
.t-cumple{--bg:linear-gradient(180deg,#0e1828 0,#14223a 60%,#0e1828);--ink:#f6efe0;--muted:#c9bfa8;--paper:#18263f;--line:#e3b55a55;--acc:#e3b55a;--acc-ink:#0e1828;--gold:#e3b55a;--f-script:"Playfair Display",Georgia,serif;--f-disp:"Playfair Display",Georgia,serif;--shadow:0 10px 30px #0006}
.t-cumple .hosts{font:italic 700 clamp(46px,13vw,66px)/1.05 var(--f-disp);letter-spacing:-.01em}.t-cumple .ph{border-radius:6px;aspect-ratio:4/5;border:2px solid var(--gold);box-shadow:0 0 0 6px #0e1828,0 0 0 7px var(--gold),var(--shadow)}
.t-cumple .kick{color:var(--gold)}.t-cumple .card,.t-cumple .cb,.t-cumple #rbox{border-radius:6px}.t-cumple .opt span{background:#ffffff0d}
/* ---- Baby shower: pastel peach + mint, clouds and moon, Dancing Script */
.t-baby{--bg:linear-gradient(180deg,#fdf0e9 0,#fbf7f2 45%,#eef7f3 100%);--ink:#4a4658;--muted:#857f93;--paper:#fff;--line:#e8d8cf;--acc:#f2b1a4;--acc-ink:#4a2b26;--gold:#e79a8c;--f-script:"Dancing Script",cursive;--f-disp:"Quicksand",system-ui,sans-serif;--f-body:"Quicksand",system-ui,sans-serif;--r:26px;--shadow:0 8px 24px #e79a8c1f}
.t-baby .hosts{font-weight:700;font-size:clamp(48px,14vw,68px);color:#c56f63}.t-baby .ph{border-radius:50%;aspect-ratio:1;border:5px solid #fff;box-shadow:0 0 0 6px #cfe6dd,var(--shadow)}
.t-baby .dn,.t-baby .cb b,.t-baby .big,.t-baby h2{font-family:var(--f-disp);font-weight:700}.t-baby .dn{color:#8cc5b2}.t-baby .sub{font:600 18px/1.45 var(--f-body)}
/* ---- Bautizo: dusty blue, white, olive wreath, Parisienne */
.t-bautizo{--bg:linear-gradient(180deg,#eef4fa,#f8fbfd 50%,#eef4fa);--ink:#2f4257;--muted:#6c8197;--paper:#fff;--line:#cfdceb;--acc:#4a74a0;--acc-ink:#fff;--gold:#bf9f62;--orn:#8fa98a;--f-script:"Parisienne",cursive;--shadow:0 8px 26px #4a74a01a}
.t-bautizo .hosts{color:#3c6390}.t-bautizo .ph{border-color:#fff;box-shadow:0 0 0 2px #bf9f62,0 0 0 9px #fff,var(--shadow)}
/* ---- Navidad / Posada: deep green, papel picado, red + gold */
.t-navidad{--bg:radial-gradient(120% 70% at 50% 0,#17573f 0,#0f3b2c 55%,#0a2a1f);--ink:#fff7e8;--muted:#d9e7d6;--paper:#ffffff12;--line:#f0c75e55;--acc:#d63b3b;--acc-ink:#fff;--gold:#f0c75e;--shadow:0 10px 30px #0005}
.t-navidad .hero{padding-top:64px}.t-navidad .hosts{font-size:clamp(50px,14vw,72px)}.t-navidad .ph{border-radius:50%;aspect-ratio:1;border:4px solid var(--gold);box-shadow:0 0 0 7px #d63b3b,var(--shadow)}.t-navidad .opt span{background:#ffffff12}
.t-navidad .hero::after{content:"";position:absolute;inset:60px 0 0;pointer-events:none;background:radial-gradient(2px 2px at 15% 20%,#fff9 50%,transparent),radial-gradient(2.4px 2.4px at 85% 30%,#fff8 50%,transparent),radial-gradient(1.8px 1.8px at 30% 70%,#fff7 50%,transparent),radial-gradient(2px 2px at 70% 85%,#fff8 50%,transparent)}
/* ---- Fiesta: teal night, coral + sunflower, streamers */
.t-fiesta{--bg:linear-gradient(165deg,#0b7285 0,#155e75 45%,#1e3a5f 100%);--ink:#fff;--muted:#cfeef3;--paper:#ffffff17;--line:#ffffff33;--acc:#ffb703;--acc-ink:#1e293b;--gold:#ffb703;--f-script:"Dancing Script",cursive;--shadow:0 10px 30px #0004}
.t-fiesta .hosts{font-weight:700;font-size:clamp(54px,16vw,78px);color:#fff;text-shadow:0 3px 0 #ff6b6b}.t-fiesta .ph{border-radius:8px;aspect-ratio:1;border:10px solid #fff;border-bottom-width:34px;transform:rotate(-2.5deg);box-shadow:0 14px 30px #0005}.t-fiesta .opt span{background:#ffffff14}
.t-fiesta .kick{color:#ffd166}
@media (min-width:700px){.iv .details{grid-template-columns:1fr 1fr}.iv .details .card:first-child{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){.iv *{scroll-behavior:auto!important}}
