/* avatar_mirror */
.avatar-mirror-settings{max-width:none}.avatar-mirror-box{display:grid;gap:10px}.avatar-mirror-box textarea{min-height:150px;font-family:var(--font-mono);font-size:var(--font-size-sm)}.avatar-mirror-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.avatar-mirror-status{color:var(--text-muted);font-size:var(--font-size-sm)}.avatar-mirror-status:empty{display:none}@media(max-width:600px){.avatar-mirror-actions{align-items:stretch;flex-direction:column}.avatar-mirror-actions button{width:100%}}
/* back_to_top */
.back-to-top-button{position:fixed;right:max(20px,calc((100vw - 1100px)/2 - 48px));bottom:calc(20px + env(safe-area-inset-bottom));z-index:30;display:grid;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--text-muted);box-shadow:0 4px 14px var(--shadow-medium);transition:background var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal),transform var(--transition-normal)}.back-to-top-button:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.back-to-top-button:focus-visible{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus-ring)}.back-to-top-button:active{transform:translateY(1px)}.back-to-top-button[hidden]{display:none}body:has([data-back-to-top-layout][data-top-fixed="1"]) .top{position:sticky;top:0;z-index:35;box-shadow:0 3px 10px var(--shadow-base)}@media(min-width:721px){body:has([data-back-to-top-layout][data-sidebar-fixed="1"]) .sidebar{position:sticky;top:12px}body:has([data-back-to-top-layout][data-top-fixed="1"][data-sidebar-fixed="1"]) .sidebar{top:60px}html.back-to-top-sidebar-tall body:has([data-back-to-top-layout][data-sidebar-fixed="1"]) .sidebar{position:static;top:auto}}@media(max-width:720px){.back-to-top-button{right:12px;bottom:calc(12px + env(safe-area-inset-bottom))}}
/* dev_docs */
/* ===== 开发者文档：统一为「页首 + 文档卡」结构，与站内其它插件页同一语言 ===== */
.dev-docs-page{display:grid;gap:14px;min-width:0}
.dev-docs-page>*{min-width:0;max-width:100%}
.dev-docs-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;min-width:0}
.dev-docs-head-main{min-width:0}
.dev-docs-head h1{margin:0;font-size:var(--font-size-xl);font-weight:700;letter-spacing:-.01em;color:var(--text)}
.dev-docs-head p{margin:4px 0 0;font-size:var(--font-size-sm);color:var(--text-muted);line-height:1.5}
.dev-docs-head-count{flex:0 0 auto;font-size:var(--font-size-xs);color:var(--text-subtle)}

/* 文档卡：白底 14px 圆角，内文限宽保证可读性 */
.dev-docs-doc{min-width:0;padding:20px 22px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.dev-docs-doc>*{max-width:760px}
.dev-docs-doc>.markdown-table-wrap,.dev-docs-doc>.dev-docs-code{max-width:100%}

/* ===== 移动端目录：药丸托盘（与全站 tab-bar 同源） ===== */
.dev-docs-toc{display:none}

/* ===== 侧栏目录 ===== */
.dev-docs-sidebar-card{position:sticky;top:12px}
.dev-docs-sidebar-nav{display:grid;gap:1px;margin-top:10px;max-height:calc(100vh - 140px);overflow-y:auto;scrollbar-width:thin}
.dev-docs-sidebar-link{display:block;padding:7px 10px;border-radius:8px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.4;text-decoration:none;transition:background .15s ease,color .15s ease}
.dev-docs-sidebar-link:hover{background:var(--brand-soft);color:var(--brand)}

/* ===== 正文排版 ===== */
.dev-docs-doc h1,.dev-docs-doc h2,.dev-docs-doc h3,.dev-docs-doc h4{color:var(--text);line-height:1.4}
/* 首个小标题（markdown 的一级标题）作为文档标题，与页首去重后弱化显示 */
.dev-docs-doc>h1:first-child{margin:0 0 14px;padding-bottom:12px;border-bottom:1px solid var(--line);font-size:var(--font-size-lg);font-weight:700}
.dev-docs-doc h2{margin:26px 0 10px;font-size:var(--font-size-lg);font-weight:700}
.dev-docs-doc h3{margin:18px 0 8px;font-size:var(--font-size-md);font-weight:700}
.dev-docs-doc h4{margin:14px 0 6px;font-size:var(--font-size-md);font-weight:600;color:var(--text-muted)}
/* 章节锚点：为固定顶栏预留滚动余量 */
.dev-docs-doc h2[id]{scroll-margin-top:76px}
.dev-docs-doc h2+h3{margin-top:10px}
.dev-docs-doc p{margin:10px 0;font-size:var(--font-size-md);line-height:1.8;color:var(--text);overflow-wrap:anywhere}
.dev-docs-doc a{color:var(--brand);text-decoration:none;border-bottom:1px solid var(--brand-soft)}
.dev-docs-doc a:hover{border-bottom-color:var(--brand)}
.dev-docs-doc strong{font-weight:700;color:var(--text)}
.dev-docs-doc em{font-style:italic;color:var(--text-muted)}
.dev-docs-doc code{padding:2px 6px;border-radius:6px;background:var(--brand-soft);color:var(--brand-hover);font-family:var(--font-mono);font-size:.92em;overflow-wrap:anywhere;word-break:break-word}

/* 列表 */
.dev-docs-list{margin:10px 0;padding-left:22px;font-size:var(--font-size-md);line-height:1.8;color:var(--text);overflow-wrap:anywhere}
.dev-docs-list li{margin:4px 0}
.dev-docs-list li::marker{color:var(--text-subtle)}

/* 代码块 */
.dev-docs-code{margin:12px 0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg);overflow-x:auto;font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:1.65;color:var(--text)}
.dev-docs-code code{padding:0;background:transparent;color:inherit;font-size:inherit}

/* 表格 */
.markdown-table-wrap{max-width:100%;margin:12px 0;overflow-x:auto;border:1px solid var(--line);border-radius:12px}
.dev-docs-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}
.dev-docs-table th,.dev-docs-table td{padding:9px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.dev-docs-table th{background:var(--brand-soft);font-weight:700;color:var(--text);white-space:nowrap}
.dev-docs-table tr:last-child td{border-bottom:0}
.dev-docs-table tbody tr:hover{background:var(--bg)}

/* 引用 */
.dev-docs-doc blockquote{margin:12px 0;padding:8px 14px;border-left:3px solid var(--brand-soft);border-radius:0 8px 8px 0;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-md);line-height:1.8}
.dev-docs-doc blockquote p{margin:0;font-size:inherit;color:inherit}

@media(max-width:720px){
    .dev-docs-page{gap:10px}
    .dev-docs-head h1{font-size:var(--font-size-lg)}
    .dev-docs-doc{padding:16px 14px}
    .dev-docs-doc h2{margin-top:22px}
    /* 移动端展示药丸目录（横向滚动单行） */
    .dev-docs-toc{display:flex;flex-wrap:nowrap;gap:4px;margin:0;padding:5px;box-sizing:border-box;width:100%;max-width:100%;border:1px solid var(--line);border-radius:999px;background:var(--panel);overflow-x:auto;scrollbar-width:none}
    .dev-docs-toc::-webkit-scrollbar{display:none}
    .dev-docs-toc-link{flex:0 0 auto;padding:6px 13px;border:0;border-radius:999px;background:transparent;color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600;line-height:1;white-space:nowrap}
    .dev-docs-toc-link:hover{background:var(--brand-soft);color:var(--brand)}
}
/* featured_topics */
.featured-topics{margin:0 0 10px;padding:0;border-bottom:1px dotted var(--line);background:transparent}
.featured-topics .featured-topics-item{min-height:0}
.featured-topics .featured-topics-item .post-avatar{flex:0 0 36px}
.featured-topics .featured-topics-item-avatar{margin-top:4px;background:var(--brand-soft);color:var(--brand)}
.featured-topics .featured-topics-item-avatar .featured-topics-pin-icon{width:18px;height:18px;flex:0 0 18px;color:var(--brand)}
.featured-topics .featured-topics-line{padding:9px 0;border-bottom:1px solid var(--bg);max-width:100%;overflow:hidden}
.featured-topics .featured-topics-line:last-child{border-bottom:none}
.featured-topics .featured-topics-line .post-title{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important;min-width:0;color:var(--text-muted);font-size:var(--font-size-sm);font-weight:400;line-height:1.4}
.featured-topics .featured-topics-line .post-title:hover{color:var(--brand)}
.featured-topics .featured-topics-line-first .post-title{color:var(--text);font-size:var(--font-size-md);font-weight:700}
.featured-topics-card .featured-topics-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.featured-topics-card .featured-topics-sidebar-list{display:grid;gap:0;margin:0;padding:0;list-style:none}
.featured-topics-card .featured-topics-item a{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border:0;border-radius:0;background:transparent}
.featured-topics-card .featured-topics-item a:before{display:none}
.featured-topics-card .featured-topics-card-rank{display:flex;flex:0 0 18px;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;background:var(--line-soft);color:var(--text-muted);font-size:var(--font-size-xxs);font-weight:700;line-height:1}
.featured-topics-card .featured-topics-card-rank-top{background:var(--brand-soft);color:var(--brand)}
.featured-topics-card .featured-topics-card-content{display:block;flex:1;min-width:0}
.featured-topics-card .featured-topics-card-title{display:block;color:var(--text);font-size:var(--font-size-sm);line-height:1.4;overflow-wrap:anywhere}
.featured-topics-card .featured-topics-item a:hover .featured-topics-card-title{color:var(--brand)}
@media(prefers-reduced-motion:reduce){.featured-topics-line{animation:none}}
.featured-topics-pin-action:before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M9 4h6l-1 5 3 3v1H7v-1l3-3-1-5Zm3 9v7%27/%3E%3C/svg%3E") center/14px 14px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M9 4h6l-1 5 3 3v1H7v-1l3-3-1-5Zm3 9v7%27/%3E%3C/svg%3E") center/14px 14px no-repeat}
.featured-topics-pin-action{min-height:0;padding:0;border:0;background:transparent;color:var(--text-muted)}
.featured-topics-pin-action:hover{background:var(--line-soft);color:var(--text)}
.featured-topics-pin-action.is-pinned{color:var(--brand);opacity:1}
.featured-pin-form{display:grid;gap:14px;min-width:220px;padding:2px 0}
.featured-pin-switch{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--font-size-sm);color:var(--text);cursor:pointer}
.featured-pin-switch input{position:absolute;width:0;height:0;margin:0;opacity:0}
.featured-pin-track{position:relative;flex:0 0 38px;height:22px;border-radius:11px;background:var(--line);transition:background .18s ease}
.featured-pin-track:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--panel);box-shadow:0 1px 3px rgba(0,0,0,.22);transition:transform .18s ease}
.featured-pin-switch input:checked~.featured-pin-track{background:var(--brand)}
.featured-pin-switch input:checked~.featured-pin-track:after{transform:translateX(16px)}
.featured-pin-switch input:focus-visible~.featured-pin-track{outline:var(--focus-ring);outline-offset:2px}
.featured-pin-days{display:flex;align-items:center;gap:8px;font-size:var(--font-size-sm);color:var(--text)}
.featured-pin-days-input{width:88px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit}
.featured-pin-days-input:focus{border-color:var(--brand);outline:var(--focus-ring)}
.featured-pin-days small{color:var(--text-muted)}
.featured-pin-cost{display:grid;gap:3px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg);font-size:var(--font-size-xs);color:var(--text-muted)}
.featured-pin-cost b{color:var(--text);font-weight:700}
.featured-pin-cost strong{font-size:var(--font-size-sm)}
.featured-pin-cost strong.is-cost{color:var(--brand)}
.featured-pin-cost strong.is-free{color:var(--text-muted)}
.featured-pin-refund-note{font-size:var(--font-size-xs);color:var(--text-muted)}
.featured-pin-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:2px}
.featured-pin-actions button{min-height:36px;padding:0 14px;border-radius:var(--radius-sm);cursor:pointer;font:inherit}
.featured-pin-unpin{margin-right:auto;border:1px solid var(--line);background:transparent;color:var(--danger)}
.featured-pin-unpin:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}
.featured-pin-cancel{border:1px solid var(--line);background:var(--bg);color:var(--text)}
.featured-pin-cancel:hover{background:var(--line-soft);color:var(--text)}
.featured-pin-submit{border:1px solid var(--brand);background:var(--brand);color:var(--inverse-text)}
.featured-pin-submit:disabled{opacity:.6;cursor:default}
/* forum_icon */
.forum-icon-badge{margin-right:6px;font-size:var(--font-size-md);line-height:1}
/* gacha */
/* ====== 称号徽章（@layer gacha-badge：让非 layered 的自定义 CSS meta_css 无视选择器优先级即可覆盖） ====== */
@layer gacha-badge{
.gacha-title-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border:1px solid var(--gacha-border);border-radius:var(--radius-sm);background:var(--gacha-bg);color:var(--gacha-color);font-size:10px;line-height:1.5;vertical-align:middle;white-space:nowrap;pointer-events:none}
.gacha-list-title-icon{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;flex:0 0 13px;color:var(--gacha-color);font-size:12px;line-height:1}
.topic-post-list .gacha-title-badge{justify-content:flex-start;padding:0;border:0;background:transparent}
.topic-post-list .gacha-title-badge,.topic-post-list .gacha-title-icon,.topic-post-list .gacha-title-rarity{font-size:inherit}
.topic-post-list .gacha-title-name,.topic-post-list .gacha-title-rarity{font-weight:inherit}
.post-meta .gacha-title-badge{box-sizing:border-box;margin:0;padding:0;border:0;border-radius:0;background:transparent;line-height:1.4}
.post-meta .gacha-title-icon{font-size:inherit;line-height:1.4}.post-meta .gacha-title-rarity{padding:0;background:transparent;color:var(--gacha-color);font-size:inherit;line-height:1.2}
.topic-post-list .post-meta .gacha-title-badge{padding:0 4px;border:1px solid var(--gacha-border);border-radius:var(--radius-sm);background:var(--gacha-bg)}
.gacha-title-icon{font-size:11px;line-height:1}
.gacha-title-name{font-weight:600}
.gacha-title-rarity{margin-left:1px;padding:0 3px;border-radius:2px;background:var(--gacha-color);color:#fff;font-size:9px;font-weight:700;line-height:1.4}
}

/* ====== 称号系统主页 ====== */
/* 抽卡主面板：两块主按钮 + 余额信息，白底浮起卡片 */
.gacha-draw-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.gacha-actions{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap;width:100%}
.gacha-actions form{margin:0;display:flex;flex:1 1 auto;max-width:220px}
.gacha-actions form>.gacha-pull-btn{width:100%}
.gacha-sub-stats{display:flex;align-items:center;justify-content:center;gap:10px;font-size:var(--font-size-xs);color:var(--text-muted);line-height:1}
.gacha-sub-stats strong{color:var(--text);font-weight:700}
.gacha-sub-stats-sep{width:1px;height:11px;background:var(--line)}

.gacha-pull-btn{min-height:46px;padding:0 22px;border:1px solid var(--brand);border-radius:12px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-md);font-weight:700;cursor:pointer;transition:background var(--transition-normal),border-color var(--transition-normal),box-shadow var(--transition-normal)}
.gacha-pull-btn:hover{background:var(--brand-hover);border-color:var(--brand-hover);box-shadow:0 4px 14px -6px var(--shadow-medium)}
.gacha-pull-btn:disabled{border-color:var(--line);background:var(--bg);color:var(--text-disabled);cursor:not-allowed;box-shadow:none}
.gacha-pull-10{background:var(--panel);color:var(--brand);border-color:var(--brand)}
.gacha-pull-10:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);box-shadow:none}
.gacha-pull-10:disabled{border-color:var(--line);background:var(--bg);color:var(--text-disabled)}

/* 区块卡片：称号池 / 全部称号 */
.gacha-block{min-width:0;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.gacha-block-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin-bottom:12px}
.gacha-block-head h2{margin:0;font-size:var(--font-size-md);font-weight:700;color:var(--text)}
.gacha-block-note{font-size:var(--font-size-xs);color:var(--text-subtle)}

/* ====== 称号池 ====== */
.gacha-pool-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gacha-pool-rarity{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 10px;border:1px solid var(--gacha-border);border-radius:12px;background:var(--gacha-bg);text-align:center}
.gacha-pool-rarity-label{font-size:var(--font-size-sm);font-weight:700;color:var(--gacha-color)}
.gacha-pool-rarity-count{font-size:var(--font-size-xs);color:var(--text-muted)}
.gacha-pool-rarity-rate{margin-top:2px;font-size:var(--font-size-lg);font-weight:700;color:var(--gacha-color);line-height:1.2}

