*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.sheet{background-color:var(--paper);background-image:var(--paper-image, none),var(--paper-grain, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3CfeDiffuseLighting lighting-color='%23fff' surfaceScale='1.6'%3E%3CfeDistantLight azimuth='45' elevation='58'/%3E%3C/feDiffuseLighting%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='.35'/%3E%3C/svg%3E")),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='700'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .55  0 0 0 0 .5  0 0 0 0 .62  0 0 0 .1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E");background-size:1024px 1024px,260px 260px,700px 700px;background-blend-mode:multiply}@layer base{img,svg{display:block;max-width:100%}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--focus, currentColor);outline-offset:3px;border-radius:4px}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sheet{position:relative;width:100%;max-width:460px;margin:0 auto;overflow:clip}.wc-art{pointer-events:none;mix-blend-mode:multiply}[lang=ar]{font-family:Amiri,serif;direction:rtl}.firefly{animation:firefly-breathe 3.6s ease-in-out infinite;animation-delay:calc(var(--d, 0s) * -1)}@keyframes firefly-breathe{0%,to{opacity:.35}50%{opacity:1}}.press{transition:transform .16s cubic-bezier(.23,1,.32,1);-webkit-tap-highlight-color:transparent}.press:active{transform:scale(.97)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.firefly{animation:none;opacity:.8}}.embedded{scrollbar-width:none}.embedded::-webkit-scrollbar{display:none}.drop,.brush,.spatter{position:absolute;height:auto;max-width:none;pointer-events:none;mix-blend-mode:multiply;overflow:visible;z-index:0;opacity:0}.stroke{position:absolute;z-index:0;pointer-events:none;mix-blend-mode:multiply;transform-origin:50% 50%}.stroke>canvas,.stroke>img{position:absolute;inset:0;width:100%;height:100%}.drop.is-cutout{mix-blend-mode:normal}.drop.drop-inline{position:relative;display:block;max-width:100%;margin:0 auto}.is-revealed{opacity:1}.life{position:fixed;top:50%;left:0;right:0;height:0;z-index:40;pointer-events:none}.bfly{position:absolute;filter:saturate(.82);left:0;top:0;width:var(--size);height:var(--size);margin:calc(var(--size) * -.5) 0 0 calc(var(--size) * -.5);will-change:transform}.bfly-wing,.bfly-body{position:absolute;top:0;height:100%;background-image:var(--img);background-repeat:no-repeat;will-change:transform}.bfly-wing{width:50%;background-size:200% 100%}.bfly-wing.is-left{left:0;background-position:0 0;transform-origin:100% 50%}.bfly-wing.is-right{right:0;background-position:100% 0;transform-origin:0 50%}.bfly-body{left:46.5%;width:7%;background-size:1428.6% 100%;background-position:50% 0}.bfly-shadow{position:absolute;inset:24% 10%;border-radius:50%;background:radial-gradient(closest-side,rgba(58,42,92,.4),transparent);filter:blur(5px);opacity:.35}.lf{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fffbe6 0 22%,#fbe896d9 34%,#f0cd6e00 70%);box-shadow:0 0 14px 5px #f6d77866;will-change:transform,opacity}.bfly.is-flapping .bfly-wing.is-left{animation:bfly-flap-l var(--flap, .12s) cubic-bezier(.45,0,.2,1) infinite alternate}.bfly.is-flapping .bfly-wing.is-right{animation:bfly-flap-r var(--flap, .12s) cubic-bezier(.45,0,.2,1) infinite alternate}.bfly.is-resting .bfly-wing.is-left{animation:bfly-rest-l 3.4s ease-in-out infinite}.bfly.is-resting .bfly-wing.is-right{animation:bfly-rest-r 3.4s ease-in-out infinite}@keyframes bfly-flap-l{0%{transform:perspective(420px) rotateY(-8deg)}to{transform:perspective(420px) rotateY(-76deg)}}@keyframes bfly-flap-r{0%{transform:perspective(420px) rotateY(8deg)}to{transform:perspective(420px) rotateY(76deg)}}@keyframes bfly-rest-l{0%,45%,to{transform:perspective(420px) rotateY(-12deg)}65%,75%{transform:perspective(420px) rotateY(-58deg)}}@keyframes bfly-rest-r{0%,45%,to{transform:perspective(420px) rotateY(12deg)}65%,75%{transform:perspective(420px) rotateY(58deg)}}.swarm{position:fixed;top:50%;left:0;right:0;height:0;z-index:70;pointer-events:none}.swarm>*{top:-50dvh}@media(prefers-reduced-motion:reduce){.bfly.is-resting .bfly-wing{animation:none}}.btn-paint{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:52px;padding:13px 32px;border:0;border-radius:0;background:var(--wash-soft, #efe8f8) center / 100% 100% no-repeat;box-shadow:none;color:var(--ink);font-size:16.5px;font-weight:400;letter-spacing:.01em;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s cubic-bezier(.23,1,.32,1),filter .2s ease}.btn-paint.is-primary{background-image:var(--wash-primary);color:#fffaff;text-shadow:0 1px 6px rgba(40,25,70,.35)}.btn-paint.is-icon{width:46px;height:46px;min-height:0;padding:0;background-image:var(--wash-dot);color:#fffaff}.btn-paint svg{width:19px;height:19px;flex:none}.btn-paint:active{transform:scale(.97)}@media(hover:hover)and (pointer:fine){.btn-paint:hover{filter:saturate(1.15) brightness(1.02)}}[data-enter]{transition:opacity .8s cubic-bezier(.23,1,.32,1) calc(var(--k, 0) * .11s + 80ms),transform 1.1s cubic-bezier(.23,1,.32,1) calc(var(--k, 0) * .11s + 80ms)}.is-waiting [data-enter]{opacity:0;transform:translateY(16px)}.enter-still .is-waiting [data-enter]{transform:none}.countdown{display:flex;justify-content:center;gap:18px;margin-bottom:24px}.cd-unit{display:grid;min-width:52px}.cd-num{font-size:30px;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.2}.cd-label{font-size:13px;color:var(--muted)}:where(.btn-ghost,.map-btns a,.rsvp-send,.money-copy){display:inline-block;padding:12px 22px;border:1px solid var(--accent);border-radius:999px;color:var(--accent);background:transparent;text-decoration:none;font-size:15px;font-weight:400;cursor:pointer}.rsvp-send{background:var(--accent);color:var(--on-accent);width:100%}.schedule{list-style:none;margin:0 auto;padding:0;max-width:300px;text-align:left}.schedule li{display:grid;grid-template-columns:112px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px}.sch-time{color:var(--accent);font-weight:400}:where(.map-btns){display:flex;gap:10px;justify-content:center}.gift-intro{max-width:34ch;margin:0 auto 24px}.gifts{list-style:none;margin:0;padding:0;text-align:left}.gift{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.gift-text{display:grid}.gift-name{font-weight:400}.gift-note{font-size:14px;color:var(--muted)}.gift-btn{flex:none;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:14px;cursor:pointer}.gift [data-when]{display:none}.gift[data-state=open] [data-when=open],.gift[data-state=mine] [data-when=mine],.gift[data-state=taken] [data-when=taken]{display:inline}.gift[data-state=mine] .gift-btn{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.gift[data-state=taken]{opacity:.55}.gift[data-state=taken] .gift-btn{cursor:not-allowed}.gift[data-busy] .gift-btn{opacity:.6;cursor:progress}.gift:has(.gift-msg){flex-wrap:wrap}.gift .gift-msg{flex-basis:100%;margin:6px 0 0;font-size:13px;color:var(--muted)}.gift[data-state=mine] .gift-name{text-decoration:line-through;text-decoration-color:var(--accent)}.money{padding:22px;border:1px solid var(--line);border-radius:18px}.money p{margin:0}.money-acc{font-size:24px;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:.04em;margin:4px 0!important}.money-holder{color:var(--muted);font-size:15px;margin-bottom:16px!important}.money-copy [data-when]{display:none}.money-copy[data-state=idle] [data-when=idle],.money-copy[data-state=done] [data-when=done]{display:inline}.gift-addr{margin:20px 0 0;font-size:15px;color:var(--muted);font-style:italic}.rsvp{text-align:left;display:grid;gap:18px}.field{display:grid;gap:6px;border:0;padding:0;margin:0}.field-label{font-size:15px;font-weight:400;padding:0}.field input,.field select,.field textarea{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff9;font-size:16px}.attend{grid-template-columns:1fr 1fr}.attend legend{margin-bottom:6px}.choice{position:relative}.choice input{position:absolute;opacity:0}.choice span{display:block;padding:12px 10px;border:1px solid var(--line);border-radius:12px;text-align:center;font-size:15px;cursor:pointer;transition:background-color .16s ease,border-color .16s ease}.choice input:checked+span{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:400}.choice input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.rsvp-error{margin:0;color:#9b2c55;font-size:15px}.rsvp-done{margin:0;text-align:center;font-style:italic;color:var(--accent)}.wishes{list-style:none;margin:32px 0 0;padding:0;text-align:left;display:grid;gap:14px}.wish{padding:16px 18px;background:#ffffff8c;border-left:2px solid var(--line)}.wish p{margin:0}.wish-text{font-style:italic}.wish-name{margin-top:6px!important;font-size:14px;color:var(--muted)}.contacts{list-style:none;margin:0;padding:0;display:grid;gap:18px}.contact{display:grid;gap:8px}.contact-name{font-weight:400}.contact-actions{display:flex;gap:18px;justify-content:center}.contact-actions a{color:var(--accent);text-underline-offset:4px}html.sheet-open{overflow:hidden}.gift-sheet{position:fixed;inset:auto 0 0;width:100%;max-width:520px;max-height:100dvh;margin:0 auto;padding:0;border:0;border-radius:26px 26px 0 0;background:var(--paper, #fbf9fd);color:var(--ink, #33264d);box-shadow:0 -18px 50px -24px #28194673;overflow:auto;overscroll-behavior:contain;transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,0,1)}.gift-sheet[data-open]{transform:none;transition-duration:.42s}.gift-sheet:focus{outline:none}.gift-sheet::backdrop{background:#28194600;transition:background .26s ease-out}.gift-sheet[data-open]::backdrop{background:#28194652}.gift-sheet-body{display:grid;gap:14px;padding:10px 24px calc(22px + env(safe-area-inset-bottom));font-family:var(--font-body, Georgia, serif);text-align:left}.gift-sheet-grip{justify-self:center;width:42px;height:5px;margin-bottom:4px;border-radius:99px;background:var(--line, rgba(51, 38, 77, .16))}.gift-sheet-kicker{margin:0;font-size:15px;color:var(--muted, #74678c)}.gift-sheet-title{margin:-10px 0 0;font-family:var(--font-script, cursive);font-size:40px;font-weight:400;line-height:1.1;color:var(--ink-deep, var(--ink, #3d2b62))}.gift-sheet-lede{margin:0 0 4px;font-size:16px;line-height:1.45;color:var(--muted, #74678c)}.gift-sheet-field{display:grid;gap:6px;font-size:15px}.gift-sheet-field input{height:52px;padding:0 16px;border:0;border-radius:16px;background:#fffc;box-shadow:inset 0 0 0 1px var(--ui-border, #ddd0ee);font:inherit;font-size:17px;color:inherit}.gift-sheet-field input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent, #6f4fa8)}.gift-sheet-field input[aria-invalid=true]{box-shadow:inset 0 0 0 2px #b4416a}.gift-sheet-error{margin:-4px 0 0;min-height:1.3em;font-size:14.5px;color:#b4416a}.gift-sheet-error:empty{min-height:0;margin:0}.gift-sheet-ok{width:100%;min-height:52px;font-size:17px;cursor:pointer;transition:transform .16s ease-out,opacity .16s ease-out}.gift-sheet-ok:active{transform:scale(.97)}.gift-sheet-ok:disabled{opacity:.7;cursor:progress}.gift-sheet-cancel{justify-self:center;margin-top:-4px;padding:8px 18px;border:0;background:none;font:inherit;font-size:16px;color:var(--muted, #74678c);cursor:pointer}.gift-sheet-fine{margin:-6px 0 0;font-size:13.5px;text-align:center;color:var(--muted, #74678c)}@media(prefers-reduced-motion:reduce){.gift-sheet,.gift-sheet::backdrop{transition:none}}.music-dock{position:fixed;top:50%;right:0;width:0;height:0;z-index:40}.music-btn{position:absolute;top:calc(-50dvh + 12px + env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:color-mix(in srgb,var(--paper, #fbf9fd) 88%,transparent);box-shadow:inset 0 0 0 1px var(--ui-border, #ddd0ee),0 6px 18px -8px #28194673;color:var(--accent, #6f4fa8);cursor:pointer;opacity:0;transform:scale(.9);pointer-events:none;transition:opacity .3s ease-out,transform .3s cubic-bezier(.23,1,.32,1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-tap-highlight-color:transparent}.music-btn.is-shown{opacity:1;transform:none;pointer-events:auto}.music-btn.is-shown:active{transform:scale(.94);transition-duration:.12s}.music-note,.music-bars{grid-area:1 / 1;transition:opacity .22s ease-out,transform .32s cubic-bezier(.23,1,.32,1),filter .22s ease-out}.music-note{width:20px;height:20px}.music-bars{display:flex;align-items:center;gap:2.5px;height:16px;opacity:0;transform:scale(.5) rotate(-12deg);filter:blur(3px)}.music-bars i{width:2.5px;height:100%;border-radius:2px;background:currentColor;transform:scaleY(.25);transition:transform .32s cubic-bezier(.23,1,.32,1)}.music-btn[data-on=true] .music-note{opacity:0;transform:scale(.5) rotate(12deg);filter:blur(3px)}.music-btn[data-on=true] .music-bars{opacity:1;transform:none;filter:none}.music-btn[data-on=true] .music-bars i{animation:music-bar .9s cubic-bezier(.45,0,.55,1) infinite alternate}.music-bars i:nth-child(1){animation-delay:-.2s;--lo: .35;--hi: .8}.music-bars i:nth-child(2){animation-delay:-.6s;--lo: .3;--hi: 1}.music-bars i:nth-child(3){animation-delay:-.1s;--lo: .4;--hi: .9}.music-bars i:nth-child(4){animation-delay:-.45s;--lo: .3;--hi: .65}@keyframes music-bar{0%{transform:scaleY(var(--lo))}to{transform:scaleY(var(--hi))}}@media(prefers-reduced-motion:reduce){.music-btn[data-on=true] .music-bars i{animation:none;transform:scaleY(.7)}}
