@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;600;700&family=Quicksand:wght@500;600;700&display=swap');
:root{--accent:#e98ca5;--ink:#49383d;--muted:#8f7c82;--cream:#fffaf7;--blush:#fdf0f1;--line:rgba(117,77,87,.12);--shadow:0 24px 70px rgba(116,73,82,.12)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Quicksand,"PingFang SC","Microsoft YaHei",sans-serif;overflow-x:hidden}a{text-decoration:none;color:inherit}button,input,textarea{font:inherit}.no-scroll{overflow:hidden}
.nav{position:fixed;z-index:50;top:14px;left:50%;transform:translateX(-50%);width:min(1120px,calc(100% - 28px));height:62px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(255,255,255,.75);border-radius:22px;background:rgba(255,250,247,.78);backdrop-filter:blur(18px);box-shadow:0 10px 40px rgba(94,63,72,.08)}.brand{font-family:"Noto Serif SC",serif;font-weight:700}.brand span{color:var(--accent)}.nav nav{display:flex;gap:28px;font-size:14px;color:#725e64}.nav nav a{position:relative}.nav nav a:after{content:"";position:absolute;left:50%;right:50%;bottom:-7px;height:2px;background:var(--accent);transition:.25s}.nav nav a:hover:after{left:0;right:0}.music-btn{width:38px;height:38px;border:0;border-radius:50%;color:#fff;background:var(--accent);cursor:pointer;box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 35%,transparent)}.music-btn.playing{animation:spin 4s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.hero{min-height:100vh;position:relative;display:grid;place-items:center;text-align:center;padding:110px 20px 60px;overflow:hidden;background:radial-gradient(circle at 15% 15%,#fff 0 8%,transparent 28%),radial-gradient(circle at 84% 22%,#f9dfe4 0,transparent 26%),linear-gradient(145deg,#fffaf7,#fbedef)}.hero:before,.hero:after{content:"";position:absolute;border:1px solid rgba(233,140,165,.18);border-radius:50%}.hero:before{width:650px;height:650px;left:-330px;bottom:-300px}.hero:after{width:520px;height:520px;right:-280px;top:-180px}.hero-glow{position:absolute;width:380px;height:380px;border-radius:50%;background:rgba(255,255,255,.75);filter:blur(12px);box-shadow:0 0 110px #fff}.hero-content{position:relative;z-index:2;max-width:780px}.avatars{display:flex;align-items:center;justify-content:center;margin-bottom:22px}.avatar{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;font:700 24px "Noto Serif SC";color:#fff;background:linear-gradient(145deg,var(--accent),#c9718c);border:5px solid #fff;box-shadow:0 12px 30px rgba(128,78,92,.2)}.avatar.alt{background:linear-gradient(145deg,#a8bfd4,#758da6)}.avatars i{font-style:normal;color:var(--accent);margin:0 -2px;z-index:2;font-size:20px}.eyebrow,.section-head>p{font-size:11px;letter-spacing:.32em;color:var(--accent);font-weight:700}.hero h1{font:600 clamp(38px,7vw,76px) "Noto Serif SC",serif;margin:12px 0;color:#4c3940}.hero h1 em{font-weight:400;color:var(--accent);font-style:italic}.hero-copy{color:#7d6970;font-family:"Noto Serif SC",serif;letter-spacing:.08em}.love-clock{margin:35px auto 8px;display:flex;align-items:baseline;justify-content:center;gap:12px}.love-clock strong{font-size:64px;line-height:1;color:var(--accent);font-family:"Noto Serif SC"}.love-clock span{font-size:14px;color:#8c767d}.love-clock b{font-weight:600}.live-time{font-size:12px;letter-spacing:.12em;color:#aa9299}.scroll-down{display:inline-flex;flex-direction:column;gap:8px;margin-top:42px;font-size:12px;color:#9e858c}.scroll-down span{font-size:22px;animation:bob 1.5s infinite}@keyframes bob{50%{transform:translateY(6px)}}
.section{padding:110px max(24px,calc((100vw - 1120px)/2));position:relative}.section.soft{background:#fdf2f2}.section-head{text-align:center;max-width:650px;margin:0 auto 55px}.section-head h2{font:600 clamp(30px,4vw,44px) "Noto Serif SC";margin:8px 0 14px}.section-head span{font-size:14px;color:var(--muted);line-height:1.9}.photo-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:180px;gap:18px}.photo-card{position:relative;overflow:hidden;padding:0;border:0;border-radius:24px;background:#eee;cursor:pointer;grid-column:span 4;grid-row:span 2;box-shadow:var(--shadow)}.photo-card:nth-child(5n+1){grid-column:span 7}.photo-card:nth-child(5n+2){grid-column:span 5}.photo-card:nth-child(5n+4),.photo-card:nth-child(5n+5){grid-column:span 3}.photo-card img{width:100%;height:100%;object-fit:cover;transition:.65s}.photo-card:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(44,27,33,.7));opacity:.65}.photo-card:hover img{transform:scale(1.06)}.photo-card span{position:absolute;z-index:2;bottom:18px;left:20px;color:#fff;text-align:left}.photo-card b,.photo-card small{display:block}.photo-card small{opacity:.75;margin-top:5px}.empty-card{text-align:center;padding:70px 20px;border:1px dashed #e9cbd2;border-radius:30px;background:#fff}.empty-card span{font-size:44px}.empty-card h3{font-family:"Noto Serif SC"}.empty-card p{color:var(--muted)}
.timeline{max-width:820px;margin:auto;position:relative}.timeline:before{content:"";position:absolute;left:28px;top:20px;bottom:20px;width:1px;background:linear-gradient(var(--accent),#ead5da)}.timeline-item{display:grid;grid-template-columns:58px 1fr;gap:24px;margin-bottom:26px;position:relative}.timeline-icon{z-index:1;width:58px;height:58px;display:grid;place-items:center;background:#fff;border-radius:50%;box-shadow:0 10px 30px rgba(123,81,91,.12);color:var(--accent)}.timeline-card{background:rgba(255,255,255,.78);border:1px solid #fff;border-radius:22px;padding:24px 27px;box-shadow:0 18px 48px rgba(96,64,72,.07)}.timeline-card time{font-size:11px;letter-spacing:.12em;color:var(--accent)}.timeline-card h3{font:600 20px "Noto Serif SC";margin:7px 0}.timeline-card p{color:var(--muted);line-height:1.8;margin:0;font-size:14px}.wish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.wish-card{display:flex;gap:18px;padding:25px;border:1px solid var(--line);border-radius:22px;background:#fff;box-shadow:0 15px 35px rgba(101,67,76,.06)}.wish-card>span{flex:0 0 36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--blush);color:var(--accent);font-size:21px}.wish-card h3{margin:2px 0 8px;font:600 17px "Noto Serif SC"}.wish-card p{margin:0;color:var(--muted);font-size:13px}.wish-card.done{opacity:.68}.wish-card.done h3{text-decoration:line-through}.wish-card.done>span{background:var(--accent);color:#fff}
.message-section{background:linear-gradient(140deg,#fffaf7,#faecef)}.message-layout{display:grid;grid-template-columns:360px 1fr;gap:35px;align-items:start}.message-form{padding:27px;border-radius:26px;background:#fff;box-shadow:var(--shadow);position:sticky;top:95px}.message-form label{display:block;font-size:13px;font-weight:600;margin-bottom:17px}.message-form input,.message-form textarea{display:block;width:100%;margin-top:8px;border:1px solid #eadde0;border-radius:14px;padding:12px 14px;outline:0;background:#fffcfb;resize:vertical}.message-form input:focus,.message-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.message-form button{width:100%;border:0;border-radius:14px;padding:13px;background:var(--accent);color:#fff;cursor:pointer;box-shadow:0 10px 25px color-mix(in srgb,var(--accent) 25%,transparent)}.notice{font-size:12px;color:var(--accent);text-align:center}.notes{display:grid;gap:15px}.note{background:rgba(255,255,255,.82);border:1px solid #fff;border-radius:20px;padding:20px 23px;box-shadow:0 12px 36px rgba(100,65,74,.06)}.note header{display:flex;justify-content:space-between;align-items:center}.note header b{font-family:"Noto Serif SC"}.note time{font-size:11px;color:#b09ba1}.note p{line-height:1.8;color:#756168;margin-bottom:4px}.reply{margin-top:12px;border-radius:12px;padding:11px 13px;background:var(--blush);font-size:13px;color:#755d64}.reply b{color:var(--accent)}.anniversary{padding:105px 20px;text-align:center;color:#fff;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 82%,#7d6570),var(--accent));position:relative;overflow:hidden}.anniversary:before{content:"♥";position:absolute;font-size:320px;opacity:.05;left:50%;top:50%;transform:translate(-50%,-50%)}.anniversary span{display:block;font-size:13px;letter-spacing:.2em}.anniversary strong{display:inline-block;font:600 90px "Noto Serif SC";margin:12px}.anniversary b{font-size:15px}.anniversary p{opacity:.8}footer{padding:26px max(24px,calc((100vw - 1120px)/2));display:flex;justify-content:space-between;color:#a28c92;font-size:12px}footer a:hover{color:var(--accent)}
.lightbox[hidden]{display:none}.lightbox{position:fixed;z-index:100;inset:0;background:rgba(30,19,23,.88);backdrop-filter:blur(12px);display:grid;place-items:center;padding:50px}.lightbox img{max-width:min(1000px,90vw);max-height:75vh;border-radius:18px;box-shadow:0 30px 100px #000}.lightbox>div{color:#fff;text-align:center}.lightbox h3{margin:18px 0 5px}.lightbox p{margin:0;opacity:.7}.lightbox-close{position:absolute;right:28px;top:20px;color:#fff;background:none;border:0;font-size:42px;cursor:pointer}.reveal{opacity:0;transform:translateY(24px);transition:.7s ease}.reveal.visible{opacity:1;transform:none}.petals{position:fixed;inset:0;z-index:90;pointer-events:none}.petals i{position:absolute;top:-25px;width:9px;height:13px;border-radius:9px 2px;background:rgba(233,140,165,.38);animation:fall 14s linear infinite}@keyframes fall{to{transform:translate(70px,105vh) rotate(540deg);opacity:0}}
@media(max-width:800px){.nav{height:56px}.nav nav{display:none}.section{padding:82px 18px}.photo-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:190px;gap:10px}.photo-card,.photo-card:nth-child(n){grid-column:span 1;grid-row:span 1;border-radius:17px}.photo-card:nth-child(3n+1){grid-column:span 2;grid-row:span 2}.wish-grid{grid-template-columns:1fr}.message-layout{grid-template-columns:1fr}.message-form{position:static}.hero h1{font-size:40px}.love-clock strong{font-size:52px}.timeline-item{gap:14px}.timeline-card{padding:20px}.anniversary strong{font-size:72px}.lightbox{padding:20px}.lightbox img{max-width:95vw}.section-head{margin-bottom:38px}}@media(max-width:450px){.photo-grid{grid-auto-rows:155px}.brand{font-size:14px}.hero-copy{font-size:13px}.timeline:before{left:22px}.timeline-item{grid-template-columns:46px 1fr}.timeline-icon{width:46px;height:46px}.message-form{padding:22px}footer{gap:20px}}
