/* 全站共用样式 */
:root{
  --paper:#FAF9F6;
  --ink:#1F2328;
  --body:#2B2F34;
  --muted:#706A60;
  --line:#E4E0D6;
  --red:#C23B22;
  --note-bg:#F4F0E6;
  --card-bg:#FFFFFF;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  background:var(--paper);
  color:var(--body);
  font-family:"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans SC",system-ui,-apple-system,sans-serif;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--red);text-decoration:none;}
a:hover{text-decoration:underline;}

/* ===== Header / Footer ===== */
.site-header{
  max-width:880px;margin:0 auto;padding:24px;
  display:flex;align-items:center;gap:16px;
  border-bottom:1px solid var(--line);
}
.site-title{
  font-family:"Noto Serif SC",serif;
  font-weight:700;color:var(--ink);font-size:18px;flex:1;
}
.search-form{display:flex;gap:8px;}
.search-form input{
  padding:6px 10px;border:1px solid var(--line);border-radius:6px;
  font-size:13px;background:#fff;min-width:200px;
}
.search-form button{
  padding:6px 14px;background:var(--red);color:#fff;border:none;
  border-radius:6px;font-size:13px;cursor:pointer;
}
.site-main{min-height:60vh;}
.site-footer{
  text-align:center;padding:32px 16px;font-size:12px;color:var(--muted);
  border-top:1px solid var(--line);margin-top:48px;
}

/* ===== List page ===== */
.list-wrap{max-width:720px;margin:0 auto;padding:48px 24px;}
.page-title{
  font-family:"Noto Serif SC",serif;font-size:28px;font-weight:700;
  color:var(--ink);margin-bottom:8px;
}
.page-meta{font-size:13px;color:var(--muted);margin-bottom:24px;}
.article-list{list-style:none;padding:0;border-top:1px solid var(--line);}
.article-item{border-bottom:1px solid var(--line);}
.article-link{display:block;padding:16px 4px;color:inherit;text-decoration:none;}
.article-link:hover{background:rgba(194,59,34,.04);}
.article-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:4px;}
.article-meta{font-size:12.5px;color:var(--muted);}
.dot{margin:0 6px;color:#C9C4B8;}
.empty{text-align:center;color:var(--muted);padding:60px 0;font-size:14px;}

.pager{display:flex;justify-content:center;align-items:center;gap:18px;
  margin-top:32px;font-size:14px;}
.pager a{padding:6px 12px;border:1px solid var(--line);border-radius:6px;color:var(--ink);}
.pager a:hover{background:var(--red);color:#fff;border-color:var(--red);text-decoration:none;}
.page-cur{color:var(--muted);}

/* ===== Article page ===== */
.wrap{max-width:720px;margin:0 auto;padding:48px 24px 64px;}
.back-link{display:inline-block;margin-bottom:24px;font-size:13px;color:var(--muted);}
.back-link:hover{color:var(--red);}
.kicker{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;letter-spacing:.14em;color:var(--red);font-weight:600;
  border:1px solid rgba(194,59,34,.35);border-radius:999px;
  padding:4px 12px;margin-bottom:26px;
}
.kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--red);}
h1{
  font-family:"Noto Serif SC",serif;font-size:32px;line-height:1.45;
  font-weight:700;color:var(--ink);margin-bottom:20px;
}
.meta{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 0;
  font-size:14px;color:var(--muted);
  padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:34px;
}
.meta .author{font-weight:600;color:var(--ink);}
.meta .sep{margin:0 10px;color:#C9C4B8;}
section{margin-bottom:30px;}
h2{
  display:flex;align-items:center;gap:12px;
  font-size:16px;font-weight:700;color:var(--ink);
  letter-spacing:.08em;margin-bottom:14px;
}
h2::before{content:"";width:3px;height:16px;border-radius:2px;background:var(--red);}
p{font-size:16.5px;text-align:justify;text-justify:inter-ideograph;margin-bottom:16px;}
p:last-child{margin-bottom:0;}
figure{margin:36px 0 30px;background:var(--card-bg);border:1px solid var(--line);border-radius:12px;padding:10px;}
figure img{display:block;width:100%;height:auto;border-radius:8px;}
figcaption{font-size:12.5px;color:var(--muted);text-align:center;padding:10px 4px 4px;}
.notice{
  background:var(--note-bg);border:1px solid var(--line);border-left:3px solid var(--red);
  border-radius:8px;padding:16px 18px;font-size:13.5px;line-height:1.8;color:#5E574C;margin-top:8px;
}
.notice strong{display:block;color:var(--ink);font-size:14px;margin-bottom:6px;}
.source{margin-top:34px;font-size:12.5px;color:var(--muted);}
.source a{color:var(--muted);text-decoration:none;border-bottom:1px solid #C9C4B8;}
.source a:hover{color:var(--red);border-color:var(--red);}

@media (max-width:560px){
  .wrap{padding:36px 18px 60px;}
  h1{font-size:26px;}
  p{font-size:16px;text-align:left;}
  .meta{font-size:14px;}
  .search-form input{min-width:140px;}
}

/* ===== Flash / User menu / Login ===== */
.flash-wrap{
  max-width:880px;margin:0 auto;padding:12px 24px 0;
}
.flash{
  padding:10px 14px;border-radius:6px;font-size:13.5px;
  margin-bottom:8px;border-left:3px solid var(--line);
  background:var(--card-bg);color:var(--ink);
}
.flash-error{border-left-color:var(--red);background:#FCEFE9;color:#7A2418;}
.flash-info{border-left-color:#5C7A8A;background:#EEF3F6;color:#2F4858;}

.user-menu{
  display:flex;align-items:center;gap:10px;
  font-size:13px;color:var(--muted);white-space:nowrap;
}
.user-menu .user-name{color:var(--ink);font-weight:600;}
.user-menu a.logout{
  color:var(--muted);font-size:12.5px;
  border:1px solid var(--line);border-radius:6px;padding:4px 10px;
}
.user-menu a.logout:hover{color:var(--red);border-color:var(--red);text-decoration:none;}

.login-wrap{
  max-width:380px;margin:64px auto;padding:32px 28px;
  background:var(--card-bg);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 4px 18px rgba(31,35,40,.3);
}
.card-title{
  font-family:"Noto Serif SC",serif;font-size:22px;font-weight:700;
  color:var(--ink);margin-bottom:6px;
}
.card-sub{font-size:13px;color:var(--muted);margin-bottom:24px;}
.login-form{display:flex;flex-direction:column;gap:6px;}
.field-label{
  font-size:12.5px;color:var(--muted);margin-top:10px;
}
.login-form input{
  padding:8px 12px;border:1px solid var(--line);border-radius:6px;
  font-size:14px;background:#fff;color:var(--ink);
}
.login-form input:focus{outline:none;border-color:var(--red);}
.btn-primary{
  margin-top:18px;padding:10px 16px;background:var(--red);color:#fff;
  border:none;border-radius:6px;font-size:14px;cursor:pointer;
  font-weight:600;letter-spacing:.04em;
}
.btn-primary:hover{background:#a92b15;}

@media (max-width:560px){
  .site-header{flex-wrap:wrap;}
  .user-menu{order:3;width:100%;justify-content:flex-end;}
  .login-wrap{margin:32px 16px;}
}