:root{--bg:#f7f1e8;--paper:#fffcf6;--ink:#4c5c4c;--muted:#919482;--rose:#b97e7b;--pink:#e9bab5;--line:#e6e1d3;--serif:"Songti SC","STSong","SimSun",serif;--sans:"Microsoft YaHei","PingFang SC",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px var(--sans);transition:background 1.5s,color 1s}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #b67978;outline-offset:6px}button[hidden],[hidden]{display:none!important}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.grain{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.035;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='%23000' filter='url(%23n)' opacity='.5' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.site-shell{max-width:1100px;margin:auto;padding:0 42px;position:relative;z-index:2}.site-header{height:98px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:12px;text-decoration:none;color:#7b8872;font:10px Georgia,serif;letter-spacing:2.5px}.wordmark svg{width:26px;height:26px;color:#b2b99b;transform:rotate(12deg)}.sound-toggle{display:flex;align-items:center;gap:8px;background:none;border:0;font-size:10px;color:#939783;padding:10px;letter-spacing:1px}.sound-toggle>span:first-child{font:19px Georgia,serif}.card-frame{position:relative;background:var(--paper);border:1px solid #e7dfd0;border-radius:7px;box-shadow:0 15px 40px #8d79650b,0 3px 0 -1px #f1eadd,0 4px 0 #e7dfd0;padding:27px 39px 22px;transition:background 1.3s,border-color 1.3s;min-height:625px}.card-frame:before{content:'';position:absolute;left:9px;right:9px;top:9px;bottom:9px;border:1px solid #eee7d9;border-radius:2px;pointer-events:none;transition:border-color 1.3s}.card-topline,.card-bottomline{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:2px;color:#a0a18e;position:relative;z-index:1}.card-topline{padding-bottom:18px;border-bottom:1px solid var(--line)}.card-topline>span:first-child{font-family:Georgia,var(--sans);letter-spacing:2.5px}.card-topline>span:last-child{font-size:9px;letter-spacing:1px}.card-page{min-height:490px;position:relative;animation:page-in .6s ease both;outline:0}.card-page h1,.card-page h2{outline:none}.cover{display:flex;align-items:center;gap:20px;padding:28px 5px}.cover-copy{width:51%;position:relative;z-index:2}.script-label{font:italic 18px Georgia,serif;letter-spacing:.5px;color:#b18d7a;margin:0 0 19px}.card-page h1{font:500 clamp(42px,4.5vw,60px)/1.4 var(--serif);letter-spacing:3px;margin:0 0 20px}.card-page h1 em{font-style:normal;color:var(--rose)}.body-copy{font-size:12px;line-height:2.05;color:#989b87;letter-spacing:1px;margin:0 0 24px}.primary{background:#77876e;color:#fffdf6;border:1px solid #77876e;min-height:46px;padding:11px 21px;border-radius:4px;display:inline-flex;justify-content:center;align-items:center;gap:26px;letter-spacing:1px;font-size:12px;transition:transform .2s,background .2s,box-shadow .2s;box-shadow:0 3px 0 #e3e7d9}.primary>span{font-size:19px;line-height:1;font-weight:normal}.primary:hover{background:#65785e;transform:translateY(-2px);box-shadow:0 5px 0 #e3e7d9}.primary:disabled{opacity:.5;transform:none;box-shadow:none}.whisper{font-size:9px;letter-spacing:1px;color:#b0b09a;margin:15px 0 0;line-height:1.7}.envelope-scene{border:0;background:none;width:47%;height:320px;position:relative;transform:rotate(-7deg);transition:transform .5s;margin-top:45px;overflow:visible}.envelope-scene:hover{transform:rotate(-3deg) translateY(-8px)}.envelope-body{position:absolute;bottom:60px;left:0;width:100%;height:190px;background:#e9b9b1;border:1px solid #dca59d;border-radius:5px;box-shadow:2px 15px 22px #987e5722}.letter-peek{position:absolute;left:11%;top:0;width:78%;height:185px;background:#fffdf3;border:1px solid #e6dbc5;transform:rotate(8deg);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;box-shadow:0 -2px 9px #c1a5900f}.letter-peek>svg{width:41px;height:41px;color:#d4b2a0}.letter-peek>span{font:italic 28px/1.1 Georgia,serif;color:#8b957d;text-align:center}.envelope-front{position:absolute;bottom:60px;left:0;width:100%;height:190px;background:#ecc6bd;clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);border-radius:5px;z-index:2}.envelope-front:after{content:'';position:absolute;inset:0;background:#f0cbc1;clip-path:polygon(0 100%,50% 40%,100% 100%)}.envelope-flap{position:absolute;left:0;bottom:141px;width:100%;height:109px;background:#e6afa7;clip-path:polygon(0 0,100% 0,50% 100%);z-index:3;filter:drop-shadow(0 2px 0 #c9938830);transform-origin:center top;transition:transform .55s ease,z-index .55s}.envelope-seal{position:absolute;z-index:4;left:50%;bottom:125px;transform:translateX(-50%) rotate(7deg);border-radius:50%;width:43px;height:43px;background:#b97e79;border:3px double #d7a49a;display:grid;place-items:center;box-shadow:0 2px 4px #94655e22}.envelope-seal svg{width:24px;height:24px;color:#e8c6af}.envelope-caption{position:absolute;bottom:21px;left:0;width:100%;font:italic 12px Georgia,serif;color:#b7a18a;letter-spacing:.3px;transform:rotate(7deg)}.envelope-star{position:absolute;color:#c7ac76}.star-a{font-size:47px;right:-20px;top:10px;transform:rotate(9deg)}.star-b{font-size:20px;left:-20px;bottom:80px}.opening .envelope-flap{transform:rotateX(180deg);z-index:0}.opening .letter-peek{transform:translateY(-45px) rotate(5deg);transition:transform .65s}.card-bottomline{border-top:1px solid var(--line);padding-top:17px;font:9px Georgia,var(--sans);min-height:32px}.back-button{padding:0;background:none;border:none;font:10px var(--sans);letter-spacing:.5px;color:#919981;min-width:70px;text-align:left}.back-button:disabled{visibility:hidden}.page-dots{display:flex;gap:9px;position:absolute;left:50%;transform:translateX(-50%)}.page-dots span{width:4px;height:4px;border-radius:50%;background:#e0dece;transition:background .3s,width .3s}.page-dots .current{width:17px;border-radius:6px;background:#b5ba9f}footer{display:flex;align-items:center;justify-content:space-between;padding:25px 2px 28px;color:#a6a38e;gap:15px;font-size:9px;letter-spacing:1px}footer button{border:0;background:none;color:#9a9b85;padding:5px 0;font-size:9px;white-space:nowrap}.ambient-flower{position:fixed;color:#e8e4d5;z-index:0;pointer-events:none}.ambient-flower svg{width:100%;height:100%}.f1{width:185px;height:185px;left:-93px;top:35%;transform:rotate(15deg)}.f2{width:110px;height:110px;right:-50px;bottom:9%;transform:rotate(-8deg);color:#ecdfd4}.menu-page,.note-page,.cake-page{text-align:center;padding:25px 0 26px}.card-page h2{font:500 34px/1.5 var(--serif);letter-spacing:2px;margin:0 0 15px}.card-page h2 span{color:var(--rose)}.menu-page .script-label,.note-page .script-label,.cake-page .script-label{font-size:16px;margin-bottom:11px}.menu-page .body-copy{margin-bottom:19px;font-size:11px}.menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;max-width:660px;margin:0 auto 26px}.wish-tile{background:#f8f5e9;border:1px solid #ebe4d3;border-radius:55px 55px 5px 5px;padding:19px 9px 16px;min-height:194px;display:flex;align-items:center;flex-direction:column;transition:transform .3s,background .3s,border-color .3s}.wish-tile>svg{width:68px;height:68px;margin-bottom:8px;transition:transform .3s}.tile-title{font-family:var(--serif);font-size:17px;letter-spacing:1px;margin-bottom:10px}.tile-detail{display:none;font-size:10px;line-height:1.9;color:#879176;letter-spacing:.2px}.tile-hint{font-size:9px;color:#aaa58d;margin-top:10px;letter-spacing:.5px}.wish-tile.revealed{background:#f0f2e5;border-color:#cdd5b9;transform:translateY(-3px)}.wish-tile.revealed>svg{transform:rotate(-8deg)}.wish-tile.revealed .tile-detail{display:block}.wish-tile.revealed .tile-hint{display:none}.folded-note{display:block;position:relative;margin:17px auto 23px;max-width:520px;width:100%;min-height:206px;background:#f6efe2;border:1px solid #e5dbca;box-shadow:3px 4px 0 #f1ebdd;border-radius:2px;text-align:left;padding:20px 32px;overflow:hidden;transition:background .4s}.note-closed{min-height:165px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;font:18px var(--serif);letter-spacing:2px;color:#8d9178}.note-closed svg{width:36px;height:36px;color:#c4ad90}.note-closed small{font:10px var(--sans);letter-spacing:1px;color:#aaa18c}.note-open{display:none;font:13px/1.9 var(--serif);color:#77836d;letter-spacing:.5px}.note-open>span{display:block;margin:10px 0}.note-open .letter-salutation{font-size:15px;color:#8b715e;margin:0 0 14px}.note-open .letter-signature{text-align:right;font-size:12px;color:#a47e72;margin:16px 0 0}.note-corner{position:absolute;right:0;bottom:0;width:23px;height:23px;background:linear-gradient(135deg,#ede1cc 50%,var(--paper) 51%);border-left:1px solid #e5dbca;transform:rotate(0)}.folded-note.unfolded{background:#fbf7ec;cursor:default}.folded-note.unfolded .note-closed{display:none}.folded-note.unfolded .note-open{display:block;animation:page-in .6s ease both}.note-page .primary{font-size:11px}.cake-page{padding-top:22px;padding-bottom:19px}.cake-page h2{font-size:31px;margin-bottom:8px}.cake-page .body-copy{font-size:10px;margin-bottom:0}.cake-scene{width:240px;height:245px;position:relative;margin:10px auto 8px;display:flex;align-items:flex-end;justify-content:center}.cake-scene>img{width:218px;height:231px;object-fit:contain;position:relative;z-index:2;filter:drop-shadow(0 8px 10px #9e7c5020)}.cake-halo{position:absolute;width:210px;height:180px;top:36px;border-radius:50%;background:#f4e9cc;opacity:.4;filter:blur(22px)}.candles{position:absolute;top:4px;left:50%;display:flex;gap:15px;align-items:flex-end;transform:translateX(-50%);z-index:3;height:58px}.candle{height:29px;width:6px;border-radius:2px;background:repeating-linear-gradient(145deg,#e8aeb0 0 4px,#fff7df 4px 7px);box-shadow:1px 1px 2px #94715833;position:relative}.candle:nth-child(2){height:37px;background:repeating-linear-gradient(145deg,#bac9a5 0 4px,#fff7df 4px 7px)}.flame{position:absolute;left:-1px;top:-18px;width:8px;height:14px;border-radius:65% 35% 55% 45%;background:#ffcf6b;box-shadow:0 0 9px 3px #ffd07c55;transform-origin:50% 100%;animation:flicker .7s ease-in-out infinite alternate}.candle:nth-child(2) .flame{animation-delay:.3s}.candle:nth-child(3) .flame{animation-delay:.5s}.cake-spark{position:absolute;color:#ccad79;width:21px;height:21px;z-index:2;animation:float 3s ease-in-out infinite}.spark-left{left:-17px;top:89px}.spark-right{right:-15px;top:147px;width:14px;height:14px;animation-delay:1s}.cake-page .whisper{margin-top:11px}.blown .flame{display:none}.night{--bg:#243840;--paper:#2b4147;--ink:#f4e5c9;--line:#65736d;--rose:#e7b7a4}.night .card-frame{border-color:#6d7b71;box-shadow:0 15px 45px #0001,0 3px 0 -1px #374e50,0 4px 0 #6d7b71}.night .card-frame:before{border-color:#75827355}.night .card-topline,.night .card-bottomline,.night .back-button{color:#b7c1a7}.night .wordmark,.night .sound-toggle{color:#bec8ac}.night .body-copy{color:#c4c7ac}.night .script-label{color:#e2baa2}.night .whisper{color:#c0c7ab}.night footer,.night footer button{color:#a4b39f}.night .primary{background:#e9c6ab;border-color:#e9c6ab;color:#43564c;box-shadow:0 3px 0 #657466}.night .primary:hover{background:#f8dbc2}.night .cake-halo{background:#ead29e;opacity:.2}.night .ambient-flower{opacity:.12}.night .card-page h2{color:#ffe4bb}.night .cake-page .cake-scene{animation:float 5s infinite ease-in-out}.final-actions{display:flex;align-items:center;gap:13px;justify-content:center}.text-button{background:none;border:0;color:#c6cbb4;font-size:10px;padding:10px;text-decoration:underline;text-underline-offset:4px}#fireworks{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}dialog{width:min(430px,calc(100% - 32px));background:#fffcf3;border:1px solid #ded7c4;border-radius:9px;color:#6d7e65;padding:29px 30px 34px;box-shadow:0 20px 80px #35432c22}dialog::backdrop{background:#34443855;backdrop-filter:blur(5px)}.close-button{position:absolute;right:12px;top:9px;border:0;background:none;font-size:25px;color:#8f967e;padding:5px}.about-flower{width:34px;height:34px;display:block;margin:auto;color:#c6af8c}dialog h2{text-align:center;font:24px var(--serif);letter-spacing:2px}dialog p{font-size:12px;line-height:1.9;color:#8e957e}dialog a{color:#8b9a77;font-size:11px;text-underline-offset:5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@keyframes page-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes flicker{to{transform:rotate(5deg) scale(.9,1.1)}}@keyframes float{50%{transform:translateY(-6px)}}@media(min-width:1500px){.site-shell{padding-top:28px}.site-header{height:108px}.card-frame{min-height:650px}.card-page{min-height:515px}.cover{padding:39px 5px}.cake-page{padding-top:30px}.cake-scene{margin-top:16px}}@media(max-width:850px){.site-shell{padding:0 26px}.site-header{height:82px}.card-frame{padding:23px 28px 20px;min-height:590px}.cover{gap:12px;padding:30px 0;min-height:460px}.card-page h1{font-size:44px;letter-spacing:2px}.body-copy{font-size:11px}.primary{font-size:11px;gap:18px;padding:11px 17px}.envelope-scene{height:290px}.envelope-body,.envelope-front{height:160px}.envelope-flap{height:92px;bottom:128px}.envelope-seal{bottom:113px;width:37px;height:37px}.letter-peek{height:160px;top:12px}.envelope-caption{font-size:10px;bottom:27px}.menu-grid{gap:10px}.tile-title{font-size:15px;letter-spacing:.3px}.tile-detail{font-size:9px}.card-page{min-height:460px}.cake-page{padding-top:20px}.cake-scene{height:225px;margin-top:7px}.cake-scene>img{height:215px;width:203px}.candles{top:0}.card-page h2{font-size:31px}.note-open{font-size:12px}}@media(max-width:600px){.site-shell{padding:0 19px}.site-header{height:78px}.wordmark{font-size:8px;letter-spacing:1.7px;gap:9px}.wordmark svg{width:23px;height:23px}.sound-toggle{font-size:9px;padding:8px 0;gap:6px}.sound-toggle>span:first-child{font-size:17px}.card-frame{padding:24px 24px 20px;min-height:650px}.card-topline{font-size:8px;letter-spacing:1.2px;padding-bottom:16px}.card-topline>span:last-child{font-size:8px;letter-spacing:.3px}.card-page{min-height:540px}.cover{flex-direction:column;gap:0;padding:28px 0 17px;text-align:center;min-height:540px}.cover-copy{width:100%;position:static}.script-label{font-size:17px;margin:0 0 13px}.card-page h1{font-size:41px;line-height:1.32;letter-spacing:3px;margin-bottom:14px}.cover .body-copy{font-size:10px;line-height:1.9;margin-bottom:0}.cover .primary{position:absolute;bottom:39px;left:50%;transform:translateX(-50%);white-space:nowrap;min-width:218px;z-index:5;min-height:43px}.cover .primary:hover{transform:translate(-50%,-2px)}.cover .whisper{position:absolute;bottom:13px;left:0;right:0;font-size:8px}.envelope-scene{width:215px;height:185px;margin:28px 0 64px;transform:rotate(-7deg)}.envelope-body,.envelope-front{height:118px;bottom:17px}.envelope-flap{height:67px;bottom:68px}.envelope-seal{bottom:51px;width:31px;height:31px}.envelope-seal svg{width:18px;height:18px}.letter-peek{top:0;height:125px;gap:4px}.letter-peek>svg{width:25px;height:25px}.letter-peek>span{font-size:22px}.envelope-caption{display:none}.star-a{font-size:33px;top:-7px;right:-20px}.star-b{font-size:17px;bottom:39px;left:-18px}.card-bottomline{font-size:8px;padding-top:15px}.back-button{font-size:9px;min-width:60px}.page-dots{gap:7px}.page-dots span{width:3px;height:3px}.page-dots .current{width:13px}.menu-page,.note-page,.cake-page{padding:27px 0 19px}.card-page h2{font-size:28px;line-height:1.45;letter-spacing:2px;margin-bottom:13px}.menu-page .script-label,.note-page .script-label,.cake-page .script-label{font-size:15px;margin-bottom:16px}.menu-page .body-copy{font-size:9px;letter-spacing:.3px;margin-bottom:17px}.menu-grid{display:flex;flex-direction:column;gap:10px;margin:0 auto 21px;max-width:300px}.wish-tile{min-height:74px;border-radius:5px;display:grid;grid-template-columns:55px 1fr;grid-template-rows:1fr 1fr;align-items:center;text-align:left;padding:9px 14px;column-gap:10px;position:relative}.wish-tile>svg{width:48px;height:48px;grid-row:1/3;margin:0}.tile-title{font-size:16px;letter-spacing:1px;margin:0;align-self:end}.tile-hint{font-size:8px;letter-spacing:.5px;margin:5px 0 0;align-self:start}.tile-detail{font-size:9px;letter-spacing:.3px;line-height:1.65;grid-column:2;align-self:start;margin-top:4px}.tile-detail br{display:none}.wish-tile.revealed{transform:none;min-height:83px}.wish-tile.revealed:after{content:'♡';position:absolute;right:12px;top:13px;color:#9aa684;font-size:13px}.menu-page .primary{min-width:196px}.folded-note{min-height:265px;padding:22px 17px;margin-top:23px;margin-bottom:26px}.note-closed{min-height:220px}.note-open{font-size:12px;line-height:2;letter-spacing:.2px}.note-open>span{margin:13px 0}.note-open>span br{display:none}.note-open .letter-salutation{font-size:14px;margin-bottom:15px}.note-open .letter-signature{font-size:11px;margin-top:17px}.note-page .primary{font-size:11px;padding-left:20px;padding-right:20px}.cake-page .body-copy{font-size:9px;letter-spacing:.4px;line-height:1.9;max-width:240px;margin:0 auto}.cake-scene{height:267px;width:250px;margin:21px auto 14px}.cake-scene>img{height:251px;width:237px}.candles{top:10px;gap:16px;height:55px}.candle{height:30px}.candle:nth-child(2){height:39px}.cake-page .whisper{font-size:8px;letter-spacing:.3px;margin-top:15px}.cake-page .primary{min-width:200px}.cake-spark.spark-left{left:0}.cake-spark.spark-right{right:0}.final-actions{flex-direction:column;gap:8px}.final-actions .text-button{font-size:9px;padding:5px}.night .cake-page{padding-top:23px}.night .cake-page h2{font-size:31px}.night .cake-scene{margin-top:16px;margin-bottom:12px;height:246px}.night .cake-scene>img{height:231px;width:218px}.night .candles{top:9px}.night .cake-page .whisper{margin-top:0;margin-bottom:14px}.night .final-actions{margin-top:13px}footer{padding:23px 2px;font-size:8px;line-height:1.8;letter-spacing:.3px;flex-direction:column;gap:5px}footer button{font-size:8px}.ambient-flower.f1{width:100px;height:100px;left:-58px}.ambient-flower.f2{width:80px;height:80px;right:-53px}}@media(max-width:370px){.site-shell{padding:0 12px}.card-frame{padding:22px 20px 19px;min-height:634px}.card-page{min-height:526px}.cover{min-height:526px}.card-page h1{font-size:37px}.wordmark{letter-spacing:1px;font-size:7px}.card-page h2{font-size:26px}.cake-scene{width:225px}.note-open{font-size:11px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
