/* 静室 · 34-design-system.css
   全站统一设计尺度：圆角、阴影、按钮、卡片、输入控件、标签、焦点环、过渡。
   只做「收敛与统一」，不改变任何布局、结构或文案。
   依据审计：全站原有 26 种圆角、25 种阴影、33 条按钮规则散落在 13 个文件里。 */

:root {
  /* ---- 圆角尺度：全站收敛为 5 级 ---- */
  --radius-xs: 4px;    /* 行内标记、代码、小徽章 */
  --radius-sm: 6px;    /* 按钮、输入框、小控件 */
  --radius-md: 10px;   /* 卡片、面板、工具条（主尺度） */
  --radius-lg: 14px;   /* 大卡片、页面级容器 */
  --radius-pill: 999px;/* 胶囊按钮、分类标签 */

  /* ---- 阴影尺度：全站收敛为 2 级 ---- */
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.04);
  --shadow-md: 0 6px 18px -8px rgba(16, 24, 40, 0.10);
  --shadow-lg: 0 14px 36px -18px rgba(16, 24, 40, 0.16);

  /* ---- 统一过渡：控件状态变化只用这一条 ---- */
  --transition-control:
    background-color var(--motion-state) var(--motion-easing),
    border-color var(--motion-state) var(--motion-easing),
    color var(--motion-state) var(--motion-easing);

  /* ---- 标题尺度：绑定到 01-tokens.css 已有的 1.25 类型比例 ----
     审计发现：01-tokens.css 早就有一套完整的 1.25 比例字号令牌
     （--font-size-0=16px、1=20px、2=25px、3=31px、4=39px…），
     但全站 370 处 font-size 里只有 9 处用了令牌。
     这里把标题层级绑回令牌，以后调令牌即可全局生效。 */
  --title-page: var(--font-size-3);      /* 31.25px 页面主标题 */
  --title-section: var(--font-size-1);   /* 20px 区块标题 */
  --title-sub: var(--font-size-0);       /* 16px 小节标题 */

  /* ---- 辅助文字尺度：同样绑回令牌 ---- */
  --text-meta: var(--font-size--1);      /* 12.8px 元信息、日期、编号 */

  /* ============================================================
     UI 粒度令牌：补齐原有系统的缺口
     审计发现：老文件里 119 处硬编码字号中，只有 9 处能匹配 1.25 比例令牌；
     557 处硬编码间距中只有 165 处能匹配 8 倍尺度。
     实际高频值是 9–16px 字号、2–20px 间距 —— 都是「半档」值。
     原因：1.25 比例适合排版层级，但 UI 细节需要 2px 粒度。
     不补这些，硬编码就不可能收敛。
     ============================================================ */
  --space-half: 2px;
  --space-1-5: 6px;
  --space-2-5: 10px;
  --space-3-5: 14px;
  --space-4-5: 18px;
  --space-5-5: 20px;

  --font-size-micro: 10px;    /* 极小标注 */
  --font-size-tiny: 11px;
  --font-size-meta: 12px;     /* 元信息、日期、编号 */
  --font-size-label: 13px;    /* 标签、按钮、辅助 */
  --font-size-ui: 14px;       /* UI 文本 */
  --font-size-body-sm: 15px;  /* 次级正文 */
}

/* ============================================================
   页面主标题：统一全站功能页的 h1 尺度
   首页「前言」与文章标题属内容层级，不在统一范围内。
   ============================================================ */
.catalog-head h1,
.search-hero h1,
.catalog-directory h1,
.contact-page h1,
.first-page h1,
.archive-hero h1,
.inventory-hero h1,
.collection-hero h1,
.collections-hero h1,
.marks-hero h1,
.zhaiji-head h1,
.zhaiji-title-row h1 {
  font-family: var(--font-ui);
  font-size: var(--title-page);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: -0.012em;
  margin-block: 0;
}

/* 区块标题统一（h2 层级） */
.catalog-group-title,
.recent-title,
.starred-title,
.index-title,
.archive-entries h2,
.catalog-directory-section h2 {
  font-family: var(--font-ui);
  font-size: var(--title-section);
  font-weight: 500;
  letter-spacing: -0.005em;
}

/* ============================================================
   组件内边距：定义令牌并统一同类组件
   审计：卡片有 8 种 padding 取值、按钮 5 种、元信息 6 种 —— 全是手调的三值。
   这是「看起来不成体系」的直接原因。
   ============================================================ */
:root {
  --card-padding: var(--space-5) var(--space-5-5);        /* 24px 20px */
  --control-padding: var(--space-2-5) var(--space-3-5);   /* 10px 14px */
  --chip-padding: var(--space-half) var(--space-2-5);     /* 2px 10px */
}

/* 卡片 / 面板 */
.signoff-card,
.zhaiji-review-card,
.migration-card,
.migration-list,
.login-box,
.admin-card,
.password-card,
.filter-panel,
.asset-panel,
.image-panel,
.entry-card,
.catalog-entry,
.continue-card {
  padding: var(--card-padding);
}

