/* A manuscript becomes a physical hardcover, using native scroll as its timeline. */
.print-journey{--book-paper:#f5f2e8;--book-ink:#55594a;--book-serif:'AppleMyungjo','Batang','Noto Serif KR',serif;padding:0;background:#eeeae1;position:relative;isolation:isolate;overflow:clip;scroll-margin-top:-100px}
.print-stage{max-width:1380px;margin:auto;min-height:100svh;padding:110px 65px 50px;display:grid;grid-template-columns:1.1fr 1fr;gap:100px;align-items:center}
.keepsake-visual{--book-w:min(300px,23vw,calc((100svh - 210px)/1.53));--book-h:calc(var(--book-w)*1.53);position:relative;height:min(680px,calc(100svh - 180px));min-height:380px;margin:0;perspective:1400px;isolation:isolate}
.book-ground{position:absolute;width:83%;height:13%;left:16%;top:82%;border-radius:50%;background:#4e443d;opacity:var(--ground-opacity,.12);filter:blur(28px);transform:rotate(-9deg)}
.manuscript-sheets{position:absolute;inset:0;z-index:2;pointer-events:none}
.manuscript-sheet{position:absolute;left:50%;top:48%;width:var(--book-w);height:var(--book-h);padding:30px 30px 27px;color:#6b695d;background:linear-gradient(105deg,#e9e5d8 0%,#fffdf5 5%,#f8f5eb 98%);border:1px solid #dcd7c9;box-shadow:2px 3px 3px #55504412,10px 17px 22px -12px #403b3335;font-family:var(--book-serif);transform:translate(-50%,-50%) translate(var(--sheet-x,0px),var(--sheet-y,0px)) rotate(var(--sheet-r,0deg));opacity:var(--sheet-opacity,1);z-index:calc(var(--sheet) + 1)}
.manuscript-kicker{display:block;font-family:var(--sans);font-size:9px;font-weight:400;letter-spacing:.11em;color:#9b9486;border-bottom:1px solid #e0dacb;padding-bottom:17px}
.manuscript-sheet h3{font-family:inherit;font-size:23px;line-height:1.6;font-weight:400;letter-spacing:-.04em;margin:26px 0 20px;color:#53574c;word-break:keep-all}
.manuscript-sheet p{font-size:13px;line-height:2;word-break:keep-all;color:#8b8578}
.manuscript-sheet p+p{margin-top:14px}
.manuscript-rules{height:72px;margin-top:22px;background:repeating-linear-gradient(transparent 0 20px,#d7d2c651 20px 21px);mask-image:linear-gradient(#000,transparent)}
.manuscript-number{position:absolute;bottom:23px;right:30px;font-family:Georgia,serif;font-size:10px;color:#9c9688}
.keepsake-book{position:absolute;left:50%;top:48%;width:var(--book-w);height:var(--book-h);transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(8deg) rotateY(-24deg) rotateZ(-7deg);z-index:6;color:var(--book-ink)}
.keepsake-cover,.book-back{position:absolute;inset:0;background:var(--book-paper);border:1px solid #d1cdbf;border-radius:2px 5px 5px 2px;backface-visibility:hidden}
.keepsake-cover{transform:translateZ(19px);overflow:hidden;background:linear-gradient(90deg,#c6c4b7 0,#eeece1 2.2%,#faf8ee 4%,#e2dfd2 5%,#f9f7ee 7.2%,#f7f5ec 82%,#eeeadd 100%);box-shadow:inset 1px 0 1px #ffffffe0,inset -1px 0 2px #716e6140,1px 1px 2px #635e4c24}
.keepsake-cover::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.19;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}
.book-back{transform:translateZ(-19px);box-shadow:10px 18px 30px #554d3b36;background:#dcd9ca}
.book-spine{position:absolute;left:-19px;top:0;width:38px;height:100%;transform:rotateY(-90deg);background:linear-gradient(90deg,#cbc8b9,#e8e5d8 30%,#e9e7dc 70%,#c5c2b3);border:1px solid #bdbbab;border-radius:3px;color:#676858;display:flex;align-items:center;flex-direction:column;justify-content:space-between;padding:35px 0 25px;box-shadow:inset 2px 0 3px #fff8,inset -2px 0 3px #0001}
.book-spine>span{writing-mode:vertical-rl;font-family:var(--book-serif);font-size:12px;letter-spacing:.1em;white-space:nowrap}
.book-spine>small{font-family:var(--book-serif);writing-mode:vertical-rl;font-size:8px;letter-spacing:.12em}
.book-pages-edge{position:absolute;right:-15px;top:4px;width:30px;height:calc(100% - 8px);transform:rotateY(90deg);border:1px solid #d2cbb9;background:repeating-linear-gradient(90deg,#e5ddca 0px,#fffbee .8px,#d2cab8 1px,#f9f4e8 2px);box-shadow:inset 0 0 7px #8c806432}
.book-pages-top,.book-pages-bottom{position:absolute;left:4px;width:calc(100% - 8px);height:30px;transform:rotateX(90deg);background:repeating-linear-gradient(#e8e2d4 0px,#fcf9ef .8px,#cfc7b6 1px,#f7f4e9 2px);border:1px solid #d4cebf}
.book-pages-top{top:-11px}.book-pages-bottom{bottom:-11px}
.cover-category{position:absolute;right:11%;top:7%;font-family:var(--book-serif);font-size:9px;color:#8b8b7d;letter-spacing:.06em}
.cover-title{position:absolute;left:16%;top:17%;display:flex;gap:9px;flex-direction:row-reverse;font-family:var(--book-serif);font-size:clamp(19px,2vw,26px);font-weight:400;letter-spacing:.09em;line-height:1.3}
.cover-title>span{writing-mode:vertical-rl;text-orientation:upright;white-space:nowrap}
.cover-title>span:nth-child(1){margin-top:0}.cover-title>span:nth-child(2){margin-top:5px}.cover-title>span:nth-child(3){margin-top:10px}
.cover-subtitle{position:absolute;right:13%;top:21%;writing-mode:vertical-rl;font-family:var(--book-serif);font-size:8px;letter-spacing:.09em;color:#969787}
.cover-landscape{position:absolute;left:12%;width:78%;height:auto;bottom:12%;color:#7a7e68}
.cover-publisher{position:absolute;right:11%;bottom:5.5%;font-family:var(--book-serif);font-size:9px;letter-spacing:.15em;color:#8e8e7e}
.keepsake-visual>figcaption{position:absolute;bottom:-3px;left:0;right:0;text-align:center;font-size:10px;line-height:1.6;color:#969183}
.keepsake-copy{position:relative;min-height:320px;z-index:7;min-width:0}
.keepsake-message h2{font-size:clamp(36px,3.65vw,54px);line-height:1.38;font-weight:550;letter-spacing:-.065em;color:#394438;word-break:keep-all;margin-top:23px}
.keepsake-message .eyebrow{font-size:12px;font-weight:400;letter-spacing:.025em;color:#8b8e7d}
.keepsake-message .body-copy{font-size:15px;line-height:1.9;color:#929080;margin-top:27px}
.keepsake-message .fine-print{font-size:11px;line-height:1.9;color:#9a9688;margin-top:23px}
.print-journey.is-enhanced{height:calc(100svh + 130svh * var(--print-distance,1))}
.print-journey.is-enhanced .print-stage{position:sticky;top:0;height:100svh;min-height:0}
.print-journey.is-enhanced .keepsake-message{position:absolute;inset:0 auto auto 0;width:100%}
.print-journey.is-enhanced .manuscript-message{opacity:var(--manuscript-copy,1);transform:translateY(calc((1 - var(--manuscript-copy,1))*-14px))}
.print-journey.is-enhanced .bound-message{opacity:var(--bound-copy,0);transform:translateY(calc((1 - var(--bound-copy,0))*14px))}
.print-journey.is-enhanced .keepsake-book{opacity:var(--cover-opacity,0);transform:translate(-50%,-50%) rotateX(calc(8deg + (1 - var(--cover-progress,0))*12deg)) rotateY(calc(-24deg - (1 - var(--cover-progress,0))*32deg)) rotateZ(-7deg) translateZ(calc((1 - var(--cover-progress,0))*100px))}
.print-journey.is-enhanced .keepsake-visual>figcaption{opacity:var(--bound-copy,0)}
.print-journey:not(.is-enhanced) .manuscript-sheets{display:none}
.print-journey:not(.is-enhanced) .bound-message{margin-top:45px}
@media(max-width:1100px){.print-stage{padding-inline:42px;gap:70px}.keepsake-message h2{font-size:39px}.keepsake-visual{--book-w:min(270px,26vw,calc((100svh - 200px)/1.53))}.cover-title{font-size:23px}.manuscript-sheet{padding:23px}.manuscript-sheet h3{font-size:21px}.manuscript-sheet p{font-size:12px}}
@media(max-width:850px) and (min-width:701px){.print-stage{gap:36px;padding-inline:32px}.keepsake-message h2{font-size:32px}.keepsake-message .body-copy{font-size:13px}.keepsake-visual{--book-w:220px}.cover-title{font-size:19px;gap:7px}.manuscript-sheet p{font-size:11px}.manuscript-sheet h3{font-size:18px}}
@media(max-width:700px){
 .print-journey{scroll-margin-top:-86px}.print-stage{padding:102px 24px 24px;grid-template-columns:1fr;gap:20px;align-content:center}.keepsake-copy{grid-row:1;min-height:215px;text-align:center}.keepsake-message .eyebrow{justify-content:center;font-size:10px}.keepsake-message h2{font-size:34px;line-height:1.3;margin-top:14px}.keepsake-message .body-copy{font-size:12px;line-height:1.8;margin-top:15px}.keepsake-message .fine-print{font-size:9px;line-height:1.7;margin-top:14px}
 .keepsake-visual{grid-row:2;height:390px;min-height:0;--book-w:215px}.cover-title{font-size:19px;gap:6px}.manuscript-sheet{padding:23px}.manuscript-sheet h3{font-size:18px;margin:21px 0 14px}.manuscript-sheet p{font-size:11px;line-height:1.95}.manuscript-kicker{font-size:7px}.manuscript-rules{height:50px;margin-top:12px}.keepsake-visual>figcaption{font-size:8px;bottom:0}.book-ground{width:70%;left:22%}
 .cover-category,.cover-publisher{font-size:7px}.cover-subtitle{font-size:6px}.book-spine>span{font-size:10px}.book-spine>small{font-size:7px}
}
@media(max-width:700px) and (max-height:740px){
 .print-stage{padding:88px 20px 14px;gap:10px}.keepsake-copy{min-height:180px}.keepsake-message h2{font-size:28px;margin-top:10px}.keepsake-message .eyebrow{font-size:9px}.keepsake-message .body-copy{font-size:11px;margin-top:12px}.keepsake-message .fine-print{font-size:8px;margin-top:9px}
 .keepsake-visual{height:calc(100svh - 304px);--book-w:min(190px,calc((100svh - 345px)/1.53))}.cover-title{font-size:calc(var(--book-w)*.088);gap:5px}.manuscript-sheet{padding:15px}.manuscript-sheet h3{font-size:15px;margin:13px 0 10px}.manuscript-sheet p{font-size:8px;line-height:1.8}.manuscript-kicker{font-size:6px;padding-bottom:10px}.manuscript-rules{height:34px;margin-top:9px}.manuscript-number{font-size:7px;bottom:14px;right:16px}.cover-category,.cover-publisher{font-size:6px}.cover-subtitle{font-size:5px}.book-spine>span{font-size:7px}
}
@media(max-height:500px) and (min-width:701px){.print-stage{padding:85px 42px 20px;gap:50px}.keepsake-visual{height:calc(100svh - 115px);min-height:0;--book-w:150px}.keepsake-copy{min-height:245px}.keepsake-message h2{font-size:28px;margin-top:12px}.keepsake-message .body-copy{font-size:12px;margin-top:16px}.keepsake-message .fine-print{font-size:9px;margin-top:13px}.cover-title{font-size:14px;gap:5px}.cover-category,.cover-publisher{font-size:6px}.cover-subtitle{font-size:5px}.manuscript-sheet{padding:15px}.manuscript-sheet h3{font-size:14px;margin:15px 0 12px}.manuscript-sheet p{font-size:8px}.manuscript-kicker{font-size:6px;padding-bottom:10px}.manuscript-rules{height:30px}.manuscript-number{font-size:7px;bottom:15px;right:16px}.book-spine>span{font-size:8px}.keepsake-visual>figcaption{font-size:8px}}
@media(prefers-reduced-motion:reduce){.print-journey *{animation:none!important;transition:none!important}}

/* The outgoing digital page remains in viewport space across the section seam. */
.memory-journey.is-handoff{z-index:9;background:#f7f5ef}
.page-handoff{position:fixed;inset:0;z-index:12;pointer-events:none;perspective:1400px}
.memory-journey .page-handoff .travelling-book-page{position:absolute;margin:0;transform-origin:center;backface-visibility:hidden;will-change:transform;box-sizing:border-box;overflow:hidden;box-shadow:2px 3px 0 #e3decf,6px 6px 0 #f0ece2,0 24px 45px -20px #554b3338}
.page-handoff .added-story{opacity:1!important;filter:none!important;transform:none!important;animation:none!important}
/* The new recollection becomes ordinary manuscript text while the page travels. */
.page-handoff .added-story::before,.page-handoff .added-story>span{opacity:calc(1 - var(--handoff-progress,0))}
.page-handoff .added-story>p{color:#5f6458}
.travelling-cover{position:absolute;z-index:2;transform:translate(-50%,-50%) perspective(1400px) rotateX(calc(5deg * (1 - var(--cover-progress,0)))) rotateY(calc(-12deg * (1 - var(--cover-progress,0)))) rotateZ(calc(-5deg + 22deg * var(--cover-progress,0)));transform-style:preserve-3d;color:#55594a;--book-paper:#f5f2e8;--book-serif:'AppleMyungjo','Batang','Noto Serif KR',serif}
.travelling-cover .keepsake-cover{transform-origin:left center;transform:translateZ(19px) rotateY(calc(-145deg * (1 - var(--cover-progress,0))));box-shadow:inset 1px 0 2px #fff,4px 7px 18px #5f583b28}
.travelling-cover .cover-category,.travelling-cover .cover-subtitle{display:none}
.travelling-cover .cover-title{left:30%;top:18%}
.travelling-cover .cover-publisher{left:0;right:0;text-align:center}
.page-dock{position:absolute;left:50%;top:48%;width:var(--book-w);height:var(--book-h);transform:translate(-50%,-50%);visibility:hidden;pointer-events:none}
.print-journey{background:#f7f5ef;border:0}
.memory-journey.is-handoff .digital-section .book-toc,.memory-journey.is-handoff .digital-section .center-heading{opacity:calc(1 - var(--handoff-progress,0)*2)}
.print-journey.is-enhanced{height:calc(100svh + 160svh * var(--print-distance,1))}
.print-journey.is-enhanced .manuscript-sheet{transform:translate(-50%,-50%) translate(var(--sheet-x,0px),var(--sheet-y,0px)) rotateZ(var(--sheet-r,0deg)) rotateY(var(--sheet-flip,0deg)) skewY(var(--sheet-bend,0deg));transform-origin:left center;backface-visibility:hidden;will-change:transform}
.manuscript-sheet::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:var(--sheet-shade,0);background:linear-gradient(90deg,#504733,transparent 30%,#786e4c 96%,#fefaf0);border-radius:inherit}
.print-journey.is-enhanced .keepsake-book{transform:translate(-50%,-50%) rotateX(calc(5deg * (1 - var(--cover-progress,0)))) rotateY(calc(-12deg * (1 - var(--cover-progress,0)))) rotateZ(calc(-5deg + 22deg * var(--cover-progress,0)))}
.print-journey.is-enhanced .keepsake-cover{transform-origin:left center;transform:translateZ(19px) rotateY(calc(-145deg * (1 - var(--cover-progress,0))));box-shadow:inset 1px 0 2px #fff,2px 5px 14px #5f583b28}
.print-journey.is-enhanced .keepsake-cover{visibility:hidden}
.keepsake-photo{position:absolute;z-index:8;left:50%;top:48%;width:calc(var(--book-w)*1.36);transform:translate(-50%,-50%);opacity:1;pointer-events:none;mix-blend-mode:darken}
.keepsake-photo img{display:block;width:100%;height:auto;object-fit:contain;animation:keepsake-float 6.8s ease-in-out infinite;animation-play-state:paused;will-change:transform}
.print-journey.is-enhanced .keepsake-photo{opacity:var(--portrait-opacity,0)}
.print-journey.is-bound .keepsake-photo img{animation-play-state:running}
.print-journey.is-bound .book-ground{animation:keepsake-shadow 6.8s ease-in-out infinite}
.keepsake-photo img{mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent),linear-gradient(transparent,#000 4%,#000 96%,transparent);mask-composite:intersect}
@keyframes keepsake-float{0%,100%{transform:translateY(5px) rotate(-.6deg)}50%{transform:translateY(-8px) rotate(.6deg)}}
@keyframes keepsake-shadow{0%,100%{transform:scale(1) rotate(-9deg)}50%{transform:scale(.9) rotate(-9deg)}}
.print-journey:not(.is-enhanced) .keepsake-book{display:none}
@media(max-width:700px){.keepsake-photo{width:calc(var(--book-w)*1.25)}}
@media(prefers-reduced-motion:reduce){.page-handoff{display:none!important}.keepsake-photo img{animation:none;transform:none}.print-journey .book-ground{animation:none}}
/* Printed typography scales with the paper instead of reflowing at each viewport. */
.manuscript-sheet{padding:0;overflow:hidden}
.manuscript-sheet-content{position:absolute;left:0;top:0;width:280px;height:428.4px;padding:23px 24px 32px;transform:scale(var(--paper-scale,1));transform-origin:0 0}
.manuscript-sheet .manuscript-kicker{font-size:8px;line-height:1.5;padding-bottom:13px}
.manuscript-sheet h3{font-size:20px;line-height:1.45;margin:22px 0 14px}
.manuscript-sheet p{font-size:12px;line-height:1.85;color:#777366}
.manuscript-sheet p+p{margin-top:12px}
.manuscript-sheet .manuscript-number{bottom:18px;right:24px;font-size:9px}

/* The incoming printed page joins a bound, curved-page book in the same spot. */
.riffle-anchor{position:absolute;z-index:1;transform:translate(-50%,-50%);pointer-events:none}
.print-journey.has-page-riffle.is-enhanced .manuscript-sheets{visibility:hidden}
