:root{--paper:#f7f3fb;--ink:#44374f;--muted:#80748a;--rust:#936c9f;--line:#e1d6e9;--sage:#8d759e;--serif:"Songti SC","STSong","Noto Serif CJK SC",serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:135px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.8 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}body:after{content:"";pointer-events:none;position:fixed;inset:0;opacity:.035;z-index:15;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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--rust);outline-offset:5px}button:disabled{opacity:.6;cursor:wait}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}em{font-style:normal;color:var(--rust)}img{display:block;max-width:100%}#progress{position:fixed;top:0;left:0;height:3px;background:var(--rust);width:0;z-index:40}header{height:100px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#f7f3fbed;position:relative;z-index:20}.brand{font-family:var(--serif);font-size:23px;letter-spacing:2px}.brand span{display:block;font:8px/2.4 sans-serif;letter-spacing:3px}nav{display:flex;gap:38px;font-size:13px}nav a:hover{color:var(--rust)}.small-button{border:1px solid #c5b3d1;background:transparent;padding:10px 20px;border-radius:30px;font-size:12px;color:var(--ink)}.small-button span{margin-left:15px}.hero{max-width:1500px;min-height:780px;margin:auto;padding:85px 7% 110px;display:grid;grid-template-columns:1fr 1.2fr;gap:30px;position:relative;overflow:hidden}.eyebrow{font:10px/1.8 sans-serif;letter-spacing:2.5px;color:var(--sage)}.eyebrow i{display:inline-block;width:6px;height:6px;background:var(--rust);border-radius:50%;margin-right:12px}.hero-intro{font-size:15px;letter-spacing:5px;margin-top:43px}.hero-intro em{font:italic 17px var(--serif);margin:0 15px}.hero h1{font-size:clamp(48px,5.3vw,78px);line-height:1.4;letter-spacing:4px;margin:18px 0 22px}.hero h1 span{color:var(--rust)}.hero-description{font-size:14px;line-height:2.1;color:var(--muted);letter-spacing:1px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;border:0;background:var(--sage);color:white;border-radius:3px;padding:16px 24px;font-size:13px;letter-spacing:1px;transition:background .2s,transform .2s}.button:hover{background:#755c89;transform:translateY(-2px)}.hero .button{margin-top:30px}.hero-note{margin-top:36px;font-size:10px;letter-spacing:1px;color:var(--muted)}.hero-note span{margin-right:20px;color:var(--rust)}.hero-photos{position:relative;padding:20px 10px 50px 10px;align-self:center}.hero-main{background:#fffafd;padding:13px 13px 0;transform:rotate(-4deg);box-shadow:0 18px 50px #3b312322;width:88%;animation:arrive 1.3s ease both}.hero-main img{width:100%;aspect-ratio:1.22;object-fit:cover}.hero-main figcaption{padding:16px 4px;font:13px var(--serif);letter-spacing:2px}.hero-main figcaption span{float:right;color:var(--rust)}.hero-baby{position:absolute;right:-5px;bottom:-25px;background:white;padding:9px 9px 15px;width:37%;transform:rotate(9deg);box-shadow:0 12px 35px #3b312326;animation:arrive 1.6s ease both}.hero-baby img{width:100%;aspect-ratio:.85;object-fit:cover}.hero-baby figcaption{font:7px sans-serif;letter-spacing:1.5px;margin-top:12px;text-align:center}.handwritten{position:absolute;bottom:0;left:2%;font:17px var(--serif);color:var(--rust);transform:rotate(-7deg)}.orbit-word{position:absolute;right:2%;top:-25px;font:10px sans-serif;letter-spacing:4px;transform:rotate(14deg);color:var(--rust)}.hero-spark{position:absolute;top:-25px;left:-10px;font-size:68px;color:#b597c6;animation:spin 50s linear infinite}.scroll-note{position:absolute;bottom:30px;left:7%;right:7%;font:8px sans-serif;letter-spacing:3px;color:var(--muted);display:flex;justify-content:space-between}.scroll-note span{font-size:26px}.ribbon{display:flex;justify-content:space-around;align-items:center;gap:25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:21px;font-size:12px;letter-spacing:2px;overflow:hidden;white-space:nowrap}.ribbon b{font-size:26px;font-weight:400;color:var(--rust)}.story-intro{padding:100px 7% 50px;max-width:1500px;margin:auto;display:flex;justify-content:space-between;align-items:end}.story-intro h2{font-size:44px;line-height:1.6;margin-top:20px}.story-intro p{color:var(--muted);font-size:13px;padding-bottom:15px}.chapter-nav{position:sticky;top:0;z-index:10;background:#f7f3fbf5;backdrop-filter:blur(10px);display:flex;justify-content:center;gap:12px;border-block:1px solid var(--line);padding:15px 3%;overflow:auto}.chapter-nav button{border:0;background:transparent;font-size:12px;color:var(--muted);white-space:nowrap;padding:8px 18px;border-radius:24px}.chapter-nav button.active{background:var(--sage);color:white}.chapter{padding:90px 7% 70px;max-width:1500px;margin:auto;scroll-margin-top:80px}.chapter-title{display:flex;align-items:center;gap:25px;margin-bottom:36px}.chapter-number{font:italic 65px Georgia;color:#c6aed5;line-height:1}.chapter-title .eyebrow{margin-bottom:6px}.chapter h2{font-size:34px;letter-spacing:2px}.chapter-description{font-size:13px;color:var(--muted);margin:-15px 0 40px;max-width:650px}.photo-flow{columns:3;column-gap:25px}.moment{break-inside:avoid;display:block;width:100%;margin:0 0 27px;background:#fffafd;padding:10px 10px 0;border:1px solid #e8ddec;box-shadow:0 4px 15px #4f3f2610;cursor:zoom-in;transition:transform .4s,box-shadow .4s;text-align:left;color:inherit}.moment:hover{transform:translateY(-7px) rotate(-1deg);box-shadow:0 10px 25px #4f3f2620}.moment img{width:100%;height:auto}.moment-caption{display:flex;justify-content:space-between;gap:10px;padding:13px 4px 15px;font:13px/1.7 var(--serif);letter-spacing:.5px}.moment-caption small{font:9px sans-serif;color:#918d7d;flex-shrink:0;padding-top:5px}.chapter:nth-child(even){background:#f0e9f6}.empty-page{border:1px dashed #c8b4d6;padding:45px;text-align:center;color:var(--muted)}.empty-page span{display:block;font:38px var(--serif);color:var(--rust);margin-bottom:15px}.empty-page p{font:20px var(--serif);margin-bottom:15px}.empty-page small{font-size:12px}.film-section{margin:40px auto 100px;max-width:1290px;display:grid;grid-template-columns:1fr 1fr;background:#eee5f4;align-items:center}.film-copy{padding:55px}.film-copy h2{font-size:40px;line-height:1.6;margin:20px 0}.film-copy p{font-size:13px;color:var(--muted);margin-bottom:25px}.film-copy small{font-size:10px;display:block;color:var(--muted);margin-top:15px}.film-photo{position:relative;align-self:stretch}.film-photo img{width:100%;height:100%;object-fit:cover;min-height:400px}.play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid #fff9;background:#fff3;border-radius:100%;width:68px;height:68px;display:grid;place-items:center;color:white;backdrop-filter:blur(5px)}.film-label{position:absolute;bottom:15px;left:20px;color:white;font-size:11px;text-shadow:0 1px 4px black}.hundred{text-align:center;padding:85px 20px 100px;background:#e9ddf2;position:relative;overflow:hidden}.hundred-number{font:160px/1.1 Georgia;color:#9470a8;margin:30px 0 10px;position:relative;display:inline-block}.hundred-number span{font:italic 26px Georgia;margin-left:7px}.hundred-number i{position:absolute;right:-25px;top:0;font-size:48px;font-style:normal;color:#b597c6;animation:spin 35s linear infinite}.hundred h2{font-size:34px;margin-bottom:20px}.hundred p{font-size:14px;color:#82738d;line-height:2.2}.event{display:flex;justify-content:center;gap:25px;margin:30px 0;font-size:11px;letter-spacing:2px}.event span+span{border-left:1px solid #bdabca;padding-left:25px}.celebrate-note{min-height:30px;margin-top:15px}.letter{padding:100px 10%;max-width:1100px;margin:60px auto}.letter h2{font-size:30px;margin:25px 0 35px}.letter-body{font:16px/2.5 var(--serif);letter-spacing:1px;max-width:700px;border-top:1px solid var(--line);padding-top:30px}.letter-body p{margin-bottom:22px}.signature{text-align:right;font-size:13px}.signature span{display:block;font-size:30px;color:var(--rust)}.next-page{text-align:center;border-top:1px solid var(--line);padding:70px 20px}.next-page>span{font:9px sans-serif;letter-spacing:4px;color:var(--muted)}.next-page h2{font-size:30px;margin:20px 0 30px}footer{background:#eee5f4;padding:45px 6%;display:flex;align-items:center;justify-content:space-between}footer .brand{font-size:20px}footer p{font-size:12px;color:var(--muted)}footer button{border:0;background:transparent;font-size:11px;color:var(--muted)}dialog{border:0;background:var(--paper);color:var(--ink);max-height:90dvh;max-width:650px;width:90%;padding:45px}dialog::backdrop{background:#26291fea;backdrop-filter:blur(7px)}dialog h2{font-size:30px;margin:15px 0}dialog p{font-size:13px;color:var(--muted)}.close{position:absolute;right:15px;top:10px;background:transparent;border:0;font:28px sans-serif;color:inherit;z-index:2}.close:focus-visible{outline:2px solid var(--rust)}#lightbox{background:transparent;max-width:95vw;width:95vw;max-height:96dvh;height:96dvh;color:white;padding:45px 70px 55px;overflow:hidden}#lightbox figure{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}#lightbox img{max-height:calc(96dvh - 150px);object-fit:contain;box-shadow:0 5px 30px #0004}#lightbox figcaption{padding-top:20px;font:14px var(--serif)}.prev,.next{position:absolute;top:46%;background:#ffffff16;border:1px solid #ffffff36;border-radius:50%;width:40px;height:40px;color:white}.prev{left:10px}.next{right:10px}#slideshow{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);color:white;background:transparent;border:1px solid #fff5;padding:7px 20px;font-size:11px}label{display:block;font-size:12px;color:var(--muted);margin:18px 0}input,select{display:block;width:100%;border:1px solid var(--line);background:#fffafd;color:var(--ink);padding:12px;margin-top:8px;border-radius:0}input:focus,select:focus{outline:1px solid var(--sage)}form .button{width:100%;margin-top:10px}.file-drop{border:1px dashed #c5b3d1;text-align:center;padding:25px;font-size:18px;cursor:pointer}.file-drop input{font-size:12px}.file-drop small{font-size:10px}.upload-note{margin:20px 0}#upload-status,#admin-error{min-height:28px;margin-top:15px}#selected-files{font-size:11px;color:var(--rust)}details{font-size:12px;margin:20px 0}#uploaded-list div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:10px 0}#uploaded-list button{background:none;border:0;color:var(--rust);flex-shrink:0}.gate{min-height:100dvh;display:grid;place-items:center;padding:25px;background:radial-gradient(ellipse at 15% 20%,#ece1f3,transparent 50%),var(--paper)}.gate-card{text-align:center;max-width:440px;width:100%;padding:35px 20px}.gate-flower{font-size:65px;color:#b597c6;line-height:1;margin:30px;animation:spin 60s linear infinite}.gate h1{font:45px/1.5 var(--serif);letter-spacing:5px}.gate h1 span{display:block;color:var(--rust)}.gate p{font-size:12px;color:var(--muted);line-height:2.1;margin:22px 0}.gate label{text-align:left}.gate small{font-size:10px;letter-spacing:2px;color:var(--muted)}#petals{position:fixed;inset:0;z-index:100;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-30px;font-size:20px;animation:fall 4.5s ease-in both;color:var(--rust)}.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s,transform .8s}.reveal.visible{opacity:1;transform:none}body.load-error .reveal{opacity:1;transform:none}@keyframes arrive{from{opacity:0;translate:0 30px}to{opacity:1;translate:0 0}}@keyframes spin{to{rotate:360deg}}@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(600deg);opacity:.1}}@media(min-width:1600px){.hero{min-height:850px}.hero-photos{padding-left:30px}}@media(max-width:900px){.hero{padding:60px 6% 100px;min-height:680px;gap:10px}.hero-photos{padding-bottom:70px}.hero-main{width:95%}.hero-baby{width:43%;bottom:0}.handwritten{font-size:12px;bottom:32px;left:-3%}.hero-intro{margin-top:25px}.hero h1{font-size:52px}.hero-description{font-size:12px}.hero-spark{font-size:40px}.photo-flow{columns:2}.chapter-nav{justify-content:flex-start;gap:0}.chapter-nav button{padding:7px 14px}.film-section{margin-inline:5%}.film-copy{padding:30px}.film-copy h2{font-size:30px}.film-photo img{min-height:360px}.story-intro p{max-width:40%}}@media(max-width:600px){header{height:78px;padding:0 6%}.brand{font-size:19px}nav{display:none}.small-button{padding:8px 13px}.hero{grid-template-columns:1fr;padding:43px 7% 85px;gap:45px}.hero .eyebrow{font-size:8px}.hero-intro{font-size:13px;margin-top:24px}.hero h1{font-size:52px;line-height:1.4;margin:13px 0 18px}.hero-description{font-size:13px}.hero .button{margin-top:23px}.hero-note{margin-top:20px}.hero-photos{margin:15px 0 0;padding:0 5px 75px 0;width:95%}.hero-main{width:88%}.hero-baby{width:37%;right:-10px;bottom:10px}.hero-main figcaption{font-size:11px;padding:14px 1px}.handwritten{left:0;bottom:24px;font-size:13px}.hero-spark{left:auto;right:12px;top:-30px}.orbit-word{display:none}.scroll-note{font-size:6px;letter-spacing:2px;bottom:20px}.ribbon{justify-content:flex-start;font-size:10px;gap:20px;padding:13px 20px}.ribbon span:last-of-type,.ribbon b:last-child{display:none}.ribbon b{font-size:18px}.story-intro{padding:60px 7% 30px;display:block}.story-intro h2{font-size:35px;margin-top:16px}.story-intro p{max-width:100%;margin-top:22px;font-size:12px}.chapter-nav{padding:10px 3%;scrollbar-width:none}.chapter-nav button{font-size:11px}.chapter{padding:55px 5% 35px}.chapter-number{font-size:50px}.chapter-title{gap:15px;margin-bottom:30px}.chapter h2{font-size:25px;letter-spacing:0}.chapter-description{font-size:12px;line-height:2;padding-left:3px}.photo-flow{column-gap:12px}.moment{padding:6px 6px 0;margin-bottom:15px}.moment-caption{display:block;font-size:11px;letter-spacing:0;padding:10px 2px}.moment-caption small{display:block;font-size:8px;margin-top:3px}.film-section{grid-template-columns:1fr;margin:35px 5% 60px}.film-copy{padding:35px 25px}.film-photo{height:300px}.film-photo img{min-height:0}.film-copy small{font-size:9px}.hundred{padding:60px 20px}.hundred-number{font-size:120px}.hundred h2{font-size:30px}.hundred p{font-size:12px}.event{font-size:9px;letter-spacing:1px;gap:15px}.event span+span{padding-left:15px}.letter{padding:65px 8% 35px;margin:0 auto}.letter h2{font-size:25px;line-height:1.7}.letter-body{font-size:14px;line-height:2.3}.signature{font-size:11px}.next-page h2{font-size:26px;line-height:1.8}.next-page h2 em{display:block}footer{display:block;text-align:center;padding:35px 20px}footer p{margin:20px 0}dialog{padding:40px 24px}#lightbox{padding:45px 25px 60px}.prev,.next{width:32px;height:32px;z-index:2;top:auto;bottom:7px}.gate h1{font-size:40px}.empty-page{padding:30px 15px}.empty-page p{font-size:19px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

.music-section{max-width:1290px;margin:0 auto;padding:65px 7%;display:grid;grid-template-columns:1fr 1.2fr;gap:60px;border-bottom:1px solid var(--line)}.music-intro h2{font-size:33px;line-height:1.6;margin:16px 0}.music-intro p{font-size:12px;color:var(--muted)}.music-intro small{display:block;max-width:310px;font-size:10px;color:var(--muted);line-height:1.9;margin:12px 0}.music-intro audio{width:100%;max-width:340px;height:42px;margin-top:16px;accent-color:var(--sage)}#music-status{min-height:25px;margin-top:8px;font-size:10px}.song-list{display:flex;flex-direction:column;justify-content:center;gap:12px}.song-card{display:grid;grid-template-columns:48px 1fr auto;gap:14px;padding:16px;background:#fffbff;border:1px solid var(--line);align-items:center;border-radius:6px}.song-card.selected{border-color:var(--sage);background:#f1e9f7}.song-art{width:48px;height:48px;object-fit:cover;border-radius:3px}.song-choice{display:block;text-align:left;border:0;background:transparent;padding:0;color:var(--ink);font:17px/1.8 var(--serif)}.song-choice small{font:9px sans-serif;padding:3px 6px;margin-left:7px;background:#e9ddf2;color:#82658f;border-radius:10px;white-space:nowrap}.song-card p{font-size:10px;color:var(--muted);margin:2px 0}.song-links{font-size:9px;display:flex;gap:12px}.song-links a{text-decoration:underline;text-underline-offset:3px}.song-play{width:34px;height:34px;border:1px solid #c9b8d4;background:transparent;color:var(--sage);border-radius:50%;font-size:11px}.music-dock{position:fixed;bottom:20px;right:24px;z-index:25;background:#fffbfff2;backdrop-filter:blur(8px);border:1px solid #d5c1e0;box-shadow:0 4px 20px #56386615;border-radius:40px;display:flex;align-items:center;gap:12px;padding:8px 15px 8px 8px;font-size:10px;color:var(--ink)}.music-dock button{display:flex;align-items:center;gap:9px;border:0;background:none;color:inherit;font-size:11px}.music-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#e9ddf2;color:#836393;font-size:19px}.music-dock.playing .music-icon{animation:spin 10s linear infinite}.music-dock>a{border-left:1px solid var(--line);padding-left:12px;color:var(--muted)}@media(max-width:600px){.music-section{grid-template-columns:1fr;padding:45px 7%;gap:24px}.music-intro h2{font-size:29px}.song-card{padding:12px;grid-template-columns:42px 1fr auto;gap:10px}.song-art{width:42px;height:42px}.song-choice{font-size:15px}.music-dock{right:12px;bottom:12px;padding:6px 12px 6px 6px}.music-dock button{font-size:10px}.music-icon{height:26px;width:26px;font-size:17px}footer{padding-bottom:85px}}
