.helllo-book-reader { background: #fff; }
.reader-book .book-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px; font-size: .875rem; }
.reader-book .book-actions button { font-size: .875rem; }
.reader-book .book-status { font-size: .875rem; margin: 8px 0 0; }
.reader-book .book-status:empty { display: none; }
.reader-book .book-complete { font-size: 1rem; }
.reader-book .book-toc-open { font-size: 1rem; }
.reader-book .book-toc { font-size: 1rem; }
.reader-book .book-toc a { display: block; padding: 8px; }
.reader-book .book-toc a[aria-current] { font-weight: 600; border-left: 3px solid var(--accent); }
.reader-book.is-enhanced .book-nojs { display: none; }
.reader-book.is-enhanced .book-toc { position: fixed; z-index: 50; inset: 4svh max(16px, calc((100vw - 640px) / 2)); max-height: 92svh; overflow: auto; padding: 20px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); color: var(--ink); box-shadow: 0 0 0 100vmax #0008; overscroll-behavior: contain; }
.reader-book .book-toc-close { position: sticky; top: 0; float: right; }
.reader-book.is-scroll .reader-paging { grid-template-columns: 44px 1fr 44px; }
.reader-book.is-scroll .reader-paging button { display: block; }
.reader-book.is-scroll .reader-bottom { padding-bottom: 12px; }
/* En Défilement, le témoin accessible reste unique ; sa représentation suit les commandes sticky. */
.reader-book .book-scroll-status { display: none; }
.reader-book.is-scroll .book-scroll-status { display: grid; flex: 0 0 100%; min-width: 0; }
.reader-book.is-scroll .book-scroll-progress { display: block; grid-area: 1 / 1; align-self: center; height: 4px; background: var(--rule); overflow: hidden; }
.reader-book.is-scroll .book-scroll-progress > span { display: block; width: var(--progress, 0%); height: 100%; background: #008cff; }
.reader-book.is-scroll .reader-progress { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.reader-book.is-scroll .reader-next { grid-column: 3; }
.reader-book .reader-progress > span { background: #008cff; }
@media (max-width: 47.99rem) { .reader-book .book-actions { gap: 6px 12px; } .reader-book .book-toc-open { font-size: .875rem; } }

.reader-book .book-toc-subtitle { display:block; font-size:.875em; font-weight:400; opacity:.78; }
.reader-book .book-part-opening { box-sizing:border-box; display:flex; align-items:center; justify-content:center; text-align:center; min-height:min(55svh, 30rem); padding:2em .75em; }
.reader-book.is-paged .book-part-opening { height:var(--page-height); min-height:0; padding:1em .75em; break-inside:avoid; }
.reader-book .book-part-opening p { text-align:center; margin:0 0 1em; }
.reader-book .book-part-opening p:last-child { margin-bottom:0; }
/* Le collage Writer « Texte pré-formaté » conserve <pre class="western">. */
.reader-book .recit-text pre.western { font-family:inherit; font-size:.8em; line-height:1.5; white-space:pre-wrap; overflow-wrap:anywhere; margin:1.4em 0 1.4em clamp(.75em, 4vw, 2em); padding:0; background:transparent; border:0; break-inside:auto; }
.reader-book .book-mail { display:inline-flex; align-items:center; }
.reader-book .book-mail[hidden] { display:none; }
.reader-book .book-mail svg { flex:none; }

/* La couleur appartient au lecteur, même après un collage avec des couleurs inline. */
.reader-book .book-part-opening,
.reader-book .book-part-opening * { color:var(--ink) !important; }

/* La réserve suit le retour à la ligne, sans changement de hauteur selon le total. */
.reader-book .book-presence { display:grid; margin-top:6px; color:var(--muted); font-size:.8125rem; line-height:1.5; font-variant-numeric:tabular-nums; }
.reader-book .book-presence > span { grid-area:1 / 1; }
.reader-book .book-presence-space { visibility:hidden; }
.reader-book .book-presence-text { align-self:start; }

/* Un même état, deux emplacements exclusifs : la géométrie Pages reste intacte. */
.reader-book .book-presence--top { display:none; }
.reader-book.is-scroll .book-presence--top { display:grid; grid-area:1 / 1; min-width:0; margin-top:0; padding-block:4px; text-align:center; }
/* Si le compteur est affiché, il conserve sa rangée sous la progression. */
.reader-book.is-scroll .book-scroll-status:has(.book-presence-text:not(:empty)) .book-scroll-progress { align-self:start; }
.reader-book.is-scroll .book-scroll-status:has(.book-presence-text:not(:empty)) .book-presence--top { padding-block:8px 0; }
.reader-book.is-scroll .reader-bottom > .book-presence { display:none; }
/* Le rappel sticky partage la rangée des commandes, sans changer sa hauteur. */
.reader-book.is-scroll .book-context { display:none; }
@media (min-width:48rem) {
    .reader-book.is-scroll.has-book-context .book-context { display:block; flex:1; }
}

/* Commandes du Roman uniquement ; le panneau réutilise le moteur de réglages. */
.reader-book .reader-settings { gap: 8px; }
.reader-book .reader-aa { font-size: .875rem; }
.reader-book .book-mail--top { justify-content: center; width: 44px; min-width: 44px; height: 44px; padding: 7px; margin-left: 0; }
.reader-book .reader-preferences .reader-themes { grid-column: 1 / -1; flex-wrap: wrap; gap: 8px; }
.reader-book .reader-preferences .reader-themes legend { margin-bottom: 4px; }

.reader-book .book-settings-close { grid-column: 1 / -1; justify-self: end; }

/* Le mode unique sur téléphone ne laisse aucun contrôle visible ou focusable. */
.reader-book .reader-modes[hidden] { display: none; }

/* Roman : paragraphes narratifs continus et ruptures de scène explicites. */
.reader-book [data-book-text] > p:not(:has(img, video, iframe)):has(+ p):not(:has(+ p img, + p video, + p iframe)),
.reader-book [data-book-text] > p:not(:has(img, video, iframe)):has(+ hr.helllo-scene-break) {
    margin-bottom: 0;
}
.reader-book [data-book-text] > hr.helllo-scene-break {
    box-sizing: content-box;
    width: 40px;
    height: 0;
    padding: 0;
    border: 0;
    border-top: 1px solid #008cff;
    margin: .75em auto;
    break-inside: avoid;
    break-after: avoid;
}

/* Deux lignes de respiration finale, dans les commandes du lecteur. */
.reader-book:has(.book-ending) .reader-bottom {
    padding-top: calc(12px + 3.1 * var(--reader-size, 1.25rem));
}
