.rsvp{--rsvp-ink:#2b2622;--rsvp-muted:#7a7068;--rsvp-accent:#b08d57;--rsvp-accent-ink:#fff;--rsvp-bg:transparent;--rsvp-field-bg:#fff;--rsvp-border:#d9d0c3;--rsvp-radius:10px;--rsvp-font-body:inherit;--rsvp-font-display:inherit;color:var(--rsvp-ink);background:var(--rsvp-bg);font-family:var(--rsvp-font-body);text-align:left;gap:1.25rem;display:grid}.rsvp-intro,.rsvp-deadline{text-align:center;font-family:var(--rsvp-font-display);margin:0}.rsvp-deadline{color:var(--rsvp-muted);font-size:.95rem}.rsvp-field{border:0;gap:.5rem;margin:0;padding:0;display:grid}.rsvp-label{font-family:var(--rsvp-font-display);padding:0;font-size:1.15rem}.rsvp-input{width:100%;font:inherit;color:var(--rsvp-ink);background:var(--rsvp-field-bg);border:1px solid var(--rsvp-border);border-radius:var(--rsvp-radius);outline:none;padding:.85rem 1rem;font-size:1rem;transition:border-color .2s,box-shadow .2s}.rsvp-input:focus{border-color:var(--rsvp-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--rsvp-accent) 25%, transparent)}.rsvp-textarea{resize:vertical;min-height:5.5rem}.rsvp-choices{gap:.6rem}.rsvp-choice{border:1px solid var(--rsvp-border);border-radius:var(--rsvp-radius);background:var(--rsvp-field-bg);cursor:pointer;align-items:center;gap:.7rem;padding:.75rem 1rem;transition:border-color .2s,background .2s;display:flex}.rsvp-choice:has(input:checked){border-color:var(--rsvp-accent);background:color-mix(in srgb, var(--rsvp-accent) 10%, var(--rsvp-field-bg))}.rsvp-choice input{accent-color:var(--rsvp-accent);width:1.1rem;height:1.1rem}.rsvp-extra{gap:1.25rem;animation:.35s both rsvp-in;display:grid}.rsvp-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.rsvp-stepper-ctl{border:1px solid var(--rsvp-border);border-radius:var(--rsvp-radius);background:var(--rsvp-field-bg);justify-content:space-between;align-items:center;gap:.5rem;padding:.3rem;display:inline-flex}.rsvp-stepper-ctl button{border-radius:calc(var(--rsvp-radius) - 3px);width:2.5rem;height:2.5rem;color:var(--rsvp-ink);cursor:pointer;background:0 0;border:0;font-size:1.3rem;line-height:1}.rsvp-stepper-ctl button:hover:not(:disabled){background:color-mix(in srgb, var(--rsvp-accent) 18%, transparent)}.rsvp-stepper-ctl button:disabled{opacity:.3;cursor:not-allowed}.rsvp-stepper-ctl output{text-align:center;min-width:2ch;font-size:1.15rem}.rsvp-submit{font:inherit;letter-spacing:.04em;color:var(--rsvp-accent-ink);background:var(--rsvp-accent);cursor:pointer;border:0;border-radius:999px;padding:1rem 1.5rem;font-size:1.05rem;transition:transform .15s,filter .2s}.rsvp-submit:hover:not(:disabled){filter:brightness(1.06)}.rsvp-submit:active:not(:disabled){transform:scale(.98)}.rsvp-submit:disabled{opacity:.6;cursor:progress}.rsvp-error{color:#a4332b;text-align:center;margin:0;font-size:.95rem}.rsvp-done{text-align:center;gap:.75rem}.rsvp-thanks{font-family:var(--rsvp-font-display);margin:0;font-size:1.35rem}.rsvp-link{color:var(--rsvp-muted);cursor:pointer;font:inherit;background:0 0;border:0;justify-self:center;text-decoration:underline}.rsvp-hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}@keyframes rsvp-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.rsvp-extra{animation:none}}
:root{--night:#1f2438;--ivory:#f4ecdf;--blush:#e8c9c0;--sage:#a9b59a;--glow:#f3c77a;--ink:#3b3346;--script:var(--font-script), "Bonheur Royale", cursive;--serif:var(--font-serif), "Gilda Display", Georgia, serif}body{background:radial-gradient(120% 70% at 50% 40%, #2b3150, var(--night) 70%) fixed, var(--night);color:var(--ivory);font-family:var(--serif);-webkit-font-smoothing:antialiased;font-size:18px;line-height:1.6}.book{position:relative}.viewport{z-index:1;height:100svh;position:sticky;top:0;overflow:hidden}.scene-abs{place-items:center;display:grid;position:absolute;inset:0}.scene-abs:not(.is-live){display:none}.scroll-track{pointer-events:none}.lightbox{background:#232a45;width:min(100vw,56.25svh);height:100svh;position:relative;overflow:hidden;box-shadow:0 0 90px #0000008c}.ly-wrap{transform-origin:50% 55%;position:absolute;inset:-3%}.ly{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform;filter:drop-shadow(0 12px 14px #0a0c1c8c)drop-shadow(0 0 8px #ffc46e59);width:100%;max-width:none;height:100%}.ly-wrap:first-child .ly{filter:none}.ly-hills{inset:45% -12% auto}.ly-hills .ly{height:auto}.lb-glow{z-index:3;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(38% 30% at 50% 26%,#ffe2aa47,#0000 70%),radial-gradient(60% 42% at 50% 58%,#f3c77a38,#0000 72%);animation:5s ease-in-out infinite glow;position:absolute;inset:0}@keyframes glow{0%,to{opacity:.85}50%{opacity:1}}.lb-vignette{z-index:20;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 6px #2a2536,inset 0 0 38px 10px #080812bf}.lb-text{pointer-events:none;position:absolute;inset:0}.tx-1{text-align:center;width:60%;position:absolute;top:35.5%;left:50%;translate:-50%}.t-kicker{letter-spacing:.04em;color:#f7e8c8;text-shadow:0 1px 2px #0a0c1ce6,0 0 12px #0a0c1ccc;margin:0 0 .2rem;font-size:clamp(.8rem,3.4vw,.95rem);font-style:italic}.t-names{font-family:var(--script);color:#fff8ea;-webkit-text-stroke:.4px #fff8eae6;text-shadow:0 2px 1px #0a0c1cd9,0 3px 8px #0a0c1cb3,0 0 22px #ffd28c8c;justify-content:center;align-items:baseline;gap:.25em;margin:0;font-size:clamp(2.5rem,12vw,3.5rem);font-weight:400;line-height:1.2;display:flex}.t-name{padding:0 .12em}.t-amp{font-family:var(--serif);color:var(--glow);font-size:.45em}.t-date{letter-spacing:.32em;color:#f7e8c8;text-shadow:0 1px 2px #0a0c1ce6,0 0 10px #0a0c1cb3;margin:.3rem 0 0;font-size:clamp(.85rem,3.6vw,1rem)}.inv.is-scrolled .t-hint{opacity:0}.t-hint{left:50%;bottom:calc(1.4rem + env(safe-area-inset-bottom));z-index:25;color:#fff4dc;text-shadow:0 1px 3px #000000e6;white-space:nowrap;justify-items:center;gap:.4rem;margin:0;font-size:.9rem;font-style:italic;transition:opacity .6s;display:grid;position:absolute;translate:-50%}.t-hint i{border-bottom:1.5px solid #fff4dc;border-right:1.5px solid #fff4dc;width:14px;height:14px;animation:1.6s ease-in-out infinite nudge;transform:rotate(45deg)}@keyframes nudge{0%,to{opacity:.5;translate:0}50%{opacity:1;translate:0 7px}}.ff-layer{z-index:15;pointer-events:none;width:min(100vw,56.25svh);margin:0 auto;position:absolute;inset:0}.ff{opacity:0;background:#fff1c4;border-radius:50%;width:5px;height:5px;animation:8s ease-in-out infinite ff;position:absolute;box-shadow:0 0 8px 3px #ffd682b3}@keyframes ff{0%{opacity:0;transform:translate(0)}20%{opacity:1}50%{transform:translate(18px,-26px)}80%{opacity:.8}to{opacity:0;transform:translate(-10px,-52px)}}@media (prefers-reduced-motion:reduce){.lb-glow,.ff,.t-hint i{animation:none}}
.tx{text-align:center;position:absolute;left:50%;translate:-50%}.lb-text .tx:not(.tx-1) .t-kicker{letter-spacing:.32em;text-transform:uppercase;font-size:.72rem;font-style:normal}.tx:not(.tx-1) p,.tx li{text-shadow:0 1px 2px #0a0c1ce6,0 0 12px #0a0c1cbf}.tx-2{color:#fff8ea;width:46%;top:25%}.d-weekday{letter-spacing:.3em;text-transform:uppercase;margin:.4rem 0 0;font-size:.8rem}.tx .d-day{font-family:var(--script);color:#fff8ea;text-shadow:0 2px 2px #281428b3,0 0 26px #ffd28c8c;margin:0;font-size:clamp(4.4rem,22vw,6rem);line-height:1.05}.d-month{letter-spacing:.12em;margin:0;font-size:1.05rem}.d-time{margin:.2rem 0 .8rem;font-size:.9rem;font-style:italic}.d-count .cd{grid-template-columns:repeat(2,1fr);gap:.35rem;display:grid}.cd-cell{color:var(--ink);background:#f4ecdfeb;border-radius:2px;padding:.35rem .2rem;display:grid;box-shadow:0 6px 10px -4px #140a1e99,inset 0 0 0 1px #d6aa6499}.tx .cd-cell span{text-shadow:none}.cd-num{font-size:1.25rem;line-height:1.1}.cd-label{letter-spacing:.14em;text-transform:uppercase;color:#7a6a70;font-size:.55rem}.cd-done{font-family:var(--script);font-size:2rem}.tx-3,.tx-4,.tx-5{color:#fff8ea;width:72%;min-height:24%;top:8%}.tx-4{top:10%}.tx-5{top:14%}.pg{opacity:0;visibility:hidden;transition:opacity .45s,transform .45s,visibility 0s linear .45s;position:absolute;inset:0 0 auto;transform:translateY(14px)}.pg.is-on{opacity:1;visibility:visible;transition:opacity .6s .2s,transform .6s .2s,visibility;transform:none}.pg-year{letter-spacing:.4em;color:#f7e0b0;margin:0;font-size:.8rem}.tx .pg-title{font-family:var(--script);color:#fff8ea;text-shadow:0 2px 2px #0a0c1ccc,0 0 18px #ffd28c80;margin:.1rem 0 .3rem;font-size:clamp(2rem,9.5vw,2.7rem);line-height:1.15}.pg-text{max-width:30ch;margin:0 auto;font-size:clamp(.88rem,3.7vw,1rem);line-height:1.5}.pg-note{margin:.3rem 0 0;font-size:.82rem;font-style:italic}.pg-parent{font-family:var(--script);margin:.4rem 0 0;font-size:1.5rem;line-height:1.2}.pg-parent span{font-family:var(--serif);letter-spacing:.3em;text-transform:uppercase;color:#f7e0b0;font-size:.66rem;display:block}.tx .btn{letter-spacing:.24em;text-transform:uppercase;color:var(--ink);background:var(--ivory);pointer-events:auto;border-radius:999px;margin-top:.7rem;padding:.7rem 1.4rem;font-size:.72rem;text-decoration:none;display:inline-block;box-shadow:0 8px 16px -6px #0009,inset 0 0 0 1px #d6aa64b3}.prog{gap:.25rem;max-width:17rem;margin:.5rem auto 0;padding:0;list-style:none;display:grid}.prog li{text-align:left;grid-template-columns:3.4rem 1fr;align-items:baseline;display:grid}.prog-time{letter-spacing:.08em;color:#f7e0b0;font-size:.85rem}.prog-label{font-family:var(--script);font-size:1.45rem;line-height:1.2}.swatches{justify-content:center;gap:.6rem;margin:.8rem 0 0;padding:0;list-style:none;display:flex}.swatches li{border:2px solid #fff8ea;border-radius:50%;width:30px;height:30px;box-shadow:0 4px 8px #00000073}.cards{z-index:30;justify-items:center;gap:1.2rem;padding:0 1rem 3rem;display:grid;position:relative}.paper-card{width:min(100%,440px);color:var(--ink);text-align:center;background:radial-gradient(120% 80% at 30% 0,#fffdf7,#f4ecdf 60%,#ebdfcc 100%);border-radius:3px;padding:1.6rem 1.3rem;box-shadow:0 22px 40px -16px #000000a6,inset 0 0 0 1px #d6aa648c,inset 0 0 0 6px #f7f0e4,inset 0 0 0 7px #d6aa6459}.paper-card .t-kicker{letter-spacing:.32em;text-transform:uppercase;color:#9b7a4c;text-shadow:none;margin:0 0 .6rem;font-size:.72rem;font-style:normal}.faq{text-align:left;gap:.5rem;display:grid}.faq details{border-bottom:1px solid #9b7a4c4d}.faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem .1rem;font-size:1rem;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary i{border-bottom:1.5px solid #9b7a4c;border-right:1.5px solid #9b7a4c;flex:none;width:8px;height:8px;transition:transform .35s;transform:rotate(45deg)}.faq details[open] summary i{transform:rotate(225deg)}.faq details p{color:#5f5460;margin:0;padding:0 .1rem .8rem;font-size:.95rem}.rsvp-card .rsvp{--rsvp-ink:var(--ink);--rsvp-muted:#6c6170;--rsvp-accent:#6f5a78;--rsvp-accent-ink:#fff8ea;--rsvp-field-bg:#ffffffbf;--rsvp-border:#9b7a4c66;--rsvp-radius:3px;--rsvp-font-body:var(--serif);--rsvp-font-display:var(--serif);text-align:left}.rsvp-card .rsvp-label{font-family:var(--script);font-size:1.7rem;line-height:1.2}.rsvp-card .rsvp-submit{letter-spacing:.24em;text-transform:uppercase;border-radius:999px;font-size:.78rem}.foot{text-align:center;padding:1.4rem 1rem 2rem}.foot-line{color:#f1e6d4;text-shadow:0 1px 3px #000000e6;margin:0;font-style:italic}.foot-names{font-family:var(--script);color:#fff8ea;text-shadow:0 2px 3px #000c,0 0 18px #ffd28c80;margin:.2rem 0 0;font-size:2.6rem}.ff-cool .ff{background:#fff;box-shadow:0 0 8px 3px #fff0dc99}.bk-overlay{z-index:100;background:#e9dfd0;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.bk-bg{filter:blur(26px)brightness(.95);background-position:50%;background-size:cover;position:absolute;inset:-40px}.bk-frame{width:min(100vw,56.25svh);height:100svh;position:relative;overflow:hidden;box-shadow:0 0 80px #3c281e59}.bk-video{object-fit:cover;width:100%;max-width:none;height:100%}.bk-names{text-align:center;width:30%;font-family:var(--script);color:#8a6a55;text-shadow:0 1px #fffaf0cc,0 -1px #5a3c2840;pointer-events:none;margin:0;font-size:min(9.5vw,4.4svh);line-height:1.1;position:absolute;top:46%;left:53%;translate:-50% -50%}.bk-hit{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;position:absolute;inset:12% 10%}.bk-hit.is-playing{pointer-events:none}.bk-flash{opacity:0;pointer-events:none;background:radial-gradient(70% 55%,#fff,#fff8ec 60%,#fbefdc);position:absolute;inset:0}.bk-hint{padding:4rem 1.2rem calc(2rem + env(safe-area-inset-bottom));text-align:center;pointer-events:none;background:linear-gradient(#0000,#4632288c);transition:opacity .5s;animation:1s 1.2s backwards hint-in;position:absolute;bottom:0;left:0;right:0}.bk-hint.is-hidden{opacity:0}.bk-hint p{font-family:var(--script);color:#fffaf0;text-shadow:0 2px 8px #28140a99;margin:0;font-size:1.8rem}@keyframes hint-in{0%{opacity:0;transform:translateY(8px)}}.ty{z-index:200;cursor:pointer;background:radial-gradient(70% 60% at 50% 40%,#fffaf0f7,#e8d6c8f7);place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0;overflow:hidden}.ty-rays{pointer-events:none;background:repeating-conic-gradient(#ffd68c52 0deg 5deg,#ffd68c00 5deg 15deg);width:160vmax;height:160vmax;margin:-80vmax 0 0 -80vmax;animation:40s linear infinite rays-spin;position:absolute;top:40%;left:50%;-webkit-mask-image:radial-gradient(circle,#000 0%,#0000 55%);mask-image:radial-gradient(circle,#000 0%,#0000 55%)}@keyframes rays-spin{to{rotate:360deg}}.ty-canvas{pointer-events:none;position:absolute;inset:0}.ty-glow{pointer-events:none;background:radial-gradient(circle,#fff,#ffe6b473 40%,#0000 70%);border-radius:50%;width:60vmin;height:60vmin;margin:-30vmin 0 0 -30vmin;position:absolute;top:40%;left:50%}.ty-card{text-align:center;max-width:420px;color:var(--ink);justify-items:center;display:grid;position:relative}.ty-bflies{align-items:center;gap:.6rem;margin-bottom:.4rem;display:flex}.ty-bfly{fill:#e8c9c0;stroke:#b08a70;stroke-width:.6px;width:44px;height:33px}.ty-bfly:nth-child(2){fill:#f4ecdf;width:58px;height:44px}.ty-names{font-family:var(--script);color:#8a6a55;margin:0;font-size:1.7rem}.ty-title{font-family:var(--script);color:#5b4a60;margin:0;padding:0 .2em;font-size:clamp(3.2rem,15vw,4.6rem);line-height:1.2}.ty-sub{color:#6c6170;margin:.2rem 0 1.4rem;font-size:1.05rem;font-style:italic}.ty-close{font:inherit;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);cursor:pointer;background:#ffffffb3;border:1px solid #d6aa64cc;border-radius:999px;padding:.8rem 1.4rem;font-size:.76rem}.music{right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:40;color:#fff4dc;cursor:pointer;background:#1f2438e6;border:1px solid #f3c77acc;border-radius:50%;place-items:center;width:46px;height:46px;display:grid;position:fixed}.music svg{width:20px;height:20px}@media (prefers-reduced-motion:reduce){.ty-rays{animation:none}}.tag{color:#4a3f55;background:radial-gradient(130% 90% at 30% 0,#fffdf7,#f6eee1 60%,#ecdfcb);border-radius:2px;padding:.9rem .9rem 1rem;position:relative;box-shadow:0 14px 22px -10px #0f0a19b3,0 2px 4px #0f0a1940,inset 0 0 0 1px #c49c6099,inset 0 0 0 4px #fbf6ec,inset 0 0 0 5px #c49c6059}.tag:before{content:"";background:linear-gradient(#f3c77a00,#d9b27a);width:1px;height:34px;position:absolute;top:-34px;left:50%}.tx .tag p,.tx .tag li{text-shadow:none}.tag .t-kicker{color:#9b7a4c}.tx .tag .pg-title,.tx .tag .d-day{color:#5b4a6a;text-shadow:none}.tag .pg-year,.tag .prog-time,.tag .pg-parent span{color:#9b7a4c}.tag .pg-text,.tag .d-month,.tag .d-weekday,.tag .d-time,.tag .pg-note{color:#4a3f55}.tag .swatches li{border-color:#fff;box-shadow:0 2px 5px #00000040,0 0 0 1px #c49c6080}.tag .btn{color:#fff8ea;background:#6f5a78}.tag-pages{display:grid}.tag-pages .pg{grid-area:1/1;position:relative;inset:auto}.tx-2{width:50%;top:30%}.tx-2 .tag{padding:.6rem .5rem .7rem}.tx-2 .d-day{font-size:clamp(3.2rem,15vw,4.4rem);line-height:1}.tx-2 .d-weekday{margin-top:.1rem;font-size:.66rem}.tx-2 .d-month{font-size:.9rem}.tx-2 .d-time{margin-bottom:.5rem;font-size:.8rem}.tag .cd-cell{background:#fff;box-shadow:inset 0 0 0 1px #c49c608c}.tx-3,.tx-4{width:78%;min-height:0;top:7%}.tx-5{width:74%;top:12%}@media (max-height:620px){.tx-3,.tx-4{top:4%}.tag .pg-text{font-size:.82rem}}.rotate-hint{display:none}@media (orientation:landscape) and (max-height:520px){.rotate-hint{z-index:300;text-align:center;background:radial-gradient(90% 90% at 50% 40%,#2b3150,#1f2438);place-content:center;justify-items:center;gap:.8rem;padding:1.5rem;display:grid;position:fixed;inset:0}.rotate-hint svg{fill:none;stroke:#f3c77a;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:56px;height:56px}.rotate-hint p{font-family:var(--script);color:#fff4dc;margin:0;font-size:1.9rem}}
