@charset "UTF-8";
/* 本文件是博客 asset/editorial.css 的副本，供电台站独立部署使用。
   电台站以 radio/ 目录为站点根，因此站内不再存在 ../asset/ 这类越级引用。
   博客侧改过 editorial.css 后，需要把这一份同步一次（cp asset/editorial.css radio/assets/）。 */
/* ==========================================================================
   editorial.css · 个人刊物（全站统一风格层）
   --------------------------------------------------------------------------
   方向：一个人办的同人志 / 独立刊物。
     · 版面：左对齐、非对称、细线分栏，不用卡片网格与投影
     · 字体：标题衬线（宋体系）+ 正文无衬线 + 元数据等宽
     · 色彩：纸白 / 墨黑，Miku 青只做编号、链接、指示器的小面积强调
     · 层级：靠字号、字重、留白与分隔线建立，不靠阴影和圆角

   用法：必须放在 style.css / library.css / manga.css 之后加载（覆盖层）。
     根目录页面  <link rel="stylesheet" href="./asset/editorial.css">
     子目录页面  <link rel="stylesheet" href="../asset/editorial.css">
   例外：library/read.html 与 manga/read.html 的沉浸阅读体验不引用本文件，
        保持既有全屏实现不变。
   ========================================================================== */

/* ==========================================================================
   1. 设计令牌（覆盖 style.css 的同名变量，使老组件自动换装）
   ========================================================================== */
:root{
  /* ---- 纸面与墨色 ---- */
  --bg:#f7f4ee;
  --bg-alt:#f0ece4;
  --surface:#fffdf9;
  --text:#1a1815;
  --text-secondary:#6b6459;
  --border:#ded6c8;
  --rule:#cfc5b4;

  /* ---- 强调色：Miku 青，克制使用 ---- */
  --primary:#39c5bb;
  --primary-dark:#0e948c;
  --accent:#0b7c74;          /* 浅底可读的青，用于链接与编号 */

  /* ---- 无阴影：改用细线分隔 ---- */
  --shadow-normal:none;
  --shadow-hover:none;
  --radius:0;
  --radius-l:2px;
  --radius-m:2px;

  /* ---- 字体族 ---- */
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif CJK SC","Noto Serif SC","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Consolas,"Liberation Mono","Courier New",monospace;

  /* ---- 尺度 ---- */
  --ed-max:1120px;
  /* 用 px 而非 ch：ch 会随元素自身字体（等宽/衬线）变化，导致细线宽度对不齐 */
  --ed-measure:640px;
  /* --nav-h 是导航栏的「设计高度」，与测量值 --header-h 分离。
     切勿让 .nav-inner 的高度反过来读 --header-h：
     脚本用 header.offsetHeight（含 1px 下边框）写 --header-h，
     若导航高度又依赖它，每测一次就长 1px，会无限膨胀。 */
  --nav-h:60px;
  --gutter:clamp(20px,5vw,56px);
  --header-h:60px;
  --font-body:clamp(15px,1.05vw,16.5px);
  --font-nav:clamp(12.5px,1vw,13.5px);
  --font-brand:clamp(17px,1.6vw,20px);
  --font-h1:clamp(30px,5.2vw,56px);
  --font-h2:clamp(20px,2.4vw,28px);
  --font-small:clamp(11.5px,1vw,12.5px);
  --speed:.22s;
  --ease:cubic-bezier(.22,.61,.36,1);
}

[data-theme="dark"]{
  --bg:#131211;
  --bg-alt:#191715;
  --surface:#1b1917;
  --text:#ece6dc;
  --text-secondary:#a09889;
  --border:#3b352d;
  --rule:#4a4238;
  --primary:#39c5bb;
  --primary-dark:#2aaea5;
  --accent:#5fd6cd;
  --shadow-normal:none;
  --shadow-hover:none;
}

