@font-face{font-family:Amiri;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/J7aRnpd8CGxBHpUrtLMA7w.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-88E,U+890-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Amiri;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/J7aRnpd8CGxBHpUutLM.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/co3ZmX5slCNuHLi8bLeY9MK7whWMhyjYrEtImSo.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/co3ZmX5slCNuHLi8bLeY9MK7whWMhyjYrEtImSo.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/co3bmX5slCNuHLi8bLeY9MK7whWMhyjYqXtK.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/co3bmX5slCNuHLi8bLeY9MK7whWMhyjYqXtK.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/co3bmX5slCNuHLi8bLeY9MK7whWMhyjYqXtK.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Great Vibes;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/RWmMoKWR9v4ksMfaWd_JN9XFiaQ.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/xn7gYHE41ni1AdIRggexSg.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/xn7gYHE41ni1AdIRggexSg.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/xn7gYHE41ni1AdIRggexSg.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/cg-vi.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:400 500;font-display:swap;src:url(/fonts/cgi-vi.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Great Vibes;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/gv-vi.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/mr-vi.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Allura;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/f-NYsQpS4zjuA_hAgWHNn7GfHC.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Allura;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/f-RPNYsQpS4zjuA_iwgWHNn7GQ.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/f-DWvOJmVES_Hw4BXoYZ7AjSh8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/f-g_IDWvOJmVES_Hw3BXoYZ7Aj.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/f-JmVES_HTEJm86Rb0JcBaoUUU.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/f-WvOJmVES_HTEJm81Rb0JcBao.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/f-JmVES_HToIW86Rb0JcBaoUUU.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/f-WvOJmVES_HToIW81Rb0JcBao.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400 600;font-display:swap;src:url(/fonts/f-3ij__anPXDTnojUk7yRZrPJM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400 600;font-display:swap;src:url(/fonts/f-j3ij__anPXDTnogkk7yRZrPA.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/f-j3ij__anPXDTPYgEM86xRbPQ.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/f-b_rj3ij__anPXDTzYgEM86xQ.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat;font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/caveat-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant VN;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-i-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant VN;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-i-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant VN;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-i-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant VN;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-n-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant VN;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-n-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant VN;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/vn-cg-n-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Great Vibes VN;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vn-gv-n-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Great Vibes VN;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vn-gv-n-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Great Vibes VN;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vn-gv-n-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--primary:#8a5e34;--paper:#fffaf0;--ink:#4d4130;--gold:var(--primary);--line:#c0a07c;--serif:"Playfair Display",Georgia,serif;--script:"Allura",cursive;--sans:"Be Vietnam Pro",Arial,sans-serif}*{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;background:#1f1208}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--gold);outline-offset:5px}h1,h2,h3,p{margin:0}button,a{-webkit-tap-highlight-color:transparent}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.invitation-room{isolation:isolate;background:radial-gradient(at 42% 33%,#5a3a1c 0%,#3a2310 45%,#1f1208 100%);width:100%;height:100dvh;position:relative;overflow:hidden}.invitation-room:before{content:"";z-index:-1;pointer-events:none;filter:blur(22px);opacity:.45;background:linear-gradient(118deg,#0000 18%,#ffffff48 24%,#ba9d8020 29%,#0000 35%,#ffffff42 47%,#b4998120 53%,#0000 60%,#fff5e92b 68%,#0000 74%);position:absolute;inset:-25%;transform:rotate(-13deg)}.invitation-room:after{content:"";pointer-events:none;z-index:10;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.5' d='M0 0h150v150H0z'/%3E%3C/svg%3E");position:absolute;inset:0}.experience{place-items:center;width:100%;height:100%;display:grid;position:relative}.quiet-heading{top:max(24px,env(safe-area-inset-top));text-align:center;font:9px var(--sans);letter-spacing:3px;color:#d9c39a;z-index:3;position:absolute;left:16px;right:16px}.quiet-footer{bottom:max(19px,env(safe-area-inset-bottom));text-align:center;font:8px var(--sans);letter-spacing:2px;color:#d9c39a;position:absolute;left:10px;right:10px}.quiet-footer i{padding:0 8px;font-style:normal}.envelope-stage{max-width:820px;margin:auto;position:absolute;inset:65px 0 105px}.scene-host{z-index:1;pointer-events:none;opacity:0;transition:opacity .6s;position:fixed;inset:0}.scene-host.ready{opacity:1}.scene-host canvas{width:100%;height:100%;display:block}.envelope-hit{-webkit-user-select:none;user-select:none;background:0 0;border:0;width:min(85%,480px);height:min(100%,520px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.opened .scene-host{opacity:0;transition:opacity .7s}.opening-caption{text-align:center;color:#ecdcc0;flex-direction:column;align-items:center;gap:13px;height:39px;display:flex;position:absolute;bottom:67px;left:12px;right:12px}.opening-caption p{font:italic 19px var(--serif)}.touch-mark{outline-offset:4px;border:1px solid #d9c39a;border-radius:50%;outline:1px solid #d9c39a5e;width:10px;height:10px}.accessible-open{clip-path:inset(50%);width:1px;height:1px;position:absolute;bottom:40px;overflow:hidden}.accessible-open:focus{clip-path:none;background:var(--paper);border:1px solid var(--gold);z-index:20;width:auto;height:44px;padding:8px 20px}.paper-envelope{aspect-ratio:4/4.5;perspective:1200px;background:#d3a793;width:min(70%,400px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-3deg);box-shadow:12px 28px 35px #75583a30,inset 0 0 0 1px #ba8c7444}.emboss{color:#f2d0b8;filter:drop-shadow(1px 1px #ac78677a);width:45%;height:100%;position:absolute}.emboss.left{left:0}.emboss.right{right:0;transform:scaleX(-1)}.envelope-arch{border:2px solid #edc8ad;border-radius:50% 50% 0 0;position:absolute;inset:8% 29% 0;box-shadow:1px 1px #ac786755}.cover{clip-path:polygon(0 0,100% 0,100% 25%,50% 61%,0 25%);transform-origin:top;filter:drop-shadow(0 3px 3px #75442f70);background:linear-gradient(145deg,#e7c3ae,#c59881);position:absolute;inset:0}.cover svg{color:#98713d;position:absolute;top:17%;left:47%}.pocket{clip-path:polygon(0 26%,50% 65%,100% 26%,100% 100%,0 100%);background:linear-gradient(40deg,#d2a38a,#e6bda5);position:absolute;inset:0}.wax-seal{color:#4a2a12;background:radial-gradient(circle at 35% 30%,#bd8d5c,#a8774a 60%,#8f6038);border:10px solid #6f4423;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:85px;height:85px;font-size:20px;display:flex;position:absolute;top:58%;left:50%;transform:translate(-50%,-50%);box-shadow:2px 6px 8px #70442570,inset 0 2px 3px #ffffff2e,inset 0 -2px 3px #00000040}.wax-seal i{font-size:18px}.wax-seal small{font:6px var(--sans);letter-spacing:1.4px}.fallback-letter{background:var(--paper);opacity:0;position:absolute;inset:6%}.opening .paper-envelope .cover{transition:transform 1s .2s;transform:rotateX(-180deg)}.opening .wax-seal{opacity:0;transition:all .4s;transform:translate(-50%,-50%)scale(.6)}.opening .fallback-letter{opacity:1;transition:transform 1s .4s,opacity .3s;transform:translateY(-25%)}.letter-wrap{z-index:4;width:min(440px,100vw - 36px);animation:.8s cubic-bezier(.19,1,.22,1) both letter-arrives;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.letter{isolation:isolate;text-align:center;background:linear-gradient(115deg,#fffaf0,#f7efdf);border:1px solid #c0a07c;outline:none;flex-direction:column;justify-content:center;gap:12px;height:min(680px,100dvh - 135px);padding:26px 33px;display:flex;position:relative;box-shadow:0 25px 70px #6d4e2b30,0 3px 10px #6d4e2b15}.letter:before{content:"";pointer-events:none;z-index:-1;border:1px solid #baa06e7a;position:absolute;inset:8px}.letter:after{content:"";pointer-events:none;z-index:-1;border:1px solid #baa06e35;position:absolute;inset:12px}.letter-flower{color:#a2834b;opacity:.3;pointer-events:none;z-index:-1;width:88px;position:absolute}.flower-left{bottom:15px;left:-7px;transform:rotate(10deg)}.flower-right{top:14px;right:-6px;transform:rotate(190deg)}.arabic{color:var(--gold);font:28px/1.5 Amiri,serif}.invocation{font:14px/1.3 var(--serif);color:#9a7048;margin-top:4px}.ornament{color:var(--gold);justify-content:center;align-items:center;gap:9px;margin:13px auto;display:flex}.ornament span{background:#c0a07c;width:48px;height:1px}.ornament svg{width:21px;height:18px}.invite-line{font:14px/1.4 var(--serif);max-width:255px;margin:auto}.letter h2{font:43px/1.05 var(--script);color:#8a5e34;margin:17px 0}.letter h2>span{font:23px/.9 var(--serif);margin:4px;display:block}.wedding-label{font:8px var(--sans);letter-spacing:2px;color:var(--gold);margin:15px 0 9px}.letter-events{border-block:1px solid #cdbb9766}.letter-event{text-align:left;grid-template-columns:34px 1fr 51px;align-items:center;gap:12px;padding:12px 0;display:grid}.letter-event+.letter-event{border-top:1px solid #cdbb9744}.event-day{font:29px/.8 var(--serif);color:var(--gold);text-align:center}.event-day small{font:7px var(--sans);letter-spacing:1px;margin-top:6px;display:block}.letter-event h3{font:18px/1.1 var(--serif);font-weight:500}.letter-event p{font:12px/1.3 var(--serif);color:#9a7048;margin-top:4px}.event-time{font:10px var(--sans);text-align:right;white-space:nowrap;color:#9a7048}.parents{font:14px var(--serif);justify-content:space-between;align-items:center;gap:10px;margin-top:19px;display:flex}.parents small{font:6px var(--sans);letter-spacing:1.1px;color:#9a7048;margin-bottom:6px;display:block}.parents>span{color:var(--gold)}.blessing{font:italic 16px/1.3 var(--serif);color:#9a7048}.letter-actions{justify-content:space-between;gap:6px;margin:7px -3px -44px;display:flex}.letter-actions button{min-height:44px;font:9px var(--sans);color:#d9c39a;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:4px 6px;display:flex}.letter-actions button:hover{color:#fff6df}.show-original{background:#f7eddb;padding:0}.original-card{object-fit:contain}.show-original:before,.show-original:after{display:none}@keyframes letter-arrives{0%{opacity:0;transform:translate(-50%,-53%)scale(.91)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@media (max-height:780px){.letter{gap:8px;padding:22px 29px}.arabic{font-size:25px}.letter h2{margin:11px 0;font-size:37px}.letter h2>span{font-size:20px}.ornament{margin:9px auto}.wedding-label{margin:11px 0 6px}.letter-event{padding:9px 0}.parents{margin-top:13px}.letter-details>.ornament{margin:8px 0}.blessing{font-size:15px}}@media (max-width:480px){.quiet-heading{letter-spacing:2.2px;top:max(23px,env(safe-area-inset-top));font-size:7px}.quiet-footer{letter-spacing:1.5px;bottom:max(17px,env(safe-area-inset-bottom));font-size:6px}.envelope-stage{inset:60px -30px 100px}.opening-caption p{font-size:18px}.letter-wrap{width:calc(100vw - 30px);max-width:410px}.letter{padding-inline:25px}.letter h2{font-size:39px}.letter-event{gap:9px}.letter-event h3{font-size:17px}.letter-event p{font-size:12px}.parents{font-size:13px}.parents small{letter-spacing:.8px;font-size:5.5px}.letter-actions button{gap:5px;font-size:8px}.letter-flower{opacity:.25;width:73px}}@media (max-height:690px) and (orientation:portrait){.letter{gap:5px;height:calc(100dvh - 112px);padding:17px 23px}.arabic{font-size:22px}.invocation,.invite-line{font-size:12px}.letter h2{margin:8px 0;font-size:33px}.letter h2>span{margin:3px;font-size:17px}.wedding-label{margin:8px 0 4px;font-size:7px}.letter-event{padding:7px 0}.letter-event h3{font-size:15px}.letter-event p{font-size:11px}.event-day{font-size:25px}.event-time{font-size:9px}.parents{margin-top:10px;font-size:12px}.blessing{font-size:14px}.ornament{margin:6px auto}.letter-details>.ornament{margin:6px 0}.quiet-heading{top:13px}.quiet-footer{bottom:10px}.letter-actions{margin-top:3px}}@media (orientation:landscape) and (max-height:600px){.quiet-heading{font-size:7px;top:12px}.quiet-footer{font-size:6px;bottom:10px}.envelope-stage{max-width:600px;inset:25px 0 65px}.opening-caption{gap:8px;bottom:35px}.opening-caption p{font-size:15px}.letter-wrap{width:min(740px,100vw - 46px);top:47%}.letter{grid-template-columns:1fr 1fr;align-items:center;gap:30px;height:calc(100dvh - 90px);padding:20px 25px;display:grid}.letter-intro{padding-right:12px}.letter h2{margin:10px 0;font-size:34px}.letter h2>span{font-size:18px}.arabic{font-size:24px}.invocation,.invite-line{font-size:12px}.wedding-label{letter-spacing:1px;font-size:6px}.letter-event{gap:8px;padding:8px 0}.letter-event h3{font-size:15px}.letter-event p{font-size:11px}.event-time{font-size:8px}.parents{gap:4px;margin-top:10px;font-size:11px}.parents small{letter-spacing:.5px;font-size:5px}.blessing{font-size:13px}.letter-details>.ornament{margin:6px 0}.letter-actions{margin-top:1px}.show-original{display:block}.original-card{object-fit:contain}.ornament{margin:8px auto}}.letter-intro,.letter-details{flex-shrink:0}.arabic{font-size:25px}.invocation{font-size:12px}.ornament{margin:9px auto}.invite-line{font-size:13px}.letter h2{margin:11px 0;font-size:37px}.wedding-label{margin:11px 0 6px}.letter-event{padding:9px 0}.letter-event h3{font-size:17px}.letter-event p{font-size:11px}.parents{margin-top:13px}.letter-details>.ornament{margin:8px 0}.blessing{font-size:15px}@media (max-height:690px) and (orientation:portrait){.letter{gap:4px;height:calc(100dvh - 100px);padding:16px 22px}.arabic{font-size:21px}.invocation{font-size:11px}.invite-line{max-width:230px;font-size:11px}.letter h2{margin:7px 0;font-size:30px}.letter h2>span{margin:3px;font-size:17px}.ornament{margin:5px auto}.wedding-label{margin:8px 0 5px;font-size:7px}.letter-event{padding:7px 0}.letter-event h3{font-size:15px}.letter-event p{font-size:11px}.parents{margin-top:10px;font-size:12px}.blessing{font-size:13px}.letter-details>.ornament{margin:5px 0}.letter-actions button{min-height:37px}}@media (max-height:600px) and (orientation:portrait){.letter{padding:14px 20px}.arabic{font-size:19px}.invocation,.invite-line{font-size:10px}.letter h2{margin:6px 0;font-size:27px}.letter h2>span{font-size:15px}.ornament{margin:4px auto}.ornament svg{height:14px}.wedding-label{margin:7px 0 3px;font-size:6px}.letter-event{grid-template-columns:30px 1fr 43px;gap:7px;padding:6px 0}.letter-event h3{font-size:14px}.letter-event p{font-size:10px}.parents{margin-top:8px;font-size:11px}.parents small{font-size:5px}.blessing{font-size:12px}.letter-details>.ornament{margin:4px 0}}@media (orientation:landscape) and (max-height:600px){.letter{gap:24px;padding:17px 24px}.arabic{font-size:21px}.invocation,.invite-line{font-size:11px}.letter h2{margin:8px 0;font-size:30px}.letter h2>span{margin:3px;font-size:17px}.wedding-label{letter-spacing:1px;margin:9px 0 3px;font-size:6px}.ornament{margin:6px auto}.ornament svg{height:14px}.letter-event{gap:8px;padding:6px 0}.letter-event h3{font-size:14px}.letter-event p{font-size:10px}.event-day{font-size:24px}.event-time{font-size:8px}.parents{margin-top:8px;font-size:11px}.parents small{letter-spacing:.5px;font-size:5px}.blessing{font-size:12px}.letter-details>.ornament{margin:5px 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.paper-envelope{background:#ecdec6 url(/textures/cream-embossed-paper.webp) 50%/100% 100%}.paper-envelope .emboss,.paper-envelope .envelope-arch{display:none}.paper-envelope .cover{background:#ecdec6 url(/textures/cream-embossed-paper.webp) 50%/100% 100%}.paper-envelope .pocket{filter:brightness(.96);background:#ecdec6 url(/textures/cream-embossed-paper.webp) 50%/100% 100%}.cover-loading{color:#d9c39a;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.cover-loading>span{font-size:32px}.cover-loading>p{font:italic 17px var(--serif)}.loading-flower{flex:none;animation:1.8s ease-in-out 2 flower-breathe;overflow:visible}.flower-petals{transform-origin:24px 24px;animation:1s cubic-bezier(.2,.7,.3,1) both flower-unfold}.flower-left{animation:1.4s cubic-bezier(.2,.7,.3,1) both sprig-left-arrives}.flower-right{animation:1.4s cubic-bezier(.2,.7,.3,1) .12s both sprig-right-arrives}@keyframes flower-breathe{0%,to{opacity:.65;transform:scale(.94)}50%{opacity:1;transform:scale(1)}}@keyframes flower-unfold{0%{opacity:0;transform:rotate(-18deg)scale(.7)}to{opacity:1;transform:rotate(0)scale(1)}}@keyframes sprig-left-arrives{0%{opacity:0;transform:translateY(5px)rotate(6deg)}to{transform:translateY(0)rotate(10deg)}}@keyframes sprig-right-arrives{0%{opacity:0;transform:translateY(-5px)rotate(186deg)}to{transform:translateY(0)rotate(190deg)}}.letter-wrap{width:min(1360px,100vw - 36px)}.letters{grid-template-columns:repeat(3,minmax(0,1fr));justify-items:center;gap:24px;display:grid;position:relative}.letters>.letter{width:100%;max-width:440px}.letter-actions{max-width:440px;margin-inline:auto}@media (max-width:1000px){.letter-wrap{width:100vw}.letters{--card:min(440px,78vw);scroll-snap-type:x mandatory;padding-inline:calc((100vw - var(--card)) / 2);scrollbar-width:none;justify-content:flex-start;gap:12px;display:flex;overflow-x:auto}.letters::-webkit-scrollbar{display:none}.letters>.letter{flex:0 0 var(--card);scroll-snap-align:center;scroll-snap-stop:always;max-width:440px;padding-inline:22px}.letters .vi-cover{font-size:clamp(40px,13.5vw,56px)}.letters .vi-venue{letter-spacing:0;font-size:clamp(14px,4.4vw,21px)}.letters .vi-time{font-size:clamp(17px,5.4vw,22px)}.letters .blessing{font-size:clamp(12px,3.7vw,15px)}.letters .vi-names span{font-size:clamp(26px,8.4vw,34px)}.letters .vi-title{letter-spacing:2px;font-size:clamp(18px,5.6vw,24px)}.letters .parents-vi{gap:6px;font-size:10px}.letters .parents-vi b{font-size:9.5px}.letter-actions{width:min(440px,100vw - 36px)}}.letters>.letter{font-size:clamp(11px,1.5vh,14px)}.letters .invite-line{max-width:none;margin:6px auto}.parents-vi{font:11px/1.45 var(--serif);color:#9a7048;grid-template-columns:1fr 1fr;gap:10px;display:grid}.parents-vi small{font:7px var(--sans);letter-spacing:1.2px;color:#9a7048;margin-bottom:5px;display:block}.parents-vi b{font-size:10.5px;font-weight:700}.parents-vi em{margin-top:3px;font-size:9px;display:block}.vi-names{font:var(--script);gap:2px;margin:6px 0;display:grid}.vi-names span{font:34px/1.15 var(--script);color:#8a5e34}.vi-names small{font:7px var(--sans);letter-spacing:1.4px;color:#9a7048}.vi-names i{font:22px var(--serif);color:var(--gold)}.vi-when{font:13px/1.65 var(--serif);color:#9a7048}.vi-when em{color:#9a7048;font-size:11px}.vi-cover{font:600 56px/1.5 var(--serif);color:#8a5e34;letter-spacing:1px}.vi-cover span{font:30px/1.5 var(--script);color:#8a5e34;margin:2px 0;display:block}.vi-guest{border-top:1px dotted #c0a07c;height:1px;margin:14px 18px 6px}.vi-venue{font:600 21px/1.2 var(--serif);color:#8a5e34;margin:6px 0 4px}.vi-addr{font:12px/1.45 var(--serif);color:#9a7048}.vi-addr em{font-size:11px}.vi-time{font:600 22px var(--serif);color:#8a5e34;letter-spacing:1px;margin:8px 0 2px}.vi-time i{color:var(--gold);margin:0 6px;font-style:normal}.vi-map{font:8px var(--sans);letter-spacing:1.6px;text-transform:uppercase;color:#9a7048;border-bottom:1px solid #c0a07c;margin-top:10px;padding-bottom:2px;text-decoration:none;display:inline-block}.vi-title{font:500 24px/1.1 var(--serif);letter-spacing:3px;text-transform:uppercase;color:#8a5e34}.vi-timeline{text-align:left;border-left:1px solid #c0a07c;gap:12px;width:max-content;margin:10px auto;padding:0 0 0 18px;list-style:none;display:grid}.vi-timeline li{gap:2px;display:grid;position:relative}.vi-timeline li:before{content:"";background:var(--gold);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;left:-22px}.vi-timeline b{font:600 14px var(--serif);color:#8a5e34}.vi-timeline span{font:8px var(--sans);letter-spacing:1.4px;color:#9a7048}.vi-cal{font:var(--serif);border-block:1px solid #c0a07c;margin:8px 4px;padding:6px 0}.vi-cal>p{font:13px var(--serif);letter-spacing:2px;color:#8a5e34;margin-bottom:4px}.vi-cal-grid{font:12px/1.6 var(--serif);color:#9a7048;grid-template-columns:repeat(7,1fr);gap:3px 0;display:grid}.vi-cal-grid b{font-size:11px;font-weight:600}.vi-cal-grid .mark{background:var(--gold);color:#fffaf0;aspect-ratio:1;border-radius:50%;place-items:center;width:1.9em;margin:auto;line-height:1;display:grid}.vi-cal-grid .soft{color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:0 0}.vi-thanks{font:30px var(--script);color:#8a5e34;margin-top:6px}body{font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}:root{--foil:linear-gradient(115deg,#6a4528 0%,#8a5e34 30%,#b88a5c 50%,#a07048 72%,#6a4528 100%)}.letters>.letter{background:radial-gradient(120% 90% at 30% 20%,#fbf8f1,#efe8da);border:0;overflow:hidden;box-shadow:0 25px 70px #6d4e2b30,0 3px 10px #6d4e2b15,inset 0 0 60px #d9cdb540}.letters>.letter:before{opacity:.9;border:1px solid #8a5e34;inset:14px}.letters>.letter:after{opacity:.55;border:.5px solid #8a5e34;inset:19px}.decor{pointer-events:none;z-index:-1;position:absolute}.filigree{width:44px}.fil-tl{top:9px;left:9px}.fil-br{bottom:9px;right:9px;transform:rotate(180deg)}.letters>.letter-side>:not(.decor){position:relative}.vi-cover,.vi-names span,.vi-title,.vi-venue,.vi-time,.vi-cover span,.vi-thanks,.wedding-label,.vi-cal>p{background:var(--foil);color:#0000;-webkit-text-fill-color:transparent;filter:drop-shadow(0 .5px #fff8);-webkit-background-clip:text;background-clip:text}.vi-cover span{filter:none}.vi-names i,.vi-time i{color:#8a5e34;-webkit-text-fill-color:#8a5e34}.letters .invite-line,.vi-when,.vi-addr,.parents-vi,.blessing,.vi-timeline span{color:#9a7048}.letters .blessing{letter-spacing:.3px;font-style:normal}.vi-timeline,.vi-cal{border-color:#8a5e34}.vi-timeline li:before{background:#8a5e34}.vi-cal-grid .mark{background:linear-gradient(135deg,#8a5e34,#8a5e34)}.vi-cal-grid .mark.soft{color:#8a5e34;background:0 0}.letters .ornament{color:#8a5e34}.letters .ornament span{background:#c0a07c}.letters .invite-line{letter-spacing:.8px;text-transform:none;font-size:12px}:root{--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .32 0 0 0 0 .18 0 0 0 .3 -.12'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--fibre:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .7' numOctaves='2' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .4 0 0 0 0 .25 0 0 0 .15 -.06'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)'/%3E%3C/svg%3E");--mottle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.008' numOctaves='3' seed='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .55 0 0 0 0 .42 0 0 0 0 .25 0 0 0 .15 -.05'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E")}.letters>.letter{background:var(--grain),var(--fibre),var(--mottle),radial-gradient(120% 90% at 30% 20%,#fbf8f1,#efe8da);background-blend-mode:multiply,multiply,multiply,normal;box-shadow:0 25px 70px #6d4e2b30,0 3px 10px #6d4e2b15,inset 0 0 70px #cbb99a50,inset 0 0 0 1px #fffdf855}.letters>.letter-side{--foil:linear-gradient(115deg,#cdb487 0%,#f6e7c4 35%,#fff6df 50%,#dcc391 70%,#c2a56f 100%);background:var(--grain),var(--fibre),radial-gradient(120% 90% at 30% 20%,#7a5230,#573820);background-blend-mode:screen,screen,normal;color:#ecdcc0;box-shadow:0 25px 70px #2b160040,0 3px 10px #2b160025,inset 0 0 70px #1d0e0060}.letters>.letter-side:before,.letters>.letter-side:after{border-color:#d9c39a}.letters>.letter-side .invite-line,.letters>.letter-side .vi-addr,.letters>.letter-side .blessing{color:#ecdcc0}.letters>.letter-side .vi-time i,.letters>.letter-side .ornament{color:#d9c39a;-webkit-text-fill-color:#d9c39a}.letters>.letter-side .ornament span{background:#d9c39a}.letters>.letter-side .vi-guest{border-top-color:#d9c39a}.letters>.letter-side .vi-map{color:#ecdcc0;border-bottom-color:#d9c39a}.letters>.letter-side .decor [stroke=\#8a5e34]{stroke:#d9c39a}.letters>.letter-side .decor circle[fill=\#8a5e34],.letters>.letter-side .decor path[fill=\#8a5e34]{fill:#d9c39a}@media (hover:hover) and (pointer:fine){.letters>.letter{will-change:transform,filter;transition:transform .5s cubic-bezier(.19,1,.22,1),filter .5s,opacity .5s,box-shadow .5s}.letters:has(>.letter:hover)>.letter:not(:hover){filter:blur(1.6px)saturate(.85)brightness(.88);opacity:.72;transform:scale(.95)}.letters>.letter:hover{z-index:2;transform:translateY(-8px)scale(1.04);box-shadow:0 38px 80px #1f12084d,0 6px 16px #1f120830}}@media (prefers-reduced-motion:reduce){.letters>.letter{filter:none!important;opacity:1!important;transition:none!important;transform:none!important}}.album-panel{z-index:20;touch-action:pan-y;visibility:hidden;background:radial-gradient(at 50% 40%,#5a3a1c 0%,#3a2310 55%,#1f1208 100%);transition:transform .8s cubic-bezier(.77,0,.18,1),visibility 0s .8s;position:fixed;inset:0;transform:translate(-100%)}.album-panel.is-open{visibility:visible;transition:transform .8s cubic-bezier(.77,0,.18,1),visibility;transform:none}.album-toggle{z-index:21;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ecdcc0;font:10px var(--sans);letter-spacing:2px;text-transform:uppercase;background:#2a190bcc;border:1px solid #d9c39a55;border-left:0;border-radius:0 999px 999px 0;align-items:center;gap:8px;padding:12px 16px 12px 12px;transition:background .3s,opacity .3s;display:flex;position:absolute;top:50%;left:0;transform:translateY(-50%)}.album-toggle:hover{background:#4a2f17e6}.album-toggle svg{width:18px;height:18px}.album-toggle.is-open{left:max(16px,env(safe-area-inset-left));top:max(16px,env(safe-area-inset-top));border:1px solid #d9c39a55;border-radius:999px;padding:10px 16px 10px 12px;transition:background .3s,opacity .3s .5s;position:fixed;transform:none}.album-toggle svg,.album-toggle.is-open svg{transform:rotate(180deg)}.bubbles{z-index:22;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.lang-toggle{z-index:30;right:max(64px,calc(env(safe-area-inset-right) + 64px));top:max(16px,env(safe-area-inset-top));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ecdcc0;height:40px;font:600 11px var(--sans);letter-spacing:1.5px;background:#2a190bcc;border:1px solid #d9c39a55;border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:flex;position:fixed}.lang-toggle button{color:inherit;font:inherit;letter-spacing:inherit;opacity:.55;cursor:pointer;background:0 0;border:0;padding:4px 2px}.lang-toggle button[aria-pressed=true]{opacity:1;color:#f6e7c4}.lang-toggle i{opacity:.4;font-style:normal}.music-toggle{z-index:30;right:max(16px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ecdcc0;background:#2a190bcc;border:1px solid #d9c39a55;border-radius:50%;place-items:center;width:40px;height:40px;padding:0;transition:background .3s;display:grid;position:fixed}.music-toggle:hover{background:#4a2f17e6}.music-toggle svg{width:20px;height:20px}.album-panel canvas{outline:none;width:100%;height:100%;display:block}.album-nav{z-index:3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#2a190bb3;border:1px solid #d9c39a66;border-radius:50%;place-items:center;width:48px;height:48px;margin:auto 0;padding:0;display:grid;position:absolute;top:0;bottom:0}.album-hint{z-index:2;left:16px;right:16px;bottom:calc(max(28px,env(safe-area-inset-bottom)) + 64px);text-align:center;font:italic 14px var(--serif);color:#d9c39a;display:none;position:absolute}.album-prev{left:max(12px,env(safe-area-inset-left))}.album-next{right:max(12px,env(safe-area-inset-right))}.album-prev img{transform:rotate(180deg)}.album-nav img{filter:invert()sepia(.4);width:22px;height:22px}.album-nav:disabled img{opacity:.28}.album-nav:focus-visible{outline-offset:4px;outline:1px solid #d9c39a}.guestbook-panel{z-index:20;visibility:hidden;background:radial-gradient(at 50% 40%,#5a3a1c 0%,#3a2310 55%,#1f1208 100%);transition:transform .8s cubic-bezier(.77,0,.18,1),visibility 0s .8s;position:fixed;inset:0;transform:translate(100%)}.guestbook-panel.is-open{visibility:visible;transition:transform .8s cubic-bezier(.77,0,.18,1),visibility;transform:none}.guestbook-panel canvas{outline:none;width:100%;height:100%;display:block}.guestbook-toggle{z-index:21;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ecdcc0;font:10px var(--sans);letter-spacing:2px;text-transform:uppercase;background:#2a190bcc;border:1px solid #d9c39a55;border-right:0;border-radius:999px 0 0 999px;align-items:center;gap:8px;padding:12px 12px 12px 16px;transition:background .3s,opacity .3s;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.guestbook-toggle:hover{background:#4a2f17e6}.guestbook-toggle svg{width:18px;height:18px}.guestbook-toggle.is-open{right:auto;left:max(16px,env(safe-area-inset-left));top:max(16px,env(safe-area-inset-top));border:1px solid #d9c39a55;border-radius:999px;flex-direction:row-reverse;padding:10px 16px 10px 12px;transition:background .3s,opacity .3s .5s;position:fixed;transform:none}.guestbook-toggle.is-open svg{transform:rotate(180deg)}:is(.experience:has(.album-panel.is-open) .guestbook-toggle:not(.is-open),.experience:has(.guestbook-panel.is-open) .album-toggle:not(.is-open)){display:none}.guestbook-form{z-index:2;left:50%;bottom:max(24px,env(safe-area-inset-bottom));grid-template-columns:minmax(0,.7fr) minmax(0,1.6fr) auto;gap:10px;width:min(760px,100vw - 32px);display:grid;position:absolute;transform:translate(-50%)}.guestbook-form input{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#f6e7c4;min-width:0;height:46px;font:16px var(--serif);background:#2a190bcc;border:1px solid #d9c39a66;border-radius:999px;outline:none;padding:0 16px}.guestbook-form textarea{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#f6e7c4;min-width:0;height:46px;font:16px/1.5 var(--serif);resize:none;background:#2a190bcc;border:1px solid #d9c39a66;border-radius:23px;outline:none;padding:11px 16px;overflow:hidden}.guestbook-form textarea::placeholder,.guestbook-form input::placeholder{color:#d9c39a99}.guestbook-form textarea:focus{border-color:#d9c39a;box-shadow:0 0 0 3px #d9c39a33}.guestbook-title{display:none}.guestbook-form input:focus{border-color:#d9c39a;box-shadow:0 0 0 3px #d9c39a33}.guestbook-form button{color:#2a190b;height:46px;font:600 11px var(--sans);letter-spacing:2px;text-transform:uppercase;background:linear-gradient(135deg,#e3b64f,#b88a4a);border:0;border-radius:999px;padding:0 26px}.guestbook-form button:disabled{opacity:.6;cursor:default}.guestbook-status{text-align:center;min-height:16px;font:12px var(--sans);color:#d9c39a;grid-column:1/-1}.guestbook-status.error{color:#ffb4a0}@media (max-width:640px){.guestbook-form{grid-template-columns:1fr auto}.guestbook-form input{grid-column:1/-1}}@media (min-width:900px) and (min-aspect-ratio:11/10) and (min-height:520px){.guestbook-form{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#1f1208b3;border:1px solid #d9c39a40;border-radius:22px;grid-template-columns:1fr;gap:14px;width:min(400px,32vw);padding:30px 28px 22px;inset:50% max(5vw,32px) auto auto;transform:translateY(-50%)}.guestbook-title{text-align:center;font:600 28px/1.1 var(--serif);color:#f6e7c4;letter-spacing:1px;display:block}.guestbook-title small{font:italic 400 18px var(--serif);color:#d9c39a;letter-spacing:0;margin-top:6px;display:block}.guestbook-form textarea{border-radius:18px;height:150px;padding:14px 18px;overflow:auto}.guestbook-form button{width:100%}}.admin-cp{padding:max(28px,env(safe-area-inset-top)) 16px 48px;color:#ecdcc0;font:15px/1.5 var(--serif);background:radial-gradient(at 50% 0,#4a2f17,#1f1208 70%);position:fixed;inset:0;overflow:auto}.admin-cp>*{max-width:860px;margin-inline:auto}.admin-cp header{flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-bottom:22px;display:flex}.admin-cp h1{font:600 28px var(--serif);color:#f6e7c4;flex:100%}.admin-cp header p{font:12px var(--sans);letter-spacing:1px;color:#d9c39a;flex:1}.admin-cp ul{gap:10px;padding:0;list-style:none;display:grid}.admin-cp li{background:#2a190b99;border:1px solid #d9c39a33;border-radius:12px;justify-content:space-between;align-items:flex-start;gap:16px;padding:14px 16px;display:flex}.admin-cp li.is-hidden{opacity:.55;border-style:dashed}.admin-cp li b{color:#f6e7c4;margin-right:10px;font-weight:700}.admin-cp time{font:11px var(--sans);color:#d9c39a99}.admin-cp li p{overflow-wrap:anywhere;margin-top:4px}.admin-badge{font:10px var(--sans);letter-spacing:1px;text-transform:uppercase;background:#d9c39a33;border-radius:999px;margin-left:10px;padding:2px 8px}.admin-actions{flex:none;gap:8px;display:flex}.admin-cp button{color:#ecdcc0;min-height:36px;font:11px var(--sans);letter-spacing:1.5px;text-transform:uppercase;background:0 0;border:1px solid #d9c39a66;border-radius:999px;padding:0 16px}.admin-cp button:hover:not(:disabled){background:#d9c39a22}.admin-cp button:disabled{opacity:.5;cursor:default}.admin-cp button.danger{color:#ffb4a0;border-color:#e08a7a88}.admin-login{display:block;color:#2a190b!important;background:linear-gradient(135deg,#e3b64f,#b88a4a)!important;border:0!important}.admin-error{color:#ffb4a0;font:13px var(--sans);margin-bottom:14px}.admin-empty{color:#d9c39a}@media (max-width:560px){.admin-cp li{flex-direction:column}.admin-actions{align-self:flex-end}}@media (max-aspect-ratio:1){.album-nav{top:auto;bottom:max(28px,env(safe-area-inset-bottom));width:52px;height:52px;margin:0}.album-prev{left:calc(50% - 64px)}.album-next{left:calc(50% + 12px);right:auto}.album-hint{display:block}.album-toggle:not(.is-open),.guestbook-toggle:not(.is-open){padding-block:10px;top:56px;transform:none}.experience.opened .album-toggle:not(.is-open),.experience.opened .guestbook-toggle:not(.is-open){border:1px solid #d9c39a55;border-radius:999px;padding:8px 14px 8px 12px;top:10px}.experience.opened .album-toggle:not(.is-open){left:12px}.experience.opened .guestbook-toggle:not(.is-open){right:12px}.guestbook-form{bottom:max(18px,env(safe-area-inset-bottom))}}@media (max-height:500px){.album-hint{display:none}.guestbook-form{bottom:max(8px,env(safe-area-inset-bottom));gap:8px}.guestbook-form input,.guestbook-form button{height:40px}.guestbook-status{margin-bottom:2px;position:absolute;bottom:100%;left:0;right:0}.album-toggle:not(.is-open),.guestbook-toggle:not(.is-open){padding-block:8px}}@media (max-width:480px) and (max-height:700px){.letters .vi-cal-grid{font-size:11px;line-height:1.4}.letters .vi-thanks{margin-top:2px;font-size:24px}.letters .vi-timeline{gap:8px;margin-block:6px}}.letters>.letter-side .parents-vi,.letters>.letter-side .parents-vi small,.letters>.letter-side .parents-vi em,.letters>.letter-side .invite-line,.letters>.letter-side .vi-when,.letters>.letter-side .vi-when em,.letters>.letter-side .vi-timeline b,.letters>.letter-side .vi-timeline span,.letters>.letter-side .vi-cal-grid,.letters>.letter-side .vi-names small,.letters>.letter-side .vi-names i{color:#ecdcc0;-webkit-text-fill-color:#ecdcc0}.letters>.letter-side .vi-timeline,.letters>.letter-side .vi-cal{border-color:#d9c39a}.letters>.letter-side .vi-timeline li:after{background:#d9c39a}.letters>.letter-side .vi-cal-grid .mark{color:#3a2310;-webkit-text-fill-color:#3a2310;background:#d9c39a}.letters>.letter-side .vi-cal-grid .mark.soft{color:#d9c39a;-webkit-text-fill-color:#d9c39a;background:0 0;box-shadow:inset 0 0 0 1px #d9c39a}.vi-timeline{border:0;gap:16px;width:100%;max-width:300px;margin:12px auto;padding:0;position:relative}.vi-timeline:before{content:"";top:6px;bottom:6px;left:calc(var(--tl,58px) + 8px);background:#d9c39a99;width:1px;position:absolute}.vi-timeline li{grid-template-columns:var(--tl,58px) 16px 1fr;align-items:center;gap:0}.vi-timeline li:before{display:none}.vi-timeline li:after{content:"";background:#8a5e34;border-radius:50%;grid-area:1/2;justify-self:center;width:7px;height:7px}.vi-timeline b{text-align:right;grid-area:1/1;font-size:15px}.vi-timeline span{letter-spacing:1.2px;grid-area:1/3;padding-left:6px;font-size:10px;line-height:1.3}.letters .vi-cover{white-space:nowrap;letter-spacing:.5px;justify-content:center;align-items:baseline;gap:.35em;font-size:clamp(24px,7.8vw,38px);display:flex}.letters .vi-cover span{margin:0;font-size:.8em;display:inline}
