.novel-paged-reader {
  --paper: #f4f2ed; --paper-ink: #27211d; --paper-line: #d7d2c9;
  width: 100%; margin: 40px auto 0; color: var(--paper-ink); background: var(--paper);
  border: 1px solid var(--paper-line); border-radius: 4px; overflow: clip;
  font-family: var(--reader-font, "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif);
}
.novel-paged-reader button { font: inherit; color: inherit; background: transparent; border: 1px solid var(--paper-line); border-radius: 4px; padding: 8px 12px; cursor: pointer; }
.novel-paged-reader button:disabled { opacity: .35; cursor: default; }
.novel-paged-reader :focus-visible { outline: 2px solid #80634a; outline-offset: 3px; }
.novel-page-toolbar { position: sticky; top: 0; z-index: 20; background: var(--paper); display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--paper-line); padding: 12px 20px; font: 14px/1.5 sans-serif; }
.novel-page-toolbar-nav { display: flex; gap: 8px; }
.novel-page-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); position: relative; }
.novel-index { padding: 24px 18px; border-right: 1px dashed #aaa197; position: sticky; top: 64px; max-height: calc(100dvh - 76px); overflow-y: auto; align-self: start; overscroll-behavior: contain; }
.novel-index-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px; font: 600 13px/1.5 sans-serif; letter-spacing: .12em; }
.novel-index-heading small { font-weight: normal; letter-spacing: 0; padding-left: 8px; }
.novel-index nav { display: grid; gap: 3px; }
.novel-index a { display: block; color: inherit; text-decoration: none; padding: 7px 8px; border-radius: 3px; font-size: 15px; line-height: 1.6; overflow-wrap: anywhere; }
.novel-index a:hover { background: #e9e4da; }
.novel-index a[aria-current="location"] { background: #e7e0d4; font-weight: bold; box-shadow: inset 3px 0 #80634a; }
.novel-index a.novel-index-child { padding-left: 24px; }
.novel-index a.novel-index-person { padding-left: 40px; font-size: 14px; }
.novel-index-toggle, .novel-index-heading [data-index-close] { display: none; }
.novel-page-main { min-width: 0; padding: clamp(24px, 5vw, 64px); }
.novel-reading-page { max-width: 760px; margin: 0 auto; min-height: 55vh; scroll-margin-top: 80px; }
.novel-reading-page [id] { scroll-margin-top: 80px; }
.novel-notices { border-top: 1px solid var(--paper-line); margin-top: 48px; padding-top: 24px; font-size: var(--reader-font-size, 18px); line-height: 2; }
.novel-reading-page[hidden], .novel-index-backdrop[hidden] { display: none !important; }
.novel-page-heading { display: flex; align-items: start; justify-content: space-between; gap: 16px; padding-bottom: 25px; margin-bottom: 28px; border-bottom: 1px solid var(--paper-line); }
.novel-page-heading h2 { color: inherit; margin: 0; font: 500 clamp(25px, 3vw, 36px)/1.55 var(--reader-font, "Yu Mincho", serif); overflow-wrap: anywhere; }
.novel-paged-reader .novel-page-bookmark { flex: 0 0 auto; font: 13px/1.5 sans-serif; }
.novel-page-bookmark[aria-pressed="true"] { background: #72523a; color: #fff; border-color: #72523a; }
.novel-english-title { font-size: 19px; font-style: italic; }
.novel-author { margin: 28px 0 54px; font-size: 18px; }
.novel-reading-page h3 { color: inherit; font-size: 25px; font-weight: 500; margin: 48px 0 24px; }
.novel-reading-page h4 { color: inherit; font-size: 22px; font-weight: 500; margin: 36px 0 16px; }
.novel-page-prose { white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--reader-font-size, 18px); line-height: 2; }
.novel-page-footer { border-top: 1px solid var(--paper-line); margin-top: 48px; padding-top: 24px; display: flex; justify-content: space-between; align-items: center; gap: 12px; font: 13px/1.5 sans-serif; }
.novel-reader-message { min-height: 1.5em; font: 14px/1.5 sans-serif; }
.work-reader-content.is-reader-locked .novel-paged-reader { max-height: 360px; overflow: hidden; }
.novel-resume-actions { display: flex; flex-wrap: wrap; gap: 12px; }
@media (max-width: 800px) {
  .novel-page-layout { display: block; }
  .novel-index-toggle, .novel-index-heading [data-index-close] { display: inline-block; }
  .novel-page-toolbar { padding: 10px; gap: 6px; font-size: 12px; }
  .novel-page-toolbar-nav { gap: 4px; }
  .novel-paged-reader .novel-page-toolbar button { padding: 8px; }
  .novel-index { position: fixed; inset: 0 auto 0 0; width: min(300px, 85vw); box-sizing: border-box; z-index: 81; max-height: 100dvh; background: var(--paper); transform: translateX(-101%); visibility: hidden; transition: transform 220ms ease, visibility 220ms; border-right: 1px solid var(--paper-line); padding-top: max(24px, env(safe-area-inset-top)); }
  .novel-paged-reader.is-index-open .novel-index { transform: translateX(0); visibility: visible; }
  .novel-index-backdrop { position: fixed; inset: 0; width: 100%; height: 100dvh; z-index: 80; background: #0008 !important; border: 0 !important; border-radius: 0 !important; }
  .novel-page-main { padding: 28px 20px 16px; }
  .novel-page-heading { gap: 8px; }
  .novel-page-bookmark span { display: none; }
  .novel-page-footer { gap: 6px; font-size: 12px; }
  .novel-page-footer button { padding: 8px 6px; }
}
@media (prefers-reduced-motion: reduce) { .novel-index { transition: none; } }

/* Reading rhythm: 1.5 line-height within paragraphs, one line between them. */
.novel-page-main { padding-top: 0; }
.novel-reading-page { padding-top: 48px; }
.novel-page-prose, .novel-notices { line-height: 1.5; }
.novel-page-prose > p { margin: 0 0 1.5em; white-space: pre-wrap; }
.novel-page-prose > p:last-child { margin-bottom: 0; }
.novel-notices p { margin: 0 0 1.5em; }
@media (max-width: 800px) {
  .novel-page-main { padding-top: 0; }
  .novel-reading-page { padding-top: 36px; }
}

/* Character profiles: name, compact age/occupation, then biography. */
.novel-person { margin-top: 48px; }
.novel-person + .novel-person { margin-top: 56px; }
.novel-reading-page .novel-person h4 { margin: 0 0 16px; }
.novel-person-meta { margin: 0 0 1.5em; font-size: var(--reader-font-size, 18px); line-height: 1.5; }

/* Match the header's reader size across the text and its outline. */
.novel-page-heading h2 { font-size: calc(var(--reader-font-size, 18px) * 2); }
.novel-reading-page h3 { font-size: calc(var(--reader-font-size, 18px) * 1.4); }
.novel-reading-page h4 { font-size: calc(var(--reader-font-size, 18px) * 1.22); }
.novel-index a { font-size: calc(var(--reader-font-size, 18px) * .84); }
.novel-index a.novel-index-person { font-size: calc(var(--reader-font-size, 18px) * .78); }

/* Reserve the actual header height, including wrapped mobile account controls. */
body:has([data-novel-pages]) .site-header { background: var(--surface, #050505); }
.novel-page-toolbar { top: var(--novel-header-height, 0px); z-index: 5; }
.novel-index {
  top: calc(var(--novel-header-height, 0px) + var(--novel-toolbar-height, 64px) + 12px);
  max-height: calc(100dvh - var(--novel-header-height, 0px) - var(--novel-toolbar-height, 64px) - 24px);
}
.novel-reading-page, .novel-reading-page [id] {
  scroll-margin-top: calc(var(--novel-header-height, 0px) + var(--novel-toolbar-height, 64px) + 48px);
}
@media (max-width: 800px) {
  .novel-index { top: var(--novel-header-height, 0px); max-height: calc(100dvh - var(--novel-header-height, 0px)); }
  .novel-index-backdrop { top: var(--novel-header-height, 0px); height: calc(100dvh - var(--novel-header-height, 0px)); }
}
