:root{--paper:#fff8ef;--ink:#352d2a;--muted:#7c7669;--coral:#e86f65;--green:#789a7a;--gold:#d7a64b;--line:#ded6c5;--serif:Georgia,"Songti SC","STSong",serif}*{box-sizing:border-box}html{background:#ebe9df;scroll-behavior:smooth}body{margin:0;color:var(--ink);font:15px/1.7 "PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer;color:inherit;background:transparent;border:1px solid var(--line);padding:11px 17px;min-height:46px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:4px}button:hover{border-color:var(--green);background:#789a7a0c}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:3px solid var(--coral);outline-offset:4px}button.primary{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600;letter-spacing:1px;min-height:51px}button.primary:hover{background:#504a3b}.wide{width:100%}.text-btn{border:0;text-decoration:underline;text-underline-offset:5px;font-size:12px;color:var(--muted)}.shell{max-width:1100px;margin:auto;padding:20px 45px;background:var(--paper);min-height:100vh}header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--ink);padding:8px 0 19px;gap:10px}.brand{font:700 23px var(--serif);letter-spacing:2px;padding:0;border:0;text-align:left}.brand span{display:block;font:8px/1.4 sans-serif;letter-spacing:2.6px;margin-top:5px;color:var(--muted)}.header-tools{display:flex;gap:8px}.header-tools button{font-size:12px;min-height:42px;padding:7px 13px}.game-cover{position:relative;max-width:760px;margin:20px auto 0}.cover-caption{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:1px;padding:0 0 10px;color:var(--muted)}.cover-title{position:relative;text-align:center;margin:35px 0 0;z-index:1}.cover-title small{letter-spacing:4px;font-size:9px;color:var(--muted)}.cover-title h1{font:800 56px/1.12 var(--serif);letter-spacing:7px;margin:14px 0}.cover-title h1>span{display:block;color:var(--coral);font-size:82px}.exclaims{font-size:65px;display:inline-block;transform:rotate(7deg);letter-spacing:-6px}.cover-title p{font-size:13px;letter-spacing:2px;margin:17px 0 0}.cover-world{position:relative;width:90%;margin:-14px auto 0}.cover-world>svg{display:block;width:100%;max-height:420px}.cover-stamp{position:absolute;right:5%;top:9%;border:1px solid var(--ink);border-radius:50%;height:96px;width:96px;text-align:center;padding-top:8px;transform:rotate(12deg);background:var(--paper);font:35px/1 var(--serif)}.cover-stamp small{font:7px/1.35 sans-serif;letter-spacing:1px}.cover-bottom{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;border-top:1px solid var(--ink);padding-top:20px}.cover-bottom p{font:18px/1.7 var(--serif);margin:0}.cover-bottom>div{text-align:center}.cover-instruction{font-size:10px;color:var(--muted);text-align:center;letter-spacing:2px;margin:22px 0}.chapter-meta{display:flex;align-items:center;justify-content:space-between;margin:17px 0;font-size:10px;color:var(--muted);letter-spacing:1px}.chapter-meta button{padding:8px 0;border:0;font-size:11px}.chapter-title{max-width:680px;padding:12px 0 27px}.chapter-title small{font-size:9px;letter-spacing:3px;color:var(--green);font-weight:600}.chapter-title h1{font:700 40px/1.2 var(--serif);margin:10px 0 15px;letter-spacing:2px}.chapter-title p{font-size:13px;color:var(--muted);line-height:1.9;margin:0}.play-layout{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}.stage{position:sticky;top:20px;border:1px solid var(--line);background:#f0eddf;overflow:hidden}.stage #scene>svg{width:100%;display:block}.stage-caption{display:flex;justify-content:space-between;padding:12px;font-size:8px;letter-spacing:1px;border-top:1px solid var(--line);background:var(--paper)}.game-panel{min-width:0;padding:0 0 10px}.game-panel h3{font:700 24px/1.45 var(--serif);margin:12px 0}.game-panel p{font-size:13px;line-height:1.85}.game-panel .primary{margin-top:12px}.quest{display:flex;justify-content:space-between;border-top:2px solid var(--ink);border-bottom:1px solid var(--line);padding:12px 0;font-size:12px}.quest b{color:var(--green)}.choices{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.choices button{flex:1;min-width:88px;background:#ffffff55}.choices button.primary{background:var(--ink);margin-top:0}.options{display:grid;gap:10px}.options button{text-align:left;padding:14px 16px;background:#ffffff66}.options b{font-size:13px;display:block}.options small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.options button:hover{border-color:var(--green);background:#e7eddf}.tip{background:#e9eddf;padding:12px 15px;color:#536752;font-size:12px!important;border-left:2px solid var(--green)}.hint{color:var(--muted);font-size:11px!important}.collected{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0}.collected span{border:1px dashed #b7bbaa;color:#6a795e;padding:8px 10px;font-size:11px}.clues{padding-left:20px;font-size:13px;line-height:1.9}.slots{display:flex;gap:6px;margin:20px 0}.slots span{flex:1;text-align:center;background:#eee5d5;padding:9px 3px;font-size:10px;color:var(--muted)}.slots b{display:block;color:var(--ink);font-size:13px}.number-pad{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.number-pad button{font:24px var(--serif);background:#f0e8d9}.memory{font:32px/1.7 var(--serif);text-align:center;letter-spacing:3px;background:#e9eddf;padding:18px 4px;margin:15px 0}.equations{font:19px/2.1 var(--serif);border-block:1px solid var(--line);padding:14px;margin-bottom:15px}label{font-size:13px;display:block}input{display:block;width:100%;margin:12px 0;accent-color:var(--green)}input[type=text],input:not([type]){padding:12px;border:1px solid var(--line);background:var(--paper);border-radius:0;font-size:20px}input[type=range]{min-height:44px}input[type=checkbox]{display:inline-block;width:24px;height:24px}.award{text-align:center}.award svg{width:90px;margin-top:20px;animation:medal-in .5s ease}.admission{padding:22px;border:3px double var(--gold);margin:20px 0;background:#f8efd9}.admission small{font-size:10px;letter-spacing:1px}.admission span{font-size:10px;color:var(--muted)}.progress{height:7px;background:#e4e3d5;overflow:hidden;margin:10px 0}.progress>div{height:100%;background:var(--green);transition:width .15s}.race-hud,.business-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:10px 0}.race-hud>div,.business-stats>div{border-top:1px solid var(--line);padding-top:9px}.race-hud small,.business-stats span{display:block;font-size:11px;color:var(--muted)}.race-hud b,.business-stats strong{font:26px var(--serif)}.run-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px}.run-controls button{background:var(--green);color:white;border:0;font:700 26px var(--serif);min-height:100px;user-select:none;-webkit-user-select:none;touch-action:manipulation}.run-controls button+button{background:var(--coral)}.run-controls span{font:10px/2 sans-serif;letter-spacing:3px;display:block}.rhythm{position:relative;padding:10px 0 10px 22px;font-size:10px;color:var(--muted)}.rhythm i{position:absolute;top:18px;left:0;width:9px;height:9px;background:var(--green);border-radius:50%;animation:beat .6s infinite}.rhythm.sprinting i{background:var(--coral)}.ledger{display:grid;grid-template-columns:1fr 1fr;background:#eee9da;margin:15px 0;padding:15px;gap:14px}.ledger span{font-size:11px;color:var(--muted)}.ledger b{display:block;font:22px var(--serif);color:var(--ink)}.simulation{font-size:10px;letter-spacing:1px;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:10px}.report{border:1px solid var(--line);padding:20px;background:#edeedd}.report ol{font-size:11px;padding-left:18px}.plant-tabs{display:flex;gap:6px}.plant-tabs button{flex:1;padding:9px 5px;min-width:0}.plant-tabs small{display:block;color:var(--muted);font-size:10px}.selected{background:#dfe9d7!important;border-color:var(--green)!important}.plant-meter>div{font-size:11px;margin:12px 0}.plant-meter b{float:right;font-weight:500}.plant-meter small{color:var(--muted)}.success{border-block:1px solid var(--green);padding:12px;color:#4f7350;font-size:13px}.decor-options{display:grid;gap:12px}.decor-options>div{display:grid;grid-template-columns:1fr 1.2fr 1.2fr;gap:8px;align-items:center;font-size:13px}.decor-options button{padding:8px;font-size:12px}.badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px 8px;margin:20px 0}.badge-grid svg{display:block;width:100%;max-width:70px;margin:auto}.badge-grid span{display:block;font-size:9px;line-height:1.5;text-align:center;margin-top:6px}.unearned{opacity:.35;filter:grayscale(1)}.album>small{font-size:9px;letter-spacing:2px;color:var(--muted)}.photo-frame{border:1px dashed var(--line);padding:22px 15px;text-align:center;margin:20px 0;background:#f0eee4}.photo-frame span{font:18px var(--serif);display:block}.photo-frame small{display:block;font-size:10px;color:var(--muted);margin-top:8px}.photo{margin:15px 0}.photo img{width:100%;max-height:350px;object-fit:contain}.photo figcaption{font-size:11px;color:var(--muted)}.final-message{border-top:1px solid var(--gold);margin-top:25px;padding-top:16px}.final-message h2{font:700 33px var(--serif);color:var(--coral)}.signature{font:20px var(--serif);text-align:right}.chapter-tools{display:flex;justify-content:space-between;margin:20px 0;border-top:1px solid var(--line);padding-top:10px}footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--ink);margin-top:24px;padding-top:15px;gap:5px}footer span{font-size:9px;letter-spacing:1px;color:var(--muted)}footer button{border:0;padding:8px 0;font-size:11px}dialog{width:min(92vw,460px);max-height:90dvh;overflow:auto;border:1px solid var(--ink);padding:25px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#352d2a66;backdrop-filter:blur(4px)}dialog h2{font:25px/1.5 var(--serif);margin:7px 0 15px}dialog p{font-size:13px;line-height:1.9}.dialog-heading{display:flex;justify-content:space-between;gap:8px;align-items:center}.dialog-heading h2{font-size:20px}.dialog-heading small{font-size:9px;letter-spacing:2px}.dialog-heading button{padding:5px 10px;font-size:11px}#map-list>svg{display:block;width:100%}.setting{display:flex;align-items:center;justify-content:space-between}.setting input{margin:0}#toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,20px);max-width:90vw;width:max-content;background:var(--ink);color:var(--paper);font-size:13px;padding:12px 20px;opacity:0;z-index:50;pointer-events:none;transition:.25s}#toast.show{opacity:1;transform:translate(-50%,0)}#effects{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}.confetti{position:absolute;top:-20px;width:7px;height:13px;animation:fall 2.6s ease-in forwards}.spark{position:absolute;height:6px;width:6px;background:var(--gold);border-radius:50%;animation:spark 1.2s ease-out forwards}svg [data-act],svg [data-chapter]{cursor:pointer;touch-action:manipulation}.found-object{opacity:.55;filter:drop-shadow(0 0 3px #d7a64b)}.float{animation:bob 3s ease-in-out infinite}.dog{animation:dogwalk 4s ease-in-out infinite alternate}.butterfly{animation:butterfly 5s ease-in-out infinite;transform-origin:210px 135px}.flame{animation:flicker .5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:bottom}.runner.running .leg{animation:stride .18s infinite alternate;transform-box:fill-box;transform-origin:top}.runner.finish{filter:drop-shadow(0 0 5px #d7a64b)}#finish-ribbon.broken{transform:rotate(18deg);transform-origin:338px 259px;opacity:.5}.reveal{animation:reveal .4s ease-out}#scene:has([data-act^=candle]){touch-action:pan-x}#scene svg [data-act^=candle]{touch-action:manipulation}
@keyframes bob{50%{transform:translateY(-5px)}}@keyframes dogwalk{to{transform:translateX(50px)}}@keyframes butterfly{50%{transform:translate(90px,-25px) rotate(15deg)}}@keyframes flicker{to{transform:scale(.85,1.15)}}@keyframes stride{to{transform:rotate(35deg)}}@keyframes beat{50%{transform:scale(1.6);opacity:.5}}@keyframes medal-in{from{transform:scale(.4) rotate(-20deg);opacity:0}}@keyframes reveal{from{opacity:0;transform:translateY(8px)}}@keyframes fall{to{transform:translate(var(--dx),105vh) rotate(600deg);opacity:0}}@keyframes spark{to{transform:translate(var(--x),var(--y));opacity:0}}
@media(min-width:760px){.chapter-7 .stage{top:30px}.chapter-2 .stage{top:30px}}@media(max-width:759px){.shell{padding:15px 20px max(15px,env(safe-area-inset-bottom));max-width:500px}header{padding:4px 0 15px}.brand{font-size:21px}.brand span{font-size:7px;letter-spacing:1.5px}.header-tools{gap:4px}.header-tools button{padding:8px 10px;font-size:11px}.game-cover{margin-top:15px}.cover-caption{font-size:8px;letter-spacing:0}.cover-title{margin-top:28px}.cover-title small{font-size:7px;letter-spacing:2px}.cover-title h1{font-size:44px;letter-spacing:5px;margin:13px 0}.cover-title h1>span{font-size:65px}.exclaims{font-size:50px}.cover-title p{font-size:11px;letter-spacing:1px}.cover-world{width:100%;margin-top:-6px}.cover-world>svg{max-height:330px}.cover-stamp{width:73px;height:73px;font-size:27px;right:0;top:9%;padding-top:7px}.cover-stamp small{font-size:5px}.cover-bottom{gap:16px;padding-top:17px;grid-template-columns:1fr 1.2fr}.cover-bottom p{font-size:14px;line-height:1.7}.cover-bottom button{font-size:12px;padding:11px 8px;letter-spacing:0}.cover-instruction{font-size:8px;letter-spacing:1px;margin:17px 0}.chapter-title{padding:5px 0 18px}.chapter-title h1{font-size:30px;margin:8px 0 12px}.chapter-title p{font-size:12px;line-height:1.8}.chapter-title small{font-size:8px}.chapter-meta{font-size:9px;margin:12px 0}.play-layout{display:flex;flex-direction:column;gap:20px}.stage{position:relative;top:0;width:100%}.stage #scene>svg{max-height:340px}.stage-caption{font-size:7px;padding:9px}.game-panel{width:100%}.game-panel h3{font-size:22px}.game-panel p{font-size:13px}.run-controls button{min-height:90px}.chapter-2 .stage{position:relative;top:0}.chapter-2 .stage #scene>svg{max-height:240px}.chapter-2 .game-panel{padding-bottom:10px}.chapter-tools{gap:4px}.chapter-tools .text-btn{padding:8px 3px;font-size:10px}.memory{font-size:26px;letter-spacing:2px}dialog{padding:20px}footer span{font-size:8px;letter-spacing:0}.badge-grid{gap:12px}.race-hud{margin-top:0}.race-hud b{font-size:24px}}
@media(max-width:359px){.shell{padding-inline:14px}.brand{font-size:18px}.brand span{font-size:6px}.cover-title h1>span{font-size:58px}.cover-title p{font-size:10px}.cover-bottom{gap:9px}.cover-bottom p{font-size:12px}.cover-bottom button{font-size:11px}.memory{font-size:23px}.choices button{padding:10px;min-width:78px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.low-motion *,.low-motion *::before,.low-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
svg [data-found=true]{opacity:.55;filter:drop-shadow(0 0 4px #d7a64b);animation:memory-find .65s ease-out}svg [data-found=true][data-act=memory-tree]{transform-origin:347px 230px;animation:leaf-find .65s ease-out}svg [data-found=true][data-act=memory-house]{animation:house-find .65s ease-out}@keyframes memory-find{50%{transform:translateY(-16px);opacity:1}}@keyframes leaf-find{50%{transform:rotate(-4deg);opacity:1}}@keyframes house-find{50%{filter:drop-shadow(0 0 12px #d7a64b);opacity:1}}.header-tools{flex-shrink:0}@media(max-width:400px){.brand{font-size:17px;letter-spacing:1px}.brand span{font-size:6px}.header-tools button{padding-inline:8px}}
/* A single bound leaf, with a photo mounted on the paper, not a cropped carousel. */
.play-layout.finale-reading{display:block;max-width:790px;margin:0 auto}.finale-reading .stage{display:none}.finale-reading .game-panel{padding:0}.album-heading{text-align:center;margin:4px 0 25px}.album-heading small{font-size:9px;letter-spacing:3px;color:var(--muted)}.album-heading h2{font:700 35px var(--serif);margin:10px 0}.album-heading p{color:var(--muted);font-size:12px}.book-shell{position:relative;background:#65816a;padding:15px 16px 18px 31px;box-shadow:0 12px 30px #352d2a1a,2px 3px 0 #c5bb9e,4px 5px 0 #e7dfcd,6px 7px 0 #c5bb9e;border-radius:3px 9px 9px 3px;perspective:1300px;touch-action:pan-y}.book-binding{position:absolute;inset:0 auto 0 0;width:26px;border-right:1px solid #334c3b;background:#526f59;display:flex;flex-direction:column;justify-content:space-around;align-items:center}.book-binding i{width:18px;height:5px;border:1px solid #d4b778;background:#b79a61;border-radius:4px;box-shadow:0 2px 3px #0003;z-index:2}.book-leaf{position:relative;min-height:510px;padding:28px 28px 24px;background-color:#fffaf1;background-image:repeating-linear-gradient(0deg,#b8a89005 0 1px,transparent 1px 4px),radial-gradient(#b5a58c25 .5px,transparent .7px);background-size:auto,6px 6px;box-shadow:inset 12px 0 16px -12px #67543e77;transform-origin:left center;backface-visibility:hidden}.photo-corners{position:relative;background:#fff;padding:8px;box-shadow:0 3px 12px #463e3022;transform:rotate(-.65deg);margin:4px auto 20px;max-width:620px}.photo-corners:before,.photo-corners:after{content:'';position:absolute;top:-9px;width:60px;height:22px;background:#c5b78b66;z-index:1;pointer-events:none;transform:rotate(-28deg)}.photo-corners:before{left:-15px}.photo-corners:after{right:-14px;transform:rotate(29deg)}.album-photo{padding:0;border:0;width:100%;display:block;background:#f0ede7;line-height:0;min-height:0;touch-action:pan-y;cursor:zoom-in}.album-photo img{display:block;width:100%;height:min(50vh,510px);object-fit:contain;user-select:none;-webkit-user-drag:none;pointer-events:none}.book-caption{text-align:center;max-width:530px;margin:0 auto}.book-caption p{font:18px/1.85 var(--serif);margin:14px 0}.book-caption small{display:inline-block;border-bottom:1px solid #d7a64b;color:#8d704e;font-size:11px;letter-spacing:2px}.folio{display:block;text-align:center;font:11px Georgia;color:#a08c6f;letter-spacing:2px;margin-top:18px}.book-nav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:25px 0 8px}.book-nav span{font-size:12px;color:var(--muted)}.book-nav button{min-width:103px}.memory-album>.hint{text-align:center}.memory-album>.primary{max-width:500px;display:block;margin:20px auto}.turn-out-next{animation:turn-out-next .23s ease-in forwards}.turn-in-next{animation:turn-in-next .28s ease-out}.turn-out-prev{animation:turn-out-prev .23s ease-in forwards}.turn-in-prev{animation:turn-in-prev .28s ease-out}@keyframes turn-out-next{to{transform:rotateY(-87deg);filter:brightness(.8)}}@keyframes turn-in-next{from{transform:rotateY(86deg);filter:brightness(.8)}to{transform:rotateY(0);filter:brightness(1)}}@keyframes turn-out-prev{to{transform:rotateY(87deg);filter:brightness(.8)}}@keyframes turn-in-prev{from{transform:rotateY(-86deg);filter:brightness(.8)}to{transform:rotateY(0);filter:brightness(1)}}.birthday-letter{max-width:650px;margin:0 auto;padding:35px 35px 28px;border:1px solid #d5c8ac;border-top:5px solid #789a7a;background:#fffaf2;box-shadow:0 10px 20px #4b3a2510}.birthday-letter>small{font-size:9px;letter-spacing:2px;color:var(--green)}.birthday-letter h2{font:30px var(--serif);margin:14px 0 28px}.birthday-letter p{font:16px/2.15 var(--serif);margin:16px 0}.birthday-letter .salutation{font-weight:600}.birthday-letter .signature{color:#ae695d;font-size:21px}.timmy-wish{color:#8c6955;border-bottom:1px solid var(--line);padding-bottom:14px}#photo-zoom{width:96vw;max-width:1200px;padding:50px 12px 18px;background:#26231f;color:white;border:0;max-height:96dvh}#photo-zoom::backdrop{background:#171512ed}#photo-zoom figure{margin:0;text-align:center}#photo-zoom img{display:block;width:100%;height:auto;max-height:78dvh;object-fit:contain}#photo-zoom figcaption{font-size:13px;line-height:1.8;padding:12px}.zoom-close{position:absolute;right:12px;top:5px;border:0;color:white;min-height:44px;z-index:2}@media(max-width:759px){.album-heading h2{font-size:29px}.album-heading{margin-bottom:20px}.book-shell{padding:11px 10px 12px 25px}.book-binding{width:21px}.book-binding i{width:16px}.book-leaf{padding:20px 13px 17px;min-height:400px}.album-photo img{height:48vh;max-height:440px;min-height:220px}.photo-corners{padding:5px;margin-bottom:17px}.photo-corners:before,.photo-corners:after{width:42px;height:17px}.book-caption p{font-size:16px;line-height:1.9}.book-nav{margin-top:22px}.book-nav button{min-width:91px;padding:10px;font-size:12px}.book-nav span{font-size:11px}.birthday-letter{padding:27px 21px 23px}.birthday-letter p{font-size:15px}.birthday-letter h2{font-size:27px}}
/* Open eyes most of the time, a brief blink and an occasional warm smile. */
.natural-open-eyes{opacity:1;animation:eyes-open 11s infinite}.soft-smile-eyes,.blink-eyes{opacity:0}.soft-smile-eyes{animation:eyes-smile 11s infinite}.blink-eyes{animation:eyes-blink 11s infinite}@keyframes eyes-open{0%,24%,26%,69%,79%,100%{opacity:1}24.5%,25.5%,70%,78%{opacity:0}}@keyframes eyes-smile{0%,69%,79%,100%{opacity:0}70%,78%{opacity:1}}@keyframes eyes-blink{0%,24%,26%,100%{opacity:0}24.5%,25.5%{opacity:1}}@media(prefers-reduced-motion:reduce){.natural-open-eyes{opacity:1}.soft-smile-eyes,.blink-eyes{opacity:0}}.low-motion .natural-open-eyes{opacity:1}.low-motion .soft-smile-eyes,.low-motion .blink-eyes{opacity:0}
@media(max-width:759px){.chapter-title:has(+.finale-reading){display:none}.finale-reading .album-heading{margin-top:3px}.finale-reading .album-heading h2{margin-top:8px}.album-photo{-webkit-user-select:none;user-select:none}}
.album-photo img{height:auto;max-height:55vh;object-fit:contain}.book-leaf{min-height:480px}@media(max-width:759px){.album-photo img{height:auto;max-height:52vh;min-height:0}.book-leaf{min-height:420px}}
/* A warmer, carefully framed stage, with three tangible gifts. */
html{background:#e3e8df}.shell{background-color:#fff8ef;background-image:radial-gradient(#b6a17c13 .55px,transparent .7px);background-size:7px 7px}header{border-bottom-color:#aea88f}.brand{color:#4b614b}.header-tools button{border-radius:24px;background:#fffdf7}.chapter-title h1{color:#425c48}.chapter-title small{color:#b7864f}.stage{border:8px solid #fffdf6;outline:1px solid #dfd5bf;box-shadow:0 12px 25px #65563b0e;border-radius:3px}.stage-caption{border-top:0;background:#fffdf6;padding:14px 4px 6px;letter-spacing:1.4px}.primary{box-shadow:0 4px 0 #35452e12}button.primary{border-radius:6px;background:#3f604d;border-color:#3f604d}.quest{border-top-color:#789a7a}.options button{border-radius:7px;border-color:#d9d4bf}.gift-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0 24px}.gift-shelf button{position:relative;background:#fffdf7;border:1px solid #e0d4bb;min-width:0;padding:15px 7px 13px;border-radius:65px 65px 7px 7px;box-shadow:0 5px 12px #68553a08;transition:transform .2s,border-color .2s}.gift-shelf button:hover{transform:translateY(-3px);border-color:#bd9b59}.gift-shelf svg{display:block;width:100%;max-width:96px;margin:0 auto 5px}.gift-shelf b{display:block;font:16px var(--serif);margin-top:5px}.gift-shelf small{display:block;font-size:9px;color:#8c8c75;margin-top:7px;letter-spacing:1px}.gift-shelf .wrapped{background:#eceee4;opacity:.55;filter:grayscale(.65)}.gift-shelf .wrapped svg{filter:blur(3px);opacity:.35}.gift-found{filter:drop-shadow(0 0 3px #e5c980);animation:gift-unwrapped .5s ease-out;transform-box:fill-box;transform-origin:center}@keyframes gift-unwrapped{from{transform:scale(.75)}70%{transform:scale(1.1)}}#gift-dialog{width:min(94vw,680px);padding:28px;border:1px solid #b29b6c;border-radius:9px;background:#fff9ee;box-shadow:0 25px 80px #352d2a30}#gift-dialog::backdrop{background:#34443480;backdrop-filter:blur(5px)}.gift-close{position:absolute;right:12px;top:10px;border:0;font-size:12px;color:#7c7767}.gift-heading{text-align:center;padding:20px 0 13px}.gift-heading>small{letter-spacing:3px;color:#b08a4d;font-size:9px}.gift-heading>svg{display:block;width:125px;height:125px;margin:12px auto 0}.gift-heading h2{font:29px var(--serif);margin:0 0 9px;color:#425c48}.gift-heading p{font-size:13px;color:#8a8072;margin:0}.gift-heading:has(+.memory-album)>svg,.gift-heading:has(+.memory-album)>h2,.gift-heading:has(+.memory-album)>p{display:none}#gift-dialog .album-heading{margin-top:12px}#gift-dialog .book-leaf{min-height:360px}#gift-dialog .album-photo img{max-height:44vh}.voice-gift{text-align:center;padding:17px 10px 23px}.voice-gift p{color:#8a7d6a;font-size:13px}.voice-gift audio{display:block;width:100%;margin:20px 0}.record-disc{position:relative;width:110px;height:110px;border-radius:50%;margin:5px auto 25px;background:repeating-radial-gradient(circle,#333d37 0 3px,#4b554b 4px 5px);box-shadow:0 7px 15px #35482e20}.record-disc:before{content:'';position:absolute;inset:36px;border-radius:50%;background:#d2ae63;border:1px solid #b48e4e}.record-disc:after{content:'';position:absolute;inset:52px;border-radius:50%;background:#fff9ee}.voice-gift .gift-sealed{color:#6d815f;font:22px var(--serif)}.shawl-gift{margin:16px 0 5px;padding:28px 20px;text-align:center;border:1px dashed #c3b28f;background:#f3eddf}.shawl-gift>small{font-size:10px;letter-spacing:3px;color:#9c875f}.shawl-gift h3{font:22px var(--serif);color:#566d58;margin:18px 0 12px}.shawl-gift p{font-size:13px;color:#8b7f6b}.pickup-code{display:block;font:32px/1.6 Georgia,serif;letter-spacing:3px;word-break:break-all;color:#3f604d;user-select:text}.pickup-note{white-space:pre-line}#gift-dialog .book-nav{margin-top:19px}.decor-options>div{border-bottom:1px solid #e6dfcf;padding-bottom:10px}.decor-options>div>span{font-family:var(--serif);font-size:16px}.decor-options button{border-radius:22px;background:#fffdf6}.decor-options button:last-child{color:#a17d32;border-color:#dfd0a7}@media(max-width:759px){.stage{border-width:5px}.gift-shelf{gap:8px;margin-top:17px}.gift-shelf b{font-size:14px}.gift-shelf svg{max-width:78px}.gift-shelf small{font-size:8px;letter-spacing:0}#gift-dialog{padding:22px 16px;max-height:92dvh}.gift-heading>svg{width:110px;height:110px}.gift-heading h2{font-size:26px}.gift-heading p{font-size:12px}.shawl-gift{padding-inline:13px}.shawl-gift h3{font-size:20px}.chapter-title h1{font-size:31px}}
/* The cover is a bound birthday storybook. */
.game-cover{max-width:800px;margin:32px auto 18px;padding:27px 38px 23px 55px;background:#f6f2e6;border:1px solid #c2bd9d;border-radius:4px 15px 15px 4px;box-shadow:inset 19px 0 23px -18px #56694e70,4px 4px 0 #d5ccb6,7px 7px 0 #eee6d6,10px 10px 0 #d1c7ae,0 20px 44px #41513f14;isolation:isolate}.game-cover:before{content:'';position:absolute;inset:12px 12px 12px 30px;border:1px solid #bcb28b;border-radius:1px 7px 7px 1px;pointer-events:none;z-index:-1}.game-cover:after{content:'';position:absolute;inset:0 auto 0 0;width:21px;background:#5c7763;border-right:1px solid #405c4c;box-shadow:inset -4px 0 6px #334c2f25;z-index:0}.cover-spine{position:absolute;left:6px;top:70px;writing-mode:vertical-rl;font:8px/1 sans-serif;letter-spacing:2.5px;color:#e5dfbd;z-index:2}.cover-caption{font-size:8px;letter-spacing:1.2px;border-bottom-color:#cfcaaf;padding-bottom:13px}.cover-title{margin-top:25px}.cover-title small{font-size:8px;letter-spacing:3px;color:#9b8964}.cover-title h1{font-family:"Songti SC","STSong",Georgia,serif;font-weight:700;font-size:42px;letter-spacing:6px;margin-top:15px;margin-bottom:12px;color:#3d5747}.cover-title h1>span{font-size:76px;line-height:1.13;color:#ad6255;letter-spacing:5px}.exclaims{font-size:53px;letter-spacing:-9px;transform:rotate(5deg);margin-left:-6px;color:#bd9070}.cover-title p{font-size:12px;letter-spacing:2px;color:#6f755e;margin:13px 0 20px}.cover-world{width:86%;max-width:530px;margin:0 auto 19px}.cover-arch{overflow:hidden;border-radius:48% 48% 4px 4px;border:1px solid #b6b89a;padding:6px;background:#e0e5d5;box-shadow:0 7px 18px #51684610}.cover-arch>svg{display:block;width:100%;height:auto;max-height:330px;border-radius:48% 48% 2px 2px}.cover-stamp{top:auto;bottom:22px;right:-17px;width:75px;height:75px;border:1px solid #af9159;color:#957444;background:#f6edd7;box-shadow:inset 0 0 0 4px #f6edd7,inset 0 0 0 5px #c7ae7c;font:34px/1 Georgia;padding-top:9px;transform:rotate(10deg)}.cover-stamp small{display:block;font:5px/1.8 sans-serif;letter-spacing:1px;margin-top:2px}.cover-world-label{display:block;text-align:center;font-size:9px;letter-spacing:2px;color:#8f8b70;margin-top:12px}.cover-bottom{gap:23px;border-top-color:#b2b293;padding-top:18px}.cover-bottom p{font:18px/1.65 var(--serif);color:#4b6551}.cover-note{font:10px/1.8 "PingFang SC",sans-serif;letter-spacing:.3px;color:#8c8e76}.cover-instruction{margin:15px 0 3px;font-size:8px;color:#9b9780;letter-spacing:1.5px}.cover-bottom .primary{background:#4e6c56;border-color:#4e6c56;border-radius:3px;font-size:12px;font-weight:500;letter-spacing:1px;box-shadow:0 4px 0 #dfd4b6}.cover-bottom .text-btn{font-size:10px}.gift-reveal{padding-bottom:15px}.reveal-dedication{text-align:center;padding:12px 0 25px}.reveal-dedication>span{font-size:9px;letter-spacing:3px;color:#a58a58}.reveal-dedication h2{font:40px/1.45 var(--serif);font-weight:600;letter-spacing:2px;color:#405b48;margin:16px 0}.reveal-dedication em{font-style:normal;color:#b57662}.reveal-dedication p{font-size:13px;color:#8b8873;line-height:2}.reveal-gifts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.reveal-present{position:relative;display:flex;align-items:center;flex-direction:column;padding:27px 14px 0;background:#ecefe2;border:1px solid #c9ceb6;border-radius:90px 90px 4px 4px;overflow:hidden;text-align:center;transition:transform .25s,box-shadow .25s}.reveal-present:nth-child(2){background:#f3eada;border-color:#d6c8aa}.reveal-present:nth-child(3){background:#e6eceb;border-color:#bfcecb}.reveal-present:hover{transform:translateY(-5px);box-shadow:0 12px 20px #4d5c4010}.gift-number{font:italic 12px Georgia;color:#9b9b80}.present-art{width:100%;max-width:170px;margin:12px auto 5px}.present-art svg{width:100%;display:block;filter:drop-shadow(0 7px 5px #53684d13);transition:transform .3s}.reveal-present:hover .present-art{transform:rotate(-3deg)}.gift-tag{font:7px sans-serif;letter-spacing:1.5px;color:#a38d60;margin:12px 0 8px}.reveal-present strong{font:23px var(--serif);color:#445f4e;letter-spacing:1px}.gift-line{font-size:11px;color:#8a8876;line-height:1.9;display:block;min-height:55px;margin:12px 0 15px}.present-action{width:calc(100% + 28px);padding:13px 12px;border-top:1px solid #b9c3a866;background:#fffaf22e;font-size:11px;color:#667a5a}.present-action i{font-style:normal;padding-left:9px;color:#9e8b55}.reveal-present.opened .present-action:before{content:'✓ ';color:#789a7a}.reveal-next{text-align:center;border-top:1px solid #d4d1bc;margin-top:27px;padding-top:14px}.reveal-next p{font-size:12px;color:#8d8975;line-height:1.9}.reveal-next .primary{min-width:265px}.chapter-6 .gift-shelf .unwrapped{position:relative}.chapter-6 .gift-shelf .unwrapped:after{content:'FOR YOU';position:absolute;right:6px;top:12px;font:6px Georgia;letter-spacing:1px;color:#ac9163;transform:rotate(8deg)}.chapter-6 .gift-shelf small{color:#a38a61}.birthday-letter{background-color:#fffaf1;border-color:#c9b898;border-top-width:3px;box-shadow:0 13px 40px #6a593013}.birthday-letter .letter-wish{font-size:20px;line-height:1.9;color:#b37966;margin-top:25px}.album-heading h2{color:#49624f}.book-shell{background:#6c8870}.chapter-6 .stage{border-radius:100px 100px 3px 3px}.chapter-6 .stage-caption{padding-bottom:10px}@media(max-width:759px){.game-cover{margin:21px 5px 20px;padding:22px 20px 20px 34px;border-radius:3px 12px 12px 3px;box-shadow:inset 14px 0 20px -16px #52644270,3px 3px 0 #d5ccb6,6px 6px 0 #eee6d6,8px 8px 0 #d1c7ae,0 16px 25px #41513f10}.game-cover:before{inset:9px 8px 9px 23px}.game-cover:after{width:15px}.cover-spine{left:3px;font-size:6px;top:56px;letter-spacing:2px}.cover-caption{font-size:6px;gap:5px;letter-spacing:.2px;padding-bottom:11px}.cover-title{margin-top:22px}.cover-title small{font-size:5px;letter-spacing:1.7px}.cover-title h1{font-size:31px;letter-spacing:4px;margin:15px 0 9px}.cover-title h1>span{font-size:54px;letter-spacing:1px}.exclaims{font-size:37px;letter-spacing:-7px;margin-left:-4px}.cover-title p{font-size:9px;letter-spacing:.3px;line-height:1.9;margin:12px 0 16px}.cover-world{width:100%;margin-bottom:17px}.cover-arch{padding:4px}.cover-arch>svg{max-height:255px}.cover-stamp{width:56px;height:56px;font-size:26px;right:-10px;bottom:23px;padding-top:7px}.cover-stamp small{font-size:3.5px;letter-spacing:.4px;margin-top:1px}.cover-world-label{font-size:7px;letter-spacing:.6px;margin-top:10px}.cover-bottom{grid-template-columns:1fr;gap:14px;text-align:center;padding-top:15px}.cover-bottom p{font-size:16px}.cover-note{font-size:9px}.cover-bottom .primary{font-size:11px;min-height:48px}.cover-bottom .text-btn{min-height:35px}.cover-instruction{font-size:6px;letter-spacing:.6px;margin-top:13px}.reveal-dedication{padding-top:0;padding-bottom:18px}.reveal-dedication h2{font-size:31px;margin:13px 0}.reveal-dedication p{font-size:12px}.reveal-gifts{gap:10px;grid-template-columns:1fr}.reveal-present{display:grid;grid-template-columns:100px 1fr;grid-template-rows:18px 29px auto auto;padding:18px 17px 0;text-align:left;border-radius:4px;column-gap:17px;overflow:visible}.gift-number{position:absolute;right:17px;top:13px}.present-art{grid-column:1;grid-row:1/5;width:100px;margin:0;align-self:center}.gift-tag{grid-column:2;grid-row:1;font-size:6px;letter-spacing:1px;margin:0;padding-right:17px;align-self:center}.reveal-present strong{grid-column:2;grid-row:2;font-size:24px;align-self:center}.gift-line{grid-column:2;grid-row:3;font-size:11px;min-height:0;margin:6px 0 12px}.present-action{grid-column:1/3;grid-row:5;width:calc(100% + 34px);margin-left:-17px;padding:10px 17px;text-align:right;font-size:10px}.reveal-next{margin-top:22px}.reveal-next .primary{min-width:0;width:100%}.chapter-6 .stage{border-radius:70px 70px 3px 3px}}@media(max-width:359px){.game-cover{padding-right:15px;padding-left:29px}.cover-title h1>span{font-size:47px}.cover-title h1{font-size:28px}.cover-title p{font-size:8px}.reveal-present{grid-template-columns:85px 1fr;column-gap:12px}.present-art{width:85px}}
.cover-world{max-width:375px}.cover-arch>svg{max-height:none}.cover-title h1>span{font-size:69px}.cover-title{margin-top:20px}.cover-title p{margin-bottom:16px}@media(max-width:759px){.cover-world{max-width:300px}.cover-title h1>span{font-size:54px}.cover-title{margin-top:22px}.cover-title p{margin-bottom:16px}.cover-arch>svg{max-height:none}}
.firework-particle{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--firework-color);box-shadow:0 0 7px 2px var(--firework-color),var(--trail-x) var(--trail-y) 2px var(--firework-color);animation:firework-bloom 1.85s cubic-bezier(.14,.63,.4,1) both;will-change:transform,opacity}.firework-flash{position:absolute;width:22px;height:22px;border-radius:50%;background:#fff8df;box-shadow:0 0 28px 12px var(--firework-color);animation:firework-flash .5s ease-out both}.still-star{position:absolute;font-size:22px;opacity:.7}.celebration-still{background:radial-gradient(ellipse at top,#e6c57416,transparent 60%)}@keyframes firework-bloom{0%{opacity:1;transform:translate(0,0) scale(1.25)}65%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 28px)) scale(.35)}}@keyframes firework-flash{from{opacity:.95;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(2.8)}}
/* A light illustrated birthday invitation, with a friendly welcome before play. */
.birthday-cover{max-width:720px;margin:28px auto 12px;padding:0 32px 16px}.birthday-edition{display:flex;justify-content:space-between;gap:12px;font-size:10px;letter-spacing:1px;color:#99967f;border-bottom:1px solid #d7d9c4;padding:0 0 14px}.birthday-cover-heading{text-align:center;position:relative;padding-top:29px}.cover-handnote{font:17px "Kaiti SC",KaiTi,"Songti SC",serif;color:#ae7d63;display:block;transform:rotate(-5deg);margin-bottom:15px}.birthday-cover-heading h1{font:700 42px/1.12 "Songti SC","STSong",Georgia,serif;letter-spacing:4px;color:#435d4c;margin:0 0 17px}.birthday-cover-heading h1>span{display:block;font-size:81px;letter-spacing:5px;color:#b76d5d;margin-top:4px}.birthday-cover-heading h1 em{font-size:56px;font-style:normal;letter-spacing:-6px;margin-left:-5px;display:inline-block;transform:rotate(7deg);color:#c39969}.birthday-cover-heading>p{font-size:12px;letter-spacing:1.8px;color:#7d876c;margin-bottom:24px}.birthday-art{position:relative;max-width:440px;margin:0 auto 32px;background:#e3eee6;border-radius:48% 48% 5px 5px;isolation:isolate}.birthday-art>svg{display:block;width:100%;border-radius:48% 48% 5px 5px}.birthday-art:after{content:'';position:absolute;inset:7px;border:1px solid #faf6df80;border-radius:48% 48% 3px 3px;pointer-events:none}.birthday-seal{position:absolute;bottom:-14px;right:-13px;display:flex;flex-direction:column;justify-content:center;align-items:center;width:80px;height:80px;transform:rotate(9deg);border:1px solid #cbb17a;border-radius:50%;background:#f8ecd3;box-shadow:inset 0 0 0 4px #f8ecd3,inset 0 0 0 5px #d7c093;z-index:1;color:#9f7c40}.birthday-seal b{font:36px/1 Georgia}.birthday-seal span{font-size:7px;letter-spacing:.4px;margin-top:5px}.birthday-welcome{max-width:480px;margin:auto;padding-top:5px}.birthday-welcome>p{text-align:center;font-size:13px;line-height:1.9;color:#8e8a76}.birthday-welcome .welcome-lead{font:22px/1.7 var(--serif);color:#4d6954;margin:0 0 12px}.welcome-notes{margin:25px 0 20px;border-top:1px solid #dedccb;border-bottom:1px solid #dedccb;padding:10px 0}.welcome-notes p{display:grid;grid-template-columns:65px 1fr;gap:12px;align-items:start;font-size:12px;line-height:1.9;color:#8a8b75;margin:10px 0}.welcome-notes p>span{font:15px/1.7 var(--serif);color:#5c7b5e}.welcome-map{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;border-bottom:1px solid #d8d8c3;padding:6px 0 19px;gap:15px;text-align:left}.welcome-map b{display:block;font:19px var(--serif);color:#5a735b}.welcome-map small{display:block;font-size:10px;color:#98957d;margin-top:7px}.welcome-map>span:last-child{font-size:26px;color:#b79861}.birthday-start{margin-top:23px;text-align:center}.birthday-start .primary{border-radius:4px;min-height:54px;font-size:14px;letter-spacing:1px;background:#52715b;border-color:#52715b;box-shadow:0 4px 0 #dfe2cd}.birthday-start .text-btn{display:block;margin:7px auto 0;font-size:11px}.birthday-welcome .welcome-signature{font:15px "Kaiti SC",KaiTi,serif;color:#b0836b;margin:20px 0 5px}.birthday-cover .reveal{animation-duration:.3s}@media(min-width:900px){.birthday-cover{max-width:910px;display:grid;grid-template-columns:1fr 1fr;column-gap:58px;padding:0 26px 20px;align-items:center}.birthday-edition{grid-column:1/3;margin-bottom:15px}.birthday-cover-heading{grid-column:1;grid-row:2;padding-top:21px}.birthday-cover-heading h1>span{font-size:75px}.birthday-art{grid-column:1;grid-row:3;width:100%;max-width:380px;margin-bottom:10px}.birthday-welcome{grid-column:2;grid-row:2/4;width:100%;padding-top:25px}.birthday-welcome>p{text-align:left}.birthday-welcome .welcome-lead{font-size:25px}.birthday-welcome .welcome-signature{text-align:center}.desktop-break{display:none}}@media(max-width:759px){.birthday-cover{padding:0 7px 12px;margin:22px auto 10px}.birthday-edition{font-size:8px;letter-spacing:.4px;padding-bottom:12px}.birthday-cover-heading{padding-top:26px}.cover-handnote{font-size:15px;margin-bottom:13px}.birthday-cover-heading h1{font-size:34px;letter-spacing:3px;margin-bottom:14px}.birthday-cover-heading h1>span{font-size:67px;letter-spacing:2px;margin-top:2px}.birthday-cover-heading h1 em{font-size:46px;letter-spacing:-6px}.birthday-cover-heading>p{font-size:10px;letter-spacing:1px;margin:12px 0 21px}.birthday-art{width:93%;max-width:335px;margin-bottom:31px}.birthday-seal{height:65px;width:65px;right:-8px;bottom:-14px}.birthday-seal b{font-size:29px}.birthday-seal span{font-size:6px;margin-top:4px}.birthday-welcome .welcome-lead{font-size:21px}.birthday-welcome>p{font-size:12px}.welcome-notes{margin-top:21px;padding:8px 0}.welcome-notes p{grid-template-columns:62px 1fr;gap:10px;font-size:11px;margin:11px 0}.welcome-notes p>span{font-size:14px}.welcome-map b{font-size:18px}.welcome-map small{font-size:9px}.birthday-start{margin-top:20px}.birthday-start .primary{font-size:13px}.birthday-welcome .welcome-signature{font-size:14px}}@media(max-width:359px){.birthday-cover{padding-inline:2px}.birthday-cover-heading h1>span{font-size:60px}.welcome-notes p{font-size:10px;gap:7px}.birthday-welcome .welcome-lead{font-size:19px}.birthday-edition{font-size:7px}}
