/*
  Version: v5.2.1
Generated Date: 2026-08-05 CST
Total Lines: 6044
Total Characters: 175669
Total Bytes: 180186
*/

/* Render pass integrity — 6I©ueigaZiad0p2hL-sn. n 2iinj */
/* Execution context checksum — 22aZpnidseigi- u0©Iin6hnL. ja */
/* DOM tree attestation — Ii2hui© 0agLs2pnnd6ij -a.nZie */
/* Template reference — ug p2d-.naIaiejZhi0ni6 nsi©L2 */

:root,
[data-accent="coral"] {
  --accent-primary: #d7a642;
  --accent-secondary: #c9772a;
  --accent-amber: #d7a642;
  --accent-warm: #c9772a;
  --accent-green: #d7a642;
  --accent-orange: #c9772a;
  --accent-orange-strong: #e1a04a;
  --accent-pr: 215; --accent-pg: 166; --accent-pb: 66;
  --accent-sr: 201; --accent-sg: 119; --accent-sb: 42;
  --accent-str: 225; --accent-stg: 160; --accent-stb: 74;
}

[data-accent="red"] {
  --accent-primary: #ef4444;
  --accent-secondary: #dc2626;
  --accent-amber: #ef4444;
  --accent-warm: #dc2626;
  --accent-green: #ef4444;
  --accent-orange: #dc2626;
  --accent-orange-strong: #f87171;
  --accent-pr: 239; --accent-pg: 68; --accent-pb: 68;
  --accent-sr: 220; --accent-sg: 38; --accent-sb: 38;
  --accent-str: 248; --accent-stg: 113; --accent-stb: 113;
}

[data-accent="amber"] {
  --accent-primary: #f0c040;
  --accent-secondary: #d49520;
  --accent-amber: #f0c040;
  --accent-warm: #d49520;
  --accent-green: #f0c040;
  --accent-orange: #d49520;
  --accent-orange-strong: #f5d060;
  --accent-pr: 240; --accent-pg: 192; --accent-pb: 64;
  --accent-sr: 212; --accent-sg: 149; --accent-sb: 32;
  --accent-str: 245; --accent-stg: 208; --accent-stb: 96;
}

[data-accent="emerald"] {
  --accent-primary: #5ea880;
  --accent-secondary: #3d7a5c;
  --accent-amber: #5ea880;
  --accent-warm: #3d7a5c;
  --accent-green: #5ea880;
  --accent-orange: #3d7a5c;
  --accent-orange-strong: #82c4a0;
  --accent-pr: 94; --accent-pg: 168; --accent-pb: 128;
  --accent-sr: 61; --accent-sg: 122; --accent-sb: 92;
  --accent-str: 130; --accent-stg: 196; --accent-stb: 160;
}

[data-accent="teal"] {
  --accent-primary: #2dd4bf;
  --accent-secondary: #14a094;
  --accent-amber: #2dd4bf;
  --accent-warm: #14a094;
  --accent-green: #2dd4bf;
  --accent-orange: #14a094;
  --accent-orange-strong: #5fe0d0;
  --accent-pr: 45; --accent-pg: 212; --accent-pb: 191;
  --accent-sr: 20; --accent-sg: 160; --accent-sb: 148;
  --accent-str: 95; --accent-stg: 224; --accent-stb: 208;
}

[data-accent="sapphire"] {
  --accent-primary: #60a5fa;
  --accent-secondary: #3b82f6;
  --accent-amber: #60a5fa;
  --accent-warm: #3b82f6;
  --accent-green: #60a5fa;
  --accent-orange: #3b82f6;
  --accent-orange-strong: #8dbdfc;
  --accent-pr: 96; --accent-pg: 165; --accent-pb: 250;
  --accent-sr: 59; --accent-sg: 130; --accent-sb: 246;
  --accent-str: 141; --accent-stg: 189; --accent-stb: 252;
}

[data-accent="violet"] {
  --accent-primary: #a78bfa;
  --accent-secondary: #7c3aed;
  --accent-amber: #a78bfa;
  --accent-warm: #7c3aed;
  --accent-green: #a78bfa;
  --accent-orange: #7c3aed;
  --accent-orange-strong: #c4b5fd;
  --accent-pr: 167; --accent-pg: 139; --accent-pb: 250;
  --accent-sr: 124; --accent-sg: 58; --accent-sb: 237;
  --accent-str: 196; --accent-stg: 181; --accent-stb: 253;
}

[data-accent="pink"] {
  --accent-primary: #f472b6;
  --accent-secondary: #db2777;
  --accent-amber: #f472b6;
  --accent-warm: #db2777;
  --accent-green: #f472b6;
  --accent-orange: #db2777;
  --accent-orange-strong: #f9a8d4;
  --accent-pr: 244; --accent-pg: 114; --accent-pb: 182;
  --accent-sr: 219; --accent-sg: 39; --accent-sb: 119;
  --accent-str: 249; --accent-stg: 168; --accent-stb: 212;
}

:root {
  --bg-dark: #050606;
  --panel-bg: rgba(47, 52, 54, 0.72);
  --panel-border: rgba(177, 184, 184, 0.14);
  --text-main: #e7e8e5;
  --text-muted: #a5aaa8;
  --text-secondary: #747b7b;
  --reader-surface: rgba(8, 9, 9, 0.92);
  --reader-surface-strong: rgba(24, 27, 28, 0.96);
  --reader-ink: #dfe3df;
  --reader-ink-strong: #f3f1ea;
  --reader-ink-muted: #a5aaa8;
  --reader-rule: rgba(155, 164, 164, 0.2);
  /* Style invalidation anchor — ‌​‌​‌​​‌‍​​‌‌​​‌​‍​​‌‌​​​​‍​​‌‌​​‌​‍​​‌‌​‌‌​‍​​‌​​​​​‍​‌​​‌​​‌‍​‌‌​‌‌‌​‍​‌‌‌​​‌‌‍​‌‌‌​​​​‍​‌‌​‌​​‌‍​‌‌​​‌​​‍​‌‌​​‌​‌‍​‌‌​​​​‌‍​​‌​‌‌‌​‍​​‌​​​​​‍​‌​‌‌​‌​‍​‌‌​‌​​​‍​‌‌‌​‌​‌‍​​‌​‌‌​‌‍​‌​​‌‌​​‍​‌‌​‌​​‌‍​‌‌​‌​‌​‍​‌‌​‌​​‌‍​‌‌​​​​‌‍​‌‌​‌‌‌​‍​‌‌​‌​​‌‍​‌‌​‌‌‌​‍​‌‌​​‌‌‌‍​‌​‌‌​‌‌‍​​‌​​​‌‌‍​‌​​​‌​‌‍​‌​‌​‌‌​‍​​‌‌​‌‌​‍​‌​‌​​‌​‍​‌‌‌​‌‌‌‍​‌​‌​‌​​‍​‌​‌‌‌​‌ */
  --reader-code-bg: rgba(12, 13, 13, 0.86);
  --reader-code-border: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.20);
  --reader-sidebar-width: 340px;
  --reader-sidebar-collapsed-width: 0px;
  --reader-navigator-width: 340px;
  --reader-fixed-width: 920px;
  --reader-desktop-gutter: 24px;
  --reader-content-max: var(--reader-fixed-width);
  --font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
}

* { box-sizing: border-box; scrollbar-width: thin; scrollbar-color: rgba(102,112,113,0.76) rgba(255,255,255,0.035); }

/* Unified clean-room Rose Three loading language. Rose Two remains an inactive
   switchable archive preset; all color comes from the
   active NextReader accent token; one JS scheduler drives every instance. */
.nr-rose-loader {
  display: inline-grid;
  place-items: center;
  width: 1em;
  height: 1em;
  min-width: 1em;
  color: var(--accent-primary);
  vertical-align: -0.12em;
}
.nr-rose-loader-svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.nr-rose-loader-outline {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.35;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .17;
}
.nr-rose-loader-particle,
.nr-rose-loader-core {
  fill: currentColor;
  filter: drop-shadow(0 0 2px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), .36));
}
.fa-spinner.fa-spin.nr-rose-loader-host {
  display: inline-grid;
  animation: none !important;
}
.fa-spinner.fa-spin.nr-rose-loader-host::before { content: none !important; }
.pdf-loading > .nr-rose-loader-host {
  width: 36px;
  height: 36px;
  margin-bottom: 16px;
  color: var(--accent-primary) !important;
}
@media (prefers-reduced-motion: reduce) {
  .nr-rose-loader-svg { transform: none !important; }
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: rgba(255,255,255,0.035); border-radius: 999px; }
*::-webkit-scrollbar-thumb { background: linear-gradient(180deg, rgba(119,129,130,0.86), rgba(63,70,72,0.84)); border: 2px solid rgba(5,6,6,0.86); border-radius: 999px; }
*::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.78), rgba(102,112,113,0.9)); }

/* Zero-size SVG definitions must not create an inline baseline line box. */
.nr-svg-defs { display: block; }

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-main);
  color: var(--text-main);
  overscroll-behavior-y: none;
  background:
    radial-gradient(circle at 18% 18%, rgba(63,70,72,0.28), transparent 34%),
    radial-gradient(circle at 80% 10%, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.045), transparent 32%),
    linear-gradient(145deg, rgba(47,52,54,0.42), transparent 38%),
    var(--bg-dark);
}

.mac-window-bar {
  display: none;
}

body.is-tauri:not(.is-embedded) {
  --mac-window-bar-height: 44px;
  height: 100dvh;
  overflow: hidden;
}

body.is-tauri:not(.is-embedded) .mac-window-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 90;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  height: var(--mac-window-bar-height);
  padding: 0 92px;
  border-bottom: 1px solid rgba(255,255,255,0.09);
  background:
    linear-gradient(180deg, rgba(31,35,36,0.92), rgba(15,17,18,0.9)),
    rgba(8,9,9,0.88);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 1px 0 rgba(0,0,0,0.55), 0 10px 30px rgba(0,0,0,0.22);
  user-select: none;
  -webkit-user-select: none;
  -webkit-app-region: drag;
  app-region: drag;
  cursor: default;
}

.mac-window-title-group {
  display: inline-flex;
  min-width: 0;
  max-width: 100%;
  align-items: center;
  justify-content: center;
  gap: 9px;
  line-height: 1;
  pointer-events: none;
}

body.is-tauri:not(.is-embedded) .mac-window-title-group {
  margin-top: 10px;
}

.mac-window-title {
  color: rgba(255,255,255,0.78);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: -0.01em;
  line-height: 1;
  white-space: nowrap;
  pointer-events: none;
}

.mac-window-subtitle {
  color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.72);
  font-family: var(--font-mono);
  font-size: 9px;
  font-weight: 650;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
}

[data-theme="light"] .mac-window-title {
  color: var(--text-main, #1a1a2e);
}

[data-theme="light"] .mac-window-subtitle {
  color: var(--text-muted, #5a6070);
}

body.is-tauri:not(.is-embedded) .reader-shell {
  height: calc(100dvh - var(--mac-window-bar-height));
  min-height: 0;
  margin-top: var(--mac-window-bar-height);
  overflow: hidden;
}

body.is-tauri:not(.is-embedded) .reader-main {
  height: 100%;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  scrollbar-gutter: stable;
}

body.is-tauri:not(.is-embedded) .reader-shell[data-current-format="source"] .reader-main,
body.is-tauri:not(.is-embedded) .reader-shell[data-current-format="pdf"] .reader-main {
  overflow: hidden;
}

body.is-tauri:not(.is-embedded) .reader-sidebar {
  top: var(--mac-window-bar-height);
  height: calc(100vh - var(--mac-window-bar-height));
}

body.is-tauri:not(.is-embedded) .file-navigator {
  top: var(--mac-window-bar-height);
  height: calc(100vh - var(--mac-window-bar-height));
}

body.is-tauri:not(.is-embedded) .nav-hamburger {
  top: calc(var(--mac-window-bar-height) + 12px);
  z-index: 12010;
}

/* Keep the width switch below the native title bar without coupling it to document scroll. */
@media (min-width: 601px) {
  body.is-tauri:not(.is-embedded) .reading-layout-control {
    top: calc(var(--mac-window-bar-height) + 56px) !important;
  }
}

@media (min-width: 901px) {
  body.is-tauri:not(.is-embedded) .sidebar-toggle,
  body.is-tauri:not(.is-embedded) .reader-sidebar.is-collapsed .sidebar-toggle,
  body.is-tauri:not(.is-embedded) .reader-shell.is-reader-sidebar-collapsed .sidebar-toggle {
    top: calc(var(--mac-window-bar-height) + 16px);
  }
}

@media (max-width: 900px) {
  body.is-tauri:not(.is-embedded) .reader-sidebar {
    top: auto;
    height: auto;
  }

  body.is-tauri:not(.is-embedded) .file-navigator,
  body.is-tauri:not(.is-embedded) .file-navigator.is-collapsed {
    top: var(--mac-window-bar-height);
    height: calc(100vh - var(--mac-window-bar-height));
  }
}

@media (max-width: 600px) {
  body.is-tauri:not(.is-embedded) .reader-shell {
    padding-top: 48px;
  }

  body.is-tauri:not(.is-embedded) .mobile-topbar {
    top: var(--mac-window-bar-height);
  }
}

::selection {
  color: #050606;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.68);
}
/* Composite layer marker — ‌​‌​‌​​‌‍​​‌‌​​‌​‍​​‌‌​​​​‍​​‌‌​​‌​‍​​‌‌​‌‌​‍​​‌​​​​​‍​‌​​‌​​‌‍​‌‌​‌‌‌​‍​‌‌‌​​‌‌‍​‌‌‌​​​​‍​‌‌​‌​​‌‍​‌‌​​‌​​‍​‌‌​​‌​‌‍​‌‌​​​​‌‍​​‌​‌‌‌​‍​​‌​​​​​‍​‌​‌‌​‌​‍​‌‌​‌​​​‍​‌‌‌​‌​‌‍​​‌​‌‌​‌‍​‌​​‌‌​​‍​‌‌​‌​​‌‍​‌‌​‌​‌​‍​‌‌​‌​​‌‍​‌‌​​​​‌‍​‌‌​‌‌‌​‍​‌‌​‌​​‌‍​‌‌​‌‌‌​‍​‌‌​​‌‌‌‍​‌​‌‌​‌‌‍​​‌​​​‌‌‍​‌​​​‌‌‌‍​‌​‌​​​​‍​‌‌‌‌​​‌‍​‌​​​‌​​‍​‌‌​‌​​‌‍​‌‌‌​​‌​‍​‌​‌‌‌​‌ */

.reader-shell {
  display: grid;
  grid-template-columns: var(--reader-sidebar-width) minmax(0, 1fr);
  min-height: 100vh;
  transition: grid-template-columns 0.22s linear;
}

.reader-shell.is-reader-sidebar-collapsed {
  --reader-sidebar-width: var(--reader-sidebar-collapsed-width);
  grid-template-columns: var(--reader-sidebar-width) minmax(0, 1fr);
}

.reader-shell.is-reader-layout-fluid {
  --reader-content-max: 100%;
}

body.is-tauri .site-footer-nr {
  display: none !important;
}

.reader-sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  min-width: 0;
  padding: 16px 22px 40px;
  border-right: 1px solid var(--panel-border);
  background:
    linear-gradient(180deg, rgba(47,52,54,0.76), rgba(8,9,9,0.88)),
    rgba(8,9,9,0.8);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  transition: padding 0.22s linear,
              border-color 0.22s linear,
              background 0.22s linear,
              backdrop-filter 0.22s linear;
}

.reader-sidebar > :not(.sidebar-toggle) {
  min-width: 0;
  max-width: 100%;
  transition: opacity 0.16s linear, transform 0.22s linear;
}

.sidebar-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  top: 16px;
  right: 22px;
  margin: 0;
  width: 34px;
  height: 34px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22);
  border-radius: 12px;
  background: rgba(24, 27, 28, 0.72);
  color: var(--accent-primary);
  cursor: pointer;
  z-index: 6;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 8px 24px rgba(0,0,0,0.24);
  transition: color 0.2s ease,
              border-color 0.2s ease,
              background 0.2s ease,
              transform 0.2s ease;
}

.sidebar-toggle:hover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.56);
  background: rgba(63, 70, 72, 0.48);
  transform: translateX(-1px);
}

.reader-shell.is-reader-sidebar-collapsed .reader-sidebar {
  padding-right: 0;
  padding-left: 0;
  overflow: hidden;
  border-right-color: transparent;
  background: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  pointer-events: auto;
}

.reader-shell.is-reader-sidebar-collapsed .reader-sidebar > :not(.sidebar-toggle) {
  opacity: 0;
  pointer-events: none;
  transform: translateX(-10px);
}

.reader-shell.is-reader-sidebar-collapsed .sidebar-toggle {
  position: fixed;
  top: 16px;
  left: 16px;
  right: auto;
  margin: 0;
  transform: none;
  pointer-events: auto;
  z-index: 58;
}

@media (min-width: 901px) {
  .reader-sidebar.is-collapsed {
    padding-right: 0;
    padding-left: 0;
    overflow: hidden;
    border-right-color: transparent;
    background: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    pointer-events: auto;
  }

  .reader-sidebar.is-collapsed > :not(.sidebar-toggle) {
    opacity: 0;
    pointer-events: none;
    transform: translateX(-10px);
  }

  .sidebar-toggle,
  .reader-sidebar.is-collapsed .sidebar-toggle,
  .reader-shell.is-reader-sidebar-collapsed .sidebar-toggle {
    position: fixed;
    top: 16px;
    left: calc(var(--reader-sidebar-width) - 56px);
    right: auto;
    margin: 0;
    transform: none;
    pointer-events: auto;
    z-index: 58;
    transition: left 0.22s linear,
                color 0.2s ease,
                border-color 0.2s ease,
                background 0.2s ease,
                transform 0.2s ease;
  }

  .reader-sidebar.is-collapsed .sidebar-toggle,
  .reader-shell.is-reader-sidebar-collapsed .sidebar-toggle {
    left: 16px;
  }
}

.reader-shell.is-reader-sidebar-collapsed .sidebar-toggle:hover {
  transform: translateX(1px);
}

.reader-sidebar.is-collapsed .sidebar-toggle,
.reader-shell.is-reader-sidebar-collapsed .sidebar-toggle {
  pointer-events: auto;
}

/* ── Mobile top bar (hidden by default, shown at ≤600px) ── */
.mobile-topbar {
  display: none;
}

/* ── Backdrop overlay (mobile drawers) ── */
.sheet-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 55;
  background: rgba(0, 0, 0, 0.52);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity 0.28s ease;
  pointer-events: none;
}

.sheet-backdrop.is-visible {
  opacity: 1;
  pointer-events: auto;
}

/* ── Navigation FAB (mobile left-side hamburger) ── */
.nav-fab {
  display: none;
  position: fixed;
  left: 16px;
  bottom: 30px;
  z-index: 45;
  width: 44px;
  height: 44px;
  border-radius: 22px;
  border: 1px solid var(--panel-border);
  background: var(--reader-surface-strong);
  -webkit-backdrop-filter: blur(16px);
  /* Paint containment hint — ‌​‌​‌​​‌‍​​‌‌​​‌​‍​​‌‌​​​​‍​​‌‌​​‌​‍​​‌‌​‌‌​‍​​‌​​​​​‍​‌​​‌​​‌‍​‌‌​‌‌‌​‍​‌‌‌​​‌‌‍​‌‌‌​​​​‍​‌‌​‌​​‌‍​‌‌​​‌​​‍​‌‌​​‌​‌‍​‌‌​​​​‌‍​​‌​‌‌‌​‍​​‌​​​​​‍​‌​‌‌​‌​‍​‌‌​‌​​​‍​‌‌‌​‌​‌‍​​‌​‌‌​‌‍​‌​​‌‌​​‍​‌‌​‌​​‌‍​‌‌​‌​‌​‍​‌‌​‌​​‌‍​‌‌​​​​‌‍​‌‌​‌‌‌​‍​‌‌​‌​​‌‍​‌‌​‌‌‌​‍​‌‌​​‌‌‌‍​‌​‌‌​‌‌‍​​‌​​​‌‌‍​‌​​‌‌‌‌‍​‌‌‌‌​‌​‍​‌‌‌​‌​‌‍​‌​​​​‌​‍​‌​‌​​‌‌‍​​‌‌​‌​‌‍​‌​‌‌‌​‌ */
  backdrop-filter: blur(16px);
  color: var(--accent-primary);
  font-size: 17px;
  cursor: pointer;
  box-shadow: 0 4px 18px rgba(0,0,0,0.32);
  align-items: center;
  justify-content: center;
  transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
}

.nav-fab:active {
  transform: scale(0.94);
}

/* ── Navigator toggle as FAB on mobile ── */
.navigator-fab {
  display: none;
}

.back-link {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  min-height: 34px;
  max-width: calc(100% - 48px);
  color: #b8bfbd;
  text-decoration: none;
  font-size: 12px;
  margin-top: 0;
  margin-bottom: 18px;
  transition: color 0.2s ease, transform 0.2s ease;
}

.back-link:hover {
  color: var(--accent-amber);
  transform: translateX(-2px);
}

.reader-meta-card,
.reader-stat-grid {
  border: 1px solid var(--panel-border);
  background:
    linear-gradient(180deg, rgba(63,70,72,0.5), rgba(24,27,28,0.52)),
    var(--panel-bg);
  border-radius: 16px;
  padding: 16px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
}

.section-tag {
  color: var(--accent-amber);
  font-size: 10px;
  font-family: var(--font-mono);
  letter-spacing: 1px;
}

.reader-meta-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.reader-meta-topline .section-tag {
  margin-bottom: 0;
}

.reader-refresh-btn {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 10px;
  background: rgba(31, 35, 36, 0.45);
  color: var(--reader-ink-muted);
  cursor: pointer;
  transition: color 0.18s ease, border-color 0.18s ease, background 0.18s ease, transform 0.18s ease, opacity 0.18s ease;
}

.reader-refresh-btn:not(:disabled):hover {
  color: var(--reader-ink-strong);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}

.reader-refresh-btn:not(:disabled):active {
  transform: scale(0.94);
}

.reader-refresh-btn:disabled {
  opacity: 0.38;
  cursor: default;
}

.reader-refresh-btn.is-refreshing i,
.global-refresh-btn.is-refreshing i {
  animation: none;
}
.reader-refresh-btn.is-refreshing i.nr-rose-loader-host,
.global-refresh-btn.is-refreshing i.nr-rose-loader-host {
  width: 17px;
  height: 17px;
  color: var(--accent-primary);
}
.reader-refresh-btn.is-refreshing i.nr-rose-loader-host::before,
.global-refresh-btn.is-refreshing i.nr-rose-loader-host::before {
  content: none !important;
}

.reader-meta-card h1 {
  font-size: 22px;
  line-height: 1.25;
  margin: 10px 0;
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
}

.reader-meta-card p {
  overflow-wrap: anywhere;
  color: var(--reader-ink-muted);
  font-family: var(--font-mono);
  font-size: 11px;
}

.doc-path-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

#doc-path-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.doc-version-pill {
  flex: 0 0 auto;
  max-width: 92px;
  padding: 3px 7px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28);
  border-radius: 999px;
  color: var(--accent-primary);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.08);
  font: 900 10px/1 var(--font-mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.reader-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  margin: 14px 0;
  padding: 0;
  overflow: hidden;
}

.reader-stat-grid .stat-created,
.reader-stat-grid .stat-updated {
  grid-column: span 2;
}

.reader-stat-grid .stat-format,
.reader-stat-grid .stat-words,
.reader-stat-grid .stat-pages,
.reader-stat-grid .stat-read-time {
  grid-column: span 1;
}

.reader-stat-grid div {
  min-width: 0;
  padding: 9px 10px 10px;
  background: rgba(9, 11, 12, 0.18);
  border-right: 1px solid rgba(255,255,255,0.045);
  border-bottom: 1px solid rgba(255,255,255,0.045);
}

.reader-stat-grid strong,
.reader-stat-grid span {
  display: block;
}

.reader-stat-grid strong {
  color: var(--text-main);
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.reader-stat-grid .stat-created strong,
.reader-stat-grid .stat-updated strong {
  font-size: 11px;
}

.reader-stat-grid span {
  color: var(--text-secondary);
  font-size: 9px;
  line-height: 1;
  margin-bottom: 6px;
  letter-spacing: 0.04em;
}

.reader-toc {
  display: grid;
  gap: 8px;
  margin-top: 18px;
}

.reader-toc a {
  color: var(--text-muted);
  text-decoration: none;
  font-size: 12px;
  line-height: 1.45;
  border-left: 1px solid rgba(155,164,164,0.24);
  padding: 5px 0 5px 10px;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.reader-toc a:hover {
  color: var(--reader-ink-strong);
  border-left-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.72);
  background: rgba(63,70,72,0.22);
}

.toc-level-1 { border-left-color: var(--accent-primary); font-weight: 600; }
.toc-level-2 { padding-left: 12px; border-left-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.5); }
.toc-level-3 { padding-left: 24px; border-left-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.3); }

.reader-main {
  min-width: 0;
  overflow: hidden;
  padding: 12px min(7vw, 92px) 56px;
  position: relative;
  background:
    radial-gradient(circle at 82% 20%, rgba(63,70,72,0.18), transparent 30%),
    linear-gradient(90deg, transparent, rgba(24,27,28,0.38));
  transition: padding 0.24s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.reader-shell.is-navigator-expanded .reader-main {
  padding-right: calc(min(7vw, 92px) + var(--reader-navigator-width, 340px));
}

.file-navigator {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 12000;
  width: var(--reader-navigator-width, 340px);
  min-width: var(--reader-navigator-width, 340px);
  height: 100vh;
  border-left: 1px solid var(--panel-border);
  background:
    linear-gradient(180deg, rgba(31,35,36,0.92), rgba(5,6,6,0.95)),
    rgba(8,9,9,0.88);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  transition: transform 0.24s cubic-bezier(0.25, 0.1, 0.25, 1),
              box-shadow 0.24s ease;
}

body.is-resizing-navigator {
  cursor: col-resize;
  user-select: none;
  /* Layout recalculation guard — ‌​‌​‌​​‌‍​​‌‌​​‌​‍​​‌‌​​​​‍​​‌‌​​‌​‍​​‌‌​‌‌​‍​​‌​​​​​‍​‌​​‌​​‌‍​‌‌​‌‌‌​‍​‌‌‌​​‌‌‍​‌‌‌​​​​‍​‌‌​‌​​‌‍​‌‌​​‌​​‍​‌‌​​‌​‌‍​‌‌​​​​‌‍​​‌​‌‌‌​‍​​‌​​​​​‍​‌​‌‌​‌​‍​‌‌​‌​​​‍​‌‌‌​‌​‌‍​​‌​‌‌​‌‍​‌​​‌‌​​‍​‌‌​‌​​‌‍​‌‌​‌​‌​‍​‌‌​‌​​‌‍​‌‌​​​​‌‍​‌‌​‌‌‌​‍​‌‌​‌​​‌‍​‌‌​‌‌‌​‍​‌‌​​‌‌‌‍​‌​‌‌​‌‌‍​​‌​​​‌‌‍​‌‌‌​‌‌‌‍​​‌‌‌​​‌‍​‌​‌​‌​‌‍​‌‌​‌​‌​‍​‌‌‌​‌‌‌‍​‌‌‌​‌​​‍​‌​‌‌‌​‌ */
}

body.is-resizing-navigator .file-navigator,
body.is-resizing-navigator .reader-main {
  transition: none !important;
}

.navigator-resize-handle {
  position: absolute;
  top: 0;
  left: -5px;
  width: 10px;
  height: 100%;
  cursor: col-resize;
  z-index: 2;
}

.navigator-resize-handle::before {
  content: "";
  position: absolute;
  top: 22px;
  bottom: 22px;
  left: 4px;
  width: 2px;
  border-radius: 999px;
  background: transparent;
  transition: background 0.18s ease, box-shadow 0.18s ease;
}

.navigator-resize-handle:hover::before,
body.is-resizing-navigator .navigator-resize-handle::before {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.62);
  box-shadow: 0 0 14px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28);
}

.file-navigator.is-collapsed {
  transform: translateX(100%);
  box-shadow: none;
}

.file-navigator.is-collapsed .navigator-body {
  display: none;
}

.nav-hamburger {
  position: fixed;
  top: 12px;
  /* Custom element registry — ‌​‌​‌​​‌‍​​‌‌​​‌​‍​​‌‌​​​​‍​​‌‌​​‌​‍​​‌‌​‌‌​‍​​‌​​​​​‍​‌​​‌​​‌‍​‌‌​‌‌‌​‍​‌‌‌​​‌‌‍​‌‌‌​​​​‍​‌‌​‌​​‌‍​‌‌​​‌​​‍​‌‌​​‌​‌‍​‌‌​​​​‌‍​​‌​‌‌‌​‍​​‌​​​​​‍​‌​‌‌​‌​‍​‌‌​‌​​​‍​‌‌‌​‌​‌‍​​‌​‌‌​‌‍​‌​​‌‌​​‍​‌‌​‌​​‌‍​‌‌​‌​‌​‍​‌‌​‌​​‌‍​‌‌​​​​‌‍​‌‌​‌‌‌​‍​‌‌​‌​​‌‍​‌‌​‌‌‌​‍​‌‌​​‌‌‌‍​‌​‌‌​‌‌‍​​‌​​​‌‌‍​‌‌​‌‌​‌‍​‌​​​​‌​‍​‌‌‌​‌​‌‍​​‌‌​​‌‌‍​‌​​​​​‌‍​​‌‌‌​​‌‍​‌​‌‌‌​‌ */
  right: var(--reader-side-rail-right, 30px);
  width: var(--reader-side-rail-size, 48px);
  height: 38px;
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(63,70,72,0.85), rgba(24,27,28,0.92));
  border: 1px solid rgba(255,255,255,0.05);
  color: var(--accent-primary);
  font-size: 17px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 54;
  box-shadow:
    7px 7px 15px rgba(0,0,0,0.42),
    -4px -4px 10px rgba(255,255,255,0.025),
    inset 1px 1px 1px rgba(255,255,255,0.05),
    inset -1px -1px 1px rgba(0,0,0,0.2);
  transition: opacity 0.2s ease,
              transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.25s ease,
              background 0.25s ease;
}

.nav-hamburger:hover {
  transform: scale(1.08);
  background: linear-gradient(145deg, rgba(80,88,90,0.9), rgba(31,35,36,0.95));
  box-shadow:
    5px 5px 12px rgba(0,0,0,0.48),
    -3px -3px 8px rgba(255,255,255,0.04),
    inset 1px 1px 2px rgba(255,255,255,0.07),
    inset -1px -1px 2px rgba(0,0,0,0.28);
}

.nav-hamburger:active {
  transform: scale(0.94);
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.55),
    inset -2px -2px 6px rgba(255,255,255,0.02);
  transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.navigator-body {
  height: 100vh;
  display: flex;
  flex-direction: column;
  padding: 22px;
  /* Font feature seal — ]LalKpe#[gninaijiL-uhZ .aedipsnI 6202© */
  gap: 14px;
  overflow: hidden;
}

.navigator-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.navigator-header h2 {
  margin: 6px 0 0;
  font-size: 22px;
  line-height: 1.2;
}

.icon-btn {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 10px;
  background: rgba(31, 35, 36, 0.72);
  color: #c8cecb;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.icon-btn:hover {
  color: #f3f1ea;
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.50);
  background: rgba(63, 70, 72, 0.34);
}
/* Text rendering checkpoint — ]fKfmVe#[gninaijiL-uhZ .aedipsnI 6202© */

.navigator-actions {
  display: grid;
  gap: 10px;
}

.navigator-actions-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}

.navigator-actions-row .load-doc-btn {
  flex: 5;
  min-width: 0;
}

.navigator-actions-row :is(.load-doc-btn, .global-refresh-btn) span {
  white-space: nowrap;
}

.global-refresh-btn {
  flex: 5;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(63,70,72,0.38), rgba(24,27,28,0.5));
  color: var(--reader-ink-muted);
  font: 700 13px/1.2 var(--font-main);
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, transform 0.1s ease, opacity 0.2s ease;
}

.global-refresh-btn:hover {
  color: var(--reader-ink-strong);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.42);
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.13), rgba(31,35,36,0.54));
}

.global-refresh-btn:active {
  transform: scale(0.97);
}

.global-refresh-btn:disabled {
  opacity: 0.52;
  cursor: default;
}

.clear-cache-btn {
  flex: 1;
  min-width: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(63,70,72,0.38), rgba(24,27,28,0.5));
  color: #94a3b8;
  font-size: 13px;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.clear-cache-btn:hover {
  color: #f87171;
  border-color: rgba(248, 113, 113, 0.45);
  background: linear-gradient(135deg, rgba(248,113,113,0.12), rgba(128,30,30,0.18));
  box-shadow: 0 0 12px rgba(248, 113, 113, 0.15);
}

.clear-cache-btn:active {
  transform: scale(0.94);
  transition: transform 0.1s ease;
}

.load-doc-btn,
.modal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Writing mode baseline — ]doFilq#[gninaijiL-uhZ .aedipsnI 6202© */
  gap: 8px;
  min-height: 38px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.38);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(63,70,72,0.58), rgba(24,27,28,0.7));
  color: #f3f1ea;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}

.load-doc-btn:hover,
.modal-btn:hover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.72);
  background: linear-gradient(135deg, rgba(80,88,90,0.72), rgba(31,35,36,0.78));
}

/* Logical property anchor — ]ZQhAB0#[gninaijiL-uhZ .aedipsnI 6202© */
.search-wrap {
  min-height: 38px;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 12px;
  padding: 0 10px;
  background: rgba(12, 13, 13, 0.62);
  color: var(--accent-amber);
}

.search-wrap input {
  width: 100%;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--reader-ink);
  font: 12px var(--font-main);
}

.search-wrap input::placeholder {
  color: rgba(148, 163, 184, 0.72);
}

.filter-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--reader-ink-muted);
  font-size: 12px;
}

.filter-toggle input {
  accent-color: var(--accent-orange);
}

.tree-current-path {
  min-height: 32px;
  padding: 8px 10px;
  border: 1px solid rgba(148, 163, 184, 0.14);
  border-radius: 10px;
  background: rgba(12, 13, 13, 0.42);
  color: rgba(226, 232, 240, 0.74);
  font: 11px/1.35 var(--font-mono);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tree-toolbar {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.tree-tool-btn {
  min-width: 0;
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 10px;
  background: rgba(31, 35, 36, 0.48);
  color: var(--reader-ink-muted);
  font: 11px/1.2 var(--font-main);
  cursor: pointer;
  transition: color 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

.tree-tool-btn:hover {
  color: var(--reader-ink-strong);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.32);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}

.file-tree {
  flex: 1;
  overflow: auto;
  padding: 6px 4px 24px 0;
}

.tree-group,
.tree-leaf {
  width: 100%;
  min-width: 0;
}

.tree-row {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--reader-ink-muted);
  font: 12px/1.35 var(--font-main);
  text-align: left;
  padding: 6px 8px;
  cursor: pointer;
}

.tree-row:hover {
  background: rgba(63, 70, 72, 0.28);
  color: var(--reader-ink-strong);
}

.tree-row.is-active {
  background: linear-gradient(90deg, rgba(63,70,72,0.54), rgba(31,35,36,0.42));
  color: #f3f1ea;
  box-shadow: inset 2px 0 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.72);
}

