:root{--wine:#6c2531;--gold:#b89b65;--ink:#322d29;--muted:#91867b;--paper:#f5f1e9;--line:#ded6c9}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#eee9df;font:14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;height:100dvh;display:flex;flex-direction:column;overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.25;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--wine);outline-offset:4px}button{background:none;border:0;color:inherit;border-radius:6px}header{height:80px;min-height:80px;display:flex;align-items:center;gap:25px;padding:0 32px;border-bottom:1px solid var(--line);background:#f8f5ef;z-index:5}.icon{font-size:24px;min-width:36px;min-height:38px}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;color:var(--wine);font-family:"Songti SC",serif;font-size:21px;letter-spacing:3px;white-space:nowrap}.brand small{display:block;font:8px/1.5 sans-serif;letter-spacing:2px;color:var(--muted)}.cross{font-size:31px;color:var(--gold)}.heading{border-left:1px solid var(--line);padding-left:25px;font-family:"Songti SC",serif;font-size:18px;letter-spacing:2px}.heading span{font:11px sans-serif;letter-spacing:1px;border:1px solid #c8bca8;padding:4px 7px;margin-left:9px;color:#877450}.download{margin-left:auto;text-decoration:none;color:var(--wine);font-size:12px;white-space:nowrap}.download span{font-size:20px;margin-left:7px}main{flex:1;min-height:0;display:flex;flex-direction:column;padding:15px 70px 10px;background:radial-gradient(ellipse at center,#f7f4ed 0,#e7e0d4 100%)}.book-heading,.reading-caption{display:flex;justify-content:space-between;max-width:1100px;width:100%;margin:0 auto;color:#857766;font-size:11px;letter-spacing:1px}.book-heading{margin-bottom:12px}.edition{font-family:"Songti SC",serif}.reading-area{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;perspective:2200px}.book{position:relative;height:100%;aspect-ratio:1.4142;max-width:100%;filter:drop-shadow(0 12px 18px #3c26152b);perspective:2400px}.book.single{aspect-ratio:.7071}.spread{position:absolute;inset:0;display:flex;background:#fffcf5;border-radius:2px}.paper{position:relative;width:50%;height:100%;background:#fff;overflow:hidden}.single .paper{width:100%}.paper img,.face img{width:100%;height:100%;object-fit:contain;display:block;background:white}.gutter{position:absolute;left:50%;top:0;bottom:0;width:20px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(59,38,16,.055) 40%,rgba(59,38,16,.10) 50%,rgba(59,38,16,.045) 62%,transparent);pointer-events:none;z-index:4;opacity:1;transition:opacity .25s ease}.single .gutter{opacity:0}.hotspot{position:absolute;display:block;border-radius:1px}.hotspot:hover{background:#b89b6526;outline:1px solid #b89b6566}.edge{position:absolute;top:calc(50% - 25px);height:50px;width:42px;font:42px/1 Georgia,serif;color:#7d6b55;z-index:2}.edge:hover:enabled{background:#ffffff88}.prev{left:-58px}.next{right:-58px}.reading-caption{margin-top:12px;font-size:10px}.leaf{display:none;position:absolute;top:0;left:50%;height:100%;width:50%;transform-style:preserve-3d;transform-origin:left center;z-index:3}.leaf.backward{left:0;transform-origin:right center}.single .leaf{left:0;width:100%}.face{position:absolute;inset:0;backface-visibility:hidden;overflow:hidden;background:white}.face.back{transform:rotateY(180deg)}.face:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(59,38,16,.25),transparent 55%);opacity:0;pointer-events:none}.leaf.backward .face:after{background:linear-gradient(-90deg,rgba(59,38,16,.25),transparent 55%)}.leaf.turning{display:block;animation:turnNext .72s cubic-bezier(.35,.02,.3,1) forwards}.leaf.turning .face:after{animation:paperShade .72s ease-in-out both}.leaf.backward.turning{animation-name:turnPrev}@keyframes turnNext{to{transform:rotateY(-180deg)}}@keyframes turnPrev{to{transform:rotateY(180deg)}}@keyframes paperShade{0%,100%{opacity:0}45%,55%{opacity:1}}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#f7f3eb;color:var(--wine);z-index:4;font-family:"Songti SC",serif}.loading[hidden]{display:none}footer{position:relative;min-height:76px;padding:14px 32px 18px;display:flex;align-items:center;justify-content:space-between;background:#f8f5ef;border-top:1px solid var(--line);gap:20px}.tools{display:flex;gap:5px}.tools button{padding:6px 12px;font-size:12px;color:#756856}.tools button:hover{background:#eae3d6}.page-controls{display:flex;align-items:center;gap:12px}#jump{display:flex;gap:9px;align-items:center;font-size:12px;color:#8b7d6c}#pageInput{width:54px;text-align:center;border:1px solid #d4c9b7;border-radius:4px;background:#fffdf9;padding:5px 2px;color:var(--wine);appearance:textfield}#pageInput::-webkit-inner-spin-button{appearance:none}#total{font-weight:400}.saved{font-size:10px;color:#998c7b;min-width:120px;text-align:right}#progress{position:absolute;bottom:0;left:0;width:100%;height:4px;margin:0;accent-color:var(--wine);cursor:pointer}aside{position:fixed;left:0;top:0;bottom:0;width:360px;max-width:90vw;transform:translateX(-101%);transition:transform .25s;background:#faf7f0;z-index:20;padding:22px;display:flex;flex-direction:column;box-shadow:8px 0 40px #2f211333}aside.open{transform:translateX(0)}.aside-title{display:flex;align-items:center;justify-content:space-between}.aside-title h2{font:24px "Songti SC",serif;margin:4px 0}.muted{font-size:11px;color:var(--muted);margin:4px 0 20px}#search{width:100%;border:1px solid var(--line);border-radius:5px;padding:11px 12px;background:white;margin-bottom:15px;outline-offset:1px}#tocItems{overflow:auto;flex:1}#tocItems button{display:block;text-align:left;width:100%;border-bottom:1px solid #e9e1d5;padding:9px 4px;font-size:12px;display:flex;justify-content:space-between;gap:12px}#tocItems button:hover{background:#eee4d5}#tocItems button.active{color:var(--wine);font-weight:600}#tocItems button.section{font-family:"Songti SC",serif;font-size:17px;margin-top:15px}#tocItems small{white-space:nowrap;color:#a18e76;font-weight:400}.aside-foot{font-size:10px;color:var(--muted);padding-top:13px}#shade{position:fixed;inset:0;background:#21181066;z-index:19}dialog{width:min(1300px,96vw);height:94dvh;border:0;padding:0;border-radius:8px;background:#e6e0d5}dialog::backdrop{background:#18120ecc}.zoom-bar{position:sticky;top:0;background:#f8f5ef;display:flex;justify-content:space-between;align-items:center;padding:12px 20px;z-index:1;font-size:12px}.zoom-bar button{color:var(--wine);padding:8px}#zoomPages{display:flex;align-items:flex-start;gap:12px;padding:16px;overflow:auto}#zoomPages img{width:100%;max-width:1050px;flex:none}#notice{position:fixed;bottom:95px;left:50%;transform:translateX(-50%);background:#432e29;color:white;padding:10px 18px;border-radius:5px;z-index:50;font-size:12px}@media(min-width:1500px){main{padding-top:22px;padding-bottom:20px}}@media(max-width:900px){header{padding:0 18px;height:65px;min-height:65px;gap:14px}.heading{font-size:14px;padding-left:15px;letter-spacing:0}.heading span{display:none}.brand{font-size:17px;gap:8px;letter-spacing:1px}.brand small{font-size:6px;letter-spacing:1px}.cross{font-size:25px}main{padding:12px 49px 9px}.book-heading{font-size:10px}.edition{display:none}.prev{left:-43px}.next{right:-43px}.edge{width:35px}footer{padding:11px 15px 16px;min-height:70px;gap:8px}.tools{gap:0}.tools button{padding:7px}.saved{display:none}.page-controls{gap:5px}.reading-caption span:last-child{display:none}}@media(max-width:500px){.heading{display:none}header{gap:10px}main{padding:10px 34px}.edge{width:30px}.prev{left:-32px}.next{right:-32px}.book-heading{margin-bottom:8px}footer{font-size:11px}.page-controls .icon{min-width:25px;font-size:19px}.tools button{font-size:11px;padding:6px}.download{font-size:11px}.reading-caption{margin-top:8px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition:none!important}}

/* The title and subtitle form one unframed identity. */
.brand small{font-family:"Songti SC",serif;font-size:12px;line-height:1.8;letter-spacing:5px;color:#8e7d65;border:0;padding:0;margin:0}.brand{font-size:22px;letter-spacing:2px}.heading{display:none}@media(max-width:600px){.brand{font-size:18px;letter-spacing:1px}.brand small{font-size:11px;letter-spacing:4px}}

/* Keep the desktop spread width while opening front matter one page at a time. */
.solo-spread .spread{background:#fffcf5}.paper.blank{background:#fff;cursor:pointer}.solo-spread .gutter{opacity:1}.leaf.solo-turn.turning{animation:turnNext .72s cubic-bezier(.35,.02,.3,1) forwards}@keyframes soloPageFade{0%,65%{opacity:1}100%{opacity:0}}

/* Local preview: authenticated entrance and loading states. */
[hidden]{display:none!important}.reader-app{flex:1;min-height:0;display:flex;flex-direction:column}.access-screen{min-height:100dvh;width:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 22px;background:radial-gradient(ellipse at 50% 30%,#fbf8f2 0,#f1ebe0 65%,#e6ddcf 100%);position:relative}.access-top{font-size:11px;letter-spacing:5px;color:#aa9471;margin-bottom:24px}.access-top span{color:var(--gold);font-size:18px;vertical-align:middle;margin-right:9px}.access-card{width:min(420px,100%);padding:36px 42px 28px;background:#fcfaf5e8;border:1px solid #e0d5c1;border-radius:3px;text-align:center;box-shadow:0 20px 60px #7256370b;position:relative}.access-emblem{display:flex;justify-content:center;gap:2px;margin:0 auto 22px;height:30px;width:48px}.access-emblem span{width:23px;border:1px solid #bda47b;border-top:0;transform:skewY(9deg);border-radius:0 0 2px 3px;background:linear-gradient(180deg,transparent,#c3a5790d)}.access-emblem span:last-child{transform:skewY(-9deg);border-radius:0 0 3px 2px}.access-eyebrow{font-size:10px;letter-spacing:3px;color:#a08c70;margin:0 0 10px}.access-card h1{font:29px/1.6 "Songti SC","STSong",serif;letter-spacing:4px;color:var(--wine);margin:0}.access-edition{font:14px "Songti SC",serif;letter-spacing:8px;color:#8c795f;margin:8px 0 20px;padding-left:8px}.access-line{height:1px;width:36px;background:#c2aa83;margin:0 auto 20px}.access-intro{font:14px/1.8 "Songti SC",serif;color:#9b8a74;margin:0 0 26px;letter-spacing:2px}#accessForm{text-align:left}#accessForm label{display:block;font-size:11px;color:#887660;margin-bottom:8px;letter-spacing:1px}.password-field{display:flex;align-items:center;border:1px solid #dcd1c0;background:#fffefa;border-radius:4px;transition:border-color .2s}.password-field:focus-within{border-color:#a77c72;box-shadow:0 0 0 3px #6c253108}.password-field input{padding:12px 13px;width:100%;min-width:0;border:0;background:transparent;outline:0!important;font:14px/1.6 inherit;color:#40352e;letter-spacing:1px}.password-field input::placeholder{color:#b0a493;font-size:12px}.password-field>span{font-size:20px;color:#bfa77e;margin-right:13px}.access-error{font-size:11px;color:var(--wine);margin:8px 0 0}#accessSubmit{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;background:var(--wine);color:#fff8ee;padding:13px 16px;border-radius:4px;font-size:13px;letter-spacing:2px;margin-top:17px;position:relative;transition:background .2s}#accessSubmit:hover{background:#7a303d}#accessSubmit:disabled{opacity:.75;cursor:wait}.entry-arrow{position:absolute;right:16px;opacity:.65;font-size:19px}.access-note{font-size:10px;color:#aa9a85;letter-spacing:1px;margin:21px 0 0;min-height:16px}.access-bottom{font-size:10px;color:#b09e85;letter-spacing:2px;margin-top:24px}.button-spinner{width:14px;height:14px;border:1.5px solid #ffffff40;border-top-color:#fff8ee;border-radius:50%;animation:spin .8s linear infinite}.loading{background:#f8f4ecef;backdrop-filter:blur(3px);border-radius:2px;z-index:8;pointer-events:auto}.loading-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:25px;text-align:center;color:var(--wine);font:15px/1.6 "Songti SC",serif;letter-spacing:2px}.loading-card small{font:10px/1.8 -apple-system,sans-serif;letter-spacing:1px;color:#a18d70}.book-spinner{display:block;position:relative;width:48px;height:40px;perspective:160px;margin-bottom:5px}.book-spinner i{position:absolute;left:50%;top:4px;width:20px;height:30px;border:1px solid #b79b70;background:#f9f3e8;transform-origin:left;animation:loadingPage 1.5s ease-in-out infinite;border-radius:0 2px 2px 0}.book-spinner i:nth-child(2){animation-delay:.18s}.book-spinner i:nth-child(3){animation-delay:.36s}@keyframes spin{to{transform:rotate(360deg)}}@keyframes loadingPage{0%,15%{transform:rotateY(0);opacity:0}25%{opacity:1}75%{transform:rotateY(-180deg);opacity:1}95%,100%{transform:rotateY(-180deg);opacity:0}}@media(max-width:500px){.access-screen{padding:25px 20px}.access-card{padding:30px 25px 24px}.access-card h1{font-size:26px;letter-spacing:3px}.access-top{margin-bottom:18px}.access-bottom{margin-top:18px}}@media(prefers-reduced-motion:reduce){.book-spinner i,.button-spinner{animation-duration:2.5s!important}}

.access-card.access-minimal{background:transparent;border:0;box-shadow:none;padding:0;width:min(310px,100%)}.access-minimal .password-field input{text-align:center;letter-spacing:2px}.access-minimal #accessSubmit{margin-top:16px}

/* One spine and a rigid cover share the same moving coordinate system. */
.jacket-scene{position:absolute;left:0;top:0;z-index:12;perspective:2400px;perspective-origin:50% 50%;transform-origin:0 0;pointer-events:none;will-change:transform;isolation:isolate}.jacket-fixed,.jacket-flap{position:absolute;top:0;width:50%;height:100%;background:#fff}.jacket-fixed{box-shadow:0 12px 18px #3c26151d}.jacket-fixed img,.jacket-face img{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.jacket-flap{transform-style:preserve-3d;background:transparent;z-index:3;will-change:transform}.jacket-face{position:absolute;inset:0;background:#fff;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;border-radius:1px;transform:translateZ(.12px);box-shadow:0 10px 18px #3c26151b}.jacket-reverse{transform:rotateY(180deg) translateZ(.12px)}.jacket-shade{position:absolute;inset:0;background:linear-gradient(90deg,#47331a88,transparent 55%);pointer-events:none;opacity:0}.jacket-reverse .jacket-shade{background:linear-gradient(-90deg,#47331a88,transparent 55%)}.jacket-spine{position:absolute;left:calc(50% - 10px);top:0;bottom:0;width:20px;z-index:2;background:linear-gradient(90deg,transparent,#3b26100e 40%,#3b26101a 50%,#3b26100b 62%,transparent);pointer-events:none}

/* Explicit page motion also covers directory and inserted-blank boundaries. */
.leaf.motion-active{display:block;will-change:transform;pointer-events:none}.face{-webkit-backface-visibility:hidden;backface-visibility:hidden}.face.front{transform:translateZ(.1px)}.face.back{transform:rotateY(180deg) translateZ(.1px)}

/* Printed-page navigation labels remain readable beside the spread. */
.edge{width:56px;font:13px/1.4 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;white-space:nowrap}.prev{left:-62px}.next{right:-62px}.page-nav{font-size:12px;min-height:38px;padding:6px 9px;white-space:nowrap}#pageInput{width:68px}@media(max-width:900px){main{padding-left:64px;padding-right:64px}.prev{left:-60px}.next{right:-60px}.edge{width:56px}}@media(max-width:500px){main{padding-left:58px;padding-right:58px}.prev{left:-56px}.next{right:-56px}.edge{width:52px;font-size:12px}.page-nav{padding:6px;font-size:12px}#jump{gap:5px}.page-controls{gap:3px}}

/* Give the book all available height, with equal space above and below. */
main{padding-top:12px;padding-bottom:12px}@media(max-width:900px){main{padding-top:8px;padding-bottom:8px}}

.access-submit-spinner{display:inline-block;flex:none;width:17px;height:17px;border:2px solid #ffffff40;border-top-color:#fff8ee;border-radius:50%;animation:entrySpin .8s linear infinite}@keyframes entrySpin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.access-submit-spinner{animation:none!important}}

/* Compact reading controls and a full-width single-page viewport. */
.reader-app header{height:44px;min-height:44px;padding:0 16px;gap:8px}
.reader-app header .icon{height:42px;min-height:42px;min-width:40px;font-size:19px}
.brand{font-size:18px;line-height:1.15;gap:8px}
.brand small{display:inline;margin-inline-start:6px;font-size:11px;letter-spacing:1px}
.cross{font-size:21px}
.reader-app footer{min-height:42px;padding:3px 14px 7px;gap:8px}
.reader-app footer #pageInput{padding-block:3px}
.reader-app footer .tools button{padding-block:4px}
.reader-app main{padding-block:4px}
.reading-viewport{width:100%;height:100%;min-width:0;display:flex;align-items:center;justify-content:center}
.page-focus-trigger{position:absolute;inset:0;width:100%;height:100%;padding:0;border-radius:0;cursor:pointer}
.page-focus-trigger:focus-visible{outline-offset:-3px}
.paper .hotspot{z-index:1}
.mode-exit{margin-inline-start:auto;flex:none;height:36px;padding:0 10px;border:1px solid var(--line);font-size:13px}
.focused-reader .reading-viewport{
  flex-direction:column;justify-content:flex-start;overflow:auto;
  overscroll-behavior:contain;touch-action:pan-y pinch-zoom;
}
.focused-reader .book{
  flex:none;width:min(100%,960px);height:auto;aspect-ratio:auto;
  margin-block:auto;
}
@media(max-width:600px){
  .reader-app header{padding:0 8px}
  .brand{font-size:16px}
  .reader-app main{padding-inline:38px}
  .edge{width:36px;padding:0;font-size:11px}
  .prev{left:-37px}
  .next{right:-37px}
  .focused-reader main{padding:0}
  .focused-reader .edge{display:none}
}

.reader-opening{text-align:center;color:var(--wine)}
.reader-opening .access-submit-spinner{border-color:#6c25312a;border-top-color:var(--wine)}
#readerRetry{min-height:40px;padding:0 18px;border:1px solid var(--line)}

/* Keep the two visible margins independent of the original paper margins. */
.focused-reader .spread{position:relative;inset:auto;display:block;padding-inline:2mm;background:#fff}
.focused-reader .paper{height:auto}
.paper-surface{position:absolute;inset-block:0}

.single-slide-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:6}
.focused-reader .single-slide-layer .book{position:absolute;margin:0;max-width:none}

.reader-app:not(.focused-reader) main{padding-inline:8px}
.reader-app:not(.focused-reader) .reading-viewport{flex-direction:column}
.reader-app:not(.focused-reader) .book{flex:none}
footer .page-controls{gap:6px}
.page-turn-button{
  min-width:48px;min-height:32px;padding:0 6px;white-space:nowrap;
  border:1px solid var(--line);font-size:12px;background:#f8f5ef;
}

@media (max-width:767px), (max-width:950px) and (pointer:coarse){
  .reader-app footer{justify-content:center;padding:2px 8px 16px}
  .reader-app footer .tools,.reader-app footer .saved{display:none}
  #progress{
    height:16px;appearance:none;-webkit-appearance:none;
    background:transparent;touch-action:none;
  }
  #progress::-webkit-slider-runnable-track{height:4px;background:var(--line)}
  #progress::-webkit-slider-thumb{
    -webkit-appearance:none;width:12px;height:12px;margin-top:-4px;
    border-radius:50%;background:var(--wine);
  }
  #progress::-moz-range-track{height:4px;background:var(--line)}
  #progress::-moz-range-thumb{
    width:12px;height:12px;border:0;border-radius:50%;background:var(--wine);
  }
}

@media (pointer:coarse){.page-focus-trigger,.paper.blank{cursor:zoom-in}}
