:root{color-scheme:dark;--bg:#191817;--text:#e8e4db;--muted:#92908a;--line:#ffffff20;--surface:#211f1c;--reader-bg:#191817d9;--toolbar-bg:#191817e8;--backdrop:#0d0c0be0;--reader-backdrop:#13121088;--secondary:#c6c0b6;--author:#b6afa4;--caption:#a29b8e;--hint:#a7a299;--subheading:#a9a195;--border:#ffffff30;--hover:#ffffff18;--glow:#34302a4d;--shelf-shadow:#0006;--serif:Georgia,'Songti SC','Noto Serif CJK SC',STSong,serif;--sans:Arial,'PingFang SC','Microsoft YaHei',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:1px solid var(--text);outline-offset:8px}button:active{scale:.98}::selection{background:#d8cfb9;color:#211e18}.skip{position:fixed;top:-100px;left:20px;padding:14px;background:#eee;color:#222;z-index:30}.skip:focus{top:12px}header{position:absolute;inset:0 0 auto;padding:28px 3.5%;display:flex;justify-content:space-between;align-items:center;z-index:2}.brand{display:flex;gap:13px;align-items:center;font-family:var(--serif);font-size:24px;letter-spacing:3px}.brand svg{width:29px;height:39px;fill:none;stroke:currentColor;stroke-width:1.25}.brand small{display:block;font-size:12px;letter-spacing:1px;margin-top:5px}.header-right{display:flex;gap:40px;align-items:center;font-size:12px}.collection-label{font-size:10px;color:var(--muted);letter-spacing:2px}.header-right button{min-height:44px;padding:0 5px}.header-right button span{margin-left:12px}main{min-height:740px;height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:135px 70px 105px;position:relative;isolation:isolate}main:before{content:'';position:absolute;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 50% 48%,var(--glow),transparent 65%)}.shelf-heading{width:min(660px,65vw);display:flex;justify-content:space-between;align-items:center;font-size:9px;color:var(--muted);letter-spacing:1.8px;margin-bottom:25px}.shelf-heading>span:last-child{font-size:10px;letter-spacing:1px;color:var(--hint)}.shelf-heading>span:last-child>span{font-size:16px;margin-left:10px}.stack{width:min(660px,65vw);display:flex;flex-direction:column;gap:7px;perspective:1700px}.shelf-slot{--cloth:#e26d52;--cloth-dark:#ad483a;--ink:#301d19;--thick:66px;position:relative;width:100%;height:148px;perspective:1500px;text-align:left;padding:0;isolation:isolate}.volume{position:absolute;bottom:51px;left:0;width:100%;height:410px;transform-style:preserve-3d;transform-origin:50% 100%;transform:rotateX(77deg);transition:transform 450ms cubic-bezier(.22,.7,.23,1)}.cover{position:absolute;inset:0;transform:translateZ(calc(var(--thick)/2));background:var(--cloth);overflow:hidden;border-radius:3px;box-shadow:inset 0 0 2px #fff8}.cover img{display:block;position:absolute;width:410px;height:100%;left:50%;top:0;object-fit:fill;transform:translateX(-50%) rotate(-90deg) scale(1.61);transform-origin:center}.cover:after{content:'';position:absolute;inset:0;box-shadow:inset 0 -5px 5px #0003,inset 0 2px 2px #fff7;background:linear-gradient(0deg,#0001,transparent 40%)}.spine{position:absolute;top:100%;left:0;width:100%;height:var(--thick);transform-origin:50% 0;transform:translateZ(calc(var(--thick)/2)) rotateX(-90deg);background:var(--cloth);color:var(--ink);display:flex;align-items:center;justify-content:space-between;padding:0 29px;box-shadow:inset 0 2px 2px #ffffff50,inset 0 -5px 5px #0004,0 8px 12px #0003;border-radius:2px;overflow:hidden}.spine:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#00000026,transparent 3%,transparent 96%,#0003),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.22' d='M0 0h150v150H0z'/%3E%3C/svg%3E");mix-blend-mode:multiply}.spine-author{font-family:var(--serif);font-size:14px;letter-spacing:1px;position:relative;min-width:168px}.spine-author small{display:block;font-family:var(--sans);font-size:8px;letter-spacing:1.5px;margin-top:5px}.spine-title{font-family:var(--serif);font-size:28px;letter-spacing:2px;text-align:center;position:relative;white-space:nowrap}.spine-title small{display:block;font-family:Georgia,serif;font-size:12px;letter-spacing:.3px;margin-top:3px}.bolano .spine-title{font-family:Georgia,serif;font-size:44px;letter-spacing:2px;margin-right:20px}.spine-mark{font-family:var(--serif);font-size:10px;min-width:45px;text-align:center;position:relative;border-left:1px solid currentColor;padding-left:14px;margin-left:20px}.spine-mark>span{display:block;font-size:15px;margin-top:2px}.edge{position:absolute;inset:4px 0 0 auto;width:calc(var(--thick) - 5px);height:calc(100% - 4px);transform-origin:100% 50%;transform:rotateY(-90deg) translateX(calc(var(--thick)/2));background:repeating-linear-gradient(90deg,#d1c9b8 0 1px,#e8dfd1 1px 3px)}.pick-hint{position:absolute;right:-52px;top:58px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:50%;opacity:0;transform:translateX(-7px);transition:opacity 200ms,transform 200ms}.austen{--cloth:#bb9d1b;--cloth-dark:#897010;--ink:#332e13;--thick:60px}.austen .volume{transform:rotateX(77deg) rotateZ(-.6deg)}.ferrante{--cloth:#d4e0df;--cloth-dark:#b5cbc9;--ink:#204c55;--thick:58px}.ferrante .volume{transform:rotateX(77deg) rotateZ(.5deg)}.shelf-caption{font-family:var(--serif);color:var(--caption);font-size:13px;letter-spacing:3px;margin:25px 0 0}footer{position:absolute;bottom:25px;left:3.5%;right:3.5%;display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:1.5px;color:var(--muted)}footer>.book-count{position:absolute;left:50%;transform:translateX(-50%);font-size:8px;letter-spacing:2px}footer button{border:1px solid var(--border);border-radius:50%;font-family:Georgia,serif;font-size:17px;width:44px;height:44px}dialog{border:0;color:var(--text);background:var(--surface);max-height:90svh;padding:55px;width:min(560px,calc(100% - 30px));box-shadow:0 30px 100px #0008}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(12px)}dialog[open]{animation:open 300ms cubic-bezier(.22,.7,.23,1)}@keyframes open{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}#reader{width:100vw;max-width:none;height:100svh;max-height:none;margin:0;padding:0;overflow:auto;background:#201e1b}#reader[data-book="1"]{background:#201f18}#reader[data-book="2"]{background:#1c2223}.reader-toolbar{display:flex;align-items:center;justify-content:space-between;padding:25px 4%;position:sticky;top:0;background:inherit;z-index:5;border-bottom:1px solid var(--line)}.back{display:flex;gap:16px;align-items:center;min-height:44px;font-size:12px}.back span{font-size:20px}.reader-arrows{display:flex;gap:14px}.reader-arrows button{width:44px;height:44px;border:1px solid var(--border);border-radius:50%;font-size:19px}.reader-layout{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:7%;padding:65px 6% 80px}.reader-display{position:sticky;top:160px;align-self:start;perspective:1600px;display:flex;align-items:center;flex-direction:column;padding-top:12px}.standing-book{width:min(310px,27vw);position:relative;transform:rotateY(-14deg) rotateZ(-2deg);transform-style:preserve-3d;box-shadow:-18px 30px 45px #0008;transition:transform 400ms ease}.standing-book>img{width:100%;display:block;position:relative;z-index:1;border-radius:1px 3px 3px 1px}.standing-book:after{content:'';position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,#0005,transparent 2%,#fff3 3%,#0001 5%,transparent 9%,transparent 97%,#0003);pointer-events:none}.standing-pages{position:absolute;top:2px;bottom:2px;width:27px;right:-26px;transform-origin:left;transform:rotateY(55deg);background:repeating-linear-gradient(90deg,#c1b9a7 0 1px,#e9e0d2 1px 3px);border-radius:0 4px 4px 0}#edition{font-size:10px;letter-spacing:1px;color:var(--muted);margin:35px 0 0;text-align:center}.reader-kicker{font-size:9px;letter-spacing:2px;color:var(--muted);line-height:1.8;margin:0 0 21px}article h1{font-family:var(--serif);font-size:51px;font-weight:400;letter-spacing:1px;line-height:1.25;margin:0 0 17px;text-wrap:balance}.reader-author{font-size:12px;color:var(--author);letter-spacing:1px;line-height:1.8}.reader-intro{font-family:var(--serif);font-size:22px;line-height:1.7;letter-spacing:1px;margin:31px 0}.reader-copy{border-top:1px solid var(--line);padding-top:24px}.reader-copy h2{font-size:11px;font-weight:400;color:var(--subheading);letter-spacing:2px;margin:0 0 12px}.reader-copy p{font-size:14px;line-height:1.95;color:var(--secondary);margin:0 0 26px;max-width:65ch}#source-link{display:inline-flex;gap:32px;align-items:center;min-height:44px;font-size:11px;border-bottom:1px solid var(--border)}.about-close{position:absolute;right:17px;top:14px;width:44px;height:44px;font-size:26px}#about h2,#help h2{font-family:var(--serif);font-size:32px;font-weight:400;line-height:1.5;margin:18px 0 24px}#about p,#help p{font-size:14px;line-height:1.9;color:var(--secondary)}#about .credits{font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding-top:20px;margin-top:30px}#about a{font-size:11px;display:inline-flex;align-items:center;min-height:44px}kbd{display:inline-block;padding:3px 9px;border:1px solid var(--line);border-radius:4px;font-family:var(--sans);font-size:11px;margin:6px 3px}body:has(dialog[open]){overflow:hidden}@media(hover:hover) and (pointer:fine){.shelf-slot:hover .volume{transform:translateY(-8px) rotateX(70deg)}.shelf-slot:hover .pick-hint{opacity:1;transform:none}.standing-book:hover{transform:rotateY(-5deg) rotateZ(0)}.reader-arrows button:hover,footer button:hover{background:var(--hover)}}.shelf-slot:focus-visible{outline-offset:14px;border-radius:4px}.shelf-slot:focus-visible .pick-hint{opacity:1;transform:none}@media(min-width:1500px){.stack,.shelf-heading{width:760px}.shelf-slot{height:165px}.volume{height:470px}.cover img{width:470px}.spine{padding-inline:36px}.spine-title{font-size:32px}}@media(max-width:900px){.stack,.shelf-heading{width:75vw}.spine{padding:0 20px}.spine-author{min-width:120px;font-size:12px}.spine-author small{font-size:7px}.spine-title{font-size:23px}.spine-title small{font-size:10px}.spine-mark{min-width:33px;margin-left:10px;padding-left:10px}.volume{height:360px}.cover img{width:360px}.reader-layout{gap:7%;padding:50px 5%}.reader-display{top:130px}article h1{font-size:37px}.reader-intro{font-size:19px}}@media(max-width:600px){header{padding:22px 6%}.brand{font-size:22px;gap:10px}.brand svg{width:25px}.brand small{font-size:10px}.header-right{gap:15px}.collection-label{display:none}main{min-height:650px;padding:140px 30px 110px;justify-content:center}.stack,.shelf-heading{width:82vw}.shelf-heading{font-size:7px;letter-spacing:1px;margin-bottom:36px}.shelf-heading>span:last-child{font-size:8px;letter-spacing:0}.shelf-heading>span:last-child>span{font-size:12px;margin-left:4px}.stack{gap:18px}.shelf-slot{height:103px;--thick:47px}.volume{height:215px;bottom:37px;transform:rotateX(74deg)}.austen .volume,.ferrante .volume{transform:rotateX(74deg)}.cover img{width:215px}.spine{padding:0 12px;gap:8px}.spine-author{min-width:0;font-size:9px;letter-spacing:0;flex:0 0 75px}.spine-author small{font-size:5px;letter-spacing:.5px;margin-top:4px}.spine-title{font-size:17px;letter-spacing:1px;white-space:nowrap}.spine-title small{font-size:8px;letter-spacing:0;margin-top:3px}.bolano .spine-title{font-size:31px;margin-right:10px}.spine-mark{font-size:7px;min-width:21px;margin-left:0;padding-left:7px}.spine-mark>span{font-size:10px}.pick-hint{display:none}.shelf-caption{font-size:11px;letter-spacing:2px;margin-top:31px}footer{left:6%;right:6%;bottom:21px;font-size:9px}footer>.book-count{display:none}.reader-toolbar{padding:13px 5%}.reader-arrows{gap:8px}.reader-layout{grid-template-columns:1fr;gap:45px;padding:30px 8% 65px}.reader-display{position:relative;top:auto}.standing-book{width:205px}#edition{margin-top:25px;font-size:9px}.reader-kicker{font-size:8px}article h1{font-size:40px}.reader-intro{font-size:21px}.reader-copy p{font-size:14px}dialog{padding:45px 28px}#about h2{font-size:29px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Shared solid book. Every face uses the same dimensions in both views. */
.stack{--book-width:240px;--book-height:370px;position:relative;display:block;width:min(760px,85vw);height:410px;perspective:none}
.shelf-heading{width:min(760px,85vw);margin-bottom:48px}
.shelf-slot{position:absolute;left:0;bottom:22px;width:76px;height:var(--book-height);padding:0;isolation:auto;perspective:1400px;transition:transform 420ms cubic-bezier(.22,.8,.25,1);--cloth:#c55f42;--ink:#271a14;--thickness:44px}
.shelf-slot:active{scale:1}.shelf-slot.austen{--cloth:#ba9b29;--ink:#292616;--thickness:36px}.shelf-slot.ferrante{--cloth:#cbdcda;--ink:#20464c;--thickness:32px}
.book-anchor{position:absolute;width:var(--book-width);height:var(--book-height);left:50%;top:0;margin-left:calc(var(--book-width)/-2);perspective:1400px;pointer-events:none}
.book-object{position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateY(90deg);transition:transform 420ms cubic-bezier(.22,.8,.25,1)}
.shelf-slot.is-preview .book-object{transform:translateY(-18px) rotateY(20deg) rotateZ(-2deg)}
.book-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.book-front,.book-back{inset:0;background:var(--cloth);border-radius:2px;box-shadow:0 1px 3px #0004}
.book-front{transform:translateZ(calc(var(--thickness)/2));overflow:hidden}.book-front img{display:block;width:100%;height:100%;object-fit:fill}.book-front:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0007,transparent 2%,#fff3 3%,#0002 5%,transparent 10%,transparent 96%,#0003)}
.book-back{transform:rotateY(180deg) translateZ(calc(var(--thickness)/2));padding:28px 23px;display:flex;flex-direction:column;justify-content:space-between;color:var(--ink);font-family:var(--serif);background-image:linear-gradient(90deg,#0002,transparent 8%,transparent 95%,#0003)}.book-back strong{font-size:24px;font-weight:400}.book-back p{font-size:13px;line-height:1.9}.book-back small{font:8px var(--sans);letter-spacing:2px}
.book-spine{width:var(--thickness);height:100%;left:calc(50% - var(--thickness)/2);transform:rotateY(-90deg) translateZ(calc(var(--book-width)/2));background:linear-gradient(90deg,#0003,transparent 14%,#ffffff19 48%,#0003),var(--cloth);color:var(--ink);display:flex;align-items:center;justify-content:space-between;flex-direction:column;padding:23px 5px;font-family:var(--serif);border-radius:2px;box-shadow:inset 1px 0 #fff3}
.book-spine strong{writing-mode:vertical-rl;font-size:20px;letter-spacing:3px;font-weight:400}.book-spine small{writing-mode:vertical-rl;font-size:10px;letter-spacing:1px}
.book-pages{width:calc(var(--thickness) - 4px);height:calc(100% - 6px);top:3px;left:calc(50% - (var(--thickness) - 4px)/2);transform:rotateY(90deg) translateZ(calc(var(--book-width)/2 - 2px));background:repeating-linear-gradient(90deg,#ded5c3 0 1px,#f4edde 1px 3px)}
.book-top,.book-bottom{width:calc(100% - 3px);height:calc(var(--thickness) - 4px);left:1px;top:calc(50% - (var(--thickness) - 4px)/2);background:repeating-linear-gradient(0deg,#c9c0ae 0 1px,#ece4d3 1px 3px)}.book-top{transform:rotateX(90deg) translateZ(calc(var(--book-height)/2 - 2px))}.book-bottom{transform:rotateX(-90deg) translateZ(calc(var(--book-height)/2 - 2px))}
.index{top:auto;bottom:-35px;left:50%;transform:translateX(-50%);font-size:10px}.shelf-caption{margin-top:30px;min-height:20px}.stack:after{content:'';position:absolute;bottom:0;left:4%;right:4%;height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent);box-shadow:0 12px 24px 4px var(--shelf-shadow);pointer-events:none}
.shelf-slot:focus-visible{outline-offset:12px}.shelf-slot.is-away .book-anchor{visibility:hidden}
#reader{background:var(--reader-bg)!important;animation:none}#reader::backdrop{background:var(--reader-backdrop);backdrop-filter:blur(14px)}.reader-toolbar{background:transparent}.reader-layout{padding-top:55px}.reader-display{--book-width:280px;--book-height:432px;--thickness:40px;--cloth:#c55f42;--ink:#271a14}
.book-stage{width:var(--book-width);height:var(--book-height);perspective:1400px;cursor:grab;touch-action:none;position:relative}.book-stage:active{cursor:grabbing}.book-stage:focus-visible{outline:1px solid var(--border);outline-offset:20px}
.standing-book,.standing-book:hover{width:100%;height:100%;box-shadow:none;transform:none;transition:none;transform-style:preserve-3d}.standing-book:after{display:none}.standing-book .book-object{transform:rotateX(-5deg) rotateY(20deg);transition:none}.rotation-tools{display:flex;align-items:center;gap:24px;margin-top:30px;color:var(--muted);font-size:10px;letter-spacing:1px}.rotation-tools button{min-height:44px;font-size:10px}#edition{margin-top:4px}#reader[open] .standing-book{animation:none}
.book-flight{position:fixed;margin:0;pointer-events:none;z-index:20;perspective:1400px;transform-origin:top left}.book-flight .book-object{transition:none}.reader-layout article,.reader-toolbar,.rotation-tools,#edition{transition:opacity 180ms}.is-transitioning .reader-layout article,.is-transitioning .reader-toolbar,.is-transitioning .rotation-tools,.is-transitioning #edition{opacity:0}
@media(max-width:600px){main{min-height:690px;padding-inline:20px}.stack{--book-width:180px;--book-height:278px;width:90vw;height:330px}.shelf-heading{width:86vw;margin-bottom:35px}.shelf-heading>span:last-child{font-size:8px}.shelf-slot{width:60px;--thickness:36px}.shelf-slot.austen{--thickness:30px}.shelf-slot.ferrante{--thickness:28px}.book-spine strong{font-size:18px}.book-spine small{font-size:9px}.reader-display{--book-width:210px;--book-height:324px}.reader-layout{padding-top:30px}.reader-toolbar{background:var(--toolbar-bg)}.rotation-tools{margin-top:20px}.book-back{padding:20px}.book-back strong{font-size:20px}.book-back p{font-size:11px}.shelf-caption{font-size:12px;letter-spacing:1px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.shelf-slot.is-preview:before{content:"";position:absolute;inset:-20px auto 0 50%;width:var(--book-width);transform:translateX(-50%)}

.book-spine:after{content:"";height:10px}

/* Warm paper surfaces, with the original book colors preserved. */
:root[data-theme="light"] {
 color-scheme: light;
 --bg: #f5f2eb;
 --text: #302d27;
 --muted: #736d63;
 --line: #302d2726;
 --surface: #faf7f0;
 --reader-bg: #f5f2ebed;
 --toolbar-bg: #f5f2ebf5;
 --backdrop: #d3ccbd9e;
 --reader-backdrop: #ded7c866;
 --secondary: #514c43;
 --author: #655f55;
 --caption: #6d6558;
 --hint: #736b5f;
 --subheading: #6b6255;
 --border: #302d2740;
 --hover: #302d270c;
 --glow: #e5dccb80;
 --shelf-shadow: #55452e26;
}
#theme-toggle { min-width: 44px; }

.brand { min-width: 0; }
.brand svg { flex-shrink: 0; }
.brand small { line-height: 1.5; letter-spacing: .5px; }
.header-right { flex-shrink: 0; margin-left: 20px; }

/* Keep a small gap below the perspective-projected spine bottoms. */
@media(max-width:600px){.stack:after{bottom:8px}}

body{position:relative}
[hidden]{display:none!important}
main.is-multiline{height:auto;min-height:100svh;padding-top:180px}
.shelf-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:14px;text-align:center}
.stack.is-empty:after{display:none}
.header-right a{display:inline-flex;align-items:center;min-height:44px;font-size:12px}
@media(max-width:600px){body:has(.header-right a) header{flex-wrap:wrap;gap:16px}body:has(.header-right a) .header-right{margin-left:35px;gap:20px}}
