@charset "UTF-8";
:root{--paper:#f4f0e6;--ink:#242420;--red:#aa2826;--w:clamp(235px,25vw,410px);--h:calc(var(--w)*210/148)}
*{box-sizing:border-box}body{margin:0;background:#eae8e2;color:var(--ink);font-family:"Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--red);outline-offset:7px}button{border:0;background:none}a{color:inherit;text-decoration:none}.texture-filter{position:absolute;width:0;height:0}.ambient{position:fixed;inset:0;background:radial-gradient(ellipse at 70% 35%,#faf9f5 0,transparent 62%),linear-gradient(125deg,#e4e1d9,transparent 55%)}.grain{position:fixed;inset:0;pointer-events:none;opacity:.045;filter:url(#grain);z-index:50}header{height:116px;position:relative;display:flex;align-items:center;justify-content:space-between;padding:0 5.1vw;z-index:30}.wordmark{font-size:15px;letter-spacing:3px;font-weight:500}.wordmark span{display:block;font-size:8px;letter-spacing:2px;margin-top:9px;color:#79796f}.edition{font-size:10px;letter-spacing:2px;color:#78786f;display:flex;align-items:center;gap:12px}.edition i{width:5px;height:5px;background:var(--red);border-radius:50%}.close{font-size:12px;letter-spacing:2px}.close span{margin-left:18px;color:var(--red)}main{height:calc(100svh - 210px);min-height:470px;position:relative}.intro{position:absolute;left:12vw;top:50%;transform:translateY(-50%);width:30vw;max-width:400px;transition:opacity .5s,transform .85s;z-index:5}.eyebrow{font-size:9px;letter-spacing:2.7px;display:flex;align-items:center;gap:12px;color:#77766d}.red-line{width:20px;height:1px;background:var(--red)}h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(58px,6.2vw,96px);font-weight:400;letter-spacing:12px;margin:30px 0 24px;line-height:1.15}.title-period{color:var(--red);font-size:45px;letter-spacing:0;margin-left:-12px}.intro-rule{width:36px;height:1px;background:#b3b0a6;margin-bottom:24px}.subtitle{font-family:"Songti SC",serif;font-size:15px;letter-spacing:2px}.placeholder{font-size:12px;color:#88867e;line-height:2.1;letter-spacing:1px;margin:17px 0 30px}dl{display:flex;gap:32px;margin:0 0 34px}dt{font-size:8px;color:#8e8b82;letter-spacing:1.3px}dd{font-size:11px;margin:9px 0 0;letter-spacing:1px}.open-book{padding:13px 0;border-bottom:1px solid #a8a49a;min-width:164px;text-align:left;font-size:12px;letter-spacing:2px}.open-book span{float:right;color:var(--red);transition:transform .3s}.open-book:hover span{transform:translate(3px,-3px)}.intro-note{font-size:9px;color:#98958b;letter-spacing:1px;margin-top:18px}.stage{position:absolute;left:45%;right:0;top:0;bottom:0;perspective:2100px;touch-action:pan-y;transition:left 1.1s cubic-bezier(.22,.68,.22,1)}.book{width:calc(var(--w)*2);height:var(--h);position:absolute;left:50%;top:50%;transform:translate(-75%,-50%) rotateX(7deg) rotateY(-15deg) rotateZ(-3deg);transform-style:preserve-3d;transition:transform 1.15s cubic-bezier(.22,.68,.22,1)}.book-shadow{position:absolute;width:calc(var(--w)*1.06);height:calc(var(--h)*.76);top:50%;left:50%;background:#3b3328;filter:blur(25px);opacity:.24;transform:translate(-40%,-32%) rotate(-6deg);transition:width 1.1s,transform 1.1s,opacity 1.1s;border-radius:12%}.page-block{position:absolute;right:-7px;top:5px;width:var(--w);height:calc(100% - 4px);background:repeating-linear-gradient(0deg,#e8e2d6 0px,#e8e2d6 1px,#bfb7a7 1.7px,#f4f0e6 2.4px);border:1px solid #beb6a6;box-shadow:3px 3px 2px #9f978780;transform:translateZ(-8px);border-radius:0 2px 3px 0}.leaf{position:absolute;left:50%;top:0;width:var(--w);height:100%;transform-origin:0% 50%;transform-style:preserve-3d;will-change:transform;transition:transform 950ms cubic-bezier(.23,.7,.2,1);cursor:grab}.leaf.dragging{transition:none;cursor:grabbing}.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background-color:var(--paper);border-radius:1px 3px 3px 1px;overflow:hidden;box-shadow:inset 0 0 1px #64574388}.face.back{transform:rotateY(180deg);border-radius:3px 1px 1px 3px}.face:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#65533b22,transparent 13%,#fff5 47%,transparent 78%,#4838200c);opacity:.75}.back:after{background:linear-gradient(270deg,#65533b2b,transparent 15%,#fff3 60%,#48382008)}.face img{width:100%;height:100%;object-fit:cover;display:block}.leaf.cover .face{background-color:#dedbd1;box-shadow:inset 0 0 0 1px #251f1650,2px 1px 2px #17171055}.leaf.cover .front{transform:translateZ(2px)}.leaf.cover .back{transform:rotateY(180deg) translateZ(2px)}.leaf.cover .front:after{background:linear-gradient(90deg,#0008,transparent 4%,#fff1 40%,transparent 80%,#0003);opacity:.6}.paper-noise{position:absolute;inset:0;filter:url(#grain);opacity:.075;mix-blend-mode:multiply;pointer-events:none}.eggshell{background-color:#eee9dd;background-image:radial-gradient(#93857322 .5px,transparent .9px),radial-gradient(#fff9 .7px,transparent 1px);background-size:3px 4px,5px 3px}.vellum{background-color:#f5f1e5cf;background-image:linear-gradient(110deg,#fff5,#c4bc9e16);}.vellum .paper-noise{opacity:.035}.paper-number{position:absolute;bottom:24px;right:24px;font-size:9px;color:#969080;font-family:Georgia,serif}.back .paper-number{right:auto;left:24px}.endpaper-mark{position:absolute;top:47%;width:100%;text-align:center;font:19px "Songti SC",serif;letter-spacing:5px;color:#a09a8b}.endpaper-mark small{display:block;font:7px Arial;letter-spacing:3px;margin-top:14px;color:#aba495}.spine{position:absolute;left:calc(50% - 9px);top:1px;height:calc(100% - 2px);width:16px;background:repeating-linear-gradient(90deg,#bdb7a8 0 1px,#e7e2d5 1px 3px,#f6f2e8 3px 4px);transform:rotateY(-52deg) translateZ(-3px);transform-origin:right;display:flex;flex-direction:column;justify-content:space-around;z-index:40;border-radius:2px;box-shadow:inset 2px 0 3px #4e453e66}.thread{height:3px;background:#ae2424;box-shadow:0 1px 1px #4b1111;transform:rotate(-12deg);position:relative}.thread:after{content:"";position:absolute;left:5px;top:-3px;width:7px;height:9px;border:1.5px solid #c13b31;border-radius:50%;transform:rotate(30deg)}.cover-hotspot{position:absolute;width:var(--w);height:var(--h);top:50%;left:50%;transform:translate(-50%,-50%) rotate(-3deg);z-index:100;cursor:grab}.reading-caption{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:calc(var(--w)*2);display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#8c877c;opacity:0;transition:opacity .5s}.reading-caption #folio{font-family:Georgia,serif;letter-spacing:1px}footer{position:relative;height:94px;margin:0 5.1vw;border-top:1px solid #c5c1b750;display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#8d897f}.cover-hint{letter-spacing:1.5px}.cover-hint span{margin-left:18px;color:var(--red)}.reading-nav{align-items:center;gap:28px}.reading-nav:not([hidden]){display:flex}.reading-nav button{font-size:20px;padding:12px;color:#555247}.reading-nav button:disabled{opacity:.2;cursor:default}.nav-label{font-size:9px;letter-spacing:1.5px}body.reading .intro{opacity:0;transform:translate(-30px,-50%);pointer-events:none}body.reading .stage{left:0}body.reading .book{transform:translate(-50%,-50%) rotateX(3deg)}body.reading .book-shadow{width:calc(var(--w)*1.95);transform:translate(-50%,-32%);opacity:.16}body.reading .reading-caption{opacity:1;transition-delay:.8s}body.reading .cover-hotspot,body.reading .edition,body.reading .cover-hint{display:none}body.reading .spine{transform:translateZ(3px);width:6px;left:calc(50% - 3px);opacity:.7}body.reading .page-block{opacity:.4}.leaf.moving:not(.cover) .face:after{background:linear-gradient(90deg,#49372330,transparent 12%,#fff7 55%,#5b49312b 95%)}
@media(min-width:1600px){:root{--w:380px}}
@media(max-height:780px) and (min-width:761px){:root{--w: min(25vw,calc((100svh - 220px)*148/210))}header{height:90px}main{height:calc(100svh - 165px);min-height:350px}footer{height:75px}h1{margin:20px 0}.placeholder{margin:12px 0 20px}dl{margin-bottom:20px}}
@media(max-width:760px){:root{--w:min(62vw,calc((100svh - 325px)*148/210))}body{overflow:auto}header{height:84px;padding:0 7vw}.wordmark{font-size:12px}.wordmark span{font-size:7px;letter-spacing:1px}.edition{font-size:8px}main{height:calc(100svh - 153px);min-height:540px}.intro{left:8vw;top:12px;transform:none;width:84vw;max-width:none}.eyebrow{font-size:8px}h1{font-size:42px;margin:15px 0 8px;letter-spacing:7px}.title-period{font-size:28px}.intro-rule,.placeholder,.intro dl,.intro-note{display:none}.subtitle{font-size:11px;letter-spacing:1px}.open-book{position:absolute;right:0;top:65px;min-width:125px;font-size:10px}.stage{left:0;top:150px;bottom:20px}.book{transform:translate(-75%,-50%) rotateX(6deg) rotateY(-12deg) rotateZ(-3deg)}footer{height:69px;margin:0 7vw}.footer-left{display:none}.cover-hint{font-size:8px}.footer-right{font-size:8px}body.reading{--w:min(44vw,calc((100svh - 230px)*148/210))}body.reading .stage{top:0;bottom:40px}body.reading .intro{transform:translateY(-15px)}.reading-caption{bottom:20px;font-size:8px}.reading-nav{gap:12px}.nav-label{font-size:8px;letter-spacing:0}.close{font-size:10px}body.reading footer{justify-content:center}body.reading .footer-right{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important}}

.paper-strip{position:absolute;left:0;top:0;width:calc(100% / 18 + .3px);height:100%;transform-style:preserve-3d;transform-origin:left center;pointer-events:none}.paper-strip .strip-face{border-radius:0;box-shadow:none;overflow:hidden}.strip-content{position:absolute;top:0;width:var(--w);height:100%}.paper-strip .strip-face:after{opacity:.3}.leaf.flexible{pointer-events:auto}.leaf.flexible:before{content:"";position:absolute;inset:0;transform:translateZ(1px)}

@media(max-width:760px) and (orientation:portrait){body.reading{--w:min(78vw,calc((100svh - 240px)*148/210))}body.reading .stage{overflow:hidden}body.reading .book{transform:translate(-75%,-50%)}body.reading.at-end .book{transform:translate(-25%,-50%)}body.reading .reading-caption{width:var(--w)}body.reading .spine{opacity:.45}}
.paper-strip .strip-face:after{display:none}.strip-content:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#65533b22,transparent 15%,#fff3 52%,transparent 85%,#4838200b)}.paper-strip .back .strip-content:after{background:linear-gradient(270deg,#65533b22,transparent 15%,#fff3 52%,transparent 85%,#4838200b)}

@media(max-width:760px) and (orientation:portrait){body.reading .leaf.flipped:not(.moving){visibility:hidden}body.reading.at-end .leaf:last-child{visibility:visible}}
.eggshell{background-image:none;background-color:#eee9dc}.eggshell .paper-noise{opacity:.13}
/* Edition 02 — white, contemporary gallery */
:root{--paper:#fff;--ink:#151515;--red:#de201a;--w:min(31vw,calc((100svh - 260px)*148/210))}
body{background:#fff;color:#151515}.ambient,.grain{display:none}header{height:100px;padding:0 5vw}.wordmark{font-size:16px;letter-spacing:1px;font-weight:650}.wordmark span{font-size:9px;letter-spacing:1.2px;color:#999}.edition{letter-spacing:1px;font-size:10px}main{height:calc(100svh - 176px);min-height:420px}.intro{left:9vw;width:31vw}.eyebrow{font-size:10px;letter-spacing:1.1px;color:#7b7b7b}.red-line{height:3px;width:14px;background:#ed2018}h1{font-family:"Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;font-size:clamp(64px,7vw,108px);font-weight:650;letter-spacing:-5px;margin:32px 0 22px}.intro-rule{display:none}.subtitle{font:400 16px "PingFang SC",sans-serif;letter-spacing:3px}.placeholder{font-size:12px;color:#a5a5a5;margin:18px 0 40px;letter-spacing:0}dt{color:#999;letter-spacing:.5px}dd{letter-spacing:.5px}dl{gap:28px}.open-book{background:#181818;border:0;border-radius:0;color:#fff;min-width:186px;padding:18px 20px;letter-spacing:1px}.open-book span{color:#fff}.intro-note{color:#aaa;font-size:9px;letter-spacing:0}.stage{left:43%;perspective:2400px;touch-action:none}.book{transform:translate(-75%,-50%) rotateX(3deg) rotateY(-12deg) scale(var(--zoom,1));transform-origin:75% 50%}.book-shadow{background:#171717;opacity:.13;filter:blur(22px);height:calc(var(--h)*.62);transform:translate(-42%,-21%)}#leaves{position:absolute;inset:0;transform-style:preserve-3d}.page-block{transform:translateZ(-12px);right:-3px;top:3px;height:calc(100% - 6px);background:repeating-linear-gradient(0deg,#fafafa 0 1px,#dedede 1px 1.5px,#fff 1.5px 3px);box-shadow:1px 2px 3px #0002;border-color:#ddd}.spine{display:none!important}.face{background-color:#fff;box-shadow:inset 0 0 .6px #3334}.leaf.cover .face{background:#fafafa;border-radius:1px;box-shadow:0 0 .8px #0007}.leaf.cover .front{transform:translateZ(.4px)}.leaf.cover .back{transform:rotateY(180deg) translateZ(.4px)}.face:after,.back:after{background:linear-gradient(90deg,#0000000e,transparent 7%,#ffffff08 70%,#00000003)}.leaf.cover .front:after{background:linear-gradient(90deg,#0003,transparent 3%,transparent 95%,#fff1);opacity:.3}.paper-noise{opacity:.025}.eggshell{background:#fbfbfa}.eggshell .paper-noise{opacity:.07}.vellum{background:#fdfdfde0}.strip-content:after{background:linear-gradient(90deg,#0000000c,transparent 12%,#ffffff08 80%)}.paper-strip .back .strip-content:after{background:linear-gradient(270deg,#0000000c,transparent 12%,#ffffff08 80%)}.endpaper-mark{font-family:"PingFang SC",sans-serif;font-weight:500;color:#b8b8b8}.endpaper-mark small{color:#bcbcbc}.paper-number{color:#aaa}.reading-caption{bottom:51px;color:#999}.cover-hotspot{transform:translate(-50%,-50%) scale(var(--zoom,1));transform-origin:center}.view-tools{position:absolute;bottom:5px;left:72%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;z-index:45;padding:5px 8px;background:#ffffffeb;border:1px solid #ececec;border-radius:40px;font-size:10px;transition:left 1s}.view-tools button{padding:8px 10px;border-radius:20px;letter-spacing:0}.view-tools button:hover{background:#f4f4f4}.view-tools button:disabled{opacity:.25;cursor:default}.view-tools button[aria-pressed=true]{background:#161616;color:white}.view-tools output{font-size:10px;width:34px;text-align:center;color:#777}.tool-divider{height:13px;width:1px;background:#ddd;margin:0 3px}.inspect-hint{position:absolute;bottom:55px;text-align:center;width:100%;font-size:10px;color:#999;letter-spacing:1px}.inspection-wrap{position:absolute;inset:0;perspective:2100px;touch-action:none}.inspection-book{position:absolute;left:50%;top:50%;width:var(--w);height:var(--h);transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(var(--zoom,1));cursor:grab}.inspection-book.rotating{cursor:grabbing}.model-front,.model-back{position:absolute;inset:0;backface-visibility:hidden;background:#161616}.model-front{transform:translateZ(10px)}.model-back{transform:rotateY(180deg) translateZ(10px)}.model-front img,.model-back img{width:100%;height:100%;object-fit:cover;display:block}.model-spine{position:absolute;width:20px;height:100%;left:0;transform-origin:left;transform:translateZ(10px) rotateY(90deg);background:repeating-linear-gradient(90deg,#fff 0 2px,#ddd 2px 3px);display:flex;flex-direction:column;justify-content:space-around;backface-visibility:visible}.model-spine i{height:2px;background:#df201d;box-shadow:0 .5px 1px #8a0c09}.model-edge{position:absolute;background:repeating-linear-gradient(90deg,#fdfdfd 0 1px,#ddd 1px 2px)}.edge-right{width:20px;height:100%;right:0;transform-origin:right;transform:translateZ(10px) rotateY(-90deg)}.edge-top,.edge-bottom{width:100%;height:20px;left:0;transform-origin:top;transform:translateZ(10px) rotateX(-90deg)}.edge-top{top:0}.edge-bottom{top:100%}body.reading .book{transform:translate(-50%,-50%) rotateX(0deg) scale(var(--zoom,1));transform-origin:50% 50%}body.reading .view-tools,body.inspecting .view-tools{left:50%}body.inspecting .stage{left:0}body.inspecting .intro{opacity:0;pointer-events:none;transform:translate(-30px,-50%)}body.inspecting .book,body.inspecting .cover-hotspot,body.inspecting .reading-caption{display:none}body.inspecting .book-shadow{width:var(--w);transform:translate(-50%,-20%);opacity:.1}body.inspecting .cover-hint,body.inspecting .reading-nav{display:none}footer{height:76px;border-top-color:#f0f0f0;color:#aaa;letter-spacing:1px}.nav-label{color:#999}body.reading .intro{visibility:hidden}.inspection-wrap[hidden]{display:none}
@media(max-width:760px){:root{--w:min(65vw,calc((100svh - 340px)*148/210))}header{height:80px;padding:0 7vw}.wordmark{font-size:13px}.wordmark span{font-size:7px}main{height:calc(100svh - 145px);min-height:520px}.intro{left:7vw;top:12px;width:86vw}.eyebrow{font-size:8px}h1{font-size:47px;letter-spacing:-2px;margin:16px 0 10px}.subtitle{font-size:11px;letter-spacing:2px}.open-book{min-width:124px;padding:14px;top:62px;font-size:10px}.stage{left:0;top:151px;bottom:54px}.view-tools{left:50%;bottom:3px;gap:3px;font-size:9px}.view-tools button{padding:8px}.reading-caption{bottom:3px}.inspect-hint{bottom:54px}.book{transform:translate(-75%,-50%) rotateY(-10deg) scale(var(--zoom,1))}body.reading{--w:min(78vw,calc((100svh - 280px)*148/210))}body.reading .stage,body.inspecting .stage{top:0;bottom:70px}body.inspecting{--w:min(70vw,calc((100svh - 280px)*148/210))}body.inspecting .intro{visibility:hidden}body.reading .book{transform:translate(-75%,-50%) scale(var(--zoom,1));transform-origin:75% 50%}body.reading.at-end .book{transform:translate(-25%,-50%) scale(var(--zoom,1));transform-origin:25% 50%}.footer-right{font-size:8px}footer{height:65px}}
@media(max-width:760px) and (orientation:landscape){body.reading .book{transform:translate(-50%,-50%) scale(var(--zoom,1));transform-origin:center}}

.stage{user-select:none;-webkit-user-select:none}.stage img{-webkit-user-drag:none;user-select:none}
body.inspecting .edition{display:none}
@media(max-width:760px){body.reading .book-shadow{width:var(--w);height:calc(var(--h)*.65);left:50%;transform:translate(-50%,-30%);opacity:.035;filter:blur(18px)}}
/* Gesture-first edition: typography in cover red, no control dock or footer. */
:root{--red:#d9211b;--ink:#d9211b;--w:min(32vw,calc((100svh - 210px)*148/210))}body{color:var(--red)}header{color:var(--red)}.wordmark span,.edition,.eyebrow,.placeholder,dt,dd,.intro-note,.subtitle,.close,.close span{color:var(--red)}.placeholder,.intro-note{opacity:.5}dt{opacity:.6}.wordmark span{opacity:.65}.open-book{background:var(--red);color:white}.intro{transition:opacity .55s,transform 1.1s}main{height:calc(100svh - 100px);min-height:420px}.stage{bottom:35px}.book{transform:translate3d(-75%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,3deg)) rotateY(var(--view-y,-12deg)) scale(var(--zoom,1));transition:transform 1.1s cubic-bezier(.22,.68,.22,1);will-change:transform}.book.hovering{--lift:8px}.leaf,.leaf.dragging{transition:none!important}.paper-noise{filter:none;background-image:url('assets/paper-grain.svg');background-size:180px 180px;opacity:.035}.eggshell .paper-noise{opacity:.075}.reading-caption{bottom:15px;color:var(--red);opacity:0!important;pointer-events:none}body.reading .book{transform:translate3d(-50%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,0deg)) rotateY(var(--view-y,0deg)) scale(var(--zoom,1))}body.orbiting .book{transition:none;cursor:grabbing}body.orbiting main{cursor:grabbing}.cover-hotspot{pointer-events:none}.page-block{pointer-events:none}.endpaper-mark,.endpaper-mark small,.paper-number{color:var(--red);opacity:.35}.book:focus-visible{outline:1px dashed #d9211b66;outline-offset:18px}.book-shadow{transition:opacity .4s,transform 1.1s,width 1.1s}.book:has(.leaf:hover)~.book-shadow{opacity:.08}
@media(max-width:760px){:root{--w:min(65vw,calc((100svh - 300px)*148/210))}main{height:calc(100svh - 80px);min-height:500px}.stage{top:150px;bottom:20px}.book{transform:translate3d(-75%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,3deg)) rotateY(var(--view-y,-12deg)) scale(var(--zoom,1))}body.reading .stage{top:0;bottom:20px}body.reading{--w:min(78vw,calc((100svh - 180px)*148/210))}body.reading .book{transform:translate3d(-75%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,0deg)) rotateY(var(--view-y,0deg)) scale(var(--zoom,1))}body.reading.at-end .book{transform:translate3d(-25%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,0deg)) rotateY(var(--view-y,0deg)) scale(var(--zoom,1))}}
@media(max-width:760px) and (orientation:landscape){body.reading .book{transform:translate3d(-50%,calc(-50% - var(--lift,0px)),0) rotateX(var(--view-x,0deg)) rotateY(var(--view-y,0deg)) scale(var(--zoom,1))}}
body:not(.reading) .spine{display:flex!important;left:50%;top:0;height:100%;width:16.5px;transform:translateZ(4.45px) rotateY(90deg);transform-origin:left center;box-shadow:none;z-index:auto;background:repeating-linear-gradient(90deg,#fff 0 2px,#ddd 2px 3px)}body.reading .page-block{display:none}.intro{transition:opacity .55s,transform 1.1s,visibility 0s}body.reading .intro{transition:opacity .55s,transform 1.1s,visibility 0s .55s}
/* Author-supplied background, anchored to the bottom of the viewport. */
body{background:#fff url('assets/previews/9dd98ae196917c5a.webp') center bottom / cover no-repeat fixed}
.wordmark{white-space:nowrap}
/* Keep the background on a full-viewport layer, including during zoom and overscroll. */
html{width:100%;min-height:100%;overflow-x:clip;background:#fff}body{width:100%;min-height:100svh;overflow-x:clip;background:transparent;isolation:isolate}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:#fff url('assets/previews/9dd98ae196917c5a.webp') center bottom / cover no-repeat}body:not(.reading) .page-block{display:none}
/* Match both bilingual header blocks. */
header .wordmark,header .edition{display:block;font-size:13px;font-weight:600;letter-spacing:1px;line-height:1.5;color:var(--red)}header .edition{text-align:right}header .wordmark span,header .edition span{display:block;margin-top:7px;font-size:9px;font-weight:400;letter-spacing:1px;line-height:1.5;color:var(--red);opacity:.65}
@media(max-width:760px){header .wordmark,header .edition{font-size:11px;letter-spacing:.5px}header .wordmark span,header .edition span{font-size:7px;letter-spacing:.6px;margin-top:6px}}
/* Three-dimensional 3 mm cover boards and supple, continuous inner sheets. */
.leaf.cover{--board:3px}.leaf.cover>.face.front{transform:translateZ(1.5px)}.leaf.cover>.face.back{transform:rotateY(180deg) translateZ(1.5px)}.board-edge{position:absolute;pointer-events:none;backface-visibility:visible;background:linear-gradient(90deg,#332b2b,#68524e 35%,#302626 75%,#9b342d);box-shadow:inset 0 0 .5px #16090788}.board-outer,.board-inner{width:3px;height:100%;top:0;transform-origin:left center;transform:translateZ(1.5px) rotateY(90deg)}.board-outer{left:100%}.board-inner{left:0}.board-top,.board-bottom{width:100%;height:3px;left:0;transform-origin:center top;transform:translateZ(1.5px) rotateX(-90deg)}.board-top{top:0}.board-bottom{top:100%}.leaf.cover>.face{border-radius:1px;box-shadow:inset 0 0 .5px #16090755}.paper-strip{width:calc(100% / 28 + .25px)}.paper-strip .strip-face:after{display:block;background:#29221c;opacity:var(--curl-shade,0)}.leaf.flexible .strip-content:after{opacity:.45}.leaf.moving.flexible{filter:none}.paper-strip .strip-face{border:0}

.resting-back[hidden]{display:none}.resting-back{z-index:0;pointer-events:auto}.paper-strip .strip-face:after{opacity:calc(var(--curl-shade,0) * .45)}
/* Unified mesh renderer: no CSS page surfaces or overlapping strip backs. */
#book-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none;z-index:2}.size-probe{position:absolute;width:var(--w);height:0;visibility:hidden;pointer-events:none}.reader-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.reader-status.reader-error{width:auto;height:auto;clip-path:none;left:10%;right:10%;top:45%;font-size:12px;text-align:center}.stage{overflow:visible!important}.book-shadow{pointer-events:none;z-index:0;opacity:.06!important;filter:blur(20px)}body.reading .book-shadow{width:calc(var(--w)*1.8);opacity:.045!important}body.orbiting #book-canvas{cursor:grabbing!important}
/* Supplied bilingual title and paired character names. */
.intro .artbook-title{margin:28px 0 38px;line-height:0;letter-spacing:0;font-size:0;width:100%;font-weight:400}.artbook-title img{display:block;width:100%;height:auto}.character-names{display:grid;grid-template-columns:1fr 1fr;margin:0 0 42px;column-gap:22px}.character-names>div:last-child{justify-self:end;min-width:3em}.name-cn,.name-ko{display:block;font-family:"Helvetica Neue","PingFang SC","Apple SD Gothic Neo","Microsoft YaHei",sans-serif;font-size:16px;font-weight:400;letter-spacing:0;line-height:1.5}.name-cn{color:#f00}.name-ko{color:#ff8080}.intro dl{display:grid;grid-template-columns:max-content 1fr;column-gap:28px;margin-bottom:0}
@media(max-width:760px){.intro .artbook-title{width:min(66vw,300px);margin:14px 0 18px}.character-names{width:min(66vw,300px);margin-bottom:0;column-gap:16px}.name-cn,.name-ko{font-size:12px;line-height:1.5}.intro dl{display:none}.stage{top:225px}}
@media(max-height:700px) and (max-width:760px){.intro .artbook-title{width:180px;margin:10px 0 12px}.character-names{width:180px}.stage{top:190px}:root{--w:min(58vw,calc((100svh - 325px)*148/210))}}
.name-cn{color:#c02a1e}.name-ko{color:#e69794}
/* Consistent type scale for character names and book metadata. */
.intro{--detail-size:14px;--label-size:10px}.intro .name-cn,.intro .name-ko,.intro dd{font-size:var(--detail-size);font-weight:400;line-height:1.55;letter-spacing:0}.intro dt{font-size:var(--label-size);font-weight:400;line-height:1.5;letter-spacing:.35px}.intro dd{margin:8px 0 0}.character-names{margin-bottom:32px}.intro dl{grid-template-columns:max-content 1fr;column-gap:28px}
@media(max-width:760px){.intro{--detail-size:12px;--label-size:9px}.character-names{margin-bottom:0}}
/* Page matrix and reversible paper flights. */
.reader-actions{display:flex;align-items:center;gap:14px}.reader-actions[hidden],.reader-action[hidden],.page-gallery[hidden]{display:none!important}header .reader-action{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid #ed1111;border-radius:999px;padding:11px 20px;font:400 13px/1.25 "Helvetica Neue","PingFang SC",sans-serif;letter-spacing:.5px;color:#ed1111;background:transparent;white-space:nowrap;transition:background .2s,transform .2s}.reader-action img{display:block;width:17px;height:17px;object-fit:contain;pointer-events:none}.reader-action:hover{background:#ed111109;transform:translateY(-1px)}.reader-action:disabled{cursor:wait}.close.reader-action span{margin:0}body.gallery-view{overflow-y:auto;overflow-x:clip}body.gallery-view header{position:sticky;top:0;z-index:70;background:rgba(255,255,255,.8);backdrop-filter:blur(12px)}body.gallery-view main{position:fixed;inset:100px 0 auto;height:calc(100svh - 100px);pointer-events:none;visibility:hidden}body.gallery-view.gallery-transition main{visibility:visible}body.gallery-view .intro{visibility:hidden}.page-gallery{position:relative;z-index:35;margin:0 6vw;padding:32px 0 70px;min-height:calc(100svh - 100px)}.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:28px;row-gap:38px}.gallery-card{display:block;position:relative;min-width:0;border:0;padding:0;text-align:left;background:none;transform-origin:50% calc((100% - 23px)/2);will-change:transform,opacity;isolation:isolate}.gallery-paper{display:block;position:relative;aspect-ratio:148/210;width:100%;background:#fafafa;box-shadow:0 5px 20px #0000000c,0 0 0 .6px #00000012;transition:box-shadow .25s,transform .25s;overflow:hidden}.gallery-paper img{display:block;width:100%;height:100%;object-fit:contain;-webkit-user-drag:none}.is-vellum .gallery-paper{background:rgba(250,252,252,.43);backdrop-filter:blur(1px)}.gallery-caption{display:block;padding-top:10px;font-size:10px;line-height:13px;letter-spacing:1px;color:#c02a1e;opacity:.65}.gallery-card:hover .gallery-paper{transform:translateY(-4px);box-shadow:0 10px 26px #00000014,0 0 0 .6px #d9211b44}body.gallery-transition .gallery-card .gallery-paper{transition:none;transform:none}body.gallery-transition .gallery-caption{opacity:0}.gallery-card:focus-visible{outline:1px solid var(--red);outline-offset:6px}.artwork-viewer{position:fixed;inset:0;width:100vw;height:100svh;max-width:none;max-height:none;margin:0;border:0;padding:6svh 6vw;background:rgba(255,255,255,.95);overflow:auto;color:var(--red)}.artwork-viewer::backdrop{background:transparent}.viewer-figure{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:88svh;margin:0;pointer-events:none}.viewer-image{display:block;max-width:88vw;max-height:82svh;width:auto;height:auto;object-fit:contain;background:#fafafa;box-shadow:0 12px 48px #00000016;transform-origin:center;pointer-events:auto}.viewer-image.is-vellum{background:rgba(245,248,248,.65)}.viewer-figure figcaption{font-size:11px;letter-spacing:1px;padding-top:18px;opacity:.6}.viewer-close{position:fixed;top:20px;right:26px;width:42px;height:42px;border:1px solid #d9211b55;border-radius:50%;font:300 28px/1 Arial;color:var(--red);z-index:3;background:#ffffffaa}.viewer-close:hover{background:#fff}.artwork-viewer:not([open]){display:none}
@media(max-width:760px){.reader-actions{gap:7px}header .reader-action{font-size:10px;padding:8px 10px;gap:6px;letter-spacing:0}.reader-action img{width:13px;height:13px}body.gallery-view main{top:80px;height:calc(100svh - 80px)}.page-gallery{margin:0 5vw;padding-top:22px}.gallery-grid{column-gap:10px;row-gap:22px}.gallery-caption{font-size:8px;letter-spacing:0;padding-top:7px}.viewer-close{top:14px;right:14px}.viewer-image{max-width:92vw;max-height:82svh}.artwork-viewer{padding:7svh 4vw}}
.artwork-viewer{overscroll-behavior:contain}.page-gallery{perspective:1800px}.gallery-card .gallery-paper{backface-visibility:hidden}
/* One shared column system for character names and publication metadata. */
.intro{--info-columns:minmax(0,.8fr) minmax(0,1.2fr);--info-gap:24px}.intro .character-names,.intro dl{display:grid;grid-template-columns:var(--info-columns);column-gap:var(--info-gap);width:100%}.intro .character-names>div:last-child{justify-self:stretch;min-width:0}.intro .character-names>div,.intro dl>div{text-align:left;min-width:0}.intro .character-names{margin-bottom:30px}.intro dt{margin:0}.intro dd{margin-top:8px}
@media(max-width:760px){.intro .character-names{width:min(66vw,300px);margin-bottom:0}.intro dl{display:none}}
@media(max-height:700px) and (max-width:760px){.intro .character-names{width:180px}}
/* Keep full spread originals intact in the matrix and in the enlarged viewer. */
.gallery-card.is-spread{grid-column:span 2}.gallery-card.is-spread .gallery-paper{aspect-ratio:296/210}

/* Render beyond the layout stage, up to the actual viewport edges. */
.stage{perspective:none}#book-canvas{position:fixed;inset:0;width:100vw;height:100svh}

/* Shadows follow the rendered silhouette at every zoom and rotation. */
#book-canvas{filter:drop-shadow(0 3px 2px #211b1626) drop-shadow(0 14px 14px #211b161c)}
.book-shadow{display:none}

/* Individual intro groups lift gently without shifting the layout. */
.intro .eyebrow,.intro .artbook-title,.character-names>div,.intro dl>div{transition:transform .45s cubic-bezier(.22,.68,.22,1)}
@media(hover:hover) and (pointer:fine){.intro .eyebrow:hover,.intro .artbook-title:hover,.character-names>div:hover,.intro dl>div:hover{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){.intro .eyebrow,.intro .artbook-title,.character-names>div,.intro dl>div{transition:none;transform:none!important}}

.intro dl{row-gap:24px}
/* Lower the three information rows together, independently of the title. */
@media(min-width:761px){.intro .character-names,.intro dl{position:relative;top:clamp(24px,4vh,48px)}}

.polaroid{position:fixed;left:0;top:0;width:clamp(140px,18vw,280px);z-index:40;transform:translate3d(var(--photo-x,0px),var(--photo-y,0px),0) rotate(13deg);touch-action:none;user-select:none;cursor:grab;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s,filter .3s;filter:drop-shadow(1px 3px 2px #30251a22) drop-shadow(0 10px 12px #30251a30)}
.polaroid[hidden]{display:none}.polaroid.is-visible{opacity:1;visibility:visible}.polaroid.is-dragging{cursor:grabbing;filter:drop-shadow(2px 8px 5px #30251a22) drop-shadow(0 18px 20px #30251a35)}
.polaroid img{display:block;width:100%;height:auto;pointer-events:none;-webkit-user-drag:none}.polaroid-tape{position:absolute;width:31%;height:8%;left:35%;top:-3%;transform:rotate(-18deg);background:linear-gradient(110deg,#efdfb348,#fff7d96b 45%,#d8cba44a);border:1px solid #fff8d833;box-shadow:0 1px 2px #32251112;backdrop-filter:blur(.6px);clip-path:polygon(2% 0,98% 3%,100% 93%,1% 100%,3% 78%,0 55%,3% 30%)}
@media(prefers-reduced-motion:reduce){.polaroid{transition:none}}

/* Lift the keepsake independently of its saved drag coordinates. */
.polaroid{translate:0 0;transition:opacity .35s,visibility .35s,filter .3s,translate .35s cubic-bezier(.22,.68,.22,1)}
@media(hover:hover) and (pointer:fine){.polaroid.is-visible:hover{translate:0 -7px}}
.polaroid-tape{background:linear-gradient(110deg,#ce51471c,#e5776a38 45%,#c84b411f);border-color:#e8a39b29;box-shadow:0 1px 2px #68221c10}
#book-canvas{filter:drop-shadow(0 4px 3px #241b1338) drop-shadow(0 18px 17px #241b1338)}
@media(prefers-reduced-motion:reduce){.polaroid{translate:none!important;transition:none}}

.keepsake-page{position:fixed;left:0;top:0;width:1260px;height:1785px;transform-origin:0 0;z-index:20;pointer-events:none}.keepsake-page[hidden]{display:none}.keepsake-print{position:absolute;padding:0;border:0;background:none;pointer-events:auto;cursor:zoom-in;transition:translate .35s cubic-bezier(.22,.68,.22,1)}.keepsake-print .gallery-paper{aspect-ratio:auto;background:none;box-shadow:none;overflow:visible;transition:filter .35s}.keepsake-print .gallery-paper img{width:100%;height:auto}.keepsake-print:hover{translate:0 -18px}.keepsake-print:hover .gallery-paper{transform:none;filter:drop-shadow(0 12px 10px #34281c20)}
@media(prefers-reduced-motion:reduce){.keepsake-print{transition:none;translate:none}}

.mobile-gesture-hint{display:none;pointer-events:none}
@media(max-width:760px){body.reading:not(.gallery-view) .mobile-gesture-hint{display:block;position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));left:12px;right:12px;text-align:center;font-size:10px;letter-spacing:.5px;color:#c02a1e;opacity:.65;z-index:25;animation:gesture-hint-fade 6s forwards}body.reading .stage{top:0;bottom:20px}}
@keyframes gesture-hint-fade{0%,70%{opacity:.65}100%{opacity:0;visibility:hidden}}
