/* Bibliothèque-café : liseuse (couvertures originales dessinées en CSS, aucune image ni logo de média). */
.lib-modal { width: min(880px, 100%) !important; }
.lib-modal .modal-body { gap: 10px; }
.lib-modal .modal-foot { justify-content: space-between; align-items: center; }
.lib { display: grid; gap: 10px; min-width: 0; }
.lib :lang(zh-Hant), .lib :lang(zh-Hans), .lib:lang(zh) {
  font-family: "Noto Serif TC", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", var(--sans);
}
.lib :lang(zh-Hans) { font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Noto Sans TC", var(--sans); }

/* Étagère : dos des sept livres (choix rapide, tactile) */
.lib-shelf { display: flex; gap: 6px; overflow-x: auto; padding: 4px 2px 8px; scroll-snap-type: x proximity; border-bottom: 3px solid #8b6849; }
.lib-spine { flex: 0 0 auto; width: 104px; min-height: 64px; padding: 8px 8px; border-radius: 4px 6px 6px 4px; border: 0; cursor: pointer; scroll-snap-align: start;
  color: #fbf3e4; background: linear-gradient(90deg, rgba(0,0,0,.22), rgba(255,255,255,.08) 18%, rgba(0,0,0,0) 30%), var(--book, #435747);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18), 0 2px 4px rgba(0,0,0,.25); text-align: left; font: 600 12px/1.25 var(--serif); }
.lib-spine[aria-pressed="true"] { outline: 3px solid var(--gold); outline-offset: 1px; transform: translateY(-3px); }
.lib-spine-title { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

.lib-tools { display: grid; grid-template-columns: 1fr minmax(130px, 200px); gap: 8px; }
.lib-view { min-height: 240px; perspective: 1400px; }

/* Couverture */
.lib-cover-wrap { display: grid; grid-template-columns: 170px 1fr; gap: 16px; align-items: start; }
.lib-cover { position: relative; aspect-ratio: 2 / 3; border-radius: 3px 8px 8px 3px; padding: 16px 14px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px;
  color: #fbf3e4; background:
    radial-gradient(120% 80% at 30% 15%, rgba(255,255,255,.14), rgba(255,255,255,0) 60%),
    linear-gradient(90deg, rgba(0,0,0,.28) 0, rgba(0,0,0,.05) 7%, rgba(255,255,255,.07) 9%, rgba(0,0,0,0) 12%),
    var(--book, #435747);
  box-shadow: 0 10px 22px rgba(46,38,32,.3), inset 0 0 0 7px rgba(0,0,0,.06), inset 0 0 0 8px rgba(214,178,112,.55); }
.lib-cover-rule { width: 60%; height: 1px; margin-top: 10px; background: rgba(230,197,134,.8); box-shadow: 0 4px 0 rgba(230,197,134,.5); }
.lib-cover-title { font: 600 18px/1.2 var(--serif); margin-top: 10px; text-wrap: balance; }
.lib-cover-sub { font: italic 12.5px/1.3 var(--serif); opacity: .9; text-wrap: balance; }
.lib-cover-orn { margin-top: auto; font-size: 22px; color: rgba(230,197,134,.95); }
.lib-cover-foot { font: 10px/1.2 var(--sans); letter-spacing: .14em; text-transform: uppercase; opacity: .8; }
.lib-intro h3 { margin: 0 0 2px; font-size: 22px; }
.lib-sub { margin: 0 0 6px; font-style: italic; color: var(--ink-2); }
.lib-notice { margin: 6px 0 0; padding: 8px 10px; border-left: 3px solid var(--gold); background: rgba(197,155,86,.1); border-radius: 0 8px 8px 0; font-size: 13.5px; color: var(--ink-2); }
.lib-h4 { margin: 12px 0 4px; font: 600 15px var(--serif); color: var(--sage); }

/* Sommaire */
.lib-toc { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.lib-toc-item { width: 100%; display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; text-align: left; padding: 9px 10px; border-radius: 10px; border: 1px solid var(--panel-line); background: #fffaf2; cursor: pointer; color: var(--ink); font: inherit; min-height: 44px; }
.lib-toc-item:hover { background: #fff; border-color: var(--gold); }
.lib-toc-main { font-weight: 600; overflow-wrap: anywhere; }
.lib-toc-meta { grid-column: 1 / -1; font-size: 12.5px; color: var(--ink-2); }
.lib-repeat .lib-toc-item { margin-left: 18px; width: calc(100% - 18px); background: #fbf4e8; }
.lib-repeat .lib-toc-main::before { content: "↳ "; color: var(--gold); }
.lib-badge { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; background: rgba(67,87,71,.1); color: var(--sage); white-space: nowrap; }
.lib-badge.st-episode { background: #526d51; color: #fff; }
.lib-badge.st-pending { background: #c9a55a; color: #2b2015; }
.lib-badge.st-future { background: transparent; color: #7b6431; box-shadow: inset 0 0 0 1px #b28c43; }

/* Pages */
.lib-page { position: relative; padding: 14px 16px 12px 20px; border-radius: 6px 10px 10px 6px; background: #fffdf8; border: 1px solid var(--panel-line); box-shadow: inset 6px 0 0 var(--book, #435747), 0 2px 8px rgba(46,38,32,.08); display: grid; gap: 8px; transform-origin: left center; }
.lib-kicker { margin: 0; font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2); }
.lib-meta { margin: 0; font-size: 13.5px; color: var(--ink-2); }
.lib-title { margin: 0; font: 600 21px/1.3 var(--serif); color: var(--ink); overflow-wrap: anywhere; }
.lib-title:focus { outline: none; }
.lib-trad { margin: 0; font-style: italic; color: var(--ink-2); }
.lib-trad-label { font-style: normal; font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--sage); }
.lib-summary { margin: 0; font-size: 15px; }
.lib-caveats summary { cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--sage); min-height: 32px; display: flex; align-items: center; }
.lib-caveats ul { margin: 4px 0 0; padding-left: 18px; font-size: 13px; color: var(--ink-2); display: grid; gap: 3px; }
.lib-actions { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.lib-actions.lib-col { display: grid; gap: 6px; }
.lib-actions .hint { flex: 1 1 220px; }
.lib-source { text-decoration: none; }
.lib-unavailable { padding: 10px 12px; border-radius: 10px; background: #f8ece4; border: 1px solid rgba(119,61,53,.3); color: var(--bordeaux); display: grid; gap: 6px; justify-items: start; }
.lib-unavailable p { margin: 0; }
.lib-events ul { margin: 0; padding-left: 18px; display: grid; gap: 6px; }
.lib-block { display: block; }
.lib-same .link { padding: 2px 0; }
.lib-ref { margin: 0; text-align: right; font-size: 11.5px; }
.lib-pos { font-size: 13px; }

/* Effet de page tournée (désactivé avec la réduction des animations) */
.lib-turn-next { animation: lib-turn-next .32s ease-out; }
.lib-turn-prev { animation: lib-turn-prev .32s ease-out; }
@keyframes lib-turn-next { from { opacity: .2; transform: rotateY(-14deg) translateX(18px); } to { opacity: 1; transform: none; } }
@keyframes lib-turn-prev { from { opacity: .2; transform: rotateY(12deg) translateX(-18px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .lib-turn-next, .lib-turn-prev { animation: none; } .lib-spine[aria-pressed="true"] { transform: none; } }

/* Téléphone (390 px) */
@media (max-width: 560px) {
  .lib-cover-wrap { grid-template-columns: 96px 1fr; gap: 10px; }
  .lib-cover { padding: 8px 6px; gap: 4px; }
  .lib-cover-title { font-size: 11.5px; margin-top: 4px; }
  .lib-cover-sub, .lib-cover-foot { display: none; }
  .lib-cover-orn { font-size: 15px; }
  .lib-intro h3 { font-size: 18px; }
  .lib-tools { grid-template-columns: 1fr 112px; gap: 6px; }
  .lib-lang { padding: 0 6px; }
  .lib-spine { width: 86px; min-height: 54px; font-size: 11px; }
  .lib-page { padding: 12px 10px 10px 14px; }
  .lib-title { font-size: 18px; }
  .lib-modal .modal-foot { gap: 6px; flex-wrap: wrap; padding: 8px 10px; }
  .lib-modal .modal-foot .btn { flex: 1 1 0; padding: 0 6px; min-height: 44px; }
  .lib-pos { order: -1; flex: 1 0 100%; text-align: center; }
  .lib-notice { font-size: 12.5px; }
}

/* « Les livres et magazines d'Atef » (bibliothèque du salon gratuit) : deux onglets, cibles confortables au toucher. */
.salon-lib-tabs { display: flex; gap: 8px; margin: 10px 0 12px; flex-wrap: wrap; }
.salon-lib-tab { min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1px solid #8b6849; background: #fffaf0; color: #2e2620; font-weight: 700; cursor: pointer; }
.salon-lib-tab[aria-selected="true"] { background: #435747; border-color: #435747; color: #fff5e8; }
.salon-lib-panel { max-height: min(62vh, 640px); overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; }
.salon-lib-books { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.salon-lib-book { display: grid; grid-template-columns: 74px 1fr; gap: 12px; align-items: start; padding: 10px; border-radius: 10px; background: #fffaf0; border: 1px solid rgba(139,104,73,.25); }
.salon-lib-book b { display: block; font-size: 16px; line-height: 1.25; }
.salon-lib-book .hint { margin: 4px 0; }
.salon-lib-cover { display: flex; align-items: flex-end; width: 74px; height: 104px; padding: 7px; border-radius: 3px 7px 7px 3px; background: var(--book, #435747);
  box-shadow: inset 6px 0 0 rgba(0,0,0,.18), 0 3px 8px rgba(0,0,0,.18); color: #fff5e8; font: 600 11px/1.2 Georgia, serif; overflow: hidden; }
.salon-lib-cover span { display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }
.salon-lib-press { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.salon-lib-press li { padding: 10px 12px; border-radius: 10px; background: #fffaf0; border: 1px solid rgba(139,104,73,.25); }
.salon-lib-press .lib-meta { margin: 0 0 4px; }
.salon-lib-title { margin: 0 0 6px; font-weight: 600; }
@media (max-width: 600px) { .salon-lib-books { grid-template-columns: 1fr; } .salon-lib-panel { max-height: 64vh; } }