/* ==========================================================================
   2. 基础（含轻量重置，使首页可只依赖本文件）
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; scroll-behavior:smooth; }
html,body{ overflow-x:hidden; max-width:100%; }
img,svg,video,iframe,table{ max-width:100%; height:auto; }

body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  font-size:var(--font-body);
  line-height:1.75;
  letter-spacing:.006em;
  min-height:100vh;
  padding-top:var(--header-h,60px);
  -webkit-font-smoothing:antialiased;
  transition:background .35s ease, color .35s ease;
  text-underline-offset:.22em;
  text-decoration-thickness:1px;
}
a{ color:var(--accent); text-decoration:none; }
a:hover{ text-decoration:underline; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; border-radius:0; }
::selection{ background:color-mix(in srgb, var(--primary) 34%, transparent); }

/* 小号等宽「栏目 / 元数据」文字，是本刊的签名元素 */
.ed-meta,
.post-meta,
.date,
.a-meta{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--text-secondary);
}

/* ==========================================================================
   3. 顶栏：一条细线，没有毛玻璃、没有圆角
   ========================================================================== */
.header-fixed{
  position:fixed;
  inset:0 0 auto 0;
  z-index:999;
  background:color-mix(in srgb, var(--bg) 94%, transparent);
  -webkit-backdrop-filter:saturate(120%) blur(8px);
  backdrop-filter:saturate(120%) blur(8px);
  border-bottom:1px solid var(--border);
  box-shadow:none;
  transition:background .3s ease, border-color .3s ease;
}
.header-fixed.scroll-down{
  background:color-mix(in srgb, var(--bg) 98%, transparent);
  box-shadow:none;
}
.header-fixed .nav-inner{
  max-width:var(--ed-max);
  margin:0 auto;
  padding:0 var(--gutter);
  /* 高度由内容 + 固定最小值决定，不读 --header-h（避免测量反馈循环） */
  min-height:var(--nav-h);
  height:auto;
  display:flex;
  align-items:center;
  gap:clamp(14px,2.4vw,32px);
  min-width:0;
}
.header-fixed .brand-wrap{ position:relative; flex:0 0 auto; }
.header-fixed .brand{
  font-family:var(--serif);
  font-size:var(--font-brand);
  font-weight:700;
  letter-spacing:.02em;
  color:var(--text);
  text-decoration:none;
}
.header-fixed .brand:hover{ color:var(--accent); text-decoration:none; }
.header-fixed .brand-caret{
  border:0;
  background:transparent;
  color:var(--text-secondary);
  font-size:9px;
  padding:4px 2px;
  cursor:pointer;
  vertical-align:2px;
}
.header-fixed .brand-menu{
  position:absolute;
  top:calc(100% + 14px);
  left:0;
  min-width:190px;
  padding:6px 0;
  background:var(--surface);
  border:1px solid var(--border);
  box-shadow:0 14px 34px rgba(0,0,0,.10);
  border-radius:0;
  opacity:0;
  visibility:hidden;
  transform:translateY(-6px);
  transition:opacity var(--speed) var(--ease), transform var(--speed) var(--ease), visibility var(--speed);
}
.header-fixed .brand-wrap.open .brand-menu,
.header-fixed .brand-wrap:hover .brand-menu,
.header-fixed .brand-wrap:focus-within .brand-menu{
  opacity:1;
  visibility:visible;
  transform:none;
}
.header-fixed .brand-menu a{
  display:block;
  padding:8px 18px;
  font-size:13.5px;
  color:var(--text);
  text-decoration:none;
  border-bottom:0;
}
.header-fixed .brand-menu a:hover{ background:var(--bg-alt); color:var(--accent); text-decoration:none; }
.header-fixed .nav-links{
  display:flex;
  align-items:center;
  gap:clamp(16px,2.2vw,30px);
  margin-left:auto;
  min-width:0;
}
.header-fixed .nav-link{
  font-family:var(--mono);
  font-size:var(--font-nav);
  letter-spacing:.06em;
  color:var(--text-secondary);
  text-decoration:none;
  padding:4px 0;
  border-bottom:1px solid transparent;
  transition:color .2s, border-color .2s;
}
.header-fixed .nav-link:hover{ color:var(--text); border-bottom-color:var(--text); text-decoration:none; }
.header-fixed .nav-link[aria-current="page"],
.header-fixed .nav-link.active{ color:var(--text); border-bottom-color:var(--accent); }
.header-fixed .theme-toggle{
  flex:0 0 auto;
  border:1px solid var(--border);
  background:transparent;
  color:var(--text-secondary);
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.06em;
  padding:5px 10px;
  border-radius:0;
  cursor:pointer;
  transition:color .2s, border-color .2s;
}
.header-fixed .theme-toggle:hover{ color:var(--text); border-color:var(--text); }

