:root{font-family:Microsoft YaHei,PingFang SC,sans-serif;color:#f1e6e7;background:#160f15;font-synthesis:none;--muted:#b59da7;--rose:#e8b6c3;--line:rgba(219,174,190,.16);--serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif;color-scheme:dark}*{box-sizing:border-box}body{position:relative;margin:0;min-width:320px;overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.5}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid #efbfd0;outline-offset:6px}button{color:inherit}a{color:inherit;text-decoration:none}button svg{width:20px;height:20px;flex:none}button{border:0}p,h1,h2{margin:0}button:disabled:hover{transform:none}[hidden]{display:none!important}.page-haze{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 71% 40%,#40202f 0%,#291923 26%,transparent 61%),radial-gradient(ellipse at 7% 100%,#2a1921,transparent 45%),#160f15;transition:filter 1.6s}body[data-palette=ivory] .page-haze{filter:hue-rotate(24deg) saturate(.65)}body[data-palette=apricot] .page-haze{filter:hue-rotate(26deg)}.grain{position:fixed;inset:0;z-index:10;opacity:.035;pointer-events:none;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='.88' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.8' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.gift-shell{max-width:1920px;margin:0 auto;position:relative;min-height:100svh;display:flex;flex-direction:column;padding:0 4.4vw}.site-header{height:105px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);z-index:2;flex-shrink:0}.wordmark{display:flex;gap:13px;align-items:center}.flower-mark{width:37px;height:37px;color:#e8bac9}.brand-name{font-family:Georgia,serif;font-size:26px;letter-spacing:1px;display:flex;align-items:center}.brand-divider{height:17px;width:1px;background:var(--line);margin:0 17px}.brand-chinese{font-family:var(--serif);font-size:13px;letter-spacing:4px;color:#c9b0bb}.header-right{display:flex;align-items:center;gap:28px}.made-for{display:flex;gap:10px;align-items:center;font-size:9px;letter-spacing:2px;color:#c8a9b5}.status-dot{width:4px;height:4px;background:#e1b4bc;border-radius:50%;box-shadow:0 0 10px #dd9ab666}.header-separator{height:17px;width:1px;background:var(--line)}.sound-button{display:flex;align-items:center;gap:9px;padding:10px 0 10px 10px;background:none;color:#c5acb6;font-size:11px;letter-spacing:1px}.sound-button:hover{color:#fff0f4}.sound-bars{height:14px;display:flex;gap:3px;align-items:center}.sound-bars i{width:1px;height:4px;background:currentColor;transition:height .4s}.sound-bars i:nth-child(2){height:11px}.sound-bars i:nth-child(3){height:7px}.sound-bars i:nth-child(4){height:12px}.sound-button[aria-pressed=true] i{animation:music 1s ease-in-out infinite alternate}.sound-button[aria-pressed=true] i:nth-child(2){animation-delay:-.4s}.sound-button[aria-pressed=true] i:nth-child(3){animation-delay:-.7s}.site-footer{min-height:75px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);z-index:2;color:#aa929f;font-size:10px;letter-spacing:1.1px}.footer-center{position:absolute;left:50%;transform:translate(-50%);font-size:8px;letter-spacing:2.3px;color:#b295a3;display:flex;align-items:center;gap:12px}.footer-center>span{font-size:15px;color:#d1a6b7}.save-button{display:flex;align-items:center;gap:7px;padding:12px 0 12px 12px;background:none;font-size:10px;letter-spacing:1px;color:#cab0bd}.save-button:hover{color:#fff}.save-button svg{width:16px;height:16px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes music{to{height:3px}}@keyframes arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.dedication{animation:arrive 1.4s .15s both}.site-header{animation:arrive 1s both}.site-footer{animation:arrive 1.3s .3s both}.dedication{position:relative;z-index:2;pointer-events:none;width:44%;margin-left:3.7%;padding-top:clamp(105px,14vh,180px)}.dedication button{pointer-events:auto}.eyebrow{display:flex;align-items:center;gap:12px;font-size:9px;letter-spacing:2.4px;color:#c69cae;white-space:nowrap}.eyebrow>span{height:1px;width:28px;background:#bc8398}.recipient{font-family:var(--serif);font-size:17px;letter-spacing:4px;color:#d0b4c0;margin-top:33px}.recipient span{color:#f0d6df}.dedication h1{font-family:var(--serif);font-weight:400;font-size:clamp(58px,5.6vw,86px);line-height:1.43;letter-spacing:4px;margin-top:14px;color:#f4e6e6}.dedication h1 em{font-style:normal;color:#e7afc0}.gift-description{color:#bda7b1;font-size:13px;letter-spacing:1.8px;line-height:2.15;margin-top:20px}.gift-actions{display:flex;align-items:center;gap:27px;margin-top:32px}.bloom-button{display:flex;align-items:center;justify-content:center;gap:12px;padding:0 23px;height:51px;border-radius:3px;background:#edc4cf;color:#452334;font-size:12px;letter-spacing:1.5px;box-shadow:0 4px 30px #e8abc010;transition:background .3s,transform .3s,box-shadow .3s}.bloom-button:hover{background:#f9d8df;transform:translateY(-2px);box-shadow:0 5px 30px #edb7cc20}.bloom-button svg{width:19px;height:22px}.button-arrow{font-size:17px;margin-left:10px}.letter-cue{font-family:var(--serif);font-size:11px;letter-spacing:1px;color:#bd97a7;white-space:nowrap}.little-note{font-size:10px;letter-spacing:1.2px;color:#a58c98;margin-top:30px;display:flex;align-items:center;gap:7px}.little-note>span{font-size:16px;color:#c795aa}.garden{position:relative;flex:1;min-height:660px;height:calc(100svh - 180px);max-height:1100px;isolation:isolate}.flower-stage{position:absolute;width:71%;height:100%;top:0;right:-4%;z-index:1;overflow:hidden}.flower-stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:pan-y}.flower-stage canvas:active{cursor:grabbing}.garden-atmosphere{position:absolute;inset:0;overflow:clip;pointer-events:none}.garden-orbit{position:absolute;width:530px;height:530px;border:1px solid #c99bad12;border-radius:50%;left:calc(68% - 265px);top:calc(43% - 265px);transform:rotate(-24deg) scaleY(.88);pointer-events:none}.orbit-two{width:630px;height:630px;left:calc(68% - 315px);top:calc(43% - 315px);transform:rotate(24deg) scaleX(.89);border-color:#c99bad09}.orbit-star{position:absolute;color:#bc8fa760;font-family:Georgia,serif;font-size:26px;pointer-events:none}.star-one{left:50%;top:15%}.star-two{right:6%;top:51%;font-size:15px}.flower-caption{position:absolute;right:0;bottom:28%;display:flex;gap:14px;z-index:2;pointer-events:none}.caption-line{height:55px;width:1px;background:linear-gradient(#bf90a1,transparent)}.flower-caption p{font-family:var(--serif);color:#bea2b0;font-size:12px;line-height:2.2;letter-spacing:3px}.scene-controls{position:absolute;bottom:27px;left:68%;transform:translate(-50%);z-index:3;white-space:nowrap;display:flex;flex-direction:column;align-items:center;gap:20px}.drag-hint{font-size:9px;letter-spacing:1.5px;color:#b396a6;display:flex;align-items:center;gap:8px}.drag-hint svg{width:18px;height:18px}.palette-picker{display:flex;align-items:center;gap:18px;padding:13px 19px;border:1px solid #d3a1b21c;border-radius:40px;background:#24182070;backdrop-filter:blur(12px);box-shadow:0 4px 24px #0b060b20}.palette-label{font-size:9px;letter-spacing:1px;color:#b396a6;border-right:1px solid var(--line);padding-right:17px}.palette-option{display:flex;align-items:center;gap:7px;background:none;padding:7px 1px;color:#bea5b1;font-size:10px;letter-spacing:1px}.palette-option.active{color:#f6dce7}.swatch{width:12px;height:12px;border-radius:50%;outline:1px solid transparent;outline-offset:3px;transition:outline-color .25s}.active .swatch{outline-color:#d7b7c6}.swatch.rose{background:#e8a2b7}.swatch.ivory{background:#ebe3cd}.swatch.apricot{background:#e5aa85}.palette-option:hover{color:#fff}.scene-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;color:#c498ad;font-size:11px;letter-spacing:2px;transition:opacity .8s}.scene-loader span{width:28px;height:28px;border:1px solid #cc94af30;border-top-color:#d8a1b7;border-radius:50%;animation:spin 1.4s linear infinite}.scene-loader.finished{opacity:0;pointer-events:none}.scene-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:20px}.scene-fallback>span{font-family:Georgia,serif;font-size:190px;color:#e3aac2;text-shadow:0 0 90px #de69965c}.scene-fallback p{font-family:var(--serif);font-size:22px;color:#e1b9cb;letter-spacing:4px}.scene-fallback small{color:#b99aaa;font-size:11px;line-height:2;letter-spacing:1px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;padding:14px 24px;border:1px solid #bc8ca42e;border-radius:8px;background:#30202deb;backdrop-filter:blur(15px);font-size:12px;letter-spacing:1px;color:#f0d3e0;z-index:30;transition:opacity .3s,transform .3s;max-width:calc(100% - 32px);text-align:center;white-space:normal}.toast.visible{opacity:1;transform:translate(-50%)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript-note{position:fixed;bottom:12px;left:12px;right:12px;padding:15px;background:#382334;z-index:50;font-size:13px;text-align:center}.letter-dialog{width:min(500px,calc(100vw - 36px));max-height:calc(100svh - 40px);border:1px solid #d8c7bd;border-radius:4px;padding:0;background:#f4ede4;color:#4a3740;box-shadow:0 30px 150px #0007;overflow-y:auto;overscroll-behavior:contain;color-scheme:light}.letter-dialog::backdrop{background:#110a1366}.letter-dialog[open]{transform-origin:center bottom;animation:letter-in .95s cubic-bezier(.22,.68,.2,1)}.letter-content{padding:45px 48px 30px;background:radial-gradient(ellipse at 100% 0,#f4d9d744,transparent 60%)}.close-letter{position:absolute;top:13px;right:16px;width:32px;height:32px;background:transparent;color:#856778;font-size:25px;font-weight:200;line-height:1}.letter-kicker{font-family:Georgia,serif;font-size:8px;letter-spacing:2px;color:#a38489;display:block}.letter-flower{width:60px;height:60px;color:#ad7187;display:block;margin:23px auto 22px}.letter-content h2{font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:2px;margin-bottom:23px}.letter-content h2:focus{outline:none}.letter-dialog[open] .letter-content>p{animation:ink-in .8s ease-out both;animation-delay:.35s}.letter-dialog[open] .letter-content>p:nth-of-type(2){animation-delay:.55s}.letter-dialog[open] .letter-content>p:nth-of-type(3){animation-delay:.75s}.letter-dialog[open] .letter-content>p:nth-of-type(4){animation-delay:.95s}.letter-content p{font-family:var(--serif);font-size:14px;line-height:2.05;letter-spacing:.8px;margin-top:17px;color:#6c555c}.letter-content .letter-emphasis{color:#a7667e;font-size:18px;margin-top:24px;letter-spacing:2px}.letter-signature{display:flex;align-items:center;justify-content:flex-end;gap:12px;font-size:10px;color:#95717e;margin:27px 0 25px;letter-spacing:1px}.letter-signature span{width:25px;height:1px;background:#bb98a2}.letter-return{border-top:1px solid #b99c9f33;background:transparent;color:#9b6a7b;width:100%;padding:20px 0 0;font-size:11px;letter-spacing:1px}.letter-return span{font-size:16px;margin-left:7px}.letter-return:hover{color:#6e344e}.letter-replay{display:block;margin:14px auto 0;padding:5px 12px;background:transparent;color:#947a82;font-size:10px;letter-spacing:1px}.letter-replay:hover{color:#6e344e}.letter-dialog button:focus-visible{outline-color:#a65a79}@keyframes letter-in{0%{opacity:0;transform:perspective(900px) translateY(26px) rotateX(-7deg) scale(.98)}to{opacity:1;transform:perspective(900px) translateY(0) rotateX(0) scale(1)}}@keyframes ink-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1101px){.letter-dialog{width:min(460px,36vw);max-height:calc(100svh - 64px);inset:0 auto 0 clamp(40px,7.2vw,138px);margin:auto 0}.letter-dialog::backdrop{background:#110a1326}}@media(min-width:1700px){body .dedication{padding-top:18vh}}@media(max-width:1100px)and (min-width:861px){body .gift-shell{padding:0 4vw}body .dedication{width:47%;margin-left:1.5%;padding-top:95px}body .dedication h1{font-size:64px}body .gift-actions{gap:18px}body .bloom-button{padding:0 16px}body .flower-stage{width:73%;right:-4%}body .flower-caption{right:-1%}body .scene-controls{left:70%}body .palette-label{display:none}body .garden-orbit{opacity:.6}body .footer-center{display:none}}@media(max-width:860px){body .gift-shell{padding:0 23px}body .site-header{height:78px}body .flower-mark{width:29px;height:29px}body .wordmark{gap:8px}body .brand-name{font-size:23px}body .brand-divider{margin:0 12px;height:13px}body .brand-chinese{font-size:10px;letter-spacing:3px}body .made-for,body .header-separator{display:none}body .sound-button{font-size:10px;gap:8px}body .garden{height:auto;min-height:930px;max-height:none}body .dedication{padding-top:40px;margin:0;width:100%;text-align:center}body .eyebrow{justify-content:center;font-size:7px;letter-spacing:2px;gap:8px}body .eyebrow>span{width:18px}body .recipient{font-size:14px;margin-top:22px;letter-spacing:3px}body .dedication h1{font-size:49px;line-height:1.4;letter-spacing:3px;margin-top:10px}body .dedication h1 br{display:block}body .gift-description{font-size:11px;letter-spacing:1px;margin-top:15px;line-height:2}body .flower-stage{width:calc(100% + 46px);right:-23px;height:540px;top:237px}body .gift-actions{position:absolute;top:781px;left:50%;transform:translate(-50%);white-space:nowrap;gap:24px;justify-content:center;margin:0}body .bloom-button{height:47px;padding:0 19px;font-size:11px;gap:8px}body .button-arrow{margin-left:6px}body .letter-cue{font-size:9px;letter-spacing:.5px}body .little-note{position:absolute;top:849px;left:0;width:100%;justify-content:center;margin:0;font-size:9px;letter-spacing:1px}body .scene-controls{left:50%;bottom:auto;top:696px;gap:12px}body .palette-picker{padding:8px 18px;gap:17px}body .palette-label{font-size:8px;padding-right:15px}body .palette-option{font-size:9px}body .drag-hint{font-size:8px;letter-spacing:1px}body .garden-orbit{width:320px;height:320px;left:calc(50% - 160px);top:302px}body .orbit-two{width:370px;height:370px;left:calc(50% - 185px);top:276px}body .star-one{left:8%;top:320px;font-size:20px}body .star-two{right:3%;top:520px;font-size:12px}body .flower-caption{display:none}body .site-footer{min-height:98px;align-items:center;flex-direction:column;justify-content:center;gap:12px;font-size:8px;letter-spacing:.7px;padding-bottom:17px}body .footer-center{display:none}body .save-button{font-size:9px;padding:6px 10px}body .toast{bottom:18px;font-size:11px;width:max-content}body .letter-content{padding:38px 30px 25px}body .letter-content h2{font-size:20px}body .letter-content p{font-size:13px}body .letter-flower{width:48px;height:48px;margin:18px auto}body .scene-fallback>span{font-size:150px}}@media(max-width:374px){body .gift-shell{padding:0 17px}body .brand-chinese,body .brand-divider{display:none}body .dedication h1{font-size:42px}body .eyebrow{letter-spacing:1.5px}body .palette-label{display:none}body .gift-actions{gap:15px}body .bloom-button{padding:0 14px}body .flower-stage{right:-17px;width:calc(100% + 34px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
