/* 
模块：设计变量
源码：modules/00-tokens.css
职责：颜色、字体、阴影、阅读字号和管理栏偏移；其他模块统一使用这些变量。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
:root {
  /* 色彩：纸底、卡片、正文、次级文字、强调、状态与边界。 */
  --bg: #fbf7ed;
  --paper: #fffcf5;
  --ink: #48342d;
  --muted: #78645a;
  --accent: #a24636;
  --blush: #fbe5dc;
  --sage: #e9eedc;
  --green: #466047;
  --line: #e6d9c6;
  --primary: #f6b8a7;
  --primary-ink: #6d3028;
  --disabled: #eee4d7; /* 纸卡阴影使用轻浅两层，不承担结构分隔。 */
  --shadow:
    0 2px 4px rgba(186, 150, 121, 0.045), 0 6px 12px rgba(170, 137, 107, 0.055); /* 字体采用系统回退；阅读字号与管理栏偏移保持集中配置。 */
  --serif: "Noto Serif SC", "Songti SC", "SimSun", serif;
  --sans: "Noto Sans SC", "Microsoft YaHei", "PingFang SC", sans-serif;
  --reader-font: 18px;
  --admin-bar: 0px;
  color-scheme: light;
}


/* 
模块：基础与通用控件
源码：modules/01-base-controls.css
职责：元素默认样式、容器、纸卡、图标、按钮、状态徽标、焦点与屏幕阅读器文本。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--admin-bar) + 24px);
}
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 15px/1.8 var(--sans);
  overflow-wrap: break-word;
}
a {
  color: inherit;
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
  text-underline-offset: 5px;
}
button,
input,
textarea,
select {
  font: inherit;
}
button {
  cursor: pointer;
}
button,
a,
input,
textarea,
summary {
  touch-action: manipulation;
}
button:disabled {
  cursor: default;
}
img {
  display: block;
  max-width: 100%;
  height: auto;
}
figure {
  margin: 0;
}
p {
  margin: 0 0 18px;
}
h1,
h2,
h3 {
  font-family: var(--serif);
  font-weight: 600;
  line-height: 1.5;
  margin: 0 0 18px;
  overflow-wrap: anywhere;
}
h1 {
  font-size: 32px;
}
h2 {
  font-size: 24px;
}
h3 {
  font-size: 20px;
}
ul,
ol {
  margin-block: 0 20px;
}
input,
textarea {
  max-width: 100%;
}
.oneboy-dialog:not([open]) {
  display: none;
}
[hidden] {
  display: none !important;
}
:focus-visible {
  outline: 3px solid var(--green);
  outline-offset: 4px;
}
input:focus,
textarea:focus {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}
.container {
  width: calc(100% - 64px);
  max-width: 1248px;
  margin-inline: auto;
}
.paper {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--shadow);
}
.muted,
time {
  color: var(--muted);
} /* 视觉隐藏但保留给辅助技术；不要改成 display:none。 */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
} /* 键盘用户可以跳过头部导航，直接进入主内容。 */
.skip-link {
  position: fixed;
  top: -100px;
  left: 16px;
  padding: 12px 20px;
  background: var(--paper);
  z-index: 50;
}
.skip-link:focus {
  top: 12px;
}
.icon {
  width: 24px;
  height: 24px;
  flex: none;
  vertical-align: middle;
  fill: none;
  stroke: var(--accent);
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.button,
.icon-button,
.chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 9px 18px;
  border-radius: 12px;
  border: 1px solid #ebae97;
  background: var(--primary);
  color: var(--primary-ink);
  box-shadow: 0 3px 0 rgba(183, 131, 105, 0.065);
  text-align: center;
  line-height: 1.55;
  white-space: normal;
}
.button:hover {
  text-decoration: none;
  filter: brightness(0.985);
}
.secondary,
.icon-button {
  border-color: var(--line);
  background: var(--paper);
  color: var(--accent);
}
.icon-button {
  min-width: 44px;
  min-height: 44px;
  padding: 9px;
}
.button.disabled,
button:disabled {
  background: var(--disabled);
  border-color: var(--line);
  color: #715b50;
  box-shadow: none;
}
.badge,
.count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px 12px;
  background: var(--blush);
  color: var(--accent);
  border-radius: 8px;
  font-size: 13px;
}
.sage {
  background: var(--sage);
  color: var(--green);
}
.text-button {
  background: none;
  border: 0;
  color: var(--accent);
  min-height: 44px;
  padding: 6px 10px;
  text-decoration: underline;
  text-underline-offset: 4px;
}


/* 
模块：头部、导航与搜索入口
源码：modules/02-header-navigation.css
职责：站点品牌、工具区、搜索、语言触发器、主菜单及子菜单。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.topbar {
  background: #f3ebdd;
  font-size: 12px;
  color: var(--muted);
}
.topbar .container {
  display: flex;
  justify-content: space-between;
  padding-block: 4px;
}
.site-header {
  padding-block: 24px 20px;
  border-bottom: 1px solid var(--line);
  display: grid;
  grid-template-columns: minmax(0, 1fr) 294px;
  gap: 24px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 34px;
  min-width: 0;
}
.brand-mark {
  display: flex;
  align-items: center;
  gap: 18px;
}
.brand-cat {
  width: 112px;
  height: 76px;
  object-fit: contain;
}
.wordmark {
  font:
    italic 48px/1.3 "Segoe Print",
    "KaiTi",
    cursive;
  color: #ae6552;
  letter-spacing: 1px;
  border-bottom: 2px solid #f3b8a5;
  display: inline-block;
  white-space: nowrap;
}
.brand-title {
  font: 600 24px/1.5 var(--serif);
  margin-bottom: 12px;
}
.brand-copy .muted {
  font-size: 14px;
  margin: 0;
}
.header-tools {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
}
.header-search {
  width: 100%;
}
.search-form {
  display: flex;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: var(--paper);
  max-width: 100%;
}
.search-form input {
  min-width: 0;
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--ink);
  padding: 10px 16px;
  min-height: 48px;
  border-radius: 24px;
}
.search-form button {
  border: 0;
  background: transparent;
  box-shadow: none;
  flex: none;
}
.language-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 48px;
  padding: 9px 16px;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 12px;
  max-width: 100%;
  min-width: 224px;
  text-align: start;
}
.language-trigger span {
  flex: 1;
  overflow-wrap: anywhere;
}
.language-trigger .icon:last-child {
  stroke: var(--muted);
}
.primary-navigation {
  grid-column: 1/-1;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 5px;
}
.primary-navigation .menu {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.primary-navigation .menu-item {
  position: relative;
  display: flex;
  align-items: center;
}
.primary-navigation .menu-item > a {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 48px;
  padding: 9px 18px;
}
.current-menu-item > a {
  background: var(--blush);
  border-radius: 10px;
  position: relative;
}
.current-menu-item > a::after {
  content: "";
  position: absolute;
  inset-inline-start: calc(50% - 16px);
  bottom: 1px;
  width: 32px;
  height: 3px;
  background: var(--accent);
}
.primary-navigation .sub-menu {
  list-style: none;
  padding: 10px 20px;
  margin: 0;
}
.sub-menu a {
  display: block;
  padding: 8px;
}
.mobile-only {
  display: none;
}


/* 
模块：页面布局与首页主视觉
源码：modules/03-layout-home.css
职责：双栏/无侧栏布局、首页海岸插画、说明卡和栏目标题。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.site-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 32px;
  align-items: start;
  padding-block: 24px 0;
}
.without-sidebar {
  display: block;
}
.without-sidebar > main {
  max-width: 896px;
  margin-inline: auto;
}
.reading-layout > main {
  max-width: 832px;
}
.site-layout main,
.sidebar {
  min-width: 0;
}
.home-hero {
  padding: 9px;
  position: relative;
  min-height: 346px;
  margin-bottom: 38px;
}
.hero-image {
  width: 100%;
  height: 328px;
  object-fit: cover;
  border-radius: 9px;
}
.hero-note {
  position: absolute;
  top: 34px;
  right: 34px;
  width: 410px;
  padding: 25px 20px 28px;
  max-width: calc(100% - 68px);
}
.hero-note h1 {
  font-size: 30px;
}
.hero-note .button {
  margin-top: 4px;
}
.note-cat {
  position: absolute;
  right: 18px;
  bottom: 14px;
  width: 70px;
  height: 47px;
  object-fit: contain;
}
.home-section {
  margin-block: 26px 36px;
}
.section-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 0 0 18px;
}
.section-title h2 {
  margin: 0;
}
.section-title > h2,
.section-title:not(div) {
  font-size: 24px;
}
.section-title a {
  font: 14px/1.5 var(--sans);
  color: var(--accent);
}
.section-title .icon {
  margin-inline-end: 10px;
}


/* 
模块：文章卡与专题卡
源码：modules/04-content-cards.css
职责：图文/无图文章卡、元信息、网格卡和首页专题。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.post-grid,
.topic-grid,
.book-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.post-card {
  display: grid;
  grid-template-columns: 168px minmax(0, 1fr);
  gap: 20px;
  padding: 24px;
  margin-bottom: 18px;
} /* 无缩略图记录自然铺满，避免留下空图槽。 */
.post-card:not(:has(.post-thumbnail)) {
  display: block;
}
.post-thumbnail {
  align-self: start;
}
.post-image {
  width: 100%;
  height: 140px;
  object-fit: cover;
  border-radius: 8px;
}
.post-card-body .badge {
  margin-bottom: 12px;
}
.post-card h2,
.post-card h3 {
  font-size: 22px;
  margin-bottom: 12px;
}
.post-card-body p {
  font-size: 15px;
  margin-bottom: 14px;
}
.metadata {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}
.metadata span {
  display: inline-flex;
  gap: 7px;
  align-items: center;
}
.metadata .icon {
  width: 16px;
  height: 16px;
  stroke: var(--muted);
}
.grid-card {
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 12px;
}
.grid-card .post-image {
  height: 188px;
}
.grid-card .post-thumbnail {
  align-self: stretch;
  width: 100%;
}
.grid-card .post-card-body {
  padding: 0 8px 6px;
}
.grid-card .post-card-body p {
  margin-bottom: 22px;
}
.topic {
  padding: 18px 12px;
}
.topic h3 {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 20px;
  padding-inline: 4px;
}
.topic-image {
  width: 100%;
  height: 142px;
  object-fit: cover;
  border-radius: 7px;
}
.topic:has(img[src*="bookshelf"]) .topic-image {
  object-fit: contain;
}
.topic p {
  font-size: 14px;
  margin: 14px 4px 0;
}


/* 
模块：侧栏与小工具
源码：modules/05-sidebar-widgets.css
职责：作者、近期图文、分类、标签、日历、阅读资料与手机展开入口。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.sidebar-heading {
  display: none;
}
.sidebar-widgets {
  display: grid;
  gap: 18px;
}
.widget {
  padding: 24px 22px;
}
.widget p {
  font-size: 14px;
}
.widget-title {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 20px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 14px;
  margin-bottom: 18px;
  position: relative;
}
.widget-title::after {
  content: "";
  width: 42px;
  height: 3px;
  background: var(--sage);
  position: absolute;
  inset-inline-start: 0;
  bottom: -2px;
}
.widget .widget-link {
  display: inline-block;
  margin-top: 8px;
  min-height: 44px;
  padding-block: 10px;
}
.author-profile {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 18px;
}
.author-cat {
  width: 96px;
  height: 65px;
  object-fit: contain;
}
.author-profile h3 {
  font-size: 18px;
  margin-bottom: 6px;
}
.author-profile p {
  margin: 0;
  font-size: 12px;
}
.recent-native,
.recent-photos,
.widget-counts,
.recent-comments {
  list-style: none;
  padding: 0;
  margin: 0;
}
.recent-native li {
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.recent-native a {
  font-size: 14px;
}
.recent-native time,
.recent-photos time {
  display: block;
  font-size: 12px;
  margin-top: 7px;
}
.recent-photos li {
  display: flex;
  gap: 14px;
  margin-bottom: 18px;
  align-items: flex-start;
}
.recent-image {
  width: 72px;
  height: 70px;
  object-fit: cover;
  border-radius: 6px;
  flex: none;
}
.recent-photos a {
  font-size: 14px;
}
.widget-counts li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 48px;
  border-bottom: 1px solid var(--line);
}
.widget-counts a {
  padding-block: 9px;
  flex: 1;
}
.recent-comments li {
  margin-bottom: 12px;
  font-size: 13px;
  padding-block: 4px;
}
.tagcloud,
.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.tagcloud a {
  padding: 5px 12px;
  border-radius: 16px;
  background: var(--blush);
  font-size: 13px;
  color: var(--accent);
  line-height: 1.6;
}
.calendar {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: 12px;
  text-align: center;
}
.calendar caption {
  margin-bottom: 18px;
}
.calendar th {
  font-weight: 400;
  color: var(--muted);
}
.calendar td {
  height: 40px;
}
.calendar a {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 32px;
  min-width: 30px;
  background: var(--blush);
  border-radius: 7px;
  color: var(--accent);
}
.widget .button {
  width: 100%;
}
.reading-book {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 18px;
}
.reading-book h3 {
  font-size: 18px;
}
.reading-book .cover-image {
  width: 72px;
  height: 118px;
  object-fit: contain;
}
.widget-more {
  display: none;
}


/* 
模块：列表、筛选、书目与作品
源码：modules/06-lists-books-works.css
职责：栏目头、筛选/排序、分页、空态、书卡、作品卡与章节索引。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.list-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 28px;
  margin-bottom: 28px;
  min-height: 180px;
}
.list-header > div {
  min-width: 0;
}
.list-header p {
  margin-bottom: 0;
  max-width: 420px;
}
.section-banner {
  width: 42%;
  height: 188px;
  object-fit: contain;
}
.filter-bar {
  margin-bottom: 24px;
}
.chip {
  background: var(--paper);
  border: 1px solid var(--line);
  box-shadow: none;
  color: var(--muted);
  min-height: 44px;
  padding: 7px 14px;
  font-size: 14px;
}
.chip.selected {
  background: var(--blush);
  color: var(--accent);
}
.result-title {
  font-size: 20px;
  margin-block: 20px;
}
.result-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-block: 22px;
}
.result-toolbar h2 {
  font-size: 18px;
  padding-top: 10px;
}
.sort-options {
  list-style: none;
  padding: 12px;
  margin-top: 8px;
}
.sort-options a {
  display: block;
  min-height: 44px;
  padding: 9px;
}
.pagination {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  margin: 20px 0 34px;
}
.pagination .button {
  min-width: 48px;
}
.pagination-summary {
  text-align: center;
  margin-top: 22px;
  font-size: 14px;
}
.empty-state {
  text-align: center;
  padding: 36px 24px;
  margin: 24px 0;
}
.empty-cat {
  width: 168px;
  height: 112px;
  object-fit: contain;
  margin: 0 auto 24px;
}
.empty-state .button {
  margin: 8px;
}
.book-card {
  padding: 24px;
}
.book-card-top {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 22px;
}
.book-card h2 {
  font-size: 22px;
  margin-bottom: 10px;
}
.book-card-top p {
  font-size: 14px;
  margin-bottom: 14px;
}
.cover-image {
  width: 96px;
  height: 158px;
  object-fit: contain;
}
.cover-placeholder {
  display: flex;
  width: 96px;
  height: 158px;
  align-items: center;
  justify-content: center;
  border: 1px dashed var(--line);
  background: #f6efe3;
  border-radius: 7px;
  color: var(--muted);
  font-size: 13px;
}
.book-card > p {
  margin-top: 20px;
  margin-bottom: 0;
}
.rating {
  margin-top: 12px;
}
.rating span {
  color: #c27628;
  letter-spacing: 1px;
}
.view-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 24px 0;
}
.view-toolbar > span {
  margin-right: auto;
}
.list-view {
  grid-template-columns: 1fr;
}
.work-card {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  gap: 28px;
  padding: 24px;
  margin-bottom: 24px;
}
.work-image {
  width: 100%;
  height: 220px;
  object-fit: cover;
  border-radius: 8px;
}
.work-card .button {
  margin-top: 12px;
}
.chapter-directory {
  padding: 28px;
  margin-block: 28px;
}
.chapter-directory ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  list-style: none;
  padding: 0;
  margin: 0;
}
.chapter-directory a {
  display: block;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
  min-height: 64px;
}
.chapter-directory span {
  margin-right: 18px;
  color: var(--accent);
}


/* 
模块：文章正文与阅读页
源码：modules/07-article-reader.css
职责：面包屑、文章头、目录、正文、图片、图注、引用、表格、媒体、上下篇、阅读工具与书目资料。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.breadcrumbs {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 24px;
}
.entry-header {
  padding: 28px;
  margin-bottom: 24px;
}
.entry-header p {
  margin-bottom: 0;
}
.entry-header h1 .icon {
  margin-right: 14px;
}
.single-entry {
  padding: 28px;
}
.single-entry .entry-header {
  padding: 0;
  margin-bottom: 28px;
}
.toc {
  padding: 18px 22px;
  background: #f6f0e5;
  border-radius: 10px;
  margin-bottom: 30px;
}
.toc h2 {
  font-size: 20px;
  margin-bottom: 12px;
  display: flex;
  gap: 12px;
}
.toc a {
  display: block;
  padding: 8px 0;
  font-size: 15px;
  min-height: 44px;
}
.entry-content {
  font-size: 17px;
  line-height: 32px;
  max-width: 760px;
  margin-inline: auto;
}
.entry-content h2 {
  font-size: 25px;
  margin-top: 32px;
  scroll-margin-top: calc(var(--admin-bar) + 28px);
}
.entry-content h3 {
  font-size: 21px;
  margin-top: 24px;
}
.entry-content p {
  margin-bottom: 24px;
}
.entry-content figure {
  margin-block: 28px;
}
.article-image {
  width: 100%;
  max-height: 500px;
  object-fit: cover;
  border-radius: 8px;
}
.entry-content figcaption,
.wp-caption-text {
  font-size: 13px;
  color: var(--muted);
  border-top: 1px solid var(--line);
  padding-top: 10px;
  margin-top: 12px;
  line-height: 24px;
}
.entry-content blockquote {
  margin: 26px 0;
  padding: 22px 24px;
  border-left: 3px solid var(--primary);
  background: #f6efe3;
  border-radius: 0 10px 10px 0;
}
.entry-content blockquote p {
  margin-bottom: 0;
}
.entry-content a {
  color: var(--accent);
  text-decoration: underline;
}
.entry-content ul,
.entry-content ol {
  padding-inline-start: 28px;
}
.entry-content li {
  margin-bottom: 8px;
}
.entry-content .table-scroll {
  max-width: 100%;
  overflow: auto;
  margin: 28px 0;
}
.entry-content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
}
.entry-content caption {
  text-align: left;
  margin-bottom: 12px;
}
.entry-content th,
.entry-content td {
  padding: 12px 16px;
  border: 1px solid var(--line);
  text-align: start;
}
.entry-content th {
  background: var(--sage);
} /* 代码块保留原有空格和换行；长行由块内滚动承载。 */
.entry-content pre {
  overflow: auto;
  max-width: 100%;
  padding: 20px;
  background: #f1eadb;
  border: 1px solid var(--line);
  border-radius: 10px;
  font: 14px/1.8 monospace;
}
.entry-content .gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.entry-content .gallery figure {
  margin: 0;
}
.gallery-image {
  width: 100%;
  height: 180px;
  object-fit: cover;
  border-radius: 8px;
}
.entry-content iframe {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.entry-content audio,
.entry-content video {
  width: 100%;
  max-width: 100%;
}
.entry-content .media-fallback {
  margin: 28px 0;
  padding: 20px;
  background: var(--sage);
  border-radius: 10px;
}
.media-button {
  display: block;
  width: 100%;
  border: 0;
  background: none;
  padding: 0;
  text-align: inherit;
}
.entry-footer {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.post-navigation {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  margin-block: 26px;
}
.post-navigation a {
  padding: 20px;
  min-height: 96px;
} /* 阅读操作区与正文分开，按钮状态由核心控制器同步。 */
.reading-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-block: 28px;
}
.reading-toolbar [aria-pressed="true"] {
  background: var(--blush);
  border-color: #ebae97;
}
.reader-content {
  padding: 48px 58px;
  max-width: 100%;
  font: var(--reader-font)/1.9 var(--serif);
}
.reader-content p {
  margin-bottom: 30px;
}
.reading-large {
  --reader-font: 21px;
}
.chapter-navigation {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-block: 28px;
}
.author-note {
  position: relative;
  padding: 24px 100px 24px 24px;
  background: #fff1dc;
  margin-block: 34px;
}
.author-note h2 {
  font-size: 22px;
}
.author-note p {
  color: var(--accent);
  margin-bottom: 0;
}
.book-detail-header {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 36px;
  padding: 30px;
  margin-bottom: 28px;
}
.detail-cover {
  width: 180px;
  max-height: 295px;
  object-fit: contain;
}
.book-facts {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr);
  font-size: 14px;
  gap: 10px;
  margin: 20px 0;
}
.book-facts dd {
  margin: 0;
}
.book-detail-header + article {
  padding: 30px;
  max-width: 100%;
}


