:root{--wood:#2b1a12;--parch:#f3e6c8;--gold:#c9a227;--ink:#1d1a16}
html,body{margin:0;background:#140c08;color:var(--parch);font-family:'Cormorant Garamond',serif;min-height:100vh}
.shelves-bg{position:fixed;inset:0;z-index:-2;
background:
 repeating-linear-gradient(180deg,transparent 0 110px,#1a0f09 110px 124px),
 repeating-linear-gradient(90deg,#24150d 0 18px,#2e1b11 18px 30px,#1e110a 30px 44px,#331e12 44px 52px),
 #1b100a;
opacity:.55;filter:blur(1px)}
.shelves-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 20%,#0b0604 80%)}
.candle{position:fixed;left:50%;top:45%;width:900px;height:700px;transform:translate(-50%,-50%);z-index:-1;
background:radial-gradient(ellipse,rgba(255,190,90,.22),transparent 65%);animation:flick 3s infinite alternate;pointer-events:none}
@keyframes flick{0%{opacity:.8}30%{opacity:1}55%{opacity:.85}80%{opacity:.97}100%{opacity:.9}}
.fell{font-family:'IM Fell English',serif}
.mono{font-family:'Courier Prime',monospace}
.paper{background:radial-gradient(ellipse at center,#f6ebd0 40%,#e3cfa2 100%);color:var(--ink);
box-shadow:inset 0 0 60px rgba(120,80,30,.35),0 20px 50px rgba(0,0,0,.6)}
.page-text{font-family:'Courier Prime',monospace;font-size:13px;line-height:1.55;word-break:break-all;white-space:pre-wrap;letter-spacing:.02em}
@media(min-width:768px){.page-text{font-size:14px}}
.hl{background:rgba(201,162,39,.45);border-radius:2px;cursor:help;box-shadow:0 0 6px rgba(201,162,39,.6)}
.flip-n{animation:flipN .45s ease}
.flip-p{animation:flipP .45s ease}
@keyframes flipN{0%{transform:perspective(1200px) rotateY(-35deg);opacity:0;transform-origin:left}100%{transform:none;opacity:1}}
@keyframes flipP{0%{transform:perspective(1200px) rotateY(35deg);opacity:0;transform-origin:right}100%{transform:none;opacity:1}}
.spine{writing-mode:vertical-rl;transition:transform .3s, box-shadow .3s;cursor:pointer;
background-image:linear-gradient(90deg,rgba(0,0,0,.35),rgba(255,255,255,.12) 30%,rgba(0,0,0,.1) 60%,rgba(0,0,0,.4));
border-top:3px solid rgba(201,162,39,.5);border-bottom:3px solid rgba(201,162,39,.5)}
.spine:hover{transform:translateY(-8px)}
.spine.cur{transform:translateY(-16px);box-shadow:0 0 25px rgba(255,200,100,.6)}
.shelf-slide{animation:slide .4s ease}
@keyframes slide{from{opacity:.3;transform:translateX(var(--dx,0))}to{opacity:1;transform:none}}
.btn{border:1px solid rgba(201,162,39,.5);color:var(--gold);transition:.2s}
.btn:hover{background:rgba(201,162,39,.15);color:#f5d97a}
.dust{position:fixed;width:3px;height:3px;border-radius:50%;background:rgba(255,220,160,.5);pointer-events:none;animation:drift linear infinite}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(60px,-110vh)}}
.toast{animation:toast 3.5s forwards}
@keyframes toast{0%{opacity:0;transform:translateY(20px)}10%,85%{opacity:1;transform:none}100%{opacity:0}}
.rise{animation:rise .8s ease both}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
input{background:#1d120c;border:1px solid rgba(201,162,39,.4);color:var(--parch);padding:4px 8px;border-radius:4px}