/* ── 资源包对话框（resource-pack.js） ──────────────────────────── */
.bk-rp-list-body { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 8px 0; max-height: 50vh; }
.bk-rp-empty { padding: 32px 16px; text-align: center; color: var(--text-muted, #9A958C); font-size: var(--text-base); }
.bk-rp-error { padding: 16px; text-align: center; color: var(--danger-text, #ef5350); font-size: var(--text-sm); }
.bk-rp-item { display: flex; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid var(--border, #E5E2DD); }
.bk-rp-item:active { background: var(--nav-hover, #ECEAE5); }
.bk-rp-item-info { flex: 1; min-width: 0; }
.bk-rp-item-label { font-size: var(--text-base); color: var(--text, #1A1918); font-weight: 500; line-height: 1.4; }
.bk-rp-item-meta { font-size: var(--text-xs); color: var(--text-muted, #9A958C); margin-top: 2px; }
.bk-rp-btn { padding: 6px 14px; border-radius: 14px; border: 1px solid var(--brand, #3D8A5A); background: transparent; color: var(--brand, #3D8A5A); font-size: var(--text-xs); font-weight: 600; cursor: pointer; flex-shrink: 0; -webkit-tap-highlight-color: transparent; transition: background .15s; }
.bk-rp-btn:active { background: var(--interactive-soft-bg, rgba(var(--brand-rgb, 61,138,90),.08)); }
.bk-rp-btn.bk-rp-downloaded { color: var(--success-text, #3D8A5A); border-color: var(--success-text, #3D8A5A); }

/* ── 底部控制栏响应式（移植自 cx） ────────────────────────────────── */
@media (max-width: 768px) {
  .bottom-control-bar { gap: 6px; padding: 4px 8px max(4px, env(safe-area-inset-bottom, 0px)); }
  .control-btn { min-width: 38px; min-height: 38px; padding: 5px; font-size: var(--text-base); }
  .play-pause-btn { font-size: var(--text-lg); }
  .speech-time { font-size: var(--text-xs); }
  .control-select { min-width: 48px; min-height: 34px; padding: 4px 6px; font-size: 0.6875rem; }
}
@media (max-width: 480px) {
  .bottom-control-bar { gap: 5px; padding: 4px 6px max(4px, env(safe-area-inset-bottom, 0px)); }
  .control-btn { min-width: 36px; min-height: 36px; padding: 4px; font-size: var(--text-sm); }
  .play-pause-btn { font-size: var(--text-md); }
  .control-select { min-width: 44px; min-height: 32px; padding: 3px 5px; font-size: 0.6875rem; }
  .speech-time { font-size: 0.6875rem; padding-left: 0; margin-top: 6px; }
  /* 3 列小屏：封面字号与 L1/L2 对齐 13px（原 11px 偏小不可读）；
     L3/书架海报标题移动端收敛 3 行——窄卡更清爽、杜绝 320px 小屏溢出，完整书名由信息条兜底；
     L1/L2 保留 clamp 4（信息条无书名，需在封面上显示完整系列/分类名） */
  .category-card .bk-cover,
  .series-catalog-card .bk-cover { font-size: 13px; }
  div.bk-city-book-grid .zl-book-card.is-city-book .bk-cover,
  .bk-shelf-row-cover .bk-cover { font-size: 13px; }
  div.bk-city-book-grid .zl-book-card.is-city-book .bk-cover-title,
  .bk-shelf-row .bk-cover-title { -webkit-line-clamp: 3; }
}

/* ── 全局交互反馈增强 ──────────────────────────────────────────── */
button:active { transition-duration: 0.05s; }

/* 页面淡入动画优化 */
@keyframes bk-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes bk-slide-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.bk-view-enter-active { animation: bk-fade-in 0.25s var(--ease-out, ease-out); }

/* ── 实用工具类 ──────────────────────────────────────────────── */
.bk-capsule-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 20px;
  border-radius: var(--radius-full, 9999px);
  border: 1px solid var(--border, #E5E2DD);
  background: var(--surface-alt, #EDEAE4);
  color: var(--text, #1A1918);
  font-size: var(--text-base, 0.875rem);
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s var(--ease-out, ease), transform 0.2s var(--ease-out, ease), box-shadow 0.2s var(--ease-out, ease);
  -webkit-tap-highlight-color: transparent;
  min-height: 36px;
}
.bk-capsule-btn:hover { background: var(--interactive-soft-bg, rgba(var(--brand-rgb, 61,138,90),.08)); box-shadow: 0 2px 8px rgba(var(--brand-rgb, 61,138,90), 0.1); }
.bk-capsule-btn:active { transform: scale(0.96); background: var(--nav-hover, #ECEAE5); }
.bk-capsule-btn.primary { background: var(--brand, #3D8A5A); color: #fff; border-color: var(--brand, #3D8A5A); }
.bk-capsule-btn.primary:active { opacity: 0.85; }

/* ── 响应式适配 ──────────────────────────────────────────────── */
@media (max-width: 374px) {
  .series-tabs { gap: 6px; padding: 10px 12px; }
  .series-tab { padding: 5px 12px; font-size: var(--text-sm); }
  .book-grid { padding: 0 12px 12px; }
  .zl-book-card .book-link { padding: 10px 12px; }
  .header { padding: 20px 12px 10px; }
  .header h1 { font-size: var(--text-xl); }
  .series-list-title { font-size: var(--text-lg) !important; }
  .series-back-btn { width: 32px; height: 32px; font-size: 1.125em; }
  .series-catalog-grid { gap: 10px; padding: 4px 12px 12px; }
  .bk-city-book-grid { gap: 10px; padding: 4px 12px 12px; }
  .category-card .bk-cover,
  .series-catalog-card .bk-cover { font-size: 13px; }
  div.bk-city-book-grid .zl-book-card.is-city-book .bk-cover,
  .bk-shelf-row-cover .bk-cover { font-size: 13px; }
  .bk-reading-chapter-title { font-size: var(--text-lg); }
  .nav-link { padding: 8px 12px; font-size: var(--text-sm); min-width: 40px; min-height: 40px; }
  .nav-label { max-width: 72px; }
}
@media (max-width: 768px) {
  .book-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .category-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .series-catalog-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .bk-city-book-grid { grid-template-columns: repeat(3, 1fr) !important; }
  /* Full-screen search on mobile */
  .bk-search-overlay { padding: 0; align-items: stretch; }
  .bk-search-modal { max-width: 100%; max-height: 100vh; max-height: 100dvh; border-radius: 0; height: 100%; }
  .bk-search-header { padding: calc(12px + env(safe-area-inset-top, 0px)) 16px 12px; }
  .bk-search-input { padding: 14px 16px; font-size: var(--text-lg); border-radius: 14px; }
}

/* ── TTS 朗读高亮（speech.js） ───────────────────────────────── */
mark.bk-tts-sent { background-color: transparent; color: inherit; font: inherit; border-radius: 2px; transition: background-color 0.25s; }
.bk-tts-expand-tmp { display: none; }
mark.bk-tts-sent.bk-tts-active { background-color: rgba(var(--brand-rgb, 61,138,90),0.3); }
.bk-tts-active { background-color: rgba(var(--brand-rgb, 61,138,90),0.22); border-radius: 2px; transition: background-color 0.25s; }
.scripture-block-static.bk-tts-active { background: rgba(var(--brand-rgb, 61,138,90),0.3); }

/* ── 主题覆盖 ──────────────────────────────────────────────── */
[data-theme="warm"] .hl-modal-save { background: var(--interactive-soft-bg, rgba(180,145,85,.12)); color: var(--brand, #A67C52); border-color: var(--brand, #A67C52); }
[data-theme="warm"] .hl-underline-btn.active { background: var(--interactive-soft-bg, rgba(180,145,85,.12)); color: var(--brand, #A67C52); border-color: var(--brand, #A67C52); border-bottom-color: #e53935; }
[data-theme="warm"] .scripture-block-static { background: #F7F2EA; }
/* 暖色模式：进度条滑块使用品牌纯色（不用渐变） */
[data-theme="warm"] .progress-bar::-webkit-slider-thumb { background: var(--brand, #A67C52); }
[data-theme="warm"] .progress-bar::-moz-range-thumb { background: var(--brand, #A67C52); }
/* 暖色模式：action-btn.primary 浅色底+品牌色文字（品牌色不做大面积填充） */
[data-theme="warm"] .action-btn.primary { background: var(--interactive-soft-bg, rgba(180,145,85,.12)); color: var(--brand, #A67C52); border-color: var(--brand, #A67C52); }

/* ── 移动端触摸优化 ──────────────────────────────────────────── */
@media (max-width: 768px) {
  .hl-menu-btn { min-height: 44px; font-size: var(--text-base); }
  .hl-ann-tool { min-height: 48px; }
  .hl-ann-note-expand { min-height: 36px; }
  .hl-color-dot { width: 34px; height: 34px; }
}

/* ── 「我的」设置整页（平板/宽屏，设计稿 31:2） ────────────────── */
.bk-settings-page { max-width: 834px; margin: 0 auto; padding: calc(env(safe-area-inset-top, 0px) + 16px) 20px 80px; }
.bk-settings-header h1 { font-family: var(--heading-font-family); font-size: var(--text-3xl); font-weight: 800; color: var(--brand); margin-bottom: 16px; letter-spacing: 0.04em; }
.bk-settings-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 768px) {
  .bk-settings-grid { grid-template-columns: 1fr 1fr; gap: 16px 24px; }
}
.bk-settings-left, .bk-settings-right { display: flex; flex-direction: column; gap: 16px; }

/* 个人卡 */
.bk-profile-card { display: flex; align-items: center; gap: 14px; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 18px 20px; }
.bk-profile-avatar { width: 52px; height: 52px; border-radius: 50%; background: var(--interactive-soft-bg); color: var(--brand); display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 600; flex-shrink: 0; }
.bk-profile-name { font-size: var(--text-lg); font-weight: 600; color: var(--text); }
.bk-profile-sub { font-size: var(--text-sm); color: var(--text-muted); margin-top: 2px; }

/* 统计卡（sage tint 底） */
.bk-stats-card { display: flex; gap: 8px; background: rgba(var(--brand-rgb, 61,138,90),.08); border: 1px solid rgba(var(--brand-rgb, 61,138,90),.16); border-radius: var(--radius-lg); padding: 16px 20px; }
[data-theme="dark"] .bk-stats-card { background: rgba(94,174,126,.10); border-color: rgba(94,174,126,.20); }
.bk-stat { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.bk-stat-num { font-family: var(--num-font-family); font-variant-numeric: tabular-nums; font-size: var(--text-2xl); font-weight: 700; color: var(--brand); }
.bk-stat-label { font-size: var(--text-xs); color: var(--text-muted); }

/* 设置分区 */
.bk-settings-section { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; }
.bk-settings-section-title { font-size: var(--text-sm); font-weight: 600; color: var(--text-muted); padding: 14px 16px 8px; letter-spacing: 0.02em; }
.bk-settings-row { display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 16px; background: none; border: none; border-top: 1px solid var(--border); color: var(--text); font-size: var(--text-base); text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background 0.15s; }
.bk-settings-row:first-of-type { border-top: none; }
.bk-settings-row:active { background: var(--nav-hover); }
.bk-row-icon { width: 32px; height: 32px; border-radius: 8px; background: var(--surface-alt); display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; }
.bk-row-label { flex: 1; min-width: 0; }
.bk-row-arrow { color: var(--text-muted); font-size: 18px; flex-shrink: 0; }

/* 设置入口（打开阅读界面 #themePanel：阅读模式 + 字体大小） */
.bk-settings-entry { display: flex; align-items: center; gap: 12px; width: 100%; padding: 14px 16px; background: rgba(var(--brand-rgb, 61,138,90),.10); border: 1px solid rgba(var(--brand-rgb, 61,138,90),.20); border-radius: var(--radius-lg); color: var(--text); text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background 0.15s, border-color 0.15s; }
[data-theme="dark"] .bk-settings-entry { background: rgba(94,174,126,.12); border-color: rgba(94,174,126,.24); }
.bk-settings-entry:active { background: rgba(var(--brand-rgb, 61,138,90),.16); }
.bk-settings-entry-icon { width: 32px; height: 32px; border-radius: 8px; background: var(--card-bg); color: var(--brand); display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; }
.bk-settings-entry-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.bk-settings-entry-label { font-size: var(--text-base); font-weight: 600; color: var(--text); }
.bk-settings-entry-sub { font-size: var(--text-xs); color: var(--text-muted); }
.bk-settings-entry-arrow { color: var(--brand); font-size: 18px; flex-shrink: 0; }

/* ── 平板书架首页（设计稿 11:1） ────────────────────────────── */
/* 继续阅读卡（旧定义保留兼容，实际样式见下方增强主页区域） */
.bk-continue-info { flex: 1; min-width: 0; }
.bk-continue-label { font-size: var(--text-xs); color: var(--brand); font-weight: 600; letter-spacing: 0.04em; margin-bottom: 4px; }
.bk-continue-btn { flex-shrink: 0; padding: 8px 20px; background: var(--brand); color: #fff; border-radius: var(--radius-md); text-decoration: none; font-size: var(--text-sm); font-weight: 600; }
.bk-continue-btn:active { opacity: 0.85; }
/* 平板宽头放大 */
@media (min-width: 768px) {
  .header { padding: 24px 32px 16px; }
  .header h1 { font-size: 28px; }
  .header .subtitle { font-size: var(--text-lg); }
}

/* ═══════════════════════════════════════════════════
   增强版主页（Hero + 续读 + 最近阅读 + 层次化系列网格）
   ═══════════════════════════════════════════════════ */
.bk-home-enhanced { min-height: 100vh; background: var(--surface); }

/* Hero 头部 */
.bk-home-hero { padding: 20px 20px 8px; }
.bk-home-hero-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.bk-home-hero-icon { font-size: 28px; line-height: 1; filter: grayscale(0.15); }
.bk-home-hero-title { font-family: var(--heading-font-family); font-size: var(--text-3xl); font-weight: 800; color: var(--brand); letter-spacing: 0.06em; margin: 0; line-height: 1.2; }
.bk-home-hero-sub { font-size: var(--text-md); color: var(--text-muted); margin: 0 0 10px; letter-spacing: 0.01em; }
.bk-home-hero-actions { display: flex; gap: 10px; margin-top: 6px; }

/* 续读卡 — 两列横向条状卡片（封面放大版） */
#bkContinueListAnchor {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  padding: 4px 16px 16px;
}
.bk-continue-card {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  padding: 10px 12px;
  text-decoration: none;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
  transition: transform .18s var(--ease-out, ease), background-color .15s;
  overflow: hidden;
}
.bk-continue-card:active { transform: scale(.97); background: var(--nav-hover); }
.bk-continue-cover {
  width: 48px;
  height: 64px;
  border-radius: 6px;
  flex-shrink: 0;
  overflow: hidden;
}
.bk-continue-cover .bk-cover {
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  border-radius: 6px;
}
.bk-continue-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.bk-continue-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.3;
}
.bk-continue-chapter {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bk-continue-card .reading-progress {
  width: 100%;
  height: 3px;
  margin: 3px 0 0;
  background: var(--progress-bg, rgba(var(--brand-rgb),.12));
  border-radius: 2px;
  overflow: hidden;
}
.bk-continue-card .reading-progress-fill {
  height: 100%;
  background: var(--brand, #3D8A5A);
  border-radius: 2px;
}
/* 无历史时的引导卡（跨两列居中） */
.bk-continue-welcome { grid-column: 1 / -1; cursor: pointer; }
.bk-continue-welcome .bk-continue-title { font-weight: 500; color: var(--text-muted); }
.bk-continue-welcome .bk-continue-info { padding: 8px; text-align: center; align-items: center; }

/* 最近阅读水平滚动区 */
.bk-recent-section { margin: 2px 0 8px; }
.bk-recent-scroll {
  display: flex; gap: 10px; overflow-x: auto; padding: 4px 20px 14px;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.bk-recent-scroll::-webkit-scrollbar { display: none; }
.bk-recent-item {
  display: flex; align-items: center; gap: 10px; flex-shrink: 0;
  background: var(--card-bg); border: 1px solid var(--border);
  border-radius: var(--radius-md,12px); padding: 10px 14px;
  text-decoration: none; min-width: 180px; max-width: 240px;
  scroll-snap-align: start; transition: transform .18s, box-shadow .18s;
  position: relative; overflow: hidden;
}
.bk-recent-item::before {
  content: ''; position: absolute; top: 0; left: 0; width: 3px; height: 100%;
  background: var(--series-color, var(--brand)); border-radius: 3px 0 0 3px;
}
.bk-recent-item:active { transform: scale(0.97); }
.bk-recent-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
  background: var(--series-color, var(--brand)); margin-top: 1px;
}
.bk-recent-info { min-width: 0; }
.bk-recent-title { font-size: var(--text-sm); font-weight: 600; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bk-recent-meta { font-size: var(--text-xs); color: var(--text-muted); margin-top: 2px; }

/* 版式封面（无真实封面图时的优雅降级，符合 Soft Nordic 调性） */
.bk-cover {
  position: relative; flex-shrink: 0;
  width: 64px; aspect-ratio: 2 / 3;
  border-radius: var(--radius-md, 12px);
  background: var(--cover-color, #3D8A5A);
  overflow: hidden; font-size: 12px;
  box-shadow: inset 3px 0 6px rgba(0,0,0,.12), 0 1px 3px rgba(60,40,10,.14);
}
/* 微纹理：让纯色底有纸张颗粒感，不再扁平 */
.bk-cover::before {
  content: ''; position: absolute; inset: 0;
  background: repeating-conic-gradient(rgba(255,255,255,.015) 0% 25%, transparent 0% 50%) 0 0 / 4px 4px;
  pointer-events: none;
}
.bk-cover::after { display: none; }
.bk-cover-inner {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 10% 12%; box-sizing: border-box;
}
.bk-cover-series {
  font-size: .72em; font-weight: 500; line-height: 1.3;
  color: rgba(251, 248, 242, .72); margin-bottom: 8%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* sm/md 封面太小，系列名不可读，直接隐藏 */
.bk-cover--sm .bk-cover-series,
.bk-cover--md .bk-cover-series { display: none; }
.bk-cover-title {
  font-family: var(--reading-font-family, "Songti SC", Georgia, serif);
  color: #FBF8F2; font-weight: 500; line-height: 1.32; font-size: 1em;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.bk-cover--sm { width: 50px; font-size: 11px; border-radius: 10px; box-shadow: inset 2px 0 4px rgba(0,0,0,.08), 0 1px 2px rgba(60,40,10,.10); }
.bk-cover--md { width: 60px; font-size: 12px; box-shadow: inset 2px 0 5px rgba(0,0,0,.10), 0 1px 2px rgba(60,40,10,.10); }
.bk-cover--lg { width: 92px; font-size: 13px; border-radius: 14px; }

/* 真实封面图模式：EPUB 等有真实封面时，用 <img> 展示原图 */
.bk-cover--img { background: none; }
.bk-cover--img::before,
.bk-cover--img::after { display: none; }
.bk-cover-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; border-radius: inherit;
}

/* 区块标题 */
.bk-section-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px 6px; }
.bk-section-title { font-size: var(--text-sm); font-weight: 700; color: var(--text); letter-spacing: 0.03em; text-transform: uppercase;
  opacity: .65; }

/* ── 增强主页头部 / 大区标题（新结构） ── */
.bk-home-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 20px 8px; }
.bk-home-title { font-family: var(--heading-font-family); font-weight: 700; font-size: 28px; color: var(--text); letter-spacing: 0.06em; margin: 0; line-height: 1.2; }
.bk-home-search-btn { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: 12px; color: var(--text); font-size: 20px; line-height: 1; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background-color .15s, color .15s; }
.bk-home-search-btn:hover, .bk-home-search-btn:active { background: var(--nav-hover); }
.bk-home-search-btn:active { color: var(--brand); }
.bk-section-title-lg { font-family: var(--heading-font-family); font-weight: 600; font-size: 18px; color: var(--text); letter-spacing: 0.02em; }
/* 主页按系列分组书架 */
.bk-series-block { margin-bottom: 8px; }
.bk-series-block .bk-section-header { padding-top: 16px; padding-bottom: 4px; }
.bk-series-count { font-size: var(--text-xs); font-weight: 500; color: var(--text-muted); background: var(--tag-bg, rgba(var(--brand-rgb), .08)); padding: 3px 10px; border-radius: 9999px; }
.bk-series-block--orphan .bk-section-title-lg { color: var(--text-muted); }
.bk-view-all { color: var(--brand); font-size: 13px; background: transparent; border: none; cursor: pointer; -webkit-tap-highlight-color: transparent; padding: 4px 0; }
.bk-view-all:active { opacity: 0.7; }
/* 响应式：平板放大、窄屏收紧（沿用 .bk-home-hero 断点思路） */
@media (min-width: 768px) {
  .bk-home-header { padding: 28px 32px 12px; }
  .bk-home-title { font-size: 32px; }
  .bk-section-title-lg { font-size: 20px; }
}
@media (max-width: 380px) {
  .bk-home-header { padding: 16px 14px 6px; }
  .bk-home-title { font-size: 24px; }
}

/* 平板增强主页适配 */
@media (min-width: 768px) {
  .bk-home-hero { padding: 28px 32px 12px; }
  .bk-home-hero-icon { font-size: 34px; }
  .bk-home-hero-title { font-size: 36px; }
  .bk-home-hero-sub { font-size: var(--text-lg); }
  #bkContinueListAnchor { gap: 12px; padding: 6px 32px 22px; }
  .bk-continue-title { font-size: 13px; }
  .bk-continue-cover { width: 42px; height: 56px; }
  .bk-continue-btn { padding: 11px 28px; font-size: var(--text-md); }
  .bk-recent-scroll { padding: 6px 32px 20px; gap: 14px; }
  .bk-recent-item { min-width: 220px; max-width: 280px; padding: 12px 18px; }
  .bk-section-header { padding: 18px 32px 8px; }
  .bk-section-title { font-size: var(--text-md); opacity: .55; }
}

/* 小屏手机收紧 */
@media (max-width: 380px) {
  .bk-home-hero { padding: 16px 14px 6px; }
  #bkContinueListAnchor { gap: 6px; padding: 2px 14px 12px; }
  .bk-continue-cover { width: 32px; height: 42px; }
  .bk-continue-card { padding: 8px 10px; gap: 8px; }
  .bk-continue-title { font-size: 11px; }
  .bk-recent-scroll { padding: 4px 14px 10px; }
  .bk-section-header { padding: 10px 14px 4px; }
}

/* ── 平板搜索页（设计稿 29:140） ────────────────────────────── */
@media (min-width: 768px) {
  .bk-search-overlay.bk-search-tablet { padding: 40px 20px; }
  .bk-search-overlay.bk-search-tablet .bk-search-modal {
    max-width: 834px; margin: 0 auto; border-radius: var(--radius-lg);
    max-height: calc(100vh - 80px); overflow-y: auto;
  }
  .bk-search-tablet .bk-search-results {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; align-items: start;
  }
  /* 分组容器透传，使结果项直接参与 3 列网格 */
  .bk-search-tablet .bk-search-series-group,
  .bk-search-tablet .bk-search-group { display: contents; }
  .bk-search-tablet .bk-search-series-title,
  .bk-search-tablet .bk-search-group-title { grid-column: 1 / -1; }
  /* 结果卡（3×3 网格，设计稿 29:140） */
  .bk-search-tablet .bk-search-item {
    margin: 0; background: var(--card-bg); border: 1px solid var(--border);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
    transition: transform .15s, box-shadow .15s, border-color .15s;
    display: flex; flex-direction: column; gap: 6px; min-height: 96px; height: 100%;
  }
  .bk-search-tablet .bk-search-item:hover {
    transform: translateY(-2px); box-shadow: var(--shadow-card-hover); border-color: var(--brand);
  }
  .bk-search-tablet .bk-search-item:active { transform: translateY(0) scale(.99); }
  .bk-search-tablet .bk-search-item-text { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .bk-search-tablet .bk-search-load-more,
  .bk-search-tablet .bk-search-empty,
  .bk-search-tablet .bk-search-hint { grid-column: 1 / -1; }
  .bk-search-tablet .bk-search-scope-toggle { display: flex; gap: 8px; }
  .bk-search-tablet .bk-scope-label {
    padding: 6px 14px; border: 1px solid var(--border); border-radius: var(--radius-full);
    font-size: var(--text-sm); cursor: pointer; transition: background 0.15s;
  }
  .bk-search-tablet .bk-scope-label:has(input:checked) {
    background: var(--interactive-soft-bg); border-color: var(--brand); color: var(--brand);
  }
  .bk-search-tablet .bk-scope-radio { display: none; }
}

/* ── 设置整页 & 书签整页 ──────────────────────────────────── */
.bk-back-btn { background: none; border: none; color: var(--text); font-size: var(--text-base); cursor: pointer; padding: 4px 0; margin-bottom: 4px; display: inline-flex; align-items: center; gap: 4px; }
.bk-back-btn:active { color: var(--brand); }
.bk-settings-grid-full { margin-top: 8px; }

/* 书签整页 */
.bk-bookmark-count { font-size: var(--text-sm); color: var(--text-muted); margin-left: 12px; }
.bk-bookmark-grid { display: flex; flex-direction: column; gap: 10px; padding: 0 20px 80px; }
@media (min-width: 768px) { .bk-bookmark-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; } }

/* ── 笔记汇总 ──────────────────────────────────────────────────── */
.bk-ns-body { max-height: calc(80vh - 100px); overflow-y: auto; padding: 0; }
.bk-ns-search-bar { position: relative; padding: 10px 12px 4px; background: var(--page-bg, #F5F4F1); z-index: 1; }
.bk-ns-search-toggle { width: 100%; padding: 8px 12px; border: 1px solid var(--border, #E5E2DD); border-radius: var(--radius-lg, 10px); background: var(--card-bg, #fff); color: var(--text-muted); font-size: var(--text-sm); text-align: left; cursor: pointer; box-sizing: border-box; display: flex; align-items: center; gap: 6px; -webkit-tap-highlight-color: transparent; transition: border-color .15s; }
.bk-ns-search-toggle:active { border-color: var(--brand, #3D8A5A); }
.bk-ns-search-input { width: 100%; padding: 8px 12px; border: 1px solid var(--border, #E5E2DD); border-radius: var(--radius-lg, 10px); font-size: var(--text-sm); background: var(--card-bg, #fff); color: var(--text); outline: none; box-sizing: border-box; }
.bk-ns-search-input:focus { border-color: var(--brand, #3D8A5A); }
.bk-ns-search-bar.bk-ns-search-open .bk-ns-search-toggle { display: none; }
.bk-ns-search-bar:not(.bk-ns-search-open) .bk-ns-search-input { display: none; }
.bk-ns-group { margin-bottom: 6px; }
.bk-ns-group-title { font-size: var(--text-xs); font-weight: 600; color: var(--text-muted); padding: 6px 12px 2px; text-transform: uppercase; letter-spacing: .04em; }
.bk-ns-item { padding: 10px 12px; margin: 0 12px 6px; border: 1px solid var(--border, #E5E2DD); border-radius: var(--radius-lg, 16px); background: var(--card-bg, #fff); cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background .15s; }
.bk-ns-item:active { background: var(--nav-hover, rgba(0,0,0,.04)); }
.bk-ns-item-chip { display: inline-block; font-size: var(--text-xs); padding: 2px 8px; border-radius: var(--radius-full, 9999px); margin-bottom: 6px; line-height: 1.4; }
.bk-ns-chip-highlight { background: rgba(var(--brand-rgb, 61,138,90), .08); color: var(--brand, #3D8A5A); }
.bk-ns-chip-bookmark { background: rgba(var(--amber-rgb, 217,165,60), .12); color: #B8860B; }
.bk-ns-chip-shelf { background: rgba(var(--plum-rgb, 145,100,160), .10); color: #7B5E8A; }
.bk-ns-item-type { font-size: var(--text-xs); color: var(--text-muted); }
.bk-ns-item-time { font-size: var(--text-xs); color: var(--text-muted); }
.bk-ns-item-meta { display: flex; justify-content: flex-end; align-items: center; margin-top: 6px; }
.bk-ns-item-hl { font-size: var(--text-sm); color: var(--text-soft, #5A564F); font-style: italic; margin-top: 2px; padding: 5px 8px; border-radius: var(--radius-md, 12px); background: rgba(var(--brand-rgb, 61,138,90), .06); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bk-ns-item-hl.bk-expanded { -webkit-line-clamp: unset; display: block; }
.bk-ns-item-text { font-size: var(--text-sm); color: var(--text); line-height: 1.5; word-break: break-word; margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--border, #E5E2DD); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.bk-ns-item-text.bk-expanded { -webkit-line-clamp: unset; display: block; }
.bk-ns-item-note-label { display: inline-block; font-size: var(--text-xs); color: var(--brand, #3D8A5A); margin-bottom: 2px; }
.bk-ns-item-source { font-size: var(--text-xs); color: var(--text-muted); margin-top: 4px; }
.bk-ns-empty { text-align: center; padding: 40px 16px; }
.bk-ns-empty-icon { font-size: 2em; margin-bottom: 8px; }
.bk-ns-empty-text { font-size: var(--text-base); color: var(--text-secondary); }
.bk-ns-empty-hint { font-size: var(--text-sm); color: var(--text-muted); margin-top: 4px; }
.bk-ns-export-btn { display: flex; align-items: center; gap: 8px; width: 100%; padding: 12px 8px; border: none; border-bottom: 1px solid var(--border, #E5E2DD); background: none; color: var(--text); font: inherit; font-size: var(--text-base); cursor: pointer; text-align: left; }
.bk-ns-export-btn:last-child { border-bottom: none; }
.bk-ns-export-btn:active { background: var(--nav-hover, rgba(0,0,0,.04)); }

/* 按书筛选Tab栏 */
.bk-ns-tabs { display: flex; gap: 6px; padding: 4px 12px 2px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; align-items: center; }
.bk-ns-tabs::-webkit-scrollbar { display: none; }
.bk-ns-tab { padding: 4px 12px; border-radius: var(--radius-full, 9999px); font-size: var(--text-xs); color: var(--text-muted); background: transparent; border: 1px solid var(--border, #E5E2DD); cursor: pointer; white-space: nowrap; -webkit-tap-highlight-color: transparent; transition: background .15s, color .15s, border-color .15s; display: inline-flex; align-items: center; gap: 4px; }
.bk-ns-tab.active { background: var(--brand, #3D8A5A); color: var(--page-bg, #fff); border-color: var(--brand, #3D8A5A); }
.bk-ns-tab:active { opacity: 0.7; }
.bk-ns-tab-count { font-size: 10px; opacity: 0.7; }
.bk-ns-tab.active .bk-ns-tab-count { opacity: 1; }

/* 类型Tab行右侧统计文字 */
.bk-ns-type-stats { margin-left: auto; font-size: var(--text-xs); color: var(--text-muted); white-space: nowrap; flex-shrink: 0; padding-right: 4px; }

/* 笔记操作菜单按钮 */
.bk-ns-action-btn { display: flex; align-items: center; gap: 8px; width: 100%; padding: 12px 8px; border: none; border-bottom: 1px solid var(--border, #E5E2DD); background: none; color: var(--text); font: inherit; font-size: var(--text-base); cursor: pointer; text-align: left; -webkit-tap-highlight-color: transparent; }
.bk-ns-action-btn:last-child { border-bottom: none; }
.bk-ns-action-btn:active { background: var(--nav-hover, rgba(0,0,0,.04)); }
.bk-ns-action-danger { color: var(--danger, #D32F2F); }
.bk-ns-action-danger:active { background: rgba(211,47,47,.08); }

/* 笔记编辑弹窗 */
.bk-ns-edit-textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--border, #E5E2DD); border-radius: var(--radius-lg, 10px); font-size: var(--text-base); line-height: 1.5; background: var(--card-bg, #fff); color: var(--text); outline: none; resize: vertical; box-sizing: border-box; font-family: inherit; }
.bk-ns-edit-textarea:focus { border-color: var(--brand, #3D8A5A); }

/* 暗色主题：笔记汇总 */
[data-theme="dark"] .bk-ns-item:active { background: var(--nav-hover, rgba(255,255,255,.06)); }
[data-theme="dark"] .bk-ns-action-btn:active { background: var(--nav-hover, rgba(255,255,255,.06)); }

/* 类型筛选 Tab */
.bk-ns-type-tabs { display: flex; gap: 6px; padding: 6px 12px 2px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; border-bottom: 1px solid var(--border, #E5E2DD); align-items: center; }
.bk-ns-type-tabs::-webkit-scrollbar { display: none; }
.bk-ns-type-tab { padding: 4px 10px; border-radius: var(--radius-full, 9999px); font-size: var(--text-xs); color: var(--text-muted); background: transparent; border: 1px solid var(--border, #E5E2DD); cursor: pointer; white-space: nowrap; -webkit-tap-highlight-color: transparent; transition: background .15s, color .15s, border-color .15s; display: inline-flex; align-items: center; gap: 4px; }
.bk-ns-type-tab.active { background: var(--brand, #3D8A5A); color: #fff; border-color: var(--brand, #3D8A5A); }
.bk-ns-type-tab:active { opacity: 0.7; }
.bk-ns-type-count { font-size: 10px; opacity: 0.7; }
.bk-ns-type-tab.active .bk-ns-type-count { opacity: 1; }

/* 有笔记的标记项：淡 sage 底色区分（禁止 border-left 色条） */
.bk-ns-item-has-note { background: rgba(var(--brand-rgb, 61,138,90),.04); }

/* 书签标题样式 */
.bk-ns-item-title { font-size: var(--text-base); font-weight: 500; color: var(--text); line-height: 1.5; }

/* 暗色主题：类型 Tab */
[data-theme="dark"] .bk-ns-type-tab:active { opacity: 0.7; }

/* ════════════════════════════════════════════════════════════
   书城：多级下钻（系列 → 分类 → 书籍）
   复用既有 .category-grid / .category-card / .series-catalog-card /
   .series-back-btn 视觉，仅新增书城容器、面包屑、无限滚动哨兵与边界态。
   全部使用 Soft Nordic 令牌，禁止硬编码颜色。
   ════════════════════════════════════════════════════════════ */

/* 书城容器：底部留白避免被常驻底栏遮挡（≥ 底栏高度） */
.bk-city-page {
  min-height: 100%;
  padding-bottom: 88px;
}

.bk-city-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 20px 4px;
}
.bk-city-title {
  font-size: var(--text-xl, 1.4rem);
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.bk-city-search-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--card-bg, var(--surface));
  color: var(--text-muted);
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
  transition: background .15s, color .15s, transform .15s;
}
.bk-city-search-btn:active { background: var(--nav-hover); transform: scale(0.94); }
.bk-city-dl-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--card-bg, var(--surface));
  color: var(--text-muted);
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
  transition: background .15s, color .15s, transform .15s;
}
.bk-city-dl-btn:active { background: var(--nav-hover); transform: scale(0.94); }

/* 方案 7：书架首屏 header 复用书城 .bk-city-header，横向内距对齐到 20px */
.bk-shelf-page .bk-city-header {
  padding-left: 4px;
  padding-right: 4px; /* 容器 16px + 此处 4px = 20px，与书城 header 完全对齐 */
}

/* 面包屑 + 返回按钮同行 */
.bk-city-topbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 20px 0;
}
.bk-city-crumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--text-md);
  color: var(--text-muted);
}
.bk-crumb-item {
  color: var(--brand, var(--accent-color, #3D8A5A));
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 8px;
  transition: background .15s, color .15s;
  -webkit-tap-highlight-color: transparent;
}
.bk-crumb-item:active { background: var(--nav-hover); color: var(--text); }
.bk-crumb-sep { color: var(--text-muted); opacity: .7; }
/* 方案 5：面包屑键盘焦点可见 */
.bk-crumb-item:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 6px; }

/* 分类网格列数回落基线（768→2列 / 1024→3列），方案2 */

/* 系列网格列数回落基线（768→2列 / 1024→3列），方案2 */

/* 三级书籍网格：响应式多列（与 L1/L2 网格内边距对齐，不再继承 .book-grid 基线的 20/8px） */
/* L3 网格基础属性已下沉到共享 .bk-poster-grid（网格 div 已追加该类）；.book-grid 提供 display:grid 兜底 */
/* 方案Y（2026-07-13 用户重设计修订）：L3 书城书籍卡 = 封面海报 + 下方精简信息条。
   卡片复用 .zl-book-card 基础（白卡 + 1px 描边 + 16px 圆角 + overflow:hidden，无系列色左条），
   封面(.bk-cover) 作海报填满卡顶，下方 .book-caption 显示书名 + 书号(可选) + 章节数，
   仅保留角落已读角标(.bk-city-read-marker)。视觉与 L1/L2 系列色点缀一致。 */
.bk-city-book-grid .zl-book-card.is-city-book {
  box-shadow: 0 1px 4px rgba(60, 40, 10, .10);
  border-left: 1px solid var(--border);   /* 去系列色左条，与 L1/L2 一致 */
}
/* 悬停：与 L1/L2 卡片同构（抬升 + 阴影增强 + 底色微变） */
.bk-city-book-grid .zl-book-card.is-city-book:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(60, 40, 10, .14);
  background: var(--nav-hover);
}
.bk-city-book-grid .zl-book-card.is-city-book .book-card-wrapper,
.bk-city-book-grid .zl-book-card.is-city-book .book-link {
  display: block;
  padding: 0;
  gap: 0;
}
/* L3 封面：基础属性已下沉到共享 .bk-poster-card .bk-cover*；仅保留 L3 专属基准字号 */
.bk-city-book-grid .zl-book-card.is-city-book .bk-cover { font-size: 13px; }
/* L3 信息条容器基础属性已下沉到共享 .bk-poster-card__caption（div 已追加该类）；
   书名行改为显示（与封面海报呼应，便于扫读），样式由共享 .bk-poster-card__title 承担 */
.bk-city-book-grid .zl-book-card.is-city-book .book-caption-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  font-size: 11px;
  color: var(--text-muted, #9A958C);
  padding-bottom: 2px;
}
.bk-city-book-grid .zl-book-card.is-city-book .book-caption-no {
  background: var(--tag-bg, rgba(var(--brand-rgb, 61, 138, 90), .08));
  color: var(--brand, #3D8A5A);
  border-radius: 10px;
  padding: 1px 7px;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.5;
}

/* 来源徽标：书籍导入渠道（本地文件 / WebDAV）。复用书号角标的 pill 视觉，保持信息条统一。 */
.book-source-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 10px;
  font-weight: 500;
  line-height: 1.5;
  padding: 1px 7px;
  border-radius: 10px;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.book-source-local {
  background: var(--tag-bg, rgba(var(--brand-rgb, 61, 138, 90), .08));
  color: var(--text-muted, #9A958C);
}
.book-source-webdav {
  background: var(--tag-bg, rgba(var(--brand-rgb, 61, 138, 90), .08));
  color: var(--brand, #3D8A5A);
}
/* 书架行的来源徽标容器 */
.bk-shelf-row-source {
  margin-top: 4px;
}

/* 触底哨兵（IntersectionObserver 观察目标） */
.bk-city-sentinel {
  height: 1px;
  margin: 12px 0;
}

/* 边界态：已经到底了 */
.bk-city-end {
  text-align: center;
  color: var(--text-muted);
  font-size: var(--text-sm);
  padding: 16px 0 8px;
}

/* 加载骨架（无限滚动中占位） */
.bk-city-skeleton {
  height: 120px;
  margin: 8px 20px;
  border-radius: 16px;
  background: linear-gradient(100deg, var(--card-bg, #f0f0f0) 30%, var(--nav-hover, #e6e6e6) 50%, var(--card-bg, #f0f0f0) 70%);
  background-size: 200% 100%;
  animation: bk-city-shimmer 1.2s infinite;
}
@keyframes bk-city-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* 窄屏（≤768px）：L1/L2/L3/书架 统一3列，海报卡片式一致 */
@media (max-width: 768px) {
  .category-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .series-catalog-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .bk-city-book-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .bk-shelf-list { grid-template-columns: repeat(3, 1fr) !important; }
}


