*{box-sizing:border-box} :root{--pink:#f4cad9;--ink:#74374f;--rose:#ad4167;--paper:#fffaf7;--heading:'Pixelify Sans',monospace;--hand:'Caveat',cursive;--body:'Nunito Sans',sans-serif}html{background:#fff2f6;color:var(--ink);font-family:var(--body);scroll-behavior:smooth}body{margin:0;min-width:280px;background:radial-gradient(ellipse at 20% 20%,#fffaf8a8,transparent 60%),repeating-linear-gradient(0deg,#fff7fa00 0 23px,#edbdd129 23px 24px),#fff2f6}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #873a61;outline-offset:6px}button{touch-action:manipulation}button:disabled{cursor:default}a{color:var(--ink)}[hidden]{display:none!important}svg{width:100%;height:100%;display:block}figure,p,h1,h2,h3{margin:0}button{border:0}h1,h2,h3{font-family:var(--heading);font-weight:500;text-wrap:balance;overflow-wrap:anywhere}h1{font-size:clamp(28px,3.5vw,48px)}h2{font-size:clamp(28px,3.8vw,48px);line-height:1.15}h3{font-size:24px}.script{font-family:var(--hand);font-size:27px;line-height:1.28}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;line-height:1.8}.masthead{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:1440px;margin:auto;padding:23px max(24px,4vw);border-bottom:1px solid #be78972e;font-size:12px;letter-spacing:.18em}.masthead i{font-family:var(--hand);font-size:23px;letter-spacing:0;font-weight:400;margin-left:5px}.edition{font-size:10px;letter-spacing:.14em}.masthead button{background:none;min-height:44px;font-size:12px;letter-spacing:0}.skip{position:absolute;top:-100px;left:20px;z-index:999;background:white;padding:15px}.skip:focus{top:12px}.scene{min-height:calc(100svh - 143px);position:relative;isolation:isolate;display:grid;place-items:center;padding:36px max(24px,5vw);overflow:clip}.scene-inner{width:min(100%,1060px);text-align:center;position:relative}.scene-inner>.eyebrow{margin-bottom:17px}.scene-inner>h2+.script{margin:15px 0 27px}.scene.entering .scene-inner{animation:page-in .7s cubic-bezier(.2,.8,.2,1) both}.scene.exiting .scene-inner{animation:page-out .28s ease both}.button{position:relative;display:inline-flex;justify-content:center;align-items:center;gap:22px;min-height:50px;max-width:100%;padding:13px 28px;background:#b94e76;color:#fff9fc;border:1px solid #923a5b;border-radius:9px;box-shadow:0 4px 0 #873b5b,0 8px 20px #a35f7820;font-family:var(--heading);font-size:22px;line-height:1.2;overflow-wrap:anywhere;transition:transform .2s,box-shadow .2s}.button:hover{transform:translateY(-3px);box-shadow:0 7px 0 #873b5b,0 13px 24px #a35f7825}.button:active{transform:translateY(3px);box-shadow:0 1px 0 #873b5b}.button.outline{background:#fffaf9;color:#8e3e60;border-color:#c48aa1;box-shadow:0 4px 0 #ddb1c3}.back{background:none;min-height:44px;font-size:12px;text-decoration:underline;text-underline-offset:5px;padding:10px;max-width:100%;overflow-wrap:anywhere}.scene-inner>.back:first-child{display:block;margin:0 0 20px;text-align:left}.footer{display:flex;justify-content:space-between;position:relative;z-index:4;gap:20px;padding:18px max(24px,4vw) max(18px,env(safe-area-inset-bottom));font-size:10px;letter-spacing:.06em;border-top:1px solid #be78972e}.ambient{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}.ambient span{position:absolute;left:calc(var(--i)*10% + 2%);top:105%;font-size:calc(13px + var(--i)*2px);color:#c17b9a;opacity:0;animation:float-up calc(16s + var(--i)*1s) linear infinite;animation-delay:calc(var(--i)*-3s)}.opening .scene-inner>.eyebrow{margin-bottom:0}.opening-collage{position:relative;width:min(680px,100%);height:380px;margin:0 auto 10px}.balloon-banner{display:flex;justify-content:center;gap:8px;position:absolute;top:0;width:100%;z-index:3;transform:rotate(-3deg)}.balloon-banner span{font-family:var(--heading);font-size:49px;font-weight:700;color:#f5c4d8;text-shadow:-1px -1px #fff5fb,1px 2px #ad6986,2px 4px #c7809b,4px 7px 6px #8e486432;transform:rotate(calc((var(--i) - 2)*4deg));animation:balloon 4s ease-in-out infinite;animation-delay:calc(var(--i)*-.6s)}.banner-word{position:absolute;top:65px;left:0;right:0;font-family:var(--hand);font-size:48px;transform:rotate(-4deg);z-index:3}.polaroid{background:#fffdfa;padding:9px 9px 13px;box-shadow:0 4px 16px #7f435523;border:1px solid #e5d2d6;position:relative;transform:rotate(-5deg);min-width:0}.polaroid:before{content:'';position:absolute;z-index:2;width:55px;height:20px;background:repeating-linear-gradient(45deg,#f4c2d2a6 0 3px,#f8dae3c0 3px 5px);top:-8px;left:calc(50% - 27px);transform:rotate(5deg)}.photo-art{aspect-ratio:1;overflow:hidden;background:#f4dce7}.photo-art img{width:100%;height:100%;object-fit:cover;display:block}.polaroid figcaption{font-family:var(--hand);font-size:20px;line-height:1.05;padding-top:9px;overflow-wrap:anywhere}.opening-photo{position:absolute;width:145px;top:153px;z-index:2}.opening-photo.one{left:25px;transform:rotate(-13deg)}.opening-photo.two{left:190px;top:182px;transform:rotate(8deg)}.mini-calendar{position:absolute;top:120px;left:190px;background:#fffdfb;border:1px solid #c68ba3;box-shadow:0 3px 0 #dfb8c8;transform:rotate(-7deg);width:112px;z-index:3;padding-bottom:7px}.mini-calendar span{display:block;background:#d894b0;color:#fff;font-family:var(--heading);font-size:16px;padding:4px;text-transform:uppercase}.mini-calendar b{display:block;font-family:var(--hand);font-size:44px;line-height:1.15}.mini-calendar small{font-size:9px}.portrait-frame{position:absolute;right:23px;top:133px;width:190px;padding:13px;background:repeating-linear-gradient(45deg,#d9a3ad 0 2px,#fce4da 2px 5px);border-radius:80px 80px 14px 14px;border:4px double #bd8498;box-shadow:0 9px 18px #99637825;transform:rotate(8deg)}.portrait-frame .polaroid{border-radius:65px 65px 3px 3px;padding:5px;transform:none}.portrait-frame .polaroid:before{display:none}.portrait-frame .photo-art{border-radius:60px 60px 2px 2px}.portrait-frame figcaption{font-size:17px}.frame-bow{position:absolute;width:90px;height:90px;left:45px;top:-53px}.ticket{position:absolute;bottom:0;left:315px;transform:rotate(-5deg);background:#f5d5e1;padding:12px 16px;border:1px dashed #b76d8c;font-size:8px;line-height:1.8;letter-spacing:.15em}.ticket b{font-family:var(--hand);font-size:19px;letter-spacing:0;font-weight:400}.flower-sticker{position:absolute;left:-2px;bottom:0;width:83px;height:83px;z-index:3}.opening-note{margin:5px 0 24px}.question{background:repeating-linear-gradient(0deg,#edbed133 0 13px,#ffffff55 13px 26px),repeating-linear-gradient(90deg,#edbed133 0 13px,#ffffff55 13px 26px)}.question-card{position:relative;margin:50px auto 0;padding:45px 35px 28px;background:#fffaf9;width:min(100%,680px);border:1px solid #e3b6c8;box-shadow:0 7px 0 #ebccda,0 18px 38px #8f486519;border-radius:3px;outline:1px dashed #dca7bc;outline-offset:-12px}.question-card:after{content:'';position:absolute;top:-9px;left:0;right:0;height:18px;background:radial-gradient(circle at 10px 10px,#fffaf9 9px,transparent 10px) repeat-x;background-size:20px 18px}.bow-sticker{position:absolute;top:-79px;left:calc(50% - 55px);height:110px;width:110px;z-index:2}.little-hearts{color:#b76485;font-size:24px;margin:2px 0 18px}.question h2{font-size:clamp(25px,3.6vw,40px);line-height:1.3}.answers{display:flex;justify-content:center;gap:25px;flex-wrap:wrap;margin:35px 0 24px}.answers .button{min-width:160px}.tiny{font-size:22px;color:#9e6680}.question-reply{min-height:46px;margin:25px 0 0;font-family:var(--hand);font-size:26px}.ready-bow{width:170px;height:170px;margin:0 auto -8px}.ready .script{margin:18px auto 30px}.ready .big{font-size:30px;min-width:180px}.postage{margin:38px auto 0;width:145px;padding:10px;border:2px dotted #cc91a9;transform:rotate(-8deg);font-size:9px;letter-spacing:.15em;line-height:1.8}.wish-title{font-size:clamp(38px,5vw,66px);font-weight:500}.cake-collage{position:relative;max-width:790px;margin:15px auto 0;min-height:300px;display:flex;justify-content:center;align-items:center}.cupcake{position:relative;background:none;width:290px;height:290px;z-index:2;transition:transform .3s}.cupcake:hover{transform:rotate(-3deg) scale(1.035)}.candle-flame{opacity:0;transform-origin:152px 48px}.lit .candle-flame{opacity:1;animation:flicker 1.6s ease-in-out infinite;filter:drop-shadow(0 0 12px #ffa941)}.film{background:#785465;padding:12px 14px;width:125px;position:absolute;top:5px;box-shadow:0 5px 12px #8e526129;mask:linear-gradient(#000 0 0)}.film:before,.film:after{position:absolute;content:'';top:0;bottom:0;width:5px;background:repeating-linear-gradient(#ffeaf1 0 7px,transparent 7px 16px)}.film:before{left:3px}.film:after{right:3px}.film .polaroid{padding:0;margin:7px 0;transform:none;border:0}.film .polaroid:before,.film figcaption{display:none}.film.left{left:50px;transform:rotate(-13deg)}.film.right{right:50px;transform:rotate(11deg)}#candle-hint{font-size:14px;margin-top:12px}#mic-status{min-height:20px;font-size:12px}#birthday-surprise{margin-top:10px;animation:page-in .7s both}.surprise-copy{max-width:570px;margin:0 auto 20px}.menu{background:radial-gradient(ellipse at 50% 0,#fffaf6,#f5d1df);min-height:calc(100svh - 143px)}.menu .scene-inner{position:static}.curtain{position:absolute;top:0;bottom:0;width:17%;z-index:2;background:repeating-linear-gradient(95deg,#dd92b2,#f9d4e3 14%,#d78aab 27%,#f6c4db 41%);box-shadow:0 0 20px #8a3f6430;pointer-events:none}.curtain:after{content:'';position:absolute;top:48%;width:95%;height:16px;background:#f8e2c8;border:3px double #c89c79;transform:rotate(-12deg);box-shadow:0 3px 5px #95576d30}.left-curtain{left:0;border-radius:0 0 80% 0;transform-origin:left top}.right-curtain{right:0;border-radius:0 0 0 80%;transform-origin:right top}.right-curtain:after{transform:rotate(12deg)}.menu.entering .left-curtain{animation:curtain-left 1.4s cubic-bezier(.2,.6,.2,1) both}.menu.entering .right-curtain{animation:curtain-right 1.4s cubic-bezier(.2,.6,.2,1) both}.menu h2,.menu .script,.menu .eyebrow,.menu-foot{position:relative;z-index:3;max-width:70%;margin-left:auto;margin-right:auto}.menu h2{max-width:65%}.envelopes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;width:77%;max-width:830px;margin:45px auto 34px;position:relative;z-index:3}.envelope-card{position:relative;min-width:0;background:none;padding:0 0 12px;animation:envelope-float 5s ease-in-out infinite}.envelope-card:nth-child(2){animation-delay:-1.8s}.envelope-card:nth-child(3){animation-delay:-3s}.envelope{position:relative;display:block;aspect-ratio:1.5;background:#efd2dd;box-shadow:0 8px 14px #8e4c6727;perspective:700px;border:1px solid #cd94ac;border-radius:4px}.envelope-front{position:absolute;inset:0;background:linear-gradient(30deg,#f5dce6 49.8%,transparent 50%) left/50.2% 100% no-repeat,linear-gradient(-30deg,#efcedd 49.8%,transparent 50%) right/50.2% 100% no-repeat;z-index:4;pointer-events:none;border-radius:4px}.flap{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 57%);background:linear-gradient(#fce9f0,#e5b6cd);z-index:5;transform-origin:top;transition:transform .6s,z-index 0s .3s}.letter-peek{position:absolute;background:#fff9ed;left:9%;right:9%;top:8%;bottom:5%;padding:16px 4px;font-family:var(--hand);font-size:18px;line-height:1;transition:transform .7s;z-index:2}.seal{position:absolute;left:calc(50% - 17px);top:44%;width:34px;height:34px;display:grid;place-items:center;background:#be6d91;color:#ffe9f1;border:3px double #efd0a3;border-radius:50%;z-index:6;box-shadow:0 2px 5px #8f536947;transition:opacity .3s}.envelope-number{display:block;font-family:var(--hand);font-size:22px;margin:15px 0 4px}.envelope-title{display:block;font-family:var(--heading);font-size:clamp(18px,2vw,24px);line-height:1.15;overflow-wrap:anywhere}.envelope-caption{display:block;font-size:10px;margin-top:6px;color:#955b75}.envelope-card.opening-envelope{animation:none}.opening-envelope .flap{transform:rotateX(180deg);z-index:1}.opening-envelope .letter-peek{transform:translateY(-45%);transition-delay:.2s}.opening-envelope .seal{opacity:0}.envelope-card.visited .envelope-caption:after{content:' · opened ♡'}.menu-foot{font-size:10px;letter-spacing:.1em}.letter-layout{display:grid;grid-template-columns:1.6fr .65fr;gap:45px;align-items:center;max-width:870px;margin:32px auto}.letter-paper{position:relative;text-align:left;padding:35px 40px 30px;background:repeating-linear-gradient(transparent 0 35px,#dbaec11c 35px 36px),#fffaf1;border:1px solid #e3c2c4;box-shadow:0 9px 24px #9e657423;transform:rotate(-1deg)}.letter-bow{position:absolute;right:-25px;top:-40px;width:100px;height:100px}.salutation{font-size:29px;margin-bottom:20px}.letter-copy{font-size:26px;line-height:1.4;overflow-wrap:anywhere}.signoff{margin-top:23px;font-size:26px}.letter-photos .polaroid{margin:28px 0;transform:rotate(8deg)}.letter-photos .polaroid:nth-child(2){transform:rotate(-5deg)}.coupon-layout{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;margin:30px auto;max-width:960px}.memory-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px 20px;padding:15px}.memory-grid .polaroid:nth-child(even){transform:rotate(6deg)}.memory-grid .polaroid:nth-child(3n){transform:rotate(-2deg)}.coupon-stack{display:grid;gap:22px}.coupon{position:relative;background:#fffaf2;padding:24px 22px;text-align:left;border:1px solid #d49eb4;outline:1px dashed #d9b3c3;outline-offset:-9px;box-shadow:0 6px 15px #9f63741c;overflow-wrap:anywhere}.coupon:before,.coupon:after{content:'';position:absolute;top:calc(50% - 12px);width:12px;height:24px;background:#fff2f6;border:1px solid #d49eb4}.coupon:before{left:-1px;border-radius:0 15px 15px 0;border-left:0}.coupon:after{right:-1px;border-radius:15px 0 0 15px;border-right:0}.coupon-no{display:block;letter-spacing:.18em;font-size:8px;margin-bottom:13px}.coupon h3{font-size:25px;margin-bottom:10px}.coupon .script{font-size:24px}.coupon-valid{display:block;border-top:1px dashed #dcadc1;margin-top:15px;padding-top:10px;font-size:9px;letter-spacing:.06em}.music-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:30px;max-width:870px;margin:28px auto}.record-card{padding:22px 30px;background:#edc1d4;border:1px solid #cf92b0;border-radius:8px;box-shadow:0 8px 0 #d8a1ba,0 15px 30px #8e4d631a}.turntable{position:relative;width:min(100%,265px);aspect-ratio:1;margin:0 auto 12px;display:grid;place-items:center}.vinyl{width:89%;aspect-ratio:1;border-radius:50%;background:repeating-radial-gradient(circle at center,#342b34 0 2px,#443740 3px 4px,#302831 5px 7px);box-shadow:0 4px 7px #50303c55;display:grid;place-items:center;position:relative;animation:spin 5s linear infinite;animation-play-state:paused}.vinyl:before{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(transparent,#ffffff15,transparent 32%,#ffffff09,transparent 65%)}.playing .vinyl{animation-play-state:running}.record-label{position:relative;display:grid;place-content:center;background:#f4dce7;border:6px double #c895a9;width:36%;aspect-ratio:1;border-radius:50%;font-size:24px;line-height:1}.record-label small{font-family:var(--hand);font-size:17px;margin-top:5px}.tonearm{position:absolute;width:15%;height:75%;border:7px solid #b38d91;border-left:0;border-bottom:0;top:0;right:3%;transform:rotate(16deg);transform-origin:top right;border-radius:0 15px 0 0;transition:transform .6s;filter:drop-shadow(2px 3px 1px #8a566a33)}.tonearm:after{content:'';position:absolute;width:12px;height:30px;background:#7d5164;bottom:-4px;right:-10px;transform:rotate(-10deg);border-radius:3px}.playing .tonearm{transform:rotate(35deg)}.now-title{font-family:var(--heading);font-size:24px;overflow-wrap:anywhere}.now-artist{font-size:11px;margin-top:4px;overflow-wrap:anywhere}.timeline{margin:20px auto 8px;max-width:280px}.seek{accent-color:#914b6d;width:100%;height:22px;cursor:pointer}.timeline>div{display:flex;justify-content:space-between;font-size:10px;font-variant-numeric:tabular-nums}.transport{display:flex;align-items:center;justify-content:center;gap:22px}.transport button{background:none;min-width:44px;min-height:44px;font-size:26px}.transport .play{width:52px;height:52px;border-radius:50%;background:#8d4564;color:#fff8fb;font-size:20px}.audio-status{font-size:10px;line-height:1.5;min-height:30px;margin-top:12px}.track-card{padding:25px;background:#fffaf8;border:1px solid #e6c5d3;box-shadow:0 5px 17px #90536412;text-align:left}.songs{list-style:none;padding:0;margin:20px 0}.song{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 10px;background:transparent;border-bottom:1px dashed #e4bfce;min-height:60px}.song[aria-pressed=true]{background:#f6e1e9;border-radius:5px}.song>span:nth-child(2){flex:1;min-width:0}.song b,.song small{display:block;overflow-wrap:anywhere}.song b{font-size:13px;font-weight:700}.song small{font-size:10px;margin-top:5px}.track-no{font-family:var(--heading);font-size:17px}.spotify{border-top:1px solid #e4bfce;padding-top:20px;display:flex;gap:20px;align-items:center;font-size:13px;line-height:1.6}.qr{flex:0 0 100px;text-align:center}.qr svg{width:100px;height:100px;background:white}.qr small{font-size:9px}.music-note{font-size:11px;line-height:1.7}.playlist-scene .scene-inner>.button{margin-top:12px}.listening-card{max-width:750px;display:grid;grid-template-columns:.85fr 1fr;gap:50px;align-items:center;background:#f6d9e5;border:1px solid #d7a3b9;padding:35px;margin:30px auto;box-shadow:0 8px 30px #99596d1c}.listening-card .turntable{width:190px}.final-sign{font-size:25px;overflow-wrap:anywhere}.bgm{z-index:10!important}.noscript{padding:20px;background:white;text-align:center}.burst{position:fixed;pointer-events:none;z-index:20;left:50%;top:45%;font-size:24px;animation:burst 1.8s ease-out both}.letter-scene.entering .letter-paper{animation:letter-out .9s ease both}@keyframes page-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes page-out{to{opacity:0;transform:translateY(-12px)}}@keyframes balloon{50%{translate:0 -5px}}@keyframes float-up{10%{opacity:.24}90%{opacity:.24}to{transform:translate(24px,-115vh);opacity:0}}@keyframes flicker{50%{transform:scale(.89,1.06);filter:drop-shadow(0 0 18px #ffba5b)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes envelope-float{50%{transform:translateY(-7px) rotate(1deg)}}@keyframes curtain-left{from{transform:scaleX(3.3)}to{transform:scaleX(1)}}@keyframes curtain-right{from{transform:scaleX(3.3)}to{transform:scaleX(1)}}@keyframes letter-out{from{opacity:0;transform:translateY(90px) rotate(-1deg)}to{opacity:1;transform:translateY(0) rotate(-1deg)}}@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}@media(min-width:1500px){.scene{padding-top:60px;padding-bottom:60px}.opening-collage{margin-bottom:25px}}@media(max-width:760px){.edition{display:none}.masthead{padding:10px 20px;font-size:10px}.masthead i{font-size:21px}.scene{min-height:calc(100svh - 114px);padding:30px 22px}.opening-collage{width:330px;max-width:100%;height:325px}.balloon-banner{gap:5px}.balloon-banner span{font-size:41px}.banner-word{font-size:39px;top:57px}.opening-photo{width:108px;top:125px}.opening-photo.one{left:0;transform:rotate(-10deg)}.opening-photo.two{left:79px;top:183px;width:111px;transform:rotate(8deg)}.portrait-frame{right:0;top:131px;width:129px;padding:8px;transform:rotate(7deg)}.portrait-frame figcaption{font-size:15px}.frame-bow{width:68px;height:68px;left:22px;top:-41px}.mini-calendar{left:121px;top:105px;width:82px}.mini-calendar b{font-size:33px}.mini-calendar span{font-size:12px}.mini-calendar small{font-size:8px}.ticket{bottom:9px;left:auto;right:0;padding:6px;font-size:6px}.ticket b{font-size:14px}.flower-sticker{width:58px;height:58px;bottom:25px;left:0}.opening-note{font-size:25px}.opening h1{font-size:30px}.question-card{padding:38px 22px 24px;margin-top:47px}.question h2{font-size:29px}.answers{gap:16px;margin-top:28px}.answers .button{min-width:125px;padding:12px 16px;font-size:21px}.question-reply{font-size:24px}.ready-bow{height:145px;width:145px}.cake-collage{min-height:255px;margin-top:20px}.cupcake{width:235px;height:255px}.film{width:86px;padding:8px 10px;top:24px;opacity:.9}.film.left{left:-7px}.film.right{right:-7px}.film:before,.film:after{width:4px}.film .polaroid{margin:4px 0}.wish-title{font-size:43px}.birthday .scene-inner>.eyebrow{font-size:9px}.curtain{width:14%}.menu h2{font-size:29px;max-width:78%}.menu .script{font-size:24px;max-width:73%}.envelopes{width:80%;max-width:380px;grid-template-columns:1fr;gap:21px;margin-top:24px}.envelope-card{display:grid;grid-template-columns:105px 1fr;column-gap:16px;text-align:left;align-items:center;padding:8px 0}.envelope{grid-column:1;grid-row:1/5;width:105px}.envelope-number{grid-column:2;font-size:17px;margin:0}.envelope-title{grid-column:2;font-size:21px}.envelope-caption{grid-column:2;margin-top:5px;font-size:9px}.seal{width:24px;height:24px;left:calc(50% - 12px);font-size:13px;border-width:2px}.letter-peek{font-size:13px;padding:6px 0}.envelope-card .flap{clip-path:polygon(0 0,100% 0,50% 60%)}.menu-foot{max-width:70%;line-height:1.8}.letter-layout{grid-template-columns:1fr;gap:30px;margin-top:30px}.letter-paper{padding:28px 25px;transform:rotate(-.6deg)}.letter-bow{width:77px;height:77px;top:-32px;right:-12px}.letter-copy{font-size:25px;line-height:1.4}.letter-photos{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:0 8px}.letter-photos .polaroid{margin:5px 0}.coupon-layout{grid-template-columns:1fr;gap:25px;margin-top:20px}.memory-grid{gap:23px;padding:10px}.coupon-stack{gap:20px}.music-layout{grid-template-columns:1fr;gap:25px}.record-card{max-width:400px;width:100%;margin:auto;padding:20px 25px}.turntable{max-width:230px}.track-card{padding:20px}.listening-card{grid-template-columns:1fr;gap:25px;padding:25px}.listening-card>.polaroid{width:65%;max-width:230px;margin:5px auto}.listening-card .turntable{width:190px}.final-sign{font-size:24px}.footer{padding:15px 20px max(15px,env(safe-area-inset-bottom));font-size:9px}.scene-inner>.back:first-child{margin-bottom:15px}}@media(max-width:360px){.scene{padding-left:17px;padding-right:17px}.opening-collage{height:303px}.portrait-frame{width:113px}.opening-photo.two{left:78px;top:177px;width:100px}.mini-calendar{left:111px}.ticket{bottom:0}.banner-word{font-size:35px}.question h2{font-size:26px}.answers .button{min-width:108px;padding:12px}.menu h2{font-size:26px}.envelopes{width:85%}.envelope-card{grid-template-columns:90px 1fr;column-gap:12px}.envelope{width:90px}.envelope-title{font-size:19px}.script{font-size:25px}}@media(max-height:720px) and (min-width:761px){.scene{padding:24px 40px}.opening-collage{height:320px;scale:.87;margin-top:-15px;margin-bottom:-25px}.opening-note{margin-bottom:16px}.scene-inner>.eyebrow{margin-bottom:10px}.ready-bow{width:120px;height:120px}.cake-collage{min-height:250px}.cupcake{width:250px;height:250px}.film{width:105px}.menu .envelopes{margin:30px auto 25px}.question-card{margin-top:40px;padding-top:35px}.question-reply{margin-top:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.ambient{display:none}.vinyl{animation:none!important}.scene.entering .scene-inner,.scene.exiting .scene-inner{opacity:1;transform:none}.lit .candle-flame{opacity:1}}/* The front is a folded paper polygon, not an aspect-ratio-dependent gradient. */
.envelope-front{background:linear-gradient(140deg,#f8e0e9,#edc7d8);clip-path:polygon(0 0,50% 51%,100% 0,100% 100%,0 100%)}
.scene-inner{min-width:0;max-width:100%}
@media(max-width:760px){.opening-collage{width:min(330px,100%)}}
/* Keep variable-length photo captions inside the opening collage. Full captions remain in the keepsakes. */
.opening-collage figcaption{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:760px){.opening-collage{height:360px}}
@media(max-width:360px){.opening-collage{height:350px}}
/* Editable copy must stay readable even when it has no natural word breaks. */
.script,.banner-word,.opening-note,.salutation,.signoff,.question-reply,.envelope-title{overflow-wrap:anywhere}
.letter-layout>* , .music-layout>* , .listening-card>*{min-width:0}
.question-next{margin:0 auto 15px}
/* The banner takes its natural height; only the art below it is collaged. */
.opening-collage{height:auto}
.balloon-banner{position:relative;top:auto}
.banner-word{position:relative;top:auto;margin:6px 0 9px;line-height:1.15}
.collage-stage{position:relative;height:270px}
.mini-calendar{top:10px}
.opening-photo{top:43px}
.opening-photo.two{top:72px}
.portrait-frame{top:23px}
@media(max-width:760px){.opening-collage{height:auto}.collage-stage{height:270px}.mini-calendar{top:15px}.opening-photo{top:35px}.opening-photo.two{top:93px}.portrait-frame{top:41px}}
@media(max-width:360px){.opening-collage{height:auto}.opening-photo.two{top:87px}}
