/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"Inter", "Instrument Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.resize{resize:both}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--ink:#07070a;--rose:#ff4f8b;--gold:#f4bd4f;--cream:#fff7df;--paper:#fffaf0;--paper-edge:#ead5ad;--wine:#5e1833;--shadow:#46230847}*{box-sizing:border-box}html,body{height:100%}body{color:var(--wine);background:var(--ink);font-family:var(--font-sans);margin:0;overflow:hidden}button{font:inherit}.surprise{background:radial-gradient(circle at 50% 52%,#ff4c8414,#0000 24rem),#020204;min-height:100dvh;transition:background 1.6s;position:relative;overflow:hidden}.surprise.is-daylight,.surprise.is-letter-open{background:radial-gradient(circle at 50% 28%,#fffff6f2,#ffe69194 25rem,#0000 46rem),linear-gradient(135deg,#fff9dc 0%,#ffd66c 42%,#f3a34f 100%)}.surprise.is-final{background:#020204}.scene{pointer-events:none;opacity:0;place-items:center;transition:opacity .9s,transform 1.1s;display:grid;position:absolute;inset:0}.scene.is-active{pointer-events:auto;opacity:1}.scene--intro{z-index:3}.surprise.is-daylight .scene--intro{opacity:0;pointer-events:none;transform:scale(1.08)}.surprise.is-dispersing .heart-name{animation:.88s forwards nameDisperse}.heart-trigger{z-index:2;aspect-ratio:1.06;color:#fff5fb;cursor:pointer;opacity:0;background:0 0;border:0;place-items:center;width:min(70vw,25rem);padding:0;animation:1.4s .28s forwards introFade;display:grid;position:relative;transform:scale(.92)}.heart-trigger:focus-visible,.envelope:focus-visible,.close-letter:focus-visible{outline-offset:.35rem;outline:.18rem solid #ffffffc7}.particle-heart{z-index:1;filter:drop-shadow(0 0 .75rem #ff408280)drop-shadow(0 0 1.8rem #ff408238);pointer-events:none;display:block;position:absolute;inset:0}.particle-heart-canvas{width:100%;height:100%;display:block}.heart-fragment{width:var(--fragment-size);height:var(--fragment-height);clip-path:var(--fragment-shape);background:linear-gradient(125deg, #ffffff9e 0 9%, transparent 10% 50%, #fff3 51% 55%, transparent 56%), linear-gradient(42deg, var(--fragment-hot), var(--fragment-color) 52%, var(--fragment-deep));opacity:0;transform-style:preserve-3d;will-change:transform, opacity, filter;transform:translate(calc(-50% + var(--start-x)), calc(-50% + var(--start-y))) rotate(var(--fragment-rotate)) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) scale(.2);animation:gatherHeart 1.7s cubic-bezier(.16, 1, .3, 1) var(--fragment-delay) forwards, driftFragment var(--spin-speed) ease-in-out var(--spin-delay) infinite, shimmerFragment 2.4s ease-in-out var(--fragment-delay) infinite;position:absolute;top:50%;left:50%;box-shadow:0 0 .24rem #ff4f8b5c}.heart-fragment.has-glint:after{content:"";clip-path:polygon(0 0,100% 15%,72% 100%,12% 70%);filter:blur(.02rem);opacity:.62;background:#ffffffad;height:24%;position:absolute;inset:12% 18% auto 12%}.heart-fragment.is-bursting{animation:1.1s cubic-bezier(.16,.82,.2,1) forwards burstHeart}.heart-name{z-index:1;color:#fff9fd;text-align:center;text-shadow:0 0 1rem #ff508fd9,0 0 2.8rem #ff508f73;overflow-wrap:anywhere;transform-origin:50%;max-width:78%;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.4rem,11vw,6.8rem);line-height:.95;animation:1.12s ease-in-out infinite textHeartbeat;position:relative}.scene--daylight{z-index:2;transform:translateY(1.5rem)}.surprise.is-daylight .scene--daylight{transform:translateY(0)}.sun-haze{background:radial-gradient(circle at 50% 40%,#fffc,#0000 18rem),radial-gradient(circle at 22% 18%,#fff6af80,#0000 16rem),radial-gradient(circle at 78% 72%,#ffbe5e59,#0000 20rem);animation:8s ease-in-out infinite alternate sunlight;position:absolute;inset:-20%}.envelope{aspect-ratio:2.15;cursor:pointer;perspective:900px;background:0 0;border:0;width:min(82vw,28rem);padding:0;transition:opacity .5s,transform .7s,filter .7s;animation:2.6s ease-in-out infinite floatEnvelope;position:relative;transform:translateY(0)}.envelope:before{content:none;background:linear-gradient(90deg, #ffffff75, transparent 30%), repeating-linear-gradient(0deg, transparent 0 1.3rem, #8e5b2313 1.35rem), var(--paper);opacity:0;transform-origin:bottom;z-index:0;border:.08rem solid #734e2129;border-radius:.18rem;height:72%;transition:opacity .42s,transform 1.55s cubic-bezier(.16,1,.3,1);position:absolute;bottom:12%;left:10%;right:10%;transform:translateY(34%)rotateX(76deg)scaleX(.82);box-shadow:0 .8rem 2rem #6236102e}.envelope-shadow{filter:blur(.45rem);background:#713c0f2e;border-radius:50%;height:1.45rem;animation:2.6s ease-in-out infinite shadowFloat;position:absolute;bottom:-1.2rem;left:10%;right:10%}.envelope-body{box-shadow:inset 0 0 0 .08rem #ffffff73, inset 0 -1rem 2.4rem #80521f1f, 0 1.8rem 4rem var(--shadow);z-index:2;background:linear-gradient(26deg,#0000 49.65%,#66441b70 49.9%,#66441b2e 50.1%,#0000 50.45%),linear-gradient(154deg,#0000 49.65%,#66441b70 49.9%,#66441b2e 50.1%,#0000 50.45%),linear-gradient(334deg,#0000 49.5%,#66441b47 49.85%,#0000 50.25%),linear-gradient(206deg,#0000 49.5%,#66441b47 49.85%,#0000 50.25%),radial-gradient(circle at 24% 18%,#996c3614,#0000 8rem),radial-gradient(circle at 76% 72%,#78512317,#0000 9rem),repeating-linear-gradient(118deg,#7b542409 0 .08rem,#0000 .08rem .42rem),linear-gradient(#f7ebc9 0%,#ecd6a8 48%,#d9b983 100%);border:.12rem solid #67482242;border-radius:.18rem;position:absolute;inset:0;overflow:hidden}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 62%);transform-origin:top;z-index:3;background:linear-gradient(#fff8ddc7,#d8ae6e29),repeating-linear-gradient(118deg,#7b542409 0 .08rem,#0000 .08rem .42rem);border-bottom:.08rem solid #704b1f38;transition:transform .85s cubic-bezier(.16,1,.3,1),filter .7s;position:absolute;inset:0}.envelope-seal{aspect-ratio:1;color:#4e050c75;text-shadow:0 .05rem .04rem #ff8a802e,0 -.05rem .05rem #2a000780;z-index:4;background:radial-gradient(circle at 32% 26%,#ffa4a494,#0000 18%),radial-gradient(circle at 52% 54%,#b01524 0 45%,#751018 78%);border-radius:48% 53% 46% 55%/52% 46% 56% 48%;place-items:center;width:4.1rem;font-family:Georgia,Times New Roman,serif;font-size:2rem;font-weight:700;line-height:1;transition:opacity .42s,transform .65s,filter .65s;display:grid;position:absolute;top:51%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 .22rem #5b0a1252,inset .22rem .28rem .5rem #ffa59638,inset -.34rem -.42rem .6rem #35000a6b,0 .25rem .25rem #5629174d,0 0 1.6rem #920c1b57}.envelope-seal:before,.envelope-seal:after{content:"";border:.08rem solid #ffada038;border-radius:52% 46% 55% 48%/45% 56% 46% 55%;position:absolute;inset:-.18rem}.envelope-seal:after{border-color:#5304103d;inset:.42rem}.surprise.is-envelope-opening .envelope{animation:none;transform:translateY(-.35rem)rotate(0)}.surprise.is-envelope-opening .envelope:before{opacity:0}.surprise.is-envelope-opening .envelope-flap{filter:brightness(1.04);transform:rotateX(178deg)}.surprise.is-envelope-opening .envelope-seal{opacity:0;filter:blur(.12rem);transform:translate(-50%,-46%)scale(.72)rotate(12deg)}.surprise.is-letter-open .envelope{opacity:0;filter:blur(.2rem);pointer-events:none;transform:translateY(1rem)scale(.9)}.letter-overlay{z-index:5;pointer-events:none;opacity:0;place-items:center;padding:clamp(1.2rem,4vw,3rem);transition:opacity .28s;display:grid;position:absolute;inset:0}.letter-overlay.is-open{pointer-events:auto;opacity:1}.letter-card{transform-origin:50%;opacity:0;will-change:transform, opacity;background:radial-gradient(circle at 18% 34%,#8b423621,#0000 8rem),radial-gradient(circle at 22% 74%,#8b42361c,#0000 9rem),radial-gradient(circle at 82% 28%,#7a483017,#0000 10rem),radial-gradient(circle at 74% 74%,#78372c17,#0000 9rem),repeating-linear-gradient(105deg,#673f2709 0 .04rem,#0000 .04rem .36rem),linear-gradient(#ead5b9 0%,#dec09f 50%,#cfa883 100%);border:.08rem solid #753d2633;border-radius:.34rem;width:min(38rem,100%);min-height:min(72dvh,42rem);max-height:min(86dvh,44rem);display:block;position:relative;overflow:hidden;transform:translateY(3.2rem)scale(.92);box-shadow:0 2rem 5rem #5c2b0b47}.polaroid-photo{z-index:2;opacity:0;background:#fffaf1d1;border-radius:.12rem;width:clamp(7rem,20vw,10.8rem);margin:0;padding:.55rem .55rem 1.45rem;transition:opacity .7s .7s,transform .9s cubic-bezier(.16,1,.3,1) .7s;position:absolute;top:clamp(1.25rem,4vw,2.2rem);right:clamp(1rem,4vw,2rem);transform:translateY(-.4rem)rotate(6deg)scale(.96);box-shadow:0 .8rem 1.8rem #59301233,inset 0 0 0 .06rem #805b2b24}.letter-overlay.is-open .polaroid-photo{opacity:1;transform:translateY(0)rotate(5deg)scale(1)}.polaroid-photo img{aspect-ratio:1;object-fit:cover;filter:sepia(.12)saturate(.92)contrast(.96);width:100%;display:block}.pushpin{z-index:3;aspect-ratio:1;background:radial-gradient(circle at 32% 28%,#ffbeb4f2,#0000 18%),radial-gradient(circle at 52% 58%,#e62836 0 48%,#9e0f1b 78%);border-radius:50%;width:1.35rem;position:absolute;top:-.52rem;left:.95rem;transform:rotate(-7deg);box-shadow:inset -.16rem -.18rem .28rem #58000a5c,inset .12rem .14rem .18rem #ffb4a652,0 .22rem .35rem #55271147}.pushpin:before{content:"";transform-origin:top;background:linear-gradient(#f5f1e7,#8c8275 62%,#40322a59);border-radius:999rem;width:.13rem;height:2.15rem;position:absolute;top:72%;left:50%;transform:translate(-50%)rotate(2deg);box-shadow:.06rem .12rem .18rem #482d1638}.pushpin:after{content:"";aspect-ratio:1;background:#78000c38;border-radius:50%;width:.48rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.letter-overlay.is-open .letter-card{animation:1.25s cubic-bezier(.16,1,.3,1) forwards revealLetter}.letter-card>*{opacity:1}.handwritten-sheet:before{content:"";pointer-events:none;border:.05rem solid #753d263d;position:absolute;inset:1.35rem;box-shadow:inset 0 0 2.8rem #5a30201f}.handwritten-sheet:after{content:"";pointer-events:none;opacity:.32;background:radial-gradient(circle at 16% 37%,#0000 0 2.2rem,#8648382e 2.3rem 2.45rem,#0000 2.55rem),radial-gradient(circle at 21% 39%,#0000 0 1.6rem,#8648381f 1.7rem 1.85rem,#0000 1.95rem),radial-gradient(circle at 18% 67%,#0000 0 2.6rem,#86483824 2.72rem 2.9rem,#0000 3rem),radial-gradient(circle at 72% 35%,#fff4e173 0 .42rem,#0000 .5rem),radial-gradient(circle at 86% 54%,#fff4e161 0 .36rem,#0000 .45rem);position:absolute;inset:0}.letter-script-title{z-index:2;color:#7d251d;text-align:center;text-shadow:0 .06rem #ffecd257;margin:clamp(2.4rem,6vw,3.5rem) 0 0;font-family:Brush Script MT,Segoe Script,Bradley Hand ITC,cursive;font-size:clamp(3.1rem,8vw,5.6rem);line-height:.85;position:relative}.letter-ornament{z-index:2;aspect-ratio:1;opacity:.68;color:#69321fb8;width:3.9rem;position:absolute}.letter-ornament:before,.letter-ornament:after{content:"";border-style:solid;border-color:currentColor;position:absolute}.letter-ornament:before{border-width:.08rem 0 0 .08rem;inset:.6rem}.letter-ornament:after{border-width:.08rem 0 0 .08rem;border-radius:100% 0 0;width:1.8rem;height:1.8rem;top:.62rem;left:.62rem;transform:rotate(38deg)}.letter-ornament--tl{top:.55rem;left:.65rem}.letter-ornament--tr{top:.55rem;right:.65rem;transform:scaleX(-1)}.letter-ornament--bl{bottom:.55rem;left:.65rem;transform:scaleY(-1)}.letter-ornament--br{bottom:.55rem;right:.65rem;transform:scale(-1)}.letter-overlay.is-closing .letter-card{animation:1.45s cubic-bezier(.16,1,.3,1) forwards closeLetter}.letter-photo-wrap{background:linear-gradient(#fff2c9,#edc184);min-height:100%;padding:1rem}.letter-photo{object-fit:cover;border-radius:.32rem;width:100%;height:100%;min-height:24rem;box-shadow:inset 0 0 0 1px #ffffff80,0 1rem 2.2rem #572b0b38}.letter-content{scrollbar-width:none;height:100%;max-height:min(72dvh,42rem);padding:clamp(4rem,7vw,5.4rem) clamp(4rem,31vw,16.8rem) clamp(6.2rem,10vw,8rem) clamp(4rem,7vw,5.5rem);overflow:auto;-webkit-mask-image:linear-gradient(#0000 0,#000 4.4rem calc(100% - 5.8rem),#0000 100%);mask-image:linear-gradient(#0000 0,#000 4.4rem calc(100% - 5.8rem),#0000 100%)}.letter-content::-webkit-scrollbar{display:none}.letter-content::-webkit-scrollbar-thumb{background:0 0}.letter-content .typed-message{color:#5c211a;white-space:pre-line;text-shadow:0 .035rem #ffe1af14;max-width:24rem;min-height:18rem;margin:0;font-family:Segoe Script,Bradley Hand ITC,Comic Sans MS,cursive;font-size:clamp(1.38rem,3vw,2.05rem);line-height:1.72}.letter-content .typed-message:before{content:"";height:.1rem;display:block}.scroll-cue{z-index:4;color:#5c211bb8;opacity:0;pointer-events:none;text-shadow:0 .05rem #ffe8cd52;font-family:Segoe Script,Bradley Hand ITC,cursive;font-size:clamp(2rem,5vw,3.2rem);line-height:1;transition:opacity .26s,transform .26s;animation:1.5s ease-in-out infinite scrollCueFloat;position:absolute;bottom:clamp(1.8rem,4vw,2.7rem);right:clamp(2.2rem,5vw,3.4rem)}.letter-card.has-more-text .scroll-cue{opacity:1}.love-stamp{z-index:2;aspect-ratio:1;color:#702a1dad;text-align:center;opacity:.78;border:.22rem double #702a1d94;border-radius:50%;place-items:center;width:5.5rem;font-family:Georgia,Times New Roman,serif;font-size:1rem;font-style:italic;line-height:1.02;display:grid;position:absolute;bottom:clamp(2.2rem,5vw,3.4rem);right:clamp(2.3rem,6vw,4rem);transform:rotate(-16deg)}.love-stamp:before{content:"";border:.06rem solid #702a1d6b;border-radius:50%;position:absolute;inset:.52rem}.letter-content .typed-message:after{content:none}.letter-overlay.is-written .typed-message:after{opacity:0}.letter-kicker{color:#a45b34;letter-spacing:.14rem;text-transform:uppercase;margin:0 0 .7rem;font-size:.72rem;font-weight:700}.letter-content h1{color:#5e1833;margin:0 0 1.4rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,5vw,4rem);font-weight:500;line-height:1}.letter-content p:not(.typed-message){color:#653d2d;margin:0 0 1rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.1rem,2.2vw,1.45rem);line-height:1.65}.close-letter{z-index:6;color:#6b2a22;cursor:pointer;opacity:0;pointer-events:none;background:repeating-linear-gradient(88deg,#5c351f0b 0 .03rem,#0000 .03rem .24rem),linear-gradient(#ecceb0eb,#cd9d78eb);border:.07rem solid #6e362547;border-radius:999rem;justify-content:center;align-items:center;min-width:7.2rem;margin-top:0;padding:.72rem 1.25rem;transition:transform .26s,box-shadow .18s,opacity .42s;display:inline-flex;position:absolute;bottom:clamp(2.5rem,5vw,3.6rem);right:clamp(3rem,6vw,4.4rem);transform:translateY(.45rem);box-shadow:inset 0 0 0 .04rem #ffefd661,0 .55rem 1.2rem #5b301d2e}.letter-overlay.is-written .close-letter{opacity:1;pointer-events:auto;transform:translateY(0)}.close-letter:hover{transform:translateY(-.12rem);box-shadow:inset 0 0 0 .04rem #ffefd673,0 .8rem 1.45rem #5b301d38}.scene--final{z-index:4}.gold-flow-canvas{opacity:0;width:100%;height:100%;transition:opacity .9s;position:absolute;inset:0}.surprise.is-final .gold-flow-canvas{opacity:1}.final-message{z-index:1;color:#fff9fd;text-align:center;text-shadow:0 0 1.4rem #ff508fb3;opacity:0;overflow-wrap:anywhere;max-width:min(86vw,42rem);margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,10vw,7rem);line-height:1;position:relative;transform:translateY(1rem)}.surprise.is-final .final-message{animation:1.4s .9s forwards finalText}.spark-layer{z-index:8;pointer-events:none;position:absolute;inset:0;overflow:hidden}.spark{left:var(--x);top:var(--y);width:var(--size);aspect-ratio:1;background:var(--spark-color);box-shadow:0 0 1rem var(--spark-color);transform:translate(-50%, -50%) rotate(var(--rotate));animation:sparkFly var(--duration) cubic-bezier(.16, .82, .2, 1) forwards;border-radius:45% 55% 48% 52%;position:absolute}.letter-overlay.is-hidden{opacity:0;pointer-events:none}@keyframes introFade{to{opacity:1;transform:scale(1)}}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.06)}28%{transform:scale(.98)}42%{transform:scale(1.04)}}@keyframes textHeartbeat{0%,to{text-shadow:0 0 1rem #ff508fd9,0 0 2.8rem #ff508f73;transform:scale(1)}50%{text-shadow:0 0 1.35rem #ff6aa0fa,0 0 3.4rem #ff508f9e;transform:scale(1.025)}}@keyframes nameDisperse{0%{opacity:1;filter:blur();transform:scale(1)}to{opacity:0;filter:blur(.45rem);transform:scale(1.08)}}@keyframes gatherHeart{to{opacity:var(--fragment-opacity);transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) rotate(var(--fragment-rotate)) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) scale(1)}}@keyframes shimmerFragment{50%{opacity:.68;filter:brightness(1.2)}}@keyframes driftFragment{0%{transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) rotate(var(--fragment-rotate)) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) scale(1)}50%{transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) rotate(calc(var(--fragment-rotate) + var(--spin-rotate))) rotateX(calc(var(--tilt-x) + var(--spin-x))) rotateY(calc(var(--tilt-y) + var(--spin-y))) scale(1)}}@keyframes burstHeart{0%{opacity:var(--fragment-opacity);transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) rotate(var(--fragment-rotate)) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--burst-x)), calc(-50% + var(--burst-y))) rotate(calc(var(--fragment-rotate) + 240deg)) rotateX(calc(var(--tilt-x) + 520deg)) rotateY(calc(var(--tilt-y) + 420deg)) scale(.15)}}@keyframes sunlight{to{transform:translate(2%,-2%)scale(1.04)}}@keyframes floatEnvelope{0%,to{transform:translateY(0)rotate(-.7deg)}50%{transform:translateY(-1.05rem)rotate(.8deg)}}@keyframes shadowFloat{50%{opacity:.62;transform:scaleX(.82)}}@keyframes revealLetter{0%{opacity:0;filter:blur(.2rem)brightness(1.04);transform:translateY(3.2rem)scale(.92)}48%{opacity:1;filter:blur(.05rem)brightness(1.02);transform:translateY(.7rem)scale(.98)}to{opacity:1;filter:brightness();transform:translateY(0)scale(1)}}@keyframes closeLetter{0%{opacity:1;filter:blur();transform:translateY(0)scale(1)}45%{opacity:.72;filter:blur(.08rem);transform:translateY(.9rem)scale(.96)}to{opacity:0;filter:blur(.5rem);transform:translateY(2.8rem)scale(.86)}}@keyframes writingCaret{50%{opacity:0}}@keyframes scrollCueFloat{50%{transform:translateY(.28rem)}}@keyframes finalText{to{opacity:1;transform:translateY(0)}}@keyframes sparkFly{72%{opacity:.9}to{opacity:0;transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) rotate(calc(var(--rotate) + 210deg)) scale(.15)}}@media (width<=720px){.letter-card{width:min(26rem,100%);max-height:88dvh}.letter-content{padding:12.4rem 2.4rem 5.8rem;-webkit-mask-image:linear-gradient(#0000 0,#000 3.6rem calc(100% - 4.8rem),#0000 100%);mask-image:linear-gradient(#0000 0,#000 3.6rem calc(100% - 4.8rem),#0000 100%)}.polaroid-photo{width:8.5rem;left:50%;right:auto;transform:translate(-50%,-.4rem)rotate(5deg)scale(.96)}.letter-overlay.is-open .polaroid-photo{transform:translate(-50%)rotate(4deg)scale(1)}.typed-message{max-width:none;min-height:20rem;font-size:1.2rem;line-height:1.62}.close-letter{min-width:6.4rem;bottom:1.55rem;right:1.7rem}.scroll-cue{font-size:2.2rem;bottom:1.25rem;right:1.45rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
