/*
 * open-books.css — 书摘栏目的组件样式，叠在 /assets/site.css 之上。
 * 用在两类页面：
 *   1) 开放书书总页 / 章页（body.ob，由 sites/feedlitra/tools/open-books 生成）
 *   2) 换皮后的旧书摘页与 /en/book-summaries/ 索引（body.legacy-summary，正文原样保留）
 * 颜色只用 site.css 的 token：--ink / --ink-2 / --paper / --accent / --accent-deep / --mist / --muted / --paper-muted / --line。
 * 视觉稿：.worktrees/open-books-cards/mockups/（v2，站长 10-22 认可深色版）。
 */

/* ---------- 字体（站长 10-22 拍板，10-22 二次调整） ----------
 * 正文和一切“读的”文字（导语、引文、划线摘录、寓言故事、CTA、上一章 / 下一章）都走系统黑体栈，不下载 web 字体：
 * Windows 雅黑 / macOS 苹方。不用系统衬线（Windows 宋体在深色底上很差）。
 * 只有标题用 Noto Serif SC Black 子集（FeedLitra Serif，见文末生成段），按全部开放书页的标题用字生成。
 * 弯引号 / 省略号：英文页交给拉丁字体（FL Latin Quotes *，定义在 site.css）；
 * 中文页保留全角：正文用 Noto Sans SC 的全角标点切片（FeedLitra Sans Punct，苹方自带的弯引号是窄的），
 * 标题用 Noto Serif SC 的标点切片（FeedLitra Serif Punct）。两份切片各约 2 KB，只在 zh 页的字体栈里。 */
body.ob {
	--sans: "FL Latin Quotes Sans", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif;
	--serif: "FeedLitra Serif", "FL Latin Quotes Serif", Georgia, serif;
}
html[lang^="zh"] body.ob {
	--sans: "FeedLitra Sans Punct", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif;
	--serif: "FeedLitra Serif", "FeedLitra Serif Punct", "Songti SC", "STSong", Georgia, serif;
}
/* site.css 的 .direct-answer / .article-cta p 用衬线，开放书页改回黑体 */
body.ob .direct-answer { font-family: var(--sans); }
body.ob .article-cta p { font-family: var(--sans); font-weight: 500; }

/* ---------- 小件 ---------- */
.ob-pill { display: inline-block; vertical-align: middle; margin-left: 10px; padding: 3px 10px; border: 1px solid rgba(42,166,189,.45); border-radius: 999px; color: var(--accent); font-family: var(--sans); font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.ob-kicker { color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .14em; line-height: 1.5; text-transform: uppercase; margin-bottom: 10px; }
.ob-intro { color: var(--muted) !important; font-size: 15px !important; margin: -6px 0 18px; }
.guide-article h3 { font-family: var(--serif); font-weight: 900; }
.guide-article code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .88em; background: rgba(247,244,236,.08); border-radius: 5px; padding: 1px 5px; }
.ob-hook { color: var(--accent); font-family: var(--serif); font-size: 22px; font-weight: 800; line-height: 1.5; margin: 0 0 14px; }

