@charset "UTF-8";
:root{color-scheme:dark;--bg:#15131b;--panel:#211c26;--ink:#f6eee9;--muted:#bdb0b8;--pink:#f0b7c8;--line:#ffffff23;--serif:"Noto Serif CJK SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;--sans:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.8 var(--sans);overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--pink);outline-offset:6px}img{max-width:100%;display:block}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}h1{font-size:clamp(42px,5.8vw,86px);line-height:1.38;letter-spacing:.045em}h2{font-size:clamp(30px,3.4vw,48px);line-height:1.5}h3{font-size:26px;line-height:1.5}p{color:var(--muted)}::selection{background:#f0b7c8;color:#211722}.skip{position:fixed;top:-80px;left:20px;z-index:100;background:var(--ink);color:var(--bg);padding:12px}.skip:focus{top:10px}.reading-progress{position:fixed;top:0;left:0;height:2px;width:100%;transform:scaleX(0);transform-origin:left;background:var(--pink);z-index:30;pointer-events:none}.ambient{position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 85% 15%,#78394d22,transparent 45%),radial-gradient(ellipse at 12% 60%,#35455725,transparent 50%)}.site-header{height:98px;max-width:1440px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative;z-index:20}.brand{display:flex;align-items:center;gap:12px;font-size:14px;letter-spacing:.1em}.brand-mark{font:italic 36px Georgia,serif;color:var(--pink)}nav{display:flex;gap:30px;font-size:14px}nav a{color:var(--muted);padding:10px 0;position:relative}nav a[aria-current=page]{color:var(--pink)}nav a[aria-current=page]:after{content:"";position:absolute;bottom:0;width:18px;height:1px;left:calc(50% - 9px);background:var(--pink)}main{min-height:75vh}main:focus{outline:none}.wrap{width:min(1180px,90%);margin-inline:auto}.eyebrow{font-size:12px;font-weight:400;letter-spacing:.26em;color:var(--pink);text-transform:uppercase;margin-bottom:22px}.hero{min-height:min(760px,calc(100svh - 98px));display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:6%;padding:58px 0 100px;position:relative}.hero-copy{position:relative;z-index:2}.hero h1 em{font-style:normal;color:var(--pink)}.hero-intro{max-width:440px;margin-top:27px;line-height:2.05}.hero-intro b{font-weight:400;color:var(--ink)}.actions{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:35px}.pill{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:52px;padding:12px 28px;border-radius:99px;background:var(--pink);color:#291720;border:1px solid var(--pink);font-size:14px;transition:transform .25s,background .25s}.pill:hover{transform:translateY(-3px);background:#fad1dd}.text-link{font-size:14px;color:var(--ink);border-bottom:1px solid var(--line);padding:9px 0;display:inline-block}.text-link:hover{color:var(--pink)}.hero-art{height:520px;position:relative;margin-right:20px}.orbit{position:absolute;inset:10px -20px 0;border:1px solid #e3b5c525;border-radius:50%;transform:rotate(-22deg)}.orbit:after{content:"✦";position:absolute;top:17%;left:6%;color:var(--pink);font-size:22px}.photo-print{position:absolute;background:#f0e8df;color:#695a59;padding:10px 10px 36px;box-shadow:0 25px 80px #0006;transform:rotate(var(--angle));animation:drift 8s ease-in-out infinite}.photo-print img{width:100%;height:100%;object-fit:cover}.photo-print figcaption{position:absolute;bottom:7px;left:13px;font:12px/1.5 var(--serif);letter-spacing:.08em}.print-main{width:70%;height:365px;top:36px;left:22%;--angle:7deg;z-index:2}.print-small{width:48%;height:230px;top:285px;left:-4%;--angle:-12deg;z-index:3;animation-delay:-3s}.print-back{width:41%;height:210px;top:275px;left:67%;--angle:15deg;animation-delay:-5s;z-index:1}.hand-note{position:absolute;top:0;left:4%;font:italic 27px/1.5 Georgia,var(--serif);color:var(--pink);transform:rotate(-9deg);z-index:4}.art-note{position:absolute;right:-10px;bottom:-35px;font-size:12px;color:var(--muted);letter-spacing:.14em}.hero-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:21px 0 35px;font-size:12px;letter-spacing:.15em;color:var(--muted)}.hero-bottom span:last-child{color:var(--pink)}.section{padding:110px 0}.section-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:42px}.section-heading p{max-width:460px;margin-top:18px}.section-heading .eyebrow{margin-bottom:10px}.poem-section{position:relative;padding:95px 0;background:#221c26;border-block:1px solid var(--line);overflow:hidden}.poem-wrap{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center}.poem-intro{max-width:395px}.poem-intro p{margin-top:20px}.poem{font:clamp(23px,3.1vw,40px)/2.1 var(--serif);letter-spacing:.13em}.poem b{font-weight:400;transition:color 1s,text-shadow 1s}.poem.decoded b{color:var(--pink);text-shadow:0 0 30px #ef8eb889}.poem-key{border:0;border-bottom:1px solid #f0b7c860;background:transparent;color:var(--pink);padding:10px 0;margin-top:22px;font-size:14px}.secret-answer{margin-top:15px;max-height:0;opacity:0;overflow:hidden;transition:max-height .7s,opacity .7s}.secret-answer.open{max-height:180px;opacity:1}.secret-answer strong{color:var(--pink);font-family:var(--serif);font-size:26px;font-weight:400}.secret-answer p{font-size:14px}.memory-teasers{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line)}.teaser{padding:34px 28px 34px 0;display:flex;flex-direction:column;align-items:start;gap:17px}.teaser+.teaser{border-left:1px solid var(--line);padding-left:28px}.index-number{font:italic 44px/1 Georgia,serif;color:var(--pink)}.teaser p{font-size:14px;line-height:1.9}.teaser .text-link{margin-top:auto}.photo-trio{display:grid;grid-template-columns:1.05fr 1.2fr .9fr;gap:24px;align-items:center}.photo-trio a{display:block;position:relative;overflow:hidden}.photo-trio img{width:100%;height:360px;object-fit:cover;transition:transform 1s}.photo-trio a:nth-child(2) img{height:440px}.photo-trio a:hover img{transform:scale(1.045)}.photo-trio figcaption{padding:18px 0 0;font-size:14px}.photo-trio figcaption span{font-size:12px;color:var(--muted);display:block;letter-spacing:.1em}.closing{padding:95px 20px 115px;text-align:center;background:radial-gradient(ellipse at center,#7d3c4c29,transparent 68%)}.closing h2{margin-bottom:20px}.closing p{margin-bottom:28px}.site-footer{border-top:1px solid var(--line);padding:25px 5%;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:12px;letter-spacing:.08em}.site-footer a{color:var(--pink)}.page-intro{padding:70px 0 65px;max-width:790px}.page-intro h1{font-size:clamp(38px,5vw,68px)}.page-intro p{margin-top:22px;max-width:640px}.memory-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding-bottom:70px}.memory-card{padding:34px;background:linear-gradient(145deg,#2a202a,#1c1a23);border:1px solid var(--line);border-radius:3px;position:relative}.memory-card:nth-child(4n+2),.memory-card:nth-child(4n+3){background:linear-gradient(140deg,#202630,#1b1a24)}.memory-meta{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:24px}.memory-meta time{font-size:12px;letter-spacing:.08em;color:var(--muted)}.memory-card h2{font-size:27px;margin-bottom:18px}.memory-card>p{font-size:16px;line-height:2;min-height:6em}.memory-card blockquote{border-left:1px solid var(--pink);margin:25px 0 0;padding:3px 0 3px 17px;font:18px/1.85 var(--serif);color:var(--pink)}blockquote cite{display:block;font:12px/1.8 var(--sans);color:var(--muted);margin-top:7px;font-style:normal}.memory-card details{border-top:1px solid var(--line);margin-top:25px;padding-top:15px}.memory-card summary{font-size:14px;color:var(--muted);cursor:pointer;list-style:none;display:flex;justify-content:space-between}.memory-card summary:after{content:"＋";color:var(--pink)}.memory-card details[open] summary:after{content:"－"}.chat-lines{margin-top:22px;display:grid;gap:14px}.chat-line{max-width:90%;background:#ffffff09;padding:12px 16px;border-radius:3px}.chat-line.mine{margin-left:auto;background:#f0b7c815}.chat-line small{font-size:12px;color:var(--pink)}.chat-line p{font-size:14px;color:var(--ink)}.album-grid{display:grid;grid-template-columns:1fr 1fr;gap:55px 32px;padding-bottom:85px}.album-card{display:block}.album-card figure{overflow:hidden;background:var(--panel);aspect-ratio:1.3}.album-card img{width:100%;height:100%;object-fit:cover;transition:transform 1s}.album-card:hover img{transform:scale(1.04)}.album-info{display:flex;justify-content:space-between;gap:20px;padding-top:19px}.album-info h2{font-size:27px}.album-info .eyebrow{font-size:12px;letter-spacing:.11em;margin-bottom:7px;color:var(--muted)}.album-info .arrow{align-self:center;font-size:25px;color:var(--pink)}.album-info p{font-size:14px;margin-top:8px}.back-link{display:inline-block;margin-top:28px;font-size:14px;color:var(--pink)}.chapter-head{display:grid;grid-template-columns:.9fr 1.1fr;gap:7%;align-items:center;padding:45px 0 80px}.chapter-head h1{font-size:clamp(38px,4.4vw,64px);margin-bottom:26px}.chapter-head .lead{font:22px/1.9 var(--serif);color:var(--ink);margin-bottom:22px}.chapter-head p+p{margin-top:18px}.chapter-cover{position:relative}.chapter-cover img{width:100%;height:auto;max-height:660px;aspect-ratio:4/5;object-fit:cover}.chapter-cover figcaption{font-size:12px;color:var(--muted);text-align:right;padding-top:13px}.chapter-break{text-align:center;font:clamp(24px,3vw,38px)/1.8 var(--serif);color:var(--pink);padding:40px 0 75px;max-width:760px;margin:auto}.gallery{columns:3;column-gap:22px;padding-bottom:65px}.gallery figure{break-inside:avoid;margin:0 0 28px}.gallery button{display:block;width:100%;border:0;padding:0;background:transparent;overflow:hidden}.gallery img{width:100%;height:auto;transition:transform .7s}.gallery button:hover img{transform:scale(1.025)}.gallery figcaption{font-size:14px;padding-top:12px;color:var(--muted)}.chapter-next{padding:40px 0 65px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);gap:20px}.chapter-next small{display:block;font-size:12px;color:var(--muted)}.chapter-next a{font-family:var(--serif);font-size:25px;color:var(--pink)}.letter-stage{padding:65px 0 100px}.letter-top{text-align:center;max-width:650px;margin:0 auto 50px}.letter-top h1{font-size:clamp(40px,5vw,65px)}.letter-top p{margin-top:22px}.letter-button{margin-top:30px}.letter-paper{max-width:760px;margin:auto;background:#f2e8dc;color:#39313b;padding:65px 70px;box-shadow:0 22px 90px #0005;position:relative;border-top:3px solid #b78291}.letter-paper[hidden]{display:none}.letter-paper.opening{animation:unfold 1s ease both}.letter-paper .salutation{font:30px/1.8 var(--serif);color:#513742;margin-bottom:24px}.letter-paper p{font:19px/2.05 var(--serif);color:#4d4149;margin-bottom:22px}.letter-paper .signature{text-align:right;margin:38px 0 0;color:#925167;font-size:27px}.letter-paper .postscript{font-size:14px;color:#806b74;margin-top:35px;text-align:center}.lightbox{border:0;padding:25px;background:#15131bf5;color:var(--ink);max-width:96vw;max-height:96svh}.lightbox::backdrop{background:#09070aeb;backdrop-filter:blur(10px)}.lightbox img{max-width:88vw;max-height:78svh;object-fit:contain;margin:auto}.lightbox p{text-align:center;margin-top:15px;font-size:14px}.close-photo{position:absolute;right:9px;top:7px;border:1px solid #ffffff50;border-radius:50%;width:44px;height:44px;background:#15131bcc;line-height:1;font-size:28px}.noscript{padding:30px}.reveal{opacity:1}.motion-enabled .reveal.waiting{opacity:0;transform:translateY(22px)}.reveal{transition:opacity .9s ease,transform .9s ease}.speck{position:absolute;border-radius:50%;background:#ffd7de;opacity:0;pointer-events:none;animation:shimmer 7s ease-in-out infinite}.hero-dust{position:absolute;inset:0;pointer-events:none;overflow:hidden}.paused *,.paused *:before,.paused *:after{animation-play-state:paused!important;scroll-behavior:auto!important}.paused .reveal.waiting{opacity:1;transform:none}.paused .reveal{transition:none}.paused .poem b,.paused .secret-answer{transition:none}.paused .letter-paper.opening{animation:none}
@keyframes drift{0%,100%{transform:translateY(0) rotate(var(--angle))}50%{transform:translateY(-13px) rotate(calc(var(--angle) + 2deg))}}@keyframes shimmer{0%,100%{opacity:0;transform:translateY(12px)}50%{opacity:.45;transform:translateY(-12px)}}@keyframes unfold{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.hero{min-height:760px}.hero-art{height:570px}.print-main{height:400px}.print-small{top:310px}.print-back{top:315px}}
@media(max-width:1000px){.site-header{gap:16px}.brand>span:last-child{display:none}nav{gap:22px}.hero{gap:3%;grid-template-columns:1.05fr 1fr}.hero-art{height:430px;margin-right:10px}.print-main{height:300px;top:35px}.print-small{height:180px;top:235px}.print-back{height:170px;top:230px;left:63%}.hand-note{font-size:23px}.poem-wrap{gap:7%}.gallery{columns:2}.section{padding:80px 0}.photo-trio img{height:290px}.photo-trio a:nth-child(2) img{height:360px}.chapter-head{gap:5%}}
@media(max-width:680px){html{scroll-padding-top:30px}.site-header{height:76px;padding:0 6%}.brand>span:last-child{display:block;font-size:12px}.brand{gap:10px}.brand-mark{font-size:30px}nav{position:fixed;bottom:0;left:0;right:0;justify-content:space-around;gap:0;padding:11px 10px calc(11px + env(safe-area-inset-bottom));background:#17141eef;backdrop-filter:blur(20px);border-top:1px solid var(--line);font-size:12px}nav a{padding:8px 4px}nav a[aria-current=page]:after{bottom:2px}.wrap{width:88%}.hero{display:flex;flex-direction:column;min-height:auto;align-items:stretch;gap:0;padding:33px 0 50px}.hero h1{font-size:clamp(39px,10.5vw,59px);line-height:1.38;letter-spacing:.025em}.eyebrow{font-size:12px;letter-spacing:.2em;margin-bottom:16px}.hero-intro{font-size:14px;line-height:2;margin-top:22px;max-width:345px}.actions{margin-top:27px;gap:19px}.pill{font-size:14px;padding:11px 21px;gap:16px;min-height:48px}.hero-art{height:380px;margin:55px 22px 0 5px;width:calc(100% - 27px)}.print-main{width:67%;height:270px;top:26px;left:25%}.print-small{width:48%;height:175px;top:200px;left:0}.print-back{width:36%;height:153px;top:220px;left:71%;--angle:12deg}.photo-print{padding:7px 7px 28px}.photo-print figcaption{font-size:12px;bottom:5px;left:9px}.hand-note{top:-18px;left:0;font-size:24px}.orbit{inset:0 -5px 0}.art-note{bottom:-19px;right:0;font-size:12px}.hero-bottom{font-size:12px;letter-spacing:.02em;gap:10px;padding-bottom:23px}.hero-bottom span:first-child{max-width:68%}.poem-section{padding:64px 0}.poem-wrap{grid-template-columns:1fr;gap:38px}.poem-intro{max-width:100%}.poem-intro p{font-size:14px}.poem{font-size:clamp(22px,6.3vw,32px);line-height:2.2;letter-spacing:.1em}.poem-box{padding:0 0 0 8px}.section{padding:65px 0}.section-heading{display:block;margin-bottom:29px}.section-heading>.text-link{margin-top:16px}.section-heading p{font-size:14px}.memory-teasers{grid-template-columns:1fr}.teaser{padding:28px 0;display:grid;grid-template-columns:50px 1fr;gap:10px 18px}.teaser+.teaser{border-left:0;border-top:1px solid var(--line);padding-left:0}.teaser .index-number{grid-row:1/4;font-size:38px}.teaser h3{font-size:24px}.teaser .text-link{justify-self:start}.photo-trio{gap:22px;grid-template-columns:1fr 1fr;align-items:start}.photo-trio a:first-child{grid-column:1/-1}.photo-trio img,.photo-trio a:nth-child(2) img{height:210px}.photo-trio a:first-child img{height:auto;aspect-ratio:1.3}.photo-trio figcaption{font-size:14px;line-height:1.7;padding-top:12px}.closing{padding:60px 24px 75px}.closing p{font-size:14px}.site-footer{padding:24px 6% calc(100px + env(safe-area-inset-bottom));flex-wrap:wrap;font-size:12px;gap:10px 25px}.site-footer span:nth-child(2){display:none}.page-intro{padding:38px 0 38px}.page-intro h1{font-size:39px}.page-intro p{font-size:14px}.memory-grid{grid-template-columns:1fr;gap:18px;padding-bottom:35px}.memory-card{padding:27px 23px}.memory-meta{margin-bottom:20px}.memory-card h2{font-size:26px}.memory-card>p{font-size:16px;min-height:auto}.memory-card blockquote{font-size:18px}.album-grid{grid-template-columns:1fr;gap:37px;padding-bottom:55px}.album-card figure{aspect-ratio:1.25}.album-info h2{font-size:27px}.album-info p{font-size:14px}.chapter-head{grid-template-columns:1fr;gap:33px;padding:30px 0 40px}.chapter-head h1{font-size:39px;line-height:1.45;margin-bottom:21px}.chapter-head .lead{font-size:21px}.chapter-head p{font-size:16px}.chapter-cover img{height:auto;max-height:70svh;aspect-ratio:auto;object-fit:contain}.chapter-break{font-size:24px;padding:20px 0 45px}.gallery{columns:2;column-gap:13px;padding-bottom:25px}.gallery figure{margin-bottom:20px}.gallery figcaption{font-size:12px;line-height:1.8}.chapter-next a{font-size:23px}.chapter-next{padding:30px 0 45px;align-items:start}.letter-stage{padding:35px 0 65px}.letter-top{margin-bottom:34px}.letter-top h1{font-size:40px}.letter-top p{font-size:14px}.letter-paper{padding:35px 26px}.letter-paper p{font-size:18px;line-height:2.05}.letter-paper .salutation{font-size:27px}.letter-paper .signature{font-size:25px}.lightbox{padding:12px}.lightbox img{max-width:90vw}.lightbox p{font-size:12px;padding-inline:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion-enabled .reveal.waiting{opacity:1;transform:none}}
.hero-intro,.teaser p,.section-heading p,.poem-intro p,.closing>p:not(.eyebrow),.page-intro>p:not(.eyebrow),.letter-top>p:not(.eyebrow){font-size:16px}
@media(max-width:680px){nav{font-size:14px}.gallery figcaption{font-size:14px}}
.birthday-video{display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center;padding:45px 0 70px;margin-bottom:55px;border-block:1px solid var(--line)}.birthday-video h2{margin-bottom:20px}.birthday-video video{display:block;width:100%;height:auto;max-height:640px;aspect-ratio:608/1080;background:#08070a;object-fit:contain}.birthday-video figure{width:min(100%,360px);justify-self:center}.birthday-video figcaption{margin-top:12px;color:var(--muted);font-size:14px;text-align:center}
@media(max-width:680px){.birthday-video{grid-template-columns:1fr;gap:28px;padding:30px 0 40px;margin-bottom:35px}.birthday-video figure{width:min(100%,330px)}.birthday-video video{max-height:70svh}}
