:root{font-family:"Noto Serif SC",Songti SC,Georgia,serif;color:#42313c;background:#fff8fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:#fff8fa}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}#app{min-height:100vh}:root{--rose: #c95575;--rose-deep: #a73f5e;--wine: #704455;--ink: #42313c;--muted: #a38a94;--line: #f0dfe5;--blush: #fff0f4;--cream: #fffaf4}button{border:0}.gift-app{position:relative;min-height:100vh;overflow:hidden;background:radial-gradient(circle at 8% 3%,#fff0f4 0,transparent 27%),radial-gradient(circle at 92% 84%,#ffe9ef 0,transparent 32%),#fff9fa}.gift-app:before{position:fixed;inset:0;pointer-events:none;opacity:.28;background-image:radial-gradient(#d99bab .6px,transparent .6px);background-size:18px 18px;content:""}.pink-glow{position:fixed;z-index:0;width:380px;height:380px;border-radius:50%;filter:blur(65px);opacity:.2;pointer-events:none}.glow-one{left:-190px;top:35%;background:#ec98b0}.glow-two{right:-210px;top:-130px;background:#ead6c8}.page-width{position:relative;z-index:1;width:min(100% - 40px,1060px);margin:auto}.tiny-logo{color:var(--wine);font-family:Arial,sans-serif;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.overline{margin:0 0 13px;color:var(--rose);font-family:Arial,sans-serif;font-size:10px;font-weight:800;letter-spacing:.24em}.solid-button,.outline-button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:45px;padding:0 20px;border-radius:25px;font-family:Arial,sans-serif;font-size:12px;font-weight:700;transition:transform .2s,box-shadow .2s,background .2s}.solid-button{color:#fff;background:linear-gradient(130deg,var(--rose),var(--rose-deep));box-shadow:0 10px 24px #aa3f5e38}.solid-button:hover{transform:translateY(-2px);box-shadow:0 14px 29px #aa3f5e4d}.solid-button.large{min-height:53px;padding:0 25px;font-size:13px}.solid-button span{font-size:17px;line-height:0}.outline-button{border:1px solid #e8cbd5;color:var(--rose-deep);background:#ffffff9e}.outline-button:hover{background:#fff}.sound-button,.voice-button{color:#a36776;font-family:Arial,sans-serif;font-size:11px;background:transparent}.sound-button{padding:9px 13px;border:1px solid #e9cbd5;border-radius:18px}.voice-button{padding:6px 0;border-bottom:1px solid #e4bdca}.sound-button:hover,.voice-button:hover{color:var(--rose-deep)}.center-screen{position:relative;z-index:1;display:flex;min-height:100vh;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.center-screen p{max-width:390px;color:var(--muted);font-size:14px;line-height:1.8}.loader-heart,.done-heart{color:var(--rose);font-size:55px;animation:heartbeat 1.35s ease-in-out infinite}.center-screen h1{margin:0;color:var(--wine);font-size:30px;font-weight:500}.error-mark{display:grid;width:50px;height:50px;place-items:center;margin-bottom:17px;border-radius:50%;color:#fff;background:#d6869a;font-family:Arial,sans-serif;font-weight:700}.error-screen p{margin:12px 0 24px}.done-screen h1{margin-top:8px}.done-screen p:not(.overline){margin:12px 0 24px}.done-line{display:flex;align-items:center;gap:12px;color:#c7929e;font:10px Arial,sans-serif;letter-spacing:.15em}.done-line span{display:block;width:50px;height:1px;background:#e7b9c5}.gift-cover{isolation:isolate}.gift-cover:before{position:absolute;z-index:-1;width:min(68vw,540px);aspect-ratio:1;border:1px solid rgba(207,117,137,.2);border-radius:50%;box-shadow:0 0 0 52px #ffffff38,0 0 0 104px #dc8fa10b;content:""}.gift-cover .overline{margin-bottom:12px}.gift-cover h1{font-size:clamp(30px,5vw,48px);letter-spacing:-.05em}.gift-cover-button{position:relative;display:grid;width:260px;height:230px;place-items:center;margin:20px 0 2px;color:inherit;background:transparent;cursor:pointer}.gift-cover-halo{position:absolute;width:205px;height:82px;border-radius:50%;background:#c75c7921;filter:blur(18px);transform:translateY(70px);transition:transform .3s,opacity .3s}.cover-gift-box{display:block;transition:transform .35s cubic-bezier(.2,.8,.2,1),filter .35s}.gift-cover-button:hover .cover-gift-box{transform:rotate(-3deg) translateY(-8px) scale(1.06);filter:drop-shadow(0 34px 19px rgba(147,74,90,.22))}.gift-cover-button:hover .gift-lid{transform:translateY(-8px) rotate(2deg)}.gift-cover-button:hover .gift-cover-halo{opacity:.72;transform:translateY(76px) scale(1.08)}.gift-cover-button:focus-visible{border-radius:24px;outline:3px solid rgba(201,85,117,.35);outline-offset:4px}.gift-cover-button .gift-lid{transform-origin:20% 100%;transition:transform .35s cubic-bezier(.2,.8,.2,1)}.gift-cover-hint{margin:0;color:#a97987!important;font-size:12px!important;letter-spacing:.08em}.loading-gift-box{margin-bottom:25px;animation:giftOpening .75s ease both}.loading-gift-box .gift-lid{animation:lidOpening .75s ease both}.gift-loading-screen p{margin:0}.intro-screen{min-height:100vh;padding-top:29px}.top-line,.form-header{display:flex;align-items:center;justify-content:space-between}.intro-content{display:grid;min-height:calc(100vh - 100px);grid-template-columns:1fr 1fr;align-items:center;gap:45px;padding-bottom:48px}.intro-copy{padding-left:clamp(0px,4vw,55px)}.intro-copy h1{max-width:520px;margin:0 0 18px;color:var(--wine);font-size:clamp(42px,6vw,73px);font-weight:500;letter-spacing:-.08em;line-height:1.12}.intro-description{max-width:390px;margin:0 0 29px;color:#987e89;font-size:15px;line-height:2}.intro-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.privacy-note{margin:24px 0 0;color:#c1aab3;font:10px/1.7 Arial,sans-serif}.intro-art{position:relative;height:500px;display:grid;place-items:center}.orbit{position:absolute;border:1px solid rgba(207,117,137,.32);border-radius:50%;transform:rotate(-18deg)}.orbit-a{width:380px;height:245px}.orbit-b{width:290px;height:430px;transform:rotate(32deg)}.gift-box{position:relative;z-index:1;width:175px;height:150px;transform:rotate(-5deg);filter:drop-shadow(0 27px 16px rgba(147,74,90,.18))}.gift-body{position:absolute;left:7px;right:7px;bottom:0;height:108px;border-radius:3px 3px 14px 14px;background:linear-gradient(135deg,#d96e89,#b34365)}.gift-lid{position:absolute;z-index:2;left:0;top:25px;width:175px;height:36px;border-radius:5px 5px 11px 11px;background:linear-gradient(135deg,#e98ba1,#c55272)}.gift-ribbon{position:absolute;z-index:3;background:#f6d3a3}.gift-ribbon.vertical{top:25px;bottom:0;left:78px;width:21px}.gift-ribbon.horizontal{left:7px;right:7px;top:85px;height:17px;opacity:.8}.gift-box>span{position:absolute;z-index:4;top:74px;left:68px;color:#fff0cf;font-size:32px}.floating-note{position:absolute;z-index:2;padding:9px 13px;border:1px solid #efd4d7;border-radius:3px;color:#b96d7d;background:#ffffffb8;font:italic 13px Georgia,serif;box-shadow:0 8px 19px #9e576814}.note-a{left:10%;top:19%;transform:rotate(-11deg)}.note-b{right:9%;bottom:22%;transform:rotate(9deg)}.prompt-card{width:min(480px,100%);padding:46px 38px 40px;border:1px solid #f1dde4;border-radius:22px;background:#fffc;box-shadow:0 22px 60px #914b611f}.prompt-flower{margin-bottom:15px;color:var(--rose);font-size:48px}.prompt-card h1{font-size:29px}.prompt-card p:not(.overline):not(.inline-error){margin:14px auto 25px}.prompt-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.inline-error{margin:16px 0 0;color:#b8566e;font-family:Arial,sans-serif;font-size:12px}.form-screen{padding-top:28px;padding-bottom:70px}.form-header{margin-bottom:36px}.form-header p{margin:7px 0 0;color:#b295a1;font:10px Arial,sans-serif;letter-spacing:.06em}.progress-row{display:flex;align-items:center;gap:14px;margin-bottom:45px}.step-counter{color:var(--rose);font:700 13px Arial,sans-serif}.step-counter span{color:#caa8b2;font-weight:400}.progress-track{flex:1;height:3px;overflow:hidden;border-radius:3px;background:#f0dfe5}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--rose);transition:width .4s ease}.progress-percent{color:#b995a2;font:10px Arial,sans-serif}.step-panel{max-width:780px;margin:auto}.step-intro{margin-bottom:35px}.step-intro h1{margin:0 0 10px;color:var(--wine);font-size:clamp(31px,4vw,46px);font-weight:500;letter-spacing:-.07em}.step-intro>p:not(.overline){margin:0;color:#a58c96;font-size:14px;line-height:1.8}.step-intro .voice-button{margin-top:17px}.question-list{display:grid;gap:26px}.question-block{padding:22px 23px;border:1px solid #f1e1e6;border-radius:15px;background:#ffffffb8;box-shadow:0 8px 26px #9b50650a}.question-label{color:var(--ink);font-size:16px;font-weight:700}.question-label span{margin-right:3px;color:var(--rose)}.question-help{margin:7px 0 15px;color:#b197a1;font:11px/1.7 Arial,sans-serif}.choice-list{display:grid;gap:8px}.choice-card{display:flex;align-items:center;width:100%;min-height:51px;gap:10px;padding:0 14px;border:1px solid #f0dfe5;border-radius:10px;color:#735965;background:#fff;font-size:13px;text-align:left;transition:border .2s,background .2s,transform .2s}.choice-card:hover{transform:translate(2px);border-color:#db9aaa}.choice-card.selected{border-color:#d47991;color:var(--rose-deep);background:#fff1f4}.choice-card b{margin-left:auto;color:#db94a5;font:13px Arial,sans-serif}.choice-indicator{display:grid;width:20px;height:20px;place-items:center;border:1px solid #dfc4cc;border-radius:50%;color:#fff;background:#fff;font:11px Arial,sans-serif}.choice-card.selected .choice-indicator{border-color:var(--rose);background:var(--rose)}.gift-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.gift-card{position:relative;overflow:hidden;padding:0 0 13px;border:1px solid #f0dfe5;border-radius:11px;color:var(--ink);background:#fff;text-align:left;transition:transform .2s,border .2s,box-shadow .2s}.gift-card:hover{transform:translateY(-3px)}.gift-card.selected{border-color:#d5748e;box-shadow:0 8px 22px #b2435e26}.gift-photo{height:148px;overflow:hidden;background:#fff0f3}.gift-photo img{width:100%;height:100%;object-fit:cover}.gift-photo span{display:grid;height:100%;place-items:center;color:#db8ba0;font-size:35px}.gift-card strong,.gift-card p{display:block;padding:0 12px}.gift-card strong{margin-top:11px;font-size:13px}.gift-card p{min-height:31px;margin:4px 0 0;color:#ab909a;font:10px/1.55 Arial,sans-serif}.gift-check{position:absolute;top:10px;right:10px;display:grid;width:25px;height:25px;place-items:center;border-radius:50%;color:#fff;background:#a8405edb;font:13px Arial,sans-serif}.upload-card,.record-card{display:flex;align-items:center;gap:15px;padding:18px;border:1px dashed #e6bfc9;border-radius:12px;background:#fffafc}.upload-symbol{display:grid;width:38px;height:38px;place-items:center;border-radius:50%;color:var(--rose);background:#ffeaf0;font-size:23px}.upload-card strong,.record-card strong{font-size:13px}.upload-card p,.record-card p{margin:4px 0 0;color:#b096a0;font:10px/1.6 Arial,sans-serif}.upload-button{display:inline-flex;align-items:center;margin-left:auto;padding:9px 12px;border:1px solid #e3bec9;border-radius:18px;color:var(--rose-deep);background:#fff;font:11px Arial,sans-serif;cursor:pointer;white-space:nowrap}.upload-button input{display:none}.uploading-line{margin-top:8px;color:#c08494;font:10px Arial,sans-serif}.image-previews{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}.image-preview{position:relative;width:86px;height:86px;overflow:hidden;border-radius:9px}.image-preview img{width:100%;height:100%;object-fit:cover}.image-preview button{position:absolute;top:3px;right:3px;display:grid;width:20px;height:20px;place-items:center;border-radius:50%;color:#fff;background:#522332b3;font:15px Arial,sans-serif}.record-card{flex-wrap:wrap}.record-button{margin-left:auto;padding:9px 13px;border:1px solid #dca9b6;border-radius:18px;color:var(--rose-deep);background:#fff;font:11px Arial,sans-serif}.record-button.recording{color:#fff;background:var(--rose);animation:recordPulse 1.2s ease-in-out infinite}.uploaded-audio{width:100%;margin-top:11px}.address-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.address-grid input,.text-input,textarea{width:100%;padding:12px 13px;border:1px solid #edd9e0;border-radius:9px;color:var(--ink);outline:none;background:#fff;font-family:inherit;font-size:13px}.address-grid input:focus,.text-input:focus,textarea:focus{border-color:#d7899c;box-shadow:0 0 0 3px #fff0f4}.address-detail{grid-column:1 / -1}.char-count{margin-top:7px;color:#c0a4ae;font:10px Arial,sans-serif;text-align:right}.validation-message{margin:17px 0 0;color:#b94e69;font:12px Arial,sans-serif}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:34px}.back-button{padding:12px 0;color:#aa8d98;background:transparent;font:12px Arial,sans-serif}.next-button{margin-left:auto}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.13)}30%{transform:scale(1)}}@keyframes giftOpening{0%{transform:rotate(-5deg) scale(.96)}to{transform:rotate(0) scale(1.04)}}@keyframes lidOpening{0%{transform:translate(0) rotate(0)}to{transform:translate(-8px,-42px) rotate(-10deg)}}@keyframes recordPulse{0%,to{box-shadow:0 0 #c9557533}50%{box-shadow:0 0 0 8px #c9557500}}@media(max-width:720px){.page-width{width:min(100% - 28px,560px)}.intro-screen{padding-top:20px}.intro-content{display:block;min-height:auto;padding:80px 0 40px}.intro-copy{padding:0;text-align:center}.intro-copy h1{font-size:47px}.intro-description{margin-right:auto;margin-left:auto}.intro-actions{justify-content:center}.privacy-note{margin-right:auto;margin-left:auto}.intro-art{height:300px;margin-top:20px;transform:scale(.76)}.form-screen{padding-top:20px}.form-header{margin-bottom:25px}.progress-row{margin-bottom:29px}.step-intro h1{font-size:34px}.question-block{padding:18px 15px}.gift-grid{grid-template-columns:1fr}.gift-card{display:grid;grid-template-columns:94px 1fr;gap:0 11px;padding:0 12px 10px 0}.gift-photo{height:112px;grid-row:1 / span 2}.gift-card strong,.gift-card p{padding:0}.gift-card strong{margin-top:16px}.gift-check{top:10px;right:8px}.upload-card{align-items:flex-start;flex-wrap:wrap}.upload-card .upload-button{margin-left:53px}.address-grid{grid-template-columns:1fr}.address-detail{grid-column:auto}.form-actions{margin-top:25px}.prompt-card{padding:34px 23px 30px}.prompt-card h1{font-size:26px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.intro-media{display:grid;height:500px;place-items:center}.intro-media video{width:min(100%,475px);max-height:500px;border-radius:20px;object-fit:cover;box-shadow:0 25px 45px #934a5a2e}@media(max-width:720px){.intro-media{height:300px;margin-top:20px}.intro-media video{max-height:300px}}.gift-app.is-gift-cover{padding:0;background:#fdf8f8}.gift-app.is-gift-cover:before,.gift-app.is-gift-cover .pink-glow{display:none}.is-gift-cover .gift-cover{position:relative;z-index:1;display:grid;min-height:100dvh;grid-template-rows:minmax(156px,28.5vh) minmax(280px,51.5vh) auto minmax(28px,1fr);align-items:stretch;overflow:hidden;padding:0 clamp(16px,5vw,48px) clamp(17px,2.4vh,30px);border:0;border-radius:0;background:radial-gradient(ellipse 54% 42% at 42% 54%,rgba(250,217,226,.48),transparent 78%),radial-gradient(circle at 83% 34%,rgba(255,255,255,.82),transparent 35%),linear-gradient(145deg,#fbf4f6,#fdf8f8 52%,snow);box-shadow:inset 0 0 55px #fff9;text-align:center}.is-gift-cover .gift-cover:before{content:none}.gift-cover-heading{align-self:end;position:relative;z-index:2;padding-bottom:clamp(10px,1.3vh,22px)}.gift-cover-heading .overline{margin:0 0 clamp(19px,2.4vh,38px);color:#ae979f;font-family:Arial,Helvetica Neue,sans-serif;font-size:clamp(11px,1.65vw,18px);font-weight:800;letter-spacing:.28em;line-height:1.2}.gift-cover-heading h1{margin:0;color:#74515f;font-family:"Noto Serif SC",Songti SC,STSong,Georgia,serif;font-size:clamp(34px,7.2vw,62px);font-weight:400;letter-spacing:-.045em;line-height:1.18;text-shadow:0 1px 7px rgba(132,87,104,.08)}.is-gift-cover .gift-cover-button{display:grid;width:100%;height:100%;place-items:center;align-self:stretch;min-height:0;margin:0;padding:0;border-radius:32px;color:inherit;background:transparent}.is-gift-cover .gift-cover-button img{display:block;width:auto;max-width:min(100%,655px);height:min(51.5vh,940px);max-height:100%;object-fit:contain;transition:transform .42s cubic-bezier(.2,.8,.2,1),filter .42s ease}.is-gift-cover .gift-cover-button:hover img{filter:drop-shadow(0 18px 24px rgba(151,79,98,.1));transform:translateY(-5px) scale(1.012)}.is-gift-cover .gift-cover-button:focus-visible{outline:3px solid rgba(184,108,130,.26);outline-offset:-3px}.is-gift-cover .gift-cover-hint{position:relative;z-index:2;align-self:start;margin:clamp(5px,.8vh,13px) 0 0;color:#aa8e99!important;font-size:clamp(13px,2.5vw,22px)!important;font-weight:400;letter-spacing:.025em;line-height:1.6}.gift-cover-spacer{min-height:20px}.gift-opening-media{display:grid;min-height:0;place-items:center}.is-gift-cover .gift-opening-video{display:block;width:min(33.2vh,655px);max-width:min(100%,655px);height:min(51.5vh,940px);max-height:100%;object-fit:contain;object-position:center -10px}.gift-app.is-letter-scene{overflow:hidden;background:linear-gradient(160deg,#fffafd,#fff3f6 48%,#fbf8ff)}.is-letter-scene:before{opacity:.14}.letter-scene{position:relative;z-index:1;display:grid;min-height:100dvh;place-items:center;overflow:hidden;padding:32px 20px;isolation:isolate}.letter-scene:before,.letter-scene:after{position:absolute;z-index:-1;border-radius:50%;content:"";filter:blur(7px)}.letter-scene:before{width:min(88vw,760px);aspect-ratio:1;background:radial-gradient(circle,#f9bed154,#f9bed100 69%);transform:translate(-23%,10%)}.letter-scene:after{right:-14vw;top:8vh;width:min(48vw,420px);aspect-ratio:1;background:radial-gradient(circle,#d5d3fa5c,#d5d3fa00 70%)}.letter-cloud{position:absolute;z-index:-1;width:170px;height:42px;border-radius:50%;background:#ffffff9e;filter:blur(3px)}.letter-cloud:before,.letter-cloud:after{position:absolute;bottom:4px;border-radius:50%;background:inherit;content:""}.letter-cloud:before{left:25px;width:72px;height:72px}.letter-cloud:after{right:26px;width:58px;height:58px}.cloud-one{top:16%;left:-45px;opacity:.62;transform:scale(.72)}.cloud-two{right:-58px;bottom:18%;opacity:.46;transform:scale(.52)}.paper-plane{position:relative;z-index:1;display:block;width:100%;height:100%;filter:drop-shadow(0 11px 9px rgba(171,79,110,.22));transform:rotate(-8deg)}.letter-arrival-track{position:relative;grid-area:1 / 1;width:100%;height:100%}.letter-arrival-track.is-arriving{animation:envelopeArrival 2.4s cubic-bezier(.19,.8,.24,1.02) both}.envelope-carrier-plane{position:absolute;z-index:8;top:calc(50% - 48px);left:calc(50% + min(18vw,195px));width:120px;height:92px;color:#d87093;animation:carrierPlaneBob .7s ease-in-out infinite alternate}.carrier-tether{position:absolute;top:48px;right:83px;width:min(18vw,126px);border-top:2px dashed rgba(220,127,159,.58);transform:rotate(7deg)}.letter-animation{position:relative;display:grid;width:min(90vw,720px);height:min(84dvh,780px);min-height:min(580px,84dvh);place-items:center}.letter-envelope{position:absolute;z-index:6;top:50%;left:50%;width:min(76vw,445px);aspect-ratio:1.46;filter:drop-shadow(0 18px 16px rgba(158,66,98,.22));transform:translate(-50%,-50%);transform-origin:center}.envelope-back,.envelope-front,.envelope-flap,.envelope-plane-shape{position:absolute;inset:0}.envelope-back{z-index:0;border:1px solid rgba(210,130,158,.68);border-radius:5px;background:linear-gradient(145deg,#fff9f7,#fbdce5)}.envelope-love-note{position:absolute;z-index:2;top:7%;left:11%;display:flex;width:78%;height:74%;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:18px 12px 16px;border:1px solid rgba(226,176,193,.65);color:#bf708d;text-align:center;background:repeating-linear-gradient(0deg,#fffefa 0 29px,#e9c0cd42 30px 31px);box-shadow:0 7px 14px #9e426214}.letter-envelope.is-extracting .envelope-love-note,.letter-envelope.is-flying .envelope-love-note{animation:returnLoveNoteToEnvelope .52s ease both}.letter-intro{margin:0 0 9px;color:#c18499;font:italic clamp(13px,2.8vw,19px) Georgia,serif;letter-spacing:.08em;opacity:0;animation:revealLetterText .35s ease 2.65s forwards}.typed-love-message{width:0;max-width:100%;margin:0;overflow:hidden;color:#9f3f63;font-family:"Noto Serif SC",Songti SC,STSong,Georgia,serif;font-size:clamp(30px,8.5vw,56px);font-weight:500;letter-spacing:.14em;line-height:1.3;text-align:center;white-space:nowrap;text-shadow:0 3px 10px rgba(163,62,97,.12);opacity:0;animation:revealLetterText .1s linear 3.05s forwards,typeLoveMessage 1.6s steps(var(--letter-characters)) 3.15s forwards}.typing-cursor{display:inline-block;width:2px;height:.98em;margin-left:.11em;vertical-align:-.08em;background:#bd5879;animation:cursorBlink .65s step-end 3.05s 6}.letter-signature{margin-top:13px;color:#d57f99;font-size:clamp(18px,4vw,27px);opacity:0;animation:revealLetterText .4s ease 4.6s forwards}@keyframes envelopeArrival{0%{opacity:0;transform:translate(-78vw,-24vh) rotate(-14deg) scale(.56)}13%{opacity:1}66%{opacity:1;transform:translate(7vw,-3vh) rotate(5deg) scale(.93)}84%{opacity:1;transform:translate(-1.5vw,1vh) rotate(-2deg) scale(1.025)}to{opacity:1;transform:translate(0) rotate(0) scale(1)}}@keyframes carrierPlaneBob{0%{transform:translateY(-4px) rotate(-5deg)}to{transform:translateY(4px) rotate(2deg)}}@keyframes revealLetterText{to{opacity:1}}@keyframes typeLoveMessage{to{width:calc(var(--letter-characters) * 1.18em)}}@keyframes cursorBlink{50%{opacity:0}}.envelope-front{z-index:2;border:1px solid rgba(210,130,158,.6);border-radius:0 0 5px 5px;background:linear-gradient(145deg,#feeef1,#f9d4df);clip-path:polygon(0 18%,50% 66%,100% 18%,100% 100%,0 100%)}.envelope-flap{z-index:1;border:1px solid rgba(210,130,158,.66);border-radius:5px 5px 0 0;background:linear-gradient(145deg,#fff6f6,#f9d7e1);clip-path:polygon(0 0,100% 0,50% 68%);transform-origin:top center}.envelope-plane-shape{z-index:5;background:linear-gradient(145deg,#fffdf9 0 48%,#f6cedb 49% 100%);clip-path:polygon(0 43%,100% 0,69% 66%,43% 53%,21% 81%);opacity:0;transform:scale(.76);transform-origin:center}.letter-envelope.is-flying{z-index:6;animation:envelopeFoldAndFly 1.65s cubic-bezier(.49,.03,.22,1) both}.letter-envelope.is-flying .envelope-back,.letter-envelope.is-flying .envelope-front{animation:fadeEnvelopeSurface 1.65s ease both}.letter-envelope.is-flying .envelope-flap{animation:closeEnvelopeFlap 1.65s ease both}.letter-envelope.is-flying .envelope-plane-shape{animation:revealEnvelopePlane 1.65s ease both}@keyframes closeEnvelopeFlap{0%,35%{opacity:1;transform:perspective(850px) rotateX(0)}56%,to{opacity:0;transform:perspective(850px) rotateX(-167deg)}}@keyframes fadeEnvelopeSurface{0%,38%{opacity:1}59%,to{opacity:0}}@keyframes revealEnvelopePlane{0%,43%{opacity:0;transform:scale(.76)}57%,to{opacity:1;transform:scale(1)}}@keyframes returnLoveNoteToEnvelope{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(44px) scale(.86)}}@keyframes envelopeFoldAndFly{0%,35%{opacity:1;transform:translate(-50%,-50%) rotate(0) scale(1)}54%{opacity:1;transform:translate(-50%,-50%) rotate(-5deg) scale(.72)}73%{opacity:1;transform:translate(calc(-50% + 19vw),calc(-50% - 9vh)) rotate(-13deg) scale(.45)}to{opacity:0;transform:translate(calc(-50% + 115vw),calc(-50% - 39vh)) rotate(-26deg) scale(.25)}}.body-letter{position:relative;z-index:2;grid-area:1 / 1;display:grid;width:min(90vw,720px);height:min(84dvh,780px);min-height:min(580px,84dvh);grid-template-rows:minmax(0,1fr) auto;gap:22px;overflow:hidden;padding:clamp(48px,7vw,68px) clamp(28px,6vw,58px) clamp(25px,5vw,42px);border:1px solid rgba(226,176,193,.76);border-radius:5px 5px 24px 24px;background:linear-gradient(90deg,transparent 49.75%,rgba(236,208,215,.22) 50%,transparent 50.25%),repeating-linear-gradient(0deg,transparent 0 31px,rgba(226,172,190,.19) 32px),linear-gradient(145deg,#fffefa,#fff8f4);box-shadow:0 30px 70px #8d4c6133,inset 0 0 42px #ffdfe5a3;transform-origin:center center}.body-letter.is-pulling-from-envelope{z-index:5;animation:pullLetterFromEnvelope 1.65s cubic-bezier(.2,.78,.2,1.05) both}.body-letter:before,.body-letter:after{position:absolute;top:17px;color:#d16f918f;font:19px Georgia,serif;content:"♡"}.body-letter:before{left:22px}.body-letter:after{right:22px}.body-letter-scroll{min-height:0;overflow-x:hidden;overflow-y:auto;padding:2px 9px 28px 2px;scrollbar-color:rgba(201,112,143,.42) transparent;scrollbar-width:thin}.typed-letter-body{margin:0;color:#744b5b;font-family:"Noto Serif SC",Songti SC,STSong,Georgia,serif;font-size:clamp(15px,2.15vw,18px);letter-spacing:.055em;line-height:2;text-align:justify;white-space:pre-wrap}.body-typing-cursor{display:inline-block;width:2px;height:1.1em;margin-left:3px;vertical-align:-.12em;background:#bd5879;animation:bodyCursorBlink .7s step-end infinite}.letter-next-button{justify-self:center;min-width:138px;box-shadow:0 12px 28px #a9436238;animation:revealNextButton .55s ease both}@keyframes pullLetterFromEnvelope{0%{opacity:0;transform:translateY(132px) rotate(-2deg) scale(.46)}24%{opacity:1;transform:translateY(92px) rotate(-1deg) scale(.62)}78%{opacity:1;transform:translateY(-8px) rotate(.8deg) scale(1.02)}to{opacity:1;transform:rotate(0) scale(1)}}@keyframes bodyCursorBlink{50%{opacity:0}}@keyframes revealNextButton{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-height:720px){.is-gift-cover .gift-cover{grid-template-rows:minmax(132px,27vh) minmax(255px,49vh) auto minmax(18px,1fr)}.gift-cover-heading .overline{margin-bottom:14px}.gift-cover-heading h1{font-size:clamp(30px,6.5vw,48px)}.is-gift-cover .gift-cover-button img{height:49vh}.is-gift-cover .gift-opening-video{width:min(31.8vh,655px);height:49vh}}@media(max-width:480px){.gift-app.is-gift-cover{padding:0}.is-gift-cover .gift-cover{min-height:100dvh;grid-template-rows:minmax(150px,28.5vh) minmax(280px,51.5vh) auto minmax(24px,1fr);padding-right:12px;padding-bottom:18px;padding-left:12px;border-radius:0}.gift-cover-heading .overline{font-size:clamp(10px,2.8vw,13px);letter-spacing:.24em}.gift-cover-heading h1{font-size:clamp(32px,8.1vw,39px)}.is-gift-cover .gift-cover-hint{font-size:clamp(12px,3.25vw,15px)!important}}@media(prefers-reduced-motion:reduce){.letter-arrival-track,.letter-intro,.typed-love-message,.typing-cursor,.letter-signature,.letter-envelope,.envelope-love-note,.envelope-flap,.envelope-plane-shape,.body-letter.is-pulling-from-envelope{animation-delay:0s}.envelope-carrier-plane{animation:none}.envelope-love-note{opacity:1;transform:none}.letter-intro,.letter-signature{opacity:1}.typed-love-message{width:calc(var(--letter-characters) * 1.18em);opacity:1}.letter-arrival-track,.letter-envelope,.envelope-flap,.envelope-plane-shape,.body-letter.is-pulling-from-envelope{animation-duration:.01ms}}@media(prefers-reduced-motion:reduce){.is-gift-cover .gift-cover-button img{transition:none}}.letter-story{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 8% 3%,#fff0f4 0,transparent 27%),radial-gradient(circle at 92% 84%,#ffe9ef 0,transparent 32%),linear-gradient(160deg,#fffafd,#fff3f6 48%,#fbf8ff);transform-origin:center}.letter-scene.letter-stage-paper-ball,.letter-scene.letter-stage-festival{background:#050711}.letter-stage-paper-ball:before,.letter-stage-paper-ball:after,.letter-stage-festival:before,.letter-stage-festival:after{opacity:0}.letter-story.is-crumpling{z-index:8;background:#050711;will-change:background}.letter-story.is-crumpling .letter-animation{z-index:6;animation:foldSourceLetter .98s cubic-bezier(.52,.04,.22,1) both;transform-origin:center;will-change:clip-path,filter,opacity,transform}.letter-story.is-crumpling:before,.letter-story.is-crumpling:after{position:absolute;z-index:12;top:50%;left:50%;width:clamp(126px,19vmin,184px);aspect-ratio:1;pointer-events:none;content:"";opacity:0;transform:translate(-50%,-50%) scale(.14) rotate(-26deg);border-radius:42% 58% 47% 60%/48% 43% 57% 52%;clip-path:polygon(20% 4%,38% 0,55% 8%,75% 3%,91% 15%,96% 32%,100% 49%,91% 61%,95% 79%,78% 95%,60% 89%,45% 100%,29% 92%,11% 98%,4% 80%,9% 65%,0 48%,8% 31%);will-change:opacity,transform}.letter-story.is-crumpling:before{border:1px solid rgba(255,245,232,.5);background:radial-gradient(ellipse at 26% 18%,rgba(255,255,250,.9) 0 5%,transparent 24%),radial-gradient(ellipse at 78% 77%,rgba(160,112,106,.45) 0 7%,transparent 29%),linear-gradient(136deg,#fffaf1,#f4dfcf 31%,#c9a096 63%,#f8e8dc);box-shadow:0 18px 16px #0000006b,9px -4px #fff7ed2e,-8px 6px #6e464a24,inset 10px 8px 13px #ffffff4d,inset -12px -9px 16px #5c353b40;animation:formPaperBall 1.85s cubic-bezier(.46,.04,.18,1) .18s both}.letter-story.is-crumpling:after{z-index:13;background:linear-gradient(28deg,transparent 0 30%,rgba(104,62,66,.34) 31% 33%,transparent 34% 100%),linear-gradient(113deg,transparent 0 38%,rgba(255,255,246,.72) 39% 42%,transparent 43% 100%),linear-gradient(164deg,transparent 0 55%,rgba(129,80,80,.28) 56% 58%,transparent 59% 100%),linear-gradient(72deg,transparent 0 23%,rgba(255,255,246,.42) 24% 27%,transparent 28% 64%,rgba(117,72,75,.24) 65% 68%,transparent 69% 100%),linear-gradient(145deg,transparent 0 67%,rgba(255,255,246,.48) 68% 71%,transparent 72% 100%);mix-blend-mode:multiply;filter:contrast(1.08);animation:paperBallCreases 1.85s cubic-bezier(.46,.04,.18,1) .18s both}@keyframes foldSourceLetter{0%{opacity:1;clip-path:inset(0 round 0);filter:brightness(1) saturate(1);transform:translate(0) rotate(0) scale(1)}21%{clip-path:polygon(0 2%,15% 0,31% 3%,49% 0,68% 4%,83% 0,100% 3%,97% 20%,100% 37%,96% 54%,100% 72%,97% 100%,77% 97%,60% 100%,42% 96%,24% 100%,0 97%,4% 78%,0 62%,3% 43%,0 23%);filter:brightness(.94) saturate(.86) contrast(1.1);transform:translate(-1vw,2vh) rotate(-3deg) scale(.9,.88)}47%{clip-path:polygon(6% 14%,32% 3%,55% 10%,82% 2%,98% 27%,88% 52%,99% 79%,72% 96%,45% 87%,18% 98%,2% 70%,12% 45%);filter:brightness(.86) saturate(.7) contrast(1.2) drop-shadow(0 16px 14px rgba(0,0,0,.26));transform:translate(8vw,12vh) rotate(32deg) scale(.56,.49)}78%{opacity:.22;clip-path:polygon(12% 12%,34% 0,58% 11%,86% 6%,100% 36%,86% 61%,95% 88%,59% 100%,35% 88%,6% 94%,0 57%);filter:brightness(.75) saturate(.55) contrast(1.28);transform:translate(0) rotate(188deg) scale(.12,.1)}to{opacity:0;clip-path:polygon(12% 12%,34% 0,58% 11%,86% 6%,100% 36%,86% 61%,95% 88%,59% 100%,35% 88%,6% 94%,0 57%);transform:translate(0) rotate(340deg) scale(.03)}}@keyframes formPaperBall{0%,13%{opacity:0;transform:translate(-50%,-50%) translateY(9vh) scale(.14) rotate(-26deg)}27%{opacity:1;transform:translate(-50%,-50%) translate(-7vw,8vh) scale(.42,.3) rotate(-7deg)}44%{transform:translate(-50%,-50%) translate(5vw,3vh) scale(.8,.64) rotate(18deg)}57%{transform:translate(-50%,-50%) translate(-2vw,-1vh) scale(1.08,.83) rotate(-13deg)}72%{transform:translate(-50%,-50%) translate(1vw,1vh) scale(.94,1.03) rotate(8deg)}86%,to{opacity:1;transform:translate(-50%,-50%) translate(0) scaleY(.92) rotate(-3deg)}}@keyframes paperBallCreases{0%,18%{opacity:0;transform:translate(-50%,-50%) scale(.14) rotate(-26deg)}37%{opacity:.25;transform:translate(-50%,-50%) translate(-5vw,7vh) scale(.46,.34) rotate(-3deg)}58%{opacity:.8;transform:translate(-50%,-50%) translate(-2vw,-1vh) scale(1.08,.83) rotate(-13deg)}to{opacity:.92;transform:translate(-50%,-50%) translate(0) scaleY(.92) rotate(-3deg)}}.festival-scene{position:absolute;inset:0;z-index:12;overflow:hidden;opacity:0;background:radial-gradient(ellipse at 50% 112%,rgba(55,51,117,.42),transparent 50%),radial-gradient(circle at 12% 12%,rgba(27,42,85,.42),transparent 24%),#050711;animation:revealFestivalSky .55s ease-out both}.festival-scene:before{position:absolute;inset:0;opacity:.42;background-image:radial-gradient(rgba(255,255,255,.7) .55px,transparent .7px);background-position:4px 8px;background-size:57px 57px;content:""}.festival-particle-canvas{display:block;width:100%;height:100%}.festival-screen-reader{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@keyframes revealFestivalSky{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.letter-story.is-crumpling,.letter-story.is-crumpling:before,.letter-story.is-crumpling:after,.letter-story.is-crumpling .letter-animation,.festival-scene{animation-duration:.01ms}}.gift-app.is-lottery{overflow:hidden;background:#210b2a}.gift-app.is-lottery:before,.gift-app.is-lottery .pink-glow{display:none}.lottery-screen,.lottery-address-screen{position:relative;display:grid;min-height:100dvh;overflow:hidden;isolation:isolate;background-color:#321239;background-image:var(--lottery-background);background-position:center;background-size:cover;background-repeat:no-repeat}.lottery-screen:after,.lottery-address-screen:before{position:absolute;z-index:-1;inset:0;background:#1507221f;content:""}.lottery-loading{align-self:center;justify-self:center;padding:13px 19px;border:1px solid rgba(255,218,235,.75);border-radius:6px;color:#fff5f7;background:#391441c2;font-size:14px;box-shadow:0 12px 32px #1c062759}.lottery-counter{position:absolute;z-index:2;top:max(14px,env(safe-area-inset-top));right:14px;display:inline-flex;align-items:center;min-height:32px;padding:0 11px;border:1px solid rgba(255,178,232,.85);border-radius:5px;color:#fff5fb;background:#2d0b3cd1;box-shadow:inset 0 0 10px #ff6dd361,0 5px 15px #0f031947;font-family:Arial,sans-serif;font-size:clamp(11px,2.9vw,15px);white-space:nowrap}.lottery-counter span{margin-right:5px;color:#ffb5e7;font-size:17px}.lottery-counter strong{margin-left:4px;color:#ffe5a5;font-size:1.12em}.lottery-draw-button{position:absolute;z-index:2;bottom:clamp(48px,10dvh,116px);left:50%;width:clamp(235px,46vw,460px);max-width:calc(100vw - 36px);padding:0;background:transparent;filter:drop-shadow(0 10px 12px rgba(45,5,47,.62));transform:translate(-50%);transition:transform .2s ease,filter .2s ease}.lottery-draw-button img{display:block;width:100%;height:auto}.lottery-draw-button:not(:disabled):hover{filter:drop-shadow(0 15px 16px rgba(45,5,47,.72));transform:translate(-50%) translateY(-3px)}.lottery-draw-button:focus-visible,.reward-claim-button:focus-visible,.lottery-chance-dialog button:focus-visible,.lottery-address-submit:focus-visible{outline:3px solid #fff1a6;outline-offset:4px}.lottery-error{position:absolute;z-index:3;bottom:17px;left:50%;max-width:calc(100vw - 34px);margin:0;color:#fff4f7;font:12px/1.5 Arial,sans-serif;text-shadow:0 1px 3px #25051e;transform:translate(-50%)}.lottery-dialog-backdrop{position:fixed;z-index:8;inset:0;display:grid;place-items:center;padding:24px;background:#19052294}.lottery-chance-dialog{width:min(420px,100%);padding:30px 26px 25px;border:1px solid rgba(255,204,231,.8);border-radius:7px;color:#fff7f7;text-align:center;background:#4a164e;box-shadow:0 22px 55px #0c021285,inset 0 0 28px #ff65c847}.lottery-chance-dialog p{margin:0 0 8px;color:#ffb7df;font-size:40px}.lottery-chance-dialog h1{margin:0;font-size:clamp(25px,6vw,33px);font-weight:500}.lottery-chance-dialog span{display:block;margin:10px 0 21px;color:#f3cee7;font-size:14px}.lottery-chance-dialog button,.lottery-address-submit{min-width:166px;min-height:46px;padding:0 22px;border:1px solid #ffd6a0;border-radius:5px;color:#542040;background:#ffd5e9;box-shadow:0 7px 14px #20022257;font-weight:700}.lottery-opening-screen{display:grid;min-height:100dvh;place-items:center;overflow:hidden;background:#17071f}.lottery-opening-video{display:block;width:100%;height:100dvh;object-fit:contain}.lottery-reward-screen{position:relative;display:grid;min-height:100dvh;place-items:center;overflow:hidden;padding:0;background:#220a2a}.lottery-reward-frame{position:relative;width:min(100vw,55.13dvh);aspect-ratio:941 / 1707}.lottery-reward-frame img{display:block;width:100%;height:100%}.reward-claim-button{position:absolute;z-index:2;bottom:3.3%;left:27%;width:46%;height:7.5%;padding:0;border-radius:7px;background:transparent}.lottery-reward-screen .lottery-error{bottom:15px}.gift-app.is-lottery-address{overflow:auto}.lottery-address-screen{align-items:center;justify-items:center;padding:52px 20px;overflow:auto}.lottery-address-screen:before{z-index:0;background:#18042380}.lottery-address-form{position:relative;z-index:1;width:min(560px,100%);padding:clamp(24px,5vw,38px);border:1px solid rgba(255,203,233,.75);border-radius:7px;color:#fff8fc;background:#38103eeb;box-shadow:0 24px 64px #1102197a}.lottery-address-kicker{margin:0 0 10px;color:#ffc6e6;font:700 12px Arial,sans-serif;letter-spacing:.08em}.lottery-address-form h1{margin:0;font-size:clamp(27px,6vw,39px);font-weight:500}.lottery-address-copy{margin:10px 0 25px;color:#edcfe8;font-size:14px;line-height:1.7}.lottery-address-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.lottery-address-grid label{display:grid;gap:7px}.lottery-address-grid label span{color:#f5d6ec;font:12px Arial,sans-serif}.lottery-address-grid input,.lottery-address-grid textarea{width:100%;border:1px solid rgba(253,210,236,.66);border-radius:5px;color:#3d183c;outline:0;background:#fff7fb;font:14px Arial,sans-serif}.lottery-address-grid input{height:42px;padding:0 11px}.lottery-address-grid textarea{padding:10px 11px;resize:vertical}.lottery-address-grid input:focus,.lottery-address-grid textarea:focus{border-color:#fff0a8;box-shadow:0 0 0 3px #ffcceb38}.lottery-address-detail{grid-column:1 / -1}.lottery-address-error{margin:15px 0 0;color:#ffd0d7;font:12px/1.5 Arial,sans-serif}.lottery-address-submit{display:block;width:100%;margin-top:22px}.lottery-completion-screen{display:grid;min-height:100dvh;place-items:center;padding:24px;color:#fff9fb;text-align:center;background:#220a2a}.lottery-completion-content{width:min(430px,100%);padding:38px 28px;border:1px solid rgba(255,200,230,.7);border-radius:7px;background:#48164a;box-shadow:0 20px 60px #0c021273}.lottery-completion-content>span{display:block;color:#ffb6df;font-size:54px}.lottery-completion-content p{margin:8px 0 0;color:#ffd4e9;font-size:14px}.lottery-completion-content h1{margin:7px 0 11px;font-size:clamp(29px,7vw,42px);font-weight:500}.lottery-completion-content small{color:#ebcee4;font-size:13px}@media(max-width:560px){.lottery-screen{background-size:cover}.lottery-draw-button{bottom:max(44px,env(safe-area-inset-bottom));width:min(74vw,350px)}.lottery-address-screen{align-items:start;padding:max(26px,env(safe-area-inset-top)) 15px 32px}.lottery-address-grid{grid-template-columns:1fr}.lottery-address-detail{grid-column:auto}}
