/* =========================================================
   萌口组 kou.moe · 前端样式（ACG 活泼元气风）
   ========================================================= */
:root {
    --pink: #ff7eb3;
    --pink-deep: #ff5fa2;
    --cyan: #6ee7ff;
    --purple: #b388ff;
    --yellow: #ffd86b;
    --bg: #fff5fb;
    --bg-soft: #ffffff;
    --surface: #ffffff;
    --surface-2: #fff0f7;
    --text: #3a2b3d;
    --text-soft: #8a7a8e;
    --muted: #b3a6b8;
    --line: #ffe0ee;
    --shadow: 0 8px 24px rgba(255, 126, 179, .14);
    --shadow-lg: 0 14px 40px rgba(179, 136, 255, .20);
    --radius: 18px;
    --radius-sm: 12px;
    --maxw: 1180px;
}
[data-theme="dark"] {
    --bg: #1a1325;
    --bg-soft: #241a33;
    --surface: #271d39;
    --surface-2: #2e2245;
    --text: #f3e9fb;
    --text-soft: #c2b0d4;
    --muted: #8c7aa3;
    --line: #3a2c52;
    --shadow: 0 8px 24px rgba(0, 0, 0, .4);
    --shadow-lg: 0 14px 40px rgba(0, 0, 0, .5);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;
    background:
        radial-gradient(1200px 600px at 80% -10%, rgba(110, 231, 255, .25), transparent 60%),
        radial-gradient(1000px 500px at -10% 10%, rgba(255, 126, 179, .22), transparent 55%),
        var(--bg);
    color: var(--text);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}
a { color: var(--pink-deep); text-decoration: none; transition: color .2s; }
a:hover { color: var(--purple); }
img { max-width: 100%; }
.container { max-width: var(--maxw); margin: 0 auto; padding: 0 16px; }
.muted { color: var(--muted); }
hr.moe-hr, .moe-hr { border: none; border-top: 2px dashed var(--line); margin: 18px 0; }

