@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400;1,500&family=Ma+Shan+Zheng&display=swap";:root{font-family:"Noto Serif SC",Songti SC,STSong,Georgia,serif;color:#eee2c9;background:#151713;font-synthesis:none;text-rendering:optimizeLegibility;--gold: #d5b578;--gold-bright: #edcf91;--ink: #4d3d2d;--green: #263d33}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;cursor:pointer}button:focus-visible{outline:1px solid var(--gold-bright);outline-offset:4px}button:disabled{cursor:default}.app{position:relative;width:100%;height:100%;min-height:520px;isolation:isolate;background:#151713}.scene-canvas{position:absolute;inset:0;z-index:0}.scene-canvas canvas{touch-action:none}.scene-vignette{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 53% 47%,transparent 28%,rgba(8,10,8,.13) 58%,rgba(7,8,7,.7) 115%),linear-gradient(180deg,rgba(7,10,9,.36) 0%,transparent 25%,transparent 72%,rgba(9,8,6,.55) 100%)}.film-grain{position:absolute;inset:-50%;z-index:3;pointer-events:none;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");animation:grain .35s steps(2) infinite}@keyframes grain{0%{transform:translate(0)}25%{transform:translate(2%,-1%)}50%{transform:translate(-1%,2%)}75%{transform:translate(1%,1%)}}.topbar{position:absolute;z-index:50;top:0;left:0;width:100%;padding:27px 42px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand{display:flex;gap:13px;align-items:center;padding:0;background:transparent;text-align:left;pointer-events:auto}.brand-mark{width:41px;height:41px;display:grid;place-items:center;position:relative;color:var(--gold);border:1px solid rgba(213,181,120,.38);border-radius:50%}.brand-mark:before,.brand-mark:after{content:"";position:absolute;inset:4px;border:1px dotted rgba(213,181,120,.22);border-radius:50%}.brand-mark i{position:absolute;width:4px;height:4px;background:var(--gold);border-radius:50%;bottom:5px}.brand strong{display:block;font:italic 500 23px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.02em;color:#f0e4ca}.brand small{display:block;margin-top:7px;color:#e5d7b98c;font-size:10px;letter-spacing:.25em}.edition{position:absolute;left:50%;transform:translate(-50%);display:flex;gap:13px;align-items:center;font:10px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.24em;color:#e1d2b470;white-space:nowrap}.edition i{display:block;width:22px;height:1px;background:#d5b5784d}.header-actions{display:flex;align-items:center;gap:22px;pointer-events:auto}.birthday-tag{display:flex;align-items:center;gap:8px;color:#d5bd8d;font:10px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.19em}.sound-toggle{background:#1417135c;border:1px solid rgba(220,198,152,.17);border-radius:30px;height:37px;padding:0 13px;display:flex;align-items:center;gap:8px;color:#eee1c6b3;backdrop-filter:blur(10px);transition:.3s ease}.sound-toggle:hover{border-color:#dcc69873;color:#f3dfb5}.sound-toggle span{font-size:10px;letter-spacing:.1em}.sound-toggle>i{width:4px;height:4px;border-radius:50%;background:#6c6c5f;margin-left:2px}.sound-toggle>i.is-on{background:#d5b578;box-shadow:0 0 8px #d5b578}.hero-copy{position:absolute;z-index:10;top:18%;left:5.2vw;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity .8s ease,transform .8s ease}.hero-copy.is-visible{opacity:1;transform:translateY(0)}.hero-eyebrow{display:flex;align-items:center;gap:12px;color:#c6a977;font:10px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.27em}.hero-eyebrow i{width:31px;height:1px;background:#b89761}.hero-copy h1{margin:23px 0 18px;color:#f1e6ce;font-size:clamp(38px,3.55vw,58px);font-weight:400;line-height:1.35;letter-spacing:.06em;text-shadow:0 3px 30px rgba(0,0,0,.28)}.hero-copy h1 span{color:#d5b77f}.hero-copy p{margin:0;font-size:13px;line-height:2;letter-spacing:.16em;color:#ebdfc799}.hero-signature{margin-top:19px;color:#d2b47da6;font:italic 20px/1 Cormorant Garamond,Georgia,serif;transform:rotate(-5deg);transform-origin:left}.night-note{position:absolute;z-index:10;right:4.5vw;top:19%;text-align:right;pointer-events:none;opacity:0;transition:opacity 1s ease .2s}.night-note.is-visible{opacity:1}.night-note span{font-size:10px;letter-spacing:.24em;color:#dccfb573}.night-note p{margin:10px 0 13px;font-size:13px;letter-spacing:.12em;color:#e6d7b8b8}.night-note i{font:9px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.24em;color:#c4a36c6b}.explore-ui{position:absolute;z-index:30;bottom:49px;left:50%;width:min(870px,calc(100% - 110px));transform:translate(-50%,18px);opacity:0;pointer-events:none;transition:opacity .65s ease,transform .65s ease}.explore-ui.is-visible{opacity:1;transform:translate(-50%);pointer-events:auto}.interaction-hint{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:13px;color:#e8dbbf8c;font-size:10px;letter-spacing:.14em}.interaction-hint i{width:3px;height:3px;margin-left:3px;background:#c5a671;border-radius:50%;animation:hintPulse 2s infinite}@keyframes hintPulse{50%{opacity:.2}}.memory-dock{display:grid;grid-template-columns:repeat(3,1fr);padding:8px;border:1px solid rgba(220,195,145,.19);border-radius:10px;background:linear-gradient(110deg,#231f18d9,#181b16c9);box-shadow:0 20px 55px #0000004d,inset 0 1px #ffffff06;backdrop-filter:blur(18px)}.dock-item{position:relative;display:flex;align-items:center;min-width:0;height:70px;padding:0 18px;gap:13px;text-align:left;background:transparent;border-radius:6px;transition:background .35s ease}.dock-item:not(:last-child):after{content:"";position:absolute;width:1px;height:33px;right:0;background:#d7bc871f}.dock-item:hover{background:#d9b97d12}.dock-number{position:absolute;left:9px;top:7px;color:#c9ad7a59;font:8px/1 Cormorant Garamond,Georgia,serif;letter-spacing:.1em}.dock-icon{width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;border:1px solid rgba(205,175,119,.18);border-radius:50%;color:#cbb07c;transition:.35s ease}.dock-item:hover .dock-icon{color:#f1d8a4;border-color:#cdaf776b;transform:translateY(-2px)}.dock-copy{min-width:0}.dock-copy strong{display:block;color:#e7d9bd;font-size:13px;font-weight:400;letter-spacing:.12em;white-space:nowrap}.dock-copy small{display:block;overflow:hidden;margin-top:7px;color:#dbcdb16b;font-size:9px;letter-spacing:.05em;text-overflow:ellipsis;white-space:nowrap}.dock-arrow{margin-left:auto;flex:0 0 auto;color:#d0b17680;transition:transform .3s}.dock-item:hover .dock-arrow{transform:translate(2px,-2px);color:#d7b97f}.footer-meta{position:absolute;z-index:20;bottom:19px;left:42px;right:42px;display:flex;justify-content:space-between;pointer-events:none;color:#dac8a447;font-size:8px;letter-spacing:.18em}.footer-meta span:first-child{font-family:Cormorant Garamond,Georgia,serif;font-size:9px;letter-spacing:.2em}.pet-cat{position:absolute;z-index:25;right:4.3vw;bottom:167px;display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:30px;background:#1a1d1780;border:1px solid rgba(211,184,132,.16);color:#eadabba6;backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:.4s ease}.pet-cat.is-visible{opacity:1;pointer-events:auto}.pet-cat:hover{color:#edd5a5;border-color:#d3b88466}.pet-cat span{font-size:10px;letter-spacing:.09em}.pet-cat small{margin-left:4px;font:8px Cormorant Garamond,Georgia,serif;letter-spacing:.12em;opacity:.45}.cat-note{position:absolute;z-index:60;right:4.3vw;bottom:207px;display:flex;align-items:center;gap:9px;padding:11px 15px;background:#2b3226e6;border:1px solid rgba(214,185,127,.24);border-radius:6px;color:#e5d1a7;font-size:11px;letter-spacing:.06em;opacity:0;transform:translateY(8px);pointer-events:none;transition:.35s}.cat-note.is-visible{opacity:1;transform:translateY(0)}.back-to-desk{position:absolute;z-index:55;top:105px;left:43px;display:flex;align-items:center;gap:8px;background:transparent;color:#e9d9b8a6;font-size:11px;letter-spacing:.12em}.back-to-desk:hover{color:#f0d7a5}.hotspot-wrap{pointer-events:auto!important}.object-hotspot{display:flex;align-items:center;gap:9px;background:transparent;padding:8px;white-space:nowrap}.hotspot-dot{position:relative;display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(241,213,157,.55);border-radius:50%;box-shadow:0 0 0 5px #debe8012;animation:hotspotPulse 2.8s infinite}.hotspot-dot i{width:5px;height:5px;border-radius:50%;background:#f2d69b;box-shadow:0 0 10px #f6cf83b3}.hotspot-label{display:flex;align-items:center;gap:8px;padding:8px 11px;color:#ead9b6;background:#1d1c15b0;border:1px solid rgba(221,192,135,.22);border-radius:3px;backdrop-filter:blur(8px);font-size:10px;letter-spacing:.12em;box-shadow:0 5px 20px #00000026;transition:.3s}.hotspot-label small{font:8px Cormorant Garamond,Georgia,serif;opacity:.5}.hotspot-label b{font:12px Cormorant Garamond,Georgia,serif;color:#c7a56b}.object-hotspot:hover .hotspot-label{background:#353022e6;border-color:#e6c88c7a}@keyframes hotspotPulse{50%{box-shadow:0 0 0 9px #debe8000}}.cat-zzz{pointer-events:none!important;display:flex;align-items:flex-end;gap:2px;color:#efd6a399;font:italic 18px Cormorant Garamond,Georgia,serif}.cat-zzz span{display:block;animation:zFloat 2.4s infinite}.cat-zzz span:nth-child(2){font-size:14px;animation-delay:.4s}.cat-zzz span:nth-child(3){font-size:10px;animation-delay:.8s}@keyframes zFloat{0%,to{transform:translateY(3px);opacity:.25}50%{transform:translateY(-5px);opacity:.9}}.modal-layer{position:absolute;inset:0;z-index:100;display:grid;place-items:center;animation:modalIn .55s ease both}.modal-backdrop{position:absolute;inset:0;background:#0a0c0ab3;backdrop-filter:blur(11px) saturate(.7)}@keyframes modalIn{0%{opacity:0}to{opacity:1}}.round-close{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:transparent}.letter-paper{position:relative;width:min(650px,calc(100vw - 70px));max-height:88vh;overflow-y:auto;padding:49px 62px 38px;color:var(--ink);background-color:#e4d5b5;background-image:linear-gradient(91deg,rgba(108,79,44,.035) 1px,transparent 1px),radial-gradient(circle at 20% 10%,#f0e4c9,transparent 55%),linear-gradient(130deg,#e7d9bb,#d8c6a3);background-size:5px 100%,100% 100%,100% 100%;box-shadow:0 35px 100px #0000008c,0 0 0 1px #fff4d94d,inset 0 0 70px #694a2514;transform:rotate(-.55deg);animation:paperOpen .85s cubic-bezier(.22,.75,.25,1) both;scrollbar-width:thin;scrollbar-color:#ab9670 transparent}@keyframes paperOpen{0%{opacity:0;transform:translateY(50px) rotate(2deg) scale(.88)}to{opacity:1;transform:translateY(0) rotate(-.55deg) scale(1)}}.paper-grain{position:absolute;inset:0;opacity:.1;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='.6' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.ink-close{position:absolute;z-index:2;top:18px;right:19px;color:#4c3a278c;border:1px solid rgba(86,63,38,.18)}.ink-close:hover{color:#5e3b28;background:#563f260f}.letter-postmark{position:absolute;right:54px;top:61px;width:78px;height:78px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid rgba(126,68,48,.28);border-radius:50%;color:#7e44306e;transform:rotate(13deg)}.letter-postmark:before{content:"";position:absolute;inset:5px;border:1px dashed currentColor;border-radius:50%}.letter-postmark span{font:15px Cormorant Garamond,Georgia,serif;letter-spacing:.12em}.letter-postmark i{margin-top:4px;font:6px Cormorant Garamond,Georgia,serif;letter-spacing:.1em}.letter-heading{position:relative}.letter-heading>span{color:#96784f;font:10px Cormorant Garamond,Georgia,serif;letter-spacing:.27em}.letter-heading h2{margin:24px 0 8px;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,cursive;font-size:27px;font-weight:400;letter-spacing:.08em}.letter-heading p{margin:0 0 20px;color:#55412a8c;font-size:11px;letter-spacing:.12em}.letter-body{position:relative;min-height:280px;white-space:pre-line;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,cursive;font-size:18px;line-height:1.95;letter-spacing:.055em;color:#514131;cursor:text}.type-cursor{display:inline-block;width:1px;height:1.1em;margin-left:2px;vertical-align:-.15em;background:#6c5136;animation:cursorBlink .8s infinite}.type-cursor.is-done{display:none}@keyframes cursorBlink{50%{opacity:0}}.letter-signature{display:flex;flex-direction:column;align-items:flex-end;margin-top:14px;padding-right:18px;opacity:0;transform:translateY(6px);transition:1s ease;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,cursive}.letter-signature.is-visible{opacity:1;transform:translateY(0)}.letter-signature span{color:#5141318c;font-size:12px}.letter-signature strong{margin-top:5px;font-size:19px;font-weight:400}.letter-signature svg{margin-top:7px;color:#914e3d}.letter-wax{position:absolute;right:38px;bottom:48px;width:47px;height:47px;display:grid;place-items:center;border-radius:46% 52% 48% 50%;color:#edc19999;background:radial-gradient(circle at 35% 25%,#a75b49,#762e27 70%);box-shadow:2px 5px 8px #48261847,inset 0 0 0 4px #5c1e1940,inset 0 0 0 5px #de896b2e;transform:rotate(-12deg);opacity:.8}.letter-wax span{font:10px Cormorant Garamond,Georgia,serif;letter-spacing:.08em}.letter-return{position:relative;display:flex;align-items:center;gap:8px;margin-top:24px;padding:10px 0;color:#72573a;background:transparent;border-bottom:1px solid rgba(100,75,45,.25);font-size:11px;letter-spacing:.1em}.letter-return:hover{color:#9a4c36;border-color:#9a4c36}.letter-page-mark{position:absolute;bottom:15px;left:50%;color:#58422b4d;font:9px Cormorant Garamond,Georgia,serif}.modal-side-note{position:absolute;right:28px;top:50%;margin:0;color:#e0cca561;font-size:10px;letter-spacing:.35em;writing-mode:vertical-rl;transform:translateY(-50%)}.album-layer{display:block}.album-heading{position:absolute;z-index:2;top:12%;left:50%;transform:translate(-50%);width:100%;text-align:center;pointer-events:none}.album-heading>span{color:#b99a65;font:9px Cormorant Garamond,Georgia,serif;letter-spacing:.3em}.album-heading h2{margin:10px 0 7px;font-size:25px;font-weight:400;letter-spacing:.15em;color:#eddfc1}.album-heading p{margin:0;font-size:10px;letter-spacing:.13em;color:#e1d0ae75}.album-close{position:absolute;z-index:4;top:103px;right:40px;display:flex;align-items:center;gap:7px;padding:9px 12px;background:#201f1873;border:1px solid rgba(217,190,135,.18);border-radius:30px;color:#e8d8b6a8;font-size:10px;letter-spacing:.1em}.album-close:hover{color:#f0d8a6;border-color:#d9be8766}.album-book-shell{position:absolute;z-index:2;top:27%;left:50%;width:min(920px,83vw);height:min(500px,55vh);padding:12px;transform:translate(-50%);background:#352117;border:1px solid #795737;border-radius:7px 7px 12px 12px;box-shadow:0 40px 80px #0000007a,inset 0 0 0 4px #2a1a13,inset 0 0 0 5px #b98a4a47;perspective:1800px;animation:albumArrive .8s ease both}@keyframes albumArrive{0%{opacity:0;transform:translate(-50%,35px) scale(.94)}to{opacity:1;transform:translate(-50%) scale(1)}}.album-book{position:relative;display:grid;grid-template-columns:1fr 1fr;width:100%;height:100%;transform-style:preserve-3d;box-shadow:0 4px 8px #00000059}.album-spine{position:absolute;z-index:5;left:50%;top:0;bottom:0;width:18px;transform:translate(-50%);pointer-events:none;background:linear-gradient(90deg,#4b341c2b,#301f1059 45%,#fff6da2e 53%,#462f192b);mix-blend-mode:multiply}.memory-page{position:relative;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;padding:24px 27px 17px;background-color:#ded0ae;background-image:radial-gradient(circle at 30% 20%,rgba(255,248,222,.48),transparent 60%),repeating-linear-gradient(0deg,rgba(97,72,39,.025) 0,rgba(97,72,39,.025) 1px,transparent 1px,transparent 4px);overflow:hidden}.memory-page.left{border-radius:2px 0 0 3px;box-shadow:inset -14px 0 20px #4b311714}.memory-page.right{border-radius:0 2px 3px 0;box-shadow:inset 14px 0 20px #4b311714}.page-corner{position:absolute;top:8px;width:18px;height:18px;border-top:1px solid rgba(128,91,48,.35)}.left .page-corner{left:9px;border-left:1px solid rgba(128,91,48,.35)}.right .page-corner{right:9px;border-right:1px solid rgba(128,91,48,.35)}.polaroid{position:relative;width:86%;padding:10px 10px 12px;background:#f1e7cf;box-shadow:1px 5px 13px #412b1738;transform:rotate(-1.4deg)}.right .polaroid{transform:rotate(1.3deg)}.photo-wrap{width:100%;aspect-ratio:4 / 3;overflow:hidden;background:#8f826a}.photo-wrap img{display:block;width:100%;height:100%;object-fit:cover;filter:sepia(.12) saturate(.85) contrast(.96);user-select:none}.photo-caption{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;padding:10px 2px 0;color:#5c4935}.photo-caption strong{font-family:Ma Shan Zheng,Kaiti SC,STKaiti,cursive;font-size:16px;font-weight:400;white-space:nowrap}.photo-caption span{font-size:8px;letter-spacing:.05em;opacity:.62;white-space:nowrap}.photo-tape{position:absolute;width:55px;height:17px;left:50%;top:-8px;transform:translate(-50%) rotate(1deg);background:#bfa67473;box-shadow:inset 0 0 4px #eddaad66}.memory-note{max-width:88%;margin:18px 0 0;text-align:center;color:#4d3b28bf;font-family:Ma Shan Zheng,Kaiti SC,STKaiti,cursive;font-size:14px;line-height:1.65;letter-spacing:.05em}.album-page-number{position:absolute;bottom:10px;color:#5b432761;font:9px Cormorant Garamond,Georgia,serif}.left .album-page-number{left:16px}.right .album-page-number{right:16px}.album-controls{position:absolute;z-index:3;bottom:7.5%;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:36px}.album-controls button{display:flex;align-items:center;gap:9px;padding:10px 13px;color:#d5bd90;background:transparent;font-size:11px;letter-spacing:.1em;transition:.25s}.album-controls button:hover:not(:disabled){color:#ffe3aa;transform:translate(2px)}.album-controls button:first-child:hover:not(:disabled){transform:translate(-2px)}.album-controls button:disabled{opacity:.2}.album-progress{display:flex;align-items:center;gap:10px;color:#ddc79da6;font:12px Cormorant Garamond,Georgia,serif}.album-progress svg{margin-right:5px;opacity:.55}.album-progress i{opacity:.3}.album-keyboard-hint{position:absolute;z-index:3;bottom:3%;left:50%;transform:translate(-50%);margin:0;color:#dac7a240;font-size:8px;letter-spacing:.14em;white-space:nowrap}.ceremony-panel{position:absolute;z-index:35;left:50%;bottom:52px;width:min(760px,calc(100% - 80px));transform:translate(-50%);padding:16px 22px 19px;border:1px solid rgba(224,194,134,.23);border-radius:9px;background:linear-gradient(120deg,#231f17de,#181b16d1);box-shadow:0 20px 60px #00000059;backdrop-filter:blur(18px);animation:ceremonyIn .65s ease both}@keyframes ceremonyIn{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.ceremony-steps{display:flex;align-items:center;justify-content:center;gap:13px;padding-bottom:13px;border-bottom:1px solid rgba(218,188,130,.1);color:#ddcdac52;font-size:9px;letter-spacing:.12em}.ceremony-steps span{display:flex;align-items:center;gap:6px}.ceremony-steps span.is-done{color:#cdb27e}.ceremony-steps i{font:8px Cormorant Garamond,Georgia,serif;opacity:.6}.ceremony-steps b{width:30px;height:1px;background:#d6b67a21}.ceremony-action{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:17px}.action-eyebrow{color:#c4a3698c;font:8px Cormorant Garamond,Georgia,serif;letter-spacing:.22em}.ceremony-action h3{margin:6px 0 5px;color:#eadcbf;font-size:16px;font-weight:400;letter-spacing:.1em}.ceremony-action p{margin:0;color:#e0cfae73;font-size:10px;letter-spacing:.08em}.primary-gold,.secondary-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 18px;border-radius:4px;white-space:nowrap;font-size:11px;letter-spacing:.09em;transition:.3s ease}.primary-gold{color:#342a1c;background:linear-gradient(135deg,#e4ca94,#bd965d);border:1px solid #e4c88e;box-shadow:0 5px 20px #b78b4b21}.primary-gold:hover:not(:disabled){background:linear-gradient(135deg,#f0dbab,#cba76c);transform:translateY(-2px);box-shadow:0 8px 25px #b78b4b3d}.primary-gold:disabled{opacity:.45}.secondary-ghost{background:#e0c79409;border:1px solid rgba(224,199,148,.25);color:#ddc89f}.secondary-ghost:hover{background:#e0c79417}.wish-inscription{position:absolute;z-index:30;top:15%;left:50%;display:flex;align-items:center;gap:18px;color:#e5c887;transform:translate(-50%);opacity:1;pointer-events:none;text-shadow:0 0 24px rgba(238,190,99,.35);white-space:nowrap}.wish-inscription.is-visible{opacity:1;transform:translate(-50%)}.wish-inscription span{font-size:17px;letter-spacing:.22em}.wish-inscription svg{opacity:.6}.blow-control{padding-top:14px}.blow-button{--blow-progress: 0deg;position:relative;width:100%;display:flex;align-items:center;gap:15px;padding:0 8px;background:transparent;text-align:left;touch-action:none;user-select:none}.blow-ring{position:relative;width:51px;height:51px;flex:0 0 51px;padding:2px;display:grid;place-items:center;border-radius:50%;background:conic-gradient(#e2c27f var(--blow-progress),rgba(220,192,137,.13) 0)}.blow-ring:after{content:"";position:absolute;inset:-4px;border:1px solid rgba(220,192,137,.1);border-radius:50%}.blow-ring i{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;color:#d9bd86;background:#292820}.blow-copy strong{display:block;color:#ead8b3;font-size:13px;font-weight:400;letter-spacing:.1em}.blow-copy small{display:block;margin-top:6px;color:#cdae776b;font:8px Cormorant Garamond,Georgia,serif;letter-spacing:.2em}.blow-button>b{margin-left:auto;min-width:38px;color:#dec28b80;font:15px Cormorant Garamond,Georgia,serif}.blow-control>p{margin:10px 0 0;text-align:center;color:#decdac52;font-size:9px;letter-spacing:.12em}.cake-back{top:100px}.birthday-finale{position:absolute;inset:0;z-index:32;display:grid;place-items:center;opacity:1;background:radial-gradient(ellipse at center,#261f131f,#0b0d0a9e);backdrop-filter:blur(2px)}@keyframes finaleIn{0%{opacity:0}to{opacity:1}}.finale-halo{position:absolute;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(226,182,96,.12),transparent 65%);animation:haloBreath 4s infinite}@keyframes haloBreath{50%{transform:scale(1.1);opacity:.6}}.finale-message{position:relative;text-align:center;padding:30px;text-shadow:0 3px 25px rgba(0,0,0,.45)}.finale-eyebrow{display:flex;align-items:center;justify-content:center;gap:15px;color:#d5b679;font:10px Cormorant Garamond,Georgia,serif;letter-spacing:.3em}.finale-eyebrow i{width:38px;height:1px;background:#d5b67973}.finale-heart{margin:27px 0 15px;color:#d4ad69}.finale-message h2{margin:0;color:#f2dfb7;font-size:clamp(38px,4.6vw,65px);font-weight:400;letter-spacing:.14em}.finale-message p{margin:24px 0 13px;color:#eedab3c7;font-size:15px;line-height:2;letter-spacing:.18em}.finale-message>small{color:#e1cca46b;font-size:10px;letter-spacing:.13em}.finale-actions{display:flex;justify-content:center;gap:12px;margin-top:34px}.confetti{position:absolute;inset:0;z-index:45;overflow:hidden;pointer-events:none}.confetti i{position:absolute;top:-8%;width:7px;height:13px;opacity:0;animation-name:confettiFall;animation-timing-function:cubic-bezier(.2,.55,.6,1);animation-fill-mode:forwards}.confetti i.star{width:8px;height:8px;clip-path:polygon(50% 0,62% 35%,100% 38%,70% 60%,80% 100%,50% 76%,18% 100%,28% 61%,0 38%,38% 35%)}@keyframes confettiFall{0%{opacity:0;transform:translate3d(0,-5vh,0) rotate(0)}8%{opacity:.85}55%{transform:translate3d(35px,55vh,0) rotate(280deg)}to{opacity:0;transform:translate3d(-25px,112vh,0) rotate(650deg)}}.loading-screen{position:absolute;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#181b16;transition:opacity 1s ease,visibility 1s}.loading-screen.is-ready{opacity:0;visibility:hidden;pointer-events:none}.loading-heart{width:72px;height:72px;display:grid;place-items:center;margin-bottom:24px;border:1px solid rgba(213,181,120,.3);border-radius:50%;color:#c7a56c;animation:loadingHeart 2s infinite}@keyframes loadingHeart{50%{transform:scale(1.06);box-shadow:0 0 40px #cda65e14}}.loading-screen>span{color:#ae8f5b;font:9px Cormorant Garamond,Georgia,serif;letter-spacing:.3em}.loading-screen h2{margin:13px 0 25px;color:#e5d4b2;font-size:20px;font-weight:400;letter-spacing:.15em}.loading-screen small{margin-top:16px;color:#dcc9a459;font-size:9px;letter-spacing:.14em}.loading-line{width:170px;height:1px;background:#d6b5771f;overflow:hidden}.loading-line i{display:block;width:45%;height:100%;background:#c5a269;animation:loadingLine 1.3s ease-in-out infinite}@keyframes loadingLine{0%{transform:translate(-110%)}to{transform:translate(330%)}}@media(max-width:1050px){.edition{display:none}.hero-copy{left:4vw;top:17%}.hero-copy h1{font-size:41px}.night-note{right:3.5vw}.explore-ui{width:calc(100% - 70px)}.dock-item{padding:0 12px;gap:10px}.dock-icon{width:35px;height:35px;flex-basis:35px}.dock-copy small{max-width:140px}.album-book-shell{width:90vw}}@media(max-width:700px){.app{min-height:480px}.topbar{padding:19px 18px}.brand{gap:9px}.brand-mark{width:34px;height:34px}.brand strong{font-size:19px}.brand small{margin-top:5px;font-size:8px;letter-spacing:.16em}.birthday-tag{display:none}.sound-toggle{width:36px;height:36px;justify-content:center;padding:0}.sound-toggle span,.sound-toggle>i{display:none}.hero-copy{top:13.5%;left:23px}.hero-eyebrow{font-size:8px;gap:8px}.hero-eyebrow i{width:22px}.hero-copy h1{margin:14px 0 11px;font-size:clamp(31px,8.7vw,40px);line-height:1.32}.hero-copy p{font-size:10px;line-height:1.9}.hero-signature{margin-top:12px;font-size:16px}.night-note{display:none}.explore-ui{width:calc(100% - 28px);bottom:38px}.interaction-hint{margin-bottom:10px;font-size:9px}.memory-dock{grid-template-columns:1fr;padding:5px;border-radius:9px}.dock-item{height:51px;padding:0 15px;gap:12px}.dock-item:not(:last-child):after{width:calc(100% - 70px);height:1px;right:15px;bottom:0;top:auto}.dock-number{position:static;width:16px;font-size:8px}.dock-icon{width:30px;height:30px;flex-basis:30px}.dock-icon svg{width:17px}.dock-copy{display:flex;align-items:center;gap:12px;flex:1}.dock-copy strong{font-size:11px}.dock-copy small{margin:0;max-width:none;font-size:8px}.dock-arrow{width:14px}.footer-meta{left:18px;right:18px;bottom:15px;font-size:6px}.footer-meta span:first-child{font-size:7px}.pet-cat{right:18px;bottom:244px;padding:8px 10px}.pet-cat span{font-size:9px}.pet-cat small{display:none}.cat-note{right:18px;bottom:283px;font-size:9px}.hotspot-label{padding:6px 8px;font-size:8px;gap:5px}.hotspot-label small{display:none}.hotspot-dot{width:17px;height:17px}.object-hotspot{gap:5px;padding:5px}.back-to-desk{top:77px;left:20px;font-size:10px}.letter-paper{width:calc(100vw - 28px);max-height:86vh;padding:42px 28px 32px}.letter-heading h2{margin-top:20px;font-size:24px}.letter-postmark{width:58px;height:58px;right:28px;top:62px;opacity:.6}.letter-postmark span{font-size:11px}.letter-postmark i{font-size:5px}.letter-heading p{font-size:9px}.letter-body{min-height:290px;font-size:16px;line-height:1.95}.letter-wax{right:25px;bottom:50px;width:39px;height:39px}.letter-signature{padding-right:42px}.modal-side-note{display:none}.album-heading{top:12%}.album-heading h2{font-size:21px}.album-heading p{font-size:8px}.album-close{top:74px;right:17px;padding:7px 9px;font-size:9px}.album-book-shell{top:26%;width:calc(100vw - 24px);height:54vh;min-height:350px;padding:6px}.memory-page{padding:18px 8px 15px}.polaroid{width:94%;padding:6px 6px 8px}.photo-wrap{aspect-ratio:3 / 4}.photo-caption{display:block;padding-top:7px;text-align:center}.photo-caption strong{display:block;font-size:13px}.photo-caption span{display:block;margin-top:3px;font-size:6px}.photo-tape{width:38px;height:12px;top:-5px}.memory-note{max-width:98%;margin-top:12px;font-size:11px;line-height:1.55}.album-controls{bottom:7%;gap:17px}.album-controls button{gap:5px;padding:8px;font-size:10px}.album-progress{gap:7px}.album-keyboard-hint{display:none}.album-spine{width:10px}.wish-inscription{top:17%;gap:9px}.wish-inscription span{font-size:12px;letter-spacing:.13em}.wish-inscription svg{width:13px}.ceremony-panel{bottom:35px;width:calc(100% - 28px);padding:13px 15px 15px}.ceremony-steps{gap:8px;font-size:8px}.ceremony-steps b{width:17px}.ceremony-action{flex-direction:column;align-items:stretch;gap:14px;text-align:center}.ceremony-action h3{font-size:14px}.ceremony-action p{font-size:9px}.ceremony-action .primary-gold{align-self:center}.blow-copy strong{font-size:11px}.blow-copy small{font-size:7px}.blow-ring{width:46px;height:46px;flex-basis:46px}.blow-control>p{font-size:8px}.finale-message{padding:20px}.finale-message h2{font-size:37px;letter-spacing:.08em}.finale-message p{font-size:12px}.finale-message>small{font-size:8px}.finale-eyebrow{font-size:8px;letter-spacing:.2em}.finale-actions{margin-top:26px}.finale-actions button{padding:0 13px;font-size:10px}.finale-halo{width:400px;height:400px}}@media(max-height:720px)and (min-width:701px){.hero-copy{top:16%}.hero-copy h1{font-size:40px;margin:15px 0 10px}.hero-copy p{font-size:11px}.hero-signature{margin-top:10px}.explore-ui{bottom:37px}.dock-item{height:59px}.interaction-hint{margin-bottom:8px}.footer-meta{bottom:12px}.pet-cat{bottom:139px}.album-heading{top:13%}.album-heading h2{margin:7px 0 3px;font-size:21px}.album-book-shell{top:28%;height:52vh}.memory-page{padding-top:16px}.polaroid{width:72%}.photo-wrap{aspect-ratio:16 / 9}.memory-note{margin-top:10px;font-size:12px}.album-controls{bottom:7%}.album-keyboard-hint{display:none}.letter-paper{max-height:91vh;padding-top:35px}.letter-heading h2{margin-top:15px}.letter-body{min-height:230px;font-size:16px;line-height:1.8}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.film-grain{animation:none}}.scene-vignette{background:radial-gradient(ellipse at 52% 46%,transparent 32%,rgba(8,10,8,.08) 62%,rgba(7,8,7,.42) 115%),linear-gradient(180deg,rgba(7,10,9,.18) 0%,transparent 25%,transparent 76%,rgba(9,8,6,.3) 100%)}.hotspot-label{display:none}.sound-toggle{width:41px;height:41px;justify-content:center;padding:0;gap:7px}.explore-ui{width:auto;bottom:32px}.memory-dock{display:flex;gap:7px;padding:6px;border-radius:40px;background:#1d1d1794}.dock-item{width:46px;height:46px;padding:0;justify-content:center;border-radius:50%}.dock-item:not(:last-child):after{display:none}.dock-icon{width:38px;height:38px;flex-basis:38px;border-color:transparent}.dock-item:hover .dock-icon{border-color:#cdaf7740}.pet-cat{right:34px;bottom:34px;width:42px;height:42px;justify-content:center;padding:0}.cat-zzz{gap:4px}.cat-zzz span,.cat-zzz span:nth-child(2),.cat-zzz span:nth-child(3){width:4px;height:4px;border-radius:50%;background:#efd6a3a6;font-size:0}.cat-speech-anchor{pointer-events:none!important}.cat-speech{position:relative;white-space:nowrap;padding:10px 16px;color:#684633;background:#f5e8ccf7;border:1px solid rgba(177,133,77,.75);border-radius:17px 17px 17px 5px;box-shadow:0 7px 24px #1f120a3d,inset 0 0 16px #ffffff40;font:14px/1.4 Ma Shan Zheng,Kaiti SC,KaiTi,cursive;letter-spacing:.045em;animation:catBubbleIn .36s cubic-bezier(.2,.85,.25,1.2) both,catBubbleOut .55s ease 4.55s forwards}.cat-speech:after{content:"";position:absolute;left:23px;bottom:-6px;width:11px;height:11px;background:inherit;border-right:1px solid rgba(177,133,77,.75);border-bottom:1px solid rgba(177,133,77,.75);transform:rotate(45deg)}@keyframes catBubbleIn{0%{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes catBubbleOut{to{opacity:0;transform:translateY(-5px) scale(.97)}}@media(max-width:700px){.explore-ui{width:auto;bottom:27px}.memory-dock{padding:5px;gap:5px}.dock-item{width:43px;height:43px}.pet-cat{right:18px;bottom:27px;width:40px;height:40px}.sound-toggle{width:36px;height:36px}.cat-speech{padding:8px 12px;font-size:12px}}