/* ====== 全部称号 ====== */
.gacha-all-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.gacha-all-item{display:flex;justify-content:center;min-width:0;padding:9px 8px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.gacha-all-item .gacha-title-badge{font-size:var(--font-size-xs);padding:3px 10px;max-width:100%}

/* ====== 抽卡结果 ====== */
.gacha-result{padding:16px;text-align:center}
.gacha-result h2{margin:0 0 20px;font-size:var(--font-size-xl);color:var(--text)}
.gacha-result-card{display:inline-flex;flex-direction:column;align-items:center;gap:8px;padding:30px 40px;border:2px solid var(--gacha-border);border-radius:16px;background:var(--gacha-bg);animation:gacha-card-pop .3s ease both}
@keyframes gacha-card-pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
.gacha-result-ssr{animation:gacha-card-glow 1s ease infinite alternate}
@keyframes gacha-card-glow{from{box-shadow:0 0 20px rgba(245,158,11,.3)}to{box-shadow:0 0 40px rgba(245,158,11,.6)}}
.gacha-result-rarity{font-size:var(--font-size-lg);font-weight:700;color:var(--gacha-color)}
.gacha-result-icon{font-size:48px;line-height:1}
.gacha-result-name{font-size:var(--font-size-xl);font-weight:700;color:var(--text)}
.gacha-result-new{display:inline-block;padding:2px 12px;border-radius:20px;background:linear-gradient(135deg,#ef4444,#f59e0b);color:#fff;font-size:var(--font-size-xs);font-weight:700;animation:gacha-new-pulse 1s ease infinite alternate}
@keyframes gacha-new-pulse{from{transform:scale(1)}to{transform:scale(1.1)}}
.gacha-result-desc{margin-top:4px;color:var(--text-muted);font-size:var(--font-size-sm)}
.gacha-result-actions{display:flex;gap:10px;justify-content:center;margin-top:20px}

/* ====== 十连抽 ====== */
.gacha-pull-10-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;max-width:600px;margin:0 auto}
.gacha-pull-10-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px;border:1px solid var(--gacha-border);border-radius:10px;background:var(--gacha-bg);position:relative;animation:gacha-card-pop .3s ease both}
.gacha-pull-10-item:nth-child(1){animation-delay:0s}
.gacha-pull-10-item:nth-child(2){animation-delay:.1s}
.gacha-pull-10-item:nth-child(3){animation-delay:.2s}
.gacha-pull-10-item:nth-child(4){animation-delay:.3s}
.gacha-pull-10-item:nth-child(5){animation-delay:.4s}
.gacha-pull-10-item:nth-child(6){animation-delay:.5s}
.gacha-pull-10-item:nth-child(7){animation-delay:.6s}
.gacha-pull-10-item:nth-child(8){animation-delay:.7s}
.gacha-pull-10-item:nth-child(9){animation-delay:.8s}
.gacha-pull-10-item:nth-child(10){animation-delay:.9s}
.gacha-pull-10-icon{font-size:28px;line-height:1}
.gacha-pull-10-name{font-size:var(--font-size-xs);font-weight:600;color:var(--text);text-align:center}
.gacha-pull-10-rarity{font-size:10px;font-weight:700;color:var(--gacha-color)}
.gacha-pull-10-new{position:absolute;top:-6px;right:-6px;padding:1px 6px;border-radius:10px;background:linear-gradient(135deg,#ef4444,#f59e0b);color:#fff;font-size:9px;font-weight:700;animation:gacha-new-pulse 1s ease infinite alternate}

/* ====== 我的称号列表 ====== */
.gacha-profile-titles{min-width:0}
/* 在个人主页 Tab 中独立渲染（不在 .gacha-titles-card 内）时，自带卡片容器 */
.post-list .gacha-profile-titles,.gacha-header+.gacha-profile-titles{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.gacha-profile-titles .empty-state{padding:26px 0;text-align:center;color:var(--text-subtle);font-size:var(--font-size-sm)}
.gacha-profile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.gacha-profile-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);text-align:center;transition:border-color .15s ease,box-shadow .15s ease;min-width:0}
.gacha-profile-item:hover{border-color:var(--brand)}
.gacha-profile-item.is-equipped{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.gacha-profile-item.is-expired{opacity:.62}
.gacha-profile-item.is-expired .gacha-title-badge{filter:grayscale(.6)}
.gacha-profile-badge{display:flex;justify-content:center;min-height:30px;align-items:center}
.gacha-profile-badge .gacha-title-badge{font-size:var(--font-size-sm);padding:4px 12px;pointer-events:auto;font-size:12px}
.gacha-profile-info{display:flex;flex-direction:column;gap:4px;min-width:0;width:100%}
.gacha-profile-desc{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.gacha-profile-meta{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;font-size:var(--font-size-xxs);color:var(--text-subtle)}
.gacha-status-tag{padding:1px 9px;border-radius:999px;font-size:var(--font-size-xxs);font-weight:600;line-height:1.7}
.gacha-status-permanent{background:var(--success-soft);color:var(--success)}
.gacha-status-active{background:var(--brand-soft);color:var(--brand)}
.gacha-status-expired{background:var(--danger-soft);color:var(--danger)}
.gacha-profile-action{display:flex;align-items:center;justify-content:center;gap:8px;min-height:28px;flex-wrap:wrap}
.gacha-expired-label{color:var(--danger);font-size:var(--font-size-xs);font-weight:600}
.gacha-equip-btn{min-height:28px;padding:5px 18px;border:1px solid var(--brand);border-radius:999px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease}
.gacha-equip-btn:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.gacha-equipped-label{color:var(--success);font-size:var(--font-size-xs);font-weight:600}
.gacha-unequip-btn{min-height:28px;padding:5px 14px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}
.gacha-unequip-btn:hover{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}
.gacha-gift-btn{min-height:28px;padding:5px 14px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}
.gacha-gift-btn:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}

/* ====== 管理后台 ====== */
.gacha-settings{max-width:none}
.gacha-settings-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:stretch;gap:12px}
.gacha-settings-field{display:flex;flex-direction:column;justify-content:flex-start;gap:10px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.gacha-settings-field-title{color:var(--text);font-size:var(--font-size-xs);font-weight:700}
.gacha-settings-field .grid{display:grid;align-content:start;gap:5px;min-width:0}
.gacha-settings-wide{margin-top:12px}
.gacha-settings-wide textarea{width:100%;min-height:110px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--font-size-xs)}
.gacha-settings-field input:not([type=checkbox]),.gacha-settings-field select{width:100%;max-width:none}
.gacha-settings-field input[type=checkbox]{width:38px;max-width:38px;height:22px}
.gacha-settings-actions{display:flex;gap:8px;margin-top:14px}
.gacha-settings .gacha-settings-actions button{margin:0}
.gacha-admin-form{max-width:400px}
.gacha-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.gacha-modal-actions .button{min-height:36px;padding:0 18px;border:1px solid var(--line-soft);border-radius:8px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all .12s ease}
.gacha-modal-actions .button:hover{border-color:var(--brand-soft);color:var(--brand)}
.gacha-modal-actions #gachaModalSubmit{min-height:36px;padding:0 20px;border:1px solid var(--brand);border-radius:8px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all .12s ease}
.gacha-modal-actions #gachaModalSubmit:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.gacha-modal-actions #gachaGiftSubmit,.gacha-modal-actions #gachaAdminGiftSubmit{min-height:36px;padding:0 20px;border:1px solid var(--brand);border-radius:8px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}
.gacha-gift-title{margin-bottom:12px;color:var(--text-muted);font-size:var(--font-size-sm)}
.gacha-gift-title strong{color:var(--text)}

/* ====== 个人主页称号 Tab ====== */
.post-list > .gacha-profile-titles{padding:0;border:0;background:transparent}

/* ====== 称号时效 ====== */
.gacha-result-duration{margin-top:14px;padding:6px 14px;border-radius:20px;background:var(--line-soft);color:var(--text-muted);font-size:var(--font-size-sm)}
.gacha-expired-label{color:var(--danger);font-size:var(--font-size-xs);font-weight:600}
.gacha-pull-10-expiry{margin-top:2px;font-size:9px;color:var(--text-subtle)}

/* ====== 喜报 ====== */
.gacha-good-news{display:flex;align-items:center;gap:10px;margin:0;padding:0 14px;min-height:44px;border:1px solid var(--line);border-radius:14px;background:var(--panel);overflow:hidden}
.gacha-good-news-label{flex:0 0 auto;padding:2px 9px;border-radius:999px;background:var(--danger-soft);color:var(--danger);font-size:var(--font-size-xxs);font-weight:700;white-space:nowrap}
.gacha-good-news-viewport{flex:1;overflow:hidden;min-width:0}
.gacha-good-news-track{display:flex;gap:48px;width:max-content;animation:gacha-news-scroll 40s linear infinite}
.gacha-good-news:hover .gacha-good-news-track{animation-play-state:paused}
.gacha-good-news-item{display:inline-flex;align-items:center;gap:0;font-size:var(--font-size-sm);color:var(--text-muted);white-space:nowrap}
.gacha-good-news-item b{color:var(--text);font-weight:600}
.gacha-good-news-item em{font-style:normal;color:var(--danger);font-weight:600}
@keyframes gacha-news-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ====== 我的称号 ====== */
.gacha-page{display:grid;gap:14px}
.gacha-page>*{min-width:0}
.gacha-page-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px}
.gacha-page-head h1{margin:0;font-size:var(--font-size-xl);font-weight:700;color:var(--text)}
.gacha-page-head p{margin:4px 0 0;font-size:var(--font-size-xs);color:var(--text-muted)}
.gacha-page-head-count{font-size:var(--font-size-xs);color:var(--text-subtle)}
.gacha-titles-card{min-width:0;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}

/* 横向卡片：右侧入口 */
.gacha-banner{display:flex;flex-direction:row;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease;box-sizing:border-box}
.gacha-banner:hover{border-color:var(--brand);box-shadow:0 1px 6px var(--shadow-base)}
.gacha-banner-icon{flex:0 0 auto;font-size:26px;line-height:1}
.gacha-banner-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.gacha-banner-title{font-size:var(--font-size-sm);font-weight:600;color:var(--text)}
.gacha-banner-sub{font-size:var(--font-size-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gacha-banner-cta{flex:0 0 auto;padding:5px 16px;border:1px solid var(--brand);border-radius:999px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-xs);font-weight:600;white-space:nowrap;transition:background .12s ease,border-color .12s ease}
.gacha-banner:hover .gacha-banner-cta{background:var(--brand-hover);border-color:var(--brand-hover)}

/* ====== 响应式 ====== */
@media(max-width:600px){
    .gacha-profile-grid{grid-template-columns:repeat(2,1fr)}
    .gacha-pool-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:720px){
    .gacha-settings-fields{grid-template-columns:1fr}
    .gacha-page{gap:10px}
    .gacha-titles-card{padding:12px}
    .gacha-profile-grid{gap:10px}
    .gacha-page-head h1{font-size:var(--font-size-lg)}
    .post-list .gacha-profile-titles,.gacha-header+.gacha-profile-titles{padding:12px}
    .gacha-draw-card{padding:16px 14px}
    .gacha-block{padding:12px}
    .gacha-pull-btn{min-height:44px;font-size:var(--font-size-sm)}
}
/* game_center */
/* ===== Stats Cards ===== */
.game-center-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:16px}
.game-center-stat-card{display:grid;gap:2px;padding:14px 12px;border:1px solid var(--line-soft);border-radius:10px;background:var(--bg);text-align:center}
.game-center-stat-card strong{font-size:var(--font-size-lg);font-weight:700;color:var(--text);line-height:1.2}
.game-center-stat-card span{font-size:var(--font-size-xs);color:var(--text-subtle);line-height:1.3}
.game-center-stats-mine{margin-top:-6px}
.game-center-stat-card-mine strong{color:var(--info)}
.game-center-stat-card-mine span{color:var(--text-muted)}

/* ===== Marquee ===== */
.game-center-marquee{display:flex;align-items:center;gap:8px;margin-bottom:14px;padding:8px 12px;border:1px solid var(--line-soft);border-radius:8px;background:var(--bg);overflow:hidden}
.game-center-marquee-label{flex:0 0 auto;padding:2px 8px;border-radius:4px;background:var(--danger-soft);color:var(--danger);font-size:var(--font-size-xs);font-weight:700;white-space:nowrap}
.game-center-marquee-viewport{flex:1;overflow:hidden;min-width:0}
.game-center-marquee-track{display:flex;gap:48px;width:max-content;animation:game-center-marquee-scroll 40s linear infinite}
.game-center-marquee:hover .game-center-marquee-track{animation-play-state:paused}
.game-center-marquee-item{display:inline-flex;align-items:center;gap:0;font-size:var(--font-size-sm);color:var(--text-muted);white-space:nowrap}
.game-center-marquee-item b{color:var(--text);font-weight:600}
.game-center-marquee-item i{font-style:normal;color:var(--brand)}
.game-center-marquee-item em{font-style:normal;color:var(--danger);font-weight:600}
.game-center-marquee-item strong{color:var(--warning);font-weight:700}
@keyframes game-center-marquee-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ===== Game Center Lobby ===== */
.game-center-lobby{padding:20px}
.game-center-title{margin:0 0 4px;font-size:var(--font-size-xl);font-weight:700;color:var(--text)}
.game-center-balance{margin:0 0 12px;font-size:var(--font-size-md);color:var(--text-muted)}
.game-center-balance strong{color:var(--brand)}
.game-center-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.game-center-empty{padding:40px;text-align:center;color:var(--text-subtle);grid-column:1/-1}
.game-center-card{display:grid;grid-template-columns:48px 1fr;gap:12px;padding:14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--bg);text-decoration:none;transition:all .2s ease}
.game-center-card:hover{border-color:var(--brand-soft);background:var(--panel);box-shadow:var(--shadow-medium)}
.game-center-card-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:10px;background:var(--brand-soft);color:var(--brand)}
.game-center-card-icon svg{width:28px;height:28px}
.game-center-card-body{min-width:0;display:grid;gap:4px}
.game-center-card-name{font-size:var(--font-size-md);font-weight:600;color:var(--text)}
.game-center-card-desc{margin:0;font-size:var(--font-size-sm);color:var(--text-subtle);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-center-card-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px;font-size:var(--font-size-xs);color:var(--text-muted)}
.game-center-card-meta b{color:var(--text)}
.game-center-card-stats{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 16px;padding-top:8px;border-top:1px solid var(--line-soft);font-size:var(--font-size-xs);color:var(--text-muted);justify-content:center}
.game-center-card-stats b{color:var(--brand)}

/* ===== Game Center Play Page ===== */
.game-center-play{padding:20px}
.game-center-play-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.game-center-back{color:var(--text-muted);font-size:var(--font-size-sm);text-decoration:none}
.game-center-back:hover{color:var(--brand)}
.game-center-play-title{margin:0;font-size:var(--font-size-lg);font-weight:700;color:var(--text);flex:1}
.game-center-balance-tag{padding:4px 12px;border-radius:6px;background:var(--brand-soft);color:var(--brand);font-size:var(--font-size-sm);font-weight:600;white-space:nowrap}
.game-center-balance-tag b{font-size:var(--font-size-md)}
.game-center-message{padding:10px 14px;margin-bottom:14px;border-radius:8px;background:var(--success-soft);color:var(--success);font-size:var(--font-size-sm);font-weight:600;text-align:center}
.game-center-play-area{min-height:200px}
.game-center-play-footer{margin-top:16px;padding-top:12px;border-top:1px solid var(--line-soft);font-size:var(--font-size-sm);color:var(--text-muted);text-align:center}
.game-center-play-footer b{color:var(--text)}

/* ===== Recent Records ===== */
.game-center-recent{padding:12px 14px;margin-top:16px;border:1px solid var(--line-soft);border-radius:10px;background:var(--bg)}
.game-center-recent-head{font-size:var(--font-size-sm);font-weight:600;color:var(--text-muted);margin-bottom:8px}
.game-center-recent-list{display:grid;gap:4px}
.game-center-recent-row{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:6px;background:var(--panel);font-size:var(--font-size-xs)}
.game-center-recent-time{color:var(--text-subtle)}
.game-center-recent-net{font-weight:600}
.game-center-recent-delayed{opacity:0;animation:game-center-recent-reveal .3s ease both}
@keyframes game-center-recent-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.game-center-play .game-center-recent-net.game-center-positive{color:var(--danger)}
.game-center-play .game-center-recent-net.game-center-negative{color:var(--success)}