/* ===== 顶栏 ===== */
.moe-header {
    position: sticky; top: 0; z-index: 50;
    background: rgba(255, 255, 255, .78);
    backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid var(--line);
}
[data-theme="dark"] .moe-header { background: rgba(26, 19, 37, .82); }
.moe-header-inner { display: flex; align-items: center; gap: 18px; height: 64px; }
.moe-brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.moe-logo {
    width: 40px; height: 40px; border-radius: 12px;
    object-fit: contain;
    box-shadow: var(--shadow);
    animation: moe-bounce 3s ease-in-out infinite;
    transition: transform .2s;
}
.moe-logo:hover { transform: scale(1.1) rotate(-3deg); }
@keyframes moe-bounce { 0%,100% { transform: translateY(0) rotate(-4deg); } 50% { transform: translateY(-4px) rotate(4deg); } }
.moe-brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.moe-brand-text b { font-size: 19px; letter-spacing: .5px;
    background: linear-gradient(90deg, var(--pink-deep), var(--purple)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.moe-brand-text i { font-style: normal; font-size: 11px; color: var(--text-soft); }
.moe-nav-wrap { display: flex; align-items: center; gap: 14px; margin-left: auto; }
.nav-list { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; }
.nav-list .list-item { position: relative; }
.nav-link {
    display: inline-block; padding: 8px 14px; border-radius: 999px; font-weight: 600; color: var(--text);
    font-size: 15px;
}
.nav-link:hover { background: var(--surface-2); color: var(--pink-deep); }
.nav-link[aria-current="page"] { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; }
.has-menu > .dropdown-menus {
    position: absolute; top: 110%; left: 0; min-width: 180px;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm);
    box-shadow: var(--shadow-lg); padding: 8px; opacity: 0; visibility: hidden; transform: translateY(8px); transition: .2s; z-index: 60;
}
.has-menu:hover > .dropdown-menus { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown-menus li { list-style: none; }
.dropdown-menus .nav-link { display: block; border-radius: 10px; }
.dropdown-sub { list-style: none; margin: 0; padding-left: 12px; }
.dropdown-sub a { font-size: 13px; color: var(--text-soft); }
.user-menu .header-avatar { width: 26px; height: 26px; border-radius: 50%; vertical-align: middle; margin-right: 6px; border: 2px solid var(--pink); }
.user-dropdown { right: 0; left: auto; }
.moe-nav-search input {
    border: 1px solid var(--line); background: var(--surface-2); border-radius: 999px;
    padding: 7px 14px; width: 160px; color: var(--text); outline: none;
}
.moe-nav-search input:focus { border-color: var(--pink); }
.moe-menu-toggle { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 8px; }
.moe-menu-toggle span { width: 24px; height: 2.5px; background: var(--text); border-radius: 2px; }

/* ===== 主区域 ===== */
.moe-main { padding: 22px 16px 50px; }
.moe-layout { display: grid; grid-template-columns: 1fr 320px; gap: 26px; align-items: start; }
.moe-col-main { min-width: 0; }
.moe-block { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 18px; margin-bottom: 22px; }
.moe-block-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.moe-block-head h3 { margin: 0; font-size: 18px; position: relative; padding-left: 14px; }
.moe-block-head h3::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 6px; height: 20px; border-radius: 4px; background: linear-gradient(var(--pink), var(--purple)); }
.moe-more { font-size: 13px; color: var(--text-soft); }
.moe-sub { color: var(--muted); font-size: 13px; }

/* ===== 轮播 ===== */
.moe-hero { position: relative; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-lg); margin-bottom: 18px; }
.moe-hero-track { display: flex; transition: transform .5s ease; }
.moe-hero-slide { position: relative; flex: 0 0 100%; min-height: 340px; background-size: cover; background-position: center; display: flex; align-items: flex-end; }
.moe-hero-mask { position: absolute; inset: 0; background: linear-gradient(to top, rgba(26,19,37,.78), transparent 60%); }
.moe-hero-cap { position: relative; padding: 28px; color: #fff; }
.moe-hero-tag { display: inline-block; background: var(--pink-deep); padding: 3px 10px; border-radius: 999px; font-size: 12px; margin-bottom: 8px; }
.moe-hero-cap h2 { margin: 0; font-size: 26px; text-shadow: 0 2px 12px rgba(0,0,0,.4); }
.moe-hero-arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 42px; height: 42px; border-radius: 50%; border: none; background: rgba(255,255,255,.85); color: #333; font-size: 24px; cursor: pointer; box-shadow: var(--shadow); opacity: .7; transition: .2s; }
.moe-hero-arrow:hover { opacity: 1; }
.moe-hero-prev { left: 12px; } .moe-hero-next { right: 12px; }
.moe-hero-dots { position: absolute; bottom: 14px; right: 20px; display: flex; gap: 8px; }
.moe-hero-dots i { width: 10px; height: 10px; border-radius: 50%; background: rgba(255,255,255,.5); cursor: pointer; transition: .2s; }
.moe-hero-dots i.active { background: #fff; width: 26px; border-radius: 6px; }

/* ===== 广告位 ===== */
.moe-ad { display: flex; align-items: center; gap: 12px; background: linear-gradient(100deg, var(--surface-2), var(--surface)); border: 1px dashed var(--pink); border-radius: var(--radius-sm); padding: 10px 16px; margin-bottom: 22px; }
.moe-ad-badge { flex-shrink: 0; background: var(--purple); color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 6px; }
.moe-ad-text { color: var(--text-soft); font-size: 14px; }

/* ===== 热门话题 ===== */
.moe-topics-list { display: flex; flex-wrap: wrap; gap: 10px; }
.moe-topic { background: var(--surface-2); border: 1px solid var(--line); color: var(--text); padding: 6px 14px; border-radius: 999px; font-size: 14px; transition: .2s; }
.moe-topic:hover { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; transform: translateY(-2px); }

/* ===== 热门文章卡片 ===== */
.moe-hot-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.moe-hot-card { background: var(--surface-2); border-radius: var(--radius-sm); overflow: hidden; transition: .2s; border: 1px solid var(--line); }
.moe-hot-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.moe-hot-cover { height: 120px; background: linear-gradient(135deg, var(--cyan), var(--purple)); background-size: cover; background-position: center; position: relative; }
.moe-hot-rank { position: absolute; top: 8px; left: 8px; font-size: 18px; filter: drop-shadow(0 2px 3px rgba(0,0,0,.3)); }
.moe-hot-title { padding: 10px; font-size: 14px; font-weight: 600; line-height: 1.4; height: 56px; overflow: hidden; }

/* ===== 文章卡片 ===== */
.moe-post { display: flex; gap: 16px; padding: 16px; border-bottom: 1px dashed var(--line); }
.moe-post:last-child { border-bottom: none; }
.moe-post-cover { flex: 0 0 200px; height: 130px; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--pink), var(--purple)); background-size: cover; background-position: center; transition: .3s; }
.moe-post-cover:hover { transform: scale(1.02); }
.moe-post-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.moe-post-title { margin: 0 0 6px; font-size: 19px; line-height: 1.4; }
.moe-post-title a { color: var(--text); }
.moe-post-title a:hover { color: var(--pink-deep); }
.moe-post-excerpt { color: var(--text-soft); font-size: 14px; margin: 0 0 auto; }
.moe-post-meta { display: flex; flex-wrap: wrap; gap: 14px; font-size: 12.5px; color: var(--muted); margin-top: 8px; }
.log-topflg { background: var(--yellow); color: #6b4b00; font-size: 12px; padding: 1px 8px; border-radius: 6px; margin-left: 6px; }
.loglist-sort a { font-size: 12px; background: var(--surface-2); border: 1px solid var(--line); padding: 1px 8px; border-radius: 6px; color: var(--text-soft); margin-left: 6px; }

/* ===== 侧栏 ===== */
.moe-col-side { display: flex; flex-direction: column; gap: 18px; position: sticky; top: 80px; }
.moe-widget { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px; }
.moe-widget .widget-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; border-left: 4px solid var(--pink); padding-left: 10px; }
.moe-widget .widget-title h3 { margin: 0; font-size: 16px; }
.widget-more { font-size: 12px; color: var(--text-soft); }
.unstyle-li { list-style: none; margin: 0; padding: 0; }
.tag-container { display: flex; flex-wrap: wrap; gap: 8px; }
.tags-side { background: var(--surface-2); border: 1px solid var(--line); color: var(--text-soft); padding: 3px 10px; border-radius: 999px; font-size: 13px !important; }
.tags-side:hover { background: var(--pink); color: #fff; }
.sort-list li { padding: 6px 0; border-bottom: 1px dashed var(--line); }
.sort-list a { color: var(--text); font-weight: 500; }
.sort-num { color: var(--muted); font-size: 12px; }
.sort-children { padding-left: 14px; }
.sort-children a { color: var(--text-soft); font-size: 13px; }
.side-comment-list li, .side-twitter-item { padding: 10px 0; border-bottom: 1px dashed var(--line); font-size: 13.5px; }
.comment-info_img, .side-twitter-item img { width: 30px; height: 30px; border-radius: 50%; vertical-align: middle; margin-right: 8px; border: 2px solid var(--line); }
.comm-lates-name { font-weight: 600; color: var(--pink-deep); }
.logcom-latest-time { color: var(--muted); font-size: 12px; margin-left: 6px; }
.side-twitter-content { margin-top: 4px; color: var(--text-soft); }
.hot-item { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--line); }
.hot-rank { flex: 0 0 22px; height: 22px; border-radius: 6px; background: var(--surface-2); color: var(--pink-deep); font-weight: 700; display: grid; place-items: center; font-size: 13px; }
.hot-item:nth-child(1) .hot-rank { background: var(--pink-deep); color: #fff; }
.hot-item:nth-child(2) .hot-rank { background: var(--purple); color: #fff; }
.hot-item:nth-child(3) .hot-rank { background: var(--cyan); color: #333; }
.link-item { padding: 6px 0; border-bottom: 1px dashed var(--line); display: flex; align-items: center; gap: 8px; }
.moe-search { display: flex; gap: 8px; }
.search-input { flex: 1; border: 1px solid var(--line); border-radius: 999px; padding: 8px 14px; background: var(--surface-2); color: var(--text); outline: none; }
.search-btn { border: none; background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; border-radius: 999px; padding: 0 16px; cursor: pointer; }
.archive-select { width: 100%; padding: 8px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface-2); color: var(--text); }
.announce-item { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: 14px; }
.announce-item .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--pink-deep); flex-shrink: 0; }
.bbs-list li { padding: 7px 0; border-bottom: 1px dashed var(--line); display: flex; justify-content: space-between; gap: 8px; font-size: 13.5px; }
.bbs-list a { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bbs-meta { color: var(--muted); font-size: 11.5px; flex-shrink: 0; }
.author-rank li { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--line); }
.author-rank-no { width: 22px; height: 22px; border-radius: 6px; background: var(--surface-2); display: grid; place-items: center; font-weight: 700; font-size: 13px; color: var(--text-soft); }
.author-rank-no.rank-1 { background: var(--pink-deep); color: #fff; }
.author-rank-no.rank-2 { background: var(--purple); color: #fff; }
.author-rank-no.rank-3 { background: var(--cyan); color: #333; }
.author-avatar { width: 30px; height: 30px; border-radius: 50%; border: 2px solid var(--line); }
.author-name { font-weight: 600; color: var(--text); }
.author-cnt { margin-left: auto; color: var(--muted); font-size: 12px; }

/* ===== 分类：音乐 CD ===== */
.moe-cd-grid, .moe-movie-grid, .moe-fig-grid { display: grid; gap: 18px; }
.moe-cd-grid { grid-template-columns: repeat(4, 1fr); }
.moe-cd { text-align: center; }
.moe-cd-disc { width: 100%; aspect-ratio: 1; border-radius: 50%; background: linear-gradient(135deg, var(--purple), var(--pink)); background-size: cover; background-position: center; box-shadow: var(--shadow-lg); position: relative; margin-bottom: 10px; transition: .3s; }
.moe-cd-disc::after { content: ""; position: absolute; inset: 0; border-radius: 50%; box-shadow: inset 0 0 0 2px rgba(255,255,255,.25); }
.moe-cd:hover .moe-cd-disc { transform: rotate(20deg) scale(1.04); }
.moe-cd-hole { position: absolute; top: 50%; left: 50%; width: 26%; height: 26%; transform: translate(-50%,-50%); border-radius: 50%; background: var(--surface); border: 3px solid rgba(0,0,0,.06); }
.moe-cd-title { font-weight: 600; font-size: 14px; line-height: 1.3; }
.moe-cd-user { color: var(--muted); font-size: 12px; margin-top: 2px; }

/* ===== 分类：影视剧 ===== */
.moe-movie-grid { grid-template-columns: repeat(5, 1fr); }
.moe-movie-poster { aspect-ratio: 2/3; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--cyan), var(--purple)); background-size: cover; background-position: center; position: relative; overflow: hidden; box-shadow: var(--shadow); transition: .3s; }
.moe-movie:hover .moe-movie-poster { transform: translateY(-4px); }
.moe-movie-play { position: absolute; inset: 0; display: grid; place-items: center; font-size: 30px; color: #fff; background: rgba(0,0,0,.25); opacity: 0; transition: .2s; }
.moe-movie:hover .moe-movie-play { opacity: 1; }
.moe-movie-title { font-size: 13.5px; font-weight: 600; margin-top: 8px; line-height: 1.3; height: 36px; overflow: hidden; }

/* ===== 分类：手办模型 ===== */
.moe-fig-grid { grid-template-columns: repeat(4, 1fr); }
.moe-fig-tabs { display: flex; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.moe-fig-tab { background: var(--surface-2); border: 1px solid var(--line); padding: 6px 16px; border-radius: 999px; font-size: 14px; color: var(--text); }
.moe-fig-tab:hover { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; }
.moe-fig-img { aspect-ratio: 3/4; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--pink), var(--purple)); background-size: cover; background-position: center; box-shadow: var(--shadow); transition: .3s; }
.moe-fig:hover .moe-fig-img { transform: translateY(-4px) rotate(-1deg); }
.moe-fig-title { font-size: 14px; font-weight: 600; margin-top: 8px; line-height: 1.3; height: 38px; overflow: hidden; }
.moe-fig-meta { color: var(--muted); font-size: 12px; margin-top: 4px; }

/* ===== 分类：技术研究 ===== */
.moe-tech-list { list-style: none; margin: 0; padding: 0; }
.moe-tech-item { display: flex; gap: 16px; padding: 16px; border-bottom: 1px dashed var(--line); }
.moe-tech-thumb { flex: 0 0 150px; height: 100px; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--cyan), var(--purple)); background-size: cover; background-position: center; }
.moe-tech-body { flex: 1; min-width: 0; }
.moe-tech-body h4 { margin: 0 0 6px; font-size: 17px; }
.moe-tech-body h4 a { color: var(--text); }
.moe-tech-ex { color: var(--text-soft); font-size: 14px; margin: 0 0 8px; }