/* 
模块：评论、联系与密码表单
源码：modules/08-comments-forms.css
职责：评论嵌套、回复区、字段、反馈、错误、联系主题、FAQ和密码卡。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.comments-area {
  margin-top: 36px;
}
.comment-list {
  list-style: none;
  padding: 0;
}
.comment-list > .comment {
  padding: 22px;
  margin-bottom: 16px;
}
.comment header {
  font-size: 14px;
  margin-bottom: 12px;
}
.comment time {
  font-size: 12px;
  margin-left: 12px;
}
.comment p {
  margin-bottom: 6px;
} /* 嵌套回复只在当前评论内部增加缩进。 */
.comment-list .children {
  list-style: none;
  padding-inline-start: 20px;
  margin: 18px 0 0;
  border-inline-start: 2px solid var(--line);
}
.comment-respond {
  padding: 28px;
  scroll-margin-top: 30px;
}
.comment-respond h2 {
  font-size: 23px;
}
.comment-respond label,
.contact-form-panel > form > label,
.password-panel label {
  display: block;
  font-weight: 600;
  margin: 18px 0 8px;
}
.comment-respond input:not([type="hidden"]),
.comment-respond textarea,
.contact-form-panel input:not([type="radio"]),
.contact-form-panel textarea,
.password-panel input {
  display: block;
  width: 100%;
  min-height: 48px;
  padding: 10px 14px;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.comment-respond textarea,
.contact-form-panel textarea {
  resize: vertical;
  line-height: 1.7;
}
.form-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
} /* 表单反馈的视觉样式；角色和状态内容由表单控制器处理。 */
.form-feedback {
  padding: 16px 18px;
  background: var(--sage);
  border: 1px solid #a5b795;
  border-radius: 10px;
  margin: 20px 0;
}
.is-error,
.field-error {
  color: #9f3632;
}
.form-feedback.is-error {
  background: #fceee9;
  border-color: #d9a79a;
}
.field-error {
  margin-top: 12px;
}
.is-success {
  color: var(--green);
}
[aria-invalid="true"] {
  border-color: #9f3632 !important;
}
.reply-context {
  padding: 10px 14px;
  background: var(--blush);
  border-radius: 8px;
}
.contact-banner {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 24px;
  margin-bottom: 28px;
}
.contact-banner > div {
  flex: 1;
}
.letter-image {
  width: 46%;
  height: 220px;
  object-fit: cover;
  border-radius: 10px;
}
.contact-form-panel {
  padding: 30px;
}
.topic-options {
  border: 0;
  padding: 0;
  margin: 24px 0;
}
.topic-options legend {
  font-weight: 600;
  margin-bottom: 14px;
}
.topic-options label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-right: 20px;
  min-height: 44px;
}
.topic-options input {
  accent-color: var(--accent);
  width: 18px;
  height: 18px;
}
.faq {
  margin-block: 32px;
}
.faq details {
  padding: 18px 22px;
  margin-bottom: 12px;
}
.faq summary {
  cursor: pointer;
  min-height: 44px;
  line-height: 44px;
  font-family: var(--serif);
  font-size: 18px;
}
.faq details p {
  padding-top: 18px;
  color: var(--muted);
}
.starter {
  padding: 26px;
  margin-block: 24px;
}
.password-panel {
  padding: 32px;
  text-align: center;
}
.password-cat {
  width: min(100%, 380px);
  height: auto;
  margin: 0 auto 24px;
}
.password-panel form {
  text-align: left;
  max-width: 580px;
  margin: auto;
}
.password-panel .form-row {
  grid-template-columns: minmax(0, 1fr) auto;
}
.password-panel > p {
  margin-block: 20px;
}


