@font-face{font-family:Cormorant;src:url('assets/cormorant.woff') format('woff');font-display:swap}@font-face{font-family:Allura;src:url('assets/cursive.woff') format('woff');font-display:swap}
:root{--ink:#40534d;--sage:#687a65;--gold:#a38a55;--paper:#fff9eb;--blue:#4d6e83}*{box-sizing:border-box}body{margin:0;color:var(--ink);font-family:Cormorant,Georgia,serif;background:#e9eadc}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #476b88;outline-offset:6px}button:disabled{cursor:default;opacity:.35}[hidden]{display:none!important}.garden{position:fixed;inset:0;background:linear-gradient(#f9f5e655,#f9f5e622),url('assets/garden.webp') center/cover no-repeat;z-index:-2}.light{position:fixed;inset:0;background:radial-gradient(ellipse at 50% 40%,#fff9df99,transparent 70%);pointer-events:none;z-index:-1}header{min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:20px 4vw;gap:10px}#masthead{font-size:19px;font-style:italic;letter-spacing:.5px}#sound{margin-left:auto;display:flex;align-items:center;gap:9px;border:1px solid #a08d5f66;background:#fffaf0e8;border-radius:40px;padding:11px 16px;font:12px/1.4 system-ui,sans-serif;min-height:44px}#sound svg{width:17px;fill:none;stroke:currentColor;stroke-width:1.4}main{min-height:calc(100svh - 130px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 34px 0}.book-wrap{width:min(1100px,100%);perspective:1800px;position:relative;display:grid;place-items:center}.cover{width:360px;max-width:88vw;height:510px;padding:18px;border:1px solid #9c936b;border-radius:5px 15px 15px 5px;background:linear-gradient(95deg,#737f6d 0,#acb7a1 5%,#aab69d 9%,#bfc8b0 60%,#aeba9d);box-shadow:inset 9px 0 7px #35472f30,9px 7px 0 #f6edcf,12px 10px 0 #9b9d84,18px 26px 50px #33482a55;transform:rotate(-3deg);transform-origin:left center;transition:transform 1.2s cubic-bezier(.25,.5,.3,1),opacity .8s;position:relative;z-index:3}.cover:hover{transform:rotate(-1deg) translateY(-4px)}.cover.opening{transform:rotateY(-105deg) rotate(-3deg);opacity:0;pointer-events:none}.cover-border{height:100%;border:1px solid #e8dbad;border-radius:2px 8px 8px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 15px;outline:1px solid #e8dbad66;outline-offset:-6px}.cover-oval{width:205px;height:270px;border-radius:48%;overflow:hidden;border:4px double #b89a5e;box-shadow:0 0 0 7px #f4e9c644}.cover-oval img{width:100%;height:100%;object-fit:cover;object-position:50%}.cover-ornament{font-size:38px;color:#f6e8b8;margin:8px}.cover-prompt{font-size:17px;letter-spacing:1px;color:#263d32}.cover-prompt span{margin-left:12px}.spread{position:relative;display:grid;grid-template-columns:1fr 1fr;width:100%;min-height:600px;border-radius:5px 14px 14px 5px;box-shadow:0 3px 0 #e5d8b9,0 6px 0 #fff9e8,0 9px 0 #ccbfa0,0 12px 0 #faf0d7,0 14px 0 #8b927e,0 30px 70px #34422c55;background:var(--paper);isolation:isolate}.illustrated-page{position:relative;overflow:hidden;min-height:600px;border-radius:6px 0 0 6px;background:#f9f2dd}.art-window{position:absolute;inset:0;background:url('assets/garden.webp') 49% center/cover}.art-window:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 45%,#fff6deaa 100%)}.art-caption{position:absolute;bottom:45px;left:24px;right:24px;text-align:center;text-shadow:0 1px 10px #fffae7;background:radial-gradient(ellipse,#fff7e7dd,transparent 72%);padding:25px 0}.chapter-mark{display:block;font:10px system-ui,sans-serif;letter-spacing:3px}.art-title{font:64px/1.4 Allura,cursive;display:block;color:#4b6250}.art-note{font-size:18px;font-style:italic}.paper-page{position:relative;padding:54px 52px 25px;background:radial-gradient(ellipse at 80% 20%,#fffdf4,transparent),repeating-linear-gradient(20deg,#9d784c03 0px,#9d784c03 1px,transparent 1px,transparent 4px),#fff9eb;border-radius:0 12px 12px 0;display:flex;flex-direction:column}.paper-page:before{content:'';position:absolute;inset:17px;border:1px solid #b5a37433;pointer-events:none;border-radius:1px 4px 4px 1px}.binding{position:absolute;left:50%;top:0;bottom:0;width:40px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#695e3e23 40%,#5c54302b 50%,#fffdf52c 60%,transparent);pointer-events:none}#page{flex:1;text-align:center;outline:none;position:relative;z-index:1}h1,h2{font-weight:500;margin:12px 0 20px;line-height:1.08}h1{font-size:44px}h2{font-size:34px}.eyebrow{font:10px/1.6 system-ui,sans-serif;letter-spacing:2.6px;color:#73643e;text-transform:uppercase;margin:8px 0 22px}.ornament{font-size:34px;color:#9c945e;line-height:1.2;margin:10px 0 20px}blockquote{margin:12px auto 20px;font-size:27px;line-height:1.5;font-weight:500}cite{display:block;font-style:normal;font-size:14px;line-height:1.6;color:#6e6b52}cite small{display:block;font:10px/1.8 system-ui,sans-serif;letter-spacing:1px;margin-top:8px}.body-copy{font-size:21px;line-height:1.55;margin:18px 0}.script{font:56px/1.1 Allura,cursive;color:var(--blue)}.letter-heading{font-family:Allura,cursive;font-size:47px;color:#58705f}.letter{text-align:left;font-size:20px;line-height:1.45}.letter p{margin:0 0 15px}.letter .salutation{font:30px Allura,cursive;margin-bottom:18px}.signature{font:38px/1.1 Allura,cursive;margin-top:14px}.sign-note{font-size:17px;margin-bottom:2px}.page-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;z-index:1;margin-top:25px;min-height:44px}#pageCount{font-size:12px;letter-spacing:1px;color:#7e7355;white-space:nowrap}.text-btn{border:0;background:none;font-size:15px;min-height:44px;padding:8px 3px}.next-btn,.reveal-btn{border:1px solid #89977c;background:#e5eadc;min-height:44px;border-radius:2px;padding:12px 16px;font-size:17px}.next-btn span{margin-left:12px}.reveal-btn{margin-top:12px;background:#e3edf2;border-color:#9eb6c3}.next-btn:hover,.reveal-btn:hover{background:#d6e2ce}.under-note{font-size:17px;font-style:italic;margin:30px 0 16px;text-shadow:0 1px 4px #fff}.turn-leaf{position:absolute;inset:0 0 0 50%;transform-origin:left;background:linear-gradient(90deg,#d9cdb6,#fff8e9 15%,#fffaf0);z-index:6;pointer-events:none;opacity:0;border-radius:0 12px 12px 0}.turning .turn-leaf{animation:page-turn .85s ease-in-out}.page-enter{animation:ink-in .65s ease both}footer{text-align:center;padding:0 20px 14px}footer button{font-size:12px!important;color:#435245;background:#fff8e4b0!important;border-radius:20px!important;padding:4px 14px!important;min-height:35px!important}dialog{border:1px solid #a6ac93;border-radius:8px;background:#fffbef;color:var(--ink);max-width:520px;width:calc(100% - 35px);padding:32px;font:17px/1.5 Georgia,serif}dialog::backdrop{background:#263e3580;backdrop-filter:blur(4px)}dialog a{color:#375c73}.close{float:right;border:0;background:none;font-size:28px;width:44px;height:44px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.noscript{background:var(--paper);padding:20px;text-align:center}
.gift-stage{position:absolute;width:280px;height:300px;left:50%;top:39%;transform:translate(-50%,-50%);filter:drop-shadow(0 16px 12px #53643d30);z-index:2}.gift-base,.gift-lid{position:absolute;inset:0;background:url('assets/gift.webp') center/contain no-repeat;transition:transform 1.7s ease,opacity 1.5s}.gift-base{clip-path:inset(49% 0 0)}.gift-lid{clip-path:inset(0 0 51%)}.revealing .gift-lid{transform:translateY(-75px) rotate(-13deg);opacity:0;transition-delay:.45s}.revealing .gift-base{transform:translateY(25px) scale(.97);opacity:.45;transition-delay:.7s}.ribbon-tail{position:absolute;top:31%;left:49%;height:90px;width:17px;background:linear-gradient(90deg,#779dbb,#d1e4f4,#90b3ce);transform-origin:top;opacity:0}.revealing .ribbon-tail{animation:untie 1.3s ease both}.revealing .ribbon-tail.right{animation-name:untie-right}.butterfly{position:absolute;width:30px;height:25px;z-index:3;pointer-events:none;animation:drift 10s ease-in-out infinite alternate}.butterfly.one{top:20%;left:12%}.butterfly.two{top:37%;right:8%;animation-delay:-4s;transform:scale(.7)}.butterfly i{position:absolute;left:50%;width:16px;height:22px;border-radius:80% 20% 60% 40%;background:radial-gradient(ellipse at bottom right,#f6db94,#c8a569);border:1px solid #927d4d66;transform-origin:left;animation:flutter 1.6s ease-in-out infinite alternate}.butterfly i+i{transform:rotateY(180deg);animation-name:flutter-right;background:radial-gradient(ellipse at bottom right,#d9dff0,#9eacc7)}.final .art-caption{bottom:160px}.final .art-title{font-size:75px}.final .art-window{filter:saturate(.85)}.reveal-success{animation:ink-in 1.3s ease both}.reveal-title{font:76px/1.2 Allura,cursive;color:#4e7694;margin:24px 0 10px}.revealing .butterfly{animation:joy-flight 3s ease forwards}.reflection{font-size:16px;font-style:italic;color:#7b7b66;margin-top:22px}@keyframes ink-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes page-turn{0%{opacity:0;transform:rotateY(0)}15%{opacity:1}80%{opacity:.9}100%{opacity:0;transform:rotateY(-165deg)}}@keyframes drift{to{translate:25px -20px;rotate:12deg}}@keyframes flutter{to{transform:rotateY(65deg)}}@keyframes flutter-right{to{transform:rotateY(115deg)}}@keyframes untie{0%{opacity:1;transform:rotate(0)}80%{opacity:1;transform:rotate(90deg) translateY(60px)}100%{opacity:0;transform:rotate(110deg) translateY(90px)}}@keyframes untie-right{0%{opacity:1;transform:rotate(0)}80%{opacity:1;transform:rotate(-90deg) translateY(60px)}100%{opacity:0;transform:rotate(-110deg) translateY(90px)}}@keyframes joy-flight{to{translate:70px -100px;opacity:0}}
@media(min-width:1000px) and (min-height:850px){.spread,.illustrated-page{min-height:660px}.paper-page{padding-top:65px}blockquote{margin-top:30px}}
@media(max-width:760px){header{min-height:64px;padding:12px 18px}#masthead{font-size:15px;max-width:180px}main{padding:6px 17px 0;min-height:calc(100svh - 115px);justify-content:flex-start}.book-wrap{max-width:520px}.cover{margin-top:30px;width:310px;height:450px}.cover-oval{height:240px;width:185px}.spread{display:flex;flex-direction:column;min-height:0}.illustrated-page{min-height:185px;height:185px;border-radius:6px 6px 0 0}.art-window{background-position:50% 72%;background-size:cover}.art-caption{bottom:5px;padding:0;left:60px;right:60px}.art-title{font-size:45px}.chapter-mark{font-size:8px;letter-spacing:2px}.art-note{display:none}.paper-page{padding:30px 29px 20px;min-height:425px;border-radius:0 0 9px 9px}.binding{left:0;top:185px;right:0;bottom:auto;width:100%;height:15px;transform:none;background:linear-gradient(#6d624329,transparent)}.paper-page:before{inset:12px}blockquote{font-size:24px;line-height:1.43;margin:4px auto 17px}.eyebrow{font-size:9px;margin:4px 0 16px}.ornament{font-size:28px;margin:2px 0 12px}h1{font-size:35px}cite{font-size:13px}.page-nav{margin-top:22px}.body-copy{font-size:20px;margin:12px 0}.letter{font-size:19px;line-height:1.48}.letter-heading{font-size:40px}.letter p{margin-bottom:14px}.letter-page .illustrated-page{height:115px;min-height:115px}.letter-page .binding{top:115px}.letter-page .art-caption{display:none}.letter-page .paper-page{padding-top:30px}.under-note{font-size:15px;margin:24px 0 10px}.gift-stage{height:175px;width:180px;top:50%}.surprise .art-caption{display:none}.surprise .illustrated-page{height:230px;min-height:230px}.surprise .binding{top:230px}.surprise .paper-page{min-height:360px}.turn-leaf{inset:185px 0 0;transform-origin:left}.final .art-caption{bottom:25px}.final .art-title{font-size:55px}.reveal-title{font-size:69px;margin-top:12px}.signature{font-size:36px}.cover-prompt{font-size:16px}.reflection{margin-top:15px;font-size:15px}}
@media(max-width:360px){main{padding-inline:10px}.paper-page{padding-inline:23px}#masthead{font-size:13px}.next-btn{font-size:15px;padding-inline:12px}blockquote{font-size:22px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.turn-leaf{display:none}.cover.opening{display:none}.revealing .gift-lid{opacity:0}.revealing .ribbon-tail{display:none}}

.gift-stage{border:0;padding:0;background:transparent;display:block}.gift-stage:disabled{opacity:1}.art-window,.art-caption,.butterfly{pointer-events:none}

.final .art-window{background-image:url('assets/floral.webp');background-position:center;background-size:cover;filter:none}.final .art-window:after{background:none}.final .art-caption{top:44%;bottom:auto;transform:translateY(-50%);background:none}.final .art-title{font-size:70px}.final .butterfly{display:none}@media(max-width:760px){.final .art-window{background-size:cover;background-position:center 38%}.final .art-caption{top:50%;bottom:auto}.final .art-title{font-size:54px}}

/* Text contrast pass: retain all artwork, backgrounds, layout and motion. */
:root{--ink:#293e34;--blue:#304f65}
body{font-weight:500}
#masthead,.under-note{color:#293e34;background:#fff9ebf5;box-shadow:0 0 0 4px #fff9ebf5;border-radius:2px;text-shadow:none}
.cover-prompt{color:#20382c;font-weight:600}
.art-caption{color:#293e34;text-shadow:-1px -1px 0 #fff9eb,1px -1px 0 #fff9eb,-1px 1px 0 #fff9eb,1px 1px 0 #fff9eb,0 0 7px #fff9eb}
.art-title,.letter-heading{color:#344e3c;font-weight:600}
.chapter-mark,.art-note{color:#293e34;background:#fff9ebf5;box-shadow:0 0 0 3px #fff9ebf5;border-radius:2px;text-shadow:none}
.chapter-mark{width:max-content;max-width:100%;margin-inline:auto}
.art-note{font-weight:600}
.eyebrow,cite,#pageCount,.reflection{color:#514b34}
.eyebrow,cite small{font-weight:600}
.reveal-title{color:#345b78;font-weight:600}
#sound{color:#293e34;background:#fffaf0}
.next-btn,.reveal-btn,.text-btn{font-weight:600}
.next-btn:disabled,.text-btn:disabled{opacity:1;color:#59654f}
footer button{color:#293e34;background:#fff8e4!important}
dialog{color:#293e34}