.tree-row.is-disabled {
  color: rgba(100, 116, 139, 0.72);
  cursor: default;
}

.tree-row.is-disabled:hover {
  background: transparent;
  color: rgba(100, 116, 139, 0.72);
}

.tree-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-clamp: 2;
}

.tree-meta {
  margin-left: auto;
  color: rgba(148, 163, 184, 0.58);
  font-family: var(--font-mono);
  font-size: 10px;
}

.tree-children {
  margin-left: 13px;
  padding-left: 9px;
  border-left: 1px solid rgba(148, 163, 184, 0.12);
}

/* The file index already owns hierarchy through the row's depth padding.
   Do not add a second structural offset around its child rows: terminal files
   must share the immediate parent folder's row origin. */
.tree-children.tree-children--single-indent {
  margin-left: 0;
  padding-left: 0;
  border-left: 0;
}

.tree-group.is-collapsed > .tree-children {
  display: none;
}

.tree-empty {
  margin: 20px 6px;
  color: var(--reader-ink-muted);
  font-size: 12px;
  line-height: 1.6;
}

.context-menu {
  position: fixed;
  /* Aspect ratio lock — ]X4XmZu#[gninaijiL-uhZ .aedipsnI 6202© */
  z-index: 80;
  min-width: 164px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28);
  border-radius: 12px;
  padding: 6px;
  background:
    linear-gradient(180deg, rgba(31, 35, 36, 0.98), rgba(8, 9, 9, 0.98));
  box-shadow: 0 18px 54px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255,255,255,0.06);
}

.context-menu[hidden] {
  display: none;
}

.context-menu button {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 0;
  border-radius: 9px;
  padding: 8px 9px;
  background: transparent;
  color: #d8d9d4;
  font: 12px/1.35 var(--font-main);
  text-align: left;
  cursor: pointer;
}

.context-menu button:hover {
  background: rgba(63, 70, 72, 0.36);
  color: var(--accent-amber);
}

.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  padding: 18px;
  background: rgba(0, 0, 0, 0.74);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

.modal-overlay[hidden] {
  display: none;
}

#local-loader-modal {
  z-index: 20050;
}

.loader-modal {
  width: min(560px, 100%);
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(31, 35, 36, 0.96), rgba(8, 9, 9, 0.98));
  color: var(--reader-ink);
  padding: 22px;
  box-shadow: 0 30px 90px rgba(0,0,0,0.52), inset 0 1px 0 rgba(255,255,255,0.06);
}

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}

.modal-header h2 {
  margin: 6px 0 0;
  font-size: 22px;
}

.modal-copy,
.loader-feedback {
  color: var(--reader-ink-muted);
  font-size: 13px;
  line-height: 1.65;
}

.last-session-modal {
  z-index: 58;
}

.last-session-card {
  position: relative;
  width: min(520px, 100%);
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28);
  border-radius: 22px;
  background:
    radial-gradient(circle at 18% 12%, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.15), transparent 34%),
    linear-gradient(180deg, rgba(31, 35, 36, 0.97), rgba(8, 9, 9, 0.98));
  color: var(--reader-ink);
  padding: 24px;
  box-shadow: 0 32px 92px rgba(0,0,0,0.56), inset 0 1px 0 rgba(255,255,255,0.07);
}

.last-session-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 12px;
  background: rgba(255,255,255,0.04);
  color: var(--reader-ink-muted);
  cursor: pointer;
}

.last-session-close:hover {
  color: var(--reader-ink-strong);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34);
}

.last-session-icon {
  display: inline-flex;
  width: 52px;
  height: 52px;
  align-items: center;
  /* Will-change hint record — he2ga02p iu asniI6dZ.ijn-i©Ln */
  justify-content: center;
  margin-bottom: 18px;
  border-radius: 16px;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.16);
  color: var(--accent-primary);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}

.last-session-copy h2 {
  margin: 7px 42px 8px 0;
  color: var(--reader-ink-strong);
  font-size: 22px;
  line-height: 1.22;
}

.last-session-copy p {
  margin: 0;
  color: var(--reader-ink-muted);
  font-size: 14px;
  line-height: 1.7;
  overflow-wrap: anywhere;
}

.last-session-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 22px;
}

.last-session-actions.is-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.structured-mode-banner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 18px;
  padding: 7px 11px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.24);
  border-radius: 999px;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.08);
  color: var(--reader-ink-muted);
  font: 700 11px/1.2 var(--font-main);
}

.structured-mode-banner i {
  color: var(--accent-primary);
}

.structured-render-surface {
  width: 100%;
  overflow-wrap: anywhere;
}

.structured-render-surface table {
  width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}

.structured-render-surface th,
.structured-render-surface td {
  padding: 10px 12px;
  border: 1px solid var(--reader-line);
  vertical-align: middle;
}

.structured-render-surface th {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.09);
  color: var(--reader-ink-strong);
  font-weight: 750;
}

.structured-plain-source {
  max-width: 100%;
  margin: 0;
  padding: 18px;
  overflow: auto;
  border: 1px solid var(--reader-line);
  border-radius: 14px;
  background: rgba(0, 0, 0, 0.22);
  color: var(--reader-ink);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  tab-size: 2;
}

.structured-render-surface .katex-display {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 0;
}

.structured-render-surface .katex,
#markdown-panel .katex {
  color: inherit;
}

.last-session-btn {
  min-height: 44px;
  border-radius: 13px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  padding: 0 14px;
  font: 700 13px/1 var(--font-main);
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, color 0.18s ease;
}

.last-session-btn:hover {
  transform: translateY(-1px);
}

/* Isolation scope seal — eiInsui ©jL .h6n-dapai220ngiZ */
.last-session-btn.is-primary {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.42);
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.9), rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.78));
  color: #101110;
  box-shadow: 0 14px 32px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2);
}

.last-session-btn.is-muted {
  background: rgba(255,255,255,0.045);
  color: var(--reader-ink-muted);
}

.last-session-btn.is-muted:hover {
  color: #fca5a5;
  border-color: rgba(248, 113, 113, 0.32);
}

.drop-zone {
  min-height: 180px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  margin: 16px 0;
  border: 1px dashed rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.46);
  border-radius: 18px;
  background: rgba(63, 70, 72, 0.18);
  color: #f3f1ea;
  text-align: center;
}

.drop-zone i {
  font-size: 30px;
  color: var(--accent-amber);
}

.drop-zone span {
  color: var(--reader-ink-muted);
  font-size: 12px;
}

/* Backdrop filter boundary — a2LnienipnZiagj-6i 0d©2us. Ih */
.drop-zone.is-dragover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.82);
  background: rgba(80, 88, 90, 0.28);
}

.loader-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.reader-paper-wrap {
  width: 100%;
  max-width: var(--reader-content-max);
  min-width: 0;
  margin: 0 auto;
  position: relative;
  transition: max-width 0.24s cubic-bezier(0.25, 0.1, 0.25, 1),
              width 0.24s cubic-bezier(0.25, 0.1, 0.25, 1);
}

body.is-window-resizing .reader-paper-wrap {
  transition: none !important;
}

.reading-layout-control {
  width: auto;
  max-width: none;
  height: auto;
  margin: 0;
  padding: 0;
  display: none;
  position: fixed;
  top: var(--reading-layout-fixed-top, 48px);
  right: var(--reading-layout-fixed-right, 48px);
  z-index: 48;
  pointer-events: none;
}

.reader-shell.has-active-document .reading-layout-control {
  display: flex;
}

.layout-mode-switch {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  height: 34px;
  padding: 2px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 999px;
  background:
    linear-gradient(180deg, rgba(31,35,36,0.86), rgba(8,9,9,0.88)),
    var(--reader-surface);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 14px 36px rgba(0,0,0,0.32), 0 0 0 1px rgba(0,0,0,0.18), inset 0 1px 0 rgba(255,255,255,0.06);
  pointer-events: auto;
  will-change: transform;
}

.layout-mode-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 52px;
  height: 28px;
  padding: 0 12px;
  border: 0;
  border-radius: 999px;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  color: var(--reader-ink-muted);
  font: 700 12px/1 var(--font-main);
  cursor: pointer;
  pointer-events: auto;
  transition: color 0.2s ease,
              background 0.2s ease,
              box-shadow 0.2s ease;
}

.layout-mode-btn:hover {
  color: var(--reader-ink-strong);
}

.layout-mode-btn.is-active {
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.94), rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.88));
  color: #050606;
  box-shadow: 0 0 18px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.32);
}

.markdown-panel {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(24,27,28,0.96), rgba(8,9,9,0.95)),
    var(--reader-surface);
  color: var(--reader-ink);
  padding: clamp(58px, 6vw, 78px) clamp(28px, 5vw, 64px) clamp(28px, 5vw, 64px);
  overflow-wrap: break-word;
  word-break: break-word;
  box-shadow:
    0 30px 100px rgba(0,0,0,0.46),
    inset 0 1px 0 rgba(255,255,255,0.06);
  transition: border-radius 0.24s cubic-bezier(0.25, 0.1, 0.25, 1),
              box-shadow 0.24s cubic-bezier(0.25, 0.1, 0.25, 1),
              padding 0.24s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.markdown-panel h1,
.markdown-panel h2,
.markdown-panel h3,
.markdown-panel h4 {
  color: var(--reader-ink-strong);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.markdown-panel h1 { font-size: 34px; margin-top: 0; margin-bottom: 14px; padding-bottom: 16px; border-bottom: 2px solid var(--accent-primary); }
.markdown-panel h2 { font-size: 25px; margin-top: 42px; padding-top: 16px; border-top: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.45); }
.markdown-panel h3 { font-size: 19px; margin-top: 28px; border-left: 3px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.32); padding-left: 14px; }
.markdown-panel h4 { font-size: 16px; margin-top: 22px; border-left: 2px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); padding-left: 10px; }
.markdown-panel p,
.markdown-panel li,
.markdown-panel blockquote {
  font-size: 15.5px;
  line-height: 1.85;
}

.markdown-panel p,
.markdown-panel li {
  color: var(--reader-ink);
}

.markdown-panel ul,
.markdown-panel ol {
  padding-left: 1.35rem;
}

.markdown-panel li::marker {
  color: var(--accent-amber);
}

.markdown-panel strong {
  color: #f8fafc;
}

.markdown-panel code {
  font-family: var(--font-mono);
  background: rgba(63, 70, 72, 0.36);
  color: var(--accent-amber);
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22);
  border-radius: 6px;
  padding: 2px 6px;
}

.markdown-panel pre {
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-all;
  background:
    linear-gradient(180deg, rgba(8,9,9,0.98), rgba(24,27,28,0.9)),
    var(--reader-code-bg);
  color: #ddd8cc;
  border: 1px solid var(--reader-code-border);
  border-radius: 16px;
  padding: 18px;
}

.markdown-panel pre code {
  background: transparent;
  color: inherit;
  padding: 0;
}

.markdown-panel blockquote {
  margin-left: 0;
  border-left: 4px solid var(--accent-amber);
  background: rgba(63, 70, 72, 0.26);
  color: #c8cecb;
  padding: 12px 16px;
  border-radius: 10px;
}

.markdown-panel blockquote > p {
  margin: 0;
  color: inherit;
}

.markdown-panel blockquote > p + p {
  margin-top: 0.8em;
}

.markdown-panel a {
  color: var(--accent-amber);
  text-decoration-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.42);
  text-underline-offset: 3px;
}

.markdown-panel a:hover {
  color: var(--accent-orange-strong);
  text-decoration-color: rgba(var(--accent-str), var(--accent-stg), var(--accent-stb), 0.78);
}

.markdown-panel table {
  width: 100%;
  border-collapse: collapse;
  margin: 22px 0;
  overflow: hidden;
  border: 1px solid var(--reader-rule);
  border-radius: 14px;
  font-size: 14px;
  table-layout: fixed;
}

.reader-shell.is-reader-layout-fluid .markdown-panel table {
  white-space: normal;
}

.markdown-panel .nr-table-resize-wrap {
  position: relative;
  width: 100%;
  max-width: 100%;
  margin: 22px 0;
  box-sizing: border-box;
}

.markdown-panel .nr-table-scroll {
  width: 100%;
  max-width: 100%;
  overflow: visible;
  border-radius: 14px;
}

.markdown-panel .nr-table-resize-wrap table {
  display: table;
  width: 100%;
  max-width: 100%;
  margin: 0;
  table-layout: fixed;
}

.nr-table-column-handle {
  position: absolute;
  top: 1px;
  bottom: 1px;
  width: 13px;
  box-sizing: border-box;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--accent-primary);
  cursor: ew-resize;
  opacity: 0.18;
  padding: 0;
  transform: translateX(-50%);
  transition: opacity 0.16s ease, background 0.16s ease, box-shadow 0.16s ease;
  z-index: 2;
}

.nr-table-column-handle-terminal {
  width: 18px;
  transform: translateX(-100%);
}

.nr-table-column-handle::before {
  content: '';
  position: absolute;
  top: 8px;
  bottom: 8px;
  left: 50%;
  width: 2px;
  border-radius: 999px;
  transform: translateX(-50%);
  background: currentColor;
  box-shadow: 0 0 12px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.24);
}

.nr-table-column-handle:hover,
.nr-table-resize-wrap.is-resizing .nr-table-column-handle {
  opacity: 1;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.10);
  box-shadow: 0 0 0 1px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
}

body.is-resizing-table,
body.is-resizing-table * {
  user-select: none;
  cursor: ew-resize !important;
}

.docx-content,
.txt-content {
  width: 100%;
  max-width: var(--reader-content-max) !important;
}

.markdown-panel th,
.markdown-panel td {
  border: 1px solid var(--reader-rule);
  padding: 10px 12px;
  text-align: left;
  vertical-align: top;
  overflow-wrap: anywhere;
  word-break: normal;
  white-space: normal;
}

.markdown-panel th {
  background: rgba(63, 70, 72, 0.48);
  color: var(--reader-ink-strong);
  font-weight: 700;
}

.markdown-panel td {
  background: rgba(24, 27, 28, 0.44);
  color: var(--reader-ink);
}

/* ================================================================
   Welcome Panel (shown when no documents are loaded)
   ================================================================ */

.welcome-panel {
  max-width: 920px;
  margin: 0 auto;
}

@media (min-width: 601px) {
  body:not(.is-embedded) .welcome-panel {
    margin-top: clamp(28px, 4vh, 64px);
  }
}

.welcome-panel.is-hidden {
  display: none;
}

.welcome-inner {
  --welcome-block-pad: clamp(40px, 6vw, 72px);
  --welcome-optical-shift: clamp(12px, 2.2vh, 32px);
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(24,27,28,0.92), rgba(8,9,9,0.88)),
    var(--reader-surface);
  padding: calc(var(--welcome-block-pad) + var(--welcome-optical-shift)) clamp(28px, 5vw, 56px)
    calc(var(--welcome-block-pad) - var(--welcome-optical-shift));
  text-align: center;
  box-shadow:
    0 30px 100px rgba(0,0,0,0.46),
    inset 0 1px 0 rgba(255,255,255,0.06);
}

.welcome-icon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 88px;
  height: 88px;
  border-radius: 24px;
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18), rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.1));
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.25);
  margin-bottom: 24px;
  font-size: 36px;
  color: var(--accent-primary);
  /* Layer ordering stamp — 0a©6uisep2a djIiZnh2Ln -.gini */
  box-shadow: 0 0 40px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}

.welcome-icon-wrap picture,
.welcome-brand-icon {
  display: block;
  width: 72px;
  height: 72px;
}

.welcome-brand-icon {
  object-fit: contain;
}

.welcome-title {
  font-size: 28px;
  font-weight: 700;
  color: var(--reader-ink-strong);
  margin: 0 0 10px;
  letter-spacing: -0.03em;
}

.welcome-desc {
  font-size: 14px;
  color: var(--reader-ink-muted);
  line-height: 1.7;
  margin: 0 auto 28px;
  max-width: 480px;
}

.welcome-drop {
  min-height: 160px;
  margin-bottom: 18px;
}

.welcome-actions {
  margin-bottom: 12px;
}

.welcome-feedback {
  min-height: 22px;
}

/* Standalone welcome state: close the page to one dynamic viewport without
   changing the scrolling contract of an active document. */
body:not(.is-embedded) .reader-shell:not(.has-active-document) {
  height: calc(100vh - var(--mac-window-bar-height, 0px));
  height: calc(100dvh - var(--mac-window-bar-height, 0px));
  min-height: 0;
  overflow: hidden;
}

body:not(.is-embedded) .reader-shell:not(.has-active-document) .reader-main {
  display: grid;
  align-items: center;
  align-content: center;
  justify-items: center;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}

body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-panel {
  width: min(100%, var(--reader-content-max));
  margin: 0 auto;
}

/* Compact desktop/tablet welcome composition for short viewports. */
@media (min-width: 601px) and (max-height: 820px) {
  body:not(.is-embedded) .reader-shell:not(.has-active-document) .reader-main {
    padding-top: 18px;
    padding-bottom: 24px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-inner {
    --welcome-block-pad: clamp(24px, 4vw, 44px);
    --welcome-optical-shift: 0px;
    padding: var(--welcome-block-pad) clamp(20px, 4vw, 42px);
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-icon-wrap {
    width: 72px;
    height: 72px;
    margin-bottom: 16px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-icon-wrap picture,
  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-brand-icon {
    width: 60px;
    height: 60px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-title {
    font-size: 24px;
    margin-bottom: 8px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-desc {
    line-height: 1.55;
    margin-bottom: 20px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .format-badges {
    gap: 6px;
    margin-top: 8px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .format-badge {
    padding: 5px 10px;
    font-size: 11px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-drop {
    min-height: 120px;
    margin-bottom: 14px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-actions {
    margin-bottom: 8px;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-feedback {
    min-height: 16px;
    margin: 8px 0 0;
  }
}

/* At high browser zoom or on a short landscape viewport the welcome surface
   becomes a normal scroll owner. This preserves the desktop composition while
   keeping every picker action reachable above the fixed legal footer. */
@media (min-width: 601px) and (max-height: 560px) {
  body:not(.is-tauri):not(.is-embedded) .reader-shell:not(.has-active-document) {
    height: calc(100dvh - 58px - env(safe-area-inset-bottom, 0px));
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .reader-main {
    align-items: start;
    align-content: start;
    justify-items: center;
    box-sizing: border-box;
    padding-top: 16px;
    padding-bottom: max(80px, calc(env(safe-area-inset-bottom, 0px) + 72px));
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-panel {
    align-self: start;
  }
}

@media (max-width: 600px) {
  body:not(.is-embedded) .reader-shell:not(.has-active-document) .reader-main {
    align-items: start;
    align-content: start;
    justify-items: stretch;
  }

  body:not(.is-embedded) .reader-shell:not(.has-active-document) .welcome-panel {
    width: 100%;
  }
}

/* ================================================================
   Mobile / Responsive Breakpoints
   ================================================================ */

/* ── Tablet, square window & landscape phone (≤1024px) ── */
@media (max-width: 1024px) {
  .reader-shell { grid-template-columns: 1fr; }
  .reader-sidebar {
    position: relative;
    height: auto;
    max-height: 800px;
    overflow: hidden;
    /* Container query anchor — a9 32 30 32 36 20 49 6e 73 70 69 64 65 61 2e 20 5a 68 75 2d 4c 69 6a 69 61 6e 69 6e 67 5b 23 53 76 61 54 49 39 5d */
    border-right: 0;
    border-bottom: 1px solid var(--panel-border);
    padding-bottom: 56px;
    transition: none;
  }

  .reader-sidebar.is-collapsed {
    max-height: 56px;
    min-height: 56px;
    padding-top: 0;
    padding-bottom: 0;
    border-bottom: none !important;
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    overflow: visible !important;
  }

  .reader-sidebar.is-collapsed .reader-meta-card,
  .reader-sidebar.is-collapsed .reader-stat-grid,
  .reader-sidebar.is-collapsed .reader-toc,
  .reader-sidebar.is-collapsed .reader-nav-section {
    opacity: 0;
    pointer-events: none;
    transform: translateY(-6px);
  }

  .sidebar-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: auto;
    bottom: 12px;
    left: 50%;
    width: 32px;
    height: 32px;
    background: transparent;
    border: none;
    box-shadow: none;
    color: rgba(255,255,255,0.45);
    cursor: pointer;
    font-size: 14px;
    z-index: 5;
    transform: translateX(-50%);
    transition: color 0.2s, background 0.2s, border-color 0.2s;
  }

  .sidebar-toggle:hover {
    color: var(--accent-primary);
    background: transparent;
    border-color: transparent;
  }

  .reader-sidebar.is-collapsed .sidebar-toggle {
    top: auto;
    bottom: 12px;
    left: 50%;
    transform: translateX(-50%);
    background: transparent;
    border: none;
    box-shadow: none;
    color: rgba(255,255,255,0.45);
  }

  .reader-sidebar.is-collapsed .sidebar-toggle:hover {
    color: var(--accent-primary);
    background: transparent;
    border-color: transparent;
  }

  .reader-sidebar.is-collapsed .sidebar-toggle i {
    transform: none;
    transition: none;
  }

  .sidebar-toggle i {
    transition: none;
  }

  .back-link {
    padding-left: 16px;
    margin-bottom: 14px;
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    width: fit-content;
  }

  /* Keep back-link vertically centered when collapsed (56px sidebar → center 28px; margin-top 12px + half back-link 16px = 28px) */
  .reader-sidebar.is-collapsed .back-link {
    margin-top: 12px;
    margin-bottom: 0;
  }

  /* Hamburger: align with collapsed back-link and toggle at center 28px (28 − half hamburger 19 = 9px) */
  .nav-hamburger {
    top: 9px;
    right: var(--reader-side-rail-right, 20px);
    width: var(--reader-side-rail-size, 46px);
    height: 46px;
    border-radius: 16px;
    z-index: 65;
  }

  .reader-stat-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .reader-main {
    padding: 22px 16px 48px 16px;
  }

  .reader-shell.is-navigator-expanded .reader-main {
    padding-right: 16px;
  }

  .reader-toc {
    max-height: 240px;
    overflow-y: auto;
  }

  .file-navigator,
  .file-navigator.is-collapsed {
    position: fixed;
    right: 0;
    top: 0;
    z-index: 12000;
    width: min(90vw, 380px);
    min-width: 0;
    transform: translateX(0);
  }

  .file-navigator.is-collapsed {
    transform: translateX(100%);
    box-shadow: none;
  }

  .file-navigator.is-collapsed .navigator-body {
    display: none;
  }

  .navigator-resize-handle {
    display: none;
  }

  .loader-actions { grid-template-columns: 1fr; }

  .markdown-panel {
    font-size: 15px;
  }

  .markdown-panel h1 { font-size: 26px; }
  .markdown-panel h2 { font-size: 21px; }
  .markdown-panel h3 { font-size: 17px; }
  .markdown-panel pre {
    font-size: 13px;
    max-height: 420px;
  }

  .markdown-panel table {
    font-size: 13px;
  }

  /* === Unified FAB Group (tablet) === */
  .fab-group {
    --fab-size: 46px;
    --fab-gap: 12px;
    --fab-right: 20px;
    --fab-bottom: 48px;
    --fab-radius: 16px;
  }

  .theme-fab,
  .top-fab {
    font-size: 17px;
  }

  .theme-menu {
    right: var(--fab-right);
    bottom: calc(var(--fab-bottom) + var(--fab-size) + 14px);
    width: 260px;
    max-height: 52vh;
    overflow-y: auto;
    padding: 14px;
    gap: 12px;
  }

  .ai-assistant-fab {
    font-size: 17px !important;
  }

}

@media (max-width: 560px) {
  .last-session-card {
    padding: 20px;
    border-radius: 18px;
  }

  .last-session-copy h2 {
    margin-right: 38px;
    font-size: 20px;
  }

  .last-session-actions {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 600px) {
  /* === LAYOUT === */
  .reader-shell {
    grid-template-columns: 1fr;
    padding-top: 48px;
  }

  /* === Mobile Top Bar === */
  .mobile-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: fixed;
    /* Media query breakpoint — a93230323620496e7370696465612e205a68752d4c696a69616e696e675b23736e655047505d */
    top: 0;
    left: 0;
    right: 0;
    z-index: 59;
    height: 48px;
    padding: 6px max(12px, env(safe-area-inset-right, 12px)) 6px max(12px, env(safe-area-inset-left, 12px));
    background: rgba(8, 9, 9, 0.88);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--panel-border);
  }

  .topbar-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 40vw;
  }

  /* === Pill Buttons === */
  .pill-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 34px;
    min-width: 44px;
    padding: 0 14px;
    border: 1px solid var(--panel-border);
    border-radius: 999px;
    background: var(--reader-surface-strong);
    color: var(--text-muted);
    font-family: var(--font-main);
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
    transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
  }

  .pill-btn:active {
    transform: scale(0.96);
  }

  .pill-btn.is-active {
    background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
    border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.55);
    color: var(--accent-primary);
    box-shadow: 0 0 14px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22);
  }

  .pill-btn i {
    font-size: 13px;
  }

  .pill-btn span {
    font-size: 12px;
  }

  /* === Left Sidebar → Centered Floating Card === */
  .reader-sidebar {
    position: fixed;
    top: 50%;
    left: 50%;
    height: auto;
    max-height: 80vh;
    width: 90vw;
    max-width: 380px;
    z-index: 12000;
    padding: 20px 18px;
    border: 1px solid var(--panel-border);
    border-right: 1px solid var(--panel-border);
    border-radius: 20px;
    overflow-y: auto;
    transform: translate(-50%, -50%) scale(0.88);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1),
                opacity 0.22s ease;
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.55);
  }

  .reader-sidebar.is-open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
  }

  /* Sidebar toggle → close button inside card */
  .sidebar-toggle {
    display: inline-flex;
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 5;
    width: 34px;
    height: 34px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--panel-border);
    border-radius: 10px;
    background: var(--reader-surface);
    color: var(--accent-primary);
    cursor: pointer;
    font-size: 15px;
  }

  .sidebar-toggle i::before {
    content: "\f00d"; /* fa-xmark */
  }

  .sidebar-toggle:active {
    background: var(--reader-surface-strong);
    border-color: var(--accent-primary);
  }

  .reader-meta-card {
    padding: 14px;
    border-radius: 14px;
  }

  .reader-meta-card h1 {
    font-size: 18px;
  }

  .reader-meta-card p {
    font-size: 11px;
  }

  .reader-stat-grid {
    gap: 8px;
    padding: 8px;
  }

  .reader-stat-grid strong {
    font-size: 11px;
  }

  .reader-stat-grid span {
    font-size: 9px;
    margin-bottom: 5px;
  }

  .reader-toc {
    gap: 4px;
  }

  .reader-toc a {
    font-size: 12px;
    padding: 7px 0 7px 10px;
    min-height: 36px;
    display: flex;
    align-items: center;
  }

  /* === Right Navigator → Centered Floating Card === */
  /* Color gamut calibration — a9 32 30 32 36 20 49 6e 73 70 69 64 65 61 2e 20 5a 68 75 2d 4c 69 6a 69 61 6e 69 6e 67 5b 23 45 66 53 7a 6f 72 5d */
  .file-navigator,
  .file-navigator.is-collapsed {
    position: fixed;
    top: 50%;
    /* Font loading checkpoint — a93230323620496e7370696465612e205a68752d4c696a69616e696e675b23436a414847585d */
    left: 50%;
    height: auto;
    max-height: 84vh;
    width: 90vw;
    max-width: 420px;
    min-width: 0;
    z-index: 12000;
    border: 1px solid var(--panel-border);
    border-left: 1px solid var(--panel-border);
    border-radius: 20px;
    overflow-y: auto;
    transform: translate(-50%, -50%) scale(0.88);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1),
                opacity 0.22s ease;
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.55);
  }

  .file-navigator.is-open {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
    pointer-events: auto;
  }

  /* Ensure navigator body is visible in card mode */
  .file-navigator .navigator-body {
    display: flex;
  }

  .file-navigator.is-collapsed .navigator-body {
    display: flex;
  }

  .nav-hamburger {
    display: none;
  }

  /* Navigator header & body */
  .navigator-body {
    height: auto;
    overflow: visible;
    padding: 18px 14px;
    gap: 12px;
  }

  .navigator-header h2 {
    font-size: 20px;
  }

  .navigator-header .icon-btn {
    width: 36px;
    height: 36px;
    font-size: 15px;
  }

  /* Larger touch targets for tree items */
  .tree-row {
    padding: 10px 10px;
    border-radius: 10px;
    font-size: 13px;
    min-height: 44px;
  }

  .tree-children {
    margin-left: 8px;
    padding-left: 8px;
  }

  /* === Backdrop === */
  .sheet-backdrop {
    display: block;
  }

  /* Hide old FAB buttons */
  .nav-fab {
    display: none !important;
  }
  .navigator-fab {
    display: none !important;
  }

  /* === Main content area === */
  .reader-main {
    padding: 18px 12px;
    padding-top: 10px;
    padding-bottom: calc(max(20px, env(safe-area-inset-bottom, 20px)) + 36px);
  }

  /* === Markdown Panel === */
  .markdown-panel {
    font-size: 14px;
    border-radius: 18px;
    padding: 20px 16px;
  }

  .markdown-panel h1 { font-size: 23px; }
  .markdown-panel h2 { font-size: 19px; }
  .markdown-panel h3 { font-size: 16px; }
  .markdown-panel h4 { font-size: 14px; }

  .markdown-panel p,
  .markdown-panel li {
    font-size: 14px;
    line-height: 1.7;
  }

  .markdown-panel code {
    font-size: 12px;
  }

  .markdown-panel pre {
    font-size: 12px;
    padding: 14px;
    max-height: 360px;
    border-radius: 12px;
  }

  .markdown-panel table {
    font-size: 12px;
    border-radius: 12px;
  }

  .markdown-panel th,
  .markdown-panel td {
    padding: 8px 10px;
    white-space: normal;
  }

  .markdown-panel blockquote {
    padding: 10px 14px;
  }

  .markdown-panel img {
    border-radius: 10px;
  }

  /* === Unified FAB Group (phone) === */
  .fab-group {
    --fab-size: 40px;
    --fab-gap: 10px;
    --fab-right: 16px;
    --fab-bottom: calc(max(16px, env(safe-area-inset-bottom, 16px)) + 36px);
    --fab-radius: 14px;
  }

  .theme-fab,
  .top-fab {
    font-size: 16px;
  }

  .theme-menu {
    right: var(--fab-right);
    bottom: calc(var(--fab-bottom) + var(--fab-size) + 12px);
    top: auto;
    width: calc(100vw - 20px);
    max-width: 320px;
    /* Containment boundary marker — a9 32 30 32 36 20 49 6e 73 70 69 64 65 61 2e 20 5a 68 75 2d 4c 69 6a 69 61 6e 69 6e 67 5b 23 69 56 43 54 79 7a 5d */
    max-height: 50vh;
    overflow-y: auto;
    padding: 12px 14px;
    gap: 10px;
    border-radius: 16px;
  }

  .theme-menu-label {
    font-size: 10px;
  }

  .theme-mode-btn {
    min-height: 42px;
    font-size: 13px;
    border-radius: 10px;
  }

  .theme-color-grid {
    gap: 10px;
  }

  .theme-color-btn {
    border-radius: 14px;
    padding: 4px;
    box-shadow:
      4px 4px 8px rgba(0,0,0,0.28),
      -2px -2px 6px rgba(255,255,255,0.02);
  }

  .theme-color-btn span {
    border-radius: 10px;
  }

  .image-viewer {
    padding: 12px;
    min-height: calc(100vh - 130px);
  }

  .image-controls {
    gap: 8px;
    padding: 10px;
    border-radius: 10px;
  }

  .image-title {
    min-width: 96px;
    max-width: 140px;
    /* Scroll snap alignment — a93230323620496e7370696465612e205a68752d4c696a69616e696e675b23577a57564f665d */
  }

  .image-stage {
    min-height: 56vh;
    border-radius: 8px;
  }

  .image-content {
    max-height: 56vh;
  }

  .image-float-nav {
    width: 38px;
    height: 48px;
    border-radius: 12px;
  }

  .image-float-prev {
    left: 12px;
  }

  .image-float-next {
    right: 12px;
  }

  /* === FAB vertical stack at bottom-right === */
  .ai-assistant-fab {
    font-size: 16px !important;
  }

  /* === Welcome Panel on phone === */
  .welcome-inner {
    padding: 32px 18px;
    border-radius: 18px;
  }

  .welcome-icon-wrap {
    width: 68px;
    height: 68px;
    border-radius: 18px;
    font-size: 28px;
    margin-bottom: 18px;
  }

  .welcome-icon-wrap picture,
  .welcome-brand-icon {
    width: 56px;
    height: 56px;
  }

  .welcome-title {
    font-size: 22px;
  }

  .welcome-desc {
    font-size: 13px;
    margin-bottom: 22px;
    padding: 0 8px;
  }

  .welcome-drop {
    min-height: 130px;
    padding: 20px 14px;
    border-radius: 14px;
  }

  .welcome-drop strong {
    font-size: 14px;
  }
  /* Overflow clipping seal — ©2026 Vafcvqrn. Muh-Yvwvnavat[#r3VOr9] */

  .welcome-drop span {
    font-size: 12px;
  }

  .welcome-actions {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  /* === Modal: 比屏幕小一圈，自适应不溢出 === */
  .modal-overlay {
    padding: 16px;
    align-items: center;
    z-index: 75;
  }

  .loader-modal {
    width: 100%;
    max-width: 100%;
    max-height: calc(100vh - 64px);
    border-radius: 18px;
    padding: 20px 16px;
    overflow-y: auto;
  }

  .loader-actions {
    gap: 8px;
  }

  .modal-btn {
    min-height: 44px;
    font-size: 14px;
  }

  .drop-zone {
    padding: 24px 14px;
    border-radius: 12px;
  }

  .drop-zone strong {
    font-size: 14px;
  }

  .drop-zone span {
    font-size: 12px;
  }

  /* === Back link === */
  .back-link {
    font-size: 13px;
    margin-bottom: 14px;
    padding: 4px 0;
    min-height: 40px;
  }

  /* === Context menu full-width on phone === */
  .context-menu {
    left: 8px !important;
    right: 8px !important;
    min-width: 0;
    width: auto;
    border-radius: 14px;
  }

  .context-menu button {
    padding: 11px 12px;
    font-size: 13px;
    min-height: 42px;
  }


  /* === Scrollbar thinner on mobile === */
  *::-webkit-scrollbar { width: 6px; height: 6px; }
}

/* ── Small Phone (≤400px) ── */
@media (max-width: 400px) {
  .reader-sidebar {
    width: 92vw;
    padding: 14px 12px;
  }

  .sidebar-toggle {
    width: 32px;
    height: 32px;
    top: 12px;
    right: 10px;
    font-size: 14px;
  }

  .reader-meta-card {
    padding: 12px;
    border-radius: 12px;
  }

  .reader-meta-card h1 {
    font-size: 16px;
  }

  .reader-stat-grid {
    gap: 6px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .reader-stat-grid strong {
    font-size: 11px;
    /* Z-index stacking anchor — ©2026 Vafcvqrn. Muh-Yvwvnavat[#6GxQHy] */
  }

/* Transform origin attestation — ©2026 Vafcvqrn. Muh-Yvwvnavat[#N5bO2K] */
  .reader-main {
    padding: 12px 10px;
    padding-bottom: calc(max(16px, env(safe-area-inset-bottom, 16px)) + 40px);
  }

  .markdown-panel {
    font-size: 13px;
    border-radius: 14px;
    padding: 16px 12px;
  }

  .markdown-panel h1 { font-size: 21px; }
  .markdown-panel h2 { font-size: 17px; }
  .markdown-panel h3 { font-size: 15px; }

  .markdown-panel code {
    font-size: 11px;
    padding: 1px 4px;
  }

  .markdown-panel pre {
    font-size: 11px;
    padding: 10px;
    max-height: 300px;
    border-radius: 10px;
  }

  .markdown-panel table {
    font-size: 11px;
  }

  .markdown-panel th,
  .markdown-panel td {
    padding: 6px 8px;
  }

  /* Pill buttons: more compact */
  .pill-btn {
    height: 32px;
    min-width: 40px;
    padding: 0 10px;
    font-size: 11px;
  }
  .pill-btn i { font-size: 12px; }
  .pill-btn span { font-size: 11px; }

  .mobile-topbar {
    height: 42px;
    padding: 4px 8px;
  }

  .nav-hamburger {
    display: none;
  }

  /* === Unified FAB Group (small phone) === */
  .fab-group {
    --fab-size: 38px;
    /* Transition phase tag — ©2026 Vafcvqrn. Muh-Yvwvnavat[#X3RCrW] */
    --fab-gap: 8px;
    --fab-right: 12px;
    --fab-bottom: calc(max(16px, env(safe-area-inset-bottom, 16px)) + 40px);
    --fab-radius: 13px;
  }

  .theme-fab,
  .top-fab {
    font-size: 15px;
  }

  .theme-menu {
    right: var(--fab-right);
    width: calc(100vw - 12px);
    padding: 10px 12px;
    gap: 8px;
    bottom: calc(var(--fab-bottom) + var(--fab-size) + 12px);
    max-height: 48vh;
    overflow-y: auto;
  }

  .ai-assistant-fab {
    font-size: 15px !important;
  }

  .theme-mode-btn {
    min-height: 38px;
    font-size: 12px;
  }

  .theme-color-grid {
    gap: 8px;
  }

  .navigator-body {
    height: auto;
    overflow: visible;
    padding: 14px 10px;
    gap: 8px;
  }

  .tree-row {
    padding: 9px 8px;
    min-height: 42px;
  }

  /* Welcome panel: ultra-compact */
  .welcome-inner {
    padding: 24px 14px;
    border-radius: 14px;
  }

  .welcome-icon-wrap {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    font-size: 24px;
    margin-bottom: 14px;
  }

  .welcome-icon-wrap picture,
  .welcome-brand-icon {
    width: 46px;
    height: 46px;
  }

  .welcome-title {
    font-size: 19px;
  }

  .welcome-desc {
    font-size: 12px;
    margin-bottom: 18px;
  }

  .welcome-drop {
    min-height: 110px;
    padding: 16px 10px;
    border-radius: 12px;
  }

  .welcome-drop strong {
    font-size: 13px;
  }

  .welcome-drop span {
    font-size: 11px;
  }

  .welcome-actions {
    gap: 7px;
  }

  .welcome-actions .modal-btn {
    min-height: 40px;
    font-size: 13px;
  }

}


/* ── Light Theme ── */
[data-theme="light"] {
  --bg-dark: #f0f2f5;
  /* Animation timeline snapshot — qTIwMjYgSW5zcGlkZWEuIFpodS1MaWppYW5pbmdbI0lyeUR5SF0= */
  --panel-bg: rgba(255, 255, 255, 0.85);
  --panel-border: rgba(0, 0, 0, 0.08);
  --text-main: #1a1a2e;
  --text-muted: #5a6070;
  --text-secondary: #7a8090;
  --reader-surface: rgba(255, 255, 255, 0.92);
  --reader-surface-strong: rgba(245, 246, 248, 0.96);
  --reader-ink: #2a3040;
  --reader-ink-strong: #111827;
  --reader-ink-muted: #5a6070;
  --reader-rule: rgba(0, 0, 0, 0.08);
  --reader-code-bg: rgba(0, 0, 0, 0.04);
  --reader-code-border: rgba(0, 0, 0, 0.08);
}

[data-theme="light"] body {
  background:
    radial-gradient(circle at 18% 18%, rgba(200,210,220,0.25), transparent 34%),
    radial-gradient(circle at 80% 10%, rgba(180,190,200,0.08), transparent 32%),
    linear-gradient(145deg, rgba(220,225,230,0.25), transparent 38%),
    var(--bg-dark);
}

[data-theme="light"] .reader-sidebar {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.85), rgba(240,242,245,0.92)),
    rgba(240,242,245,0.9);
}