/* 
模块：目录与辅助页面
源码：modules/09-directory-utility.css
职责：站点地图、标签目录、关于、隐私和嵌入卡片。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.directory-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.directory-link {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 22px;
  min-height: 96px;
  font-size: 18px;
}
.directory-link .count {
  margin-left: auto;
}
.utility-content {
  padding: 36px;
  max-width: 100%;
}
.utility-content .button {
  margin-right: 12px;
  color: var(--primary-ink);
  text-decoration: none;
}
.about-cat {
  width: 180px;
  margin-bottom: 24px;
}
.embed-preview {
  padding: 24px;
}
.embed-preview h1 {
  font-size: 23px;
}
.embed-preview p {
  margin-top: 20px;
}


/* 
模块：页脚与海岸背景
源码：modules/10-footer.css
职责：海岸全景、可配置小工具区、底部导航、站点信息和回到顶部。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.site-footer {
  margin-top: 64px;
}
.footer-seaside {
  overflow: hidden;
  max-height: 264px;
}
.footer-panorama {
  width: 100%;
  height: auto;
  object-fit: cover;
  object-position: center;
} /* 区域数量由同一HTML配置决定，后置模块补足0/1/3区。 */
.footer-areas {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 32px;
  padding-block: 30px 50px;
}
.footer-areas[data-ob-footer-count="2"] {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.footer-area {
  min-width: 0;
}
.footer-area h2 {
  font-size: 20px;
}
.footer-area .wordmark {
  font-size: 36px;
  margin-bottom: 12px;
}
.footer-area p {
  font-size: 14px;
}
.footer-cat {
  width: 88px;
  height: 59px;
  object-fit: contain;
  margin-left: auto;
}
.footer-area .button {
  display: flex;
  width: 100%;
  margin-top: 16px;
}
.footer-menu {
  list-style: none;
  padding: 0;
  margin: 0;
}
.footer-menu a {
  display: block;
  padding: 9px 0;
  min-height: 44px;
  font-size: 14px;
}
.footer-base {
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
  padding-block: 24px 28px;
}
.footer-base nav {
  display: flex;
  gap: 36px;
  align-items: center;
}
.footer-base nav a {
  font-size: 13px;
  display: flex;
  align-items: center;
  min-height: 44px;
}
.footer-base p {
  font-size: 12px;
  margin: 0;
  align-self: center;
}
.top-link {
  justify-self: end;
  min-width: 154px;
}
.footer-base .language-trigger {
  min-width: 224px;
}


/* 
模块：语言选择、弹窗与搜索
源码：modules/11-overlays-search.css
职责：快捷语言选择器、语言弹窗、菜单、搜索、图片放大及结果高亮。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
.language-selector {
  position: fixed;
  width: 260px;
  max-width: calc(100vw - 32px);
  padding: 12px;
  z-index: 20;
}
.language-selector ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.language-selector :is(button, a[role="menuitemradio"]) {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 48px;
  padding: 9px 12px;
  background: none;
  border: 0;
  border-radius: 8px;
  text-align: start;
  color: var(--ink);
}
.language-selector :is(button, a[role="menuitemradio"]):hover {
  background: var(--blush);
}
.language-selector .more-languages {
  border-top: 1px solid var(--line);
  color: var(--accent);
} /* 各类弹窗共享边界；具体键盘/焦点行为在 theme.js。 */
.oneboy-dialog {
  position: fixed;
  inset: 50% auto auto 50%;
  transform: translate(-50%, -50%);
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--paper);
  color: var(--ink);
  width: 660px;
  max-width: calc(100vw - 32px);
  max-height: calc(100dvh - 40px);
  margin: 0;
  box-shadow: 0 18px 60px rgba(71, 58, 48, 0.16);
  z-index: 30;
}
.oneboy-dialog[open] {
  display: flex;
  flex-direction: column;
}
.oneboy-dialog::backdrop {
  background: rgba(71, 58, 48, 0.28);
}
.dialog-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  flex: none;
  margin-bottom: 18px;
}
.dialog-header h2 {
  font-size: 24px;
  margin: 0;
  display: flex;
  gap: 14px;
  align-items: center;
}
.dialog-header .icon-button {
  flex: none;
}
.language-list {
  padding: 10px 0;
  margin: 6px 0 0;
  border: 0;
  overflow: auto;
  min-height: 0;
  flex: 1;
}
.language-option {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 60px;
  padding: 14px 18px;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 10px;
  cursor: pointer;
}
.language-option input {
  width: 20px;
  height: 20px;
  accent-color: var(--green);
  flex: none;
}
.language-option:has(:checked) {
  background: var(--sage);
  border-color: #a6b898;
}
.language-option > span {
  flex: 1;
  line-height: 1.6;
}
.language-option small:empty {
  display: none;
}
.language-option small {
  font-size: 12px;
  padding: 3px 8px;
  white-space: nowrap;
  color: var(--accent);
  background: var(--blush);
  border-radius: 5px;
}
.language-option:has(:checked) [data-ob-selected-badge] {
  color: var(--green);
  background: transparent;
}
.dialog-actions {
  display: flex;
  gap: 12px;
  flex: none;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.dialog-actions .button {
  flex: 1;
}
.navigation-dialog ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.navigation-dialog a {
  display: flex;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  min-height: 48px;
}
.navigation-dialog > .button {
  margin-top: 20px;
}
.search-dialog {
  padding-block: 32px;
}
.lightbox-dialog {
  width: 960px;
}
.lightbox-dialog figure {
  min-height: 0;
}
.lightbox-dialog img {
  height: auto;
  max-height: calc(100dvh - 260px);
  width: 100%;
  object-fit: contain;
}
.lightbox-dialog figcaption {
  text-align: center;
  padding-top: 12px;
}
.search-panel {
  padding: 24px;
}
.search-panel .search-form {
  border-radius: 10px;
}
.search-panel input {
  border-radius: 10px;
}
mark {
  background: var(--blush);
  color: var(--accent);
  padding: 0 2px;
}


/* 
模块：阅读配色模式
源码：modules/13-reading-themes.css
职责：护眼和夜间变量及控件配色；原先的位置保留以维持优先级。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
body[data-ob-reading-mode="eye"] {
  --bg: #e9eedc;
  --paper: #f1f4e6;
}
body[data-ob-reading-mode="night"] {
  --bg: #242b29;
  --paper: #2d3532;
  --ink: #ede7da;
  --muted: #c1b9aa;
  --line: #566159;
  --accent: #f3d1bd;
  --blush: #5d493f;
  --sage: #3a4437;
  --green: #bcd3a9;
  --primary: #5d493f;
  --primary-ink: #f3d1bd;
  color-scheme: dark;
}
body[data-ob-reading-mode="night"] .icon {
  stroke: #e9b8a5;
}
body[data-ob-reading-mode="night"] .topbar,
body[data-ob-reading-mode="night"] .author-note,
body[data-ob-reading-mode="night"] .entry-content blockquote {
  background: #343a34;
}
body[data-ob-reading-mode="night"] .footer-seaside {
  opacity: 0.55;
}
body[data-ob-reading-mode="night"] .button.disabled {
  background: #3a403b;
  color: #c1b9aa;
}
body[data-ob-reading-mode="night"] .form-feedback {
  background: #3a4437;
  color: #ede7da;
}
body[data-ob-reading-mode="night"] input,
body[data-ob-reading-mode="night"] textarea {
  color: var(--ink);
}


/* 
模块：基础响应式与减少动画
源码：modules/14-responsive.css
职责：宽屏、平板、手机、小屏和系统减少动画偏好的统一适配。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
/* 响应条件：(min-width:1500px)；保留原有覆盖顺序。 */
@media (min-width: 1500px) {
  .container {
    width: calc(100% - 192px);
  }
}
/* 响应条件：(max-width:1100px)；保留原有覆盖顺序。 */
@media (max-width: 1100px) {
  .site-layout {
    grid-template-columns: 1fr;
  }
  .sidebar {
    margin-top: 30px;
  }
  .sidebar-widgets {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
  .sidebar-heading {
    display: flex;
    gap: 10px;
    font-size: 23px;
  }
  .footer-areas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .brand {
    gap: 18px;
  }
  .brand-copy .muted {
    max-width: 260px;
  }
  .brand-title {
    font-size: 20px;
  }
  .brand-cat {
    width: 84px;
  }
  .wordmark {
    font-size: 40px;
  }
  .site-header {
    grid-template-columns: minmax(0, 1fr) 232px;
  }
  .primary-navigation .menu-item > a {
    padding-inline: 14px;
  }
  .header-tools .language-trigger {
    min-width: 210px;
  }
  .hero-note {
    width: 360px;
    right: 24px;
  }
  .hero-note h1 {
    font-size: 28px;
  }
  .review-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* 响应条件：(max-width:600px)；保留原有覆盖顺序。 */
@media (max-width: 600px) {
  .container {
    width: calc(100% - 40px);
  }
  h1 {
    font-size: 27px;
  }
  h2 {
    font-size: 22px;
  }
  .topbar .container {
    font-size: 10px;
  }
  .topbar .topbar-secondary {
    display: none;
  }
  .site-header {
    padding-top: 18px;
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    align-items: flex-start;
  }
  .brand {
    display: block;
    flex: 1;
    min-width: 0;
  }
  .brand-mark {
    gap: 8px;
  }
  .brand-cat {
    width: 62px;
    height: 42px;
  }
  .wordmark {
    font-size: 32px;
  }
  .brand-copy {
    padding-left: 70px;
  }
  .brand-title {
    font-size: 13px;
    margin: 4px 0 0;
  }
  .brand-copy .muted {
    display: none;
  }
  .header-tools {
    display: flex;
    flex-direction: row;
    gap: 8px;
    position: static;
  }
  .header-language {
    position: static;
    width: 100%;
    flex-basis: 100%;
  }
  .site-header .header-language {
    order: 3;
  }
  .site-header > .header-tools {
    display: contents;
  }
  .header-search {
    width: 100%;
    order: 4;
  }
  .header-language .language-trigger {
    width: 100%;
    min-width: 0;
  }
  .primary-navigation {
    width: 100%;
    order: 5;
  }
  .primary-navigation .menu-item > a {
    padding-inline: 10px;
    font-size: 14px;
  }
  .js .mobile-only {
    display: inline-flex;
  }
  .js .header-search,
  .js .primary-navigation {
    display: none;
  }
  .site-layout {
    gap: 0;
    padding-top: 24px;
  }
  .home-hero {
    padding: 8px;
    margin-bottom: 28px;
    min-height: 0;
    background: none;
    border: 0;
    box-shadow: none;
  }
  .hero-picture {
    margin: -8px -8px 20px;
  }
  .hero-image {
    height: 208px;
    width: 100%;
    object-fit: cover;
  }
  .hero-note {
    position: relative;
    inset: auto;
    max-width: none;
    width: 100%;
    padding: 24px 20px 86px;
  }
  .hero-note h1 {
    font-size: 24px;
  }
  .hero-note .button {
    position: absolute;
    bottom: 20px;
    left: 20px;
    margin: 0;
  }
  .note-cat {
    width: 60px;
    right: 14px;
    bottom: 16px;
  }
  .section-title > h2,
  .section-title:not(div) {
    font-size: 21px;
  }
  .section-title a {
    font-size: 12px;
  }
  .home-section {
    margin-block: 26px;
  }
  .post-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .post-card,
  .grid-card {
    display: grid;
    grid-template-columns: 90px minmax(0, 1fr);
    gap: 12px 16px;
    padding: 20px;
  }
  .post-card-body,
  .grid-card .post-card-body {
    display: contents;
  }
  .post-thumbnail {
    grid-column: 1;
    grid-row: 1/3;
  }
  .post-card h2,
  .post-card h3 {
    grid-column: 2;
    font-size: 18px;
    line-height: 29px;
    margin: 0;
  }
  .post-card .badge {
    grid-column: 2;
    justify-self: start;
    align-self: start;
    margin-bottom: 0;
    font-size: 12px;
  }
  .post-card .muted,
  .post-card .metadata {
    grid-column: 1/-1;
    font-size: 14px;
    margin: 0;
  }
  .post-card .metadata {
    font-size: 12px;
  }
  .grid-card .post-image,
  .post-image {
    height: 88px;
    width: 90px;
  }
  .post-card:not(:has(.post-thumbnail)) .post-card-body {
    display: block;
  }
  .post-card:not(:has(.post-thumbnail)) h2,
  .post-card:not(:has(.post-thumbnail)) h3 {
    margin: 12px 0;
  }
  .post-card:not(:has(.post-thumbnail)) .muted {
    margin: 14px 0;
  }
  .topic-grid {
    gap: 16px;
  }
  .topic {
    padding: 14px 10px;
  }
  .topic h3 {
    font-size: 18px;
    gap: 8px;
    padding: 0;
  }
  .topic-image {
    height: 91px;
  }
  .topic p {
    font-size: 12px;
    margin-inline: 0;
    line-height: 23px;
  }
  .sidebar {
    margin-top: 32px;
  }
  .sidebar-widgets {
    grid-template-columns: 1fr;
  }
  .widget {
    padding: 24px;
  }
  .widget-title {
    font-size: 20px;
  }
  .js .sidebar-widgets[data-ob-expanded="false"] > .widget:nth-child(n + 4) {
    display: none;
  }
  .js .widget-more {
    display: flex;
    width: 100%;
    margin-top: 18px;
  }
  .list-header {
    padding: 24px;
    flex-direction: column;
    align-items: stretch;
    gap: 22px;
    min-height: 0;
  }
  .section-banner {
    width: 100%;
    height: 150px;
  }
  .filter-bar {
    gap: 8px;
  }
  .chip {
    padding: 8px 12px;
    font-size: 13px;
  }
  .result-toolbar {
    display: block;
  }
  .result-toolbar h2 {
    font-size: 17px;
  }
  .result-toolbar > div {
    margin-block: 16px;
  }
  .pagination {
    gap: 8px;
  }
  .pagination .button {
    padding-inline: 12px;
  }
  .book-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .book-card {
    padding: 20px;
  }
  .book-card-top {
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 20px;
  }
  .book-card h2 {
    font-size: 20px;
  }
  .book-card .cover-image,
  .cover-placeholder {
    width: 84px;
    height: 138px;
  }
  .book-card-top p {
    font-size: 13px;
  }
  .work-card {
    grid-template-columns: 1fr;
    padding: 22px;
    gap: 24px;
  }
  .work-image {
    height: 160px;
  }
  .chapter-directory {
    padding: 22px;
  }
  .chapter-directory ol {
    grid-template-columns: 1fr;
  }
  .single-entry {
    padding: 22px;
  }
  .entry-header {
    padding: 24px;
  }
  .single-entry .entry-header h1 {
    font-size: 26px;
  }
  .entry-content h2 {
    font-size: 23px;
  }
  .entry-content .gallery {
    gap: 12px;
  }
  .gallery-image {
    height: 120px;
  }
  .entry-content iframe {
    height: 300px;
  }
  .toc {
    padding: 18px;
  }
  .post-navigation {
    gap: 14px;
  }
  .post-navigation a {
    padding: 16px;
    font-size: 14px;
  }
  .reading-toolbar .button {
    min-height: 44px;
    padding-inline: 13px;
    font-size: 13px;
  }
  .reader-content {
    padding: 26px 24px;
  }
  .chapter-navigation {
    gap: 8px;
  }
  .chapter-navigation .button {
    font-size: 13px;
    padding: 10px;
  }
  .author-note {
    padding: 24px 24px 76px;
  }
  .book-detail-header {
    grid-template-columns: 96px minmax(0, 1fr);
    gap: 22px;
    padding: 22px;
  }
  .detail-cover {
    width: 96px;
  }
  .book-detail-header h1 {
    font-size: 25px;
  }
  .book-facts {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .book-facts dt {
    font-weight: bold;
  }
  .book-facts dd {
    margin-bottom: 6px;
  }
  .book-detail-header > div > p {
    font-size: 14px;
  }
  .book-detail-header + article {
    padding: 24px;
  }
  .form-row {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .comment-respond {
    padding: 22px;
  }
  .comment-list > .comment {
    padding: 20px;
  }
  .comment-list .children {
    padding-inline-start: 12px;
  }
  .comment time {
    display: block;
    margin-left: 0;
  }
  .contact-banner {
    padding: 22px;
    flex-direction: column;
    align-items: stretch;
  }
  .letter-image {
    width: 100%;
    height: 170px;
  }
  .contact-form-panel {
    padding: 24px;
  }
  .topic-options label {
    margin-right: 16px;
    font-size: 14px;
  }
  .password-panel {
    padding: 24px;
  }
  .password-panel .form-row {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .directory-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .utility-content {
    padding: 26px;
  }
  .footer-seaside {
    max-height: 150px;
  }
  .footer-panorama {
    min-height: 120px;
    object-fit: cover;
    object-position: center;
  }
  .footer-areas,
  .footer-areas[data-ob-footer-count="2"] {
    grid-template-columns: 1fr;
    gap: 34px;
    padding-top: 26px;
  }
  .footer-area .wordmark {
    font-size: 34px;
  }
  .footer-menu {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .footer-base {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .footer-base > div {
    grid-row: 1;
  }
  .footer-base nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
  }
  .footer-base nav a {
    font-size: 12px;
  }
  .footer-base .language-trigger {
    width: 100%;
  }
  .footer-base .top-link {
    width: 100%;
  }
  .site-footer {
    margin-top: 44px;
  }
  .oneboy-dialog {
    padding: 24px 20px;
    max-width: calc(100vw - 24px);
    width: calc(100vw - 24px);
    max-height: calc(100dvh - 24px);
  }
  .language-dialog {
    inset: auto 12px 12px;
    transform: none;
    border-radius: 24px;
  }
  .dialog-header h2 {
    font-size: 22px;
    gap: 10px;
  }
  .dialog-header {
    margin-bottom: 14px;
  }
  .language-option {
    padding: 14px;
    gap: 10px;
    min-height: 60px;
  }
  .language-option small {
    font-size: 11px;
    padding: 3px 6px;
  }
  .language-list {
    padding: 6px 0;
  }
  .dialog-actions {
    gap: 12px;
  }
  .dialog-actions .button {
    padding-inline: 12px;
  }
  .lightbox-dialog img {
    max-height: calc(100dvh - 250px);
  }
  .navigation-dialog ul {
    grid-template-columns: 1fr;
    overflow: auto;
  }
  .review-grid,
  .component-grid {
    grid-template-columns: 1fr;
  }
  .search-panel {
    padding: 18px;
  }
}
/* 响应条件：(max-width:350px)；保留原有覆盖顺序。 */
@media (max-width: 350px) {
  .container {
    width: calc(100% - 32px);
  }
  .brand-cat {
    width: 48px;
  }
  .brand-copy {
    padding-left: 56px;
  }
  .wordmark {
    font-size: 29px;
  }
  .hero-note h1 {
    font-size: 22px;
  }
  .post-card,
  .grid-card {
    grid-template-columns: 76px minmax(0, 1fr);
    gap: 12px;
    padding: 18px;
  }
  .post-image,
  .grid-card .post-image {
    width: 76px;
  }
  .topic-grid {
    gap: 12px;
  }
  .topic {
    padding: 12px 8px;
  }
  .topic h3 {
    font-size: 16px;
  }
  .book-card-top {
    gap: 16px;
  }
  .book-detail-header {
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 16px;
  }
  .dialog-header h2 {
    font-size: 21px;
  }
  .language-option small {
    display: none;
  }
  .chapter-navigation {
    grid-template-columns: 1fr;
  }
  .metadata {
    gap: 12px;
  }
}
/* 响应条件：(prefers-reduced-motion:reduce)；保留原有覆盖顺序。 */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  * {
    animation: none !important;
    transition: none !important;
  }
}


/* 
模块：通用布局细节修正
源码：modules/15-layout-refinements.css
职责：内容标题、无侧栏、0–4页脚区域、表单渐进增强、长文案和焦点细节；有意后置。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */

/* Audit fixes: content headings, sea cropping, configurable areas and safe no-JS forms. */
h2.section-title {
  justify-content: flex-start;
}
.wide-layout > main {
  max-width: none;
}
.footer-seaside {
  height: 220px;
  max-height: none;
}
.footer-panorama {
  height: 100%;
  min-height: 0;
  object-fit: cover;
  object-position: center;
}
.footer-areas[data-ob-footer-count="0"] {
  display: none;
}
.footer-areas[data-ob-footer-count="1"] {
  grid-template-columns: 1fr;
}
.footer-areas[data-ob-footer-count="3"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.footer-fallback {
  padding-block: 28px;
}
.footer-fallback .footer-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
  margin-block: 20px;
}
.admin-bar {
  --admin-bar: 32px;
} /* 响应条件：(max-width:1100px)；保留原有覆盖顺序。 */
@media (max-width: 1100px) {
  .footer-seaside {
    height: 152px;
  }
  .footer-areas[data-ob-footer-count="3"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* 响应条件：(max-width:600px)；保留原有覆盖顺序。 */
@media (max-width: 600px) {
  .footer-seaside {
    height: 144px;
  }
  .footer-panorama {
    object-position: left center;
  }
  .footer-areas[data-ob-footer-count="3"] {
    grid-template-columns: 1fr;
  }
  .footer-fallback .footer-menu {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  .admin-bar {
    --admin-bar: 46px;
  }
}

.language-option:has(input:focus-visible) {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}
.language-option input:focus-visible {
  outline: none;
}
input::placeholder,
textarea::placeholder {
  color: var(--muted);
  opacity: 1;
}

.brand-mark,
.brand-copy {
  min-width: 0;
}
.brand-mark {
  flex-wrap: nowrap;
  flex-shrink: 0;
}
.brand-mark .wordmark {
  white-space: nowrap;
  max-width: 100%;
}
.dialog-actions .button {
  min-width: 0;
  overflow-wrap: anywhere;
}
.tagcloud a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
.recent-native a,
.recent-photos a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.footer-fallback .footer-menu a {
  min-height: 44px;
  display: flex;
  align-items: center;
}

.post-navigation > span {
  display: block;
  padding: 20px;
  min-height: 96px;
}
.entry-content a {
  overflow-wrap: anywhere;
}


/* 
模块：经典主题内容与原生小工具
源码：modules/16-wordpress-compat.css
职责：传统对齐类、宽图、清除浮动、星级比例、核心小工具和日历样式。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */ /* 兼容经典编辑器常见对齐类，限制作用域为文章正文。 */

.entry-content .alignleft {
  float: left;
  margin: 8px 24px 18px 0;
  max-width: 45%;
}
.entry-content .alignright {
  float: right;
  margin: 8px 0 18px 24px;
  max-width: 45%;
}
.entry-content .aligncenter {
  display: block;
  margin-inline: auto;
}
.entry-content .alignwide,
.entry-content .alignfull {
  width: 100%;
  max-width: 100%;
}
.entry-content::after {
  content: "";
  display: block;
  clear: both;
}

.rating .stars {
  color: transparent;
  background: linear-gradient(
    to right,
    #c27628 var(--rating),
    #cfc3af var(--rating)
  );
  background-clip: text;
  -webkit-background-clip: text;
}

.widget_recent_entries ul,
.widget_archive ul,
.widget_categories ul,
.widget_recent_comments ul,
.widget_nav_menu ul,
.widget_rss ul {
  padding-inline-start: 20px;
  margin: 0;
}
.widget_recent_entries li,
.widget_archive li,
.widget_categories li,
.widget_recent_comments li,
.widget_nav_menu li,
.widget_rss li {
  margin-bottom: 12px;
}
.widget_recent_entries .post-date,
.widget_rss .rss-date {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-top: 8px;
}
.widget_calendar .wp-calendar-table {
  width: 100%;
  table-layout: fixed;
  text-align: center;
  font-size: 13px;
}
.widget_calendar td {
  height: 40px;
}
.widget_calendar a {
  display: inline-flex;
  min-width: 30px;
  min-height: 32px;
  align-items: center;
  justify-content: center;
  background: var(--blush);
  border-radius: 7px;
}
.widget_calendar caption {
  margin-bottom: 18px;
}


/* 
模块：特殊状态细节
源码：modules/17-state-refinements.css
职责：夜间海岸/标识和搜索错误边界；顺序继承原稿。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */

body[data-ob-reading-mode="night"] .footer-seaside {
  display: none;
}
body[data-ob-reading-mode="night"] .wordmark {
  color: var(--accent);
}

.search-form:has(input[aria-invalid="true"]) {
  border-color: #9f3632;
}


/* 
模块：正文两侧水彩装饰
源码：modules/18-margin-decoration.css
职责：保持v32的花枝尺寸、620px留白、左右朝向和阅读模式；相对正文定位。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */

/* P1.2.1: v32 margin flowers, placed in the document rather than fixed to the viewport. */

/* 装饰随正文滚动；不采用屏幕固定的密集花边。 */
.site-content-region {
  position: relative;
  isolation: isolate;
}
.site-content-region::before,
.site-content-region::after {
  content: "";
  position: absolute;
  bottom: 0;
  pointer-events: none;
  z-index: -1;
  background-repeat: repeat-y;
  background-position: top left;
}
.site-content-region::before {
  top: 96px;
  left: 16px;
  width: 76.96px;
  background-image: url("../images/v32-margin-left.svg");
  background-size: 76.96px 620px;
  transform: scaleX(-1);
  opacity: 0.5;
}
.site-content-region::after {
  top: 311px;
  right: 14.84px;
  width: 62.16px;
  background-image: url("../images/v32-margin-right.svg");
  background-size: 62.16px 620px;
  opacity: 0.42;
}
body[data-ob-reading-mode="eye"] .site-content-region::before {
  opacity: 0.3;
}
body[data-ob-reading-mode="eye"] .site-content-region::after {
  opacity: 0.25;
}
body[data-ob-reading-mode="night"] .site-content-region::before,
body[data-ob-reading-mode="night"] .site-content-region::after {
  display: none;
}


/* 
模块：RSS订阅页面
源码：modules/19-rss.css
职责：RSS主视觉、书架插画、步骤、更新源状态、主次操作和联系收尾。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
/* RSS is an independent shared component; prose and actions have their own spacing. */
.rss-page {
  min-width: 0;
}
.rss-breadcrumbs {
  margin-bottom: 18px;
}
.rss-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  align-items: center;
  gap: 28px;
  min-height: 274px;
  padding: 34px 36px;
  background: linear-gradient(110deg, var(--paper) 60%, var(--blush));
  margin-bottom: 24px;
}
.rss-hero-copy,
.rss-hero-art {
  min-width: 0;
}
.rss-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--accent);
  font-size: 13px;
  letter-spacing: 0.6px;
  margin-bottom: 18px;
}
.rss-eyebrow .icon {
  width: 19px;
  height: 19px;
}
.rss-hero h1 {
  font-size: 32px;
  line-height: 1.55;
  margin-bottom: 14px;
}
.rss-intro {
  color: var(--muted);
  font-size: 16px;
  line-height: 1.9;
  margin-bottom: 20px;
}
.rss-hero-caption {
  font-size: 12px;
  letter-spacing: 1px;
  color: var(--accent);
  border-top: 1px solid var(--line);
  padding-top: 10px;
  display: inline-block;
}
.rss-hero-art {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.rss-bookshelf {
  width: 100%;
  max-width: 356px;
  height: auto;
  object-fit: contain;
}
.rss-art-note {
  font: italic 15px/1.8 var(--serif);
  color: var(--accent);
  text-align: center;
}
.rss-content-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 24px;
  align-items: stretch;
}
.rss-guide,
.rss-source {
  padding: 30px;
  min-width: 0;
}
.rss-section-heading {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}
.rss-section-heading h2 {
  font-size: 22px;
  line-height: 1.6;
  margin: 0;
}
.rss-icon-bubble {
  display: inline-flex;
  width: 42px;
  height: 42px;
  align-items: center;
  justify-content: center;
  flex: none;
  border-radius: 14px;
  background: var(--blush);
}
.rss-bubble-sage {
  background: var(--sage);
}
.rss-guide > p {
  font-size: 14px;
  line-height: 1.9;
  margin-bottom: 22px;
}
.rss-steps {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 0;
}
.rss-steps li {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  gap: 14px;
  padding: 16px 0;
  border-top: 1px solid var(--line);
}
.rss-step-number {
  display: inline-flex;
  width: 32px;
  height: 32px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--blush);
  color: var(--accent);
  font-size: 12px;
  line-height: 1;
}
.rss-steps h3 {
  font-size: 17px;
  line-height: 1.6;
  margin: 0 0 5px;
}
.rss-steps p {
  font-size: 14px;
  color: var(--muted);
  line-height: 1.8;
  margin: 0;
}
.rss-availability {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--sage);
  color: var(--green);
  padding: 5px 12px;
  font-size: 12px;
  border-radius: 20px;
  margin-bottom: 18px;
}
.rss-availability::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex: none;
}
.rss-source > p {
  font-size: 15px;
  line-height: 1.9;
  margin-bottom: 26px;
}
/* 主按钮和话题链接统一成操作组，避免贴边及挤在同一行。 */
.rss-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 24px;
}
.rss-actions .button {
  width: 100%;
  text-decoration: none;
  min-height: 50px;
}
.rss-actions .icon,
.rss-secondary-link .icon,
.rss-closing .icon {
  width: 18px;
  height: 18px;
}
.rss-secondary-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 44px;
  font-size: 14px;
  color: var(--accent);
  padding: 8px 4px;
  text-align: center;
  line-height: 1.8;
}
.rss-source-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  border-top: 1px dashed var(--line);
  padding-top: 20px;
  color: var(--muted);
}
.rss-source-note .icon {
  width: 18px;
  height: 18px;
  margin-top: 3px;
  stroke: var(--green);
}
.rss-source-note p {
  font-size: 13px;
  line-height: 1.8;
  margin: 0;
}
.rss-closing {
  text-align: center;
  font-size: 13px;
  color: var(--muted);
  padding: 22px 12px 0;
}
.rss-closing p {
  margin: 0;
}
.rss-closing a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 44px;
  color: var(--accent);
  margin-inline-start: 6px;
}


