:root{--serif:"Cormorant Garamond", Georgia, "Times New Roman", serif;--sans:"Nunito Sans", "Segoe UI", system-ui, sans-serif;--ease:cubic-bezier(.22, .61, .36, 1);--ink:#4a3138;--ink-soft:#7c5d67;--rose:#c04f7d;--rose-deep:#9c3862;--bg:radial-gradient(circle at 50% 0%, #fff5f0 0%, transparent 55%), linear-gradient(165deg, #fdeef2 0%, #f7dbe6 45%, #f2cddd 100%);--overlay-bg:radial-gradient(circle at 50% 18%, #fff4f8 0%, transparent 60%), linear-gradient(160deg, #fbe6ee 0%, #f4d2e0 55%, #efc7d9 100%);--card-bg:#fffafc8c;--card-bg-solid:#fffafce6;--card-border:#ffffffa6;--env-body:linear-gradient(158deg, #fff1f7 0%, #f4c4da 78%);--env-flap:linear-gradient(180deg, #f8cfe0 0%, #ec9fc0 100%);--env-flap-inner:linear-gradient(180deg, #f6c1d6 0%, #efaecb 100%);--env-border:#b4608759;--env-pocket-light:linear-gradient(180deg, #ffffff8c, #ffecf4e6);--env-pocket-seam:#9c386238;--shadow-sm:0 6px 18px #78375524;--shadow-md:0 18px 40px #78375533;--shadow-lg:0 30px 70px #602c4647}:root[data-theme=dark]{--ink:#f4e5ec;--ink-soft:#d3aec0;--rose:#ec87ac;--rose-deep:#f6a9c6;--bg:radial-gradient(circle at 50% 8%, #3a1a2a 0%, transparent 58%), linear-gradient(165deg, #241019 0%, #1b0d13 55%, #140a0f 100%);--overlay-bg:radial-gradient(circle at 50% 18%, #40202f 0%, transparent 62%), linear-gradient(160deg, #2a121d 0%, #1d0e15 55%, #160a10 100%);--card-bg:#2e18228c;--card-bg-solid:#26141ce6;--card-border:#ffd2e229;--env-body:linear-gradient(158deg, #4a2333 0%, #35182437 78%, #2c1420 100%);--env-flap:linear-gradient(180deg, #5a2a3d 0%, #421f2e 100%);--env-flap-inner:linear-gradient(180deg, #6b3348 0%, #4d2436 100%);--env-border:#ec87ac4d;--env-pocket-light:linear-gradient(180deg, #5a2d3ea6, #3a1c28e6);--env-pocket-seam:#ec87ac40;--shadow-sm:0 6px 18px #00000059;--shadow-md:0 18px 40px #00000073;--shadow-lg:0 30px 70px #0000008c}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);min-height:100%;transition:background .4s var(--ease)}body{min-height:100vh;font-family:var(--sans);color:var(--ink);transition:color .4s var(--ease);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:0 0;overflow:hidden}.tool-button{z-index:40;border:1px solid var(--card-border);background:var(--card-bg);-webkit-backdrop-filter:blur(12px);width:46px;height:46px;color:var(--rose-deep);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .3s var(--ease), background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);border-radius:50%;place-items:center;font-size:1.2rem;line-height:1;display:grid;position:fixed;top:18px}.tool-button:active{transform:scale(.96)}#customize-button{left:18px}#customize-button:hover{transform:scale(1.06)}.theme-toggle{right:18px}.theme-toggle:hover{transform:rotate(-18deg)scale(1.06)}.customize-panel{z-index:50;-webkit-backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .35s var(--ease), visibility .35s var(--ease);background:#28121c80;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.customize-panel.open{opacity:1;visibility:visible}.customize-sheet{background:var(--card-bg-solid);border:1px solid var(--card-border);width:min(94vw,440px);max-height:90vh;box-shadow:var(--shadow-lg);transition:transform .35s var(--ease);border-radius:22px;padding:26px;overflow-y:auto;transform:translateY(16px)scale(.98)}.customize-panel.open .customize-sheet{transform:translateY(0)scale(1)}.customize-head{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.customize-head h2{font-family:var(--serif);color:var(--rose-deep);font-size:1.7rem;font-weight:600}.customize-close{background:var(--rose-veil);width:34px;height:34px;color:var(--rose-deep);cursor:pointer;transition:background .2s var(--ease);border:none;border-radius:50%;place-items:center;font-size:.95rem;display:grid}.customize-close:hover{background:#c04f7d3d}.field{margin-bottom:18px;display:block}.field-label{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:7px;font-size:.76rem;font-weight:700;display:block}.field input[type=text],.field textarea{width:100%;font-family:var(--sans);color:var(--ink);background:var(--card-bg);border:1px solid var(--card-border);transition:border-color .2s var(--ease), box-shadow .2s var(--ease);border-radius:12px;outline:none;padding:11px 14px;font-size:1rem}.field textarea{resize:vertical;line-height:1.5}.field input[type=text]:focus,.field textarea:focus{border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-veil)}.photo-upload{border:1.5px dashed var(--card-border);cursor:pointer;transition:border-color .2s var(--ease);border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:16px;display:flex;position:relative}.photo-upload:hover{border-color:var(--rose)}.photo-upload img{max-width:160px;max-height:160px;box-shadow:var(--shadow-sm);border-radius:10px;display:none}.photo-upload img.has-photo{display:block}.photo-upload-hint{color:var(--ink-soft);font-size:.9rem}.photo-upload input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.customize-actions{gap:12px;margin-top:24px;display:flex}.primary-button,.ghost-button{font-family:var(--sans);cursor:pointer;transition:transform .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease);border-radius:999px;flex:1;padding:12px 18px;font-size:.98rem;font-weight:700}.primary-button{color:#fff;background:linear-gradient(120deg, var(--rose-deep), var(--rose));box-shadow:var(--shadow-sm);border:none}.primary-button:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.ghost-button{border:1px solid var(--card-border);color:var(--ink-soft);background:0 0}.ghost-button:hover{color:var(--rose-deep);border-color:var(--rose)}.share-button{width:100%;margin-top:12px}.share-button:disabled{opacity:.65;cursor:default;box-shadow:var(--shadow-sm);transform:none}.share-result{background:var(--rose-veil);border-radius:14px;margin-top:16px;padding:14px}.share-hint{color:var(--ink-soft);text-align:center;margin-bottom:10px;font-size:.86rem}.share-row{gap:8px;display:flex}.share-row input{min-width:0;font-family:var(--sans);color:var(--ink);background:var(--card-bg-solid);border:1px solid var(--card-border);border-radius:10px;outline:none;flex:1;padding:9px 12px;font-size:.9rem}.share-row .ghost-button{flex:none;padding:9px 18px}.intro-overlay{z-index:30;background:var(--overlay-bg);transition:opacity .6s var(--ease), visibility .6s var(--ease), background .4s var(--ease);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.intro-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.intro-content{text-align:center;flex-direction:column;align-items:center;width:min(92vw,480px);display:flex}.envelope-stage{perspective:1200px;width:340px;height:400px;position:relative}.envelope{cursor:pointer;background:0 0;border:none;outline:none;width:300px;height:198px;position:absolute;bottom:8px;left:50%;overflow:hidden;transform:translate(-50%)}.envelope.open,.envelope.released{overflow:visible}.envelope.released .envelope-body,.envelope.released .envelope-flap{opacity:0;pointer-events:none}.envelope-body{z-index:1;background:var(--env-body);border:1px solid var(--env-border);box-shadow:var(--shadow-md);transition:opacity .3s var(--ease);border-radius:16px;position:absolute;inset:0}.envelope-body:before,.envelope-body:after{content:"";border-radius:16px;position:absolute;inset:0}.envelope-body:before{clip-path:polygon(0 100%,50% 46%,100% 100%);background:var(--env-pocket-light)}.envelope-body:after{clip-path:polygon(0 100%,6% 100%,50% 52%,94% 100%,100% 100%,50% 46%);background:var(--env-pocket-seam)}.envelope-flap{z-index:3;transform-origin:top;width:100%;height:112px;transition:transform .9s var(--ease), opacity .3s var(--ease);clip-path:polygon(0 0,50% 100%,100% 0);background:var(--env-flap);backface-visibility:visible;border-radius:16px 16px 0 0;position:absolute;top:0;left:0;box-shadow:0 4px 8px #78284629}.envelope.open .envelope-flap{z-index:0;background:var(--env-flap-inner);transform:rotateX(180deg);box-shadow:0 -3px 10px #7828461f}.envelope-letter{display:none}.photo-card{z-index:2;width:178px;box-shadow:var(--shadow-md);transform-origin:bottom;opacity:0;pointer-events:none;transition:transform .9s var(--ease), opacity .5s var(--ease), box-shadow .5s var(--ease);background:0 0;border-radius:8px;padding:0;position:absolute;bottom:30px;left:50%;transform:translate(-50%)translateY(46px)scale(.7)}.photo-card img{border-radius:8px;width:100%;height:auto;display:block}.photo-card.slide-out{opacity:1;z-index:4;transform:translate(-50%)translateY(-52px)scale(.8)}.photo-card.upright{opacity:1;z-index:5;width:252px;box-shadow:var(--shadow-lg);pointer-events:auto;cursor:default;border-radius:10px;padding:0;bottom:78px;transform:translate(-50%)translateY(0)scale(1)}.intro-text{min-height:2.6em;font-family:var(--sans);color:var(--ink-soft);max-width:34ch;transition:color .3s var(--ease);margin-top:24px;font-size:1.04rem;font-weight:600;line-height:1.5}.memory-caption{opacity:0;max-height:0;color:var(--rose-deep);letter-spacing:.22em;text-transform:uppercase;transition:opacity .4s var(--ease), max-height .4s var(--ease), margin .4s var(--ease), color .3s var(--ease);pointer-events:none;margin-top:6px;font-size:.76rem;font-weight:700;overflow:hidden}.memory-caption.visible{opacity:1;max-height:2em;margin-top:16px}.reveal-button,.flower-only-button{font-family:var(--sans);background:linear-gradient(120deg, var(--rose-deep), var(--rose));color:#fff;letter-spacing:.02em;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .25s var(--ease), box-shadow .25s var(--ease), opacity .4s var(--ease);border:none;border-radius:999px;font-weight:700}.reveal-button:hover,.flower-only-button:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.reveal-button:active,.flower-only-button:active{transform:translateY(0)}.reveal-button{opacity:0;pointer-events:none;margin-top:24px;padding:14px 32px;font-size:1rem;transform:translateY(12px)}.reveal-button.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.reveal-button.visible:hover{transform:translateY(-2px)}#gift-app{opacity:0;visibility:hidden;transition:opacity .7s var(--ease)}#gift-app.visible{opacity:1;visibility:visible}.card-container{pointer-events:none;z-index:10;width:min(90%,560px);transition:opacity .4s var(--ease), visibility .4s var(--ease);position:absolute;bottom:7%;left:50%;transform:translate(-50%)}.card-container.hidden{opacity:0;visibility:hidden;pointer-events:none}.glass-card{background:var(--card-bg);-webkit-backdrop-filter:blur(16px)saturate(1.15);border:1px solid var(--card-border);text-align:center;box-shadow:var(--shadow-lg);color:var(--ink);transition:background .4s var(--ease), border-color .4s var(--ease);border-radius:26px;padding:38px 40px 32px;position:relative}@supports not ((-webkit-backdrop-filter:blur(2px)) or (backdrop-filter:blur(2px))){.glass-card{background:var(--card-bg-solid)}}body.reduced-effects .glass-card{background:var(--card-bg-solid);-webkit-backdrop-filter:blur(6px)}.glass-card h1{font-family:var(--serif);letter-spacing:.01em;color:var(--rose-deep);margin-bottom:16px;font-size:2.6rem;font-weight:600;line-height:1.1}.glass-card p{font-family:var(--serif);color:var(--ink);margin-bottom:22px;font-size:1.3rem;font-weight:500;line-height:1.55}.glass-card .signature{font-family:var(--serif);text-align:right;color:var(--rose);margin-bottom:26px;font-size:1.4rem;font-style:italic;font-weight:600}.flower-only-button{pointer-events:auto;padding:11px 26px;font-size:.94rem}@media (width<=640px){.envelope-stage{width:296px;height:356px}.envelope{width:260px;height:172px}.envelope-flap{height:98px}.photo-card{width:156px}.photo-card.upright{width:216px;bottom:70px}.intro-text{font-size:.98rem}.glass-card{border-radius:22px;padding:30px 26px 26px}.glass-card h1{font-size:2.1rem}.glass-card p{font-size:1.15rem}.glass-card .signature{font-size:1.2rem}}