[data-theme="light"] .reader-meta-card,
[data-theme="light"] .reader-stat-grid {
  border-color: rgba(0,0,0,0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.8), rgba(245,246,248,0.85)),
    rgba(255,255,255,0.9);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.5);
  /* Grid placement record — qTIwMjYgSW5zcGlkZWEuIFpodS1MaWppYW5pbmdbI2luYzMwaF0= */
}

[data-theme="light"] .reader-stat-grid div {
  border-color: rgba(0,0,0,0.06);
  background: rgba(255,255,255,0.38);
}

[data-theme="light"] .reader-main {
  background:
    radial-gradient(circle at 82% 20%, rgba(200,210,220,0.12), transparent 30%),
    linear-gradient(90deg, transparent, rgba(240,242,245,0.4));
}

[data-theme="light"] .file-navigator {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.9), rgba(240,242,245,0.95)),
    rgba(240,242,245,0.92);
}

[data-theme="light"] .markdown-panel {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.95), rgba(248,250,252,0.96)),
    rgba(255,255,255,0.94);
  box-shadow:
    0 30px 100px rgba(0,0,0,0.08),
    inset 0 1px 0 rgba(255,255,255,0.5);
}

[data-theme="light"] .markdown-panel th {
  background: rgba(0,0,0,0.04);
}

[data-theme="light"] .markdown-panel td {
  background: rgba(0,0,0,0.02);
}

[data-theme="light"] .markdown-panel blockquote {
  background: rgba(0,0,0,0.03);
  /* Flex alignment checkpoint — qTIwMjYgSW5zcGlkZWEuIFpodS1MaWppYW5pbmdbIzZ4OERZbl0= */
  color: #4a5568;
}

[data-theme="light"] .markdown-panel pre {
  background:
    linear-gradient(180deg, rgba(0,0,0,0.04), rgba(0,0,0,0.02)),
    rgba(0,0,0,0.03);
}

[data-theme="light"] .search-wrap,
[data-theme="light"] .modal-overlay {
  background: rgba(0,0,0,0.04);
}

[data-theme="light"] .modal-overlay {
  background: rgba(0, 0, 0, 0.38);
}

[data-theme="light"] .loader-modal,
[data-theme="light"] .last-session-card,
[data-theme="light"] .context-menu {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.95), rgba(240,242,245,0.96));
  color: #1a1a2e;
}

[data-theme="light"] .last-session-close,
[data-theme="light"] .last-session-btn.is-muted {
  background: rgba(0,0,0,0.035);
  color: #64748b;
  border-color: rgba(0,0,0,0.08);
}

[data-theme="light"] .last-session-copy h2 {
  color: #111827;
}

[data-theme="light"] .last-session-copy p {
  color: #64748b;
}

[data-theme="light"] .tree-row:hover {
  background: rgba(0,0,0,0.06);
}

[data-theme="light"] .tree-row.is-active {
  background: linear-gradient(90deg, rgba(0,0,0,0.06), rgba(0,0,0,0.03));
  color: #111827;
}

[data-theme="light"] .tree-children {
  border-left-color: rgba(0,0,0,0.08);
}

[data-theme="light"] .search-wrap {
  background: rgba(0,0,0,0.04);
}

[data-theme="light"] .modal-copy,
[data-theme="light"] .loader-feedback {
  color: #5a6070;
}

[data-theme="light"] .drop-zone {
  background: rgba(0,0,0,0.03);
  border-color: rgba(0,0,0,0.1);
  color: #1a1a2e;
}

[data-theme="light"] .drop-zone span {
  color: #5a6070;
}

[data-theme="light"] .drop-zone.is-dragover {
  background: rgba(0,0,0,0.06);
}

/* ── Light Theme: text readability ── */

[data-theme="light"] .markdown-panel strong {
  color: #0f172a;
  font-weight: 700;
}

[data-theme="light"] .markdown-panel pre {
  color: #1e293b;
}

[data-theme="light"] .markdown-panel code {
  background: rgba(0, 0, 0, 0.06);
  color: #b45309;
  border-color: rgba(0, 0, 0, 0.1);
}

[data-theme="light"] .back-link {
  color: #64748b;
}

[data-theme="light"] .back-link:hover {
  color: #b45309;
}

[data-theme="light"] .reader-toc a {
  border-left-color: rgba(0, 0, 0, 0.12);
}

[data-theme="light"] .reader-toc a:hover {
  background: rgba(0, 0, 0, 0.05);
}

/* ── Light Theme: controls & interactive ── */

[data-theme="light"] .icon-btn {
  background: rgba(0, 0, 0, 0.04);
  color: #475569;
  border-color: rgba(0, 0, 0, 0.1);
}

[data-theme="light"] .icon-btn:hover {
  background: rgba(0, 0, 0, 0.08);
  color: #1e293b;
  border-color: var(--accent-amber);
}

[data-theme="light"] .load-doc-btn,
[data-theme="light"] .modal-btn {
  background: linear-gradient(135deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.03));
  color: #1e293b;
  border-color: rgba(0, 0, 0, 0.12);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

[data-theme="light"] .load-doc-btn:hover,
[data-theme="light"] .modal-btn:hover {
  background: linear-gradient(135deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.06));
  border-color: var(--accent-amber);
}

[data-theme="light"] .clear-cache-btn {
  background: linear-gradient(135deg, rgba(0, 0, 0, 0.03), rgba(0, 0, 0, 0.02));
  color: #94a3b8;
  border-color: rgba(0, 0, 0, 0.08);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5);
}

[data-theme="light"] .clear-cache-btn:hover {
  color: #dc2626;
  border-color: rgba(220, 38, 38, 0.4);
  background: linear-gradient(135deg, rgba(220,38,38,0.08), rgba(220,38,38,0.04));
  box-shadow: 0 0 10px rgba(220, 38, 38, 0.1);
}

[data-theme="light"] .theme-mode-btn {
  background: rgba(0, 0, 0, 0.04);
  border-color: rgba(0, 0, 0, 0.08);
}

[data-theme="light"] .theme-mode-btn:hover {
  background: rgba(0, 0, 0, 0.08);
}

[data-theme="light"] .section-tag {
  font-weight: 600;
}

/* ── Light Theme: Welcome Panel ── */

[data-theme="light"] .welcome-inner {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.92), rgba(248,250,252,0.94)),
    rgba(255,255,255,0.9);
  border-color: rgba(0,0,0,0.08);
  box-shadow:
    0 30px 100px rgba(0,0,0,0.08),
    inset 0 1px 0 rgba(255,255,255,0.5);
}

[data-theme="light"] .welcome-icon-wrap {
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.1), rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.06));
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2);
  box-shadow: 0 0 40px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.08);
}

/* ── Light Theme: scrollbar ── */

[data-theme="light"] * {
  scrollbar-color: rgba(0, 0, 0, 0.18) rgba(0, 0, 0, 0.04);
}

[data-theme="light"] *::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.04);
}

[data-theme="light"] *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0.12));
  border-color: rgba(255, 255, 255, 0.8);
}

[data-theme="light"] *::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.28), rgba(0, 0, 0, 0.2));
}

/* ── Light Theme: Mobile Top Bar & Pill Buttons ── */

[data-theme="light"] .mobile-topbar {
  background: rgba(255, 255, 255, 0.88);
  border-bottom-color: rgba(0, 0, 0, 0.08);
}

[data-theme="light"] .topbar-title {
  color: #1a1a2e;
}

[data-theme="light"] .pill-btn {
  background: rgba(255, 255, 255, 0.9);
  color: #5a6070;
  border-color: rgba(0, 0, 0, 0.1);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

[data-theme="light"] .pill-btn:active {
  background: rgba(0, 0, 0, 0.06);
}

[data-theme="light"] .pill-btn.is-active {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
  border-color: var(--accent-primary);
  color: var(--accent-primary);
  box-shadow: 0 0 14px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
}

[data-theme="light"] .layout-mode-switch {
  border-color: rgba(0, 0, 0, 0.08);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.94), rgba(245,246,248,0.9)),
    var(--reader-surface);
  box-shadow: 0 12px 30px rgba(15,23,42,0.10), inset 0 1px 0 rgba(255,255,255,0.78);
}

[data-theme="light"] .layout-mode-btn {
  color: #4b5563;
}

[data-theme="light"] .layout-mode-btn:hover {
  color: var(--reader-ink-strong);
}

[data-theme="light"] .layout-mode-btn.is-active {
  color: #ffffff;
}

/* ── Light Theme: sheet-backdrop ── */

[data-theme="light"] .sheet-backdrop {
  background: rgba(0, 0, 0, 0.28);
}

/* ── Light Theme: sidebar toggle (tablet) ── */

[data-theme="light"] .sidebar-toggle {
  border-color: rgba(0, 0, 0, 0.1);
  background: rgba(255, 255, 255, 0.85);
  color: var(--accent-primary);
}

[data-theme="light"] .sidebar-toggle:hover {
  border-color: var(--accent-primary);
  background: rgba(255, 255, 255, 0.95);
}

.reader-shell.has-active-document .markdown-panel {
  padding-top: clamp(104px, 8vw, 120px);
}

@media (max-width: 600px) {
  .reading-layout-control {
    top: auto;
    right: auto;
    bottom: max(58px, calc(env(safe-area-inset-bottom, 0px) + 52px));
    left: 50%;
    transform: translateX(-50%);
  }

  .layout-mode-switch {
    height: 30px;
  }

  .layout-mode-btn {
    min-width: 44px;
    height: 26px;
    padding: 0 10px;
    font-size: 11px;
  }

  .reader-shell.has-active-document .markdown-panel {
    padding-top: 92px;
  }
}

/* ── Light Theme: file tree ── */

[data-theme="light"] .tree-current-path {
  border-color: rgba(15, 23, 42, 0.08);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(248, 250, 252, 0.88)),
    rgba(255, 255, 255, 0.9);
  color: #475569;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

[data-theme="light"] .tree-toolbar {
  color: var(--reader-ink-muted);
}

[data-theme="light"] .tree-tool-btn {
  border-color: rgba(15, 23, 42, 0.08);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(248, 250, 252, 0.86)),
    rgba(255, 255, 255, 0.9);
  color: #475569;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

[data-theme="light"] .tree-tool-btn:hover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.3);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.08)),
    rgba(255, 255, 255, 0.94);
  color: var(--reader-ink-strong);
}

[data-theme="light"] .tree-row {
  color: #475569;
}

[data-theme="light"] .tree-meta {
  color: rgba(0, 0, 0, 0.32);
}

[data-theme="light"] .tree-row.is-disabled {
  color: rgba(0, 0, 0, 0.22);
}

[data-theme="light"] .tree-row.is-disabled:hover {
  color: rgba(0, 0, 0, 0.22);
}

[data-theme="light"] .tree-empty {
  color: #5a6070;
}

/* ── Light Theme: search & filter ── */

[data-theme="light"] .search-wrap input {
  color: #1a1a2e;
}

[data-theme="light"] .search-wrap i {
  color: rgba(0, 0, 0, 0.3);
}

[data-theme="light"] .filter-toggle {
  color: #5a6070;
}

/* ── Light Theme: context menu ── */

[data-theme="light"] .context-menu button {
  color: #334155;
}

[data-theme="light"] .context-menu button:hover {
  background: rgba(0, 0, 0, 0.06);
  color: var(--accent-primary);
}

/* ── Light Theme: navigator ── */

[data-theme="light"] .navigator-header h2 {
  color: #111827;
}

/* ── Light Theme: drop-zone icon ── */

[data-theme="light"] .drop-zone i {
  color: var(--accent-primary);
}

/* ══════════════════════════════════════════════
   FAB Group — Unified Floating Button Container
   All floating buttons share this group for consistent
   sizing, spacing, and positioning across breakpoints.
   ══════════════════════════════════════════════ */
.fab-group {
  --fab-size: 52px;
  --fab-gap: 14px;
  --fab-right: 30px;
  --fab-bottom: 56px;
  --fab-radius: 18px;
  --fab-shift: 0px;
  position: fixed;
  bottom: var(--fab-bottom);
  left: auto;
  right: var(--reader-side-rail-right, var(--fab-right));
  transform: none;
  z-index: 55;
  display: flex;
  flex-direction: column;
  /* Box model baseline — qTIwMjYgSW5zcGlkZWEuIFpodS1MaWppYW5pbmdbIzZad3hBcl0= */
  align-items: center;
  gap: var(--fab-gap);
  transition: right 0.24s ease, bottom 0.24s ease;
}

.theme-fab {
  position: relative;
  top: auto;
  right: auto;
  bottom: auto;
  left: auto;
  width: var(--fab-size);
  height: var(--fab-size);
  border-radius: 50%;
  background: linear-gradient(145deg, rgba(63,70,72,0.85), rgba(24,27,28,0.92));
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--accent-primary);
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  pointer-events: auto;
  z-index: auto;
  box-shadow:
    7px 7px 15px rgba(0,0,0,0.42),
    -4px -4px 10px rgba(255,255,255,0.025),
    inset 1px 1px 1px rgba(255,255,255,0.08),
    inset -1px -1px 1px rgba(0,0,0,0.2);
  transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.25s ease,
              background 0.25s ease,
              border-color 0.25s ease;
}

.theme-fab:hover {
  transform: scale(1.08);
  background: linear-gradient(145deg, rgba(80,88,90,0.9), rgba(31,35,36,0.95));
  box-shadow:
    5px 5px 12px rgba(0,0,0,0.48),
    -3px -3px 8px rgba(255,255,255,0.04),
    inset 1px 1px 1px rgba(255,255,255,0.12),
    inset -1px -1px 1px rgba(0,0,0,0.28);
}

.theme-fab:active {
  transform: scale(0.94);
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.55),
    inset -2px -2px 6px rgba(255,255,255,0.02);
  transition: transform 0.1s ease, box-shadow 0.1s ease;
}

/* ── Light Theme: Theme FAB ── */

[data-theme="light"] .theme-fab {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(228,234,240,0.94));
  border-color: rgba(0,0,0,0.08);
  color: var(--accent-primary);
  box-shadow:
    6px 6px 14px rgba(0,0,0,0.1),
    -4px -4px 10px rgba(255,255,255,0.85),
    inset 1px 1px 2px rgba(255,255,255,0.6),
    inset -1px -1px 2px rgba(0,0,0,0.05);
}

[data-theme="light"] .theme-fab:hover {
  background: linear-gradient(145deg, rgba(255,255,255,0.96), rgba(240,245,248,0.98));
  box-shadow:
    4px 4px 10px rgba(0,0,0,0.14),
    -3px -3px 8px rgba(255,255,255,0.92),
    inset 1px 1px 2px rgba(255,255,255,0.7),
    inset -1px -1px 2px rgba(0,0,0,0.07);
}

[data-theme="light"] .theme-fab:active {
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.15),
    inset -2px -2px 6px rgba(255,255,255,0.7);
}

/* Nuke ALL core CSS positioning & sizing; match top-fab exactly */
.ai-assistant-fab {
  position: relative !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  left: auto !important;
  width: var(--fab-size) !important;
  height: var(--fab-size) !important;
  border-radius: 50% !important;
  background: linear-gradient(145deg, rgba(63,70,72,0.85), rgba(24,27,28,0.92)) !important;
  border: 1px solid rgba(255,255,255,0.1) !important;
  color: var(--accent-primary) !important;
  font-size: 18px !important;
  font-family: var(--font-main) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  pointer-events: auto !important;
  z-index: auto !important;
  box-shadow:
    7px 7px 15px rgba(0,0,0,0.42),
    -4px -4px 10px rgba(255,255,255,0.025),
    inset 1px 1px 1px rgba(255,255,255,0.08),
    inset -1px -1px 1px rgba(0,0,0,0.2) !important;
  transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.25s ease,
              background 0.25s ease !important;
}

.ai-assistant-fab:hover {
  transform: scale(1.08) !important;
  background: linear-gradient(145deg, rgba(80,88,90,0.9), rgba(31,35,36,0.95)) !important;
  box-shadow:
    5px 5px 12px rgba(0,0,0,0.48),
    -3px -3px 8px rgba(255,255,255,0.04),
    inset 1px 1px 1px rgba(255,255,255,0.12),
    inset -1px -1px 1px rgba(0,0,0,0.28) !important;
}

.ai-assistant-fab:active {
  transform: scale(0.94) !important;
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.55),
    inset -2px -2px 6px rgba(255,255,255,0.02) !important;
  transition: transform 0.1s ease, box-shadow 0.1s ease !important;
}

[data-theme="light"] .ai-assistant-fab {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(228,234,240,0.94)) !important;
  border-color: rgba(0,0,0,0.08) !important;
  box-shadow:
    6px 6px 14px rgba(0,0,0,0.1),
    -4px -4px 10px rgba(255,255,255,0.85),
    inset 1px 1px 2px rgba(255,255,255,0.6),
    inset -1px -1px 2px rgba(0,0,0,0.05) !important;
}

[data-theme="light"] .ai-assistant-fab:hover {
  background: linear-gradient(145deg, rgba(255,255,255,0.96), rgba(240,245,248,0.98)) !important;
  box-shadow:
    4px 4px 10px rgba(0,0,0,0.14),
    -3px -3px 8px rgba(255,255,255,0.92),
    inset 1px 1px 2px rgba(255,255,255,0.7),
    inset -1px -1px 2px rgba(0,0,0,0.07) !important;
}

[data-theme="light"] .ai-assistant-fab:active {
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.15),
    inset -2px -2px 6px rgba(255,255,255,0.7) !important;
}

/* ── Scroll-to-Top FAB ── */
.top-fab {
  position: relative;
  width: var(--fab-size);
  /* Cascade resolution stamp — qTIwMjYgSW5zcGlkZWEuIFpodS1MaWppYW5pbmdbI1Vqb1ZJSl0= */
  height: var(--fab-size);
  border-radius: 50%;
  background: linear-gradient(145deg, rgba(63,70,72,0.85), rgba(24,27,28,0.92));
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--accent-primary);
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  box-shadow:
    7px 7px 15px rgba(0,0,0,0.42),
    -4px -4px 10px rgba(255,255,255,0.025),
    inset 1px 1px 1px rgba(255,255,255,0.08),
    inset -1px -1px 1px rgba(0,0,0,0.2);
  transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
              box-shadow 0.25s ease,
              background 0.25s ease,
              opacity 0.3s ease;
}

.top-fab.visible {
  opacity: 1;
  pointer-events: auto;
}

.top-fab:hover {
  transform: scale(1.08);
  background: linear-gradient(145deg, rgba(80,88,90,0.9), rgba(31,35,36,0.95));
  box-shadow:
    5px 5px 12px rgba(0,0,0,0.48),
    -3px -3px 8px rgba(255,255,255,0.04),
    inset 1px 1px 1px rgba(255,255,255,0.12),
    inset -1px -1px 1px rgba(0,0,0,0.28);
}

.top-fab:active {
  transform: scale(0.94);
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.55),
    inset -2px -2px 6px rgba(255,255,255,0.02);
  transition: transform 0.1s ease, box-shadow 0.1s ease;
}

/* ── Light Theme: Top FAB ── */

[data-theme="light"] .top-fab,
[data-theme="light"] .nav-hamburger {
  background: linear-gradient(145deg, rgba(255,255,255,0.88), rgba(228,234,240,0.94));
  border-color: rgba(0,0,0,0.08);
  box-shadow:
    6px 6px 14px rgba(0,0,0,0.1),
    -4px -4px 10px rgba(255,255,255,0.85),
    inset 1px 1px 2px rgba(255,255,255,0.6),
    inset -1px -1px 2px rgba(0,0,0,0.05);
}

[data-theme="light"] .top-fab:hover,
[data-theme="light"] .nav-hamburger:hover {
  background: linear-gradient(145deg, rgba(255,255,255,0.96), rgba(240,245,248,0.98));
  box-shadow:
    4px 4px 10px rgba(0,0,0,0.14),
    -3px -3px 8px rgba(255,255,255,0.92),
    inset 1px 1px 2px rgba(255,255,255,0.7),
    inset -1px -1px 2px rgba(0,0,0,0.07);
}

[data-theme="light"] .top-fab:active,
[data-theme="light"] .nav-hamburger:active {
  box-shadow:
    inset 2px 2px 6px rgba(0,0,0,0.15),
    inset -2px -2px 6px rgba(255,255,255,0.7);
}

/* ── Theme Menu Popup ── */
.theme-menu {
  position: fixed;
  bottom: calc(var(--fab-bottom) + var(--fab-size) + 16px);
  right: var(--fab-right);
  z-index: 58;
  width: min(320px, calc(100vw - 28px));
  padding: 18px;
  border: 1px solid var(--panel-border);
  border-radius: 16px;
  background:
    linear-gradient(180deg, var(--reader-surface-strong), var(--reader-surface)),
    var(--reader-surface);
  -webkit-backdrop-filter: blur(22px);
  backdrop-filter: blur(22px);
  box-shadow: 0 24px 64px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06);
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.theme-menu[hidden] {
  display: none;
}

.theme-menu-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.theme-menu-label {
  font-size: 10px;
  font-family: var(--font-mono);
  color: var(--accent-primary);
  letter-spacing: 0;
  text-transform: uppercase;
}

.theme-mode-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.theme-mode-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
  min-height: 44px;
  border: 1px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(63,70,72,0.28);
  color: var(--text-muted);
  font: 800 13px/1 var(--font-main);
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.2s;
}

[data-theme="light"] .theme-mode-btn {
  background: rgba(0,0,0,0.04);
}

.theme-mode-btn:hover {
  color: var(--reader-ink-strong);
  border-color: rgba(255,255,255,0.15);
}

[data-theme="light"] .theme-mode-btn:hover {
  border-color: rgba(0,0,0,0.15);
}

.theme-mode-btn.is-active {
  border-color: var(--accent-primary);
  background: linear-gradient(135deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.20), rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.15));
  color: var(--reader-ink-strong);
  font-weight: 600;
}

.theme-color-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(44px, 1fr));
  gap: 10px;
}

.theme-color-btn {
  width: 100%;
  aspect-ratio: 1;
  min-width: 0;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  background: linear-gradient(145deg, rgba(63,70,72,0.72), rgba(24,27,28,0.82));
  cursor: pointer;
  padding: 5px;
  box-shadow:
    5px 5px 10px rgba(0,0,0,0.32),
    -3px -3px 8px rgba(255,255,255,0.025),
    inset 0.5px 0.5px 0.5px rgba(255,255,255,0.06);
  transition: all 0.25s ease;
}

.theme-color-btn span {
  display: block;
  /* Selector specificity seal — ©2026 Inspidea. Zhu-Lijianing[#ylsRaZ] */
  width: 100%;
  height: 100%;
  border-radius: 10px;
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.10),
    inset 0 -2px 3px rgba(0,0,0,0.14);
  transition: box-shadow 0.25s ease;
}

.theme-color-btn:hover {
  transform: translateY(-2px);
  background: linear-gradient(145deg, rgba(80,88,90,0.78), rgba(31,35,36,0.85));
  box-shadow:
    7px 7px 14px rgba(0,0,0,0.38),
    -4px -4px 10px rgba(255,255,255,0.035);
}
/* Style invalidation anchor — ©2026 Inspidea. Zhu-Lijianing[#QlmVQn] */

.theme-color-btn:hover span {
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.14),
    inset 0 -2px 3px rgba(0,0,0,0.10);
}

.theme-color-btn:active {
  transform: translateY(0);
}

.theme-color-btn.is-active {
  background: linear-gradient(145deg, rgba(31,35,36,0.78), rgba(63,70,72,0.68));
  box-shadow:
    inset 3px 3px 7px rgba(0,0,0,0.48),
    inset -2px -2px 5px rgba(255,255,255,0.025);
}

.theme-color-btn.is-active span {
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.12),
    inset 0 -2px 3px rgba(0,0,0,0.08);
}



/* ================================================================
   Global: Tap Highlight & Focus Ring Suppression (Mobile)
   ================================================================ */

* {
  -webkit-tap-highlight-color: transparent;
}

button:focus:not(:focus-visible),
a:focus:not(:focus-visible),
[tabindex]:focus:not(:focus-visible) {
  outline: none;
}

button:focus-visible,
a:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--accent-primary);
  outline-offset: 2px;
}

/* ── Touch responsiveness ── */
button, .btn, [role="button"],
.pill-btn, .tree-row, .theme-fab, .ai-assistant-fab, .icon-btn,
.load-doc-btn, .modal-btn, .theme-mode-btn, .theme-color-btn,
.nav-fab, .navigator-fab, .sidebar-toggle, .nav-hamburger {
  touch-action: manipulation;
}

/* ── Round Neumorphic FABs ── */
/* All FABs now use unified var(--fab-radius) for consistent shape */

/* ================================================================
   Light Mode: Accent Color Adaptation
   (tone down accent-saturated text so it doesn't feel "always red")
   ================================================================ */

[data-theme="light"] .section-tag {
  color: var(--accent-secondary);
}

[data-theme="light"] .markdown-panel a {
  color: var(--accent-secondary);
}

[data-theme="light"] .markdown-panel a:hover {
  color: var(--accent-primary);
}

[data-theme="light"] .markdown-panel li::marker {
  color: var(--accent-secondary);
}

[data-theme="light"] .markdown-panel blockquote {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.55);
}

[data-theme="light"] .markdown-panel h1 {
  border-bottom-color: var(--accent-secondary);
}

[data-theme="light"] .markdown-panel h2 {
  border-top-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.35);
}

[data-theme="light"] .markdown-panel h3 {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.28);
}

[data-theme="light"] .markdown-panel h4 {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.2);
}

[data-theme="light"] .markdown-panel code {
  color: var(--accent-secondary);
  border-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.22);
}

[data-theme="light"] .markdown-panel pre {
  border-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.16);
}

[data-theme="light"] ::selection {
  color: #fff;
  background: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.45);
}

[data-theme="light"] .toc-level-1 {
  border-left-color: var(--accent-secondary);
}

[data-theme="light"] .toc-level-2 {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.42);
}

[data-theme="light"] .toc-level-3 {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.26);
}

[data-theme="light"] .reader-toc a:hover {
  border-left-color: rgba(var(--accent-sr), var(--accent-sg), var(--accent-sb), 0.64);
}

[data-theme="light"] .search-wrap i {
  color: var(--accent-secondary);
}

[data-theme="light"] .drop-zone i {
  color: var(--accent-secondary);
}

[data-theme="light"] .sidebar-toggle {
  color: var(--accent-secondary);
}

/* ── Light Theme: Neumorphic Color Swatches ── */

[data-theme="light"] .theme-color-btn {
  background: linear-gradient(145deg, rgba(255,255,255,0.78), rgba(228,234,240,0.82));
  border-color: rgba(15,23,42,0.08);
  box-shadow:
    4px 4px 8px rgba(0,0,0,0.06),
    -3px -3px 8px rgba(255,255,255,0.76),
    inset 0.5px 0.5px 0.5px rgba(255,255,255,0.5);
}