/* ==========================================================================
   4. 容器与栏目页眉
   ========================================================================== */
.container{
  max-width:960px;
  margin:0 auto;
  padding:clamp(28px,5vw,64px) var(--gutter) 0;
}
/* 栏目标题：等宽英文小标 + 中文大字 + 一条通到右边的细线 */
.ed-section{ margin:clamp(44px,7vw,88px) 0 0; }
.ed-section:first-of-type{ margin-top:clamp(28px,4vw,48px); }
.ed-section-head{
  display:flex;
  align-items:baseline;
  gap:clamp(12px,2vw,22px);
  margin-bottom:clamp(18px,2.4vw,26px);
}
.ed-section-head h2{
  flex:0 0 auto;
  font-family:var(--serif);
  font-size:var(--font-h2);
  font-weight:700;
  letter-spacing:.04em;
  line-height:1.2;
  margin:0;
}
.ed-section-head .ed-caption{
  flex:0 0 auto;
  order:-1;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--accent);
}
.ed-section-head::after{
  content:"";
  flex:1 1 auto;
  height:1px;
  background:var(--border);
  transform:translateY(-.42em);
}

/* ==========================================================================
   5. 首页：刊头
   ========================================================================== */
.ed-wrap{
  max-width:var(--ed-max);
  margin:0 auto;
  padding:0 var(--gutter);
}
.ed-masthead{
  padding:clamp(44px,7vw,84px) 0 0;
  border-bottom:1px solid var(--text);
}
.ed-masthead .ed-kicker{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--text-secondary);
  margin-bottom:clamp(20px,3vw,34px);
}
.ed-masthead h1{
  font-family:var(--serif);
  font-size:clamp(34px,6.4vw,72px);
  font-weight:700;
  line-height:1.16;
  letter-spacing:-.01em;
  margin:0 0 clamp(18px,2.4vw,26px);
}
/* 标题按短句显式分行：中文可任意处断行，交给浏览器会切出「的博客。」这种孤行 */
.ed-masthead h1 .ln{
  display:block;
  white-space:nowrap;
}
.ed-masthead h1 em{
  font-style:normal;
  color:var(--accent);
  border-bottom:2px solid color-mix(in srgb, var(--accent) 34%, transparent);
}
.ed-masthead .ed-lead{
  font-size:clamp(15px,1.35vw,18px);
  color:var(--text-secondary);
  max-width:44ch;
  margin:0 0 clamp(22px,3vw,30px);
}
.ed-masthead .ed-links{
  display:flex;
  flex-wrap:wrap;
  gap:6px clamp(18px,2.4vw,30px);
  margin-bottom:clamp(26px,3.4vw,38px);
}
.ed-masthead .ed-links a{
  font-family:var(--mono);
  font-size:var(--font-nav);
  letter-spacing:.04em;
  color:var(--text);
  border-bottom:1px solid var(--border);
  padding-bottom:2px;
}
.ed-masthead .ed-links a:hover{ color:var(--accent); border-bottom-color:var(--accent); text-decoration:none; }

/* 事实清单：把真实的收藏规模摆到版面上 */
.ed-facts{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:1px;
  background:var(--border);
  border-top:1px solid var(--border);
  /* 底边交给 .ed-masthead 的墨线收口，避免出现两条平行线 */
}
.ed-fact{
  background:var(--bg);
  padding:clamp(12px,1.6vw,18px) clamp(6px,1vw,10px);
}
.ed-fact b{
  display:block;
  font-family:var(--serif);
  font-size:clamp(22px,2.6vw,30px);
  font-weight:700;
  line-height:1.1;
  letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;
}
.ed-fact span{
  display:block;
  margin-top:6px;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.1em;
  color:var(--text-secondary);
}

/* ==========================================================================
   6. 目录行（取代卡片网格）
   ========================================================================== */