/* 
模块：RSS与背景响应式补充
源码：modules/20-rss-decoration-responsive.css
职责：留白不足隐藏花枝、RSS双栏/纵向重排、打印与嵌入卡片边界；最后覆盖。
本文件由构建器按模块文件编号升序合并；图片路径相对于合并后的 site.css。
 */
/* 响应条件：(max-width:1439px)；保留原有覆盖顺序。 */
@media (max-width: 1439px) {
  .site-content-region::before,
  .site-content-region::after {
    display: none;
  }
}
/* 响应条件：(max-width:1100px)；保留原有覆盖顺序。 */
@media (max-width: 1100px) {
  .rss-hero {
    padding: 30px;
    gap: 22px;
  }
  .rss-hero h1 {
    font-size: 29px;
  }
  .rss-guide,
  .rss-source {
    padding: 26px;
  }
  .rss-content-grid {
    gap: 20px;
  }
  .rss-section-heading h2 {
    font-size: 20px;
  }
}
/* 响应条件：(max-width:600px)；保留原有覆盖顺序。 */
@media (max-width: 600px) {
  .rss-breadcrumbs {
    font-size: 12px;
    margin-bottom: 16px;
  }
  .rss-hero {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 26px 24px;
    min-height: 0;
    margin-bottom: 20px;
  }
  .rss-hero h1 {
    font-size: 27px;
  }
  .rss-eyebrow {
    margin-bottom: 14px;
  }
  .rss-intro {
    font-size: 15px;
    margin-bottom: 14px;
  }
  .rss-linebreak {
    display: none;
  }
  .rss-bookshelf {
    max-width: 260px;
  }
  .rss-hero-art {
    gap: 10px;
  }
  .rss-art-note {
    font-size: 14px;
  }
  .rss-content-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .rss-guide,
  .rss-source {
    padding: 26px 24px;
  }
  .rss-section-heading {
    gap: 10px;
    margin-bottom: 18px;
  }
  .rss-section-heading h2 {
    font-size: 21px;
  }
  .rss-steps li {
    gap: 12px;
    padding-block: 15px;
  }
  .rss-guide > p {
    margin-bottom: 18px;
  }
  .rss-closing {
    padding-top: 18px;
  }
  .rss-closing a {
    margin-inline-start: 0;
  }
}
/* 响应条件：print；保留原有覆盖顺序。 */
@media print {
  .site-content-region::before,
  .site-content-region::after {
    display: none;
  }
}
.compact-content::before,
.compact-content::after {
  display: none;
}


/* 模块：真实 WordPress 接入
 * 菜单、原生分页、经典/区块编辑内容、小工具和联系表单的运行时样式。
 * 保持图片修复模块 18–20 的稀疏花枝与 RSS 布局；不包含审阅器样式。
 */
.widget_nav_menu .sub-menu {
  position: static !important;
  min-width: 0;
  padding-inline-start: 15px;
  border: 0;
  box-shadow: none;
  background: none;
}
.comment-form input[type="checkbox"] {
  width: 18px;
  min-height: 18px;
  height: 18px;
  flex: 0 0 18px;
  padding: 0;
  appearance: auto;
  accent-color: var(--accent);
}
.comment-form-cookies-consent label {
  flex: 1;
  margin: 0;
  font-size: 13px;
}
.comment-form .form-submit {
  display: flex;
  justify-content: flex-end;
}
.comment-form input[type="submit"] {
  width: auto;
  min-width: 150px;
  background: var(--primary);
  color: var(--primary-ink);
}
.comment-form input[type="submit"]:hover {
  filter: brightness(0.97);
}
/* WordPress 核心导航和经典编辑器必需的内容类。 */
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.screen-reader-text:focus {
  position: fixed;
  inset-block-start: 12px;
  inset-inline-start: 12px;
  width: auto;
  height: auto;
  clip: auto;
  clip-path: none;
  z-index: 50;
  padding: 12px;
  background: var(--paper);
}
.gallery-caption {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.8;
}
.gallery-item,
.gallery-icon {
  margin: 0;
  min-width: 0;
}
.gallery-icon img {
  width: 100%;
  height: auto;
}
.bypostauthor {
  border-inline-start: 3px solid var(--sage);
}
.sticky {
  border-color: var(--primary);
}
.submenu-toggle,
.language-trigger {
  display: none;
}
.js .submenu-toggle {
  display: inline-flex;
}
.js .language-trigger {
  display: flex;
}
html:not(.js) .primary-navigation .menu-item {
  flex-wrap: wrap;
}
html:not(.js) .primary-navigation .sub-menu {
  position: static;
  flex-basis: 100%;
  min-width: 0;
  max-width: 100%;
  box-shadow: none;
  border: 0;
}
.result-toolbar {
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 12px;
}
.result-toolbar select {
  max-width: 100%;
  min-height: 44px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
}
.view-toolbar.js-only {
  display: none;
}
.js .view-toolbar.js-only {
  display: flex;
}
.js-only {
  display: none;
}
.js .js-only {
  display: inline-flex;
}
.custom-logo {
  width: auto;
  height: auto;
  max-width: min(280px, 100%);
  max-height: 100px;
  object-fit: contain;
}
.site-layout.wide-layout > main {
  max-width: 100%;
}
.book-card-top:not(:has(img)) {
  display: block;
}
.book-detail-header:not(:has(img)) {
  display: block;
}
.current-menu-item > a,
.current-menu-ancestor > a {
  background: var(--blush);
  border-radius: 10px;
  color: var(--accent);
}
.menu,
.mobile-menu {
  list-style: none;
  padding: 0;
}
.sub-menu {
  list-style: none;
}
.submenu-toggle {
  padding: 8px;
  min-width: 44px;
  min-height: 44px;
}
.primary-navigation .sub-menu {
  position: absolute;
  inset-inline-start: 0;
  top: 100%;
  width: min(280px, 65vw);
  z-index: 4;
  padding: 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow);
}
.primary-navigation .sub-menu .sub-menu {
  top: 0;
  inset-inline-start: 100%;
}
.primary-navigation .sub-menu .menu-item {
  display: flex;
  flex-wrap: wrap;
}
.primary-navigation .sub-menu a {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
}
.primary-navigation .sub-menu[data-ob-flip="true"] {
  inset-inline-start: auto;
  inset-inline-end: 0;
}
.primary-navigation .sub-menu .sub-menu[data-ob-flip="true"] {
  inset-inline-end: 100%;
}
.navigation-dialog .sub-menu {
  position: static;
  padding-inline-start: 20px;
  border-inline-start: 2px solid var(--line);
}
.navigation-dialog .menu-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.navigation-dialog .menu-item > a {
  flex: 1;
  min-width: 0;
  padding: 12px;
}
.navigation-dialog .sub-menu {
  flex-basis: 100%;
}
.footer-menu .menu-item {
  display: flex;
  flex-wrap: wrap;
}
.footer-menu .menu-item > a {
  flex: 1;
}
.footer-menu .sub-menu {
  flex-basis: 100%;
  padding-inline-start: 15px;
}
.footer-area-slot {
  min-width: 0;
}
.footer-area-slot .widget {
  padding: 20px;
  margin-bottom: 20px;
}
.footer-area-slot .author-profile {
  display: block;
}
.footer-area-slot .author-cat {
  width: 88px;
  height: 58px;
}
.footer-base nav {
  gap: 18px;
  flex-wrap: wrap;
}
.recent-photos {
  list-style: none;
  padding: 0;
  margin: 0;
}
.recent-photos li {
  display: flex;
  gap: 14px;
  margin-bottom: 18px;
  align-items: start;
}
.recent-photos .recent-image {
  width: 72px;
  height: 58px;
  object-fit: cover;
  border-radius: 7px;
  flex: none;
}
.recent-photos li > div {
  min-width: 0;
}
.recent-photos a {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 14px;
}
.recent-photos time {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-top: 6px;
}
.tagcloud a {
  display: inline-block;
  border-radius: 20px;
  background: var(--blush);
  margin: 4px;
  padding: 6px 12px;
  min-height: 36px;
}
.navigation.pagination,
.navigation.comment-navigation {
  display: block;
  text-align: center;
}
.nav-links,
.page-links {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
}
.page-numbers,
.page-links > a,
.page-links > span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  min-width: 44px;
  min-height: 44px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.page-numbers.current,
.page-links .current {
  background: var(--blush);
  color: var(--accent);
}
.post-navigation {
  display: block;
}
.post-navigation .nav-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.post-navigation .nav-next {
  text-align: end;
}
.post-navigation a {
  display: block;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow-wrap: anywhere;
}
.comments-area {
  margin-top: 28px;
  padding: 28px;
}
.comment-list {
  padding: 0;
  list-style: none;
}
.comment-list .children {
  list-style: none;
  padding-inline-start: 18px;
}
.comment-list li {
  padding: 18px;
  margin-block: 16px;
}
.comment-list header {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
}
.comment-list time {
  color: var(--muted);
}
.comment-content {
  margin-block: 14px;
  overflow-wrap: anywhere;
}
.comment-reply-link {
  display: inline-block;
  min-height: 44px;
  padding: 9px;
}
.comment-form label,
.contact-card label,
.rss-source label {
  display: block;
  margin-bottom: 8px;
}
.comment-form input:not([type="checkbox"]),
.comment-form textarea,
.contact-card input:not([type="hidden"]),
.contact-card textarea,
.contact-card select,
.post-password-form input,
#oneboy-feed-url {
  width: 100%;
  padding: 12px 14px;
  min-height: 48px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}
.comment-form .submit {
  width: auto;
}
.comment-form-cookies-consent {
  display: flex;
  gap: 12px;
  align-items: baseline;
}
.contact-card {
  padding: 28px;
  margin-top: 24px;
}
.contact-honeypot {
  position: absolute;
  inset-inline-start: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
}
.contact-card input[type="email"],
#oneboy-feed-url {
  direction: ltr;
  text-align: start;
}
.form-status {
  margin-top: 16px;
}
.form-status[data-state="success"] {
  color: var(--green);
}
.form-status[data-state="error"] {
  color: var(--accent);
}
.rss-source .rss-actions {
  margin-top: 18px;
}
.entry-content img {
  height: auto;
  max-width: 100%;
}
.entry-content .wp-block-table {
  max-width: 100%;
  overflow: auto;
}
.entry-content :is(.wp-block-gallery, .gallery) {
  gap: 18px;
}
.entry-content :is(h1, h2, h3, h4, h5, h6) {
  overflow-wrap: anywhere;
}
.entry-content .media-button {
  cursor: zoom-in;
  border-radius: 9px;
}
.entry-content .wp-block-embed__wrapper {
  max-width: 100%;
}
.language-noscript {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  padding: 20px;
}
[dir="rtl"] .hero-note {
  right: auto;
  left: 34px;
}
[dir="rtl"] .entry-content blockquote {
  border-left: 0;
  border-right: 3px solid var(--primary);
}
[dir="rtl"] .rating .stars {
  background-image: linear-gradient(
    to left,
    #c27628 var(--rating),
    #cfc3af var(--rating)
  );
}
@media (max-width: 1100px) {
  .footer-areas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 600px) {
  .primary-navigation {
    display: block;
    overflow: visible;
  }
  .primary-navigation > .menu {
    gap: 2px;
  }
  .primary-navigation .menu-item > a {
    padding: 8px 12px;
    font-size: 13px;
  }
  .footer-areas {
    grid-template-columns: 1fr !important;
  }
  .footer-base {
    grid-template-columns: 1fr;
  }
  .footer-base nav {
    gap: 15px;
  }
  .footer-base .language-trigger {
    min-width: 0;
  }
  .footer-area-slot .author-profile {
    display: flex;
  }
  .comments-area,
  .contact-card {
    padding: 20px;
  }
  .comment-list li {
    padding: 12px;
  }
  .comment-list .children {
    padding-inline-start: 10px;
  }
  .post-navigation .nav-links {
    grid-template-columns: 1fr;
  }
  .chapter-navigation {
    grid-template-columns: 1fr;
  }
  .primary-navigation .sub-menu .sub-menu {
    position: static;
    margin-inline-start: 10px;
  }
}
@media print {
  .reading-toolbar,
  .contact-card,
  .comments-area,
  .sidebar {
    display: none;
  }
}


/* 模块：三端复核后的协调性修复（1.2.0）
 * 品牌、原生内容、小工具、夜间背景和触控状态。
 * 菜单浮层方向由 theme.js 的 data-ob-flip 控制；阅读字号使用统一变量。
 */