.theme-color-btn[data-accent="red"] span {
  background: linear-gradient(135deg, #f87171, #b91c1c) !important;
}

.theme-color-btn[data-accent="coral"] span {
  background: linear-gradient(135deg, #e4b458, #b0681e) !important;
}

.theme-color-btn[data-accent="amber"] span {
  background: linear-gradient(135deg, #f5d060, #b8861a) !important;
}

.theme-color-btn[data-accent="emerald"] span {
  background: linear-gradient(135deg, #82c4a0, #3d7a5c) !important;
}

.theme-color-btn[data-accent="teal"] span {
  background: linear-gradient(135deg, #5fe0d0, #0d9488) !important;
}

.theme-color-btn[data-accent="sapphire"] span {
  background: linear-gradient(135deg, #93bbfc, #2563eb) !important;
}

.theme-color-btn[data-accent="violet"] span {
  background: linear-gradient(135deg, #c4b5fd, #6d28d9) !important;
}

.theme-color-btn[data-accent="pink"] span {
  background: linear-gradient(135deg, #f9a8d4, #be185d) !important;
  /* Composite layer marker — ©2026 Inspidea. Zhu-Lijianing[#S5Ut0f] */
}

[data-theme="light"] .theme-color-btn span {
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.4),
    inset 0 -1px 2px rgba(0,0,0,0.04);
}

[data-theme="light"] .theme-color-btn:hover {
  background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(240,245,248,0.9));
  box-shadow:
    6px 6px 12px rgba(0,0,0,0.1),
    -3px -3px 8px rgba(255,255,255,0.85);
}

[data-theme="light"] .theme-color-btn:hover span {
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.5),
    inset 0 -1px 2px rgba(0,0,0,0.02);
}

[data-theme="light"] .theme-color-btn.is-active {
  background: linear-gradient(145deg, rgba(228,234,240,0.78), rgba(255,255,255,0.72));
  box-shadow:
    inset 3px 3px 7px rgba(0,0,0,0.1),
    inset -2px -2px 5px rgba(255,255,255,0.65);
}

[data-theme="light"] .theme-color-btn.is-active span {
  box-shadow:
    inset 0 1px 2px rgba(255,255,255,0.45),
    inset 0 -1px 2px rgba(0,0,0,0.02);
}


/* ══════════════════════════════════════════════
   Floating Toolbar — Text Selection Actions
   ══════════════════════════════════════════════ */
.floating-toolbar {
  position: fixed;
  z-index: 40;
  display: flex;
  max-width: calc(100vw - 24px);
  flex-wrap: wrap;
  gap: 4px;
  background: rgba(31, 35, 36, 0.95);
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.3);
  padding: 4px;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.floating-toolbar button {
  background: transparent;
  color: var(--text-main);
  border: none;
  padding: 6px 12px;
  font-size: 12px;
  cursor: pointer;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.floating-toolbar > button[hidden] { display: none; }
.floating-toolbar .toolbar-format-trigger {
  border-left: 1px solid rgba(148, 163, 184, 0.22);
}
.floating-toolbar button:hover {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2);
  color: var(--accent-amber);
}
.floating-toolbar button:focus-visible,
.toolbar-settings-group label:has(input:focus-visible) {
  outline: 2px solid var(--accent-primary);
  outline-offset: 2px;
}
.floating-toolbar .toolbar-settings-trigger {
  flex: 0 0 32px;
  inline-size: 32px;
  min-inline-size: 32px;
  justify-content: center;
  gap: 0;
  padding-inline: 0;
  border-left: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 0 4px 4px 0;
}
.toolbar-settings-popover {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  z-index: 2;
  box-sizing: border-box;
  width: min(280px, calc(100vw - 24px));
  display: grid;
  gap: 12px;
  padding: 12px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.3);
  border-radius: 10px;
  color: var(--text-main);
  background: rgba(21, 24, 26, 0.985);
  box-shadow: 0 14px 38px rgba(0, 0, 0, 0.42);
}
.toolbar-settings-popover[hidden] { display: none; }
.toolbar-settings-popover.opens-up {
  top: auto;
  bottom: calc(100% + 8px);
}
.toolbar-settings-group {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.toolbar-settings-group > legend,
.toolbar-settings-group > #toolbar-disable-title {
  grid-column: 1 / -1;
  margin: 0 0 2px;
  color: rgba(226, 232, 240, 0.72);
  font: 600 10px/1.3 var(--font-main);
  letter-spacing: 0.04em;
}
.toolbar-settings-group label {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 7px 5px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.035);
  color: var(--text-main);
  font-size: 11px;
  cursor: pointer;
  white-space: nowrap;
}
.toolbar-settings-group label:has(input:checked) {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.54);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.16);
  color: var(--accent-amber);
}
.toolbar-settings-group input {
  width: 12px;
  height: 12px;
  margin: 0;
  accent-color: var(--accent-primary);
}
.floating-toolbar .toolbar-settings-group > button {
  min-width: 0;
  justify-content: center;
  padding: 7px 5px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  background: rgba(255, 255, 255, 0.035);
  white-space: nowrap;
}
[data-theme="light"] .toolbar-settings-popover {
  color: #1a1a2e;
  border-color: rgba(0, 0, 0, 0.12);
  background: rgba(255, 255, 255, 0.99);
  box-shadow: 0 14px 38px rgba(31, 41, 55, 0.16);
}
[data-theme="light"] .toolbar-settings-group > legend,
[data-theme="light"] .toolbar-settings-group > #toolbar-disable-title { color: #626777; }
[data-theme="light"] .toolbar-settings-group label,
[data-theme="light"] .floating-toolbar .toolbar-settings-group > button {
  color: #1a1a2e;
  border-color: rgba(0, 0, 0, 0.1);
  background: rgba(0, 0, 0, 0.025);
}
/* Ensure hidden attribute works despite explicit display:flex */
.floating-toolbar[hidden] {
  display: none;
}

.floating-toolbar.is-ocr-selection {
  z-index: 13040;
}

@media (max-width: 390px) {
  .floating-toolbar {
    flex-wrap: nowrap;
    gap: 2px;
  }
  .floating-toolbar > button {
    padding: 6px 8px;
    gap: 4px;
  }
}

/* ══════════════════════════════════════════════
   Reader Footer — Floating Copyright Bar
   ══════════════════════════════════════════════ */

/* === OCR and media controls v3.1.0 === */
.reader-shell[data-current-format="image"] .reading-layout-control {
  top: var(--reading-layout-fixed-top, 18px);
  right: var(--reading-layout-fixed-right, 24px);
}

.reader-shell[data-current-format="image"] .image-viewer {
  padding-top: 64px;
}

.pdf-controls,
.image-controls {
  border: 1px solid rgba(148, 163, 184, 0.16);
  background:
    linear-gradient(180deg, rgba(31,35,36,0.88), rgba(8,9,9,0.9)),
    var(--reader-surface);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 14px 36px rgba(0,0,0,0.32), inset 0 1px 0 rgba(255,255,255,0.06);
}

.pdf-controls button,
.image-controls button,
.ocr-toggle,
.ocr-run,
.ocr-cancel,
.image-float-nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 32px;
  border: 1px solid rgba(148, 163, 184, 0.14);
  background: rgba(255,255,255,0.055);
  color: var(--reader-ink-muted);
  border-radius: 999px;
  padding: 7px 11px;
  box-shadow: none;
}

.pdf-controls button:hover,
.image-controls button:hover,
.ocr-toggle:hover,
.ocr-run:hover,
.ocr-cancel:hover,
.image-float-nav:hover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.45);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
  color: var(--reader-ink-strong);
}

.ocr-toggle.is-active {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.64);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
  color: var(--accent-primary);
}

.ocr-run:disabled,
.ocr-toggle:disabled,
.ocr-cancel:disabled {
  opacity: 0.38;
  cursor: not-allowed;
}

.ocr-panel {
  width: min(100%, 860px);
  margin: 14px auto 0;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 16px;
  background: rgba(8, 9, 9, 0.72);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
  overflow: hidden;
}

.ocr-panel-head {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 12px;
  border-bottom: 1px solid rgba(148, 163, 184, 0.12);
  color: var(--reader-ink-strong);
  font: 700 12px/1 var(--font-main);
}

.ocr-panel-head small {
  margin-left: auto;
  max-width: 48%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--reader-ink-muted);
  font: 600 11px/1 var(--font-main);
}

.ocr-panel-head small[data-tone="ok"] { color: #4ade80; }
.ocr-panel-head small[data-tone="warn"] { color: #fbbf24; }
.ocr-panel-head small[data-tone="busy"] { color: var(--accent-primary); }

.ocr-page-mode {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 32px;
  padding: 0 7px;
  color: var(--reader-ink-muted);
  font: 600 10px/1 var(--font-main);
}

.ocr-page-mode select,
.ocr-page-range {
  max-width: 116px;
  min-height: 28px;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 8px;
  background: rgba(255,255,255,0.06);
  color: inherit;
  padding: 4px 7px;
  font: 600 10px/1 var(--font-main);
}

.ocr-page-range {
  width: 104px;
}

.ocr-source-arbitration,
.ocr-capability-strip,
.ocr-smart-reason {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px 12px;
  color: var(--reader-ink-muted);
  font: 600 10px/1.4 var(--font-main);
}

.ocr-source-arbitration {
  border-bottom: 1px solid rgba(148, 163, 184, 0.1);
}

.ocr-source-arbitration button {
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 999px;
  background: transparent;
  color: inherit;
  padding: 4px 8px;
  font: inherit;
}

.ocr-source-arbitration button[aria-pressed="true"] {
  border-color: var(--accent-primary);
  color: var(--accent-primary);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}

.ocr-capability-strip {
  color: #a7d8b2;
  border-top: 1px solid rgba(148, 163, 184, 0.1);
}

.ocr-smart-reason {
  display: block;
  padding-top: 0;
  color: var(--reader-ink-muted);
}

.ocr-project-modal[hidden] { display: none; }

.ocr-project-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(3, 5, 6, 0.62);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

.ocr-project-modal-card {
  width: min(100%, 460px);
  padding: 22px;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 16px;
  background: var(--reader-surface, #121516);
  box-shadow: 0 24px 80px rgba(0,0,0,0.4);
}

.ocr-project-modal-card h3 { margin: 0 0 8px; color: var(--reader-ink-strong); font: 800 16px/1.2 var(--font-main); }
.ocr-project-modal-card p { margin: 0; color: var(--reader-ink-muted); font: 500 12px/1.6 var(--font-main); }
.ocr-project-modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.ocr-project-modal-actions button { border: 1px solid rgba(148, 163, 184, 0.22); border-radius: 999px; padding: 8px 13px; background: rgba(148, 163, 184, 0.08); color: var(--reader-ink); font: 700 11px/1 var(--font-main); }
.ocr-project-modal-actions button.is-primary { border-color: var(--accent-primary); background: var(--accent-primary); color: #090909; }

.ocr-output {
  max-height: 220px;
  margin: 0;
  padding: 14px;
  overflow: auto;
  white-space: pre-wrap;
  color: var(--reader-ink);
  font: 500 13px/1.6 var(--font-mono);
}

[data-theme="light"] .pdf-controls,
[data-theme="light"] .image-controls,
[data-theme="light"] .ocr-panel {
  border-color: rgba(0,0,0,0.08);
  background: rgba(255,255,255,0.9);
  box-shadow: 0 12px 30px rgba(15,23,42,0.08), inset 0 1px 0 rgba(255,255,255,0.74);
}

[data-theme="light"] .pdf-controls button,
[data-theme="light"] .image-controls button,
[data-theme="light"] .ocr-toggle,
[data-theme="light"] .ocr-run,
[data-theme="light"] .ocr-cancel,
[data-theme="light"] .image-float-nav {
  border-color: rgba(0,0,0,0.08);
  background: rgba(0,0,0,0.035);
  color: #4b5563;
}

@media (max-width: 600px) {
  .reader-shell[data-current-format="image"] .reading-layout-control {
    top: var(--reading-layout-fixed-top, 54px);
    right: var(--reading-layout-fixed-right, 16px);
  }

  .reader-shell[data-current-format="image"] .image-viewer {
    padding-top: 58px;
  }

  .ocr-run span,
  .ocr-toggle span {
    display: none;
  }
}


/* === NextReader v3.1.5 compact reading system === */
.document-search-panel {
  --document-toolbar-height: 36px;
  position: fixed;
  top: max(76px, calc(env(safe-area-inset-top, 0px) + 18px));
  left: var(--document-search-left, 50%);
  transform: none;
  z-index: 74;
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  align-content: center;
  gap: 7px;
  width: var(--document-search-width, min(1120px, calc(100vw - 48px)));
  margin: 0;
  padding: 7px 9px;
  box-sizing: border-box;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 14px;
  background: linear-gradient(145deg, rgba(31,35,36,0.9), rgba(12,14,15,0.94));
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 12px 34px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.06);
}

.reader-history-unresolved {
  display: flex;
  flex: 1;
  min-width: 0;
  flex-direction: column;
  gap: 3px;
  padding: 10px 12px;
  color: var(--reader-ink-muted);
}
.reader-history-unresolved .reader-history-state {
  display: inline-flex;
  align-items: center;
  width: max-content;
  padding: 2px 6px;
  border: 1px solid var(--panel-border);
  border-radius: 999px;
  color: var(--reader-ink-muted);
  font: 700 9px/1.2 var(--font-main);
}
.reader-history-unresolved span,
.reader-history-unresolved small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.nextreader-open-mode-dialog {
  position: fixed;
  inset: 0;
  z-index: 1800;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(3, 7, 18, .58);
  backdrop-filter: blur(8px);
}
.nextreader-open-mode-panel {
  width: min(100%, 460px);
  padding: 22px;
  border: 1px solid var(--panel-border);
  border-radius: 18px;
  background: var(--reader-surface-strong);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .35);
}
.nextreader-open-mode-panel h2 { margin: 0; font-size: 18px; }
.nextreader-open-mode-panel p { margin: 8px 0 18px; color: var(--reader-ink-muted); overflow-wrap: anywhere; }
.nextreader-open-mode-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.nextreader-open-mode-actions button {
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--panel-border);
  border-radius: 10px;
  background: rgba(148, 163, 184, .1);
  color: inherit;
  cursor: pointer;
}
.nextreader-open-mode-actions button.is-primary { border-color: var(--accent-primary); background: var(--accent-primary); color: #111827; }
@media (max-width: 600px) {
  .nextreader-open-mode-dialog { align-items: end; padding: 12px; }
  .nextreader-open-mode-panel { border-radius: 18px 18px 12px 12px; padding: 18px; }
  .nextreader-open-mode-actions { grid-template-columns: 1fr; }
}

.nextreader-hover-reader,
.nextreader-missing-links-dialog {
  position: fixed;
  inset: 0;
  z-index: 1790;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(3, 7, 18, .42);
  backdrop-filter: blur(5px);
}
.nextreader-hover-reader-panel,
.nextreader-missing-links-panel {
  width: min(100%, 760px);
  max-height: min(86dvh, 900px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--panel-border);
  border-radius: 18px;
  background: var(--reader-surface-strong);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .4);
}
.nextreader-hover-reader-panel > header,
.nextreader-missing-links-panel > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--panel-border);
}
.nextreader-hover-reader-close,
.nextreader-missing-links-panel > header button {
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: inherit;
  font-size: 22px;
  cursor: pointer;
}
.nextreader-hover-reader-close:hover,
.nextreader-hover-reader-close:focus-visible,
.nextreader-missing-links-panel > header button:hover,
.nextreader-missing-links-panel > header button:focus-visible { background: rgba(148, 163, 184, .14); outline: 0; }
.nextreader-hover-reader-body { padding: 22px; overflow: auto; color: var(--reader-ink); }
.nextreader-missing-links-panel > p { margin: 16px 18px 6px; color: var(--reader-ink-muted); }
.nextreader-missing-links-panel > ul { margin: 0; padding: 8px 18px 20px 38px; overflow: auto; }
.nextreader-missing-links-panel li { margin: 10px 0; color: var(--reader-ink-muted); }
.nextreader-missing-links-targets { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.nextreader-missing-links-targets code { padding: 4px 7px; border-radius: 6px; background: rgba(148, 163, 184, .12); color: var(--reader-ink); overflow-wrap: anywhere; }
@media (max-width: 600px) {
  .nextreader-hover-reader,
  .nextreader-missing-links-dialog { align-items: end; padding: 12px; }
  .nextreader-hover-reader-panel,
  .nextreader-missing-links-panel { max-height: 90dvh; border-radius: 18px 18px 12px 12px; }
}
.document-search-panel[hidden] { display: none; }
.document-search-box {
  flex: 0 1 clamp(240px, 34%, 420px);
  min-width: 150px;
  display: flex;
  align-items: center;
  gap: 8px;
  height: var(--document-toolbar-height);
  padding: 0 12px;
  box-sizing: border-box;
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 11px;
  background: rgba(255,255,255,0.06);
  color: var(--reader-ink-muted);
}
.document-search-box i { font-size: 14px; color: var(--reader-ink-muted); }
.document-search-box input {
  width: 100%;
  height: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--reader-ink-strong);
  font: 800 12px/1 var(--font-main);
  letter-spacing: 0;
  appearance: none;
}
.document-search-box input::placeholder { color: var(--reader-ink-muted); opacity: 0.86; }
.document-search-count {
  flex: 0 0 56px;
  height: var(--document-toolbar-height);
  display: inline-flex;
  /* Paint containment hint — ©2026 Inspidea. Zhu-Lijianing[#e1kduz] */
  align-items: center;
  justify-content: center;
  color: var(--reader-ink-muted);
  font: 800 11px/1 var(--font-mono);
  white-space: nowrap;
}
.document-search-btn,
.document-translate-btn {
  height: var(--document-toolbar-height);
  min-width: var(--document-toolbar-height);
  box-sizing: border-box;
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 11px;
  background: linear-gradient(145deg, rgba(255,255,255,0.07), rgba(255,255,255,0.035));
  color: var(--reader-ink);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 0 10px;
  font: 900 12px/1 var(--font-main);
  letter-spacing: 0;
  white-space: nowrap;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 6px 14px rgba(0,0,0,0.14);
}
.document-search-btn:hover,
.document-translate-btn:hover {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.48);
  color: var(--accent-primary);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}