.ed-index{ list-style:none; border-top:1px solid var(--border); }
.ed-entry{
  display:grid;
  grid-template-columns:3.2em minmax(0,1fr) auto;
  align-items:baseline;
  gap:clamp(10px,1.8vw,22px);
  padding:clamp(16px,2vw,22px) 0;
  border-bottom:1px solid var(--border);
  text-decoration:none;
  color:var(--text);
  transition:background .2s ease;
}
.ed-entry:hover{ background:color-mix(in srgb, var(--primary) 6%, transparent); text-decoration:none; }
.ed-entry .ed-no{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.08em;
  color:var(--text-secondary);
  transition:color .2s;
  font-variant-numeric:tabular-nums;
}
.ed-entry:hover .ed-no{ color:var(--accent); }
.ed-entry .ed-body{ min-width:0; }
.ed-entry .ed-title{
  display:block;
  font-family:var(--serif);
  font-size:clamp(18px,2vw,23px);
  font-weight:700;
  line-height:1.35;
  letter-spacing:.01em;
  margin:0 0 4px;
}
.ed-entry:hover .ed-title{ text-decoration:underline; text-decoration-thickness:1px; }
.ed-entry .ed-sum{
  display:block;
  font-size:14.5px;
  color:var(--text-secondary);
  line-height:1.6;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.ed-entry .ed-right{
  display:flex;
  align-items:baseline;
  gap:clamp(10px,1.6vw,20px);
  white-space:nowrap;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.06em;
  color:var(--text-secondary);
  font-variant-numeric:tabular-nums;
}
.ed-entry .ed-code{
  color:var(--accent);
  letter-spacing:.12em;
}
.ed-entry .ed-arrow{ transition:transform .2s var(--ease); }
.ed-entry:hover .ed-arrow{ transform:translateX(4px); }

/* 站点入口行：中文标题 + 等宽分类号 */
.ed-entry.site .ed-title{
  font-family:var(--sans);
  font-size:clamp(17px,1.8vw,20px);
  font-weight:600;
  letter-spacing:.02em;
}

/* ==========================================================================
   7. 文章页 / 关于页
   ========================================================================== */
.article{ margin:0; max-width:var(--ed-measure); }
.article-head{
  padding-bottom:clamp(18px,2.4vw,26px);
  border-bottom:1px solid var(--text);
  margin-bottom:clamp(24px,3vw,36px);
}
.page-title{
  font-family:var(--serif);
  font-size:var(--font-h1);
  font-weight:700;
  line-height:1.2;
  letter-spacing:-.01em;
  margin:0 0 clamp(12px,1.6vw,18px);
}
.post-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px 16px;
}
.post-tag{
  display:inline-block;
  padding:2px 8px;
  border:1px solid var(--border);
  color:var(--accent);
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.06em;
  border-radius:0;
}
.article-body,
.card{
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  padding:0;
}
.article-body{ max-width:var(--ed-measure); }
.article-body:hover{ box-shadow:none; transform:none; }

/* 正文排版 */
.prose{ font-size:var(--font-body); line-height:1.9; }
.prose > :first-child{ margin-top:0; }
.prose h2,
.prose h3,
.prose h4{
  font-family:var(--serif);
  font-weight:700;
  letter-spacing:.01em;
  line-height:1.35;
}
.prose h2{
  font-size:clamp(20px,2.2vw,26px);
  margin:2.2em 0 .7em;
  padding-top:.7em;
  border-top:1px solid var(--border);
}
.prose h3{ font-size:clamp(17px,1.8vw,20px); margin:1.8em 0 .5em; }
.prose p{ margin:0 0 1.15em; }
.prose a{ border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent); }
.prose a:hover{ text-decoration:none; border-bottom-color:var(--accent); }
.prose blockquote{
  margin:1.6em 0;
  padding:2px 0 2px 18px;
  border-left:2px solid var(--accent);
  color:var(--text-secondary);
  font-family:var(--serif);
}
.prose blockquote p:last-child{ margin-bottom:0; }
.prose code{
  font-family:var(--mono);
  font-size:.88em;
  padding:1px 5px;
  background:var(--bg-alt);
  border:1px solid var(--border);
  border-radius:0;
}
.prose pre{
  background:var(--bg-alt);
  border:1px solid var(--border);
  border-radius:0;
  padding:16px 18px;
  overflow:auto;
  line-height:1.6;
}
.prose pre code{ padding:0; border:0; background:none; font-size:13px; }
.prose ul,
.prose ol{ padding-left:1.3em; margin:0 0 1.15em; }
.prose li{ margin:.35em 0; }
.prose hr{ border:0; border-top:1px solid var(--border); margin:2.2em 0; }
.prose img{ display:block; margin:1.6em 0; }

