:root{--rose-50:#fff8fb;--rose-100:#ffeef5;--rose-200:#ffdcea;--rose-300:#ffc2da;--rose-400:#f798bd;--rose-500:#e96b9b;--rose-600:#c94f7c;--rose-700:#a53c63;--rose-800:#7d2f4d;--plum:#6d3a50;--plum-soft:#96607a;--cream:#fffdfb;--sans:"Quicksand", "Segoe UI", system-ui, sans-serif;--serif:"Cormorant Garamond", Georgia, "Times New Roman", serif;--script:"Parisienne", "Segoe Script", cursive;--hand:"Kalam", "Segoe Print", "Bradley Hand", cursive;--letter-hand:"Caveat", "Segoe Print", "Bradley Hand", cursive;font-family:var(--sans);color:var(--plum);background:var(--rose-100);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-size:16px;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--rose-100);min-height:100svh;margin:0;overflow-x:hidden}button{font:inherit;color:inherit}::selection{background:var(--rose-300);color:var(--rose-800)}.app{isolation:isolate;min-height:100svh;position:relative;overflow-x:hidden}.stage{z-index:2;position:relative}.dream-bg{z-index:0;pointer-events:none;background:radial-gradient(120% 90% at 12% 6%,#fffffffa 0%,#fff0 46%),radial-gradient(90% 72% at 88% 4%,#ffd6e8e6 0%,#ffd6e800 56%),radial-gradient(130% 100% at 50% 108%,#ffa9cae0 0%,#ffa9ca00 62%),linear-gradient(158deg,#fff9fc 0%,#ffeaf3 42%,#ffd7e7 78%,#ffc9df 100%);position:fixed;inset:0;overflow:hidden}.dream-bg:after{content:"";opacity:.28;mix-blend-mode:soft-light;background-image:radial-gradient(#ffffffbf 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0}.dream-bg__orb{filter:blur(46px);opacity:.7;border-radius:50%;animation:16s ease-in-out infinite alternate orb-drift;position:absolute}.dream-bg__orb--one{background:radial-gradient(circle at 34% 34%,#fffffff2,#ffc4dc73 56%,#0000 72%);width:42vw;min-width:280px;height:42vw;min-height:280px;top:-10%;left:-8%}.dream-bg__orb--two{background:radial-gradient(circle at 60% 40%,#fffc,#fa9abf66 58%,#0000 74%);width:36vw;min-width:240px;height:36vw;min-height:240px;animation-duration:20s;animation-delay:-5s;top:12%;right:-12%}.dream-bg__orb--three{background:radial-gradient(circle,#ffe0edd9,#ffb2d057 55%,#0000 72%);width:46vw;min-width:300px;height:46vw;min-height:300px;animation-duration:24s;animation-delay:-9s;bottom:-18%;left:22%}.dream-bg__lace{aspect-ratio:1;border:1px solid #c94f7c29;border-radius:50%;width:min(92vw,980px);animation:90s linear infinite lace-spin;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 24px #ffffff24,0 0 0 25px #c94f7c17,0 0 0 64px #ffffff14}.dream-bg__lace:before{content:"";border:1px dashed #c94f7c24;border-radius:50%;position:absolute;inset:7%}.dream-bg__hearts,.dream-bg__sparkles{position:absolute;inset:0}.floating-heart{opacity:0;filter:drop-shadow(0 6px 12px #c94f7c2e);will-change:transform, opacity;line-height:1;animation-name:heart-float;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;bottom:-12vh}.sparkle{color:#ffffffeb;text-shadow:0 0 12px #fffffff2,0 0 22px #ff9ec4d9;line-height:1;animation:4s ease-in-out infinite twinkle;position:absolute}.dream-bg__frame{border:1px solid #c94f7c33;border-radius:26px;position:absolute;inset:14px}.page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:clamp(3.5rem,9vh,6rem) 1.5rem;animation:.85s cubic-bezier(.22,1,.36,1) both page-in;display:flex;position:relative}.eyebrow{letter-spacing:.44em;text-transform:uppercase;color:#b06e8b;margin:0 0 1.4rem;font-size:clamp(.62rem,1.6vw,.72rem);font-weight:600}.script-title{font-family:var(--script);color:#a53c63;text-shadow:0 12px 30px #c94f7c2e;margin:0;font-size:clamp(2.9rem,8vw,4.8rem);font-weight:400;line-height:1.12}.btn{cursor:pointer;font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.55rem;padding:1.05rem 2.5rem;font-size:.82rem;font-weight:700;transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s,background-color .3s;display:inline-flex;position:relative}.btn:focus-visible{outline-offset:4px;outline:2px solid #c94f7c}.ask-page__halo{aspect-ratio:1;filter:blur(12px);pointer-events:none;background:radial-gradient(circle,#ffffffe0 0%,#fff6 40%,#0000 68%);border-radius:50%;width:min(94vw,920px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ask-page__content{z-index:1;flex-direction:column;align-items:center;max-width:900px;display:flex;position:relative}.hero-ornament{color:#d97aa1;justify-content:center;align-items:center;gap:.8rem;margin-bottom:1.5rem;display:flex}.hero-ornament__line{background:linear-gradient(90deg,#0000,#c94f7c80);width:clamp(34px,8vw,66px);height:1px}.hero-ornament__line:last-child{background:linear-gradient(270deg,#0000,#c94f7c80)}.hero-ornament__star{opacity:.75;font-size:.7rem;animation:3.4s ease-in-out infinite twinkle}.hero-ornament__heart{color:#e96b9b;font-size:1rem;animation:2.4s ease-in-out infinite heartbeat}.hero-title{font-family:var(--serif);letter-spacing:-.03em;background:linear-gradient(118deg,#8d3357 4%,#cf5d8c 52%,#b3416c 96%);-webkit-text-fill-color:transparent;color:#0000;filter:drop-shadow(0 14px 34px #ad49702e);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(3.6rem,12vw,8.5rem);font-style:italic;font-weight:600;line-height:.94}.hero-title em{background:linear-gradient(120deg,#e06094,#f59ac0 50%,#d35388);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;padding-right:.06em;font-style:italic}.hero-subtitle{font-family:var(--serif);letter-spacing:.015em;color:#96607a;margin:1.6rem 0 0;font-size:clamp(1.15rem,2.6vw,1.55rem);font-style:italic}.hero-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.1rem;margin-top:clamp(2.2rem,5vh,3.2rem);display:flex}.btn--yes{isolation:isolate;color:#fff8fb;background:linear-gradient(135deg,#f795ba 0%,#e96395 48%,#cf4577 100%);min-width:168px;overflow:hidden;box-shadow:0 18px 34px -14px #c94f7ccc,0 8px 18px -10px #c94f7c80,inset 0 1px #ffffff8c}.btn--yes:before{content:"";z-index:-1;background:linear-gradient(115deg,#0000 20%,#ffffff73 48%,#0000 72%);transition:transform .7s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0;transform:translate(-130%)}.btn--yes:hover{transform:translateY(-3px)scale(1.03);box-shadow:0 26px 44px -16px #c94f7cd9,0 12px 22px -12px #c94f7c8c,inset 0 1px #fff9}.btn--yes:hover:before{transform:translate(130%)}.btn--yes:active{transform:translateY(0)scale(.99)}.btn__heart{font-size:1.05rem;line-height:1;animation:1.9s ease-in-out infinite heartbeat}.no-button-slot{z-index:30;display:inline-flex;position:relative}.btn--no{color:#a53c63;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);will-change:transform;touch-action:manipulation;background:#ffffff9e;border-color:#c94f7c61;min-width:148px;transition:transform .55s cubic-bezier(.22,1,.36,1),box-shadow .3s,color .3s;box-shadow:0 12px 26px -18px #7d2f4da6,inset 0 1px #ffffffd9}.btn--no-moved{color:#8f3054;box-shadow:0 24px 40px -20px #7d2f4db3,inset 0 1px #ffffffe6}.hero-note{letter-spacing:.18em;text-transform:uppercase;color:#bb8ba1;margin:2rem 0 0;font-size:.68rem;font-weight:600}.hero-note span{color:#e38cae;margin-right:.35rem}.page-signature{font-family:var(--script);color:#a53c638c;margin:0;font-size:clamp(1.2rem,2.4vw,1.6rem);position:absolute;bottom:clamp(1.4rem,4vh,2.6rem);right:clamp(1.8rem,4vw,3.4rem);transform:rotate(-5deg)}.envelope-page__content{flex-direction:column;align-items:center;display:flex}.envelope-page__content .eyebrow,.envelope-page__content .script-title,.envelope-caption{transition:opacity .45s,transform .45s}.envelope-page__content.is-opening .eyebrow,.envelope-page__content.is-opening .script-title,.envelope-page__content.is-opening .envelope-caption{opacity:0;transform:translateY(-12px)}.envelope-caption{font-family:var(--serif);color:#9c6480;margin:.9rem 0 0;font-size:clamp(1rem,2.2vw,1.2rem);font-style:italic}.envelope-float{aspect-ratio:1.52;perspective:1100px;filter:drop-shadow(0 30px 38px #a94a703d);width:clamp(262px,74vw,400px);margin-top:clamp(2.4rem,6vh,3.6rem);animation:5.5s ease-in-out infinite envelope-bob;position:relative}.envelope-float.is-open{animation-play-state:paused}.envelope-glow{z-index:-1;filter:blur(18px);pointer-events:none;background:radial-gradient(circle at 50% 46%,#fffffff2,#ffc2da80 42%,#0000 70%);border-radius:50%;position:absolute;inset:-18%}.envelope{cursor:pointer;-webkit-tap-highlight-color:transparent;width:100%;height:100%;transform-style:preserve-3d;background:0 0;border:0;padding:0;transition:transform .35s;display:block;position:relative}.envelope:hover{transform:translateY(-4px)scale(1.012)}.envelope:focus-visible{outline-offset:10px;border-radius:14px;outline:2px solid #c94f7ccc}.envelope__back{z-index:0;background:linear-gradient(160deg,#ffd6e6 0%,#f7a9c8 100%);border-radius:14px;position:absolute;inset:0;box-shadow:inset 0 2px 10px #ffffff80}.envelope__note{z-index:1;background:radial-gradient(120% 80% at 20% 0,#fff,#fff0 60%),linear-gradient(#fffdfa,#fff2f6);border:1px solid #c94f7c1f;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;transition:transform .9s cubic-bezier(.22,1,.36,1) .22s,box-shadow .9s,z-index 0s .35s;display:flex;position:absolute;inset:10% 7% 9%;overflow:hidden;box-shadow:0 10px 24px #7d2f4d1f}.envelope__note:before{content:"";border:1px solid #c94f7c24;border-radius:5px;position:absolute;inset:8px}.envelope__note-script{font-family:var(--script);color:#b04772;font-size:clamp(1.9rem,5vw,2.4rem);line-height:1}.envelope__note-heart{color:#e96b9b;font-size:1rem}.envelope__note-line{background:#c94f7c38;width:58%;height:1px}.envelope__note-line--short{width:38%}.envelope__pocket{z-index:2;clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);background:linear-gradient(135deg,#ffffff57 0 49.6%,#0000 50%),linear-gradient(225deg,#ffffff3d 0 49.6%,#0000 50%),linear-gradient(#ffc9dd 0%,#f7a5c4 55%,#ef93b6 100%);border-radius:14px;position:absolute;inset:0;box-shadow:inset 0 -2px 6px #7d2f4d14}.envelope__flap{z-index:4;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;pointer-events:none;background:linear-gradient(#ffdcea 0%,#f9b4ce 70%,#f5a3c3 100%);border-radius:14px 14px 0 0;height:56%;transition:transform .85s cubic-bezier(.55,0,.25,1),opacity .28s .5s;position:absolute;top:0;left:0;right:0}.envelope__seal{z-index:7;aspect-ratio:1;color:#fff4f9f2;background:radial-gradient(circle at 35% 30%,#f79bc0,#d94f83 55%,#b03561 100%);border-radius:50%;place-items:center;width:clamp(52px,15%,64px);font-size:clamp(1.1rem,3.4vw,1.4rem);transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .35s;display:grid;position:absolute;top:56%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 20px #932a5259,inset 0 2px 4px #ffffff73,inset 0 -3px 6px #781c3e4d}.envelope__seal:before{content:"";border:1px dashed #ffe1ee8c;border-radius:50%;position:absolute;inset:7px}.envelope.is-open .envelope__note{z-index:6;transform:translateY(-70%)scale(1.02);box-shadow:0 18px 38px #7d2f4d29}.envelope.is-open .envelope__flap{opacity:0;transform:rotateX(178deg)}.envelope.is-open .envelope__seal{opacity:0;transform:translate(-50%,-50%)scale(.4)rotate(35deg)}.envelope-hint{letter-spacing:.24em;text-transform:uppercase;color:#b98ba0;align-items:center;gap:.9rem;margin:clamp(2rem,5vh,2.8rem) 0 0;font-size:.68rem;font-weight:600;animation:3.2s ease-in-out infinite hint-pulse;display:flex}.envelope-hint__sparkle{color:#dc83a7;font-size:.65rem}.letter-page>.eyebrow{margin-bottom:0}.letter{text-align:left;background:radial-gradient(130% 90% at 12% 0,#fff 0%,#fff0 55%),radial-gradient(120% 100% at 100% 100%,#ffd7e78c 0%,#ffd7e700 60%),linear-gradient(#fffdfb 0%,#fff7f9 100%);border:1px solid #c94f7c29;border-radius:18px;width:min(92vw,660px);padding:clamp(2.8rem,6vw,4rem) clamp(1.6rem,5vw,3.4rem) clamp(2.2rem,4vw,2.8rem);animation:1s cubic-bezier(.22,1,.36,1) both letter-in;position:relative;box-shadow:0 40px 80px -34px #7d2f4d61,inset 0 2px #fffc,0 0 0 8px #ffffff61}.letter:before{content:"";pointer-events:none;border:1px solid #c94f7c24;border-radius:12px;position:absolute;inset:12px}.letter__seal{z-index:1;color:#fff4f9f2;background:radial-gradient(circle at 35% 30%,#f79bc0,#d94f83 55%,#b03561 100%);border:3px solid #fff6fa;border-radius:50%;place-items:center;width:58px;height:58px;font-size:1.1rem;display:grid;position:absolute;top:-27px;left:50%;transform:translate(-50%);box-shadow:0 12px 22px #932a524d,inset 0 2px 4px #ffffff73}.letter__ornament{color:#d180a1;align-items:center;gap:.7rem;width:min(220px,60%);margin:0 auto 1.8rem;display:flex}.letter__ornament>span:first-child,.letter__ornament>span:last-child{background:linear-gradient(90deg,#0000,#c94f7c59);flex:1;height:1px}.letter__ornament>span:last-child{background:linear-gradient(270deg,#0000,#c94f7c59)}.letter__ornament-star{color:#d97aa1;font-size:.7rem}.letter__greeting{font-family:var(--script);color:#a53c63;margin:0 0 1.2rem;font-size:clamp(2.1rem,5vw,2.7rem);line-height:1.15}.letter__body{flex-direction:column;gap:1.05rem;display:flex}.letter__body p{font-family:var(--serif);color:#6d3a50;margin:0;font-size:clamp(1.06rem,2.2vw,1.22rem);line-height:1.8}.letter__body p:first-child:first-letter{float:left;font-family:var(--serif);color:#c94f7c;padding:.12em .12em 0 0;font-size:2.9em;line-height:.8}.letter__signoff{text-align:right;margin-top:2rem}.letter__signoff p{font-family:var(--serif);color:#96607a;margin:0;font-style:italic}.letter__signoff .letter__signature{font-family:var(--script);color:#b04772;margin-top:.35rem;font-size:clamp(1.8rem,4vw,2.3rem);font-style:normal;line-height:1.2}.letter__footer{text-align:center;letter-spacing:.7em;color:#e96b9bb3;margin:1.7rem 0 0;font-size:.75rem}.btn--soft{letter-spacing:.2em;color:#a53c63;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff8c;border-color:#c94f7c4d;padding:.85rem 1.9rem;font-size:.7rem;box-shadow:0 12px 26px -18px #7d2f4d8c}.btn--soft:hover{background:#fffc;transform:translateY(-2px)}@keyframes page-in{0%{opacity:0;transform:translateY(18px)scale(.985)}to{opacity:1;transform:none}}@keyframes letter-in{0%{opacity:0;transform:translateY(26px)rotate(-.6deg)}to{opacity:1;transform:none}}@keyframes heartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.18)}28%{transform:scale(1)}42%{transform:scale(1.12)}56%{transform:scale(1)}}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.75)rotate(0)}50%{opacity:1;transform:scale(1.1)rotate(18deg)}}@keyframes heart-float{0%{opacity:0;transform:translateY(6vh)rotate(-14deg)scale(.8)}10%{opacity:var(--heart-opacity)}45%{transform:translate3d(var(--sway), -54vh, 0) rotate(10deg) scale(1)}85%{opacity:var(--heart-opacity)}to{transform:translate3d(calc(var(--sway) * -.5), -128vh, 0) rotate(-8deg) scale(.86);opacity:0}}@keyframes orb-drift{0%{transform:translate(0,0)scale(1)}to{transform:translate(4vw,3vh)scale(1.08)}}@keyframes lace-spin{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}@keyframes envelope-bob{0%,to{transform:translateY(0)rotate(-.6deg)}50%{transform:translateY(-14px)rotate(.6deg)}}@keyframes hint-pulse{0%,to{opacity:.55}50%{opacity:1}}@media (width<=640px){.page{padding-left:1.15rem;padding-right:1.15rem}.dream-bg__frame{border-radius:20px;inset:9px}.page-signature{display:none}.hero-note{letter-spacing:.13em}.letter-page{padding-top:4.6rem}}@media (width<=430px){.hero-actions{flex-direction:column;gap:.95rem;width:100%}.no-button-slot{align-self:center}.btn{padding:.98rem 2rem}.envelope-hint{letter-spacing:.16em;gap:.55rem;font-size:.62rem}.letter{width:94vw}}@media (height<=700px) and (width<=500px){.ask-page{justify-content:flex-start;padding-top:4.2rem;padding-bottom:3rem}.hero-title{font-size:clamp(3rem,15vw,4.4rem)}.hero-subtitle{margin-top:1.1rem}.hero-actions{margin-top:1.8rem}.hero-note{margin-top:1.4rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.floating-heart{opacity:0}}.letter-page__actions{flex-direction:column;align-items:center;gap:.8rem;width:min(100%,460px);display:flex}.btn--continue{color:#fff8fb;background:linear-gradient(135deg,#f795ba 0%,#e96395 48%,#cf4577 100%);box-shadow:0 18px 34px -14px #c94f7ccc,0 8px 18px -10px #c94f7c80,inset 0 1px #ffffff8c}.btn--continue:hover{transform:translateY(-3px)scale(1.02);box-shadow:0 24px 42px -16px #c94f7cd9,0 12px 22px -12px #c94f7c8c,inset 0 1px #fff9}.btn__note{font-size:1.05rem;line-height:1}.music-page{justify-content:flex-start;gap:clamp(1.1rem,3vh,1.6rem);padding-top:clamp(2.4rem,6vh,3.6rem);padding-bottom:clamp(2.6rem,7vh,4rem)}.music-page__eyebrow{margin-bottom:0}.music-heading{width:100%;max-width:760px;font-family:var(--serif);letter-spacing:.045em;text-transform:uppercase;text-wrap:balance;background:linear-gradient(118deg,#8d3357 5%,#cf5d8c 55%,#b3416c 96%);-webkit-text-fill-color:transparent;color:#0000;filter:drop-shadow(0 10px 24px #ad497029);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(1.55rem,7vw,3.3rem);font-weight:600;line-height:1.08}.music-player{isolation:isolate;background:linear-gradient(#fff 0%,#fffbfd 100%);border:1px solid #c94f7c1f;border-radius:clamp(22px,6.5vw,30px);width:100%;max-width:430px;padding:clamp(14px,4.2vw,22px);animation:.9s cubic-bezier(.22,1,.36,1) both letter-in;position:relative;overflow:hidden;box-shadow:0 42px 80px -44px #7d2f4d73,0 18px 38px -26px #c94f7c61,0 0 0 6px #ffffff42}.music-player__inner{z-index:1;position:relative}.music-player__hearts{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.player-heart{color:#f6a5c5;opacity:0;filter:drop-shadow(0 4px 8px #c94f7c29);line-height:1;animation:8s linear infinite player-heart;position:absolute}.album-art{aspect-ratio:1;isolation:isolate;background:linear-gradient(145deg,#ffe5ef,#f7a9c9);border-radius:clamp(16px,4.5vw,22px);width:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #fff6}.album-art__image{object-fit:cover;width:100%;height:100%;display:block}.album-art__placeholder{background:radial-gradient(circle at 28% 18%,#ffffffeb 0%,#fff0 44%),radial-gradient(circle at 82% 84%,#fff6 0%,#fff0 52%),linear-gradient(145deg,#ffe0ec 0%,#f9afcc 52%,#e284ac 100%);place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.album-art__glow{aspect-ratio:1;filter:blur(6px);background:radial-gradient(circle,#ffffffe6,#fff0 70%);border-radius:50%;width:72%;position:absolute;top:-24%;left:-18%}.album-art__vinyl{aspect-ratio:1;will-change:transform;background:repeating-radial-gradient(circle,#ffffff0e 0 2px,#0000 2px 5px),radial-gradient(circle at 42% 36%,#6d3a50 0%,#432434 48%,#24131c 100%);border-radius:50%;place-items:center;width:58%;animation:9s linear infinite paused vinyl-spin;display:grid;position:relative;box-shadow:0 24px 44px #481c2e59,inset 0 0 0 1px #ffffff17}.album-art__vinyl.is-spinning{animation-play-state:running}.album-art__groove{border:1px solid #ffffff14;border-radius:50%;position:absolute}.album-art__groove--one{inset:12%}.album-art__groove--two{inset:24%}.album-art__cover{aspect-ratio:1;object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:50%;width:34%;display:block;box-shadow:0 6px 14px #30121f4d}.album-art__note{font-family:var(--serif);color:#ffffffc7;text-shadow:0 4px 12px #a4355f40;animation:5s ease-in-out infinite note-float;position:absolute}.album-art__note--one{font-size:clamp(1.3rem,5vw,1.8rem);top:15%;right:13%}.album-art__note--two{font-size:clamp(1.1rem,4.2vw,1.5rem);animation-delay:-2s;bottom:13%;left:11%}.album-art__chip{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#a53c63;letter-spacing:.13em;text-transform:uppercase;background:#ffffffdb;border-radius:999px;align-items:center;gap:.35rem;padding:.38rem .72rem;font-size:.56rem;font-weight:700;transition:background-color .3s,color .3s;display:inline-flex;position:absolute;bottom:12px;left:12px;box-shadow:0 6px 16px #7d2f4d2e}.album-art__chip:before{content:"♥";color:#e96b9b;font-size:.6rem}.album-art__chip.is-playing{color:#fff7fa;background:#c94f7ceb}.album-art__chip.is-playing:before{color:#ffd9e7}.song-info{text-align:left;justify-content:space-between;align-items:center;gap:.8rem;margin-top:clamp(.95rem,3.4vw,1.25rem);display:flex}.song-title{color:#6d3a50;letter-spacing:.01em;margin:0;font-size:clamp(1.05rem,4.6vw,1.32rem);font-weight:700;line-height:1.25}.song-artist{color:#a8788e;font-family:var(--serif);margin:.18rem 0 0;font-size:clamp(.92rem,3.6vw,1.02rem);font-style:italic}.song-heart{color:#e96b9b;background:#fff0f6;border:1px solid #e96b9b2e;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:1rem;display:grid}.music-progress{margin-top:clamp(.8rem,2.8vw,1.05rem)}.range{appearance:none;background:linear-gradient(90deg, #e96b9b 0 var(--range-progress,0%), #ffe1ed var(--range-progress,0%) 100%) center / 100% 5px no-repeat;cursor:pointer;border-radius:999px;width:100%;min-width:0;margin:0;display:block}.range:disabled{cursor:not-allowed;opacity:.55}.range:focus-visible{outline-offset:4px;outline:2px solid #c94f7cb3}.range--volume{background-size:100% 4px;flex:1;height:22px}.range::-webkit-slider-runnable-track{background:0 0;border-radius:999px;height:5px}.range::-webkit-slider-thumb{appearance:none;background:#fff;border:3px solid #e96b9b;border-radius:50%;width:15px;height:15px;margin-top:-5px;transition:transform .2s,box-shadow .2s;box-shadow:0 2px 6px #c94f7c59}.range:not(:disabled):active::-webkit-slider-thumb{transform:scale(1.18);box-shadow:0 2px 10px #c94f7c73}.range::-moz-range-track{background:0 0;border-radius:999px;height:5px}.range::-moz-range-thumb{background:#fff;border:3px solid #e96b9b;border-radius:50%;width:15px;height:15px;box-shadow:0 2px 6px #c94f7c59}.music-progress__times{color:#a8788e;font-variant-numeric:tabular-nums;letter-spacing:.08em;justify-content:space-between;margin-top:.15rem;font-size:.66rem;font-weight:600;display:flex}.music-controls{justify-content:space-between;align-items:center;gap:clamp(4px,1.8vw,10px);margin-top:clamp(1rem,3.6vw,1.35rem);display:flex}.control-btn{color:#b06e8b;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:clamp(38px,11.5vw,44px);height:clamp(38px,11.5vw,44px);padding:0;transition:color .25s,background-color .25s,transform .2s;display:grid;position:relative}.control-btn svg{width:clamp(18px,5.4vw,21px);height:clamp(18px,5.4vw,21px)}.control-btn:hover:not(:disabled){color:#c94f7c;background:#fff0f6;transform:translateY(-1px)}.control-btn.is-active{color:#c94f7c;background:#ffe7f1}.control-btn.is-active:after{content:"";background:currentColor;border-radius:50%;width:3px;height:3px;margin-left:-1.5px;position:absolute;bottom:3px;left:50%}.control-btn:disabled{opacity:.35;cursor:not-allowed}.control-btn:focus-visible,.play-button:focus-visible,.volume-btn:focus-visible{outline-offset:2px;outline:2px solid #c94f7c}.play-button{color:#fff9fc;cursor:pointer;-webkit-tap-highlight-color:transparent;background:linear-gradient(135deg,#f78fb8 0%,#e96395 52%,#cf4577 100%);border:0;border-radius:50%;flex:none;place-items:center;width:clamp(56px,16vw,64px);height:clamp(56px,16vw,64px);padding:0;transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s,opacity .25s;display:grid;box-shadow:0 14px 26px -10px #c94f7ccc,0 4px 10px -4px #c94f7c8c,inset 0 1px #ffffff80}.play-button svg{width:clamp(24px,7vw,28px);height:clamp(24px,7vw,28px)}.play-button:hover:not(:disabled){transform:scale(1.06);box-shadow:0 20px 34px -12px #c94f7cd9,0 8px 16px -6px #c94f7c8c,inset 0 1px #ffffff8c}.play-button:active:not(:disabled){transform:scale(.97)}.play-button:disabled{opacity:.5;cursor:not-allowed;box-shadow:0 8px 16px -10px #c94f7c99}.play-button__spinner{border:2.5px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}.volume-row{align-items:center;gap:clamp(.4rem,1.8vw,.7rem);margin-top:clamp(.75rem,2.8vw,1rem);padding:0 .15rem;display:flex}.volume-btn{color:#b06e8b;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;padding:0;transition:color .2s,background-color .2s;display:grid}.volume-btn svg{width:19px;height:19px}.volume-btn:hover:not(:disabled){color:#c94f7c;background:#fff0f6}.volume-btn:disabled{opacity:.35;cursor:not-allowed}.music-status{color:#b06e8b;text-align:center;margin:clamp(.65rem,2.4vw,.9rem) 0 0;font-size:.72rem;line-height:1.5}.music-status--error{color:#a53c63}.music-caption{color:#a8788e;font-family:var(--serif);text-align:center;margin:clamp(.8rem,2.8vw,1.05rem) 0 0;font-size:clamp(.92rem,3.6vw,1.02rem);font-style:italic}@keyframes player-heart{0%{opacity:0;transform:translateY(0)scale(.85)rotate(-8deg)}14%{opacity:var(--player-heart-opacity,.16)}70%{opacity:var(--player-heart-opacity,.16)}to{opacity:0;transform:translateY(-170px)scale(1.05)rotate(10deg)}}@keyframes note-float{0%,to{opacity:.55;transform:translateY(0)rotate(-4deg)}50%{opacity:.9;transform:translateY(-8px)rotate(4deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes vinyl-spin{0%{transform:rotate(-8deg)}to{transform:rotate(352deg)}}@media (width<=380px){.music-page{padding-top:2rem}.music-heading{letter-spacing:.03em;font-size:1.5rem}.music-player{border-radius:24px;padding:14px}.song-title{font-size:1.02rem}.music-caption{font-size:.88rem}}@media (width>=720px){.music-page{gap:clamp(1.4rem,3.4vh,2rem);padding-top:clamp(3rem,8vh,5rem)}.music-heading{font-size:clamp(2.4rem,4.4vw,3.4rem)}.music-player{max-width:460px}}@media (width>=900px){.music-page{gap:clamp(1.2rem,2.6vh,1.7rem);padding-top:clamp(2.6rem,6vh,4rem)}.music-heading{max-width:1120px;font-size:clamp(2.2rem,3.4vw,3.2rem)}.music-player{max-width:900px;padding:26px}.music-player__inner{grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);align-items:center;gap:clamp(1.6rem,3vw,2.6rem);display:grid}.music-player__cover,.music-player__details{min-width:0}.song-info{margin-top:0}.music-status{margin-top:.75rem}.music-caption{margin-top:.9rem}}.range--progress,.range--volume{height:30px}.control-btn{width:clamp(42px,12vw,46px);height:clamp(42px,12vw,46px)}.music-page__actions,.poem-actions{flex-direction:column;align-items:center;gap:.8rem;width:min(100%,460px);display:flex}.poem-page{isolation:isolate;justify-content:flex-start;gap:clamp(1.7rem,4.5vh,2.7rem);padding-top:clamp(2.8rem,7vh,4.6rem);padding-bottom:clamp(3rem,8vh,5rem)}.poem-page:before{content:"";z-index:0;aspect-ratio:1;filter:blur(20px);pointer-events:none;background:radial-gradient(circle,#fff9 0%,#ffe5ef52 44%,#0000 70%);border-radius:50%;width:min(118vw,940px);position:absolute;top:8%;left:50%;transform:translate(-50%)}.poem-petals{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.poem-petal{width:var(--petal-size);height:calc(var(--petal-size) * .68);opacity:0;filter:drop-shadow(0 3px 5px #c94f7c29);animation:poem-petal-fall var(--petal-duration) linear infinite;animation-delay:var(--petal-delay);will-change:transform, opacity;background:linear-gradient(135deg,#ffe9f1 0%,#f3a9c3 48%,#de7fa4 100%);border-radius:100% 0;position:absolute;top:-5vh}.poem-header,.poem-letter,.poem-actions{z-index:1;position:relative}.poem-header{flex-direction:column;align-items:center;width:min(100%,760px);display:flex}.poem-ornament{color:#c46d90;justify-content:center;align-items:center;gap:.8rem;margin-bottom:clamp(1.1rem,2.8vh,1.6rem);animation:.9s both poem-fade-in;display:flex}.poem-ornament__line{background:linear-gradient(90deg,#0000,#a53c6373);width:clamp(36px,9vw,76px);height:1px}.poem-ornament__line:last-child{background:linear-gradient(270deg,#0000,#a53c6373)}.poem-ornament__heart{color:#d06d92;font-size:.76rem;line-height:1;animation:2.8s ease-in-out infinite heartbeat}.poem-title{font-family:var(--serif);letter-spacing:-.025em;text-wrap:balance;background:linear-gradient(118deg,#7d2f4d 4%,#c2547f 52%,#9d3a60 96%);-webkit-text-fill-color:transparent;color:#0000;filter:drop-shadow(0 12px 28px #ad49702b);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.35rem,10vw,4.8rem);font-style:italic;font-weight:600;line-height:1.02;animation:1.15s cubic-bezier(.22,1,.36,1) both poem-title-in}.poem-subtitle{max-width:34rem;font-family:var(--serif);letter-spacing:.015em;color:#96607a;text-wrap:balance;margin:clamp(.9rem,2.4vh,1.25rem) 0 0;font-size:clamp(1.02rem,3.6vw,1.28rem);font-style:italic;line-height:1.55;animation:1s cubic-bezier(.22,1,.36,1) .2s both poem-fade-up}.poem-letter{text-align:left;opacity:0;background:radial-gradient(circle at 16% 8%,#fffffff5 0%,#fff0 44%),radial-gradient(circle at 88% 94%,#ffddcf80 0%,#ffddcf00 58%),radial-gradient(#7d2f4d0f .55px,#0000 .75px) 0 0/7px 7px,linear-gradient(#fffdf7 0%,#fdf2e6 100%);border:1px solid #a5607838;border-radius:18px;width:min(100%,680px);padding:clamp(2.4rem,7vw,3.8rem) clamp(1.35rem,6vw,3.4rem) clamp(2rem,5.5vw,3.1rem);transition:opacity .9s,transform .9s cubic-bezier(.22,1,.36,1);transform:translateY(26px)scale(.985);box-shadow:0 40px 80px -36px #7d2f4d6b,0 16px 34px -26px #c94f7c57,inset 0 1px #ffffffd9,0 0 0 8px #ffffff42}.poem-letter.is-visible{opacity:1;transform:translateY(0)scale(1)}.poem-letter:before{content:"";pointer-events:none;border:1px solid #a5607829;border-radius:12px;position:absolute;inset:11px}.poem-letter__seal{z-index:2;color:#fff6faf2;background:radial-gradient(circle at 35% 30%,#e59ab5,#b54970 58%,#7d2f4d 100%);border:3px solid #fff7f1;border-radius:50%;place-items:center;width:54px;height:54px;font-size:1rem;display:grid;position:absolute;top:-26px;left:50%;transform:translate(-50%);box-shadow:0 12px 24px #7d2f4d47,inset 0 2px 4px #ffffff59}.poem-letter__inner{z-index:1;position:relative}.poem-letter__title{font-family:var(--hand);text-align:center;color:#8d3357;margin:0 0 clamp(1.2rem,3.5vw,1.65rem);font-size:clamp(1.65rem,5.4vw,2.25rem);font-weight:700;line-height:1.25}.poem-letter__title:after{content:"";background:linear-gradient(90deg,#0000,#a53c636b,#0000);width:58px;height:1px;margin:.7rem auto 0;display:block}.poem-text{min-height:8rem;font-family:var(--hand);letter-spacing:.006em;color:#5f3446;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;margin:0;font-size:clamp(1.16rem,4.1vw,1.44rem);font-weight:400;line-height:1.9}.poem-text__typed{white-space:pre-wrap}.poem-cursor{vertical-align:-.15em;background:#8d3357;border-radius:2px;width:2px;height:1.1em;margin-left:3px;animation:1.05s steps(2,start) infinite poem-cursor-blink;display:inline-block}.poem-actions{animation:.8s cubic-bezier(.22,1,.36,1) .45s both poem-fade-up}@keyframes poem-petal-fall{0%{transform:translate3d(0, 0, 0) rotate(var(--petal-rotate));opacity:0}12%{opacity:var(--petal-opacity)}72%{opacity:var(--petal-opacity)}to{transform:translate3d(var(--petal-drift), 112vh, 0) rotate(calc(var(--petal-rotate) + 200deg));opacity:0}}@keyframes poem-title-in{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes poem-fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes poem-fade-in{0%{opacity:0}to{opacity:1}}@keyframes poem-cursor-blink{0%,45%{opacity:1}50%,to{opacity:0}}@media (width>=720px){.poem-page{gap:clamp(2rem,5vh,3rem);padding-top:clamp(3.2rem,8vh,5rem)}.poem-letter{padding-top:clamp(3.2rem,5.5vw,4.2rem);padding-bottom:clamp(2.8rem,4.5vw,3.6rem)}.poem-text{line-height:2}}@media (prefers-reduced-motion:reduce){.poem-petal{display:none}}.memory-entry{cursor:pointer;font-family:var(--serif);letter-spacing:.02em;color:#a53c63;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:.65rem;margin-top:.35rem;padding:.55rem .2rem;font-size:clamp(1rem,3.4vw,1.18rem);font-style:italic;transition:color .3s,transform .3s;display:inline-flex}.memory-entry__line{background:linear-gradient(90deg,#0000,#a53c6357);width:clamp(18px,5vw,38px);height:1px}.memory-entry__line:last-child{transform:scaleX(-1)}.memory-entry__heart{color:#cd6d92;font-size:1rem;line-height:1}.memory-entry:hover{color:#7d2f4d;transform:translateY(-1px)}.memory-entry:focus-visible{outline-offset:4px;outline:2px solid #c94f7c}.memory-page{isolation:isolate;justify-content:center;gap:clamp(1.1rem,2.8vh,1.8rem);padding-top:clamp(2.2rem,4.5vh,3.2rem);padding-bottom:clamp(2.2rem,4.5vh,3.2rem)}.memory-page:before{content:"";z-index:0;aspect-ratio:1;filter:blur(20px);pointer-events:none;background:radial-gradient(circle,#ffffff94 0%,#ffe5ef42 46%,#0000 70%);border-radius:50%;width:min(120vw,940px);position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}.memory-scene,.memory-back{z-index:1;position:relative}.memory-scene{flex-direction:column;align-items:center;gap:clamp(1rem,2.8vh,1.7rem);width:100%;display:flex}.memory-header{flex-direction:column;align-items:center;width:100%;max-width:820px;display:flex}.memory-eyebrow{margin-bottom:.9rem;animation:.9s .1s both memory-fade-in}.memory-title{font-family:var(--serif);letter-spacing:-.025em;text-wrap:balance;background:linear-gradient(118deg,#7d2f4d 4%,#c2547f 52%,#9d3a60 96%);-webkit-text-fill-color:transparent;color:#0000;filter:drop-shadow(0 12px 28px #ad49702b);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.3rem,9vw,4.5rem);font-style:italic;font-weight:600;line-height:1.05;animation:1.15s cubic-bezier(.22,1,.36,1) both memory-title-in}.memory-subtitle{font-family:var(--serif);letter-spacing:.04em;color:#96607a;text-wrap:balance;margin:clamp(.8rem,2vh,1.1rem) 0 0;font-size:clamp(.98rem,3.2vw,1.14rem);font-style:italic;line-height:1.55;animation:.9s cubic-bezier(.22,1,.36,1) .2s both memory-fade-up}.memory-subtitle__heart{color:#cd6d92;padding-left:.08rem}.memory-photo{--ribbon-drop:clamp(2.7rem, 8vw, 3.8rem);width:100%;padding-top:var(--ribbon-drop);flex-direction:column;align-items:center;margin:0;display:flex;position:relative}.memory-ribbon{z-index:2;width:16px;height:calc(var(--ribbon-drop) + 16px);transform-origin:top;pointer-events:none;opacity:0;animation:1.25s cubic-bezier(.22,1,.36,1) .3s both memory-ribbon-in;position:absolute;top:0;left:50%;transform:translate(-50%)}.memory-ribbon__pin{z-index:3;color:#fff7fb;background:radial-gradient(circle at 35% 30%,#f6d0dd,#cc7392 55%,#a3476a 100%);border:2px solid #fff8fadb;border-radius:50%;place-items:center;width:28px;height:28px;font-size:.68rem;display:grid;position:absolute;top:-14px;left:50%;transform:translate(-50%)rotate(-7deg);box-shadow:0 9px 16px -8px #7d2f4d73,inset 0 1px #ffffff59}.memory-ribbon__band{transform-origin:top;clip-path:polygon(0 0,100% 0,100% 100%,50% 90%,0 100%);background:repeating-linear-gradient(90deg,#fff3 0 1px,#fff0 1px 3px,#7d2f4d0f 3px 4px),linear-gradient(90deg,#c8879e 0%,#edbccd 26%,#d99ab1 52%,#c47c96 76%,#b76a86 100%);border-radius:1px;animation:6s ease-in-out 1.9s infinite memory-ribbon-sway;display:block;position:absolute;inset:0;box-shadow:0 10px 20px -12px #7d2f4d66}.memory-ribbon__band:after{content:"";pointer-events:none;background:linear-gradient(90deg,#7d2f4d24 0%,#ffffff0a 24%,#fff3 50%,#ffffff0a 76%,#7d2f4d29 100%);position:absolute;inset:0}.memory-frame{z-index:1;opacity:0;background:radial-gradient(circle at 18% 10%,#fffffff2 0%,#fff0 46%),radial-gradient(circle at 88% 92%,#ffe2d57a 0%,#ffe2d500 58%),radial-gradient(#7d2f4d0e .55px,#0000 .75px) 0 0/7px 7px,linear-gradient(145deg,#fffdf8 0%,#f7eadb 100%);border:1px solid #a5607842;border-radius:5px 12px 6px 14px;width:min(70vw,286px);padding:clamp(9px,2.4vw,14px);animation:1s cubic-bezier(.22,1,.36,1) .45s both memory-photo-in;position:relative;transform:translateY(24px)rotate(-1.3deg)scale(.985);box-shadow:0 38px 70px -34px #7d2f4d7a,0 16px 32px -24px #c94f7c61,inset 0 1px #ffffffe6,0 0 0 6px #ffffff3d}.memory-frame:before{content:"";pointer-events:none;border:1px solid #a5607829;border-radius:3px 9px 4px 10px;position:absolute;inset:5px}.memory-frame__image{border-radius:2px;width:100%;height:auto;display:block;box-shadow:0 5px 16px #7d2f4d2e}.memory-frame__heart{z-index:2;color:#c45b80;background:radial-gradient(circle at 35% 30%,#fffaf5,#f6e7dc);border:1px solid #c94f7c38;border-radius:50%;place-items:center;width:28px;height:28px;font-size:.76rem;display:grid;position:absolute;top:-11px;right:14px;transform:rotate(7deg);box-shadow:0 8px 16px -10px #7d2f4d66}.memory-caption{font-family:var(--hand);text-align:center;color:#96607a;margin:clamp(1rem,2.6vh,1.4rem) 0 0;font-size:clamp(1.25rem,4.4vw,1.6rem);line-height:1.4;animation:.9s cubic-bezier(.22,1,.36,1) .8s both memory-fade-up}.memory-back{animation:.8s cubic-bezier(.22,1,.36,1) .85s both memory-fade-up}@keyframes memory-title-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes memory-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes memory-fade-in{0%{opacity:0}to{opacity:1}}@keyframes memory-ribbon-in{0%{opacity:0;transform:translate(-50%)scaleY(.06)}55%{opacity:1}to{opacity:1;transform:translate(-50%)scaleY(1)}}@keyframes memory-ribbon-sway{0%,to{transform:rotate(-.35deg)}50%{transform:rotate(.45deg)}}@keyframes memory-photo-in{0%{opacity:0;transform:translateY(24px)rotate(-2deg)scale(.985)}to{opacity:1;transform:translateY(0)rotate(-1.3deg)scale(1)}}@media (width>=720px){.memory-page{gap:clamp(1.4rem,3.4vh,2.2rem)}.memory-frame{width:clamp(280px,28vw,310px)}.memory-caption{margin-top:1.4rem}}@media (width<=430px){.memory-photo{--ribbon-drop:2.5rem}.memory-frame{width:min(70vw,282px)}}.letter-stack-page{justify-content:center;padding-top:clamp(1.2rem,4vh,2.4rem);padding-bottom:clamp(1.2rem,4vh,2.4rem)}.letter-stack{flex-direction:column;align-items:center;width:100%;animation:.85s cubic-bezier(.22,1,.36,1) both letter-stack-reveal;display:flex}.letter-stack__header{text-align:center;width:min(100%,430px)}.letter-stack__header .eyebrow{margin-bottom:.65rem}.letter-stack__instruction{font-family:var(--serif);color:#8f506b;text-wrap:balance;margin:0;font-size:clamp(1.05rem,3.2vw,1.3rem);font-style:italic;line-height:1.45}.letter-stack__instruction span{color:#d66f96}.letter-stack__scene{aspect-ratio:.72;perspective:1100px;width:min(80vw,350px);margin-top:clamp(1.25rem,3.6vh,2rem);position:relative}.letter-stack__glow{z-index:0;filter:blur(16px);pointer-events:none;background:radial-gradient(circle,#ffffffe6 0%,#ffd2e361 42%,#ffd2e300 72%);border-radius:50%;position:absolute;inset:-18% -12%}.letter-stack__shadow{z-index:0;filter:blur(16px);pointer-events:none;background:#883a583d;border-radius:50%;height:12%;position:absolute;bottom:-5%;left:4%;right:4%}.letter-sheet{z-index:1;text-align:left;color:#6d3a50;transform-origin:50% 92%;-webkit-user-select:none;user-select:none;will-change:transform;background:radial-gradient(120% 78% at 10% 0,#fffefb 0%,#fffefb00 58%),radial-gradient(90% 70% at 100% 100%,#facfdd9e 0%,#facfdd00 62%),linear-gradient(#fffdf7 0%,#fff8ef 100%);border:1px solid #bd7e9347;border-radius:6px 10px 7px 12px;flex-direction:column;justify-content:space-between;gap:.7rem;padding:clamp(1.15rem,4.8vw,1.7rem);transition:transform .58s cubic-bezier(.22,1,.36,1),opacity .36s,box-shadow .4s;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 22px 38px -26px #6f2e4685,0 4px 10px -6px #6f2e4638,inset 0 1px #ffffffe6}.letter-sheet:before{content:"";pointer-events:none;border:1px solid #c94f7c1f;border-radius:4px 7px 5px 9px;position:absolute;inset:9px}.letter-sheet:after{content:"";opacity:.12;mix-blend-mode:multiply;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");position:absolute;inset:0}.letter-sheet>*{z-index:1;position:relative}.letter-sheet:not(.is-top){transform:translate3d(var(--sheet-x), var(--sheet-y), 0) rotate(var(--sheet-rotate)) scale(var(--sheet-scale));pointer-events:none}.letter-sheet.is-top{cursor:grab;touch-action:none}.letter-sheet.is-top:not(.is-dragging):not(.is-leaving){transform:rotate(-.35deg)}.letter-sheet.is-top:active{cursor:grabbing}.letter-sheet.is-top:focus-visible{outline-offset:6px;outline:2px solid #c94f7ccc}.letter-sheet.is-dragging{box-shadow:0 38px 54px -28px #6f2e468a,0 8px 18px -10px #6f2e463d,inset 0 1px #ffffffe6}.letter-sheet.is-leaving{opacity:0;transition:transform .6s cubic-bezier(.55,0,.3,1),opacity .28s .25s;transform:translate(-12%,-138%)rotate(-7deg)!important}.letter-sheet.is-first-page{background:radial-gradient(120% 80% at 80% 0,#fffefa 0%,#fffefa00 56%),radial-gradient(90% 70% at 0 100%,#facadaa6 0%,#facada00 62%),linear-gradient(#fffcf5 0%,#fff6ec 100%)}.letter-sheet__pull-tab{z-index:4;font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:#fff9fb;pointer-events:none;background:linear-gradient(#f8b8ce 0%,#eb97b6 100%);border-radius:0 0 9px 9px;padding:.34rem .9rem .28rem;font-size:.5rem;font-weight:700;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 4px 10px #9a3b5e33}.letter-sheet__top{justify-content:space-between;align-items:center;gap:.7rem;padding-top:.2rem;display:flex}.letter-sheet__label{font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;color:#b57d94;font-size:.52rem;font-weight:700}.letter-sheet__number{font-family:var(--serif);color:#b98da0;font-size:.9rem;font-style:italic;line-height:1}.letter-sheet__body{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:clamp(.55rem,2.1vh,.85rem);min-height:0;display:flex}.letter-sheet__signoff,.letter-sheet__greeting{font-family:var(--script);color:#a53c63;text-wrap:balance;margin:0;font-weight:400;line-height:1.1}.letter-sheet__signoff{max-width:12ch;font-size:clamp(1.55rem,6.2vw,2rem)}.letter-sheet__greeting{font-size:clamp(2.15rem,9vw,2.7rem)}.letter-sheet__quote{max-width:15ch;font-family:var(--letter-hand);color:#704057;text-wrap:balance;margin:0;font-size:clamp(1.3rem,5.4vw,1.65rem);font-weight:500;line-height:1.3}.letter-sheet__art{color:#b85f7e;opacity:.86;width:4.4rem;display:block}.letter-sheet__art svg{width:100%;height:auto;display:block}.letter-sheet__art--bow{width:4.1rem;transform:rotate(-3deg)}.letter-sheet__art--heart{color:#d47e9b;width:2.15rem}.letter-sheet__art--rose{width:4.7rem;transform:rotate(4deg)}.letter-sheet__art--flower{width:3.8rem;transform:rotate(-5deg)}.letter-sheet__art--teddy{width:3.7rem;transform:rotate(3deg)}.letter-sheet__sparkle{color:#de99b2;width:1.35rem;animation:4s ease-in-out infinite twinkle;display:block}.letter-sheet__sparkle svg{width:100%;height:auto;display:block}.letter-sheet__tiny{font-family:var(--serif);letter-spacing:.03em;color:#b47c93;font-size:.78rem;font-style:italic}.letter-sheet__bottom{color:#d089a2;align-items:center;gap:.55rem;display:flex}.letter-sheet__rule{background:linear-gradient(90deg,#0000,#c94f7c3d);flex:1;height:1px}.letter-sheet__rule:last-child{background:linear-gradient(270deg,#0000,#c94f7c3d)}.letter-sheet__small-heart{font-size:.55rem;line-height:1}.letter-stack__hint{font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;color:#b18398;margin:clamp(1.15rem,3.2vh,1.7rem) 0 0;font-size:.61rem;font-weight:600;animation:3.2s ease-in-out infinite hint-pulse}.letter-stack.is-unfolding .letter-sheet.is-first-page{animation:1.45s ease-in-out infinite first-page-glow}.letter-stack.is-unfolding .letter-stack__hint{color:#a53c63}.letter-page{justify-content:flex-start;gap:clamp(1.8rem,4.5vh,2.6rem);padding-top:clamp(1.6rem,4.2vh,3rem);padding-bottom:clamp(2.4rem,6vh,4rem)}.letter-paper{isolation:isolate;text-align:left;background:radial-gradient(120% 70% at 8% 0,#fffefb 0%,#fffefb00 58%),radial-gradient(70% 50% at 100% 100%,#faccdbad 0%,#faccdb00 64%),linear-gradient(#fffdf7 0%,#fff9f1 48%,#fff6ed 100%);border:1px solid #bd7e9347;border-radius:7px 10px 8px 12px;width:min(100%,780px);padding:clamp(2rem,5.2vw,4.4rem) clamp(1.3rem,5vw,4.6rem) clamp(2rem,4.6vw,3.6rem);animation:1.05s cubic-bezier(.22,1,.36,1) both letter-paper-in;position:relative;overflow:hidden;box-shadow:0 44px 90px -46px #692a427a,0 12px 30px -22px #692a4247,0 0 0 8px #ffffff38,inset 0 1px #fffffff2}.letter-paper:before{content:"";pointer-events:none;border:1px solid #c94f7c1f;border-radius:5px 8px 6px 10px;position:absolute;inset:11px}.letter-paper:after{content:"";z-index:0;opacity:.16;mix-blend-mode:multiply;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='170' height='170'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='170' height='170' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");position:absolute;inset:0}.letter-paper>*{z-index:1;position:relative}.letter-paper__header{margin-bottom:clamp(1.5rem,4vw,2.2rem);position:relative}.letter-paper__topline{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:clamp(.9rem,2.8vw,1.5rem);display:flex}.letter-paper__tape{opacity:.82;background:repeating-linear-gradient(90deg,#ffffff3d 0 2px,#0000 2px 7px),linear-gradient(#f8c2d3 0%,#f0a8bf 100%);border-radius:1px;width:clamp(70px,18vw,94px);height:clamp(18px,4.4vw,23px);display:block;position:relative;transform:rotate(-3deg);box-shadow:0 5px 12px #a2446424}.letter-paper__tape:after{content:"";background:linear-gradient(90deg,#ffffff61,#0000 42%,#fff3);position:absolute;inset:0}.letter-paper__top-rose{color:#b75e7d;opacity:.84;width:clamp(2.6rem,8vw,3.4rem);display:block;transform:rotate(7deg)}.letter-paper__top-rose svg{width:100%;height:auto;display:block}.letter-paper__greeting-row{flex-wrap:wrap;align-items:center;gap:.65rem .9rem;display:flex}.letter-paper__greeting-row .letter__greeting{margin:0}.letter-paper__greeting-bow{color:#c67490;opacity:.82;width:clamp(2.3rem,7vw,2.9rem);margin-top:.35rem;display:block;transform:rotate(-8deg)}.letter-paper__greeting-bow svg{width:100%;height:auto;display:block}.letter-paper__body{flex-direction:column;gap:clamp(1.1rem,3vw,1.5rem);display:flex}.letter-paper__body p{font-family:var(--letter-hand);letter-spacing:.006em;color:#5f3448;text-wrap:pretty;overflow-wrap:break-word;margin:0;font-size:clamp(1.28rem,.95rem + 1.15vw,1.82rem);font-weight:500;line-height:1.64}.letter-paper__body p:first-letter{color:#b64f74}.letter-divider{color:#c47f99;align-items:center;gap:clamp(.55rem,2vw,.9rem);width:min(78%,410px);margin:clamp(.4rem,1.8vw,.8rem) auto;display:flex}.letter-divider__line{background:linear-gradient(90deg,#0000,#c94f7c42);flex:1;height:1px}.letter-divider__line:last-child{background:linear-gradient(270deg,#0000,#c94f7c42)}.letter-divider__art{color:#bf718d;width:clamp(1.9rem,5vw,2.35rem);display:block}.letter-divider__art svg,.letter-divider__art .letter-divider__icon{width:100%;height:auto;display:block}.letter-divider__icon--teddy,.letter-divider--teddy .letter-divider__art{width:clamp(2.7rem,7vw,3.25rem)}.letter-divider--bow .letter-divider__art{transform:rotate(-5deg)}.letter-divider--sparkle .letter-divider__art{animation:4.2s ease-in-out infinite twinkle}.letter-paper__ending{text-align:right;border-top:1px dashed #c94f7c3d;margin-top:clamp(2.3rem,6vw,3.5rem);padding-top:clamp(1.5rem,4vw,2rem);position:relative}.letter-paper__ending-flourish{color:#c37791;justify-content:flex-end;align-items:flex-end;gap:.35rem;margin-bottom:.55rem;display:flex}.letter-paper__ending-flourish svg:first-child{width:clamp(2rem,5vw,2.55rem);transform:rotate(-9deg)}.letter-paper__ending-flourish svg:last-child{width:clamp(1.4rem,4vw,1.7rem);transform:rotate(4deg)}.letter-paper__signoff{font-family:var(--letter-hand);letter-spacing:.005em;color:#a53c63;text-wrap:balance;transform-origin:100%;margin:0;font-size:clamp(2.15rem,7.2vw,3.2rem);font-weight:600;line-height:1.08;transform:rotate(-1.4deg)}.letter-paper__ending-bear{color:#b86280;opacity:.9;width:clamp(3.5rem,10vw,4.5rem);margin:.85rem 0 0 auto;display:block;transform:rotate(4deg)}.letter-paper__ending-bear svg{width:100%;height:auto;display:block}.letter-page__actions{margin-top:.2rem}@keyframes letter-stack-reveal{0%{opacity:0;transform:translateY(34px)scale(.965)}to{opacity:1;transform:none}}@keyframes letter-paper-in{0%{opacity:0;transform:translateY(30px)rotate(-.4deg)scale(.99)}to{opacity:1;transform:none}}@keyframes first-page-glow{0%,to{box-shadow:0 22px 38px -26px #6f2e4685,0 0 #e96b9b00}50%{box-shadow:0 28px 48px -24px #6f2e4694,0 0 0 10px #e96b9b1a}}@media (width<=640px){.letter-stack-page{padding-left:.95rem;padding-right:.95rem}.letter-stack__header{width:min(100%,360px)}.letter-stack__scene{width:min(82vw,312px)}.letter-page{padding-top:1.15rem;padding-left:.85rem;padding-right:.85rem}.letter-paper{border-radius:6px 9px 7px 10px;width:100%;padding:clamp(1.85rem,7vw,2.4rem) clamp(1.15rem,5.6vw,1.7rem) clamp(2rem,7vw,2.5rem)}.letter-paper__body p{font-size:clamp(1.25rem,5.2vw,1.45rem);line-height:1.6}.letter-paper__greeting-row{gap:.4rem .7rem}.letter-paper__top-rose{width:2.35rem}.letter-paper__greeting-bow{width:2.2rem}.letter-paper__ending-flourish{gap:.2rem}.letter-paper__signoff{font-size:clamp(2rem,8.8vw,2.8rem)}.letter-divider{width:72%}}@media (width<=360px){.letter-sheet{padding:1rem}.letter-paper{padding-left:1rem;padding-right:1rem}.letter-paper__body p{font-size:1.18rem;line-height:1.58}.letter-paper__signoff{font-size:1.9rem}}@media (height<=660px) and (width<=760px){.letter-stack-page{justify-content:flex-start;padding-top:.8rem;padding-bottom:1.2rem}.letter-stack__header{margin-top:0}.letter-stack__instruction{font-size:.98rem}.letter-stack__scene{width:min(55vh,270px);margin-top:.7rem}.letter-stack__hint{margin-top:.8rem}}@media (width>=900px){.letter-page{padding-top:clamp(2.2rem,5vh,3.4rem)}.letter-paper{width:min(100%,760px);transform:rotate(-.16deg)}}