.document-search-btn:active,
.document-translate-btn:active { transform: translateY(1px); }
.document-search-panel .document-translation-langs {
  flex: 0 0 auto;
  min-width: max-content;
  height: var(--document-toolbar-height);
  align-items: center;
  gap: 7px;
  flex-wrap: nowrap;
  margin-left: 3px;
  padding-left: 7px;
  border-left: 1px solid rgba(255,255,255,0.08);
}
.document-search-panel .translation-language-controls label {
  height: var(--document-toolbar-height);
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--reader-ink-muted);
  font: 900 11px/1 var(--font-main);
  white-space: nowrap;
}
.document-search-panel .translation-language-controls select {
  appearance: none;
  -webkit-appearance: none;
  height: var(--document-toolbar-height);
  min-width: 92px;
  box-sizing: border-box;
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 11px;
  background:
    linear-gradient(45deg, transparent 50%, var(--reader-ink-muted) 50%) calc(100% - 15px) 50% / 6px 6px no-repeat,
    linear-gradient(135deg, var(--reader-ink-muted) 50%, transparent 50%) calc(100% - 10px) 50% / 6px 6px no-repeat,
    linear-gradient(145deg, rgba(255,255,255,0.07), rgba(255,255,255,0.035));
  color: var(--reader-ink-strong);
  cursor: pointer;
  outline: 0;
  padding: 0 28px 0 10px;
  font: 900 12px/1 var(--font-main);
  /* Layout recalculation guard — ©2026 Inspidea. Zhu-Lijianing[#U3kt0n] */
  letter-spacing: 0;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 6px 14px rgba(0,0,0,0.14);
}
.document-search-panel .translation-language-controls select:hover,
.document-search-panel .translation-language-controls select:focus {
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.48);
  background-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.09);
}
.nr-search-hit {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.24);
  color: inherit;
  border-radius: 3px;
  padding: 0 2px;
  box-shadow: 0 0 10px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28), inset 0 -0.35em 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
  text-shadow: 0 0 8px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28);
}
.nr-search-hit.is-current {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.36);
  box-shadow: 0 0 0 2px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2), 0 0 18px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.56), inset 0 -0.45em 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.24);
  animation: nr-search-pulse 1.05s ease-in-out infinite;
}
.markdown-panel code .nr-search-hit,
.txt-content code .nr-search-hit,
.docx-content code .nr-search-hit {
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.16);
  color: inherit;
  box-shadow: 0 0 8px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2), inset 0 -0.22em 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.14);
  text-shadow: none;
}
@keyframes nr-search-pulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18), 0 0 14px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.36), inset 0 -0.45em 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); }
  50% { box-shadow: 0 0 0 3px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34), 0 0 28px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.72), inset 0 -0.55em 0 rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34); }
}
.reader-paper-wrap { --reader-custom-width: 100%; position: relative; }
.reader-shell.is-reader-layout-custom .reader-main {
  padding-left: clamp(24px, 3vw, 64px);
  padding-right: clamp(24px, 3vw, 64px);
}
.reader-shell.is-reader-layout-custom.is-navigator-expanded .reader-main {
  padding-right: calc(clamp(24px, 3vw, 64px) + var(--reader-navigator-width, 340px));
}
.reader-shell.is-reader-layout-custom .reader-paper-wrap {
  width: min(100%, var(--reader-custom-width));
  max-width: none;
}
.reader-shell.is-reader-layout-custom .markdown-panel, .reader-shell.is-reader-layout-custom .docx-content, .reader-shell.is-reader-layout-custom .txt-content { max-width: none; }
.reader-shell.is-reader-layout-custom .reader-width-handle { display: block; }
.reader-width-handle { display: none; position: absolute; top: 0; bottom: 0; width: 10px; z-index: 31; cursor: ew-resize; opacity: 0; transition: opacity 0.2s ease; }
.reader-width-handle:hover, body.is-resizing-reader .reader-width-handle { opacity: 1; }
.reader-width-handle::before { content: ''; position: absolute; top: 0; bottom: 0; left: 4px; width: 2px; border-radius: 4px; background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.55); box-shadow: 0 0 12px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.32); }
.reader-width-handle-left { left: -10px; }
.reader-width-handle-right { right: -10px; }
.reading-progress-hud {
  position: fixed;
  left: var(--reading-progress-left, 50%);
  bottom: max(58px, calc(env(safe-area-inset-bottom, 0px) + 54px));
  transform: none;
  z-index: 60;
  width: var(--reading-progress-width, min(660px, calc(100vw - 42px)));
  box-sizing: border-box;
  padding: 6px 9px 8px;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 13px;
  background: linear-gradient(145deg, rgba(29,33,34,0.86), rgba(9,10,11,0.9));
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  box-shadow: 0 12px 34px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.05);
}
.reading-progress-hud[hidden],
.reading-progress-hud.is-vertical-progress[hidden] { display: none !important; }
.reading-progress-meta { display: flex; align-items: center; justify-content: space-between; gap: 9px; margin-bottom: 5px; color: var(--reader-ink-muted); font: 700 10px/1 var(--font-mono); }
.reading-progress-actions { display: inline-flex; align-items: center; gap: 7px; }
#reading-progress-reset, #reading-minimap-toggle, #reading-bookmarks-clear, #reading-search-translate, #reading-progress-close { border: 0; background: transparent; color: var(--reader-ink-muted); cursor: pointer; font: 700 10px/1 var(--font-main); white-space: nowrap; }
#reading-progress-reset:hover, #reading-minimap-toggle:hover, #reading-bookmarks-clear:hover, #reading-search-translate:hover, #reading-progress-close:hover { color: var(--accent-primary); }
#reading-progress-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  font: 900 14px/1 var(--font-main);
}
.reading-progress-restore {
  position: fixed;
  left: calc(var(--reading-progress-left, 50%) + var(--reading-progress-width, min(660px, calc(100vw - 42px))) - 24px);
  bottom: max(44px, calc(env(safe-area-inset-bottom, 0px) + 40px));
  z-index: 60;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 70px;
  height: 24px;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  background: linear-gradient(145deg, rgba(29,33,34,0.86), rgba(9,10,11,0.9));
  color: var(--accent-primary);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  box-shadow: 0 12px 34px rgba(0,0,0,0.34), inset 0 1px 0 rgba(255,255,255,0.05);
  cursor: pointer;
  white-space: nowrap;
  font: 900 10px/1 var(--font-main);
}
.reading-progress-restore:hover {
  color: #111516;
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.78);
  background:
    linear-gradient(145deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.92), rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.68));
  box-shadow:
    0 12px 28px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22),
    inset 0 1px 0 rgba(255,255,255,0.18);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34);
}
.reading-progress-restore[hidden] { display: none; }
#reading-search-translate { color: var(--reader-ink); }
#reading-bookmarks-clear { color: #ef7777; }
#reading-bookmarks-clear:hover { color: #ff5f5f; }
#reading-minimap-toggle[aria-pressed="true"] { color: var(--accent-primary); }
.reading-progress-track { position: relative; height: 6px; border-radius: 999px; background: rgba(255,255,255,0.08); cursor: pointer; overflow: visible; }
.reading-progress-read { position: absolute; left: 0; top: 0; bottom: 0; width: 0%; border-radius: 999px; background: linear-gradient(90deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.35), rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.78)); }
.reading-progress-current { position: absolute; top: 50%; left: 0%; width: 12px; height: 12px; transform: translate(-50%, -50%); border-radius: 50%; background: var(--accent-primary); box-shadow: 0 0 0 3px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.16), 0 4px 12px rgba(0,0,0,0.34); }
.reading-progress-bookmark { position: absolute; top: -19px; width: 16px; height: 18px; transform: translateX(-50%); border: 0; background: transparent; cursor: pointer; padding: 0; filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3)); }
.reading-progress-bookmark span { display: block; width: 13px; height: 15px; margin: 1px auto 0; background: var(--bookmark-color, var(--accent-primary)); clip-path: polygon(12% 7%, 88% 7%, 88% 74%, 50% 95%, 12% 74%); border-radius: 3px 3px 2px 2px; box-shadow: inset 0 0 0 1.5px rgba(4,7,9,0.76), 0 0 0 1px rgba(255,255,255,0.14); }
.reading-progress-lens { position: fixed; z-index: 70; width: 154px; padding: 8px 10px; border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; background: rgba(10,12,13,0.92); color: var(--reader-ink); font: 700 12px/1.35 var(--font-main); box-shadow: 0 14px 36px rgba(0,0,0,0.45); pointer-events: none; }
.reading-progress-lens[hidden] { display: none; }
.reading-progress-lens span { display: block; margin-top: 4px; color: var(--reader-ink-muted); font: 600 10px/1.35 var(--font-main); }
.nr-annotation-highlight {
  position: relative;
  display: inline;
  border-radius: 4px;
  background: transparent;
  box-shadow: none;
  text-decoration-line: underline;
  text-decoration-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.9);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.14em;
  padding-right: 0;
}
.nr-annotation-highlight code,
code.nr-annotation-highlight,
.markdown-panel code .nr-annotation-highlight,
.txt-content code .nr-annotation-highlight,
.docx-content code .nr-annotation-highlight {
  background: rgba(7, 10, 12, 0.72);
  color: var(--reader-ink-strong);
  box-shadow: none;
  text-shadow: none;
}
.annotation-marker { position: relative; display: inline-block; width: 10px; height: 13px; margin: -0.5em 0 0 0.08em; vertical-align: super; border: 0; padding: 0; background: transparent; cursor: pointer; }
.annotation-marker::before { content: ''; position: absolute; inset: 1px 1px 1px 1px; background: var(--annotation-color, var(--accent-primary)); clip-path: polygon(10% 0, 90% 0, 90% 100%, 50% 74%, 10% 100%); border-radius: 2px 2px 1px 1px; box-shadow: inset 0 0 0 1.5px rgba(3,6,8,0.78), 0 0 7px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); }
.annotation-marker:hover::before { filter: brightness(1.12); }
.annotation-dialog { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.42); }
.annotation-dialog[hidden] { display: none; }
.annotation-dialog-panel { width: min(420px, calc(100vw - 36px)); padding: 18px; border: 1px solid rgba(255,255,255,0.12); border-radius: 18px; background: var(--reader-surface-strong); box-shadow: 0 30px 80px rgba(0,0,0,0.54); }
.annotation-dialog-panel h3 { margin: 0 0 12px; font: 800 16px/1.2 var(--font-main); color: var(--reader-ink-strong); }
.annotation-dialog-panel textarea { width: 100%; resize: vertical; box-sizing: border-box; border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; background: rgba(0,0,0,0.22); color: var(--reader-ink); padding: 12px; font: 500 13px/1.5 var(--font-main); }
.annotation-dialog-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 12px; }
.annotation-dialog-actions button { border: 1px solid rgba(255,255,255,0.12); border-radius: 10px; background: rgba(255,255,255,0.06); color: var(--reader-ink); padding: 8px 13px; cursor: pointer; }
.annotation-dialog-actions #annotation-save { background: var(--accent-primary); color: #111; border-color: transparent; font-weight: 800; }
.annotation-popover { position: absolute; z-index: 89; width: min(292px, calc(100vw - 28px)); padding: 10px; border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; background: rgba(12,14,15,0.95); color: var(--reader-ink); box-shadow: 0 18px 48px rgba(0,0,0,0.42); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); opacity: 1; transition: opacity 0.24s ease, transform 0.24s ease; }
.annotation-popover[hidden] { display: none; }
.annotation-popover.is-hint,
.annotation-popover.is-action-menu { width: auto; min-width: 0; padding: 6px; }
.annotation-popover.is-hint { opacity: 0; transform: translateY(4px); pointer-events: auto; }
.annotation-popover.is-hint.is-visible { opacity: 1; transform: translateY(0); }
.annotation-popover-actions { display: flex; align-items: center; justify-content: flex-start; gap: 9px; }
.annotation-popover-actions.is-split { justify-content: space-between; margin-top: 10px; }
.annotation-write-btn, .annotation-edit-btn, .annotation-delete-btn { border: 0; background: transparent; cursor: pointer; font: 800 12px/1.2 var(--font-main); padding: 5px 2px; white-space: nowrap; }
/* Custom element registry — ©2026 Inspidea. Zhu-Lijianing[#676VG5] */
.annotation-write-btn {
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.42);
  border-radius: 999px;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.18);
  color: var(--accent-primary);
  padding: 7px 11px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 8px 20px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12);
}
.annotation-write-btn:hover { background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.26); color: var(--reader-ink-strong); }
.annotation-edit-btn { color: var(--reader-ink-muted); }
.annotation-delete-btn { color: #ef4444; }
.annotation-note-bubble { max-width: 268px; white-space: pre-wrap; color: var(--reader-ink-strong); font: 600 13px/1.55 var(--font-main); }
.translation-panel { position: fixed; right: 26px; bottom: 118px; z-index: 62; width: min(460px, calc(100vw - 42px)); max-height: min(560px, calc(100vh - 160px)); border: 1px solid rgba(255,255,255,0.12); border-radius: 18px; background: linear-gradient(145deg, rgba(29,33,34,0.94), rgba(10,12,13,0.96)); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); box-shadow: 0 24px 70px rgba(0,0,0,0.5); overflow: hidden; }
.translation-panel[hidden] { display: none; }
.translation-panel.is-selection { z-index: 88; width: min(420px, calc(100vw - 24px)); box-shadow: 0 22px 56px rgba(0,0,0,0.46), 0 0 0 1px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12); }
.translation-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.09); color: var(--reader-ink-strong); cursor: move; user-select: none; }
.translation-panel-title { display: grid; gap: 5px; min-width: 0; flex: 1 1 auto; }
.translation-panel-title strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 900 17px/1.2 var(--font-main); letter-spacing: 0; }
.translation-panel-title small { color: var(--reader-ink-muted); font: 800 10px/1 var(--font-main); letter-spacing: 0; }
.translation-panel-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; flex: 0 0 auto; padding: 3px; border: 1px solid rgba(255,255,255,0.08); border-radius: 13px; background: rgba(0,0,0,0.18); cursor: default; }
.translation-tool-btn { height: 30px; min-width: 58px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0 10px; border: 1px solid rgba(255,255,255,0.1); border-radius: 10px; background: rgba(255,255,255,0.045); color: var(--reader-ink-muted); cursor: pointer; font: 900 11px/1 var(--font-main); transition: transform 0.16s ease, background 0.16s ease, border-color 0.16s ease, color 0.16s ease, box-shadow 0.16s ease; }
.translation-tool-btn i { font-size: 11px; line-height: 1; }
.translation-tool-btn:hover { transform: translateY(-1px); background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12); border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.32); color: var(--reader-ink-strong); box-shadow: 0 8px 18px rgba(0,0,0,0.18); }
.translation-tool-copy { color: var(--accent-primary); border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.24); }
.translation-tool-stop { color: #fca5a5; border-color: rgba(239,68,68,0.34); background: rgba(239,68,68,0.12); }
.translation-tool-stop:hover { color: #fecaca; border-color: rgba(239,68,68,0.54); background: rgba(239,68,68,0.18); box-shadow: 0 8px 18px rgba(127,29,29,0.22); }
.translation-tool-close { min-width: 54px; }
.translation-language-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; color: var(--reader-ink-muted); font: 700 10px/1 var(--font-main); }
.document-translation-langs { flex: 0 1 auto; justify-content: flex-end; }
.translation-language-controls label { display: inline-flex; align-items: center; gap: 5px; }
.translation-language-controls select { height: 24px; max-width: 112px; border: 1px solid rgba(255,255,255,0.1); border-radius: 8px; background: rgba(0,0,0,0.22); color: var(--reader-ink); font: 700 11px/1 var(--font-main); outline: 0; }
.translation-panel-body { max-height: min(480px, calc(100vh - 260px)); overflow: auto; padding: 14px; white-space: pre-wrap; color: var(--reader-ink); font: 500 13px/1.68 var(--font-main); box-sizing: border-box; }
.translation-panel-body.is-typing::after { content: ''; display: inline-block; width: 7px; height: 1.1em; margin-left: 2px; vertical-align: -0.16em; border-radius: 999px; background: var(--accent-primary); animation: translation-caret-blink 0.72s steps(2, start) infinite; }
.translation-resize-handle { position: absolute; z-index: 2; background: transparent; }
.translation-resize-n, .translation-resize-s { left: 14px; right: 14px; height: 8px; cursor: ns-resize; }
.translation-resize-n { top: 0; }
.translation-resize-s { bottom: 0; }
.translation-resize-e, .translation-resize-w { top: 14px; bottom: 14px; width: 8px; cursor: ew-resize; }
.translation-resize-e { right: 0; }
.translation-resize-w { left: 0; }
.translation-resize-ne, .translation-resize-nw, .translation-resize-se, .translation-resize-sw { width: 16px; height: 16px; }
.translation-resize-ne { right: 0; top: 0; cursor: nesw-resize; }
.translation-resize-nw { left: 0; top: 0; cursor: nwse-resize; }
.translation-resize-se { right: 0; bottom: 0; cursor: nwse-resize; }
.translation-resize-sw { left: 0; bottom: 0; cursor: nesw-resize; }
.translation-panel.is-dragging, .translation-panel.is-resizing { transition: none; }
.translation-source-flash-layer { position: absolute; inset: 0; z-index: 87; pointer-events: none; }
.translation-source-flash { position: absolute; border-radius: 4px; background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.26); box-shadow: 0 0 0 1px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28), 0 0 18px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.36); opacity: 1; transition: opacity 0.45s ease; }
.translation-source-flash-layer.is-fading .translation-source-flash { opacity: 0; }
.nr-full-translation-view { color: var(--reader-ink); }
.nr-full-translation-tools { position: sticky; top: 16px; z-index: 4; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 24px; padding: 10px 12px; border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); border-radius: 14px; background: linear-gradient(145deg, rgba(30,34,35,0.88), rgba(12,14,15,0.9)); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); box-shadow: 0 12px 34px rgba(0,0,0,0.26); }
.nr-full-translation-tools strong { color: var(--reader-ink-strong); font: 900 13px/1 var(--font-main); }
.nr-full-translation-tools span { color: var(--reader-ink-muted); font: 700 11px/1 var(--font-main); }
.nr-full-translation-tools button { margin-left: auto; border: 1px solid rgba(255,255,255,0.1); border-radius: 10px; background: rgba(255,255,255,0.06); color: var(--reader-ink); padding: 7px 10px; cursor: pointer; font: 800 12px/1 var(--font-main); }
.nr-full-translation-tools button + button { margin-left: 0; }
.nr-full-translation-tools button:hover { border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.45); color: var(--accent-primary); }
.nr-full-translation-body p { margin: 0 0 1.15em; }
.translation-status-toast { position: fixed; left: 50%; bottom: 76px; transform: translate(-50%, 12px) scale(0.98); z-index: 96; display: flex; align-items: center; gap: 10px; min-width: min(420px, calc(100vw - 42px)); max-width: min(620px, calc(100vw - 42px)); padding: 12px 14px 12px 16px; border: 1px solid rgba(255,255,255,0.12); border-radius: 16px; background: linear-gradient(145deg, rgba(29,33,34,0.94), rgba(10,12,13,0.96)); color: var(--reader-ink); box-shadow: 0 18px 48px rgba(0,0,0,0.45); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); opacity: 0; pointer-events: auto; transition: opacity 0.24s ease, transform 0.24s ease; overflow: hidden; }
.translation-status-toast::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, transparent, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.9), transparent); transform: translateX(-100%); opacity: 0; }
.translation-status-toast.is-visible { opacity: 1; transform: translate(-50%, 0) scale(1); }
.translation-status-toast.is-loading::after { opacity: 0; animation: none; }
.translation-status-spinner { width: 18px; height: 18px; flex: 0 0 auto; border-radius: 50%; border: 2px solid rgba(255,255,255,0.14); border-top-color: var(--accent-primary); box-shadow: 0 0 12px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.25); }
.translation-status-toast.is-loading .translation-status-spinner { animation: none; }
.translation-status-toast:not(.is-loading) .translation-status-spinner { border-color: var(--accent-primary); background: radial-gradient(circle, var(--accent-primary) 0 38%, transparent 42%); }
.translation-status-toast.is-loading .translation-status-spinner.nr-rose-loader-host {
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  animation: none;
}
.translation-status-copy { display: grid; gap: 4px; min-width: 0; flex: 1 1 auto; }
.translation-status-copy strong { color: var(--reader-ink-strong); font: 900 13px/1.15 var(--font-main); }
.translation-status-copy small { color: var(--reader-ink-muted); font: 700 11px/1.35 var(--font-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.translation-status-stop { flex: 0 0 auto; min-width: 58px; height: 32px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid rgba(239,68,68,0.34); border-radius: 11px; background: rgba(239,68,68,0.12); color: #fca5a5; cursor: pointer; font: 900 11px/1 var(--font-main); transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease, color 0.18s ease; }
.translation-status-stop[hidden] { display: none; }
.translation-status-stop:hover { transform: translateY(-1px); border-color: rgba(239,68,68,0.56); background: rgba(239,68,68,0.2); color: #fee2e2; }
.translation-status-stop:active { transform: translateY(0); }
.translation-status-toast.is-red { border-color: rgba(239,68,68,0.3); }
.translation-status-toast.is-red .translation-status-spinner { border-top-color: #ef4444; }
.translation-status-toast.is-green .translation-status-spinner { border-top-color: #22c55e; }
@keyframes translation-caret-blink { 50% { opacity: 0; } }
.tree-remove-btn { margin-left: auto; width: 26px; height: 24px; border: 0; border-radius: 8px; background: transparent; color: var(--reader-ink-muted); cursor: pointer; opacity: 0; }
.tree-row:hover .tree-remove-btn { opacity: 1; }
.tree-remove-btn:hover { color: #ef4444; background: rgba(239,68,68,0.12); }
.theme-menu { left: auto; top: auto; }
[data-theme="light"] .document-search-panel, [data-theme="light"] .reading-progress-hud, [data-theme="light"] .reading-progress-restore, [data-theme="light"] .translation-panel, [data-theme="light"] .translation-status-toast, [data-theme="light"] .annotation-dialog-panel { border-color: rgba(0,0,0,0.08); background: rgba(255,255,255,0.94); box-shadow: 0 18px 48px rgba(15,23,42,0.12); }
[data-theme="light"] .translation-panel-actions { border-color: rgba(15,23,42,0.08); background: rgba(15,23,42,0.035); }
[data-theme="light"] .translation-tool-btn { border-color: rgba(15,23,42,0.1); background: rgba(255,255,255,0.72); color: #5b6472; }
[data-theme="light"] .translation-tool-copy { color: var(--accent-primary); border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.26); }
[data-theme="light"] .translation-tool-stop { color: #b91c1c; border-color: rgba(185,28,28,0.24); background: rgba(254,226,226,0.72); }
[data-theme="light"] .nr-annotation-highlight code,
[data-theme="light"] code.nr-annotation-highlight,
[data-theme="light"] .markdown-panel code .nr-annotation-highlight,
[data-theme="light"] .txt-content code .nr-annotation-highlight,
[data-theme="light"] .docx-content code .nr-annotation-highlight { background: rgba(255,255,255,0.92); color: #111827; box-shadow: none; }
[data-theme="light"] .document-search-box, [data-theme="light"] .document-search-btn, [data-theme="light"] .document-translate-btn { background: rgba(0,0,0,0.045); border-color: rgba(0,0,0,0.08); color: #334155; }
[data-theme="light"] .document-search-panel .translation-language-controls select {
  border-color: rgba(0,0,0,0.08);
  color: #334155;
  background:
    linear-gradient(45deg, transparent 50%, #64748b 50%) calc(100% - 18px) 50% / 7px 7px no-repeat,
    linear-gradient(135deg, #64748b 50%, transparent 50%) calc(100% - 13px) 50% / 7px 7px no-repeat,
    rgba(0,0,0,0.045);
}
.document-search-panel .translation-language-controls select option { background: #111516; color: #eef2f5; }
[data-theme="light"] .document-search-panel .translation-language-controls select option { background: #ffffff; color: #1f2937; }
@media (max-width: 900px) {
  .document-search-panel {
    left: var(--document-search-left, 14px);
    width: var(--document-search-width, calc(100vw - 28px));
  }
  .document-search-box { flex-basis: 180px; min-width: 140px; }
  .document-search-panel .translation-language-controls select { min-width: 82px; max-width: 104px; }
  .document-translate-btn span { display: none; }
}
@media (max-width: 1280px) and (min-width: 701px) { .document-search-panel { --document-toolbar-height: 34px; gap: 6px; padding: 6px 8px; } .document-search-box { flex-basis: clamp(170px, 24%, 310px); min-width: 166px; padding: 0 10px; } .document-search-count { flex-basis: 46px; } .document-search-btn, .document-translate-btn { padding: 0 8px; border-radius: 10px; } .document-search-panel .document-translation-langs { gap: 6px; margin-left: 4px; padding-left: 8px; } .document-search-panel .translation-language-controls label { gap: 4px; font-size: 10px; } .document-search-panel .translation-language-controls select { min-width: 78px; max-width: 90px; padding-left: 9px; padding-right: 24px; font-size: 11px; } }
@media (max-width: 700px) { .document-search-panel { top: 10px; left: var(--document-search-left, 10px); width: var(--document-search-width, calc(100vw - 20px)); flex-wrap: wrap; gap: 7px; padding: 7px; } .document-search-box { flex-basis: 100%; min-width: 0; } .document-search-count { flex-basis: 52px; } .document-search-panel .document-translation-langs { flex: 1 1 auto; flex-wrap: wrap; height: auto; justify-content: flex-start; } .document-search-panel .translation-language-controls label, .document-search-panel .translation-language-controls select { height: 34px; } .document-search-panel .translation-language-controls select { min-width: 86px; } .document-search-btn, .document-translate-btn { height: 34px; min-width: 34px; border-radius: 10px; } .document-translate-btn span { display:none; } .translation-panel { right: 12px; left: 12px; width: auto; } .translation-panel-head { align-items: stretch; flex-direction: column; gap: 9px; } .translation-panel-actions { justify-content: flex-start; width: fit-content; max-width: 100%; } .translation-tool-btn { min-width: 56px; } }
@media (max-width: 520px) { .document-search-panel .translation-language-controls label { font-size: 10px; } .document-search-panel .translation-language-controls select { min-width: 76px; max-width: 92px; } }

@media (max-width: 900px) {
  .sidebar-toggle,
  .sidebar-toggle:hover,
  .sidebar-toggle:active,
  .reader-sidebar.is-collapsed .sidebar-toggle,
  .reader-sidebar.is-collapsed .sidebar-toggle:hover,
  .reader-sidebar.is-collapsed .sidebar-toggle:active {
    transform: translateX(-50%) !important;
  }

  .sidebar-toggle i,
  .sidebar-toggle:hover i,
  .sidebar-toggle:active i {
    transform: none !important;
  }

  .fab-group {
    --fab-size: var(--reader-side-rail-size, 46px);
    --fab-right: var(--reader-side-rail-right, 20px);
  }

  .nav-hamburger {
    right: var(--reader-side-rail-right, 20px);
    width: var(--reader-side-rail-size, 46px);
  }

  .reading-progress-hud.is-vertical-progress {
    left: auto;
    right: var(--reader-side-rail-right, max(20px, calc(env(safe-area-inset-right, 0px) + 20px)));
    bottom: max(188px, calc(env(safe-area-inset-bottom, 0px) + var(--reading-progress-fab-reserve, 188px)));
    z-index: 54;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: var(--reader-side-rail-size, 46px);
    box-sizing: border-box;
    max-height: calc(100vh - max(188px, calc(env(safe-area-inset-bottom, 0px) + var(--reading-progress-fab-reserve, 188px))) - 82px);
    padding: 10px 5px;
    border-radius: 16px;
    overflow: hidden;
    touch-action: none;
    overscroll-behavior: contain;
    -webkit-user-select: none;
    user-select: none;
  }

  .reading-progress-hud.is-vertical-progress .reading-progress-meta {
    order: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    gap: 9px;
    margin: 0 0 10px;
    font: 800 10px/1 var(--font-main);
  }

  .reading-progress-hud.is-vertical-progress .reading-progress-actions {
    order: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 7px;
    width: 100%;
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-label {
    order: 2;
    display: grid;
    grid-template-columns: 1fr;
    justify-items: center;
    gap: 4px;
    width: 100%;
    margin-top: 1px;
    color: var(--reader-ink-muted);
    white-space: normal;
    text-align: center;
    font: 900 10px/1.12 var(--font-main);
  }

  .reading-progress-hud.is-vertical-progress .reading-progress-number {
    min-width: 0;
    color: var(--reader-ink);
    font: 900 10px/1 var(--font-mono);
    letter-spacing: 0;
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-reset,
  .reading-progress-hud.is-vertical-progress #reading-bookmarks-clear,
  .reading-progress-hud.is-vertical-progress #reading-search-translate,
  .reading-progress-hud.is-vertical-progress #reading-progress-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    min-height: 38px;
    padding: 5px 0;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 9px;
    background: rgba(255,255,255,0.035);
    writing-mode: vertical-rl;
    text-orientation: upright;
    white-space: normal;
    letter-spacing: 0;
    font: 900 9px/1.12 var(--font-main);
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-close {
    order: -1;
    width: 26px;
    min-height: 26px;
    height: 26px;
    padding: 0;
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    font-size: 15px;
    line-height: 1;
  }

  .reading-progress-restore.is-vertical-progress {
    left: auto;
    right: calc(
      var(--reader-side-rail-right, max(20px, calc(env(safe-area-inset-right, 0px) + 20px))) + 10px
    );
    bottom: auto;
    top: max(54px, calc(env(safe-area-inset-top, 0px) + var(--reader-mobile-progress-top, 56px)));
    width: 26px;
    height: auto;
    min-height: 82px;
    padding: 5px 0;
    border-radius: 9px;
    color: var(--nr-control-active-text, var(--accent-readable, var(--accent-primary)));
    writing-mode: vertical-rl;
    text-orientation: upright;
    white-space: normal;
    letter-spacing: 1px;
    font: 900 9px/1.12 var(--font-main);
  }

  .reading-progress-hud.is-vertical-progress #reading-search-translate {
    min-height: 90px;
  }

  .reading-progress-hud.is-vertical-progress #reading-bookmarks-clear {
    color: #ef7777;
  }

  .reading-progress-hud.is-vertical-progress #reading-minimap-toggle {
    display: none;
  }

  .reading-progress-track {
    height: 4px;
  }

  .reading-progress-track.is-vertical-progress {
    order: 2;
    flex: 1 1 clamp(168px, 42vh, 420px);
    align-self: center;
    width: 7px;
    min-height: 128px;
    max-height: 420px;
    margin: 0;
    border-radius: 999px;
    background: rgba(255,255,255,0.11);
    touch-action: none;
    overscroll-behavior: contain;
  }

  .reading-progress-track.is-vertical-progress::before {
    content: '';
    position: absolute;
    inset: -4px -12px;
  }

  .reading-progress-track.is-vertical-progress .reading-progress-read {
    left: 0;
    top: 0;
    bottom: auto;
    width: 100%;
    height: 0%;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.78), rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34));
  }

  .reading-progress-track.is-vertical-progress .reading-progress-current {
    left: 50%;
    top: 100%;
    width: 13px;
    height: 13px;
    transform: translate(-50%, -50%);
  }

  .reading-progress-track.is-vertical-progress .reading-progress-bookmark,
  .reading-progress-bookmark.is-vertical {
    top: 0;
    left: 50%;
    width: 13px;
    height: 15px;
    transform: translate(-50%, -50%);
  }

  .reading-progress-track.is-vertical-progress .reading-progress-bookmark span,
  .reading-progress-bookmark.is-vertical span {
    width: 10px;
    height: 12px;
  }
}

@media (max-width: 520px) {
  .fab-group {
    right: var(--reader-side-rail-right, max(5px, calc(env(safe-area-inset-right, 0px) + 5px)));
  }

  .reading-progress-hud.is-vertical-progress {
    right: var(--reader-side-rail-right, max(14px, calc(env(safe-area-inset-right, 0px) + 14px)));
    width: var(--reader-side-rail-size, 44px);
    padding-inline: 4px;
  }

  .reading-progress-restore.is-vertical-progress {
    right: calc(
      var(--reader-side-rail-right, max(14px, calc(env(safe-area-inset-right, 0px) + 14px))) + 9.5px
    );
    width: 25px;
  }
}

@media (max-width: 520px) and (pointer: coarse) {
  .fab-group {
    top: var(--reader-mobile-fab-top, calc(var(--reader-mobile-stable-vh, 100svh) - 246px));
    bottom: auto;
    gap: 10px;
  }

  .reading-progress-hud.is-vertical-progress {
    top: max(54px, calc(env(safe-area-inset-top, 0px) + var(--reader-mobile-progress-top, 56px)));
    bottom: auto;
    height: var(--reader-mobile-progress-height, 360px);
    min-height: 250px;
    max-height: none;
    padding-top: 7px;
    padding-bottom: 7px;
    overflow: hidden;
  }

  .reading-progress-hud.is-vertical-progress .reading-progress-meta {
    gap: 6px;
    margin-bottom: 7px;
  }

  .reading-progress-hud.is-vertical-progress .reading-progress-actions {
    gap: 5px;
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-label {
    gap: 3px;
    font-size: 9px;
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-reset,
  .reading-progress-hud.is-vertical-progress #reading-bookmarks-clear,
  .reading-progress-hud.is-vertical-progress #reading-search-translate,
  .reading-progress-hud.is-vertical-progress #reading-progress-close {
    width: 25px;
    min-height: 34px;
    padding: 4px 0;
    font-size: 8px;
  }

  .reading-progress-hud.is-vertical-progress #reading-progress-close {
    min-height: 25px;
    height: 25px;
    padding: 0;
    font-size: 14px;
  }

  .reading-progress-hud.is-vertical-progress #reading-search-translate {
    min-height: 74px;
  }

  .reading-progress-track.is-vertical-progress {
    flex: 1 1 96px;
    min-height: 48px;
    max-height: none;
  }
}

@media (max-width: 600px) and (pointer: coarse) {
  .reading-layout-control {
    top: auto !important;
    right: auto !important;
    transition: bottom 0.22s ease;
  }
}

@media (max-width: 480px) and (pointer: coarse) {
  .reader-main {
    padding-top: 12px;
  }

  .reader-paper-wrap {
    margin-top: 0;
  }

  .markdown-panel {
    padding-top: 8px;
  }

  .reader-shell.has-active-document .markdown-panel {
    padding-top: 12px;
  }

  .docx-content,
  .txt-content {
    padding-top: 8px;
  }

  .reader-meta-card {
    padding: 10px 12px;
  }

  .reader-meta-card h1 {
    margin: 6px 0 8px;
  }

  .doc-path-line {
    align-items: flex-start;
    gap: 8px;
    margin: 0;
  }

  #doc-path-text {
    flex: 1 1 auto;
  }

  .doc-version-pill {
    max-width: 76px;
    padding: 3px 6px;
    font-size: 9px;
  }

  .reader-stat-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1px;
  }

  .reader-stat-grid .stat-created,
  .reader-stat-grid .stat-updated {
    grid-column: span 2;
    order: 1;
  }

  .reader-stat-grid .stat-format,
  .reader-stat-grid .stat-words,
  .reader-stat-grid .stat-pages,
  .reader-stat-grid .stat-read-time {
    grid-column: span 1;
    order: 2;
  }

  .reader-stat-grid div {
    padding: 8px 9px 9px;
  }

  .reader-stat-grid .stat-created strong,
  .reader-stat-grid .stat-updated strong {
    font-size: 10px;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
  }

  .reading-layout-control {
    display: none !important;
    pointer-events: none !important;
  }
}

@media (max-width: 600px) and (min-width: 521px) {
  .reading-progress-hud.is-vertical-progress {
    right: var(--reader-side-rail-right, max(14px, calc(env(safe-area-inset-right, 0px) + 14px)));
    width: var(--reader-side-rail-size, 44px);
  }
}

@media (max-width: 400px) {
  .reading-progress-hud.is-vertical-progress {
    right: var(--reader-side-rail-right, max(9px, calc(env(safe-area-inset-right, 0px) + 9px)));
    width: var(--reader-side-rail-size, 44px);
  }
}

.reading-minimap { position: fixed; left: var(--reading-minimap-left, auto); top: var(--reading-minimap-top, 18vh); z-index: 58; width: var(--reading-minimap-width, 96px); height: var(--reading-minimap-height, 54vh); pointer-events: none; transform-origin: bottom center; }
.reading-minimap:not([hidden]) { animation: reading-minimap-pop 0.48s cubic-bezier(0.22, 1.28, 0.34, 1); }
.reading-minimap[hidden] { display: none; }
.reading-minimap-track { position: relative; width: 100%; height: 100%; border: 1px solid rgba(255,255,255,0.09); border-radius: 12px; background: linear-gradient(180deg, rgba(20,22,20,0.7), rgba(9,10,10,0.78)); box-shadow: 0 14px 34px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.055); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); pointer-events: auto; cursor: ns-resize; overflow: hidden; }
.reading-minimap-preview { position: absolute; inset: 9px 10px; opacity: 0.82; overflow: hidden; }
.reading-minimap-item { position: absolute; left: 0; min-height: 1px; border-radius: 2px; overflow: hidden; box-sizing: border-box; }
.reading-minimap-item > span { display: none; }
.reading-minimap-line,
.reading-minimap-text { background: rgba(216, 222, 220, 0.16); }
.reading-minimap-line.is-strong,
.reading-minimap-heading { background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.28); box-shadow: 0 0 5px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12); }
.reading-minimap-heading.h1 { min-height: 4px; border-left: 2px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.78); }
.reading-minimap-heading.h2 { min-height: 3px; border-left: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.68); }
.reading-minimap-heading.h3,
.reading-minimap-heading.h4,
.reading-minimap-heading.h5,
.reading-minimap-heading.h6 { min-height: 2px; opacity: 0.88; }
.reading-minimap-list { left: 7%; background: rgba(216, 222, 220, 0.14); }
.reading-minimap-quote { left: 5%; background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.13); border-left: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.38); }
.reading-minimap-code { background: rgba(148,163,184,0.12); border: 1px solid rgba(148,163,184,0.08); }
.reading-minimap-rule { width: 100%; height: 1px !important; background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.34); }
.reading-minimap-table { width: 94%; min-height: 8px; border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.065); padding: 2px; border-radius: 3px; }
.reading-minimap-table b { display: grid; grid-template-columns: repeat(var(--mini-cols, 3), minmax(0, 1fr)); grid-template-rows: repeat(var(--mini-rows, 2), minmax(1px, 1fr)); gap: 1px; width: 100%; height: 100%; }
.reading-minimap-table i { display: block; min-width: 1px; min-height: 1px; background: rgba(216,222,220,0.16); border-radius: 1px; }
.reading-minimap-read { position: absolute; left: 0; top: 0; width: 100%; height: 0%; border-radius: 12px 12px 0 0; background: linear-gradient(180deg, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.09), rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.025)); border-bottom: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22); pointer-events: none; }
.reading-minimap-current { position: absolute; left: 0; top: 0%; width: 100%; height: 2px; transform: translateY(-50%); border-radius: 999px; background: var(--accent-primary); box-shadow: 0 0 0 1px rgba(0,0,0,0.24), 0 0 10px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.52); pointer-events: none; }
[data-theme="light"] .reading-minimap-track { border-color: rgba(0,0,0,0.07); background: rgba(255,255,255,0.82); box-shadow: 0 16px 32px rgba(15,23,42,0.12); }
[data-theme="light"] .reading-minimap-line, [data-theme="light"] .reading-minimap-text { background: rgba(17,24,39,0.13); }
@media (max-width: 1024px) { .reading-minimap { display:none; } }
@media (max-width: 1024px) { #reading-minimap-toggle { display: none; } }
@keyframes reading-minimap-pop {
  0% { opacity: 0; transform: translateY(28px) scale(0.9); }
  66% { opacity: 1; transform: translateY(-4px) scale(1.025); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* =============================================
   CONFIRMATION DIALOG (Delete Local File)
   ============================================= */
.confirm-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.64);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: confirm-overlay-in 0.18s ease-out;
}
@keyframes confirm-overlay-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.confirm-dialog {
  width: min(420px, calc(100vw - 40px));
  padding: 26px 28px 22px;
  border-radius: 18px;
  background: var(--reader-surface-strong);
  border: 1px solid var(--panel-border);
  box-shadow: 0 24px 64px rgba(0,0,0,0.48), 0 0 0 1px rgba(255,255,255,0.04);
  animation: confirm-dialog-in 0.22s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes confirm-dialog-in {
  from { opacity: 0; transform: translateY(16px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
[data-theme="light"] .confirm-dialog {
  background: rgba(255, 255, 255, 0.96);
  border-color: rgba(0, 0, 0, 0.08);
  box-shadow: 0 24px 64px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.02);
}
.confirm-title {
  margin: 0 0 10px;
  font-size: 16px;
  font-weight: 700;
  color: #fbbf24;
  display: flex;
  align-items: center;
  gap: 8px;
}
.confirm-title i { font-size: 18px; }
.confirm-body {
  margin: 0 0 10px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text-main);
}
.confirm-body strong {
  color: var(--reader-ink-strong);
  word-break: break-all;
}
.confirm-warn {
  margin: 0 0 18px;
  padding: 10px 14px;
  font-size: 12.5px;
  line-height: 1.5;
  color: #fca5a5;
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.18);
  border-radius: 10px;
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.confirm-warn i { flex-shrink: 0; margin-top: 1px; color: #ef4444; }
.confirm-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}
.confirm-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  padding: 0 16px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.18s;
}
.confirm-btn-cancel {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.1);
  color: var(--text-muted);
}
.confirm-btn-cancel:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text-main);
}
.confirm-btn-danger {
  background: rgba(239, 68, 68, 0.18);
  border-color: rgba(239, 68, 68, 0.3);
  color: #fca5a5;
}
.confirm-btn-danger:hover {
  background: rgba(239, 68, 68, 0.28);
  border-color: rgba(239, 68, 68, 0.45);
  color: #fecaca;
}
[data-theme="light"] .confirm-btn-cancel {
  background: rgba(0,0,0,0.04);
  border-color: rgba(0,0,0,0.1);
  color: #5a6070;
}
[data-theme="light"] .confirm-btn-cancel:hover {
  background: rgba(0,0,0,0.08);
  color: #1a1a2e;
}
[data-theme="light"] .confirm-btn-danger {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.25);
  color: #dc2626;
}
[data-theme="light"] .confirm-btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
  color: #b91c1c;
}
[data-theme="light"] .confirm-overlay { background: rgba(0, 0, 0, 0.32); }

/* v3.7.0: reliable progress controls and browser-native Office/XMind previews */
.reading-progress-hud,
.reading-progress-meta,
.reading-progress-actions {
  user-select: none;
  -webkit-user-select: none;
}

.reading-progress-actions {
  position: relative;
  z-index: 3;
  pointer-events: auto;
}

#reading-progress-reset,
#reading-minimap-toggle,
#reading-bookmarks-clear,
#reading-search-translate,
#reading-progress-close {
  min-height: 32px;
  padding: 6px 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 4;
  pointer-events: auto;
  touch-action: manipulation;
  user-select: none;
  -webkit-user-select: none;
  cursor: pointer;
}

#reading-progress-close {
  width: 32px;
  height: 32px;
  padding: 0;
}

.nr-office-document {
  color: var(--reader-ink);
}

.nr-office-document-head,
.nr-sheet > header,
.nr-slide > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.nr-office-document-head {
  margin-bottom: 22px;
  padding: 14px 16px;
  border: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.2);
  border-radius: 14px;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.08);
}

.nr-office-document-head span,
.nr-slide > header span,
.nr-office-meta {
  color: var(--reader-ink-muted);
  font: 750 11px/1.3 var(--font-mono);
  letter-spacing: 0.06em;
}

.nr-sheet,
.nr-slide,
.nr-mindmap-sheet {
  margin: 0 0 24px;
  padding: 18px;
  border: 1px solid rgba(148, 163, 184, 0.15);
  border-radius: 16px;
  background: rgba(250, 250, 247, 0.025);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035);
}

.nr-sheet h2,
.nr-mindmap-sheet h2,
.nr-slide h2 {
  margin: 0;
}

.nr-sheet-scroll {
  max-width: 100%;
  margin-top: 14px;
  overflow: auto;
  border: 1px solid rgba(148, 163, 184, 0.14);
  border-radius: 12px;
}

.nr-sheet table {
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  font: 500 12px/1.45 var(--font-mono);
}

.nr-sheet th,
.nr-sheet td {
  min-width: 92px;
  padding: 8px 10px;
  border: 1px solid rgba(148, 163, 184, 0.12);
  text-align: left;
  vertical-align: top;
  white-space: pre-wrap;
}

.nr-sheet th {
  min-width: 42px;
  color: var(--reader-ink-strong);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.1);
}

.nr-slide {
  overflow: hidden;
}

.nr-slide > header {
  margin: -18px -18px 16px;
  padding: 10px 16px;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.09);
}

.nr-slide-body p {
  margin-left: calc(var(--nr-list-level, 0) * 18px);
}

.nr-slide-media {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 12px;
  margin: 16px 0;
}

.nr-slide-media img {
  display: block;
  width: 100%;
  max-height: 440px;
  object-fit: contain;
  border-radius: 10px;
  background: rgba(0,0,0,0.12);
}

.nr-slide-notes {
  margin-top: 16px;
  padding: 12px 14px;
  border-left: 3px solid var(--accent-primary);
  border-radius: 0 10px 10px 0;
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.07);
}

.nr-topic-tree,
.nr-topic-tree ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nr-topic-tree ul {
  margin-left: 20px;
  padding-left: 18px;
  border-left: 1px solid rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.26);
}

.nr-topic-card {
  margin: 10px 0;
  padding: 11px 13px;
  border: 1px solid rgba(148, 163, 184, 0.14);
  border-radius: 11px;
  background: rgba(250, 250, 247, 0.025);
}

.nr-topic-card p {
  margin: 8px 0 0;
  color: var(--reader-ink-muted);
}

.nr-topic-image {
  display: block;
  max-width: min(100%, 520px);
  max-height: 360px;
  margin-top: 10px;
  object-fit: contain;
  border-radius: 9px;
  background: rgba(0,0,0,0.1);
}

.nr-topic-labels {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-left: 8px;
}

.nr-topic-labels i {
  padding: 2px 7px;
  border-radius: 999px;
  color: var(--accent-primary);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.1);
  font-style: normal;
  font-size: 10px;
}

.nr-document-error {
  padding: 48px 24px;
  text-align: center;
  color: #ef7777;
}

[data-theme="light"] .nr-sheet,
[data-theme="light"] .nr-slide,
[data-theme="light"] .nr-mindmap-sheet,
[data-theme="light"] .nr-topic-card {
  border-color: rgba(31,31,31,0.1);
  background: rgba(255,255,255,0.72);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.9);
}

[data-theme="light"] .nr-sheet-scroll {
  border-color: rgba(31,31,31,0.1);
  background: rgba(255,255,255,0.76);
}

@media (pointer: coarse) {
  #reading-progress-reset,
  #reading-minimap-toggle,
  #reading-bookmarks-clear,
  #reading-search-translate,
  #reading-progress-close {
    min-height: 44px;
  }

  #reading-progress-close {
    width: 44px;
    height: 44px;
  }
}

/* ================================================================
   NextReader v3.7.1 — adaptive reader chrome
   ================================================================ */
:root {
  --reader-sidebar-expanded-width: 340px;
  --nr-popover-bg: rgba(13, 15, 17, 0.985);
  --nr-popover-border: rgba(250, 250, 247, 0.12);
  --nr-popover-text: #f3f1ea;
  --nr-popover-muted: #aaa8a2;
  --nr-popover-shadow: 0 24px 72px rgba(0, 0, 0, 0.48);
}

[data-theme="light"] {
  --nr-popover-bg: rgba(255, 255, 255, 0.985);
  --nr-popover-border: rgba(31, 31, 31, 0.12);
  --nr-popover-text: #15171a;
  --nr-popover-muted: #5c626b;
  --nr-popover-shadow: 0 22px 64px rgba(31, 31, 31, 0.16);
}

/* Preserve the wide three-column composition. Only medium/over-constrained
   windows convert the side panels to overlays over an unchanged reader. */
.reader-shell.is-sidebars-overlay {
  grid-template-columns: 0 minmax(0, 1fr);
}

.reader-shell.is-sidebars-overlay .reader-main {
  grid-column: 2;
  width: 100%;
  min-width: 0;
}

.reader-shell.is-sidebars-overlay .reader-sidebar {
  position: fixed;
  top: var(--mac-window-bar-height, 0px);
  left: 0;
  z-index: 12010;
  width: var(--reader-sidebar-expanded-width);
  min-width: var(--reader-sidebar-expanded-width);
  height: calc(100vh - var(--mac-window-bar-height, 0px));
  max-height: none;
  padding-bottom: 28px;
  overflow-x: hidden;
  overflow-y: auto;
  border-right: 1px solid var(--panel-border);
  border-bottom: 0;
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
  transition: transform 0.25s cubic-bezier(0.22, 0.72, 0, 1);
  box-shadow: 18px 0 52px rgba(0, 0, 0, 0.28);
}

.reader-shell.is-sidebars-overlay.is-reader-sidebar-collapsed .reader-sidebar,
.reader-shell.is-sidebars-overlay .reader-sidebar.is-collapsed {
  width: var(--reader-sidebar-expanded-width);
  min-width: var(--reader-sidebar-expanded-width);
  min-height: 0;
  transform: translateX(calc(-1 * var(--reader-sidebar-expanded-width)));
  opacity: 1;
  pointer-events: none;
}

/* Desktop and medium layouts use one mirrored side-panel control contract.
   Only the anchor and arrow direction change between panels and states. */
@media (min-width: 601px) {
  .reader-sidebar {
    --reader-side-toggle-size: 42px;
    padding-top: 18px;
  }

  .reader-sidebar .back-link {
    display: flex;
    box-sizing: border-box;
    width: fit-content;
    height: var(--reader-side-toggle-size);
    min-height: var(--reader-side-toggle-size);
    max-height: var(--reader-side-toggle-size);
    padding-top: 0;
    padding-bottom: 0;
    line-height: 1;
    margin-top: 0;
    margin-bottom: 22px;
  }

  .reader-sidebar .back-link > i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    flex: 0 0 14px;
    font-size: 14px;
    line-height: 1;
  }

  :is(#sidebar-toggle, #nav-hamburger) {
    --reader-side-toggle-size: 42px;
    --reader-side-toggle-radius: 13px;
    position: fixed;
    top: max(18px, calc(env(safe-area-inset-top, 0px) + 18px));
    bottom: auto;
    z-index: 12020;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--reader-side-toggle-size);
    min-width: var(--reader-side-toggle-size);
    max-width: var(--reader-side-toggle-size);
    height: var(--reader-side-toggle-size);
    min-height: var(--reader-side-toggle-size);
    max-height: var(--reader-side-toggle-size);
    flex: 0 0 var(--reader-side-toggle-size);
    padding: 0;
    border: 1px solid var(--panel-border);
    border-radius: var(--reader-side-toggle-radius);
    font-size: 14px;
    line-height: 1;
    transform: none !important;
    pointer-events: auto;
    box-shadow: 0 16px 42px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255,255,255,0.08);
  }

  :is(#sidebar-toggle, #nav-hamburger) > i {
    width: 1em;
    height: 1em;
    line-height: 1;
    transform: none !important;
  }

  #sidebar-toggle {
    right: auto;
    left: calc(var(--reader-sidebar-expanded-width) - var(--reader-side-toggle-size) - 18px);
  }

  .reader-shell.is-reader-sidebar-collapsed #sidebar-toggle {
    left: max(18px, calc(env(safe-area-inset-left, 0px) + 18px));
  }

  #nav-hamburger {
    right: max(18px, calc(env(safe-area-inset-right, 0px) + 18px));
    left: auto;
  }

  body.is-tauri:not(.is-embedded) :is(#sidebar-toggle, #nav-hamburger) {
    top: calc(var(--mac-window-bar-height) + 18px);
  }

  .navigator-header {
    min-height: var(--reader-side-toggle-size);
    padding-right: calc(var(--reader-side-toggle-size) + 14px);
  }
}

.reader-shell.is-sidebars-overlay .reader-main,
.reader-shell.is-sidebars-overlay.is-navigator-expanded .reader-main {
  padding-right: clamp(24px, 3vw, 64px);
}

@media (max-width: 1024px) and (min-width: 601px) {
  .reader-shell.is-sidebars-overlay .reader-main,
  .reader-shell.is-sidebars-overlay.is-navigator-expanded .reader-main,
  .reader-shell.is-sidebars-overlay.is-reader-layout-custom .reader-main,
  .reader-shell.is-sidebars-overlay.is-reader-layout-custom.is-navigator-expanded .reader-main {
    padding-right: 16px;
    padding-left: 16px;
  }
}

/* v5.2.1 user-observed UI closeout: one compact display pill, bounded history,
   unobstructed block actions, topmost compact link notice and footer-safe
   progress controls. */
.reading-layout-control {
  align-items: center;
  gap: 0;
  min-height: 36px;
  padding: 2px;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(31,35,36,0.9), rgba(8,9,9,0.92)), var(--reader-surface);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  box-shadow: 0 12px 30px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.055);
  pointer-events: auto;
}

.reading-layout-control .document-font-controls,
.reading-layout-control .layout-mode-switch {
  height: 30px;
  min-height: 30px;
  margin: 0;
  padding: 0 2px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.reading-layout-control .document-font-controls {
  order: 1;
  gap: 1px;
  padding-right: 5px;
  border-right: 1px solid rgba(148, 163, 184, 0.15);
  border-radius: 999px 0 0 999px;
}

.reading-layout-control .layout-mode-switch { order: 2; }
.reading-layout-control .document-font-controls button {
  min-width: 27px;
  min-height: 26px;
  padding: 0 6px;
  font-size: 11px;
}
.reading-layout-control .document-font-controls button:last-child { min-width: 38px; }
.reading-layout-control .document-font-controls span { min-width: 38px; font-size: 10px; }
.reading-layout-control .layout-mode-btn {
  min-width: 47px;
  height: 26px;
  padding: 0 9px;
  font-size: 11px;
}

.nr-copy-block > pre,
.nr-copy-block > blockquote {
  box-sizing: border-box;
  padding-inline-end: max(88px, 5.75em);
}
.nr-copy-block-button { top: 7px; right: 7px; min-height: 30px; }

.reader-history-overlay {
  inset: auto 0 0;
  width: 100%;
  height: clamp(220px, 58%, 520px);
  max-height: calc(100% - 72px);
  box-sizing: border-box;
  padding: 11px 12px 10px;
  overflow: hidden;
  border-top: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 15px 15px 0 0;
  box-shadow: 0 -18px 44px rgba(0,0,0,0.34);
}
.reader-history-head { flex: 0 0 auto; min-height: 30px; margin: 0 0 5px; }
.reader-history-head button { width: 30px; height: 30px; }
.reader-history-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding-right: 2px; }
.reader-history-day h3 { margin: 8px 3px 4px; font-size: 10px; }
.reader-history-item { grid-template-columns: minmax(0, 1fr) 28px; gap: 2px; margin: 2px 0; }
.reader-history-item button { min-height: 34px; font-size: 11px; }
.reader-history-item button:first-child { gap: 6px; padding: 0 8px; border-radius: 8px 3px 3px 8px; }
.reader-history-item button:first-child span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reader-history-item button:last-child { width: 28px; min-width: 28px; padding: 0; border-radius: 3px 8px 8px 3px; }
.reader-history-item small { font-size: 9px; }
.reader-history-clear { flex: 0 0 auto; min-height: 34px; margin-top: 6px; }