/* 关于页：把卡片压平成带细线的条目 */
.about-cards{
  display:grid;
  gap:clamp(26px,3.6vw,44px);
  max-width:var(--ed-measure);
}
.about-card{
  background:transparent !important;
  border:0 !important;
  border-top:1px solid var(--text) !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:clamp(14px,1.8vw,20px) 0 0 !important;
  color:var(--text) !important;
  transition:none;
}
.about-card h2{
  font-family:var(--serif);
  font-size:clamp(17px,1.7vw,20px);
  font-weight:700;
  letter-spacing:.06em;
  margin:0 0 10px;
  color:var(--text) !important;
}
.about-card .about-text,
.about-card .about-desc,
.about-card .md-body{ color:var(--text) !important; }
.about-card .about-desc{ color:var(--text-secondary) !important; }
.about-card .card-link{
  color:var(--accent) !important;
  text-decoration:none;
  border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent);
}
.about-card .card-btn{
  display:inline-block;
  margin-top:14px;
  padding:7px 16px;
  background:transparent !important;
  color:var(--text) !important;
  border:1px solid var(--text) !important;
  border-radius:0;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.08em;
  text-decoration:none;
}
.about-card .card-btn:hover{ background:var(--text) !important; color:var(--bg) !important; }

/* ==========================================================================
   8. 通用按钮
   ========================================================================== */
.btn{
  display:inline-block;
  padding:9px 18px;
  background:transparent;
  color:var(--text);
  border:1px solid var(--text);
  border-radius:0;
  box-shadow:none;
  font-family:var(--mono);
  font-size:var(--font-nav);
  font-weight:500;
  letter-spacing:.06em;
  text-decoration:none;
  transition:background .2s, color .2s, border-color .2s;
}
.btn:hover{ background:var(--text); color:var(--bg); box-shadow:none; transform:none; }
.btn.ghost{ background:transparent; color:var(--text-secondary); border:1px solid var(--border); }
.btn.ghost:hover{ background:transparent; color:var(--text); border-color:var(--text); }
.btn.small{ padding:6px 13px; font-size:var(--font-small); }

/* ==========================================================================
   9. 书架 / 漫画库
   ========================================================================== */