/* ===== Admin Page ===== */
.game-center-admin-form{padding:16px;max-width:none}
.game-center-admin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.game-center-admin-empty{grid-column:1/-1;padding:26px 14px;color:var(--text-subtle);text-align:center;font-size:var(--font-size-sm)}
.game-center-admin-card{display:grid;gap:8px;padding:14px;border:1px solid var(--line-soft);border-radius:10px;background:var(--bg);align-content:start}
.game-center-admin-toggle{display:flex;align-items:center;gap:8px;cursor:pointer}
.game-center-admin-toggle input{flex:0 0 38px;width:38px;height:22px;margin:0}
.game-center-admin-card-body{display:grid;gap:4px}
.game-center-admin-name{font-weight:600;color:var(--text);font-size:var(--font-size-md)}
.game-center-admin-stats{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.4}
.game-center-admin-stats .game-center-positive{color:var(--success);font-weight:600}
.game-center-admin-stats .game-center-negative{color:var(--danger);font-weight:600}
.game-center-admin-save{margin-top:0}
.game-center-admin-limit{padding:0 16px 16px;border-top:1px solid var(--line-soft);margin-top:10px;padding-top:12px}
.game-center-admin-limit .grid{max-width:280px}
.game-center-admin-refresh{display:inline-flex;align-items:center;padding:4px 12px;border:1px solid var(--line-soft);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-sm);text-decoration:none;transition:all .15s ease}
.game-center-admin-refresh:hover{border-color:var(--brand-soft);color:var(--brand)}
.game-center-records-panel{display:none}
.game-center-record-row{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line-soft);list-style:none}
.game-center-record-row:last-child{border-bottom:none}
.game-center-record-game{flex:0 0 auto;padding:2px 8px;border-radius:5px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}
.game-center-record-user{flex:0 1 auto;min-width:0;font-size:var(--font-size-sm);font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-center-record-time{flex:0 0 auto;font-size:11px;color:var(--text-subtle);margin-left:auto}
.game-center-record-net{flex:0 0 auto;font-size:var(--font-size-lg);font-weight:700;margin-left:12px;color:var(--danger)}
.game-center-record-net.game-center-negative{color:var(--success)}

@media(max-width:720px){
    .game-center-stats{grid-template-columns:repeat(3,1fr)}
    .game-center-grid{grid-template-columns:1fr}
    .game-center-lobby,.game-center-play{padding:14px}
    .game-center-admin-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:480px){
    .game-center-admin-grid{grid-template-columns:1fr}
}
/* ===== Doc Page ===== */
.game-center-doc{padding:24px;max-width:760px;line-height:1.7}
.game-center-doc h1{font-size:var(--font-size-xl);margin:0 0 6px;color:var(--text)}
.game-center-doc-lead{margin:0 0 24px;font-size:var(--font-size-md);color:var(--text-muted)}
.game-center-doc h2{font-size:var(--font-size-lg);margin:32px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line-soft);color:var(--text)}
.game-center-doc h3{font-size:var(--font-size-md);margin:20px 0 8px;color:var(--text)}
.game-center-doc p{margin:0 0 10px;font-size:var(--font-size-sm);color:var(--text-muted)}
.game-center-doc p strong{color:var(--text)}
.game-center-doc pre{overflow-x:auto;padding:14px;margin:10px 0 16px;border-radius:10px;background:var(--panel);border:1px solid var(--line-soft);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;color:var(--text)}
.game-center-doc code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--panel);border:1px solid var(--line-soft);border-radius:4px;padding:1px 5px;font-size:12px;color:var(--brand)}
.game-center-doc pre code{background:none;border:none;padding:0;color:inherit}
.game-center-doc table{width:100%;margin:10px 0 16px;border-collapse:collapse;font-size:var(--font-size-xs);color:var(--text-muted)}
.game-center-doc tr td{border:1px solid var(--line-soft);padding:8px 10px;vertical-align:top}
.game-center-doc tr:first-child td{font-weight:600;color:var(--text);background:var(--panel)}
.game-center-doc ul{padding-left:20px;margin:0 0 12px}
.game-center-doc li{font-size:var(--font-size-sm);color:var(--text-muted);margin:3px 0}
.game-center-doc li::marker{color:var(--brand)}
.game-center-lobby-footer{text-align:center;padding:16px 0 0;margin-top:12px;border-top:1px solid var(--line-soft)}
.game-center-docs-link{font-size:var(--font-size-sm);color:var(--text-muted);text-decoration:none}
.game-center-docs-link:hover{color:var(--brand)}
/* gamelib */
:root{--gamelib-brand:#0099ff;--gamelib-brand-hover:#0081d6;--gamelib-brand-soft:#e6f4ff;--gamelib-star:#ff9d00;--gamelib-line:#eef0f3;--gamelib-line-strong:#dfe3e8;--gamelib-muted:#8a9099;--gamelib-card:#fff;--gamelib-bg:#f7f8fa;--gamelib-radius:12px;--gamelib-radius-sm:8px;--gamelib-shadow:0 10px 24px rgba(15,23,42,.08);--gamelib-font-hero:24px;--gamelib-font-game-title:19px;--gamelib-font-score:24px;--gamelib-font-icon-fallback:26px;--gamelib-font-studio-mark:24px;--gamelib-font-side-score:24px;--gamelib-font-review-title:17px}
.gamelib-wrap{display:flex;flex-direction:column;gap:16px}
/* 库首页头部：旧版 TapTap 蓝色渐变横幅 */
.gamelib-hero{position:relative;overflow:hidden;border:0;border-radius:var(--gamelib-radius);background:linear-gradient(120deg,#12a4ff,#0084e6);padding:26px 24px;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;box-shadow:var(--gamelib-shadow)}
.gamelib-hero:after{content:"";position:absolute;right:-70px;top:-90px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.14);pointer-events:none}
.gamelib-hero-main{min-width:240px;flex:1 1 320px}
.gamelib-hero-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);font-weight:600;color:#fff;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 12px}
.gamelib-hero-title{margin:10px 0 5px;font-size:var(--gamelib-font-hero);line-height:1.25;letter-spacing:.5px;color:#fff;font-weight:700}
.gamelib-hero-sub{margin:0;color:rgba(255,255,255,.85);font-size:var(--font-size-sm)}
.gamelib-search{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex:1 1 320px;max-width:520px}
.gamelib-search-input{flex:1 1 180px;min-width:0;border:0;border-radius:999px;padding:9px 16px;font-size:var(--font-size-md);background:#fff;color:var(--text);box-shadow:0 2px 8px rgba(0,60,120,.18)}
.gamelib-search-input:focus{outline:none}
.gamelib-search-button{border:0;border-radius:999px;background:#006ed3;color:#fff;padding:9px 22px;font-size:var(--font-size-md);font-weight:600;cursor:pointer}
.gamelib-search-button:hover{background:#0061bd}
.gamelib-search-studio select{border:0;border-radius:999px;padding:9px 14px;background:#fff;color:var(--text);font-size:var(--font-size-sm);max-width:160px;box-shadow:0 2px 8px rgba(0,60,120,.18)}
.gamelib-filterbar{display:flex;flex-direction:column;gap:8px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);padding:14px 16px;box-shadow:0 1px 4px rgba(15,23,42,.04)}
.gamelib-filter-row{display:flex;align-items:flex-start;gap:10px}
.gamelib-filter-row-sort{align-items:center}
.gamelib-filter-label{flex:0 0 auto;color:var(--gamelib-muted);font-size:var(--font-size-xs);padding-top:6px}
.gamelib-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.gamelib-chip{display:inline-flex;align-items:center;gap:4px;border:0;border-radius:999px;background:var(--gamelib-bg);color:var(--gamelib-muted);font-size:var(--font-size-xs);padding:5px 13px;text-decoration:none;white-space:nowrap;transition:background var(--transition-normal),color var(--transition-normal)}
.gamelib-chip small{color:inherit;opacity:.75;font-size:var(--font-size-xxs)}
.gamelib-chip:hover{background:#e9edf1;color:var(--gamelib-brand)}
.gamelib-chip.active{background:var(--gamelib-brand);color:#fff}
.gamelib-chip.active small{color:#fff;opacity:.85}
.gamelib-sorts{display:flex;flex-wrap:wrap;gap:6px}
.gamelib-sort-link{font-size:var(--font-size-xs);color:var(--gamelib-muted);text-decoration:none;border:0;border-radius:999px;padding:5px 13px;transition:background var(--transition-normal),color var(--transition-normal)}
.gamelib-sort-link:hover{color:var(--gamelib-brand)}
.gamelib-sort-link.active{background:var(--gamelib-brand-soft);color:var(--gamelib-brand)}
.gamelib-tagbanner{display:flex;align-items:center;gap:10px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-brand-soft);padding:12px 16px}
.gamelib-tagbanner-label{font-size:var(--font-size-md);font-weight:700;color:var(--gamelib-brand)}
.gamelib-tagbanner-note{font-size:var(--font-size-xs);color:var(--gamelib-muted)}
.gamelib-tagbanner-clear{margin-left:auto;font-size:var(--font-size-xs);color:var(--gamelib-muted);text-decoration:none}
.gamelib-tagbanner-clear:hover{color:var(--danger)}
/* 游戏库列表：横向卡片（图标左 / 信息右），旧版 TapTap 卡片风 */
.gamelib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px}
.gamelib-card{display:flex;flex-direction:row;align-items:stretch;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);overflow:hidden;box-shadow:0 1px 4px rgba(15,23,42,.05);transition:transform var(--transition-normal),box-shadow var(--transition-normal)}
.gamelib-card:hover{transform:translateY(-3px);box-shadow:var(--gamelib-shadow)}
/* 固定 70×70 正方形：align-self:center 防止被 stretch 拉成长方形，卡片增高时图标保持居中 */
.gamelib-card-media{position:relative;display:block;flex:0 0 70px;width:70px;height:70px;align-self:center;aspect-ratio:1/1;overflow:hidden;border-radius:10px;background:var(--gamelib-bg);text-decoration:none;margin:12px 0 12px 12px}
.gamelib-card-icon{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.gamelib-card:hover .gamelib-card-icon{transform:scale(1.05)}
/* 卡片右侧评分列：与图标同高居中（数字上、人数下），TapTap 蓝色分数 */
.gamelib-card-score{flex:0 0 auto;align-self:center;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0 16px 0 2px}
.gamelib-card-score b{font-size:19px;font-weight:700;line-height:1;color:var(--gamelib-brand)}
.gamelib-card-score small{font-size:var(--font-size-xxs);color:var(--gamelib-muted)}
.gamelib-stars{position:relative;display:inline-block;line-height:0;white-space:nowrap}
.gamelib-star{width:14px;height:14px;fill:currentColor}
.gamelib-stars-track{color:#dfe3e8}
.gamelib-stars-fill{position:absolute;left:0;top:0;overflow:hidden;color:var(--gamelib-star)}
.gamelib-card-body{display:flex;flex-direction:column;gap:6px;padding:12px 12px 14px;min-width:0}
.gamelib-card-title{margin:0;font-size:15px;font-weight:600;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gamelib-card-title a{color:var(--text);text-decoration:none}
.gamelib-card-title a:hover{color:var(--gamelib-brand)}
.gamelib-card-summary{margin:0;color:var(--gamelib-muted);font-size:var(--font-size-xs);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gamelib-card-tags{display:flex;flex-wrap:wrap;gap:4px}
.gamelib-tag{display:inline-block;font-size:var(--font-size-xxs);color:var(--gamelib-muted);background:var(--gamelib-bg);border-radius:4px;padding:2px 8px;text-decoration:none}
a.gamelib-tag:hover{color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-platform-chip{display:inline-block;font-size:var(--font-size-xxs);color:var(--gamelib-muted);background:var(--gamelib-bg);border-radius:4px;padding:1px 7px}
.gamelib-card-platforms{display:inline-flex;flex-wrap:wrap;gap:3px}
.gamelib-card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;border-top:1px solid var(--gamelib-line);padding-top:8px}
.gamelib-studio-links{display:inline-flex;flex-wrap:wrap;gap:4px;min-width:0}
.gamelib-studio-link{font-size:var(--font-size-xxs);color:var(--gamelib-muted);text-decoration:none}
a.gamelib-studio-link:hover{color:var(--gamelib-brand)}
.gamelib-card-count{font-size:var(--font-size-xxs);color:var(--gamelib-muted);white-space:nowrap}
.gamelib-empty{display:flex;flex-direction:column;align-items:center;gap:8px;border:1px dashed var(--gamelib-line-strong);border-radius:var(--gamelib-radius);background:var(--gamelib-card);color:var(--gamelib-muted);padding:42px 16px;text-align:center}
.gamelib-empty p{margin:0;font-size:var(--font-size-sm)}
.gamelib-empty .gamelib-meta-icon{width:26px;height:26px;opacity:.4}
.gamelib-meta-icon{width:14px;height:14px;flex:0 0 14px}
.gamelib-top-link{display:inline-flex;align-items:center;gap:5px;color:var(--gamelib-muted);font-size:var(--font-size-sm);text-decoration:none;border:1px solid var(--gamelib-line-strong);border-radius:999px;padding:4px 12px;background:var(--gamelib-card)}
.gamelib-top-link:hover{color:var(--gamelib-brand);border-color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-game{display:flex;flex-direction:column;gap:16px}
.gamelib-game-hero{display:flex;flex-wrap:wrap;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.05);padding:20px 22px}
/* 图标 + 名称/简介/平台 为 hero 左列自适应；评分/想玩竖排固定在卡片右侧 */
.gamelib-game-hero .gamelib-hero-main{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:14px 16px}
.gamelib-game-cover{flex:0 0 auto;display:block;border-radius:10px;overflow:hidden;line-height:0}
.gamelib-game-icon{width:70px;height:70px;aspect-ratio:1/1;border-radius:10px;object-fit:cover;background:var(--gamelib-bg)}
.gamelib-icon-fallback{display:flex;align-items:center;justify-content:center;font-size:var(--gamelib-font-icon-fallback);font-weight:700;color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-game-info{flex:1 1 160px;min-width:0;display:flex;flex-direction:column;justify-content:center}
/* 信息块内部紧凑化：标题+简介+平台总高收敛到 70px 图标高度内，整体上下居中 */
.gamelib-game-title{margin:0 0 3px;font-size:var(--gamelib-font-game-title);line-height:1.25;font-weight:700}
.gamelib-game-summary{margin:0 0 5px;color:var(--gamelib-muted);font-size:var(--font-size-sm);line-height:1.5}
.gamelib-game-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0}
.gamelib-game-metaitem{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--text)}
.gamelib-game-metaitem em{font-style:normal;color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
.gamelib-game-platforms{display:inline-flex;flex-wrap:wrap;gap:4px}
.gamelib-game-tags{display:flex;flex-wrap:wrap;gap:6px}
/* 评分块（上）+ 想玩按钮（下）竖排，固定在 hero 卡片右侧 */
.gamelib-game-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-left:auto}
.gamelib-game-side .gamelib-want{width:100%}
.gamelib-game-side .gamelib-want-btn{width:100%;padding:7px 12px}
.gamelib-game-score{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--gamelib-brand-soft);border:0;border-radius:10px;padding:8px 16px}
.gamelib-game-score-num{font-size:var(--gamelib-font-score);font-weight:700;line-height:1;color:var(--gamelib-brand)}
.gamelib-game-score-sub{display:flex;flex-direction:column;align-items:center;gap:0}
.gamelib-game-score-sub small{color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
.gamelib-game .gamelib-stars .gamelib-star{width:18px;height:18px}
.gamelib-want{display:flex}
.gamelib-want-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--gamelib-line-strong);border-radius:999px;background:var(--gamelib-card);color:var(--gamelib-muted);font-size:var(--font-size-sm);padding:7px 16px;cursor:pointer;text-decoration:none;transition:border-color var(--transition-normal),background var(--transition-normal),color var(--transition-normal)}
.gamelib-want-btn:hover{border-color:var(--gamelib-brand);color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-want-btn.active{border-color:transparent;color:#fff;background:var(--gamelib-brand)}
.gamelib-want-btn .gamelib-meta-icon{width:16px;height:16px;flex-basis:16px}
.gamelib-want-count{font-size:var(--font-size-sm);color:inherit;opacity:.75;font-weight:600}
.gamelib-tabs{display:flex;gap:2px;border-bottom:1px solid var(--gamelib-line);overflow-x:auto;background:var(--gamelib-card);border-radius:var(--gamelib-radius) var(--gamelib-radius) 0 0;padding:0 6px}
.gamelib-tab{position:relative;white-space:nowrap;padding:13px 20px;font-size:var(--font-size-md);color:var(--gamelib-muted);text-decoration:none;border-radius:0}
.gamelib-tab:hover{color:var(--gamelib-brand)}
.gamelib-tab small{font-size:var(--font-size-xs);color:inherit;opacity:.75}
.gamelib-tab.active{color:var(--gamelib-brand);font-weight:700}
.gamelib-tab.active:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:3px;background:var(--gamelib-brand);border-radius:3px 3px 0 0}
.gamelib-pane{border:0;border-top:1px solid var(--gamelib-line);border-radius:0 0 var(--gamelib-radius) var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.04);padding:20px}
.gamelib-pane-reviews{display:flex;flex-direction:column;gap:14px}
.gamelib-panel-link{display:flex;align-items:center;gap:14px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-bg);padding:18px;text-decoration:none;transition:background var(--transition-normal)}
.gamelib-panel-link:hover{background:var(--gamelib-brand-soft)}
.gamelib-panel-link .gamelib-meta-icon{width:28px;height:28px;flex-basis:28px;color:var(--gamelib-brand)}
.gamelib-panel-link-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.gamelib-panel-link-main strong{color:var(--text);font-size:var(--font-size-lg)}
.gamelib-panel-link-main small{color:var(--gamelib-muted);font-size:var(--font-size-xs)}
.gamelib-panel-link-go{flex:0 0 auto;color:var(--gamelib-brand);font-size:var(--font-size-sm)}
.gamelib-gallery{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.gamelib-gallery-stage{box-shadow:var(--gamelib-shadow)}
.gamelib-gallery-stage{position:relative;border-radius:var(--gamelib-radius);overflow:hidden;background:var(--inverse);aspect-ratio:16/9}
.gamelib-gallery-img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.gamelib-gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:50%;background:var(--backdrop);color:var(--inverse-text);font-size:var(--font-size-xl);line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.gamelib-gallery-nav:hover{background:var(--inverse);opacity:.9}
.gamelib-gallery-prev{left:10px}
.gamelib-gallery-next{right:10px}
.gamelib-gallery-count{position:absolute;right:10px;bottom:10px;border-radius:999px;background:var(--backdrop);color:var(--inverse-text);font-size:var(--font-size-xxs);padding:2px 9px}
.gamelib-gallery-thumbs{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.gamelib-gallery-thumb{flex:0 0 96px;width:96px;height:60px;padding:0;border:2px solid transparent;border-radius:var(--gamelib-radius-sm);overflow:hidden;background:var(--gamelib-bg);cursor:pointer;opacity:.75}
.gamelib-gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.gamelib-gallery-thumb:hover{opacity:1}
.gamelib-gallery-thumb.active{border-color:var(--gamelib-brand);opacity:1}
.gamelib-detail-body{color:var(--text);font-size:var(--font-size-md);line-height:1.8}
.gamelib-detail-body p{margin:0 0 10px}
.gamelib-muted{color:var(--gamelib-muted);font-size:var(--font-size-sm)}
.gamelib-review-list{display:flex;flex-direction:column;gap:12px}
.gamelib-review{border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);padding:16px 18px;display:flex;flex-direction:column;gap:10px;box-shadow:0 1px 4px rgba(15,23,42,.05);transition:box-shadow var(--transition-normal)}
.gamelib-review:hover{box-shadow:var(--gamelib-shadow)}
.gamelib-review-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.gamelib-review-avatar{width:36px;height:36px;flex:0 0 36px;border-radius:50%;object-fit:cover}
/* avatar_link_tag 外层 a 是 width/height:100%，必须给固定尺寸，否则在 flex 里撑开错位 */
.gamelib-review-head .avatar-profile-link{width:36px;height:36px;flex:0 0 36px;border-radius:50%}
.gamelib-review-avatar-none{display:flex;align-items:center;justify-content:center;background:var(--gamelib-bg);color:var(--gamelib-muted);font-size:var(--font-size-md);border-radius:50%}
.gamelib-review-headinfo{display:flex;flex-direction:column;min-width:0;flex:1 1 120px}
.gamelib-review-author{color:var(--text);font-size:var(--font-size-sm);font-weight:600;text-decoration:none}
a.gamelib-review-author:hover{color:var(--gamelib-brand)}
.gamelib-review-time{color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
.gamelib-review-badges{display:inline-flex;gap:6px}
.gamelib-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-size-xxs);border-radius:999px;padding:2px 10px}
.gamelib-badge .gamelib-meta-icon{width:11px;height:11px;flex-basis:11px}
.gamelib-badge-playing{color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-badge-played{color:#6b7280;background:#eef0f3}
.gamelib-review-score{display:flex;align-items:center;gap:5px;margin-left:auto}
.gamelib-review-score .gamelib-star{width:13px;height:13px}
.gamelib-review-score b{font-size:var(--font-size-sm)}
.gamelib-review-score small{color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
.gamelib-review-title{margin:0;font-size:var(--gamelib-font-review-title);line-height:1.4;color:var(--text);font-weight:700}
.gamelib-review-body{font-size:var(--font-size-md);line-height:1.85;color:var(--text)}
.gamelib-review-body[data-gamelib-goto]{cursor:pointer}
.gamelib-review-body p{margin:0 0 12px}
.gamelib-review-body p:last-child{margin-bottom:0}
.gamelib-review-body img{max-width:100%;border-radius:var(--gamelib-radius-sm)}
.gamelib-review-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-top:1px solid var(--gamelib-line);padding-top:10px}
.gamelib-act{display:inline-flex;align-items:center;gap:5px;border:0;border-radius:999px;background:var(--gamelib-bg);color:var(--gamelib-muted);font-size:var(--font-size-xs);padding:5px 13px;cursor:pointer;text-decoration:none;transition:color var(--transition-normal),background var(--transition-normal)}
.gamelib-act:hover{color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-act .gamelib-meta-icon{width:13px;height:13px;flex-basis:13px}
.gamelib-act-up.active{color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-act-down.active{color:var(--danger);background:var(--danger-soft)}
.gamelib-review-manage{margin-left:auto;display:inline-flex;align-items:center;gap:8px}
.gamelib-review-op{font-size:var(--font-size-xs);color:var(--gamelib-muted);text-decoration:none}
.gamelib-review-op:hover{color:var(--gamelib-brand)}
.gamelib-review-op-danger{color:var(--danger)}
.gamelib-replies{display:flex;flex-direction:column;gap:10px;background:var(--gamelib-bg);border:0;border-radius:var(--gamelib-radius-sm);padding:12px 14px}
.gamelib-reply-list{display:flex;flex-direction:column;gap:10px}
.gamelib-reply{display:flex;gap:10px;align-items:flex-start}
.gamelib-reply-avatar{width:26px;height:26px;flex:0 0 26px;border-radius:50%;object-fit:cover;margin-top:1px}
.gamelib-reply .avatar-profile-link{width:26px;height:26px;flex:0 0 26px;border-radius:50%;margin-top:1px}
.gamelib-reply-avatar-none{display:flex;align-items:center;justify-content:center;background:var(--gamelib-line-strong);color:var(--gamelib-muted);font-size:var(--font-size-xs);border-radius:50%}
.gamelib-reply-main{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.gamelib-reply-head{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.gamelib-reply-author{color:var(--text);font-size:var(--font-size-xs);font-weight:600;text-decoration:none;line-height:1.4}
a.gamelib-reply-author:hover{color:var(--gamelib-brand)}
.gamelib-reply-time{color:var(--gamelib-muted);font-size:var(--font-size-xxs);line-height:1.4}
.gamelib-reply-body{color:var(--gamelib-muted);font-size:var(--font-size-xs);line-height:1.65;margin:0}
.gamelib-reply-body p{margin:0}
.gamelib-reply-ops{display:flex;align-items:center;gap:10px;margin-top:2px}
.gamelib-reply-edit{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.gamelib-reply-edit textarea{width:100%;border:1px solid var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);padding:8px 10px;font-size:var(--font-size-sm);background:var(--gamelib-card);color:var(--text);resize:vertical;font-family:inherit}
.gamelib-reply-edit textarea:focus{outline:none;border-color:var(--gamelib-brand)}
.gamelib-reply-edit-actions{display:flex;align-items:center;gap:10px}
.gamelib-reply-edit-actions .gamelib-reply-submit{align-self:auto}
.gamelib-reply-cancel{color:var(--gamelib-muted);font-size:var(--font-size-xs);text-decoration:none}
.gamelib-reply-cancel:hover{color:var(--gamelib-brand)}
.gamelib-reply-form{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--gamelib-line);padding-top:10px}
.gamelib-reply-form textarea{width:100%;border:1px solid var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);padding:8px 10px;font-size:var(--font-size-sm);background:var(--gamelib-card);color:var(--text);resize:vertical;font-family:inherit}
.gamelib-reply-form textarea:focus{outline:none;border-color:var(--gamelib-brand)}
.gamelib-reply-login{margin:0}
.gamelib-reply-submit{align-self:flex-end;border:0;border-radius:999px;background:var(--gamelib-brand);color:#fff;font-size:var(--font-size-xs);font-weight:600;padding:7px 18px;cursor:pointer}
.gamelib-reply-submit:hover{background:var(--gamelib-brand-hover)}
/* 点评表单：头像 + 大输入框 + 底部（状态 / 评分 / 发布） */
.gamelib-review-form-wrap{border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.05);padding:16px 18px}
.gamelib-review-form-edit{margin-top:14px}
.gamelib-review-form-title{margin:0 0 12px;font-size:var(--font-size-md)}
.gamelib-review-form .grid{margin-bottom:12px}
.gamelib-review-form-row{display:flex;gap:12px;align-items:flex-start}
.gamelib-review-form-avatar{flex:0 0 40px;width:40px;height:40px;border-radius:50%;overflow:hidden;background:var(--gamelib-bg)}
.gamelib-review-form-avatar .avatar-profile-link{width:40px;height:40px;border-radius:50%}
.gamelib-review-form-avatar-img{display:block;width:100%;height:100%;object-fit:cover}
.gamelib-review-form-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.gamelib-review-input{display:block}
.gamelib-review-input .gamelib-editor-area{display:block;width:100%;min-height:110px;border:1px solid var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);padding:12px 14px;font-size:var(--font-size-md);line-height:1.7;background:var(--gamelib-card);color:var(--text);resize:vertical;font-family:inherit;transition:border-color var(--transition-normal)}
.gamelib-review-input .gamelib-editor-area:focus{outline:none;border-color:var(--gamelib-brand)}
/* NB编辑器挂载后：工具栏置于输入框上方 */
.gamelib-review-form-main .nb-editor-field{display:flex;flex-direction:column;gap:0;margin:0}
.gamelib-review-form-main .nb-editor-field>.nb-editor{order:-1}
.gamelib-review-form-main .nb-editor-field>.gamelib-review-input .gamelib-editor-area{border:1px solid var(--gamelib-line-strong);border-top:0;border-radius:0 0 var(--gamelib-radius-sm) var(--gamelib-radius-sm);background:var(--gamelib-card)}
.gamelib-review-form-main .nb-editor-field>.nb-editor>.nb-editor-bar{border-radius:var(--gamelib-radius-sm) var(--gamelib-radius-sm) 0 0}
.gamelib-nb-extra{display:contents}
.gamelib-review-form-bar{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap}
.gamelib-review-form-bar .gamelib-status-picker{gap:6px}
.gamelib-review-form-bar .gamelib-status-pill span{padding:5px 14px;font-size:var(--font-size-xs)}
.gamelib-review-form-score{display:inline-flex;align-items:center;gap:8px;color:var(--gamelib-muted);font-size:var(--font-size-xs)}
.gamelib-review-form-score .gamelib-picker{min-height:0;gap:6px}
.gamelib-review-form-score .gamelib-picker-star{width:22px;height:22px}
.gamelib-review-form-score .gamelib-picker-star svg{width:22px;height:22px}
.gamelib-review-form-score .gamelib-picker-label{min-height:0}
.gamelib-review-submit{margin-left:auto;border:0;border-radius:999px;background:var(--gamelib-brand);color:#fff;font-size:var(--font-size-md);font-weight:600;padding:9px 26px;cursor:pointer;box-shadow:0 4px 12px rgba(0,153,255,.28)}
.gamelib-review-submit:hover{background:var(--gamelib-brand-hover)}
.gamelib-review-form-actions{display:flex;align-items:center;gap:12px}
.gamelib-review-form-actions .gamelib-review-submit{margin-left:0}
.gamelib-review-cancel{color:var(--gamelib-muted);font-size:var(--font-size-sm);text-decoration:none}
.gamelib-review-login a,.gamelib-review-closed{color:var(--gamelib-muted)}
.gamelib-review-login{margin:0}
.gamelib-review-login a{color:var(--gamelib-brand)}
.gamelib-status-picker{display:flex;gap:8px;flex-wrap:wrap}
.gamelib-status-pill{position:relative;cursor:pointer}
.gamelib-status-pill input{position:absolute;opacity:0;pointer-events:none}
.gamelib-status-pill span{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--gamelib-line-strong);border-radius:999px;background:var(--gamelib-card);color:var(--gamelib-muted);font-size:var(--font-size-sm);padding:6px 18px;transition:border-color var(--transition-normal),color var(--transition-normal),background var(--transition-normal)}
.gamelib-status-pill .gamelib-meta-icon{width:14px;height:14px;flex-basis:14px}
.gamelib-status-pill:hover span{border-color:var(--gamelib-brand);color:var(--gamelib-brand)}
.gamelib-status-pill input:checked+span{border-color:var(--gamelib-brand);background:var(--gamelib-brand);color:#fff;font-weight:600}
.gamelib-status-pill input:focus-visible+span{outline:2px solid var(--gamelib-brand);outline-offset:2px}
.gamelib-picker{display:flex;align-items:center;gap:10px;min-height:34px}
.gamelib-picker-stars{display:inline-flex;gap:2px;line-height:0}
.gamelib-picker-star{position:relative;width:28px;height:28px;padding:0;border:0;background:none;cursor:pointer;color:#dfe3e8;transition:color .12s ease,transform .12s ease}
.gamelib-picker-star svg{position:absolute;inset:0;width:28px;height:28px;fill:currentColor}
.gamelib-picker-star:hover{transform:scale(1.12)}
.gamelib-picker-star.gamelib-picker-on{color:var(--gamelib-star)}
.gamelib-picker-label{font-size:var(--font-size-xs);color:var(--gamelib-muted);min-height:16px}
/* 编辑器：核心原生 textarea（编辑器插件启用时由其接管增强） */
.gamelib-editor-area{width:100%;min-height:120px;resize:vertical;font-family:inherit}
.gamelib-detail-body{margin-top:14px}
/* 详情标签：卡片式美化边框容器，位于介绍正文上方 */
.gamelib-detail-tags{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;border:0;border-radius:var(--gamelib-radius-sm);background:var(--gamelib-bg);padding:12px 14px}
.gamelib-detail-tags-label{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;color:var(--gamelib-brand);font-size:var(--font-size-xs);font-weight:700;letter-spacing:2px;padding-top:2px}
.gamelib-detail-tags-label .gamelib-meta-icon{width:13px;height:13px;flex-basis:13px}
.gamelib-detail-tags .gamelib-game-tags{gap:6px;align-items:center}
.gamelib-detail-tags .gamelib-tag{font-size:var(--font-size-xs);color:var(--gamelib-muted);background:var(--gamelib-card);padding:2px 10px}
.gamelib-detail-tags .gamelib-tag:hover{color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
/* 详情底部：厂商（左） / 上线日期（右）卡片条 */
.gamelib-detail-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 18px;border:0;border-radius:var(--gamelib-radius-sm);background:var(--gamelib-bg);margin-top:16px;padding:12px 16px}
.gamelib-detail-foot-item{display:inline-flex;align-items:center;gap:8px;font-size:var(--font-size-sm);color:var(--text)}
.gamelib-detail-foot-item em{font-style:normal;color:var(--gamelib-muted);font-size:var(--font-size-xxs);background:var(--gamelib-card);border-radius:999px;padding:2px 9px}
.gamelib-detail-foot-date{margin-left:auto;font-weight:600}
.gamelib-detail-foot-date em{background:transparent;padding:0}
.gamelib-collection-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.gamelib-collection{display:flex;flex-direction:column;gap:10px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);padding:16px 18px;box-shadow:0 1px 4px rgba(15,23,42,.05);transition:transform var(--transition-normal),box-shadow var(--transition-normal)}
.gamelib-collection:hover{transform:translateY(-2px);box-shadow:var(--gamelib-shadow)}
.gamelib-collection-head{display:flex;align-items:center;gap:10px}
.gamelib-collection-head .gamelib-meta-icon{width:24px;height:24px;flex-basis:24px;color:var(--gamelib-brand)}
.gamelib-collection-title{margin:0;font-size:var(--font-size-lg);color:var(--text)}
.gamelib-collection-desc{margin:0;color:var(--gamelib-muted);font-size:var(--font-size-sm);line-height:1.7}
.gamelib-collection-go{align-self:flex-start;color:var(--gamelib-brand);font-size:var(--font-size-sm);text-decoration:none}
.gamelib-collection-go:hover{text-decoration:underline}
.gamelib-group{display:flex;flex-direction:column;gap:12px}
.gamelib-group-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.gamelib-group-head .gamelib-meta-icon{width:24px;height:24px;flex-basis:24px;color:var(--gamelib-brand)}
.gamelib-group-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.gamelib-group-info small{color:var(--gamelib-muted);font-size:var(--font-size-xs)}
.gamelib-group-name{margin:0;font-size:var(--font-size-lg);color:var(--text)}
.gamelib-group-go{flex:0 0 auto;display:inline-flex;align-items:center;border:0;border-radius:999px;background:var(--gamelib-brand);color:#fff;font-size:var(--font-size-sm);font-weight:600;padding:8px 18px;text-decoration:none;box-shadow:0 4px 12px rgba(0,153,255,.28);transition:background var(--transition-normal)}
.gamelib-group-go:hover{background:var(--gamelib-brand-hover)}
.gamelib-topic-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.gamelib-topic-item{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--gamelib-line);padding:11px 2px}
.gamelib-topic-item:last-child{border-bottom:0}
.gamelib-topic-title{flex:1 1 240px;min-width:0;color:var(--text);font-size:var(--font-size-sm);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gamelib-topic-title:hover{color:var(--gamelib-brand)}
.gamelib-topic-meta{display:inline-flex;align-items:center;gap:10px;color:var(--gamelib-muted);font-size:var(--font-size-xxs);white-space:nowrap}
.gamelib-top-reviews{margin-top:18px;border-top:1px solid var(--gamelib-line);padding-top:14px}
.gamelib-top-reviews-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.gamelib-top-reviews-head h3{display:flex;align-items:center;gap:6px;margin:0;font-size:var(--font-size-md);color:var(--text)}
.gamelib-top-reviews-head h3 .gamelib-meta-icon{width:15px;height:15px;flex-basis:15px;color:var(--gamelib-star)}
.gamelib-top-reviews-go{color:var(--gamelib-brand);font-size:var(--font-size-xs);text-decoration:none;white-space:nowrap}
.gamelib-top-reviews-go:hover{text-decoration:underline}
.gamelib-top-review-list{display:flex;flex-direction:column;gap:8px}
.gamelib-top-review{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:0;border-radius:var(--gamelib-radius-sm);background:var(--gamelib-bg);padding:10px 12px;text-decoration:none;transition:background var(--transition-normal)}
.gamelib-top-review:hover{background:var(--gamelib-brand-soft)}
.gamelib-top-review-user{display:inline-flex;align-items:center;gap:6px;min-width:0}
.gamelib-top-review-user strong{color:var(--text);font-size:var(--font-size-sm);white-space:nowrap}
.gamelib-top-review-score{display:inline-flex;align-items:center;gap:4px}
.gamelib-top-review-score .gamelib-star{width:12px;height:12px}
.gamelib-top-review-score b{color:var(--text);font-size:var(--font-size-xs)}
.gamelib-top-review-body{flex:1 1 200px;min-width:0;color:var(--gamelib-muted);font-size:var(--font-size-xs);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gamelib-top-review-up{display:inline-flex;align-items:center;gap:4px;color:var(--gamelib-muted);font-size:var(--font-size-xxs);white-space:nowrap}
.gamelib-top-review-up .gamelib-meta-icon{width:12px;height:12px;flex-basis:12px}
.gamelib-reviewpage{display:flex;flex-direction:column;gap:14px}
.gamelib-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--gamelib-muted)}
.gamelib-crumbs a{color:var(--gamelib-muted);text-decoration:none}
.gamelib-crumbs a:hover{color:var(--gamelib-brand)}
.gamelib-crumbs em{font-style:normal;color:var(--text)}
.gamelib-review-game{display:flex;align-items:center;gap:12px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.05);padding:12px 14px;text-decoration:none}
.gamelib-review-game:hover{box-shadow:var(--gamelib-shadow)}
.gamelib-review-game-icon{width:52px;height:52px;flex:0 0 52px;border-radius:10px;object-fit:cover}
.gamelib-review-game-icon.gamelib-icon-fallback{font-size:var(--font-size-lg)}
.gamelib-review-game div{display:flex;flex-direction:column;gap:4px;min-width:0}
.gamelib-review-game strong{color:var(--text);font-size:var(--font-size-md)}
.gamelib-review-game .gamelib-star{width:13px;height:13px}
.gamelib-studio-head{display:flex;flex-wrap:wrap;align-items:center;gap:16px;border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.05);padding:20px}
.gamelib-studio-mark{width:64px;height:64px;flex:0 0 64px;border-radius:var(--gamelib-radius);display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#12a4ff,#0084e6);color:#fff;font-size:var(--gamelib-font-studio-mark);font-weight:700;box-shadow:0 6px 16px rgba(0,132,230,.3)}
.gamelib-studio-info{flex:1 1 280px;min-width:0}
.gamelib-studio-name{margin:0 0 4px;font-size:var(--gamelib-font-game-title);font-weight:700}
.gamelib-studio-sub{margin:0;color:var(--gamelib-muted);font-size:var(--font-size-sm)}
.gamelib-studio-desc{margin:6px 0 0;color:var(--gamelib-muted);font-size:var(--font-size-sm);line-height:1.6}
.gamelib-studio-home{display:inline-flex;align-items:center;border:0;border-radius:999px;background:var(--gamelib-brand);color:#fff;font-size:var(--font-size-sm);font-weight:600;padding:8px 18px;text-decoration:none;box-shadow:0 4px 12px rgba(0,153,255,.28);transition:background var(--transition-normal)}
.gamelib-studio-home:hover{background:var(--gamelib-brand-hover)}
.gamelib-studio-back{margin:0;font-size:var(--font-size-sm)}
.gamelib-studio-back a{color:var(--gamelib-muted);text-decoration:none}
.gamelib-studio-back a:hover{color:var(--gamelib-brand)}
.gamelib-side-card{padding:16px}
.gamelib-side-title{display:flex;align-items:center;gap:6px;color:var(--text);font-size:var(--font-size-sm);font-weight:600;margin-bottom:10px}
.gamelib-side-score{display:flex;align-items:baseline;gap:4px;color:var(--gamelib-brand)}
.gamelib-side-score-num{font-size:var(--gamelib-font-side-score);font-weight:700;line-height:1}
.gamelib-side-score small{color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
.gamelib-side-card .gamelib-stars{margin:8px 0 4px}
.gamelib-side-card .gamelib-star{width:16px;height:16px}
.gamelib-side-note{margin:0;color:var(--gamelib-muted);font-size:var(--font-size-xs)}
.gamelib-side-studio{display:flex;flex-direction:column;gap:2px;color:var(--text);text-decoration:none;padding:6px 0;border-bottom:1px solid var(--gamelib-line)}
.gamelib-side-studio:last-of-type{border-bottom:0}
.gamelib-side-studio span{color:var(--gamelib-muted);font-size:var(--font-size-xxs)}
a.gamelib-side-studio:hover strong{color:var(--gamelib-brand)}
.gamelib-side-homepage{display:inline-block;margin-top:8px;font-size:var(--font-size-xs);color:var(--gamelib-brand);text-decoration:none}
.gamelib-side-actions a{display:inline-block;color:var(--gamelib-muted);font-size:var(--font-size-sm);text-decoration:none}
.gamelib-side-actions a:hover{color:var(--gamelib-brand)}
.gamelib-lightbox{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;justify-content:center;background:var(--backdrop);animation:gamelib-fade-in .18s ease}
.gamelib-lightbox img{max-width:92vw;max-height:88vh;border-radius:var(--gamelib-radius);object-fit:contain;box-shadow:0 24px 60px var(--shadow-medium)}
.gamelib-lightbox-close{position:absolute;top:16px;right:20px;width:38px;height:38px;border:0;border-radius:50%;background:var(--backdrop);color:var(--inverse-text);font-size:var(--font-size-xl);line-height:1;cursor:pointer}
.gamelib-lightbox-close:hover{background:var(--inverse)}
.gamelib-lightbox .gamelib-gallery-nav{top:auto;bottom:16px;transform:none}
.gamelib-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,12px);z-index:1300;max-width:80vw;background:var(--inverse);color:var(--inverse-text);font-size:var(--font-size-sm);border-radius:999px;padding:9px 20px;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.gamelib-toast.gamelib-toast-show{opacity:1;transform:translate(-50%,0)}
.gamelib-admin{display:flex;flex-direction:column;gap:16px}
.gamelib-admin-title{margin:0;font-size:var(--font-size-md);border-top:1px solid var(--gamelib-line);padding-top:14px}
.gamelib-admin-config{padding:16px 18px}
.gamelib-admin-config h2{margin:0 0 12px;font-size:var(--font-size-md)}
.gamelib-admin-config textarea{min-height:90px}
.gamelib-admin-game{display:flex;flex-direction:column;gap:2px;min-width:0}
.gamelib-admin-game-title a{color:var(--text)}
.gamelib-admin-sub{display:block;color:var(--gamelib-muted);font-size:var(--font-size-xxs);margin-top:2px}
.gamelib-admin-visible{color:var(--gamelib-brand);font-size:var(--font-size-xs)}
.gamelib-admin-form{padding:18px 20px;max-width:760px}
.gamelib-admin-form h2{margin:0 0 14px;font-size:var(--font-size-md)}
.gamelib-admin-form .row{display:flex;align-items:center;gap:12px}
.gamelib-admin-cancel{color:var(--gamelib-muted);font-size:var(--font-size-sm);text-decoration:none}
.gamelib-admin-fieldset{display:flex;flex-direction:column;gap:12px;border:1px solid var(--gamelib-line);border-radius:var(--gamelib-radius-sm);padding:12px 14px;margin-bottom:12px}
.gamelib-admin-fieldset-title{color:var(--text);font-size:var(--font-size-sm);font-weight:600}
.gamelib-admin-fieldset-switch{flex-direction:row;flex-wrap:wrap;gap:8px 24px}
.gamelib-upload-preview{display:flex;align-items:center;gap:10px}
.gamelib-upload-preview img{width:64px;height:64px;border-radius:10px;border:1px solid var(--gamelib-line);object-fit:cover}
.gamelib-checks{display:flex;flex-wrap:wrap;gap:8px 14px;border:1px solid var(--gamelib-line);border-radius:var(--gamelib-radius-sm);padding:10px 12px;background:var(--gamelib-bg)}
.gamelib-check{display:inline-flex;align-items:center;gap:5px;font-size:var(--font-size-sm);color:var(--text);cursor:pointer}
.gamelib-studio-rows{display:flex;flex-direction:column;gap:8px}
.gamelib-studio-row{display:flex;align-items:center;gap:8px}
.gamelib-studio-row select{flex:1 1 auto;min-width:0;border:1px solid var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);padding:8px 10px;background:var(--gamelib-card);color:var(--text);font-size:var(--font-size-sm)}
.gamelib-studio-remove{flex:0 0 auto;width:30px;height:30px;border:1px solid var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);background:var(--gamelib-card);color:var(--gamelib-muted);font-size:var(--font-size-md);line-height:1;cursor:pointer}
.gamelib-studio-remove:hover{color:var(--danger);border-color:var(--danger)}
.gamelib-studio-row-actions{display:flex;align-items:center;gap:14px;margin-top:2px}
.gamelib-studio-add{border:1px dashed var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);background:none;color:var(--gamelib-muted);font-size:var(--font-size-xs);padding:6px 14px;cursor:pointer}
.gamelib-studio-add:hover{color:var(--gamelib-brand);border-color:var(--gamelib-brand);background:var(--gamelib-brand-soft)}
.gamelib-studio-create{display:inline-flex;align-items:center;gap:4px;color:var(--gamelib-brand);font-size:var(--font-size-xs);text-decoration:none}
.gamelib-studio-create:hover{text-decoration:underline}
.gamelib-studio-none{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px dashed var(--gamelib-line-strong);border-radius:var(--gamelib-radius-sm);padding:12px}
.gamelib-admin table.gamelib-admin-table td,.gamelib-admin table.gamelib-admin-table th{vertical-align:top}
@keyframes gamelib-fade-in{from{opacity:0}to{opacity:1}}
/* ---- 游戏详情三栏布局（参考 TapTap 应用页）：左 220 / 中 ≤600 / 右 260 ---- */
.gamelib-app{display:flex;flex-direction:column}
.gamelib-app-layout{display:grid;grid-template-columns:220px minmax(0,600px) 260px;justify-content:center;gap:20px;align-items:start}
.gamelib-app-main{width:100%;max-width:600px;min-width:0;display:flex;flex-direction:column;gap:16px}
.gamelib-app-rail{display:flex;flex-direction:column;gap:14px;min-width:0;position:sticky;top:12px}
.gamelib-app-card{border:0;border-radius:var(--gamelib-radius);background:var(--gamelib-card);box-shadow:0 1px 4px rgba(15,23,42,.05);padding:14px 16px}
.gamelib-app-card-title{display:flex;align-items:center;gap:6px;color:var(--text);font-size:var(--font-size-sm);font-weight:700;margin-bottom:10px}
.gamelib-app-card-title .gamelib-meta-icon{width:15px;height:15px;flex-basis:15px;color:var(--gamelib-brand)}
.gamelib-rail-list{display:flex;flex-direction:column;gap:2px}
.gamelib-rail-item{display:flex;align-items:center;gap:8px;padding:6px 6px;border-radius:var(--gamelib-radius-sm);text-decoration:none;transition:background var(--transition-normal)}
.gamelib-rail-item:hover{background:var(--gamelib-bg)}
.gamelib-rail-rank{flex:0 0 16px;width:16px;text-align:center;font-size:var(--font-size-xs);font-weight:700;font-style:italic;color:#c3c8cf}
.gamelib-rail-rank-top{color:var(--gamelib-brand)}
.gamelib-rail-name{flex:1 1 auto;min-width:0;color:var(--text);font-size:var(--font-size-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gamelib-rail-meta{flex:0 0 auto;color:var(--gamelib-muted);font-size:var(--font-size-xxs);white-space:nowrap}
.gamelib-rail-icon{flex:0 0 auto;width:34px;height:34px;border-radius:8px;overflow:hidden;line-height:0;background:var(--gamelib-bg)}
.gamelib-rail-icon-img{width:100%;height:100%;object-fit:cover;display:block}
.gamelib-rail-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.gamelib-rail-game .gamelib-rail-name{font-size:13px;font-weight:600}
.gamelib-rail-tags{display:flex;flex-wrap:wrap;gap:6px}
.gamelib-rail-tag{display:inline-flex;align-items:center;gap:4px;border-radius:999px;background:var(--gamelib-bg);color:var(--gamelib-muted);font-size:var(--font-size-xxs);padding:4px 10px;text-decoration:none;white-space:nowrap;transition:background var(--transition-normal),color var(--transition-normal)}
.gamelib-rail-tag small{color:inherit;opacity:.7}
.gamelib-rail-tag:hover{background:var(--gamelib-brand-soft);color:var(--gamelib-brand)}
.gamelib-app-card .gamelib-stars{margin:8px 0 4px}
.gamelib-app-card .gamelib-star{width:16px;height:16px}
/* 中屏：双栏（隐藏左栏）；窄屏：右栏移到主内容下方 */
@media (max-width:1180px){
.gamelib-app-layout{grid-template-columns:minmax(0,600px) 260px}
.gamelib-app-rail-l{display:none}
}
@media (max-width:900px){
.gamelib-app-layout{grid-template-columns:minmax(0,1fr)}
.gamelib-app-main{max-width:100%;order:1}
.gamelib-app-rail-r{order:2;width:100%;position:static}
}
@media (max-width:640px){
.gamelib-hero{padding:16px}
.gamelib-hero-main{gap:12px}
.gamelib-game-icon{width:64px;height:64px}
.gamelib-game-hero{padding:14px;gap:12px}
.gamelib-game-side{flex-direction:row;width:100%;align-items:center;justify-content:space-between;gap:10px;margin-left:0}
.gamelib-game-score{flex:1 1 auto;padding:6px 12px}
.gamelib-want{flex:0 0 auto}
.gamelib-want-btn{flex-direction:column;gap:3px;padding:8px 14px}
.gamelib-gallery-thumb{flex-basis:72px;width:72px;height:45px}
.gamelib-grid{grid-template-columns:1fr;gap:10px}
.gamelib-card-media{flex-basis:70px;width:70px;height:70px}
.gamelib-review-score{margin-left:0;width:100%}
.gamelib-review-manage{margin-left:0}
.gamelib-review-form-row{gap:10px}
.gamelib-review-form-avatar{flex-basis:34px;width:34px;height:34px}
.gamelib-review-form-bar .gamelib-review-submit{margin-left:0;width:100%}
.gamelib-tab{padding:9px 13px}
.gamelib-pane{padding:14px}
.gamelib-picker-star{width:24px;height:24px}
.gamelib-picker-star svg{width:24px;height:24px}
}
/* help_center */
.help-center-wrap{max-width:860px;margin:0 auto;display:grid;gap:14px}
.help-center-wrap h2{font-size:var(--font-size-xl);margin:0;color:var(--text)}
.help-center-search{display:flex;gap:8px}
.help-center-search input{flex:1;min-width:0;box-sizing:border-box;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);font-size:var(--font-size-md)}
.help-center-search input:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--focus-ring)}
.help-center-nav{display:flex;flex-wrap:wrap;gap:6px}
.help-center-nav-link{padding:4px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text);text-decoration:none;font-size:var(--font-size-sm)}
.help-center-nav-link:hover{border-color:var(--brand);color:var(--brand)}
.help-center-nav-active{background:var(--brand);border-color:var(--brand);color:var(--inverse-text)}
.help-center-empty{padding:24px;text-align:center;color:var(--text-muted);font-size:var(--font-size-md);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}
.help-center-list{display:grid;gap:8px}
.help-center-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);overflow:hidden}
.help-center-question{display:flex;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;list-style:none;font-size:var(--font-size-md);color:var(--text);font-weight:600}
.help-center-question::-webkit-details-marker{display:none}
.help-center-cat{font-size:var(--font-size-xs);padding:1px 8px;border-radius:var(--radius);background:var(--brand-soft);color:var(--brand);white-space:nowrap}
.help-center-question-text{overflow-wrap:anywhere}
.help-center-answer{padding:0 14px 14px;color:var(--text);font-size:var(--font-size-md)}
.help-center-answer .post-content{padding:0}
.help-center-admin-list{display:grid;gap:10px;margin-bottom:16px}
.help-center-admin-row{padding:12px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--panel)}
.help-center-admin-meta{color:var(--text-muted);font-size:var(--font-size-sm);margin:4px 0 0}
.help-center-admin-ops{display:flex;align-items:center;gap:10px;margin-top:8px}
.help-center-admin-form{margin-bottom:16px}
/* leaderboard */
/* 页面卡片：与 dev_docs / like_coin 等插件页面同一语言——
   var(--panel) 白底 + 14px 圆角，内部保持原有布局。
   已有白底分层，不再画外边框。 */
.leaderboard-page{overflow:clip;border-radius:14px;background:var(--panel)}
.leaderboard-header{padding:20px 20px 14px}
.leaderboard-title{margin:0;font-size:var(--font-size-xl);font-weight:700;color:var(--text);line-height:1.3}
.leaderboard-subtitle{margin:4px 0 0;font-size:var(--font-size-sm);color:var(--text-subtle)}
.leaderboard-tabs{display:inline-flex;align-items:center;gap:4px;padding:4px;margin:0 20px 16px;background:var(--bg);border:1px solid var(--line-soft);border-radius:10px}
.leaderboard-tab{padding:7px 16px;border-radius:7px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-muted);text-decoration:none;transition:all .2s ease;white-space:nowrap}
.leaderboard-tab:hover{color:var(--brand)}
.leaderboard-tab.active{background:var(--brand);color:var(--inverse-text);box-shadow:var(--shadow-base)}
.leaderboard-podium{display:flex;justify-content:center;align-items:flex-end;gap:12px;padding:0 20px 20px}
.leaderboard-podium-col{display:flex;flex-direction:column;align-items:center;flex:0 1 200px;min-width:0;text-decoration:none}
.leaderboard-podium-col-1{flex-basis:220px}
.leaderboard-podium-col-2{flex-basis:190px}
.leaderboard-podium-col-3{flex-basis:170px}
.leaderboard-podium-profile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px 12px;border-radius:16px 16px 0 0;width:100%;text-decoration:none;transition:all .2s ease;position:relative}
.leaderboard-podium-col-1 .leaderboard-podium-profile{background:linear-gradient(180deg,#fffbeb,#fef3c7);padding-top:24px}
.leaderboard-podium-col-2 .leaderboard-podium-profile{background:linear-gradient(180deg,#f8fafc,#f1f5f9);padding-top:16px}
.leaderboard-podium-col-3 .leaderboard-podium-profile{background:linear-gradient(180deg,#fff7ed,#fed7aa);padding-top:12px}
.leaderboard-podium-profile:hover{filter:brightness(.97)}
.leaderboard-podium-avatar{flex:0 0 56px;width:56px;height:56px;border-radius:50%;overflow:hidden;border:3px solid var(--line);display:block}
.leaderboard-podium-col-1 .leaderboard-podium-avatar{border-color:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.2);flex:0 0 64px;width:64px;height:64px}
.leaderboard-podium-col-2 .leaderboard-podium-avatar{border-color:#94a3b8;box-shadow:0 0 0 4px rgba(148,163,184,.2);flex:0 0 52px;width:52px;height:52px}
.leaderboard-podium-col-3 .leaderboard-podium-avatar{border-color:#d97706;box-shadow:0 0 0 4px rgba(217,119,6,.15);flex:0 0 48px;width:48px;height:48px}
.leaderboard-podium-avatar .avatar-img{width:100%;height:100%}
.leaderboard-podium-name{font-size:var(--font-size-sm);font-weight:700;color:var(--text);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;text-align:center}
.leaderboard-podium-col-1 .leaderboard-podium-name{font-size:var(--font-size-lg);color:#92400e}
.leaderboard-podium-col-2 .leaderboard-podium-name{color:#334155}
.leaderboard-podium-col-3 .leaderboard-podium-name{color:#78350f}
.leaderboard-podium-group{color:var(--text-subtle);font-size:10px;line-height:1.2;display:block;text-align:center}
.leaderboard-podium-count{font-size:var(--font-size-sm);font-weight:700;white-space:nowrap;line-height:1;padding:5px 14px;border-radius:999px;display:inline-block}
.leaderboard-podium-col-1 .leaderboard-podium-count{background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;box-shadow:0 2px 8px rgba(245,158,11,.35);font-size:var(--font-size-md)}
.leaderboard-podium-col-2 .leaderboard-podium-count{background:linear-gradient(135deg,#94a3b8,#64748b);color:#fff;box-shadow:0 2px 8px rgba(100,116,139,.25)}
.leaderboard-podium-col-3 .leaderboard-podium-count{background:linear-gradient(135deg,#d97706,#b45309);color:#fff;box-shadow:0 2px 8px rgba(180,83,9,.25)}
.leaderboard-podium-step{display:flex;align-items:center;justify-content:center;width:100%;font-size:var(--font-size-sm);font-weight:800;color:rgba(255,255,255,.8)}
.leaderboard-podium-col-1 .leaderboard-podium-step{height:60px;background:linear-gradient(135deg,#f59e0b,#ef4444);font-size:var(--font-size-lg)}
.leaderboard-podium-col-2 .leaderboard-podium-step{height:44px;background:linear-gradient(135deg,#94a3b8,#64748b)}
.leaderboard-podium-col-3 .leaderboard-podium-step{height:32px;background:linear-gradient(135deg,#d97706,#b45309)}
.leaderboard-list{display:grid;gap:6px;padding:0 20px 20px}
.leaderboard-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid transparent;border-radius:10px;background:var(--bg);text-decoration:none;transition:all .2s ease}
.leaderboard-item:hover{background:var(--panel);border-color:var(--brand-soft);box-shadow:var(--shadow-medium)}
.leaderboard-rank-badge{flex:0 0 auto;min-width:30px;height:30px;padding:0 8px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:var(--font-size-sm);font-weight:700;line-height:1;transition:all .2s ease}
.leaderboard-rank-1{background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;box-shadow:0 2px 8px rgba(245,158,11,.35)}
.leaderboard-rank-2{background:linear-gradient(135deg,#94a3b8,#64748b);color:#fff;box-shadow:0 2px 8px rgba(100,116,139,.25)}
.leaderboard-rank-3{background:linear-gradient(135deg,#d97706,#b45309);color:#fff;box-shadow:0 2px 8px rgba(180,83,9,.25)}
.leaderboard-rank-other{background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs)}
.leaderboard-self-item .leaderboard-rank-badge:not(.leaderboard-rank-1):not(.leaderboard-rank-2):not(.leaderboard-rank-3){background:var(--brand);color:var(--inverse-text)}
.leaderboard-avatar{flex:0 0 36px;width:36px;height:36px;border-radius:50%;overflow:hidden}
.leaderboard-avatar .avatar-img{width:36px;height:36px}
.leaderboard-body{min-width:0;flex:1;display:grid;gap:2px}
.leaderboard-name{font-size:var(--font-size-md);font-weight:600;color:var(--text);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.leaderboard-item:hover .leaderboard-name{color:var(--brand)}
.leaderboard-group{color:var(--text-subtle);font-size:10px;line-height:1.3}
.leaderboard-count{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:8px;font-size:var(--font-size-sm);font-weight:700;white-space:nowrap;line-height:1;min-height:32px;background:var(--brand-soft);color:var(--brand)}
.leaderboard-empty{padding:40px 20px;text-align:center;color:var(--text-subtle);font-size:var(--font-size-sm)}
.leaderboard-card .leaderboard-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.leaderboard-card .leaderboard-card-more{color:var(--text-subtle);font-size:var(--font-size-xs);white-space:nowrap;text-decoration:none}
.leaderboard-card .leaderboard-card-more:hover{color:var(--brand)}
.leaderboard-card .leaderboard-card-list .leaderboard-item{padding:6px 0;border:0;border-radius:0;background:transparent;gap:8px;min-height:44px}
.leaderboard-card .leaderboard-card-list .leaderboard-item:before{display:none}
.leaderboard-card .leaderboard-card-list .leaderboard-item:hover{background:transparent}
.leaderboard-card .leaderboard-card-list .leaderboard-rank-badge{flex:0 0 auto;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:5px;font-size:11px}
.leaderboard-card .leaderboard-card-list .leaderboard-rank-1,.leaderboard-card .leaderboard-card-list .leaderboard-rank-2,.leaderboard-card .leaderboard-card-list .leaderboard-rank-3{background:var(--brand-soft);color:var(--brand);box-shadow:none}
.leaderboard-card .leaderboard-card-list .leaderboard-avatar{flex:0 0 28px;width:28px;height:28px}
.leaderboard-card .leaderboard-card-list .leaderboard-avatar .avatar-img{width:28px;height:28px}
.leaderboard-card .leaderboard-card-list .leaderboard-name{font-size:var(--font-size-sm)}
.leaderboard-card .leaderboard-card-list .leaderboard-count{padding:3px 8px;font-size:11px;min-height:auto;border-radius:5px}
.leaderboard-card .leaderboard-card-list .leaderboard-group{display:none}
@media(max-width:600px){
.leaderboard-header{padding:14px 14px 12px}
.leaderboard-title{font-size:var(--font-size-lg)}
.leaderboard-tabs{padding:4px;margin:0 14px 12px}
.leaderboard-tab{padding:6px 12px;font-size:12px}
.leaderboard-podium{gap:8px;padding:0 10px 14px}
.leaderboard-podium-col{flex-basis:1px;flex:1}
.leaderboard-podium-col-1 .leaderboard-podium-profile{padding-top:16px}
.leaderboard-podium-col-2 .leaderboard-podium-profile{padding-top:10px}
.leaderboard-podium-col-3 .leaderboard-podium-profile{padding-top:8px}
.leaderboard-podium-avatar{flex:0 0 40px;width:40px;height:40px;border-width:2px}
.leaderboard-podium-col-1 .leaderboard-podium-avatar{flex:0 0 48px;width:48px;height:48px;border-width:3px}
.leaderboard-podium-col-2 .leaderboard-podium-avatar{flex:0 0 38px;width:38px;height:38px}
.leaderboard-podium-col-3 .leaderboard-podium-avatar{flex:0 0 34px;width:34px;height:34px}
.leaderboard-podium-name{font-size:12px}
.leaderboard-podium-col-1 .leaderboard-podium-name{font-size:var(--font-size-sm)}
.leaderboard-podium-count{font-size:11px;padding:3px 10px}
.leaderboard-podium-col-1 .leaderboard-podium-count{font-size:12px}
.leaderboard-podium-col-1 .leaderboard-podium-step{height:44px;font-size:var(--font-size-md)}
.leaderboard-podium-col-2 .leaderboard-podium-step{height:34px}
.leaderboard-podium-col-3 .leaderboard-podium-step{height:26px}
.leaderboard-list{gap:5px;padding:0 10px 16px}
.leaderboard-item{padding:10px 12px;gap:10px}
.leaderboard-rank-badge{flex:0 0 auto;min-width:26px;height:26px;padding:0 6px;box-sizing:border-box;font-size:12px}
.leaderboard-name{font-size:var(--font-size-sm)}
.leaderboard-count{padding:5px 10px;font-size:12px;min-height:28px;display:inline-flex;align-items:center;justify-content:center}
}
/* link_exchange */
/* 侧栏卡片：两列友链入口 */
.link-exchange-card .link-exchange-card-inner { padding: 10px 14px }
.link-exchange-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px }
.link-exchange-card-title { display: flex; align-items: center; gap: 6px; min-width: 0; color: var(--text); font-size: var(--font-size-sm); font-weight: 600; line-height: 1.3; white-space: nowrap }
.link-exchange-card-icon { display: inline-flex; flex: 0 0 auto; color: var(--brand) }
.link-exchange-card-icon svg { display: block; width: 15px; height: 15px }
.link-exchange-card-more { flex: 0 0 auto; color: var(--text-subtle); font-size: var(--font-size-xs); text-decoration: none; white-space: nowrap }
.link-exchange-card-more:hover { color: var(--brand) }
.link-exchange-card-list { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 12px; row-gap: 2px; margin: 10px 0 0; padding: 0; list-style: none }
.link-exchange-card-list a { display: flex; align-items: center; gap: 6px; overflow: hidden; color: var(--text-muted); font-size: var(--font-size-sm); line-height: 1.9; text-decoration: none }
.link-exchange-card-list a:hover { color: var(--brand) }
.link-exchange-card-list .link-exchange-card-logo { flex: 0 0 auto; width: 16px; height: 16px; border-radius: 4px; object-fit: contain }
.link-exchange-card-list .link-exchange-card-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.link-exchange-card-list .link-exchange-card-empty { grid-column: 1 / -1; overflow: hidden; color: var(--text-subtle); font-size: var(--font-size-sm); line-height: 1.9; text-overflow: ellipsis; white-space: nowrap }

/* 目录页 */
.link-exchange-page { --link-exchange-hero-size: 24px; --link-exchange-logo-size: 38px }
.link-exchange-hero {
  position: relative;
  overflow: hidden;
  padding: 18px;
  border: 1px solid rgba(17, 24, 39, 0.07);
  border-radius: var(--radius);
  background: var(--panel);
  background:
    radial-gradient(130% 150% at 6% 28%, color-mix(in srgb, #4ca4ff 16%, transparent), rgba(76, 164, 255, 0) 55%),
    linear-gradient(108deg,
      color-mix(in srgb, #4ca4ff 18%, var(--panel)) 0%,
      var(--panel) 47%,
      color-mix(in srgb, #f4c463 18%, var(--panel)) 100%);
  box-shadow: 0 1px 2px rgba(17, 24, 39, 0.05), 0 18px 40px -18px rgba(17, 24, 39, 0.20);
}
.link-exchange-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px }
.link-exchange-hero-icon { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--brand-soft); border-radius: 14px; background: var(--panel); color: var(--brand); box-shadow: var(--shadow-base) }
.link-exchange-hero-icon svg { width: 22px; height: 22px }
.link-exchange-hero-title { margin: 14px 0 0; color: var(--text); font-size: var(--link-exchange-hero-size); font-weight: 700; line-height: 1.2 }
.link-exchange-hero-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px }
.link-exchange-badges { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0 }
.link-exchange-badge { display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border: 1px solid var(--line-soft); border-radius: 999px; background: var(--panel); color: var(--text-muted); font-size: var(--font-size-sm); line-height: 1.4; white-space: nowrap }
.link-exchange-badge svg { flex: 0 0 auto; width: 13px; height: 13px }
.link-exchange-badge b { color: var(--text); font-weight: 600 }
.link-exchange-badge-open { border-color: var(--brand-soft); background: var(--brand-soft); color: var(--brand) }
.link-exchange-badge-open b { color: var(--brand) }
.link-exchange-badge-closed { color: var(--text-subtle) }
.link-exchange-btn-ghost { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; min-height: 32px; padding: 7px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel); color: var(--text); font-size: var(--font-size-sm); font-weight: 500; text-decoration: none; white-space: nowrap }
.link-exchange-btn-ghost:hover { border-color: var(--brand); color: var(--brand) }
.link-exchange-apply-btn { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; min-height: 34px; padding: 8px 16px; border: 0; border-radius: 999px; background: var(--inverse); color: var(--inverse-text); font: inherit; font-size: var(--font-size-sm); font-weight: 600; cursor: pointer }
.link-exchange-apply-btn svg { width: 14px; height: 14px }
.link-exchange-apply-btn:hover { background: var(--inverse-border); color: var(--inverse-text) }
.link-exchange-apply-btn[disabled] { opacity: .5; cursor: not-allowed }
.link-exchange-layout { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 14px; margin-top: 14px }
.link-exchange-panel { padding: 16px }
.link-exchange-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px }
.link-exchange-panel-head h2 { display: flex; align-items: center; gap: 7px; margin: 0; color: var(--text); font-size: var(--font-size-lg); font-weight: 700; line-height: 1.3 }
.link-exchange-panel-icon { display: inline-flex; color: var(--brand) }
.link-exchange-panel-icon svg { width: 17px; height: 17px }
.link-exchange-catalog-count { flex: 0 0 auto; color: var(--text-subtle); font-size: var(--font-size-xs); letter-spacing: .04em }
.link-exchange-intro-body p { margin: 0 0 10px; color: var(--text-muted); font-size: var(--font-size-sm); line-height: 1.8 }
.link-exchange-intro-body p:last-child { margin-bottom: 0 }
.link-exchange-intro-body .link-exchange-intro-state { padding: 8px 10px; border-radius: var(--radius-sm); background: var(--bg); color: var(--text-subtle); font-size: var(--font-size-xs) }
.link-exchange-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px }
.link-exchange-item { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 10px 12px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--panel); color: var(--text); text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease }
.link-exchange-item:hover { border-color: var(--brand); color: var(--text); box-shadow: var(--shadow-base) }
.link-exchange-logo { position: relative; display: grid; flex: 0 0 var(--link-exchange-logo-size); place-items: center; width: var(--link-exchange-logo-size); height: var(--link-exchange-logo-size); overflow: hidden; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--bg) }
.link-exchange-logo img { position: relative; z-index: 1; display: block; width: 100%; height: 100%; object-fit: contain; background: var(--panel) }
.link-exchange-logo-letter { position: absolute; inset: 0; display: grid; place-items: center; color: var(--text-subtle); font-size: var(--font-size-md); font-weight: 700 }
.link-exchange-logo-failed img { display: none }
.link-exchange-item-body { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; gap: 2px }
.link-exchange-item-name { overflow: hidden; color: var(--text); font-size: var(--font-size-sm); font-weight: 600; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap }
.link-exchange-item-domain { overflow: hidden; color: var(--text-subtle); font-size: var(--font-size-xs); line-height: 1.4; text-overflow: ellipsis; white-space: nowrap }
.link-exchange-item-arrow { display: inline-flex; flex: 0 0 auto; color: var(--text-disabled) }
.link-exchange-item-arrow svg { width: 14px; height: 14px }
.link-exchange-item:hover .link-exchange-item-arrow { color: var(--brand) }
.link-exchange-empty { grid-column: 1 / -1; margin: 0; padding: 26px 10px; color: var(--text-subtle); font-size: var(--font-size-sm); text-align: center }

/* 申请弹窗 */
.link-exchange-modal { position: fixed; inset: 0; z-index: 120; display: flex; align-items: center; justify-content: center; padding: 16px }
.link-exchange-modal[hidden] { display: none }
.link-exchange-modal-mask { position: absolute; inset: 0; background: var(--backdrop) }
.link-exchange-modal-panel { position: relative; display: flex; flex-direction: column; width: 100%; max-width: 620px; max-height: calc(100vh - 32px); overflow: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); box-shadow: 0 20px 60px var(--shadow-medium) }
.link-exchange-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 20px; border-bottom: 1px solid var(--line-soft) }
.link-exchange-modal-head h2 { margin: 0; color: var(--text); font-size: var(--font-size-lg); font-weight: 700; line-height: 1.3 }
.link-exchange-modal-head p { margin: 4px 0 0; color: var(--text-subtle); font-size: var(--font-size-xs); line-height: 1.6 }
.link-exchange-modal-x { flex: 0 0 auto; padding: 4px 8px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-muted); font: inherit; font-size: var(--font-size-sm); cursor: pointer }
.link-exchange-modal-x:hover { background: var(--bg); color: var(--text) }
.link-exchange-form { display: block; padding: 18px 20px 0 }
.link-exchange-notice { margin-bottom: 16px; padding: 12px 14px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--bg) }
.link-exchange-notice strong { display: block; margin-bottom: 4px; color: var(--text); font-size: var(--font-size-sm) }
.link-exchange-notice p { margin: 0; color: var(--text-muted); font-size: var(--font-size-sm); line-height: 1.7 }
.link-exchange-message { margin-bottom: 14px; padding: 9px 12px; border: 1px solid var(--danger-soft, var(--line)); border-radius: var(--radius-sm); background: var(--danger-soft, var(--bg)); color: var(--danger); font-size: var(--font-size-sm); line-height: 1.6 }
.link-exchange-message[hidden] { display: none }
.link-exchange-field { display: block; margin-bottom: 16px }
.link-exchange-field > span { display: block; color: var(--text); font-size: var(--font-size-md); font-weight: 600; line-height: 1.4 }
.link-exchange-field > small { display: block; margin: 2px 0 8px; color: var(--text-subtle); font-size: var(--font-size-xs); line-height: 1.5 }
.link-exchange-field input { width: 100%; box-sizing: border-box; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--panel); color: var(--text); font: inherit; font-size: var(--font-size-sm) }
.link-exchange-field input:focus { border-color: var(--brand); outline: 2px solid var(--focus-ring); outline-offset: 0 }
.link-exchange-form-foot { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin: 4px -20px 0; padding: 14px 20px; border-top: 1px solid var(--line-soft) }
.link-exchange-btn-primary { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 8px 18px; border: 0; border-radius: 999px; background: var(--brand); color: var(--inverse-text); font: inherit; font-size: var(--font-size-sm); font-weight: 600; cursor: pointer }
.link-exchange-btn-primary:hover { background: var(--brand-hover); color: var(--inverse-text) }
.link-exchange-btn-primary[disabled] { opacity: .6; cursor: not-allowed }

/* 后台 */
.link-exchange-admin .admin-list-panel { margin-top: 16px }
.link-exchange-admin-op { color: var(--brand); font-size: var(--font-size-sm); text-decoration: none; white-space: nowrap }
.link-exchange-admin .admin-inline-ops .link-exchange-admin-disabled { opacity: .45; cursor: not-allowed }
.link-exchange-admin .admin-inline-ops .link-exchange-admin-disabled:hover { border-color: var(--line); background: var(--panel); color: var(--text-muted) }
.link-exchange-admin-cancel { align-self: center; color: var(--text-muted); font-size: var(--font-size-sm); text-decoration: none }
.link-exchange-admin-preview { display: flex; align-items: center; gap: 8px; min-width: 0 }
.link-exchange-admin-logo { width: 24px; height: 24px; margin-right: 6px; border: 1px solid var(--line-soft); border-radius: 6px; object-fit: contain; vertical-align: middle; background: var(--bg) }
.link-exchange-admin-logo-preview { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 2px 0 4px; padding: 10px; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--bg) }
.link-exchange-admin-logo-preview img { width: 58px; height: 58px; border: 1px solid var(--line-soft); border-radius: 8px; object-fit: contain; background: var(--panel) }
.link-exchange-admin-logo-preview span { color: var(--text-subtle); font-size: var(--font-size-xs); word-break: break-all }

@media (max-width: 760px) {
  .link-exchange-layout { grid-template-columns: minmax(0, 1fr) }
  .link-exchange-page { --link-exchange-hero-size: var(--font-size-xl) }
  .link-exchange-hero { padding: 14px }
  .link-exchange-hero-title { margin-top: 10px }
  .link-exchange-hero-foot { gap: 10px }
  .link-exchange-hero-foot > * { width: 100% }
  .link-exchange-apply-btn { justify-content: center }
  .link-exchange-badges { width: 100% }
  .link-exchange-grid { grid-template-columns: minmax(0, 1fr) }
  .link-exchange-form { padding: 14px 14px 0 }
  .link-exchange-form-foot { margin: 4px -14px 0; padding: 12px 14px }
  .link-exchange-modal { padding: 10px }
  .link-exchange-modal-panel { max-height: calc(100vh - 20px) }
}
/* lottery */
.lottery-title-status{display:inline-flex;align-items:center;min-height:20px;margin-left:6px;padding:0 8px;border-radius:999px;font-size:var(--font-size-xs);font-weight:600;white-space:nowrap}.lottery-title-status.open{background:var(--warning-soft);color:var(--warning)}.lottery-title-status.done{background:var(--success-soft);color:var(--success)}.lottery-card{display:grid;gap:11px;margin:12px 0;padding:16px;border:1px solid var(--warning);border-radius:var(--radius);background:linear-gradient(135deg,var(--warning-soft),var(--panel) 72%)}.lottery-card.is-done{border-color:var(--success);background:linear-gradient(135deg,var(--success-soft),var(--panel) 72%)}.lottery-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.lottery-card>header b{font-size:var(--font-size-lg)}.lottery-card>header span{display:block;margin-top:2px;color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-card>header em{flex:0 0 auto;padding:5px 11px;border-radius:999px;background:var(--panel);color:var(--text);font-size:var(--font-size-sm);font-style:normal;font-weight:600}.lottery-prizes{display:grid;gap:7px;margin:0;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}.lottery-prizes>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.lottery-prizes strong{font-size:var(--font-size-md)}.lottery-prizes span{color:var(--text-muted);font-size:var(--font-size-xs);text-align:right}.lottery-prize-empty strong{color:var(--text-muted);font-weight:400}.lottery-condition{color:var(--text);font-size:var(--font-size-sm);font-weight:600}.lottery-eligibility{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-hint{padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-muted);font-size:var(--font-size-sm)}.lottery-hint.is-joined{color:var(--success)}.lottery-hint.is-blocked{color:var(--danger)}.lottery-result{display:grid;gap:8px}.lottery-result-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.lottery-result-head b{font-size:var(--font-size-lg)}.lottery-result-head span{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-winners{display:grid;gap:8px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line-soft)}.lottery-winner-rows{display:flex;flex-wrap:wrap;gap:6px 16px}.lottery-winner-prize{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.lottery-winner-prize strong{font-size:var(--font-size-md)}.lottery-winner-prize span{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-winner-item{display:flex;align-items:center;gap:8px;min-width:0;padding:6px 10px;border-radius:var(--radius-sm);background:var(--panel)}.lottery-winner-item .avatar-profile-link{display:block;flex:0 0 auto;width:20px;height:20px;border-radius:50%}.lottery-winner-item>a{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:var(--font-size-sm)}.lottery-winner-item>a:hover{color:var(--brand)}.lottery-winner-item em{padding:1px 7px;border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs);font-style:normal;white-space:nowrap}.lottery-winner-claim{flex:none;color:var(--brand);font-size:var(--font-size-xs);font-weight:600}.lottery-winner-empty{padding:8px 10px;color:var(--text-muted);font-size:var(--font-size-sm)}.lottery-ledger{padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-fair{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-fair summary{cursor:pointer;color:var(--text);font-size:var(--font-size-sm)}.lottery-fair p{margin:7px 0}.lottery-fair code{display:block;margin-top:4px;padding:7px 9px;border-radius:var(--radius-sm);background:var(--panel);font-family:var(--font-mono);overflow-wrap:anywhere}.lottery-card-manage{justify-self:start;color:var(--text);font-size:var(--font-size-sm);font-weight:600}.lottery-manage{display:grid;gap:12px}.lottery-back{color:var(--text-muted);font-size:var(--font-size-sm)}.lottery-manage-state{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:13px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg)}.lottery-manage-state span{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-manage-state strong{font-size:var(--font-size-md)}.lottery-form,.lottery-prize-add{display:grid;gap:11px}.lottery-manage .grid{grid-template-columns:minmax(0,1fr);gap:5px;margin:0}.lottery-manage .grid>span{padding-top:0}.lottery-manage .grid input,.lottery-manage .grid select{width:100%;max-width:none}.lottery-prize-add{margin-top:13px;padding-top:13px;border-top:1px solid var(--line-soft)}.lottery-note{margin:0;color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-danger{display:flex;gap:9px;flex-wrap:wrap}.lottery-compose{display:grid;gap:8px;margin:10px 0;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg)}.lottery-compose-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.lottery-compose-head a{color:var(--brand);font-size:var(--font-size-sm)}.lottery-compose-details summary,.lottery-compose-advanced summary{display:flex;align-items:center;cursor:pointer;font-weight:600;list-style:none}.lottery-compose-details summary::-webkit-details-marker,.lottery-compose-advanced summary::-webkit-details-marker{display:none}.lottery-compose-details summary:before,.lottery-compose-advanced summary:before{content:"";width:0;height:0;margin-right:8px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:6px solid currentColor;transition:transform .15s ease}.lottery-compose-details[open]>summary:before,.lottery-compose-advanced[open]>summary:before{transform:rotate(90deg)}.lottery-compose-body{display:grid;gap:11px;margin-top:11px}.lottery-compose-advanced{padding:10px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--panel)}.lottery-compose-advanced>div{margin-top:10px}.lottery-compose-toggle{display:flex;align-items:center;gap:9px;font-size:var(--font-size-sm)}.lottery-compose-toggle input[type=checkbox]{flex:0 0 38px;width:38px;min-width:38px;margin:0}.lottery-compose-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.lottery-compose-note{margin:0;color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-admin{display:block}.lottery-admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}.lottery-admin-stat{display:grid;gap:3px;padding:13px 14px;border:0;border-radius:var(--radius-sm);background:var(--bg);box-shadow:none}.lottery-admin-stat span{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-admin-stat b{color:var(--brand);font-size:var(--font-size-xl);font-variant-numeric:tabular-nums}.lottery-admin-section{display:grid;gap:10px;margin-top:18px;padding-top:0;border-top:0}.lottery-admin-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.lottery-admin-section-head h3{margin:0;color:var(--text);font-size:var(--font-size-md)}.lottery-admin-section-head span{color:var(--text-muted);font-size:var(--font-size-xs)}.lottery-admin-form-card{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.lottery-admin .lottery-form{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin:0;gap:10px}.lottery-admin .lottery-form>.grid{grid-template-columns:1fr;gap:5px;min-width:0;margin:0;padding:12px;border:0;border-radius:var(--radius-sm);background:var(--bg)}.lottery-admin .lottery-form>.grid>span{padding:0;color:var(--text-muted);font-size:var(--font-size-sm)}.lottery-admin .lottery-form>.grid input:not([type=checkbox]),.lottery-admin .lottery-form>.grid select{box-sizing:border-box;width:100%;max-width:none;min-height:38px;margin:0}.lottery-admin .lottery-form>.lottery-admin-field-wide{display:grid;grid-column:1/-1!important;justify-self:stretch;width:100%;min-width:0}.lottery-admin .lottery-form>button{grid-column:1/-1}.lottery-admin .lottery-form>button{justify-self:start;margin-top:2px}.lottery-group-checks{display:flex;flex-wrap:wrap;width:100%;min-width:0;gap:9px}.lottery-group-check{display:inline-flex;flex:0 0 auto;align-items:center;gap:6px;min-width:max-content;padding:6px 10px;border:1px solid var(--line);border-radius:999px;font-size:var(--font-size-sm);white-space:nowrap}.lottery-group-check input{flex:0 0 38px}.lottery-group-check span{white-space:nowrap}.lottery-claim-send,.lottery-claim-actions,.lottery-claim-actions form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.lottery-claim-send input,.lottery-claim-actions input{min-width:180px}.lottery-admin-open .admin-object-row{grid-template-columns:minmax(0,1fr) auto}.lottery-admin-open .admin-object-row .admin-inline-ops{grid-column:2;justify-content:flex-end}@media(max-width:720px){.lottery-card>header{flex-direction:column}.lottery-card>header em{align-self:flex-start}.lottery-admin-section-head{align-items:flex-start;flex-direction:column;gap:3px}.lottery-prizes>div{flex-direction:column;gap:2px}.lottery-prizes span{text-align:left}}
/* markdown_textarea */
.markdown-textarea[data-markdown-textarea]{display:flex;align-items:center;flex-wrap:wrap;gap:0;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--brand-soft)}
.markdown-textarea[data-markdown-textarea] button{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:28px;padding:0 7px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}
.markdown-textarea[data-markdown-textarea] button svg{display:block;width:16px;height:16px;flex:0 0 auto}
.markdown-textarea[data-markdown-textarea] button:hover{border-color:var(--line);background:var(--panel);color:var(--text)}
.markdown-textarea[data-markdown-textarea] button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.markdown-textarea-dialog-field{display:grid;gap:5px;color:var(--text-muted);font-size:var(--font-size-sm)}
.markdown-textarea-dialog-hint{font-size:var(--font-size-xs);color:var(--text-subtle)}
.markdown-textarea-dialog-field .prompt-input{box-sizing:border-box}
.markdown-textarea-emoji-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}
.markdown-textarea-emoji-grid button{display:grid;place-items:center;min-width:0;height:36px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;font-size:20px;line-height:1;cursor:pointer}
.markdown-textarea-emoji-grid button:hover,.markdown-textarea-emoji-grid button:focus-visible{border-color:var(--line);background:var(--brand-soft);outline:0}
.markdown-table-wrap{box-sizing:border-box;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--line) transparent;scrollbar-gutter:stable}
.markdown-table-wrap table{width:100%;min-width:0;table-layout:auto}
.markdown-table-wrap::-webkit-scrollbar{height:8px}
.markdown-table-wrap::-webkit-scrollbar-track{background:transparent}
.markdown-table-wrap::-webkit-scrollbar-thumb{border-radius:4px;background:var(--line)}
@media(max-width:720px){.markdown-table-wrap table{min-width:max-content}}
.form-panel .markdown-textarea-field{display:grid;row-gap:0;margin:0 0 8px}
.reply-panel .markdown-textarea-field{display:grid;row-gap:0;margin:0}
.markdown-textarea-field>span{margin-bottom:6px;color:var(--text-muted);font-size:var(--font-size-sm)}
.markdown-textarea-field>span>small{display:block}
.reply-panel .markdown-textarea-field>span{display:none}
.markdown-textarea-field>[data-markdown-textarea]{border-bottom:0;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--brand-soft)}
.markdown-textarea-field>textarea[name=body]{border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--panel)}
.markdown-textarea-field:focus-within [data-markdown-textarea]{border-color:var(--brand)}
@media(max-width:480px){.markdown-textarea[data-markdown-textarea]{flex-wrap:nowrap;gap:0;padding:0;overflow-x:auto;scrollbar-width:none}.markdown-textarea[data-markdown-textarea]::-webkit-scrollbar{display:none}.markdown-textarea[data-markdown-textarea] button{flex:0 0 auto;min-width:28px;height:28px;padding:0 6px}}
/* nav_panel */
.nav-panel-wrap {
    padding: 12px 0 6px
}

.nav-panel-title {
    padding: 0 14px;
    margin-bottom: 6px;
    color: var(--text);
    font-size: var(--font-size-md);
    font-weight: 700
}

.nav-panel-list {
    margin: 0;
    padding: 0;
    list-style: none
}

.nav-panel-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 14px;
    color: var(--text-muted);
    font-size: var(--font-size-md);
    line-height: 1.4;
    text-decoration: none;
    transition: background .12s ease, color .12s ease
}

.nav-panel-link:hover {
    background: var(--bg);
    color: var(--text)
}

.nav-panel-link-active {
    color: var(--text);
    font-weight: 700
}

.nav-panel-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap
}

.nav-panel-count {
    flex: 0 0 auto;
    color: var(--text-subtle);
    font-size: var(--font-size-sm);
    font-variant-numeric: tabular-nums
}

.nav-panel-dot {
    flex: 0 0 auto;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--brand)
}

.nav-panel-dot-0 { background: #2f80ed }
.nav-panel-dot-1 { background: #6366f1 }
.nav-panel-dot-2 { background: #64748b }
.nav-panel-dot-3 { background: #e5484d }
.nav-panel-dot-4 { background: #3fb950 }
.nav-panel-dot-5 { background: #0ea5e9 }
.nav-panel-dot-6 { background: #b07d3a }
.nav-panel-dot-7 { background: #8b5cf6 }
.nav-panel-dot-8 { background: #f59e0b }
.nav-panel-dot-9 { background: #14b8a6 }
.nav-panel-dot-10 { background: #ec4899 }
.nav-panel-dot-11 { background: #475569 }

@media (max-width: 600px) {
    .nav-panel-title { font-size: var(--font-size-lg) }
    .nav-panel-link { padding: 11px 14px }
}

/* 侧栏视觉顺序：用户菜单 → 版块列表 → 其他所有卡片（按源序）。
   给 user 和 nav-panel 用负 order 把它们钉在最前面；其它卡片（含 feature / bio /
   quick / stats / notice 以及任何通过 sidebar.stack 钩子插入的卡片，比如排行榜、
   在线用户等）都保持默认 0，自然排在 user 和 nav-panel 之后并按源序排列。
   之前用过显式 order: 1~7，但会把未识别的第三方卡片挤到顶部并打乱源序，故改为负 order。 */
.sidebar > .user-card { order: -2 }
.sidebar > .nav-panel-card { order: -1 }

/* 移动端浏览他人个人主页：核心把整条侧栏提到主题列表之前，会让"版块列表""当前在线"
   等卡片挡在内容上方。这里让侧栏改为内容级排布，只把主人资料卡片留在内容之前，
   版块列表及其他卡片自然排到主题列表之后。 */
@media (max-width: 600px) {
    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .sidebar {
        position: static;
        display: contents;
        width: auto;
        margin: 0
    }

    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .sidebar > * {
        align-self: stretch
    }

    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .sidebar > .user-card,
    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .sidebar > .bio-card {
        order: -1
    }

    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .forum-main {
        align-self: stretch;
        width: 100%
    }

    .profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .sidebar > .nav-panel-card {
        order: 0
    }

}
/* nb_editor */
.nb-editor-admin-settings{max-width:none;gap:16px}
.nb-editor-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.nb-editor-admin-section{display:grid;align-content:start;gap:10px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg)}
.nb-editor-admin-section-head{display:grid;gap:3px;padding-bottom:2px}
.nb-editor-admin-section-head strong{color:var(--text);font-size:var(--font-size-md);line-height:1.4}
.nb-editor-admin-section-head span{color:var(--text-subtle);font-size:var(--font-size-sm);line-height:1.45}
.nb-editor-admin-settings .nb-editor-admin-section>.grid{grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin:0;padding:9px 0;border-top:1px solid var(--line-soft)}
.nb-editor-admin-settings .nb-editor-admin-section-head+.grid{border-top:0}
.nb-editor-admin-settings .nb-editor-admin-section>.grid>span{padding-top:0;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.45}
.nb-editor-admin-settings .nb-editor-admin-section>.grid>span small{margin-top:2px;color:var(--text-subtle);line-height:1.4}
.nb-editor-admin-settings .nb-editor-admin-section>.grid input[type=number]{width:100%;max-width:130px}
.nb-editor-admin-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-top:2px}
.nb-editor-admin-actions button{margin:0}
.nb-editor-admin-actions span{color:var(--text-subtle);font-size:var(--font-size-sm);line-height:1.45}
@media(max-width:720px){
.nb-editor-admin-grid{grid-template-columns:1fr}
.nb-editor-admin-section{padding:12px}
.nb-editor-admin-actions{align-items:stretch;flex-direction:column}
.nb-editor-admin-actions button{width:100%}
}
.nb-editor-field{position:relative;display:grid;row-gap:0;margin:8px 0}
.reply-panel .nb-editor-field{margin:0}
.nb-editor-field>.grid{display:contents}
.nb-editor-field>.grid>span{order:1;margin-bottom:6px;padding-top:0}
.nb-editor-field>.nb-editor{order:2}
/* 正文框固定白底，和主题色工具栏拉开层次；高度仍交给核心按场景决定。 */
.nb-editor-field>.grid>textarea[name=body]{order:3;border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--panel);resize:vertical}
/* 分栏预览：左边写 Markdown，右边常驻渲染结果，随输入更新。 */
.nb-editor-field.nb-editor-live{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.nb-editor-field.nb-editor-live>.grid>span,.nb-editor-field.nb-editor-live>.nb-editor{grid-column:1/-1}
.nb-editor-field.nb-editor-live>.grid>textarea[name=body]{grid-column:1;border-bottom-right-radius:0}
.nb-editor-field.nb-editor-live>.nb-editor-preview{grid-column:2;max-height:60vh;overflow:auto;border-left:0;border-bottom-left-radius:0}
.nb-editor{min-width:0}
/* 工具栏跟随站点主题色，不写死中性灰。 */
.nb-editor-bar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px 6px;border:1px solid var(--line);border-bottom:0;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--brand-soft)}
.nb-editor-field:focus-within>.nb-editor>.nb-editor-bar{border-color:var(--brand)}
/* 选择器带上根容器，避免被 .reply-panel button 之类的核心规则按特异性压过。 */
.nb-editor .nb-editor-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;min-width:30px;min-height:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--brand-hover);cursor:pointer}
.nb-editor .nb-editor-btn svg{width:16px;height:16px}
.nb-editor .nb-editor-btn:hover{border-color:var(--line);background:var(--panel);color:var(--brand-hover)}
.nb-editor .nb-editor-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.nb-editor .nb-editor-btn.nb-editor-btn-active{border-color:var(--brand);background:var(--panel);color:var(--brand-hover)}
.nb-editor-split{width:1px;height:16px;margin:0 4px;background:var(--line)}
.nb-editor-space{flex:1 1 auto;min-width:0}
/* 面板用 fixed 浮层：既不挤占正文框空间，也不会被祖先的 overflow:hidden 裁掉。位置由 JS 计算，优先向上弹。 */
.nb-editor-panel{position:fixed;z-index:60;display:flex;flex-direction:column;width:min(360px,100%);max-height:min(60vh,340px);border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 12px 32px var(--shadow-medium);overflow:hidden}
.nb-editor-panel[hidden]{display:none}
.nb-editor-panel-title{flex:0 0 auto;padding:8px 12px 0;color:var(--text-subtle);font-size:var(--font-size-xs);line-height:1.4}
.nb-editor-items{flex:1 1 auto;min-height:0;display:flex;align-items:flex-start;align-content:flex-start;flex-wrap:wrap;gap:3px;margin:0;padding:8px 10px;overflow-y:auto;list-style:none}
.nb-editor-items[hidden]{display:none}
.nb-editor-items li{padding:4px 7px;border-radius:var(--radius-sm);color:var(--text);font-size:var(--font-size-sm);line-height:1.4;cursor:pointer;user-select:none}
.nb-editor-items li:hover{background:var(--bg)}
.nb-editor-items-emoji li{padding:2px 5px;font-size:var(--font-size-xl)}
.nb-editor-tabs{flex:0 0 auto;display:flex;align-items:stretch;flex-wrap:wrap;border-top:1px solid var(--line);background:var(--brand-soft)}
.nb-editor .nb-editor-tab{min-width:0;min-height:34px;padding:0 12px;border:0;border-radius:0;background:transparent;color:var(--text-muted);font-size:var(--font-size-sm);font-weight:400;cursor:pointer}
.nb-editor .nb-editor-tab:hover{background:var(--panel);color:var(--text)}
.nb-editor .nb-editor-tab.nb-editor-tab-active{background:var(--panel);color:var(--brand-hover);font-weight:500}
/* 预览框借用核心 .post-content 的排版，但要去掉它的 margin-top，否则与正文框差 2px。 */
.nb-editor-preview{order:4;margin-top:0;min-height:120px;padding:12px 14px;border:1px solid var(--line);border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--panel)}
.nb-editor-preview[hidden]{display:none}
.nb-editor-preview-empty{color:var(--text-subtle);font-size:var(--font-size-sm)}
.nb-editor-draft{order:2;display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:7px 10px;border:1px solid var(--line);border-top:0;background:var(--info-soft);color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.5}
.nb-editor-draft[hidden]{display:none}
.nb-editor-draft-text{flex:1 1 auto;min-width:0}
.nb-editor-status{order:2;padding:6px 10px;border:1px solid var(--line);border-top:0;background:var(--brand-soft);color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.5;overflow-wrap:anywhere}
.nb-editor-status[hidden]{display:none}
.nb-editor-draft .nb-editor-draft-action{min-width:0;min-height:26px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}
.nb-editor-draft .nb-editor-draft-action:hover{border-color:var(--brand);color:var(--brand-hover)}
.nb-editor-field.nb-editor-full{position:fixed;inset:0;z-index:60;align-content:start;margin:0;padding:14px;background:var(--panel);overflow:auto}
.nb-editor-field.nb-editor-full>.grid>textarea[name=body]{min-height:calc(100vh - 120px)}
.nb-editor-field.nb-editor-full>.nb-editor-preview{min-height:calc(100vh - 120px)}
.nb-editor-field.nb-editor-full.nb-editor-live>.nb-editor-preview{max-height:none}
.nb-editor-dialog-field{display:grid;gap:5px;color:var(--text-muted);font-size:var(--font-size-sm)}
.nb-editor-dialog-field .prompt-input{box-sizing:border-box}
.nb-editor-upload{display:grid;gap:7px;margin:2px 0 6px;text-align:center}
.nb-editor-upload .nb-editor-upload-pick{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:110px;padding:16px 14px;border:1px dashed var(--line-soft);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-muted);cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}
.nb-editor-upload .nb-editor-upload-pick:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--text)}
.nb-editor-upload .nb-editor-upload-pick.is-busy{opacity:.6;pointer-events:none}
.nb-editor-upload-plus{font-size:36px;line-height:1;color:var(--brand)}
.nb-editor-upload-tip{font-size:var(--font-size-xs);line-height:1.5}
.nb-editor-upload-status{color:var(--text-muted);font-size:var(--font-size-xs);line-height:1.5;overflow-wrap:anywhere}
/* 窄屏放不下两栏，预览改到正文框下方，仍然实时更新。 */
@media(max-width:820px){
.nb-editor-field.nb-editor-live{grid-template-columns:minmax(0,1fr)}
.nb-editor-field.nb-editor-live>.grid>textarea[name=body]{grid-column:1;border-radius:0}
.nb-editor-field.nb-editor-live>.nb-editor-preview{grid-column:1;max-height:50vh;border-left:1px solid var(--line);border-radius:0 0 var(--radius-sm) var(--radius-sm)}
}
@media(max-width:480px){
.nb-editor-bar{gap:1px;padding:4px}
.nb-editor .nb-editor-btn{width:28px;min-width:28px}
.nb-editor-split{margin:0 2px}
}
/* poll */
.poll-create-box,.poll-card{border:1px solid var(--line);background:var(--bg);border-radius:6px;margin:10px 0}
.poll-create-box{padding:10px 12px}
.poll-create-details{display:grid}
.poll-create-details summary{display:inline-flex;align-items:center;width:max-content;max-width:100%;color:var(--text);font-size:var(--font-size-md);font-weight:600;line-height:1.4;cursor:pointer;list-style:none}
.poll-create-details summary::-webkit-details-marker{display:none}
.poll-create-details summary:before{content:"";width:0;height:0;margin-right:8px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:6px solid currentColor;transition:transform .15s ease}
.poll-create-details[open] summary{color:var(--text)}
.poll-create-details[open] summary:before{transform:rotate(90deg)}
.poll-create-inner{display:grid;gap:10px;margin-top:8px}
.poll-create-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 8px}
.poll-more-options{display:grid;grid-column:1/-1;gap:6px;margin-top:3px}
.poll-more-options summary{width:max-content;max-width:100%;color:var(--brand);font-size:12px;cursor:pointer;list-style:none}
.poll-more-options summary::-webkit-details-marker{display:none}
.poll-more-options summary:hover{color:var(--brand-hover)}
.poll-more-options-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 8px;margin-top:6px}
.poll-create-question,.poll-option-input{height:34px;padding:0 9px;border-color:var(--line);background:var(--panel);font-size:12px}
.poll-create-question:focus,.poll-option-input:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--focus-ring)}
.poll-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.poll-control-card{display:grid;align-content:center;gap:5px;min-width:0;min-height:48px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text-muted);font-size:11px;line-height:1.3}
.poll-control-card:focus-within{border-color:var(--brand-soft);background:var(--success-soft)}
.poll-control-toggle{grid-template-columns:14px minmax(0,1fr);align-items:center;cursor:pointer}
.poll-control-toggle input{width:14px;height:14px;margin:0;padding:0;accent-color:var(--brand)}
.poll-control-toggle span{color:var(--text);font-size:12px}
.poll-control-number input[type=number]{width:100%;height:26px;padding:0 6px;border-color:var(--line);font-size:12px}
.poll-note{color:var(--text-muted);font-size:12px}
.poll-card{grid-column:1/-1;width:100%;box-sizing:border-box;overflow:hidden;box-shadow:0 4px 14px var(--shadow-medium)}
.poll-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 12px 8px}
.poll-kicker{margin-bottom:1px;color:var(--brand);font-size:11px;font-weight:700;line-height:1.3}
.poll-status{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:700;white-space:nowrap}
.poll-body{display:grid;gap:6px;padding:0 12px 10px}
.poll-form{display:grid;gap:6px}
.poll-choice{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:8px;min-height:32px;padding:6px 0;color:var(--text);cursor:pointer}
.poll-choice+.poll-choice{border-top:1px solid var(--line-soft)}
.poll-choice:hover{background:transparent;color:var(--text)}
.poll-choice input{position:absolute;opacity:0;pointer-events:none}
.poll-choice-mark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid var(--line);border-radius:999px;background:var(--panel);box-shadow:inset 0 0 0 3px var(--panel)}
.poll-choice.multi .poll-choice-mark{border-radius:4px}
.poll-choice input:checked+.poll-choice-mark{border-color:var(--brand);background:var(--brand)}
.poll-choice:has(input:checked){color:var(--text)}
.poll-choice.disabled{cursor:default;color:var(--text)}
.poll-choice.disabled:hover{background:transparent}
.poll-choice-text{min-width:0;word-break:break-word;overflow-wrap:anywhere}
.poll-result-row{display:grid;gap:5px;padding:6px 0}
.poll-result-row+.poll-result-row{border-top:1px solid var(--line-soft)}
.poll-result-row.selected{background:transparent}
.poll-result-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.poll-result-title{display:flex;align-items:center;gap:6px;min-width:0;color:var(--text);font-weight:400;word-break:break-word;overflow-wrap:anywhere}
.poll-picked{display:inline-flex;align-items:center;min-height:18px;padding:0 6px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:10px;font-weight:700;white-space:nowrap}
.poll-result-count{flex:0 0 auto;color:var(--text-muted);font-size:12px;white-space:nowrap}
.poll-bar{height:6px;background:var(--line);border-radius:999px;overflow:hidden}
.poll-bar span{display:block;height:100%;border-radius:999px;background:var(--brand)}
.poll-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:0 12px 10px;color:var(--text-muted);font-size:12px}
.poll-foot-main{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.poll-submit-row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
.poll-submit-row button,.poll-login-link,.poll-admin-action button{width:auto}
.poll-login-link{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 10px;border-radius:var(--radius-sm,4px);background:var(--brand);color:var(--inverse-text);font-weight:600}
.poll-login-link:hover{background:var(--brand-hover);color:var(--inverse-text)}
.poll-closed{color:var(--warning)}
.poll-admin-row{grid-template-columns:minmax(0,1fr) auto}.poll-admin-row .admin-row-meta span{min-width:0;overflow-wrap:anywhere}
@media(max-width:720px){.poll-admin-row{grid-template-columns:minmax(0,1fr)}.poll-admin-row .admin-inline-ops{grid-column:1;justify-content:flex-start;margin-left:0}}
@media (max-width:640px){.poll-create-box{margin:8px 0;padding:8px 10px}.poll-create-details summary,.poll-more-options summary{min-height:28px;display:inline-flex;align-items:center}.poll-create-details summary:before{flex:0 0 auto}.poll-create-options,.poll-more-options-body{grid-template-columns:1fr}.poll-create-question,.poll-option-input{width:100%;max-width:none;height:34px;font-size:13px}.poll-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.poll-control-card{min-height:46px;padding:6px 8px}.poll-card{margin:8px 0;box-shadow:0 3px 10px var(--shadow-medium)}.poll-head{display:grid;gap:4px;padding:9px 10px 7px}.poll-status{justify-self:start;min-height:0;padding:0;background:transparent;color:var(--text-subtle);font-size:11px;font-weight:400}.poll-body{padding:0 10px 9px}.poll-choice{grid-template-columns:16px minmax(0,1fr);gap:7px;min-height:34px}.poll-result-row{gap:4px}.poll-result-top{display:grid;gap:3px}.poll-result-title{display:block}.poll-picked{margin-left:0;margin-top:4px}.poll-result-count{justify-self:start;font-size:11px}.poll-foot{display:grid;gap:7px;padding:0 10px 9px}.poll-login-link{width:100%}.poll-submit-row{display:grid;gap:7px}.poll-submit-row button{width:100%;justify-self:stretch}}
    .poll-control-toggle{grid-template-columns:38px minmax(0,1fr)}
    .poll-control-toggle input[type=checkbox]{width:38px;height:22px;margin:0;padding:0}
.topic-badge.poll-vote{background:var(--brand-soft);color:var(--brand)}
/* quick_reply */
.quick-reply-main-action{grid-column:1/-1;display:flex;align-items:center;gap:8px;margin-top:10px}
.quick-reply-main-action[hidden]{display:none}
.quick-reply-home .quick-reply-main-action{width:100%}
.quick-reply-main-action input{box-sizing:border-box;min-width:0;flex:1;min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--text-muted);font-size:var(--font-size-sm);cursor:text}
.quick-reply-main-action input:focus,.quick-reply-home input:focus{border-color:var(--brand);outline:2px solid var(--focus-ring);outline-offset:1px}
.quick-reply-main-action button{flex:0 0 auto;min-height:34px;padding:0 14px;border:1px solid var(--brand);border-radius:4px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);cursor:pointer}
.quick-reply-main-action button:hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.quick-reply-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.quick-reply-mention{color:var(--brand);font-size:var(--font-size-sm);text-decoration:none}
.quick-reply-mention:hover{text-decoration:underline}
.quick-reply-home{display:flex;align-items:center;justify-content:center;min-height:0;margin:0;padding:0;border:0;background:transparent;box-shadow:none}
.quick-reply-home[hidden]{display:none}
.topic-post-list .post-entry.quick-reply-host-before{grid-template-areas:"avatar body" "content content" "quick-reply-slot quick-reply-slot"}
.topic-post-list .post-entry.quick-reply-host-before.has-title{grid-template-areas:"title title" "avatar body" "content content" "quick-reply-slot quick-reply-slot"}
.quick-reply-slot{grid-area:quick-reply-slot;min-width:0;margin:10px 0}
.quick-reply-slot .reply-panel{margin:0}
.topic-post-list .quick-reply-new-reply{margin:10px 0;padding:12px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg)}
.quick-reply-collapse{margin-left:auto;color:var(--text-subtle);font-size:var(--font-size-sm);line-height:1.4;text-align:right;cursor:pointer}
/* reply_quote_tree */
.topic-post-list{--reply-quote-tree-indent:calc(36px + 10px)}.topic-post-list>.post-entry.reply-quote-tree-reply.reply-quote-tree-child>.post-content{box-sizing:border-box;max-width:calc(100% - var(--reply-quote-tree-indent));margin-left:var(--reply-quote-tree-indent)}.reply-quote-tree-reference{display:block;overflow:hidden;color:var(--text-subtle);text-overflow:ellipsis;white-space:nowrap}.reply-quote-tree-reference a{color:var(--text-subtle);text-decoration:none}.reply-quote-tree-reference a:hover{color:var(--brand)}
/* sb_limit_edit_time */
.sb-limit-edit-time-note{margin:10px 0;color:var(--text-subtle);font-size:12px;line-height:1.5}.sb-limit-edit-time-note a{color:inherit;text-decoration:underline;text-underline-offset:2px}.sb-limit-edit-time-note a:hover{color:var(--brand)}
/* seo_suite */
.seo-suite-form{width:100%;max-width:none}.seo-suite-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%}.seo-suite-section{display:grid;align-content:start;gap:10px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.seo-suite-section h3{margin:0;color:var(--text);font-size:13px}.seo-suite-section .grid{gap:5px}.seo-suite-form input:not([type=checkbox]),.seo-suite-form select,.seo-suite-form textarea{width:100%;max-width:none;box-sizing:border-box}.seo-suite-form textarea{min-height:104px;resize:vertical}.seo-suite-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.seo-suite-actions form{margin:0}.seo-suite-tools{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.seo-suite-status{overflow-wrap:anywhere}@media(max-width:600px){.seo-suite-grid,.seo-suite-tools{grid-template-columns:1fr}.seo-suite-section{padding:12px}}
/* topic_collections */
.topic-collections-topic-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%;margin:8px 0 6px;padding-top:5px}
.topic-collections-topic-tags-title{font-size:var(--font-size-sm);font-weight:600;color:var(--text-muted)}
.topic-collections-topic-tag{color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.5;text-decoration:none;overflow-wrap:anywhere}
.topic-collections-topic-tag:hover{color:var(--brand)}
.topic-collections-action{flex:0 0 24px;padding:0;border:0;background:transparent;cursor:pointer}
.topic-collections-action:before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z%27/%3E%3Cpath d=%27M12 7v6M9 10h6%27/%3E%3C/svg%3E") center/14px 14px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z%27/%3E%3Cpath d=%27M12 7v6M9 10h6%27/%3E%3C/svg%3E") center/14px 14px no-repeat}
.topic-collections-modal-form{display:grid;gap:10px}
.topic-collections-modal-form .grid{grid-template-columns:1fr;margin:0}
.topic-collections-modal-form textarea{min-height:96px;resize:vertical}
.topic-collections-modal-hint{margin:0;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6}
/* 淘帖主题列表页：页首信息块与主题列表同处 .main-panel，
   列表外框 / 行分隔 / 内边距均由 block_theme 统一提供，插件不再自绘卡片。 */
