@charset "UTF-8";
:root{--paper:#f6f3eb;--ink:#424c3e;--muted:#878a79;--green:#75836a;--line:#dedfce;--accent:#bd8a70}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:10;opacity:.15;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23837c6c' filter='url(%23n)' opacity='.25' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button{touch-action:manipulation}button:disabled{cursor:default}h1,h2,h3,p{margin:0}h1,h2,h3,.handwritten{font-family:"Kaiti SC",STKaiti,KaiTi,"Songti SC",SimSun,serif}h2{font-size:clamp(28px,5vw,36px);line-height:1.65;font-weight:500;letter-spacing:.06em}.masthead{max-width:1080px;margin:auto;height:88px;padding:0 48px;display:flex;align-items:center;justify-content:space-between;gap:12px}.masthead>a{font-size:13px;letter-spacing:.12em;white-space:nowrap}.brand-star{color:#a4ac90;font-size:23px;vertical-align:middle;margin-left:12px}.sound{display:flex;align-items:center;gap:8px;background:none;border:1px solid var(--line);border-radius:30px;padding:10px 14px;color:var(--green);font-size:11px;white-space:nowrap;min-height:44px}.sound-bars{display:flex;align-items:center;gap:3px;height:14px}.sound-bars i{width:2px;height:6px;background:var(--green);border-radius:2px}.sound-bars i:nth-child(2){height:13px}.sound[aria-pressed=true] i{animation:equalizer 1s ease-in-out infinite alternate}.sound[aria-pressed=true] i:nth-child(2){animation-delay:-.5s}.hero{text-align:center;padding:47px 24px 75px;position:relative;max-width:800px;margin:auto}.eyebrow{font-size:9px;font-weight:500;letter-spacing:.2em;color:var(--muted);line-height:1.7}.hero>.eyebrow{display:flex;align-items:center;justify-content:center;gap:9px}.hero>.eyebrow>span{display:inline-block;width:5px;height:5px;border-radius:50%;background:#a3b18c}.hero-note{font-size:16px;color:#96917e;margin:28px 0 16px;letter-spacing:.12em}h1{font-size:clamp(36px,6vw,54px);font-weight:500;line-height:1.6;letter-spacing:.08em}.title-dot{color:#b19a76}.underlined{position:relative;white-space:nowrap}.underlined svg{position:absolute;width:100%;height:14px;left:0;bottom:-10px;fill:none;stroke:#d0aa7a;stroke-width:2;stroke-linecap:round}.hero-intro{font-size:13px;line-height:2.1;color:var(--muted);margin-top:25px;letter-spacing:.06em}.hero-art{max-width:500px;margin:6px auto 30px;position:relative}.landscape{width:100%;display:block}.art-spark{position:absolute;color:#aab291}.spark-one{left:10%;top:20%;font-size:34px}.spark-two{right:7%;top:53%;font-size:22px}.art-caption{font-size:13px;color:#92917f;letter-spacing:.1em}.primary{border:0;background:var(--green);color:#fffdf3;min-height:50px;padding:0 26px;border-radius:7px;font-size:13px;letter-spacing:.08em;box-shadow:0 5px 12px #6b775d15}.primary span{margin-left:25px;font-size:18px}.primary:hover{background:#65755c}.scroll-cue{display:block;margin:23px auto 0;font-size:10px;color:#999b8a;letter-spacing:.08em}.scroll-cue span{display:block;margin-top:13px;font-size:20px}.cloud{animation:cloud-drift 7s ease-in-out infinite alternate}.floating-heart{animation:heart-float 3s ease-in-out infinite}.sun{animation:sunshine 5s ease-in-out infinite}.chapter{max-width:630px;margin:auto;padding:70px 46px 78px;position:relative;border-top:1px solid var(--line)}.section-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.tiny-flower{font-size:26px;color:#a3ad91}.section-description{font-size:13px;line-height:2.1;letter-spacing:.035em;color:var(--muted);margin-top:18px}.star-field{height:170px;max-width:340px;margin:23px auto 0;position:relative}.constellation{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#d4d3ba;stroke-dasharray:3 6}.star-button{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;background:none;border:0;color:#a7ad95;min-width:60px;min-height:70px;padding:8px;transform:translateX(-50%)}.star-button:nth-of-type(1){left:16.2%;top:57px}.star-button:nth-of-type(2){left:49.4%;top:7px}.star-button:nth-of-type(3){left:82.9%;top:69px}.star-button>span{font-size:47px;line-height:1;transition:color .5s,transform .5s}.star-button small{font-size:10px;letter-spacing:.1em;margin-top:10px}.star-button[aria-pressed=true]>span{color:#c5a062;transform:scale(1.16);text-shadow:0 0 22px #e8cf9b}.star-note{font-family:KaiTi,STKaiti,serif;font-size:17px;line-height:1.9;text-align:center;min-height:66px;margin-top:10px}.small-note{font-size:10px;line-height:1.8;color:#a2a18f;text-align:center;margin-top:14px}.evening-scene{margin:30px -8px 26px}.evening-scene svg{width:100%;display:block}.lamp-glow{animation:lamp 4s ease-in-out infinite}.daily-lines p{font-size:12px;color:#747d6b;line-height:1.9;padding:14px 0;border-bottom:1px solid #e5e3d7}.daily-lines span{font-family:Georgia,serif;font-size:11px;color:#a5ab96;margin-right:17px}.scene-caption{text-align:center;font-size:16px;color:#99937b;margin-top:28px}.wish-tabs{display:flex;gap:10px;margin:27px 0 20px}.wish-tabs button{font-size:12px;background:transparent;border:1px solid var(--line);border-radius:30px;min-height:44px;padding:10px 21px;color:var(--muted)}.wish-tabs button.active{background:#e3e8d9;border-color:#c6cfb7;color:#637455}.wish-card{background:#fffdf7;border:1px solid #e3e0d3;border-radius:12px;padding:12px;transform:rotate(-1deg);box-shadow:0 9px 24px #555f4310}.wish-art{height:220px;background:#e4ece5;position:relative;overflow:hidden;border-radius:6px;transition:background .6s}.wish-sun{position:absolute;width:47px;height:47px;background:#edcc94;border-radius:50%;left:66%;top:34px;transition:all .6s}.ocean{position:absolute;left:-20%;width:140%;height:150px;border-radius:45% 50% 0 0;animation:waves 7s ease-in-out infinite alternate}.ocean-back{background:#b6cec6;top:116px;transform:rotate(-5deg)}.ocean-front{background:#8fb6ac;top:154px;transform:rotate(5deg);animation-delay:-3s}.little-boat{position:absolute;left:39%;top:92px;color:#7b806c;font-size:54px;animation:boat 4s ease-in-out infinite}.wish-copy{padding:23px 18px 24px}.wish-copy h3{font-size:23px;font-weight:500;line-height:1.7;margin:8px 0 10px}.wish-copy p{font-size:12px;line-height:2;color:var(--muted);min-height:48px}.window-frame,.rain-lines,.snow,.mug{display:none}.walk-art{display:none;width:100%;height:100%;position:absolute;inset:0}.wish-card[data-scene=walk] .walk-art{display:block}.wish-card[data-scene=walk] .ocean,.wish-card[data-scene=walk] .little-boat{display:none}.wish-card[data-scene=walk] .wish-art{background:#e4eadc}.wish-card[data-scene=meeting] .wish-art{background:#e7ded0}.wish-card[data-scene=meeting] .ocean,.wish-card[data-scene=meeting] .little-boat{display:none}.wish-card[data-scene=meeting] .wish-sun{background:#f5ecda;top:27px;left:20%;width:37px;height:37px}.wish-card[data-scene=meeting] .mug{display:block;position:absolute;width:55px;height:58px;left:30%;bottom:45px;border-radius:4px 4px 20px 20px;background:#899a7f;box-shadow:0 4px 0 #d0c5b5}.wish-card[data-scene=meeting] .mug-two{left:55%;background:#c08f78}.mug:after{content:"";position:absolute;right:-17px;top:8px;border:5px solid #899a7f;width:18px;height:23px;border-radius:50%;z-index:0}.mug-two:after{border-color:#c08f78}.mug:before{content:"∿";position:absolute;top:-41px;left:16px;font-size:32px;line-height:1;color:#fff9ee;animation:steam 3s ease-in-out infinite}.wish-card[data-scene=meeting] .snow{display:block;position:absolute;color:#fffaf0;font-size:25px;animation:heart-float 4s ease-in-out infinite}.snow-one{top:36px;right:30%}.snow-two{top:83px;right:14%;font-size:17px!important}.garden{text-align:center;padding-top:78px}.garden h2{margin-top:23px;font-size:32px}.plant-button{display:block;border:0;background:transparent;color:var(--green);width:100%;padding:0 0 20px;font-size:11px;letter-spacing:.03em}.plant-button svg{display:block;width:200px;margin:10px auto 0}.grown-flower{transform:scaleY(0);transform-origin:100px 168px;transition:transform 1.4s cubic-bezier(.2,.8,.3,1)}.seed{transition:opacity .3s}.planted .grown-flower{transform:scaleY(1)}.planted .seed{opacity:0}.planted .flower-head{animation:flower-sway 5s 1.4s ease-in-out infinite;transform-origin:100px 120px}#garden-message{font-size:15px;line-height:1.9;color:#92947f;min-height:55px}.ending-divider{margin:43px auto 28px;color:#b5bba4;font-size:27px}.ending{font-family:STKaiti,KaiTi,serif;font-size:22px;line-height:1.9;letter-spacing:.05em}.end-heart{display:block;margin-top:22px;color:#ba8b75;font-size:36px}footer{padding:32px 24px 45px;text-align:center;border-top:1px solid var(--line);color:#979987}footer>span{font-size:8px;letter-spacing:.16em}footer p{font-size:11px;margin:13px 0 22px}footer a{font-size:10px;padding:12px;display:inline-block}.letter{max-width:450px;margin:32px auto 0;text-align:left;scroll-margin-top:30px}.letter-paper{background:#fffdf7;border:1px solid #e4dfcf;padding:34px 30px;border-radius:3px;box-shadow:3px 6px 0 #e9e3d5;animation:letter-open .5s ease both}.letter h2{font-size:23px;margin:15px 0}.letter p{font-size:14px;line-height:2.2;color:#7a806f;margin:16px 0}.letter .signature{font-size:17px;color:#b08d73}.text-button{border:0;background:none;border-bottom:1px solid #cdd0bc;padding:12px 0;color:#7e8c71;font-size:12px}
@keyframes cloud-drift{to{transform:translateX(15px)}}@keyframes heart-float{50%{transform:translateY(-7px)}}@keyframes sunshine{50%{opacity:.65}}@keyframes equalizer{to{height:4px}}@keyframes lamp{50%{opacity:.75}}@keyframes waves{to{translate:18px 5px}}@keyframes boat{50%{transform:translateY(5px) rotate(-5deg)}}@keyframes rain{to{transform:translateY(35px)}}@keyframes steam{50%{transform:translateY(-6px);opacity:.4}}@keyframes flower-sway{50%{transform:rotate(5deg)}}@keyframes letter-open{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:800px){.hero{padding-top:65px}.hero-art{margin-top:0}.chapter{padding-top:85px;padding-bottom:85px}.wish-art{height:240px}.stars-chapter{margin-top:10px}}@media(max-width:480px){.masthead{height:76px;padding:0 22px}.masthead>a{font-size:11px;letter-spacing:.04em}.brand-star{margin-left:7px}.sound{padding:9px 11px;font-size:10px}.hero{padding:33px 22px 55px}.hero-note{font-size:14px;margin-top:25px}h1{font-size:37px;letter-spacing:.04em}.hero-intro{font-size:12px;margin-top:24px}.hero-art{margin:14px -8px 28px}.art-caption{font-size:11px}.chapter{margin:0 24px;padding:45px 5px 52px}h2{font-size:29px}.section-description{font-size:12px}.section-top{margin-bottom:19px}.star-note{font-size:16px}.daily-lines p{font-size:11px}.daily-lines span{margin-right:10px}.scene-caption{font-size:14px}.wish-tabs{gap:8px}.wish-tabs button{padding:10px 19px}.wish-art{height:200px}.wish-copy{padding:21px 12px}.wish-copy h3{font-size:21px}.wish-copy p{font-size:11px}.garden h2{font-size:28px}.ending{font-size:21px}.letter-paper{padding:27px 24px}.eyebrow{font-size:8px}}@media(max-width:350px){h1{font-size:32px}.masthead{padding:0 16px}.chapter{margin:0 19px}.wish-tabs button{padding:10px 15px}.daily-lines p{font-size:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.climb-art{display:none;position:absolute;inset:0;width:100%;height:100%}.wish-card[data-scene=climb] .climb-art{display:block}.wish-card[data-scene=climb] .wish-sun{display:none}.wish-card[data-scene=climb] .wish-art{background:#e7ebdf}
.star-heart{position:absolute;z-index:2;color:#c98e85;line-height:1;pointer-events:none;animation:star-hearts 1s ease-out both;transform:translate(-50%,-50%)}@keyframes star-hearts{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}15%{opacity:.9}100%{opacity:0;transform:translate(calc(-50% + var(--heart-x)),calc(-50% + var(--heart-y))) rotate(var(--heart-turn)) scale(1.1)}}
.flower-replay .grown-flower{animation:flower-regrow 1.4s cubic-bezier(.2,.8,.3,1) both}@keyframes flower-regrow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.wish-card[data-scene=walk] .wish-sun{display:none}
.floating-hearts{position:fixed;inset:0;z-index:3;overflow:hidden;pointer-events:none;user-select:none}.floating-hearts span{position:absolute;top:100%;color:#c99088;font-family:Georgia,serif;font-size:var(--float-size);line-height:1;opacity:0;animation:ambient-heart-rise var(--float-duration) var(--float-delay) linear infinite;pointer-events:none}.hearts-paused span{animation-play-state:paused}.photo-open .floating-hearts{visibility:hidden}body.unlocking{animation-name:story-reveal}@keyframes story-reveal{from{opacity:0}to{opacity:1}}@keyframes ambient-heart-rise{0%{opacity:0;transform:translate3d(0,25px,0) rotate(-10deg)}12%{opacity:.25}50%{opacity:.3;transform:translate3d(var(--float-drift),-50vh,0) rotate(12deg)}90%{opacity:.2}100%{opacity:0;transform:translate3d(0,calc(-100vh - 55px),0) rotate(-8deg)}}@media(prefers-reduced-motion:reduce){.floating-hearts{display:none}}
.meeting-photo{display:none;width:100%;padding:8px 8px 13px;border:0;border-radius:3px;background:#fffcf5;color:var(--ink);text-align:center}.meeting-photo img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:2px}.photo-caption{display:block;font-size:16px;line-height:1.8;color:#91846e;margin-top:14px;letter-spacing:.06em}.photo-hint{display:block;font-size:9px;color:#a5a18e;margin-top:6px;letter-spacing:.08em}.wish-card[data-scene=meeting] .wish-art{height:auto;background:transparent;overflow:visible}.wish-card[data-scene=meeting] .meeting-photo{display:block;animation:letter-open .65s ease both}.wish-card[data-scene=meeting] .wish-art>.wish-sun,.wish-card[data-scene=meeting] .wish-art>.mug,.wish-card[data-scene=meeting] .wish-art>.snow{display:none}.wish-card[data-scene=meeting] .wish-copy{padding-top:18px}.photo-open{overflow:hidden}.photo-dialog{border:0;border-radius:10px;background:#fffcf5;color:var(--ink);padding:0;max-width:min(92vw,700px);width:700px;max-height:92dvh;overflow:auto;box-shadow:0 15px 60px #252c3b33}.photo-dialog::backdrop{background:#343c36cf;backdrop-filter:blur(5px)}.photo-view{padding:12px 12px 20px;text-align:center}.photo-view>button{display:block;margin:0 0 9px auto;border:0;background:none;color:#849077;font-size:12px;min-height:44px;padding:10px}.photo-view img{display:block;width:100%;height:auto;max-height:72dvh;object-fit:contain}.photo-view p{margin-top:17px;font-size:17px;color:#97866e}@media(max-width:480px){.photo-caption{font-size:14px}.photo-hint{font-size:9px}.photo-view{padding:8px 8px 18px}.photo-view p{font-size:15px}.photo-dialog{max-width:94vw}}
.finale{text-align:center;padding-top:70px;padding-bottom:70px}.finale h2{margin-top:22px}.finale .section-description{font-size:12px}.finale-stage{position:relative;width:100%;max-width:420px;aspect-ratio:1.05;margin:12px auto 0;overflow:hidden;isolation:isolate}.finale-idle{position:absolute;inset:0;display:grid;place-content:center;transition:opacity .6s;color:#c8a69a}.finale-idle>span{font-family:Georgia,serif;font-size:100px;font-weight:400;animation:finale-wait 4s ease-in-out infinite}.finale-idle i{position:absolute;top:43%;left:20%;font-style:normal;font-size:25px;color:#c2bc9a}.finale-idle i:last-child{top:32%;left:75%;font-size:17px}.finale-heart-group{position:absolute;inset:0;transform-origin:50% 50%}.finale-shape{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1.2s}.finale-particle{position:absolute;line-height:1;color:#c9918a;opacity:0;transform:translate(-50%,-50%);pointer-events:none}.heart-started .finale-idle{opacity:0}.heart-started .finale-particle{opacity:.85;animation:heart-gather 2.4s var(--gather-delay) cubic-bezier(.2,.65,.25,1) both}.heart-ready .finale-shape{opacity:.3}.heart-ready .finale-heart-group{animation:finale-beat 3.8s ease-in-out infinite}.finale-message{position:absolute;left:12%;right:12%;top:43%;font-family:STKaiti,KaiTi,"Songti SC",serif;font-size:clamp(21px,5.5vw,28px);line-height:1.85;letter-spacing:.07em;color:#a16f69;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity 1s,transform 1s}.finale-message span{display:block;font:7px/1.8 Georgia,serif;letter-spacing:.12em;color:#ba9487;margin-top:12px}.heart-ready .finale-message{opacity:1;visibility:visible;transform:translateY(0)}.finale>.primary{min-width:245px;font-size:12px;margin-top:4px}.finale>.primary:disabled{opacity:.65}.finale-note{margin-top:22px;font-size:14px;letter-spacing:.06em;color:#a69b85}.finale-paused *{animation-play-state:paused!important}@keyframes heart-gather{0%{opacity:0;transform:translate(calc(-50% + var(--gather-x)),calc(-50% + var(--gather-y))) rotate(var(--gather-turn)) scale(.5)}22%{opacity:.45}100%{opacity:.85;transform:translate(-50%,-50%) rotate(0) scale(1)}}@keyframes finale-beat{0%,100%{transform:scale(1)}35%{transform:scale(1.025)}55%{transform:scale(1)}70%{transform:scale(1.015)}}@keyframes finale-wait{50%{transform:scale(1.05);opacity:.6}}@media(max-width:480px){.finale{padding-top:48px;padding-bottom:52px}.finale h2{font-size:28px}.finale-stage{margin-top:14px}.finale-message{font-size:23px}.finale-message span{font-size:6px;letter-spacing:.08em;margin-top:8px}.finale-note{font-size:13px}}@media(prefers-reduced-motion:reduce){.heart-started .finale-particle{opacity:.85;transform:translate(-50%,-50%)}}

.catch-hearts{position:absolute;inset:0;transition:opacity .5s;z-index:4}.catch-heart{position:absolute;width:66px;height:66px;border:1px solid #dcbcb444;border-radius:50%;background:#f1ddd34d;color:#c68d87;display:grid;place-content:center;animation:catch-heart-drift 5s ease-in-out infinite;box-shadow:0 4px 18px #d3b8aa12;touch-action:manipulation;transition:opacity .3s}.catch-heart span{font:36px/1 Georgia,serif;pointer-events:none}.catch-heart:nth-child(1){left:14%;top:24%;animation-delay:-1s}.catch-heart:nth-child(2){left:65%;top:23%;animation-delay:-3s;animation-duration:6.5s}.catch-heart:nth-child(3){left:40%;top:58%;animation-delay:-2s;animation-duration:5.7s}.catch-heart.caught{opacity:0;pointer-events:none;animation:none}.heart-started .catch-hearts{opacity:0;visibility:hidden;pointer-events:none}.heart-progress{min-height:22px;margin:0 0 15px;color:#a18f7f;font-size:11px;line-height:1.8;letter-spacing:.06em}.finale>.primary[hidden]{display:none}.finale-message{top:34%;left:17%;right:17%;font-size:26px;line-height:1.65;z-index:2;pointer-events:none;text-shadow:0 1px 5px #f6f3eb}.finale-message span{font-size:7px;line-height:1.6;letter-spacing:.1em;margin:9px auto 0;max-width:115px}.heart-ready .finale-heart-group{animation-duration:5.2s}@keyframes catch-heart-drift{0%,100%{transform:translate(-8px,5px) rotate(-8deg)}50%{transform:translate(13px,-16px) rotate(9deg)}}@media(max-width:480px){.finale-message{font-size:22px}.finale-message span{font-size:7px;letter-spacing:.08em;margin-top:8px}}@media(max-width:350px){.finale-message{font-size:19px}.finale-message span{font-size:6px}}@media(prefers-reduced-motion:reduce){.catch-heart{animation:none}}

.finale-stage{border-radius:30px}.finale-atmosphere{position:absolute;inset:0;pointer-events:none}.finale-aura{position:absolute;inset:7%;border-radius:50%;background:radial-gradient(ellipse,#edc1bb55 0%,#edd4aa22 42%,transparent 70%);opacity:.45;transition:opacity 1.6s}.heart-started .finale-aura{opacity:1}.finale-orbit{position:absolute;left:7%;top:16%;width:86%;height:65%;border:1px solid #cfae8a30;border-radius:50%;transform:rotate(-25deg);animation:finale-orbit-turn 24s linear infinite}.finale-orbit:before,.finale-orbit:after{content:"";position:absolute;left:12%;top:12%;width:5px;height:5px;border-radius:50%;background:#d2a382;box-shadow:0 0 9px 3px #e0bf8f66}.finale-orbit:after{left:84%;top:83%;width:3px;height:3px;background:#cc99a0}.orbit-two{left:14%;top:9%;width:72%;height:79%;animation-duration:32s;animation-direction:reverse;border-style:dashed;border-color:#cabda223}.heart-ready .finale-orbit{opacity:.4}.finale-stardust{position:absolute;color:#c5aa7f;font-size:21px;line-height:1;opacity:.25;animation:finale-star-shine 4.5s var(--dust-delay) ease-in-out infinite}.catch-heart{background:radial-gradient(circle at 35% 25%,#fffaf3e6,#f1d4c180 70%);border-color:#d5aa9877;box-shadow:0 0 0 7px #ecd0bf22,0 8px 25px #be958925,inset 0 1px 0 #fffaf5;isolation:isolate}.catch-heart span{filter:drop-shadow(0 0 5px #d6a58a77)}.catch-heart:before{content:"";position:absolute;inset:-7px;border:1px dashed #d8b28b77;border-radius:50%;animation:finale-orbit-turn 12s linear infinite;pointer-events:none}.catch-heart:after{content:"✧";position:absolute;right:-9px;top:-9px;color:#c8a476;font-size:18px;pointer-events:none}.finale-click-spark{position:absolute;z-index:5;color:#cf9e7d;line-height:1;font-size:20px;pointer-events:none;animation:finale-click-burst 1s ease-out both}.heart-started .finale-particle{animation-name:heart-spiral-in;filter:drop-shadow(0 0 2px #d9ab9b77)}.heart-ready .finale-particle:nth-child(3n){animation:heart-glimmer 4.8s var(--glimmer-delay) ease-in-out infinite}.heart-ready .finale-shape{opacity:.48}.finale-shape #finale-trace{stroke-dasharray:100;stroke-dashoffset:100}.heart-ready #finale-trace{animation:finale-trace-on 2s ease-out forwards}.finale-flare{position:absolute;inset:0;pointer-events:none;opacity:0}.finale-flare:before,.finale-flare:after{content:"";position:absolute;left:14%;top:17%;width:72%;height:68%;border:1px solid #ce9f8855;border-radius:50%;opacity:0}.heart-ready .finale-flare{opacity:1}.heart-ready .finale-flare:before{animation:finale-ripple 5.2s ease-out infinite}.heart-ready .finale-flare:after{animation:finale-ripple 5.2s 2.6s ease-out infinite}.finale-message{text-shadow:0 1px 7px #fff9ef,0 0 16px #fff9ef}.finale-message span{color:#a98c78}@keyframes heart-spiral-in{0%{opacity:0;transform:translate(calc(-50% + var(--gather-x)),calc(-50% + var(--gather-y))) rotate(-120deg) scale(.2)}35%{opacity:.6;transform:translate(calc(-50% + var(--spiral-x)),calc(-50% + var(--spiral-y))) rotate(80deg) scale(.65)}100%{opacity:.9;transform:translate(-50%,-50%) rotate(0) scale(1)}}@keyframes finale-click-burst{0%{opacity:1;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(calc(-50% + var(--spark-x)),calc(-50% + var(--spark-y))) scale(1.2)}}@keyframes finale-orbit-turn{to{transform:rotate(335deg)}}@keyframes finale-star-shine{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:.75;transform:scale(1.12)}}@keyframes heart-glimmer{0%,100%{opacity:.75;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}}@keyframes finale-trace-on{to{stroke-dashoffset:0}}@keyframes finale-ripple{0%{opacity:0;transform:scale(.75)}18%{opacity:.45}100%{opacity:0;transform:scale(1.3)}}@media(prefers-reduced-motion:reduce){.finale-orbit,.finale-flare{display:none}.heart-ready #finale-trace{stroke-dashoffset:0}.finale-stardust{opacity:.35}}

