:root{--pink:#ffc6d6;--rose:#ec8dab;--white:#fff7f3;--dark:#241723;--muted:#dbb9c7}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--dark);color:var(--white);font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;font-size:15px;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #fff;outline-offset:5px}h1,h2,p{margin-top:0}h1,h2{font-family:Georgia,'Songti SC',serif;font-weight:400}em{font-weight:400;color:var(--pink)}.brand{font-family:Georgia,serif;letter-spacing:.32em;font-size:14px;color:var(--pink)}.eyebrow{font-size:10px;letter-spacing:.24em;color:var(--pink);line-height:1.7}.pill{display:inline-block;border:0;border-radius:40px;padding:17px 29px;background:linear-gradient(120deg,#f8bfd1,#ed92b1);color:#442536;font-size:12px;letter-spacing:.07em;font-weight:700;text-decoration:none;min-height:52px;box-shadow:0 10px 35px #0004;transition:transform .2s}.pill:hover{transform:translateY(-3px)}.pill:active{transform:scale(.97)}.opening{position:fixed;inset:0;z-index:30;display:grid;place-items:center;text-align:center;padding:28px;background:radial-gradient(ellipse at 50% 30%,#79495f,#2a1a2a 65%,#1b1420);overflow:auto}.opening-inner{max-width:440px}.opening h1{font-size:clamp(38px,9vw,58px);line-height:1.12;margin-bottom:24px}.opening p:not(.eyebrow){color:#efd5df;font-size:13px;line-height:1.8}.opening small{display:block;margin-top:22px;color:var(--muted);font-size:11px}.gift{font-size:80px;padding:25px 0 18px;animation:float 3s ease-in-out infinite}.music{position:fixed;right:15px;top:calc(15px + env(safe-area-inset-top));z-index:20;background:#382536df;border:1px solid #ffffff45;color:#fff;border-radius:30px;padding:12px 15px;backdrop-filter:blur(12px);font-size:12px;min-height:44px}.cover{min-height:100svh;padding:85px 24px 50px;display:grid;place-items:center;text-align:center;background:radial-gradient(ellipse at 50% 18%,#804e67,#3e2537 45%,#1a1420);position:relative}.cover:before{content:'';position:absolute;inset:0;opacity:.2;background-image:radial-gradient(#ffd6db 1px,transparent 1px);background-size:35px 35px;pointer-events:none}.cover-inner{position:relative;max-width:540px}.cover .eyebrow{margin:36px 0 18px}.hero-title{font-size:clamp(66px,15vw,112px);line-height:1.04;letter-spacing:-.06em;margin-bottom:18px}.recipient{font-family:Georgia,serif;font-style:italic;font-size:24px;color:#ffd3df}.cake{font-size:82px;margin:22px 0;animation:float 3s ease-in-out infinite;filter:drop-shadow(0 15px 25px #140b15)}.lead{color:#f5dbe2;line-height:1.9;margin:0 auto 26px;max-width:400px}.scrollhint{font-size:9px;letter-spacing:.23em;color:var(--muted);margin:30px 0 0}.section{padding:86px 22px;text-align:center}.section h2{font-size:clamp(32px,7vw,46px);line-height:1.15;margin-bottom:15px;letter-spacing:-.03em}.intro{font-size:13px;color:var(--muted);line-height:1.9;margin-bottom:34px}.moment{background:#281a29}.countdown{display:flex;justify-content:center;gap:12px;margin:30px auto 18px;max-width:540px}.count-box{min-width:60px;flex:1;max-width:105px;padding:22px 5px;background:#fff1;border:1px solid #ffffff16;border-radius:14px}.count-box strong{display:block;font-family:Georgia,serif;font-size:clamp(28px,7vw,46px);font-weight:400;color:var(--pink)}.count-box span{font-size:9px;letter-spacing:.15em;color:var(--muted)}.count-celebration{font-family:Georgia,serif;font-size:30px;color:var(--pink);padding:20px 0}.date{font-size:11px;letter-spacing:.15em;color:var(--muted)}.counters{max-width:580px;display:grid;grid-template-columns:1fr 1fr;margin:44px auto 0;border-top:1px solid #fff2;padding-top:35px}.counter{padding:0 10px}.counter+.counter{border-left:1px solid #fff2}.counter-label{font-size:9px;letter-spacing:.15em;color:var(--pink)}.counter strong{display:block;font-family:Georgia,serif;font-weight:400;font-size:42px;padding:13px 0 8px}.counter>span:last-child{font-size:10px;color:var(--muted)}.memories{background:linear-gradient(#241723,#342132)}.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:900px;margin:30px auto 0}.photo{position:relative;aspect-ratio:4/5;border:0;overflow:hidden;border-radius:14px;background:#4b3248;padding:0;color:#fff;text-align:left;box-shadow:0 12px 24px #0003}.photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}.photo:hover img{transform:scale(1.05)}.photo span{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#160e1ce0);padding:50px 12px 17px;font-family:Georgia,serif;font-size:13px;line-height:1.4}.gallery-note{font-size:11px;color:var(--muted);line-height:1.8;margin-top:24px}.letter-section{background:#342132;padding-bottom:110px}.envelope{display:block;width:min(100%,390px);height:235px;margin:38px auto 0;position:relative;background:#f8e8e2;border:1px solid #ead4ca;border-radius:6px;color:#684354;box-shadow:0 22px 60px #0005;overflow:hidden;transition:transform .3s}.envelope:hover{transform:translateY(-6px) rotate(-1deg)}.envelope-lines{position:absolute;inset:0;background:linear-gradient(31deg,transparent 49.7%,#dfc7bf 50%,transparent 50.4%) left/50% 100% no-repeat,linear-gradient(-31deg,transparent 49.7%,#dfc7bf 50%,transparent 50.4%) right/50% 100% no-repeat;pointer-events:none}.seal{position:absolute;left:calc(50% - 25px);top:65px;background:#b76685;color:#ffe7ed;width:50px;height:50px;border-radius:50%;display:grid;place-items:center;font-family:Georgia,serif;font-size:30px;box-shadow:0 4px 10px #6a314533}.envelope-text{position:absolute;left:0;right:0;bottom:51px;font-family:Georgia,serif;font-size:13px;letter-spacing:.1em}.envelope-hint{position:absolute;left:0;right:0;bottom:24px;font-size:8px;letter-spacing:.18em}.closing{background:radial-gradient(ellipse at bottom,#5c334a,#241723 70%);padding-top:45px;padding-bottom:90px}.closing-heart{display:block;font-family:Georgia,serif;font-size:80px;color:var(--pink);margin-bottom:18px}#finalMessage{padding-top:35px}#finalMessage p{color:#ebcbd8;line-height:1.9;font-size:13px}#finalMessage .final-title{font-family:Georgia,serif;font-size:34px;color:var(--pink);margin-bottom:12px}footer{padding:30px 20px calc(30px + env(safe-area-inset-bottom));text-align:center;font-size:10px;color:#c5a7b6;line-height:1.9}footer span{display:block;font-size:9px;letter-spacing:.05em}dialog{border:0;border-radius:16px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#130c19ce;backdrop-filter:blur(7px)}.close{position:absolute;top:12px;right:12px;z-index:2;border:0;border-radius:50%;width:44px;height:44px;font-size:28px;background:#ffffffc9;color:#593847}.letter-dialog{background:#fff3ed;color:#593847;width:min(600px,calc(100% - 28px));padding:60px 30px 36px;max-height:85svh}.letter-dialog .eyebrow{color:#a5697f;font-size:8px;letter-spacing:.14em}.letter-dialog h2{font-size:30px;margin:18px 0 26px}.letter-dialog p{font-size:14px;line-height:2;white-space:pre-line}.signature{margin-top:30px;font-family:Georgia,serif;font-style:italic}.signature span{font-size:17px}.photo-dialog{width:min(760px,calc(100% - 24px));padding:14px;background:#2b1e2b;color:#fff;text-align:center;max-height:92svh}.photo-dialog>img{display:block;width:100%;max-height:66svh;object-fit:contain;border-radius:9px}.photo-dialog>p{font-family:Georgia,serif;font-size:15px;margin:18px 10px 10px}.photo-controls{display:flex;justify-content:center;align-items:center;gap:22px}.photo-controls button{width:48px;height:44px;border:1px solid #fff3;background:#ffffff0d;color:#fff;border-radius:8px;font-size:20px}.photo-controls span{font-size:12px;color:var(--muted)}.reveal{opacity:1}.motion .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s,transform .8s}.motion .reveal.visible{opacity:1;transform:none}.heart{position:fixed;top:-40px;pointer-events:none;z-index:40;animation:fall 4s linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(350deg);opacity:0}}@keyframes float{50%{transform:translateY(-9px)}}[hidden]{display:none!important}@media(min-width:760px){.gallery{grid-template-columns:repeat(4,minmax(0,1fr))}.section{padding-top:105px;padding-bottom:105px}.letter-dialog{padding:65px 50px 40px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion .reveal{opacity:1;transform:none}}