#libraryMain{ max-width:var(--ed-max); }
.library-head{
  align-items:flex-end;
  padding-bottom:clamp(14px,1.8vw,20px);
  border-bottom:1px solid var(--text);
  margin-bottom:0;
}
.library-head h1{
  font-family:var(--serif);
  font-size:var(--font-h1);
  font-weight:700;
  letter-spacing:-.01em;
  line-height:1.2;
}
.library-head p{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.08em;
  color:var(--text-secondary);
  margin-top:8px;
}
.search-box{
  background:transparent;
  border:0;
  border-bottom:1px solid var(--border);
  border-radius:0;
  padding:8px 2px;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.04em;
  color:var(--text);
  min-width:min(260px,60vw);
}
.search-box:focus{ outline:none; border-bottom-color:var(--accent); }
.book-grid{
  display:block;
  margin-top:8px;
}
.book-card{
  display:grid;
  grid-template-columns:64px minmax(0,1fr);
  gap:clamp(14px,2vw,24px);
  background:transparent;
  border:0;
  border-bottom:1px solid var(--border);
  border-radius:0;
  box-shadow:none;
  padding:clamp(16px,2vw,22px) 0;
  transition:background .2s;
}
.book-card:hover{ background:color-mix(in srgb, var(--primary) 5%, transparent); transform:none; box-shadow:none; }
.book-cover{
  width:64px;
  height:86px;
  /* 网格项默认 min-height:auto（等于内容最小高度），
     竖排书名的长标题会把封面撑高，必须显式归零 */
  min-width:0;
  min-height:0;
  align-self:start;
  object-fit:cover;
  border-radius:0;
  border:1px solid var(--border);
  background:var(--bg-alt);
}
/* 无封面时用竖排书名当书脊，避免长书名把行高撑开 */
.book-cover-placeholder{
  writing-mode:vertical-rl;
  text-orientation:upright;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  padding:9px 6px;
  font-family:var(--serif);
  font-size:11px;
  line-height:1.25;
  letter-spacing:.08em;
  color:var(--text-secondary);
  white-space:nowrap;      /* 竖排时不折到第二列，超出直接裁掉 */
  overflow:hidden;
}
.book-title{
  font-family:var(--serif);
  font-size:clamp(17px,1.8vw,20px);
  font-weight:700;
  letter-spacing:.01em;
  margin:0 0 4px;
}
/* 行内三栏：正文信息在左，操作按钮成列贴右，避免长行右侧大片空白 */
.book-body{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:2px 20px;
  align-items:start;
  align-content:start;
  min-width:0;
}
.book-body > *{ grid-column:1; }
.book-actions{
  grid-column:2;
  grid-row:1;
  align-self:start;
  flex-direction:column;
  align-items:flex-end;
  gap:8px;
}
.book-author{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.06em;
  color:var(--text-secondary);
  margin-bottom:8px;
}
.book-desc{
  font-size:14px;
  line-height:1.65;
  color:var(--text-secondary);
  margin:0 0 10px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.book-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.book-tag{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.06em;
  padding:2px 7px;
  border:1px solid var(--border);
  color:var(--text-secondary);
  border-radius:0;
  background:transparent;
}
.book-actions{ display:flex; flex-wrap:wrap; gap:10px; }

/* 密码屏 */
.password-screen{ padding:clamp(40px,8vw,96px) var(--gutter); }
.lock-card{
  max-width:420px;
  margin:0 auto;
  background:transparent;
  border:0;
  border-top:1px solid var(--text);
  border-radius:0;
  box-shadow:none;
  padding:clamp(22px,3vw,32px) 0 0;
}
.lock-card h1{
  font-family:var(--serif);
  font-size:clamp(22px,2.6vw,30px);
  font-weight:700;
  letter-spacing:.02em;
  margin:0 0 8px;
}
.lock-card p{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.04em;
  color:var(--text-secondary);
  margin:0 0 18px;
}
.lock-field{
  width:100%;
  background:transparent;
  border:0;
  border-bottom:1px solid var(--border);
  border-radius:0;
  padding:10px 2px;
  font-family:var(--mono);
  font-size:14px;
  color:var(--text);
  margin-bottom:6px;
}
.lock-field:focus{ outline:none; border-bottom-color:var(--accent); }
.lock-error{
  min-height:20px;
  font-family:var(--mono);
  font-size:var(--font-small);
  color:#b4483c;
}
.lock-card .btn{ margin-top:8px; }
.empty-library{
  padding:clamp(24px,4vw,40px) 0;
  font-family:var(--mono);
  font-size:13px;
  letter-spacing:.04em;
  color:var(--text-secondary);
  border-bottom:1px solid var(--border);
}

/* ==========================================================================
   10. 电台
   ========================================================================== */
.top-bar{
  max-width:var(--ed-max);
  margin:0 auto;
  padding:14px var(--gutter);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  border-bottom:1px solid var(--border);
}
.top-bar .back-home,
.top-bar #theme{
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.08em;
  color:var(--text-secondary);
  background:transparent;
  border:0;
  cursor:pointer;
  text-decoration:none;
}
.top-bar .back-home:hover,
.top-bar #theme:hover{ color:var(--text); text-decoration:none; }
.radio-cover{ border-radius:0; border:1px solid var(--border); }

/* ==========================================================================
   11. 页脚
   ========================================================================== */
.a-footer,
footer.card{
  max-width:var(--ed-max);
  margin:clamp(40px,6vw,72px) auto 0;
  padding:18px var(--gutter) clamp(28px,4vw,44px);
  border-top:1px solid var(--border);
  background:transparent;
  border-radius:0;
  box-shadow:none;
  font-family:var(--mono);
  font-size:var(--font-small);
  letter-spacing:.06em;
  color:var(--text-secondary);
  text-align:left;
}
/* 文章页 / 关于页的页脚与正文列对齐，避免出现两条不同宽度的细线 */
.container > footer.card{
  max-width:var(--ed-measure);
  margin:clamp(40px,6vw,72px) 0 0;
  padding-left:0;
  padding-right:0;
}
footer.card a{ color:var(--text-secondary); }
footer.card a:hover{ color:var(--accent); }

