@font-face{font-family:BirthdaySerif;src:url('./assets/serif.ttf') format('truetype');font-display:swap;font-style:normal}@font-face{font-family:BirthdaySerif;src:url('./assets/serif-italic.ttf') format('truetype');font-display:swap;font-style:italic}
:root{color-scheme:light;--pink:#db537f;--pink-dark:#af335d;--ink:#57313f;--muted:#886b77;--paper:#fffbfc;--blush:#fff1f4;--line:#efd7df;--serif:BirthdaySerif,Georgia,serif;--sans:Inter,'Avenir Next',Avenir,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;background-color:#fff4f6;background-image:linear-gradient(90deg,#eab7c419 1px,transparent 1px),linear-gradient(#eab7c419 1px,transparent 1px);background-size:28px 28px;color:var(--ink);font-family:var(--sans);font-size:16px;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,section:focus-visible{outline:3px solid #ac315e;outline-offset:5px}button{color:inherit}button:disabled{cursor:default}button .icon{flex-shrink:0}a{color:inherit}svg{display:block}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.filled{fill:currentColor;stroke:none}.svg-definitions{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.site-shell{width:min(1160px,calc(100% - 80px));margin:auto;position:relative;z-index:1}.site-header{height:104px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:22px;font-family:var(--serif);font-style:italic;font-weight:600;letter-spacing:-.3px}.wordmark .icon{color:var(--pink);width:21px;height:21px}.wordmark-dot{margin-left:-8px;color:var(--pink)}.sound-button{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:24px;background:#fffbfcbb;padding:10px 15px;font-size:13px;color:#765462;min-height:42px;transition:background .2s}.sound-button:hover{background:#fff}.sound-button .icon{width:15px;height:15px}.sound-bars{display:none;align-items:center;gap:2px;height:14px}.sound-bars i{width:2px;height:8px;background:var(--pink);animation:equalizer .8s ease-in-out infinite alternate}.sound-bars i:nth-child(2){height:13px;animation-delay:.3s}.sound-bars i:nth-child(3){animation-delay:.5s}.sound-button[aria-pressed=true] .sound-bars{display:flex}.occasion-label{display:flex;align-items:center;justify-content:center;gap:13px;font-size:11px;font-weight:650;letter-spacing:2.4px;color:#a36b80;margin:15px 0 23px}.occasion-label span{width:28px;height:1px;background:#dcb4c2}.birthday-book{border:1px solid #edcdd8;border-radius:26px;background:var(--paper);box-shadow:0 15px 60px #9761740b,0 5px 12px #97617405;overflow:hidden;position:relative}.chapter{min-height:526px;animation:chapterEnter .55s ease both;outline-offset:-5px}.greeting{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;padding:42px 30px 35px 61px;background:radial-gradient(ellipse at 85% 48%,#fff1f4 0%,#fff1f4 24%,#fffbfc00 67%)}.eyebrow{font-size:11px;font-weight:650;letter-spacing:1.8px;color:#a7647d;display:flex;align-items:center;gap:8px;line-height:1.6}.eyebrow .icon{width:17px;height:17px}.greeting-copy{position:relative;z-index:2;padding:18px 0}.greeting h1{font-family:var(--serif);font-size:clamp(55px,5.6vw,76px);font-weight:400;line-height:1.04;letter-spacing:-2.5px;margin:22px 0 22px;position:relative;white-space:nowrap}h1 em,h2 em{font-weight:400;color:var(--pink)}.heading-heart{font-size:48px;display:inline-block;position:relative;top:-7px;margin-left:15px;color:#d67193;transform:rotate(12deg);animation:heartbeat 3s ease-in-out infinite}.greeting p,.wish-copy p,.letter-aside p{font-size:15px;line-height:1.85;color:var(--muted);margin:0 0 28px}.primary-button{display:inline-flex;gap:19px;align-items:center;justify-content:center;background:var(--pink);color:white;border:1px solid var(--pink);border-radius:40px;padding:16px 25px;min-height:54px;box-shadow:0 6px 15px #db537f20;font-size:14px;font-weight:550;transition:transform .2s,background .2s,box-shadow .2s}.primary-button:hover{background:#cb4571;transform:translateY(-2px);box-shadow:0 8px 20px #db537f30}.primary-button:active{transform:translateY(0)}.primary-button .icon{width:18px;height:18px}.handwritten{font-family:var(--serif);font-style:italic;font-weight:400}.button-note{display:block;color:#a5808e;font-size:17px;margin-top:16px;transform:rotate(-3deg);transform-origin:left}.greeting-art{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center;min-width:0;height:435px}.bunny-art{width:112%;max-width:none;height:435px;aspect-ratio:1;object-fit:contain;mix-blend-mode:multiply;animation:bunnyFloat 5s ease-in-out infinite}.birthday-seal{position:absolute;z-index:2;right:7px;top:8px;width:100px;height:100px;border:1px dashed #d59bad;outline:4px solid #fff1f4;border-radius:50%;background:#fff1f4;transform:rotate(13deg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#bc6f8b}.birthday-seal>span:first-child{font-size:24px;font-family:var(--serif);font-style:italic}.birthday-seal>span:nth-child(2){font-size:9px;font-weight:600;letter-spacing:1px;text-transform:uppercase;text-align:center;line-height:1.45}.birthday-seal b{font-size:10px;font-weight:400}.art-caption{position:absolute;bottom:5px;font-size:20px;color:#ac6e84;transform:rotate(-5deg);white-space:nowrap}.art-sparkle{position:absolute;color:#cf85a0;animation:twinkle 3s ease-in-out infinite}.sparkle-one{left:16px;top:85px;font-size:43px}.sparkle-two{right:12px;bottom:67px;font-size:20px;animation-delay:1.5s}.book-footer{height:53px;margin:0 28px;border-top:1px solid #f0e0e6;display:flex;align-items:center;justify-content:space-between;gap:15px;color:#ac8b98;font-size:9px;font-weight:600;letter-spacing:1.6px}.book-footer>span:last-child{font-size:10px;letter-spacing:1px}.page-dots{display:flex;gap:7px;position:absolute;left:50%;transform:translateX(-50%)}.page-dots i{width:5px;height:5px;border-radius:50%;background:#e9d6de;transition:width .3s}.page-dots i.active{background:var(--pink);width:17px;border-radius:5px}.chapter-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:19px}.chapter-tab{min-height:72px;background:#fffbfc9c;border:1px solid #efd7e0;border-radius:14px;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 12px;font-size:13px;transition:background .25s,border-color .25s,transform .25s}.chapter-tab:hover{border-color:#d996ae;transform:translateY(-2px)}.chapter-tab .icon{width:16px;height:16px;color:#b08698}.chapter-number{font-family:var(--serif);font-style:italic;font-size:14px;color:#b78c9b;margin-right:1px}.chapter-tab.active{background:#fbe4ec;border-color:#e9b6c8;color:#a54366}.chapter-tab.active .icon{color:var(--pink)}.chapter-tab.active .chapter-number{color:#b66583}.site-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#a58492;margin:28px 0 25px}.site-footer .icon{width:14px;height:14px;position:absolute;left:calc(50% - 7px);color:#d19aad}.ambient-hearts{position:fixed;inset:0;pointer-events:none;overflow:hidden;color:#d99db4}.ambient-hearts span{position:absolute;font-family:Georgia,serif;font-size:25px;opacity:.25;animation:ambientFloat 12s ease-in-out infinite}.ambient-hearts span:nth-child(1){left:3%;top:23%;transform:rotate(-18deg)}.ambient-hearts span:nth-child(2){right:2%;top:46%;animation-delay:-4s;font-size:34px}.ambient-hearts span:nth-child(3){left:12%;bottom:6%;animation-delay:-7s;font-size:16px}.ambient-hearts span:nth-child(4){right:15%;top:8%;animation-delay:-2s;font-size:20px}.ambient-hearts span:nth-child(5){left:1%;bottom:13%;animation-delay:-9s;font-size:16px}
h2{font-family:var(--serif);font-size:clamp(38px,4.1vw,55px);font-weight:400;letter-spacing:-1.5px;line-height:1.08;margin:19px 0 19px}.wish-chapter{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:25px 60px 30px 25px;background:radial-gradient(ellipse at 19% 50%,#fff1f4,#fffbfc 67%)}.wish-art{position:relative}.wish-art img{width:100%;height:auto;display:block;mix-blend-mode:multiply;animation:bunnyFloat 5s ease-in-out infinite}.wish-halo{position:absolute;inset:0;display:grid;place-items:center;font-size:180px;color:var(--pink);opacity:0;pointer-events:none}.wish-made .wish-halo{animation:wishRise 2s ease-out both}.wish-copy{padding:18px 0 18px 17px}.wish-success{animation:chapterEnter .6s ease both}.wish-copy .wish-confirmation{color:var(--pink-dark);font-family:var(--serif);font-style:italic;font-size:23px;margin-bottom:22px}.notes-chapter{text-align:center;padding:34px 45px 21px}.notes-chapter .eyebrow{justify-content:center}.notes-chapter h2{font-size:43px;margin:12px 0}.notes-instruction{font-size:14px;color:var(--muted);margin:0 0 28px}.love-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:27px;max-width:830px;margin:auto}.love-note{position:relative;background:transparent;border:0;height:216px;padding:0;perspective:1000px;transition:transform .2s}.love-note:hover{transform:translateY(-5px)}.note-front,.note-back{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #ebcbd8;border-radius:6px;box-shadow:0 8px 15px #9761740a;backface-visibility:hidden;transition:transform .7s cubic-bezier(.2,.65,.25,1);padding:24px;background:#fce7ed}.note-two .note-front,.note-two .note-back{background:#faf0e3;border-color:#ebdbc6}.note-three .note-front,.note-three .note-back{background:#f0ecfa;border-color:#ddd4eb}.note-one{rotate:-3deg}.note-three{rotate:3deg}.note-front:before,.note-back:before{content:'';position:absolute;inset:8px;border:1px dashed #c896aa66;border-radius:3px;pointer-events:none}.note-number{position:absolute;top:18px;left:21px;font-family:var(--serif);font-size:13px;font-style:italic;color:#ac7e91}.note-icon{width:32px;height:32px;fill:none;stroke:#cc7192;stroke-width:1.2;margin-bottom:12px}.note-two .note-icon{stroke:#bc9258}.note-three .note-icon{stroke:#9e84c3}.note-front .handwritten{font-size:27px;color:#94576f}.note-three .handwritten{color:#8971a4}.note-two .handwritten{color:#99794c}.note-hint{font-size:10px;letter-spacing:1px;color:#a7798c;margin-top:15px}.note-back{transform:rotateY(180deg);gap:10px;padding:24px}.note-back .handwritten{font-size:24px}.note-back>span:nth-child(2){font-size:14px;line-height:1.65;color:#765a67}.tiny-heart{color:var(--pink);font-size:20px;line-height:1}.love-note[aria-expanded=true] .note-front{transform:rotateY(-180deg)}.love-note[aria-expanded=true] .note-back{transform:rotateY(0)}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;background:transparent;padding:14px 5px;font-size:13px;color:#aa5474;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#d9afc0;min-height:44px}.text-button:hover{color:#842f4e}.text-button .icon{width:16px;height:16px}.notes-chapter>.text-button{margin-top:16px}.letter-chapter{display:grid;grid-template-columns:.85fr 1.15fr;gap:34px;align-items:center;padding:42px 54px 26px;position:relative;background:radial-gradient(ellipse at 25% 90%,#fff1f4,#fffbfc 70%)}.letter-aside{align-self:start;padding-top:37px}.letter-aside .eyebrow{font-size:10px;letter-spacing:1.1px}.letter-aside h2{font-size:46px}.letter-aside p{font-size:14px}.letter-stamp{display:flex;align-items:center;gap:10px;margin-top:37px;border:1px solid #d4a0b3;color:#bf809a;width:max-content;padding:12px 16px;transform:rotate(-10deg);border-radius:50%;outline:1px solid #dfb8c6;outline-offset:3px}.letter-stamp .icon{width:25px;height:25px}.letter-stamp span{font-size:8px;font-weight:600;letter-spacing:1.8px;line-height:1.7}.letter-paper{padding:28px 32px 26px;background:#fffdf9;box-shadow:0 8px 28px #8d5f7410;border:1px solid #f0e2de;transform:rotate(1deg);border-radius:2px;position:relative}.letter-paper:before{content:'';position:absolute;top:-10px;left:calc(50% - 32px);width:65px;height:21px;background:#efd8c799;transform:rotate(-3deg)}.paper-date{font-size:8px;letter-spacing:1.15px;color:#ae8b94;display:flex;justify-content:space-between;gap:8px}.paper-date span{font-size:18px;line-height:.8;color:#d796ad}.letter-paper h3{font-size:27px;color:#b26783;margin:23px 0 17px}.letter-paper p{font-family:var(--serif);font-size:16px;line-height:1.65;color:#7b626a;margin:0 0 15px}.letter-signature{font-size:22px;color:#b26783;padding-top:4px}.replay-button{grid-column:1/-1;margin:-7px auto -5px}.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}#confetti{position:fixed;inset:0;z-index:20;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-30px;animation:confettiFall var(--duration) cubic-bezier(.15,.65,.65,1) both;font-size:var(--size);color:var(--color);line-height:1;will-change:transform}
@keyframes bunnyFloat{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-9px) rotate(1deg)}}@keyframes twinkle{0%,100%{opacity:.5;transform:scale(.85)}50%{opacity:1;transform:scale(1.12)}}@keyframes heartbeat{0%,40%,65%,100%{transform:rotate(12deg) scale(1)}50%{transform:rotate(12deg) scale(1.12)}58%{transform:rotate(12deg) scale(1.03)}}@keyframes ambientFloat{0%,100%{translate:0 0}50%{translate:7px -26px}}@keyframes chapterEnter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes confettiFall{0%{transform:translate3d(0,-40px,0) rotate(0);opacity:0}10%{opacity:.9}85%{opacity:.9}100%{transform:translate3d(var(--drift),110vh,0) rotate(var(--rotation));opacity:0}}@keyframes wishRise{0%{opacity:0;transform:translateY(20px) scale(.5)}30%{opacity:.6}100%{opacity:0;transform:translateY(-100px) scale(1.3)}}@keyframes equalizer{from{transform:scaleY(.4)}to{transform:scaleY(1)}}
@media(min-width:1450px){.site-shell{width:1160px}.site-header{height:120px}.occasion-label{margin-top:26px}.chapter{min-height:560px}.greeting{padding-left:66px}.greeting h1{font-size:79px}.chapter-nav{margin-top:22px}.site-footer{margin-top:33px}}
@media(max-width:1050px){.site-shell{width:calc(100% - 52px)}.greeting{padding:35px 20px 30px 38px;grid-template-columns:1.1fr 1fr}.greeting h1{font-size:clamp(46px,5.8vw,60px)}.greeting p{font-size:14px}.desktop-break{display:none}.heading-heart{font-size:38px;margin-left:9px}.birthday-seal{width:82px;height:82px;right:4px;top:15px}.birthday-seal>span:first-child{font-size:20px}.birthday-seal>span:nth-child(2){font-size:8px}.art-caption{font-size:18px;bottom:29px}.chapter-tab{font-size:12px;gap:7px;padding:12px 7px}.chapter-number{display:none}.wish-chapter{padding-right:35px}.notes-chapter{padding-left:30px;padding-right:30px}.love-notes{gap:18px}.note-back{padding:23px 20px}.letter-chapter{padding:35px 35px 25px;gap:28px}.letter-aside h2{font-size:40px}.letter-paper{padding:25px}}
@media(max-width:760px){.site-shell{width:calc(100% - 32px);max-width:570px}.site-header{height:79px}.wordmark{font-size:21px}.sound-button{font-size:12px;padding:9px 12px}.occasion-label{font-size:9px;letter-spacing:2px;margin:14px 0 19px}.birthday-book{border-radius:21px}.chapter{min-height:0}.greeting{display:flex;flex-direction:column;padding:33px 24px 23px;background:radial-gradient(ellipse at 50% 72%,#fff1f4 5%,#fff1f4 20%,#fffbfc 80%)}.greeting-copy{text-align:center;padding:0;width:100%}.greeting .eyebrow{justify-content:center;font-size:9px;letter-spacing:1.5px}.greeting h1{font-size:clamp(2.4rem,12.2vw,3.6rem);letter-spacing:-2px;margin:20px 0 16px}.heading-heart{font-size:34px;top:-3px;margin-left:10px}.greeting p{font-size:14px;line-height:1.75;max-width:310px;margin:0 auto 21px}.primary-button{font-size:13px;padding:14px 22px;min-height:49px}.button-note{font-size:15px;transform:rotate(-2deg);transform-origin:center;margin-top:12px}.greeting-art{height:280px;width:100%;margin-top:9px;align-self:center}.bunny-art{width:320px;max-width:100%;height:320px;object-fit:contain}.birthday-seal{width:70px;height:70px;top:15px;right:9px}.birthday-seal>span:first-child{font-size:17px}.birthday-seal>span:nth-child(2){font-size:7px}.birthday-seal b{font-size:8px}.art-caption{font-size:17px;bottom:0}.sparkle-one{left:12px;top:59px;font-size:30px}.sparkle-two{right:14px;bottom:48px;font-size:16px}.book-footer{height:45px;margin:0 19px;gap:8px;letter-spacing:1px}.book-footer>span:first-child{font-size:7px;max-width:150px;line-height:1.7;letter-spacing:.8px}.book-footer>span:last-child{font-size:9px}.page-dots{left:62%;gap:5px}.page-dots i{width:4px;height:4px}.page-dots i.active{width:12px}.chapter-nav{grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.chapter-tab{min-height:54px;font-size:12px;border-radius:11px;gap:9px;padding:12px 6px}.chapter-number{display:block;font-size:12px}.chapter-tab .icon{width:14px;height:14px}.site-footer{flex-direction:column;gap:9px;margin:23px 0;font-size:10px}.site-footer .icon{position:static;width:13px;height:13px;order:-1}.site-footer>span:last-child{display:none}.wish-chapter{display:flex;flex-direction:column-reverse;padding:37px 24px 25px;text-align:center;min-height:620px;background:radial-gradient(ellipse at 50% 77%,#fff1f4,#fffbfc 70%)}.wish-copy{padding:0;width:100%}.wish-copy .eyebrow{justify-content:center;font-size:9px}.wish-copy h2{font-size:44px}.wish-copy p{font-size:14px;line-height:1.75;margin-bottom:22px}.wish-copy p br{display:none}.wish-art{width:290px;max-width:100%;margin:10px auto -8px}.wish-copy .wish-confirmation{font-size:22px}.notes-chapter{padding:35px 22px 22px}.notes-chapter .eyebrow{font-size:9px;letter-spacing:1.3px}.notes-chapter h2{font-size:37px;margin-top:15px}.notes-instruction{font-size:13px;max-width:230px;margin:0 auto 23px;line-height:1.6}.love-notes{grid-template-columns:1fr;gap:18px;max-width:280px}.love-note{height:190px}.note-one{rotate:-2deg}.note-three{rotate:2deg}.note-front{padding:18px}.note-front .handwritten{font-size:27px}.note-icon{width:29px;height:29px;margin-bottom:7px}.note-back>span:nth-child(2){font-size:14px}.notes-chapter>.text-button{font-size:12px;margin-top:19px}.letter-chapter{display:flex;flex-direction:column;padding:33px 22px 21px;gap:19px}.letter-aside{padding:0;text-align:center;width:100%}.letter-aside .eyebrow{justify-content:center;font-size:8px;letter-spacing:1px}.letter-aside h2{font-size:39px;margin:16px 0}.letter-aside p{font-size:13px;margin-bottom:0}.letter-stamp{display:none}.letter-paper{padding:28px 24px 26px;width:100%;transform:rotate(.6deg);margin-top:10px}.letter-paper p{font-size:16px;line-height:1.75}.letter-signature{font-size:23px}.paper-date{font-size:7px;letter-spacing:.8px}.replay-button{font-size:12px;margin:0 auto -4px}.ambient-hearts span{opacity:.15}}
@media(max-width:370px){.site-shell{width:calc(100% - 22px)}.greeting{padding-left:15px;padding-right:15px}.greeting h1{font-size:clamp(2.35rem,12vw,2.75rem)}.greeting-art{height:257px}.bunny-art{width:280px;height:280px}.heading-heart{font-size:30px}.chapter-tab{font-size:11px;gap:6px}.birthday-seal{right:0}.letter-chapter{padding-left:16px;padding-right:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti-piece{display:none}.love-note{perspective:none}.love-note[aria-expanded=true] .note-front{visibility:hidden}.love-note[aria-expanded=false] .note-back{visibility:hidden}}

/* Legible everyday controls and copy at every screen size. */
.sound-button{flex-shrink:0}
.music-panel{display:grid;grid-template-columns:1fr minmax(0,480px);align-items:center;gap:30px;padding:24px;margin:0 0 26px;border:1px solid var(--line);border-radius:21px;background:var(--paper)}
.music-copy .eyebrow{margin:0 0 10px}
.music-copy .music-title{font-size:2.25rem;line-height:1.15;letter-spacing:-.7px;margin:0 0 8px;color:var(--pink-dark)}
.music-artist{margin:0 0 14px;font-size:.875rem;color:var(--muted)}
.music-help{max-width:360px;margin:0 0 12px;font-size:1rem;line-height:1.65;color:var(--ink)}
.music-link{display:inline-block;padding:10px 0;font-size:.875rem;color:var(--pink-dark);text-underline-offset:4px}
.music-close{display:block;font-size:.875rem;margin-top:2px;padding-left:0}
.music-video{min-width:0;min-height:200px;aspect-ratio:16/9;background:#24161d;border-radius:12px;overflow:hidden}
.music-video iframe{display:block;width:100%;height:100%;min-height:200px;border:0}
@media(max-width:760px){.music-panel{grid-template-columns:1fr;gap:18px;padding:16px;margin-bottom:20px}.music-help{max-width:none}.music-close{display:inline-block;margin:0 0 0 14px}.music-video{width:100%}.site-header{gap:12px}.sound-button{padding-left:11px;padding-right:11px}}
.greeting p,.wish-copy p,.letter-aside p{font-size:1rem}
.primary-button,.chapter-tab,.sound-button,.text-button{font-size:.875rem}
.notes-instruction,.note-back>span:nth-child(2){font-size:.875rem}
.eyebrow,.notes-chapter .eyebrow,.greeting .eyebrow,.wish-copy .eyebrow{font-size:.75rem;letter-spacing:1.4px}
.occasion-label,.site-footer{font-size:.75rem}
.note-hint{font-size:.75rem;letter-spacing:.4px}
.book-footer,.book-footer>span:last-child{font-size:.75rem;letter-spacing:.8px}
.paper-date{font-size:.75rem;letter-spacing:.5px;line-height:1.5}
.letter-aside .eyebrow{font-size:.75rem}
@media(max-width:760px){
  .greeting p{max-width:330px}
  .occasion-label{font-size:.75rem;letter-spacing:1.3px}
  .occasion-label span{width:18px}
  .chapter-tab{font-size:.875rem;gap:7px}
  .chapter-number{display:none}
  .book-footer>span:first-child{display:none}
  .book-footer{justify-content:flex-end}
  .page-dots{left:50%}
  .greeting .eyebrow,.notes-chapter .eyebrow,.wish-copy .eyebrow{font-size:.75rem;letter-spacing:1px}
  .notes-chapter>.text-button,.replay-button{font-size:.875rem}
  .letter-aside p{font-size:1rem}
  .letter-paper p{font-size:1rem}
}
@media(max-width:370px){.chapter-tab{font-size:.8125rem}.eyebrow{letter-spacing:.8px}.heading-heart{margin-left:5px}}

/* Kalpna's birthday story and its playful final conversation. */
.greeting-copy strong{font-weight:600;color:var(--pink-dark)}
.greeting-art .art-caption{white-space:normal;text-align:center;max-width:100%;line-height:1.4}
.travel-note{display:block;text-align:center;font-size:1.125rem;line-height:1.5;color:var(--pink-dark);padding:0 12px}
.wish-copy h2{font-size:clamp(2rem,3.5vw,3rem);line-height:1.15}
.wish-copy>p{margin-bottom:18px}
.love-note{height:230px}
.note-back .handwritten{font-size:1.4rem}
.story-ending{grid-column:1/-1;width:100%;text-align:center;padding:15px 0 20px}
.story-ending>.primary-button{white-space:normal;line-height:1.5}
.kalpna-reaction{max-width:530px;margin:28px auto 0;scroll-margin:24px}
.reaction-intro{font-size:1rem;color:var(--muted);margin:0 0 16px}
.reaction-bubble{margin:0 12px;padding:24px 22px;border:1px solid #e5b1c5;border-radius:22px 22px 6px 22px;background:#fbe4ec;box-shadow:0 8px 25px #a5436610;transform-origin:85% 100%}
.reaction-name{display:block;font-size:.75rem;line-height:1.5;letter-spacing:1px;font-weight:600;color:var(--pink-dark);margin-bottom:12px}
.reaction-bubble p{margin:0;font-family:var(--serif);font-style:italic;font-size:clamp(1.6rem,3.2vw,2.15rem);line-height:1.3;color:var(--ink)}
.reaction-reply{padding:20px 12px 0;color:var(--ink)}
.reaction-reply p{font-size:1rem;line-height:1.7;margin:0 0 9px}
.reaction-reply p:first-child{font-size:1.25rem;color:var(--pink-dark);font-weight:600}
.reaction-reply .handwritten{display:block;font-size:1.125rem;line-height:1.6;color:var(--pink-dark);margin-top:14px}
.is-revealed .reaction-intro{animation:reactionArrive .5s ease both}
.is-revealed .reaction-bubble{animation:kalpnaReaction .85s .65s cubic-bezier(.22,.8,.3,1) both}
.is-revealed .reaction-reply{animation:reactionArrive .65s 1.65s ease both}
@keyframes reactionArrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes kalpnaReaction{0%{opacity:0;transform:translateY(20px) scale(.85) rotate(4deg)}45%{opacity:1;transform:translateY(-4px) scale(1.02) rotate(-3deg)}65%{transform:translateY(0) scale(1) rotate(2deg)}82%{transform:rotate(-1deg)}100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@media(max-width:760px){.wish-copy h2{font-size:2.25rem}.travel-note{margin-top:18px;font-size:1rem}.love-note{height:224px}.notes-chapter h2{font-size:2.1rem}.story-ending{padding-top:7px}.reaction-bubble{margin:0;padding:22px 14px}.kalpna-reaction{margin-top:24px}.reaction-reply{padding-left:0;padding-right:0}.greeting-art .art-caption{font-size:1rem;bottom:-4px}.site-header{gap:8px}.wordmark{font-size:1.3rem}}

/* A full-page hug before the fourth chapter. */
.notes-instruction{font-size:1rem;line-height:1.6;max-width:560px;margin:0 auto 28px}
.love-note{height:290px}
.note-back>span:nth-child(2){font-size:1rem;line-height:1.65}
.note-hint{font-size:.875rem}
.note-back{padding:24px 20px}
.shower-open{overflow:hidden}
.heart-shower{position:fixed;inset:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:0;border:0;overflow-x:hidden;overflow-y:auto;color:var(--ink);background:radial-gradient(ellipse at 50% 52%,#ffe0ec 0%,#fff1f6 48%,#fff9fb 100%)}
.heart-shower::backdrop{background:#fff1f6}
.shower-content{position:relative;z-index:2;min-height:100%;width:min(100%,800px);padding:42px 24px 24px;margin:auto;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}
.shower-content>.eyebrow{justify-content:center;font-size:.75rem;margin:0 0 8px}
.shower-content h2{font-size:clamp(2.2rem,5vw,3.7rem);line-height:1.12;margin:10px 0 14px}
.shower-content>p:not(.eyebrow):not(.shower-caption){font-size:1rem;line-height:1.65;max-width:440px;margin:0 auto}
.avatar-hug{display:block;position:relative;flex-shrink:0;width:min(360px,80vw);border:0;background:transparent;padding:30px 0 0;margin:16px auto 0;border-radius:45%;-webkit-tap-highlight-color:transparent}
.avatar-hug img{width:100%;height:auto;display:block;pointer-events:none;filter:drop-shadow(0 15px 20px #c65f8620)}
.avatar-reaction{position:absolute;z-index:2;top:0;left:50%;translate:-50% 0;white-space:nowrap;max-width:95vw;border:1px solid #edb6ca;background:#fffafc;padding:12px 20px;border-radius:22px 22px 22px 4px;font-size:1rem;box-shadow:0 8px 20px #b6547710}
.avatar-hearts{position:absolute;bottom:2%;left:0;width:100%;font-size:2.5rem;letter-spacing:10px;color:var(--pink);text-shadow:0 3px 12px #fff}
.is-hugged img{animation:avatarCuddle 1.1s .6s ease-in-out 3}
.is-hugged .avatar-reaction{animation:reactionArrive .5s ease both}
.shower-caption{font-size:1.25rem;line-height:1.5;color:var(--pink-dark);margin:4px 0 18px}
.shower-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 24px}
.shower-actions .primary-button{white-space:normal;line-height:1.5}
.shower-back{font-size:.875rem;margin-top:12px}
.shower-rain{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:3}
.shower-heart{position:absolute;left:var(--start);top:-70px;line-height:1;color:var(--color);font-size:var(--size);opacity:0;animation:heartPour var(--duration) var(--delay) cubic-bezier(.36,.05,.66,1) both;filter:drop-shadow(0 2px 2px #bb4f7220)}
@keyframes heartPour{0%{opacity:0;transform:translate(0,-20px) rotate(0)}12%{opacity:.9}70%{opacity:.85}88%{opacity:.85;transform:translate(var(--landing),65vh) rotate(var(--turn)) scale(1)}100%{opacity:0;transform:translate(var(--landing),72vh) rotate(var(--turn)) scale(.45)}}
@keyframes avatarCuddle{0%,100%{transform:translateY(0) rotate(0) scale(1)}30%{transform:translateY(5px) rotate(-4deg) scale(.96)}65%{transform:translateY(-7px) rotate(4deg) scale(1.025)}}
@media(max-width:760px){.love-note{height:290px}.notes-instruction{max-width:280px}.notes-chapter h2{font-size:2.4rem;line-height:1.15}.shower-content{padding:28px 18px 20px}.avatar-hug{width:min(300px,78vw);margin-top:18px}.shower-content h2{letter-spacing:-1px}.shower-actions{flex-direction:column;gap:4px}.shower-caption{font-size:1.125rem}.avatar-reaction{padding:10px 15px}}
@media(prefers-reduced-motion:reduce){.shower-heart{opacity:.23;animation:none;transform:none}.is-hugged img{animation:none}}