.topic-collections-collection-head{display:grid;gap:10px;min-width:0;margin:10px 0}
.topic-collections-collection-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.topic-collections-collection-title{display:grid;gap:4px;min-width:0}
.topic-collections-collection-title .post-content-title{margin:0}
.topic-collections-collection-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;color:var(--text-subtle);font-size:var(--font-size-sm);line-height:1.4}
.topic-collections-collection-meta span,.topic-collections-collection-meta a{display:inline-flex;align-items:center;gap:4px;min-width:0}
.topic-collections-collection-meta a{color:var(--text-muted)}
.topic-collections-collection-meta a:hover{color:var(--brand)}
.topic-collections-collection-description{max-width:72ch;margin:0;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.55}
.topic-collections-collection-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0}
.topic-collections-subscribe{margin:0}
.topic-collections-subscribe button{min-height:32px;padding:0 12px;white-space:nowrap}
/* 主题列表：列表外框 / 行分隔由 block_theme 的 .main-panel>.post-list 规则提供，
   此处仅让出 display 与内边距的决定权。 */
ul.post-list.topic-collections-topic-list{min-width:0}
.home-shell ul.post-list.topic-collections-topic-list>.post-item.post-item>.post-avatar{flex:none}
.topic-collections-settings{margin:0;display:grid;gap:14px}
.topic-collections-manage-block{display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);min-width:0}
.topic-collections-manage-block>h3{margin:0;font-size:var(--font-size-md)}
.topic-collections-manage-list{display:grid;gap:6px;margin:0;padding:0;list-style:none;width:100%;min-width:0}
.topic-collections-manage-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px}
.topic-collections-manage-list li span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topic-collections-manage-list li form{margin:0 0 0 auto;flex:none}
.topic-collections-manage-list li button{min-height:26px;padding:0 8px;background:none;border:0;color:var(--text-muted)}
.topic-collections-manage-list li button:hover{color:var(--danger)}
.topic-collections-manage-empty{margin:0;color:var(--text-muted);font-size:var(--font-size-sm)}
.topic-collections-mg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line-soft)}
.topic-collections-mg-head h1{margin:0}
.topic-collections-settings-form{display:grid;gap:8px;max-width:680px}
.topic-collections-settings-form .grid{grid-template-columns:1fr;margin:0}
.topic-collections-settings-form label.topic-collections-checkbox{display:block}
.topic-collections-settings-form label.topic-collections-checkbox>span{display:block;margin-bottom:6px}
.topic-collections-settings-form label.topic-collections-checkbox>input{width:38px;height:22px}
.topic-collections-settings-form button{justify-self:start}
.topic-collections-collab-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.topic-collections-collab-add input{flex:1 1 180px;min-width:0}
.topic-collections-collab-add button{margin:0}
.topic-collections-delete-form{margin:0;padding-top:12px;border-top:1px solid var(--line-soft)}
.topic-collections-delete-form button{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
.topic-collections-delete-form button:hover{background:var(--danger);color:var(--inverse-text)}
.topic-collections-updates-list{margin:0;padding:0;list-style:none}
.topic-collections-updates-list li{padding:7px 2px}
.topic-collections-updates-list li+li{border-top:1px solid var(--line-soft)}
.topic-collections-updates-list a{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--text)}
.topic-collections-updates-name{overflow-wrap:anywhere;min-width:0}
.topic-collections-updates-list .notify-badge{flex:none}
.topic-collections-new-badge{display:inline-flex;align-items:center;margin-left:8px;padding:1px 7px;border-radius:999px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-xs);line-height:1.5;white-space:nowrap}
ul.topic-collections-collection-list{min-width:0;list-style:none}
ul.topic-collections-collection-list>.topic-collections-collection-row{display:flex;gap:12px;align-items:flex-start;min-width:0}
ul.topic-collections-collection-list .topic-collections-collection-row>.post-avatar{flex:none}
ul.topic-collections-collection-list .topic-collections-collection-row>.post-body{flex:1 1 auto;min-width:0}
ul.topic-collections-collection-list>.topic-collections-collection-row>.post-body>.post-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
ul.topic-collections-collection-list>.topic-collections-collection-row>.post-body>.post-title-row>.post-title{overflow-wrap:anywhere;word-break:break-word}
.topic-collections-card-desc{display:-webkit-box;overflow:hidden;margin-top:4px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.5;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.topic-collections-tag{display:inline-flex;align-items:center;gap:6px;height:20px;margin-right:6px;padding:0 8px;border-radius:999px;font-size:var(--font-size-xs);font-weight:600;line-height:1;vertical-align:middle}
.topic-collections-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.topic-collections-tag-private{color:var(--warning);background:var(--warning-soft)}
.topic-collections-tag-public{color:var(--brand);background:var(--brand-soft)}
.topic-collections-tag-mine{color:var(--text-subtle);background:var(--bg);border:1px solid var(--line)}
.topic-collections-tag-subscribed{color:var(--success);background:var(--success-soft)}
.topic-collections-admin-body{display:grid;gap:12px;padding:14px}
.topic-collections-admin-body>p{margin:0;color:var(--text-muted);font-size:var(--font-size-sm)}
.topic-collections-admin-form{display:grid;gap:10px;max-width:680px}
.topic-collections-admin-form .grid{grid-template-columns:1fr}
.topic-collections-admin-form>button{justify-self:start}
@media(max-width:720px){
.topic-collections-collection-page{gap:10px}
.topic-collections-collection-head{padding:14px 13px}
ul.post-list.topic-collections-topic-list.topic-collections-topic-list{gap:10px}
.home-shell ul.post-list.topic-collections-topic-list>.post-item.post-item.post-item{padding:14px 13px;gap:11px}
}
@media(max-width:760px){.topic-collections-manage-block{padding:12px}.topic-collections-collab-add input{flex-basis:100%}}
/* topic_tags */
.topic-tags-page{display:flex;flex-direction:column;gap:12px;padding:0}
.topic-tags-page-head{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.topic-tags-page-title{margin:0;font-size:var(--font-size-lg);font-weight:700;color:var(--text)}
.topic-tags-page-desc{margin:0;font-size:var(--font-size-sm);color:var(--text-muted)}
.topic-tags-page-desc a{color:var(--brand);text-decoration:none}
.topic-tags-page-desc a:hover{color:var(--brand-hover);text-decoration:underline}

.topic-tags-search{display:flex;flex-wrap:wrap;gap:8px;padding:14px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.topic-tags-search-input{flex:1 1 220px;min-width:0;padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-size:var(--font-size-sm)}
.topic-tags-search-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus-ring)}
.topic-tags-search-btn{flex:0 0 auto;padding:7px 16px;border:1px solid var(--brand);border-radius:var(--radius-sm);background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-normal)}
.topic-tags-search-btn:hover{background:var(--brand-hover);border-color:var(--brand-hover)}