/* ===== 分类：日常 ===== */
.moe-daily-feed { display: flex; flex-direction: column; gap: 14px; }
.moe-daily { display: flex; gap: 16px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow); }
.moe-daily-date { flex: 0 0 56px; text-align: center; border-right: 2px dashed var(--line); padding-right: 12px; }
.moe-daily-date b { display: block; font-size: 20px; color: var(--pink-deep); }
.moe-daily-date span { font-size: 12px; color: var(--muted); }
.moe-daily-main { display: flex; gap: 14px; flex: 1; min-width: 0; }
.moe-daily-cover { flex: 0 0 120px; height: 90px; border-radius: var(--radius-sm); background: linear-gradient(135deg, var(--yellow), var(--pink)); background-size: cover; background-position: center; }
.moe-daily-text { flex: 1; min-width: 0; }
.moe-daily-text h4 { margin: 0 0 6px; font-size: 16px; }
.moe-daily-text h4 a { color: var(--text); }
.moe-daily-text p { margin: 0 0 8px; color: var(--text-soft); font-size: 13.5px; }

/* ===== 面包屑 ===== */
.moe-crumb { font-size: 13px; color: var(--muted); margin: 4px 0 16px; }
.moe-crumb a { color: var(--text-soft); }

/* ===== 文章页 ===== */
.moe-article { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 28px; margin-bottom: 22px; }
.moe-article-title { margin: 0 0 10px; font-size: 28px; line-height: 1.35; }
.moe-article-meta { display: flex; flex-wrap: wrap; gap: 16px; color: var(--muted); font-size: 13.5px; }
.moe-article-meta a { color: var(--pink-deep); }
.edit-link { color: var(--text-soft) !important; font-size: 13px; }
.moe-article-content { font-size: 16px; line-height: 1.9; }
.moe-article-content img { border-radius: var(--radius-sm); margin: 12px 0; max-width: 100%; }
.moe-article-content pre { background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; overflow: auto; }
.moe-article-tags .tags { display: inline-block; background: var(--surface-2); border: 1px solid var(--line); padding: 2px 10px; border-radius: 999px; margin: 0 6px 6px 0; font-size: 13px; color: var(--text-soft); }
.moe-neighbor { display: flex; justify-content: space-between; gap: 12px; margin: 20px 0; flex-wrap: wrap; }
.neighbor-link { flex: 1; min-width: 200px; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px 14px; color: var(--text); }
.neighbor-link:hover { border-color: var(--pink); }
.neighbor-dir { display: block; font-size: 12px; color: var(--muted); }
.neighbor-title { font-weight: 600; }
.moe-article-content blockquote { border-left: 4px solid var(--pink); background: var(--surface-2); margin: 14px 0; padding: 10px 16px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; color: var(--text-soft); }