.brand-copy,
.author-profile > div {
  min-width: 0;
}
.has-custom-logo .brand-mark {
  flex-shrink: 1;
  max-width: 280px;
}
.custom-logo-link {
  display: block;
  max-width: 100%;
}
.entry-excerpt {
  overflow-wrap: anywhere;
}
.js .reading-toolbar.js-only {
  display: flex;
}
.submenu-toggle[aria-expanded="true"] .icon {
  transform: rotate(180deg);
}
.widget :is(select, input:not([type="checkbox"]), textarea) {
  max-width: 100%;
}
.widget select {
  width: 100%;
  min-height: 44px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
}
.widget :is(ul, ol) {
  overflow-wrap: anywhere;
}
.widget_nav_menu .sub-menu {
  width: auto;
}
.entry-content .gallery-columns-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.entry-content .gallery-columns-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.entry-content .wp-block-button__link {
  text-decoration: none;
  border-radius: 12px;
  min-height: 48px;
  padding: 12px 20px;
}
.entry-content .wp-block-button__link:not(.has-text-color) {
  color: var(--primary-ink);
}
.entry-content .wp-block-button__link:not(.has-background) {
  background: var(--primary);
}
.entry-content
  .wp-block-button.is-style-outline
  .wp-block-button__link:not(.has-background) {
  background: transparent;
  border: 1px solid var(--accent);
  color: var(--accent);
}
/* 夜间保留一致的深色表面，避免浅色代码块和表头配上浅色文字。 */
body[data-ob-reading-mode="night"] .entry-content pre {
  background: #232b28;
}
body[data-ob-reading-mode="night"] .entry-content th {
  background: var(--sage);
}
body[data-ob-reading-mode="night"] button:disabled {
  --disabled: #3a403b;
  color: var(--muted);
}
@media (min-width: 601px) and (max-width: 1100px) {
  .brand {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .brand-mark {
    gap: 12px;
  }
  .brand-cat {
    width: 68px;
    height: 48px;
  }
  .wordmark {
    font-size: 36px;
  }
  .brand-title {
    font-size: 19px;
    margin-bottom: 6px;
  }
  .brand-copy .muted {
    max-width: 100%;
    font-size: 13px;
  }
  .site-header {
    grid-template-columns: minmax(0, 1fr) 216px;
    gap: 20px;
  }
  .header-tools .language-trigger {
    min-width: 0;
    width: 100%;
  }
}
@media (max-width: 600px) {
  .has-custom-logo .brand-mark {
    max-width: 100%;
  }
  .custom-logo {
    max-height: 60px;
    max-width: 100%;
  }
  .has-custom-logo .brand-copy {
    padding-inline-start: 0;
  }
  .brand-copy {
    padding-left: 0;
    padding-inline-start: 70px;
  }
  .post-card .entry-excerpt {
    grid-column: 1 / -1;
  }
  .grid-card .post-thumbnail {
    align-self: start;
  }
  .post-card .post-image {
    width: 100%;
  }
  .entry-content :is(.gallery-columns-3, .gallery-columns-4) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .entry-content :is(.alignleft, .alignright) {
    float: none;
    max-width: 100%;
    margin: 20px auto;
  }
  .navigation-dialog .sub-menu {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 360px) {
  .brand-mark {
    gap: 6px;
  }
  .brand-cat {
    width: 48px;
  }
  .wordmark {
    font-size: 27px;
  }
  .brand-copy {
    padding-inline-start: 54px;
  }
  .post-card {
    padding: 16px;
    grid-template-columns: 76px minmax(0, 1fr);
    gap: 12px;
  }
  .post-image {
    height: 76px;
  }
  .book-card-top {
    grid-template-columns: 72px minmax(0, 1fr);
    gap: 14px;
  }
  .book-card .cover-image {
    width: 72px;
  }
  .dialog-header h2 {
    font-size: 20px;
  }
}


/* 模块：1.2.0 五项截图反馈修复
 * 独立语言滚动区、紧凑移动导航、原生分类归档/小工具、原生评论。
 * 仅 zsaModal 的默认关闭状态作第三方兼容，不隐藏通用 modal 或真实反馈。
 */
#zsaModal:not(.show) {
  display: none;
}
/* 主题弹窗的固定高度与独立滚动区，避开 fieldset 作为 flex 滚动项的差异。 */
.language-dialog[open] {
  height: min(560px, calc(var(--ob-viewport-height, 100dvh) - 40px));
  max-height: calc(var(--ob-viewport-height, 100dvh) - 40px);
  overflow: hidden;
}
.language-dialog > p {
  flex: none;
  font-size: 14px;
  margin-bottom: 14px;
}
.language-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  padding: 4px;
}
.language-scroll .language-list {
  display: block;
  min-inline-size: 0;
  width: 100%;
  padding: 0;
  margin: 0;
  border: 0;
  overflow: visible;
}
.language-option {
  min-height: 62px;
  margin-bottom: 8px;
  padding: 10px 14px;
}
.language-option:last-child {
  margin-bottom: 0;
}
.language-option .language-label {
  min-width: 0;
  font-size: 15px;
}
.language-code {
  display: block;
  font: 11px/1.4 var(--sans);
  color: var(--muted);
  margin-top: 2px;
}
.language-option small {
  flex: none;
}
.language-dialog .dialog-actions {
  padding-top: 12px;
  margin-top: 12px;
}
/* 移动导航：一个可滚动内容区，顶层纸卡，子层以轻缩进表达。 */
.navigation-dialog[open] {
  height: min(700px, calc(var(--ob-viewport-height, 100dvh) - 40px));
  max-height: calc(var(--ob-viewport-height, 100dvh) - 40px);
  overflow: hidden;
}
.navigation-scroll {
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  padding: 3px;
}
.navigation-dialog .mobile-menu {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.navigation-dialog .mobile-menu > .menu-item {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
}
.navigation-dialog .mobile-menu > .menu-item:has(> [aria-expanded="true"]) {
  background: var(--sage);
}
.navigation-dialog .menu-item > a {
  border: 0;
  border-radius: 0;
  min-height: 52px;
  padding: 10px 12px;
  font-size: 15px;
}
.navigation-dialog .menu-label {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
}
.navigation-dialog .mobile-menu > .menu-item > a {
  border-radius: 11px;
}
.navigation-dialog .current-menu-item > a::after {
  display: none;
}
.mobile-menu-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex: none;
  border-radius: 10px;
  background: var(--blush);
}
.mobile-menu-icon .icon {
  width: 20px;
  height: 20px;
}
.navigation-dialog .submenu-toggle {
  border: 0;
  border-inline-start: 1px solid var(--line);
  background: transparent;
  border-radius: 0;
  margin-inline-end: 4px;
}
.navigation-dialog .sub-menu {
  display: block;
  width: 100%;
  padding: 0 10px 8px 36px;
  border: 0;
  margin: 0;
  flex-basis: 100%;
}
[dir="rtl"] .navigation-dialog .sub-menu {
  padding: 0 36px 8px 10px;
}
.navigation-dialog .sub-menu .menu-item {
  border: 0;
  margin: 0;
}
.navigation-dialog .sub-menu .menu-item > a {
  min-height: 44px;
  padding-block: 8px;
  font-size: 14px;
}
.navigation-dialog .sub-menu .menu-item > a::before {
  content: "";
  width: 5px;
  height: 5px;
  flex: none;
  border-radius: 50%;
  background: var(--accent);
}
.navigation-dialog .sub-menu .sub-menu {
  padding-inline-start: 20px;
}
.navigation-dialog .navigation-language {
  width: 100%;
  flex: none;
  margin-top: 16px;
  padding-top: 12px;
}
/* 分类页：真实分类名、文章总数和邻近分类，装饰不承担信息。 */
.archive-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}
.archive-intro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 28px 30px;
  margin-bottom: 24px;
  background: linear-gradient(110deg, var(--paper) 70%, var(--blush));
}
.archive-intro-copy {
  min-width: 0;
}
.archive-eyebrow {
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--green);
  font-size: 13px;
  margin-bottom: 10px;
}
.archive-eyebrow .icon {
  width: 18px;
  height: 18px;
  stroke: var(--green);
}
.archive-intro h1 {
  margin-bottom: 12px;
  font-size: 30px;
}
.archive-description {
  color: var(--muted);
  font-size: 14px;
  max-width: 590px;
}
.archive-description p {
  margin-bottom: 12px;
}
.archive-count {
  display: inline-flex;
  background: var(--sage);
  color: var(--green);
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 12px;
}
.archive-mascot {
  width: 108px;
  height: 74px;
  object-fit: contain;
  flex: none;
}
.archive-topics {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
body.archive .result-toolbar {
  background: var(--paper);
  padding: 12px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  margin-block: 20px;
}
body.archive .post-card:not(.grid-card) {
  gap: 22px;
}
.widget_categories li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  border-bottom: 1px dashed var(--line);
  min-height: 44px;
  font-size: 13px;
  margin: 0;
  padding-block: 2px;
}
.widget_categories li > a {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 6px 0;
  color: var(--ink);
}
.widget_categories li > a::before {
  content: "";
  width: 6px;
  height: 6px;
  margin-inline-end: 10px;
  border-radius: 50%;
  background: var(--primary);
  flex: none;
}
.widget_categories ul {
  list-style: none;
  padding: 0;
}
.widget_categories .children {
  grid-column: 1 / -1;
  padding-inline-start: 16px;
}
.widget_categories .children li:last-child {
  border-bottom: 0;
}
/* 评论：使用核心字段、登录态、评论审核、嵌套与回复脚本，不模拟发表评论。 */
.comments-area {
  padding: 26px 28px;
}
.comments-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 20px;
}
.comments-heading h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-size: 23px;
}
.comments-mascot {
  width: 74px;
  height: 48px;
  object-fit: contain;
}
.comment-empty {
  color: var(--muted);
  font-size: 14px;
  padding: 8px 0;
}
.comment-list .comment-card {
  padding: 18px;
  margin-block: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
}
.comment-list .children {
  padding-inline-start: 18px;
  border-inline-start: 2px solid var(--sage);
  margin-top: 14px;
}
.comment-list .comment-card-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.comment-initial {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  border-radius: 50%;
  background: var(--sage);
  color: var(--green);
  font: 18px/1 var(--serif);
}
.comment-identity {
  min-width: 0;
  flex: 1;
}
.comment-identity strong {
  display: block;
  font-size: 14px;
  overflow-wrap: anywhere;
}
.comment-identity time {
  display: block;
  font-size: 12px;
  margin: 2px 0 0;
}
.comment-content {
  font-size: 15px;
  line-height: 1.9;
  margin-block: 12px;
}
.comment-actions {
  display: flex;
  justify-content: flex-end;
}
.comment-actions .comment-reply-link {
  font-size: 13px;
  color: var(--accent);
  min-height: 40px;
  padding: 6px 10px;
  border-radius: 8px;
  background: var(--blush);
}
.comments-area .comment-respond {
  padding: 24px 0 0;
  border-top: 1px solid var(--line);
  margin-top: 22px;
}
.comment-reply-title {
  font-size: 21px;
  margin-bottom: 12px;
}
#cancel-comment-reply-link {
  display: inline-flex;
  margin-inline-start: 10px;
  padding: 4px 8px;
  font: 13px/1.7 var(--sans);
  color: var(--accent);
}
.oneboy-comment-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 20px;
}
.oneboy-comment-form > p {
  margin: 0;
}
.oneboy-comment-form
  > :is(
    .comment-notes,
    .logged-in-as,
    .comment-form-comment,
    .comment-form-url,
    .comment-form-cookies-consent,
    .form-submit,
    .must-log-in
  ) {
  grid-column: 1 / -1;
}
.comment-form :is(.comment-notes, .logged-in-as) {
  font-size: 13px;
  line-height: 1.9;
  color: var(--muted);
}
.comment-form label {
  font-size: 14px;
  font-weight: 500;
  margin: 0 0 8px;
}
.comment-form textarea {
  min-height: 140px;
  resize: vertical;
}
.comments-area .comment-form :is(input[type="submit"], button[type="submit"]) {
  width: auto;
  min-width: 150px;
  min-height: 48px;
  padding: 10px 22px;
  background: var(--primary);
  color: var(--primary-ink);
  border: 1px solid #ebae97;
  border-radius: 12px;
  box-shadow: 0 3px 0 rgba(183, 131, 105, 0.065);
}
.oneboy-comment-form .form-submit {
  display: flex;
  justify-content: flex-end;
  margin-top: 4px;
}
@media (max-width: 600px) {
  .language-dialog[open],
  .navigation-dialog[open] {
    height: min(550px, calc(var(--ob-viewport-height, 100dvh) - 24px));
    max-height: calc(var(--ob-viewport-height, 100dvh) - 24px);
    padding: 20px 16px;
    inset: auto 12px max(12px, env(safe-area-inset-bottom));
    transform: none;
    border-radius: 22px;
  }
  .navigation-dialog[open] {
    height: min(680px, calc(var(--ob-viewport-height, 100dvh) - 24px));
  }
  .language-dialog .dialog-header,
  .navigation-dialog .dialog-header {
    margin-bottom: 12px;
  }
  .language-dialog .dialog-header h2,
  .navigation-dialog .dialog-header h2 {
    font-size: 21px;
  }
  .language-option {
    min-height: 58px;
    padding: 9px 12px;
  }
  .language-dialog .dialog-actions {
    gap: 10px;
  }
  .archive-intro {
    padding: 24px 20px;
    gap: 12px;
  }
  .archive-intro h1 {
    font-size: 26px;
  }
  .archive-mascot {
    width: 66px;
    height: 50px;
    align-self: flex-end;
  }
  .archive-description {
    font-size: 13px;
  }
  body.archive .result-toolbar {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    padding: 12px;
  }
  body.archive .result-toolbar label {
    font-size: 13px;
    flex-basis: 100%;
  }
  body.archive .result-toolbar select {
    flex: 1;
    min-width: 0;
  }
  .comments-area {
    padding: 22px 18px;
  }
  .comments-heading h2 {
    font-size: 21px;
  }
  .comments-mascot {
    width: 60px;
    height: 40px;
  }
  .comment-list .comment-card {
    padding: 14px;
  }
  .comment-list .children {
    padding-inline-start: 10px;
  }
  .comment-list .children .comment-card {
    padding: 12px 0 0;
    border: 0;
    border-top: 1px dashed var(--line);
    border-radius: 0;
  }
  .comment-list .children .children {
    padding-inline-start: 6px;
    border-inline-start: 0;
  }
  .oneboy-comment-form {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .oneboy-comment-form > p {
    grid-column: 1;
  }
  .oneboy-comment-form input:not([type="checkbox"]):not([type="hidden"]),
  .oneboy-comment-form textarea {
    font-size: 16px;
  }
  .comments-area
    .comment-form
    :is(input[type="submit"], button[type="submit"]) {
    width: 100%;
  }
  .brand-copy .brand-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
}
@media (max-height: 420px) {
  .language-dialog[open] {
    padding-block: 12px;
  }
  .language-dialog > p {
    font-size: 12px;
    margin-bottom: 6px;
  }
  .language-dialog .dialog-header {
    margin-bottom: 6px;
  }
  .language-dialog .dialog-actions {
    margin-top: 8px;
    padding-top: 8px;
  }
  .language-option {
    min-height: 54px;
  }
}


/*
模块：页脚构图与紧凑工具栏 · 1.3.0
职责：保留海岸与猫咪，统一实际小工具与空配置兜底，收敛底部工具的视觉重量。
顺序：覆盖早期页脚规则；只作用于 site-footer 内，不改变正文或订阅页面。
*/

/* 1. 海岸分隔：靠下取景保留猫咪全身，去掉原图上方过多的空白。 */
.site-footer {
  margin-block-start: 48px;
}
.site-footer .footer-seaside {
  height: clamp(160px, 17vw, 326px);
  max-height: none;
}
.site-footer .footer-panorama {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 72%;
}

/* 2. 内容纸面：多个后台小工具共用一个整齐纸面，避免卡片套卡片。 */
.footer-content {
  padding: 30px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--paper);
  box-shadow: var(--shadow);
}
.footer-content .footer-areas {
  gap: 28px;
  padding: 0;
}
.footer-content .footer-area-slot .widget {
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.footer-content .footer-area-slot .widget + .widget {
  margin-block-start: 24px;
}
.footer-content .widget-title {
  margin: 0 0 16px;
  padding-block-end: 12px;
  font-size: 18px;
  line-height: 1.5;
}
.footer-content .footer-area p {
  margin-block: 10px;
  line-height: 1.8;
}
.footer-content .footer-area .button {
  width: fit-content;
  max-width: 100%;
  padding-inline: 16px;
}
.footer-content .footer-area .author-profile h3 {
  font-size: 16px;
}
.footer-content .recent-photos li {
  gap: 12px;
  margin: 0;
  padding-block: 8px;
}
.footer-content .recent-photos .recent-image {
  width: 56px;
  height: 48px;
  border-radius: 8px;
}
.footer-content .recent-photos a {
  min-height: 44px;
  font-size: 13px;
  line-height: 1.7;
}
.footer-content .recent-photos time {
  margin-block-start: 3px;
  font-size: 11px;
}

/* 3. 空小工具兜底：站点介绍、后台底部菜单、三篇真实文章组成三个稳定栏目。 */
.footer-content .footer-fallback {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.8fr) minmax(0, 1.15fr);
  gap: 36px;
  padding: 0;
}
.footer-fallback > * {
  min-width: 0;
}
.footer-brand-mark {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-block-end: 16px;
}
.footer-brand-mark .wordmark {
  font-size: 34px;
  line-height: 1.25;
}
.footer-mascot {
  flex: 0 0 auto;
  width: 68px;
  height: 52px;
  object-fit: contain;
}
.footer-brand-mark .custom-logo-link {
  max-width: 220px;
}
.footer-brand-mark .custom-logo {
  max-height: 80px;
  width: auto;
  max-width: 100%;
  object-fit: contain;
}
.footer-site-name {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 600;
  overflow-wrap: anywhere;
}
.footer-description {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.85;
  overflow-wrap: anywhere;
}
.footer-content .footer-menu {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin: 0;
}
.footer-content .footer-menu > li,
.footer-content .footer-menu .menu-item {
  min-width: 0;
}
.footer-content .footer-menu a {
  padding: 8px 0;
  overflow-wrap: anywhere;
}
.footer-content .footer-menu .sub-menu {
  padding-inline-start: 14px;
  border-inline-start: 2px solid var(--sage);
}

/* 4. 元信息工具栏：版权靠左，有效辅助链接居中，语言与小型返回按钮靠右。 */
.site-footer .footer-base {
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 18px;
  border-top: 0;
  padding-block: 18px 24px;
}
.footer-base .footer-copyright {
  color: var(--muted);
  overflow-wrap: anywhere;
  line-height: 1.8;
}
.site-footer .footer-base .footer-utility-links {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
}
.footer-base .footer-utility-links a {
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
}
.footer-base .footer-rss-link .icon {
  width: 16px;
  height: 16px;
  color: var(--accent);
}
.footer-base .footer-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.site-footer .footer-tools .language-trigger {
  width: auto;
  min-width: 168px;
  height: 44px;
  min-height: 44px;
  padding: 8px 12px;
  font-size: 13px;
}
.site-footer .footer-tools .top-link {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  flex: 0 0 44px;
  border-radius: 50%;
  font-size: 20px;
}

/* 5. 平板两列：品牌占一列，导航与最近文章顺序可读；小工具依实际数量排布。 */
@media (max-width: 1100px) {
  .footer-content {
    padding: 24px;
  }
  .footer-content .footer-fallback {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
  }
  .footer-fallback .footer-signature {
    grid-column: 1 / -1;
    max-width: 60ch;
  }
  .site-footer .footer-base {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px 16px;
  }
  .footer-base .footer-copyright {
    grid-column: 1 / -1;
  }
}

