@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-serif-sc-chinese-simplified-400-normal-hudUdRP0.woff2) format("woff2"),url(/assets/noto-serif-sc-chinese-simplified-400-normal-Bjln_Ehj.woff) format("woff")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-serif-sc-chinese-simplified-500-normal-DL_A5r9p.woff2) format("woff2"),url(/assets/noto-serif-sc-chinese-simplified-500-normal-DvZNnvSs.woff) format("woff")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-serif-sc-chinese-simplified-600-normal-BogBFFgE.woff2) format("woff2"),url(/assets/noto-serif-sc-chinese-simplified-600-normal-BqMAQkQB.woff) format("woff")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-serif-sc-latin-400-normal-bWtu-bD9.woff2) format("woff2"),url(/assets/noto-serif-sc-latin-400-normal-TDAhzw_V.woff) format("woff")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-serif-sc-latin-500-normal-ZcXeFfWF.woff2) format("woff2"),url(/assets/noto-serif-sc-latin-500-normal-DBRCPsxC.woff) format("woff")}@font-face{font-family:"Noto Serif SC";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-serif-sc-latin-600-normal-B99s59ZT.woff2) format("woff2"),url(/assets/noto-serif-sc-latin-600-normal-B12eBB-v.woff) format("woff")}@font-face{font-family:Ma Shan Zheng;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ma-shan-zheng-chinese-simplified-400-normal-Cq4ZnsCU.woff2) format("woff2"),url(/assets/ma-shan-zheng-chinese-simplified-400-normal-BXh4An9z.woff) format("woff")}@font-face{font-family:Ma Shan Zheng;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ma-shan-zheng-latin-400-normal-DyQkJewW.woff2) format("woff2"),url(/assets/ma-shan-zheng-latin-400-normal-CFEiucTT.woff) format("woff")}:root{font-family:"Noto Serif SC",Songti SC,serif;color:#3f302a;background:#efe5d6;font-synthesis:none;text-rendering:optimizeLegibility;--paper: #f4ebde;--paper-light: #f8f0e5;--ink: #3f302a;--muted: #79685d;--burgundy: #7d1f25;--rose: #ad5d64;--gold: #b58a47}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:var(--paper);-webkit-font-smoothing:antialiased}body.is-locked{overflow:hidden}button,a{font:inherit}button{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--burgundy);outline-offset:5px}.site{min-height:100vh;background:var(--paper)}.scroll-progress{position:fixed;z-index:100;inset:0 0 auto;height:3px;background:var(--burgundy);transform-origin:left center}.music-toggle{position:fixed;z-index:90;top:24px;left:28px;display:inline-flex;align-items:center;gap:9px;padding:10px 14px;border:1px solid rgba(88,62,49,.28);border-radius:999px;background:#f8f0e5e0;color:#4d392f;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .22s ease,background .22s ease}.music-toggle:hover{transform:translateY(-2px);background:var(--paper-light)}.music-toggle svg{width:19px;height:19px}.music-toggle span{font-size:12px;letter-spacing:.12em}.hero{position:relative;min-height:100vh;overflow:hidden;isolation:isolate;background:#e8dccb}.hero-art,.promise-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.hero-art{object-position:center;transform:scale(1.035);transition:transform 1.8s cubic-bezier(.2,.72,.2,1),filter .9s ease}.is-open .hero-art{transform:scale(1);filter:saturate(.96)}.hero-shade{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;background:#f7eee10f;pointer-events:none}.hero-copy{position:relative;z-index:3;display:flex;min-height:100vh;width:min(46vw,690px);padding:16vh 0 13vh 8vw;flex-direction:column;align-items:flex-start;justify-content:center}.eyebrow{margin:0 0 20px;color:var(--burgundy);font-size:11px;font-weight:600;letter-spacing:.26em;text-transform:uppercase}.name-lockup{display:flex;align-items:center;gap:24px;margin:0 0 34px;padding:0;border:0;background:transparent;color:var(--burgundy);font-size:clamp(48px,6vw,96px);font-weight:500;letter-spacing:.04em;cursor:pointer;transition:color .22s ease,transform .22s ease}.name-lockup:hover{color:#9a3940;transform:translateY(-2px)}.name-lockup .cross{color:var(--rose);font-size:.42em;font-weight:400}.hero-intro{margin:0;max-width:390px;color:#56443a;font-size:clamp(15px,1.2vw,19px);line-height:2;letter-spacing:.08em}.secret-note{max-width:390px;margin:22px 0 0;padding-left:18px;border-left:2px solid var(--rose);color:var(--burgundy);font-family:Ma Shan Zheng,cursive;font-size:18px;line-height:1.7;animation:note-in .42s ease both}.open-letter{display:inline-flex;align-items:center;gap:14px;margin-top:42px;padding:15px 20px 15px 24px;border:1px solid rgba(125,31,37,.55);border-radius:999px;background:#f8f0e5c7;color:var(--burgundy);font-weight:600;letter-spacing:.12em;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .25s ease,background .25s ease}.open-letter:hover{transform:translateY(-3px);background:var(--paper-light)}.open-letter svg{width:24px;height:24px}.hero-handwriting{position:absolute;z-index:3;top:20%;right:8%;width:min(31vw,430px);color:#513e34;font-family:Ma Shan Zheng,cursive;font-size:clamp(22px,2vw,32px);line-height:1.7;transform:rotate(-3deg) translateY(24px);opacity:0;transition:opacity .9s .4s ease,transform 1.2s .35s ease}.is-open .hero-handwriting{opacity:1;transform:rotate(-3deg) translateY(0)}.hero-handwriting p{margin:0 0 16px}.hero-handwriting strong{display:block;margin-top:10px;text-align:right;font-size:1.12em;font-weight:400}.scroll-hint{position:absolute;z-index:4;bottom:28px;left:50%;display:flex;flex-direction:column;align-items:center;gap:7px;color:#6d5a50;text-decoration:none;transform:translate(-50%)}.scroll-hint span{font-size:11px;letter-spacing:.16em}.scroll-hint svg{width:22px;height:22px;animation:arrow-down 1.8s ease-in-out infinite}.letter-content{position:relative;height:0;overflow:hidden;opacity:0;transition:opacity .8s ease}.is-open .letter-content{height:auto;overflow:visible;opacity:1}.section-pad{padding:128px max(6vw,28px)}.story{background:var(--paper-light)}.section-heading{display:grid;max-width:1180px;margin:0 auto 100px;grid-template-columns:1.1fr .8fr;column-gap:12vw}.section-heading .eyebrow{grid-column:1 / -1}.section-heading h2,.promise h2,.confession h2,.confession-modal h2{margin:0;color:var(--ink);font-size:clamp(38px,4.4vw,70px);font-weight:500;line-height:1.38;letter-spacing:.03em}.section-heading>p:last-child{align-self:end;margin:0 0 8px;color:var(--muted);font-size:15px;line-height:2}.memory-list{max-width:1180px;margin:0 auto}.memory{display:grid;align-items:center;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:clamp(48px,8vw,118px);margin-bottom:120px}.memory:nth-child(2n){grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr)}.memory:nth-child(2n) .memory-photo-wrap{grid-column:2;grid-row:1}.memory:nth-child(2n) .memory-copy{grid-column:1;grid-row:1}.memory-photo-wrap{position:relative;padding:14px;background:#f7eddf;box-shadow:0 18px 45px #4c332521;transform:rotate(-1.2deg)}.memory:nth-child(2n) .memory-photo-wrap{transform:rotate(1.4deg)}.memory-photo{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;filter:saturate(.88) sepia(.05)}.memory-number{position:absolute;z-index:2;top:-22px;left:-22px;display:grid;width:58px;height:58px;place-items:center;border-radius:50%;background:var(--burgundy);color:#f8eee1;font-size:12px;letter-spacing:.12em;box-shadow:0 10px 24px #50171b33}.memory-copy{max-width:410px}.memory-eyebrow{margin:0 0 14px;color:var(--rose);font-size:12px;font-weight:600;letter-spacing:.18em}.memory-copy h3{margin:0 0 24px;color:var(--ink);font-size:clamp(28px,3vw,44px);font-weight:500;line-height:1.45}.memory-copy>p:last-child{margin:0;color:var(--muted);font-size:15px;line-height:2}.promise{position:relative;display:grid;min-height:850px;place-items:center;overflow:hidden;isolation:isolate}.promise-art{z-index:-1;object-position:center}.promise-copy{width:min(760px,86vw);padding:clamp(38px,6vw,82px);background:#f8f0e5d1;box-shadow:0 28px 80px #432b1e21;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.promise h2{margin-bottom:38px;font-size:clamp(36px,4vw,62px)}.handwritten-promise{color:#7a5545;font-family:Ma Shan Zheng,cursive;font-size:clamp(22px,2.25vw,32px);line-height:1.65;transform:rotate(-1.1deg)}.handwritten-promise p{margin:0 0 4px}.promise-sign{margin:32px 0 0;color:var(--burgundy);font-size:13px;letter-spacing:.12em}.confession{position:relative;display:grid;min-height:780px;place-items:center;overflow:hidden;background:#f5ebde;text-align:center}.confession:before{content:"";position:absolute;top:24px;right:24px;bottom:24px;left:24px;border:1px solid rgba(125,31,37,.18);pointer-events:none}.confession-copy{max-width:910px}.confession h2{color:var(--burgundy);font-size:clamp(50px,7.2vw,112px)}.confession-copy>p:not(.eyebrow):not(.question){margin:32px auto 0;color:var(--muted);font-size:15px;line-height:2}.question{margin:22px 0 38px;color:var(--ink);font-size:clamp(20px,2.2vw,30px);letter-spacing:.08em}.seal-button{position:relative;display:grid;width:190px;height:190px;padding:0;place-items:center;border:0;border-radius:50%;overflow:hidden;background:transparent;cursor:pointer;box-shadow:0 18px 38px #4e14183b;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s ease}.seal-button:hover{transform:scale(1.055) rotate(-2deg);box-shadow:0 24px 48px #4e141847}.seal-button img{position:absolute;top:-11%;right:-11%;bottom:-11%;left:-11%;width:122%;height:122%;object-fit:cover}.seal-button span{position:relative;z-index:1;margin-top:28px;color:#f0d59a;font-size:18px;line-height:1.45;letter-spacing:.12em;text-shadow:0 1px 3px rgba(56,9,12,.55)}.seal-hint{display:flex;align-items:center;gap:7px;margin:-20px 0 0;color:var(--muted);font-size:11px;letter-spacing:.12em}footer{display:flex;padding:68px 24px;flex-direction:column;align-items:center;background:#e9ddcd;color:#7a6557;text-align:center}footer svg{width:18px;height:18px;color:var(--burgundy)}footer p{margin:12px 0 7px;font-size:14px;letter-spacing:.12em}footer span{font-size:9px;letter-spacing:.25em}[data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .8s ease,transform .95s cubic-bezier(.2,.72,.2,1)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}.modal-backdrop{position:fixed;z-index:200;top:0;right:0;bottom:0;left:0;display:grid;padding:24px;place-items:center;background:#2819149e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:fade-in .3s ease both}.confession-modal{position:relative;width:min(680px,100%);padding:clamp(46px,7vw,82px);background:var(--paper-light);box-shadow:0 28px 90px #24140f47;text-align:center;animation:modal-in .52s cubic-bezier(.2,.82,.2,1) both}.confession-modal:before{content:"";position:absolute;top:16px;right:16px;bottom:16px;left:16px;border:1px solid rgba(125,31,37,.2);pointer-events:none}.modal-close{position:absolute;z-index:2;top:24px;right:24px;display:grid;width:42px;height:42px;padding:0;place-items:center;border:1px solid rgba(80,53,42,.24);border-radius:50%;background:transparent;cursor:pointer}.modal-close svg{width:19px;height:19px}.confession-modal h2{font-size:clamp(34px,5vw,56px)}.confession-modal>p:not(.eyebrow):not(.accepted-message){margin:28px 0 34px;color:var(--muted);font-size:15px;line-height:2}.accept-button{position:relative;z-index:2;display:inline-flex;align-items:center;gap:10px;min-width:170px;padding:15px 26px;justify-content:center;border:1px solid var(--burgundy);border-radius:999px;background:var(--burgundy);color:#fff6e9;font-weight:600;letter-spacing:.12em;cursor:pointer;transition:transform .22s ease,background .22s ease}.accept-button:hover{transform:translateY(-2px);background:#942f36}.accept-button svg{width:18px;height:18px}.accepted-message{position:relative;z-index:2;margin:24px 0 0;color:var(--burgundy);font-family:Ma Shan Zheng,cursive;font-size:19px;animation:note-in .4s ease both}@keyframes arrow-down{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes note-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:860px){.music-toggle{top:16px;left:16px}.hero-art{object-position:58% center}.hero-shade{background:#f6ecde57}.hero-copy{width:100%;min-height:100svh;padding:17vh 8vw 36vh;justify-content:flex-start}.name-lockup{gap:13px;font-size:clamp(43px,14vw,68px)}.hero-intro{max-width:330px}.hero-handwriting{top:auto;right:8vw;bottom:12vh;width:62vw;font-size:clamp(18px,4.8vw,25px)}.section-pad{padding:88px 7vw}.section-heading{display:block;margin-bottom:72px}.section-heading>p:last-child{margin-top:28px}.memory,.memory:nth-child(2n){display:flex;gap:38px;margin-bottom:86px;flex-direction:column;align-items:stretch}.memory:nth-child(2n) .memory-photo-wrap,.memory:nth-child(2n) .memory-copy{grid-column:auto;grid-row:auto}.memory-copy{max-width:none}.promise{min-height:760px}.promise-art{object-position:60% center}.confession{min-height:720px}}@media(max-width:520px){.music-toggle span{display:none}.music-toggle{width:42px;height:42px;padding:0;justify-content:center}.hero-copy{padding-top:15vh}.name-lockup{margin-bottom:24px}.hero-handwriting{bottom:10vh;width:76vw}.scroll-hint span{font-size:9px}.section-heading h2,.promise h2{font-size:34px}.memory-photo-wrap{padding:9px}.memory-number{top:-17px;left:-8px;width:46px;height:46px}.promise-copy{width:90vw;padding:34px 26px}.confession{min-height:680px}.confession:before{top:12px;right:12px;bottom:12px;left:12px}.confession h2{font-size:48px}.question{font-size:19px}.seal-button{width:156px;height:156px}.seal-button span{margin-top:22px;font-size:15px}.confession-modal{padding:58px 28px 42px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