/* 评论 */
.comment-header { font-weight: 700; margin: 18px 0 10px; }
.comment { display: flex; gap: 12px; padding: 14px 0; border-top: 1px dashed var(--line); }
.comment .avatar img { width: 42px; height: 42px; border-radius: 50%; border: 2px solid var(--line); }
.comment-infos { flex: 1; }
.comment-content { background: var(--surface-2); border-radius: var(--radius-sm); padding: 10px 14px; margin-top: 6px; }
.comment-time { color: var(--muted); font-size: 12.5px; margin-left: 8px; }
.com-reply { background: none; border: none; color: var(--pink-deep); cursor: pointer; font-size: 13px; }
.comment-children { margin-left: 54px; }
.commentform { margin-top: 16px; }
.log_comment { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; background: var(--surface-2); color: var(--text); resize: vertical; }
.comment-info { display: flex; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.com_control { border: 1px solid var(--line); border-radius: 999px; padding: 8px 14px; background: var(--surface-2); color: var(--text); flex: 1; min-width: 160px; }
.btn { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; border: none; border-radius: 999px; padding: 9px 22px; cursor: pointer; font-weight: 600; transition: .2s; }
.btn:hover { filter: brightness(1.05); transform: translateY(-1px); }
.cancel-reply { background: var(--surface-2); color: var(--text-soft); }

/* ===== 分页 ===== */
.moe-pagination, .pagination { text-align: center; margin: 20px 0; }
.moe-pagination a, .pagination a, .moe-pagination span, .pagination span { display: inline-block; min-width: 34px; padding: 7px 12px; margin: 0 3px; border-radius: 10px; background: var(--surface); border: 1px solid var(--line); color: var(--text); }
.moe-pagination a:hover, .pagination a:hover { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; }

/* ===== 页脚 ===== */
.moe-footer { background: var(--surface); border-top: 1px solid var(--line); margin-top: 30px; padding: 30px 0 24px; }
.moe-footer-inner { display: grid; grid-template-columns: 1.4fr 1fr 1.2fr; gap: 24px; }
.moe-footer h4 { margin: 0 0 10px; font-size: 16px; }
.moe-footer p { margin: 4px 0; font-size: 14px; }
.moe-footer-copy { text-align: right; }

/* ===== 侧边工具 ===== */
.moe-side-toolbar { position: fixed; right: 18px; bottom: 24px; display: flex; flex-direction: column; gap: 10px; z-index: 40; }
.moe-side-btn { width: 44px; height: 44px; border-radius: 14px; border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); display: grid; place-items: center; font-size: 20px; color: var(--pink-deep); cursor: pointer; transition: .2s; }
.moe-side-btn:hover { background: linear-gradient(135deg, var(--pink), var(--purple)); color: #fff; transform: translateY(-2px); }

/* ===== 登录弹窗 ===== */
.moe-auth-mask { position: fixed; inset: 0; background: rgba(26,19,37,.5); backdrop-filter: blur(3px); z-index: 90; }
.moe-auth { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 360px; max-width: 92vw; background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow-lg); z-index: 100; padding: 24px; border: 1px solid var(--line); }
.moe-auth-close { position: absolute; top: 12px; right: 14px; background: none; border: none; font-size: 24px; color: var(--text-soft); cursor: pointer; }
.moe-auth-head h3 { margin: 0 0 14px; text-align: center; font-size: 20px; }
.moe-auth-panel input { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 11px 14px; margin-bottom: 12px; background: var(--surface-2); color: var(--text); outline: none; }
.moe-auth-panel input:focus { border-color: var(--pink); }
.moe-auth-cap { display: flex; gap: 8px; align-items: center; }
.moe-auth-cap input { flex: 1; margin-bottom: 12px; }
.moe-auth-cap img { height: 40px; border-radius: 8px; cursor: pointer; }
.moe-auth-ck { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-soft); margin-bottom: 12px; }
.moe-auth-submit { width: 100%; }
.moe-auth-inline { flex-shrink: 0; padding: 0 14px; height: 40px; }
.moe-auth-switch { text-align: center; margin-top: 12px; font-size: 13.5px; }
.moe-auth-switch a { color: var(--pink-deep); margin: 0 6px; }
.moe-auth-alert { color: #e5484d; font-size: 13px; text-align: center; min-height: 18px; margin-bottom: 8px; }

/* ===== 404 ===== */
.moe-404 { text-align: center; padding: 80px 20px; }
.moe-404-emoji { font-size: 56px; }
.moe-404 h1 { font-size: 64px; margin: 10px 0; background: linear-gradient(135deg, var(--pink), var(--purple)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.moe-404-btn { display: inline-block; margin-top: 16px; }

/* ===== 响应式 ===== */
@media (max-width: 980px) {
    .moe-layout { grid-template-columns: 1fr; }
    .moe-col-side { position: static; }
    .moe-hot-grid { grid-template-columns: repeat(2, 1fr); }
    .moe-cd-grid, .moe-fig-grid { grid-template-columns: repeat(2, 1fr); }
    .moe-movie-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 720px) {
    .moe-menu-toggle { display: flex; }
    .moe-nav-wrap { position: absolute; top: 64px; left: 0; right: 0; flex-direction: column; align-items: stretch; background: var(--surface); border-bottom: 1px solid var(--line); padding: 12px 16px; gap: 10px; display: none; box-shadow: var(--shadow); }
    .moe-nav-wrap.open { display: flex; }
    .nav-list { flex-direction: column; align-items: stretch; gap: 2px; }
    .nav-link { display: block; }
    .has-menu > .dropdown-menus { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: none; padding-left: 14px; }
    .moe-nav-search input { width: 100%; }
    .moe-post { flex-direction: column; }
    .moe-post-cover { flex: none; width: 100%; height: 180px; }
    .moe-footer-inner { grid-template-columns: 1fr; }
    .moe-footer-copy { text-align: left; }
    .moe-hero-slide { min-height: 220px; }
    .moe-hero-cap h2 { font-size: 20px; }
    .moe-cd-grid, .moe-fig-grid, .moe-movie-grid { grid-template-columns: repeat(2, 1fr); }
    .moe-daily-main { flex-direction: column; }
    .moe-daily-cover { flex: none; width: 100%; height: 160px; }
    .moe-tech-item { flex-direction: column; }
    .moe-tech-thumb { flex: none; width: 100%; height: 160px; }
}
@media (max-width: 460px) {
    .moe-hot-grid, .moe-cd-grid, .moe-fig-grid, .moe-movie-grid { grid-template-columns: 1fr; }
}
