/* The warm room and music live outside the changing reader viewport. */
.library-redirecting body { visibility: hidden; }
.shelf[hidden], .library-back[hidden], .library-status[hidden] { display: none; }
body.shelf-page.library-reading { height: 100%; overflow: hidden; }
.library-viewport { --library-safe-bottom: env(safe-area-inset-bottom, 0px); position: fixed; inset: 0; z-index: 5; height: 100%; height: 100dvh; box-sizing: border-box; padding-bottom: var(--library-safe-bottom); }
.library-viewport[data-active="false"] { visibility: hidden; pointer-events: none; }
.library-frame { display: block; position: absolute; inset: 0; width: 100%; height: calc(100% - var(--library-safe-bottom)); border: 0; background: transparent; }
.library-frame[hidden] { display: block; visibility: hidden; pointer-events: none; }
.library-reader { opacity: 0; }
.library-reader.is-revealed { opacity: 1; }
.shelf[aria-busy="true"] .shelf-read { position: relative; cursor: wait; }
.shelf[aria-busy="true"] .shelf-read small { visibility: hidden; }
.shelf[aria-busy="true"] .shelf-read::after { content: 'Opening…'; position: absolute; bottom: 8px; left: 0; right: 0; font: 11px var(--font-ui); }
.library-back {
  position: fixed; z-index: 35; top: calc(20px + env(safe-area-inset-top)); left: max(24px, env(safe-area-inset-left));
  min-height: 44px; padding: 9px 14px; border: 1px solid #eedbb34d; border-radius: 6px;
  background: #33251cd6; color: #fff0cf; cursor: pointer; font: 14px var(--font-zh);
  backdrop-filter: blur(12px);
}
.library-back:hover { background: #4a3428; }
.library-back:focus-visible { outline: 2px solid #f4dfad; outline-offset: 3px; }
.library-status { position: fixed; z-index: 26; left: 50%; bottom: max(48px, env(safe-area-inset-bottom)); transform: translateX(-50%); width: max-content; max-width: calc(100vw - 64px); box-sizing: border-box; padding: 12px 18px; border-radius: 8px; text-align: center; color: #fff0cf; background: #33251ce6; font-size: 14px; line-height: 1.7; pointer-events: none; }
.library-modal #musicMount, .library-modal .library-back { visibility: hidden; pointer-events: none; }
.lightbox:not([hidden]) ~ #musicMount, .scene-view:not([hidden]) ~ #musicMount { visibility: hidden; pointer-events: none; }
.library-world { padding-top: calc(78px + env(safe-area-inset-top)); box-sizing: border-box; }

/* The reader's paper and binding keep their own colours; the room is shared. */
html.library-embedded, .library-embedded body { background: transparent !important; }
.library-embedded .room, .library-embedded .loader, .library-embedded .masthead, .library-embedded #musicMount { display: none; }
.library-embedded .scene { transition: none; }
.library-embedded .ui { transition: opacity .18s ease; }
.library-embedded :is(.library-entering, .library-leaving) .ui,
.library-embedded .library-leaving .welcome { opacity: 0; pointer-events: none; transition: none; }
.library-embedded :is(.library-entering, .library-leaving) :is(.stage, .book, .tilt) { transition: none; }
.library-embedded :is(.library-entering, .library-leaving) .scene { will-change: transform; }
.library-embedded :is(.library-entering, .library-leaving) .book-shadow { opacity: 0; transition: none; }
.library-embedded :is(.library-entering, .library-leaving) * { animation-play-state: paused !important; }
.library-embedded body.lite .stage { transition: none; }
.shelf-page.lite .library-back { backdrop-filter: none; }
.library-embedded body.loading .scene { opacity: 1; transform: none; }
.library-embedded body.library-paused * { animation-play-state: paused !important; }
@media (max-width: 600px) {
  .library-back { left: max(14px, env(safe-area-inset-left)); top: calc(17px + env(safe-area-inset-top)); font-size: 12px; padding: 8px 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .library-embedded .ui { transition: none; }
}