/* 6. 手机：猫咪保留足够尺寸；介绍在前，栏目依次展开，工具与版权独立成行。 */
@media (max-width: 600px) {
  .site-footer {
    margin-block-start: 32px;
  }
  .site-footer .footer-seaside {
    height: 144px;
  }
  .site-footer .footer-panorama {
    min-width: 640px;
    object-position: 50% 72%;
  }
  .footer-content {
    padding: 20px;
    border-radius: 16px;
  }
  .footer-content .footer-fallback {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .footer-content .footer-areas {
    gap: 24px;
  }
  .footer-content .footer-fallback-navigation .footer-menu {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 20px;
    align-items: start;
  }
  .site-footer .footer-base {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    padding-block: 16px 22px;
  }
  .footer-base .footer-tools {
    grid-row: 1;
    justify-content: space-between;
  }
  .site-footer .footer-tools .language-trigger {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 240px;
  }
  .site-footer .footer-base .footer-utility-links {
    justify-content: center;
  }
  .footer-base .footer-copyright {
    grid-row: 3;
    text-align: center;
  }
}


/*
模块：导航、排序、面包屑、头像和新增小工具 · 1.4.0
职责：整合桌面导航与展开按钮；紧凑工具栏；底部导航独立成行；侧边悬浮返回；真实头像及翻页。
*/
/* 1. 主导航：文字和箭头形成一个组合，保留独立可操作的链接与展开按钮。 */
.primary-navigation .menu {
  gap: 6px;
}
.primary-navigation .menu-item {
  gap: 0;
}
.primary-navigation .current-menu-ancestor > .submenu-toggle {
  background: var(--blush);
}
.native-widget-menu .menu-item {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.native-widget-menu .menu-item > a {
  flex: 1;
  min-width: 0;
}
.native-widget-menu .sub-menu {
  flex-basis: 100%;
}
.native-widget-menu .submenu-toggle {
  border: 0;
  background: transparent;
  box-shadow: none;
}
.primary-navigation .menu-item-has-children > a {
  padding-inline-end: 7px;
  border-start-end-radius: 0;
  border-end-end-radius: 0;
}
.primary-navigation .submenu-toggle {
  width: 36px;
  min-width: 36px;
  height: 48px;
  padding: 6px;
  margin: 0;
  border: 0;
  box-shadow: none;
  background: transparent;
  border-radius: 0 10px 10px 0;
}
.primary-navigation .menu-item:has(> [aria-expanded="true"]) > a,
.primary-navigation .menu-item:has(> [aria-expanded="true"]) > .submenu-toggle {
  background: var(--sage);
  color: var(--green);
}
.primary-navigation .sub-menu {
  padding: 8px;
  border-radius: 14px;
  margin-block-start: 8px;
  box-shadow: 0 8px 24px #48342d12;
}
.primary-navigation .sub-menu .sub-menu {
  margin: 0;
}
.primary-navigation .sub-menu a {
  padding: 10px 12px;
  min-height: 44px;
  border-radius: 8px;
}
.primary-navigation .sub-menu .submenu-toggle {
  height: 44px;
}
.primary-navigation .sub-menu .current-menu-item > a {
  background: var(--sage);
  color: var(--green);
}
.primary-navigation .sub-menu .current-menu-item > a::after {
  display: none;
}
/* 2. 原生排序：标签与两个控件对齐，按钮使用温和主色；GET 提交在无 JS 时照常工作。 */
.result-toolbar {
  gap: 10px;
  padding: 12px 16px;
  background: var(--paper);
}
.result-toolbar > label {
  font-size: 13px;
  color: var(--muted);
  margin-inline-end: auto;
}
.result-toolbar select {
  min-width: 146px;
  border-radius: 10px;
  background: var(--bg);
  font-size: 13px;
}
.result-toolbar .button {
  min-width: 72px;
  background: var(--sage);
  border-color: var(--sage);
  color: var(--green);
  font-size: 13px;
  box-shadow: none;
}
/* 3. 底部导航：从介绍和最近文章之间移出，作为独立的轻量区域。 */
.site-footer .footer-content .footer-fallback {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 48px;
}
.footer-navigation-strip {
  padding-block: 18px;
  border-bottom: 1px solid var(--line);
}
.footer-navigation-strip .footer-menu,
.footer-navigation-strip .widget_nav_menu > div > .menu {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 24px;
  align-items: start;
  margin: 0;
  padding: 0;
  list-style: none;
}
.footer-navigation-strip .widget {
  padding: 0;
  margin: 0;
  border: 0;
  box-shadow: none;
  background: transparent;
}
.footer-navigation-strip .widget-title {
  font-size: 13px;
  color: var(--muted);
  padding: 0;
  margin-bottom: 8px;
  border: 0;
}
.footer-navigation-strip .widget-title::after {
  display: none;
}
.footer-navigation-strip .menu-item {
  margin: 0;
}
.site-footer .current-menu-item > a,
.site-footer .current-menu-ancestor > a {
  background: transparent;
  border-radius: 0;
  font-weight: 600;
  color: var(--accent);
}
.site-footer .current-menu-item > a::after {
  display: none;
}
.footer-navigation-strip .footer-menu a {
  padding: 8px 0;
  font-size: 13px;
}
.footer-navigation-strip .submenu-toggle {
  border: 0;
  box-shadow: none;
  background: transparent;
}
.footer-navigation-strip .sub-menu {
  padding-inline-start: 12px;
  margin: 0;
}
.footer-navigation-strip .footer-menu > li {
  flex-wrap: wrap;
}
.footer-navigation-strip .footer-menu > li > .sub-menu {
  flex-basis: 100%;
}
/* 4. 返回顶部：位于页面侧边，避开移动安全区域；原生链接无需脚本也能使用。 */
.floating-top.top-link {
  position: fixed;
  inset-inline-end: 24px;
  bottom: calc(24px + env(safe-area-inset-bottom));
  z-index: 20;
  width: 48px;
  height: 48px;
  min-width: 48px;
  min-height: 48px;
  border-radius: 50%;
  background: var(--paper);
  color: var(--accent);
  box-shadow: var(--shadow);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
}
.js .floating-top:not(.is-visible) {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}
/* 5. 面包屑：完整祖先链，长名称自然换行，分隔符不进入朗读。 */
.breadcrumbs {
  margin: 0 0 20px;
  font-size: 12px;
  color: var(--muted);
}
.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  list-style: none;
  padding: 0;
  margin: 0;
  gap: 4px 8px;
}
.breadcrumbs li {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 8px;
  overflow-wrap: anywhere;
}
.breadcrumbs li + li::before {
  content: "›" / "";
  color: var(--muted);
}
.breadcrumbs li[aria-current="page"] {
  color: var(--ink);
}
.breadcrumbs a {
  color: var(--muted);
}
/* 6. 文章相邻导航：方向和真实标题分层，仅一侧存在时铺满。 */
.post-navigation .nav-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.post-navigation .nav-links > div {
  padding: 0;
  min-width: 0;
  overflow: hidden;
  border-radius: 14px;
  background: var(--paper);
}
.post-navigation .nav-links > div:only-child {
  grid-column: 1 / -1;
}
.post-navigation .nav-links a {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  min-height: 100px;
  padding: 18px 22px;
  overflow-wrap: anywhere;
}
.post-navigation .adjacent-label {
  color: var(--green);
  font-size: 12px;
  line-height: 1.5;
}
.post-navigation .adjacent-title {
  color: var(--ink);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.65;
}
.post-navigation .nav-next a {
  align-items: flex-end;
  text-align: end;
}
.post-navigation a:hover {
  background: var(--sage);
}
/* 章节保留目录和首尾不可用状态，方向与章节标题采用相同层次。 */
.chapter-navigation .button {
  flex-direction: column;
  align-items: stretch;
  text-align: start;
  gap: 8px;
  min-height: 96px;
  padding: 16px 20px;
  overflow-wrap: anywhere;
}
.chapter-navigation .adjacent-label {
  color: var(--green);
  font-size: 12px;
}
.chapter-navigation .adjacent-title {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
  font-weight: 600;
}
/* 7. 用户头像：照片加载后替换初字；图片失败时保留即时可见的初字。 */
.oneboy-avatar-frame {
  position: relative;
  display: inline-flex;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  background: var(--sage);
  color: var(--green);
  border-radius: 50%;
  overflow: hidden;
}
.oneboy-avatar-frame .avatar {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  opacity: 0;
}
.oneboy-avatar-frame[data-ob-avatar-ready="true"] .avatar {
  opacity: 1;
}
.oneboy-avatar-frame[data-ob-avatar-ready="true"] .avatar-initial {
  visibility: hidden;
}
html:not(.js) .oneboy-avatar-frame .avatar {
  opacity: 1;
}
.comment-card-header .oneboy-avatar-frame {
  flex-basis: 44px;
}
/* 8. 新增侧栏组件：仍由后台控制标题、记录数、作者、分类和菜单。 */
.widget-author {
  display: flex;
  gap: 14px;
  align-items: start;
}
.widget-author > div {
  min-width: 0;
}
.widget-author p {
  font-size: 13px;
  color: var(--muted);
  margin-block: 8px;
}
.topic-chips,
.widget-conversations,
.widget-books,
.widget-months,
.widget-doorways {
  list-style: none;
  padding: 0;
  margin: 0;
}
.topic-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.topic-chips a {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 4px 10px;
  border-radius: 10px;
  background: var(--blush);
  font-size: 13px;
}
.topic-chips .count {
  padding: 1px 6px;
  background: var(--paper);
  font-size: 11px;
}
.widget-conversations li,
.widget-books li {
  display: flex;
  gap: 12px;
  padding-block: 10px;
  border-bottom: 1px solid var(--line);
}
.widget-conversations li:last-child,
.widget-books li:last-child {
  border: 0;
}
.widget-conversations .oneboy-avatar-frame {
  width: 32px;
  height: 32px;
  flex-basis: 32px;
}
.widget-conversations li > div,
.widget-books li > div {
  min-width: 0;
}
.widget-conversations strong {
  font-size: 12px;
}
.widget-conversations a {
  display: block;
  font-size: 13px;
  overflow-wrap: anywhere;
  min-height: 44px;
}
.widget-books img {
  width: 48px;
  height: 64px;
  object-fit: cover;
  border-radius: 5px;
}
.widget-books a,
.widget-books small {
  display: block;
}
.widget-books a {
  font-size: 14px;
  min-height: 44px;
}
.widget-books small {
  font-size: 12px;
  color: var(--muted);
}
.widget-months li {
  border-bottom: 1px solid var(--line);
  padding-block: 8px;
  font-size: 13px;
}
.widget-months a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.widget-doorways {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.widget-doorways a {
  display: flex;
  align-items: center;
  min-height: 48px;
  gap: 8px;
  padding: 8px;
  border-radius: 10px;
  background: var(--sage);
  font-size: 13px;
  overflow-wrap: anywhere;
}
.widget-doorways .icon {
  width: 20px;
  height: 20px;
}
@media (max-width: 600px) {
  .result-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .result-toolbar > label {
    grid-column: 1 / -1;
    margin: 0;
  }
  .result-toolbar select {
    width: 100%;
    min-width: 0;
  }
  .site-footer .footer-content .footer-fallback {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .footer-navigation-strip .footer-menu,
  .footer-navigation-strip .widget_nav_menu > div > .menu {
    gap: 4px 22px;
  }
  .floating-top.top-link {
    inset-inline-end: 14px;
    bottom: calc(18px + env(safe-area-inset-bottom));
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
  }
  .post-navigation .nav-links {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
  }
  .post-navigation .nav-links a {
    min-height: 84px;
    padding: 16px;
  }
}


/*
模块：内容图片选择、紧凑底部、书单工具条、作品目录与连续阅读。
职责：只改变布局，保留经典主题模板、原生筛选、目录、正文和小工具接口。
顺序：覆盖前版同类规则；使用主题变量，护眼与夜间配色继续生效。
*/

/* 1. 底部：短插画条 + 统一纸面；品牌与真实文章卡的宽度按内容分配。 */
.site-footer {
  margin-block-start: 36px;
}
.site-footer .footer-seaside {
  display: block;
  height: clamp(130px, 11.5vw, 220px);
  overflow: hidden;
}
.site-footer .footer-panorama {
  object-position: 50% 70%;
}
.footer-panel {
  padding: 24px 28px 0;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: var(--shadow);
}
.site-footer .footer-content {
  border: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  padding: 0;
}
.site-footer .footer-content .footer-fallback {
  grid-template-columns: minmax(220px, 0.9fr) minmax(0, 1.8fr);
  gap: 28px;
  align-items: start;
}
.footer-panel .footer-brand-mark {
  margin-bottom: 10px;
}
.footer-panel .footer-mascot {
  width: 58px;
  height: 44px;
}
.footer-panel .footer-brand-mark .wordmark {
  font-size: 30px;
}
.footer-panel .footer-content .widget-title {
  margin: 0 0 12px;
  padding-bottom: 8px;
  font-size: 16px;
}
.footer-panel .footer-fallback-recent .recent-photos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr));
  gap: 12px;
  align-items: start;
}
.footer-panel .footer-fallback-recent .recent-photos li {
  display: flex;
  flex-direction: row;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  align-items: start;
  min-width: 0;
}
.footer-panel .recent-photos li > div {
  min-width: 0;
}
.footer-panel .recent-photos a {
  min-height: 44px;
  display: block;
  line-height: 1.65;
  overflow-wrap: anywhere;
}
.footer-panel .recent-photos time {
  margin-top: 6px;
}
.footer-panel .footer-content .footer-areas {
  align-items: start;
  gap: 24px;
}
.footer-panel .footer-area-slot .widget + .widget {
  margin-top: 18px;
}
.footer-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--line);
  padding-block: 12px;
  margin-top: 20px;
}
.site-footer .footer-navigation-strip {
  flex: 1 1 360px;
  padding: 0;
  border: 0;
  min-width: 0;
}
.footer-panel .footer-navigation-strip .widget-title {
  border: 0;
  padding: 0;
  margin: 0 0 4px;
  font-size: 12px;
}
.footer-panel .footer-navigation-strip .menu {
  gap: 4px 20px;
  align-items: center;
}
.footer-panel .footer-navigation-strip a {
  font-size: 13px;
}
.footer-panel .footer-tools {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
}
.footer-panel .footer-tools .language-trigger {
  width: 174px;
  min-height: 44px;
  max-width: 100%;
}
.site-footer .footer-base {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px 20px;
  padding: 12px 0 16px;
  margin: 0;
  border-top: 1px solid var(--line);
  width: 100%;
  font-size: 11px;
}
.footer-panel .footer-base .footer-copyright {
  margin: 0;
  min-width: 0;
  max-width: 100%;
  text-align: start;
  overflow-wrap: anywhere;
}
.footer-panel .footer-base .footer-utility-links {
  display: flex;
  gap: 14px;
  justify-content: start;
  min-width: 0;
}

/* 2. 书单：状态、排序、结果数与视图同属一个工具条，无游离的大空白行。 */
.book-archive-tools {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px 20px;
  padding: 16px 18px;
  margin-block: 20px;
  align-items: center;
}
.book-archive-tools .filter-bar {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
}
.book-archive-tools .chip {
  padding: 8px 14px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}
.book-archive-tools .selected {
  background: var(--sage);
  color: var(--green);
  border-color: var(--green);
}
.book-archive-tools .result-toolbar {
  display: flex;
  gap: 8px;
  margin: 0;
  padding: 0;
  border: 0;
  box-shadow: none;
  background: transparent;
  flex-wrap: wrap;
}
.book-archive-tools .result-toolbar label {
  font-size: 12px;
  color: var(--muted);
}
.book-archive-tools .result-toolbar select {
  border-radius: 10px;
  min-height: 44px;
  padding: 8px 32px 8px 12px;
  font-size: 13px;
  background-color: var(--bg);
  min-width: 130px;
  max-width: 100%;
}
.book-archive-tools .result-toolbar .button {
  min-height: 44px;
  padding: 8px 14px;
  font-size: 13px;
}
.book-archive-tools .book-result-count {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}
.book-archive-tools .view-toolbar {
  justify-content: end;
  margin: 0;
  padding: 0;
  gap: 0;
}
.book-archive-tools .view-toolbar .button {
  border-radius: 0;
  font-size: 12px;
  gap: 6px;
  box-shadow: none;
  padding: 8px 12px;
}
.book-archive-tools .view-toolbar .button:first-child {
  border-start-start-radius: 10px;
  border-end-start-radius: 10px;
}
.book-archive-tools .view-toolbar .button:last-child {
  border-start-end-radius: 10px;
  border-end-end-radius: 10px;
}
.book-archive-tools .view-toolbar .button[aria-pressed="true"] {
  background: var(--sage);
  color: var(--green);
}