.topic-tags-sort{display:flex;flex-wrap:wrap;gap:8px;padding:14px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.topic-tags-sort-link{padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text-muted);font-size:var(--font-size-sm);text-decoration:none;transition:color var(--transition-normal),border-color var(--transition-normal)}
.topic-tags-sort-link:hover{color:var(--brand);border-color:var(--brand);text-decoration:none}
.topic-tags-sort-link.active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:600}

.topic-tags-page{--topic-tags-level-1:var(--font-size-xs);--topic-tags-level-2:var(--font-size-sm);--topic-tags-level-3:var(--font-size-md);--topic-tags-level-4:var(--font-size-lg);--topic-tags-level-5:var(--font-size-xl)}
.topic-tags-cloud{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.topic-tags-cloud-item{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text);text-decoration:none;transition:color var(--transition-normal),border-color var(--transition-normal),background var(--transition-normal)}
.topic-tags-cloud-item.topic-tags-color-1{color:var(--brand);background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,var(--line))}
.topic-tags-cloud-item.topic-tags-color-2{color:var(--info);background:var(--info-soft);border-color:color-mix(in srgb,var(--info) 30%,var(--line))}
.topic-tags-cloud-item.topic-tags-color-3{color:var(--warning);background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 30%,var(--line))}
.topic-tags-cloud-item.topic-tags-color-4{color:var(--success);background:var(--success-soft);border-color:color-mix(in srgb,var(--success) 30%,var(--line))}
.topic-tags-cloud-item.topic-tags-color-5{color:var(--danger);background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 30%,var(--line))}
.topic-tags-cloud-item:hover{color:var(--brand);border-color:var(--brand);text-decoration:none}
.topic-tags-level-1{font-size:var(--topic-tags-level-1)}
.topic-tags-level-2{font-size:var(--topic-tags-level-2)}
.topic-tags-level-3{font-size:var(--topic-tags-level-3)}
.topic-tags-level-4{font-size:var(--topic-tags-level-4)}
.topic-tags-level-5{font-size:var(--topic-tags-level-5);font-weight:600}
.topic-tags-count{font-size:var(--font-size-xs);color:var(--text-subtle)}
.topic-tags-count::before{content:"×"}
.topic-tags-empty{margin:0;padding:32px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text-subtle);font-size:var(--font-size-sm);text-align:center}

