:root{--gold:#c8a451;--paper:#eee4c9;--ink:#29251e;--book-w:min(96vw,129.7vh,1380px);--book-h:min(63.7vw,86vh,915px)}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#282722 0,#111210 54%,#080908 100%);color:#eee;font-family:Georgia,'Times New Roman',serif}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.3;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.08'/%3E%3C/svg%3E")}
.stage{height:100%;display:grid;place-items:center;perspective:1800px;padding:54px 20px 70px}.hint{position:fixed;top:22px;margin:0;color:#bdb6a5;font:12px Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;transition:.4s}.hint.gone{opacity:0;transform:translateY(-8px)}.notice{position:fixed;top:50px;color:#d6b977}
.book{width:var(--book-w);height:var(--book-h);max-height:72vh;position:relative;transform-style:preserve-3d;cursor:pointer;outline:none;transition:transform .35s}.book:not(.is-open){transform:rotateX(2deg) rotateY(-8deg)}.book:not(.is-open):hover{transform:translateY(-8px) rotateX(2deg) rotateY(-5deg)}
.book-shadow{position:absolute;inset:10% -7% -7%;background:#000;filter:blur(30px);opacity:.72;transform:translateZ(-40px)}
.cover{position:absolute;top:0;bottom:0;left:25%;width:50%;z-index:8;transform-style:preserve-3d;transform-origin:left center;transition:transform 1.05s cubic-bezier(.65,.03,.2,1),opacity .12s .93s}.book.is-open .cover{transform:rotateY(-180deg);opacity:0;pointer-events:none}.book.cover-gone .cover{display:none}.cover-face{position:absolute;inset:0;backface-visibility:hidden;background:linear-gradient(95deg,#080908,#161714 8%,#0b0c0b 100%);border-radius:4px 12px 12px 4px;border:1px solid #272720;box-shadow:inset 10px 0 16px #000, inset 0 0 24px #000,8px 16px 18px #000a;text-align:center;padding:7% 7%}.cover-face:after{content:"";position:absolute;inset:0;opacity:.38;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.7' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.09'/%3E%3C/svg%3E")}.cover-edge{position:absolute;top:2%;right:-10px;width:14px;height:96%;background:linear-gradient(90deg,#57451f,#c3a356,#423315);transform:rotateY(90deg);transform-origin:left}
.cover-title{font-size:clamp(27px,5.2vh,57px);line-height:.88;color:var(--gold);letter-spacing:.025em}.silhouette{height:36%;width:48%;margin:7% auto 4%;position:relative;display:flex;align-items:center;justify-content:center}.silhouette img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 1px 0 #e0c37422)}.cover-author{font-size:clamp(20px,3.6vh,39px);color:#e8e4da;letter-spacing:.025em}.gold-line{width:24%;height:2px;background:var(--gold);margin:7% auto}.cover-subtitle{font:bold clamp(10px,1.6vh,18px)/1.55 Arial,sans-serif;letter-spacing:.18em;color:#e5e2da}
.spread{position:absolute;inset:0;display:flex;transform-style:preserve-3d;border-radius:7px;opacity:0;transition:opacity .2s .52s}.book.is-open .spread{opacity:1}.paper{width:50%;height:100%;position:relative;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(circle at 30% 20%,#fff8e7aa,transparent 48%),repeating-linear-gradient(3deg,#6c572806 0,#6c572806 1px,transparent 1px,transparent 5px);box-shadow:inset 0 0 25px #6d552b2e,0 4px 8px #0006}.paper-left{border-radius:10px 2px 2px 10px;background-image:linear-gradient(90deg,transparent 82%,#49391b28 98%),radial-gradient(circle at 30% 20%,#fff8e7aa,transparent 48%)}.paper-right{border-radius:2px 10px 10px 2px;background-image:linear-gradient(90deg,#49391b32 1%,transparent 18%),radial-gradient(circle at 70% 20%,#fff8e7aa,transparent 48%)}.paper-left:after,.paper-right:before{content:"";position:absolute;top:1%;bottom:1%;width:8px;filter:blur(4px);background:#392b1666}.paper-left:after{right:-4px}.paper-right:before{left:-4px}.quote-slot{position:absolute;inset:12% 12% 14%;display:flex;align-items:center;justify-content:center}.quote{width:100%;max-height:100%;line-height:1.42;text-align:center}.quote blockquote{margin:0}.quote cite{display:block;margin-top:1.8em;font-size:.58em;font-style:normal;letter-spacing:.04em}.quote.too-long{color:#7b2020}.page-no{position:absolute;bottom:5%;left:0;right:0;text-align:center;font-size:12px;color:#7a6d58}.turning-page{display:none;position:absolute;top:0;left:50%;width:50%;height:100%;z-index:6;transform-origin:left;background:linear-gradient(90deg,#b4a98c,#f4ead1 13%,#e9ddbf);box-shadow:0 0 18px #0004}.turning-page.active{display:block}.turning-page.forward{animation:turnForward .7s ease-in-out}.turning-page.backward{left:0;transform-origin:right;animation:turnBack .7s ease-in-out}@keyframes turnForward{0%{transform:rotateY(0)}100%{transform:rotateY(-180deg)}}@keyframes turnBack{0%{transform:rotateY(0)}100%{transform:rotateY(180deg)}}
.navigation{position:fixed;bottom:14px;display:flex;align-items:center;justify-content:center;gap:9px;max-width:calc(100vw - 16px);font:11px Arial,sans-serif;letter-spacing:.1em;color:#aaa}.navigation .page-arrow{border:0;background:none;color:#cbb270;font-size:22px;padding:5px 10px;cursor:pointer}.navigation button:disabled{opacity:.22;cursor:default}.spread-navigation{display:flex;min-width:0;flex-direction:column;align-items:center;gap:7px}.spread-picker{display:flex;max-width:min(62vw,520px);align-items:center;gap:9px;overflow-x:auto;padding:5px 7px;scrollbar-width:none}.spread-picker::-webkit-scrollbar{display:none}.spread-dot{width:13px;height:13px;flex:0 0 auto;padding:0;border:1px solid #bca45f99;border-radius:50%;background:#181813;box-shadow:0 0 0 2px transparent;cursor:pointer;transition:background .2s,transform .2s,box-shadow .2s}.spread-dot:hover{background:#8f7941;transform:scale(1.12)}.spread-dot.current{background:var(--gold);box-shadow:0 0 0 3px #c8a45124;transform:scale(1.12)}
.navigation[hidden]{display:none}
@media(max-width:680px){:root{--book-w:98vw;--book-h:min(71vw,86vh)}.stage{padding:38px 4px 62px}.quote-slot{inset:9% 8% 13%}.quote{line-height:1.3}.cover-title{font-size:clamp(18px,5.8vw,43px)}.cover-author{font-size:clamp(13px,3.8vw,29px)}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}.book.is-open .cover{display:none}}

/* Плавная финальная фаза раскрытия: обложка растворяется в движении. */
.cover{opacity:1;transition:transform 1.15s cubic-bezier(.62,.02,.22,1),opacity .48s ease .58s}
.book.is-open .cover{transform:rotateY(-125deg);opacity:0}
.book.is-closing .cover{transition:transform 1.15s cubic-bezier(.62,.02,.22,1),opacity .32s ease}
.spread{transition:opacity .55s ease .3s}
/* Двусторонний лист: цитата остаётся на бумаге во время поворота. */
.turning-page{background:none;box-shadow:none;transform-style:preserve-3d}
.turning-face{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(circle at 35% 20%,#fff8e7aa,transparent 48%),repeating-linear-gradient(3deg,#6c572806 0,#6c572806 1px,transparent 1px,transparent 5px);box-shadow:inset 0 0 25px #6d552b2e,0 4px 12px #0007}
.turning-front{border-radius:2px 10px 10px 2px;background-image:linear-gradient(90deg,#49391b32 1%,transparent 18%),radial-gradient(circle at 70% 20%,#fff8e7aa,transparent 48%)}
.turning-back{transform:rotateY(180deg);border-radius:10px 2px 2px 10px;background-image:linear-gradient(90deg,transparent 82%,#49391b28 98%),radial-gradient(circle at 30% 20%,#fff8e7aa,transparent 48%)}

/* Обложки остаются физическими частями книги и закрываются с обеих сторон. */
.spread{z-index:2}
.cover{left:50%;width:50%;opacity:1;transition:transform 1.15s cubic-bezier(.62,.02,.22,1);will-change:transform}
.book.is-open .cover,.book.back-active .cover{transform:rotateY(-180deg);opacity:1}
.book.back-active .cover{visibility:hidden}
.book.covers-settled .cover{z-index:0;visibility:hidden}
.cover-inside{position:absolute;inset:0;transform:rotateY(180deg);backface-visibility:hidden;border-radius:12px 4px 4px 12px;border:1px solid #272720;background:linear-gradient(90deg,#090a09,#181916 92%,#080908);box-shadow:inset -10px 0 16px #000,inset 0 0 24px #000}
.back-cover{position:absolute;top:0;bottom:0;left:0;width:50%;z-index:0;visibility:hidden;transform-origin:right center;transform-style:preserve-3d;transition:transform 1.15s cubic-bezier(.62,.02,.22,1);will-change:transform}
.book.back-active .back-cover{visibility:visible;z-index:9}
.back-cover-surface{position:absolute;inset:0;border-radius:12px 4px 4px 12px;border:1px solid #272720;background:linear-gradient(95deg,#080908,#161714 92%,#0b0c0b);box-shadow:inset 0 0 24px #000,8px 16px 18px #000a}
.back-cover-surface:after{content:"";position:absolute;inset:0;opacity:.38;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.7' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.09'/%3E%3C/svg%3E")}
@media(prefers-reduced-motion:reduce){.book.is-open .cover{display:block!important}.cover,.back-cover{transition-duration:.01ms!important}}

/* Книга всегда остаётся в центре; во время раскрытия движется только обложка. */
.book:not(.is-open){transform:rotateX(2deg) rotateY(-8deg)}
.book:not(.is-open):hover{transform:translateY(-8px) rotateX(2deg) rotateY(-5deg)}
.cover{left:50%;transform:translateX(-50%)}
.book.is-open .cover,.book.back-active .cover{transform:translateX(0) rotateY(-180deg)}
.cover-face,.cover-inside{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.cover-face{transform:translateZ(1px)}
.cover-inside{transform:rotateY(180deg) translateZ(1px)}
.paper-left{transition:opacity .4s ease}
.book.is-open:not(.covers-settled) .paper-left{opacity:0}
.book.back-closed .back-cover{transform:translateX(-50%) rotateY(180deg)}

/* Внешний контейнер не участвует в анимации: корешок остаётся на месте. */
.book:not(.is-open),.book:not(.is-open):hover{transform:none}
.book:not(.is-open):hover .book-shadow{opacity:.82;filter:blur(34px)}

/* Бумажный разворот виден сразу, без чёрной паузы внутренней обложки. */
.cover-inside{display:none}
.book.is-open:not(.covers-settled) .paper-left{opacity:1}
.spread{transition:opacity .22s ease}

/* Задняя обложка лежит справа и закрывается через корешок справа налево. */
.back-cover{left:50%;transform-origin:left center}
.book.back-closed .back-cover{transform:translateX(50%) rotateY(-180deg)}
.back-cover-inside{position:absolute;inset:0;backface-visibility:hidden;border-radius:2px 10px 10px 2px;background-color:var(--paper);background-image:linear-gradient(90deg,#49391b32 1%,transparent 18%),radial-gradient(circle at 70% 20%,#fff8e7aa,transparent 48%);box-shadow:inset 0 0 25px #6d552b2e}
.back-cover-surface{transform:rotateY(180deg);backface-visibility:hidden;border-radius:4px 12px 12px 4px}

/* Физическая модель корешка: правая половина складывается в левую без подмены слоёв. */
.spread{opacity:1;transition:none}
.cover{left:50%;width:50%;transform:none;transform-origin:left center;opacity:1;visibility:visible;transition:transform 1.15s cubic-bezier(.62,.02,.22,1)}
.book.is-open .cover,.book.back-active .cover{transform:rotateY(-180deg);opacity:1;visibility:visible}
.book.covers-settled .cover{z-index:0;visibility:visible}
.cover-inside{display:block;transform:rotateY(180deg) translateZ(1px);color:var(--ink);border-radius:10px 2px 2px 10px;background-color:var(--paper);background-image:linear-gradient(90deg,transparent 82%,#49391b28 98%),radial-gradient(circle at 30% 20%,#fff8e7aa,transparent 48%);box-shadow:inset 0 0 25px #6d552b2e}
.paper-left{z-index:3;transform-origin:right center;transform:rotateY(180deg);backface-visibility:hidden;transition:transform 1.15s cubic-bezier(.62,.02,.22,1),opacity .4s ease}
.book.is-open .paper-left{transform:rotateY(0)}
.paper-right{z-index:1}
.paper-right{transform-origin:left center;transform:rotateY(0);backface-visibility:hidden;transition:transform 1.15s cubic-bezier(.62,.02,.22,1)}
.book.back-active .paper-left{transform:rotateY(0)}
.book.back-closed .paper-right{transform:rotateY(-180deg)}
.book:not(.is-open) .book-shadow{left:50%}
.book.back-closed .back-cover{transform:rotateY(-180deg)}

/* Передняя обложка задана слева: её правый край и есть неподвижный корешок. */
.cover{left:0;transform-origin:right center;transform:rotateY(180deg)}
.book.is-open .cover,.book.back-active .cover{transform:rotateY(0)}
.cover-face{transform:rotateY(180deg) translateZ(1px)}
.cover-inside{transform:translateZ(1px)}
.book.back-active .cover{z-index:0}
.back-cover-inside{transform:translateZ(1px);-webkit-backface-visibility:hidden;backface-visibility:hidden}
.back-cover-surface{transform:rotateY(180deg) translateZ(1px);-webkit-backface-visibility:hidden;backface-visibility:hidden}

/* После раскрытия обложка физически лежит под левым листом, а не поверх него. */
.book.covers-settled .cover{transform:rotateY(0) translateZ(-3px)}
.book.covers-settled .spread{transform:translateZ(2px)}

/* Аннотация напечатана на внешнем заднике книги. */
.back-cover-annotation{position:absolute;z-index:1;inset:8% 9% 7% 11%;display:flex;flex-direction:column;color:#e8e4da;text-align:left;font-family:Georgia,'Times New Roman',serif}
.back-cover-annotation h2{margin:0;font-size:clamp(18px,2.8vh,30px);font-weight:normal;letter-spacing:.13em}
.annotation-rule{width:18%;height:2px;margin:1.1em 0 1.6em;background:var(--gold)}
.back-cover-annotation>p{margin:0 0 1.35em;font-size:clamp(12px,1.75vh,18px);line-height:1.55}
.back-cover-annotation footer{margin-top:auto;padding-top:1.2em;border-top:1px solid #c8a45152}
.back-cover-annotation footer p{margin:0 0 1.25em;font-size:clamp(11px,1.5vh,15px);line-height:1.45;font-style:italic}
.back-cover-annotation footer strong{display:block;font:600 clamp(9px,1.25vh,13px)/1.4 Arial,sans-serif;letter-spacing:.055em;text-transform:uppercase;color:#c9c3b7}
.back-cover-annotation footer strong span{padding:0 .35em;color:var(--gold)}
@media(max-width:680px){.back-cover-annotation{inset:7% 8% 6% 10%}.annotation-rule{margin:.65em 0 .8em}.back-cover-annotation>p{margin-bottom:.7em;font-size:clamp(7px,2.4vw,12px);line-height:1.35}.back-cover-annotation footer{padding-top:.55em}.back-cover-annotation footer p{margin-bottom:.5em;font-size:clamp(6px,2.1vw,11px)}.back-cover-annotation footer strong{font-size:clamp(5px,1.7vw,9px)}}

/* До 700px та же книга показывает одну страницу, сохраняя общее состояние. */
@media(max-width:700px){
  :root{--book-w:min(88vw,50.5vh);--book-h:calc(var(--book-w) * 1.42)}
  .stage{padding:42px 4px 92px}
  .book{max-height:none;touch-action:pan-y}
  .spread{display:block}
  .paper-left{display:none}
  .paper-right{width:100%;border-radius:8px;background-image:linear-gradient(90deg,#49391b32 1%,transparent 16%),radial-gradient(circle at 62% 20%,#fff8e7aa,transparent 48%)}
  .quote-slot{inset:10% 9% 13%}
  .quote{line-height:1.34}
  .turning-page,.turning-page.backward{left:0;width:100%}
  .turning-page.forward{transform-origin:left center}
  .turning-page.backward{transform-origin:right center}
  .cover{left:0;width:100%;transform:rotateY(0);transform-origin:left center}
  .cover-face{transform:translateZ(1px)}
  .cover-inside{transform:rotateY(180deg) translateZ(1px);border-color:#272720;background:linear-gradient(95deg,#080908,#161714 92%,#0b0c0b);box-shadow:inset 0 0 24px #000}
  .book.is-open .cover,.book.back-active .cover{transform:rotateY(-180deg)}
  .book.covers-settled .cover{transform:rotateY(-180deg) translateZ(-3px)}
  .back-cover{left:0;width:100%;transform:rotateY(-180deg);transform-origin:right center}
  .back-cover-inside{transform:rotateY(180deg) translateZ(1px)}
  .back-cover-surface{transform:translateZ(1px)}
  .book.back-closed .back-cover{transform:rotateY(0)}
  .book:not(.is-open) .book-shadow{left:0}
  .navigation{bottom:14px}
  .spread-picker{max-width:64vw;gap:8px}
  .back-cover-annotation>p{font-size:clamp(10px,2.8vw,13px);line-height:1.4}
  .back-cover-annotation footer p{font-size:clamp(8px,2.3vw,11px)}
  .back-cover-annotation footer strong{font-size:clamp(7px,1.9vw,9px)}
}
