:root { --bg:#faf8f4; --ink:#2b2a26; --dim:#9a958a; --line:#d2c7af; --accent:#8a6d3b; --card:#ffffff; --hover:#f4f0e6; }
/* 深色模式:暗纸感暖黑,衬线字在暗底上保持柔和 */
html[data-theme="dark"] {
  --bg:#1b1813; --ink:#e2dccd; --dim:#a39b88; --line:#8a816a;
  --accent:#c9a96a; --card:#242017; --hover:#2e281d;
}
* { margin:0; padding:0; box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body { background:var(--bg); color:var(--ink);
  font-family:"Noto Serif SC","Songti SC","STSong","SimSun","Source Han Serif SC",serif;
  line-height:2.1; letter-spacing:.03em; transition:background-color .6s ease, color .6s ease; }
/* 浅色壁纸:米白底 + 淡山水 + 纸纹(不抢文字注意力) */
body {
  background-image:url('/assets/bg-light.webp');
  background-size:cover;
  background-position:center;
  background-attachment:fixed;
  background-repeat:no-repeat;
}
/* 深色壁纸:全屏覆盖层,opacity 渐变实现柔和切换(0→1 交叉淡化)。
   背景图只在深色模式才挂载(懒加载, 浅色用户不下载 bg-dark.webp) */
body::before {
  content:""; position:fixed; inset:0; z-index:0;
  background:#1b1813;
  opacity:0; pointer-events:none;
  transition:opacity .7s ease;
}
html[data-theme="dark"] body::before {
  opacity:1;
  background:linear-gradient(rgba(24,21,15,.30), rgba(24,21,15,.30)), url('/assets/bg-dark.webp') center/cover fixed no-repeat, #1b1813;
}
html[data-theme="dark"] body { background-color:var(--bg); }
a { color:inherit; text-decoration:none; }
main { max-width:720px; margin:0 auto; padding:0 24px; position:relative; z-index:1; transition:opacity .4s ease, transform .4s ease; }
button.theme-toggle, a.home-float { z-index:60; }

/* 设备标识(JS 在 <head> 注入 class):各平台用最适合的中文衬线字体,风格不变 */
html.d-ios body { font-family:"Songti SC","STSong","SimSun","Noto Serif SC",serif; }
html.d-android body { font-family:"Noto Serif SC","Source Han Serif SC","STSong","SimSun",serif; }
html.d-pc body { font-family:"Noto Serif SC","Songti SC","STSong","SimSun",serif; }

/* 触屏设备:去掉悬停黏滞,改用按压反馈;点击目标足够大 */
@media (hover:none) {
  nav.cats a:hover, ul.list a:hover, nav.pn a:hover, a.random:hover, ul.search-results a:hover, nav.back a:hover { background:transparent; color:inherit; }
  nav.cats a:active { background:var(--hover); color:var(--accent); }
  ul.list a:active { color:var(--accent); }
  a.random:active { color:var(--accent); }
  nav.back a:active { color:var(--ink); }
  ul.search-results a:active { background:var(--hover); color:var(--accent); }
  nav.pn a:active { color:var(--accent); }
  p.random-line a.random:active { background:var(--hover); color:var(--accent); border-color:var(--accent); }
}
html.d-ios a, html.d-android a { -webkit-tap-highlight-color:rgba(138,109,59,.14); }

/* 首页 */
header.site { text-align:center; padding:120px 0 0; }
h1.site { font-size:64px; font-weight:400; letter-spacing:.6em; text-indent:.6em; }
p.stats { text-align:center; color:var(--dim); font-size:13px; letter-spacing:.18em; text-indent:.18em; margin-top:20px; }
p.stats b { color:var(--ink); font-weight:400; }
p.stats .sep { margin:0 14px; opacity:.55; }
nav.cats { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:40px; padding-bottom:120px; }
nav.cats a { display:block; padding:52px 0; text-align:center; border:1px solid var(--line);
  transition:background .2s, color .2s; }
nav.cats a:hover { background:var(--hover); color:var(--accent); }
nav.cats .cat-name { display:block; font-size:28px; letter-spacing:.5em; text-indent:.5em; font-weight:700; }
nav.cats .cat-num { display:block; color:var(--dim); font-size:13px; margin-top:12px; letter-spacing:.2em; text-indent:.2em; }

/* 分类页 */
h1.cat-title { text-align:center; font-size:32px; font-weight:400; letter-spacing:.5em; text-indent:.5em; padding:90px 0 10px; }
p.cat-sub { text-align:center; color:var(--dim); font-size:14px; letter-spacing:.25em; text-indent:.25em; padding-bottom:30px; }
div.year-block { padding-bottom:20px; }
div.year-block:last-child { padding-bottom:100px; }
p.year-label { color:var(--dim); font-size:15px; letter-spacing:.5em; margin:56px 0 4px; padding-bottom:6px;
  border-bottom:1px solid var(--line); }
ul.list { list-style:none; }
ul.list li { border-bottom:1px solid var(--line); }
ul.list a { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:16px 4px; }
ul.list .t { font-size:16px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
ul.list .d { color:var(--dim); font-size:13px; white-space:nowrap; flex-shrink:0; }
ul.list a:hover { color:var(--accent); }

/* 内容页 */
/* 分类页返回链接:左上角"首页 + HOME",简洁艺术字体 */
nav.back { padding:40px 0 0; text-align:left; }
nav.back a { display:inline-block; color:var(--dim); text-decoration:none; }
nav.back a:hover { color:var(--ink); }
nav.back .back-cn { display:block; font-family:serif; font-size:16px; letter-spacing:.5em; text-indent:.5em; line-height:1.2; }
nav.back .back-en { display:block; font-size:9px; letter-spacing:.32em; margin-top:5px; opacity:.75; }
/* 内容页返回链接(单行,如"← 诗歌") */
nav.back a.back-single { font-size:14px; letter-spacing:.2em; }
nav.back a:hover { color:var(--ink); }
article.piece { padding:80px 0 0; }
h1.piece-title { font-size:24px; font-weight:700; text-align:center; letter-spacing:.15em; text-indent:.15em; }
div.body { margin-top:60px; font-size:16.5px; line-height:2.3; text-align:left; white-space:pre-wrap; word-break:normal; overflow-wrap:normal; }
/* 文章正文:段首缩进两字,段距拉开(中文排版习惯) */
div.body.prose { white-space:normal; }
div.body.prose p { text-indent:2em; margin:1.15em 0; }
p.edit-time { margin-top:110px; text-align:right; color:var(--dim); font-size:12.5px; letter-spacing:.15em; }
p.dates { margin-top:110px; text-align:right; color:var(--dim); font-size:12.5px; letter-spacing:.15em; }
p.dates span.sep { margin:0 10px; }

/* 上一篇/下一篇导航:三栏固定布局,中间"随便翻翻"永远居中;横线紧贴落款下方约半个落款字高 */
nav.pn { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:14px;
  padding:14px 0 90px; border-top:1px solid var(--line); font-size:14px; margin-top:8px; }
nav.pn .pn-prev, nav.pn .pn-next { color:var(--ink); opacity:.82; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; max-width:100%; letter-spacing:.05em; }
nav.pn .pn-next { text-align:right; }
nav.pn a:hover { color:var(--accent); }
nav.pn .pn-prev a::before { content:"← "; }
nav.pn .pn-next a::after { content:" →"; }
a.random { color:var(--ink); opacity:.82; font-size:14px; letter-spacing:.2em; flex-shrink:0; text-align:center; }
/* 随便翻翻:骰子弹跳 + 页面淡出(点击后播动画再跳转) */
@keyframes dice-roll {
  0%   { transform:scale(1) rotate(0); }
  25%  { transform:scale(1.3) rotate(6deg); }
  50%  { transform:scale(.88) rotate(-6deg); }
  75%  { transform:scale(1.12) rotate(3deg); }
  100% { transform:scale(1) rotate(0); }
}
a.random.rolling { animation:dice-roll .5s ease; }
main.leaving { opacity:0; transform:translateY(-12px) scale(.98); }
a.random:hover { color:var(--accent); }

/* 搜索(分类页/内容页:全宽与列表对齐;首页:居中窄框保持精致) */
div.searchbox { margin:34px 0 10px; }
main.home div.searchbox { max-width:420px; margin:34px auto 10px; text-align:center; }
div.searchbox input.search { width:100%; padding:9px 14px; font-size:14px; font-family:inherit;
  color:var(--ink); background:var(--card); border:1px solid var(--line); border-radius:4px;
  outline:none; letter-spacing:.08em; transition:border-color .2s; text-align:left; }
div.searchbox input.search:focus { border-color:var(--accent); }
div.searchbox input.search::placeholder { color:var(--dim); letter-spacing:.15em; opacity:.75; }
ul.search-results { display:none; list-style:none; margin-top:14px; text-align:left;
  border:1px solid var(--line); background:var(--card); max-height:340px; overflow-y:auto; }
ul.search-results li { border-bottom:1px solid var(--line); }
ul.search-results li:last-child { border-bottom:none; }
ul.search-results a { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:10px 16px; }
ul.search-results .t { font-size:14.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* 右侧标签:统一斜体、低对比、小字、基线对齐(板块名与句子同款) */
ul.search-results .d { color:var(--dim); font-size:11.5px; font-style:italic; letter-spacing:.1em;
  white-space:nowrap; flex-shrink:0; opacity:.72; }
ul.search-results .d.tag-cat { padding:0; background:none; border-radius:0; letter-spacing:.1em; }
ul.search-results .d.tag-line { letter-spacing:.1em; }
ul.search-results a:hover { background:var(--hover); color:var(--accent); }
/* 首页"随便翻翻"按钮(搜索框与三板块之间,左右装饰短线) */
p.random-line { text-align:center; margin:40px 0 40px; }
p.random-line a.random {
  position:relative; display:inline-block; padding:11px 55px;
  border:1px solid var(--line); border-radius:999px; color:var(--accent);
  font-size:16.8px; letter-spacing:.3em; text-indent:.3em;
  transition:background .25s, color .25s, border-color .25s;
}
p.random-line a.random::before, p.random-line a.random::after {
  content:""; position:absolute; top:50%; width:31px; height:1px;
  background:var(--line); transition:background .25s;
}
p.random-line a.random::before { right:calc(100% + 17px); }
p.random-line a.random::after { left:calc(100% + 17px); }
p.random-line a.random:hover { background:var(--hover); border-color:var(--accent); color:var(--accent); }
p.random-line a.random:hover::before, p.random-line a.random:hover::after { background:var(--accent); }
footer { text-align:center; color:var(--dim); font-size:12px; padding:0 0 60px; letter-spacing:.3em; text-indent:.3em; }

/* 深浅色切换按钮:右上角固定,圆角小胶囊 */
button.theme-toggle {
  position:fixed; top:18px; right:18px; z-index:50;
  width:40px; height:40px; border-radius:50%;
  border:1px solid var(--line); background:var(--card); color:var(--ink);
  font-size:17px; cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:background .3s, border-color .3s, transform .15s; line-height:1;
}
button.theme-toggle:hover { border-color:var(--accent); }
button.theme-toggle:active { transform:scale(.92); }
@media (max-width:767px) { button.theme-toggle { top:12px; right:12px; width:38px; height:38px; } }

/* 悬浮按钮下方小字标签(白天/夜晚/首页) */
button.theme-toggle .btn-label, a.home-float .btn-label {
  position:absolute; top:calc(100% + 3px); left:50%; transform:translateX(-50%);
  font-size:10px; letter-spacing:.18em; text-indent:.18em; color:var(--dim); white-space:nowrap;
  font-family:"Noto Serif SC","Songti SC","STSong","SimSun",serif; pointer-events:none;
}
button.theme-toggle { position:fixed; }

/* 左上角"首页"悬浮按钮(橘子图标):紧贴月亮按钮左侧,滚动时跟随 */
a.home-float {
  position:fixed; top:18px; right:66px; z-index:50;
  width:40px; height:40px; border-radius:50%;
  border:1px solid var(--line); background:var(--card); color:var(--ink);
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:background .3s, border-color .3s, transform .15s; line-height:1;
}
a.home-float:hover { border-color:var(--accent); color:var(--accent); }
a.home-float:active { transform:scale(.92); }
a.home-float svg { width:24px; height:24px; display:block; }
/* 橘子出现动画:从右上角轻快滑入 + 缩放弹一下(仅非首页) */
@keyframes orange-in {
  0%   { opacity:0; transform:translate(14px,-10px) scale(.5) rotate(20deg); }
  60%  { opacity:1; transform:translate(0,0) scale(1.08) rotate(-3deg); }
  100% { opacity:1; transform:translate(0,0) scale(1) rotate(0); }
}
a.home-float { animation:orange-in .4s cubic-bezier(.2,.8,.3,1.1) both; }
/* 橘子消失动画:缩小淡出(点击回首页时) */
@keyframes orange-out {
  0%   { opacity:1; transform:scale(1) rotate(0); }
  100% { opacity:0; transform:scale(.4) translate(10px,8px) rotate(25deg); }
}
a.home-float.leaving { animation:orange-out .25s ease-in forwards; pointer-events:none; }
@media (max-width:767px) { a.home-float { top:12px; right:56px; width:38px; height:38px; } a.home-float svg { width:22px; height:22px; } }
/* 首页本身不需要回首页按钮 */
main.home ~ a.home-float, body:has(main.home) a.home-float { display:none; }

/* 公众号文章排版(还原原版设计:段落/小标题/插图嵌入) */
div.body.article { font-size:16.5px; line-height:2.05; text-align:left; }
div.body.article p { margin:.8em 0; text-indent:2em; }
div.body.article p.month { font-weight:700; margin-top:2.4em; margin-bottom:.9em; letter-spacing:.12em; color:var(--ink); text-indent:0; }
div.body.article img { max-width:100%; max-height:520px; width:auto; height:auto; display:block; margin:2.2em auto; border-radius:4px; }
div.body.article.poem p { margin:.3em 0; line-height:2.25; text-indent:0; }
div.body.article.poem p.month { font-weight:700; margin-top:2.4em; margin-bottom:.6em; letter-spacing:.15em; }
p.wechat-tag { text-align:center; color:var(--dim); font-size:12px; margin-top:24px; letter-spacing:.2em; }

/* 插图灯箱:点击放大,全屏遮罩,居中显示 */
div.body.article img { cursor:zoom-in; }
div.lightbox {
  position:fixed; inset:0; z-index:100; display:none;
  background:rgba(0,0,0,.85); align-items:center; justify-content:center;
  cursor:zoom-out; padding:24px;
}
div.lightbox.open { display:flex; }
div.lightbox img { max-width:92vw; max-height:88vh; border-radius:4px; box-shadow:0 8px 40px rgba(0,0,0,.5); }

/* 歌曲板块:自定义播放器(网站风格) + 静态歌词(按诗歌排列) */
div.player { display:flex; align-items:center; gap:16px; margin-top:44px; padding:14px 18px;
  border:1px solid var(--line); border-radius:4px; }
div.player audio { display:none; }
button.play-btn { width:38px; height:38px; border-radius:50%; border:1px solid var(--line);
  background:var(--card); color:var(--accent); cursor:pointer; flex-shrink:0; font-size:15px;
  display:flex; align-items:center; justify-content:center;
  transition:border-color .2s, background .2s, transform .15s; line-height:1; }
button.play-btn:hover { border-color:var(--accent); background:var(--hover); }
button.play-btn:active { transform:scale(.92); }
div.prog { flex:1; height:2px; background:var(--line); cursor:pointer; border-radius:1px; position:relative; }
div.prog-bar { height:100%; width:0; background:var(--accent); border-radius:1px; transition:width .15s linear; }
span.time { color:var(--dim); font-size:12.5px; letter-spacing:.08em; flex-shrink:0; }
p.song-meta { text-align:center; color:var(--dim); font-size:13px; letter-spacing:.2em; text-indent:.2em; margin-top:18px; }
div.lyrics { margin-top:44px; padding-bottom:40px; }
div.lyrics p { font-size:16.5px; line-height:2.3; color:var(--ink); text-align:left; }
div.lyrics p.lrc-none { color:var(--dim); }
/* 歌曲分类页:歌名/专辑/时长三列 */
ul.list.song-list a { align-items:baseline; }
ul.list.song-list .t { flex:1; }
ul.list.song-list .album { color:var(--dim); font-size:12.5px; white-space:nowrap; flex-shrink:0; opacity:.8; }

/* 更新日志页 */
div.log-day { padding-bottom:32px; }
div.log-day:last-child { padding-bottom:90px; }
p.log-date { color:var(--dim); font-size:15px; letter-spacing:.3em; margin:48px 0 4px; padding-bottom:8px;
  border-bottom:1px solid var(--line); }
ul.log-items { list-style:none; }
ul.log-items li { display:flex; align-items:baseline; padding:9px 0; font-size:15px; line-height:1.9; }
ul.log-items .log-time { color:var(--dim); font-size:12px; letter-spacing:.05em;
  font-variant-numeric:tabular-nums; margin-right:16px; flex-shrink:0; min-width:40px; }
ul.log-items .log-text { color:var(--ink); }
/* 首页角落日志链接(低调, 绝对定位右下角不占布局高度) */
p.log-link { position:absolute; right:24px; bottom:14px; margin:0; text-align:right; }
p.log-link a { color:var(--dim); font-size:12px; letter-spacing:.3em; text-indent:.3em; opacity:.78;
  transition:opacity .2s, color .2s; }
p.log-link a:hover { color:var(--accent); opacity:1; }

/* 平板(768–1023px):三板块并排但更紧凑 */
@media (min-width:768px) and (max-width:1023px) {
  header.site { padding:100px 0 0; }
  h1.site { font-size:52px; }
  nav.cats { margin-top:40px; }
  nav.cats a { padding:42px 0; }
  nav.cats .cat-name { font-size:24px; }
  h1.cat-title { padding:70px 0 8px; font-size:28px; }
  article.piece { padding:64px 0 120px; }
}

/* 手机(≤767px):全宽竖排卡片,字号行距适配触屏阅读 */
@media (max-width:767px) {
  main { padding:0 18px; padding-left:max(18px, env(safe-area-inset-left));
    padding-right:max(18px, env(safe-area-inset-right)); }
  header.site { padding:64px 0 0; }
  h1.site { font-size:38px; letter-spacing:.42em; text-indent:.42em; }
  nav.cats { display:flex; flex-direction:column; align-items:stretch; gap:14px; margin-top:32px; padding-bottom:64px; }
  nav.cats a { width:100%; padding:28px 0; border:1px solid var(--line); border-radius:4px; }
  nav.cats a:last-child { border-right:1px solid var(--line); }
  nav.cats .cat-name { font-size:22px; }
  nav.cats .cat-num { font-size:12px; margin-top:8px; }
  h1.cat-title { font-size:26px; letter-spacing:.42em; text-indent:.42em; padding:56px 0 8px; }
  p.cat-sub { font-size:12px; letter-spacing:.2em; padding-bottom:20px; }
  p.year-label { font-size:13px; letter-spacing:.4em; margin:36px 0 2px; }
  ul.list a { padding:17px 2px; gap:10px; align-items:flex-start; }
  ul.list .t { font-size:15px; }
  ul.list .d { font-size:11.5px; margin-top:2px; }
  nav.back { padding:32px 0 0; }
  article.piece { padding:44px 0 100px; }
  h1.piece-title { font-size:19px; letter-spacing:.1em; }
  div.body { margin-top:40px; font-size:16px; line-height:2.15; }
  div.body.article { font-size:15.5px; line-height:1.95; }
  div.body.article img { max-height:400px; }
  div.player { margin-top:28px; padding:12px 14px; gap:12px; }
  div.lyrics { margin-top:28px; }
  div.lyrics p { font-size:16px; line-height:2.15; }
  ul.list.song-list .album { display:none; }
  p.log-link { right:18px; bottom:12px; }
  p.log-link a { font-size:11px; }
  div.log-day { padding-bottom:24px; }
  p.log-date { margin:36px 0 4px; font-size:13px; letter-spacing:.25em; }
  ul.log-items li { font-size:14px; }
  ul.log-items .log-time { font-size:11px; margin-right:12px; min-width:34px; }
  p.edit-time, p.dates { margin-top:72px; font-size:11.5px; }
  p.dates span.sep { margin:0 6px; }
  nav.pn { display:grid; grid-template-columns:1fr auto 1fr; gap:8px; padding:12px 0 48px; }
  nav.pn .pn-prev, nav.pn .pn-next { max-width:100%; white-space:normal; text-align:left; font-size:13px; }
  nav.pn .pn-next { text-align:right; }
  a.random { font-size:13px; }
  div.searchbox { margin:26px 0 8px; }
  main.home div.searchbox { margin:26px auto 8px; }
  div.searchbox input.search { font-size:16px; padding:12px 16px; }
  p.random-line { margin:32px 0 32px; }
  p.random-line a.random { padding:10px 36px; font-size:16px; }
  p.random-line a.random::before, p.random-line a.random::after { width:17px; }
  p.random-line a.random::before { right:calc(100% + 12px); }
  p.random-line a.random::after { left:calc(100% + 12px); }
  footer { padding-bottom:max(40px, env(safe-area-inset-bottom)); }
}

/* 小屏(≤360px):更紧凑,防溢出 */
@media (max-width:360px) {
  h1.site { font-size:32px; letter-spacing:.36em; text-indent:.36em; }
  h1.piece-title { font-size:18px; }
  ul.list .t { font-size:14.5px; }
}

/* 首页一屏放下:main 撑满视口高度,内容整体垂直居中(溢出时自动回落顶部,不裁内容) */
main.home { min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; }
main.home::before, main.home::after { content:""; margin:auto; }
/* flex 容器里子元素必须显式撑满宽度,否则 margin:auto 会把块收缩成内容宽(搜索框变窄条) */
main.home > * { width:100%; }
main.home div.searchbox { width:100%; }
main.home { line-height:1.5; }
main.home h1.site { line-height:1.2; }
main.home p.sub { line-height:1.5; }
main.home nav.cats a { line-height:1.5; }
main.home nav.cats .cat-name { line-height:1.4; }
main.home nav.cats .cat-num { line-height:1.6; }
main.home p.random-line a.random { line-height:1.5; }
main.home div.searchbox input.search { line-height:1.5; }
main.home header.site { padding-top:0; padding-bottom:6px; }
main.home nav.cats { padding-bottom:0; }
main.home div.searchbox { margin-top:34px; }
main.home p.random-line { margin-top:40px; }
@media (max-width:767px) {
  main.home header.site { padding-top:0; padding-bottom:4px; }
  main.home div.searchbox { margin-top:26px; }
  main.home p.random-line { margin-top:32px; }
}
/* 矮屏(高 ≤700px,如 iPhone SE/老安卓):进一步压缩间距保证一屏(4 板块竖排时更紧凑) */
@media (max-height:700px) {
  main.home header.site { padding-top:28px; padding-bottom:2px; }
  main.home h1.site { font-size:30px; }
  main.home p.stats { margin-top:8px; }
  main.home div.searchbox { margin-top:10px; }
  main.home p.random-line { margin-top:12px; margin-bottom:12px; }
  main.home nav.cats { gap:8px; margin-top:14px; padding-bottom:8px; }
  main.home nav.cats a { padding:12px 0; }
  main.home p.sub { margin-top:8px; }
}
/* 极小屏(≤360宽 且 ≤620高,如 iPhone SE 320x568):极限压缩保证一屏 */
@media (max-width:360px) and (max-height:620px) {
  main.home header.site { padding-top:14px; padding-bottom:0; }
  main.home h1.site { font-size:28px; }
  main.home p.stats { margin-top:6px; }
  main.home div.searchbox { margin-top:8px; }
  main.home p.random-line { margin-top:8px; margin-bottom:8px; }
  main.home nav.cats { gap:6px; margin-top:10px; padding-bottom:4px; }
  main.home nav.cats a { padding:8px 0; }
  main.home nav.cats .cat-name { font-size:18px; }
  main.home nav.cats .cat-num { font-size:11px; margin-top:6px; }
}
