@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@0,400;0,500;1,400&display=swap');
:root{--cream:#f7ead8;--muted:#bdc1c9;--pink:#efbcc9;--gold:#dbc096;--ink:#152131}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:#101b2c;color:var(--cream);font-family:'DM Sans',Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--pink);outline-offset:6px}button:disabled{cursor:default}button[hidden],[hidden]{display:none!important}.landscape{position:fixed;inset:0;overflow:hidden;z-index:-1;background:radial-gradient(ellipse at 76% 26%,#40535f66,transparent 38%),linear-gradient(#10192b,#263346 60%,#3b454e)}.sky-stars{position:absolute;inset:0 0 35%;background-image:radial-gradient(1px 1px at 8% 22%,#fcecd5 90%,transparent),radial-gradient(1.5px 1.5px at 34% 13%,#dfd1b8 90%,transparent),radial-gradient(1px 1px at 55% 38%,#e6d3b0 90%,transparent),radial-gradient(1px 1px at 91% 47%,#fcecd5 90%,transparent),radial-gradient(1px 1px at 16% 67%,#fcecd5 90%,transparent),radial-gradient(1px 1px at 65% 17%,#dfd1b8 90%,transparent),radial-gradient(1px 1px at 43% 69%,#e6d3b0 90%,transparent),radial-gradient(1.5px 1.5px at 83% 7%,#fcecd5 90%,transparent);background-size:590px 490px}.moon{position:absolute;width:96px;height:96px;border-radius:50%;right:16%;top:18%;background:radial-gradient(circle at 35% 30%,#fff5de,#e7d8b5);box-shadow:0 0 42px #fae7ad28,inset -12px -7px 15px #b3a88f44}.moon:before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 25%,#aaa18c33 4%,transparent 12%),radial-gradient(ellipse at 66% 64%,#b7ad9666 3%,transparent 17%),radial-gradient(ellipse at 38% 66%,#aaa18c22 8%,transparent 23%)}.moon-halo{position:absolute;right:calc(16% - 65px);top:calc(18% - 65px);width:226px;height:226px;background:#f4e2bd04;border:1px solid #e9d4ae09;border-radius:50%;box-shadow:0 0 0 40px #fae7ad02}.ocean{position:absolute;top:62%;height:38%;width:100%;background:linear-gradient(#6a7d8633 0%,#1e42504d 4%,#162e3c 65%);border-top:1px solid #d9d8c82e}.reflection{position:absolute;right:9%;width:23%;height:100%;background:repeating-linear-gradient(0deg,transparent 0px,transparent 10px,#d8d0ae40 11px,transparent 13px);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);filter:blur(1px);animation:reflect 7s ease-in-out infinite}.wave{position:absolute;left:-10%;width:120%;height:80px;border-top:1px solid #d1ddd832;border-radius:50%;animation:swell 9s ease-in-out infinite}.w1{top:25%}.w2{top:45%;animation-delay:-3s}.w3{top:70%;animation-delay:-6s}.shore{position:absolute;left:-10%;bottom:-16%;width:120%;height:34%;border-radius:50% 65% 0 0;background:linear-gradient(165deg,#687178,#2f3a49 45%);transform:rotate(-6deg);box-shadow:0 -12px 20px #d8dfd414}.shore-line{position:absolute;left:-10%;bottom:-9%;width:120%;height:26%;border-radius:50%;border-top:2px solid #c5d2d326;transform:rotate(-6deg)}.botanical{position:absolute;bottom:-70px;width:260px;opacity:.8;filter:drop-shadow(2px 5px 10px #0003)}.botanical-left{left:-40px;transform:rotate(5deg)}.botanical-right{right:-50px;transform:scaleX(-1) rotate(-5deg);width:225px}header{display:flex;justify-content:space-between;align-items:center;margin:0 auto;padding:25px 5vw;max-width:1550px}.brand{color:var(--cream);font-family:'Playfair Display',Georgia,serif;font-size:26px;text-decoration:none;display:flex;align-items:center;gap:9px}.brand>span{color:var(--gold);font-size:17px}.brand small{font-family:'DM Sans',Arial,sans-serif;font-size:8px;letter-spacing:2px;margin-left:12px}.sound{border:1px solid #c3d1dc25;color:#d7d5d2;background:#16243666;border-radius:50px;padding:10px 15px;font-size:17px;display:flex;gap:9px;align-items:center}.sound span{font-size:10px}.chapter{text-align:center;max-width:1000px;min-height:665px;padding:28px 25px 35px;margin:auto;animation:arrive .9s both}.eyebrow{font-size:9px;letter-spacing:2.8px;font-weight:500;color:var(--gold);line-height:1.7;margin:0 0 24px}h1{font-family:'Playfair Display',Georgia,serif;font-weight:400;font-size:clamp(45px,5.4vw,76px);letter-spacing:-2px;line-height:1.12;margin:0 0 22px;text-shadow:0 4px 30px #0e152844}h1:focus{outline:0}h1 em{font-weight:400;color:var(--pink)}.lede{color:var(--muted);font-size:13px;line-height:1.9;margin:0}.primary{border:1px solid #efd2b8;background:var(--cream);color:var(--ink);border-radius:40px;padding:16px 23px;font-size:12px;font-weight:500;box-shadow:0 5px 30px #0002;transition:transform .2s,background .2s}.primary:hover{transform:translateY(-2px);background:#ffe8d2}.primary span{margin-left:20px}.micro{font-size:10px;color:#b3bcc5;margin:17px 0;letter-spacing:.2px}.gift{display:block;position:relative;margin:6px auto 4px;width:235px;height:205px;border:0;background:none}.gift-glow{position:absolute;inset:15px;background:radial-gradient(#d2a3a922,transparent 70%);border-radius:50%}.gift-box{position:absolute;left:60px;top:91px;width:117px;height:92px;background:linear-gradient(110deg,#b7778b,#dba1af,#b9798c);border-radius:0 0 5px 5px;transform:rotate(-5deg);box-shadow:0 16px 30px #050e2133}.gift-box:before,.gift-lid:before{content:'';position:absolute;left:43%;width:18%;height:100%;background:linear-gradient(90deg,#dac098,#f2ddbc,#d4b789)}.gift-lid{position:absolute;left:50px;top:72px;width:132px;height:28px;background:#d69eaf;border-radius:3px;transform:rotate(-5deg);transition:transform .7s,opacity .7s}.bow{position:absolute;top:48px;width:43px;height:28px;border:8px solid #e8cc9c;border-radius:80% 80% 15% 80%;transition:transform .7s,opacity .7s}.bow-left{left:72px;transform:rotate(15deg)}.bow-right{left:110px;transform:scaleX(-1) rotate(25deg)}.gift-tag{position:absolute;right:22px;top:119px;background:#f7ead8;padding:6px 9px;font-family:Georgia,serif;font-style:italic;font-size:11px;color:#654254;transform:rotate(12deg)}.gift-star{position:absolute;left:21px;top:62px;color:#d9c49f;font-size:28px;animation:twinkle 3s infinite}.gift:hover .gift-lid{transform:rotate(-9deg) translateY(-3px)}.gift.open .gift-lid,.gift.open .bow{transform:translateY(-95px) rotate(-20deg);opacity:0}.gift.open .gift-box{transform:rotate(2deg)}footer{padding:24px 5vw;display:flex;justify-content:center;gap:28px;align-items:center}.chapter-progress{display:flex;align-items:center;gap:12px;font-size:7px;letter-spacing:1.2px;color:#a2acb7}.chapter-progress span.active{color:#f2ceb2}.chapter-progress b{width:22px;height:1px;background:#b3bfcb33}.secret{position:fixed;bottom:22px;right:4vw;border:0;background:#152134b3;color:#d3aebd;font-size:10px;padding:10px 15px;border-radius:25px;z-index:3}.flowers{display:flex;justify-content:center;gap:4px;margin:20px auto 0;height:165px;max-width:550px}.flower-button{border:0;background:none;position:relative;width:100px;height:160px;padding:0;transition:transform .3s;--flower:#e8abc0}.flower-button:hover{transform:translateY(-9px) rotate(3deg)}.flower-button svg{width:100%;height:145px;overflow:visible;filter:drop-shadow(0 5px 10px #0003)}.flower-button:nth-child(2){transform:rotate(-8deg);margin-top:10px}.flower-button:nth-child(4){transform:rotate(8deg);margin-top:10px}.flower-button.picked svg{filter:drop-shadow(0 0 12px #f8d2be55)}.flower-button.picked:after{content:'✓';position:absolute;bottom:3px;left:calc(50% - 9px);color:#ecdbc1;font-size:11px;border:1px solid #ecdbc155;border-radius:50%;width:18px;height:18px;line-height:18px}.wish-bubble{margin:5px auto 0;padding:18px 15px 9px;max-width:500px;min-height:99px}.wish-bubble>span{color:var(--gold);font-size:8px;letter-spacing:2px}.wish-bubble p{font-family:'Playfair Display',Georgia,serif;font-size:21px;line-height:1.5;margin:9px 0;color:#f2e2d5}.flower-count{font-size:10px;color:#bec6ce;margin:0 0 22px}.lantern-space{height:195px;position:relative}.lantern{position:absolute;width:51px;height:70px;background:linear-gradient(90deg,#c47f53,#f8cb85 50%,#c47f53);border-radius:15px 15px 20px 20px;box-shadow:0 0 50px 12px #e6ad6933;z-index:2}.lantern:before,.lantern:after{content:'';position:absolute;inset:0 10px;border-left:1px solid #a96b3a55;border-right:1px solid #a96b3a55;border-radius:50%}.lantern:after{inset:0 20px}.lantern span{position:absolute;width:19px;height:5px;background:#654531;bottom:-2px;left:16px;border-radius:50%;box-shadow:0 -3px 14px #ffe8a8}.small-lantern{left:calc(50% - 25px);top:60px;animation:float 4s ease-in-out infinite}#flying-lantern{left:calc(50% - 25px);bottom:22%;opacity:0}#flying-lantern.released{animation:release 7s ease-out forwards}.wish-status{min-height:24px;font-family:'Playfair Display',Georgia,serif;font-style:italic;color:var(--pink);font-size:17px;margin:22px 0 8px}.text-button{display:inline-block;border:0;background:none;padding:12px;color:#d1c8bd;font-size:11px}.letter-chapter{max-width:760px}.letter-chapter h1{font-size:clamp(40px,5vw,64px)}.letter{margin:30px auto 25px;max-width:540px;padding:28px 37px;background:#f5eadb;color:#54453e;text-align:left;position:relative;box-shadow:0 20px 70px #050b1744;transform:rotate(-.6deg)}.letter:before{content:'';position:absolute;top:-11px;left:calc(50% - 40px);width:80px;height:22px;background:#d8c8ad99;transform:rotate(5deg)}.letter-head{display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:2px;color:#92776b;border-bottom:1px solid #8b6f5422;padding-bottom:14px}.letter-head span:last-child{font-size:23px}h2{font-family:'Playfair Display',Georgia,serif;font-size:25px;font-weight:400;line-height:1.3}.letter p{font-size:13px;line-height:1.85;color:#7c6b60}.letter .letter-end{color:#986575}.signature{font-size:10px;margin-top:20px;line-height:1.9}.signature i{font-family:'Playfair Display',Georgia,serif;color:#9f697b;font-size:28px}.last-actions{display:flex;align-items:center;justify-content:center;gap:8px}.petal{position:fixed;top:-15%;width:11px;height:18px;background:#d9a3b8;border-radius:90% 0 90% 0;animation:petalfall 5s linear forwards;z-index:5;pointer-events:none}dialog{border:1px solid #be75915c;border-radius:18px;background:radial-gradient(ellipse at top,#402039,#151a2b 65%);color:var(--cream);text-align:center;max-width:440px;width:calc(100% - 36px);max-height:90svh;overflow:auto;padding:38px 30px 28px;box-shadow:0 0 80px #ee7da51a}dialog::backdrop{background:#070d19cc;backdrop-filter:blur(8px)}.dialog-close{position:absolute;right:12px;top:10px;color:#d4b7c5;background:none;border:0;font-size:26px;padding:3px 10px}.neon{font-size:23px;line-height:1.4;letter-spacing:4px;color:#f0b1d0;text-shadow:0 0 8px #f64caf,0 0 24px #f64caf88;font-weight:500}.neon span{font-size:38px;letter-spacing:8px}.milkshake{height:115px;width:85px;position:relative;margin:23px auto 15px}.glass{position:absolute;left:19px;bottom:0;width:48px;height:72px;background:linear-gradient(90deg,#cf89ab,#f0c0d3 50%,#d78aae);clip-path:polygon(0 0,100% 0,85% 100%,15% 100%);border-top:3px solid #ffdae7}.cream{position:absolute;left:17px;top:19px;width:51px;height:33px;border-radius:50% 50% 15% 15%;background:#ffe9d7}.cream:before{content:'';position:absolute;width:30px;height:20px;background:#ffe9d7;top:-9px;left:10px;border-radius:50%}.cherry{position:absolute;top:9px;left:39px;width:12px;height:12px;border-radius:50%;background:#d56280}.straw{position:absolute;right:24px;top:0;width:5px;height:45px;background:repeating-linear-gradient(45deg,#e0c4d4 0,#e0c4d4 5px,#ac5484 5px,#ac5484 10px);transform:rotate(14deg)}dialog h2{margin:10px 0}dialog>p{font-size:13px;line-height:1.8;color:#cbbec9}.diner-ticket{margin:22px 0;padding:18px 10px;border-top:1px dashed #d6a9bd44;border-bottom:1px dashed #d6a9bd44}.diner-ticket span{display:block;font-size:7px;letter-spacing:1.5px;color:#cd9cb6}.diner-ticket strong{display:block;font-size:12px;font-weight:400;margin:10px 0}.diner-ticket small{font-size:10px;color:#b09eaf}@keyframes arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes twinkle{50%{opacity:.4;transform:scale(.8)}}@keyframes swell{50%{transform:translate(2%,12px);opacity:.4}}@keyframes reflect{50%{opacity:.5;transform:scaleX(.8)}}@keyframes float{50%{transform:translateY(-10px) rotate(3deg)}}@keyframes release{0%{opacity:1;transform:translate(0,0) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(20vw,-65vh) scale(.15)}}@keyframes petalfall{to{transform:translate(70px,120vh) rotate(500deg)}}@media(min-height:900px) and (min-width:650px){.chapter{padding-top:55px;min-height:calc(100svh - 145px)}}@media(max-width:650px){header{padding:20px 22px}.brand small{font-size:6px;letter-spacing:1.5px;margin-left:3px}.sound{padding:8px 10px}.sound span{font-size:8px}.moon{width:64px;height:64px;right:7%;top:14%;opacity:.6}.moon-halo{display:none}.chapter{padding:40px 19px 24px;min-height:640px}h1{font-size:47px;letter-spacing:-1.8px}.eyebrow{font-size:7px;letter-spacing:2px;margin-bottom:22px}.lede{font-size:12px}.botanical-left{width:160px;left:-65px;bottom:-20px}.botanical-right{width:150px;right:-62px;bottom:-15px}.gift{margin-top:10px}.ocean{top:66%;height:34%}.flowers{gap:0;height:152px;max-width:410px}.flower-button{width:19%;height:150px}.flower-button svg{height:132px}.wish-bubble p{font-size:19px}.wish-bubble{min-height:104px;padding-left:8px;padding-right:8px}.letter{padding:24px 26px}.letter p{font-size:12px}.letter h2{font-size:23px}.last-actions{flex-direction:column;gap:3px}footer{padding:24px 12px 78px}.chapter-progress{font-size:6px;gap:7px;letter-spacing:.6px}.chapter-progress b{width:14px}.secret{bottom:17px;right:50%;transform:translateX(50%);white-space:nowrap}.lantern-space{height:187px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.petal{display:none}#flying-lantern.released{opacity:1;left:75%;bottom:75%;transform:scale(.45)}}
/* The tide's secret */
.sand-card{width:min(460px,100%);height:238px;margin:28px auto 0;position:relative;overflow:hidden;border-radius:12px;background:linear-gradient(140deg,#ecdbc0,#d4bda0);box-shadow:0 18px 60px #070b2033;border:1px solid #dec6a366}.sand-message{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#674d45;padding:24px}.sand-message>span{font-size:23px;color:#9b735b}.sand-message p{font-family:'Playfair Display',Georgia,serif;font-size:27px;line-height:1.4;margin:8px 0 17px}.sand-message em{color:#995e78}.sand-message small{font-size:7px;letter-spacing:2px;color:#937661}#sand{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity 1s}.sand-mark{position:absolute;inset:0;pointer-events:none;display:flex;justify-content:center;align-items:center;flex-direction:column;font-family:Georgia,serif;font-size:17px;font-style:italic;color:#7c6454;line-height:1.8;transition:opacity .4s}.sand-mark span{font-size:45px;line-height:1.3;color:#ac8c6b}.sand-card.scratching .sand-mark{opacity:0}.sand-card.revealed #sand,.sand-card.revealed .sand-mark{opacity:0;pointer-events:none}.shore-chapter .micro{margin-bottom:0}.shore-chapter #to-garden{margin-top:13px}.shore-chapter .text-button{font-size:10px;color:#bda78f}.moon-secret{margin:20px auto -28px;position:relative;z-index:2}.touch-moon{width:63px;height:63px;background:none;border:0;border-radius:50%;padding:0;box-shadow:0 0 45px #f3dca433;transition:transform .3s}.touch-moon:hover{transform:scale(1.08)}.touch-moon span{display:block;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3d2,#d3bd92);box-shadow:inset -10px -4px 12px #6b6b6929}.touch-moon span:after{content:'';display:block;width:100%;height:100%;border-radius:50%;background:radial-gradient(ellipse at 30% 25%,#aaa18c33 4%,transparent 12%),radial-gradient(ellipse at 66% 64%,#b7ad9666 3%,transparent 17%)}.moon-secret p{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:14px;color:#dfcbb7;min-height:23px;padding:0 10px}.touch-moon.touched{animation:moonpulse 1s ease-out}.moon-secret~.lantern-space{height:155px}.shooting-star{position:fixed;top:15%;left:-15%;height:2px;width:120px;background:linear-gradient(90deg,transparent,#ffe8c6);box-shadow:0 0 12px #f4d5b155;transform:rotate(20deg);z-index:8;pointer-events:none;animation:shoot 1.4s ease-in forwards}.finale-invitation{display:flex;flex-direction:column;align-items:center;gap:14px;margin:29px 0 12px}.finale-invitation>span{font-size:8px;letter-spacing:2px;color:var(--gold)}.finale-chapter{padding-top:43px;max-width:1100px}.finale-chapter h1{font-size:clamp(44px,5vw,72px)}.constellation-wrap{position:relative;margin:28px auto 5px;max-width:900px;padding:25px 10px;background:radial-gradient(ellipse,#bda4d611,transparent 68%)}#constellation{display:block;width:100%;height:auto;overflow:visible}.constellation-line{fill:none;stroke:#e3c9a5;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 5px #e8c6a977)}.constellation-star{fill:#ffeccf;opacity:0;filter:drop-shadow(0 0 6px #ffe5b6)}.constellation-letter.lit .constellation-line{animation:draw-stars 1.4s ease forwards;animation-delay:var(--delay)}.constellation-letter.lit .constellation-star{animation:light-star 1.2s ease forwards;animation-delay:var(--delay)}.orbit-star{position:absolute;color:#f5d5b1;opacity:.5;animation:twinkle 4s infinite}.orbit-one{top:0;left:24%;font-size:19px}.orbit-two{bottom:2px;right:20%;font-size:27px}.finale-greeting{margin:6px 0 27px}.finale-greeting p{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:29px;color:var(--pink);margin:5px 0 13px}.finale-greeting span{font-size:11px;line-height:1.9;color:#b8c1cc}.finale-controls{display:flex;justify-content:center;flex-wrap:wrap;margin-top:14px;gap:2px}.finale-controls .text-button{font-size:10px}#sky-fireworks{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:9}@keyframes moonpulse{50%{box-shadow:0 0 55px 20px #f3dca455}}@keyframes shoot{to{left:110%;top:48%;opacity:0}}@keyframes draw-stars{to{stroke-dashoffset:0}}@keyframes light-star{to{opacity:1}}@media(max-width:650px){.sand-card{height:235px;max-width:355px}.sand-message p{font-size:25px}.shore-chapter h1{font-size:42px}.constellation-wrap{padding:34px 0;margin:30px -8px 10px}.finale-chapter h1{font-size:43px}.finale-greeting p{font-size:25px}.finale-greeting span{display:block;max-width:270px;margin:auto}.chapter-progress{gap:5px;font-size:6px}.chapter-progress b{width:10px}.moon-secret p{font-size:12px}.finale-controls{gap:0}.finale-controls .text-button{font-size:9px}.finale-chapter{min-height:680px}}@media(prefers-reduced-motion:reduce){.constellation-letter.lit .constellation-line{stroke-dashoffset:0}.constellation-letter.lit .constellation-star{opacity:1}.shooting-star{display:none}}
/* A small companion, with one clear next action at a time. */
body{padding-bottom:155px}.cat-guide{position:fixed;right:24px;bottom:max(16px,env(safe-area-inset-bottom));z-index:15;width:min(372px,calc(100vw - 28px));display:flex;gap:8px;align-items:flex-end;pointer-events:none}.cat-avatar{position:relative;flex:0 0 82px;width:82px;height:112px;background:none;border:0;padding:0;pointer-events:auto;filter:drop-shadow(0 6px 12px #09102055)}.cat-avatar svg{display:block;width:82px;height:100px}.cat-tail{transform-origin:78px 95px;animation:cat-tail 4s ease-in-out infinite}.cat-paw{transform-origin:29px 85px;animation:cat-wave 5s ease-in-out infinite}.cat-eyes{transform-origin:54px 47px;animation:cat-blink 5.5s infinite}.cat-bubble{position:relative;flex:1;min-width:0;padding:14px 16px 12px;background:#fbf1e6;color:#655361;border:1px solid #eed7c6;border-radius:18px 18px 18px 5px;box-shadow:0 7px 32px #06102355;pointer-events:auto}.cat-bubble:before{content:'';position:absolute;left:-8px;bottom:19px;width:14px;height:14px;background:#fbf1e6;transform:rotate(45deg);border-left:1px solid #eed7c6;border-bottom:1px solid #eed7c6}.cat-bubble-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:7px;letter-spacing:1.2px;color:#9a778a}.cat-bubble-head span:last-child{font-size:9px;letter-spacing:.5px;white-space:nowrap}.cat-bubble p{font-size:12px;line-height:1.6;margin:9px 0 10px}.cat-next{border:0;background:#7f607d;color:#fff8f0;border-radius:30px;font-size:11px;padding:9px 14px;display:inline-flex;align-items:center;gap:16px;min-height:35px}.cat-next:hover{background:#6d4f6b}.cat-next span{font-size:14px}.cat-guide.celebrating .cat-paw{animation:cat-wave 1.2s ease-in-out 2}.cat-guide.collapsed{width:82px}.cat-peek{position:absolute;bottom:0;left:50%;transform:translateX(-50%);background:#fbf1e6;color:#77596d;border-radius:15px;padding:5px 9px;font-size:8px;white-space:nowrap;box-shadow:0 2px 10px #0002}.cat-next-target{outline:2px solid #edd2a38c!important;outline-offset:6px;box-shadow:0 0 22px #efc6a722!important}.flower-button.cat-next-target{border-radius:45px}.gift.cat-next-target{outline:none!important;filter:drop-shadow(0 0 12px #efc6a777)}button,.sand-card{scroll-margin-top:40px;scroll-margin-bottom:190px}.secret{left:4vw;right:auto;bottom:24px}.cat-bubble-head #cat-step{font-variant-numeric:tabular-nums}@keyframes cat-tail{50%{transform:rotate(-9deg)}}@keyframes cat-wave{0%,65%,100%{transform:rotate(0deg)}72%,85%{transform:rotate(-16deg)}78%,92%{transform:rotate(8deg)}}@keyframes cat-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@media(max-width:650px){body{padding-bottom:170px}.cat-guide{right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:calc(100vw - 24px);gap:5px}.cat-avatar{width:66px;flex-basis:66px;height:96px}.cat-avatar svg{width:66px;height:84px}.cat-bubble{padding:12px 14px 11px;border-radius:16px 16px 16px 5px}.cat-bubble p{font-size:11px;margin:7px 0 8px;line-height:1.55}.cat-bubble-head{font-size:6px;letter-spacing:1.1px}.cat-next{font-size:10px;padding:8px 13px;min-height:34px}.cat-guide.collapsed{width:66px}.secret{position:static;transform:none;margin:0 auto}.chapter-progress{justify-content:center}footer{flex-direction:column;gap:14px;padding-bottom:16px}.last-actions{gap:2px}}@media(prefers-reduced-motion:reduce){.cat-tail,.cat-paw,.cat-eyes{animation:none!important}}
/* Slow four-paw walking; the speech bubble stays in one place. */
body{padding-bottom:260px}.cat-guide{width:min(294px,calc(100vw - 28px));display:block}.cat-bubble:before{display:none}.cat-avatar{position:fixed;left:0;right:auto;bottom:170px;width:94px;height:99px;transition:bottom .45s ease;will-change:transform}.cat-avatar svg.cat-sitting-art{width:80px;height:94px;margin:auto}.cat-avatar svg.cat-walking-art{display:none;width:94px;height:94px;transform:scaleX(var(--cat-direction,1));overflow:visible}.cat-avatar.is-walking .cat-sitting-art{display:none}.cat-avatar.is-walking .cat-walking-art{display:block}.walking-cat-body{animation:walking-bob 1.4s ease-in-out infinite}.walk-leg{transform-box:fill-box;transform-origin:50% 0%;animation:walking-step 1.4s ease-in-out infinite}.leg-back-near,.leg-front-far{animation-delay:-.7s}.walking-tail{transform-origin:36px 73px;animation:walking-tail-sway 2.8s ease-in-out infinite}.walking-eyes{transform-origin:118px 47px;animation:cat-blink 5.5s infinite}.cat-walk-toggle{background:none;border:0;padding:8px 0 8px 10px;font-size:9px;color:#896b81;min-height:32px}.cat-walk-toggle:disabled{opacity:.7}.cat-avatar:not(.is-walking) .cat-sitting-art .cat-paw{animation:cat-wave 5s ease-in-out infinite}.cat-guide.collapsed{width:0}.cat-peek{bottom:-1px}.cat-avatar:hover{filter:drop-shadow(0 4px 14px #efd0b33d)}button,.sand-card{scroll-margin-bottom:285px}@keyframes walking-step{0%,100%{transform:rotate(13deg) translateY(0)}50%{transform:rotate(-13deg) translateY(-3px)}}@keyframes walking-bob{0%,50%,100%{transform:translateY(0)}25%,75%{transform:translateY(-2px)}}@keyframes walking-tail-sway{50%{transform:rotate(8deg)}}@media(max-width:650px){body{padding-bottom:270px}.cat-guide{width:calc(100vw - 24px)}.cat-avatar{width:80px;height:90px}.cat-avatar svg.cat-walking-art{width:80px;height:85px}.cat-avatar svg.cat-sitting-art{width:68px;height:85px}.cat-guide.collapsed{width:0}.cat-walk-toggle{font-size:8px}.cat-bubble{padding-bottom:10px}}@media(prefers-reduced-motion:reduce){.cat-avatar{transition:none}.walking-cat-body,.walk-leg,.walking-tail,.walking-eyes{animation:none!important}}
/* Chapter 25: sculpted objects, warm light and spatial transitions. */
:root{--champagne:#f0d4a1}.brand small{color:#e1cda9}.chapter{perspective:1000px;animation:chapter-unfold .85s cubic-bezier(.2,.7,.2,1) both}.primary{background:linear-gradient(135deg,#fff2d9,#edcfaa);border-color:#f4dfbf;box-shadow:0 3px 0 #bb9979,0 12px 28px #060e2633,inset 0 1px 0 #fff9e9;transform:translateY(0);transition:transform .25s,box-shadow .25s}.primary:hover{background:linear-gradient(135deg,#fff5e3,#f4d8b7);transform:translateY(-3px);box-shadow:0 5px 0 #bb9979,0 16px 30px #060e2644}.primary:active{transform:translateY(2px);box-shadow:0 1px 0 #bb9979}.moon{background:radial-gradient(circle at 32% 28%,#fff7e4 0,#ebddc0 46%,#b6ab97 85%,#786f66 100%);box-shadow:0 0 55px #f3dfa62a,inset -15px -9px 22px #494d5944}.touch-moon span{background:radial-gradient(circle at 30% 27%,#fff6db,#ded0ad 57%,#9a937f);box-shadow:inset -10px -5px 13px #454a5844,0 8px 20px #010b2233}.botanical{filter:drop-shadow(12px 10px 10px #03101a88)}.letter{box-shadow:1px 1px 0 #d6c7b7,2px 2px 0 #c8bcae,3px 4px 0 #9c938a,0 24px 65px #050b1777;border-radius:2px;transform:perspective(1100px) rotateX(3deg) rotateZ(-.6deg)}.flowers{perspective:750px}.flower-button svg{filter:drop-shadow(3px 3px 0 #6c405155) drop-shadow(0 9px 8px #0004);transition:transform .45s cubic-bezier(.2,.7,.2,1)}.flower-button:hover svg,.flower-button:focus-visible svg{transform:rotateY(-15deg) rotateX(8deg) translateZ(16px)}.flower-button.picked svg{filter:drop-shadow(2px 3px 0 #6c405144) drop-shadow(0 0 17px #f8d2be77)}.sand-card{box-shadow:0 4px 0 #9c8063,0 24px 55px #020a2855}.lantern{box-shadow:inset -7px -5px 13px #6f381e44,inset 4px 0 10px #ffeac355,0 0 50px 12px #e6ad6933}.cat-avatar{filter:drop-shadow(0 8px 4px #060c2544)}
.gift.gift-3d{height:245px;width:260px;margin:4px auto 12px;perspective:720px}.present-scene{display:block;position:absolute;width:124px;height:124px;left:68px;top:77px;transform-style:preserve-3d;transform:rotateX(-18deg) rotateY(-27deg);transition:transform .65s cubic-bezier(.2,.7,.2,1)}.gift-3d:hover .present-scene{transform:rotateX(-22deg) rotateY(-17deg) translateY(-5px)}.present-body,.present-lid{position:absolute;inset:0;transform-style:preserve-3d}.present-face{position:absolute;inset:0;display:block;backface-visibility:hidden;border:1px solid #e4abbc33;background:linear-gradient(130deg,#d99aaf,#b77490)}.present-face.front{transform:translateZ(62px);background:linear-gradient(125deg,#e8b3c1,#c1819e)}.present-face.back{transform:rotateY(180deg) translateZ(62px)}.present-face.right{transform:rotateY(90deg) translateZ(62px);background:linear-gradient(120deg,#bc7c95,#965773)}.present-face.left{transform:rotateY(-90deg) translateZ(62px);background:linear-gradient(120deg,#cc8aa1,#ab6583)}.present-face.bottom{transform:rotateX(-90deg) translateZ(62px);background:#8f5c70}.present-face i,.lid-face i{display:block;position:absolute;left:44%;width:18%;height:100%;background:linear-gradient(90deg,#c9a46c,#f8e6bd 45%,#dab882);box-shadow:1px 0 2px #66452122}.present-face b{position:absolute;left:13px;top:14px;font-family:'Playfair Display',Georgia,serif;font-weight:400;font-size:18px;color:#fff1de}.present-lid{height:18px;top:-10px;transition:transform .95s cubic-bezier(.2,.7,.2,1),opacity .8s}.lid-face{position:absolute;display:block;background:#e9afc2;backface-visibility:hidden}.lid-front,.lid-back{width:132px;height:18px;left:-4px}.lid-front{transform:translateZ(66px)}.lid-back{transform:rotateY(180deg) translateZ(66px)}.lid-right,.lid-left{width:132px;height:18px;left:-4px;transform:rotateY(90deg) translateZ(66px);background:#bd809d}.lid-left{transform:rotateY(-90deg) translateZ(66px)}.lid-top{width:132px;height:132px;left:-4px;top:-66px;transform:rotateX(90deg);background:linear-gradient(135deg,#f3c8d5,#d895ae)}.lid-top:after{content:'';position:absolute;top:44%;left:0;width:100%;height:18%;background:linear-gradient(#d4b17b,#f6e1b5,#c7a16b)}.ribbon-loop{position:absolute;display:block;width:50px;height:38px;border:9px solid #e8ca91;border-radius:80% 80% 20% 80%;top:-31px;left:16px;transform:rotateZ(-18deg) translateZ(5px);box-shadow:inset 1px 1px 1px #a98557,1px 2px 0 #b9945d}.loop-right{left:62px;transform:rotateY(180deg) rotateZ(-18deg) translateZ(-5px)}.ribbon-knot{position:absolute;top:-15px;left:54px;width:20px;height:20px;border-radius:5px;background:linear-gradient(90deg,#d3af74,#f6e5bb,#d1aa6c);transform:translateZ(15px)}.present-shadow{position:absolute;width:163px;height:23px;left:48px;bottom:18px;background:#02071988;border-radius:50%;filter:blur(12px)}.present-glow{position:absolute;inset:10px;background:radial-gradient(ellipse,#f8d6b91a,transparent 65%)}.present-tag{position:absolute;top:171px;right:17px;background:#f9ead5;color:#80536b;font-family:Georgia,serif;font-size:10px;font-style:italic;padding:8px 10px;transform:rotate(9deg);box-shadow:2px 4px 7px #16082433}.present-spark{position:absolute;left:23px;top:66px;font-size:25px;color:#f2d6ab;animation:twinkle 4s infinite}.gift-3d.open .present-lid{transform:translate3d(-20px,-120px,20px) rotateX(-32deg) rotateZ(-17deg);opacity:0}.gift-3d.open .present-scene{transform:rotateX(-16deg) rotateY(-18deg)}
.birthday-chapter{max-width:850px;min-height:760px;padding-top:30px}.birthday-chapter h1{font-size:clamp(41px,4.7vw,63px)}.birthday-stage{position:relative;isolation:isolate;width:min(420px,100%);height:315px;margin:8px auto 0;perspective:800px}.age-aura{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 57%,#ecc49a22,transparent 63%);border-radius:50%;transition:background 1s}.orbit-ring{position:absolute;width:290px;height:290px;border:1px solid #e8c89c44;border-radius:50%;left:calc(50% - 145px);top:5px;transform:rotateX(66deg) rotateZ(-17deg);box-shadow:0 2px 0 #d7b37e11,0 0 20px #b7a5d511}.ring-two{transform:rotateY(70deg) rotateZ(25deg);border-color:#c3aad72b}.number-pedestal{position:absolute;width:210px;height:45px;border-radius:50%;left:calc(50% - 105px);bottom:28px;background:radial-gradient(ellipse,#d8b8842e,#aa876811 55%,transparent 72%);border-bottom:2px solid #f5d3a755;box-shadow:0 5px 0 #9b7c6211,0 13px 15px #01072055;transform:rotateX(44deg)}.age-display{position:absolute;inset:54px 0 48px;display:flex;align-items:center;justify-content:center;flex-direction:column;transform:rotateY(-9deg) rotateX(5deg);transform-style:preserve-3d}.age-overline{font-size:8px;letter-spacing:3px;color:#d9bea0;transform:translateZ(25px)}.age-number{display:block;font-family:'Playfair Display',Georgia,serif;font-size:150px;line-height:1.08;font-weight:500;letter-spacing:-6px;color:#f6dfb0;text-shadow:1px 1px 0 #c7a36f,2px 2px 0 #bd955e,3px 3px 0 #b58a51,4px 4px 0 #a88049,5px 5px 0 #9b7240,6px 6px 0 #886237,7px 7px 0 #77512e,8px 8px 0 #6b4629,12px 18px 20px #01071b99;transform:translateZ(30px);font-variant-numeric:lining-nums tabular-nums;min-width:220px}.age-number.turning{animation:year-turn .35s cubic-bezier(.15,.7,.2,1) both}.age-unit{font-size:8px;letter-spacing:3px;color:#dec4a7;margin-top:13px;transform:translateZ(20px)}.year-stars{position:absolute;inset:0}.year-light{position:absolute;width:5px;height:5px;border-radius:50%;background:#6b6c7780;transform:translate(-50%,-50%);transition:background .35s,box-shadow .35s}.year-light.lit{background:#fff0ca;box-shadow:0 0 6px 2px #f2dbaa66,0 0 16px #f2dbaa88}.year-light.current{transform:translate(-50%,-50%) scale(1.8)}.stage-star{position:absolute;color:#e9cda4}.star-left{left:13%;top:32%;font-size:18px}.star-right{right:10%;bottom:27%;font-size:23px}.age-progress{width:min(250px,70%);height:2px;background:#e6cfaf20;margin:0 auto;overflow:hidden;border-radius:5px}.age-progress>span{height:100%;display:block;width:4%;background:#efcda5;box-shadow:0 0 12px #efcda5;transition:width .25s linear}.age-caption{font-family:'Playfair Display',Georgia,serif;color:#e4c6b1;font-size:17px;margin:17px 0 8px;min-height:26px}.count-controls{display:flex;gap:10px;justify-content:center}.count-controls .text-button{font-size:10px}.birthday-reveal{animation:birthday-bloom 1s cubic-bezier(.2,.8,.2,1) both}.birthday-reveal h2{font-size:29px;color:var(--pink);margin:16px 0 10px}.birthday-reveal>p{font-size:12px;color:#c0c6ce;line-height:1.85;margin:0 0 20px}.birthday-stage.complete .age-number{color:#ffe7b5}.birthday-stage.complete .age-display{animation:number-celebration 1.4s ease both}.birthday-stage.complete .age-aura{background:radial-gradient(ellipse at 50% 57%,#ecc49a35,transparent 68%)}.birthday-stage.complete .star-left,.birthday-stage.complete .star-right{animation:twinkle 4s infinite}.twenty-five-wishes{max-width:360px;margin:0 auto 24px;text-align:left;border:1px solid #e4c9a533;background:linear-gradient(140deg,#38435977,#1b2a3c99);border-radius:13px;box-shadow:0 8px 28px #060d2433}.twenty-five-wishes summary{cursor:pointer;list-style:none;padding:15px 18px;color:#e7d3b7;font-size:11px;display:flex;justify-content:space-between;align-items:center}.twenty-five-wishes summary::-webkit-details-marker{display:none}.twenty-five-wishes summary span{font-size:17px}.birthday-wish-card{padding:7px 20px 15px;text-align:center}.birthday-wish-card>span{font-size:8px;color:#c4a4b9;letter-spacing:2px}.birthday-wish-card>p{font-family:'Playfair Display',Georgia,serif;font-size:22px;line-height:1.45;color:#f3dfd3;min-height:64px;margin:17px 0}.birthday-wish-controls{display:flex;align-items:center;justify-content:space-between}.birthday-wish-controls button{background:#f6e8d918;border:1px solid #ecd6b933;color:#edddc6;width:36px;height:36px;border-radius:50%;font-size:18px}.birthday-wish-controls>span{color:#aab6c6;font-size:9px}.birthday-reveal>.text-button{display:block;margin:9px auto 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes chapter-unfold{from{opacity:0;transform:perspective(1200px) translateY(22px) rotateX(3deg)}to{opacity:1;transform:perspective(1200px) translateY(0) rotateX(0)}}@keyframes year-turn{from{opacity:.25;transform:translateZ(30px) rotateX(-35deg) translateY(8px)}to{opacity:1;transform:translateZ(30px) rotateX(0) translateY(0)}}@keyframes birthday-bloom{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}@keyframes number-celebration{0%{transform:rotateY(-9deg) rotateX(5deg) scale(1)}45%{transform:rotateY(7deg) rotateX(0deg) scale(1.12)}100%{transform:rotateY(-6deg) rotateX(3deg) scale(1.04)}}@media(max-width:650px){.intro-chapter h1{font-size:48px}.gift.gift-3d{height:235px;margin-top:8px}.birthday-chapter{padding-top:24px;min-height:730px}.birthday-chapter h1{font-size:39px;line-height:1.17}.birthday-stage{height:300px;max-width:350px}.age-number{font-size:137px}.age-display{inset:56px 0 43px}.orbit-ring{width:265px;height:265px;left:calc(50% - 132.5px);top:16px}.birthday-reveal h2{font-size:25px}.birthday-reveal>p{font-size:11px}.birthday-wish-card>p{font-size:20px}.age-caption{font-size:15px}.brand small{font-size:6px}.chapter-progress{gap:4px;letter-spacing:.4px}.chapter-progress b{width:8px}.present-scene{top:71px}}@media(prefers-reduced-motion:reduce){.chapter,.age-number,.birthday-reveal,.birthday-stage.complete .age-display{animation:none!important}.present-scene,.present-lid,.primary,.flower-button svg,.year-light,.age-progress>span{transition:none!important}}
