:root{--maroon: #4a0d27;--berry: #8f1d4b;--gold: #e0ad45;--gold-deep: #b9852a;--cream: #fff6e6;--ink: #2a0b17;--serif: "Cormorant Garamond", Georgia, serif;--sans: "Lato", system-ui, sans-serif;--w: min(100vw, 1500px, calc(100svh * 2 / 3))}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;background:#2a0b17;color:var(--cream);font-family:var(--sans);overflow-x:clip}.ambient{transition:opacity 2s ease .4s;position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;overflow:hidden;pointer-events:none}.ambient img{position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%;width:120%;height:120%;object-fit:cover;filter:blur(40px) brightness(.45) saturate(1.15);opacity:0;transition:opacity .9s ease}.ambient img.on{opacity:1}.page{position:relative;width:min(100%,var(--w));margin:calc(var(--w) * -.105) auto 0}.page:first-child{margin-top:0}.card{position:relative;width:100%;aspect-ratio:2 / 3;overflow:hidden;container-type:inline-size;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 7%);mask-image:linear-gradient(to bottom,transparent 0,#000 7%)}.page:first-child .card{-webkit-mask-image:none;mask-image:none}.base{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.tx{position:absolute;display:block;pointer-events:none;-webkit-user-select:none;user-select:none;transform:translateY(calc(var(--p, 0) * var(--k, 0cqw)));opacity:0;translate:0 2.5cqw;transition:opacity .9s ease var(--d, 0s),translate .9s cubic-bezier(.2,.7,.2,1) var(--d, 0s);will-change:transform}.tx.orn{translate:0 0;scale:.15 1;transition:opacity .9s ease var(--d, 0s),scale .9s cubic-bezier(.2,.7,.2,1) var(--d, 0s)}.deco{position:absolute;display:block;pointer-events:none;-webkit-user-select:none;user-select:none;transform:translateY(calc(var(--p, 0) * var(--k, 0cqw)));opacity:0;translate:0 3cqw;scale:.95;transform-origin:50% 100%;transition:opacity .8s ease var(--d, 0s),translate .9s cubic-bezier(.2,.7,.2,1) var(--d, 0s),scale .9s ease var(--d, 0s),rotate .9s ease var(--d, 0s)}.deco.k-lantern{translate:0 -5cqw;transform-origin:50% 0}.deco.k-flowers{translate:0 3cqw;scale:.9}.deco.k-dhol{translate:0 8cqw;rotate:-4deg}.deco.k-pot{translate:0 6cqw;scale:.92}.deco.k-temple{translate:0 2cqw;scale:.96}.deco.in{opacity:1;translate:0 0;scale:1;rotate:0deg}.deco.live{opacity:1;translate:0 0;scale:1;rotate:0deg;transition:none}.deco.in.k-lantern,.deco.live.k-lantern,.deco.live.k-clantern{transform-origin:50% 0;animation:sway var(--t) ease-in-out calc(.9s + var(--o)) infinite var(--dir),bob calc(var(--t) * .7) ease-in-out calc(.9s + var(--o)) infinite var(--dir2),glow calc(var(--t) * .6) ease-in-out calc(.9s + var(--o)) infinite var(--dir2)}.deco.live.k-clantern{animation-name:sway,bob}.deco.live.k-flag{transform-origin:50% 0;animation:flap calc(var(--t) * .45) ease-in-out var(--o) infinite var(--dir)}.deco.live.k-boat{transform-origin:50% 100%;animation:drift calc(var(--t) * 3) ease-in-out var(--o) infinite var(--dir),rock calc(var(--t) * .9) ease-in-out var(--o) infinite var(--dir2)}.deco.live.k-pendulum{transform-origin:50% 0;animation:swing 1.9s ease-in-out infinite alternate}@keyframes swing{0%{rotate:-9deg}to{rotate:9deg}}.clock-sec{position:absolute;width:.32cqw;height:2.9cqw;margin:-2.9cqw 0 0 -.16cqw;background:#7a2312;border-radius:1cqw;transform-origin:50% 100%;pointer-events:none;animation:tick 60s steps(60) infinite}@keyframes tick{to{rotate:360deg}}.deco.in.k-flowers{animation:breeze calc(var(--t) * 1.2) ease-in-out calc(1s + var(--o)) infinite var(--dir)}.deco.in.k-dhol{animation:thump 3.4s ease-in-out 1.4s infinite}.deco.in.k-pot{animation:glow calc(var(--t) * .5) ease-in-out 1s infinite alternate}.deco.in.k-temple{animation:glow calc(var(--t) * 1.4) ease-in-out 1s infinite alternate}@keyframes sway{0%{rotate:calc(var(--a, 2.4deg) * -1)}to{rotate:var(--a, 2.4deg)}}@keyframes bob{0%{translate:0 0}to{translate:0 .7cqw}}@keyframes flap{0%{rotate:calc(var(--a, 3deg) * -1.3)}to{rotate:calc(var(--a, 3deg) * 1.3)}}@keyframes drift{0%{translate:-1.6cqw 0}to{translate:1.6cqw 0}}@keyframes rock{0%{rotate:-2deg}to{rotate:2deg}}@keyframes breeze{0%{rotate:-.9deg}to{rotate:.9deg}}@keyframes glow{0%{filter:brightness(1)}to{filter:brightness(1.14) saturate(1.1)}}@keyframes thump{0%,58%,to{scale:1}64%{scale:1.03}72%{scale:1}78%{scale:1.015}86%{scale:1}}.fire{position:absolute;aspect-ratio:1;border-radius:50%;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(circle,rgba(255,244,190,.95) 0%,rgba(255,176,70,.55) 28%,rgba(255,120,30,.18) 55%,transparent 70%);translate:-50% -50%;opacity:.6;animation:flicker var(--t) ease-in-out var(--o) infinite}@keyframes flicker{0%{opacity:.5;scale:.8;translate:-50% -50%}12%{opacity:.95;scale:1.1;translate:-49% -53%}25%{opacity:.65;scale:.88;translate:-51% -50%}38%{opacity:1;scale:1.15;translate:-50% -54%}52%{opacity:.55;scale:.84;translate:-50% -50%}66%{opacity:.9;scale:1.06;translate:-52% -52%}80%{opacity:.6;scale:.9;translate:-50% -50%}to{opacity:.5;scale:.8;translate:-50% -50%}}.card.in .tx{opacity:1;translate:0 0}.card.in .tx.orn{scale:1 1}.actions,.scroll-hint{position:absolute;left:50%;bottom:3.2%;translate:-50% 0;z-index:2}.actions{display:flex;gap:8px}.actions a,.scroll-hint{color:var(--cream);text-decoration:none;font:700 clamp(.72rem,calc(var(--w) * .024),.95rem) var(--sans);padding:.6em 1.1em;border-radius:999px;cursor:pointer;white-space:nowrap;background:#4a0d27d9;border:1px solid var(--gold);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.actions a:hover,.scroll-hint:hover{background:var(--berry)}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.fire{display:none}.clock-sec{animation:none}.tx,.deco{transform:none;transition:none;opacity:1;translate:0 0;scale:1 1;animation:none!important}}.rsvp{position:relative;z-index:1;width:min(100%,max(var(--w),640px));margin:calc(var(--w) * -.105) auto 0;padding:calc(var(--w) * .16) 16px 64px;display:grid;place-items:center;background:linear-gradient(#2a0b17b8,#2a0b17e6),url(/cards/c4-base.webp) center bottom / cover;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 12%);mask-image:linear-gradient(to bottom,transparent 0,#000 12%)}.frame{width:min(560px,100%);padding:36px clamp(20px,5vw,44px);border:2px solid var(--gold);outline:1px solid var(--gold-deep);outline-offset:6px;background:#2a0b178c}.frame h2{font:600 clamp(2.4rem,8vw,3.4rem)/1.05 var(--serif);margin:0 0 8px;color:var(--gold);text-align:center}.lede{text-align:center;margin:0 0 28px;opacity:.9}.field{display:block;margin-bottom:18px}.field span{display:block;margin-bottom:6px;font-size:.9rem}input[type=text],input[type=number]{width:100%;padding:12px;font:inherit;font-size:16px;color:var(--ink);background:var(--cream);border:1px solid var(--gold-deep);border-radius:4px}.event{border:1px solid rgba(224,173,69,.55);border-radius:4px;margin:0 0 16px;padding:14px 16px 16px}.event legend{font:600 1.5rem var(--serif);color:var(--gold);padding:0 8px}.event legend small{font:400 .8rem var(--sans);color:var(--cream);opacity:.85;margin-left:6px}.choice{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:12px}.choice label{display:flex;align-items:center;gap:8px;cursor:pointer}.choice input{accent-color:var(--gold);width:18px;height:18px}.count{display:flex;align-items:center;gap:10px;font-size:.95rem}.count input{width:76px}.event.off .count{opacity:.35}button[type=submit]{width:100%;margin-top:8px;padding:14px;cursor:pointer;font:700 1rem var(--sans);color:var(--maroon);background:var(--gold);border:0;border-radius:4px}button[type=submit]:hover{background:#f0c35f}button[type=submit]:disabled{opacity:.6;cursor:wait}#status{min-height:1.5em;margin:14px 0 0;text-align:center}#status.error{color:#ffb4b4}#status.ok{color:#c8f0c8}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}html.intro-lock{overflow:hidden}html.intro-lock main{visibility:hidden}html.intro-lock .ambient{opacity:0}.card.instant .tx,.card.instant .deco{transition:none}#intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;align-content:center;--ew: min(86vw, 440px, 58svh)}.intro-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 20% 80%,rgba(224,173,69,.1) 0 1.5px,transparent 2px) 0 0 / 46px 46px,radial-gradient(ellipse at 50% 38%,#6a1636,#3a0a1f 62%,#1f0511);transition:opacity 1.7s ease}#intro:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px solid rgba(224,173,69,.45);pointer-events:none;z-index:1}.garland{position:absolute;top:0;width:clamp(90px,20vw,300px);height:auto;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 62%,transparent),linear-gradient(to right,#000 55%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,#000 62%,transparent),linear-gradient(to right,#000 55%,transparent);mask-composite:intersect;transition:opacity 1.7s ease;opacity:.9}.garland.gl{left:0}.garland.gr{right:0;transform:scaleX(-1)}#intro .skip{position:absolute;top:calc(18px + env(safe-area-inset-top,0px));right:20px;z-index:10;background:#00000040;border:1px solid rgba(224,173,69,.55);color:var(--cream);padding:.4em .95em;border-radius:999px;font:700 .8rem var(--sans);cursor:pointer;transition:opacity 1s}.env{position:relative;width:var(--ew);aspect-ratio:1.3;margin-top:14svh;perspective:1400px;cursor:pointer;filter:drop-shadow(0 22px 34px rgba(0,0,0,.55));opacity:0;transition:opacity .8s ease}#intro.ready .env{opacity:1}.env>*{position:absolute}.env-back{top:0;right:0;bottom:0;left:0;border-radius:4px;background:var(--lining),#5e1130}.env-cards{top:0;right:0;bottom:0;left:0;z-index:2}.env-cards img{position:absolute;left:50%;bottom:3%;width:48%;aspect-ratio:2 / 3;object-fit:cover;border-radius:2px;box-shadow:0 2px 12px #00000073;transform:translate(-50%);transform-origin:50% 100%;transition:transform 1.9s cubic-bezier(.45,.05,.25,1)}.env-front,.flap .ff{background:var(--motif),linear-gradient(155deg,#fcf2dc,#f1deb6 58%,#e4cb98)}.env-front{top:0;right:0;bottom:0;left:0;z-index:4;border-radius:4px;clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%)}.env-trim{top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:5;pointer-events:none;overflow:visible}.env-trim path,.flap svg path{vector-effect:non-scaling-stroke;stroke-width:1.4px}.env-text{left:0;right:0;bottom:5%;z-index:5;display:grid;justify-items:center;gap:calc(var(--ew) * .014);pointer-events:none}.env-cap{font:700 calc(var(--ew) * .034) "Cinzel",Georgia,serif;letter-spacing:.18em;text-transform:uppercase;color:#6a1636}.env-names{display:flex;align-items:center;justify-content:center;gap:calc(var(--ew) * .018)}.nm{display:block;background:linear-gradient(180deg,#8f2455,#4a0d27);-webkit-mask:var(--m) center / contain no-repeat;mask:var(--m) center / contain no-repeat}.nm.a{width:calc(var(--ew) * .31);aspect-ratio:490 / 196}.nm.k{width:calc(var(--ew) * .33);aspect-ratio:521 / 152}.nm.and{width:calc(var(--ew) * .055);aspect-ratio:81 / 34}.flap{left:0;right:0;top:0;height:60%;z-index:6;transform-origin:50% 0;transform-style:preserve-3d}.flap i{position:absolute;top:0;right:0;bottom:0;left:0;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden}.flap .ff svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.flap .fb{background:var(--lining),#5e1130;transform:rotateX(180deg)}.seal{left:50%;top:60%;width:calc(var(--ew) * .185);aspect-ratio:1;translate:-50% -50%;z-index:8;padding:0;border:0;background:none;cursor:pointer;animation:pulse 2.6s ease-in-out infinite}.seal .half{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform 1.1s cubic-bezier(.5,0,.75,.4),opacity 1s ease}.seal .half svg{width:100%;height:100%;display:block;overflow:visible}.seal .l{clip-path:polygon(-10% -10%,53% -10%,47% 22%,55% 45%,46% 68%,54% 110%,-10% 110%);transform-origin:30% 60%}.seal .r{clip-path:polygon(53% -10%,110% -10%,110% 110%,54% 110%,46% 68%,55% 45%,47% 22%);transform-origin:70% 60%}@keyframes pulse{50%{scale:1.06}}#intro .hint{margin:30px 0 0;color:var(--gold);letter-spacing:.18em;font-size:.8rem;text-transform:uppercase;transition:opacity .5s}#intro.open .seal{animation:none;pointer-events:none}#intro.open .seal .l{transform:translate(-45%,120%) rotate(-38deg);opacity:0}#intro.open .seal .r{transform:translate(45%,140%) rotate(34deg);opacity:0}#intro.open .hint{opacity:0}#intro.open .flap{animation:flapOpen 1.5s ease-in-out .5s both}@keyframes flapOpen{0%{transform:rotateX(0);z-index:6}49%{z-index:6}50%{z-index:1}to{transform:rotateX(180deg);z-index:1}}#intro.pull .env-cards img{transform:translate(-50%) translateY(-46%) scale(1.28)}#intro.fly .intro-bg,#intro.fly .env,#intro.fly .garland,#intro.fly .skip{opacity:0}#intro.fly .env{transition:opacity 1.4s ease}.hero{position:fixed;z-index:20;object-fit:cover;pointer-events:none;box-shadow:0 12px 40px #00000080;transition:left 1.8s cubic-bezier(.65,0,.35,1),top 1.8s cubic-bezier(.65,0,.35,1),width 1.8s cubic-bezier(.65,0,.35,1),height 1.8s cubic-bezier(.65,0,.35,1),box-shadow 1.8s ease}.hero.arrived{box-shadow:none}.hero.fade{opacity:0;transition:opacity 1.1s ease}@media (prefers-reduced-motion: reduce){.seal,#intro.open .flap{animation:none}.env-cards img,.hero{transition:none}}