.topic-tags-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.topic-tags-chip{display:inline-flex;align-items:center;color:var(--brand);font-size:var(--font-size-xs);text-decoration:none;word-break:break-all;transition:border-color var(--transition-normal)}
.topic-tags-chip:hover{border-color:var(--brand);text-decoration:none}
.topic-tags-block{display:flex;flex-wrap:wrap;gap:8px;align-items:center;width:100%;margin:8px 0 6px;padding-top:5px}
.topic-tags-block-title{font-size:var(--font-size-sm);font-weight:600;color:var(--text-muted)}
.topic-tags-row{display:inline-flex;flex-wrap:wrap;gap:3px;align-items:center;color:var(--text-subtle)}
.topic-tags-row .topic-tags-icon{width:13px;height:13px;flex:0 0 auto}
.topic-tags-row .topic-tags-chip{color:var(--text-subtle)}
.topic-tags-row .topic-tags-chip:hover{color:var(--brand)}

.topic-tags-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.topic-tags-stat{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg)}
.topic-tags-stat strong{font-size:var(--font-size-lg);font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.topic-tags-stat span{font-size:var(--font-size-xs);color:var(--text-muted)}
.topic-tags-note{margin:10px 0 0;font-size:var(--font-size-sm);color:var(--text-muted)}
.topic-tags-note-warn{color:var(--warning)}
.topic-tags-form{display:flex;flex-direction:column;gap:14px;max-width:none;width:100%}
.topic-tags-fields{display:grid;grid-template-columns:1fr;gap:12px;width:100%}
.topic-tags-field{display:flex;flex-direction:column;gap:10px;min-width:0;width:100%;padding:14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg)}
.topic-tags-field-title{font-size:var(--font-size-sm);font-weight:700;color:var(--text)}
.topic-tags-grid{display:grid;gap:10px;min-width:0}
.topic-tags-grid-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.topic-tags-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.topic-tags-f>span{font-size:var(--font-size-xs);color:var(--text-muted)}
.topic-tags-f>em{font-style:normal;font-size:var(--font-size-xxs);color:var(--text-subtle)}
.topic-tags-f input,.topic-tags-f textarea{width:100%;max-width:none;box-sizing:border-box;padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-size:var(--font-size-sm)}
.topic-tags-f textarea{min-height:140px;line-height:1.6;font-family:var(--font-mono);resize:vertical}
.topic-tags-f input:focus,.topic-tags-f textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus-ring)}
.topic-tags-check{display:flex;align-items:flex-start;gap:8px;font-size:var(--font-size-sm);color:var(--text);cursor:pointer}
.topic-tags-check input{width:15px;height:15px;margin:1px 0 0;flex-shrink:0;accent-color:var(--brand)}
.topic-tags-form-actions{display:flex;justify-content:flex-end}
.topic-tags-btn{min-height:30px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font-size:var(--font-size-sm);cursor:pointer;transition:border-color var(--transition-normal),color var(--transition-normal),background var(--transition-normal)}
.topic-tags-btn:hover{border-color:var(--brand);color:var(--brand)}
.topic-tags-btn-primary{border-color:var(--brand);background:var(--brand);color:var(--inverse-text)}
.topic-tags-btn-primary:hover{border-color:var(--brand-hover);background:var(--brand-hover);color:var(--inverse-text)}
.topic-tags-btn-danger:hover{border-color:var(--danger);color:var(--danger)}
.topic-tags-action-list{display:flex;flex-direction:column}
.topic-tags-action-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.topic-tags-action-row:last-child{border-bottom:none}
.topic-tags-action-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.topic-tags-action-info strong{font-size:var(--font-size-sm);font-weight:600;color:var(--text)}
.topic-tags-action-info span{font-size:var(--font-size-xs);color:var(--text-muted)}
.topic-tags-action-row .post-action-form{margin:0;flex-shrink:0}