/* ==========================================================================
   11.5 电台：保留「随封面取色」的动态背景（该页的核心特征），只统一容器形态
   ========================================================================== */
body.radio-page{
  background:var(--page-bg);
  color:var(--text-color);
  padding-top:0;
}
body.radio-page .card{
  width:min(920px, 100%);
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  padding:0;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
body.radio-page .media-card{
  background:transparent;
  border:0;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  border-radius:0;
  box-shadow:none;
  padding:clamp(18px,3vw,28px) 0;
  gap:clamp(18px,3vw,36px);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
body.radio-page .radio-cover-wrap{ border-radius:0; }
body.radio-page .lyric-box{
  border-radius:0;
  background:transparent;
  border:1px solid var(--border);
}
body.radio-page .btn-icon{
  border-radius:0;
  background:transparent;
  border:1px solid var(--border);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
body.radio-page .btn-play{
  border-radius:0;
  background:var(--accent);
  color:#fff;
  border-color:var(--accent);
}
body.radio-page .btn-icon:hover{ transform:none; }
body.radio-page .song-title,
body.radio-page .song-artist{ text-align:left; }
body.radio-page .song-title:hover,
body.radio-page .song-artist:hover,
body.radio-page .lyric-box:hover{ transform:none; }
body.radio-page .radio-right{ align-items:flex-start; text-align:left; }
body.radio-page .lyric-wrap{ text-align:left; }

/* ==========================================================================
   11.8 404
   ========================================================================== */
.page-404{ text-align:left; }
.page-404 .error-code{
  font-family:var(--mono);
  font-size:clamp(44px,7vw,80px);
  line-height:1;
  letter-spacing:.08em;
  color:var(--accent);
  margin-bottom:14px;
}
.page-404 h1{
  font-family:var(--serif);
  font-size:var(--font-h2);
  letter-spacing:.02em;
  margin-bottom:12px;
}
.page-404 p{ max-width:var(--ed-measure); }

/* ==========================================================================
   12. 响应式
   ========================================================================== */
@media (max-width:820px){
  /* 手机上保留主导航：四个短链接压缩间距即可放下，不要让用户只能靠 ▾ 找路 */
  .header-fixed .nav-inner{ gap:10px; }
  .header-fixed .nav-links{ display:flex; gap:clamp(10px,3vw,16px); }
  .header-fixed .nav-link{ font-size:11.5px; letter-spacing:0; }
  .header-fixed .theme-toggle{ padding:5px 8px; }
  .ed-entry{
    grid-template-columns:2.4em minmax(0,1fr);
    gap:10px;
    padding:14px 0;
  }
  .ed-entry .ed-right{
    grid-column:2;
    margin-top:6px;
    font-size:11.5px;
  }
  .ed-entry .ed-sum{ white-space:normal; }
  .ed-facts{ grid-template-columns:repeat(2,1fr); }
  .book-card{ grid-template-columns:52px minmax(0,1fr); gap:12px; }
  .book-cover{ width:52px; height:70px; }
  .book-body{ grid-template-columns:minmax(0,1fr); }
  .book-body > *{ grid-column:1; }
  .book-actions{
    grid-column:1;
    grid-row:auto;
    flex-direction:row;
    align-items:center;
    justify-content:flex-start;
  }
  .library-head{ flex-direction:column; align-items:stretch; gap:12px; }
  .search-box{ width:100%; min-width:0; }
}
@media (max-width:480px){
  .ed-masthead h1{ font-size:clamp(28px,8.4vw,40px); }
  .ed-entry .ed-right .ed-code{ display:none; }
  .ed-facts{ grid-template-columns:1fr 1fr; }
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-name:none !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}
@media print{
  .header-fixed,.theme-toggle{ display:none; }
  body{ padding-top:0; background:#fff; color:#000; }
}
