@charset "UTF-8";
:root{--paper:#f5f3ee;--ink:#37454a;--muted:#6f7778;--line:#d9dcd6;--blue:#60859a;--gold:#9a713d;--serif:"Songti SC","STSong","Noto Serif CJK SC","SimSun",serif;--sans:"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:6px}::selection{background:#d8e4e6}figure,p,h1,h2{margin:0}img{display:block;width:100%;height:auto}h1,h2{font-family:var(--serif);font-weight:500}.skip-link{position:fixed;top:-80px;left:16px;background:white;padding:12px;z-index:20}.skip-link:focus{top:12px}.reading-progress{height:2px;position:fixed;inset:0 0 auto;z-index:10}.reading-progress span{display:block;width:100%;height:100%;background:#b58f58;transform:scaleX(0);transform-origin:left}.site-header{max-width:1320px;margin:auto;padding:29px 48px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:13px;font-size:14px;letter-spacing:1.2px}.brand-mark{font-family:Georgia,serif;font-size:22px;border:1px solid #a6ada9;border-radius:5px;padding:4px 8px;letter-spacing:1px}.chapter-label{font-size:13px;color:var(--muted);letter-spacing:2px}.header-divider{padding:0 12px;color:#b0b6b3}.chapter-intro{text-align:center;padding:54px 24px 62px;position:relative}.eyebrow{display:flex;justify-content:center;align-items:center;gap:15px;font-size:12px;letter-spacing:4px;color:var(--muted)}.eyebrow>span{width:23px;height:1px;background:#bfc5c2}.chapter-intro h1{font-size:90px;line-height:1.35;letter-spacing:14px;margin:17px 0 17px;padding-left:30px}.title-dot{color:#a9babe}.introduction{font-family:var(--serif);font-size:19px;line-height:2.05;letter-spacing:2px;color:#626c6d}.scroll-invitation{display:inline-flex;align-items:center;gap:15px;font-size:12px;letter-spacing:2px;color:#727c7d;margin-top:28px}.scroll-invitation span{font-size:21px;transition:transform .25s}.scroll-invitation:hover span{transform:translateY(4px)}.story{max-width:1180px;margin:auto;padding:0 48px}.scene{display:grid;grid-template-columns:minmax(0,2.6fr) minmax(230px,1fr);gap:52px;align-items:center;scroll-margin-top:48px}.scene-picture img{border-radius:12px;box-shadow:0 18px 48px -30px #2e3d4d60}.scene-picture figcaption{display:flex;justify-content:space-between;gap:15px;padding:16px 2px 0;font-size:12px;color:#778080;letter-spacing:1px;line-height:1.7}.scene-picture figcaption span:last-child{font-family:Georgia,serif;font-style:italic}.scene-copy{padding-bottom:35px}.scene-kicker{display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:2px;color:#71848b}.scene-kicker>span{width:22px;height:1px;background:#afbdc0}.scene-copy h2{font-size:30px;line-height:1.65;letter-spacing:1px;margin:23px 0}.scene-copy>p:not(.scene-kicker){font-size:15px;line-height:2.2;color:#6d7677}.scene-copy .quiet-line{margin-top:23px;font-family:var(--serif);color:#657f88!important}.story-pause{display:flex;align-items:center;justify-content:center;gap:15px;height:154px}.story-pause span{height:1px;width:1px;background:var(--line)}.story-pause i{display:block;width:3px;height:3px;background:#b3bfbd;border-radius:50%;box-shadow:0 -13px #cbd2cf,0 13px #cbd2cf}.scene-curiosity{grid-template-columns:minmax(230px,1fr) minmax(0,2.6fr)}.scene-curiosity .scene-picture{grid-column:2;grid-row:1}.scene-curiosity .scene-copy{grid-column:1;grid-row:1;padding-left:18px}.scene-thought{padding-bottom:50px}.scene-door{margin-top:60px;padding:80px 48px 0;text-align:center;background:linear-gradient(180deg,var(--paper) 0%,#f3eee4 28%,#f3e7cf 81%,#f3eadb 100%);position:relative}.door-heading{margin:0 auto 42px}.door-heading .scene-kicker{justify-content:center;color:#8f794f}.door-heading .scene-kicker span{background:#b6a17a}.door-heading h2{font-size:36px;line-height:1.6;letter-spacing:3px;margin:22px 0 18px}.door-heading>p:last-child{font-size:16px;line-height:2;color:#7b776d}.door-picture{max-width:950px;margin:auto;position:relative}.door-picture img{border-radius:12px;box-shadow:0 30px 80px -40px #98724290}.door-invitation{padding:49px 0 68px;display:flex;flex-direction:column;align-items:center}.door-invitation>p{font-family:var(--serif);font-size:21px;letter-spacing:2px;color:#796343}.enter-button{display:flex;align-items:center;justify-content:center;gap:42px;margin-top:25px;min-width:220px;min-height:62px;padding:15px 30px;border:1px solid #9d7b4e;border-radius:7px;background:#866640;color:#fffaf1;font-size:17px;letter-spacing:3px;box-shadow:0 8px 22px -10px #78593090;transition:background .2s,transform .2s,box-shadow .2s}.enter-button span{font-size:25px;letter-spacing:0}.enter-button:hover{background:#755633;transform:translateY(-3px);box-shadow:0 12px 26px -10px #78593099}.enter-button:active{transform:translateY(0)}.chapter-end{margin-top:28px;font-size:12px;letter-spacing:3px;color:#8a7b65}footer{max-width:1180px;padding:26px 48px;margin:auto;display:flex;justify-content:space-between;gap:20px;font-size:12px;line-height:1.8;letter-spacing:1px;color:#778080}.scene-navigation{position:fixed;right:23px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:9px;z-index:4}.scene-navigation a{position:relative;width:22px;height:25px;display:flex;justify-content:center;align-items:center}.scene-navigation a:after{content:"";height:5px;width:5px;border-radius:50%;background:#b5bcb8;transition:all .25s}.scene-navigation a[aria-current]:after{height:7px;width:7px;background:#698793;box-shadow:0 0 0 4px #69879318}.scene-navigation a:last-child[aria-current]:after{background:#ab8147;box-shadow:0 0 0 4px #ab814718}.scene-navigation span{position:absolute;right:30px;white-space:nowrap;font-size:12px;color:#67777b;padding:4px 7px;border-radius:4px;background:#f5f3eeee;opacity:0;transform:translateX(5px);transition:.2s}.scene-navigation a:hover span,.scene-navigation a:focus-visible span{opacity:1;transform:none}.scene-picture,.scene-copy,.door-heading,.door-picture{transition:opacity .8s ease,transform .8s ease}.awaiting-reveal{opacity:0;transform:translateY(22px)}dialog{width:min(490px,calc(100% - 40px));max-height:90vh;border:1px solid #d6c5a9;border-radius:15px;background:#f8f1e5;color:#695438;padding:50px 28px;text-align:center;box-shadow:0 30px 120px #30271944}dialog::backdrop{background:#323b3c66;backdrop-filter:blur(7px)}dialog[open]{animation:door-open .45s ease both}.next-number{font-family:Georgia,serif;font-size:72px;font-weight:400;color:#a48554;letter-spacing:6px;margin-bottom:28px}.next-content .eyebrow{color:#917e60;letter-spacing:4px}.next-content h2{font-size:28px;margin:20px 0 15px;line-height:1.5}.next-content>p:last-of-type{line-height:1.9;color:#85755f;font-size:16px}.return-button{margin-top:32px;padding:12px 20px;border:1px solid #c6b69a;border-radius:6px;background:transparent;color:#756143;font-size:14px;letter-spacing:1px}.return-button span{padding-left:10px}.return-button:hover{background:#eee2cd}body.dialog-open{overflow:hidden}@keyframes door-open{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1550px){.story{max-width:1320px}.scene{gap:70px}.scene-copy h2{font-size:34px}.scene-copy>p:not(.scene-kicker){font-size:16px}.chapter-intro{padding-top:65px;padding-bottom:75px}}
@media(max-width:1000px){.scene{gap:30px;grid-template-columns:minmax(0,2fr) minmax(215px,1fr)}.scene-curiosity{grid-template-columns:minmax(215px,1fr) minmax(0,2fr)}.scene-copy h2{font-size:25px}.scene-copy>p:not(.scene-kicker){font-size:14px}.scene-curiosity .scene-copy{padding-left:0}.scene-navigation{right:8px}.story{padding:0 36px}.site-header{padding:24px 36px}}
@media(max-width:720px){html{scroll-padding-top:20px}.site-header{padding:23px 22px}.brand{font-size:12px;gap:9px;letter-spacing:.5px}.brand-mark{font-size:19px;padding:3px 6px}.chapter-label{font-size:12px;letter-spacing:1px}.header-divider{padding:0 5px}.chapter-intro{padding:47px 24px 45px}.chapter-intro h1{font-size:72px;letter-spacing:9px;padding-left:24px;margin:16px 0 19px}.eyebrow{font-size:12px;letter-spacing:3px}.introduction{font-size:16px;letter-spacing:1px;line-height:2}.scroll-invitation{font-size:12px;letter-spacing:1px;margin-top:24px}.story{padding:0 22px}.scene{display:flex;flex-direction:column;gap:25px;align-items:stretch}.scene-picture img,.door-picture img{border-radius:8px}.scene-picture figcaption{font-size:12px;padding-top:12px;letter-spacing:.4px}.scene-copy{padding:0 10px!important}.scene-kicker{font-size:12px}.scene-copy h2{font-size:28px;margin:15px 0 14px;line-height:1.6}.scene-copy>p:not(.scene-kicker){font-size:16px;line-height:2}.scene-copy .quiet-line{margin-top:20px}.story-pause{height:90px}.scene-thought{padding-bottom:0}.scene-door{padding:57px 22px 0;margin-top:32px}.door-heading{margin-bottom:28px}.door-heading h2{font-size:27px;letter-spacing:1px;margin-top:20px}.door-heading>p:last-child{font-size:15px;line-height:2}.door-invitation{padding:35px 0 46px}.door-invitation>p{font-size:19px;letter-spacing:1px}.enter-button{min-height:59px;margin-top:23px}.scene-navigation{display:none}footer{padding:22px;flex-direction:column;align-items:center;gap:5px;font-size:12px}dialog{padding:36px 22px}.next-number{font-size:60px}}
@media(max-width:360px){.site-header{padding:20px 16px}.brand{font-size:11px}.chapter-label{font-size:11px}.chapter-intro{padding-left:16px;padding-right:16px}.introduction{letter-spacing:0}.story{padding:0 16px}.scene-door{padding-left:16px;padding-right:16px}.door-heading h2{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.awaiting-reveal{opacity:1;transform:none}}

/* The chapters inside 504 share the same warm book palette. */
.warm-chapter{--paper:#f7f2e9;--ink:#514a40;--muted:#7e7568;--line:#dfd3be;--blue:#997947}
.warm-chapter ::selection{background:#ead8b7}
.warm-chapter .brand-mark{border-color:#b8a78c;color:#806541}
.warm-chapter .title-dot{color:#c3a36f}
.warm-chapter .eyebrow>span{background:#c8bba4}
.warm-chapter .introduction{color:#7c705f}
.warm-chapter .scroll-invitation{color:#867861}
.warm-chapter .scene-kicker{color:#967b50}
.warm-chapter .scene-kicker>span{background:#c0aa87}
.warm-chapter .scene-copy>p:not(.scene-kicker){font-size:16px;color:#807565}
.warm-chapter .scene-copy .quiet-line{color:#947447!important}
.warm-chapter .scene-picture img{box-shadow:0 18px 48px -30px #9d713766}
.warm-chapter .scene-picture figcaption{color:#877b69}
.warm-chapter .story-pause i{background:#c4ad85;box-shadow:0 -13px #ddceb5,0 13px #ddceb5}
.warm-chapter .scene-door{background:linear-gradient(180deg,var(--paper) 0%,#f6ecd9 35%,#f2e3c6 81%,#f3eadb 100%)}
.warm-chapter .scene-navigation a[aria-current]:after{background:#ab8147;box-shadow:0 0 0 4px #ab814718}
.warm-chapter .scene-navigation span{color:#877047;background:#f7f2e9ee}
.warm-chapter .scene-copy .story-quote{margin:24px 0 0;padding:0 0 0 15px;border-left:2px solid #c9aa77;font-family:var(--serif);font-size:17px;line-height:2;color:#8d6c3e}
.previous-chapter{display:inline-flex;align-items:center;gap:9px;min-height:44px;margin-top:22px;font-size:13px;letter-spacing:1px;color:#887355}
.previous-chapter:hover{color:#604723;text-decoration:underline;text-underline-offset:5px}
.warm-chapter .chapter-end{margin-top:12px}
@media(max-width:720px){.warm-chapter .door-invitation>p{font-size:17px;line-height:1.9;letter-spacing:.5px}.warm-chapter .scene-copy .story-quote{font-size:16px}.warm-chapter .introduction{letter-spacing:.5px}}

.chapter-three .scene-copy code{font-family:"SFMono-Regular",Consolas,monospace;font-size:.94em;color:#71613f;padding:1px 5px;background:#eee5d6;border-radius:3px}
.chapter-three .door-heading>p:last-child{max-width:650px;margin-inline:auto;line-height:2.15}
@media(max-width:720px){.chapter-three .letter-button{gap:20px;max-width:100%;padding-inline:23px;font-size:16px;letter-spacing:1px}.chapter-three .door-heading>p:last-child{font-size:15px}.chapter-three .door-invitation>p{max-width:100%}}

.chapter-three .door-invitation .birthday-transition{font-family:var(--sans);font-size:14px;letter-spacing:1px;line-height:1.8;color:#8a775d;margin-top:14px}
/* A personal birthday letter, with the warm paper palette of the story. */
.birthday-page{background:radial-gradient(ellipse at 50% 0%,#f3dfb7aa,transparent 35%),var(--paper)}
.birthday-intro{padding:48px 24px 43px}
.birthday-intro h1{padding:0;margin:30px 0 0;line-height:1.4}
.birthday-recipient{display:block;font-family:Georgia,var(--serif);font-size:27px;font-weight:400;letter-spacing:2px;color:#9a7948;margin-bottom:16px}
.birthday-title-text{display:block;font-size:68px;letter-spacing:7px;color:#665039}
.birthday-cake{display:inline-block;font-size:36px;letter-spacing:0;vertical-align:8px}
.birthday-letter{width:calc(100% - 64px);max-width:860px;margin:0 auto;padding:58px 64px 46px;background:#fffdf8e0;border:1px solid #ded1b9;border-top:3px solid #b49a6d;border-radius:5px;box-shadow:0 22px 70px -46px #a58c66;color:#625b50;font-family:var(--sans);font-size:17px;line-height:2.15;letter-spacing:.35px;overflow-wrap:break-word}
.birthday-letter>p{margin-bottom:27px}
.birthday-letter .letter-greeting{font-family:var(--serif);font-size:24px;color:#745b39;margin-bottom:30px}
.birthday-letter strong{font-weight:600}
.birthday-letter .letter-highlight{font-family:var(--serif);font-size:25px;line-height:1.8;color:#96713b;padding:21px 0;border-block:1px solid #e9ddc8;margin:31px 0;letter-spacing:1px}
.birthday-letter .letter-promise{font-family:var(--serif);font-size:20px;line-height:2;color:#836438;border-left:2px solid #c3a46c;padding:5px 0 5px 22px;margin:34px 0}
.birthday-letter .letter-final-wish{font-family:var(--serif);font-size:22px;line-height:1.9;color:#8c6536;margin-top:34px}
.birthday-letter .letter-signoff{text-align:right;margin:38px 0 0;padding-top:27px;border-top:1px solid #e9ddc8;color:#7a684e;font-size:16px;line-height:2}
.letter-signoff span{font-family:Georgia,serif;font-size:25px;font-style:italic;color:#816337;white-space:nowrap}
.letter-signoff time{display:block;font-size:14px;color:#988b76;margin-top:7px;letter-spacing:1px}
.birthday-ending{padding:44px 22px 64px;display:flex;flex-direction:column;align-items:center;text-align:center}
.birthday-ending>p{font-family:var(--serif);font-size:20px;letter-spacing:1px;color:#806a48;line-height:1.9}
.birthday-ending .enter-button{font-size:16px;gap:25px;letter-spacing:1px}
.birthday-ending .chapter-end{margin-top:16px;line-height:1.8}
@media(max-width:720px){.birthday-intro{padding:36px 22px 30px}.birthday-intro h1{margin-top:26px}.birthday-recipient{font-size:23px;margin-bottom:12px}.birthday-title-text{font-size:45px;letter-spacing:3px}.birthday-cake{font-size:27px;vertical-align:4px}.birthday-letter{width:calc(100% - 36px);padding:31px 24px;font-size:16px;line-height:2.1;letter-spacing:.15px}.birthday-letter>p{margin-bottom:25px}.birthday-letter .letter-greeting{font-size:22px;margin-bottom:23px}.birthday-letter .letter-highlight{font-size:22px;margin:27px 0;letter-spacing:0}.birthday-letter .letter-promise{font-size:18px;padding-left:16px;margin:29px 0}.birthday-letter .letter-final-wish{font-size:20px}.birthday-letter .letter-signoff{margin-top:29px}.birthday-ending>p{font-size:17px}.birthday-ending .enter-button{max-width:100%;padding-inline:24px}}
@media(max-width:360px){.birthday-title-text{font-size:39px;letter-spacing:2px}.birthday-cake{font-size:25px}.birthday-letter{padding:27px 20px}.birthday-intro .eyebrow{letter-spacing:2px}}
