:root{color:#352d30;font-synthesis:none;--rose:#b97886;--rose-dark:#81505b;--rose-soft:#d9a3ae;--blush:#f3dfe3;--paper:#fff9f8;--ink:#352d30;--muted:#8c7a7f;--line:#81505b30;background:#fff9f8;font-family:PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);min-width:320px;min-height:100vh;margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}.site-shell{min-height:100vh;position:relative;overflow:hidden}.grain{pointer-events:none;opacity:.035;z-index:50;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='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");position:fixed;inset:0}header{z-index:30;justify-content:space-between;align-items:center;height:88px;padding:0 clamp(24px,5vw,76px);transition:all .35s;display:flex;position:fixed;top:0;left:0;right:0}header.is-scrolled{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fff9f8d1;height:68px;box-shadow:0 1px #81505b14}.brand{letter-spacing:.24em;align-items:center;gap:10px;font-family:Georgia,serif;font-size:13px;display:flex}.brand svg,footer svg{fill:none;width:18px;height:18px;stroke:var(--rose);stroke-width:2px}nav{color:#6f6064;letter-spacing:.12em;gap:clamp(22px,4vw,52px);font-size:12px;display:flex}nav a{padding:8px 0;position:relative}nav a:after{content:"";background:var(--rose);height:1px;transition:all .25s;position:absolute;bottom:0;left:0;right:100%}nav a:hover:after{right:0}.hero{background:radial-gradient(circle at 50% 38%,#fffffff0,#0000 58%),linear-gradient(145deg,snow 0%,#fdf3f4 52%,#fff9f8 100%);place-items:center;min-height:100svh;padding:104px 24px 54px;display:grid;position:relative}.hero:before,.hero:after{display:none}.hero-orbit{filter:blur(1px);border-radius:50%;position:absolute}.orbit-one{filter:blur(85px);background:#e1b0bb26;width:260px;height:260px;top:30%;left:-120px}.orbit-two{display:none}.hero-content{text-align:center;z-index:2;animation:1.2s cubic-bezier(.2,.75,.25,1) both rise;position:relative}.hero-kicker,.eyebrow{color:var(--rose);letter-spacing:.38em;font-size:9px;font-weight:500}.names{justify-content:center;align-items:center;gap:clamp(18px,3vw,42px);margin:clamp(25px,4vh,38px) 0 22px;display:flex}.names h1{letter-spacing:.09em;color:#3c3034;margin:0;font-family:Songti SC,STSong,Georgia,serif;font-size:clamp(42px,6.7vw,78px);font-weight:400}.names>span{width:38px;height:38px;box-shadow:none;background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.names svg{width:18px;fill:var(--rose-soft);stroke:var(--rose);stroke-width:1.3px}.hero-lines{color:#88767b;letter-spacing:.16em;font-family:Songti SC,STSong,serif;font-size:clamp(13px,1.4vw,15px);line-height:1.8}.hero-lines p{margin:0}.hero-number{color:#81505b29;letter-spacing:.08em;font-family:Georgia,serif;font-size:clamp(32px,6vw,78px);position:absolute;bottom:42px;right:clamp(20px,5vw,74px)}.scroll-cue{color:#ad969c;letter-spacing:.28em;flex-direction:column;align-items:center;gap:9px;width:max-content;margin:27px auto 0;font-family:Georgia,serif;font-size:8px;display:flex}.scroll-cue i{background:linear-gradient(var(--rose-soft), transparent);width:1px;height:27px;animation:1.8s ease-in-out infinite linePulse}.story-wrap{background:#fffdfc;position:relative}.hero-counter{background:0 0;border-top:1px solid #b978862e;border-bottom:0;width:min(600px,88vw);margin:28px auto 0;padding:18px 0 0}.counter-lead{color:#a18b91;letter-spacing:.22em;margin:0 0 13px;font-family:Songti SC,serif;font-size:9px}.counter-grid{justify-content:center;align-items:center;gap:clamp(15px,3vw,46px);display:flex}.counter-unit{flex-direction:column;min-width:clamp(48px,7vw,92px);display:flex;position:relative}.counter-number{font-variant-numeric:tabular-nums;color:var(--rose-dark);letter-spacing:.015em;font-family:Georgia,Times New Roman,serif;font-size:clamp(24px,3.5vw,36px);font-weight:400;line-height:1}.counter-label{color:var(--muted);letter-spacing:.18em;margin-top:7px;font-size:8px}.counter-unit i{color:#d9bec4;font-family:Georgia,serif;font-size:24px;font-style:normal;position:absolute;top:.25em;right:calc(clamp(15px,3vw,46px)/-2 - 3px)}.counter-since{color:#b09da2;letter-spacing:.22em;margin:11px 0 0;font-family:Georgia,serif;font-size:8px}.timeline-section{background:linear-gradient(#fffdfc 0%,#fbf0f2 100%);padding:125px 0 165px}.section-heading{justify-content:space-between;align-items:end;padding:0 clamp(24px,7vw,110px);display:flex}.section-heading h2{letter-spacing:.08em;margin:12px 0 0;font-family:Songti SC,STSong,serif;font-size:clamp(30px,4vw,52px);font-weight:400}.drag-tip{color:#aa9298;letter-spacing:.13em;font-size:11px}.drag-tip span{color:var(--rose);margin:0 5px}.timeline-position{color:#a58c92;letter-spacing:.16em;font-family:Georgia,serif;font-size:10px}.timeline-rail{cursor:grab;scrollbar-width:thin;scrollbar-color:#b978864d transparent;padding:70px clamp(24px,7vw,110px) 26px;overflow:auto hidden}.timeline-rail:active{cursor:grabbing}.timeline-track{min-width:max(980px, calc(var(--node-count) * 280px));align-items:start;gap:150px;height:180px;display:flex;position:relative}.timeline-track:before{content:"";background:linear-gradient(90deg, var(--rose) 0%, #b978862e 78%, transparent);height:1px;position:absolute;top:65px;left:0;right:0}.timeline-progress{z-index:1;background:linear-gradient(90deg, var(--rose-dark), var(--rose-soft));pointer-events:none;border-radius:9px;height:5px;transition:width .6s cubic-bezier(.2,.75,.25,1);position:absolute;top:63px;left:0;box-shadow:0 0 18px #b9788659}.timeline-node{text-align:left;width:150px;color:var(--ink);cursor:pointer;z-index:2;background:0 0;border:0;flex:0 0 150px;padding:0;position:relative}.node-date{color:var(--rose-dark);letter-spacing:.15em;font-family:Georgia,serif;font-size:13px;display:block}.node-dot{border:1px solid #0000;border-radius:50%;place-items:center;width:18px;height:18px;margin-top:24px;transition:all .3s;display:grid}.node-dot i{background:var(--rose-soft);border-radius:50%;width:7px;height:7px;transition:all .3s}.timeline-node:hover .node-dot,.timeline-node.is-active .node-dot{border-color:var(--rose);background:#fff;box-shadow:0 0 0 7px #b9788617}.timeline-node.is-active .node-dot i{background:var(--rose-dark)}.timeline-node.is-active .node-dot:not(.is-heart){animation:1.8s ease-in-out infinite nodePulse}.timeline-node.is-active .node-dot.is-heart svg{transform-origin:50%;animation:2.4s ease-in-out infinite heartBeat}.node-dot.is-heart{background:0 0;border:0;border-radius:0;width:24px;height:24px;margin-top:21px}.node-dot.is-heart svg{width:19px;height:19px;fill:var(--rose);filter:drop-shadow(0 4px 7px #81505b33);transition:all .3s}.timeline-node:hover .node-dot.is-heart,.timeline-node.is-active .node-dot.is-heart{box-shadow:none;background:0 0;border-color:#0000}.timeline-node:hover .node-dot.is-heart svg,.timeline-node.is-active .node-dot.is-heart svg{fill:var(--rose-dark);filter:drop-shadow(0 5px 9px #81505b47);transform:scale(1.18)}.node-location{color:var(--rose);letter-spacing:.24em;margin-top:20px;font-size:9px;display:block}.node-title{letter-spacing:.08em;white-space:nowrap;margin-top:6px;font-family:Songti SC,STSong,serif;font-size:15px;display:block}.timeline-node:not(:has(.node-location)) .node-title{margin-top:22px}.node-index{color:#81505b57;letter-spacing:.15em;margin-top:8px;font-family:Georgia,serif;font-size:10px;display:block}.future-line{flex:1;min-width:450px;height:120px;position:relative}.future-line span{background:#b9788638;border-radius:50%;width:4px;height:4px;position:absolute;top:59px}.future-line span:first-child{left:10%}.future-line span:nth-child(2){left:37%}.future-line span:nth-child(3){left:64%}.future-line p{color:#b19da2;letter-spacing:.13em;margin:98px 0 0 70px;font-family:Songti SC,STSong,serif;font-size:13px}.memory-card{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:linear-gradient(135deg,#ffffffe6,#fff8f8b8);border:1px solid #81505b1a;border-radius:2px;grid-template-columns:80px 1fr auto;align-items:center;gap:34px;width:min(1160px,100% - 48px);min-height:350px;margin:24px auto 0;padding:clamp(36px,6vw,72px);animation:.55s both cardIn;display:grid;position:relative;box-shadow:0 40px 100px #74434e1c}.memory-nav{width:38px;height:38px;color:var(--rose-dark);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffb8;border:1px solid #81505b2e;border-radius:50%;place-items:center;padding:0;line-height:0;transition:color .25s,background .25s,border-color .25s,transform .25s;display:grid;position:absolute;bottom:18px}.memory-nav-prev{left:22px}.memory-nav-next{right:22px}.memory-nav-icon{border-bottom:1.5px solid;border-right:1.5px solid;width:8px;height:8px;display:block}.memory-nav-prev .memory-nav-icon{transform:rotate(135deg)}.memory-nav-next .memory-nav-icon{transform:rotate(-45deg)}.memory-nav:hover:not(:disabled){border-color:var(--rose);background:var(--rose);color:#fff;transform:translateY(-2px)}.memory-nav:disabled{opacity:.25;cursor:default}.memory-nav:focus-visible{outline-offset:3px;outline:2px solid #b9788680}.memory-line{justify-content:center;align-self:stretch;display:flex}.memory-line:before{content:"";background:linear-gradient(transparent, var(--rose-soft) 22%, var(--rose-soft) 78%, transparent);width:1px}.memory-line span{border:1px solid var(--rose);background:#fff;border-radius:50%;width:8px;height:8px;margin-top:45%;position:absolute}.memory-date{color:var(--rose);letter-spacing:.18em!important;margin:0 0 17px!important;font-family:Georgia,serif!important;font-size:11px!important}.memory-copy h3{letter-spacing:.08em;margin:0 0 20px;font-family:Songti SC,STSong,serif;font-size:clamp(25px,3vw,38px);font-weight:400}.memory-copy>p{color:#746368;letter-spacing:.07em;max-width:600px;margin:0;font-family:Songti SC,STSong,serif;font-size:15px;line-height:2.1}.origin-label{color:#b59ca2;letter-spacing:.25em;margin-top:26px;font-family:Georgia,serif;font-size:9px;display:inline-block}.relationship-label{color:var(--rose-dark);letter-spacing:.2em;align-items:center;gap:8px;margin-top:26px;font-family:Georgia,serif;font-size:9px;display:flex}.relationship-label svg{width:13px;height:13px;fill:var(--rose);flex:none}.photo-area{justify-items:center;gap:15px;display:grid}.photo-stack{cursor:pointer;perspective:1100px;width:220px;height:250px;transform-style:preserve-3d;isolation:isolate;touch-action:manipulation;background:0 0;border:0;position:relative}.photo-stack:focus-visible{outline:1px solid var(--rose);outline-offset:8px}.photo-card{z-index:calc(5 - var(--layer));transform:translate(calc(var(--layer) * -4px), calc(var(--layer) * 2px)) rotate(calc((var(--layer) - 1) * 3deg));transform-origin:5%;transform-style:preserve-3d;backface-visibility:hidden;pointer-events:none;will-change:transform, opacity;background:#fff;padding:9px 9px 30px;transition:transform .4s,box-shadow .4s;position:absolute;inset:8px;overflow:hidden;box-shadow:0 18px 40px #48293126}.photo-card:after{content:"";z-index:2;opacity:0;pointer-events:none;background:linear-gradient(90deg,#fff0 28%,#ffffffb3 67%,#643e4721 100%);position:absolute;inset:0}.photo-card img{object-fit:contain;backface-visibility:hidden;background:linear-gradient(135deg,#fbf6f7,#f4e9eb);width:100%;height:100%}.photo-card.is-front:not(.is-turning){animation:.34s cubic-bezier(.2,.72,.28,1) both photoSettle}.photo-stack:hover .photo-card.is-front:not(.is-turning){transform:translate(1px,-3px)rotate(-2deg);box-shadow:0 24px 48px #48293130}.photo-card.is-turning{z-index:8;animation:.64s cubic-bezier(.32,.02,.18,1) both photoPageTurn}.photo-card.is-turning:after{animation:.64s both paperSheen}.photo-count{z-index:20;color:#7e696f;letter-spacing:.08em;text-align:center;white-space:nowrap;pointer-events:none;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffffe6;border:1px solid #81505b1a;border-radius:999px;min-width:42px;padding:4px 7px 3px;font-family:Georgia,serif;font-size:10px;line-height:1;position:absolute;bottom:14px;right:18px;box-shadow:0 4px 14px #4829311a}.open-photo{color:#8e747a;letter-spacing:.15em;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #81505b4d;padding:5px 0;font-size:10px}.album-section{background:#fbf0f2;padding:110px clamp(24px,7vw,110px) 150px}.album-section .section-heading{padding:0}.album-heading{align-items:end}.album-summary{color:#a18189;letter-spacing:.14em;margin:0;font-size:11px}.album-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:54px;display:grid}.album-day-card{background:#ffffffb8;border:1px solid #81505b17;grid-template-columns:minmax(0,1fr) 230px;align-items:center;min-height:330px;padding:34px;display:grid;overflow:hidden;box-shadow:0 24px 65px #74434e14}.album-date-row{align-items:center;gap:10px;margin-bottom:22px;display:flex}.album-date-row time{color:var(--rose-dark);letter-spacing:.08em;font-family:Georgia,serif;font-size:30px}.album-date-row span{background:var(--blush);color:#94757d;letter-spacing:.12em;border-radius:20px;padding:5px 8px;font-size:8px}.album-day-copy h3{margin:0;font-family:Songti SC,serif;font-size:20px;font-weight:400;line-height:1.55}.album-day-copy p{color:#927d82;letter-spacing:.08em;min-height:3em;margin:10px 0 28px;font-size:11px;line-height:1.6}.album-day-copy small{color:#81505b73;letter-spacing:.16em;font-family:Georgia,serif;font-size:9px}.album-day-card .photo-area{transform:scale(.86)}.music-player{z-index:40;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffd1;border:1px solid #81505b1f;grid-template-columns:52px 132px;align-items:center;padding:7px;transition:left .32s cubic-bezier(.2,.75,.25,1),top .2s,box-shadow .2s;display:grid;position:fixed;bottom:12px;right:12px;box-shadow:0 16px 45px #60364021}.music-player.is-dragging{-webkit-user-select:none;user-select:none;transition:none;box-shadow:0 22px 58px #60364038}.vinyl-button{isolation:isolate;cursor:grab;touch-action:none;background:0 0;border:0;border-radius:50%;width:44px;height:44px;padding:0;position:relative}.vinyl-button:active{cursor:grabbing}.vinyl-button:before,.vinyl-button:after{content:"";z-index:-1;opacity:0;pointer-events:none;border:1px solid #b9788657;border-radius:50%;position:absolute;inset:-3px}.vinyl-button>span{background:repeating-radial-gradient(circle,#513f44 0 2px,#2f2528 3px 5px);border-radius:50%;place-items:center;width:44px;height:44px;display:grid;box-shadow:0 4px 12px #352d3040}.vinyl-button i{background:#f7e7ea;border:4px solid #d8a5b0;border-radius:50%;width:12px;height:12px}.vinyl-button.is-playing>span{animation:4s linear infinite spin}.vinyl-button.is-playing{animation:.56s ease-in-out infinite speakerVibrate}.vinyl-button.is-playing:before{animation:1.5s ease-out infinite soundWave}.vinyl-button.is-playing:after{animation:1.5s ease-out .55s infinite soundWave}.track-button{text-align:left;cursor:pointer;background:0 0;border:0;padding:4px 11px;overflow:hidden}.track-button small{color:#b29199;letter-spacing:.18em;font-size:7px;display:block}.track-button strong{color:#5a484d;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-family:Songti SC,serif;font-size:11px;font-weight:400;display:block;overflow:hidden}.playlist{background:#fffcfbf5;border:1px solid #81505b1f;width:290px;padding:20px;display:none;position:absolute;bottom:66px;right:0;box-shadow:0 20px 60px #502e3629}.music-player.is-left .playlist{left:0;right:auto}.music-player.is-upper .playlist{top:66px;bottom:auto}.music-player.is-open .playlist{animation:.25s both cardIn;display:block}.playlist-head{color:var(--rose);letter-spacing:.22em;justify-content:space-between;margin-bottom:15px;font-size:9px;display:flex}.playlist-head button{color:#947a80;cursor:pointer;background:0 0;border:0;font-size:20px}.playlist>p{color:#927c81;margin:8px 0;font-family:Songti SC,serif;font-size:12px;line-height:1.9}.playlist>button{text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #81505b14;grid-template-columns:28px 1fr;gap:2px 8px;width:100%;padding:11px 4px;display:grid}.playlist>button>span{color:#baa5aa;grid-row:span 2;font-family:Georgia,serif;font-size:10px}.playlist>button strong{font-family:Songti SC,serif;font-size:12px;font-weight:400}.playlist>button small{color:#a69297;font-size:9px}.lightbox{z-index:100;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#271d20eb;grid-template-columns:50px 1fr 50px;align-items:center;gap:20px;padding:30px;display:grid;position:fixed;inset:0}.lightbox>button{color:#fff;cursor:pointer;background:0 0;border:0;font-size:28px}.lightbox-close{position:absolute;top:18px;right:24px}.lightbox figure{justify-items:center;gap:16px;margin:0;display:grid}.lightbox img{object-fit:contain;max-width:100%;max-height:82vh;box-shadow:0 28px 80px #00000059}.lightbox figcaption{color:#eadde0;letter-spacing:.08em;font-family:Songti SC,serif;font-size:13px}footer{text-align:center;background:#fbf0f2;flex-direction:column;align-items:center;padding:90px 24px 110px;display:flex}footer svg{width:24px;height:24px}footer p{letter-spacing:.16em;margin:18px 0 8px;font-family:Georgia,Songti SC,serif;font-size:14px}footer span{color:#9c868c;letter-spacing:.13em;font-family:Songti SC,serif;font-size:12px}@keyframes rise{0%{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}@keyframes linePulse{0%,to{transform-origin:top;opacity:.45;transform:scaleY(.5)}50%{opacity:1;transform:scaleY(1)}}@keyframes cardIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes speakerVibrate{0%,to{transform:translate(0)scale(1)}25%{transform:translate(-.7px,.4px)scale(1.012)}50%{transform:translate(.7px,-.4px)scale(.995)}75%{transform:translate(.4px,.7px)scale(1.008)}}@keyframes soundWave{0%{opacity:.55;transform:scale(.92)}72%,to{opacity:0;transform:scale(1.42)}}@keyframes photoSettle{0%{opacity:.72;transform:translate(-4px,3px)rotate(0)scale(.985)}to{opacity:1;transform:translate(0)rotate(-3deg)scale(1)}}@keyframes photoPageTurn{0%{opacity:1;transform:perspective(1100px)translate(0)rotate(-3deg)rotateY(0);box-shadow:0 18px 40px #48293126}22%{opacity:1;transform:perspective(1100px)translate(-3px,-4px)rotate(-2deg)rotateY(-20deg)scale(1.012);box-shadow:18px 22px 45px #48293133}62%{opacity:.96;transform:perspective(1100px)translate(-24px,-7px)rotate(-5deg)rotateY(-69deg)scale(1.01);box-shadow:34px 20px 45px #48293133}to{opacity:0;transform:perspective(1100px)translate(-126px,8px)rotate(-8deg)rotateY(-96deg)scale(.98);box-shadow:38px 12px 35px #48293114}}@keyframes paperSheen{0%,12%{opacity:0}42%{opacity:.88}78%{opacity:.28}to{opacity:0}}@keyframes nodePulse{0%,to{box-shadow:0 0 0 7px #b9788617}50%{box-shadow:0 0 0 12px #b9788608}}@keyframes heartBeat{0%,55%,to{transform:scale(1.08)}10%{transform:scale(1.2)}20%{transform:scale(1.1)}30%{transform:scale(1.17)}}@media (width<=760px){header{height:70px;padding:0 20px}nav{gap:18px}nav a:first-child{display:none}.hero{padding:84px 18px 42px}.names{gap:11px;margin-top:28px}.names h1{letter-spacing:.025em;font-size:clamp(37px,11vw,52px)}.names>span{width:30px;height:30px}.names svg{width:13px}.hero-counter{width:min(92vw,500px);margin-top:23px;padding:15px 0 0}.counter-grid{gap:8px}.counter-unit{min-width:54px}.counter-number{font-size:clamp(23px,7vw,34px)}.counter-unit i{font-size:24px;right:-7px}.counter-label{font-size:7px}.section-heading{align-items:start}.timeline-position{margin-top:8px}.timeline-rail{padding-left:24px;padding-right:24px}.timeline-track{gap:90px}.memory-card{grid-template-columns:30px 1fr;gap:16px;padding:35px 26px 78px}.memory-nav{width:34px;height:34px;bottom:18px}.memory-nav-prev{left:18px}.memory-nav-next{right:18px}.photo-area{grid-column:2;margin-top:24px}.memory-copy>p{font-size:14px}.music-player{grid-template-columns:46px 112px;bottom:12px;right:12px}.vinyl-button,.vinyl-button>span{width:40px;height:40px}.playlist{width:min(290px,100vw - 28px)}.lightbox{grid-template-columns:36px 1fr 36px;gap:2px;padding:55px 8px 20px}.album-section{padding:90px 20px 110px}.album-heading{align-items:start}.album-summary{text-align:right;width:90px;line-height:1.8}.album-grid{grid-template-columns:1fr;gap:14px;margin-top:38px}.album-day-card{grid-template-columns:1fr;min-height:0;padding:28px 22px 18px}.album-day-copy p{min-height:0;margin-bottom:12px}.album-day-card .photo-area{grid-column:1;margin-top:10px;transform:scale(.84)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