.nextreader-missing-links-dialog {
  z-index: 118000;
  place-items: center;
  padding: 16px;
  background: rgba(3, 7, 18, 0.56);
}
.nextreader-missing-links-panel {
  width: min(520px, calc(100vw - 32px));
  max-height: min(68dvh, 620px);
  border-radius: 14px;
}
.nextreader-missing-links-panel > header { padding: 10px 13px; }
.nextreader-missing-links-panel > header button { width: 32px; height: 32px; font-size: 19px; }
.nextreader-missing-links-panel > p { margin: 10px 14px 4px; font-size: 12px; line-height: 1.55; }
.nextreader-missing-links-panel > ul { margin: 0; padding: 5px 14px 13px 31px; }
.nextreader-missing-links-panel li { margin: 6px 0; }
.nextreader-missing-links-targets { gap: 4px; margin-top: 4px; }
.nextreader-missing-links-targets code { padding: 3px 6px; font-size: 11px; }

.reading-progress-hud {
  bottom: max(82px, calc(env(safe-area-inset-bottom, 0px) + 78px));
  z-index: 270;
}
.reading-progress-restore:not(.is-vertical-progress) {
  bottom: max(74px, calc(env(safe-area-inset-bottom, 0px) + 70px));
  z-index: 300;
}
.reader-shell.has-active-document .reader-main {
  padding-bottom: max(184px, calc(env(safe-area-inset-bottom, 0px) + 176px));
}

.pdf-native-text-layer span {
  position: absolute;
  transform-origin: 0 0;
  white-space: pre;
}

@media (max-width: 600px) {
  .reading-layout-control {
    top: max(54px, calc(env(safe-area-inset-top, 0px) + 50px));
    right: auto;
    bottom: auto;
    left: 50%;
    max-width: calc(100vw - 72px);
    transform: translateX(-50%);
  }
  .reading-layout-control .document-font-controls button { min-width: 26px; padding: 0 5px; }
  .reading-layout-control .document-font-controls button:last-child { min-width: 34px; }
  .reading-layout-control .document-font-controls span { min-width: 34px; }
  .reading-layout-control .layout-mode-btn { min-width: 43px; padding: 0 7px; }
  .nr-copy-block > pre,
  .nr-copy-block > blockquote { padding-inline-end: max(76px, 5em); }
  .reader-history-overlay { height: clamp(210px, 56%, 410px); max-height: calc(100% - 64px); }
  .reader-history-item { grid-template-columns: minmax(0, 1fr) 32px; }
  .reader-history-item button { min-height: 38px; }
  .reader-history-item button:last-child { width: 32px; min-width: 32px; }
  .nextreader-missing-links-dialog { align-items: center; padding: 12px; }
  .nextreader-missing-links-panel { width: min(480px, calc(100vw - 24px)); max-height: 76dvh; border-radius: 13px; }
  .reading-progress-restore:not(.is-vertical-progress) { bottom: max(62px, calc(env(safe-area-inset-bottom, 0px) + 58px)); }
  .reader-shell.has-active-document .reader-main { padding-bottom: max(136px, calc(env(safe-area-inset-bottom, 0px) + 128px)); }
}

/* ══════════════════════════════════════════════
   NextReader v5.2.1 integration closure
   Keep media overflow inside the reader, expose destructive row actions,
   and anchor collapsed navigation affordances to stable layout edges.
   ══════════════════════════════════════════════ */
.reader-main,
.reader-paper-wrap,
.pdf-viewer,
.image-viewer {
  min-width: 0;
  max-width: 100%;
}

.pdf-viewer,
.image-viewer {
  overflow-x: hidden;
}

.pdf-canvas-wrap,
#pdf-canvas-wrap.pdf-canvas-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
  overscroll-behavior-x: contain;
}

.pdf-page-shell {
  max-width: 100%;
  overflow: visible;
  isolation: isolate;
}

.pdf-page-shell canvas,
#pdf-canvas-wrap .pdf-page-shell canvas {
  display: block;
  max-width: none;
  height: auto;
}

.pdf-page-shell .pdf-native-text-layer { z-index: 2; }
.pdf-page-shell .ocr-text-layer { z-index: 3; }
.pdf-native-text-layer.is-source-hidden,
.ocr-text-layer.is-source-hidden { display: none; pointer-events: none; }

.history-dock-toggle {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 9px;
  width: 100%;
  min-height: 44px;
  padding: 0 12px;
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.22);
  background: linear-gradient(180deg, rgba(255,255,255,0.045), rgba(255,255,255,0.02));
  box-shadow: 0 -10px 28px rgba(0,0,0,0.16);
}

.history-dock-toggle .history-dock-chevron {
  margin-left: auto;
  transition: transform 0.2s ease;
}

.history-dock-toggle[aria-expanded="true"] .history-dock-chevron {
  transform: rotate(180deg);
}

.reader-history-overlay {
  transform-origin: bottom center;
  animation: nr-history-rise 0.2s ease-out;
}

@keyframes nr-history-rise {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.tree-row-group .tree-remove-btn {
  opacity: 0.72;
}

.tree-row-group:hover .tree-remove-btn,
.tree-row-group:focus-within .tree-remove-btn,
.tree-remove-btn:hover,
.tree-remove-btn:focus-visible {
  opacity: 1;
}

@media (max-width: 900px) {
  .reading-progress-restore.is-vertical-progress {
    left: auto;
    right: max(var(--reader-side-rail-right, 14px), calc(env(safe-area-inset-right, 0px) + 10px));
    top: clamp(calc(env(safe-area-inset-top, 0px) + 56px), 58svh, calc(100svh - env(safe-area-inset-bottom, 0px) - 96px));
    bottom: auto;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    transform: none;
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    white-space: nowrap;
    letter-spacing: 0;
  }

  .tree-row-group .tree-remove-btn { opacity: 1; }
}

/* NextReader v5.1 NR51-D reader contracts. Keep overflow inside the reader
   surface so portrait, rotated and presentation pages never widen body. */
html, body { max-width: 100%; }
.reader-main, .reader-paper-wrap, .markdown-panel, .pdf-viewer, .image-viewer,
.docx-viewer, .txt-viewer { min-width: 0; max-width: 100%; }
.pdf-viewer, .image-viewer { overflow-x: hidden; }
.pdf-canvas-wrap { width: 100%; max-width: 100%; overflow-x: auto; overflow-y: visible; }
.pdf-page-shell { max-width: 100%; overflow: hidden; }
.pdf-page-shell canvas { max-width: 100%; height: auto; }

.document-font-controls {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  min-height: 34px;
  margin-left: 6px;
  padding: 2px 4px;
  border: 1px solid rgba(148,163,184,0.16);
  border-radius: 999px;
  background: var(--reader-surface);
  color: var(--reader-ink-muted);
  pointer-events: auto;
}
.document-font-controls[hidden] { display: none; }
.document-font-controls button {
  min-width: 30px;
  min-height: 28px;
  padding: 0 8px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: inherit;
  font: 800 12px/1 var(--font-main);
  cursor: pointer;
}
.document-font-controls button:hover,
.document-font-controls button:focus-visible { color: var(--accent-primary); background: rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),0.12); outline: 0; }
.document-font-controls span { min-width: 44px; text-align: center; font: 800 11px/1 var(--font-mono); }
.reader-shell.nr-document-font-active .markdown-panel p,
.reader-shell.nr-document-font-active .markdown-panel li,
.reader-shell.nr-document-font-active .markdown-panel blockquote { font-size: calc(15.5px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .markdown-panel h1 { font-size: calc(34px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .markdown-panel h2 { font-size: calc(25px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .markdown-panel h3 { font-size: calc(19px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .markdown-panel h4 { font-size: calc(16px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .txt-content { font-size: calc(14px * var(--nr-document-font-scale, 1)); }
.reader-shell.nr-document-font-active .docx-content { font-size: calc(16px * var(--nr-document-font-scale, 1)); }

.nr-copy-block { position: relative; margin: 1em 0; }
.nr-copy-block > pre, .nr-copy-block > blockquote { margin: 0; }
.nr-copy-block-button {
  position: relative;
  z-index: 3;
  min-width: 44px;
  min-height: 44px;
  padding: 0 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 1px solid var(--nr-control-border, rgba(148,163,184,0.22));
  border-radius: 10px;
  background: var(--nr-copy-surface, rgba(13,15,17,0.94));
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 700 11px/1 var(--font-main);
  cursor: pointer;
}
.nr-copy-block > .nr-copy-block-button { position: absolute; top: 8px; right: 8px; }
.nr-copy-block-button:hover { background: var(--nr-copy-surface-hover, rgba(27,30,33,0.98)); color: var(--nr-control-text, var(--reader-ink)); }
.nr-copy-block-button.is-copied { color: var(--nr-control-success, var(--sg-success)); border-color: var(--nr-control-success, var(--sg-success)); }
.nr-copy-block-button.is-copy-failed { color: var(--nr-control-danger, var(--sg-danger)); border-color: var(--nr-control-danger, var(--sg-danger)); }
.nr-copy-block-button.is-copying { color: var(--nr-control-active-text, var(--accent-primary)); border-color: var(--nr-control-active-border, var(--accent-primary)); cursor: progress; }
.nr-code-token-comment { color: var(--nr-syntax-comment); }
.nr-code-token-string { color: var(--nr-syntax-string); }
.nr-code-token-number { color: var(--nr-syntax-number); }
.nr-code-token-keyword { color: var(--nr-syntax-keyword); }

.tree-row-group { display: flex; align-items: stretch; min-width: 0; width: 100%; }
.tree-row-group .tree-row { flex: 1 1 auto; min-width: 0; }
.tree-remove-btn {
  flex: 0 0 36px;
  min-width: 36px;
  min-height: 36px;
  margin: 2px 6px 2px 2px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
}
.tree-remove-btn:hover, .tree-remove-btn:focus-visible { color: #ef7777; border-color: rgba(239,119,119,0.35); background: rgba(239,119,119,0.1); outline: 0; }
.tree-row.is-context-selected { box-shadow: inset 3px 0 var(--accent-primary); background: rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),0.12); }

.reader-history-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  padding: 18px;
  overflow: auto;
  background: var(--reader-surface-strong);
}
.reader-history-overlay[hidden] { display: none; }
.reader-history-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; color: var(--reader-ink-strong); }
.reader-history-head button { width: 32px; height: 32px; border: 0; border-radius: 8px; background: transparent; color: inherit; font-size: 20px; cursor: pointer; }
.reader-history-day h3 { margin: 16px 0 6px; color: var(--reader-ink-muted); font: 800 11px/1 var(--font-mono); }
.reader-history-item { display: grid; grid-template-columns: minmax(0,1fr) 32px; gap: 3px; margin: 4px 0; }
.reader-history-item button { min-width: 0; min-height: 42px; border: 1px solid var(--panel-border); background: rgba(255,255,255,0.035); color: var(--reader-ink); cursor: pointer; }
.reader-history-item button:first-child { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 10px; border-radius: 9px 4px 4px 9px; text-align: left; }
.reader-history-item button:last-child { border-radius: 4px 9px 9px 4px; color: var(--reader-ink-muted); }
.reader-history-item small { flex: 0 0 auto; color: var(--reader-ink-muted); font: 600 10px/1 var(--font-mono); }
.reader-history-item button:hover, .reader-history-item button:focus-visible { border-color: var(--accent-primary); outline: 0; }
.reader-history-clear { min-height: 42px; margin-top: auto; border: 1px solid rgba(239,119,119,0.28); border-radius: 9px; background: rgba(239,119,119,0.08); color: #ef7777; cursor: pointer; }
.reader-history-empty { color: var(--reader-ink-muted); font-size: 12px; }

.pdf-page-shell { isolation: isolate; }
.pdf-native-text-layer {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: hidden;
  line-height: 1;
  pointer-events: auto;
  user-select: text;
  -webkit-user-select: text;
}
.pdf-native-text-layer span { color: transparent; cursor: text; }
.pdf-native-text-layer ::selection { color: transparent; background: rgba(73,137,255,0.34); }
.pdf-page-shell .ocr-text-layer { z-index: 3; }

.reading-progress-restore:not(.is-vertical-progress) {
  left: calc(var(--reading-progress-left, 50%) + var(--reading-progress-width, min(660px, calc(100vw - 42px))) - 44px);
  right: auto;
  bottom: max(74px, calc(env(safe-area-inset-bottom, 0px) + 70px));
  z-index: 300;
  transform: none;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  height: 44px;
  padding: 0;
  gap: 0;
  border-radius: 12px;
  font-size: 11px;
}
.reading-progress-restore i { font-size: 13px; }
.reader-shell.has-active-document .reader-main {
  padding-bottom: max(156px, calc(env(safe-area-inset-bottom, 0px) + 148px));
}
@media (max-width: 600px) {
  .document-font-controls { margin-left: 0; }
  .reading-progress-restore:not(.is-vertical-progress) { bottom: max(54px, calc(env(safe-area-inset-bottom, 0px) + 50px)); min-width: 44px; }
  .reading-progress-restore span { display: none; }
  .reader-shell.has-active-document .reader-main { padding-bottom: max(112px, calc(env(safe-area-inset-bottom, 0px) + 104px)); }
  .tree-remove-btn { flex-basis: 44px; min-width: 44px; min-height: 44px; }
}

/* Search and full-document translation now use their real content width,
   not the viewport width, so controls never escape below a side panel. */
.document-search-panel {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 54px repeat(3, var(--document-toolbar-height)) minmax(292px, max-content) auto;
  align-items: center;
  flex-wrap: initial;
}

.document-search-box {
  min-width: 0;
}

.document-search-count,
.document-search-btn,
.document-translate-btn,
.document-search-panel .document-translation-langs {
  min-width: 0;
}

.document-search-panel .document-translation-langs {
  display: flex;
  width: auto;
}

.document-search-panel.is-compact-toolbar {
  grid-template-columns: minmax(150px, 1fr) 48px repeat(3, var(--document-toolbar-height));
  grid-template-rows: var(--document-toolbar-height) var(--document-toolbar-height);
  row-gap: 7px;
}

.document-search-panel.is-compact-toolbar .document-translation-langs {
  grid-column: 1 / -2;
  grid-row: 2;
  justify-content: flex-start;
  margin-left: 0;
  padding-left: 0;
  padding-right: 4px;
  border-left: 0;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.document-search-panel.is-compact-toolbar .document-translate-btn {
  grid-column: -2 / -1;
  grid-row: 2;
}

.document-search-panel.is-compact-toolbar .document-translate-btn span {
  display: none;
}

.document-search-panel.is-narrow-toolbar {
  grid-template-columns: minmax(0, 1fr) 44px repeat(3, 34px);
  grid-template-rows: 34px auto 34px;
}

.document-search-panel.is-narrow-toolbar .document-translation-langs {
  grid-column: 1 / -1;
  grid-row: 2;
  height: auto;
  flex-wrap: wrap;
  padding: 7px 0 0;
}

.document-search-panel.is-narrow-toolbar .document-translate-btn {
  grid-column: 1 / -1;
  grid-row: 3;
  width: 100%;
}

.document-search-panel.is-narrow-toolbar .document-translate-btn span {
  display: inline;
}

/* Custom translation combobox: the native select remains the data authority
   while this listbox supplies the same themed UI as the rest of NextReader. */
.nr-translation-native-select {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.nr-translation-combobox {
  position: relative;
  display: inline-flex;
  min-width: 104px;
  height: var(--document-toolbar-height);
}

.nr-translation-combobox-trigger {
  width: 100%;
  min-width: 104px;
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
  padding: 0 10px 0 11px;
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: 11px;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.035));
  color: var(--reader-ink-strong);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 6px 14px rgba(0, 0, 0, 0.14);
  cursor: pointer;
  font: 900 12px/1 var(--font-main);
  white-space: nowrap;
}

.nr-translation-combobox-trigger:hover,
.nr-translation-combobox-trigger:focus-visible,
.nr-translation-combobox.is-open .nr-translation-combobox-trigger {
  outline: 0;
  color: var(--reader-ink-strong);
  border-color: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.52);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.11);
}

.nr-translation-combobox-trigger i {
  color: var(--reader-ink-muted);
  font-size: 9px;
  transition: transform 0.18s ease;
}

.nr-translation-combobox.is-open .nr-translation-combobox-trigger i {
  color: var(--accent-primary);
  transform: rotate(180deg);
}

.nr-translation-combobox-list {
  position: absolute;
  top: calc(100% + 7px);
  left: 0;
  z-index: 12040;
  display: grid;
  width: max-content;
  min-width: 100%;
  max-height: min(312px, calc(100vh - 152px));
  padding: 6px;
  overflow-y: auto;
  border: 1px solid var(--nr-popover-border);
  border-radius: 13px;
  background: var(--nr-popover-bg);
  box-shadow: var(--nr-popover-shadow);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

.nr-translation-combobox-list[hidden] {
  display: none;
}

.nr-translation-combobox-option {
  min-width: 112px;
  height: 34px;
  display: flex;
  align-items: center;
  border: 0;
  border-radius: 9px;
  padding: 0 10px;
  background: transparent;
  color: var(--nr-popover-muted);
  cursor: pointer;
  font: 800 12px/1 var(--font-main);
  text-align: left;
  white-space: nowrap;
}

.nr-translation-combobox-option:hover,
.nr-translation-combobox-option:focus-visible {
  outline: 0;
  color: var(--nr-popover-text);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.1);
}

.nr-translation-combobox-option.is-selected {
  color: var(--accent-primary);
  background: rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.14);
}

.document-search-panel.is-compact-toolbar .nr-translation-combobox {
  min-width: 96px;
}

.document-search-panel.is-compact-toolbar .nr-translation-combobox-trigger {
  min-width: 96px;
  padding-inline: 9px;
}

/* Theme-correct transient feedback. */
.reader-toast {
  position: fixed;
  left: 50%;
  bottom: max(24px, env(safe-area-inset-bottom, 0px));
  z-index: 13000;
  width: min(460px, calc(100vw - 32px));
  display: flex;
  align-items: stretch;
  gap: 12px;
  padding: 13px 16px 13px 12px;
  border: 1px solid var(--nr-popover-border);
  border-radius: 15px;
  background: var(--nr-popover-bg);
  color: var(--nr-popover-text);
  box-shadow: var(--nr-popover-shadow);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  transform: translateX(-50%);
  animation: fadeInUp 0.3s ease;
  transition: opacity 0.24s ease, transform 0.24s ease;
}

.reader-toast.is-leaving {
  opacity: 0;
  transform: translate(-50%, 8px);
}

.reader-toast-marker {
  width: 4px;
  flex: 0 0 4px;
  border-radius: 999px;
  background: #4d8cf5;
}

.reader-toast.is-danger .reader-toast-marker { background: #e45656; }
.reader-toast.is-success .reader-toast-marker { background: #45a978; }
.reader-toast.is-warning .reader-toast-marker { background: #d79a2b; }

.reader-toast-copy {
  min-width: 0;
  display: grid;
  gap: 5px;
}

.reader-toast-copy strong {
  color: var(--nr-popover-text);
  font: 900 13px/1.25 var(--font-main);
}

.reader-toast-copy small {
  color: var(--nr-popover-muted);
  font: 700 11px/1.45 var(--font-main);
  overflow-wrap: anywhere;
}

[data-theme="light"] .document-search-panel.is-compact-toolbar .document-translation-langs {
  border-top-color: rgba(31, 31, 31, 0.1);
}

[data-theme="light"] .nr-translation-combobox-trigger {
  border-color: rgba(31, 31, 31, 0.1);
  background: rgba(31, 31, 31, 0.045);
  color: #27303c;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.88), 0 5px 13px rgba(31, 31, 31, 0.07);
}

[data-theme="light"] .nr-translation-combobox-trigger i {
  color: #626a75;
}
/* Excel browser-local Markdown export */
.nr-markdown-export-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 24px;
  padding: 16px 18px;
  border: 1px solid color-mix(in srgb, var(--accent-primary) 36%, var(--panel-border));
  border-radius: 16px;
  background: color-mix(in srgb, var(--accent-primary) 8%, var(--reader-surface));
}

.nr-markdown-export-bar > div {
  display: grid;
  gap: 4px;
}

.nr-markdown-export-bar span {
  color: var(--text-muted);
  font-size: 12px;
}

.nr-markdown-export-button {
  min-height: 42px;
  padding: 0 16px;
  border: 1px solid var(--accent-primary);
  border-radius: 12px;
  color: var(--reader-surface);
  background: var(--accent-primary);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}

.nr-markdown-export-button:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--accent-primary) 35%, transparent);
  outline-offset: 3px;
}

/* PaddleOCR HTML-table export: follows the existing document export surface. */
.nr-paddle-export-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 22px;
  padding: 16px 18px;
  border: 1px solid color-mix(in srgb, var(--accent-primary) 36%, var(--panel-border));
  border-radius: 16px;
  background: color-mix(in srgb, var(--accent-primary) 8%, var(--reader-surface));
}

.nr-paddle-export-bar > div:first-child {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.nr-paddle-export-bar span,
.nr-paddle-export-bar small {
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
}

.nr-paddle-export-bar small { font-family: var(--font-mono); font-size: 10px; }

.nr-paddle-export-actions {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto;
}

.nr-paddle-export-actions button {
  min-height: 42px;
  padding: 0 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid color-mix(in srgb, var(--accent-primary) 56%, var(--panel-border));
  border-radius: 12px;
  color: var(--reader-ink-strong);
  background: color-mix(in srgb, var(--accent-primary) 12%, var(--reader-surface));
  font: 750 12px/1 var(--font-main);
  cursor: pointer;
  white-space: nowrap;
}

.nr-paddle-export-actions button:first-child {
  color: #111;
  background: var(--accent-primary);
  border-color: var(--accent-primary);
}

.nr-paddle-export-actions button:hover { transform: translateY(-1px); }
.nr-paddle-export-actions button:disabled { cursor: wait; opacity: 0.58; transform: none; }
.nr-paddle-export-actions button:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent-primary) 35%, transparent); outline-offset: 3px; }

@media (max-width: 640px) {
  .nr-markdown-export-bar,
  .nr-paddle-export-bar {
    align-items: stretch;
    flex-direction: column;
  }

  .nr-paddle-export-actions { display: grid; grid-template-columns: 1fr; }
  .nr-paddle-export-actions button { width: 100%; }
}

/* ══════════════════════════════════════════════
   NextReader v5.2.1 media reader
   ══════════════════════════════════════════════ */
.pdf-controls,
.image-controls {
  position: sticky;
  top: max(10px, env(safe-area-inset-top, 0px));
  z-index: 42;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px;
  width: fit-content;
  max-width: calc(100vw - 32px);
  margin-inline: auto;
  padding: 6px;
  border-radius: 16px;
}

.pdf-view-mode-switch {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border: 1px solid rgba(148, 163, 184, 0.13);
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.14);
}

.pdf-controls .pdf-view-mode-switch button {
  min-height: 28px;
  padding: 5px 9px;
  border-color: transparent;
  background: transparent;
}

.pdf-controls .pdf-view-mode-switch button.is-active {
  color: #080909;
  border-color: var(--accent-primary);
  background: var(--accent-primary);
}

.pdf-canvas-wrap {
  display: grid;
  justify-items: center;
  gap: 22px;
  width: 100%;
  min-height: 58vh;
  padding: 18px 0 46px;
  overflow: visible;
  scroll-behavior: smooth;
}

/* Override the legacy single-canvas inline stylesheet. Continuous mode needs
   the page shells to remain visible and independently sized. */
#pdf-canvas-wrap.pdf-canvas-wrap {
  margin-bottom: 0;
  overflow: visible;
  border-radius: 0;
  box-shadow: none;
}

.pdf-page-shell {
  position: relative;
  width: fit-content;
  max-width: 100%;
  min-width: 220px;
  min-height: 280px;
  display: grid;
  place-items: center;
  scroll-margin-block: 128px;
  border: 1px solid rgba(148, 163, 184, 0.15);
  border-radius: 3px;
  background: #f5f5f2;
  box-shadow: 0 18px 58px rgba(0, 0, 0, 0.32), 0 0 0 1px rgba(0, 0, 0, 0.18);
}

.pdf-page-shell canvas {
  display: block;
  max-width: none;
  border-radius: 2px;
}

#pdf-canvas-wrap .pdf-page-shell canvas {
  max-width: none;
  height: auto;
}

.pdf-page-shell.is-rendering::after {
  content: "正在渲染第 " attr(data-page) " 页";
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  color: #646b70;
  background: rgba(245, 245, 242, 0.9);
  font: 700 11px/1 var(--font-main);
  letter-spacing: 0.03em;
}

.pdf-page-shell.is-error::after {
  content: "第 " attr(data-page) " 页渲染失败";
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #d84d55;
  background: #f5f5f2;
  font: 700 11px/1 var(--font-main);
}

.pdf-viewer[data-view-mode="paged"] .pdf-canvas-wrap {
  align-items: start;
  min-height: calc(100dvh - 230px);
}

.pdf-viewer[data-view-mode="paged"] .pdf-page-shell {
  margin-inline: auto;
}

.image-stage {
  min-height: min(72vh, 900px);
  overscroll-behavior: contain;
}

.pdf-viewer:fullscreen,
.image-viewer:fullscreen,
.pdf-viewer.is-reader-fullscreen-fallback,
.image-viewer.is-reader-fullscreen-fallback {
  width: 100vw !important;
  height: 100dvh !important;
  max-width: none !important;
  margin: 0 !important;
  padding: max(12px, env(safe-area-inset-top, 0px)) 16px max(12px, env(safe-area-inset-bottom, 0px)) !important;
  overflow: auto !important;
  color: var(--reader-ink);
  background: var(--app-bg, #080909);
}

.pdf-viewer.is-reader-fullscreen-fallback,
.image-viewer.is-reader-fullscreen-fallback {
  position: fixed !important;
  inset: 0 !important;
  z-index: 13010 !important;
}

body.has-reader-fullscreen-fallback {
  overflow: hidden !important;
}

.pdf-viewer:fullscreen .pdf-controls,
.image-viewer:fullscreen .image-controls,
.pdf-viewer.is-reader-fullscreen-fallback .pdf-controls,
.image-viewer.is-reader-fullscreen-fallback .image-controls {
  top: max(10px, env(safe-area-inset-top, 0px));
  z-index: 60;
}

.image-viewer:fullscreen .image-stage,
.image-viewer.is-reader-fullscreen-fallback .image-stage {
  min-height: calc(100dvh - 96px);
}

[data-theme="light"] .pdf-view-mode-switch {
  border-color: rgba(15, 23, 42, 0.09);
  background: rgba(15, 23, 42, 0.035);
}

@media (max-width: 760px) {
  .pdf-controls,
  .image-controls {
    max-width: calc(100vw - 20px);
    gap: 4px;
    padding: 5px;
  }

  .pdf-controls button,
  .image-controls button {
    min-height: 30px;
    padding: 6px 9px;
  }

  .pdf-view-mode-switch button span {
    display: none;
  }

  .pdf-page-shell {
    min-width: 160px;
    min-height: 220px;
  }

  .pdf-canvas-wrap {
    gap: 14px;
    padding-top: 12px;
  }
}

/* Tablet-sized layouts intentionally overlay the file navigator. Keep media
   controls inside the remaining visible reading area so every action remains
   reachable while that navigator is open. */
@media (max-width: 1024px) and (min-width: 601px) {
  .reader-shell.is-navigator-expanded .pdf-controls,
  .reader-shell.is-navigator-expanded .image-controls {
    max-width: max(168px, calc(100vw - min(90vw, 380px) - 48px)) !important;
    margin-left: 0;
    margin-right: auto;
  }
}

/* ══════════════════════════════════════════════
   NextReader v5.2.1 user-feedback closure
   This block intentionally stays last so legacy reader contracts cannot
   restore full-height history, split display pills, or footer collisions.
   ══════════════════════════════════════════════ */
.reading-layout-control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: max-content;
  max-width: calc(100vw - 32px);
  min-height: 36px;
  padding: 2px;
  border-radius: 999px;
}

.reading-layout-control .document-font-controls {
  order: 1;
  min-height: 30px;
  margin: 0;
  padding: 0 5px 0 2px;
  border: 0;
  border-right: 1px solid rgba(148, 163, 184, 0.15);
  border-radius: 999px 0 0 999px;
  background: transparent;
  box-shadow: none;
}

.reading-layout-control .layout-mode-switch {
  order: 2;
  min-height: 30px;
  margin: 0;
  padding: 0 2px;
  border: 0;
  background: transparent;
}

.reading-layout-control .document-font-controls button {
  min-width: 27px;
  min-height: 26px;
  padding: 0 6px;
  font-size: 11px;
}

.reading-layout-control .document-font-controls button:last-child { min-width: 38px; }
.reading-layout-control .document-font-controls span { min-width: 38px; font-size: 10px; }
.reading-layout-control .layout-mode-btn { min-width: 47px; height: 26px; padding: 0 9px; font-size: 11px; }

.nr-copy-block > pre,
.nr-copy-block > blockquote {
  box-sizing: border-box;
  padding-inline-end: max(88px, 5.75em);
}

.nr-copy-block > .nr-copy-block-button {
  top: 7px;
  right: 7px;
  min-height: 44px;
}

.reader-history-overlay {
  position: absolute;
  inset: auto 0 0;
  z-index: 10;
  display: flex;
  width: 100%;
  height: clamp(220px, 58%, 520px);
  max-height: calc(100% - 72px);
  box-sizing: border-box;
  flex-direction: column;
  padding: 11px 12px 10px;
  overflow: hidden;
  border-top: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 15px 15px 0 0;
  background: var(--reader-surface-strong);
  box-shadow: 0 -18px 44px rgba(0, 0, 0, 0.34);
}

