:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#3e2a14;background:#1c140c;font-family:Palatino,Iowan Old Style,Georgia,serif}*{box-sizing:border-box}html,body,#root{background:#1c140c;height:100%;margin:0;overflow:hidden}.app,.stage{height:100%}.stage{position:relative}.stage canvas{touch-action:none;width:100%;height:100%;display:block}.walkhint{pointer-events:none;color:#3e2a14;background:#f6e7c8e0;border:2px solid #c6a15a;border-radius:999px;margin:0;padding:8px 14px;font-size:.98rem}.touchbar{left:0;right:0;bottom:max(18px, env(safe-area-inset-bottom));z-index:6;padding:0 max(16px, env(safe-area-inset-left)) 0 max(16px, env(safe-area-inset-right));pointer-events:none;justify-content:space-between;align-items:flex-end;display:flex;position:absolute}.pad{pointer-events:auto;touch-action:none;grid-template-rows:58px 58px;grid-template-columns:68px 68px 68px;gap:6px;display:grid}.pad button:first-child{grid-area:1/2}.pad button:nth-child(2){grid-area:2/1}.pad button:nth-child(3){grid-area:2/3}.pad button:nth-child(4){grid-area:2/2}.pad button,.hop{pointer-events:auto;touch-action:none;color:#3e2a14;font:inherit;-webkit-user-select:none;user-select:none;background:#f6e7c8eb;border:2px solid #c6a15a;border-radius:16px;margin:0;font-size:.92rem}.hop{border-radius:999px;min-width:88px;min-height:88px}.lookhint{top:max(78px, calc(env(safe-area-inset-top) + 70px));z-index:4;pointer-events:none;color:#3e2a14;white-space:nowrap;background:#f6e7c8eb;border:2px solid #e6c56a;border-radius:999px;margin:0;padding:8px 16px;font-size:1rem;line-height:1.3;position:absolute;left:50%;transform:translate(-50%)}.hud{pointer-events:none;padding:max(12px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));flex-direction:column;justify-content:flex-end;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.hud-end{justify-content:center}.dots{background:#f6e7c8c7;border:1px solid #c6a15acc;border-radius:999px;gap:8px;padding:8px 12px;display:flex}.dot{background:#5a3c1438;border-radius:99px;width:12px;height:12px}.dot.on{background:#e6c56a}.dot.now{background:#2f6d3c;box-shadow:0 0 0 3px #e6c56a}.card{pointer-events:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;color:#3e2a14;text-align:center;background:radial-gradient(120% 80% at 0 0,#fff8e6b3,#0000 45%),linear-gradient(#f6e7c4,#e7d0a2);border:2px solid #c6a15a;border-radius:22px;width:min(560px,100%);max-height:min(46dvh,440px);padding:18px 18px 16px;overflow:hidden auto;box-shadow:0 16px 40px #301c0847}.eyebrow,.kicker{letter-spacing:.16em;text-transform:uppercase;color:#7a5a28;margin:0;font-size:.78rem}h1,h2{margin:6px 0 8px;font-weight:600;line-height:1.15}h1{font-size:clamp(2rem,5vw,3.1rem)}h2{font-size:clamp(1.35rem,3vw,1.8rem)}.lead,.prompt,.note{margin:0 0 12px;font-size:1.12rem;line-height:1.4}.actions{flex-direction:column;gap:10px;display:flex}.btn{appearance:none;color:#f8f1df;width:100%;min-height:56px;font:inherit;cursor:pointer;touch-action:manipulation;background:#2f5a32;border:2px solid #e6c56a;border-radius:14px;padding:12px 16px;font-size:1.12rem}.btn:hover{filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn.ghost{color:#3e2a14;background:0 0;border-color:#b8893d}.btn:disabled{color:#f8f1df;cursor:default;background:#8d7a58}.btn.done{background:#6e8f55}.meter{background:#3e2a1426;border:2px solid #c6a15a;border-radius:999px;height:18px;margin:0 0 12px;overflow:hidden}.meter>span{background:#2f5a32;height:100%;display:block}.ribbon{pointer-events:none;text-align:center;color:#3e2a14;background:#f6e7c8eb;border:2px solid #e6c56a;border-radius:999px;max-width:min(92vw,640px);margin:0;padding:12px 18px;font-size:1.05rem;line-height:1.35}.ribbon-travel,.ribbon-finale{background:#f6e7c8b8}.hud-ask .dots,.hud-title .dots,.hud-end .dots{order:-1}.devbar{top:max(8px, env(safe-area-inset-top));z-index:5;pointer-events:auto;color:#f6e7c4;background:#1c140ce0;border:1px solid #e6c56a;border-radius:14px;width:min(920px,100% - 16px);padding:8px 10px 10px;position:absolute;left:50%;transform:translate(-50%)}.devbar p{text-align:center;letter-spacing:.02em;margin:0 0 6px;font-size:.78rem}.oiljar{pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;top:max(96px, calc(env(safe-area-inset-top) + 88px));right:max(12px, env(safe-area-inset-right));z-index:4;pointer-events:none;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute}.oiljar p{letter-spacing:.08em;text-transform:uppercase;color:#f6e7c4;text-shadow:0 1px 2px #1c140c;margin:0;font-size:.78rem}.jar-glass{background:#f7f1e447;border:2px solid #e6c56a;border-radius:7px 7px 16px 16px;width:34px;height:54px;position:relative;overflow:hidden}.jar-oil{background:linear-gradient(#f2c14e,#c47a32);position:absolute;bottom:0;left:0;right:0}.devrow{flex-wrap:nowrap;justify-content:center;gap:6px;display:flex;overflow-x:auto}.devbar button{color:#f6e7c4;min-width:36px;min-height:36px;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #e6c56a;border-radius:9px;padding:6px 10px;font-size:.92rem}.devbar button.here{color:#3e2a14;background:#e6c56a}@media (width<=720px){.card{max-height:52vh;padding:14px}.lead,.prompt,.note{font-size:1.05rem}.btn{min-height:52px;font-size:1.05rem}}.birthday{pointer-events:none;text-align:center;flex-direction:column;justify-content:flex-start;align-items:center;padding-top:clamp(84px,13vh,150px);display:flex;position:absolute;inset:0}.birthday-title{letter-spacing:.02em;white-space:nowrap;margin:0;font-size:clamp(44px,9.5vw,128px);font-weight:700;line-height:1}.birthday-title span{background:linear-gradient(#fff6d0 0%,#ffd56a 38%,#e09a2a 70%,#fff0b8 100%);color:#0000;filter:drop-shadow(0 2px #7a4a12)drop-shadow(0 0 18px #ffc85abf);opacity:0;animation:letter-pop .7s cubic-bezier(.2, 1.6, .4, 1) calc(.35s + var(--i) * 70ms) forwards, letter-float 2.6s ease-in-out calc(1.6s + var(--i) * .11s) infinite;-webkit-background-clip:text;background-clip:text;display:inline-block;transform:translateY(40px)scale(.2)rotate(-12deg)}.birthday-name{color:#fff1f4;text-shadow:0 0 14px #ff78a0e6,0 0 32px #ff508299,0 2px #9b2c4a;opacity:0;margin:.15em 0 0;font-family:Snell Roundhand,Apple Chancery,Brush Script MT,cursive;font-size:clamp(40px,7vw,96px);animation:1.2s ease-out 1.5s forwards name-in,2.4s ease-in-out 2.7s infinite name-glow}.birthday-sparkles{position:absolute;inset:0}.birthday-sparkles i{clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);opacity:0;width:14px;height:14px;animation:twinkle 1.8s ease-in-out calc(1s + var(--i) * .23s) infinite;background:radial-gradient(circle,#fffbe6 0 22%,#ffd66ee6 40%,#0000 70%);position:absolute}.birthday-again{bottom:max(24px, env(safe-area-inset-bottom));pointer-events:auto;opacity:0;animation:.8s ease-out 4s forwards name-in;position:absolute}@keyframes letter-pop{to{opacity:1;transform:translateY(0)scale(1)rotate(0)}}@keyframes letter-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes name-in{0%{opacity:0;transform:translateY(16px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes name-glow{0%,to{text-shadow:0 0 14px #ff78a0e6,0 0 32px #ff508299,0 2px #9b2c4a}50%{text-shadow:0 0 22px #ff96b9,0 0 48px #ff5a8ccc,0 2px #9b2c4a}}@keyframes twinkle{0%,to{opacity:0;transform:scale(.3)rotate(0)}50%{opacity:1;transform:scale(1.4)rotate(45deg)}}@media (prefers-reduced-motion:reduce){.birthday-title span,.birthday-name,.birthday-again{animation:.4s ease-out forwards name-in;transform:none}.birthday-sparkles{display:none}}.invite{--w:min(84vw, 440px);--gold:#e8b84a;z-index:50;perspective:1400px;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.invite:before{content:"";background:radial-gradient(at 50% 42%,#7828468c,#0000 60%),radial-gradient(at 50% 120%,#3a1430,#0000 70%),#1a0f1f;position:absolute;inset:0}.invite-rays{opacity:.9;background:repeating-conic-gradient(#ffd67821 0deg 6deg,#0000 6deg 18deg);width:170vmax;height:170vmax;animation:40s linear infinite rays-turn;position:absolute;-webkit-mask-image:radial-gradient(circle,#000 0 18%,#0000 55%);mask-image:radial-gradient(circle,#000 0 18%,#0000 55%)}.invite-stars i{width:3px;height:3px;animation:twinkle 2.4s ease-in-out calc(var(--i) * -.17s) infinite;background:#fff3c8;border-radius:50%;position:absolute;box-shadow:0 0 6px 2px #ffdc8cb3}.envelope{width:var(--w);height:calc(var(--w) * .64);transform-style:preserve-3d;filter:drop-shadow(0 24px 30px #0000008c);animation:1.25s cubic-bezier(.18,.9,.25,1.15) both envelope-snap;position:relative}.envelope-back,.envelope-front,.envelope-flap,.envelope-letter-peek{border-radius:6px;position:absolute}.envelope-back{background:linear-gradient(160deg,#e9d9b8,#d9c39a);inset:0}.envelope-letter-peek{background:radial-gradient(at 50% 40%,#fffaf0,#f3e6c8 80%);inset:6% 7% 8%;box-shadow:inset 0 0 0 2px #e8b84ab3}.envelope-front{clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);background:linear-gradient(200deg,#ffffff59,#0000 40%),linear-gradient(#f8eedb,#eadbbb);inset:0;box-shadow:inset 0 -3px #e8b84acc}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;z-index:3;background:linear-gradient(#efe1c3,#dcc69d);height:100%;top:0;left:0;right:0}.seal{width:calc(var(--w) * .22);aspect-ratio:1;cursor:pointer;z-index:4;background:0 0;border:0;border-radius:50%;padding:0;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%)}.seal-half{background:radial-gradient(circle at 38% 32%,#e2364f 0 18%,#0000 40%),radial-gradient(circle at 50% 55%,#b3122e 0 55%,#7c0b1f 72%,#5a0614 100%);border-radius:47% 53% 50% 50%/52% 48%;position:absolute;inset:0;box-shadow:0 4px 10px #3c000a8c,inset 0 -4px 8px #28000880,inset 0 3px 6px #ff8c9659}.seal-left{clip-path:polygon(0 0,54% 0,46% 40%,56% 62%,48% 100%,0 100%)}.seal-right{clip-path:polygon(54% 0,100% 0,100% 100%,48% 100%,56% 62%,46% 40%)}.seal-mark{font-family:Snell Roundhand,Apple Chancery,Georgia,serif;font-size:calc(var(--w) * .09);color:#f7c8cf;text-shadow:0 -1px #3c000ae6,0 1px #ffaab480;pointer-events:none;align-content:center;place-items:center;line-height:.8;display:grid;position:absolute;inset:0}.seal-crown{color:#ffd56a;text-shadow:0 0 6px #ffd26ecc;font-size:.45em}.invite-sealed .seal{animation:1.6s ease-in-out infinite seal-pulse}.invite-hint{text-align:center;color:#ffe7b0;letter-spacing:.08em;text-shadow:0 0 10px #ffc86ecc;margin:26px 0 0;font-size:18px;animation:1.6s ease-in-out infinite hint-breathe;position:absolute;top:100%;left:0;right:0}.invite-opening .seal-mark{animation:.3s ease-in forwards fade-out}.invite-opening .envelope-letter-peek{animation:.8s ease-out .9s forwards peek-rise}.invite-opening .envelope{animation:none}.letter{text-align:center;color:#4a3418;border:2px solid var(--gold);outline-offset:-10px;z-index:6;background:radial-gradient(at 50% 30%,#ffffffb3,#0000 60%),radial-gradient(#fbf3e0 50%,#ead8b2 100%);border-radius:10px;outline:1px solid #e8b84a99;width:min(88vw,520px);padding:clamp(26px,5vw,42px) clamp(22px,5vw,44px) clamp(24px,4vw,34px);animation:1s cubic-bezier(.2,1.3,.4,1) both letter-rise;position:absolute;box-shadow:0 30px 60px #0000008c,0 0 60px #ffd27859}.letter-corner{border:3px solid var(--gold);border-radius:2px;width:34px;height:34px;position:absolute}.letter-corner:after{content:"";background:var(--gold);border-radius:50%;width:8px;height:8px;position:absolute}.letter-corner.tl{border-bottom:0;border-right:0;top:16px;left:16px}.letter-corner.tr{border-bottom:0;border-left:0;top:16px;right:16px}.letter-corner.bl{border-top:0;border-right:0;bottom:16px;left:16px}.letter-corner.br{border-top:0;border-left:0;bottom:16px;right:16px}.letter-corner.tl:after,.letter-corner.bl:after{left:-5px}.letter-corner.tr:after,.letter-corner.br:after{right:-5px}.letter-corner.tl:after,.letter-corner.tr:after{top:-5px}.letter-corner.bl:after,.letter-corner.br:after{bottom:-5px}.letter-crown{color:var(--gold);text-shadow:0 0 12px #ffc85ab3;margin:0;font-size:34px;line-height:1}.letter-to{letter-spacing:.22em;text-transform:uppercase;color:#8a6a3a;margin:10px 0 0;font-size:13px}.letter-title{background:linear-gradient(#c98a1c,#e8b84a 45%,#9a6512);color:#0000;-webkit-background-clip:text;background-clip:text;margin:6px 0 8px;font-family:Snell Roundhand,Apple Chancery,Brush Script MT,cursive;font-size:clamp(40px,9vw,62px);font-weight:700;line-height:1.05}.letter-body{max-width:34ch;margin:0 auto;font-size:clamp(15px,3.6vw,18px);line-height:1.55}.letter-sign{color:#9b2c4a;margin:16px 0 18px;font-family:Snell Roundhand,Apple Chancery,cursive;font-size:24px}.letter-enter{font-size:17px}.petals i{opacity:.9;width:14px;height:10px;animation:petal-fall calc(6s + var(--i) * .13s) linear calc(var(--i) * -.6s) infinite;background:linear-gradient(135deg,#ffd1dc,#e8496a);border-radius:70% 0;position:absolute;top:-5vh}.invite-beam .petals{animation:.6s ease-in forwards fade-out}.invite-beam:before,.invite-beam .invite-rays,.invite-beam .invite-stars{animation:.2s linear .85s forwards fade-out}.invite-flash{pointer-events:none;opacity:0;background:radial-gradient(circle,#fffef6 0%,#ffe7a6 45%,#f0a548 100%);position:absolute;inset:0}.invite-beam .invite-flash{animation:2.3s ease-in-out forwards beam-flash}@keyframes rays-turn{to{transform:rotate(360deg)}}@keyframes envelope-snap{0%{transform:translate(-110vw,-55vh)rotate(-38deg)scale(.45)}55%{transform:translate(4vw,2vh)rotate(7deg)scale(1.06)}72%{transform:translate(-1.5vw,-1vh)rotate(-3deg)scale(.98)}86%{transform:translate(.5vw)rotate(1.2deg)scale(1.01)}to{transform:none}}@keyframes envelope-float{0%,to{transform:translateY(0)rotate(-.6deg)}50%{transform:translateY(-10px)rotate(.6deg)}}@keyframes seal-pulse{0%,to{filter:drop-shadow(0 0 #ff5a6e00);transform:translate(-50%,-50%)scale(1)}50%{filter:drop-shadow(0 0 14px #ff5a6ed9);transform:translate(-50%,-50%)scale(1.06)}}@keyframes hint-breathe{0%,to{opacity:.55}50%{opacity:1}}@keyframes seal-left{to{opacity:0;transform:translate(-70px,60px)rotate(-55deg)}}@keyframes seal-right{to{opacity:0;transform:translate(70px,70px)rotate(50deg)}}@keyframes fade-out{to{opacity:0}}@keyframes flap-open{0%{z-index:3;transform:rotateX(0)}49%{z-index:3}50%{z-index:0}to{z-index:0;transform:rotateX(180deg)}}@keyframes peek-rise{to{transform:translateY(-62%)}}@keyframes envelope-away{to{opacity:0;transform:translateY(40vh)scale(.7)rotate(6deg)}}@keyframes letter-rise{0%{opacity:0;transform:translateY(18vh)scale(.35)rotateX(35deg)}60%{opacity:1;transform:translateY(-2vh)scale(1.04)rotateX(0)}to{opacity:1;transform:none}}@keyframes letter-beam{0%{filter:brightness();opacity:1;transform:none}70%{filter:brightness(1.8)blur(1px);opacity:1;transform:scale(3.2)}to{filter:brightness(3)blur(6px);opacity:0;transform:scale(7)}}@keyframes beam-flash{0%{opacity:0}38%{opacity:1}48%{opacity:1}to{opacity:0}}@keyframes petal-fall{0%{transform:translate(0)rotate(0)}50%{transform:translate(40px,55vh)rotate(200deg)}to{transform:translate(-20px,112vh)rotate(420deg)}}@media (prefers-reduced-motion:reduce){.envelope,.invite-sealed .envelope,.letter,.invite-rays,.petals i,.invite-stars i{animation:none!important}}.invite{--parchment:radial-gradient(ellipse at 28% 22%, #fff9e4a6, transparent 52%), radial-gradient(circle at 74% 78%, #8c5c2433, transparent 30%), radial-gradient(circle at 18% 70%, #8c5c241f, transparent 22%), repeating-linear-gradient(0deg, #76542812 0 2px, transparent 2px 6px), repeating-linear-gradient(90deg, #7654280d 0 1px, transparent 1px 9px), linear-gradient(165deg, #efdcae, #dcc08a 60%, #cfae72);--burnt:inset 0 0 26px #693e1499, inset 0 0 4px #502d0ab3}.invite-stars i{animation:glitter-rise calc(7s + var(--i) * .11s) linear calc(var(--i) * -.4s) infinite;background:#ffe39a;box-shadow:0 0 8px 2px #ffd278cc}.envelope-back{background:var(--parchment);box-shadow:var(--burnt)}.envelope-front{background:var(--parchment);box-shadow:var(--burnt), inset 0 -3px 0 #b07a2899;filter:brightness(1.04)}.envelope-flap{background:var(--parchment);box-shadow:var(--burnt);filter:brightness(.96)}.envelope-letter-peek{background:var(--parchment);box-shadow:var(--burnt)}.envelope-ribbon{left:calc(50% - var(--w) * .035);width:calc(var(--w) * .07);z-index:3;transform-origin:top;background:linear-gradient(90deg,#6d0a1c,#c41e3a 30%,#e2475f 50%,#c41e3a 70%,#6d0a1c);position:absolute;top:0;bottom:0;box-shadow:0 0 6px #3c000a66}.invite-opening .envelope-ribbon{animation:.5s ease-in forwards ribbon-off}.seal-mark{gap:2px}.seal-mark:before{content:"";border:2px dotted #ffbec88c;border-radius:50%;position:absolute;inset:11%}.seal-initials{font-family:Snell Roundhand,Apple Chancery,Georgia,serif;font-size:calc(var(--w) * .075);letter-spacing:-.12em;margin-left:-.12em;font-weight:700}.scroll{z-index:6;flex-direction:column;align-items:center;animation:1s cubic-bezier(.2,1.3,.4,1) both letter-rise;display:flex;position:absolute}.scroll-rod{z-index:2;background:linear-gradient(#fff1bf,#e8b84a 40%,#9a6512 85%,#6b430a);border-radius:9px;width:calc(min(88vw,520px) + 36px);height:18px;position:relative;box-shadow:0 4px 10px #00000073}.scroll-rod:before,.scroll-rod:after{content:"";background:radial-gradient(circle at 40% 35%,#fff6d6,#e8b84a 45%,#8a5810);border-radius:50%;width:26px;height:28px;position:absolute;top:-5px}.scroll-rod:before{left:-14px}.scroll-rod:after{right:-14px}.letter{outline-offset:-14px;color:#5a3a14;background:var(--parchment);box-shadow:var(--burnt), 0 30px 60px #00000080, 0 0 70px #ffaac840;border:0;border-radius:2px;outline:2px solid #b07a28bf;margin:-6px 0;animation:1.4s cubic-bezier(.3,.8,.3,1) .35s both scroll-unroll;position:relative;overflow:hidden}.letter-to{color:#7a5320}.letter-rule{color:#b07a28;letter-spacing:.3em;margin:6px 0;font-size:18px}.letter-body{color:#5a3a14}.letter-sign{color:#9b2c4a}.letter-seal{color:#f7c8cf;letter-spacing:-.1em;background:radial-gradient(circle at 38% 32%,#e2364f 0 18%,#0000 40%),radial-gradient(circle,#b3122e 0 55%,#6d0a1c 100%);border-radius:47% 53% 50% 50%/52% 48%;place-items:center;width:54px;height:54px;font-family:Snell Roundhand,Apple Chancery,Georgia,serif;font-size:21px;font-weight:700;display:grid;position:absolute;top:30px;right:30px;transform:rotate(-12deg);box-shadow:0 3px 6px #3c000a80,inset 0 -3px 6px #28000880}.invite-beam .letter{animation:none}@keyframes scroll-unroll{0%{max-height:0;padding-top:0;padding-bottom:0}to{max-height:900px}}@keyframes ribbon-off{to{opacity:0;transform:scaleY(0)}}@keyframes glitter-rise{0%{opacity:0;transform:translateY(20vh)scale(.6)}15%{opacity:1}to{opacity:0;transform:translateY(-60vh)scale(1.1)}}.invite-rays{display:none}.invite-stars i{background:#ffb04a;width:3px;height:3px;box-shadow:0 0 8px 2px #ff8c28bf}.hall{pointer-events:none;position:absolute;inset:0}.hall-side{flex-direction:column;align-items:center;width:min(24vw,240px);display:flex;position:absolute;top:0;bottom:0}.hall-left{left:max(2vw,12px)}.hall-right{right:max(2vw,12px)}.heraldry{clip-path:polygon(0 0,100% 0,100% 100%,50% 84%,0 100%);transform-origin:top;filter:drop-shadow(0 10px 16px #0009);background:linear-gradient(90deg,#00000040,#0000 18% 82%,#00000040),repeating-linear-gradient(90deg,#ffffff08 0 2px,#0000 2px 8px),linear-gradient(#8e1426,#6a0d1c);flex-direction:column;justify-content:center;align-items:center;gap:6px;width:min(15vw,150px);height:min(46vh,380px);margin-top:-4px;animation:6s ease-in-out infinite banner-sway;display:flex;position:relative;box-shadow:inset 0 0 0 5px #c9962e,inset 0 0 0 8px #6a0d1c,inset 0 0 0 10px #c9962e99}.hall-right .heraldry{animation-delay:-3s}.heraldry:before{content:"";background:linear-gradient(#8a6430,#4a3018);border-radius:7px;height:14px;position:absolute;top:-10px;left:-14px;right:-14px}.heraldry-crown{color:#f0c14d;text-shadow:0 0 10px #ffc85a80;font-size:min(5vw,48px)}.heraldry-mark{letter-spacing:-.1em;color:#f0c14d;font-family:Snell Roundhand,Apple Chancery,Georgia,serif;font-size:min(4.6vw,44px);font-weight:700}.heraldry-branch{color:#b9c46a;font-size:min(3.4vw,30px)}.torch{background:linear-gradient(90deg,#2a2420,#5a4c40 50%,#2a2420);border-radius:3px 3px 6px 6px;width:16px;height:70px;margin-top:13vh;position:relative}.torch:before{content:"";background:radial-gradient(#4a3a2e,#1e1610);border-radius:50%;width:36px;height:14px;position:absolute;top:-10px;left:-10px}.torch-flame{filter:blur(.6px)drop-shadow(0 0 22px #ff8c28e6);transform-origin:50% 100%;background:radial-gradient(at 50% 75%,#fff6c8 0 18%,#ffc24a 40%,#ff7a1a 68%,#ff500000 75%);border-radius:50% 50% 45% 45%/62% 62% 38% 38%;width:34px;height:58px;animation:.24s ease-in-out infinite alternate flame-flicker;position:absolute;bottom:62px;left:50%;transform:translate(-50%)}.hall-right .torch-flame{animation-duration:.31s}.envelope{animation:2.3s cubic-bezier(.16,.84,.3,1.05) both envelope-whirl}@keyframes envelope-whirl{0%{opacity:0;transform:translateZ(-2600px)rotateY(-720deg)rotateX(30deg)rotate(-25deg)}12%{opacity:1}68%{transform:translateZ(140px)rotateY(12deg)rotateX(-5deg)rotate(3deg)}84%{transform:translateZ(-30px)rotateY(-5deg)rotateX(2deg)rotate(-1deg)}to{opacity:1;transform:none}}@keyframes banner-sway{0%,to{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}@keyframes flame-flicker{0%{opacity:.92;transform:translate(-50%)scale(1)skew(-3deg)}to{opacity:1;transform:translate(-50%)scale(.92,1.1)skew(4deg)}}@media (width<=640px){.hall-side{width:22vw}.heraldry{height:30vh}.torch{display:none}}.waving-banner{filter:drop-shadow(0 12px 18px #0009);width:min(19vw,190px);height:min(50vh,420px);position:relative}.banner-canvas{width:100%;height:calc(100% - 8px);position:absolute;inset:8px 0 0}.banner-rod{z-index:1;background:linear-gradient(#a47a40,#5a3a1a);border-radius:6px;height:12px;position:absolute;top:0;left:4%;right:4%}.banner-rod:before,.banner-rod:after{content:"";background:radial-gradient(circle at 40% 35%,#fff0b8,#d4a23a 50%,#7a5010);border-radius:50%;width:20px;height:20px;position:absolute;top:-4px}.banner-rod:before{left:-10px}.banner-rod:after{right:-10px}.torch{overflow:visible}.torch-fire{pointer-events:none;width:110px;height:190px;position:absolute;bottom:58px;left:50%;transform:translate(-50%)}.torch-canvas{width:100%;height:100%;position:absolute;inset:0}.torch-glow{mix-blend-mode:screen;background:radial-gradient(circle,#ff963c52,#ff78281a 40%,#0000 70%);border-radius:50%;width:420px;height:420px;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)}.envelope{filter:none;will-change:transform, opacity;backface-visibility:visible;animation:3s cubic-bezier(.22,1,.36,1) both envelope-glide}.invite-wait .envelope{opacity:0;animation:none}.envelope-back{box-shadow:var(--burnt), 0 26px 40px #0000008c}.invite-sealed .envelope{animation:4s ease-in-out infinite envelope-hover}@keyframes envelope-glide{0%{opacity:0;transform:translate3d(0,-6vh,-2200px)rotateY(-300deg)rotateX(18deg)rotate(-14deg)}18%{opacity:1}to{opacity:1;transform:translate(0,0)rotateY(0)rotateX(0)rotate(0)}}@keyframes envelope-hover{0%,to{transform:rotateX(2deg)rotateY(-3deg)translate(0)}50%{transform:rotateX(-3.5deg)rotateY(3.5deg)translate3d(0,-8px,22px)}}.invite{pointer-events:auto}.invite-beam{pointer-events:none}.letter{cursor:pointer}.envelope{transform-style:flat}.invite-opening .envelope{transform-style:preserve-3d}.invite:before{background:radial-gradient(at 50% 48%,#ffd69c33,#0000 44%),radial-gradient(#0000 34%,#080402d6 100%),linear-gradient(#ffe2b40f,#00000052),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='264' height='200'><rect width='264' height='200' fill='%231a120e'/><rect x='2' y='2' width='128' height='46' rx='3' fill='%23624d3b'/><rect x='134' y='2' width='128' height='46' rx='3' fill='%23523f31'/><rect x='-64' y='52' width='128' height='46' rx='3' fill='%234c3a2d'/><rect x='200' y='52' width='128' height='46' rx='3' fill='%234c3a2d'/><rect x='68' y='52' width='128' height='46' rx='3' fill='%235a4838'/><rect x='2' y='102' width='128' height='46' rx='3' fill='%23574535'/><rect x='134' y='102' width='128' height='46' rx='3' fill='%235a4838'/><rect x='-64' y='152' width='128' height='46' rx='3' fill='%23624d3b'/><rect x='68' y='152' width='128' height='46' rx='3' fill='%23574535'/></svg>") 0 0/264px 200px,#1a120e}.hall{contain:layout paint;transform-origin:50% 42%;animation:18s ease-in-out infinite hall-breathe}@keyframes hall-breathe{0%,to{transform:scale(1)translate(0)}50%{transform:scale(1.018)translateY(-8px)}}.invite-dust{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.invite-dust i{left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);width:calc(4px + var(--s) * 7px);height:calc(4px + var(--s) * 7px);background:var(--dust) center / contain no-repeat;animation:dust-rise calc(10s + var(--d) * 8s) linear calc(var(--d) * -9s) infinite;pointer-events:none;position:absolute}@keyframes dust-rise{0%{opacity:0;transform:translateY(10vh)scale(.55)}16%{opacity:.95}to{opacity:0;transform:translate3d(calc((var(--d) - .5) * 48px), -52vh, 0) scale(1.2)}}.envelope-flight{z-index:4;transform-style:preserve-3d;position:relative}.envelope-depth{perspective:1100px;transform-style:preserve-3d}.envelope-lift{transform-style:preserve-3d}.invite-warm .envelope-flight{opacity:1;will-change:transform, opacity;transform:translate(-78vw)}.invite-warm .envelope-lift{will-change:transform;transform:translate3d(0,-14vh,-560px)rotateY(-64deg)rotateX(24deg)rotate(-12deg)scale(.82)}.invite-arrive .envelope-flight{will-change:transform, opacity;animation:2.8s cubic-bezier(.16,.72,.18,1) both fly-x,2.8s linear both fly-fade}.invite-arrive .envelope-lift{will-change:transform;animation:2.8s cubic-bezier(.16,.64,.2,1.02) both fly-depth}.invite-sealed .envelope-flight,.invite-sealed .envelope-lift,.invite-opening .envelope-flight,.invite-opening .envelope-lift,.invite-letter .envelope-flight,.invite-letter .envelope-lift,.invite-beam .envelope-flight,.invite-beam .envelope-lift{opacity:1;will-change:auto;animation:none;transform:none}@keyframes fly-x{0%{transform:translate(-78vw)}to{transform:none}}@keyframes fly-depth{0%{transform:translate3d(0,-14vh,-560px)rotateY(-64deg)rotateX(24deg)rotate(-12deg)scale(.82)}to{transform:none}}@keyframes fly-fade{0%{opacity:0}12%{opacity:1}to{opacity:1}}.envelope{filter:none;width:var(--w);height:calc(var(--w) * .64);will-change:auto;animation:none}.envelope.is-settled{transform-style:preserve-3d;animation:5.5s ease-in-out infinite envelope-hover}.invite-opening .envelope{transform-style:preserve-3d;animation:1.15s cubic-bezier(.2,.8,.2,1) forwards envelope-open-tilt}.invite-letter .envelope,.invite-beam .envelope{animation:.75s ease-in forwards envelope-away}@keyframes envelope-open-tilt{0%{transform:rotateX(0)rotateY(0)}42%{transform:rotateX(16deg)rotateY(-8deg)}to{transform:rotateX(7deg)rotateY(0)}}.envelope-shadow{background:var(--shadow) center / 100% 100% no-repeat;pointer-events:none;z-index:0;height:36px;position:absolute;bottom:-18px;left:8%;right:8%}.envelope-back,.envelope-front,.envelope-flap,.envelope-letter-peek{filter:none;box-shadow:none;background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.envelope-back{background-image:var(--back);z-index:1}.envelope-letter-peek{background-image:var(--peek);z-index:1;inset:0}.envelope-front{background-image:var(--front);clip-path:none;z-index:2}.envelope-flap{background-image:var(--flap);clip-path:none;z-index:3}.envelope-ribbon{background:var(--ribbon) center / 100% 100% no-repeat;width:auto;box-shadow:none;filter:none;z-index:4;pointer-events:none;inset:0}.seal{appearance:none;opacity:1;filter:none;touch-action:manipulation}.seal:disabled{opacity:1;cursor:default}.seal:focus-visible{outline-offset:4px;outline:2px solid #f0d78c}.seal-half{background:var(--seal) center / 100% 100% no-repeat;box-shadow:none;filter:none}.seal-burst{z-index:6;pointer-events:none;width:0;height:0;position:absolute;top:58%;left:50%}.seal-burst i{width:calc(10px + var(--s) * 8px);height:calc(10px + var(--s) * 8px);margin:calc(var(--s) * -4px) 0 0 calc(var(--s) * -4px);background:var(--spark) center / contain no-repeat;opacity:0;pointer-events:none;position:absolute}.seal-burst.on i{animation:spark-out .95s ease-out calc(var(--i) * 28ms) forwards}@keyframes spark-out{0%{opacity:0;transform:translate(0)scale(.3)rotate(0)}18%{opacity:1}to{opacity:0;transform:translate3d(calc(var(--dx) * 1px), calc(var(--dy) * 1px), 90px) scale(1.2) rotate(28deg)}}.invite-opening .seal-left{animation:.8s cubic-bezier(.2,.7,.2,1) forwards seal-left-3d}.invite-opening .seal-right{animation:.8s cubic-bezier(.2,.7,.2,1) forwards seal-right-3d}.invite-opening .envelope-flap{animation:.9s ease-in-out .18s forwards flap-open-3d}@keyframes seal-left-3d{to{opacity:0;transform:translate3d(-86px,36px,70px)rotateY(-70deg)rotate(-36deg)}}@keyframes seal-right-3d{to{opacity:0;transform:translate3d(88px,42px,70px)rotateY(68deg)rotate(34deg)}}@keyframes flap-open-3d{0%{z-index:3;transform:rotateX(0)}46%{z-index:3}54%{z-index:0}to{z-index:0;transform:rotateX(188deg)}}.invite-hint{color:#fff6df;text-shadow:0 1px 2px #000000d9}.waving-banner{filter:none}.waving-banner:after{content:"";background:var(--shadow) center / 100% 100% no-repeat;opacity:.55;pointer-events:none;z-index:-1;height:22px;position:absolute;bottom:6%;left:16%;right:16%}.torch{filter:none;background:0 0;border-radius:0;width:132px;height:248px;margin-top:4vh;display:block;position:relative;overflow:visible}.torch:before{display:none}.torch-light{pointer-events:none;background:radial-gradient(42% 28% at 50% 28%,#ffdca0d9,#ff963247 42%,#0000 70%),radial-gradient(70% 80% at 50% 48%,#ff822838,#0000 72%);width:520px;height:620px;animation:2.7s ease-in-out infinite torch-light;position:absolute;top:-70px;left:50%;transform:translate(-50%)}.hall-left .torch-light{background:radial-gradient(42% 28% at 62% 28%,#ffdca0d9,#ff963247 42%,#0000 70%),radial-gradient(70% 80% at 70% 48%,#ff82283d,#0000 72%)}.hall-right .torch-light{background:radial-gradient(42% 28% at 38% 28%,#ffdca0d9,#ff963247 42%,#0000 70%),radial-gradient(70% 80% at 30% 48%,#ff82283d,#0000 72%);animation-duration:3.4s;animation-delay:-1.3s}@keyframes torch-light{0%,to{opacity:.58}38%{opacity:.9}70%{opacity:.7}}.torch-candle{background:var(--candle) center bottom / contain no-repeat;pointer-events:none;height:196px;position:absolute;bottom:0;left:0;right:0}.torch-fire{mix-blend-mode:normal;width:120px;height:160px;bottom:158px;left:50%;transform:translate(-50%)}.torch-glow{display:none}.torch-canvas{background:0 0}.scroll-slot{z-index:6;pointer-events:none;width:min(88vw,500px);transform-style:preserve-3d;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scroll-depth{perspective:1400px;transform-style:preserve-3d}.scroll{transform-origin:50% 0;filter:none;width:100%;animation:1.25s cubic-bezier(.16,.78,.24,1) both scroll-swing;position:relative}@keyframes scroll-swing{0%{opacity:0;transform:rotateX(-82deg)translate3d(0,-28px,-60px)}28%{opacity:1}to{opacity:1;transform:rotateX(0)translate(0)}}.scroll-rod{background:var(--rod) center / 100% 100% no-repeat;width:calc(100% + 32px);height:28px;box-shadow:none;border-radius:0;margin-left:-16px}.scroll-rod:before,.scroll-rod:after{display:none}.letter{filter:none;color:#2c1810;background-color:#f4e7cc;background-image:var(--scroll);pointer-events:auto;background-repeat:no-repeat;background-size:100% 100%;outline:none;width:100%;max-height:none;padding:clamp(18px,3.6vw,32px) clamp(18px,4vw,36px) clamp(16px,3vw,24px);font-family:Libre Baskerville,Palatino,Georgia,serif;animation:none;position:relative;box-shadow:0 18px 28px #00000047}.letter-corner{display:none}.letter-title{color:#3a2412;-webkit-text-fill-color:#3a2412;text-shadow:none;background:0 0;-webkit-background-clip:border-box;background-clip:border-box;font-family:Cormorant Garamond,Palatino,Georgia,serif;font-size:clamp(38px,7vw,58px);font-weight:600;line-height:1.05}.letter-body{color:#2c1810;font-family:Libre Baskerville,Palatino,Georgia,serif;font-size:clamp(15.5px,3.4vw,17.5px);line-height:1.6}.letter-to{color:#3f2914;letter-spacing:.14em;text-transform:uppercase;font-family:Libre Baskerville,Palatino,Georgia,serif;font-size:12px}.letter-name{margin-top:2px}.letter-sign{color:#5c1a2c;font-family:Cormorant Garamond,Palatino,Georgia,serif;font-size:30px;font-style:italic;font-weight:600}.letter-crown,.letter-rule{color:#6a4818;text-shadow:none}.letter-seal{background:var(--seal) center / contain no-repeat;width:46px;height:46px;box-shadow:none;color:#0000;top:auto;bottom:78px;right:16px}.letter .btn,.letter .btn:hover{filter:none}.letter .btn:hover{background:#376b3c}.petals,.petals i{pointer-events:none}.invite-flash{z-index:8}.invite-beam .scroll{animation:1.05s ease-in forwards scroll-beam}.invite-beam .letter{filter:none;animation:none}@keyframes scroll-beam{0%{opacity:1;transform:rotateX(0)translate(0)scale(1)}to{opacity:0;transform:rotateX(14deg)translate3d(0,-4vh,280px)scale(1.28)}}@media (width>=721px){.letter-seal{bottom:102px}}@media (width<=720px){.waving-banner{width:min(16vw,68px);height:min(15vh,128px)}.scroll-slot{top:47%}.torch{bottom:max(6px, env(safe-area-inset-bottom));width:96px;height:190px;margin-top:0;display:block;position:absolute}.torch-candle{height:146px}.torch-fire{width:72px;height:84px;bottom:92px}.torch-light{width:280px;height:340px;top:-36px}.letter-title{font-size:36px}.letter-sign{font-size:26px}.letter-seal{width:40px;height:40px;bottom:88px}}@media (prefers-reduced-motion:reduce){.hall,.envelope-flight,.envelope-lift,.envelope,.envelope.is-settled,.scroll,.letter,.petals i,.invite-dust i,.torch-light{opacity:1!important;animation:none!important;transform:none!important}.seal,.seal-half,.envelope-flap{animation:none!important}.invite-wait .envelope,.invite-warm .envelope{opacity:0!important}.seal-burst i{opacity:0!important;animation:none!important}}
