* { box-sizing: border-box; margin: 0; padding: 0; }
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    background: #f5f7fa; color: #333; line-height: 1.6;
}
a { color: #2563eb; text-decoration: none; }
a:hover { color: #1d4ed8; }
.container { max-width: 1180px; margin: 0 auto; padding: 0 16px; }

/* Header */
.site-header { background: #1e3a8a; color: #fff; }
.header-inner { display: flex; align-items: center; gap: 28px; height: 60px; }
.brand { display: flex; align-items: center; gap: 8px; color: #fff; font-size: 20px; font-weight: 700; }
.brand:hover { color: #ffd97a; }
.brand-icon { font-size: 22px; }
.main-nav { display: flex; align-items: center; gap: 18px; flex: 1; }
.main-nav a { color: #cfe0ff; font-size: 15px; }
.main-nav a.on, .main-nav a:hover { color: #ffd97a; }
.nav-search { display: flex; }
.nav-search input {
    width: 220px; padding: 7px 12px; border: none; border-radius: 5px 0 0 5px; outline: none; font-size: 14px;
}
.nav-search button {
    padding: 7px 14px; border: none; background: #f97316; color: #fff; border-radius: 0 5px 5px 0; cursor: pointer;
}
.user-nav { display: flex; align-items: center; gap: 14px; font-size: 14px; }
.user-nav a { color: #cfe0ff; }
.user-nav a.on, .user-nav a:hover { color: #ffd97a; }
.user-name { color: #ffd97a; }
.link-btn { background: none; border: none; color: #cfe0ff; cursor: pointer; font-size: 14px; }
.link-btn:hover { color: #ffd97a; }
.inline-form { display: inline; }

/* Hero */
.hero { text-align: center; padding: 42px 0 26px; }
.hero h1 { font-size: 34px; color: #1e3a8a; margin-bottom: 8px; }
.hero p { color: #666; font-size: 16px; }

/* Category nav */
.cate-nav { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; padding: 12px 0 26px; }
.cate-nav a { padding: 8px 20px; border-radius: 20px; background: #fff; color: #333; border: 1px solid #e2e8f0; font-size: 15px; }
.cate-nav a.on, .cate-nav a:hover { background: #1e3a8a; color: #fff; border-color: #1e3a8a; }

/* Blocks */
.block { background: #fff; border-radius: 10px; padding: 22px; margin-bottom: 24px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.block-title h2 { font-size: 20px; color: #1e3a8a; margin-bottom: 18px; border-left: 4px solid #f97316; padding-left: 10px; }

/* Site grid & cards */
.site-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.site-card {
    display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid #eef1f5;
    border-radius: 10px; padding: 14px; transition: all .15s; color: #333;
}
.site-card:hover { box-shadow: 0 4px 14px rgba(30,58,138,.12); transform: translateY(-2px); border-color: #c7d2fe; }
.site-logo { width: 40px; height: 40px; border-radius: 8px; object-fit: contain; flex-shrink: 0; background: #f1f5f9; padding: 4px; }
.site-info { min-width: 0; }
.site-title { font-weight: 600; color: #1e293b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.site-desc { font-size: 13px; color: #94a3b8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 2px; }
.site-cat { font-size: 12px; color: #f97316; }

/* Category blocks */
.cate-block { margin-bottom: 18px; }
.cate-name { font-size: 17px; font-weight: 700; margin-bottom: 8px; }
.cate-name a { color: #1e3a8a; }
.cate-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.cate-tags a { padding: 4px 12px; border-radius: 14px; background: #f1f5f9; color: #475569; font-size: 13px; }
.cate-tags a:hover { background: #e0e7ff; color: #1e3a8a; }
.cate-tags a.more { background: none; color: #f97316; }

/* Breadcrumb */
.breadcrumb { padding: 16px 0 6px; font-size: 13px; color: #64748b; }
.breadcrumb a { color: #2563eb; }
.breadcrumb .cur { color: #334155; font-weight: 600; }

/* Page */
.page-title { font-size: 26px; color: #1e3a8a; margin: 14px 0 6px; }
.page-sub { color: #64748b; margin-bottom: 16px; }
.cate-tabs { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 22px; }
.cate-tabs a.tab { padding: 6px 16px; border-radius: 16px; background: #fff; border: 1px solid #e2e8f0; color: #475569; font-size: 14px; }
.cate-tabs a.tab:hover { background: #1e3a8a; color: #fff; }

/* Pagination */
.pagination { margin-top: 20px; text-align: center; }
.pagination nav div span, .pagination a, .pagination span {
    display: inline-block; padding: 6px 12px; margin: 2px; border-radius: 5px; background: #fff; border: 1px solid #e2e8f0; font-size: 14px; color: #334155;
}
.pagination .active span { background: #1e3a8a; color: #fff; border-color: #1e3a8a; }

/* Site detail */
.site-detail { background: #fff; border-radius: 10px; padding: 24px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.detail-head { display: flex; gap: 20px; }
.site-logo-lg { width: 72px; height: 72px; border-radius: 14px; object-fit: contain; background: #f1f5f9; padding: 6px; flex-shrink: 0; }
.detail-title { font-size: 26px; color: #1e293b; }
.detail-summary { color: #475569; margin: 8px 0 16px; }
.detail-actions { display: flex; gap: 12px; }
.detail-tags { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 8px; }
.tag { padding: 3px 12px; border-radius: 12px; background: #fef3c7; color: #b45309; font-size: 13px; }

/* Buttons */
.btn-primary {
    display: inline-block; padding: 8px 20px; background: #1e3a8a; color: #fff; border-radius: 6px; border: none;
    font-size: 14px; cursor: pointer; text-align: center;
}
.btn-primary:hover { background: #1e40af; color: #fff; }
.btn-primary.block { width: 100%; }
.btn-outline {
    display: inline-block; padding: 8px 20px; background: #fff; color: #1e3a8a; border: 1px solid #1e3a8a;
    border-radius: 6px; font-size: 14px; cursor: pointer;
}
.btn-outline:hover { background: #eef2ff; color: #1e40af; }
.btn-outline.bookmarked { background: #fde68a; border-color: #f59e0b; color: #92400e; }
.btn-outline.sm, .btn-danger.sm { padding: 4px 12px; font-size: 13px; }
.btn-danger { display: inline-block; padding: 8px 20px; background: #fff; color: #dc2626; border: 1px solid #dc2626; border-radius: 6px; font-size: 14px; cursor: pointer; }
.btn-danger:hover { background: #fef2f2; }

/* Search */
.big-search { display: flex; margin: 18px 0; }
.big-search input { flex: 1; padding: 12px 16px; border: 1px solid #e2e8f0; border-radius: 8px 0 0 8px; font-size: 16px; outline: none; }
.big-search button { padding: 12px 28px; border: none; background: #f97316; color: #fff; border-radius: 0 8px 8px 0; font-size: 16px; cursor: pointer; }
.search-info { color: #64748b; margin-bottom: 16px; }

/* Bookmarks */
.bookmark-row { display: flex; align-items: center; gap: 16px; background: #fff; border-radius: 10px; padding: 16px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.bm-main { flex: 1; min-width: 0; }
.bm-title { font-weight: 600; font-size: 16px; color: #1e293b; }
.bm-url { font-size: 14px; color: #2563eb; }
.bm-cat { margin-left: 8px; padding: 1px 8px; border-radius: 10px; background: #e0e7ff; color: #3730a3; font-size: 12px; }
.bm-tag, .bm-note { font-size: 13px; color: #64748b; }
.bm-actions { display: flex; gap: 8px; }

/* Auth */
.auth-box { max-width: 420px; margin: 40px auto; background: #fff; border-radius: 12px; padding: 30px; box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.auth-form .field { margin-bottom: 16px; }
.auth-form label { display: block; font-size: 14px; margin-bottom: 6px; color: #334155; }
.auth-form label.checkbox { display: flex; align-items: center; gap: 6px; font-weight: 400; }
.auth-form input[type=text], .auth-form input[type=email], .auth-form input[type=password] {
    width: 100%; padding: 10px 12px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 14px; outline: none;
}
.auth-form input:focus { border-color: #1e3a8a; }
.auth-form .err { color: #dc2626; font-size: 12px; }
.auth-alt { text-align: center; margin-top: 16px; font-size: 14px; color: #64748b; }

/* Misc */
.flash { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; border-radius: 6px; padding: 10px 16px; margin: 12px auto; }
.empty { color: #94a3b8; padding: 30px; text-align: center; }
.site-footer { margin-top: 40px; background: #1e293b; color: #94a3b8; padding: 24px 0; text-align: center; font-size: 13px; }

@media (max-width: 768px) {
    .header-inner { flex-wrap: wrap; height: auto; padding: 10px 0; gap: 10px; }
    .nav-search input { width: 150px; }
    .site-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
    .detail-head { flex-direction: column; }
}

/* 详情页二维码 */
.detail-qr { flex-shrink: 0; text-align: center; }
.detail-qr #qrcode { width: 120px; height: 120px; padding: 6px; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; display: flex; align-items: center; justify-content: center; }
.detail-qr #qrcode img, .detail-qr #qrcode canvas { width: 120px !important; height: 120px !important; }
.qr-tip { font-size: 13px; color: #64748b; margin-top: 6px; }

/* 详情页内容区(富文本) */
.site-content { background: #fff; border-radius: 10px; padding: 26px; margin-top: 20px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.site-content h2 { font-size: 18px; color: #1e3a8a; margin: 20px 0 10px; padding-left: 10px; border-left: 4px solid #f97316; }
.site-content h2:first-child { margin-top: 0; }
.site-content h3 { font-size: 16px; color: #334155; margin: 16px 0 8px; }
.site-content p { margin: 8px 0; color: #475569; line-height: 1.8; }
.site-content ul { margin: 8px 0 8px 22px; }
.site-content li { margin: 5px 0; color: #475569; line-height: 1.7; }
.site-content a { color: #2563eb; word-break: break-all; }
.site-content code { background: #f1f5f9; padding: 1px 6px; border-radius: 4px; font-size: 13px; color: #b91c1c; }

@media (max-width: 768px) {
    .detail-qr { margin-top: 12px; }
}

/* ===== 列表式站点(一行一个) ===== */
.site-list { display: flex; flex-direction: column; gap: 12px; }
.site-row {
    display: flex; align-items: center; gap: 16px; background: #fff;
    border: 1px solid #eef1f5; border-radius: 10px; padding: 16px 18px;
    color: #333; transition: all .15s;
}
.site-row:hover { box-shadow: 0 4px 16px rgba(30,58,138,.12); border-color: #c7d2fe; transform: translateX(3px); }
.site-row .site-logo { width: 48px; height: 48px; border-radius: 10px; }
.site-row .site-info { flex: 1; min-width: 0; }
.site-row .site-title { font-size: 17px; font-weight: 600; color: #1e293b; }
.site-row .site-cat { font-size: 12px; color: #f97316; margin-top: 2px; }
.site-row .site-desc {
    font-size: 15px; color: #94a3b8; margin-top: 4px; display: -webkit-box;
    -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal;
}
.site-row .site-go {
    flex-shrink: 0; padding: 8px 18px; border-radius: 6px; background: #1e3a8a; color: #fff;
    font-size: 13px; font-weight: 500; transition: background .15s;
}
.site-row:hover .site-go { background: #f97316; }
.site-row .site-no { flex-shrink: 0; width: 30px; text-align: center; color: #cbd5e1; font-size: 15px; font-weight: 700; }

/* ===== 分页 ===== */
.pagination { margin: 26px 0 10px; display: flex; justify-content: center; }
.pg-nav { display: flex; gap: 6px; align-items: center; justify-content: center; flex-wrap: wrap; }
.pg-nav a, .pg-item, .pg-disabled, .pg-dots {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 38px; height: 38px; padding: 0 13px; border-radius: 9px;
    background: #fff; border: 1px solid #e2e8f0; font-size: 14px; color: #334155; transition: all .12s;
}
.pg-nav a:hover { background: #eef2ff; border-color: #c7d2fe; color: #1e3a8a; }
.pg-item.active { background: #1e3a8a; color: #fff; border-color: #1e3a8a; font-weight: 600; }
.pg-disabled { color: #cbd5e1; background: #f8fafc; }
.pg-dots { border: none; background: none; color: #94a3b8; min-width: 24px; padding: 0 4px; }
.pg-info { text-align: center; color: #94a3b8; font-size: 13px; margin-top: 10px; }

/* 优化分类 tab */
.cate-tabs a.tab.on { background: #1e3a8a; color: #fff; border-color: #1e3a8a; }

@media (max-width: 768px) {
    .site-row { padding: 12px 14px; gap: 12px; }
    .site-row .site-logo { width: 40px; height: 40px; }
    .site-row .site-go { display: none; }
    .site-row .site-desc { -webkit-line-clamp: 1; }
}

/* 列表行:网址 */
.site-row .site-url {
    font-size: 12.5px; color: #2563eb; margin-top: 3px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}
.site-row .site-url::before { content: "🔗 "; font-size: 11px; }

/* ===== 详情页优化(二维码靠右) ===== */
.site-detail { padding: 26px 28px; }
.detail-head { display: flex; gap: 22px; align-items: flex-start; }
.detail-main { flex: 1 1 auto; min-width: 0; }
.detail-title { font-size: 27px; line-height: 1.3; }
.detail-summary { color: #475569; margin: 10px 0 18px; line-height: 1.75; }
.detail-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.detail-qr {
    margin-left: auto; flex-shrink: 0; text-align: center;
    background: #f8fafc; border: 1px solid #eef1f5; border-radius: 12px; padding: 12px 14px;
}
.detail-qr #qrcode { border: none; padding: 0; width: 116px; height: 116px; }
.detail-qr #qrcode img, .detail-qr #qrcode canvas { width: 116px !important; height: 116px !important; }
.qr-tip { font-size: 12px; color: #64748b; margin-top: 8px; letter-spacing: .5px; }

@media (max-width: 768px) {
    .detail-head { flex-direction: column; gap: 16px; }
    .detail-qr { margin: 0 auto; }
    .detail-title { font-size: 22px; }
}

/* ===== 详细介绍区块优化 ===== */
.content-wrap { margin-top: 22px; }
.content-label {
    font-size: 19px; color: #1e3a8a; margin: 0 0 14px; padding-left: 12px;
    border-left: 4px solid #f97316; line-height: 1.3;
}
.site-content {
    background: #fff; border-radius: 12px; padding: 28px 30px; margin-top: 0;
    box-shadow: 0 1px 3px rgba(0,0,0,.05); font-size: 15px;
}
.site-content h2 {
    font-size: 17px; color: #1e3a8a; margin: 28px 0 12px; padding: 0 0 0 13px;
    border-left: 4px solid #f97316; line-height: 1.45; font-weight: 600;
}
.site-content h2:first-child { margin-top: 0; }
.site-content h3 { font-size: 15.5px; color: #334155; margin: 18px 0 8px; }
.site-content p { margin: 10px 0; color: #475569; line-height: 1.85; }
.site-content a { color: #2563eb; word-break: break-all; }
.site-content a:hover { text-decoration: underline; }
.site-content code { background: #f1f5f9; padding: 1px 6px; border-radius: 4px; font-size: 13px; color: #b91c1c; }
.site-content strong { color: #1e293b; font-weight: 600; }

/* 有序列表:圆形序号 */
.site-content ol { list-style: none; counter-reset: cli; margin: 12px 0; padding: 0; }
.site-content ol > li {
    position: relative; counter-increment: cli; padding: 11px 0 11px 36px;
    color: #475569; line-height: 1.75; border-bottom: 1px dashed #eef1f5;
}
.site-content ol > li:last-child { border-bottom: none; }
.site-content ol > li::before {
    content: counter(cli); position: absolute; left: 0; top: 12px;
    width: 23px; height: 23px; border-radius: 50%; background: #eef2ff; color: #1e3a8a;
    font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center;
}

/* 无序列表:橙色点 */
.site-content ul { list-style: none; margin: 12px 0; padding: 0; }
.site-content ul > li {
    position: relative; padding: 6px 0 6px 20px; color: #475569; line-height: 1.75;
}
.site-content ul > li::before {
    content: ""; position: absolute; left: 4px; top: 15px;
    width: 7px; height: 7px; border-radius: 50%; background: #f97316;
}

@media (max-width: 768px) {
    .site-content { padding: 20px 18px; }
    .content-label { font-size: 17px; }
}

/* ===== 申请收录表单 ===== */
.submit-card { background:#fff; border-radius:12px; padding:28px 30px; box-shadow:0 1px 3px rgba(0,0,0,.05); max-width:760px; }
.submit-form .form-row { margin-bottom:18px; }
.submit-form label { display:block; font-size:14px; color:#334155; font-weight:600; margin-bottom:7px; }
.submit-form label i { color:#ef4444; font-style:normal; }
.submit-form input[type=text], .submit-form select, .submit-form textarea {
    width:100%; padding:10px 13px; border:1px solid #e2e8f0; border-radius:8px; font-size:15px;
    color:#1e293b; background:#fff; outline:none; transition:border-color .15s, box-shadow .15s;
    font-family:inherit;
}
.submit-form input[type=text]:focus, .submit-form select:focus, .submit-form textarea:focus {
    border-color:#1e3a8a; box-shadow:0 0 0 3px rgba(30,58,138,.08);
}
.submit-form textarea { resize:vertical; line-height:1.7; }
.form-grid2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-errors { background:#fef2f2; border:1px solid #fecaca; border-radius:8px; padding:12px 16px; margin-bottom:18px; }
.form-errors ul { margin:0; padding-left:18px; }
.form-errors li { color:#b91c1c; font-size:14px; line-height:1.9; }
.form-actions { display:flex; align-items:center; gap:16px; margin-top:24px; }
.btn-lg { padding:11px 30px; font-size:15px; }
.btn-link { color:#64748b; font-size:14px; }
.btn-link:hover { color:#1e3a8a; }

/* 提交成功 */
.done-card { background:#fff; border-radius:12px; padding:52px 30px; text-align:center; box-shadow:0 1px 3px rgba(0,0,0,.05); max-width:620px; margin:30px auto; }
.done-icon { font-size:46px; margin-bottom:10px; }
.done-card h1 { font-size:24px; color:#1e3a8a; margin-bottom:12px; }
.done-card p { color:#475569; line-height:1.9; margin-bottom:22px; }
.done-actions { display:flex; gap:14px; justify-content:center; align-items:center; }

@media (max-width:768px) {
    .form-grid2 { grid-template-columns:1fr; }
    .submit-card { padding:20px 18px; }
}

/* ===== 前台整体优化 ===== */
/* Hero */
.hero { text-align:center; padding: 46px 16px 26px; }
.hero h1 { font-size: 36px; color:#1e3a8a; margin-bottom: 10px; letter-spacing:-.5px; }
.hero-sub { color:#64748b; font-size:15px; margin-bottom: 22px; }
.hero-sub b { color:#f97316; font-size:17px; }
.hero-search { display:flex; justify-content:center; max-width:560px; margin:0 auto 18px; box-shadow:0 4px 18px rgba(30,58,138,.08); border-radius:10px; overflow:hidden; }
.hero-search input { flex:1; padding:13px 18px; border:1px solid #e2e8f0; border-right:none; border-radius:10px 0 0 10px; font-size:15px; outline:none; }
.hero-search input:focus { border-color:#1e3a8a; }
.hero-search button { padding:13px 30px; border:none; background:#1e3a8a; color:#fff; font-size:15px; cursor:pointer; transition:background .15s; }
.hero-search button:hover { background:#f97316; }
.hero-links { display:flex; gap:22px; justify-content:center; font-size:14px; }
.hero-links a { color:#2563eb; }
.hero-links a:hover { color:#f97316; }

/* Block title 双栏 */
.block-title { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.block-title h2 { margin-bottom:0; border-left:none; padding-left:0; display:flex; align-items:center; gap:8px; }
.bt-ico { font-size:18px; }
.bt-more { font-size:13px; color:#64748b; }
.bt-more:hover { color:#f97316; }

/* 分类分组 */
.cate-groups { display:grid; grid-template-columns:repeat(auto-fill, minmax(330px,1fr)); gap:18px; }
.cate-block { margin-bottom:0; background:#f8fafc; border:1px solid #eef1f5; border-radius:10px; padding:14px 16px; }
.cate-name { display:flex; align-items:baseline; gap:8px; margin-bottom:10px; }
.cate-name a { font-size:16px; font-weight:700; color:#1e3a8a; }
.cate-name a:hover { color:#f97316; }
.cate-count { font-size:12px; color:#94a3b8; }

/* 卡片微调 */
.site-card { position:relative; }
.site-card .site-cat { margin-top:3px; }
.site-card:hover .site-title { color:#1e3a8a; }

/* 页脚 */
.site-footer { background:#1e3a8a; color:#cfe0ff; margin-top:36px; padding:28px 0; }
.site-footer .container { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.site-footer p { margin:0; font-size:13px; color:#9db4e0; }
.site-footer a { color:#cfe0ff; font-size:13px; }
.site-footer a:hover { color:#ffd97a; }
.footer-links { display:flex; gap:18px; flex-wrap:wrap; }

@media (max-width:768px) {
    .hero h1 { font-size:26px; }
    .hero-sub { font-size:13.5px; }
    .cate-groups { grid-template-columns:1fr; }
    .site-footer .container { flex-direction:column; text-align:center; }
}

/* ===== 列表页搜索框 ===== */
.list-search { display:flex; max-width:560px; margin:16px 0 20px; border-radius:9px; overflow:hidden; box-shadow:0 1px 6px rgba(30,58,138,.06); }
.list-search input { flex:1; padding:11px 16px; border:1px solid #e2e8f0; border-right:none; border-radius:9px 0 0 9px; font-size:14px; outline:none; }
.list-search input:focus { border-color:#1e3a8a; }
.list-search button { padding:11px 24px; border:none; background:#1e3a8a; color:#fff; font-size:14px; cursor:pointer; transition:background .15s; }
.list-search button:hover { background:#f97316; }
@media (max-width:768px) { .list-search { max-width:100%; } }

/* ===== 申请收录:图标上传 ===== */
.logo-upload { display:flex; gap:18px; align-items:flex-start; }
.logo-preview { position:relative; width:104px; height:104px; flex-shrink:0; border:1px dashed #cbd5e1; border-radius:14px; background:#f8fafc; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.logo-preview img { width:88px; height:88px; object-fit:contain; }
.logo-preview-tag { position:absolute; left:0; bottom:0; right:0; text-align:center; font-size:11px; color:#64748b; background:rgba(248,250,252,.92); line-height:18px; }
.logo-upload-main { flex:1; min-width:0; padding-top:4px; }
.file-btn { display:inline-block; padding:8px 18px; background:#eef2ff; color:#1e3a8a; border:1px solid #c7d2fe; border-radius:8px; font-size:14px; font-weight:500; cursor:pointer; transition:all .15s; }
.file-btn:hover { background:#1e3a8a; color:#fff; border-color:#1e3a8a; }
.logo-upload-main input[type=file] { display:none; }
.file-name { font-size:13px; color:#94a3b8; margin-left:10px; }
.logo-tip { font-size:13px; color:#64748b; line-height:1.85; margin-top:10px; }
.logo-tip b { color:#f97316; }
@media (max-width:768px) { .logo-upload { flex-direction:column; } }

/* ===== 我的发布 / 标签页 ===== */
.my-tabs { display:flex; gap:8px; margin:14px 0 20px; border-bottom:1px solid #eef1f5; }
.my-tab { padding:9px 20px; font-size:15px; color:#475569; border-bottom:2px solid transparent; margin-bottom:-1px; }
.my-tab:hover { color:#1e3a8a; }
.my-tab.on { color:#1e3a8a; font-weight:600; border-bottom-color:#f97316; }

.post-list { display:flex; flex-direction:column; gap:12px; }
.post-row { display:flex; align-items:flex-start; gap:16px; background:#fff; border:1px solid #eef1f5; border-radius:10px; padding:16px 18px; transition:all .15s; }
.post-row:hover { box-shadow:0 4px 16px rgba(30,58,138,.10); border-color:#c7d2fe; }
.post-row .site-logo { width:48px; height:48px; border-radius:10px; }
.post-main { flex:1; min-width:0; }
.post-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.post-title { font-size:17px; font-weight:600; color:#1e293b; }
.post-badge { font-size:12px; padding:2px 10px; border-radius:11px; }
.post-badge.st-0 { background:#fff7ed; color:#c2410c; border:1px solid #fed7aa; }
.post-badge.st-1 { background:#f0fdf4; color:#15803d; border:1px solid #bbf7d0; }
.post-badge.st-2 { background:#fef2f2; color:#b91c1c; border:1px solid #fecaca; }
.post-url { font-size:12.5px; margin-top:4px; }
.post-url a { color:#2563eb; word-break:break-all; }
.post-desc { font-size:14px; color:#64748b; margin-top:6px; line-height:1.7; }
.post-remark { font-size:13px; color:#b45309; background:#fffbeb; border-radius:6px; padding:5px 10px; margin-top:8px; display:inline-block; }
.post-time { font-size:12px; color:#94a3b8; margin-top:8px; }
@media (max-width:768px) { .post-row { padding:13px 14px; gap:12px; } }

/* ===== 列表页头部:标题 + 搜索框同排(搜索靠右) ===== */
.list-head { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:12px 0 1px; }
.list-head-title { font-size:24px; color:#1e3a8a; line-height:1.3; border-left:4px solid #f97316; padding-left:12px; }
.list-head-count { font-size:13px; color:#94a3b8; }
.list-search { margin-left:auto; display:flex; max-width:340px; width:100%; border-radius:9px; overflow:hidden; border:1px solid #e2e8f0; box-shadow:0 1px 5px rgba(30,58,138,.05); background:#fff; }
.list-search input { flex:1; min-width:0; padding:9px 14px; border:none; font-size:14px; outline:none; background:transparent; }
.list-search button { padding:9px 20px; border:none; background:#1e3a8a; color:#fff; font-size:14px; cursor:pointer; transition:background .15s; flex-shrink:0; }
.list-search button:hover { background:#f97316; }
.list-search:focus-within { border-color:#1e3a8a; box-shadow:0 0 0 3px rgba(30,58,138,.08); }

/* ===== 列表上下间距 1px:行间 1px 分隔线 ===== */
.page-title + .list-head, .list-head + .cate-tabs { margin-top:1px; }
.site-list { gap:1px; background:#eef1f5; border:1px solid #eef1f5; border-radius:2px; overflow:hidden; }
.site-list .site-row { border:none; border-radius:0; }
.site-list .empty { background:#fff; padding:24px 18px; margin:0; }
.list-head + .site-list, .cate-tabs + .site-list { margin-top:1px; }
.site-list + .pagination { margin-top:1px; }

@media (max-width:768px) {
    .list-head { align-items:flex-start; }
    .list-search { margin-left:0; max-width:100%; }
    .list-head-title { font-size:20px; }
}

/* ===== 分页 v2 ===== */
.pagination { margin: 22px 0 8px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.pg-nav { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; }
.pg-nums { display: inline-flex; align-items: center; gap: 6px; }

.pg-btn, .pg-num {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 38px; height: 38px; padding: 0 14px; border-radius: 9px;
    background: #fff; border: 1px solid #e2e8f0; font-size: 14px; color: #334155;
    transition: all .13s; white-space: nowrap;
}
.pg-btn:hover, .pg-num:hover { background: #eef2ff; border-color: #c7d2fe; color: #1e3a8a; transform: translateY(-1px); }
.pg-num { padding: 0; min-width: 38px; font-variant-numeric: tabular-nums; }
.pg-num.active {
    background: #1e3a8a; color: #fff; border-color: #1e3a8a; font-weight: 600;
    box-shadow: 0 2px 8px rgba(30,58,138,.28);
}
.pg-num.active:hover { transform: none; }
.pg-edge { font-size: 16px; padding: 0; min-width: 38px; }
.pg-btn.disabled { color: #cbd5e1; background: #f8fafc; border-color: #eef1f5; cursor: not-allowed; }
.pg-btn.disabled:hover { transform: none; background: #f8fafc; color: #cbd5e1; border-color: #eef1f5; }
.pg-dots { color: #94a3b8; padding: 0 2px; letter-spacing: 1px; }

/* 跳页 */
.pg-jump { display: inline-flex; align-items: center; gap: 6px; margin-left: 6px; font-size: 13px; color: #64748b; }
.pg-jump input {
    width: 58px; height: 38px; padding: 0 8px; border: 1px solid #e2e8f0; border-radius: 9px;
    text-align: center; font-size: 14px; outline: none; -moz-appearance: textfield;
}
.pg-jump input::-webkit-outer-spin-button, .pg-jump input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pg-jump input:focus { border-color: #1e3a8a; box-shadow: 0 0 0 3px rgba(30,58,138,.08); }
.pg-jump button {
    height: 38px; padding: 0 16px; border: none; border-radius: 9px; background: #1e3a8a; color: #fff;
    font-size: 13px; cursor: pointer; transition: background .15s;
}
.pg-jump button:hover { background: #f97316; }

.pg-info { margin: 0; text-align: center; color: #94a3b8; font-size: 13px; }
.pg-info b { color: #1e3a8a; font-size: 15px; }

@media (max-width: 768px) {
    .pg-btn, .pg-num, .pg-edge { min-width: 34px; height: 34px; padding: 0 10px; font-size: 13px; }
    .pg-num { padding: 0; min-width: 34px; }
    .pg-jump { display: none; }
}

/* ===== 详情页互动:打分/点赞/访问数/AI引用 ===== */
.stats-bar { display:flex; flex-wrap:wrap; gap:10px 22px; align-items:center; background:#f8fafc; border:1px solid #eef1f5; border-radius:10px; padding:11px 16px; margin:6px 0 14px; }
.stats-bar .stat { display:flex; align-items:center; gap:7px; }
.stat-label { font-size:12.5px; color:#94a3b8; }
.stat-val { font-size:17px; font-weight:700; color:#1e3a8a; font-variant-numeric:tabular-nums; }
.stat-sub { font-size:12px; color:#94a3b8; }
.stars { display:inline-flex; gap:1px; line-height:1; }
.stars .star { color:#e2e8f0; font-size:15px; font-style:normal; }
.stars .star.on { color:#f59e0b; }
.stars .star.half { color:#f59e0b; opacity:.5; }
.stars.small .star { font-size:13px; }

.like-btn { display:inline-flex; align-items:center; gap:5px; border:1px solid #e2e8f0; background:#fff; border-radius:16px; padding:3px 12px; font-size:14px; color:#475569; cursor:pointer; transition:all .15s; font-variant-numeric:tabular-nums; }
.like-btn:hover { border-color:#fca5a5; color:#dc2626; }
.like-btn.on { background:#fef2f2; border-color:#fca5a5; color:#dc2626; font-weight:600; }
.like-btn .ic { font-size:14px; filter:grayscale(1); }
.like-btn.on .ic { filter:none; }
.like-btn.pop { transform:scale(1.12); }

.copy-cite { border:1px dashed #c7d2fe; background:#fff; color:#1e3a8a; font-size:12px; border-radius:14px; padding:3px 11px; cursor:pointer; transition:all .15s; }
.copy-cite:hover { background:#eef2ff; }
.copy-cite.ok { background:#f0fdf4; border-color:#86efac; color:#15803d; }

.my-rate { display:flex; align-items:center; gap:8px; margin-bottom:14px; }
.my-rate-label { font-size:13px; color:#64748b; }
.rate-stars .star { font-size:22px; cursor:pointer; transition:transform .12s, color .12s; }
.rate-stars .star:hover { transform:scale(1.18); }

/* 评论 */
.comment-wrap { margin-top:22px; }
.c-count { font-size:13px; color:#94a3b8; font-weight:400; margin-left:6px; }
.comment-form { background:#fff; border-radius:12px; padding:18px 20px; box-shadow:0 1px 3px rgba(0,0,0,.05); margin-bottom:16px; }
.comment-form .cf-row { margin-bottom:10px; }
.comment-form input[type=text] { width:220px; max-width:100%; padding:9px 13px; border:1px solid #e2e8f0; border-radius:8px; font-size:14px; outline:none; }
.comment-form textarea { width:100%; padding:11px 13px; border:1px solid #e2e8f0; border-radius:8px; font-size:14px; line-height:1.7; resize:vertical; outline:none; font-family:inherit; }
.comment-form input:focus, .comment-form textarea:focus { border-color:#1e3a8a; box-shadow:0 0 0 3px rgba(30,58,138,.08); }
.cf-actions { margin-top:12px; }
.comment-list { display:flex; flex-direction:column; gap:1px; background:#eef1f5; border:1px solid #eef1f5; border-radius:10px; overflow:hidden; }
.comment-item { display:flex; gap:12px; background:#fff; padding:15px 18px; }
.c-avatar { width:38px; height:38px; flex-shrink:0; border-radius:50%; background:#1e3a8a; color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:600; }
.c-main { flex:1; min-width:0; }
.c-head { display:flex; align-items:baseline; gap:10px; }
.c-name { font-size:14px; font-weight:600; color:#1e293b; }
.c-time { font-size:12px; color:#94a3b8; }
.c-content { font-size:14.5px; color:#475569; line-height:1.8; margin-top:5px; word-break:break-word; }
@media (max-width:768px) { .stats-bar { gap:8px 16px; padding:10px 12px; } .stat-val { font-size:15px; } }

/* ===== 评论回复 ===== */
.c-ops { margin-top:7px; }
.c-reply-toggle { border:none; background:none; color:#64748b; font-size:13px; cursor:pointer; padding:0; }
.c-reply-toggle:hover { color:#1e3a8a; }
.c-reply-form { margin-top:10px; background:#f8fafc; border:1px solid #eef1f5; border-radius:9px; padding:12px 14px; }
.c-reply-form input[type=text] { width:180px; max-width:100%; padding:7px 11px; border:1px solid #e2e8f0; border-radius:7px; font-size:13px; margin-bottom:8px; outline:none; }
.c-reply-form textarea { width:100%; padding:9px 11px; border:1px solid #e2e8f0; border-radius:7px; font-size:13.5px; line-height:1.7; resize:vertical; outline:none; font-family:inherit; }
.c-reply-form input:focus, .c-reply-form textarea:focus { border-color:#1e3a8a; box-shadow:0 0 0 3px rgba(30,58,138,.08); }
.c-reply-form .cf-actions { display:flex; gap:10px; align-items:center; margin-top:9px; }
.btn-primary.sm { padding:6px 18px; font-size:13px; border-radius:7px; }
.c-cancel { border:none; background:none; color:#94a3b8; font-size:13px; cursor:pointer; }
.c-cancel:hover { color:#475569; }
.c-replies { margin-top:12px; border-left:2px solid #eef1f5; padding-left:14px; display:flex; flex-direction:column; gap:10px; }
.comment-item.is-reply { padding:0; background:transparent; }
.c-avatar.sm { width:30px; height:30px; font-size:13px; }
.c-reply-to { font-size:12px; color:#2563eb; background:#eef2ff; border-radius:8px; padding:1px 7px; }
.c-thread { background:#fff; padding:15px 18px; }
.comment-list .c-thread:not(:last-child) { border-bottom:1px solid #eef1f5; }

/* 马甲头像(图片头像,与首字头像同尺寸) */
img.c-avatar { object-fit: cover; background: #e5e7eb; display: block; }
img.c-avatar.sm { width: 30px; height: 30px; }

/* ===== 近 12 个月访问量图表 ===== */
.mv-wrap { margin-top: 22px; }
.mv-card { background:#fff; border-radius:12px; padding:16px 18px 12px; box-shadow:0 1px 3px rgba(0,0,0,.05); }
.mv-chart { width:100%; height:auto; display:block; overflow:visible; }
.mv-grid { stroke:#eef1f5; stroke-width:1; stroke-dasharray:3 4; }
.mv-ylab { font-size:11px; fill:#94a3b8; }
.mv-xlab { font-size:11px; fill:#64748b; }
.mv-bar { fill:url(#mvGrad); }
.mv-chart .mv-bar { fill:#c7d2fe; transition:fill .15s; }
.mv-chart .mv-bar:hover { fill:#1e3a8a; }
.mv-line { fill:none; stroke:#f97316; stroke-width:2.5; stroke-linejoin:round; stroke-linecap:round; }
.mv-dot { fill:#fff; stroke:#f97316; stroke-width:2; }
.mv-dot:hover { fill:#f97316; }
.mv-legend { display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-top:8px; padding-left:4px; font-size:12.5px; color:#64748b; }
.mv-legend i { display:inline-block; vertical-align:middle; margin-right:5px; }
.lg-bar { width:12px; height:12px; border-radius:3px; background:#c7d2fe; }
.lg-line { width:16px; height:2.5px; background:#f97316; border-radius:2px; }
.mv-total { margin-left:auto; }
.mv-total b { color:#1e3a8a; font-size:14px; }
@media (max-width:768px) { .mv-card { padding:12px 10px 10px; } .mv-total { margin-left:0; } }

/* ===== 评论卡片 v3(头像 + 卡片 + 加载更多) ===== */
.cm-list { display:flex; flex-direction:column; gap:10px; }
.cm-item { display:flex; gap:12px; background:#fff; border:1px solid #eef1f5; border-radius:12px; padding:15px 17px; transition:box-shadow .15s, border-color .15s; }
.cm-item:hover { box-shadow:0 4px 16px rgba(30,58,138,.07); border-color:#dbe4f5; }
.cm-avatar { flex-shrink:0; width:44px; height:44px; border-radius:50%; overflow:hidden; background:#eef2ff; }
.cm-avatar .av { display:block; width:100%; height:100%; object-fit:cover; }
.cm-body { flex:1; min-width:0; }
.cm-top { display:flex; align-items:baseline; gap:9px; flex-wrap:wrap; }
.cm-name { font-size:14.5px; font-weight:600; color:#1e293b; }
.cm-time { font-size:12px; color:#a3aec2; }
.cm-text { font-size:14.5px; color:#475569; line-height:1.8; margin-top:6px; word-break:break-word; }
.cm-ops { margin-top:9px; display:flex; align-items:center; gap:14px; }
.cm-reply-toggle { border:none; background:none; color:#7c8aa5; font-size:13px; cursor:pointer; padding:0; transition:color .15s; }
.cm-reply-toggle:hover { color:#1e3a8a; }
.cm-reply-toggle::before { content:"↩ "; }
.cm-reply-count { font-size:12.5px; color:#b3bccd; }

.cm-reply-form { margin-top:11px; background:#f8fafc; border:1px solid #eef1f5; border-radius:10px; padding:12px 13px; }
.cm-reply-form input[type=text] { width:190px; max-width:100%; padding:8px 11px; border:1px solid #e2e8f0; border-radius:8px; font-size:13px; margin-bottom:8px; outline:none; }
.cm-reply-form textarea { width:100%; padding:9px 11px; border:1px solid #e2e8f0; border-radius:8px; font-size:13.5px; line-height:1.7; resize:vertical; outline:none; font-family:inherit; }
.cm-reply-form input:focus, .cm-reply-form textarea:focus { border-color:#1e3a8a; box-shadow:0 0 0 3px rgba(30,58,138,.08); }
.cm-reply-actions { display:flex; align-items:center; gap:10px; margin-top:9px; }
.cm-cancel { border:none; background:none; color:#a3aec2; font-size:13px; cursor:pointer; }
.cm-cancel:hover { color:#475569; }

.cm-replies { margin-top:11px; padding-left:14px; border-left:2px solid #eef1f5; display:flex; flex-direction:column; gap:9px; }
.cm-item.is-reply { padding:0; border:none; background:transparent; gap:10px; border-radius:0; }
.cm-item.is-reply:hover { box-shadow:none; }
.cm-item.is-reply .cm-avatar { width:34px; height:34px; }
.cm-item.is-reply .cm-text { font-size:14px; margin-top:4px; }
.cm-reply-to { font-size:12px; color:#2563eb; background:#eef2ff; border-radius:8px; padding:1px 7px; }

.cm-more-wrap { text-align:center; margin-top:14px; }
.cm-more { border:1px solid #dbe4f5; background:#fff; color:#1e3a8a; font-size:14px; padding:10px 30px; border-radius:22px; cursor:pointer; transition:all .15s; }
.cm-more:hover { background:#1e3a8a; border-color:#1e3a8a; color:#fff; }
.cm-more.loading { color:#94a3b8; cursor:default; }
.cm-done { font-size:12.5px; color:#b3bccd; margin:0; }
@media (max-width:768px) {
  .cm-item { padding:13px 13px; gap:10px; }
  .cm-avatar { width:38px; height:38px; }
  .cm-text { font-size:14px; }
}

/* 详情页标签:靠右对齐 + 可点击跳转标签页 */
.detail-tags { justify-content: flex-end; }
.detail-tags .tag { text-decoration: none; cursor: pointer; transition: background .15s, color .15s; }
.detail-tags .tag:hover { background: #fde68a; color: #92400e; }

/* 标签页 /tag/{tag} */
.tag-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.tag-count { color: #6b7280; font-size: 14px; }
.tag-related { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 14px 0 18px; }
.tag-related-label { color: #6b7280; font-size: 14px; }
.tag-related .tag { text-decoration: none; }
.tag-related .tag:hover { background: #fde68a; color: #92400e; }