/* ---------- 授权：页首细条 / 页尾整块 ---------- */
.ob-lic { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: -20px 0 44px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 12px; background: rgba(247,244,236,.03); }
.ob-lic p { flex: 1 1 280px; color: var(--mist); font-size: 14px; line-height: 1.75; }
.ob-lic a, .ob-licblock a, .ob-refs a { color: var(--accent); text-underline-offset: 4px; }
.ob-badge { display: inline-block; font-family: var(--sans); padding: 3px 9px; border-radius: 6px; font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; white-space: nowrap; }
.ob-badge.pd { color: #8fe0b0; border: 1px solid rgba(143,224,176,.45); }
.ob-badge.bysa { color: var(--accent); border: 1px solid rgba(42,166,189,.55); }
.ob-badge.mit { color: #c8b8f5; border: 1px solid rgba(200,184,245,.45); }
.ob-badge.nc { color: #f3c969; border: 1px solid rgba(243,201,105,.55); background: rgba(243,201,105,.07); }
.ob-licblock { border: 1px solid var(--line); border-radius: 16px; padding: 26px 28px; margin-top: 18px; }
.ob-licblock h3 { font-size: 19px; line-height: 1.5; margin-bottom: 12px; display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.ob-licblock li, .ob-licblock p { color: var(--mist); font-size: 15px; line-height: 1.85; }
.ob-licblock ul { padding-left: 20px; }
.ob-licblock .nc-warn { margin-top: 12px; padding-left: 14px; border-left: 2px solid #f3c969; color: #f3dca4; }

/* ---------- 页内目录 ---------- */
.ob-toc { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 8px; }
.ob-toc a { color: var(--mist); font-size: 14px; text-decoration: none; border: 1px solid var(--line); border-radius: 999px; padding: 6px 13px; }
.ob-toc a:hover { border-color: var(--accent); color: var(--paper); }

/* ---------- 原文引文（深底上）：青色竖线 + 衬线 ---------- */
.ob-quote { margin: 18px 0 0; padding: 4px 0 4px 18px; border-left: 2px solid var(--accent); }
.ob-quote p { color: var(--paper) !important; font-family: var(--sans); font-size: 18px !important; line-height: 1.75 !important; margin: 0 0 6px; }
.ob-quote p.orig { color: var(--muted) !important; font-size: 15px !important; }
.ob-src { color: var(--muted); font-size: 13px; letter-spacing: .02em; text-decoration: none; display: inline-flex; gap: 8px; }
.ob-src .loc { font-variant-numeric: tabular-nums; }
.ob-src .go { color: var(--accent); }
.ob-src:hover .go { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- 编号列表（论点 / 张力） ---------- */
.ob-num { list-style: none; counter-reset: n; padding: 0; border-top: 1px solid var(--line); }
.ob-num > li { counter-increment: n; position: relative; padding: 20px 0 20px 54px; border-bottom: 1px solid var(--line); color: var(--mist); font-size: 17px; line-height: 1.9; }
.ob-num > li::before { content: counter(n, decimal-leading-zero); position: absolute; left: 0; top: 19px; color: var(--accent); font-family: var(--serif); font-size: 20px; font-weight: 900; }
.ob-num.tension > li::before { color: var(--paper-muted); }
.guide-article details.ob-more { margin-top: 6px; }
.guide-article details.ob-more > summary { cursor: pointer; color: var(--accent); font-size: 15px; font-weight: 700; padding: 14px 0; }

/* ---------- 全书导图：深色分组卡（同 .guide-card） ---------- */
.ob-map { border: 1px solid var(--line); border-radius: 16px; margin-top: 14px; }
.ob-map > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 16px; padding: 20px 26px; font-family: var(--serif); font-size: 20px; font-weight: 900; color: var(--paper); }
.ob-map > summary::-webkit-details-marker { display: none; }
.ob-map > summary::after { content: "+"; color: var(--accent); font-family: var(--sans); font-weight: 400; }
.ob-map[open] > summary::after { content: "–"; }
.ob-map dl { padding: 0 26px 12px; }
.ob-map dt { color: var(--paper); font-size: 16.5px; font-weight: 700; line-height: 1.6; padding-top: 16px; border-top: 1px solid var(--line); }
.ob-map dd { color: var(--mist); font-size: 15.5px; line-height: 1.85; margin: 4px 0 16px; }
.ob-map dd .orig { display: block; color: var(--muted); font-size: 13px; margin-top: 4px; }

/* ---------- 逐章索引 ---------- */
.ob-chapters { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.ob-chapters li { padding: 20px 0; border-bottom: 1px solid var(--line); }
.ob-chapters .no { color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.ob-chapters h3 { font-size: 20px; line-height: 1.45; margin: 6px 0 6px; }
.ob-chapters h3 a { color: var(--paper); text-decoration-color: rgba(42,166,189,.55); text-underline-offset: 5px; }
.ob-chapters p { color: var(--muted); font-size: 15px; line-height: 1.7; }

/* ---------- 米白纸卡（首页 .card 同款，静态） ---------- */
.ob-card { background: var(--paper); color: #23262e; border-radius: 14px; box-shadow: 0 18px 44px -18px rgba(0,0,0,.55), 0 2px 6px rgba(0,0,0,.28); padding: 22px 24px; margin-top: 18px; }
.ob-card .label { color: var(--paper-muted); display: block; margin-bottom: 10px; }
.ob-card h3 { color: #15181f; font-size: 19px; line-height: 1.5; margin-bottom: 10px; }
.ob-card p { color: #3b3e47; font-size: 16px; line-height: 1.85; }
.ob-card .ob-quote { border-left-color: var(--accent-deep); }
.ob-card .ob-quote p { color: #23262e !important; font-size: 17px !important; }
.ob-card .ob-src { color: var(--paper-muted); }
.ob-card .ob-src .go { color: var(--accent-deep); }
.ob-card code { background: rgba(35,38,46,.07); }
/* 划线卡：摘录 + mark，批注在下 */
.ob-card.note .excerpt-q { font-family: var(--sans); font-size: 18px; line-height: 1.85; color: #23262e; margin-bottom: 10px; }
.ob-card.note .comment { font-size: 15.5px; color: #4a4d57; border-top: 1px solid rgba(35,38,46,.12); padding-top: 12px; margin-top: 10px; }

/* ---------- 机制：深底青框（首页 .card-question 同款） ---------- */
.ob-mech { background: var(--ink-2); border: 1px solid rgba(42,166,189,.55); border-radius: 14px; padding: 22px 24px; margin-top: 16px; }
.ob-mech h3 { color: var(--paper); font-size: 19px; margin-bottom: 8px; }
.ob-mech p { color: var(--mist) !important; font-size: 16px !important; line-height: 1.85 !important; }

/* ---------- 误读：问卡 + 答卡（.card-question / .card-answer 的组合） ---------- */
.ob-misc { margin-top: 18px; }
.ob-misc .think { border: 1px solid var(--line); border-radius: 14px 14px 0 0; padding: 18px 22px; background: rgba(247,244,236,.03); }
.ob-misc .think p { color: var(--mist) !important; font-size: 16px !important; line-height: 1.8 !important; }
.ob-misc .actually { background: var(--accent-deep); border-radius: 0 0 14px 14px; padding: 18px 22px; }
.ob-misc .actually p { color: #fff !important; font-size: 16px !important; line-height: 1.8 !important; }
.ob-misc .label { display: block; margin-bottom: 6px; }
.ob-misc .actually .label { color: #fff; opacity: .85; }
.ob-misc .actually .ob-quote { border-left-color: rgba(255,255,255,.6); }
.ob-misc .actually .ob-quote p { color: #fff !important; font-size: 16px !important; }
.ob-misc .actually .ob-src, .ob-misc .actually .ob-src .go { color: #d6f3f8; }

/* ---------- 术语表 ---------- */
.ob-gloss dt { color: var(--paper); font-family: var(--serif); font-size: 19px; font-weight: 800; padding-top: 18px; border-top: 1px solid var(--line); }
.ob-gloss dd { color: var(--mist); font-size: 16px; line-height: 1.85; margin: 6px 0 4px; }
.ob-gloss dd.scope { color: var(--muted); font-size: 14px; margin-bottom: 18px; }

/* ---------- 作者 / 接受史 ---------- */
.ob-author { border: 1px solid var(--line); border-radius: 16px; padding: 26px 28px; }
.ob-author .headline { color: var(--paper) !important; font-family: var(--serif); font-size: 20px !important; font-weight: 800; margin-bottom: 10px; }
.ob-author ul { padding-left: 20px; }
.ob-author li { color: var(--mist); font-size: 16px; line-height: 1.85; margin: 4px 0; }
sup.ob-ref a { color: var(--accent); font-size: 11px; text-decoration: none; padding: 0 2px; }
.ob-refs { margin-top: 14px; padding-left: 20px; }
.ob-refs li { color: var(--muted); font-size: 13px; line-height: 1.7; }
.ob-timeline { list-style: none; padding: 0 0 0 26px; border-left: 1px solid rgba(42,166,189,.45); margin-left: 6px; }
.ob-timeline li { position: relative; padding-bottom: 24px; }
.ob-timeline li::before { content: ""; position: absolute; left: -32px; top: 6px; width: 11px; height: 11px; border-radius: 50%; background: var(--ink); border: 2px solid var(--accent); }
.ob-timeline .era { color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.ob-timeline .who { color: var(--paper); font-family: var(--serif); font-size: 19px; font-weight: 800; margin: 4px 0 2px; }
.ob-timeline .gist { color: var(--mist); font-size: 16px; line-height: 1.8; }
.ob-timeline .work { color: var(--muted); font-size: 14px; font-style: italic; }

/* ---------- 读后感 ---------- */
.ob-essay .byline { color: var(--muted); font-size: 14px; margin-top: 10px; }

/* ---------- 上一章 / 下一章 ---------- */
.ob-pager { display: flex; gap: 14px; margin-top: 54px; }
.ob-pager a { flex: 1 1 0; border: 1px solid var(--line); border-radius: 14px; padding: 16px 20px; color: var(--paper); text-decoration: none; font-family: var(--sans); font-size: 16px; font-weight: 500; line-height: 1.55; }
.ob-pager a span { display: block; color: var(--accent); font-family: var(--sans); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 6px; }
.ob-pager a.next { text-align: right; }
.ob-pager a:hover { border-color: var(--accent); }

/* ---------- 寓言卡 ---------- */
.ob-fable-story p { color: var(--paper) !important; font-family: var(--sans); font-size: 18px !important; line-height: 1.95 !important; }
.ob-maptable { width: 100%; border-collapse: collapse; margin: 10px 0 6px; }
.ob-maptable th { text-align: left; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; padding: 0 12px 10px 0; }
.ob-maptable td { vertical-align: top; color: var(--mist); font-size: 15px; line-height: 1.75; padding: 12px 12px 12px 0; border-top: 1px solid var(--line); }
.ob-maptable td:first-child { width: 42%; color: var(--paper); font-weight: 600; }

@media (max-width: 768px) {
	.ob-lic { margin-top: -10px; }
	.ob-num > li { padding-left: 44px; font-size: 16px; }
	.ob-card, .ob-mech { padding: 18px; }
	.ob-map > summary { padding: 16px 18px; font-size: 18px; }
	.ob-map dl { padding: 0 18px 8px; }
	.ob-author, .ob-licblock { padding: 20px; }
	.ob-pager { flex-direction: column; }
	.ob-pager a.next { text-align: left; }
	.ob-hook { font-size: 19px; }
	.ob-maptable thead { display: none; }
	.ob-maptable, .ob-maptable tbody, .ob-maptable tr, .ob-maptable td { display: block; width: 100% !important; }
	.ob-maptable tr { border-top: 1px solid var(--line); padding: 10px 0; }
	.ob-maptable td { border-top: 0; padding: 2px 0; }
}

/* site.css 的 `.guide-article section > p` 优先级更高，这里补回 */
.guide-article section > p + p { margin-top: 1.1em; }
.guide-article section > p.ob-kicker { color: var(--accent); font-size: 11px; line-height: 1.5; margin-bottom: 10px; }
.guide-article section > p.ob-intro { color: var(--muted); font-size: 15px; }
.guide-article section > p.byline { color: var(--muted); font-size: 14px; margin-top: 12px; }
.ob-card.note .orig-line { color: var(--paper-muted); font-family: var(--sans); font-size: 14px; line-height: 1.7; margin: -4px 0 8px; }
.ob-mech p.ob-kicker { color: var(--accent) !important; font-size: 11px !important; line-height: 1.5 !important; }

html[lang="zh-CN"] .ob-kicker, html[lang="zh-CN"] .ob-chapters .no, html[lang="zh-CN"] .ob-timeline .era { letter-spacing: .08em; }

/* ---------- 生成器新增的小件 ---------- */
.guide-article h3.ob-h3 { color: var(--paper); font-size: 22px; line-height: 1.45; margin: 26px 0 10px; }
.ob-srcline { margin-top: 10px; }
.ob-hook + .ob-lic { margin-top: 22px; }
/* 书名长（>约 40 个显示宽度）的书总页 h1 降一档 */
.article-header h1.ob-h1-long { font-size: clamp(32px, 3.8vw, 46px); line-height: 1.22; }
/* 以《 “ 「 开头的标题：开口标点自带半个字宽的左侧空白，负缩进悬挂出去，和正文左缘对齐 */
.ob-hang { text-indent: -0.5em; }
/* text-indent 会被 inline-block 子元素（如标题里的 AI 辅助胶囊）继承，把胶囊里的字推出框外，所以子元素清零 */
.ob-hang * { text-indent: 0; }
/* 章页 CTA 前的紧凑署名块（非公版书） */
.ob-licblock.compact { margin-top: 54px; padding: 20px 24px; }
.ob-licblock.compact .ob-licblock-title { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; color: var(--paper); font-family: var(--serif); font-size: 17px; font-weight: 900; margin-bottom: 8px; }
.ob-licblock.compact li { font-size: 14px; line-height: 1.8; }
.ob-langtag { color: var(--muted); font-family: var(--sans); font-size: 12px; font-weight: 600; margin-left: 6px; vertical-align: middle; }
.ob-pager { flex-wrap: wrap; }
.ob-pager a.up { flex: 1 1 100%; text-align: center; }
.ob-pager a.prev:only-of-type { flex: 1 1 100%; }
.guide-article pre { background: rgba(247,244,236,.06); border: 1px solid var(--line); border-radius: 10px; color: var(--paper); font-size: 14px; line-height: 1.65; margin: 16px 0; overflow-x: auto; padding: 14px 16px; }
.guide-article pre code { background: none; padding: 0; }
.guide-article section > ul, .guide-article section > ol:not([class]) { color: var(--mist); font-size: 17px; line-height: 1.9; padding-left: 22px; }
.guide-article section > h3:not([class]) { color: var(--paper); font-size: 21px; line-height: 1.45; margin: 26px 0 10px; }
.ob-essay details.ob-more p { color: var(--mist); font-size: 17px; line-height: 1.95; max-width: 43em; }
.ob-essay details.ob-more p + p { margin-top: 1.1em; }
.ob-hub-list { display: grid; gap: 16px; }

/* ---------- 换皮后的旧书摘页（只换皮，正文 HTML 不动） ---------- */
.legacy-summary .guide-shell article > .eyebrow { margin-bottom: 18px; }
.legacy-summary .guide-shell h1 { font-size: clamp(38px, 5vw, 62px); line-height: 1.18; margin-bottom: 26px; }
.legacy-summary .guide-shell h2 { font-size: clamp(27px, 3.2vw, 38px); line-height: 1.3; margin: 44px 0 16px; }
.legacy-summary .guide-shell h3 { font-family: var(--serif); font-size: 21px; font-weight: 800; line-height: 1.45; margin: 0 0 6px; }
.legacy-summary .guide-shell article p, .legacy-summary .guide-shell article li,
.legacy-hub > p, .legacy-hub section > p, .legacy-hub li p { color: var(--mist); font-size: 17px; line-height: 1.95; max-width: 43em; }
.legacy-summary .guide-shell article p + p { margin-top: 1.1em; }
.legacy-summary .guide-shell article ol, .legacy-summary .guide-shell article ul { padding-left: 22px; }
.legacy-summary .guide-shell article li + li { margin-top: 8px; }
.legacy-summary .guide-shell article strong { color: var(--paper); }
.legacy-summary .guide-shell a { color: var(--accent); text-underline-offset: 4px; }
.legacy-summary .guide-shell .breadcrumbs a { color: var(--mist); }
/* 导语用正文黑体栈（与生成页一致：雅黑 / 苹方），字重不变 */
.legacy-summary .guide-shell .lede { color: var(--paper); font-family: "FL Latin Quotes Sans", "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif; font-size: 21px; line-height: 1.8; margin: 0 0 34px; padding-bottom: 34px; border-bottom: 1px solid var(--line); }
.legacy-summary .guide-shell .note { display: block; margin: 0 0 30px; padding: 16px 20px; border: 1px solid var(--line); border-radius: 12px; background: rgba(247,244,236,.03); color: var(--mist); font-size: 15px; line-height: 1.8; }
.legacy-summary .guide-shell footer.note { margin-top: 44px; border-top: 1px solid var(--line); }
.legacy-summary .guide-shell .reading-card { background: rgba(42,166,189,.09); border: 1px solid rgba(42,166,189,.28); border-radius: 16px; margin-top: 44px; padding: 28px 32px; }
.legacy-summary .guide-shell .reading-card h2 { font-size: clamp(24px, 2.6vw, 30px); margin: 0 0 12px; }
.legacy-summary .guide-shell .reading-card p { color: var(--paper); }
.legacy-summary .guide-shell .book-list { list-style: none; padding: 0; border-top: 1px solid var(--line); margin-top: 18px; }
.legacy-summary .guide-shell .book-list li { padding: 20px 0; border-bottom: 1px solid var(--line); }
.legacy-summary .guide-shell .book-list li + li { margin-top: 0; }
.legacy-summary .guide-shell .book-list h2, .legacy-summary .guide-shell .book-list h3 { font-size: 21px; line-height: 1.45; margin: 0 0 6px; }
.legacy-summary .guide-shell .book-list a { color: var(--paper); text-decoration-color: rgba(42,166,189,.55); text-underline-offset: 5px; }
.legacy-summary .guide-shell .book-list p { font-size: 15px; color: var(--muted); }
.legacy-summary .legacy-footnote { border-top: 1px solid var(--line); margin-top: 40px; padding-top: 20px; }
.legacy-summary .legacy-footnote p { color: var(--muted); font-size: 14px; line-height: 1.8; }
.legacy-summary .ob-hub { margin-top: 48px; }
.legacy-summary .ob-hub-intro { color: var(--mist); }
@media (max-width: 768px) {
	.legacy-summary .guide-shell .reading-card { padding: 22px; }
	.legacy-summary .guide-shell .lede { font-size: 19px; }
}

/* ---------- 逐章导读区（一本书一页，章节页内切换） ----------
 * 桌面：左侧粘性目录 + 右侧章节面板；手机：目录收成顶部一条（JS 展开 / 收起，没有 JS 时直接展开）。
 * 性能：非当前章 hidden="until-found"（UA 样式即 content-visibility:hidden，不排版不绘制）；
 * 屏幕外的区块 content-visibility:auto + contain-intrinsic-size，首屏之外的排版延后。 */
/* 占位高度按区块可见字数估（--ob-len，生成器写进 style）：英文每字约 0.36px、中文约 0.72px，加标题和边距 */
.guide-article > section:not(.ob-chapters-section), .ob-sub { content-visibility: auto; contain-intrinsic-size: auto calc(var(--ob-len, 2400) * 0.36px + 220px); }
html[lang^="zh"] .guide-article > section:not(.ob-chapters-section), html[lang^="zh"] .ob-sub { contain-intrinsic-size: auto calc(var(--ob-len, 1200) * 0.72px + 220px); }
.ob-chapters-section { width: min(1180px, calc(100vw - 64px)); margin-left: calc(50% - min(590px, 50vw - 32px)); }
.ob-reader { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 44px; align-items: start; margin-top: 18px; }
.ob-panels { max-width: 860px; }
.ob-chapnav { position: sticky; top: 16px; max-height: calc(100vh - 32px); overflow-y: auto; overscroll-behavior: contain; border: 1px solid var(--line); border-radius: 14px; padding: 10px 8px; background: rgba(21,24,31,.92); }
.ob-chapnav ol { list-style: none; margin: 0; padding: 0; }
.ob-chapnav li a { display: block; padding: 7px 10px; border-radius: 9px; color: var(--mist); font-size: 14px; line-height: 1.45; text-decoration: none; }
.ob-chapnav li a:hover { background: rgba(247,244,236,.05); color: var(--paper); }
.ob-chapnav li a[aria-current="true"] { background: rgba(42,166,189,.14); color: var(--paper); box-shadow: inset 2px 0 0 var(--accent); }
.ob-chapnav .no { display: block; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.ob-chapnav .t { display: block; }
.ob-chapnav li a .t:only-child { font-size: 14px; color: inherit; }
.ob-chapnav-toggle { display: none; }
.ob-chapter { scroll-margin-top: 16px; }
.ob-chapter > h2 { font-size: clamp(26px, 3vw, 36px); line-height: 1.3; margin-bottom: 10px; }
.ob-chapter > .ob-hook { margin-bottom: 8px; }
.ob-sub { margin-top: 38px; }
.ob-sub > h3 { color: var(--paper); font-size: clamp(21px, 2.2vw, 26px); line-height: 1.35; margin-bottom: 14px; }
.ob-sub > p { color: var(--mist); font-size: 17px; line-height: 1.95; max-width: 43em; }
.ob-sub > p + p { margin-top: 1.1em; }
.ob-sub > h4 { color: var(--paper); font-family: var(--serif); font-size: 18px; font-weight: 900; line-height: 1.45; margin: 22px 0 8px; }
.ob-card h4 { color: #15181f; font-family: var(--serif); font-size: 19px; font-weight: 900; line-height: 1.5; margin-bottom: 10px; }
.ob-mech h4 { color: var(--paper); font-family: var(--serif); font-size: 19px; font-weight: 900; margin-bottom: 8px; }
.ob-sub > p.ob-intro { color: var(--muted); font-size: 15px; }
.ob-sub > p.ob-kicker { color: var(--accent); font-size: 11px; line-height: 1.5; margin-bottom: 10px; }
.ob-sub > p.byline { color: var(--muted); font-size: 14px; margin-top: 12px; }
.ob-chapter-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; margin-top: 28px; padding: 18px 22px; border: 1px solid rgba(42,166,189,.28); border-radius: 14px; background: rgba(42,166,189,.06); }
.ob-chapter-cta p { color: var(--paper); font-size: 15px; line-height: 1.6; margin: 0; flex: 1 1 260px; }
.ob-chapter-cta .cta { font-size: 14px; padding: 10px 18px; }
.ob-chapter-stub .ob-intro a { color: var(--accent); }
@media (max-width: 900px) {
	.ob-chapters-section { width: auto; margin-left: 0; }
	.ob-reader { display: block; }
	.ob-chapnav { top: 0; z-index: 5; max-height: 70vh; margin: 0 -20px 24px; border-radius: 0; border-left: 0; border-right: 0; padding: 8px 12px; background: var(--ink); }
	.ob-chapnav-toggle:not([hidden]) { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 6px 4px; border: 0; background: none; color: var(--paper); font: inherit; font-size: 15px; font-weight: 700; text-align: left; cursor: pointer; }
	.ob-chapnav-toggle .all { color: var(--accent); font-size: 13px; font-weight: 600; white-space: nowrap; }
	.ob-chapnav-toggle .all::after { content: " ▾"; }
	.ob-chapnav-toggle[aria-expanded="true"] .all::after { content: " ▴"; }
	.ob-chapnav[data-collapsed] ol { display: none; }
	.ob-chapter { scroll-margin-top: 72px; }
	.guide-article > section:not(.ob-chapters-section), .ob-sub { contain-intrinsic-size: auto calc(var(--ob-len, 2400) * 0.88px + 220px); }
	html[lang^="zh"] .guide-article > section:not(.ob-chapters-section), html[lang^="zh"] .ob-sub { contain-intrinsic-size: auto calc(var(--ob-len, 1200) * 1.7px + 220px); }
}

/* 手机（600px 以下）：页内目录胶囊改成单行横向滚动，右侧渐隐提示还能往右滑；桌面不变 */
@media (max-width: 600px) {
	.ob-toc { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; margin-right: -20px; padding-right: 40px; -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 56px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 56px), transparent); }
	.ob-toc::-webkit-scrollbar { display: none; }
	.ob-toc a { flex: 0 0 auto; white-space: nowrap; }
}

/* @generated open-books-fonts:start — 由 sites/feedlitra/tools/open-books/fonts.mjs 写入，勿手改 */
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-a2f40fe735f1.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+20-7E, U+B7, U+E7-E9, U+EF, U+FC, U+2013-2014; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-bb105a98601d.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+3001-3002, U+300A-300B, U+4E00, U+4E09-4E0B, U+4E0D-4E0E, U+4E14, U+4E1C, U+4E24, U+4E2A, U+4E2D, U+4E3A-4E3B, U+4E48-4E49, U+4E4B, U+4E4E, U+4E5F-4E60, U+4E66, U+4E86, U+4E89, U+4E8B-4E8C, U+4E8E, U+4E92, U+4E9B, U+4EA4, U+4EA7, U+4EBA, U+4EC0, U+4ECD-4ECE, U+4ED6, U+4ED8, U+4EE3-4EE5, U+4EEC, U+4EF6-4EF7, U+4EFB, U+4F1A, U+4F20, U+4F46, U+4F4D, U+4F4F, U+4F53, U+4F55, U+4F5C, U+4F60, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FDD, U+4FE1, U+503C, U+505A, U+505C, U+5148, U+5165, U+5168, U+516C, U+5171, U+5173, U+5176-5177, U+5185, U+518D, U+5199, U+51B2-51B3, U+51C6, U+51E0, U+51FA, U+5206-5207, U+5212, U+5219, U+5224, U+522B, U+5230, U+5236, U+524D, U+529B, U+529E, U+52A0-52A1, U+52A8-52A9, U+5316, U+533A, U+5355, U+5373-5374, U+539F, U+53BB, U+53CA, U+53CD, U+53D1, U+53D6-53D8, U+53E3, U+53E6, U+53EA, U+53EF, U+53F7, U+5403, U+5408, U+540C-540E, U+5411, U+544A, U+5473, U+547D, U+548C, U+54EA, U+552F, U+5668, U+56DE, U+56E0, U+56FA, U+56FE, U+5728, U+5730, U+57DF, U+57FA, U+5904, U+590D, U+5916, U+591A, U+591F, U+5927, U+5931, U+5934, U+597D, U+5982, U+59CB, U+5B50, U+5B57-5B58, U+5B66, U+5B83, U+5B89, U+5B8C, U+5B9A, U+5B9E, U+5BB6, U+5BB9, U+5BD3, U+5BDF, U+5BF9, U+5BFC, U+5C0F, U+5C11, U+5C31, U+5C40, U+5C42, U+5C55, U+5C5E, U+5DE5, U+5DF1-5DF2, U+5E03, U+5E26, U+5E38, U+5E76, U+5E94-5E95, U+5EA6, U+5EFA, U+5F00, U+5F0F, U+5F20, U+5F3A, U+5F53, U+5F62, U+5F97, U+5FC3, U+5FC5, U+5FF5, U+6001, U+600E, U+6027, U+603B, U+6070, U+60C5, U+60F3, U+610F, U+611F, U+6210, U+6216, U+6240, U+624B, U+624D, U+6253, U+6279, U+627E-627F, U+628A, U+6298, U+62A5, U+62C9, U+62D2, U+62E9, U+6301, U+6307, U+6309, U+6362, U+636E, U+6388-6389, U+63A5, U+63A8, U+63D0, U+6458, U+6491, U+652F, U+6536, U+6539, U+653E, U+6545, U+6548, U+6570, U+6574, U+6587, U+65AF-65B0, U+65B9, U+65E0, U+65E5-65E6, U+65E9, U+65F6, U+660E, U+662F, U+663E, U+666E, U+66F4, U+6700, U+6709, U+670D, U+672A, U+672C, U+673A, U+6743, U+6761, U+6765, U+6784, U+679C, U+67D0, U+67E5, U+6807, U+6837-6838, U+683C, U+68C0, U+6982, U+6B21, U+6B62-6B63, U+6B7B, U+6BB5, U+6BCF, U+6BD4, U+6C38, U+6C42, U+6CA1, U+6CD5, U+6CE8, U+6D3B, U+6D4B, U+6E05, U+6E90, U+7075, U+70B9, U+7136, U+7279, U+72B6, U+73B0, U+7406, U+751F, U+7528, U+7531, U+754C, U+7559, U+767D, U+7684, U+76EE, U+76F4, U+76F8, U+770B, U+771F, U+7740, U+77E5, U+786E, U+793A, U+79BB, U+79CD, U+79F0, U+7A0B, U+7A7A, U+7AE0, U+7B2C, U+7B97, U+7C7B, U+7D20, U+7EA7, U+7EBF, U+7ECF, U+7ED3, U+7ED9, U+7EDF, U+7EE7, U+7EED, U+7F6E, U+8005, U+800C, U+80FD, U+81EA, U+8282, U+843D, U+884C, U+8868, U+88AB, U+897F, U+8981, U+89C1, U+89C4, U+89E3, U+8A00, U+8BA4, U+8BA9, U+8BB0, U+8BB2, U+8BBA, U+8BC1, U+8BC4, U+8BD5, U+8BEF, U+8BF4, U+8BFB, U+8C61, U+8D39, U+8D77, U+8DB3, U+8DEF, U+8EAB, U+8F6C, U+8F85, U+8FBE, U+8FC7, U+8FD0, U+8FD8-8FD9, U+8FDB-8FDC, U+9009, U+900F-9010, U+901A, U+9020, U+9053, U+90A3, U+90E8, U+90FD, U+91CC-91CD, U+91CF, U+9519, U+952E, U+957F, U+95E8, U+95EE, U+95F4, U+9605, U+9636, U+9650, U+966A, U+968F, U+9700, U+975E, U+9760, U+9762, U+987B, U+9884, U+9898, U+9A8C, U+9AD8, U+FF0C, U+FF1A-FF1B, U+FF1F; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-701923fc936e.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+4E01, U+4E03, U+4E16, U+4E1A, U+4E22, U+4E25, U+4E45, U+4E50, U+4E70-4E71, U+4E88, U+4E94, U+4EAB, U+4EC5, U+4ECA, U+4EFD, U+4F17-4F18, U+4F24, U+4F38, U+4F3C, U+4F4E, U+4F59, U+4FBF, U+4FEE, U+5012, U+5019, U+501F, U+503A, U+5047, U+504F, U+5065, U+5076-5077, U+50A8, U+50CF, U+513F, U+5141, U+5143, U+5145, U+5149, U+514B, U+514D, U+516D, U+5178, U+517B, U+5192, U+51B5, U+51B7, U+51C0, U+51CF, U+51ED, U+51FB, U+5217, U+521B, U+521D, U+5229, U+523A-523B, U+524A, U+5269, U+529F, U+52BF, U+5305, U+5341, U+534A, U+534F, U+5356, U+5361, U+5370, U+5386, U+538B, U+53C8, U+53CC, U+53E4-53E5, U+53F0, U+53F2, U+5404, U+5426, U+542B-542C, U+5438, U+5458, U+54C1, U+54C8, U+54CD, U+5546, U+5584, U+56DB, U+56E2, U+56F0, U+56F4, U+573A, U+574F, U+5757, U+575A, U+578B, U+5851, U+5883, U+589E, U+58F0, U+5907, U+5929-592B, U+5957, U+5A01, U+5B88, U+5BA1-5BA3, U+5BB3, U+5BBD, U+5BC6, U+5BCC, U+5BFB, U+5C01, U+5C06, U+5C14, U+5C3C-5C3E, U+5DE7, U+5DEE, U+5E0C, U+5E2E, U+5E72-5E74, U+5E7F, U+5E8F, U+5EF6, U+5F02-5F03, U+5F15, U+5F31, U+5F52, U+5F55, U+5F80, U+5F84-5F85, U+5F88, U+5F8B, U+5FB7, U+5FC6, U+5FD7, U+5FEB, U+5FFD, U+6000, U+601D, U+606F, U+6076, U+6084, U+60E9, U+60EF, U+613F, U+6162, U+620F, U+6211, U+6237, U+6267, U+6269, U+6280, U+6293, U+6295, U+6297, U+62A4, U+62BD, U+62C5, U+62E5, U+62FF, U+6311, U+635F, U+6392, U+63A2, U+63A7, U+63A9, U+63CF, U+63ED, U+642D, U+64AD, U+64CD, U+6551, U+6559, U+6563, U+65AD, U+65E2, U+65E7, U+6602, U+6613, U+666F, U+667A, U+6682, U+66B4, U+66F2, U+66FF, U+671B, U+671F, U+672F, U+6734, U+6742, U+675F, U+677E, U+6781, U+6790, U+67B6, U+6839, U+6848, U+6A21, U+6B64-6B65, U+6BC1, U+6BCD, U+6BEB, U+6C14, U+6C34, U+6D3E, U+6D41, U+6D88, U+6DF1, U+6DF7, U+6E38, U+6ED1, U+6EE1, U+6F14, U+6FC0, U+7167, U+7236, U+7247, U+7269, U+72EC, U+731C, U+7387, U+73AF, U+753B, U+7565, U+7591, U+75C5, U+75DB, U+76D6, U+76D8, U+77ED, U+7801, U+7834, U+7840, U+78B0, U+795E, U+7981, U+79C1, U+79D1, U+79D8, U+79FB, U+7A33, U+7A76-7A77, U+7A7F, U+7A81, U+7ACB, U+7AD9, U+7ADE-7ADF, U+7AEF, U+7B26, U+7B49, U+7B54, U+7B56, U+7B7E, U+7B80, U+7BA1, U+7C97, U+7CBE, U+7CCA, U+7CDF, U+7CFB, U+7D22, U+7D27, U+7EA6, U+7EAA, U+7EAF, U+7EB3, U+7EC3-7EC4, U+7EC6, U+7EC8, U+7EDC-7EDD, U+7EF4, U+7F13, U+7F16, U+7F29, U+7F3A, U+7F51, U+7F57, U+7F5A, U+7F8E, U+7FA4, U+8003, U+804C, U+8054, U+80B2, U+80CC, U+80DC, U+8131, U+81F4, U+826F, U+8272, U+82B1, U+82E6, U+8363, U+83B7, U+85CF, U+8861, U+8865, U+88C1, U+88C5, U+89C2, U+89C6, U+89C9, U+8B66, U+8BA1, U+8BAE, U+8BB8, U+8BBE-8BBF, U+8BC6, U+8BCD, U+8BDA, U+8BDD, U+8BE5, U+8BED, U+8BFA, U+8C01, U+8C03, U+8D1F, U+8D23, U+8D25-8D26, U+8D28, U+8D2A, U+8D44, U+8D56, U+8D62, U+8D70, U+8D85, U+8D8A, U+8DD1, U+8DDF, U+8F7B, U+8F83, U+8F91, U+8F93, U+8FB9, U+8FD1, U+8FDE-8FDF, U+8FEB, U+8FF0, U+8FFD, U+9000-9002, U+9012, U+901F, U+903B, U+9047, U+904D, U+9057, U+907F, U+914D, U+91CA, U+91D1, U+9488, U+94B1, U+94FE, U+9501, U+95ED, U+95F2, U+963B, U+9644-9645, U+9664, U+9669, U+9677, U+9690, U+96BE, U+96C6, U+96F6, U+9732, U+9879-987A, U+9886, U+98CE, U+9996, U+9A6C, U+9A71, U+9A73, U+9ED8, U+FF08-FF09; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-f805d23b3db3.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+4E07, U+4E13, U+4E27, U+4E32, U+4E34, U+4E3E, U+4E4F, U+4E54, U+4E5D, U+4E61, U+4E9A, U+4EA1, U+4EAE, U+4EB2, U+4ECB, U+4EEA, U+4EF0, U+4EFF, U+4F0A, U+4F1F, U+4F26, U+4F2A, U+4F2F-4F30, U+4F34, U+4F73, U+4FA7, U+4FAE, U+4FC3, U+4FD7, U+500D, U+503E, U+507F, U+50B2, U+5144, U+516B, U+5174, U+51B0, U+51BB, U+51D1, U+51E1, U+51FD, U+5211, U+521A, U+5265, U+5267, U+526F, U+5272, U+52AA, U+52B1, U+52B3, U+52C7, U+52D2, U+533B, U+533F, U+5343, U+5347, U+5351, U+535A, U+5360, U+536B, U+5371, U+5377, U+538C, U+53C2, U+53CB, U+53D9, U+53E0, U+53F8, U+5413, U+5417, U+542F, U+5435, U+5448, U+5468, U+54C0, U+5524, U+5582, U+5634, U+56FD, U+5750, U+5766, U+5782, U+57AE, U+57CE, U+5806, U+5835, U+584C, U+5854, U+585E, U+586B, U+5899, U+58EB, U+58EE, U+5939-593A, U+5947, U+5949, U+5951, U+5956, U+5965, U+5973-5974, U+5979, U+5987, U+59A5, U+59C6, U+59FB, U+5A5A, U+5A6A, U+5B55, U+5B64, U+5B69, U+5B8F, U+5B97-5B98, U+5B9C, U+5BA4, U+5C04, U+5C0A, U+5C16, U+5C1D, U+5C3A, U+5C45, U+5C4B, U+5D07, U+5D29, U+5D4C, U+5DF4, U+5E01-5E02, U+5E08, U+5E2D, U+5E45, U+5E78, U+5E7B, U+5E87, U+5E93, U+5EA7, U+5EAD, U+5EB7, U+5EC9, U+5F04, U+5F17, U+5F1F, U+5F39, U+5F71, U+5F7B-5F7C, U+5F81, U+5F92, U+5FA1, U+5FAA, U+5FAE, U+5FCD, U+5FD8, U+6012, U+6015, U+601C, U+6028, U+602A, U+6050, U+6062, U+6068-6069, U+607C, U+6094, U+60AC, U+60AF, U+60CA, U+60D1, U+60E7, U+6109, U+611A, U+6148, U+614C, U+6168, U+6170, U+6177, U+61C2, U+6218, U+622A, U+623F, U+6258, U+626D, U+62B5, U+62C6, U+62DB-62DC, U+62EC, U+62FC, U+6321, U+6324, U+6355, U+638C, U+63D2, U+63E1, U+641C, U+6446, U+6492, U+649E, U+64A4, U+653B, U+654C, U+656C, U+6597, U+65A5, U+65BD, U+65C1, U+65CF, U+661F-6620, U+665A, U+6697, U+671D, U+6821, U+6846, U+6863, U+6869, U+68A6, U+68AF, U+6B32, U+6B3A, U+6B3E, U+6B66, U+6B8A-6B8B, U+6C11, U+6C89, U+6CBB, U+6CBF, U+6CC4, U+6CDB, U+6CE2, U+6D1B, U+6D1E, U+6D4E, U+6D6A, U+6D6E, U+6E29, U+6E34, U+6E83, U+6EAF, U+6ECB, U+6EE4, U+6F0F, U+706B, U+706D, U+70AB, U+70C8, U+70E6, U+70ED, U+719F, U+7231, U+7248, U+72AF, U+72C2, U+732E, U+738B, U+739B, U+73A9, U+7410, U+751A, U+7537, U+754F, U+758F, U+75BE, U+75C7, U+767E, U+76CA, U+76D1, U+76F2, U+76FE, U+7701, U+773C, U+77DB, U+786C, U+788D-788E, U+793C, U+793E, U+798F, U+7A84, U+7B14, U+7C73, U+7CB9, U+7E41, U+7EA0, U+7EB5, U+7EC7, U+7ED1, U+7ED5, U+7F18, U+7F1D, U+7F6A, U+7FFB, U+8000-8001, U+8010, U+805A, U+806A, U+80A1, U+80AF, U+80C6, U+80E1, U+8106, U+8111, U+811A, U+81F3, U+820D, U+8212, U+822C, U+827A, U+82F1, U+8303, U+8352, U+836F, U+83AB, U+83B1, U+8428, U+8457, U+8499, U+8584, U+8651, U+865A, U+8680, U+8857, U+88C2, U+88F8, U+8986, U+89D2, U+89E6, U+8A89, U+8BA8, U+8BAD, U+8BC9, U+8BD1, U+8BE2, U+8BF1, U+8BF7, U+8C08, U+8C0B, U+8C0E, U+8C1C, U+8C8C, U+8D1D, U+8D22, U+8D27, U+8D2B, U+8D2F, U+8D35, U+8D4B, U+8D4F, U+8D5A, U+8D5E, U+8DA3, U+8DE8, U+8DF3, U+8DF5, U+8E2A, U+8F6E-8F6F, U+8F7D, U+8F9E, U+8FA9, U+8FB1, U+8FC1, U+8FD4, U+8FF9, U+9003, U+9014, U+903C, U+906E, U+90BB, U+9177, U+9192, U+91C7, U+91CE, U+9489, U+949F, U+9500, U+9510, U+961F, U+9632, U+963F, U+9648, U+964C-964D, U+9694, U+969C, U+96C5, U+96F7, U+970D, U+9759, U+97F3, U+9875-9876, U+989D, U+98A0, U+9EBB; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-6e52285bfbde.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+4E11, U+4E1D, U+4E30, U+4E3D, U+4E58, U+4E8F, U+4EC1, U+4EC6, U+4F0D, U+4F0F, U+4F11, U+4F50, U+4F88, U+4FC4, U+50AC, U+50BB, U+50F5, U+5146, U+5151, U+515C, U+5170, U+5175, U+5179, U+517C, U+5195, U+519B, U+51DD, U+51EF, U+51F6, U+5200, U+5220, U+5237, U+5242, U+526A, U+52A3, U+52AB, U+52B2, U+52C3, U+52E4, U+5306, U+5320, U+532E, U+5339, U+5362, U+5382, U+53C9, U+53DB, U+53F3, U+540A, U+541E, U+5439, U+543B, U+547C, U+548E, U+54AC, U+54E5, U+54F2, U+5510, U+552E, U+5531, U+559C-559D, U+5618, U+5632, U+566A, U+5706, U+5708, U+571F, U+5723, U+573E, U+5740, U+5747, U+5783, U+57AB, U+57C3, U+57CB, U+57F9, U+5802, U+5815, U+591C, U+5938, U+594B, U+594F, U+5954, U+5962, U+5984, U+5992, U+59A8, U+59B9, U+59BB, U+59D0-59D1, U+59D4, U+59FF, U+5A05, U+5A1C, U+5A74, U+5AC9, U+5ACC, U+5B54, U+5B63, U+5B81, U+5BB4, U+5BC4, U+5BD2, U+5BE1, U+5BF8, U+5C09, U+5C18, U+5C1A, U+5C48, U+5C4F, U+5C81, U+5DE6, U+5E1D, U+5E55, U+5E8A, U+5E9E-5E9F, U+5F0A, U+5F26-5F27, U+5F2F, U+5F69, U+5F79, U+5FBD, U+5FCC, U+5FE0, U+5FE7, U+5FF1, U+6025, U+602F, U+604B, U+6052, U+6055, U+6073, U+6089, U+609F, U+60B2, U+60EB, U+60F0, U+6108, U+6124, U+614E, U+6167, U+61D2, U+61E6, U+6208, U+6212, U+6234, U+6247, U+624E, U+6254, U+625B, U+6263, U+626B-626C, U+626E, U+6270, U+6291, U+629A-629B, U+62A2, U+62AC, U+62B1, U+62B9, U+62BC, U+62D3, U+62D6, U+62DF, U+62E6, U+62F4, U+62F7, U+6302, U+6323, U+6325, U+632A-632B, U+633A, U+633D, U+6346, U+6349, U+6377, U+63AA, U+63F4, U+640F, U+642C, U+643A, U+6447, U+644A, U+6467, U+6469, U+64CE, U+652B, U+653F, U+654F, U+655E, U+6562, U+6566, U+6572, U+6599, U+659C, U+65C5, U+65CB, U+65D7, U+6696, U+66FC, U+66FE, U+6708, U+670B, U+6728, U+6735, U+673D, U+6740, U+6746, U+6750, U+675C, U+6760, U+677F, U+679A, U+67AA, U+67D3-67D4, U+67EF, U+6808, U+6811, U+683D, U+684C, U+6865, U+6885, U+68B0, U+68EE, U+68F5, U+690D, U+695A, U+69A8, U+6B20, U+6B22-6B23, U+6B27, U+6B4C, U+6B96, U+6BD2, U+6C47, U+6C49, U+6C60-6C61, U+6C99, U+6CE1, U+6CF0, U+6D01, U+6D17, U+6D32, U+6D45, U+6D77, U+6D8C, U+6DA6, U+6DA8-6DA9, U+6DB5, U+6DE1, U+6DFB, U+6EA2, U+6EB6, U+6F02, U+6F20, U+6F2B, U+6F5C, U+704C, U+707E, U+70B8, U+70C2, U+70E7, U+7206, U+724C, U+7262, U+72D7, U+72E1, U+730E, U+7403, U+7535, U+756A, U+7597, U+75AF, U+75B2, U+75D5, U+767B, U+76AE, U+775B, U+7761, U+7763, U+7784, U+7792, U+77E9, U+77F3, U+7814, U+78C1, U+78E8, U+7956, U+7968, U+79E9, U+79EF, U+7A00, U+7A83, U+7A97, U+7AA5, U+7AE5, U+7B11, U+7CD5, U+7CD9, U+7EB8, U+7EBD, U+7ED8, U+7EEA, U+7EF3, U+7F9E, U+8017, U+8033, U+803B, U+80C1, U+80C3, U+8138, U+8150, U+821E, U+8239, U+8328, U+8361, U+84C4, U+8511, U+867D, U+878D, U+8822, U+8840, U+8863, U+8870, U+888B, U+8BA2, U+8BAF, U+8BC8, U+8BCA, U+8BD7, U+8BFE, U+8C26, U+8C28, U+8C2C, U+8C41, U+8D21, U+8D2C-8D2D, U+8D34, U+8D3C, U+8D4C, U+8D5B, U+8D6B, U+8D76, U+8D9F, U+8DDD, U+8EB2, U+8F9C, U+8FA8, U+8FCE, U+8FDD, U+8FED, U+8FF7, U+9006, U+9152, U+916C, U+9178, U+9189, U+949D, U+94F8, U+94FA, U+9547, U+955C, U+95F9, U+95FB, U+9634, U+9662, U+96C4, U+96C7, U+9752, U+9769, U+987E-987F, U+98DF, U+9965, U+9970, U+997F, U+9988, U+9A84, U+9A97, U+9B3C, U+9B42, U+9B54, U+9C81, U+9EA6, U+9EC4, U+9ED1, U+9F13, U+9F50; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-d9eb276a2161.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+4E08, U+4E1B, U+4E4C, U+4E5E, U+4EA8, U+4EBF, U+4EC7, U+4ED3-4ED4, U+4F01, U+4F5B, U+4F69, U+4F8D, U+4FA3, U+4FA6, U+4FB5, U+4FE9, U+4FF1, U+515A, U+517D, U+5203, U+5238-5239, U+5251, U+5254, U+5256, U+529D, U+52D8, U+52DF, U+5317, U+5323, U+534E, U+5353, U+5357, U+5384, U+5389, U+539A, U+53A2, U+53EB-53EC, U+53F6, U+5401, U+5409, U+5410, U+541B, U+5492, U+54E8, U+54ED, U+558A, U+55A7, U+55BB, U+55D3, U+5669, U+566C, U+56ED, U+575B, U+575F, U+5821, U+582A, U+5893, U+58C1, U+58F6, U+592E, U+5948, U+5986, U+59AE, U+59D3, U+5A07, U+5A18, U+5A36, U+5A46, U+5A92, U+5AC1, U+5B87, U+5B99, U+5B9D, U+5BA0, U+5BAB, U+5BB0, U+5BBE-5BBF, U+5BFF, U+5C24, U+5C38, U+5C51, U+5C71, U+5CA9, U+5CF0, U+5DE8-5DE9, U+5DEB, U+5E15, U+5E27, U+5E3D, U+5E42, U+5E4C, U+5E7D, U+5E99, U+5EB8, U+5ECA, U+5FCF, U+5FD9, U+6016, U+606D, U+60A6, U+60BC, U+60D5, U+60E8, U+6101, U+6127, U+61C8, U+6241, U+626F, U+62AB, U+62D9, U+62E2, U+62E8, U+62EF, U+62FD-62FE, U+634D, U+638F, U+63A0, U+63BA, U+6401, U+6405, U+641E, U+64E6, U+6525, U+658B, U+65F7, U+6614, U+662D, U+6635, U+6643, U+6670, U+6687, U+6717, U+672B, U+6797, U+67AF, U+67C4, U+67CF, U+67F1, U+6881, U+68FA, U+697C, U+699C, U+6B47, U+6B49, U+6B67, U+6B6A, U+6BD5, U+6BDB, U+6C5F, U+6C83, U+6C9F, U+6CB9, U+6CCA, U+6CE5, U+6CEA, U+6CFC, U+6D0B, U+6D4F, U+6D82, U+6D89, U+6DAF, U+6DC6, U+6DD8, U+6E10, U+6E21, U+6E32, U+6E56, U+6E9C, U+6ED5, U+6EDA, U+6EDE, U+6EE5, U+6F6E, U+706F, U+7089, U+70BC, U+70D9, U+70DB, U+70DF, U+7126, U+71AC, U+71B5, U+71C3, U+71D5, U+722C, U+7235, U+7259, U+725B, U+725F, U+7267, U+7272, U+7275, U+727A, U+72B9, U+72E9, U+72F1, U+72FC, U+731B, U+733E, U+73ED, U+7422, U+7433, U+745F, U+74DC, U+74E6, U+74F6, U+7532-7533, U+759A, U+75BC, U+75EA, U+75F4, U+7620, U+762B, U+7656, U+766B, U+76D2, U+76D7, U+76DB, U+76EF, U+7709, U+7720, U+778E, U+77A5, U+77AC, U+77DC, U+77FF, U+7838, U+7948, U+795D, U+7965, U+796D, U+7977-7978, U+79D2, U+79DF, U+7A0D, U+7A3D, U+7B28, U+7B51, U+7B79, U+7BC7, U+7C3F, U+7C89, U+7C92, U+7CAE, U+7D2F, U+7EA2, U+7EC5, U+7ECD, U+7ED2, U+7EDE, U+7EF7, U+7EFC, U+7F00, U+7F1A, U+7F20, U+7F34, U+7F55, U+7F72, U+7FBD, U+7FF0, U+8026, U+8036, U+8083, U+8089, U+8096, U+80A4, U+80AE, U+80C0, U+80F8, U+810F, U+813E, U+817B, U+819B-819C, U+81A8, U+81ED, U+8206, U+820C, U+822A, U+8235, U+8299, U+82CF, U+82DB, U+82DF, U+8349, U+8350, U+8377, U+8389, U+838E, U+83BD, U+83F2, U+8425, U+846C, U+8471, U+8482, U+853D, U+8650, U+8654, U+86EE, U+8702, U+8845, U+8854, U+88AD, U+88F9, U+89C8, U+8A79, U+8A93, U+8BBD, U+8BC5, U+8BDE, U+8BE1, U+8BE6, U+8BF8, U+8C05, U+8C0A, U+8C10, U+8C13, U+8C15, U+8C31, U+8C34-8C35, U+8C6B, U+8D29, U+8D37, U+8D3A, U+8D4E, U+8D54, U+8D60, U+8D64, U+8D66, U+8D81, U+8DC3, U+8E29, U+8E81, U+8EAC, U+8EAF, U+8F66, U+8F74, U+8F76, U+8F86, U+8F9B, U+8FC5, U+8FC8, U+8FE6, U+8FEA, U+900A, U+9017, U+901D, U+902E, U+9065, U+906D, U+9075, U+9080, U+90A6, U+90AA, U+90C1, U+9119, U+949E, U+94A2, U+94A5-94A6, U+94A9, U+94BB, U+94C1, U+94F6, U+951A, U+9524, U+9573, U+95EA, U+95EF, U+9614, U+9631, U+9633, U+9635, U+9640, U+9646, U+9686, U+96EA, U+9706-9707, U+97A0, U+97E6, U+987D, U+9888, U+9891, U+9897, U+98DE, U+996D, U+9975, U+9999, U+9AA4, U+9B45; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-6aed8a2354d9.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+4E18, U+4E39, U+4E91, U+4EAD, U+4EB5, U+4ED1, U+4ED9, U+4F19, U+4F6C, U+4FA0, U+4FA5, U+4FD8, U+4FDA, U+4FED, U+4FEF, U+5014, U+501A, U+50ED, U+518C, U+5197, U+519C, U+51A0, U+51AF, U+51C4, U+51C9, U+51CC, U+51F3, U+51F8, U+5243, U+5288, U+52C9, U+52FE, U+5300, U+5319, U+5348, U+5367, U+5378, U+5385, U+53F9, U+541D, U+541F, U+543C, U+5446, U+547B, U+5496, U+5499, U+54A8, U+54AF, U+54C4, U+54D1, U+54D7, U+552C, U+5561, U+5589, U+5598, U+55B7, U+55C5, U+561F, U+5631, U+56CA, U+56D4, U+56DA, U+56E4, U+574A, U+574D, U+5751, U+5761, U+5769, U+5784, U+5792, U+57DA, U+58F3, U+590F, U+5960, U+5976, U+5988, U+5999, U+59DC, U+5A03, U+5A7F, U+5A9A, U+5AE9, U+5B85, U+5BC2, U+5BE5, U+5C2C, U+5C34, U+5C60, U+5C91, U+5C97, U+5C9B, U+5CB8, U+5CBF, U+5CE1, U+5D2D, U+5DE1-5DE2, U+5E06, U+5E10, U+5E1C, U+5E7C, U+5E84, U+5E86, U+5E97, U+5E9C, U+5ED3, U+5ED6, U+5EF7, U+5F08, U+5F11, U+5F6D, U+6035, U+604D, U+6064, U+6096, U+60A3, U+60A8, U+60DA, U+60DC, U+60E0, U+60F9, U+6151, U+6155, U+618E, U+61A9, U+61F5, U+621A-621B, U+622E, U+6233, U+6276, U+6284, U+6296, U+62C2, U+62CC-62CD, U+62D4, U+62D8, U+62E7, U+62F3, U+6316, U+6328, U+632F, U+6342, U+634F-6350, U+635E, U+6361, U+6367, U+6382, U+6398, U+63B3, U+63B7, U+63FD, U+6444, U+6478-6479, U+6495, U+64A9, U+64AC, U+64AE, U+64B0, U+64BC, U+6500, U+6555, U+655B, U+6590, U+659F, U+65A9, U+660F, U+6625, U+6627-6628, U+664B, U+6652, U+6668, U+6676, U+66DD, U+674E, U+6756, U+6770, U+6775, U+67A2, U+67F4, U+6816, U+6841, U+6845, U+6851, U+6868, U+6876, U+68C9, U+68CB, U+68D2, U+68D8, U+6905, U+692D, U+6960, U+69CC, U+69DB, U+69FD, U+6A2A, U+6B89, U+6BA1, U+6BB4, U+6BB7, U+6BD7, U+6BEF, U+6C40, U+6C50, U+6C57, U+6C64, U+6C70, U+6C72, U+6C9B, U+6CA6, U+6CAB, U+6CAE, U+6CB3, U+6CBE, U+6CC9, U+6CE3, U+6CF5, U+6CFB, U+6D25, U+6D2A, U+6D3D, U+6D47, U+6D4A, U+6D51, U+6D66, U+6D69, U+6D78, U+6D85, U+6D8E, U+6DEC, U+6E0E, U+6E14, U+6E20, U+6E23, U+6E2F, U+6E3A, U+6E7F, U+6EBA, U+6ED3-6ED4, U+6F06, U+6F58, U+6FA1, U+7070, U+707C, U+708E, U+7092, U+70E9, U+70EB, U+710A, U+7115, U+711A, U+7130, U+714C, U+7164, U+717D, U+718A, U+718F, U+7194, U+722A, U+72C4, U+72D9, U+72E0, U+72ED-72EE, U+7334, U+733F, U+7360, U+7384, U+73AB, U+73C0, U+741B, U+7425, U+7455, U+745E, U+7470, U+74E3, U+751C, U+7530, U+755C, U+7574, U+7578, U+75AB, U+75CA, U+75F9, U+761F, U+7654, U+7687-7688, U+76DF, U+76FC, U+7768, U+776B, U+7779, U+77A7, U+77AD, U+77E2, U+780D, U+7816, U+7827, U+783E, U+7891, U+78BE, U+78C5, U+7901, U+7980, U+7985, U+79A7, U+79C3, U+79CB, U+79FD, U+7A0E, U+7A1A, U+7A20, U+7A3F, U+7A46, U+7A74, U+7A91, U+7A98, U+7A9D, U+7A9F, U+7ABF, U+7AED, U+7B03, U+7B06, U+7B3C, U+7B4B, U+7B5B, U+7BB1, U+7BB4, U+7BE1, U+7BF1, U+7C07, U+7C27, U+7C98, U+7CD6, U+7D0A, U+7EAC, U+7EB9-7EBA, U+7EE9, U+7EF0, U+7EFF, U+7F14, U+7F1B, U+7F2A, U+7F69, U+7F8A, U+7FB8, U+7FC1, U+800D, U+803D, U+804A-804B, U+8086, U+808C, U+80A0, U+80A2, U+80A5, U+80A9-80AA, U+80BA, U+80CE, U+80E5, U+80F6, U+8102, U+8109-810A, U+8154-8155, U+8165, U+8170, U+817F, U+818F, U+81C2, U+81C6, U+8200, U+8205, U+821F, U+8230, U+9A6F, U+9A7B, U+9A82, U+9A91, U+9AA8, U+9AB8, U+9AE6, U+9C7C, U+9C9C, U+9CB8, U+9E3F, U+9ECE, U+9F7F, U+9F84, U+FF01; }
@font-face { font-family: "FeedLitra Serif"; src: url("/fonts/open-books/fl-serif-67f2749d712d.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+8231, U+8237, U+8247, U+824F, U+8258, U+8270, U+827E, U+82AC-82AD, U+82B3, U+82CD, U+82D7, U+830E, U+832B, U+8339, U+83DC, U+83E0, U+841D, U+845B, U+8463, U+84DD, U+84EC, U+8513, U+853C, U+8574, U+857E, U+85C9, U+864E, U+866B, U+8671, U+86CB, U+8715, U+871C, U+8721, U+8737, U+87BA, U+884D, U+886B-886C, U+8877, U+888D, U+88D8, U+88F4, U+892A-892B, U+89C5, U+8A8A, U+8BA5, U+8BB6, U+8BCF, U+8BE8, U+8BF2, U+8BFD, U+8C04, U+8C0D, U+8C11, U+8C22-8C24, U+8C37, U+8C6A, U+8C79-8C7A, U+8D38, U+8D3F, U+8D42-8D43, U+8D50, U+8D8B, U+8DB4, U+8DBE, U+8DCC, U+8E0F, U+8E22, U+8EBA, U+8F67-8F68, U+8F70, U+8F88-8F89, U+8F9F, U+8FB0, U+8FBD, U+8FF8, U+901B, U+901E, U+9022, U+9038, U+903E, U+9042, U+904F-9050, U+9063, U+90AE, U+90CE, U+90D1, U+914C, U+9157, U+915D, U+917F, U+91BA, U+9493, U+94AE, U+94C3, U+94C5, U+94E0, U+94F2, U+9521, U+9525, U+953B, U+9540, U+9556, U+95F7, U+9600, U+9608, U+9610, U+964B, U+9661, U+9675, U+9699, U+96CC, U+96D5, U+96E8, U+96F3, U+96FE, U+971E, U+9739, U+9761, U+9774, U+978D, U+97E7, U+9881-9882, U+9885, U+9896, U+989A, U+9910, U+996E, U+9971, U+9976, U+997C, U+9985-9986, U+9A6D-9A6E, U+9A70, U+9A74, U+9A76, U+9A7C, U+9A7E, U+9A87, U+9A9A, U+9AD3, U+9B23, U+9B41, U+9C9F, U+9CA8, U+9E1F, U+9E23, U+9E2D, U+9E45, U+9E49, U+9E66, U+9E6B, U+9E70, U+9ECF, U+9EDC, U+9F3B, U+9F8A, U+9F8C, U+9F99; }
@font-face { font-family: "FeedLitra Serif Punct"; src: url("/fonts/open-books/fl-serif-punct-9fbcf4056561.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+2018-201F, U+2026; }
@font-face { font-family: "FeedLitra Sans Punct"; src: url("/fonts/open-books/fl-sans-punct-79bffe201686.woff2") format("woff2"); font-weight: 100 900; font-display: swap; unicode-range: U+2018-201F, U+2026; }
/* @generated open-books-fonts:end */
