:root{
  --bg:#f5f6f8;
  --card:#ffffff;
  --text:#1f2328;
  --text-2:#57606a;
  --muted:#8b949e;
  --border:#e6e8eb;
  --brand:#3b6cf6;
  --brand-soft:#eaf0ff;
  --green:#16a34a;
  --red:#dc2626;
  --radius:12px;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 4px 16px rgba(16,24,40,.05);
  --reader-font:19px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
input,textarea,select,button{font-family:inherit;font-size:inherit}
h1,h2,h3{margin:0;font-weight:700;line-height:1.4}

.nav{background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}
.nav-inner{max-width:1120px;margin:0 auto;padding:0 18px;height:62px;display:flex;align-items:center;gap:22px}
.logo{font-size:20px;font-weight:800;color:var(--brand);letter-spacing:.3px;white-space:nowrap}
.search{flex:1;display:flex;max-width:420px;margin-left:auto}
.search input{
  flex:1;height:38px;padding:0 14px;border:1px solid var(--border);
  border-radius:10px 0 0 10px;background:var(--bg);outline:none;min-width:0;
}
.search input:focus{border-color:var(--brand);background:#fff}
.search button{
  height:38px;padding:0 18px;border:1px solid var(--brand);background:var(--brand);
  color:#fff;border-radius:0 10px 10px 0;cursor:pointer;font-weight:600;
}
.search button:hover{filter:brightness(.95)}

.container{max-width:1120px;margin:0 auto;padding:24px 18px 60px}
.footer{text-align:center;color:var(--muted);font-size:13px;padding:28px 16px 40px}

.hero{padding:20px 0 8px}
.hero h1{font-size:28px;margin-bottom:6px}
.hero p{color:var(--text-2);margin:0}

.cats{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 6px}
.cat{
  padding:5px 14px;border-radius:999px;background:var(--card);
  border:1px solid var(--border);font-size:13.5px;color:var(--text-2);transition:.15s;
}
.cat:hover{border-color:var(--brand);color:var(--brand)}
.cat.active{background:var(--brand);border-color:var(--brand);color:#fff}
.cat-num{opacity:.6;margin-left:5px;font-size:12px}

.result-tip{color:var(--text-2);font-size:14px;margin:16px 0 0}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:22px 18px;margin-top:22px}
.card{display:block;transition:transform .16s}
.card:hover{transform:translateY(-3px)}
.cover{
  position:relative;aspect-ratio:3/4;border-radius:10px;overflow:hidden;
  background:linear-gradient(135deg,#dfe6ff,#eef2ff);box-shadow:var(--shadow);
}
.cover img{width:100%;height:100%;object-fit:cover}
.cover-ph{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-size:42px;font-weight:800;color:var(--brand);opacity:.45;
}
.cover-ph.big{font-size:64px}
.badge{
  position:absolute;top:8px;right:8px;background:rgba(59,108,246,.92);color:#fff;
  font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600;
}
.badge.done{background:rgba(22,163,74,.92)}
.card-title{font-size:14.5px;font-weight:600;margin:10px 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-meta{font-size:12.5px;color:var(--muted);margin:0}

.novel-head{
  display:flex;gap:26px;background:var(--card);border-radius:var(--radius);
  padding:26px;box-shadow:var(--shadow);margin-bottom:22px;
}
.novel-cover{width:160px;flex:0 0 160px}
.novel-cover img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:10px;box-shadow:var(--shadow)}
.novel-cover .cover-ph{aspect-ratio:3/4;border-radius:10px;background:linear-gradient(135deg,#dfe6ff,#eef2ff)}
.novel-info{flex:1;min-width:0}
.novel-info h1{font-size:26px;margin-bottom:10px}
.novel-tags{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.tag{
  display:inline-block;font-size:12.5px;padding:2px 10px;border-radius:6px;
  background:var(--brand-soft);color:var(--brand);font-weight:600;
}
.tag.gray{background:#f0f1f3;color:var(--text-2)}
.tag.green{background:#e7f7ec;color:var(--green)}
.novel-author{color:var(--text-2);margin:0 0 14px;font-size:14px}
.novel-stats{display:flex;gap:34px;list-style:none;padding:0;margin:0 0 18px}
.novel-stats li{display:flex;flex-direction:column}
.novel-stats b{font-size:19px}
.novel-stats span{font-size:12.5px;color:var(--muted)}
.novel-actions{display:flex;gap:10px;flex-wrap:wrap}

.panel{background:var(--card);border-radius:var(--radius);padding:22px 24px;box-shadow:var(--shadow);margin-bottom:22px}
.panel-title{font-size:16px;margin-bottom:14px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.panel-sub{font-size:12.5px;color:var(--muted);font-weight:400}
.intro{color:var(--text-2);white-space:pre-wrap;line-height:1.9}

.chapter-list{
  list-style:none;padding:0;margin:0;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px 18px;
}
.chapter-list li a{
  display:flex;justify-content:space-between;gap:12px;
  padding:10px 12px;border-radius:8px;font-size:14px;color:var(--text-2);
}
.chapter-list li a:hover{background:var(--brand-soft);color:var(--brand)}
.ch-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-meta{font-size:12px;color:var(--muted);white-space:nowrap}

.crumb{max-width:820px;margin:18px auto 0;padding:0 20px;font-size:13px;color:var(--muted)}
.crumb a:hover{color:var(--brand)}
.reader{max-width:820px;margin:0 auto;padding:16px 20px 60px}
.reader-title{font-size:26px;margin:14px 0 8px}
.reader-meta{color:var(--muted);font-size:13px;margin:0 0 26px;padding-bottom:18px;border-bottom:1px solid var(--border)}
.reader-content{
  font-size:var(--reader-font);line-height:2;white-space:pre-wrap;word-break:break-word;
  color:var(--text);letter-spacing:.2px;
}
.reader-nav{display:flex;gap:10px;margin-top:44px;justify-content:center;flex-wrap:wrap}
.reader-tools{margin-left:auto;display:flex;gap:6px}
.reader-tools button{
  width:38px;height:38px;border-radius:9px;border:1px solid var(--border);
  background:var(--card);cursor:pointer;color:var(--text-2);font-weight:700;
}
.reader-tools button:hover{border-color:var(--brand);color:var(--brand)}

body.dark{--bg:#15171a;--card:#1c1f24;--text:#d6dae0;--text-2:#a4acb6;--muted:#7b848f;--border:#2b3037;--brand-soft:#232a3a}
body.dark .cover{background:linear-gradient(135deg,#232a3a,#1c1f24)}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:38px;padding:0 18px;border-radius:9px;border:1px solid var(--border);
  background:var(--card);color:var(--text);font-weight:600;cursor:pointer;
  font-size:14px;transition:.15s;white-space:nowrap;
}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{filter:brightness(1.06);color:#fff}
.btn.ghost{background:transparent}
.btn.danger{color:var(--red);border-color:#f5c6c6}
.btn.danger:hover{background:#fdecec;border-color:var(--red);color:var(--red)}
.btn.sm{height:31px;padding:0 12px;font-size:13px;border-radius:7px}
.btn.block{width:100%}
.btn.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

.pager{display:flex;gap:6px;justify-content:center;align-items:center;margin-top:28px;flex-wrap:wrap}
.pg{
  min-width:36px;height:36px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:9px;border:1px solid var(--border);background:var(--card);font-size:14px;color:var(--text-2);
}
.pg:hover{border-color:var(--brand);color:var(--brand)}
.pg.active{background:var(--brand);border-color:var(--brand);color:#fff}
.pg-dots{color:var(--muted);padding:0 2px}

.empty{text-align:center;color:var(--muted);padding:60px 20px}
.empty.small{padding:32px 16px}
.muted{color:var(--muted)}
.nowrap{white-space:nowrap}

@media (max-width:640px){
  .novel-head{flex-direction:column;gap:18px;padding:20px}
  .novel-cover{width:120px;flex:none}
  .novel-stats{gap:22px}
}
/* =======================================
   移动端响应式补丁（直接粘贴到 style.css 末尾）
   ======================================= */
html, body {
    overflow-x: hidden; /* 彻底禁止左右滑动 */
}

@media (max-width: 640px) {
    /* 导航栏换行显示 */
    .nav-inner {
        flex-wrap: wrap;
        height: auto;
        padding: 12px 16px;
        gap: 12px;
    }
    .logo {
        width: 100%;
        text-align: center;
    }
    /* 搜索框占满整行 */
    .search {
        width: 100%;
        max-width: 100%;
        margin: 0;
    }
    .search button {
        padding: 0 16px;
    }
    
    /* 容器间距调整 */
    .container {
        padding: 16px 12px 40px;
    }
    
    /* 小说网格缩小卡片宽度，放得更多 */
    .grid {
        grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
        gap: 16px 10px;
    }
    .card-title {
        font-size: 13.5px;
    }
    .card-meta {
        font-size: 11.5px;
    }
    
    /* 详情页居中堆叠 */
    .novel-head {
        flex-direction: column;
        align-items: center;
        text-align: center;
        padding: 20px 16px;
    }
    .novel-cover {
        width: 140px;
        flex: none;
    }
    .novel-info h1 {
        font-size: 22px;
    }
    .novel-tags, .novel-stats, .novel-actions {
        justify-content: center;
    }
    
    /* 章节列表单列显示 */
    .chapter-list {
        grid-template-columns: 1fr;
    }
    
    /* 阅读页边距 */
    .reader {
        padding: 10px 16px 40px;
    }
    .reader-title {
        font-size: 22px;
    }
}