: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-left{animation:.7s ease-in forwards seal-left}.invite-opening .seal-right{animation:.7s ease-in forwards seal-right}.invite-opening .seal-mark{animation:.3s ease-in forwards fade-out}.invite-opening .envelope-flap{animation:.75s ease-in-out .3s forwards flap-open}.invite-opening .envelope-letter-peek{animation:.8s ease-out .9s forwards peek-rise}.invite-opening .envelope{animation:none}.invite-letter .envelope,.invite-beam .envelope{animation:.8s ease-in forwards envelope-away}.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 .scroll{animation:1s ease-in forwards letter-beam}.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:before{background:radial-gradient(at 50% 48%,#ffbe6e52,#0000 42%),radial-gradient(at 14% 40%,#ff963c47,#0000 26%),radial-gradient(at 86% 40%,#ff963c47,#0000 26%),radial-gradient(#0000 40%,#080402d9 100%),linear-gradient(#ffdcaa0f,#00000059),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='264' height='200'><rect width='264' height='200' fill='%231e1610'/><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='200' 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='200' y='152' width='128' height='46' rx='3' fill='%23624d3b'/><rect x='68' y='152' width='128' height='46' rx='3' fill='%23574535'/><rect x='200' y='152' width='128' height='46' rx='3' fill='%235a4838'/></svg>") 0 0/264px 200px,#1e1610}.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:translate(0,0)}50%{transform:translateY(-8px)}}.invite{pointer-events:auto}.invite-beam{pointer-events:none}.letter{cursor:pointer}.envelope{transform-style:flat}.invite-opening .envelope{transform-style:preserve-3d}