/* 实心/描边按钮 */
.button,
.admin-page button,
.notebook-btn,
.plain-button,
.zhaiji-review-button {
  padding: var(--control-padding);
}

/* 文字按钮与图标按钮：纵向留一点，横向不留 */
.text-button,
.mark-button {
  padding: var(--space-half) 0;
}

/* 标签 / 徽章 */
.tag-chip,
.category-tag,
.category-link {
  padding: var(--chip-padding);
}

/* ============================================================
   按钮：把所有分散的按钮类收敛到同一套圆角、过渡与焦点表现
   ============================================================ */
.button,
.plain-button,
.text-button,
.mark-button,
.notebook-btn,
.notebook-btn-primary,
.annotation-submit,
.annotation-edit-form button,
.zhaiji-review-button,
.quiet-control,
.paper-control,
.console-image-icon,
.catalog-expand-btn,
.catalog-group-toggle,
.search-arrival button,
.reading-resume button,
.tag-chip button,
.library-density button,
.start-daily-item-action button {
  border-radius: var(--radius-sm);
  transition: var(--transition-control);
}

/* 主按钮（实心）统一为 6px；不再各自为政 */
.button,
.notebook-btn-primary,
.annotation-submit {
  border-radius: var(--radius-sm);
}

/* 文字按钮与图标按钮：小圆角，视觉更轻 */
.text-button,
.mark-button,
.catalog-group-toggle,
.tag-chip button {
  border-radius: var(--radius-xs);
}

/* 胶囊类控件：导航、回到顶部、排序、展开按钮 */
.primary-nav-main a,
.primary-nav a,
.catalog-back-top,
.catalog-expand-btn,
.catalog-sort-link,
.catalog-nav-link {
  border-radius: var(--radius-pill);
}

/* ============================================================
   卡片 / 面板：统一到 10px，并按层级给统一阴影
   ============================================================ */
.password-card,
.filter-panel,
.asset-panel,
.image-panel,
.entry-card,
.collection-entry,
.library-entry,
.catalog-entry,
.continue-card,
.catalog-tools,
.notebook-card,
.start-daily-column-item {
  border-radius: var(--radius-md);
}

/* 页面级大容器用更大的圆角 */
.catalog-group-body,
.reading-sheet {
  border-radius: var(--radius-lg);
}

/* ============================================================
   输入控件：全站统一
   注意：.admin-page / .login-box 下的 input 优先级更高，
   必须显式列出，否则会被既有规则（圆角 0）压住。
   ============================================================ */
input[type="text"],
input[type="search"],
input[type="password"],
input[type="email"],
input[type="url"],
input[type="number"],
input[type="date"],
textarea,
select,
.admin-page input:not([type="checkbox"]):not([type="radio"]),
.admin-page textarea,
.admin-page select,
.login-box input,
.markdown-inbox-form textarea,
.entry-card input:not([type="checkbox"]):not([type="radio"]),
.entry-card textarea,
.entry-card select,
.filter-panel input,
.filter-panel select {
  border-radius: var(--radius-sm);
  transition: var(--transition-control);
}

/* ============================================================
   写作台 / 管理界面：容器圆角统一
   （审计：原为 0/3/8/10/14/99px 混杂）
   ============================================================ */
.image-panel,
.featured-card,
.series-card,
.now-card,
.asset-panel,
.filter-panel,
.password-card,
.signoff-card,
.editor-page,
.console-image-panel {
  border-radius: var(--radius-md);
}

/* 写作台按钮统一 */
.notebook-btn {
  border-radius: var(--radius-sm);
}
.series-card-category {
  border-radius: var(--radius-pill);
}

/* ============================================================
   标签 / 徽章：统一为胶囊
   ============================================================ */
.tag-chip,
.category-tag,
.category-link,
.starred-cat,
.catalog-nav-count,
.index-post-star,
.notebook-tag {
  border-radius: var(--radius-pill);
}

/* ============================================================
   焦点环：全站统一，键盘可见、鼠标不打扰
   ============================================================ */
:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
  outline: var(--stroke-focus) solid var(--action-primary);
  outline-offset: 2px;
  border-radius: var(--radius-xs);
}

/* ============================================================
   统一 hover 的「抬升」语言：全站只允许 1px
   ============================================================ */
.catalog-card:hover,
.catalog-entry:hover,
.continue-card:hover {
  transform: translateY(-1px);
}

/* 尊重减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  .catalog-card:hover,
  .catalog-entry:hover,
  .continue-card:hover {
    transform: none;
  }
}

/* ============================================================
   打印：不参与这套视觉
   ============================================================ */
@media print {
  :root {
    --radius-xs: 0;
    --radius-sm: 0;
    --radius-md: 0;
    --radius-lg: 0;
    --radius-pill: 0;
    --shadow-sm: none;
    --shadow-md: none;
    --shadow-lg: none;
  }
}