@media (max-width:600px){
    .topic-tags-cloud{gap:6px}
    .topic-tags-search-input{flex:1 1 100%}
    .topic-tags-action-row{flex-direction:column;align-items:stretch}
    .topic-tags-action-row .topic-tags-btn{width:100%}
}
/* topic_vote */
.topic-vote-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:6px 0 22px;padding:0}.topic-vote-form{display:inline-flex;margin:0}.topic-vote-btn{display:inline-flex;align-items:center;gap:4px;margin:0;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text-muted);font-size:12px;line-height:1.4;cursor:pointer;transition:color .15s,background .15s,border-color .15s}.topic-vote-btn:hover{color:var(--brand);border-color:var(--brand-soft);background:var(--brand-soft)}.topic-vote-btn.is-active-up{color:var(--success);border-color:var(--success);background:var(--success-soft)}.topic-vote-btn.is-active-down{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.topic-vote-count{font-weight:600}.topic-vote-counts{color:var(--text-muted);font-size:12px}.topic-vote-login{color:var(--brand);font-size:12px}.topic-vote-report{display:inline-flex;align-items:center;gap:6px}.topic-vote-report summary{list-style:none;cursor:pointer}.topic-vote-report summary::-webkit-details-marker{display:none}.topic-vote-report-form{display:inline-flex;align-items:center;gap:6px;margin:0;padding:4px 6px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow-medium)}.topic-vote-reason{min-width:180px;max-width:240px}.topic-vote-hidden-row,.topic-vote-trashed-row{display:block;grid-column:1/-1;flex:0 0 100%;width:100%;min-width:0;box-sizing:border-box;margin:6px 0 22px;padding:10px 14px;border-radius:8px;font-size:13px}.topic-vote-hidden-row{background:var(--warning-soft);color:var(--warning)}.topic-vote-trashed-row{background:var(--danger-soft);color:var(--danger)}.topic-vote-hidden-content{display:none}.topic-vote-report-row .admin-row-actions{display:flex;flex-wrap:wrap;gap:6px}.topic-vote-collapse{display:block}.topic-vote-collapse summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:14px 16px}.topic-vote-collapse summary::-webkit-details-marker{display:none}.topic-vote-collapse-summary{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.topic-vote-collapse-arrow{flex:0 0 auto;color:var(--text-muted);transition:transform .15s}.topic-vote-collapse[open] .topic-vote-collapse-arrow{transform:rotate(90deg)}.topic-vote-collapse-body{border-top:1px solid var(--line-soft)}
/* topic_watch */
.topic-watch-toggle{display:inline-flex;margin:0}.topic-watch-icon{display:inline-grid;place-items:center;width:24px;min-width:24px;height:24px;padding:0;border:0;background:transparent;cursor:pointer;flex:0 0 24px}.topic-watch-icon:before{display:none}.topic-watch-icon svg{display:block;width:14px;height:14px;flex:0 0 14px}.topic-watch-forum-button{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-muted);font-size:var(--font-size-sm)}.topic-watch-forum-button svg{display:block;width:14px;height:14px;flex:0 0 14px}.topic-watch-forum-button:hover{border-color:var(--brand);color:var(--brand)}.topic-watch-row{grid-template-columns:minmax(0,1fr) auto}.topic-watch-row>form{align-self:center}.topic-watch-panel .admin-content-title a{color:inherit}@media(max-width:720px){.topic-watch-row{grid-template-columns:minmax(0,1fr)}.topic-watch-row>form{justify-self:start}}
/* user_level */
.post-avatar{position:relative}.user_level-avatar-badge{position:absolute;right:0;bottom:0;line-height:1;font-size:var(--font-size-sm);white-space:nowrap;text-shadow:0 1px 2px var(--bg)}.user_level-form{max-width:none}.user_level-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:stretch;gap:12px}.user_level-topic-gate{margin-top:12px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.user_level-topic-gate summary{cursor:pointer;padding:10px 12px;font-weight:700;color:var(--text)}.user_level-topic-gate-body{display:grid;gap:8px;padding:12px}.user_level-topic-gate-body small{color:var(--text-muted);font-size:var(--font-size-xs)}.user_level-topic-gate-badge{display:inline-flex;align-items:center;margin-right:8px;padding:2px 7px;border-radius:999px;background:var(--warning-soft);color:var(--warning);font-size:var(--font-size-xxs);font-weight:700;white-space:nowrap}.user_level-fields-wide{grid-template-columns:1fr;margin-top:12px}.user_level-field{display:flex;flex-direction:column;justify-content:flex-start;gap:10px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);min-width:0}.user_level-field-title{color:var(--text);font-size:12px;font-weight:700}.user_level-field .grid{display:grid;align-content:start;gap:5px;min-width:0}.user_level-field input:not([type=checkbox]),.user_level-field select,.user_level-field textarea{width:100%;max-width:none}.user_level-field input[type=checkbox]{width:38px;max-width:38px;height:22px}.user_level-field textarea{min-height:88px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--font-size-xs);line-height:1.5;resize:vertical}.user_level-tier-wrap{overflow-x:auto;max-width:100%;min-width:0;-webkit-overflow-scrolling:touch}.user_level-tier-table{min-width:720px;width:100%;border-collapse:collapse}.user_level-tier-table th,.user_level-tier-table td{padding:8px 10px;border-bottom:1px solid var(--line-soft);text-align:left;font-size:var(--font-size-sm);white-space:nowrap}.user_level-tier-table thead th{color:var(--text);font-weight:700;white-space:nowrap}.user_level-tier-table tbody th{color:var(--text-muted);font-weight:400;white-space:nowrap}.user_level-tier-table tbody tr:nth-child(even){background:var(--panel)}.user_level-tier-table tbody tr:hover{background:var(--brand-soft)}.user_level-tier-table td input{width:100%;max-width:120px;height:30px;padding:0 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:var(--font-size-sm)}.user_level-tier-table td input:focus{outline:none;border-color:var(--brand);box-shadow:var(--focus-ring)}.user_level-tier-table td.user_level-na{color:var(--text-subtle);white-space:nowrap}.user_level-actions{display:flex;gap:8px;margin-top:14px}.user_level-actions button{margin:0}.user_level-honor-list{display:block;margin:14px 0 0;padding:0;border:1px solid var(--line-soft);border-radius:10px;list-style:none;overflow:hidden}.user_level-honor-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:0;padding:12px 14px;border-bottom:1px solid var(--line-soft);transition:background .15s ease}.user_level-honor-row:last-child{border-bottom:none}.user_level-honor-row:hover{background:var(--brand-soft)}.user_level-honor-main{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--font-size-sm);color:var(--text);min-width:0}.user_level-honor-main strong{font-weight:700}.user_level-honor-pill{display:inline-flex;align-items:center;min-height:19px;padding:0 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:var(--font-size-xxs);font-weight:600;white-space:nowrap}.user_level-honor-pill.user_level-pill-locked{background:var(--warning-soft);color:var(--warning)}.user_level-honor-revoke{margin-left:auto;flex-shrink:0}.user_level-honor-revoke button{min-height:0;padding:0 10px}.user_level-empty{margin:10px 0 0;font-size:var(--font-size-xs);color:var(--text-muted)}.user_level-trend{display:grid;gap:14px}.user_level-trend-row{display:grid;gap:6px}.user_level-trend-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px}.user_level-trend-name{font-size:var(--font-size-sm);font-weight:700;color:var(--text)}.user_level-trend-nums{display:inline-flex;flex-wrap:wrap;gap:2px 12px;font-size:var(--font-size-xs);color:var(--text-muted)}.user_level-trend-nums b{color:var(--text);font-variant-numeric:tabular-nums}.user_level-trend-bars{display:flex;align-items:flex-end;gap:2px;height:52px;min-width:0}.user_level-trend-bars span{flex:1;min-height:2px;border-radius:2px 2px 0 0;background:var(--brand-soft);position:relative}.user_level-trend-bars span:hover{background:var(--brand)}.user_level-trend-bars span.user_level-bar-today{background:var(--brand)}.user_level-trend-bars span.user_level-bar-na{background:var(--line-soft)}.user_level-trend-bars span::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);padding:2px 8px;border-radius:6px;background:var(--inverse);color:var(--inverse-text);font-size:var(--font-size-xxs);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:5}.user_level-trend-bars span[data-tip]:hover::after{opacity:1}.user_level-act-card{padding-bottom:14px}.user_level-card-head.user_level-act-head{align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:14px}.user_level-act-head h2{margin:0;font-size:var(--font-size-lg)}.user_level-act-total{font-size:var(--font-size-xs);color:var(--text-subtle)}.tab-bar.user_level-act-tabs:not(.plugin-tabs){display:flex;width:fit-content;margin:0 0 14px;flex-wrap:wrap}.user_level-act{list-style:none;margin:0;padding:0 0 0 22px;position:relative}.user_level-act:before{content:"";position:absolute;left:5px;top:4px;bottom:4px;width:1px;background:var(--line-soft)}.user_level-act-day{position:relative;margin:18px 0 4px;font-size:var(--font-size-xs);font-weight:700;color:var(--text-subtle);letter-spacing:.05em}.user_level-act-day:first-child{margin-top:2px}.user_level-act-day:before{content:"";position:absolute;left:-21px;top:50%;width:11px;height:11px;margin-top:-6px;border-radius:50%;background:var(--brand)}.user_level-act-day span{margin-left:6px;font-weight:400;letter-spacing:0}.user_level-act-item{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;row-gap:3px;padding:6px 0;font-size:var(--font-size-sm)}.user_level-act-item:before{content:"";position:absolute;left:-19px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--brand);transition:background .15s}.user_level-act-item:hover:before{background:var(--brand)}.user_level-act-text{min-width:0;flex:0 1 auto;color:var(--text-muted)}.user_level-act-link{min-width:0;flex:1 1 100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:600}.user_level-act-link:hover{color:var(--brand)}.user_level-act-empty{padding:14px 0;color:var(--text-muted);font-size:var(--font-size-sm)}.user_level-act-time{flex:0 0 auto;margin-left:auto;font-size:var(--font-size-xs);color:var(--text-subtle);white-space:nowrap}.user_level-badge-link{display:inline-flex;align-items:center;border-radius:999px}.user_level-badge-link:hover .user_level-badge{box-shadow:0 0 0 2px var(--focus-ring)}.user_level-cal-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;font-size:var(--font-size-sm);color:var(--text)}.user_level-cal-pager a{color:var(--text-muted)}.user_level-cal-pager a:hover{color:var(--brand)}.user_level-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}.user_level-cal-head{text-align:center;padding:2px 0;font-size:var(--font-size-xxs);color:var(--text-muted)}.user_level-cal-cell{display:flex;align-items:center;justify-content:center;aspect-ratio:1;font-size:var(--font-size-xs);color:var(--text-muted);border-radius:8px;background:var(--bg);font-variant-numeric:tabular-nums}.user_level-cal-cell.user_level-cal-on{background:var(--brand-soft);color:var(--brand);font-weight:700}.user_level-cal-cell.user_level-cal-today{box-shadow:0 0 0 1.5px var(--brand)}.user_level-page{display:grid;gap:14px}.user_level-page>*{min-width:0}.user_level-card{min-width:0;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel);}.user_level-card-next{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.user_level-card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;margin-bottom:12px}.user_level-card-head h2{margin:0;font-size:var(--font-size-md)}.user_level-card-foot{margin:10px 0 0;font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.6}.user_level-state{display:inline-flex;align-items:center;min-height:20px;padding:0 9px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:var(--font-size-xxs);font-weight:700;white-space:nowrap}.user_level-state.user_level-ok{background:var(--success-soft);color:var(--success)}.user_level-state.user_level-warn{background:var(--warning-soft);color:var(--warning)}.user_level-state.user_level-todo{background:var(--line-soft);color:var(--text-muted)}.user_level-hero{--user-level-hero-emoji:44px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.user_level-hero-badge{display:flex;align-items:center;gap:14px;min-width:0}.user_level-hero-emoji{font-size:var(--user-level-hero-emoji);line-height:1}.user_level-hero-name{display:flex;flex-direction:column;gap:3px;min-width:0}.user_level-hero-name strong{font-size:var(--font-size-lg);color:var(--text)}.user_level-hero-name span{font-size:var(--font-size-xs);color:var(--text-muted)}.user_level-hero-note{flex:1 1 100%;margin:0;font-size:var(--font-size-xs);color:var(--warning)}.user_level-metrics{display:grid;gap:11px}.user_level-metric{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label num" "meter num";gap:5px 10px;align-items:center;min-width:0}.user_level-metric-label{grid-area:label;font-size:var(--font-size-sm);color:var(--text)}.user_level-metric-done .user_level-metric-label{color:var(--success)}.user_level-meter{grid-area:meter;height:10px;border-radius:999px;background:var(--line-soft);box-shadow:inset 0 1px 2px var(--line);overflow:hidden}.user_level-meter-fill{position:relative;display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand),var(--brand-hover));transition:width .4s ease}.user_level-meter-fill:not(.user_level-meter-done)::after{content:"";position:absolute;right:3px;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background:var(--bg);box-shadow:0 0 0 1px var(--line)}.user_level-meter-fill.user_level-meter-done{background:var(--success)}.user_level-metric-num{grid-area:num;display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:3px 8px;min-width:0;max-width:100%;font-size:var(--font-size-xs);color:var(--text-muted);text-align:right;font-variant-numeric:tabular-nums}.user_level-metric-pct{color:var(--brand);font-weight:700}.user_level-metric-left{color:var(--warning);font-weight:600}.user_level-metric-state{color:var(--success);font-weight:600}.user_level-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.user_level-overview-item{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:var(--panel)}.user_level-overview-item.user_level-cur{border-color:var(--brand);background:var(--brand-soft)}.user_level-overview-emoji{--user-level-overview-emoji:28px;font-size:var(--user-level-overview-emoji);line-height:1}.user_level-overview-name{font-size:var(--font-size-sm);font-weight:700;color:var(--text)}.user_level-overview-need{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.6;overflow-wrap:anywhere}.user_level-overview-flag{display:inline-block;align-self:flex-start;margin-top:4px;padding:1px 8px;border-radius:999px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-xxs);font-weight:600;white-space:nowrap}.user_level-overview-flag.user_level-flag-done{background:var(--success)}.user_level-compare-wrap{overflow-x:auto;max-width:100%;min-width:0;-webkit-overflow-scrolling:touch}.user_level-compare{width:100%;min-width:620px;border-collapse:collapse}.user_level-compare th,.user_level-compare td{padding:10px 8px;border-bottom:1px solid var(--line-soft);text-align:center;font-size:var(--font-size-sm)}:where(.user_level-compare) tbody tr:nth-child(even)>td,:where(.user_level-compare) tbody tr:nth-child(even)>th{background:color-mix(in srgb,var(--brand-soft) 34%,transparent)}.user_level-compare thead th{background:var(--panel);font-weight:700}.user_level-compare th.user_level-th{line-height:1.4}.user_level-compare th.user_level-ab-col,.user_level-compare td.user_level-ab-col{text-align:left;background:color-mix(in srgb,var(--brand-soft) 22%,transparent)}.user_level-compare .user_level-cur{background:var(--brand-soft)}.user_level-compare td.user_level-gate{color:var(--brand);font-weight:700}.user_level-compare td.user_level-yes{color:var(--success)}.user_level-compare td.user_level-no{color:var(--text-subtle)}.user_level-th-tl{display:block;font-weight:700}.user_level-th-name{display:block;font-size:var(--font-size-xxs);color:var(--text-muted);font-weight:400;white-space:nowrap}.user_level-ab-name{display:block;font-weight:700;color:var(--text)}.user_level-ab-src{display:block;font-size:var(--font-size-xxs);color:var(--text-subtle);font-weight:400}@media (max-width:760px){.user_level-metric{grid-template-columns:1fr auto;grid-template-areas:"label num" "meter num";gap:4px 10px}.user_level-metric-num{white-space:normal;justify-content:flex-end}.user_level-compare{min-width:560px}}@media (max-width:560px){.user_level-hero{--user-level-hero-emoji:32px;padding:14px}.user_level-hero-badge{gap:10px}.user_level-card{padding:13px 14px}.user_level-card-head{gap:4px 10px}.user_level-metric{grid-template-columns:1fr;grid-template-areas:"label" "meter" "num";gap:2px 0}.user_level-metric-num{justify-content:flex-start;margin-top:2px}.user_level-overview{gap:8px}.user_level-compare th,.user_level-compare td{padding:8px 6px}.user_level-trend-bars{height:40px}}
/* user_privacy */
.user-privacy-sub{margin:0;color:var(--text-muted);font-size:var(--font-size-sm)}
.user-privacy-list{display:flex;flex-direction:column;gap:8px;margin:14px 0 16px}
.user-privacy-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);padding:10px 14px;border-radius:var(--radius);background:var(--bg);cursor:pointer;transition:background .15s ease}
.user-privacy-item:hover{background:var(--line-soft)}
.user-privacy-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.user-privacy-text strong{color:var(--text);font-size:var(--font-size-md);font-weight:600}
.user-privacy-state{color:var(--text-muted);font-size:var(--font-size-xs)}
.user-privacy-item input{position:absolute;width:0;height:0;margin:0;opacity:0}
.user-privacy-track{position:relative;flex:0 0 38px;height:22px;border-radius:11px;background:var(--line);transition:background .18s ease}
.user-privacy-track:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--panel);box-shadow:0 1px 3px rgba(0,0,0,.22);transition:transform .18s ease}
.user-privacy-item input:checked~.user-privacy-track{background:var(--brand)}
.user-privacy-item input:checked~.user-privacy-track:after{transform:translateX(16px)}
.user-privacy-item input:focus-visible~.user-privacy-track{outline:2px solid var(--focus-ring);outline-offset:2px}
.user-privacy-notice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:100%;margin:14px 0;padding:32px 16px;border-radius:var(--radius);background:var(--bg);color:var(--text-muted);font-size:var(--font-size-sm);text-align:center}
.user-privacy-notice svg{width:26px;height:26px;color:var(--text-subtle)}
.user-privacy-notice span{line-height:1.5}
@media(max-width:600px){.user-privacy-notice{margin:12px 0;padding:28px 16px}.user-privacy-item{padding:9px 12px}}
@media(max-width:720px){.profile-mobile-sidebar:not(.profile-mobile-sidebar-own) .forum-main{width:100%}}
/* video_player */
.bbs-video-wrap{
    margin:16px 0;
}
/* PC端：高度固定400px */
.bbs-video-player{
    width:100%;
    height:400px;
    border-radius:8px;
    background:#000000;
    object-fit:contain;
}
.bbs-video-iframe-wrap{
    position:relative;
    width:100%;
    height:400px;
    margin:16px 0;
    border-radius:8px;
    overflow:hidden;
}
.bbs-video-iframe-wrap iframe{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    border:0;
}
/* 移动端：高度固定300px */
@media(max-width:768px){
    .bbs-video-player{
        width:100%;
        height:350px;
    }
    .bbs-video-iframe-wrap{
        width:100%;
        height:350px;
    }
}
/* vip_apply */
.vip-apply-panel .plugin-panel-body{display:grid;gap:12px}
.vip-apply-intro{margin:0;padding:10px 12px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.7;background:var(--info-soft);border-radius:var(--radius)}
.vip-apply-form textarea{min-height:72px}
.vip-apply-status{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--radius);font-size:var(--font-size-xs);white-space:nowrap}
.vip-apply-status--pending{color:var(--warning);background:var(--warning-soft)}
.vip-apply-status--approved{color:var(--brand);background:var(--brand-soft)}
.vip-apply-status--rejected{color:var(--danger);background:var(--danger-soft)}
.vip-apply-list .admin-list-item.vip-apply-item:hover{background:transparent}
.vip-apply-item-meta{align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.vip-apply-answers{display:grid;gap:8px;margin:0;padding:10px 12px;background:var(--line-soft);border-radius:var(--radius)}
.vip-apply-answer dt{color:var(--text-muted);font-size:var(--font-size-xs);margin-bottom:2px}
.vip-apply-answer dd{margin:0;color:var(--text);font-size:var(--font-size-sm);line-height:1.7;white-space:pre-wrap;word-break:break-word}
.vip-apply-remark{margin-top:6px;color:var(--warning);font-size:var(--font-size-sm);line-height:1.6}
.vip-apply-empty{margin:0;color:var(--text-muted);font-size:var(--font-size-sm)}
.vip-apply-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.vip-apply-filter{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-muted);font-size:var(--font-size-xs);text-decoration:none;transition:var(--transition-normal)}
.vip-apply-filter:hover{color:var(--text);border-color:var(--text-subtle)}
.vip-apply-filter.is-active{color:var(--brand-hover);background:var(--brand-soft);border-color:transparent}
.vip-apply-filter .vip-apply-count{font-size:var(--font-size-xxs);color:var(--text-subtle)}
.vip-apply-handle-form{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);display:grid;gap:8px}
.vip-apply-handle-field{display:grid;grid-template-columns:1fr;gap:6px;margin:0}
.vip-apply-handle-field>span{color:var(--text-muted);font-size:var(--font-size-sm)}
.vip-apply-handle-field>span>small{display:block;margin-top:2px;color:var(--text-subtle);font-size:var(--font-size-xs)}
.vip-apply-handle-field textarea{width:100%;min-height:72px}
.vip-apply-handle-ops{display:flex;flex-wrap:wrap;gap:8px}
.vip-apply-btn{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:7px 13px;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font:inherit;font-weight:500;line-height:1.2;white-space:nowrap;transition:var(--transition-normal)}
button.vip-apply-btn-approve{color:var(--inverse-text);background:var(--brand);border-color:var(--brand)}
button.vip-apply-btn-approve:hover{color:var(--inverse-text);background:var(--brand-hover);border-color:var(--brand-hover)}
button.vip-apply-btn-reject{color:var(--danger);background:var(--danger-soft);border-color:var(--danger-soft)}
button.vip-apply-btn-reject:hover{color:var(--inverse-text);background:var(--danger);border-color:var(--danger)}
form.post-action-form .vip-apply-btn-reject{margin:0}
@media (max-width:640px){.vip-apply-filters{gap:4px}.vip-apply-filter{padding:2px 8px}}
/* wy-image-upload */
.nos-image-upload-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.nos-image-upload-injected{display:none}
.nos-image-upload-md-btn{flex-shrink:0}
.nos-image-upload-md-btn svg{display:block}
.nos-image-upload-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text-muted);cursor:pointer;font-size:var(--font-size-sm);line-height:1.5;transition:border-color .15s,color .15s}
.nos-image-upload-btn:hover{border-color:var(--brand);color:var(--brand)}
.nos-image-upload-btn svg{flex-shrink:0}
.nos-image-upload-btn.is-busy{pointer-events:none;opacity:.6}
.nos-image-upload-overlay{position:fixed;inset:0;background:var(--backdrop);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity .2s}
.nos-image-upload-overlay.is-open{opacity:1;pointer-events:auto}
.nos-image-upload-modal{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px;max-width:480px;width:90%;box-shadow:var(--shadow-medium)}
.nos-image-upload-modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.nos-image-upload-modal-head h3{margin:0;font-size:var(--font-size-lg)}
.nos-image-upload-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:var(--font-size-xl);padding:0 4px;line-height:1;border-radius:4px}
.nos-image-upload-close:hover{color:var(--text)}
.nos-image-upload-dropzone{border:2px dashed var(--line);border-radius:10px;padding:40px 20px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s}
.nos-image-upload-dropzone:hover{border-color:var(--brand);background:var(--brand-soft)}
.nos-image-upload-dropzone.is-dragover{border-color:var(--brand);background:var(--brand-soft)}
.nos-image-upload-dropzone-icon{margin-bottom:8px;color:var(--text-subtle)}
.nos-image-upload-dropzone-text{color:var(--text-muted);font-size:var(--font-size-sm)}
.nos-image-upload-dropzone-hint{color:var(--text-subtle);font-size:var(--font-size-xs);margin-top:4px}
.nos-image-upload-list{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.nos-image-upload-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:6px;font-size:var(--font-size-sm)}
.nos-image-upload-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted)}
.nos-image-upload-ok{color:var(--success);flex-shrink:0}
.nos-image-upload-err{color:var(--danger);flex-shrink:0}
.nos-image-upload-progress{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;flex-shrink:0;animation:nos-image-upload-spin .6s linear infinite}
@keyframes nos-image-upload-spin{to{transform:rotate(360deg)}}
