:root{--desk-1: #241419;--desk-2: #3a2027;--paper: #f8f1e3;--paper-edge: #e8dcc4;--ink: #43324b;--ink-soft: #6b5570;--rose: #c47f8d;--rose-deep: #9d5b6b;--gold: #c9a24b;--leather: #5a2b35;--leather-dark: #3e1c24;--rule: #d9c9e0}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:EB Garamond,serif;background:radial-gradient(ellipse at 50% 30%,var(--desk-2) 0%,var(--desk-1) 70%);color:var(--paper);-webkit-user-select:none;user-select:none;position:relative}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse 60% 45% at 50% 38%,rgba(255,196,120,.14),transparent 70%)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.25;background:repeating-linear-gradient(92deg,rgba(0,0,0,.12) 0 2px,transparent 2px 90px)}.stage{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;perspective:2400px}.scaler{transform-origin:center center;position:relative;transition:transform .3s ease-out}.petal{position:fixed;top:-4vh;font-size:14px;color:var(--rose);opacity:0;pointer-events:none;z-index:3;animation:fall linear infinite}@keyframes fall{0%{transform:translateY(-5vh) rotate(0);opacity:0}8%{opacity:.55}90%{opacity:.4}to{transform:translateY(108vh) rotate(340deg);opacity:0}}.book{position:relative;width:920px;height:600px;transform-style:preserve-3d;transform:rotateX(8deg);transition:transform 1s cubic-bezier(.4,0,.2,1)}.book.closed{transform:rotateX(8deg) translate(-230px)}.book-shadow{position:absolute;left:4%;right:4%;bottom:-38px;height:60px;border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.55),transparent 70%);filter:blur(6px)}.base{position:absolute;right:0;top:0;width:50%;height:100%;background:var(--leather-dark);border-radius:6px 14px 14px 6px;box-shadow:inset 0 0 30px #00000080}.base:after{content:"";position:absolute;top:5px;right:8px;bottom:5px;left:0;border-radius:2px 8px 8px 2px;background:repeating-linear-gradient(180deg,var(--paper) 0 2px,var(--paper-edge) 2px 3px);opacity:.9}.base-left{position:absolute;left:0;top:0;width:50%;height:100%;background:var(--leather-dark);border-radius:14px 6px 6px 14px;box-shadow:inset 0 0 30px #00000080;opacity:0;transition:opacity .4s .5s}.book:not(.closed) .base-left{opacity:1}.base-left:after{content:"";position:absolute;top:5px;right:0;bottom:5px;left:8px;border-radius:8px 2px 2px 8px;background:repeating-linear-gradient(180deg,var(--paper) 0 2px,var(--paper-edge) 2px 3px);opacity:.9}.spine{position:absolute;left:calc(50% - 10px);top:-2px;bottom:-2px;width:20px;background:linear-gradient(90deg,var(--leather-dark),var(--leather) 50%,var(--leather-dark));border-radius:4px;z-index:0}.sheet{position:absolute;right:0;top:0;width:50%;height:100%;transform-style:preserve-3d;transform-origin:left center;transition:transform 1.1s cubic-bezier(.45,.05,.25,1);cursor:pointer}.sheet.flipped{transform:rotateY(-180deg)}.page{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;border-radius:2px 10px 10px 2px;background:linear-gradient(90deg,rgba(0,0,0,.1),transparent 7%),repeating-linear-gradient(180deg,transparent 0 31px,var(--rule) 31px 32px),var(--paper);color:var(--ink);padding:44px 42px 40px 52px;box-shadow:inset -2px 0 8px #0000000f}.page.back{transform:rotateY(180deg);border-radius:10px 2px 2px 10px;padding:44px 52px 40px 42px;background:linear-gradient(-90deg,rgba(0,0,0,.1),transparent 7%),repeating-linear-gradient(180deg,transparent 0 31px,var(--rule) 31px 32px),var(--paper)}.page:before{content:"";position:absolute;top:0;bottom:0;left:38px;width:1px;background:#c47f8d8c}.page.back:before{left:auto;right:38px}.cover{background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.07),transparent 55%),repeating-radial-gradient(circle at 50% 50%,rgba(0,0,0,.05) 0 3px,transparent 3px 7px),linear-gradient(135deg,var(--leather) 0%,#6d3541 45%,var(--leather-dark) 100%);color:var(--gold);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:40px;border:none}.cover:before{display:none}.cover .frame{position:absolute;top:16px;right:16px;bottom:16px;left:16px;border:1.5px solid rgba(201,162,75,.55);border-radius:8px;pointer-events:none}.cover .frame:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid rgba(201,162,75,.3);border-radius:5px}.cover-eyebrow{font-family:Caveat,cursive;font-size:19px;letter-spacing:.22em;text-transform:uppercase;color:#e6c98a;opacity:.85}.cover-title{font-family:Great Vibes,cursive;font-size:74px;line-height:1.1;text-shadow:0 2px 10px rgba(0,0,0,.45);color:#ecd39b;text-align:center}.cover-sub{font-family:EB Garamond,serif;font-style:italic;font-size:16px;color:#d8b97f;opacity:.85;text-align:center;max-width:280px;line-height:1.6}.cover-heart{font-size:22px;color:var(--rose);filter:drop-shadow(0 0 6px rgba(196,127,141,.7));animation:beat 1.8s ease-in-out infinite}@keyframes beat{0%,to{transform:scale(1)}12%{transform:scale(1.22)}24%{transform:scale(1)}}.cover-hint{position:absolute;bottom:26px;font-family:Caveat,cursive;font-size:18px;color:#e6c98a;opacity:.75;animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.35}50%{opacity:.9}}.back-cover{justify-content:center}.back-cover .cover-title{font-size:44px}.chapter{font-family:Caveat,cursive;font-weight:700;font-size:30px;color:var(--rose-deep);margin-bottom:4px}.date-line{font-family:Caveat,cursive;font-size:17px;color:var(--ink-soft);margin-bottom:14px}.body-text{font-size:16.5px;line-height:32px;color:var(--ink)}.body-text p{margin-bottom:0}.body-text em{color:var(--rose-deep)}.hand{font-family:Caveat,cursive;font-size:21px;line-height:32px;color:var(--ink)}.hand .big{font-size:26px;font-weight:600;color:var(--rose-deep)}.list-hand{font-family:Caveat,cursive;font-size:21px;line-height:32px;list-style:none}.list-hand li:before{content:"♥ ";color:var(--rose);font-size:14px;vertical-align:2px}.signature{font-family:Great Vibes,cursive;font-size:34px;color:var(--rose-deep);margin-top:10px}.page-num{position:absolute;bottom:14px;font-family:Caveat,cursive;font-size:15px;color:var(--ink-soft);opacity:.7}.page .page-num{right:22px}.page.back .page-num{left:22px}.tape{position:absolute;width:96px;height:26px;background:#c47f8d59;transform:rotate(-5deg);top:18px;left:calc(50% - 48px);box-shadow:0 1px 3px #0000001f}.tape.gold{background:#c9a24b52;transform:rotate(4deg)}.polaroid{background:#fff;padding:8px 8px 26px;box-shadow:0 4px 10px #0000002e;transform:rotate(-3deg);width:150px;margin:14px auto 4px;position:relative}.polaroid .photo{height:92px;display:flex;align-items:center;justify-content:center;font-size:38px;background:linear-gradient(135deg,#f3e0d6,#e9cfd8)}.polaroid .cap{font-family:Caveat,cursive;font-size:16px;text-align:center;color:var(--ink-soft);position:absolute;bottom:4px;left:0;right:0}.sheet .front:after,.sheet .back:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:#0000;transition:background 1.1s cubic-bezier(.45,.05,.25,1)}.sheet.flipping .front:after,.sheet.flipping .back:after{background:#0000001f}.mbook-wrap{display:none}.mbook{position:relative;width:min(92vw,420px);height:min(76dvh,640px);transform-style:preserve-3d;perspective:1800px}.mleaf{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transform-origin:left center;transition:transform .9s cubic-bezier(.45,.05,.25,1);backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:4px 12px 12px 4px;overflow:hidden;box-shadow:2px 4px 14px #00000059;cursor:pointer}.mleaf.flipped{transform:rotateY(-180deg)}.mleaf .mpage{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;-webkit-overflow-scrolling:touch;background:linear-gradient(90deg,rgba(0,0,0,.08),transparent 6%),repeating-linear-gradient(180deg,transparent 0 27px,var(--rule) 27px 28px),var(--paper);color:var(--ink);padding:30px 22px 34px 34px}.mleaf .mpage:before{content:"";position:absolute;top:0;bottom:0;left:24px;width:1px;background:#c47f8d80}.mleaf .mpage.cover{padding:30px;overflow:hidden}.mleaf .mpage.cover:before{display:none}.mleaf .mpage .chapter{font-size:25px}.mleaf .mpage .body-text{font-size:15px;line-height:28px}.mleaf .mpage .hand{font-size:19px;line-height:28px}.mleaf .mpage .hand .big{font-size:23px}.mleaf .mpage .list-hand{font-size:19px;line-height:28px}.mleaf .mpage .cover-title{font-size:52px}.mleaf .mpage .signature{font-size:30px}.mleaf .mpage .page-num{right:14px;left:auto;bottom:10px;position:absolute}.mleaf .mpage .tape{left:calc(50% - 48px)}.mleaf:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:#0000;transition:background .9s}.mleaf.flipping:after{background:#00000026}.mbook-shadow{position:absolute;left:6%;right:6%;bottom:-24px;height:34px;border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.5),transparent 70%);filter:blur(5px)}.controls{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;z-index:20}.nav-btn{width:46px;height:46px;border-radius:50%;border:1px solid rgba(236,211,155,.4);background:#3e1c24bf;color:#ecd39b;font-size:19px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.nav-btn:hover:not(:disabled){background:var(--leather);transform:scale(1.08)}.nav-btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.nav-btn:disabled{opacity:.3;cursor:default;transform:none}.progress{font-family:Caveat,cursive;font-size:18px;color:#e6c98a;min-width:90px;text-align:center;opacity:.85}.hint-top{position:fixed;top:max(16px,env(safe-area-inset-top));left:50%;transform:translate(-50%);font-family:Caveat,cursive;font-size:18px;color:#e6c98a;opacity:.7;z-index:20;text-align:center;width:90vw;transition:opacity .5s}@media (max-width:760px),(max-height:520px) and (max-width:920px){.scaler{display:none}.mbook-wrap{display:block;position:relative}}@media (prefers-reduced-motion:reduce){.sheet,.mleaf,.book{transition:none}.petal,.cover-heart,.cover-hint{animation:none}}