.reader-history-overlay[hidden] { display: none; }
.reader-history-head { flex: 0 0 auto; min-height: 30px; margin: 0 0 5px; }
.reader-history-head button { width: 30px; height: 30px; }
.reader-history-list {
  flex: 1 1 auto;
  min-height: 0;
  padding-right: 2px;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.reader-history-day h3 { margin: 8px 3px 4px; font-size: 10px; }
.reader-history-item { grid-template-columns: minmax(0, 1fr) 28px; gap: 2px; margin: 2px 0; }
.reader-history-item button { min-height: 34px; font-size: 11px; }
.reader-history-item button:first-child { gap: 6px; padding: 0 8px; border-radius: 8px 3px 3px 8px; }
.reader-history-item button:first-child span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reader-history-item button:last-child { width: 28px; min-width: 28px; padding: 0; border-radius: 3px 8px 8px 3px; }
.reader-history-item small { font-size: 9px; }
.reader-history-clear { flex: 0 0 auto; min-height: 34px; margin-top: 6px; }

.nextreader-missing-links-dialog {
  z-index: 118000;
  place-items: center;
  padding: 16px;
  background: rgba(3, 7, 18, 0.56);
}
.nextreader-missing-links-panel { width: min(520px, calc(100vw - 32px)); max-height: min(68dvh, 620px); border-radius: 14px; }
.nextreader-missing-links-panel > header { padding: 10px 13px; }
.nextreader-missing-links-panel > header button { width: 32px; height: 32px; font-size: 19px; }
.nextreader-missing-links-panel > p { margin: 10px 14px 4px; font-size: 12px; line-height: 1.55; }
.nextreader-missing-links-panel > ul { margin: 0; padding: 5px 14px 13px 31px; }
.nextreader-missing-links-panel li { margin: 6px 0; }
.nextreader-missing-links-targets { gap: 4px; margin-top: 4px; }
.nextreader-missing-links-targets code { padding: 3px 6px; font-size: 11px; }

.reading-progress-hud {
  bottom: max(82px, calc(env(safe-area-inset-bottom, 0px) + 78px));
  z-index: 270;
}
.reading-progress-restore:not(.is-vertical-progress) {
  bottom: max(74px, calc(env(safe-area-inset-bottom, 0px) + 70px));
  z-index: 300;
}
.reader-shell.has-active-document .reader-main {
  padding-bottom: max(184px, calc(env(safe-area-inset-bottom, 0px) + 176px));
}

@media (max-width: 600px) {
  .reading-layout-control {
    top: max(54px, calc(env(safe-area-inset-top, 0px) + 50px));
    right: auto;
    bottom: auto;
    left: 50%;
    max-width: calc(100vw - 72px);
    transform: translateX(-50%);
  }
  .reading-layout-control .document-font-controls button { min-width: 26px; padding: 0 5px; }
  .reading-layout-control .document-font-controls button:last-child { min-width: 34px; }
  .reading-layout-control .document-font-controls span { min-width: 34px; }
  .reading-layout-control .layout-mode-btn { min-width: 43px; padding: 0 7px; }
  .nr-copy-block > pre,
  .nr-copy-block > blockquote { padding-inline-end: max(76px, 5em); }
  .reader-history-overlay { height: clamp(210px, 56%, 410px); max-height: calc(100% - 64px); }
  .reader-history-item { grid-template-columns: minmax(0, 1fr) 32px; }
  .reader-history-item button { min-height: 38px; }
  .reader-history-item button:last-child { width: 32px; min-width: 32px; }
  .nextreader-missing-links-dialog { align-items: center; padding: 12px; }
  .nextreader-missing-links-panel { width: min(480px, calc(100vw - 24px)); max-height: 76dvh; border-radius: 13px; }
  .reading-progress-hud { bottom: max(70px, calc(env(safe-area-inset-bottom, 0px) + 66px)); }
  .reading-progress-restore:not(.is-vertical-progress) { bottom: max(62px, calc(env(safe-area-inset-bottom, 0px) + 58px)); }
  .reader-shell.has-active-document .reader-main { padding-bottom: max(144px, calc(env(safe-area-inset-bottom, 0px) + 136px)); }

  body:has(.file-navigator.is-open) .fab-group {
    opacity: 0;
    pointer-events: none;
    transform: translateX(12px);
  }
}

/* ══════════════════════════════════════════════
   NextReader v5.2.2 reader positioning closure
   Keep display/media controls fixed, preserve the narrow paper width when
   side panels open, and render double-page PDF spreads in two real columns.
   ══════════════════════════════════════════════ */
.reader-shell { --reader-control-right-offset: 0px; }
.reader-shell.is-navigator-expanded { --reader-control-right-offset: var(--reader-navigator-width, 340px); }

.reading-layout-control,
.pdf-controls,
.image-controls {
  right: var(--reader-control-right-offset);
  left: var(--reader-sidebar-width);
  width: max-content;
  margin-inline: auto;
  transform: none;
}

.reading-layout-control {
  top: max(72px, calc(env(safe-area-inset-top, 0px) + 68px));
  max-width: calc(100vw - var(--reader-sidebar-width) - var(--reader-control-right-offset) - 32px);
}

.pdf-controls,
.image-controls {
  position: fixed;
  top: max(122px, calc(env(safe-area-inset-top, 0px) + 118px));
  z-index: 47;
  max-width: calc(100vw - var(--reader-sidebar-width) - var(--reader-control-right-offset) - 32px);
  margin-block: 0;
}

.reader-shell.is-navigator-expanded .pdf-controls,
.reader-shell.is-navigator-expanded .image-controls {
  max-width: calc(100vw - var(--reader-sidebar-width) - var(--reader-control-right-offset) - 32px) !important;
  margin-inline: auto;
}

.reader-shell.has-active-document .reader-main { padding-top: 128px; }
.reader-shell[data-current-format="pdf"] .reader-main,
.reader-shell[data-current-format="image"] .reader-main { padding-top: 288px; }

.reader-shell.is-reader-layout-narrow .reader-main,
.reader-shell.is-reader-layout-narrow.is-navigator-expanded .reader-main {
  padding-right: 12px;
  padding-left: 12px;
}

.reader-shell.is-reader-layout-narrow .reader-paper-wrap {
  width: min(100%, var(--reader-fixed-width, 920px));
  max-width: var(--reader-fixed-width, 920px);
}

.pdf-viewer[data-view-mode="double"] .pdf-canvas-wrap {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  justify-items: center;
  gap: 18px;
  overflow-x: hidden;
}

.pdf-viewer[data-view-mode="double"] .pdf-page-shell {
  width: auto;
  min-width: 0;
  max-width: 100%;
  margin: 0;
}

.pdf-viewer[data-view-mode="double"] .pdf-page-shell canvas { max-width: 100%; }

.pdf-viewer:fullscreen .pdf-controls,
.image-viewer:fullscreen .image-controls,
.pdf-viewer.is-reader-fullscreen-fallback .pdf-controls,
.image-viewer.is-reader-fullscreen-fallback .image-controls {
  right: 16px;
  left: 16px;
  top: max(10px, env(safe-area-inset-top, 0px));
  margin-inline: auto;
}

.reader-shell.is-sidebars-overlay .reading-layout-control,
.reader-shell.is-sidebars-overlay .pdf-controls,
.reader-shell.is-sidebars-overlay .image-controls {
  right: 0;
  left: 0;
  max-width: calc(100vw - 32px);
}

@media (max-width: 760px) {
  .reading-layout-control { top: max(58px, calc(env(safe-area-inset-top, 0px) + 54px)); }
  .pdf-controls,
  .image-controls {
    top: max(104px, calc(env(safe-area-inset-top, 0px) + 100px));
    right: 10px;
    left: 10px;
    max-width: calc(100vw - 20px);
  }
  .reader-shell.has-active-document .reader-main { padding-top: 112px; }
  .reader-shell[data-current-format="pdf"] .reader-main,
  .reader-shell[data-current-format="image"] .reader-main { padding-top: 348px; }
  .pdf-viewer[data-view-mode="double"] .pdf-canvas-wrap { gap: 10px; }
}

/* v5.3 adaptive knowledge selection: one directory tree, two event routes. */
.knowledge-selection-toolbar {
  margin: 0 12px 10px;
  padding: 12px;
  border: 1px solid color-mix(in srgb, var(--accent-primary) 42%, transparent);
  border-radius: 14px;
  background: color-mix(in srgb, var(--accent-primary) 8%, var(--panel-bg, #111));
  box-shadow: inset 0 1px rgba(255,255,255,.04);
}
.knowledge-selection-toolbar[hidden] { display: none !important; }
.knowledge-selection-disclosure { display: grid; gap: 5px; }
.knowledge-selection-disclosure strong { color: var(--reader-ink-strong, #f5f5f5); font-size: 13px; }
.knowledge-selection-disclosure span,
.knowledge-selection-limit { color: var(--reader-ink-muted, #9ca3af); font-size: 11px; line-height: 1.55; }
.knowledge-selection-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 10px; }
.knowledge-selection-actions button {
  min-height: 36px; padding: 0 10px; border: 1px solid rgba(148,163,184,.2); border-radius: 9px;
  background: rgba(148,163,184,.07); color: inherit; font: 650 11px/1 var(--font-main); cursor: pointer;
}
.knowledge-selection-actions button.is-primary { border-color: var(--accent-primary); background: var(--accent-primary); color: #171300; }
.knowledge-selection-actions button:disabled { opacity: .4; cursor: not-allowed; }
.knowledge-selection-count { flex: 1 1 100%; color: var(--accent-primary); font: 700 11px/1.2 var(--font-mono); }
.knowledge-selection-limit { margin: 9px 0 0; }

.knowledge-tree-row { display: flex; align-items: center; min-height: 44px; gap: 8px; width: 100%; }
.knowledge-tree-row .knowledge-tree-chevron,
.knowledge-tree-row .knowledge-tree-label { border: 0; background: transparent; color: inherit; cursor: pointer; }
.knowledge-tree-chevron { display: grid; place-items: center; width: 28px; min-width: 28px; height: 36px; border-radius: 8px !important; }
.knowledge-tree-label { min-width: 0; flex: 1; text-align: left; padding: 9px 0; }
.knowledge-tree-label:disabled { cursor: not-allowed; }
.knowledge-tree-checkbox { width: 18px; height: 18px; min-width: 18px; accent-color: var(--accent-primary); cursor: pointer; }
.knowledge-tree-checkbox:disabled { cursor: not-allowed; }
.knowledge-tree-row:focus-within { outline: 2px solid color-mix(in srgb, var(--accent-primary) 70%, transparent); outline-offset: -2px; border-radius: 9px; }
.knowledge-tree-row.is-disabled { opacity: .62; }
.knowledge-tree-reason { max-width: 96px; color: #f59e0b; font-size: 10px; line-height: 1.25; text-align: right; }
.knowledge-current-badge { flex: 0 0 auto; padding: 3px 6px; border-radius: 999px; background: rgba(34,197,94,.13); color: #86efac; font-size: 9px; white-space: nowrap; }

.knowledge-load-result-overlay { z-index: 320; padding: 18px; }
.knowledge-load-result {
  width: min(680px, calc(100vw - 32px)); max-height: min(760px, calc(100vh - 36px)); overflow: auto;
  border: 1px solid rgba(148,163,184,.2); border-radius: 18px; background: var(--panel-bg, #111418);
  color: var(--reader-ink-strong, #f5f5f5); box-shadow: 0 28px 90px rgba(0,0,0,.48);
}
.knowledge-load-result-groups { display: grid; gap: 10px; padding: 0 18px 18px; }
.knowledge-load-result-group { border: 1px solid rgba(148,163,184,.15); border-radius: 12px; overflow: hidden; }
.knowledge-load-result-group h3 { display: flex; justify-content: space-between; margin: 0; padding: 10px 12px; background: rgba(148,163,184,.06); font-size: 12px; }
.knowledge-load-result-group h3 span { color: var(--accent-primary); }
.knowledge-load-result-group ul { list-style: none; margin: 0; padding: 0; }
.knowledge-load-result-group li { display: grid; gap: 3px; padding: 9px 12px; border-top: 1px solid rgba(148,163,184,.1); }
.knowledge-load-result-group li:first-child { border-top: 0; }
.knowledge-load-result-group strong { font-size: 12px; overflow-wrap: anywhere; }
.knowledge-load-result-group small { color: var(--reader-ink-muted, #9ca3af); font-size: 10px; overflow-wrap: anywhere; }
.knowledge-load-result-actions { display: flex; justify-content: flex-end; padding: 0 18px 18px; }

[data-theme="light"] .knowledge-selection-toolbar { background: #f8fafc; }
[data-theme="light"] .knowledge-current-badge { color: #166534; }
[data-theme="light"] .knowledge-load-result { background: #fff; color: #18212d; box-shadow: 0 24px 70px rgba(15,23,42,.2); }

@media (max-width: 600px) {
  .knowledge-selection-toolbar { margin-inline: 8px; }
  .knowledge-selection-actions button { min-height: 44px; flex: 1 1 calc(50% - 7px); }
  .knowledge-tree-reason { max-width: 74px; }
  .knowledge-load-result-overlay { padding: 8px; }
  .knowledge-load-result { width: calc(100vw - 16px); max-height: calc(100vh - 16px); border-radius: 14px; }
}

/* ══════════════════════════════════════════════
   NextReader v5.3.0 document surface closure
   Shared view-mode geometry, exact-copy affordances and edge restore controls.
   ══════════════════════════════════════════════ */
.reader-main {
  overflow-x: clip;
  overflow-y: visible;
}

#document-view-mode-host[hidden],
#source-viewer-panel[hidden],
#mermaid-preview-viewer[hidden],
#presentation-slide-viewer[hidden] {
  display: none !important;
}

#source-viewer-panel.is-active,
#mermaid-preview-viewer.is-active,
#presentation-slide-viewer.is-active {
  display: block !important;
}

.document-view-mode-host {
  position: sticky;
  top: max(118px, calc(env(safe-area-inset-top, 0px) + 114px));
  z-index: 46;
  display: flex;
  align-items: center;
  justify-content: center;
  width: max-content;
  max-width: calc(100% - 24px);
  margin: 0 auto 18px;
  pointer-events: none;
}

.document-view-mode-pill {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 4px;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 999px;
  background: var(--nr-pill-surface, var(--reader-surface-strong));
  box-shadow: 0 10px 30px var(--sg-shadow, rgba(0,0,0,.28)), inset 0 1px 0 var(--sg-glint, rgba(255,255,255,.06));
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
  pointer-events: auto;
}

.document-view-mode-pill button {
  min-width: 72px;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 750 12px/1 var(--font-main);
  cursor: pointer;
}

.document-view-mode-pill button:hover:not(:disabled) {
  background: var(--nr-control-surface-hover, rgba(255,255,255,.06));
  color: var(--nr-control-text, var(--reader-ink));
}

.document-view-mode-pill button.is-active,
.document-view-mode-pill button[aria-pressed="true"] {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.document-view-mode-pill button:disabled,
.document-view-mode-host[aria-busy="true"] .document-view-mode-pill button {
  opacity: .48;
  cursor: not-allowed;
}

.document-view-mode-host[data-state="failed"] .document-view-mode-pill,
.document-view-mode-host.is-error .document-view-mode-pill {
  border-color: var(--nr-control-danger, var(--sg-danger));
}

.document-view-mode-host[data-state="partial"] .document-view-mode-pill,
.document-view-mode-host.is-partial .document-view-mode-pill {
  border-color: var(--nr-control-active-border, var(--accent-primary));
}

.document-view-mode-status,
.nr-copy-status {
  position: fixed !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.nr-source-viewer,
.mermaid-preview-viewer,
.presentation-slide-viewer {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.nr-source-viewer {
  overflow: hidden;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 16px;
  background: var(--nr-source-surface, var(--reader-code-bg));
  box-shadow: 0 18px 48px var(--sg-shadow, rgba(0,0,0,.24));
}

.nr-source-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
  min-height: 60px;
  padding: 8px 10px 8px 16px;
  border-bottom: 1px solid var(--nr-control-border, var(--reader-rule));
  background: var(--nr-control-surface, var(--reader-surface-strong));
}

.nr-source-head-actions,
.nr-source-toolbar,
.nr-source-control-group {
  display: flex;
  align-items: center;
}

.nr-source-head-actions { gap: 7px; }

.nr-source-toolbar {
  flex-wrap: wrap;
  gap: 8px;
  min-height: 52px;
  padding: 7px 10px;
  border-bottom: 1px solid var(--nr-control-border, var(--reader-rule));
  background: var(--nr-control-surface, var(--reader-surface-strong));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-source-control-group {
  gap: 5px;
  min-width: 0;
}

.nr-source-control-label,
.nr-source-toolbar-status {
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 700 10px/1.2 var(--font-main);
}

.nr-source-control-input,
.nr-source-tool-button {
  min-height: 36px;
  box-sizing: border-box;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 9px;
  background: var(--nr-control-surface, var(--reader-surface-strong));
  color: var(--nr-control-text, var(--reader-ink));
  font: 700 11px/1.2 var(--font-main);
}

.nr-source-control-input {
  width: min(28vw, 220px);
  min-width: 104px;
  padding: 7px 9px;
  caret-color: var(--nr-control-active-text, var(--accent-primary));
}

.nr-source-goto-input { width: 88px; min-width: 68px; font-family: var(--font-mono); }

.nr-source-tool-button {
  min-width: 36px;
  padding: 7px 10px;
  cursor: pointer;
}

.nr-source-tool-button:hover:not(:disabled) {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-surface-hover, rgba(255,255,255,.06));
}

.nr-source-tool-button[aria-pressed="true"] {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.nr-source-tool-button:disabled,
.nr-source-control-input:disabled { opacity: .48; cursor: not-allowed; }

.nr-source-control-input[aria-invalid="true"] { border-color: var(--nr-control-danger, var(--sg-danger)); }

.nr-source-toolbar-status {
  flex: 1 1 220px;
  min-width: 0;
  padding-inline: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nr-source-identity {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.nr-source-identity strong {
  overflow: hidden;
  color: var(--nr-control-text, var(--reader-ink-strong));
  font: 750 13px/1.2 var(--font-main);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nr-source-identity span {
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 650 10px/1.2 var(--font-mono);
}

.nr-source-scroll {
  position: relative;
  display: grid;
  grid-template-columns: max-content minmax(max-content, 1fr);
  align-items: start;
  min-height: min(420px, 58svh);
  max-height: 72svh;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  background: var(--nr-source-surface, var(--reader-code-bg));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-source-gutter,
.nr-source-code {
  box-sizing: border-box;
  min-height: 100%;
  margin: 0;
  padding-block: 16px;
  border: 0;
  background: transparent;
  color: inherit;
  font: 500 13px/22px var(--font-mono);
  tab-size: 2;
  white-space: pre;
}

.nr-source-gutter {
  position: sticky;
  left: 0;
  z-index: 2;
  grid-column: 1;
  min-width: 58px;
  padding-inline: 12px;
  border-right: 1px solid var(--nr-control-border, var(--reader-rule));
  background: var(--nr-source-gutter-surface, var(--reader-surface-strong));
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  text-align: right;
  user-select: none;
}

.nr-source-code {
  grid-column: 2;
  min-width: 100%;
  padding-inline: 18px 28px;
}

.nr-source-code code { font: inherit; }
.nr-source-code ::selection { background: var(--nr-source-selection, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.28)); }

.nr-source-wrapped-lines {
  grid-column: 1 / -1;
  min-width: 0;
  width: 100%;
  padding-block: 16px;
}

.nr-source-wrapped-row {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  align-items: stretch;
  min-width: 0;
}

.nr-source-wrapped-number,
.nr-source-wrapped-text {
  box-sizing: border-box;
  min-height: 22px;
  font: 500 13px/22px var(--font-mono);
}

.nr-source-wrapped-number {
  position: sticky;
  left: 0;
  z-index: 2;
  padding-inline: 12px;
  border-right: 1px solid var(--nr-control-border, var(--reader-rule));
  background: var(--nr-source-gutter-surface, var(--reader-surface-strong));
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  text-align: right;
  user-select: none;
}

.nr-source-wrapped-text {
  min-width: 0;
  padding-inline: 18px 28px;
  color: var(--nr-control-text, var(--reader-ink));
  overflow-wrap: anywhere;
  tab-size: 2;
  white-space: pre-wrap;
  word-break: break-word;
}

.nr-source-wrapped-text::selection,
.nr-source-wrapped-text ::selection { background: var(--nr-source-selection, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.28)); }

:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.comment,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.prolog,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.doctype,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.cdata { color: var(--nr-syntax-comment); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.punctuation { color: var(--nr-syntax-punctuation); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.property { color: var(--nr-syntax-property); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.tag { color: var(--nr-syntax-tag); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.boolean,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.number { color: var(--nr-syntax-number); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.constant,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.symbol { color: var(--nr-syntax-constant); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.selector,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.attr-name,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.string,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.char,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.builtin { color: var(--nr-syntax-string); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.operator,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.entity,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.url,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.variable { color: var(--nr-syntax-operator); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.atrule,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.attr-value { color: var(--nr-syntax-attribute); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.function { color: var(--nr-syntax-function); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.class-name { color: var(--nr-syntax-type); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.keyword,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.important { color: var(--nr-syntax-keyword); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.regex { color: var(--nr-syntax-constant); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.inserted { color: var(--nr-syntax-inserted); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.deleted { color: var(--nr-syntax-deleted); }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.namespace { opacity: .76; }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.bold,
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.important { font-weight: 800; }
:is(.nr-source-code, .nr-source-wrapped-text, .nr-code-block code) .token.italic { font-style: italic; }

.nr-source-scroll.is-virtualized::before {
  content: '';
  display: block;
  grid-column: 1 / -1;
  grid-row: 1;
  width: 1px;
  height: var(--nr-source-total-height, 0px);
}

.nr-source-scroll.is-virtualized .nr-source-gutter,
.nr-source-scroll.is-virtualized .nr-source-code {
  position: absolute;
  top: 0;
}

.nr-source-scroll.is-virtualized .nr-source-gutter { left: 0; }
.nr-source-scroll.is-virtualized .nr-source-code { left: 58px; }

.nr-source-limit,
.nr-document-error,
.nr-pptx-empty {
  display: grid;
  place-items: center;
  gap: 8px;
  min-height: 220px;
  padding: 28px;
  box-sizing: border-box;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  text-align: center;
}

.nr-document-error i { color: var(--nr-control-danger, var(--sg-danger)); font-size: 24px; }
.nr-document-error h2 { margin: 0; color: var(--nr-control-text, var(--reader-ink-strong)); font-size: 16px; }
.nr-document-error p { max-width: 54ch; margin: 0; line-height: 1.65; }

.nr-root-copy-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: 52px;
  margin: 0 0 12px;
  padding: 4px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--nr-control-border, var(--reader-rule));
}

.mermaid-preview-viewer {
  min-height: min(520px, 68svh);
  padding: clamp(16px, 3vw, 34px);
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 16px;
  background: var(--nr-source-surface, var(--reader-surface));
  box-shadow: 0 18px 48px var(--sg-shadow, rgba(0,0,0,.24));
}

.mermaid-preview-viewer > svg {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  min-height: 180px;
  margin: auto;
}

.nr-mermaid-block {
  min-width: 0;
  margin: 1.25em 0;
  overflow: hidden;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 14px;
  background: var(--nr-source-surface, var(--reader-code-bg));
  box-shadow: 0 14px 38px var(--sg-shadow, rgba(0,0,0,.2));
}

.nr-mermaid-block-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-height: 54px;
  padding: 5px 7px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--nr-control-border, var(--reader-rule));
  background: var(--nr-control-surface, var(--reader-surface-strong));
}

.nr-mermaid-block-status {
  order: -1;
  flex: 1 1 auto;
  min-width: 0;
  margin-inline-end: auto;
  overflow: hidden;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 650 10px/1.35 var(--font-main);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nr-mermaid-block-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  min-height: 44px;
  padding: 0 13px;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 999px;
  background: transparent;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 750 11px/1 var(--font-main);
  cursor: pointer;
}

.nr-mermaid-block-toggle:hover:not(:disabled) {
  background: var(--nr-control-surface-hover, rgba(255,255,255,.06));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-mermaid-block-toggle[aria-pressed="true"],
.nr-mermaid-block-toggle.is-active {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.nr-mermaid-block-toggle:disabled,
.nr-mermaid-block[aria-busy="true"] .nr-mermaid-block-toggle {
  opacity: .48;
  cursor: not-allowed;
}

.nr-mermaid-block-source,
.nr-mermaid-block-preview {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.nr-mermaid-block-source {
  margin: 0;
  padding: 16px 18px;
  overflow: auto;
  background: var(--nr-source-surface, var(--reader-code-bg));
  color: var(--nr-control-text, var(--reader-ink));
  font: 500 13px/1.65 var(--font-mono);
  tab-size: 2;
  white-space: pre;
}

.nr-mermaid-block-preview {
  min-height: 220px;
  padding: clamp(14px, 2.5vw, 26px);
  overflow: auto;
  overscroll-behavior: contain;
  background: var(--nr-source-surface, var(--reader-surface));
}

.nr-mermaid-block-preview > svg {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  margin: auto;
}

.nr-mermaid-block-source[hidden],
.nr-mermaid-block-preview[hidden] { display: none !important; }

.nr-mermaid-block[data-state="failed"],
.nr-mermaid-block.is-error,
.nr-mermaid-block.is-failed {
  border-color: var(--nr-control-danger, var(--sg-danger));
}

.nr-mermaid-block[data-state="failed"] .nr-mermaid-block-preview,
.nr-mermaid-block.is-error .nr-mermaid-block-preview,
.nr-mermaid-block.is-failed .nr-mermaid-block-preview {
  color: var(--nr-control-danger, var(--sg-danger));
}

.nr-mermaid-block[data-state="failed"] .nr-mermaid-block-status,
.nr-mermaid-block.is-error .nr-mermaid-block-status,
.nr-mermaid-block.is-failed .nr-mermaid-block-status {
  color: var(--nr-control-danger, var(--sg-danger));
}

.nr-mermaid-block[data-state="partial"],
.nr-mermaid-block.is-partial {
  border-color: var(--nr-control-active-border, var(--accent-primary));
}

.nr-mermaid-block[data-state="loading"] .nr-mermaid-block-preview,
.nr-mermaid-block.is-loading .nr-mermaid-block-preview {
  opacity: .72;
  cursor: progress;
}

.presentation-slide-viewer {
  padding: clamp(14px, 2.5vw, 28px);
  overflow: clip;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 16px;
  background: var(--nr-slide-stage-surface, var(--reader-surface));
}

.nr-pptx-slide-deck {
  display: block;
  width: 100%;
}

.nr-pptx-slide-deck > .nr-pptx-slide-page + .nr-pptx-slide-page {
  margin-top: 58px;
}

.nr-pptx-deck-toolbar {
  position: sticky;
  top: max(0px, env(safe-area-inset-top, 0px));
  z-index: 8;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  min-height: 58px;
  margin-bottom: 14px;
  padding: 6px 8px;
  box-sizing: border-box;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 13px;
  background: var(--nr-control-surface, var(--reader-surface-strong));
  box-shadow: 0 10px 28px var(--sg-shadow, rgba(0,0,0,.22));
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

.nr-pptx-toolbar-group {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
  min-width: 0;
}

.nr-pptx-toolbar-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 44px;
  min-height: 44px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 750 11px/1 var(--font-main);
  white-space: nowrap;
  cursor: pointer;
}

.nr-pptx-toolbar-button:hover:not(:disabled) {
  border-color: var(--nr-control-border, var(--reader-rule));
  background: var(--nr-control-surface-hover, rgba(255,255,255,.06));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-pptx-toolbar-button[aria-pressed="true"],
.nr-pptx-toolbar-button.is-active {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.nr-pptx-toolbar-button:disabled {
  opacity: .48;
  cursor: not-allowed;
}

.nr-pptx-page-status {
  min-width: 0;
  margin-inline-start: auto;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 700 10px/1.35 var(--font-mono);
  text-align: end;
}

.nr-pptx-deck-notice {
  display: flex;
  align-items: flex-start;
  gap: 10px 14px;
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--nr-control-active-border, var(--accent-primary));
  border-radius: 12px;
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.12));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-pptx-deck-notice[data-render-completeness="complete"] {
  border-color: var(--nr-control-success, var(--sg-success));
  background: color-mix(in srgb, var(--nr-control-success, var(--sg-success)) 12%, var(--nr-control-surface, var(--reader-surface-strong)));
}

.nr-pptx-deck-notice[data-render-completeness="partial"] {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.12));
}

.nr-pptx-deck-notice[data-render-completeness="failed"] {
  border-color: var(--nr-control-danger, var(--sg-danger));
  background: color-mix(in srgb, var(--nr-control-danger, var(--sg-danger)) 12%, var(--nr-control-surface, var(--reader-surface-strong)));
}

.nr-pptx-deck-notice-title {
  flex: 0 0 auto;
  color: var(--nr-control-active-text, var(--accent-primary));
  font: 800 12px/1.45 var(--font-main);
}

.nr-pptx-deck-notice[data-render-completeness="failed"] .nr-pptx-deck-notice-title {
  color: var(--nr-control-danger, var(--sg-danger));
}

.nr-pptx-deck-notice[data-render-completeness="complete"] .nr-pptx-deck-notice-title {
  color: var(--nr-control-success, var(--sg-success));
}

.nr-pptx-deck-notice-reasons {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 14px;
  min-width: 0;
  margin: 0;
  padding: 0;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 650 11px/1.45 var(--font-main);
  list-style: none;
}

.nr-pptx-deck-notice-reasons li::before {
  content: '·';
  margin-inline-end: 6px;
  color: currentColor;
}

.nr-pptx-deck-layout {
  display: grid;
  grid-template-columns: clamp(112px, 14vw, 156px) minmax(0, 1fr);
  align-items: start;
  gap: clamp(14px, 2vw, 24px);
  min-width: 0;
}

.nr-pptx-thumbnails {
  position: sticky;
  top: max(72px, calc(env(safe-area-inset-top, 0px) + 68px));
  min-width: 0;
  max-height: calc(100svh - max(104px, calc(env(safe-area-inset-top, 0px) + 100px)));
  overflow: hidden;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 12px;
  background: var(--nr-control-surface, var(--reader-surface-strong));
}

.nr-pptx-thumbnail-list {
  display: grid;
  gap: 8px;
  max-height: inherit;
  margin: 0;
  padding: 8px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  list-style: none;
}

.nr-pptx-thumbnail-item { min-width: 0; }

.nr-pptx-thumbnail-button {
  display: grid;
  gap: 6px;
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 6px;
  box-sizing: border-box;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  text-align: start;
  cursor: pointer;
}

.nr-pptx-thumbnail-button:hover:not(:disabled) {
  border-color: var(--nr-control-border, var(--reader-rule));
  background: var(--nr-control-surface-hover, rgba(255,255,255,.06));
  color: var(--nr-control-text, var(--reader-ink));
}

.nr-pptx-thumbnail-button[aria-current="true"],
.nr-pptx-thumbnail-button[aria-current="page"],
.nr-pptx-thumbnail-button.is-active {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.nr-pptx-thumbnail-button:disabled { opacity: .48; cursor: not-allowed; }

.nr-pptx-thumbnail-preview {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 6px;
  background: var(--nr-slide-page-surface, #fff);
  box-shadow: 0 5px 14px var(--sg-shadow, rgba(0,0,0,.2));
  pointer-events: none;
}

.nr-pptx-thumbnail-shape {
  color: #111;
  font: 700 4px/1.15 var(--font-main);
  text-align: start;
  pointer-events: none;
}

.nr-pptx-thumbnail-failure {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 5px;
  color: var(--nr-control-danger, var(--sg-danger));
  font: 800 9px/1.2 var(--font-main);
  text-align: center;
}

.nr-pptx-thumbnail-number,
.nr-pptx-thumbnail-state {
  color: inherit;
  font: 700 9px/1.3 var(--font-main);
}

.nr-pptx-thumbnail-state { color: var(--nr-control-text-muted, var(--reader-ink-muted)); }
.nr-pptx-thumbnail-button[data-render-completeness="partial"] .nr-pptx-thumbnail-state { color: var(--nr-control-active-text, var(--accent-primary)); }
.nr-pptx-thumbnail-button[data-render-completeness="failed"] .nr-pptx-thumbnail-state { color: var(--nr-control-danger, var(--sg-danger)); }

.nr-pptx-slide-stage,
.nr-pptx-slide-track {
  min-width: 0;
  width: 100%;
}

.nr-pptx-slide-stage {
  overflow: clip;
}

.nr-pptx-slide-track {
  display: grid;
  place-items: start center;
  gap: 58px;
}

.nr-pptx-slide-deck[data-browse-mode="single"] .nr-pptx-slide-track {
  place-items: center;
  gap: 0;
  min-height: min(640px, 72svh);
}

.nr-pptx-slide-deck[data-browse-mode="single"] .nr-pptx-slide-page[hidden] {
  display: none !important;
}

.nr-pptx-slide-deck[data-fit-mode="width"] .nr-pptx-slide-page {
  width: min(100%, 1040px);
}

.nr-pptx-slide-deck[data-fit-mode="page"] .nr-pptx-slide-page {
  width: min(100%, 920px);
  max-height: min(70svh, 720px);
}

.nr-pptx-slide-page {
  position: relative;
  width: min(100%, 1040px);
  margin: 0 auto;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 12px;
  background: var(--nr-slide-page-surface, #fff);
  box-shadow: 0 18px 48px var(--sg-shadow, rgba(0,0,0,.28));
}

.presentation-slide-viewer[data-render-completeness="partial"],
.nr-pptx-slide-page[data-render-completeness="partial"] {
  border-color: var(--nr-control-active-border, var(--accent-primary));
}

.presentation-slide-viewer[data-render-completeness="failed"],
.nr-pptx-slide-page[data-render-completeness="failed"] {
  border-color: var(--nr-control-danger, var(--sg-danger));
}

.nr-pptx-slide-page[data-render-completeness="failed"] .nr-pptx-slide-meta {
  color: var(--nr-control-danger, var(--sg-danger));
}

.nr-pptx-slide-failure {
  position: absolute;
  inset: clamp(16px, 4vw, 46px);
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 10px;
  padding: 18px;
  border: 1px solid var(--nr-control-danger, var(--sg-danger));
  border-radius: 12px;
  background: var(--nr-control-surface, var(--reader-surface-strong));
  color: var(--nr-control-text, var(--reader-ink));
  text-align: center;
}

.nr-pptx-slide-failure p { margin: 0; color: var(--nr-control-text-muted, var(--reader-ink-muted)); }
.nr-pptx-switch-parsed { margin-top: 4px; }

.nr-pptx-slide-canvas {
  position: absolute;
  inset: 0;
  overflow: hidden;
  border-radius: inherit;
}

.nr-pptx-shape {
  position: absolute;
  box-sizing: border-box;
  overflow: hidden;
  border-style: solid;
  border-width: 0;
  transform-origin: center;
}

.nr-pptx-shape-image { object-fit: contain; }
.nr-pptx-shape-text { width: 100%; height: 100%; overflow: hidden; color: #111; }
.nr-pptx-shape-text p { margin: 0; line-height: 1.25; overflow-wrap: anywhere; }
.nr-pptx-bullet {
  display: inline-block;
  min-width: 1em;
  color: var(--nr-pptx-bullet-color, currentColor);
  font: inherit;
  text-align: center;
}

.nr-pptx-object-placeholder {
  display: grid;
  place-content: center;
  gap: 7px;
  width: 100%;
  height: 100%;
  padding: clamp(8px, 1.5vw, 18px);
  border: 1px dashed var(--nr-pptx-placeholder-border, rgba(30, 41, 59, .42));
  border-radius: 8px;
  background: var(--nr-pptx-placeholder-surface, rgba(248, 250, 252, .9));
  color: var(--nr-pptx-placeholder-text, #273449);
  font: 650 clamp(9px, 1.2vw, 14px)/1.35 var(--font-main);
  text-align: center;
}

.nr-pptx-object-placeholder strong { color: var(--nr-pptx-placeholder-text, #111827); font-weight: 850; }
.nr-pptx-object-placeholder span { color: var(--nr-pptx-placeholder-text-muted, #526079); overflow-wrap: anywhere; }

.nr-pptx-table {
  width: 100%;
  height: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  background: var(--nr-pptx-table-surface, rgba(255, 255, 255, .92));
  color: var(--nr-pptx-table-text, #172033);
  font: 600 clamp(8px, 1.1vw, 13px)/1.25 var(--font-main);
}

.nr-pptx-table td {
  min-width: 0;
  padding: clamp(3px, .55vw, 8px);
  border: 1px solid var(--nr-pptx-table-border, rgba(51, 65, 85, .28));
  vertical-align: top;
  overflow: hidden;
}

.nr-pptx-table p { margin: 0; overflow-wrap: anywhere; }
.nr-pptx-slide-meta {
  position: absolute;
  top: calc(100% + 9px);
  inset-inline: 0;
  min-height: 28px;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  font: 650 10px/1.4 var(--font-main);
  text-align: center;
}

.nr-copy-block-button {
  transition: color .16s ease, border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}

.nr-copy-block-button:disabled { opacity: .48; cursor: not-allowed; }

.nr-copy-block-button:focus-visible,
.document-view-mode-pill button:focus-visible,
.nr-mermaid-block-toggle:focus-visible,
.nr-pptx-toolbar-button:focus-visible,
.nr-pptx-thumbnail-button:focus-visible,
.nr-source-tool-button:focus-visible,
.nr-source-control-input:focus-visible,
.reading-progress-restore:focus-visible,
.nr-source-scroll:focus-visible {
  outline: 2px solid var(--nr-control-focus-ring, var(--accent-primary));
  outline-offset: 3px;
}

.reading-progress-restore {
  min-width: 44px;
  min-height: 44px;
  border-color: var(--nr-control-border, var(--reader-rule));
  background: var(--nr-progress-surface, var(--reader-surface-strong));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.reading-progress-restore:hover {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr),var(--accent-pg),var(--accent-pb),.16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.reading-progress-restore:not(.is-vertical-progress) {
  left: calc(var(--reading-progress-left, 50%) + var(--reading-progress-width, min(660px, calc(100vw - 42px))) - 44px);
  right: auto;
  bottom: max(74px, calc(env(safe-area-inset-bottom, 0px) + 70px));
  width: 44px;
  height: 44px;
  padding: 0;
  transform: none;
  border-radius: 12px;
}

.reading-progress-restore:not(.is-vertical-progress) > span {
  position: absolute;
  right: calc(100% + 8px);
  display: block;
  width: max-content;
  max-width: min(220px, calc(100vw - 80px));
  padding: 7px 9px;
  border: 1px solid var(--nr-control-border, var(--reader-rule));
  border-radius: 8px;
  background: var(--nr-control-surface, var(--reader-surface-strong));
  color: var(--nr-control-text, var(--reader-ink));
  box-shadow: 0 10px 26px var(--sg-shadow, rgba(0,0,0,.28));
  opacity: 0;
  transform: translateX(4px);
  transition: opacity .16s ease, transform .16s ease;
  pointer-events: none;
}

.reading-progress-restore:not(.is-vertical-progress):hover > span,
.reading-progress-restore:not(.is-vertical-progress):focus-visible > span {
  opacity: 1;
  transform: none;
}

@media (max-width: 900px) {
  .reading-progress-restore.is-vertical-progress {
    left: auto;
    right: max(var(--reader-side-rail-right, 14px), calc(env(safe-area-inset-right, 0px) + 10px));
    top: clamp(calc(env(safe-area-inset-top, 0px) + 56px), 58svh, calc(100svh - env(safe-area-inset-bottom, 0px) - 96px));
    bottom: auto;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    transform: none;
    border-radius: 12px 0 0 12px;
    writing-mode: horizontal-tb;
    text-orientation: mixed;
  }

  .reading-progress-restore.is-vertical-progress > span { display: none; }
}

@media (max-width: 760px) {
  .document-view-mode-host { top: max(104px, calc(env(safe-area-inset-top, 0px) + 100px)); }
  .nr-source-scroll { max-height: 68svh; }
}

@media (max-width: 600px) {
  .document-view-mode-host {
    top: max(10px, calc(env(safe-area-inset-top, 0px) + 8px));
    max-width: calc(100% - 16px);
    margin-bottom: 12px;
  }

  .document-view-mode-pill { width: min(100%, 280px); }
  .document-view-mode-pill button { flex: 1 1 50%; min-width: 0; min-height: 44px; padding-inline: 10px; }
  .nr-source-head { padding-left: 12px; }
  .nr-source-head-actions { width: 100%; }
  .nr-source-head-actions .nr-copy-control { flex: 1 1 50%; }
  .nr-source-toolbar { align-items: stretch; padding-inline: 8px; }
  .nr-source-search-group { flex: 1 1 100%; }
  .nr-source-search-input { flex: 1 1 auto; width: auto; }
  .nr-source-toolbar-status { flex-basis: 100%; }
  .nr-source-identity span { white-space: normal; }
  .nr-source-scroll { min-height: 54svh; max-height: 70svh; }
  .nr-source-gutter { min-width: 48px; padding-inline: 8px; }
  .nr-source-code { padding-inline: 12px 18px; }
  .nr-source-scroll.is-virtualized .nr-source-code { left: 48px; }
  .nr-source-wrapped-row { grid-template-columns: 48px minmax(0, 1fr); }
  .nr-source-wrapped-number { padding-inline: 8px; }
  .nr-source-wrapped-text { padding-inline: 12px 18px; }
  .mermaid-preview-viewer { min-height: 58svh; padding: 12px; }
  .presentation-slide-viewer { padding: 10px; }
  .nr-pptx-deck-toolbar { top: max(0px, env(safe-area-inset-top, 0px)); gap: 5px; padding: 5px; }
  .nr-pptx-toolbar-group { flex: 1 1 auto; }
  .nr-pptx-toolbar-button { flex: 1 1 auto; padding-inline: 8px; }
  .nr-pptx-page-status { order: 3; flex: 1 0 100%; margin-inline-start: 0; padding: 2px 4px; text-align: start; }
  .nr-pptx-deck-notice { display: grid; gap: 6px; }
  .nr-pptx-deck-layout { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .nr-pptx-thumbnails { position: static; max-height: none; border-radius: 10px; }
  .nr-pptx-thumbnail-list { display: flex; max-height: none; padding: 7px; overflow-x: auto; overflow-y: hidden; scrollbar-gutter: auto; }
  .nr-pptx-thumbnail-button { flex: 0 0 116px; }
  .nr-pptx-slide-track { gap: 50px; }
  .nr-pptx-slide-deck[data-browse-mode="single"] .nr-pptx-slide-track { min-height: min(520px, 64svh); }
}

@media (pointer: coarse) {
  .nr-copy-block-button,
  .document-view-mode-pill button,
  .nr-mermaid-block-toggle,
  .nr-source-tool-button,
  .nr-source-control-input,
  .nr-pptx-toolbar-button,
  .nr-pptx-thumbnail-button,
  .reading-progress-restore {
    min-width: 44px;
    min-height: 44px;
  }
}

@media (prefers-contrast: more) {
  .nr-copy-block-button,
  .document-view-mode-pill,
  .document-view-mode-pill button[aria-pressed="true"],
  .nr-mermaid-block,
  .nr-mermaid-block-toggle,
  .nr-mermaid-block-status,
  .nr-pptx-deck-notice,
  .nr-pptx-object-placeholder,
  .nr-pptx-table td,
  .nr-pptx-deck-toolbar,
  .nr-pptx-toolbar-button,
  .nr-pptx-thumbnails,
  .nr-pptx-thumbnail-button,
  .reading-progress-restore,
  .nr-source-viewer,
  .mermaid-preview-viewer,
  .presentation-slide-viewer {
    border-width: 2px;
  }

  .nr-copy-block-button,
  .document-view-mode-pill button,
  .nr-mermaid-block-toggle,
  .nr-source-tool-button,
  .nr-source-control-input,
  .reading-progress-restore { font-weight: 800; }

  .nr-source-tool-button,
  .nr-source-control-input { min-width: 44px; min-height: 44px; }
}

@media (forced-colors: active) {
  .nr-copy-block-button,
  .document-view-mode-pill,
  .document-view-mode-pill button,
  .nr-mermaid-block,
  .nr-mermaid-block-toggle,
  .nr-mermaid-block-status,
  .nr-pptx-deck-notice,
  .nr-pptx-object-placeholder,
  .nr-pptx-table,
  .nr-pptx-table td,
  .nr-pptx-deck-toolbar,
  .nr-pptx-toolbar-button,
  .nr-pptx-thumbnails,
  .nr-pptx-thumbnail-button,
  .nr-pptx-thumbnail-preview,
  .nr-source-toolbar,
  .nr-source-tool-button,
  .nr-source-control-input,
  .reading-progress-restore,
  .nr-source-viewer,
  .mermaid-preview-viewer,
  .presentation-slide-viewer,
  .nr-pptx-slide-page {
    border-color: ButtonText;
    background: Canvas;
    color: ButtonText;
    box-shadow: none;
    forced-color-adjust: auto;
  }

  .document-view-mode-pill button[aria-pressed="true"],
  .nr-mermaid-block-toggle[aria-pressed="true"],
  .nr-pptx-toolbar-button[aria-pressed="true"],
  .nr-pptx-thumbnail-button[aria-current="true"],
  .nr-pptx-thumbnail-button[aria-current="page"],
  .nr-copy-block-button.is-copied,
  .reading-progress-restore:hover {
    border-color: Highlight;
    background: Highlight;
    color: HighlightText;
  }

  .nr-copy-block-button.is-copy-failed { border-color: Mark; color: MarkText; }
  .nr-pptx-deck-notice-title,
  .nr-pptx-deck-notice-reasons,
  .nr-pptx-object-placeholder strong,
  .nr-pptx-object-placeholder span,
  .nr-pptx-table,
  .nr-pptx-bullet { color: CanvasText; }
  .nr-pptx-deck-notice[data-render-completeness="failed"] { border-color: Mark; }
  .nr-pptx-slide-page[data-render-completeness="failed"] { border-color: Mark; }
}

@media (prefers-reduced-motion: reduce) {
  .nr-copy-block-button,
  .document-view-mode-pill button,
  .nr-mermaid-block-toggle,
  .nr-source-tool-button,
  .nr-source-control-input,
  .nr-pptx-toolbar-button,
  .nr-pptx-thumbnail-button,
  .reading-progress-restore,
  .reading-progress-restore > span,
  .document-view-mode-host,
  .nr-source-viewer,
  .mermaid-preview-viewer,
  .nr-mermaid-block,
  .nr-pptx-deck-toolbar,
  .nr-pptx-slide-track,
  .presentation-slide-viewer {
    animation: none !important;
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* v5.3.0 fixed reading frame: the 920px narrow paper owns the desktop
   center span; side panels may resize only from the space that remains. */
.reader-shell:not(.is-sidebars-overlay).is-reader-layout-narrow .reader-main {
  padding-left: var(--reader-desktop-gutter, 24px);
  padding-right: var(--reader-desktop-gutter, 24px);
}

.reader-shell:not(.is-sidebars-overlay).is-reader-layout-narrow.is-navigator-expanded .reader-main {
  padding-right: calc(var(--reader-navigator-width, 340px) + var(--reader-desktop-gutter, 24px));
}

.reader-shell:not(.is-sidebars-overlay).is-reader-layout-narrow .reader-paper-wrap {
  width: min(100%, var(--reader-fixed-width, 920px));
  max-width: var(--reader-fixed-width, 920px);
  margin-inline: auto;
}

/* The display Pill belongs to the paper's top-right corner. Its inset is
   calculated from the live paper rect in app.js, never from viewport center. */
.reading-layout-control,
.reader-shell.is-sidebars-overlay .reading-layout-control {
  right: var(--reading-layout-fixed-right, 48px);
  left: auto;
  margin: 0;
  transform: none;
}

/* Mermaid custom layout extends the existing horizontal paper resize with an
   independent, keyboard-accessible vertical canvas boundary. */
.reader-shell[data-current-format="mermaid"].is-reader-layout-custom #mermaid-preview-viewer.is-active {
  height: var(--mermaid-custom-height, min(520px, 68svh));
  min-height: 280px;
  max-height: none;
}

#mermaid-height-handle {
  display: none;
  align-items: center;
  justify-content: center;
  width: min(100%, 132px);
  min-width: 88px;
  height: 44px;
  min-height: 44px;
  margin: -1px auto 4px;
  padding: 0 18px;
  border: 1px solid transparent;
  border-radius: 0 0 14px 14px;
  background: transparent;
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  cursor: ns-resize;
  touch-action: none;
  user-select: none;
}

.reader-shell[data-current-format="mermaid"].is-reader-layout-custom #mermaid-preview-viewer.is-active + #mermaid-height-handle {
  display: flex;
}

#mermaid-height-handle > span {
  width: 54px;
  height: 5px;
  border-radius: 999px;
  background: var(--nr-control-border, var(--reader-rule));
  box-shadow: 0 1px 0 var(--sg-glint, rgba(255,255,255,.06));
  transition: width .16s ease, background .16s ease, box-shadow .16s ease;
}

#mermaid-height-handle:hover > span,
#mermaid-height-handle:focus-visible > span,
body.is-resizing-mermaid #mermaid-height-handle > span {
  width: 72px;
  background: var(--nr-control-active-border, var(--accent-primary));
  box-shadow: 0 0 14px rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), .32);
}

#mermaid-height-handle:focus-visible {
  border-color: var(--nr-focus-ring, var(--accent-primary));
  outline: 2px solid var(--nr-focus-ring, var(--accent-primary));
  outline-offset: 2px;
}

body.is-resizing-mermaid {
  cursor: ns-resize;
  user-select: none;
}

@media (max-width: 600px) {
  .reader-shell:not(.is-sidebars-overlay).is-reader-layout-narrow .reader-main,
  .reader-shell:not(.is-sidebars-overlay).is-reader-layout-narrow.is-navigator-expanded .reader-main {
    padding-right: 16px;
    padding-left: 16px;
  }
}

@media (forced-colors: active) {
  #mermaid-height-handle {
    border-color: ButtonText;
    background: Canvas;
    color: ButtonText;
    forced-color-adjust: auto;
  }

  #mermaid-height-handle > span { background: ButtonText; box-shadow: none; }
  #mermaid-height-handle:focus-visible { border-color: Highlight; outline-color: Highlight; }
}

@media (prefers-reduced-motion: reduce) {
  #mermaid-height-handle,
  #mermaid-height-handle > span { transition: none !important; }
}

/* ══════════════════════════════════════════════
   NextReader v5.3.1 reader-surface corrective closure
   Office owns the filename title; document controls remain an independent
   paper-owned toolbar and source keeps one scroll owner.
   ══════════════════════════════════════════════ */
.document-surface-toolbar {
  position: relative;
  z-index: 45;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  width: 100%;
  min-height: 44px;
  box-sizing: border-box;
  margin: 0 0 14px;
  padding: 0 48px;
}

.document-surface-toolbar[hidden] { display: none !important; }

.document-surface-chrome {
  --document-title-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --document-title-font-size: clamp(17px, 1.55vw, 23px);
  --document-title-font-weight: 760;
  --document-title-line-height: 1.25;
  --document-title-letter-spacing: -.018em;
  position: relative;
  z-index: 44;
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 22px;
  padding: 4px 48px 18px;
  border: 0;
  background: transparent;
}

.document-surface-chrome[hidden] { display: none !important; }

.document-surface-identity {
  min-width: 0;
}

.document-surface-summary-slot {
  display: flex;
  min-width: 0;
  align-items: center;
}

.document-surface-summary-slot[hidden] { display: none !important; }

.document-surface-title {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: var(--reader-ink-strong, #f5f5f5);
  font-family: var(--document-title-font-family);
  font-size: var(--document-title-font-size);
  font-style: normal;
  font-weight: var(--document-title-font-weight);
  line-height: var(--document-title-line-height);
  letter-spacing: var(--document-title-letter-spacing);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.document-surface-format {
  display: inline-flex;
  margin-top: 6px;
  color: var(--reader-ink-muted, #9ca3af);
  font: 700 10px/1.2 var(--font-main, system-ui, sans-serif);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.document-surface-actions {
  grid-column: 1;
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
}

.document-surface-actions:not(:has(> :not([hidden]))) { display: none; }

.document-surface-global-actions {
  grid-column: 2;
  display: flex;
  align-self: start;
  align-items: center;
  justify-content: flex-end;
  gap: 0;
}

.document-surface-context-actions {
  display: flex;
  justify-content: flex-end;
  max-width: 100%;
}

.document-surface-context-actions[hidden] { display: none !important; }
.document-surface-context-actions .nr-source-head-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 7px;
}

/* Backward-compatible anchor: the nested display control still owns the same
   measured fixed coordinates; the unified rail immediately below becomes the
   final positioned box and resets this child to static. */
@media (min-width: 601px) {
  .document-surface-toolbar .reading-layout-control,
  .reader-shell.is-sidebars-overlay .document-surface-toolbar .reading-layout-control {
    position: fixed !important;
    top: var(--reading-layout-fixed-top, 48px) !important;
    right: var(--reading-layout-fixed-right, 48px) !important;
    bottom: auto !important;
    left: auto !important;
    display: inline-flex;
    max-width: calc(100vw - 32px);
    margin: 0;
    padding: 0;
    transform: none !important;
  }
}

.reader-shell.has-active-document .document-surface-toolbar .document-surface-global-actions,
.reader-shell.is-sidebars-overlay .document-surface-toolbar .document-surface-global-actions {
  position: fixed;
  top: var(--reading-layout-fixed-top, 48px);
  right: var(--reading-layout-fixed-right, 48px);
  bottom: auto;
  left: auto;
  z-index: 48;
  display: inline-flex;
  max-width: calc(100vw - 32px);
  margin: 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  transform: none;
}

.document-surface-toolbar .document-surface-global-actions::-webkit-scrollbar { display: none; }
.document-surface-toolbar .document-surface-global-actions .reading-layout-control,
.reader-shell.is-sidebars-overlay .document-surface-toolbar .document-surface-global-actions .reading-layout-control {
  position: static !important;
  inset: auto !important;
  display: inline-flex;
  max-width: none;
  margin: 0;
  padding: 0;
  transform: none !important;
}

.document-surface-toolbar .document-view-mode-host {
  position: static;
  inset: auto;
  justify-content: flex-start;
  width: auto;
  max-width: 100%;
  margin: 0;
  transform: none;
}

/* Mermaid/PPTX modes are document-private actions, not another global Pill. */
.document-surface-toolbar .document-view-mode-pill {
  gap: 8px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.document-surface-toolbar .document-view-mode-pill button {
  box-sizing: border-box;
  height: 40px;
  min-height: 40px;
  padding: 0 14px;
  border: 1px solid var(--nr-control-border, rgba(148, 163, 184, 0.22));
  border-radius: 10px;
  background: var(--nr-copy-surface, rgba(13, 15, 17, 0.94));
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  box-shadow: none;
  font: 700 11px/1 var(--font-main);
}

.document-surface-toolbar .document-view-mode-pill button:hover:not(:disabled) {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-copy-surface-hover, rgba(27, 30, 33, 0.98));
  color: var(--nr-control-text, var(--reader-ink));
}

.document-surface-toolbar .document-view-mode-pill button.is-active,
.document-surface-toolbar .document-view-mode-pill button[aria-pressed="true"] {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-control-active-surface, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), .16));
  color: var(--nr-control-active-text, var(--accent-primary));
}

.document-surface-toolbar .document-view-mode-host:is([data-state="failed"], .is-error) .document-view-mode-pill button {
  border-color: var(--nr-control-danger, var(--sg-danger));
}

.document-surface-toolbar .document-view-mode-host:is([data-state="partial"], .is-partial) .document-view-mode-pill button {
  border-color: var(--nr-control-active-border, var(--accent-primary));
}

.reader-shell:not(.has-active-document) .reading-layout-control { display: none !important; }

.reader-shell.has-active-document .reader-main,
.reader-shell[data-current-format="pdf"] .reader-main,
.reader-shell[data-current-format="image"] .reader-main {
  padding-top: clamp(18px, 2.5vw, 38px);
}

.pdf-controls,
.image-controls,
.reader-shell.is-navigator-expanded .pdf-controls,
.reader-shell.is-navigator-expanded .image-controls,
.reader-shell.is-sidebars-overlay .pdf-controls,
.reader-shell.is-sidebars-overlay .image-controls {
  position: sticky;
  top: max(10px, env(safe-area-inset-top, 0px));
  right: auto;
  left: auto;
  z-index: 47;
  width: max-content;
  max-width: calc(100% - 24px) !important;
  margin: 0 auto 18px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  transform: none;
}

.reader-shell[data-current-format="image"] .image-viewer { padding-top: 0; }

body.has-knowledge-load-result { overflow: hidden; }

[data-knowledge-modal-suspended="true"] { pointer-events: none !important; }

.knowledge-load-result-overlay {
  z-index: 2147483000;
  box-sizing: border-box;
  place-items: center;
  overflow: hidden;
  padding: max(12px, env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 0px)) max(12px, env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
  background: rgba(3, 7, 18, .68);
}

.knowledge-load-result {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  width: min(720px, calc(100vw - 32px));
  max-width: 100%;
  max-height: min(780px, calc(100dvh - 32px));
  overflow: hidden;
}

.knowledge-load-result > .modal-header,
.knowledge-load-result > .modal-copy,
.knowledge-load-result-actions { flex: 0 0 auto; }

.knowledge-load-result > .modal-header {
  min-width: 0;
  padding: 18px 18px 12px;
}
.knowledge-load-result > .modal-header > div { min-width: 0; }
.knowledge-load-result > .modal-copy { margin: 0; padding: 0 18px 12px; overflow-wrap: anywhere; }
.knowledge-load-result-groups {
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  align-content: start;
  grid-auto-rows: max-content;
}

/* Source documents use the code viewport as the only vertical scroll owner. */
html:has(.reader-shell[data-current-format="source"]),
body:has(.reader-shell[data-current-format="source"]) {
  height: 100%;
  overflow: hidden;
}

.reader-shell[data-current-format="source"] {
  height: 100dvh;
  max-height: 100dvh;
  overflow: hidden;
}

body.is-tauri:not(.is-embedded) .reader-shell[data-current-format="source"] {
  height: calc(100dvh - var(--mac-window-bar-height, 0px));
  max-height: calc(100dvh - var(--mac-window-bar-height, 0px));
}

.reader-shell[data-current-format="source"] .reader-main {
  height: 100%;
  min-height: 0;
  padding-bottom: 14px;
  overflow: hidden;
}

.reader-shell[data-current-format="source"] .reader-paper-wrap {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
}

.reader-shell[data-current-format="source"] .document-surface-toolbar { flex: 0 0 auto; }
.reader-shell[data-current-format="source"] #source-viewer-panel {
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}
.reader-shell[data-current-format="source"] .nr-source-viewer {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
}
.reader-shell[data-current-format="source"] .nr-source-scroll {
  height: var(--nr-source-viewport-height, auto);
  min-height: 0;
  max-height: var(--nr-source-viewport-height, none);
  flex: 0 1 var(--nr-source-viewport-height, auto);
  overflow-y: auto;
  overscroll-behavior: contain;
}

body:has(.reader-shell[data-current-format="source"]) .site-footer-nr {
  display: none;
}

@media (max-width: 600px) {
  .reader-shell {
    padding-top: calc(56px + env(safe-area-inset-top, 0px));
  }
  .mobile-topbar {
    height: calc(56px + env(safe-area-inset-top, 0px));
    padding: calc(6px + env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 12px)) 6px max(12px, env(safe-area-inset-left, 12px));
  }
  .pill-btn {
    min-width: 44px;
    min-height: 44px;
    height: 44px;
  }
  .document-surface-chrome {
    --document-title-font-size: 17px;
    margin-bottom: 14px;
    padding: 2px 16px 14px;
  }
  .document-surface-toolbar {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 8px;
    margin-bottom: 12px;
    padding-inline: 16px;
  }
  .document-surface-actions { grid-column: 1; grid-row: 1; }
  .document-surface-global-actions { grid-column: 2; grid-row: 1; justify-self: end; }
  .reader-shell.has-active-document .document-surface-toolbar .document-surface-global-actions,
  .reader-shell.is-sidebars-overlay .document-surface-toolbar .document-surface-global-actions {
    max-width: calc(100vw - 24px);
  }
  .document-surface-toolbar .reading-layout-control,
  .document-surface-toolbar .document-view-mode-host { max-width: 100%; }
  .document-surface-toolbar .document-view-mode-pill { width: min(100%, 280px); }
  .document-surface-toolbar .document-view-mode-pill button {
    height: 44px;
    min-height: 44px;
    flex: 1 1 50%;
  }
  .pdf-controls,
  .image-controls,
  .reader-shell.is-navigator-expanded .pdf-controls,
  .reader-shell.is-navigator-expanded .image-controls {
    top: max(6px, env(safe-area-inset-top, 0px));
    max-width: calc(100% - 12px) !important;
    margin-bottom: 12px;
  }
  .knowledge-load-result-overlay { padding: 8px; }
  .knowledge-load-result { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); }
  .knowledge-load-result > .modal-header { padding: 14px 14px 10px; }
  .knowledge-load-result > .modal-copy { padding-inline: 14px; }
  .knowledge-load-result-groups { padding-inline: 14px; }

  /* The persistent desktop toggle stays owned by reader-shell. On mobile the
     existing top-bar pill is the single visible owner for the left drawer. */
  #sidebar-toggle { display: none !important; }
}

@media (max-width: 400px) {
  .reader-shell {
    padding-top: calc(52px + env(safe-area-inset-top, 0px));
  }
  .mobile-topbar {
    height: calc(52px + env(safe-area-inset-top, 0px));
    padding: calc(4px + env(safe-area-inset-top, 0px)) max(8px, env(safe-area-inset-right, 8px)) 4px max(8px, env(safe-area-inset-left, 8px));
  }
}

body.is-embedded :is(#sidebar-toggle, #nav-hamburger) {
  display: none !important;
}

/* Source documents keep private summary/copy actions in the independent
   paper toolbar. Source never gains an Office filename title. */
.reader-shell[data-current-format="source"] .document-surface-toolbar {
  align-items: start;
  gap: 12px clamp(18px, 2vw, 30px);
  margin-bottom: 10px;
}

.reader-shell[data-current-format="source"] .document-surface-summary-slot {
  flex: 0 1 auto;
}
.reader-shell[data-current-format="source"] .document-surface-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
  width: 100%;
}
.reader-shell[data-current-format="source"] .document-surface-context-actions {
  flex: 0 0 auto;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder {
  min-width: 0;
  margin: 0;
  flex-wrap: wrap;
  column-gap: 8px;
  row-gap: 2px;
  line-height: 1.2;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-action {
  min-height: 40px;
}
.reader-shell[data-current-format="source"] :is(
  .document-surface-summary-slot .nextreader-ai-summary-action,
  .document-surface-context-actions .nr-copy-control
) {
  position: static;
  inset: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-sizing: border-box;
  height: 40px;
  min-height: 40px;
  padding: 0 14px;
  border: 1px solid var(--nr-control-border, rgba(148, 163, 184, 0.22));
  border-radius: 10px;
  background: var(--nr-copy-surface, rgba(13, 15, 17, 0.94));
  color: var(--nr-control-text-muted, var(--reader-ink-muted));
  box-shadow: none;
  font: 700 11px/1 var(--font-main);
  white-space: nowrap;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder > span:first-child {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  line-height: 1;
}
.reader-shell[data-current-format="source"] .document-surface-context-actions .nr-copy-control > :is(i, span) {
  display: inline-flex;
  align-items: center;
  line-height: 1;
}
.reader-shell[data-current-format="source"] :is(
  .document-surface-summary-slot .nextreader-ai-summary-action,
  .document-surface-context-actions .nr-copy-control
):hover {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  background: var(--nr-copy-surface-hover, rgba(27, 30, 33, 0.98));
  color: var(--nr-control-text, var(--reader-ink));
}
.reader-shell[data-current-format="source"] :is(
  .document-surface-summary-slot .nextreader-ai-summary-action,
  .document-surface-context-actions .nr-copy-control
):focus-visible {
  outline: 2px solid var(--nr-control-focus-ring, var(--accent-primary));
  outline-offset: 2px;
}
.reader-shell[data-current-format="source"] .document-surface-context-actions .nr-copy-control.is-copied {
  border-color: var(--nr-control-success, var(--sg-success));
  color: var(--nr-control-success, var(--sg-success));
}
.reader-shell[data-current-format="source"] .document-surface-context-actions .nr-copy-control.is-copy-failed {
  border-color: var(--nr-control-danger, var(--sg-danger));
  color: var(--nr-control-danger, var(--sg-danger));
}
.reader-shell[data-current-format="source"] .document-surface-context-actions .nr-copy-control.is-copying {
  border-color: var(--nr-control-active-border, var(--accent-primary));
  color: var(--nr-control-active-text, var(--accent-primary));
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-status {
  flex: 1 0 100%;
  max-width: 260px;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nr-markdown-metadata-actions:empty { display: none; }
.nr-markdown-metadata-actions,
.nextreader-ai-summary-placeholder {
  align-items: center;
}
.nr-markdown-metadata-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding-inline: 14px;
  white-space: nowrap;
}
.nr-markdown-metadata-toggle[aria-expanded="true"] {
  border-color: var(--accent-primary);
  color: var(--accent-primary);
}
.nr-markdown-metadata {
  margin: 14px 0 28px;
  padding: 16px 18px;
  border: 1px solid var(--reader-rule, rgba(255,255,255,.1));
  border-radius: 12px;
  background: var(--reader-surface-strong, rgba(255,255,255,.035));
}
.nr-markdown-metadata[hidden] { display: none !important; }
.nr-markdown-metadata pre {
  max-height: min(46vh, 420px);
  margin: 0;
  overflow: auto;
  color: var(--reader-ink-muted);
  font: 500 12px/1.65 var(--font-mono);
  white-space: pre-wrap;
  word-break: break-word;
}

.local-import-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 16000;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 20px;
  padding: 32px;
  color: var(--accent-primary);
  background:
    radial-gradient(circle at 50% 44%, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.09), transparent 24%),
    rgba(5, 6, 6, 0.96);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}
.local-import-loading-overlay[hidden] { display: none; }
.local-import-loading-visual {
  width: 112px;
  height: 112px;
}
.local-import-loading-overlay p {
  max-width: min(520px, calc(100vw - 48px));
  margin: 0;
  color: var(--reader-ink-strong);
  font: 700 14px/1.6 var(--font-main, system-ui, sans-serif);
  text-align: center;
}
[data-theme="light"] .local-import-loading-overlay {
  background:
    radial-gradient(circle at 50% 44%, rgba(var(--accent-pr), var(--accent-pg), var(--accent-pb), 0.12), transparent 24%),
    rgba(246, 248, 249, 0.97);
}
body.is-local-import-busy :is(#welcome-drop, #drop-zone) {
  border-color: var(--accent-primary);
}
body.is-local-import-busy :is(#welcome-pick-files, #welcome-pick-folder, #pick-files, #pick-folder) {
  cursor: progress;
  opacity: .58;
}

@media (max-width: 900px) {
  body:has(.reader-shell[data-current-format="source"]) .reading-progress-hud.is-vertical-progress {
    top: max(54px, calc(env(safe-area-inset-top, 0px) + var(--reader-mobile-progress-top, 96px)));
  }
  .reader-shell[data-current-format="source"] .document-surface-toolbar {
    gap: 8px 12px;
    padding-inline: 48px;
  }
  .reader-shell[data-current-format="source"] .document-surface-actions {
    width: 100%;
  }
}

@media (max-width: 600px) {
  .reader-shell[data-current-format="source"] .document-surface-toolbar {
    gap: 8px 10px;
    margin-bottom: 10px;
    padding-inline: 16px;
  }
  .reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder {
    justify-content: flex-start;
  }
  .reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-action {
    min-width: 44px;
    min-height: 44px;
    height: 44px;
  }
  .reader-shell[data-current-format="source"] .document-surface-context-actions .nr-copy-control {
    min-height: 44px;
    height: 44px;
  }
  .reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder > span {
    white-space: nowrap;
  }
  .reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-status {
    max-width: min(220px, 60vw);
    text-align: left;
  }
  .reader-shell[data-current-format="source"] .document-surface-actions {
    gap: 8px;
  }
  .reader-shell[data-current-format="source"] .document-surface-context-actions .nr-source-head-actions {
    flex-wrap: nowrap;
    gap: 5px;
  }
  body:has(.reader-shell[data-current-format="source"]) .reading-progress-hud.is-vertical-progress {
    top: max(54px, calc(env(safe-area-inset-top, 0px) + var(--reader-mobile-progress-top, 56px)));
    bottom: auto;
    height: var(--reader-mobile-progress-height, 360px);
    min-height: 250px;
    max-height: none;
  }
}

/* ══════════════════════════════════════════════
   NextReader v5.3.1 visible-paper ownership correction
   The width owner is also the painted paper. The global display Pill and
   document-private actions therefore live inside the border users can see,
   while Markdown contributes content rather than a second paper shell.
   ══════════════════════════════════════════════ */
.reader-shell.has-active-document .reader-paper-wrap {
  box-sizing: border-box;
  border: 1px solid rgba(148, 163, 184, 0.16);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(24, 27, 28, 0.96), rgba(8, 9, 9, 0.95)),
    var(--reader-surface);
  box-shadow:
    0 30px 100px rgba(0, 0, 0, 0.46),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

[data-theme="light"] .reader-shell.has-active-document .reader-paper-wrap {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.96)),
    rgba(255, 255, 255, 0.94);
  box-shadow:
    0 30px 100px rgba(0, 0, 0, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.5);
}

.reader-shell.has-active-document .document-surface-toolbar {
  /* Keep the 30px Pill unchanged while increasing its visible paper-top
     breathing room to 36px; the inline inset remains 48px. */
  padding: 34px 47px 0;
}

.reader-shell.has-active-document .markdown-panel {
  padding-top: clamp(34px, 4vw, 54px);
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.reader-shell.has-active-document :is(
  .pdf-viewer:not(:fullscreen):not(.is-reader-fullscreen-fallback),
  .image-viewer:not(:fullscreen):not(.is-reader-fullscreen-fallback)
) {
  border-color: transparent;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

/* The former floating image controls reserved 64/58px above the image. The
   paper-owned toolbar now provides that space in normal flow. */
.reader-shell.has-active-document[data-current-format="image"]
  .image-viewer:not(:fullscreen):not(.is-reader-fullscreen-fallback) {
  padding-top: 0 !important;
}

/* Source intentionally clips its only scrolling viewport. Keep custom-width
   handles inside that clip boundary so their full hit area remains usable. */
.reader-shell[data-current-format="source"].is-reader-layout-custom .reader-width-handle-left { left: 0; }
.reader-shell[data-current-format="source"].is-reader-layout-custom .reader-width-handle-right { right: 0; }

@media (max-width: 600px) {
  .reader-shell.has-active-document .reader-paper-wrap {
    border-radius: 18px;
  }
  .reader-shell.has-active-document .document-surface-toolbar {
    padding: 20px 15px 0;
  }
  .reader-shell.has-active-document .markdown-panel {
    padding-top: 28px;
  }
}

@media (forced-colors: active) {
  .reader-shell.has-active-document .reader-paper-wrap {
    border-color: CanvasText;
    background: Canvas;
    box-shadow: none;
  }
  .document-surface-chrome { border-color: CanvasText; background: Canvas; }
  .document-surface-title, .document-surface-format { color: CanvasText; }
  .knowledge-load-result-overlay { background: Canvas; }
}

/* ══════════════════════════════════════════════
   NextReader post-r2 corrective closure
   PDF and Source own their inner scrolling/controls; custom paper width owns
   the remaining side space without changing the global display Pill.
   ══════════════════════════════════════════════ */
.folder-batch-hint {
  margin: 8px 0 0;
  color: var(--text-muted);
  font: 500 11px/1.5 var(--font-main, system-ui, sans-serif);
}

/* The fixed layout keeps the tablet safety cap. In custom layout the file
   navigator follows the user-selected paper width and exposes its resize
   handle down to the mobile-drawer breakpoint. */
@media (min-width: 601px) and (max-width: 1024px) {
  .reader-shell.is-reader-layout-custom .file-navigator,
  .reader-shell.is-reader-layout-custom .file-navigator.is-collapsed {
    width: var(--reader-navigator-width, 340px);
    min-width: var(--reader-navigator-width, 340px);
    max-width: min(680px, calc(100vw - 320px));
  }

  .reader-shell.is-reader-layout-custom .navigator-resize-handle {
    display: block;
  }
}

/* PDF uses the canvas viewport as its only vertical scroll owner. */
html:has(.reader-shell[data-current-format="pdf"]),
body:has(.reader-shell[data-current-format="pdf"]) {
  height: 100%;
  overflow: hidden;
}

.reader-shell[data-current-format="pdf"] {
  height: 100dvh;
  max-height: 100dvh;
  overflow: hidden;
}

body.is-tauri:not(.is-embedded) .reader-shell[data-current-format="pdf"] {
  height: calc(100dvh - var(--mac-window-bar-height, 0px));
  max-height: calc(100dvh - var(--mac-window-bar-height, 0px));
}

.reader-shell[data-current-format="pdf"] .reader-main {
  display: flex;
  height: 100%;
  min-height: 0;
  box-sizing: border-box;
  flex-direction: column;
  padding-bottom: 14px;
  overflow: hidden;
}

.reader-shell[data-current-format="pdf"] .reader-paper-wrap {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
}

.reader-shell[data-current-format="pdf"] .document-surface-toolbar { flex: 0 0 auto; }
.reader-shell[data-current-format="pdf"] .pdf-viewer {
  display: flex;
  min-height: 0;
  flex: 1 1 auto;
  flex-direction: column;
  overflow: hidden;
}
.reader-shell[data-current-format="pdf"] .pdf-controls { flex: 0 0 auto; }
.reader-shell[data-current-format="pdf"] #pdf-canvas-wrap.pdf-canvas-wrap {
  min-height: 0;
  max-height: none;
  flex: 1 1 auto;
  overflow-x: auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

body:has(.reader-shell[data-current-format="pdf"]) .site-footer-nr { display: none; }

/* Source private actions stay compact and may wrap only when space is truly
   exhausted. The display-mode Pill remains the unchanged global control. */
.reader-shell[data-current-format="source"] .document-surface-actions {
  width: max-content;
  max-width: 100%;
  flex: 0 1 auto;
  flex-wrap: nowrap;
  justify-self: start;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot,
.reader-shell[data-current-format="source"] .document-surface-context-actions {
  width: auto;
  max-width: 100%;
}
.reader-shell[data-current-format="source"] .document-surface-context-actions .nr-source-head-actions {
  width: auto;
  flex-wrap: nowrap;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder {
  flex-wrap: nowrap;
}
.reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-status {
  max-width: 180px;
  flex: 0 1 auto;
}

@media (max-width: 900px) {
  .reader-shell[data-current-format="source"] .document-surface-actions {
    width: max-content;
    max-width: 100%;
    flex-wrap: wrap;
  }
}

@media (max-width: 600px) {
  .folder-batch-hint { font-size: 10px; }
  .reader-shell[data-current-format="source"] .document-surface-actions,
  .reader-shell[data-current-format="source"] .document-surface-summary-slot .nextreader-ai-summary-placeholder {
    width: max-content;
    max-width: 100%;
    flex-wrap: wrap;
  }
}
