@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #fbf6ef;--paper-2: #f3eadd;--card: #ffffff;--ink: #2b1a14;--ink-2: #5f4a3f;--ink-3: #9b8577;--line: #efe4d4;--line-2: #e0cfb6;--red: #c8202f;--red-2: #a3141f;--red-3: #e8414b;--red-soft: #fde7e4;--pine: #18704f;--pine-2: #11583e;--pine-soft: #e3f4ec;--gold: #e3a92c;--gold-2: #f6cf6a;--gold-soft: #fdf1d6;--wa: #1fbf5c;--wa-2: #14994a;--snow: rgba(150, 172, 205, .55);--glow: rgba(200, 32, 47, .18);--shadow: 0 1px 2px rgba(80, 40, 20, .05), 0 14px 34px -18px rgba(110, 50, 20, .32);--shadow-lg: 0 2px 4px rgba(80, 40, 20, .06), 0 30px 60px -26px rgba(120, 40, 20, .45);--r: 26px;--r-sm: 16px;--display: "Fraunces Variable", ui-serif, Georgia, serif;--body: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--paper: #0b1124;--paper-2: #131b36;--card: #151e3b;--ink: #f7f0e6;--ink-2: #c7c0d6;--ink-3: #8b8aa8;--line: #232d52;--line-2: #34406c;--red: #e83d4c;--red-2: #c92a39;--red-3: #ff6a75;--red-soft: #3a1830;--pine: #6fd6a8;--pine-2: #4fbd8c;--pine-soft: #14304a;--gold: #f2bf4e;--gold-2: #ffd977;--gold-soft: #2c2a3c;--snow: rgba(255, 255, 255, .75);--glow: rgba(242, 191, 78, .16);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 16px 34px -18px rgba(0, 0, 0, .8);--shadow-lg: 0 2px 4px rgba(0, 0, 0, .35), 0 30px 60px -24px rgba(0, 0, 0, .9);color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{min-height:100dvh;background-color:var(--paper);background-image:radial-gradient(1100px 520px at 50% -12%,var(--glow),transparent 65%),radial-gradient(700px 420px at 105% 10%,color-mix(in srgb,var(--gold) 16%,transparent),transparent 60%),radial-gradient(700px 520px at -10% 40%,color-mix(in srgb,var(--red) 9%,transparent),transparent 60%),radial-gradient(900px 600px at 50% 115%,color-mix(in srgb,var(--pine) 12%,transparent),transparent 60%);background-attachment:fixed;color:var(--ink);font:400 16px/1.45 var(--body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}main{position:relative;z-index:1;max-width:520px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px calc(40px + env(safe-area-inset-bottom))}h1,h2,h3,.display{font-family:var(--display);letter-spacing:-.01em}h1{font-size:clamp(30px,8vw,40px);line-height:1.05;margin:0;font-weight:700}h2{font-size:23px;line-height:1.15;margin:0 0 6px;font-weight:650}h3{font-size:18px;margin:0 0 8px;font-weight:650;display:flex;align-items:center;gap:8px}p{margin:6px 0}a{color:var(--red)}.muted{color:var(--ink-2)}.tiny{font-size:13px;color:var(--ink-3);margin:4px 0}.center{text-align:center}.hidden{display:none!important}:focus-visible{outline:3px solid color-mix(in srgb,var(--gold) 70%,transparent);outline-offset:2px}.snow{position:fixed;inset:-10vh 0 0;pointer-events:none;z-index:0;background-image:radial-gradient(3px 3px at 12% 18%,var(--snow) 50%,transparent 51%),radial-gradient(2px 2px at 32% 64%,var(--snow) 50%,transparent 51%),radial-gradient(4px 4px at 58% 28%,var(--snow) 50%,transparent 51%),radial-gradient(2px 2px at 76% 82%,var(--snow) 50%,transparent 51%),radial-gradient(3px 3px at 88% 42%,var(--snow) 50%,transparent 51%),radial-gradient(2px 2px at 46% 92%,var(--snow) 50%,transparent 51%);background-size:360px 420px;opacity:.85;filter:drop-shadow(0 0 1px color-mix(in srgb,var(--ink) 25%,transparent));animation:snow 22s linear infinite}.snow:after{content:"";position:absolute;inset:0;background-image:radial-gradient(2px 2px at 22% 38%,var(--snow) 50%,transparent 51%),radial-gradient(3px 3px at 66% 12%,var(--snow) 50%,transparent 51%),radial-gradient(2px 2px at 84% 58%,var(--snow) 50%,transparent 51%);background-size:260px 300px;animation:snow 14s linear infinite}@keyframes snow{0%{background-position:0 0,0 0,0 0,0 0,0 0,0 0}to{background-position:30px 420px,-20px 420px,40px 420px,-30px 420px,20px 420px,-10px 420px}}.topbar{display:flex;align-items:center;justify-content:space-between;padding:6px 0 16px}.brand{display:inline-flex;align-items:center;gap:10px;font:700 19px var(--display);color:var(--ink);text-decoration:none}.logo{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:var(--red);color:#fff;box-shadow:inset 0 -3px #00000026}.logo svg{width:21px;height:21px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:0 0 14px;box-shadow:var(--shadow);min-width:0}.card{padding:20px}.card.letter{position:relative;overflow:hidden}.card.letter:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,var(--red),var(--gold) 50%,var(--red))}.card.head{position:relative;overflow:hidden;border:0;color:#fff;padding:22px 22px 20px;background:repeating-linear-gradient(135deg,rgba(255,255,255,.06) 0 10px,transparent 10px 22px),radial-gradient(120% 140% at 0% 0%,var(--red-3),var(--red) 45%,var(--red-2));box-shadow:var(--shadow-lg)}.card.head:before{content:"";position:absolute;inset:0 54px 0 auto;width:16px;height:auto;background:linear-gradient(90deg,#d79a1f,var(--gold-2) 45%,#d79a1f);box-shadow:0 0 0 1px #0000000f}.card.head:after{content:"";position:absolute;top:4px;right:26px;width:64px;height:40px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 40'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' x2='1'%3E%3Cstop offset='0' stop-color='%23d79a1f'/%3E%3Cstop offset='.5' stop-color='%23ffd977'/%3E%3Cstop offset='1' stop-color='%23d79a1f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M32 18C24 0 4 0 6 12c2 9 26 6 26 6zM32 18C40 0 60 0 58 12c-2 9-26 6-26 6z' fill='url(%23g)' stroke='%23b67a12' stroke-width='2'/%3E%3Cpath d='M28 20l-8 18 7-3 3 5 2-20M36 20l8 18-7-3-3 5-2-20' fill='url(%23g)' stroke='%23b67a12' stroke-width='1.5'/%3E%3Ccircle cx='32' cy='18' r='5.5' fill='%23ffd977' stroke='%23b67a12' stroke-width='2'/%3E%3C/svg%3E") center / contain no-repeat;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25));transform:rotate(-6deg)}.card.head>*{position:relative;z-index:1;max-width:calc(100% - 64px)}.card.head .kicker{color:var(--gold-2)}.card.head h1{color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.12)}.card.head .chip{background:#ffffff29;color:#fff;backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.22)}.card.head .tiny{color:#ffffffc7}.kicker{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--pine);margin-bottom:6px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 4px}.chip{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:999px;background:var(--gold-soft);color:var(--ink);font-size:14px;font-weight:600;max-width:100%;overflow-wrap:anywhere}.head h1{overflow-wrap:anywhere}.hero{padding:4px 2px 16px;text-align:center}.hero-art{width:132px;height:132px;margin:0 auto 6px;display:block;filter:drop-shadow(0 16px 22px rgba(160,30,40,.28));animation:bob 4s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-6px) rotate(-2deg)}}.hero h1{font-size:clamp(34px,10vw,48px);font-weight:750;letter-spacing:-.02em}.hero h1 em{font-style:italic;color:var(--red)}.lead{font-size:17px;color:var(--ink-2);margin-top:12px}.trust{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 2px 18px}.trust>span{background:var(--card);border:1px solid var(--line);color:var(--pine);font-weight:700;font-size:13px;padding:6px 12px;border-radius:999px;box-shadow:var(--shadow)}.field{display:block;margin:14px 0 0;min-width:0}.field>span{display:block;font-weight:650;font-size:14px;margin-bottom:6px;color:var(--ink-2)}.field>span em{font-style:normal;font-weight:500;color:var(--ink-3)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 380px){.row2{grid-template-columns:1fr}}.input{width:100%;min-width:0;display:block;font:500 16px var(--body);color:var(--ink);background:var(--paper);border:1.5px solid var(--line-2);border-radius:var(--r-sm);padding:12px 14px;outline:none;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}textarea.input{resize:vertical;min-height:84px;line-height:1.4;field-sizing:content;max-height:200px}select.input{padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}.input:focus{border-color:var(--gold);box-shadow:0 0 0 4px color-mix(in srgb,var(--gold) 25%,transparent)}input[type=date].input{min-height:48px}.switch{display:flex;align-items:flex-start;gap:12px;margin:16px 0 4px;cursor:pointer}.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch .knob{flex:none;width:46px;height:28px;border-radius:999px;background:var(--line-2);position:relative;transition:background .2s;margin-top:1px}.switch .knob:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s}.switch input:checked+.knob{background:var(--pine)}.switch input:checked+.knob:after{transform:translate(18px)}.switch input:focus-visible+.knob{outline:3px solid color-mix(in srgb,var(--gold) 70%,transparent);outline-offset:2px}.switch small{display:block;color:var(--ink-3);font-size:13px}.recents{list-style:none;margin:0;padding:0}.recents a{display:flex;align-items:center;gap:6px;padding:11px 2px;color:var(--ink);text-decoration:none;font-weight:600;border-top:1px solid var(--line);overflow-wrap:anywhere}.recents li:first-child a{border-top:0}.recents .chev{margin-left:auto;color:var(--ink-3);display:grid}.recents .chev svg{width:18px;height:18px}.steps ol{margin:0;padding:0;list-style:none;counter-reset:s}.steps li{counter-increment:s;display:grid;grid-template-columns:34px 1fr;column-gap:10px;padding:8px 0}.steps li:before{content:counter(s);grid-row:span 2;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--red-soft);color:var(--red);font:700 15px var(--display)}.steps li span{color:var(--ink-2);font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:700 16px var(--body);border:0;border-radius:999px;padding:13px 20px;cursor:pointer;text-decoration:none;transition:transform .08s,background .15s,opacity .15s;min-height:48px;white-space:nowrap}.btn svg{width:18px;height:18px;flex:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{display:flex;width:100%;margin-top:18px}.btn.big{font-size:18px;min-height:56px}.btn.sm{padding:8px 12px;min-height:38px;font-size:14px}.btn.icon{padding:8px;width:38px}.btn.grow{flex:1;min-width:0;white-space:normal;text-align:center;line-height:1.2;padding-top:10px;padding-bottom:10px;overflow-wrap:anywhere}.btn.red{background:linear-gradient(180deg,var(--red-3),var(--red) 55%,var(--red-2));color:#fff;box-shadow:inset 0 1px #ffffff40,inset 0 -3px #0000002e,0 10px 22px -10px var(--red)}.btn.red:hover{filter:brightness(1.05)}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line-2)}.btn.ghost:hover{border-color:var(--gold)}.btn.wa{background:var(--wa);color:#fff}.btn.wa:hover{background:var(--wa-2)}.share{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.share .btn{flex:1 1 140px}.inline{display:flex;gap:8px;align-items:stretch;margin-top:8px}.inline .input{flex:1}.inline .btn{flex:none}.invite{text-align:center}.invite .field{text-align:left}.stamp{width:68px;height:68px;margin:0 auto 12px;display:grid;place-items:center;font-size:34px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--gold-soft),color-mix(in srgb,var(--gold) 28%,var(--card)));box-shadow:0 0 0 6px color-mix(in srgb,var(--gold) 14%,transparent),0 10px 24px -12px var(--gold)}.stamp.big{width:78px;height:78px;font-size:40px}.count{margin-left:auto;font:700 14px var(--body);color:var(--ink-3);background:var(--paper-2);border-radius:999px;padding:2px 10px}.people{list-style:none;margin:0;padding:0}.person{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);min-width:0}.person:first-child{border-top:0}.person .body{flex:1;min-width:0}.person .name{font-weight:650;overflow-wrap:anywhere;line-height:1.25}.av{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--c);color:#fff;font:700 16px var(--display);box-shadow:inset 0 -2px #00000026}.av.sm{width:28px;height:28px;font-size:13px}.del{flex:none;border:0;background:transparent;color:var(--ink-3);border-radius:999px;min-width:40px;height:40px;display:grid;place-items:center;cursor:pointer;font:700 13px var(--body);padding:0 8px}.del svg{width:17px;height:17px}.del:hover{color:var(--red);background:var(--red-soft)}.del.armed{background:var(--red);color:#fff}.seen{font-size:13px;font-weight:700;color:var(--ink-3);white-space:nowrap}.seen.yes{color:var(--pine)}.admin{border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}.admin .sub{padding:12px 0;border-top:1px dashed var(--line-2)}.admin .sub:first-of-type{border-top:0;padding-top:2px}.pairs{list-style:none;margin:6px 0;padding:0}.pairs li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;font-weight:600;overflow-wrap:anywhere}.pair-form{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center;margin-top:8px}.pair-form .btn{grid-column:1 / -1}.amp{color:var(--ink-3);font-weight:700}.confirm{background:var(--gold-soft);border-radius:var(--r-sm);padding:12px 14px;margin-top:8px}.confirm p{margin:0;font-weight:650}.secret summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}.secret summary::-webkit-details-marker{display:none}.secret summary svg{width:18px;height:18px;color:var(--gold)}.secret summary:after{content:"▾";margin-left:auto;color:var(--ink-3)}.secret[open] summary:after{content:"▴"}.secret-url{background:var(--paper);border:1px dashed var(--line-2);border-radius:var(--r-sm);padding:10px 12px;margin-top:8px}.secret-url code{font-size:13px;word-break:break-all;color:var(--ink-2)}.reveal{text-align:center}.envelope{position:relative;display:block;width:min(280px,100%);aspect-ratio:3 / 2;margin:12px auto 6px;border:0;padding:0;background:none;cursor:pointer;perspective:800px}.env-back,.env-front,.env-flap,.env-letter{position:absolute;left:0;right:0}.env-back{inset:0;border-radius:12px;background:var(--red-2);box-shadow:0 18px 30px -14px #780a1499}.env-letter{inset:10% 8% 8%;border-radius:8px;background:repeating-linear-gradient(180deg,transparent 0 13px,rgba(160,120,60,.12) 13px 14px),#fff8ec;border:1px solid #ecd9b8;color:#2b1a14;display:grid;place-items:center;font-size:34px;transition:transform .6s .35s cubic-bezier(.2,.8,.2,1)}.env-front{inset:0;border-radius:12px;clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);background:linear-gradient(to top right,transparent 49.6%,rgba(0,0,0,.1) 50%,transparent 50.6%) left bottom / 50% 100% no-repeat,linear-gradient(to top left,transparent 49.6%,rgba(0,0,0,.1) 50%,transparent 50.6%) right bottom / 50% 100% no-repeat,linear-gradient(180deg,color-mix(in srgb,var(--red-3) 85%,#fff),var(--red-3) 70%,var(--red))}.env-flap{top:0;height:58%;transform-origin:top center;transition:transform .55s ease-in,z-index 0s .3s;z-index:3;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(180deg,var(--red),var(--red-2));border-radius:10px 10px 0 0}.env-seal{position:absolute;z-index:4;left:50%;top:50%;translate:-50% -60%;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,var(--gold-2),var(--gold) 60%,#b07a14);color:#fff;font-size:22px;box-shadow:0 0 0 4px #ffffff2e,0 4px 10px #0000004d;transition:opacity .25s,transform .25s}.envelope:not(.open){animation:wiggle 3.2s ease-in-out infinite}.envelope:hover:not(.open) .env-seal{transform:scale(1.06)}.envelope.open .env-seal{opacity:0;transform:scale(.6)}.envelope.open .env-flap{transform:rotateX(180deg);z-index:0}.envelope.open .env-letter{transform:translateY(-46%);z-index:1}.envelope.open .env-front{z-index:2}@keyframes wiggle{0%,82%,to{transform:rotate(0)}86%{transform:rotate(-2.5deg)}90%{transform:rotate(2.5deg)}94%{transform:rotate(-1.5deg)}}.result.anim{animation:rise .5s cubic-bezier(.2,.8,.2,1)}.result{border:2px solid color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:var(--shadow-lg),0 0 0 8px color-mix(in srgb,var(--gold) 10%,transparent)}.result h2{font-size:28px;overflow-wrap:anywhere}.result h2 b{color:var(--red)}.result .chips{justify-content:center}.wish{border-left:4px solid var(--pine);background:var(--pine-soft);border-radius:var(--r-sm);padding:12px 14px;margin:14px 0 6px;text-align:left}.wish .note{margin:0;font:italic 500 18px/1.35 var(--display);overflow-wrap:anywhere}.wish .note.empty{font-style:normal;font:500 15px var(--body);color:var(--ink-3)}@keyframes rise{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.foot{text-align:center;padding:18px 0 8px;display:grid;gap:10px;justify-items:center}.foot a{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--pine);text-decoration:none}.foot a svg{width:16px;height:16px}.foot a.promo{color:var(--red);background:var(--red-soft);padding:10px 16px;border-radius:999px}#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--ink);color:var(--paper);padding:11px 18px;border-radius:999px;font-weight:650;font-size:15px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:10;max-width:calc(100vw - 32px);text-align:center}#toast.on{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion: reduce){.snow,.snow:after,.hero-art{animation:none}.envelope:not(.open){animation:none}.env-flap,.env-letter,.env-seal,.result,.result.anim,.btn,#toast{transition:none;animation:none}}.hero-art svg,.result-art svg{width:100%;height:100%;display:block}.result.anim .result-art{animation:pop .6s cubic-bezier(.2,1.4,.4,1)}.result-art{width:96px;height:96px;margin:0 auto 8px;filter:drop-shadow(0 12px 16px rgba(160,30,40,.3))}@keyframes pop{0%{transform:scale(.4) rotate(-12deg);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.result.anim .result-art{animation:none}}.emo{display:inline-block;margin-right:.38em;font-style:normal;line-height:1}h3 .emo,.btn .emo{margin-right:0}.chip .emo{margin-right:.12em}