/* 3. 小说：简介不复用大图文章模板，真实阅读入口与状态分组；目录按 40 条分页。 */
.story-overview {
  padding: 26px 28px;
  margin-bottom: 22px;
}
.story-overview-top {
  display: flex;
  align-items: start;
  gap: 24px;
}
.story-cover {
  flex: 0 0 auto;
  width: 120px;
  height: 168px;
  object-fit: contain;
  border-radius: 10px;
}
.story-heading {
  min-width: 0;
  flex: 1;
}
.story-heading .eyebrow {
  margin: 0 0 10px;
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--green);
  font-size: 12px;
}
.story-title-line {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.story-title-line h1 {
  margin: 0;
  font-size: clamp(24px, 2.3vw, 32px);
  line-height: 1.55;
  overflow-wrap: anywhere;
}
.story-heading .metadata {
  margin-block: 12px;
}
.story-count {
  color: var(--muted);
  font-size: 12px;
  margin: 0 0 16px;
}
.story-reading-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.story-reading-links .button {
  min-height: 44px;
  padding: 9px 16px;
}
.story-introduction {
  max-width: none;
  margin: 22px 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--line);
  font-size: 15px;
  line-height: 1.9;
}
.story-introduction:empty {
  display: none;
}
.story-introduction > :last-child {
  margin-bottom: 0;
}
.story-edit {
  margin-top: 12px;
  font-size: 12px;
}
.chapter-directory {
  padding: 22px 24px;
}
.directory-heading {
  display: flex;
  gap: 14px;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.directory-heading h2 {
  font-size: 21px;
  margin: 0;
}
.chapter-order {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.chapter-order .chip {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  padding: 6px 12px;
}
.chapter-directory .chapter-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  list-style: none;
  padding: 0;
  margin: 0;
  column-gap: 20px;
}
.chapter-list li {
  margin: 0;
  min-width: 0;
  border-bottom: 1px dashed var(--line);
}
.chapter-directory .chapter-list a {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) 16px;
  gap: 10px;
  align-items: center;
  min-height: 58px;
  padding: 10px 8px;
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.6;
  border: 0;
}
.chapter-directory .chapter-list a > span {
  margin: 0;
  color: var(--ink);
}
.chapter-directory .chapter-list .chapter-number {
  width: 38px;
  min-width: 38px;
  white-space: nowrap;
  color: var(--green);
}
.chapter-directory .chapter-list .chapter-arrow {
  color: var(--muted);
}
.chapter-list a:hover {
  background: var(--sage);
}
.chapter-number {
  color: var(--green);
  font-size: 12px;
  background: var(--sage);
  border-radius: 8px;
  padding: 4px;
  text-align: center;
  overflow-wrap: anywhere;
}
.chapter-title {
  overflow-wrap: anywhere;
}
.chapter-arrow {
  color: var(--muted);
}
.directory-pagination {
  margin-top: 18px;
}
.directory-pagination ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.directory-pagination .page-numbers {
  min-width: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  border-radius: 10px;
  border: 1px solid var(--line);
}
.directory-pagination ul.page-numbers {
  border: 0;
}
.directory-pagination .current {
  background: var(--sage);
  color: var(--green);
}
.directory-empty {
  display: flex;
  align-items: center;
  gap: 20px;
  padding-block: 16px;
  color: var(--muted);
}
.directory-cat {
  width: 96px;
  height: auto;
}

/* 4. 章节：标题、阅读工具和正文在同一纸面内，短内容也有连续结构。 */
.chapter-reader {
  padding: 28px 36px 22px;
}
.reader-header {
  max-width: 70ch;
  margin-inline: auto;
}
.reader-work {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--green);
  font-size: 12px;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.reader-header h1 {
  font-size: clamp(24px, 2.5vw, 32px);
  line-height: 1.5;
  margin: 14px 0 12px;
  overflow-wrap: anywhere;
}
.reader-header .metadata {
  font-size: 12px;
  margin-bottom: 18px;
}
.chapter-reader .reader-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 0;
  margin: 0;
  border-block: 1px solid var(--line);
  background: transparent;
}
.reading-modes,
.reading-fonts {
  display: flex;
  gap: 6px;
}
.reader-controls .button {
  padding: 8px 12px;
  min-height: 44px;
  font-size: 12px;
  box-shadow: none;
}
.reader-controls .button[aria-pressed="true"] {
  background: var(--sage);
  color: var(--green);
  border-color: var(--green);
}
.chapter-reader .reader-content {
  margin: 0 auto;
  padding: 24px 0 18px;
  max-width: 70ch;
  min-height: 0;
  font-size: var(--reader-font, 18px);
  line-height: 1.95;
}
.chapter-reader .reader-content > :last-child {
  margin-bottom: 0;
}
.chapter-reader .chapter-navigation {
  margin: 8px 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--line);
  gap: 10px;
  align-items: center;
}
.chapter-reader .chapter-navigation .button {
  min-height: 76px;
  padding: 12px 14px;
  background: transparent;
  box-shadow: none;
}
.chapter-reader .chapter-navigation .button:hover:not(:disabled) {
  background: var(--sage);
}
.chapter-reader .chapter-navigation button:disabled {
  border: 0;
  background: transparent;
  color: var(--muted);
  opacity: 0.7;
  min-height: 44px;
  padding: 8px 12px;
}

/* 5. 三端：控件和目录自然换行，正文和实际小工具保留可读宽度。 */
@media (max-width: 1000px) {
  .book-archive-tools {
    grid-template-columns: minmax(0, 1fr);
  }
  .book-archive-tools .view-toolbar {
    justify-content: start;
  }
  .site-footer .footer-content .footer-fallback {
    grid-template-columns: minmax(200px, 0.8fr) minmax(0, 1.2fr);
    gap: 22px;
  }
  .footer-panel .footer-fallback-recent .recent-photos {
    grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr));
  }
}
@media (max-width: 600px) {
  .site-footer .footer-seaside {
    height: 100px;
  }
  .site-footer .footer-panorama {
    min-width: 0;
    width: 100%;
    object-position: 20% 72%;
  }
  .footer-panel {
    padding: 18px 18px 0;
  }
  .site-footer .footer-content .footer-fallback {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
  }
  .footer-panel .footer-fallback-recent .recent-photos {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }
  .footer-panel .footer-fallback-recent .recent-photos li {
    flex-direction: row;
    padding: 10px;
    gap: 10px;
  }
  .footer-panel .footer-rail {
    gap: 8px;
    margin-top: 16px;
    padding-block: 10px;
  }
  .footer-panel .footer-navigation-strip {
    flex-basis: 100%;
  }
  .site-footer .footer-base {
    flex-direction: column;
    align-items: start;
    padding-block: 10px 14px;
  }
  .book-archive-tools {
    padding: 14px;
    gap: 12px;
  }
  .book-archive-tools .result-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .book-archive-tools .result-toolbar label {
    grid-column: 1/-1;
  }
  .book-archive-tools .result-toolbar select {
    min-width: 0;
    width: 100%;
  }
  .story-overview {
    padding: 20px;
  }
  .story-overview-top {
    gap: 14px;
  }
  .story-cover {
    width: 76px;
    height: 112px;
  }
  .story-title-line h1 {
    font-size: 24px;
  }
  .story-reading-links {
    margin-inline-start: 0;
  }
  .chapter-directory {
    padding: 18px;
  }
  .chapter-directory .chapter-list {
    grid-template-columns: minmax(0, 1fr);
  }
  .chapter-reader {
    padding: 20px 18px 18px;
  }
  .chapter-reader .reader-content {
    padding-block: 20px 18px;
  }
  .chapter-reader .chapter-navigation {
    grid-template-columns: minmax(0, 1fr);
  }
  .reader-controls .button {
    padding-inline: 10px;
  }
}


/*
模块：首页阅读入口与短篇正文（27）。
手机首页将插画、标题和入口合并为一张手账卡。按钮留在正常文档流中，
可容纳长标题、多语言和大字体；保留原始插画和猫咪，装饰不挡住操作。
短篇与章节共用 reader-controls、reader-content 和阅读偏好。
*/
.hero-actions {
  display: flex;
  align-items: center;
  gap: 14px;
}
.hero-actions .note-cat {
  position: static;
  flex: 0 0 66px;
  width: 66px;
  height: 44px;
  margin-inline-start: auto;
}
.hero-note .hero-actions .button {
  position: static;
  margin: 0;
  min-width: 0;
  text-wrap: balance;
}
@media (max-width: 600px) {
  .home-hero {
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: var(--paper);
    box-shadow: var(--shadow);
    margin-block: 0 28px;
  }
  .home-hero .hero-picture {
    margin: 0;
    display: block;
  }
  .home-hero .hero-image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1.65;
    border-radius: 0;
    object-position: 38% center;
  }
  .home-hero .hero-note {
    padding: 21px 20px 20px;
    border: 0;
    border-radius: 0;
    background: linear-gradient(125deg, var(--paper), #fff5e9);
    box-shadow: none;
  }
  .hero-note h1 {
    font-size: clamp(21px, 5.8vw, 25px);
    line-height: 1.55;
    margin: 0;
    text-wrap: balance;
  }
  .hero-note p {
    margin-block: 12px 18px;
    font-size: 14px;
    line-height: 1.8;
  }
  .hero-actions {
    gap: 10px;
  }
  .hero-note .hero-actions .button {
    flex: 1;
    min-height: 46px;
    padding: 11px 13px;
    font-size: 14px;
    line-height: 1.5;
  }
  .hero-actions .note-cat {
    flex-basis: 62px;
    width: 62px;
  }
}
.short-story-reader .reader-content {
  overflow-wrap: anywhere;
}


/* 模块：真实语言站点提示；保持移动弹窗可滚动、选项可换行。 */
.language-option .language-label {
  min-width: 0;
}
.language-hint {
  display: block;
  margin-block-start: 6px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.6;
  overflow-wrap: anywhere;
}
.language-option .language-code {
  overflow-wrap: anywhere;
}


/* 模块：原生区块小工具边界；默认搜索与多语言按钮可在窄屏正常收缩。 */
.sidebar,
.sidebar-widgets,
.sidebar-widgets > .widget {
  min-width: 0;
}
.widget .wp-block-search,
.widget .wp-block-search__inside-wrapper {
  max-width: 100%;
  min-width: 0;
}
.widget .wp-block-search__input {
  min-width: 0;
  width: 1%;
  flex: 1 1 auto;
}
.widget .wp-block-search__button {
  flex: 0 1 auto;
  margin-inline-start: 8px;
  padding: 10px 12px;
  overflow-wrap: anywhere;
}


/* 模块：单语言站排版。语言入口不输出时，头部与底部自动收拢。 */
.single-language-site .header-tools {
  align-self: center;
}
.single-language-site .footer-rail {
  grid-template-columns: minmax(0, 1fr);
}
.single-language-site .footer-navigation-strip {
  justify-self: stretch;
}
@media (max-width: 600px) {
  .single-language-site .site-header {
    row-gap: 12px;
  }
}


/* 模块：真实编辑信息、来源及备案版权；支持窄屏和长文本。 */
.entry-byline {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 0.875rem;
}
.entry-byline a {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.editorial-summary {
  margin-block: 24px;
  padding: 18px 22px;
  border-inline-start: 3px solid var(--sage);
  border-radius: 12px;
  background: var(--paper);
}
.editorial-summary h2,
.editorial-sources h2 {
  margin: 0 0 10px;
  font-size: 1.05rem;
}
.editorial-summary p {
  margin: 0;
}
.editorial-sources {
  margin-block: 26px;
  padding-block-start: 18px;
  border-block-start: 1px solid var(--line);
}
.editorial-sources ol {
  margin: 0;
  padding-inline-start: 24px;
}
.editorial-sources a {
  overflow-wrap: anywhere;
  text-underline-offset: 3px;
}
.footer-legal {
  padding-block-start: 16px;
  border-block-start: 1px solid var(--line);
  margin-block-start: 14px;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.7;
}
.footer-legal p {
  margin: 0 0 5px;
}
.footer-theme-rights {
  opacity: 1;
}
.footer-theme-rights a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.footer-registration {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 20px;
  margin-block-start: 8px;
}
.footer-registration a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 32px;
  overflow-wrap: anywhere;
}
.footer-registration .icon {
  width: 15px;
  height: 15px;
  flex: none;
}
@media (max-width: 600px) {
  .footer-rights,
  .footer-theme-rights {
    padding-inline-end: 52px;
  }
  .editorial-summary {
    padding: 16px;
  }
  .footer-registration {
    gap: 2px 16px;
  }
  .footer-registration a {
    min-height: 40px;
  }
}


/* 模块：小站地图独立布局。所有选择器限定在 sitemap-page，保留公共页面样式。 */
.sitemap-page > .list-header {
  min-height: 0;
  padding: 26px 28px;
  margin: 0 0 20px;
}
.sitemap-page > .list-header h1 {
  margin: 0 0 10px;
}
.sitemap-page > .list-header p {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.8;
}
.sitemap-page .sitemap-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
}
.sitemap-page .sitemap-card {
  min-width: 0;
  padding: 22px 24px;
}
.sitemap-page .sitemap-card--pages {
  grid-column: 1 / -1;
}
.sitemap-page .sitemap-card > h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 14px;
  margin: 0 0 16px;
  border-bottom: 1px solid var(--line);
  font-size: 1.25rem;
  line-height: 1.5;
}
.sitemap-page .sitemap-card > h2 .icon {
  width: 21px;
  height: 21px;
  flex: none;
  stroke: var(--green);
}
.sitemap-page .sitemap-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
  font-size: 0.9375rem;
}
.sitemap-page .sitemap-links--pages {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
}
.sitemap-page .sitemap-links li {
  min-width: 0;
  margin: 0;
  color: var(--muted);
  overflow-wrap: anywhere;
}
.sitemap-page .sitemap-links > li {
  padding-inline: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg);
}
.sitemap-page .sitemap-links a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding-block: 10px;
  color: var(--ink);
  line-height: 1.6;
  overflow-wrap: anywhere;
  text-underline-offset: 4px;
}
.sitemap-page .sitemap-links--pages a,
.sitemap-page .sitemap-links--archives a {
  display: flex;
  width: 100%;
}
.sitemap-page .sitemap-links--categories a {
  max-width: calc(100% - 52px);
  margin-inline-end: 8px;
  vertical-align: middle;
}
.sitemap-page .sitemap-links a:hover,
.sitemap-page .sitemap-links a:focus-visible {
  color: var(--accent);
  text-decoration: underline;
}
.sitemap-page .sitemap-links .children {
  list-style: none;
  padding-inline-start: 12px;
  margin: 0 0 10px;
  border-inline-start: 1px solid var(--line);
}
.sitemap-page .sitemap-links .children a {
  font-size: 0.875rem;
}
.sitemap-page .sitemap-empty {
  margin: 0;
  padding: 12px 0;
  color: var(--muted);
  font-size: 0.9375rem;
}
.sitemap-page > .single-entry {
  margin-top: 20px;
}
@media (max-width: 600px) {
  .sitemap-page > .list-header {
    padding: 20px;
  }
  .sitemap-page .sitemap-grid,
  .sitemap-page .sitemap-links--pages {
    grid-template-columns: minmax(0, 1fr);
  }
  .sitemap-page .sitemap-grid {
    gap: 16px;
  }
  .sitemap-page .sitemap-card {
    padding: 18px 20px;
  }
}


