/* Garden of memories. Scoped to public story pages; app/admin retain their layout. */
.memory-book{--forest:#405542;max-width:1128px;margin:auto}.memory-book em,.garden-preview em{font-weight:400;color:var(--sage)}.book-cover{text-align:center}.garden-scene{height:270px;overflow:hidden;border-radius:180px 180px 4px 4px;position:relative;background:#d9dfce}.garden-scene img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 48%}.garden-scene:after{content:'';position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#faf6ef88)}.book-dedication{position:relative;padding:0 30px 42px}.portrait-frame{width:190px;height:228px;position:relative;margin:-135px auto 30px;padding:8px;background:var(--white);border:1px solid #e6dcc9;border-radius:100px 100px 4px 4px;box-shadow:0 18px 40px #34291e14;overflow:hidden}.book-portrait{display:block;width:100%;height:100%;border-radius:90px 90px 0 0;object-fit:contain;background:#eeeadd}.botanical-portrait{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f0f0e4;outline:8px solid var(--white);outline-offset:-9px}.botanical-portrait>span{font:100px/1.1 Georgia,serif;color:var(--sage)}.botanical-portrait small{font-size:.65rem;text-transform:uppercase;letter-spacing:.15em;margin-top:16px;color:var(--sage)}.book-dedication .eyebrow{margin-bottom:18px}.book-dedication h1{max-width:880px;margin:0 auto 24px;font-size:clamp(2.3rem,4.6vw,4.4rem);line-height:1.16}.book-epitaph{max-width:650px;margin:24px auto 0;font:italic clamp(1.1rem,2vw,1.5rem)/1.7 var(--serif);color:var(--muted);overflow-wrap:anywhere}.begin-story{display:inline-flex;align-items:center;gap:18px;margin-top:28px;padding:10px 8px;color:var(--sage);font-size:.85rem;text-decoration:none}.begin-story span{font-size:1.5rem}.book-nav{display:flex;justify-content:center;gap:54px;border-block:1px solid var(--line);padding:13px 16px;margin-bottom:8px}.book-nav a{text-decoration:none;color:var(--ink);font-size:.95rem;padding:10px 0;min-height:44px}.book-nav a:hover{color:var(--gold)}.book-section{scroll-margin-top:24px;padding:88px 32px}.book-story{display:grid;grid-template-columns:1fr 1.55fr;gap:64px}.chapter-intro h2{font-size:clamp(2rem,3.1vw,2.8rem);line-height:1.3;margin-bottom:24px}.chapter-intro p{font-size:.95rem;color:var(--muted)}.chapter-sprig{display:block;font:64px/1 Georgia,serif;color:var(--sage);margin:25px 0}.book-prose{font-size:1.13rem;line-height:1.95}.book-prose p{margin-bottom:1.5em}.book-prose p:first-child:first-letter{float:left;font:4.2rem/.86 var(--serif);padding:11px 10px 0 0;color:var(--sage)}.video-memory{display:flex;align-items:center;gap:20px;text-decoration:none;border-block:1px solid var(--line);padding:22px 0;margin-top:32px;color:var(--ink)}.video-memory strong{font:1.3rem var(--serif)}.video-memory small{display:block;margin-top:8px;line-height:1.5}.play-mark{display:grid;place-items:center;border:1px solid var(--sage);border-radius:50%;width:52px;height:52px;flex:0 0 52px;color:var(--sage);font-size:1.7rem}.book-album{background:#eeeede;border-radius:6px}.chapter-heading{text-align:center;max-width:700px;margin:0 auto 42px}.chapter-heading h2{font-size:clamp(1.9rem,3.4vw,3rem);line-height:1.3}.chapter-heading p{font-size:1rem;color:var(--muted)}.memory-gallery{columns:3;column-gap:24px}.memory-photo{margin:0 0 24px;padding:10px 10px 18px;background:var(--white);box-shadow:0 6px 18px #34291e0a;break-inside:avoid;display:inline-block;width:100%;vertical-align:top}.memory-photo>a{display:block;position:relative;overflow:hidden}.memory-photo img{display:block;width:100%;height:auto;min-height:1px;transition:transform .35s ease}.memory-photo a:hover img{transform:scale(1.025)}.memory-photo figcaption{font-size:.88rem;line-height:1.6;color:var(--muted);margin:14px 8px 0;overflow-wrap:anywhere}.photo-open{position:absolute;bottom:10px;right:10px;padding:5px 10px;border-radius:2px;background:#fffdf9ed;color:var(--ink);font-size:.7rem;opacity:0;transition:opacity .2s}.memory-photo a:hover .photo-open,.memory-photo a:focus-visible .photo-open{opacity:1}.memory-letters{display:grid;grid-template-columns:1fr 1fr;gap:24px}.memory-letter{padding:28px 30px;background:var(--white);border:1px solid var(--line);position:relative;min-width:0}.letter-quote{font:4rem/1 var(--serif);color:#aaba9d;display:block;height:46px}.memory-letter>p{font:1.12rem/1.8 var(--serif);margin-bottom:24px}.memory-letter footer{border-top:1px solid var(--line);padding-top:16px}.memory-letter h3{font:700 .9rem var(--sans);margin:0 0 4px;overflow-wrap:anywhere}.memory-letter small{font-size:.8rem}.demo-note{max-width:600px;text-align:center;color:var(--muted);font-size:.85rem;margin:30px auto 0}.memory-compose{max-width:680px;margin:40px auto 0;border:1px solid var(--line);background:var(--white)}.memory-compose summary{cursor:pointer;padding:22px 26px;font-family:var(--serif);font-size:1.3rem}.memory-compose summary span{float:right;color:var(--sage)}.memory-compose[open] summary span{transform:rotate(45deg)}.compose-inner{padding:0 26px 28px}.compose-inner>p{font-size:.95rem;color:var(--muted)}.book-ending{border-top:1px solid var(--line);padding:55px 24px 65px;text-align:center}.book-ending>span{font:50px Georgia,serif;color:var(--sage)}.book-ending>p{font:clamp(1.8rem,3vw,2.6rem)/1.4 var(--serif);margin:20px 0}.book-ending>a{font-size:.85rem}.chapter-empty{text-align:center;padding:30px 20px}.chapter-empty p,.empty-message{font-size:1rem;color:var(--muted)}.chapter-empty h3{font-size:1.5rem}.empty-message{text-align:center}.photo-viewer{border:1px solid var(--line);padding:0;width:min(1080px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);background:var(--white);color:var(--ink);border-radius:8px;overflow:auto;box-shadow:0 25px 100px #0005}.photo-viewer::backdrop{background:#202b26ed}.photo-viewer[open]{display:flex;flex-direction:column}.viewer-toolbar{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;gap:16px;flex-shrink:0}.viewer-count{font-size:.85rem;color:var(--muted)}.viewer-close,.viewer-controls button{background:transparent;border:1px solid var(--line);border-radius:5px;color:var(--ink);font-size:.95rem;min-height:44px;min-width:48px;padding:8px 14px}.viewer-close:hover,.viewer-controls button:hover{background:#eceede}.viewer-stage{min-height:0;display:flex;justify-content:center;background:#e7e7dc;flex:1}.viewer-stage img{display:block;object-fit:contain;max-height:calc(100dvh - 245px);max-width:100%;width:auto;height:auto;min-height:100px}.viewer-caption{font-size:.95rem;text-align:center;padding:12px 24px 0;margin:0;overflow-wrap:anywhere}.viewer-error{text-align:center;padding:10px 20px;color:#81372e}.viewer-controls{display:flex;align-items:center;justify-content:center;gap:25px;padding:12px 20px 18px;flex-shrink:0}.viewer-controls span{font-size:.8rem;color:var(--muted)}body.album-open{overflow:hidden}.garden-preview{position:relative;display:block;text-decoration:none;color:var(--ink);padding-bottom:26px;isolation:isolate}.garden-preview>img{display:block;width:100%;aspect-ratio:1.12;object-fit:cover;border-radius:220px 220px 6px 6px;box-shadow:0 20px 60px #40554214}.garden-preview-paper{position:relative;margin:-150px -12px 0;padding:32px 20px 30px;text-align:center;background:var(--white);border:1px solid var(--line);box-shadow:0 8px 30px #34291e12;transform:rotate(-3deg);transition:transform .3s}.garden-preview:hover .garden-preview-paper{transform:rotate(-1deg)}.garden-preview-paper .eyebrow{font-size:.62rem;letter-spacing:.13em;margin-bottom:14px}.garden-preview-paper h2{font-size:clamp(1.7rem,2.5vw,2.5rem);line-height:1.25;margin:0 0 20px}.preview-link{font-size:.88rem;color:var(--gold);border-bottom:1px solid var(--line);padding-bottom:4px}.garden-preview-note{display:block;font-size:.8rem;text-align:center;color:var(--muted);margin-top:22px}.memory-book+.home-cta{padding:45px 0 20px}.photo-viewer:not([open]){display:none}

@media(max-width:900px){.book-story{gap:36px;grid-template-columns:.9fr 1.4fr}.book-section{padding:60px 24px}.memory-gallery{columns:2;column-gap:18px}.memory-photo{margin-bottom:18px}.garden-scene{height:290px}.garden-preview-paper{margin:-105px -6px 0;padding:26px 18px}.hero{gap:45px}.memory-letter{padding:24px}.book-prose{font-size:1.06rem}}
@media(max-width:700px){.garden-scene{height:230px;border-radius:110px 110px 4px 4px}.portrait-frame{width:150px;height:185px;margin:-78px auto 30px}.botanical-portrait>span{font-size:76px}.botanical-portrait small{font-size:.55rem}.book-dedication{padding:0 8px 24px}.book-dedication h1{font-size:clamp(2rem,7.5vw,2.9rem);margin-bottom:18px}.book-dedication .eyebrow{font-size:.61rem;letter-spacing:.14em}.book-dedication .life-line{font-size:.78rem;gap:10px;letter-spacing:.06em}.book-dedication .life-line:before,.book-dedication .life-line:after{width:20px;flex-shrink:0}.book-epitaph{font-size:1.15rem}.begin-story{margin-top:16px}.book-nav{gap:26px;padding:8px 0}.book-nav a{font-size:.86rem}.book-story{display:block}.book-section{padding:44px 4px}.chapter-intro h2 br{display:none}.chapter-intro .chapter-sprig,.chapter-intro>p{display:none}.chapter-intro{margin-bottom:24px}.chapter-intro h2{font-size:2rem}.chapter-text{padding:0 4px}.book-prose{font-size:1.05rem;line-height:1.85}.book-prose p:first-child:first-letter{font-size:3.5rem}.book-album{padding:38px 14px}.chapter-heading{margin-bottom:28px}.chapter-heading h2{font-size:1.95rem}.chapter-heading p{font-size:.92rem}.chapter-heading .eyebrow{font-size:.62rem}.memory-gallery{columns:2;column-gap:12px}.memory-photo{padding:7px 7px 12px;margin-bottom:12px}.memory-photo figcaption{font-size:.76rem;margin:10px 3px 0}.photo-open{display:none}.memory-letters{grid-template-columns:1fr;gap:16px}.memory-letter>p{font-size:1.06rem}.memory-compose{margin-top:28px}.memory-compose summary{font-size:1.15rem;padding:18px}.compose-inner{padding:0 18px 22px}.book-ending{padding:40px 20px}.demo-banner{font-size:.78rem;padding:14px;line-height:1.6;margin-bottom:24px}.garden-preview{max-width:400px;width:100%;margin:auto;padding:10px 8px 0}.garden-preview>img{aspect-ratio:1.1}.garden-preview-paper{margin-top:-100px}.garden-preview-paper h2{font-size:2rem}.hero{gap:24px}.photo-viewer{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.viewer-toolbar{padding:8px 12px}.viewer-caption{font-size:.88rem;padding:10px 16px 0}.viewer-controls{padding:10px 12px 14px}.viewer-stage img{max-height:calc(100dvh - 235px)}}
@media(max-width:390px){.memory-gallery{columns:1}.memory-photo figcaption{font-size:.85rem}.book-nav{gap:20px}.garden-scene{height:200px}.book-dedication h1{font-size:2rem}}
@media(prefers-reduced-motion:reduce){.book-dedication{animation:none}.memory-photo img,.photo-open,.garden-preview-paper{transition:none}.memory-photo a:hover img{transform:none}}
@media print{.garden-scene{height:180px}.book-dedication{animation:none}.book-nav,.begin-story,.memory-compose,.book-ending>a,.photo-viewer{display:none!important}.book-section{padding:24px 0}.memory-gallery{columns:2}.book-story{display:block}.chapter-intro>p,.chapter-sprig{display:none}.memory-photo{break-inside:avoid;box-shadow:none}.memory-book{color:#222}}

.shell:has(>.memory-book),.shell:has(>.demo-banner){padding-top:28px}.demo-banner{margin-bottom:24px}

.memory-gallery:has(>.memory-photo:only-child){columns:1;max-width:640px;margin:auto}.memory-gallery:has(>.memory-photo:nth-child(2):last-child){columns:2}@media(max-width:390px){.memory-gallery:has(>.memory-photo:nth-child(2):last-child){columns:1}}

/* A definite stage size avoids Safari collapsing intrinsic SVG images inside a flex dialog. */
.photo-viewer .viewer-stage{display:grid;place-items:center;flex:0 0 auto;height:clamp(100px,55dvh,600px)}.photo-viewer .viewer-stage img{width:100%;height:100%;max-height:100%;min-height:0;object-fit:contain}
