*{box-sizing:border-box}body{margin:0;background:#210b1b;color:#fce5e9;font-family:Georgia,'Times New Roman',serif;overflow:hidden}button,textarea{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,textarea:focus-visible{outline:2px solid #f9d58b;outline-offset:5px}button{touch-action:manipulation}#sky,.glow{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}.glow{background:radial-gradient(ellipse at 50% 36%,#a6505738,transparent 60%)}header{position:absolute;top:max(32px,env(safe-area-inset-top));left:15px;right:15px;text-align:center;z-index:2;pointer-events:none}.eyebrow{font:9px system-ui,sans-serif;letter-spacing:3px;color:#c692a4}h1{font-size:clamp(21px,5vw,32px);font-weight:400;line-height:1.4;margin:16px 0 5px}em{font-weight:400;color:#f5d59b}header p{font-style:italic;color:#dfbd8a;margin:0;font-size:17px}header p span{color:#ffe29c;margin-left:5px}main{height:100svh;position:relative}section.scene{position:absolute;inset:155px 0 60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(20px);transition:opacity .8s,transform .8s,visibility .8s}section.active{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.intro-line{text-align:center;font-size:25px;line-height:1.9;margin:0 20px 28px}.primary{background:linear-gradient(120deg,#b04970,#933754);color:#fff3ec;box-shadow:0 8px 30px #a52f5e40;border:1px solid #e79bb44d;padding:15px 27px;border-radius:40px;min-height:48px;font-size:15px}.primary span{margin-left:12px}.caption{font-size:12px;color:#c39caa;text-align:center;line-height:1.7;margin:0 20px}.instruction{font-size:14px;font-style:italic;letter-spacing:.6px;color:#e6c7ce;margin:0}.icon{position:fixed;top:18px;right:15px;width:42px;height:42px;z-index:20;border:1px solid #e3b79740;border-radius:50%;color:#ecd3a8;background:#371528b8;font-size:23px}.icon.playing{box-shadow:0 0 20px #f5d59b22}.small-label{font:10px system-ui;letter-spacing:2px;color:#d4a5b8;margin-bottom:50px}#bouquet{border:0;background:none;position:relative;padding:0;width:min(85vw,390px);height:min(55svh,510px);transition:transform .8s,opacity .8s;animation:float 5s ease-in-out infinite}#bouquet img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 15px 40px #0006)}.bouquet-tag{position:absolute;top:63%;left:42%;font-size:16px;font-style:italic;color:#85495a;transform:rotate(-7deg)}#bouquet.blooming{animation:none;transform:scale(1.25);opacity:0}@keyframes float{50%{transform:translateY(-9px) rotate(1deg)}}#envelope{width:280px;height:185px;border:0;border-radius:6px;background:#dc86a8;position:relative;box-shadow:0 18px 65px #0005;perspective:700px;transition:opacity .7s,transform .7s}.front{position:absolute;inset:0;background:#e8a0bd;clip-path:polygon(0 0,50% 62%,100% 0,100% 100%,0 100%);z-index:3;border-radius:6px}.flap{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 62%);background:#f2b7ce;transform-origin:top;z-index:4;transition:transform .65s}.seal{position:absolute;top:50%;left:44%;width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#b74f7c;color:#fff4ec;z-index:5;box-shadow:0 2px 10px #88335155}.paper-peek{position:absolute;inset:12px 18px;background:#fff5e9;border-radius:4px;color:#9a6376;padding:30px 15px;text-align:left;font-style:italic;z-index:1;transition:transform .8s}.unfolding .flap{transform:rotateX(180deg);z-index:0}.unfolding .paper-peek{transform:translateY(-100px)}#envelope.unfolding{transform:translateY(30px) scale(1.04);opacity:0}#mail .instruction{margin-top:42px}.book-wrap{width:min(82vw,360px);height:min(53svh,425px);position:relative;perspective:1400px}.book-stack{position:absolute;inset:2px -7px -4px;background:#eedcc7;transform:rotate(3deg);box-shadow:0 8px 25px #0003;border-radius:3px}.book-stack:before{content:'';position:absolute;inset:0;background:#fdf2de;transform:rotate(-6deg);border:1px solid #d8c5b4}#page{height:100%;position:relative;background:linear-gradient(90deg,#eadcc6,#fff9ed 6%,#fff7e9);border-radius:3px;color:#684654;padding:25px 26px 35px;box-shadow:0 12px 45px #0004;transform-origin:left;display:flex;flex-direction:column;overflow:hidden}#page:before{content:'';position:absolute;inset:10px;border:1px solid #d9b99a55;pointer-events:none}.page-meta{font:8px system-ui;letter-spacing:2px;color:#ae8490;position:relative}.page-number{position:absolute;bottom:16px;left:0;right:0;text-align:center;font:10px system-ui;color:#b18e97}#page-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:16px;min-height:0}#page-content h2{font-size:25px;font-weight:400;font-style:italic;margin:8px 0;color:#a44c6e}#page-content p{font-size:17px;line-height:1.9;margin:0}#page-content img{max-height:48%;max-width:100%;object-fit:contain;border:5px solid white;box-shadow:0 5px 15px #75475428;transform:rotate(-3deg)}.corner{position:absolute;bottom:0;right:0;border:13px solid transparent;border-bottom-color:#dfcbb3;border-right-color:#e9d9c0}#page.flip-out{animation:flipOut .32s ease-in forwards}#page.flip-in{animation:flipIn .55s cubic-bezier(.2,.8,.2,1) forwards}@keyframes flipOut{to{transform:rotateY(-85deg);opacity:.35}}@keyframes flipIn{from{transform:rotateY(85deg);opacity:.35}to{transform:rotateY(0);opacity:1}}.book-controls{display:flex;gap:20px;align-items:center;z-index:3;margin-top:10px}.round{width:44px;height:44px;border:1px solid #dca4b944;border-radius:50%;background:#ffffff08;color:#ffe8ef;font-size:20px}.round:disabled{opacity:.25;cursor:default}#count{font:11px system-ui;letter-spacing:2px;color:#d8aebc}#memories{position:absolute;inset:-20px 0;pointer-events:none;overflow:hidden}.memory{position:absolute;width:65px;height:85px;padding:4px 4px 12px;background:#fff2dc;box-shadow:0 4px 18px #0003;animation:drift 8s ease-in-out infinite;opacity:.85}.memory img{width:100%;height:100%;object-fit:cover}@keyframes drift{50%{transform:translateY(-20px) rotate(9deg)}}#bloom-transition{position:fixed;inset:0;pointer-events:none;z-index:25;overflow:hidden}.burst-flower{position:absolute;left:50%;top:50%;width:clamp(120px,25vw,240px);height:clamp(120px,25vw,240px);animation:flowerSweep 2.8s ease-in-out forwards;animation-delay:var(--delay)}@keyframes flowerSweep{0%{transform:translate(-50%,-50%) scale(0) rotate(-35deg);opacity:0}25%{opacity:1}48%,65%{opacity:1;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(1.6) rotate(var(--r))}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y) + 130px)) scale(1.8) rotate(60deg)}}.reply-card{background:#fff5e9;color:#754d60;border-radius:9px;padding:25px;width:min(87vw,370px);box-shadow:0 20px 60px #0003;text-align:center}.reply-card .eyebrow{font-size:8px;letter-spacing:2px}.flower-mark{font-size:32px;color:#bc6489}.reply-card h2{font-size:24px;font-weight:400;font-style:italic}.reply-card p{font-size:13px;line-height:1.7}.reply-card label{display:block;font-size:11px;text-align:left;margin:20px 0 8px}.reply-card textarea{width:100%;resize:none;border:1px solid #dfbaca;border-radius:6px;background:#fffaf5;padding:12px;font-size:16px;color:#73495e}.reply-card .primary{margin-top:13px}#reply-status{min-height:17px;margin-bottom:0;font-size:11px}.text-button{border:0;background:none;color:#e5bdcd;padding:12px;font-size:13px}#ending h2{font-weight:400;font-size:29px;line-height:1.6;text-align:center;margin:0}#ending h2 em{font-size:65px}#ending p{text-align:center;font-size:17px;line-height:1.9;margin:0 25px}.signature{font-style:italic;color:#d7a2b5;margin:10px 0 25px}.end-flower{font-size:65px;color:#efbdd2;text-shadow:0 0 60px #efbdd288}footer{position:fixed;bottom:20px;width:100%;text-align:center;color:#986479;font:9px system-ui;letter-spacing:1px;pointer-events:none}footer span{color:#deb888}#reading{gap:10px}@media(max-height:680px){header{top:20px}h1{margin:10px 0 0}header .eyebrow{display:none}section.scene{inset:120px 0 40px;gap:9px}#page{padding:20px 22px 30px}#page-content p{font-size:15px}#page-content h2{font-size:21px}.reply-card{padding:14px 22px}.reply-card h2{margin:10px 0}.book-wrap{height:51svh}footer{bottom:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.05s!important;animation-iteration-count:1!important;transition-duration:.05s!important}}

#page-content img{min-height:0;flex-shrink:1}#page-content h2,#page-content p{flex-shrink:0}

body{background:#230f20}.glow{background:radial-gradient(ellipse at 50% 40%,#73334c55,transparent 68%)}header p{font-size:19px;font-style:italic}header h1{font-style:italic}.heart-draw{width:min(70vw,300px);height:280px;overflow:visible;filter:drop-shadow(0 0 11px #f7d69a)}.heart-draw path{fill:transparent;stroke:#ffe6ad;stroke-width:1.5;stroke-linecap:round;stroke-dasharray:650;stroke-dashoffset:650}.active .heart-draw path{animation:traceHeart 2.6s ease forwards}.heart-note{text-align:center;font-size:14px;font-style:italic;color:#dfc4ba;line-height:1.8;opacity:0}.active .heart-note{animation:softIn 1s 1s forwards}@keyframes traceHeart{70%{stroke-dashoffset:0;fill:transparent}100%{stroke-dashoffset:0;fill:#ef9ab51a}}@keyframes softIn{to{opacity:1}}.mail-shortcut{position:fixed;right:66px;top:18px;border:1px solid #e3b79740;border-radius:50%;width:42px;height:42px;background:#50213988;color:#f5b1cb;font-size:22px;z-index:20;visibility:hidden;opacity:0;transition:opacity .6s}.mail-shortcut.visible{visibility:visible;opacity:1}#flowers #bouquet{width:min(90vw,430px);height:min(58svh,530px)}.bouquet-tag{padding:4px 9px;background:#fff5ebdd;box-shadow:0 2px 5px #9f5a7533;font-size:13px}.pressed-flower{position:absolute;right:18px;top:15px;color:#d79ca9;font-size:28px;opacity:.6}#page{background:linear-gradient(90deg,#e9d9c0,#fffaf1 8%,#fff7e9);box-shadow:inset 0 0 35px #e1ccab40,0 16px 55px #08020866}#page-content p{font-style:italic}.book-stack{transform:rotate(4deg)}.memory{width:72px;height:95px;opacity:.9;border-radius:2px}.end-flower{animation:float 5s ease-in-out infinite}.reply-card{border:6px double #eed8d7}footer{letter-spacing:2px}#reading .caption{font-style:italic}