/* 模块：推荐文章、长顶部文案与无障碍。保持现有主题配色。 */
.recommended-posts li.ob-text-only {
  grid-template-columns: minmax(0, 1fr);
}
.topbar-motto {
  display: block;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.topbar {
  height: auto;
  min-height: 30px;
}
.widget_oneboy_recommended .recent-photos a {
  display: inline-block;
  padding-block: 5px;
  text-underline-offset: 3px;
}
/* 手机卡片处于正常文档流；清除桌面 RTL 的 left 定位，避免被插画容器裁切。 */
@media (max-width: 600px) {
  .home-hero .hero-note {
    position: static;
    inset: auto;
    width: 100%;
    max-width: none;
  }
}


/* 34 书架、公开统计与公告：原生小工具，逻辑方向适配 RTL。 */
.reading-shelf {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 12px;
}
.shelf-book {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) 14px;
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding: 14px 12px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: linear-gradient(135deg, #fffdf8, #f5efe1);
  box-shadow:
    0 3px 0 #eadcc8,
    0 5px 12px #6c493c08;
  text-decoration: none;
  transition:
    border-color 0.15s,
    background-color 0.15s;
}
.shelf-book:hover {
  border-color: #d8b89c;
}
.shelf-cover {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  width: 72px;
  height: 96px;
  border-radius: 3px 7px 7px 3px;
  overflow: hidden;
  background: #e8ddc9;
  box-shadow:
    3px 3px 0 #d5c6af,
    5px 5px 8px #6b4e3020;
}
.shelf-cover::after {
  content: "";
  position: absolute;
  inset-block: 0;
  inset-inline-start: 0;
  width: 5px;
  background: linear-gradient(90deg, #40302126, #fff6);
  pointer-events: none;
}
.shelf-cover img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  margin: 0;
  border-radius: 0;
}
.shelf-cover-empty {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  border: 5px double #baa789;
  color: #806845;
  background: #f7efdd;
}
.shelf-cover-empty .icon {
  width: 30px;
  height: 30px;
}
.shelf-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: 6px;
}
.shelf-title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  font-size: 15px;
  line-height: 1.55;
  color: var(--ink);
  overflow-wrap: anywhere;
}
.shelf-author {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.shelf-status {
  padding: 2px 8px;
  border-radius: 6px;
  color: #425c40;
  background: #e9efdf;
  font-size: 11px;
  line-height: 1.6;
}
.shelf-rating {
  font-size: 12px;
  color: #756149;
}
.shelf-rating > span:first-child {
  color: #a96a21;
}
.shelf-book > .icon {
  width: 14px;
  height: 14px;
  color: #9c7961;
}
.shelf-all {
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-height: 44px;
  margin-top: 14px;
  padding: 8px 2px;
  border-top: 1px solid var(--line);
  font-size: 13px;
  text-decoration: none;
}
[dir="rtl"] .shelf-book > .icon {
  transform: scaleX(-1);
}
.journal-statistics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}
.journal-statistics > div {
  display: flex;
  flex-direction: column-reverse;
  text-align: center;
  padding: 14px 8px;
  border: 1px solid var(--line);
  background: #f6f2e8;
  border-radius: 10px;
}
.journal-statistics dt {
  color: var(--muted);
  font-size: 12px;
  overflow-wrap: anywhere;
}
.journal-statistics dd {
  margin: 0;
  color: #536b49;
  font-size: 24px;
  font-weight: 600;
  line-height: 1.5;
}
.small-notice {
  position: relative;
  padding: 14px;
  background: #f7efdf;
  border-radius: 10px;
  border-inline-start: 3px solid #d6b078;
}
.notice-message {
  margin: 0;
  white-space: pre-line;
  overflow-wrap: anywhere;
  line-height: 1.8;
  font-size: 14px;
}
.js .small-notice:has(.notice-close) .notice-message {
  padding-inline-end: 32px;
}
.notice-close {
  position: absolute;
  inset-block-start: 8px;
  inset-inline-end: 6px;
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.notice-link {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-block: 12px 0;
  text-decoration: none;
  font-size: 13px;
}
.doorway-tree {
  display: block;
}
.doorway-tree li {
  min-width: 0;
}
.doorway-tree a {
  min-height: 44px;
  text-decoration: none;
  padding: 9px 12px;
  overflow-wrap: anywhere;
}
.doorway-tree .sub-menu {
  list-style: none;
  margin: 4px 0 8px;
  padding-inline-start: 16px;
  border-inline-start: 1px solid var(--line);
}
.doorway-tree .sub-menu a {
  font-size: 13px;
  background: transparent;
  border: 0;
}
.doorway-tree [aria-current="page"] {
  background: #e9efdf;
  color: #425c40;
  font-weight: 600;
}
@media (max-width: 360px) {
  .shelf-book {
    grid-template-columns: 62px minmax(0, 1fr);
    gap: 12px;
    padding: 12px 10px 14px;
  }
  .shelf-cover {
    width: 62px;
    height: 84px;
  }
  .shelf-book > .icon {
    display: none;
  }
}


/* 35 AJAX 结果纸卡：成功、待审核、错误；共享主题弹窗焦点与背景锁定。 */
.feedback-dialog {
  width: min(500px, calc(100vw - 32px));
  padding: 26px;
  border-radius: 20px;
  background: linear-gradient(145deg, var(--paper), var(--bg));
  box-shadow: 0 20px 70px #48342d25;
}
.feedback-header {
  align-items: center;
  margin: 0;
  padding: 0 0 18px;
  border: 0;
}
.feedback-eyebrow {
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.feedback-header .icon-button {
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
}
.feedback-scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  min-height: 0;
  padding: 4px 2px 20px;
  text-align: start;
}
.feedback-seal {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  border-radius: 20px 20px 20px 8px;
  background: var(--sage);
  color: var(--green);
  margin-bottom: 18px;
}
.feedback-seal svg {
  width: 36px;
  height: 36px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.feedback-dialog[data-ob-feedback-state="error"] .feedback-seal {
  background: var(--blush);
  color: var(--accent);
}
.feedback-dialog[data-ob-feedback-state="pending"] .feedback-seal {
  background: #f3e9cf;
  color: #846329;
}
.feedback-scroll h2 {
  font: 600 25px/1.5 var(--serif);
  margin: 0 0 12px;
  overflow-wrap: anywhere;
}
.feedback-scroll p {
  color: var(--muted);
  line-height: 1.85;
  margin: 0;
  white-space: pre-line;
  overflow-wrap: anywhere;
}
.feedback-bottom {
  flex: none;
  position: relative;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  border-top: 1px dashed var(--line);
  padding-top: 20px;
}
body[data-ob-reading-mode="night"]
  .feedback-dialog[data-ob-feedback-state="pending"]
  .feedback-seal {
  background: #514934;
  color: #e6cb8c;
}
.feedback-bottom .dialog-actions {
  margin: 0;
  border: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.feedback-bottom .button {
  min-height: 44px;
  padding: 10px 20px;
}
.feedback-mascot {
  width: 86px;
  height: auto;
  flex-shrink: 0;
  object-fit: contain;
  align-self: end;
}
form[data-ob-form-state="submitting"] [type="submit"] {
  cursor: progress;
  opacity: 0.75;
}
@media (max-width: 600px) {
  .feedback-dialog {
    inset: 50% auto auto 50%;
    transform: translate(-50%, -50%);
    padding: 20px;
    max-height: calc(var(--ob-viewport-height, 100dvh) - 32px);
  }
  .feedback-scroll h2 {
    font-size: 22px;
  }
  .feedback-mascot {
    width: 64px;
  }
  .feedback-bottom .dialog-actions {
    flex: 1;
  }
  .feedback-bottom .button {
    padding-inline: 16px;
  }
}
@media (max-width: 360px) {
  .feedback-mascot {
    display: none;
  }
}


/* 正文兼容：原生 HTML、经典短代码与核心区块。只在正文内生效。
 * 保留用户指定的颜色、字号、宽度和核心区块响应式规则。
 * editor-content.css 由同一模块生成，避免编辑器与前台各维护一份正文规则。
 */
.entry-content {
  min-width: 0;
  overflow-wrap: break-word;
}
.entry-content > :first-child {
  margin-block-start: 0;
}
.entry-content > :last-child {
  margin-block-end: 0;
}
.entry-content :is(figure, .wp-caption) {
  max-width: 100%;
}
.entry-content .wp-caption {
  overflow: visible;
}
.entry-content :is(img, svg, video, audio, iframe, canvas) {
  max-width: 100%;
}
.entry-content img {
  height: auto;
}
.entry-content .media-button {
  width: auto;
  max-width: 100%;
  min-height: 0;
  line-height: 0;
}
.entry-content .media-button img {
  display: block;
}
.entry-content :is(.wp-block-image, .gallery-icon, .wp-caption) .media-button {
  width: 100%;
}
.entry-content .wp-block-image :is(.alignleft, .alignright) {
  margin-block: 8px 20px;
}
.entry-content .wp-block-image .aligncenter {
  margin-inline: auto;
}
.entry-content .wp-block-cover :is(img, video) {
  object-fit: cover;
}
.entry-content .wp-block-cover video {
  width: 100%;
  height: 100%;
  max-height: none;
  margin: 0;
}
.entry-content .wp-block-image.is-style-rounded img {
  border-radius: 9999px;
}
/* 经典相册尊重 1–9 列设置；窄屏自动减列，不改动核心区块相册布局。 */
.entry-content .gallery {
  grid-template-columns: repeat(var(--ob-gallery-columns, 2), minmax(0, 1fr));
}
.entry-content .gallery-columns-1 {
  --ob-gallery-columns: 1;
}
.entry-content .gallery-columns-2 {
  --ob-gallery-columns: 2;
}
.entry-content .gallery-columns-3 {
  --ob-gallery-columns: 3;
}
.entry-content .gallery-columns-4 {
  --ob-gallery-columns: 4;
}
.entry-content .gallery-columns-5 {
  --ob-gallery-columns: 5;
}
.entry-content .gallery-columns-6 {
  --ob-gallery-columns: 6;
}
.entry-content .gallery-columns-7 {
  --ob-gallery-columns: 7;
}
.entry-content .gallery-columns-8 {
  --ob-gallery-columns: 8;
}
.entry-content .gallery-columns-9 {
  --ob-gallery-columns: 9;
}
.entry-content .gallery :is(img, .media-button) {
  width: 100%;
}
.entry-content .gallery-caption {
  border: 0;
  padding-block-start: 8px;
  margin-block: 0;
}
/* 横竖视频依媒体原比例；不会把手机录制的视频裁成横向画面。 */
.entry-content video {
  display: block;
  width: auto;
  height: auto;
  max-height: min(78svh, 760px);
  object-fit: contain;
  margin-inline: auto;
  margin-block: 24px;
}
.entry-content audio {
  display: block;
  width: 100%;
  margin-block: 20px;
}
/* 核心音频区块的 300px 默认最小宽度会撑开窄屏正文。 */
.entry-content .wp-block-audio audio {
  min-width: 0;
  max-width: 100%;
}
.entry-content .wp-video {
  max-width: 100%;
  margin-inline: auto;
}
.entry-content .wp-video.ob-native-video {
  max-width: min(100%, calc(min(78svh, 760px) * var(--ob-video-proportion)));
}
.entry-content .mejs-container {
  max-width: 100%;
}
.entry-content .ob-native-video .mejs-video {
  width: 100% !important;
  height: auto !important;
  aspect-ratio: var(--ob-video-ratio);
  max-height: min(78svh, 760px);
}
.entry-content .ob-native-video .mejs-mediaelement video {
  width: 100%;
  height: 100%;
  max-height: none;
}
.entry-content iframe.ob-intrinsic-embed {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: var(--ob-embed-ratio);
}
/* 核心 oEmbed 的容器负责比例，不叠加第二套比例或固定高度。 */
.entry-content .wp-has-aspect-ratio iframe {
  height: 100%;
  aspect-ratio: auto;
}
.entry-content .wp-block-embed__wrapper {
  min-width: 0;
}
/* 表格保持 table 语义。超宽数据在容器内滚动，键盘可聚焦滚动区域。 */
.entry-content table {
  display: table;
  min-width: 0;
  max-width: 100%;
  width: 100%;
  table-layout: auto;
}
.entry-content :is(.table-scroll, .wp-block-table) {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  border-radius: 8px;
}
.entry-content [data-ob-table-scroll]:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 4px;
}
.entry-content table caption {
  caption-side: top;
  text-align: start;
  color: var(--muted);
}
.entry-content :is(th, td) {
  vertical-align: top;
  overflow-wrap: normal;
  min-inline-size: 6em;
}
.entry-content .wp-block-table.has-fixed-layout :is(th, td) {
  min-inline-size: 0;
}
.entry-content .wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background: color-mix(in srgb, var(--sage) 45%, transparent);
}
.entry-content .wp-block-table.has-fixed-layout table {
  table-layout: fixed;
}
/* 行内代码可断行，代码块保留空白和 LTR 顺序；长行不会撑开页面。 */
.entry-content :is(code, kbd, samp) {
  font-family:
    ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
  font-size: 0.88em;
}
.entry-content :not(pre) > code {
  padding: 2px 5px;
  border-radius: 4px;
  background: var(--sage);
  overflow-wrap: anywhere;
}
.entry-content pre {
  direction: ltr;
  text-align: left;
  white-space: pre;
  overflow: auto;
  tab-size: 4;
  line-height: 1.8;
}
.entry-content pre code {
  font: inherit;
  padding: 0;
  background: transparent;
  white-space: inherit;
}
.entry-content .wp-block-preformatted {
  white-space: pre-wrap;
}
.entry-content .wp-block-pullquote {
  padding: 24px;
}
.entry-content .wp-block-pullquote blockquote {
  margin: 0;
}
.entry-content .wp-block-quote cite {
  display: block;
  margin-block-start: 12px;
  font-size: 0.85em;
}
.entry-content .wp-block-separator {
  border: 0;
  border-block-start: 1px solid var(--line);
  margin-block: 32px;
}
.entry-content .wp-block-details {
  padding: 16px 20px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.entry-content .wp-block-details summary {
  cursor: pointer;
  min-height: 32px;
}
.entry-content .wp-block-details[open] summary {
  margin-block-end: 16px;
}
.entry-content
  :is(.wp-block-column, .wp-block-group, .wp-block-media-text__content) {
  min-width: 0;
}
.entry-content .wp-block-buttons .wp-block-button {
  margin-block: 0;
}
.entry-content .wp-block-file {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.entry-content .wp-block-file__button {
  text-decoration: none;
}
/* 宽幅区块在文章纸卡内展开，侧栏仍有自己的空间。 */
.single-entry {
  container-type: inline-size;
}
@container (min-width:830px) {
  .entry-content > :is(.alignwide, .alignfull) {
    width: calc(100% + 64px);
    max-width: none;
    margin-inline: -32px;
  }
}
@media (max-width: 600px) {
  .entry-content .gallery:not(.gallery-columns-1) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .entry-content :is(.alignleft, .alignright) {
    float: none;
    max-width: 100%;
    margin: 20px auto;
  }
  .entry-content :is(th, td) {
    padding: 10px 12px;
  }
  .entry-content pre {
    padding: 16px;
    font-size: 13px;
  }
  .entry-content .wp-block-pullquote {
    padding: 16px;
  }
}
/* 无 JS 时宽表仍局部滚动；增强后恢复 table，滚动由外层容器负责。 */
html:not(.js) .entry-content table {
  display: block;
  overflow-x: auto;
}
html:not(.js) .entry-content .wp-block-table table {
  display: table;
}
@media print {
  .entry-content :is(.table-scroll, .wp-block-table, pre) {
    overflow: visible;
  }
  .entry-content pre {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
  }
}


/* 原生经典／区块小工具：约束局部尺寸，保留分类层级及编辑器设定的色彩。 */
.widget {
  overflow-wrap: anywhere;
}
.widget > :last-child {
  margin-block-end: 0;
}
.widget :is(figure, .wp-caption, .wp-block-group, .wp-block-column) {
  margin-inline: 0;
  max-width: 100%;
  min-width: 0;
}
.widget :is(img, video, audio, iframe, svg) {
  max-width: 100%;
}
.widget .wp-block-audio audio {
  width: 100%;
  min-width: 0;
}
.widget img {
  height: auto;
}
.widget video {
  display: block;
  width: auto;
  height: auto;
  max-height: 420px;
  object-fit: contain;
  margin-inline: auto;
}
.widget .wp-video {
  max-width: 100%;
}
.widget .wp-video.ob-native-video {
  max-width: min(100%, calc(420px * var(--ob-video-proportion)));
  margin-inline: auto;
}
.widget .ob-native-video .mejs-video {
  width: 100% !important;
  height: auto !important;
  aspect-ratio: var(--ob-video-ratio);
}
.widget .ob-native-video .mejs-mediaelement video {
  width: 100%;
  height: 100%;
  max-height: none;
}
.widget .mejs-container {
  max-width: 100%;
}
.widget :is(.wp-block-table, pre) {
  overflow-x: auto;
  max-width: 100%;
}
.widget pre {
  white-space: pre;
  font:
    13px/1.7 ui-monospace,
    Consolas,
    monospace;
  padding: 12px;
  background: var(--sage);
}
.widget
  :is(
    .wp-block-latest-posts,
    .wp-block-latest-comments,
    .wp-block-archives,
    .wp-block-categories,
    .wp-block-page-list,
    .wp-block-rss
  ) {
  list-style: none;
  padding: 0;
  margin: 0;
}
.widget
  :is(
    .wp-block-latest-posts,
    .wp-block-archives,
    .wp-block-categories,
    .wp-block-page-list,
    .wp-block-rss
  )
  li {
  margin-block: 0;
  padding-block: 10px;
  border-block-end: 1px solid var(--line);
}
.widget
  :is(
    .wp-block-latest-posts,
    .wp-block-archives,
    .wp-block-categories,
    .wp-block-page-list,
    .wp-block-rss
  )
  li:last-child {
  border: 0;
}
.widget :is(.children, .wp-block-navigation__submenu-container) {
  padding-inline-start: 16px;
  border-inline-start: 1px solid var(--line);
}
.widget
  :is(
    .wp-block-latest-posts__post-date,
    .wp-block-latest-posts__post-author,
    .wp-block-latest-comments__comment-date,
    .wp-block-rss__item-publish-date,
    .wp-block-rss__item-author
  ) {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-block-start: 5px;
}
.widget .wp-block-latest-posts__featured-image img {
  max-width: 100%;
  object-fit: cover;
  border-radius: 6px;
}
.widget .wp-block-latest-comments__comment {
  margin-block-end: 18px;
}
.widget .wp-block-latest-comments__comment-excerpt p {
  margin-block: 6px 0;
  font-size: 13px;
}
.widget .wp-block-latest-comments__comment-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
}
.widget :is(.wp-block-calendar, .calendar_wrap) table {
  width: 100%;
  table-layout: fixed;
  font-size: 12px;
}
.widget :is(.wp-block-calendar, .calendar_wrap) :is(th, td) {
  text-align: center;
  padding: 6px 0;
}
.widget .wp-block-calendar caption {
  padding-block-end: 12px;
  text-align: center;
}
.widget .wp-block-calendar th {
  background: var(--sage);
}
.widget .wp-block-calendar a {
  color: var(--accent);
  text-decoration: underline;
}
.widget .wp-calendar-nav {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-block-start: 10px;
}
.widget :is(.wp-block-tag-cloud, .tagcloud) {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
}
.widget :is(.wp-block-tag-cloud, .tagcloud) a {
  margin: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
}
.widget .wp-block-tag-cloud a {
  padding: 6px 10px;
  border-radius: 16px;
  background: var(--blush);
}
.widget .wp-block-search__inside-wrapper {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.widget .wp-block-search__button {
  margin: 0;
  min-height: 44px;
}
.widget .wp-block-search__input {
  flex-basis: 120px;
  min-height: 44px;
}
.widget .wp-block-search__button svg {
  min-width: 20px;
  height: 20px;
}
.widget .wp-block-search__label {
  display: block;
  margin-block-end: 8px;
}
.widget .wp-block-latest-posts.is-grid {
  display: block;
}
.widget .wp-block-latest-posts.is-grid li {
  width: 100%;
  margin-inline: 0;
}
.widget .wp-block-social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
  padding: 0;
}
.widget .wp-block-social-link {
  padding: 0;
}
.widget .wp-block-social-link a {
  display: flex;
  min-width: 40px;
  min-height: 40px;
  align-items: center;
  justify-content: center;
}
.widget .wp-block-navigation {
  flex-wrap: wrap;
}
.widget .wp-block-navigation__container {
  min-width: 0;
  max-width: 100%;
}
.widget .wp-block-navigation-item__label {
  overflow-wrap: anywhere;
}
.widget_text :is(p, ul, ol) {
  line-height: 1.9;
}
.widget .gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.widget .gallery-item {
  margin: 0;
}
.widget .gallery.gallery-columns-1 {
  grid-template-columns: 1fr;
}
