/* bing_wallpaper */
.bing-wallpaper-settings{max-width:none}.bing-wallpaper-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:stretch;gap:12px}.bing-wallpaper-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)}.bing-wallpaper-field-title{color:var(--text);font-size:12px;font-weight:700}.bing-wallpaper-field .grid{display:grid;align-content:start;gap:5px;min-width:0}.bing-wallpaper-field input:not([type=checkbox]),.bing-wallpaper-field select{width:100%;max-width:none}.bing-wallpaper-field input[type=checkbox]{width:38px;max-width:38px;height:22px}.bing-wallpaper-actions{display:flex;gap:8px;margin-top:14px}.bing-wallpaper-settings .bing-wallpaper-actions button{margin:0}.bing-wallpaper-record{min-height:0;padding:13px 14px}.bing-wallpaper-record-main{display:grid;gap:8px;min-width:0}.bing-wallpaper-date{display:inline-flex;align-items:center;width:max-content;max-width:100%;color:var(--text);font-size:14px;font-weight:700;line-height:1.35}.bing-wallpaper-date:hover{color:var(--brand)}.bing-wallpaper-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.bing-wallpaper-meta span{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid var(--line-soft);border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:12px;line-height:1;white-space:nowrap}.bing-wallpaper-picker{display:grid;gap:16px}.bing-wallpaper-picker-section{display:grid;gap:8px}.bing-wallpaper-picker-section h3{font-size:var(--font-size-md)}.bing-wallpaper-picker-options,.bing-wallpaper-picker-history{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.bing-wallpaper-choice{display:grid;gap:6px;min-width:0;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);cursor:pointer}.bing-wallpaper-choice:hover,.bing-wallpaper-choice.is-active{border-color:var(--brand);background:var(--brand-soft)}.bing-wallpaper-choice-preview{display:block;aspect-ratio:16/10;border-radius:4px;background-color:var(--bg);background-position:center;background-size:cover}.bing-wallpaper-choice-label{overflow:hidden;font-size:var(--font-size-sm);line-height:1.3;text-align:left;text-overflow:ellipsis;white-space:nowrap}.bing-wallpaper-choice-form{margin:0}.bing-wallpaper-choice-form button{width:100%;min-height:0}.bing-wallpaper-blur-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.bing-wallpaper-blur-form label{display:grid;gap:5px;color:var(--text-muted);font-size:var(--font-size-sm)}.bing-wallpaper-blur-form input{width:100%;padding:0}.bing-wallpaper-blur-form button{margin:0}.bing-wallpaper-picker-empty{padding:12px;border:1px dashed var(--line);border-radius:6px;color:var(--text-muted);font-size:var(--font-size-sm)}.bing-wallpaper-desktop-button{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--text-muted);cursor:pointer}.bing-wallpaper-desktop-button:hover,.bing-wallpaper-desktop-button[aria-pressed="true"]{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.bing-wallpaper-desktop-button:focus-visible{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus-ring)}.bing-wallpaper-desktop-button svg{width:17px;height:17px}body.bing-wallpaper-desktop-active main.wrap,body.bing-wallpaper-desktop-active .footer{display:none}@media(max-width:720px){.bing-wallpaper-fields{grid-template-columns:1fr}.bing-wallpaper-record{padding:12px}.bing-wallpaper-meta span{max-width:100%;white-space:normal;line-height:1.35;padding-top:4px;padding-bottom:4px}.bing-wallpaper-picker-options,.bing-wallpaper-picker-history{grid-template-columns:repeat(2,minmax(0,1fr))}.bing-wallpaper-blur-form{grid-template-columns:1fr}.bing-wallpaper-blur-form button{justify-self:start}.bing-wallpaper-desktop-button{flex:0 0 28px;width:28px;height:28px;border:0;background:transparent;color:var(--text-subtle)!important}.bing-wallpaper-desktop-button svg{width:24px;height:24px}.bing-wallpaper-desktop-button:hover,.bing-wallpaper-desktop-button[aria-pressed="true"]{background:var(--bg);color:var(--text)!important}}
/* block_theme */
:root{--block-theme-radius:14px;--block-theme-radius-sm:10px;--block-theme-radius-lg:18px;--radius:var(--block-theme-radius);--radius-sm:var(--block-theme-radius-sm);--block-theme-canvas:color-mix(in srgb, var(--bg) 88%, var(--text) 4%);--block-theme-tint:color-mix(in srgb, var(--panel) 94%, var(--text) 6%);--block-theme-tint-strong:color-mix(in srgb, var(--panel) 88%, var(--text) 12%);--block-theme-hairline:color-mix(in srgb, var(--line-soft) 82%, var(--text) 8%);--block-theme-line:color-mix(in srgb, var(--line) 70%, var(--text) 12%);--block-theme-line-strong:color-mix(in srgb, var(--line) 55%, var(--text) 26%);--block-theme-sheen:color-mix(in srgb, var(--panel) 82%, var(--inverse-text) 18%);--block-theme-brand-a06:color-mix(in srgb, var(--brand) 6%, transparent);--block-theme-brand-a12:color-mix(in srgb, var(--brand) 12%, transparent);--block-theme-brand-a22:color-mix(in srgb, var(--brand) 22%, transparent);--block-theme-brand-a40:color-mix(in srgb, var(--brand) 40%, transparent);--block-theme-shadow:0 1px 1px var(--shadow-base),0 1px 3px var(--shadow-base),0 10px 22px -18px var(--shadow-medium);--block-theme-shadow-hover:0 2px 4px var(--shadow-base),0 14px 32px -16px var(--shadow-medium);--block-theme-shadow-float:0 4px 10px -4px var(--shadow-base),0 28px 64px -22px var(--shadow-medium);}/* ==========================================================================
   1. 画布与基础
   ========================================================================== */
::selection{background:var(--block-theme-brand-a22);color:var(--text)}
html{scrollbar-color:color-mix(in srgb, var(--text) 22%, transparent) transparent}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:999px;background:color-mix(in srgb, var(--text) 20%, transparent);background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--text) 36%, transparent);background-clip:content-box}
body{background:var(--block-theme-canvas)}

/* ==========================================================================
   2. 顶部导航：吸顶 + 毛玻璃 + 发丝线，内容在其下滑动
   ========================================================================== */
html{scroll-padding-top:72px}
.top{position:sticky;top:0;z-index:30;background:color-mix(in srgb, var(--panel) 84%, transparent);border-bottom:1px solid var(--block-theme-hairline);box-shadow:0 1px 0 color-mix(in srgb, var(--panel) 60%, transparent),0 8px 24px -20px var(--shadow-medium);-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px)}
.forum-more-region{position:sticky;top:48px;z-index:29;background:color-mix(in srgb, var(--panel) 94%, transparent);border-bottom:1px solid var(--block-theme-hairline);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px)}
.bar{gap:6px}
.brand{letter-spacing:-.015em;font-weight:800}
.search-page-link{height:34px;border:1px solid var(--block-theme-hairline);border-radius:999px;background:var(--block-theme-tint);box-shadow:inset 0 1px 0 color-mix(in srgb, var(--panel) 70%, transparent);transition:border-color var(--transition-normal),background var(--transition-normal),box-shadow var(--transition-normal)}
.search-page-link:hover{border-color:var(--block-theme-brand-a40);background:var(--panel);box-shadow:0 0 0 3px var(--block-theme-brand-a12)}

/* 顶部版块胶囊 */
.forum-link{height:30px;padding:0 12px;border-radius:999px;transition:background var(--transition-normal),color var(--transition-normal)}
.forum-link:hover{background:var(--block-theme-brand-a06);color:var(--brand)}
.forum-link.active{background:var(--brand-soft);color:var(--brand);font-weight:700;box-shadow:inset 0 0 0 1px var(--block-theme-brand-a22)}
.forum-more-toggle{height:30px;padding:0 12px;border-radius:999px;transition:background var(--transition-normal),color var(--transition-normal)}
.forum-more-toggle:hover,.forum-more-toggle[aria-expanded=true]{background:var(--block-theme-brand-a06);color:var(--brand)}
.forum-more-panel{border:1px solid var(--block-theme-hairline);border-radius:var(--block-theme-radius);box-shadow:var(--block-theme-shadow-float)}
.forum-more-link{border-radius:999px;transition:background var(--transition-normal),color var(--transition-normal),border-color var(--transition-normal)}
.forum-more-link:hover{border-color:transparent;background:var(--block-theme-brand-a06);color:var(--brand)}
.forum-more-link.active{border-color:transparent;background:var(--brand-soft);color:var(--brand);font-weight:700}
.mobile-menu-button{border-radius:10px;transition:background var(--transition-normal)}
.mobile-menu-button:hover{background:var(--block-theme-brand-a06)}

/* ==========================================================================
   3. 页面壳：外层中性画布，内层白色区块
   ========================================================================== */
.wrap{padding:16px 12px 0}
.home-shell{background:transparent;border:0;border-radius:0;padding:0;box-shadow:none}
.forum-layout,.home-shell .forum-layout{gap:18px}

/* ==========================================================================
   4. 区块基座：白底 + 发丝描边 + 顶部高光 + 柔和阴影
   ========================================================================== */
.box,.card,.list,.user-header,.user-bio,.main-panel,.reply-panel,.admin-list-panel,.form-panel,.sidebar-card,.user-panel{
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 120px);
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius);
    box-shadow:var(--block-theme-shadow);
    overflow:hidden
}
.box,.card,.list,.user-header,.user-bio{margin-bottom:16px}
.box{padding:18px 20px}
.box.row{padding:14px 16px}
.main-panel,.main-panel>.list{border-radius:var(--block-theme-radius)}
.user-panel{box-shadow:var(--block-theme-shadow)}

/* 首页/版块页：主面板本身不画框（内部列表自己成块），避免双重边框 */
.home-shell .main-panel{background:transparent;border:0;box-shadow:none;overflow:visible}
.home-shell .main-panel>.list{background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 140px);border:1px solid var(--block-theme-hairline);box-shadow:var(--block-theme-shadow)}

/* ==========================================================================
   5. 侧栏
   ========================================================================== */
.sidebar{gap:16px}
.sidebar-card{border-radius:var(--block-theme-radius)}
.sidebar .card{transition:box-shadow var(--transition-normal),border-color var(--transition-normal)}
.sidebar .card:hover{box-shadow:var(--block-theme-shadow-hover);border-color:var(--block-theme-line)}

/* ==========================================================================
   5.5 横向对齐：让「页首工具条 / 标题条」与它下方的内容块左右对齐。
   - 下方是 .post-list（自带 14px 内边距）→ 工具条同样内缩 14px
   - 下方是整块卡片（.card / .box 等，从面板边缘开始）→ 工具条保持通栏
   ========================================================================== */
.topic-header,
.better-topic-list-bar,
.auth-tabs,
.page-toolbar,
.list-toolbar{padding-left:14px;padding-right:14px}
/* 页首：下方紧跟第一张回帖卡，
   把「标题块底边 → 首帖」的距离压到与「帖→帖」一致的 14px */
.topic-header{margin:0;padding-top:2px;padding-bottom:0}
.topic-header+.topic-post-list{padding-top:14px}
/* .auth-tabs 是 .tab-bar 变体，外观与边距统一由 §13 / §8 提供，此处不再赘述 */
/* 工具栏后跟整块卡片时，回退为通栏，与卡片左边缘对齐。
   注意：后跟 .post-list 时不能回退——列表自带 14px 内边距，
   卡片实际落在 59px，工具条必须同样内缩 14px 才能与其对齐 */
.profile-toolbar:has(+ .card),.profile-toolbar:has(+ .box),
.topic-toolbar:has(+ .card),.topic-toolbar:has(+ .box),
.auth-tabs:has(+ .card),.auth-tabs:has(+ .box),
.page-toolbar:has(+ .card),.page-toolbar:has(+ .box),
.list-toolbar:has(+ .card),.list-toolbar:has(+ .box),
.topic-header:has(+ .card),.topic-header:has(+ .box){padding-left:0;padding-right:0}
.profile-toolbar{margin:0 0 12px;align-items:center}
/* 已经在带内边距的容器里的工具条，不再重复内缩 */
.card>.tab-bar,.box>.tab-bar,.form-panel>.tab-bar,.reply-panel>.tab-bar,
.post-entry .tab-bar,.card>.auth-tabs,.box>.auth-tabs{padding-left:0;padding-right:0}

/* ==========================================================================
   6. 区块标题：竖色条 + 加粗
   ========================================================================== */
.quick-title,.stats-title,.new-users-title,.reply-panel-head h3,.form-panel h2{
    display:flex;align-items:center;gap:9px;color:var(--text);font-weight:700;letter-spacing:-.01em
}
.quick-title:before,.stats-title:before,.new-users-title:before,.reply-panel-head h3:before,.form-panel h2:before{
    content:"";flex:0 0 auto;width:4px;height:1.05em;border-radius:999px;
    background:linear-gradient(180deg,var(--brand),var(--block-theme-brand-a40))
}
.form-panel h2{margin-bottom:16px}

/* ==========================================================================
   7. 主题列表页
   ========================================================================== */
.post-list,.quick-links,.admin-manage-list{list-style:none;margin:0;padding:0}

/* 列表容器：留白 + 纵向节奏，不用衬底框（每条主题自己就是区块）
   注意：主题详情页的回帖列表同样带 .post-list，但它是 .topic-post-list，
   且回帖卡是 grid 布局（见下），这里必须排除，否则会破坏回帖排版。 */
.home-shell .main-panel>.post-list:not(.topic-post-list),.main-panel>.post-list:not(.topic-post-list){
    display:flex;flex-direction:column;gap:10px;
    margin:0;padding:14px;
    background:transparent;border:0;border-radius:0
}

/* 每条主题 = 一张独立区块：白底 + 发丝描边 + 顶部高光 + 静置阴影
   左侧 3px 透明内阴影作预留槽，悬停时点亮为品牌色，提供克制的交互反馈 */
.main-panel>.post-list:not(.topic-post-list)>.post-item,.post-list:not(.topic-post-list)>.post-item{
    display:flex;align-items:flex-start;gap:14px;
    min-height:0;margin:0;
    padding:15px 16px;
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 96px);
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius);
    box-shadow:inset 3px 0 0 transparent,0 1px 2px var(--shadow-base),0 6px 16px -14px var(--shadow-medium);
    transition:border-color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-normal),background var(--transition-normal)
}
.post-list:not(.topic-post-list)>.post-item:last-child{border-bottom:1px solid var(--block-theme-hairline)}
.post-list:not(.topic-post-list)>.post-item+.post-item{margin-top:0}
.post-list:not(.topic-post-list)>.post-item:hover{
    border-color:var(--block-theme-line);
    box-shadow:inset 3px 0 0 var(--brand),var(--block-theme-shadow-hover);
    transform:translateY(-2px)
}
.post-list:not(.topic-post-list)>.post-item:last-child{border-bottom-width:1px;border-bottom-color:var(--block-theme-hairline)}

/* 头像：圆角方块 + 极淡品牌衬底 */
.post-list:not(.topic-post-list)>.post-item>.post-avatar{width:42px;height:42px;margin-top:2px;border-radius:12px;background:var(--brand-soft)}
.post-list:not(.topic-post-list)>.post-item>.post-avatar .avatar-img{border-radius:inherit}
.post-list:not(.topic-post-list)>.post-item>.post-body{gap:7px;min-width:0}

/* 标题：主信息，加粗、可换行，悬停染品牌色
   长 URL / 无空格标题会溢出，这里允许任意断行，避免撑破卡片 */
.post-list:not(.topic-post-list)>.post-item .post-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:5px 8px;min-width:0}
.post-list:not(.topic-post-list)>.post-item .post-title{color:var(--text);font-size:var(--font-size-lg);font-weight:700;line-height:1.55;min-width:0;overflow-wrap:anywhere;word-break:break-word;transition:color var(--transition-normal)}
.post-list:not(.topic-post-list)>.post-item:hover .post-title{color:var(--brand)}

/* 摘要：辅助信息，浅色、限两行 */
.post-list:not(.topic-post-list)>.post-item .card-style-summary{color:var(--text-muted);line-height:1.75;-webkit-line-clamp:2}

/* 元信息：最弱一级，不用分隔线 */
.post-list:not(.topic-post-list)>.post-item .post-meta{gap:0 12px;margin-top:1px;padding-top:0;color:var(--text-subtle);font-size:var(--font-size-sm)}
.post-list:not(.topic-post-list)>.post-item .post-meta .meta-icon{width:14px;height:14px;flex:0 0 14px;opacity:.8}
.post-list:not(.topic-post-list)>.post-item .post-meta a{color:var(--text-muted)}
.post-list:not(.topic-post-list)>.post-item .post-meta a:hover{color:var(--brand)}

/* 版块徽章：浅底胶囊，靠右 */
.post-list:not(.topic-post-list)>.post-item .post-forum-badge{
    flex:none;margin-left:auto;padding:3px 11px;border:0;border-radius:999px;
    background:var(--block-theme-tint-strong);color:var(--text-muted);
    font-size:var(--font-size-xs);font-weight:600;
    transition:background var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal)
}
.post-list:not(.topic-post-list)>.post-item .post-forum-badge:hover{background:var(--brand-soft);color:var(--brand);box-shadow:inset 0 0 0 1px var(--block-theme-brand-a22)}
.post-list:not(.topic-post-list)>.post-item .topic-badge,.post-list:not(.topic-post-list)>.post-item .topic-pages{align-self:center}

/* 空数据：居中浅底块 */
.post-list>.empty-state,.topic-post-list>.empty-state{
    display:flex;align-items:center;justify-content:center;margin:0;padding:40px 20px;
    border:1px solid var(--block-theme-hairline);border-radius:var(--block-theme-radius);
    background:var(--block-theme-tint);color:var(--text-muted);font-size:var(--font-size-sm);text-align:center
}

/* ==========================================================================
   8. 列表页工具栏 / 分页
   ========================================================================== */
/* 工具栏：托盘与面板边缘对齐（不做额外内缩）。
   各页 .tab-bar 统一落在面板左边界，与用户/登录/积分商城等页一致。
   垂直节奏的唯一来源是「下一块内容的顶部内边距」：
   工具栏本身不留下边距，否则会与 .post-list 的 14px 顶部内边距叠加成 24/26px */
.topic-toolbar{margin:0;padding:0 14px;align-items:center}
/* 用户页工具条：仅当后跟 .post-list 时内缩 14px，
   使托盘与列表内的卡片同左边缘（「我的回帖」页）；
   后跟 .user-privacy-notice / .card 等通栏块时保持不缩，与之对齐 */
.profile-toolbar:has(+ .post-list){padding:0 14px}
/* 托盘外观统一由 §13 提供，此处不再重复定义 */

/* 5.6 垂直节奏统一：工具栏 → 首块内容，全站只有一个来源。
   核心/卡片插件给 .tab-bar / .profile-toolbar 留了 12px 下边距，
   而 .post-list 自身又有 14px 顶部内边距 —— 两者叠加会让
   「工具条 → 首帖」变成 24~26px，而「帖 → 帖」只有 10/14px。
   做法：凡后跟内容块的工具条/托盘，一律清掉自身的下边距，
   把节奏完全交给下方内容块（.post-list 14px / .card、.form-panel 自身外边距） */
.topic-toolbar,.profile-toolbar,.page-toolbar,.list-toolbar{margin-bottom:0}
.topic-toolbar:has(+ .post-list),.profile-toolbar:has(+ .post-list),
.page-toolbar:has(+ .post-list),.list-toolbar:has(+ .post-list),
.topic-toolbar:has(+ .card),.profile-toolbar:has(+ .card),
.topic-toolbar:has(+ .box),.profile-toolbar:has(+ .box),
.topic-toolbar:has(+ .form-panel),.profile-toolbar:has(+ .form-panel){margin-bottom:0}
/* 工具条内的托盘同样不留边距（工具栏负责节奏） */
.topic-toolbar>.tab-bar,.profile-toolbar>.tab-bar,
.page-toolbar>.tab-bar,.list-toolbar>.tab-bar,
.topic-toolbar>.auth-tabs,.profile-toolbar>.auth-tabs{margin-bottom:0}

/* 通知条：同样内缩对齐；:empty 时彻底移除占位（避免幽灵空隙）。
   注意：:empty 只看元素节点，而通知条的 .alert 有时是不渲染内容（高度 0）的，
   故只在真的有非零高度内容时才加外边距，避免产生幽灵空隙。
   已折叠（高度 0）时连同外边距一起移除，保证「工具条 → 首帖」仍是 14px */
.better-topic-list-bar{margin:0;padding:0 14px}
.better-topic-list-bar:empty{margin:0;padding:0;display:none}
.better-topic-list-bar:has(.alert){margin-top:0}
.better-topic-list-bar:has(.alert)+.post-list{padding-top:14px}
/* 通知条与列表同处一个「工具栏之后」区块时，节奏仍为 14px */
.topic-toolbar+.better-topic-list-bar+.post-list,
.profile-toolbar+.better-topic-list-bar+.post-list{padding-top:14px}
.better-topic-list-bar .alert{display:block;margin:0 0 10px;padding:11px 16px;border:0;border-radius:var(--block-theme-radius-sm);background:var(--brand-soft);color:var(--brand);font-size:var(--font-size-sm);text-align:center;box-shadow:inset 0 0 0 1px var(--block-theme-brand-a12)}

.pagination-bar{margin-top:14px;padding-top:0}
.pagination-bar .pagination{display:flex;justify-content:center;flex-wrap:wrap;gap:7px;margin:0;padding:0;background:transparent;border:0}
.pagination ul{gap:7px}
.pagination a,.pagination .ellipsis{min-width:34px;height:34px;border-radius:var(--block-theme-radius-sm);font-weight:600;transition:background var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal),transform var(--transition-normal)}
.pagination a{background:var(--panel);border:1px solid var(--block-theme-hairline);box-shadow:0 1px 2px var(--shadow-base);color:var(--text-muted)}
.pagination a:hover{border-color:var(--block-theme-brand-a40);background:var(--brand-soft);color:var(--brand);transform:translateY(-1px)}
.pagination li.active a{background:var(--brand);border-color:transparent;color:var(--inverse-text);box-shadow:0 2px 10px -4px var(--block-theme-brand-a40)}
.pagination .ellipsis{border:0;background:transparent;box-shadow:none}

/* ==========================================================================
   9. 主题页（回帖列表）
   核心里 .post-entry 是 grid（"avatar body" / "content content"），
   这里只能改外观，绝不能改 display / grid-template-areas。
   ========================================================================== */
.topic-post-list{display:flex;flex-direction:column;gap:14px;margin:0;padding:14px;background:transparent;border:0;border-radius:0}
.topic-post-list>.post-entry{
    display:grid;
    grid-template-columns:36px minmax(0,1fr);
    column-gap:12px;
    padding:16px 18px;
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 160px);
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius);
    box-shadow:var(--block-theme-shadow);
    transition:box-shadow var(--transition-normal),border-color var(--transition-normal)
}
.topic-post-list>.post-entry:hover{box-shadow:var(--block-theme-shadow-hover);border-color:var(--block-theme-line)}
/* 主题页命中的楼层：实际样式由文末 §19 皮肤主导权段统一接管（那里特异性更高），
   此处不再重复声明，避免两处规则互相干扰 */
.topic-post-list>.post-entry>.post-avatar{width:36px;height:36px;margin-top:1px}
/* 正文：与作者行保持紧凑（网格行间距靠 margin，不用 gap） */
.topic-post-list>.post-entry>.post-content{margin-top:2px;min-width:0}
/* 楼层操作条：正文段落自带 8px 下边距，这里只补差额，避免叠成 24px 大空 */
.topic-post-list>.post-entry .post-ops{margin-top:6px;padding-top:10px}
.topic-post-list>.post-entry .quick-reply-main-action{margin-top:10px}
/* 引用框与代码块：上下留白收系一点，别把杩贴卡撞成两段 */
.topic-post-list>.post-entry .post-content>blockquote:last-child,
.topic-post-list>.post-entry .post-content>pre:last-child,
.topic-post-list>.post-entry .post-content>p:last-child{margin-bottom:0}

/* 主题页页首：面包屑 / 标题 / 数据的分组节奏
   标题块不再自带下边距，改由 .topic-header 的 padding-bottom 统一控制，
   避免与列表顶部内边距叠成一大块空白 */
.post-topic-title{gap:9px 12px;margin:0}
.post-topic-title h1{font-weight:800;letter-spacing:-.015em;line-height:1.45}
.post-entry .post-author{font-weight:600}
.post-title{color:var(--text);transition:color var(--transition-normal);overflow-wrap:anywhere;word-break:break-word}
.post-title:hover{color:var(--brand)}
.post-content{line-height:1.85;font-size:calc(var(--font-size-md) + 1px)}
.post-content a{color:var(--brand);text-decoration:underline;text-decoration-color:var(--block-theme-brand-a40);text-underline-offset:3px;text-decoration-thickness:1px}
.post-content a:hover{color:var(--brand-hover);text-decoration-color:currentColor}
.post-content blockquote{margin:12px 0 16px;padding:6px 0 6px 16px;border-left:3px solid var(--block-theme-brand-a40);color:var(--text-muted)}
.post-content code{padding:2px 7px;border:0;border-radius:6px;background:var(--block-theme-tint);color:var(--text)}
.post-content pre{padding:16px 18px;border:1px solid var(--inverse-border);border-radius:var(--block-theme-radius-sm);box-shadow:none}
/* 通用高亮回退（非主题页场景，如引用树子楼层、嵌入卡片等）：
   只做强弱层次，不再动 margin，免得在紧凑列表里把行距撞开 */
.post-highlight{background:color-mix(in srgb,var(--brand) 7%,var(--panel));box-shadow:inset 3px 0 0 var(--brand)}

/* ==========================================================================
   10. 徽章 / 标签 / 列表表格
   ========================================================================== */
.topic-badge{height:20px;padding:0 9px;border-radius:999px;font-weight:600}
.post-tag{border:0;border-radius:999px;transition:background var(--transition-normal),color var(--transition-normal)}
.post-tag:hover{background:var(--brand-soft);color:var(--brand)}
.pill{border-radius:999px}
.list th{background:var(--block-theme-tint);font-weight:700;border-bottom:1px solid var(--block-theme-hairline)}
.list th,.list td{border-color:var(--block-theme-hairline)}
.list tr:last-child td{border-bottom:none}
.list tr:hover td{background:var(--block-theme-tint)}

/* ==========================================================================
   11. 表单
   ========================================================================== */
/* 工具条/托盘 → 表单面板：同样统一为 14px（移动 10px）
   核心/卡片插件给 .form-panel 留了 margin-top:4px，与工具条的 12px 下边距叠加
   会变成 16px，且不同页面还各不相同。这里统一由「上方工具条无下边距 +
   表单面板顶部 14px」提供唯一来源 */
.tab-bar+.form-panel,.auth-tabs+.form-panel,
.topic-toolbar+.form-panel,.profile-toolbar+.form-panel,
.page-toolbar+.form-panel,.list-toolbar+.form-panel,
.form-panel.auth-panel{margin-top:14px}
/* 后台托盘（.admin-tabs 等）同样是工具条：自身不留边距，节奏交给下方内容块。
   需压过核心/卡片插件的 `.tab-bar{margin:0 0 12px}`（故带上 html body 前缀） */
html body .main-panel>.tab-bar.admin-tabs,
html body .main-panel>.tab-bar.plugin-tabs,
html body .main-panel>.tab-bar.auth-tabs,
html body .main-panel>.auth-tabs{margin-bottom:0}
/* 主托盘 → 二级托盘：仍是同一节奏 14px */
html body .main-panel>.tab-bar.admin-tabs+.tab-bar.plugin-tabs,
html body .main-panel>.tab-bar+.tab-bar.plugin-tabs{margin-top:14px}
html body .main-panel>.tab-bar.admin-tabs+.form-panel,
html body .main-panel>.tab-bar.plugin-tabs+.form-panel,
html body .main-panel>.tab-bar.admin-tabs+.form-panel.settings-form,
html body .main-panel>.form-panel.settings-form{margin-top:14px}
/* 没有工具条前置（面板首个元素）时，保持面板顶部不加额外外边距 */
.main-panel>.form-panel:first-child{margin-top:0}
.form-panel,.reply-panel{padding:18px 20px;border-radius:var(--block-theme-radius)}
/* 回帖框紧跟回帖列表：列表已有 14px 底部内边距，
   这里把核心自带的 margin-top:12px 去掉，避免叠成 26px */
.topic-post-list+.reply-panel{margin-top:0}
/* 回帖框与上方帖子卡片宽度对齐：
   帖子卡被 .post-list 的 14px 内边距内缩，回帖框直接位于 .main-panel，
   因此需要补齐同样的左右内缩（移动端为 10px） */
.main-panel>.reply-panel{margin-left:14px;margin-right:14px}
.card>.reply-panel,.box>.reply-panel{margin-left:0;margin-right:0}
.reply-panel-head{margin-bottom:14px}
input,select,textarea{
    border:1px solid var(--block-theme-line);border-radius:var(--block-theme-radius-sm);
    background:var(--panel);
    box-shadow:inset 0 1px 2px color-mix(in srgb, var(--text) 4%, transparent);
    transition:border-color var(--transition-normal),box-shadow var(--transition-normal),background var(--transition-normal)
}
input:hover,select:hover,textarea:hover{border-color:var(--block-theme-line-strong)}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--block-theme-brand-a12);outline:none}
input[type=checkbox],input[type=radio]{box-shadow:none}
input[type=checkbox]:checked,input[type=radio]:checked{border-color:var(--brand);background-color:var(--brand)}
.reply-panel textarea{background:var(--block-theme-tint)}
.reply-panel textarea:focus{background:var(--panel)}
.form-panel .grid>span,.reply-panel .grid>span{font-weight:600}

/* ==========================================================================
   12. 按钮
   ========================================================================== */
.btn,button{border-radius:var(--block-theme-radius-sm);font-weight:600;transition:background var(--transition-normal),border-color var(--transition-normal),box-shadow var(--transition-normal),color var(--transition-normal),transform var(--transition-normal)}
.btn.alt{background:var(--block-theme-tint);border-color:transparent;color:var(--text-muted)}
.btn.alt:hover{background:var(--brand-soft);border-color:transparent;color:var(--brand)}
.btn-post{padding:11px;box-shadow:0 2px 10px -4px var(--block-theme-brand-a40)}
.btn-post:hover{box-shadow:0 4px 18px -6px var(--block-theme-brand-a40);transform:translateY(-1px)}
.form-panel button[type=submit],.reply-panel button[type=submit],.topic-form-actions button{box-shadow:0 2px 10px -4px var(--block-theme-brand-a40)}
.side-auth a{border-radius:var(--block-theme-radius-sm)}
.danger,.btn.danger,button.danger{border-radius:var(--block-theme-radius-sm)}

/* ==========================================================================
   13. 标签页：全站统一为「药丸托盘」——白色浮起底 + 发丝边 + 999 圆角
   各页面容器（.auth-tabs / .points-mall-tabs / 裸 .tab-bar / .topic-toolbar）
   统一为同一高度与同一左边缘，使首页、版块、用户、登录、积分商城等一致。
   ========================================================================== */
/* 13.1 托盘本体。注意：作为 flex 子项时 display:inline-flex 会被 blockify，
   故用 width:fit-content + align-self:flex-start 保证托盘始终「只包住药丸」而不拉满 */
.tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs){
    display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;
    width:fit-content;max-width:100%;align-self:flex-start;
    margin:0 0 12px;padding:5px;
    background:var(--panel);border:1px solid var(--block-theme-hairline);
    border-radius:999px;box-shadow:var(--block-theme-shadow)
}
/* 工具栏内的托盘：自包宽度，且外层间距由工具栏自己负责。
   需与 §13.1 同级特异性（加 :not 链）才能盖过它的 margin:0 0 12px，
   否则托盘的 12px 下外边距会在 flex 容器里变成多余高度，导致与 .tab-post 上下不对齐 */
.topic-toolbar .tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs),
.profile-toolbar .tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs),
.page-toolbar .tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs),
.list-toolbar .tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs){width:fit-content;flex:0 1 auto;margin:0}
/* 13.2 药丸 */
.tab-bar:not(.plugin-tabs)>.tab,.tab-bar:not(.plugin-tabs)>.tab.tab-line-start,.tab-bar:not(.plugin-tabs)>.tab.tab-line-end{
    padding:6px 16px;border:0;border-radius:999px;background:transparent;color:var(--text-muted);
    transition:background var(--transition-normal),color var(--transition-normal)
}
/* 13.4 药丸过多时（如积分商城 11 个），托盘改为单行横向滑动，
   而不是折行抬高高度——保证全站托盘高度始终一致（42px） */
.tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs){flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.tab-bar:not(.plugin-tabs):not(.plugin-admin-market-tabs)::-webkit-scrollbar{display:none}
.tab-bar:not(.plugin-tabs)>.tab{flex:0 0 auto;white-space:nowrap}
.tab-bar:not(.plugin-tabs)>.tab+.tab{margin-left:0}
.tab-bar>.tab.tab-wrapped{margin-top:0}
.tab-bar:not(.plugin-tabs)>.tab:hover{background:var(--block-theme-tint);color:var(--text)}
.tab-bar:not(.plugin-tabs)>.tab.active{background:var(--brand);border-color:var(--brand);color:var(--inverse-text);font-weight:600;box-shadow:0 2px 8px -3px var(--block-theme-brand-a40)}
.topic-toolbar .tab-post{border-radius:999px;padding:5px 15px;margin-left:auto}
/* 13.3 仅归一「外层包裹」类容器（它们不是 .tab-bar）
   注意：.auth-tabs / .points-mall-tabs 本身就是 .tab-bar 变体，不能在此清零外观 */
.page-toolbar,.list-toolbar{padding:0;margin:0 0 12px;background:transparent;border:0}
.page-toolbar>.tab-bar,.list-toolbar>.tab-bar{margin:0}
/* 位于带内边距容器内部的托盘不再外扩 */
.card>.tab-bar,.box>.tab-bar,.form-panel>.tab-bar,.reply-panel>.tab-bar,
.post-entry .tab-bar{padding-left:0;padding-right:0}

/* 13.5 防止托盘撑破父容器：
   flex/grid 子项的 min-width:auto 会让宽内容（如 11 个药丸）把祖先撑出屏幕，
   此处对常见包裹层做限制，并让托盘自身滚动 */
.points-mall-cats-row,.points-mall-cats,.points-mall-tabs{min-width:0;max-width:100%}
.points-mall-cats-row{overflow:hidden}

/* 13.6 二级托盘（.plugin-tabs）：后台插件页的次级导航（主题/回帖/用户/回收站 等）。
   它从属于上方的主托盘（.admin-tabs），因此做成主托盘「更安静」的变体：
   —— 同 999 圆角与 42px 高度，但用浅色底（--block-theme-tint）而非白色浮起，
      药丸更小（命中区仍充足），active 才白色浮起 + 品牌色文字。
   注意：本段必须用足够特异性压过核心与卡片插件的 `.plugin-tabs{margin:0;padding:0}` */
.tab-bar.plugin-tabs,.plugin-tabs{
    display:flex;flex-wrap:nowrap;align-items:center;gap:4px;
    width:100%;max-width:100%;align-self:stretch;
    margin:0 0 14px;padding:5px;
    background:var(--block-theme-tint);
    border:1px solid var(--block-theme-hairline);
    border-radius:999px;
    box-shadow:none;
    overflow-x:auto;overflow-y:hidden;
    scrollbar-width:none;-webkit-overflow-scrolling:touch
}
.tab-bar.plugin-tabs::-webkit-scrollbar,.plugin-tabs::-webkit-scrollbar{display:none}
/* 收起核心自带的 3px 竖线标记（旧模式下它会造成文字不对称偏移） */
.tab-bar.plugin-tabs .tab.active:before,.plugin-tabs .tab.active:before{
    content:none;display:none;width:0;margin:0
}
.tab-bar.plugin-tabs .tab,.plugin-tabs .tab{
    display:inline-flex;align-items:center;justify-content:center;
    flex:0 0 auto;min-height:32px;
    padding:6px 16px;
    border:0;border-radius:999px;background:transparent;
    color:var(--text-muted);font-weight:600;white-space:nowrap;
    transition:background var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal)
}
.tab-bar.plugin-tabs .tab:hover,.plugin-tabs .tab:hover{
    background:color-mix(in srgb, var(--panel) 70%, transparent);
    color:var(--text)
}
.tab-bar.plugin-tabs .tab.active,.plugin-tabs .tab.active{
    background:var(--panel);color:var(--brand);font-weight:700;
    box-shadow:0 1px 3px var(--shadow-base),inset 0 0 0 1px var(--block-theme-brand-a22)
}
/* 二级托盘之后的区块不再叠加外边距（节奏由托盘自己的 14px 下边距提供） */
.plugin-tabs+.admin-list-head,.plugin-tabs+.admin-list-panel,
.plugin-tabs+.admin-plugin-page,.plugin-tabs+.admin-plugin-summary{margin-top:0}

/* ==========================================================================
   14. 操作区
   ========================================================================== */
.post-ops button,.post-ops .btn,.post-ops .icon-action,.post-ops>.post-action-form>button{border-radius:var(--block-theme-radius-sm)}
.ops a,.ops button{border-radius:var(--block-theme-radius-sm)}
.ops a:hover{border-color:var(--block-theme-brand-a40);background:var(--brand-soft);color:var(--brand)}

/* ==========================================================================
   15. 个人中心与侧栏细节
   ========================================================================== */
.user-header-info{gap:14px}
.user-avatar-big,.table-avatar{border-radius:50%}
.user-avatar-big{box-shadow:0 0 0 3px var(--panel),0 0 0 4px var(--block-theme-hairline)}
.user-name{font-weight:700}
.user-links a{border-radius:var(--block-theme-radius-sm);transition:background var(--transition-normal),color var(--transition-normal)}
.user-links a:hover{background:var(--block-theme-brand-a06);color:var(--brand)}
.quick-links li{border-bottom:1px solid var(--block-theme-hairline)}
.quick-links li:last-child{border-bottom:none}
.quick-links a{min-height:36px;transition:color var(--transition-normal),background var(--transition-normal)}
.quick-links a:hover{color:var(--brand)}
.quick-links a:before{width:5px;height:5px;background:var(--block-theme-line)}
.quick-links a.active:before,.quick-links a:hover:before{background:var(--brand);box-shadow:0 0 0 3px var(--block-theme-brand-a12)}
.profile-account-card,.profile-disclosure{background:var(--panel)}

/* ==========================================================================
   16. 浮层
   ========================================================================== */
.modal-panel{border:1px solid var(--block-theme-hairline);border-radius:var(--block-theme-radius-lg);box-shadow:var(--block-theme-shadow-float)}
.toast{border:1px solid transparent;border-radius:var(--block-theme-radius);box-shadow:var(--block-theme-shadow-float)}

/* ==========================================================================
   16.5 后台：插件管理页
   核心把每一行做成单列堆叠（信息在左、操作在下方通栏），
   结果是一行近 190px、大面积右侧留白。
   这里改成「左侧信息 + 右侧操作」两列，并压缩页首工具栏。
   ========================================================================== */
/* 面板与页首 */
.admin-list-panel{border:1px solid var(--block-theme-hairline);border-radius:var(--block-theme-radius);background:var(--panel);box-shadow:var(--block-theme-shadow)}
/* 插件后台页（.plugin-admin-page）：本身只是个裸容器，内部堆叠多张面板。
   核心/插件没给它任何节奏，导致「托盘贴首卡 0px、卡与卡 4px」。
   这里直接改成 grid 统一节奏：卡与卡 14px（移动 10px）。
   托盘 → 首卡的距离由 §5.6 的托盘规则（margin-bottom:0）负责，
   所以这里用 padding-top 补上同样的 14/10px，保持单一来源 */
.plugin-admin-page{display:grid;gap:14px;min-width:0;padding-top:14px}
.plugin-admin-page>*{min-width:0}
/* 若上方没有托盘（面板首个元素就是插件页），不要多出顶部留白 */
.main-panel>.plugin-admin-page:first-child{padding-top:0}
.admin-list-head{padding:12px 16px;border-bottom:1px solid var(--block-theme-hairline);background:transparent}
.admin-head-inline{gap:10px 14px}
.admin-plugin-summary{display:flex;align-items:baseline;gap:9px;min-width:0}
.admin-plugin-summary strong{font-size:var(--font-size-lg);letter-spacing:-.01em}
.admin-plugin-summary span{color:var(--text-subtle);font-size:var(--font-size-sm)}
.plugin-head-actions{gap:8px}
.plugin-local-search{width:180px;height:32px;border-radius:999px;background:var(--block-theme-tint)}
.plugin-local-search:focus-within{background:var(--panel)}
.plugin-head-button{border-radius:999px}

/* 列表本体：去掉分割线，改用「卡片 + 间距」分层。
   仅作用于插件卡片列表（.plugin-list），不影响计划任务日志列表 */
.plugin-list-panel .plugin-list{display:grid;gap:10px;padding:12px;background:var(--block-theme-tint)}
.plugin-list-panel .plugin-list>.admin-list-item{border-bottom:0}
.plugin-item.admin-object-row{
    padding:13px 15px;
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius-sm);
    background:var(--panel);
    box-shadow:0 1px 2px var(--shadow-base);
    transition:box-shadow var(--transition-normal),border-color var(--transition-normal),background var(--transition-normal)
}
.plugin-item.admin-object-row:hover{border-color:var(--block-theme-line);box-shadow:var(--block-theme-shadow-hover)}
/* 左信息 / 右操作 两列。
   左信息跨两行（高度主导者）；entry 贴右上、ops 贴右下，
   中间空白作为自然呼吸，而不是把 ops 挤到左信息下方。 */
.plugin-item.admin-object-row{
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:auto auto;
    align-items:start;
    column-gap:16px;
    row-gap:8px;
    min-height:0
}
.plugin-item.admin-object-row>.admin-row-main{grid-column:1;grid-row:1/span 2;min-width:0}
.plugin-item.admin-object-row>.plugin-entry-line{grid-column:2;grid-row:1;align-self:start}
.plugin-item.admin-object-row>.plugin-ops{grid-column:2;grid-row:2;align-self:end}
/* 右侧两簇：上下紧靠、右对齐 */
.plugin-entry-line{justify-content:flex-end;align-content:start;align-items:center;gap:6px;flex-wrap:wrap;align-self:start}
.plugin-entry-label{color:var(--text-subtle);font-size:var(--font-size-xs)}
.plugin-ops{margin:0;justify-content:flex-end;align-self:end;flex-wrap:wrap;gap:6px;overflow:visible}
/* 启用/停用状态：不再整块染色，改用左侧强调条 + 旗标 */
.plugin-item.plugin-local-enabled,.plugin-item.plugin-local-enabled:hover,
.plugin-item.plugin-local-disabled,.plugin-item.plugin-local-disabled:hover,
.plugin-item.plugin-market-installed,.plugin-item.plugin-market-installed:hover,
.plugin-item.plugin-market-available,.plugin-item.plugin-market-available:hover,
.plugin-item.plugin-market-update,.plugin-item.plugin-market-update:hover,
.plugin-item.plugin-update-item,.plugin-item.plugin-update-item:hover{background:var(--panel)}
.plugin-item.plugin-local-disabled{opacity:.86}
.plugin-item.plugin-local-enabled{box-shadow:inset 3px 0 0 var(--brand),0 1px 2px var(--shadow-base)}
.plugin-item.plugin-local-enabled:hover{box-shadow:inset 3px 0 0 var(--brand),var(--block-theme-shadow-hover)}
.plugin-item.plugin-local-disabled{box-shadow:inset 3px 0 0 var(--block-theme-line-strong),0 1px 2px var(--shadow-base)}

/* 行内细节：标题行、元信息、描述、文件路径 */
.plugin-title-line{gap:8px;flex-wrap:wrap}
.plugin-title-line .admin-content-title{font-size:calc(var(--font-size-md) + 1px);font-weight:700;letter-spacing:-.01em}
.admin-flag{height:20px;padding:0 9px;border:0;border-radius:999px;background:var(--block-theme-tint-strong);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600;line-height:20px}
.admin-flag.on{background:var(--brand-soft);color:var(--brand)}
.admin-row-meta{gap:5px 8px;font-size:var(--font-size-xs);color:var(--text-subtle)}
.admin-row-meta>span{display:inline-flex;align-items:center;gap:5px}
.admin-row-meta>span+span:before{content:"";width:3px;height:3px;border-radius:50%;background:var(--block-theme-line-strong)}
.plugin-id{padding:1px 7px;border-radius:999px;background:var(--block-theme-tint);color:var(--text-muted);font-size:var(--font-size-xs)}
.plugin-desc{margin-top:1px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.plugin-file{margin-top:2px;padding:0;color:var(--text-subtle);font-size:var(--font-size-xs);line-height:1.5;opacity:.85}
.plugin-disabled-reason{margin-top:8px;padding:8px 11px;border-left:3px solid var(--danger);border-radius:0 var(--block-theme-radius-sm) var(--block-theme-radius-sm) 0;background:var(--danger-soft);font-size:var(--font-size-xs);line-height:1.55}

/* 后台列表中的按钮统一胶囊化、紧凑化 */
.admin-inline-ops a,.admin-inline-ops button,.plugin-ops a,.plugin-ops button{height:28px;min-height:28px;padding:0 12px;border-radius:999px;font-size:var(--font-size-xs);font-weight:600}
.plugin-ops .plugin-enable,.plugin-ops .plugin-manage-link{border-color:var(--block-theme-brand-a40);background:var(--brand-soft);color:var(--brand);font-weight:700}
.plugin-ops .plugin-enable:hover,.plugin-ops .plugin-manage-link:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-hover)}
.plugin-entry-options{gap:6px;flex-wrap:wrap;justify-content:flex-end}
.plugin-entry-options button,.plugin-entry-options label{height:26px;min-height:26px;padding:0 10px;border-radius:999px;font-size:var(--font-size-xs)}

/* 插件管理配置入口条：最多 60 个链接。
   桌面改为「单行横向滑动」的芯片条（带渐隐提示），
   从 ~190px 降到 ~26px；移动端维持换行。 */
.admin-list-head.plugin-management-entries{margin-bottom:10px;padding:12px 16px 14px;border:1px solid var(--block-theme-hairline);border-radius:var(--block-theme-radius);background:var(--panel);box-shadow:var(--block-theme-shadow);display:grid;gap:9px}
.plugin-management-entries>strong{font-size:var(--font-size-sm);color:var(--text-muted);font-weight:600}
.plugin-management-entries>div{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.plugin-management-entries>div::-webkit-scrollbar{height:6px}
.plugin-management-entries>div::-webkit-scrollbar-thumb{border-radius:999px;background:var(--block-theme-line-strong)}
.plugin-management-entries>div::-webkit-scrollbar-track{background:transparent}
.plugin-management-entries a{display:inline-flex;align-items:center;justify-content:center;height:26px;min-height:26px;padding:0 11px;border:1px solid var(--block-theme-hairline);border-radius:999px;background:var(--block-theme-tint);color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600;line-height:1;white-space:nowrap;transition:background var(--transition-normal),color var(--transition-normal),border-color var(--transition-normal)}
.plugin-management-entries a:hover{border-color:var(--block-theme-brand-a40);background:var(--brand-soft);color:var(--brand)}
/* 上传表单 */
.plugin-upload-form input[type=file]{padding:9px;border:1px dashed var(--block-theme-line);border-radius:var(--block-theme-radius-sm);background:var(--block-theme-tint)}

/* ==========================================================================
   17. 页脚
   ========================================================================== */
.footer{position:relative;margin-top:22px;padding:20px 12px 26px;color:var(--text-subtle);border-top:1px solid var(--block-theme-hairline)}
.footer a:hover{color:var(--brand)}

/* ==========================================================================
   18. 响应式
   ========================================================================== */
@media(max-width:720px){
html{scroll-padding-top:64px}
/* 移动端统一外边距 12px：
   .wrap 负责全部外边距，.home-shell 不再叠加内边距；
   列表内部不再内缩，使卡片、表单、侧栏卡距屏幕完全一致 */
.wrap{padding:10px 12px 0}
.home-shell,.home-shell .home-shell{padding:0}
.forum-layout,.home-shell .forum-layout{gap:12px}
/* 页首工具条/标题条与卡片同边对齐 */
.topic-header,.topic-toolbar,.profile-toolbar,.better-topic-list-bar,.auth-tabs,.page-toolbar,.list-toolbar{padding-left:0;padding-right:0}
/* 移动端：工具条 → 内容 统一为 10px（与「帖 → 帖」同值）。
   工具条自身不留边距，节奏来自下方 .post-list 的 10px 顶部内边距；
   表单面板则由 14px 降为 10px */
.topic-toolbar,.profile-toolbar,.page-toolbar,.list-toolbar{margin-bottom:0}
.topic-toolbar>.tab-bar,.profile-toolbar>.tab-bar,
.page-toolbar>.tab-bar,.list-toolbar>.tab-bar,
.topic-toolbar>.auth-tabs,.profile-toolbar>.auth-tabs{margin-bottom:0}
.tab-bar+.form-panel,.auth-tabs+.form-panel,
.topic-toolbar+.form-panel,.profile-toolbar+.form-panel,
.page-toolbar+.form-panel,.list-toolbar+.form-panel,
.form-panel.auth-panel{margin-top:10px}
html body .main-panel>.tab-bar.admin-tabs+.form-panel,
html body .main-panel>.form-panel.settings-form{margin-top:10px}
html body .main-panel>.tab-bar.admin-tabs+.tab-bar.plugin-tabs,
html body .main-panel>.tab-bar+.tab-bar.plugin-tabs{margin-top:10px}
html body .home-shell .main-panel>.profile-toolbar+.form-panel,
html body .home-shell .main-panel>.topic-toolbar+.form-panel,
html body .home-shell .main-panel>.page-toolbar+.form-panel,
html body .home-shell .main-panel>.list-toolbar+.form-panel,
html body .home-shell .main-panel>.tab-bar+.form-panel,
html body .home-shell .main-panel>.auth-tabs+.form-panel,
html body .home-shell .main-panel>.form-panel.settings-form{margin-top:10px}
.plugin-admin-page{gap:10px;padding-top:10px}
.main-panel>.form-panel:first-child{margin-top:0}
/* 二级托盘：移动端同样贴面板边、药丸略小，下边距 10px */
.tab-bar.plugin-tabs,.plugin-tabs{margin:0 0 10px;padding:4px}
.tab-bar.plugin-tabs .tab,.plugin-tabs .tab{min-height:30px;padding:6px 13px}
/* 移动端列表自身无内边距（卡片直接贴面板边），工具栏不得再内缩 */
.topic-toolbar:has(+ .post-list),.profile-toolbar:has(+ .post-list){padding-left:0;padding-right:0}
.profile-toolbar:has(+ .card),.profile-toolbar:has(+ .box),
.topic-toolbar:has(+ .card),.topic-toolbar:has(+ .box),
.auth-tabs:has(+ .card),.auth-tabs:has(+ .box),
.page-toolbar:has(+ .card),.page-toolbar:has(+ .box),
.list-toolbar:has(+ .card),.list-toolbar:has(+ .box),
.topic-header:has(+ .card),.topic-header:has(+ .box){padding-left:0;padding-right:0}
/* 移动端列表：左右不内缩（卡片贴面板边），上下补 10px 与工具栏形成节奏 */
.home-shell .main-panel>.post-list:not(.topic-post-list),.main-panel>.post-list:not(.topic-post-list){padding:10px 0 0;gap:10px}
/* 已由通知条提供 10px 间距时，列表不再重复补顶部内边距；
   若通知条处于折叠（高度 0）状态，则列表仍需补上 10px，保证节奏不变 */
.better-topic-list-bar:has(.alert)+.post-list{padding-top:10px}
.main-panel>.post-list:not(.topic-post-list)>.post-item,.post-list:not(.topic-post-list)>.post-item{padding:13px 12px;gap:11px}
.main-panel>.post-list:not(.topic-post-list)>.post-item>.post-avatar,.post-list:not(.topic-post-list)>.post-item>.post-avatar{width:38px;height:38px;border-radius:11px}
.topic-post-list{gap:10px;padding:0}
.topic-header+.topic-post-list{padding-top:10px}
.topic-post-list>.post-entry{padding:14px 14px;column-gap:10px}
.box,.card,.list,.user-header,.user-bio{margin-bottom:14px}
.box{padding:16px}
.form-panel,.reply-panel{padding:15px 16px}
/* 用户页内层容器自带 14px 内边距，会与 .wrap 的 12px 叠加成 27px；
   移动端清零外层内边距，让内容与其它页面同边。
   但内边距不能一并丢失——核心是靠 .user-wrap 的 14px 提供内边距的
   （.user-wrap .user-header{padding:0}），清零后头像/用户名会贴死卡片边，
   故把这份内边距还给卡内各块 */
.user-wrap{padding:0}
/* 卡片内部边距：与其它卡片（.box 16px / .form-panel 15px）保持同一量级。
   必须用 .user-wrap 前缀压过核心的 .user-wrap .user-header{padding:0} */
.user-wrap .user-header{padding:13px 14px;margin:0 0 10px}
.user-wrap .user-bio{padding:0 14px}
.user-wrap .user-links{padding:0 14px}
/* 底部补回内边距（.user-wrap 外层已被清零，否则最后一行链贴死卡片底边） */
.user-wrap{padding-bottom:14px}
.main-panel>.reply-panel{margin-left:0;margin-right:0}
.search-page-link{width:auto;background:transparent}
/* 后台插件页：窄屏回退为单列（信息在上、操作在下且左对齐）。
   必须同时重置子元素的 grid-column/row，否则会自动新建第二列并把左列挤成 0 宽 */
.plugin-item.admin-object-row{grid-template-columns:minmax(0,1fr);column-gap:0;row-gap:8px;padding:13px 14px}
.plugin-item.admin-object-row>.admin-row-main,
.plugin-item.admin-object-row>.plugin-entry-line,
.plugin-item.admin-object-row>.plugin-ops{grid-column:1;grid-row:auto}
.plugin-item.admin-object-row>.plugin-entry-line{align-self:auto}
.plugin-item.admin-object-row>.plugin-ops{align-self:auto;margin-top:2px}
.plugin-entry-line,.plugin-ops{justify-content:flex-start}
.plugin-entry-options{justify-content:flex-start}
.admin-list-head{padding:12px}
.plugin-local-search{width:100%}
.plugin-desc{-webkit-line-clamp:3}
.plugin-management-entries{padding:12px 14px}
.plugin-management-entries>div{flex-wrap:wrap;overflow-x:visible;gap:5px}
.footer{padding:16px 16px 26px}
}
@media(min-width:721px){
.forum-layout-has-sidebar{grid-template-columns:minmax(0,1fr) 240px}
.sidebar{width:240px}
}
/* ==========================================================================
   19. 皮肤主导权（与其它卡片类主题共存时的仲裁）
   --------------------------------------------------------------------------
   card_style 等插件会把 <style> 注入到 plugins.css 之后，其
   `.home-shell .post-list > .post-item:not(...)` 一类选择器会盖住本主题。
   这里用「重复类名」提高特异性（不依赖加载顺序、不用 !important），
   让区块主题在共用时仍然生效。
   ========================================================================== */
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list){
    display:flex;flex-direction:column;gap:10px;
    margin:0;padding:14px;
    background:transparent;border:0;border-radius:0
}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item{
    display:flex;align-items:flex-start;gap:14px;
    margin:0;padding:15px 16px;
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 96px);
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius);
    box-shadow:inset 3px 0 0 transparent,0 1px 2px var(--shadow-base),0 6px 16px -14px var(--shadow-medium);
    transform:none
}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item:hover{
    border-color:var(--block-theme-line);
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 96px);
    box-shadow:inset 3px 0 0 var(--brand),var(--block-theme-shadow-hover);
    transform:translateY(-2px)
}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item>.post-avatar{
    width:42px;height:42px;margin-top:2px;border-radius:12px;background:var(--brand-soft)
}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item .post-forum-badge{
    align-self:flex-start;margin-left:auto;padding:3px 11px;
    border:0;border-radius:999px;
    background:var(--block-theme-tint-strong);color:var(--text-muted)
}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item .post-forum-badge:hover{
    background:var(--brand-soft);color:var(--brand);box-shadow:inset 0 0 0 1px var(--block-theme-brand-a22)
}

/* 主题详情页回帖卡：同样压过共存主题，但保持 grid 排版不被破坏 */

/* 二级托盘：后台插件页次级导航。card_style 用 `.plugin-tabs{margin:0;padding:0}`
   （特异性 0,1,0）清零外观，这里用重复类名 + 属性前缀压过它，
   确保二级托盘在共存时仍保持与主托盘一致的几何 */
html body .plugin-tabs.plugin-tabs,
html body .tab-bar.plugin-tabs.tab-bar.plugin-tabs{
    margin:0 0 14px;padding:5px;
    border:1px solid var(--block-theme-hairline);border-radius:999px;
    background:var(--block-theme-tint)
}
html body .plugin-tabs.plugin-tabs .tab.active:before{content:none;display:none;width:0;margin:0}

/* 页首标题块：其它主题会给它加下边距与分隔线，
   这里统一改回无下边距、无分隔线（节奏由 .topic-header 控制） */
html body .home-shell .post-topic-title{margin:0;padding:0;border-bottom:0}
html body .home-shell .topic-header{padding-bottom:0}
html body .home-shell .breadcrumb{margin-bottom:8px;border:0;border-radius:0;background:transparent;padding:0}

html body .home-shell .main-panel>.post-list.post-list.topic-post-list{
    display:flex;flex-direction:column;gap:14px;
    margin:0;padding:14px;
    background:transparent;border:0;border-radius:0
}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry{
    display:grid;grid-template-columns:36px minmax(0,1fr);
    column-gap:12px;row-gap:0;
    margin:0;padding:16px 18px;
    background:linear-gradient(180deg,var(--block-theme-sheen) 0,var(--panel) 96px);
    border:1px solid var(--block-theme-hairline);
    border-radius:var(--block-theme-radius);
    box-shadow:0 1px 2px var(--shadow-base),0 6px 16px -14px var(--shadow-medium);
    transform:none
}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry:hover{
    border-color:var(--block-theme-line);
    box-shadow:var(--block-theme-shadow-hover);
    transform:none
}
/* 命中的楼层（从引用/楼层锚点跳转过来时高亮）：
   用「品牌色淡底 + 左侧 3px 竖条 + 品牌色发丝边」三重呼应，
   不改变盒子尺寸（避免整列跳动），也不使用 !important。
   特异性与上方 §19 基础规则对齐（1,4,2 → 1,5,2），否则会被压掉。 */
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight,
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight:hover{
    margin:0;
    border-color:var(--block-theme-brand-a22);
    background:color-mix(in srgb,var(--brand) 7%,var(--panel));
    box-shadow:inset 3px 0 0 var(--brand),var(--block-theme-shadow-hover);
    transform:none
}
/* 高亮楼层里的头像 / 作者名同步强调一下，让“就是这一楼”更明确 */
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight .post-avatar{
    box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 30%,transparent)
}
/* card_style 等皮肤插件会给 .home-shell .form-panel 加 margin:4px 0 16px，
   同理也让「工具条 → 表单面板」的 14px 节奏被压成 4px。
   这里用皮肤主导权（§19）前缀把它拉回统一节奏。 */
html body .home-shell .main-panel>.profile-toolbar+.form-panel,
html body .home-shell .main-panel>.topic-toolbar+.form-panel,
html body .home-shell .main-panel>.page-toolbar+.form-panel,
html body .home-shell .main-panel>.list-toolbar+.form-panel,
html body .home-shell .main-panel>.tab-bar+.form-panel,
html body .home-shell .main-panel>.auth-tabs+.form-panel,
html body .home-shell .main-panel>.form-panel.settings-form{
    margin-top:14px
}
/* card_style 移动端会给 .home-shell 加 padding:6px，与 .wrap 的边距叠加（12+6=18）。
   移动端统一外边距由 .wrap 独占，这里清零 .home-shell 的内边距。 */
html body .home-shell.home-shell{
    padding:0
}

@media(max-width:720px){
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list){padding:10px 0 0;gap:10px}
html body .home-shell .better-topic-list-bar:has(.alert)+.post-list.post-list:not(.topic-post-list){padding-top:10px}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item{padding:13px 12px;gap:11px}
html body .home-shell .main-panel>.post-list.post-list:not(.topic-post-list)>.post-item.post-item>.post-avatar{width:38px;height:38px;border-radius:11px}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list{gap:10px;padding:0 0 10px}
html body .home-shell .topic-header+.post-list.post-list.topic-post-list{padding-top:10px}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry{padding:14px 14px;column-gap:10px}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight,
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight:hover{
    box-shadow:inset 2px 0 0 var(--brand),var(--block-theme-shadow-hover)
}
html body .home-shell .main-panel>.post-list.post-list.topic-post-list>.post-item.post-entry.post-highlight .post-avatar{
    box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 26%,transparent)
}
}

@media(prefers-reduced-motion:reduce){
.post-item,.post-list:not(.topic-post-list)>.post-item,.topic-post-list>.post-entry,.sidebar .card,.sidebar-card,.forum-link,.forum-more-toggle,.forum-more-link,.quick-links a,.user-links a,.btn,button,.btn-post,.pagination a,.tab,.pill,.post-tag,input,select,textarea,input[type=checkbox],input[type=radio]{transition:none}
}
/* 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)}
}
/* like_coin */
.like-coin-form{display:inline-flex}.like-coin-form .like-coin-action.active{color:var(--text-muted);opacity:.55}.like-coin-form .like-coin-action.active:hover{color:var(--text-muted);opacity:.55}.like-coin-form .like-coin-action[data-like-coin-self="1"]{cursor:default}.like-coin-icon{width:14px;height:14px;flex:0 0 14px}.like-coin-icon path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}.like-coin-action.active .like-coin-icon path{fill:currentColor}.like-coin-gate-unlocked-note{display:flex;align-items:center;gap:6px;margin:0 0 8px;color:var(--text-subtle);font-size:var(--font-size-sm);line-height:1.45}.like-coin-gate-unlocked-note:before{content:"点赞投币";padding:2px 5px;border:1px solid var(--line-soft);border-radius:3px;background:var(--bg);color:var(--brand);font-size:10px;font-weight:700;line-height:1.25}.like-coin-dialog{display:grid;gap:14px}.like-coin-dialog p{margin:0;color:var(--text);font-size:var(--font-size-lg);line-height:1.65}.like-coin-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.like-coin-option{display:flex;align-items:center;gap:8px;min-width:0;padding:10px 12px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:var(--font-size-md)}.like-coin-option input{width:18px;height:18px;flex:0 0 18px;margin:0;accent-color:var(--brand)}.like-coin-option span{min-width:0;overflow-wrap:anywhere}.like-coin-dialog-actions{display:flex;justify-content:flex-end;gap:8px}.like-coin-dialog-actions button{margin:0}.like-coin-likes-page{display:grid;gap:12px}.like-coin-likes-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0}.like-coin-likes-head h2{margin:0;font-size:var(--font-size-lg)}.like-coin-likes-total{font-size:var(--font-size-xs);color:var(--text-muted)}@media(max-width:560px){.like-coin-options{grid-template-columns:1fr}}.like-coin-note-field{display:grid;gap:6px}.like-coin-note-field span{color:var(--text-muted);font-size:var(--font-size-sm)}.like-coin-note-field input,.like-coin-note-field select{width:100%;box-sizing:border-box;margin:0;padding:8px 10px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;font-size:var(--font-size-md);line-height:1.5}.like-coin-note-field input:focus,.like-coin-note-field select:focus{border-color:var(--brand);outline:none}.like-coin-reviews{margin:10px 0;padding:8px 16px;border:1px solid var(--line-soft); border-radius:var(--radius); display:grid;gap:6px}.like-coin-reviews-head{display:flex;align-items:center;gap:6px;color:var(--text-subtle);font-size:var(--font-size-xs);font-weight:600}.like-coin-reviews-count{min-width:16px;padding:0 5px;border-radius:999px;background:var(--line-soft);color:var(--text-muted);font-size:var(--font-size-xxs);font-weight:700;line-height:16px;text-align:center}.like-coin-review-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.like-coin-review{display:flex;align-items:flex-start;gap:8px;min-width:0}.like-coin-review .avatar-profile-link{flex:0 0 24px;width:24px;height:24px;border-radius:50%;overflow:hidden}.like-coin-review .avatar-img{width:24px;height:24px;max-width:none;object-fit:cover;border-radius:50%}.like-coin-review-main{display:grid;gap:2px;min-width:0}.like-coin-review-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}.like-coin-review-name{color:var(--text);font-size:var(--font-size-xs);font-weight:600;text-decoration:none;overflow-wrap:anywhere}.like-coin-review-name:hover{color:var(--brand)}.like-coin-review-time{margin-left:auto;color:var(--text-subtle);font-size:var(--font-size-xxs)}.like-coin-review-score{display:inline-flex;align-items:center;gap:2px;padding:0 6px;border:1px solid var(--line-soft);border-radius:999px;background:var(--bg);color:var(--brand);font-size:var(--font-size-xxs);font-weight:700;line-height:1.5}.like-coin-review-score .like-coin-icon{width:10px;height:10px;flex:0 0 10px}.like-coin-review-score .like-coin-icon path{fill:currentColor}.like-coin-review-score.is-penalty{color:var(--danger)}.like-coin-review-note{min-width:0;color:var(--text);font-size:var(--font-size-sm);line-height:1.5;overflow-wrap:anywhere}.like-coin-review.is-self .like-coin-review-name{color:var(--brand)}.like-coin-review-self{padding:0 5px;border:1px solid var(--line-soft);border-radius:999px;background:var(--bg);color:var(--brand);font-size:var(--font-size-xxs);font-weight:700;line-height:1.4}.like-coin-admin+.like-coin-admin{margin-top:14px}.like-coin-admin .plugin-panel-body{display:grid;gap:12px}.like-coin-admin-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.like-coin-admin-filter input,.like-coin-admin-filter select{min-height:34px;max-width:220px;padding:5px 10px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font:inherit;font-size:var(--font-size-sm);transition:border-color var(--transition-normal),box-shadow var(--transition-normal)}.like-coin-admin-filter input:focus-visible,.like-coin-admin-filter select:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.like-coin-admin-inline-form{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;padding:12px;border:1px dashed var(--line-soft);border-radius:var(--radius);background:var(--bg)}.like-coin-admin-field{display:grid;gap:5px;color:var(--text-muted);font-size:var(--font-size-sm)}.like-coin-admin-field input{min-height:34px;padding:5px 10px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);font:inherit;font-size:var(--font-size-md);transition:border-color var(--transition-normal),box-shadow var(--transition-normal)}.like-coin-admin-field input:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.like-coin-admin-field small{color:var(--text-subtle);font-size:var(--font-size-xxs)}.like-coin-admin-form-actions{flex:0 0 100%}.like-coin-admin-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--radius)}table.like-coin-admin-table{width:100%;min-width:680px;border-collapse:collapse;font-size:var(--font-size-sm)}.like-coin-admin-table th{padding:9px 12px;background:var(--bg);color:var(--text-subtle);font-size:var(--font-size-xxs);font-weight:700;letter-spacing:.05em;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line-soft)}.like-coin-admin-table td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}.like-coin-admin-table tbody tr{transition:background var(--transition-normal)}.like-coin-admin-table tbody tr:hover{background:color-mix(in srgb,var(--brand) 4%,transparent)}.like-coin-admin-table tbody tr:last-child td{border-bottom:0}.like-coin-admin-check{width:52px;text-align:center}.like-coin-admin-user{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap}.like-coin-admin-user .avatar-profile-link{flex:0 0 22px;width:22px;height:22px;border-radius:50%;overflow:hidden;display:inline-block}.like-coin-admin-user .avatar-img{width:22px;height:22px;max-width:none;object-fit:cover;border-radius:50%}.like-coin-admin-user a{color:var(--text);font-weight:600;text-decoration:none}.like-coin-admin-user a:hover{color:var(--brand)}.like-coin-admin-deleted{color:var(--text-disabled)}.like-coin-admin-time{white-space:nowrap}.like-coin-admin-time span{display:block;color:var(--text-muted);font-size:var(--font-size-xs);font-variant-numeric:tabular-nums}.like-coin-admin-time small{display:block;color:var(--text-subtle);font-size:var(--font-size-xxs)}.like-coin-admin-badge,.like-coin-admin-state{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:var(--font-size-xxs);font-weight:700;line-height:1.6;white-space:nowrap;background:var(--line-soft);color:var(--text-muted)}.like-coin-admin-badge.is-coin{background:var(--warning-soft);color:var(--warning)}.like-coin-admin-badge.is-penalty{background:var(--danger-soft);color:var(--danger)}.like-coin-admin-badge.is-like{background:var(--brand-soft);color:var(--brand)}.like-coin-admin-state.is-permanent,.like-coin-admin-state.is-active{background:var(--danger-soft);color:var(--danger)}.like-coin-admin-state.is-expired{background:var(--line-soft);color:var(--text-subtle)}.like-coin-admin-note{min-width:180px;max-width:380px}.like-coin-admin-note-text{color:var(--text);line-height:1.55;overflow-wrap:anywhere}.like-coin-admin-muted{color:var(--text-disabled);font-size:var(--font-size-xxs);margin-left:4px}.like-coin-admin-place{display:flex;flex-direction:column;gap:3px;min-width:0}.like-coin-admin-target{display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);text-decoration:none}.like-coin-admin-target:hover{color:var(--brand)}.like-coin-admin-floor{align-self:flex-start;padding:1px 7px;border-radius:999px;background:var(--bg);border:1px solid var(--line-soft);color:var(--text-subtle);font-size:var(--font-size-xxs);white-space:nowrap}.like-coin-admin-actions{white-space:nowrap}.like-coin-admin-batch{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px dashed var(--line-soft)}.like-coin-admin-batch .like-coin-admin-muted{margin-left:0;font-size:var(--font-size-xs)}.like-coin-admin-empty{padding:26px;text-align:center;color:var(--text-subtle);font-size:var(--font-size-sm);border:1px dashed var(--line-soft);border-radius:var(--radius);background:var(--bg)}.like-coin-admin .plugin-settings-form .grid>input[type=checkbox],.like-coin-admin .forum-group-checks input[type=checkbox],.like-coin-admin .like-coin-admin-table input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:44px;height:24px;margin:0;border:1px solid var(--line);border-radius:999px;background:var(--bg);cursor:pointer;transition:background var(--transition-normal),border-color var(--transition-normal);vertical-align:middle}.like-coin-admin .plugin-settings-form .grid>input[type=checkbox]::after,.like-coin-admin .forum-group-checks input[type=checkbox]::after,.like-coin-admin .like-coin-admin-table input[type=checkbox]::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--text-disabled);transition:transform var(--transition-normal),background var(--transition-normal)}.like-coin-admin .plugin-settings-form .grid>input[type=checkbox]:checked,.like-coin-admin .forum-group-checks input[type=checkbox]:checked,.like-coin-admin .like-coin-admin-table input[type=checkbox]:checked{background:var(--brand);border-color:var(--brand)}.like-coin-admin .plugin-settings-form .grid>input[type=checkbox]:checked::after,.like-coin-admin .forum-group-checks input[type=checkbox]:checked::after,.like-coin-admin .like-coin-admin-table input[type=checkbox]:checked::after{transform:translateX(20px);background:var(--inverse-text)}.like-coin-admin .plugin-settings-form .grid>input[type=checkbox]:focus-visible,.like-coin-admin .forum-group-checks input[type=checkbox]:focus-visible,.like-coin-admin .like-coin-admin-table input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--brand-soft)}@media(max-width:720px){.like-coin-admin-filter input,.like-coin-admin-filter select{flex:1 1 46%;max-width:none}.like-coin-admin-field{flex:1 1 100%}.like-coin-admin-note{max-width:240px}.like-coin-admin-target{max-width:160px}}@media(max-width:640px){.like-coin-admin .plugin-settings-form .grid>input:not([type=checkbox]),.like-coin-admin .plugin-settings-form .grid>textarea,.like-coin-admin .plugin-settings-form .grid>select{min-height:44px}.like-coin-admin .plugin-settings-form>button,.like-coin-admin-filter button,.like-coin-admin-inline-form>button,.like-coin-admin-batch .btn{min-height:44px}.like-coin-admin-inline-form button,.like-coin-admin .plugin-settings-form>button{width:100%}.like-coin-admin-wrap{border:0;overflow:visible}table.like-coin-admin-table{display:block;min-width:0}.like-coin-admin-table thead{display:none}.like-coin-admin-table tbody tr{display:block;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--bg);padding:10px 12px;margin-bottom:10px}.like-coin-admin-table tbody tr:last-child{margin-bottom:0}.like-coin-admin-table tbody tr:hover{background:var(--bg)}.like-coin-admin-table td{display:flex;align-items:flex-start;gap:10px;padding:4px 0;border:0}.like-coin-admin-table td[data-label]::before{content:attr(data-label);flex:0 0 52px;color:var(--text-subtle);font-size:var(--font-size-xxs);font-weight:700;line-height:2}.like-coin-admin-table td.like-coin-admin-check{display:block;padding:0 0 8px;border-bottom:1px dashed var(--line-soft);margin-bottom:4px}.like-coin-admin-table td.like-coin-admin-time span{display:inline}.like-coin-admin-table td.like-coin-admin-time small{display:inline;margin-left:6px}.like-coin-admin-note{max-width:none;min-width:0}.like-coin-admin-target{max-width:none;white-space:normal;overflow:visible;text-overflow:clip}.like-coin-admin-time{white-space:normal}}
/* modsecurity */
.modsecurity-event-detail{margin-top:8px}.modsecurity-event-detail summary{width:max-content;max-width:100%;color:var(--brand);font-size:12px;cursor:pointer}.modsecurity-event-grid{display:grid;grid-template-columns:112px minmax(0,1fr);gap:5px 10px;margin-top:8px;padding:10px;border:1px solid var(--line-soft);border-radius:6px;background:var(--bg);font-size:12px;line-height:1.45}.modsecurity-event-grid>span:nth-child(odd){color:var(--text-subtle)}.modsecurity-event-grid code{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap;color:var(--text);font:11px/1.45 var(--font-mono)}.modsecurity-log-levels{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.modsecurity-log-level{display:inline-flex!important;grid-template-columns:auto!important;align-items:center!important;gap:6px!important;width:auto!important;min-width:82px;padding:7px 10px;border:1px solid var(--line-soft);border-radius:6px;background:var(--bg);cursor:pointer}.modsecurity-log-level input{width:auto!important;min-height:0!important;max-width:none!important}.modsecurity-settings-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.plugin-settings-form .modsecurity-settings-actions button{width:auto;margin-top:0}.modsecurity-settings-actions button+button{margin-left:10px;background:var(--bg);color:var(--text-muted);border:1px solid var(--line)}.modsecurity-settings-actions button+button:hover{background:var(--line-soft);color:var(--text);border-color:var(--text-subtle)}@media(max-width:560px){.modsecurity-event-grid{grid-template-columns:1fr;gap:2px;margin-top:7px}.modsecurity-event-grid>span:nth-child(odd){margin-top:5px;font-weight:600}.modsecurity-event-grid>span:nth-child(odd):first-child{margin-top:0}.modsecurity-settings-actions{gap:8px}.modsecurity-settings-actions button+button{margin-left:8px}}
/* oauth_login */
.oauth-login-password-panel{display:none}.oauth-login-options{display:grid;width:min(100%,450px);gap:10px;margin:18px 0 0;padding:12px;border:1px solid var(--line);border-radius:6px;background:var(--panel)}.oauth-login-options-title{color:var(--text-subtle);font-size:var(--font-size-sm)}.oauth-login-options-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.oauth-login-option{display:flex;min-width:0;min-height:38px;padding:7px 8px;align-items:center;gap:7px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text);font-size:var(--font-size-sm);font-weight:600}.oauth-login-option:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.oauth-login-option-mark{display:grid;width:22px;height:22px;flex:0 0 22px;place-items:center;border:1px solid var(--line-soft);border-radius:5px;background:var(--panel);color:var(--text-muted);font-size:10px;font-weight:700;line-height:1}.oauth-login-option:hover .oauth-login-option-mark{border-color:var(--brand);color:var(--brand)}.oauth-login-option small{display:none}.oauth-login-profile-card{display:grid;gap:12px;margin-top:12px;padding:16px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.oauth-login-profile-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.oauth-login-apply-link{display:inline-block;width:max-content;max-width:100%;color:var(--brand);font-size:var(--font-size-sm)}.oauth-login-callbacks{display:grid;gap:8px}.oauth-login-callbacks code{display:block;overflow-wrap:anywhere;padding:8px 10px;border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-muted);font-size:var(--font-size-sm)}@media(max-width:360px){.oauth-login-options-list{grid-template-columns:1fr}}
/* premium_uid */
.premium-uid-badge{position:relative;display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;line-height:1.4;font-weight:700;letter-spacing:.5px;font-feature-settings:"tnum";overflow:hidden;isolation:isolate;--premium-uid-color-a:#7df9ff;--premium-uid-color-b:#a18cd1;--premium-uid-color-c:#fbc2eb;--premium-uid-glow:#7df9ff;--premium-uid-text:#ffffff;--premium-uid-speed:3s}
.premium-uid-badge .premium-uid-text{position:relative;display:inline-block;background:linear-gradient(120deg,var(--premium-uid-color-a) 0%,var(--premium-uid-color-b) 50%,var(--premium-uid-color-c) 100%);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;text-shadow:none;animation:premium-uid-text-shift var(--premium-uid-speed) linear infinite}
.premium-uid-badge::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(120deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c),var(--premium-uid-color-a));background-size:300% 300%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:premium-uid-border-shift var(--premium-uid-speed) linear infinite;z-index:-2}
.premium-uid-badge::after{content:"";position:absolute;inset:-2px;border-radius:inherit;background:radial-gradient(circle at 50% 50%,var(--premium-uid-glow),transparent 70%);opacity:.55;filter:blur(8px);z-index:-3;animation:premium-uid-glow-pulse var(--premium-uid-speed) ease-in-out infinite}
.premium-uid-badge .premium-uid-shine{position:absolute;top:0;left:-40%;width:24%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.7),transparent);transform:skewX(-18deg);pointer-events:none;animation:premium-uid-shine-sweep calc(var(--premium-uid-speed) * 1.6) ease-in-out infinite;z-index:-1}
.premium-uid-tier-crown{box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.premium-uid-tier-crown::after{filter:blur(10px);opacity:.7}
.premium-uid-tier-rainbow .premium-uid-text{background:linear-gradient(90deg,#ff6b6b,#ffd93d,#6bcf7f,#6bcfff,#a18cd1,#ff6b6b);background-size:300% 100%}
.premium-uid-tier-rainbow::before{background:linear-gradient(90deg,#ff6b6b,#ffd93d,#6bcf7f,#6bcfff,#a18cd1,#ff6b6b);background-size:300% 100%}
.premium-uid-tier-neon .premium-uid-text{background:none;-webkit-text-fill-color:var(--premium-uid-text);color:var(--premium-uid-text);text-shadow:0 0 4px var(--premium-uid-glow),0 0 10px var(--premium-uid-color-a),0 0 18px var(--premium-uid-color-b),0 0 26px var(--premium-uid-color-c);animation:premium-uid-neon-pulse calc(var(--premium-uid-speed) * .8) ease-in-out infinite}
.premium-uid-tier-neon::before{background:linear-gradient(120deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c),var(--premium-uid-color-a));background-size:300% 300%}
.premium-uid-tier-stardust .premium-uid-text{background:linear-gradient(120deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c));background-size:200% 200%}
.premium-uid-tier-stardust::before{background:linear-gradient(120deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c),var(--premium-uid-color-a));background-size:300% 300%}
.premium-uid-tier-stardust .premium-uid-shine{width:40%;background:radial-gradient(circle,rgba(255,255,255,.95) 0%,rgba(255,255,255,0) 60%);filter:blur(2px);animation:premium-uid-stardust-blink calc(var(--premium-uid-speed) * .7) ease-in-out infinite}
.premium-uid-tier-fire .premium-uid-text{background:linear-gradient(180deg,var(--premium-uid-color-a) 0%,var(--premium-uid-color-b) 40%,var(--premium-uid-color-c) 100%);background-size:100% 220%}
.premium-uid-tier-fire::before{background:linear-gradient(180deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c));background-size:100% 220%}
.premium-uid-tier-fire::after{background:radial-gradient(circle at 50% 110%,var(--premium-uid-glow),transparent 70%);animation:premium-uid-fire-flicker calc(var(--premium-uid-speed) * .5) ease-in-out infinite alternate}
.premium-uid-tier-ocean .premium-uid-text{background:linear-gradient(90deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c));background-size:220% 100%}
.premium-uid-tier-ocean::before{background:linear-gradient(90deg,var(--premium-uid-color-a),var(--premium-uid-color-b),var(--premium-uid-color-c),var(--premium-uid-color-a));background-size:260% 100%}
.premium-uid-tier-ocean .premium-uid-shine{background:linear-gradient(120deg,transparent,rgba(255,255,255,.55),transparent);animation:premium-uid-ocean-wave calc(var(--premium-uid-speed) * 1.2) ease-in-out infinite}
@keyframes premium-uid-text-shift{0%{background-position:0% 50%}100%{background-position:200% 50%}}
@keyframes premium-uid-border-shift{0%{background-position:0% 50%}100%{background-position:300% 50%}}
@keyframes premium-uid-glow-pulse{0%,100%{opacity:.45;transform:scale(1)}50%{opacity:.85;transform:scale(1.08)}}
@keyframes premium-uid-shine-sweep{0%{left:-40%}100%{left:140%}}
@keyframes premium-uid-neon-pulse{0%,100%{text-shadow:0 0 4px var(--premium-uid-glow),0 0 10px var(--premium-uid-color-a),0 0 18px var(--premium-uid-color-b),0 0 26px var(--premium-uid-color-c)}50%{text-shadow:0 0 8px var(--premium-uid-glow),0 0 18px var(--premium-uid-color-a),0 0 30px var(--premium-uid-color-b),0 0 44px var(--premium-uid-color-c)}}
@keyframes premium-uid-stardust-blink{0%,100%{opacity:0;transform:translateX(0) scale(.6)}50%{opacity:1;transform:translateX(80px) scale(1.1)}}
@keyframes premium-uid-fire-flicker{0%{opacity:.5;transform:scale(1) translateY(0)}100%{opacity:.95;transform:scale(1.12) translateY(-2px)}}
@keyframes premium-uid-ocean-wave{0%{left:-40%;opacity:.4}50%{opacity:.9}100%{left:140%;opacity:.4}}
.premium-uid-badge.premium-uid-tier-neon{background:transparent}
.premium-uid-badge.premium-uid-tier-crown{background:linear-gradient(135deg,rgba(255,247,174,.18),rgba(255,154,60,.18))}
.premium-uid-badge.premium-uid-tier-fire{background:linear-gradient(180deg,rgba(255,8,68,.08),rgba(255,221,85,.12))}
.premium-uid-badge.premium-uid-tier-ocean{background:linear-gradient(135deg,rgba(0,245,255,.12),rgba(0,51,170,.12))}
.premium-uid-badge.premium-uid-tier-rainbow{background:linear-gradient(135deg,rgba(255,107,107,.08),rgba(107,207,255,.12))}
.premium-uid-badge{transition:transform .2s ease}
.premium-uid-badge:hover{transform:translateY(-1px)}
@media (prefers-reduced-motion: reduce){.premium-uid-badge .premium-uid-text,.premium-uid-badge::before,.premium-uid-badge::after,.premium-uid-badge .premium-uid-shine{animation:none !important}}
.premium-uid-palette{display:inline-flex;align-items:center;gap:4px}
.premium-uid-palette>span{display:inline-block;width:16px;height:16px;border-radius:5px;border:1px solid var(--line)}
.premium-uid-palette>span.glow{box-shadow:0 0 6px currentColor}
.premium-uid-block+.premium-uid-block{margin-top:18px}
.premium-uid-block>h3{margin:0 0 8px}
.premium-uid-block .row{margin:10px 0 0;flex-wrap:wrap}
/* reading_progress */
.reading-progress-track{position:fixed;top:0;left:0;z-index:80;width:100%;height:3px;background:transparent;pointer-events:none}.reading-progress-bar{display:block;width:0;height:100%;background:var(--brand);box-shadow:0 0 8px var(--focus-ring);transform-origin:left center;transition:width 80ms linear}.reading-progress-track[hidden]{display:none}@media(prefers-reduced-motion:reduce){.reading-progress-bar{transition:none}}
/* red_packet_wechat */
.red-packet-wechat-badge{display:inline-flex;align-items:center;gap:4px;min-height:20px;margin-left:6px;padding:1px 9px;border-radius:999px;font-size:var(--font-size-xs);font-weight:600;line-height:1.5;white-space:nowrap;vertical-align:middle}.red-packet-wechat-badge.red-packet-wechat-badge-active{background:var(--danger);color:#fff}.red-packet-wechat-badge.red-packet-wechat-badge-finished{background:var(--line-soft);color:var(--text-muted)}.red-packet-wechat-badge-icon{width:12px;height:9px;flex:none}.red-packet-wechat-compose{margin-bottom:12px}.red-packet-wechat-compose-details{border:1px solid var(--line);border-radius:var(--radius)}.red-packet-wechat-compose-details>summary{padding:10px 16px;cursor:pointer;font-weight:600;font-size:var(--font-size-sm);color:var(--text);background:var(--panel);user-select:none}.red-packet-wechat-compose-body{padding:14px 16px;display:grid;gap:12px}.red-packet-wechat-compose-enable{margin-right:8px;vertical-align:middle}.red-packet-wechat-compose-toggle{display:inline-flex;align-items:center;font-size:var(--font-size-sm);cursor:pointer}.red-packet-wechat-compose-grid{display:none;gap:12px}.red-packet-wechat-compose-enable:checked~.red-packet-wechat-compose-grid{display:grid}.red-packet-wechat-compose-grid .grid{display:grid;gap:4px}.red-packet-wechat-compose-grid .grid span{font-size:var(--font-size-xs);color:var(--text-muted);font-weight:600}.red-packet-wechat-compose-grid input,.red-packet-wechat-compose-grid select{min-height:36px;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);box-sizing:border-box}.red-packet-wechat-compose-grid input:disabled,.red-packet-wechat-compose-grid select:disabled{opacity:.55;cursor:not-allowed}.red-packet-wechat-compose-note{margin:0;padding:8px 12px;border-radius:var(--radius-sm);background:var(--line-soft);color:var(--text-muted);font-size:var(--font-size-xs)}.red-packet-wechat-card-wrapper{--red-packet-wechat-red:#e2513f;--red-packet-wechat-red-deep:#c93a2a;--red-packet-wechat-red-light:#f47a63;--red-packet-wechat-gold:#f8dc96;--red-packet-wechat-gold-deep:#e0b34a;--red-packet-wechat-gold-text:#8f4a17;--red-packet-wechat-width:340px;--red-packet-wechat-cover-ratio:.68;--red-packet-wechat-seal-size:78px;--red-packet-wechat-seal-text-size:27px;--red-packet-wechat-amount-size:40px;--red-packet-wechat-late-size:17px;--red-packet-wechat-from-size:15px;--red-packet-wechat-bless-size:22px;--red-packet-wechat-fu-size:160px;--red-packet-wechat-pad-x:20px;--red-packet-wechat-cover-pad-top:44px;--red-packet-wechat-cover-pad-bottom:40px;--red-packet-wechat-bottom-pad:56px;--red-packet-wechat-gap:20px;--red-packet-wechat-lip:22px;--red-packet-wechat-lip-radius:40px;--red-packet-wechat-detail-pad:18px;--red-packet-wechat-ease:cubic-bezier(.22,.61,.36,1);width:var(--red-packet-wechat-width);max-width:100%;margin:0 0 18px}@media(max-width:720px){.red-packet-wechat-card-wrapper{margin-left:auto;margin-right:auto}}@media(max-width:420px){.red-packet-wechat-card-wrapper{--red-packet-wechat-width:100%;--red-packet-wechat-cover-ratio:.74;--red-packet-wechat-pad-x:14px;--red-packet-wechat-cover-pad-top:26px;--red-packet-wechat-cover-pad-bottom:24px;--red-packet-wechat-bottom-pad:40px;--red-packet-wechat-gap:12px;--red-packet-wechat-lip:16px;--red-packet-wechat-lip-radius:28px;--red-packet-wechat-detail-pad:14px;--red-packet-wechat-seal-size:64px;--red-packet-wechat-seal-text-size:22px;--red-packet-wechat-amount-size:32px;--red-packet-wechat-late-size:15px;--red-packet-wechat-bless-size:19px;--red-packet-wechat-fu-size:120px;margin:0 0 14px}}.red-packet-wechat-card-wrapper,.red-packet-wechat-card-wrapper *{box-sizing:border-box}.red-packet-wechat-env{position:relative;width:100%;border-radius:14px;overflow:hidden;background:var(--red-packet-wechat-red);box-shadow:0 6px 20px var(--shadow-medium);transition:height .45s var(--red-packet-wechat-ease)}.red-packet-wechat-cover{position:relative;display:flex;flex-direction:column;aspect-ratio:var(--red-packet-wechat-cover-ratio);text-align:center;background:linear-gradient(180deg,var(--red-packet-wechat-red) 0%,var(--red-packet-wechat-red-deep) 100%);transition:opacity .28s ease,transform .4s var(--red-packet-wechat-ease)}.red-packet-wechat-cover::before{content:"福";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:.06;font-size:var(--red-packet-wechat-fu-size);font-weight:700;font-family:"STKaiti","KaiTi","SimSun",serif;line-height:1;pointer-events:none}.red-packet-wechat-cover-art{position:absolute;left:0;right:0;top:0;height:66%;overflow:hidden;opacity:.34;pointer-events:none}.red-packet-wechat-cover-art img{display:block;width:100%;height:100%;object-fit:cover}.red-packet-wechat-cover-top{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:flex-start;padding:var(--red-packet-wechat-cover-pad-top) var(--red-packet-wechat-pad-x) var(--red-packet-wechat-cover-pad-bottom);min-width:0}.red-packet-wechat-cover-sender{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0}.red-packet-wechat-cover-avatar{background:rgba(255,255,255,.25);box-shadow:0 0 0 1.5px rgba(255,255,255,.55)}.red-packet-wechat-cover-from{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(255,255,255,.92);font-size:var(--red-packet-wechat-from-size);font-weight:600}.red-packet-wechat-cover-bless{margin:var(--red-packet-wechat-gap) 0 0;color:var(--red-packet-wechat-gold);font-size:var(--red-packet-wechat-bless-size);font-weight:700;line-height:1.4;word-break:break-word;text-shadow:0 1px 2px rgba(120,20,5,.28)}.red-packet-wechat-cover-type{display:inline-block;align-self:center;margin-top:var(--red-packet-wechat-gap);padding:2px 10px;border-radius:999px;max-width:100%;background:rgba(255,255,255,.16);color:rgba(255,255,255,.9);font-size:var(--font-size-xxs);font-weight:600}.red-packet-wechat-cover-bottom{position:relative;z-index:1;flex:none;margin-top:calc(var(--red-packet-wechat-lip) * -1);padding:0 var(--red-packet-wechat-pad-x) var(--red-packet-wechat-bottom-pad);background:var(--red-packet-wechat-red-light);border-radius:50% 50% 0 0/var(--red-packet-wechat-lip-radius) var(--red-packet-wechat-lip-radius) 0 0}.red-packet-wechat-seal{display:flex;align-items:center;justify-content:center;width:var(--red-packet-wechat-seal-size);height:var(--red-packet-wechat-seal-size);margin:calc(var(--red-packet-wechat-seal-size) * -.44) auto 0;padding:0;border:0;border-radius:50%;background:radial-gradient(circle at 32% 28%,#fff3cd,var(--red-packet-wechat-gold) 46%,var(--red-packet-wechat-gold-deep));color:var(--red-packet-wechat-gold-text);cursor:pointer;user-select:none;box-shadow:0 4px 12px rgba(120,20,5,.34),inset 0 2px 3px rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.16);transition:transform .2s ease,opacity .2s ease;animation:red-packet-wechat-glow 2.2s ease-in-out infinite}@keyframes red-packet-wechat-glow{0%,100%{box-shadow:0 4px 12px rgba(120,20,5,.34),inset 0 2px 3px rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.16),0 0 0 0 rgba(248,220,150,.6)}50%{box-shadow:0 4px 12px rgba(120,20,5,.34),inset 0 2px 3px rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.16),0 0 0 9px rgba(248,220,150,0)}}.red-packet-wechat-seal:hover{transform:scale(1.06);background:radial-gradient(circle at 32% 28%,#fff3cd,var(--red-packet-wechat-gold) 46%,var(--red-packet-wechat-gold-deep));color:var(--red-packet-wechat-gold-text)}.red-packet-wechat-seal:active{transform:scale(.94)}.red-packet-wechat-seal:focus-visible{outline:2px solid #fff;outline-offset:3px}.red-packet-wechat-seal-done{background:radial-gradient(circle at 32% 28%,#f6ead0,#e3cfa4 46%,#c9ae78);animation:none}.red-packet-wechat-seal-text{font-size:var(--red-packet-wechat-seal-text-size);font-weight:900;letter-spacing:1px;line-height:1}.red-packet-wechat-seal.red-packet-wechat-is-spinning{pointer-events:none;animation:red-packet-wechat-spin .7s linear infinite}@keyframes red-packet-wechat-spin{from{transform:rotateY(0)}to{transform:rotateY(360deg)}}.red-packet-wechat-cover-hint{margin:12px 0 0;color:rgba(255,255,255,.85);font-size:var(--font-size-xs)}.red-packet-wechat-detail{position:relative;display:flex;flex-direction:column;aspect-ratio:var(--red-packet-wechat-cover-ratio);padding:var(--red-packet-wechat-detail-pad) var(--red-packet-wechat-pad-x) 10px;background:var(--panel);transform:translateY(100%);opacity:0;transition:transform .45s var(--red-packet-wechat-ease),opacity .25s ease}.red-packet-wechat-env.red-packet-wechat-is-open .red-packet-wechat-cover{position:absolute;left:0;right:0;top:0;opacity:0;transform:scale(.96);pointer-events:none}.red-packet-wechat-env.red-packet-wechat-is-revealed .red-packet-wechat-detail{transform:translateY(0);opacity:1}.red-packet-wechat-env.red-packet-wechat-is-done .red-packet-wechat-cover{display:none}.red-packet-wechat-card-wrapper [hidden]{display:none}.red-packet-wechat-detail-head{flex:none;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}.red-packet-wechat-detail-avatar{background:var(--line-soft)}.red-packet-wechat-detail-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:var(--font-size-md);font-weight:700}.red-packet-wechat-detail-bless{color:var(--text-subtle);font-size:var(--font-size-xs)}.red-packet-wechat-detail-amount{display:flex;align-items:baseline;justify-content:center;gap:5px;padding:18px 0 2px;color:var(--warning)}.red-packet-wechat-detail-amount b{font-size:var(--red-packet-wechat-amount-size);line-height:1.1;font-weight:800;font-variant-numeric:tabular-nums}.red-packet-wechat-detail-amount span{font-size:var(--font-size-sm);font-weight:600}.red-packet-wechat-detail-tip{margin:6px 0 0;color:var(--text-subtle);font-size:var(--font-size-xs);text-align:center}.red-packet-wechat-detail-late{padding:26px 8px 20px;color:var(--text-muted);font-size:var(--red-packet-wechat-late-size);font-weight:700;text-align:center;line-height:1.5}.red-packet-wechat-detail-stat{margin-top:14px;padding:9px 2px;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);color:var(--text-muted);font-size:var(--font-size-xs)}.red-packet-wechat-detail-stat b{font-weight:700;color:var(--text)}.red-packet-wechat-detail-list{list-style:none!important;margin:0!important;padding:0!important;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.red-packet-wechat-record{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line-soft);list-style:none!important;margin:0!important}.red-packet-wechat-record:last-child{border-bottom:none}.red-packet-wechat-record-avatar{background:var(--line-soft)}.red-packet-wechat-record-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.red-packet-wechat-record-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:var(--font-size-sm);font-weight:600;line-height:1.3}.red-packet-wechat-record-time{color:var(--text-subtle);font-size:var(--font-size-xs);line-height:1.3}.red-packet-wechat-record-amount{display:flex;align-items:center;gap:6px;flex:none;color:var(--text);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}.red-packet-wechat-record-amount b{font-weight:700}.red-packet-wechat-record-best{padding:1px 6px;border-radius:3px;background:var(--warning-soft);color:var(--warning);font-style:normal;font-size:var(--font-size-xxs);font-weight:600;white-space:nowrap}.red-packet-wechat-record-me .red-packet-wechat-record-name{color:var(--warning)}.red-packet-wechat-record-empty{padding:22px 2px;color:var(--text-subtle);font-size:var(--font-size-xs);text-align:center;list-style:none!important;margin:0!important}.red-packet-wechat-refund{display:flex;justify-content:center;padding:10px 0 0}.red-packet-wechat-refund-btn{min-height:28px;padding:0 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;transition:border-color .15s ease,color .15s ease,background-color .15s ease}.red-packet-wechat-refund-btn:hover{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.red-packet-wechat-refund-btn:disabled{opacity:.5;cursor:not-allowed}@media(prefers-reduced-motion:reduce){.red-packet-wechat-env,.red-packet-wechat-cover,.red-packet-wechat-detail{transition:none}.red-packet-wechat-seal,.red-packet-wechat-seal.red-packet-wechat-is-spinning{animation:none}}.red-packet-wechat-admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.red-packet-wechat-admin-card{display:grid;gap:4px;padding:16px;border-radius:var(--radius);background:var(--panel);text-align:center}.red-packet-wechat-admin-card span{font-size:var(--font-size-xs);color:var(--text-muted)}.red-packet-wechat-admin-card strong{font-size:var(--font-size-xl);font-weight:700}.red-packet-wechat-group-checks{display:flex;flex-wrap:wrap;gap:10px;padding-top:4px}.red-packet-wechat-group-check{display:flex;align-items:center;gap:5px;font-size:var(--font-size-sm);cursor:pointer}.red-packet-wechat-group-check input[type="checkbox"]{accent-color:var(--danger)}.red-packet-wechat-form{display:grid;gap:16px}.red-packet-wechat-form .grid{display:grid;gap:6px}.red-packet-wechat-form .grid>span{font-weight:600;font-size:var(--font-size-sm)}.red-packet-wechat-form .grid>span small{display:block;margin-top:2px;font-weight:400;color:var(--text-muted)}.red-packet-wechat-form button{justify-self:start;min-width:120px;min-height:38px;padding:0 20px;border:none;border-radius:var(--radius-sm);background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);font-weight:600;cursor:pointer}.red-packet-wechat-note{color:var(--text-muted);font-size:var(--font-size-sm)}
/* search_highlight */
.search-highlight-mark{background:var(--warning-soft);color:var(--warning);padding:0 2px;border-radius:3px}
/* topic_author_reply_mark */
.post-head .topic-author-reply-mark{margin-left:6px;white-space:nowrap}.post-head .topic-author-reply-mark:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media(max-width:520px){.post-head .topic-author-reply-mark{margin-left:4px}}
/* user_delete_request */
.user-delete-request-wrap{max-width:760px;margin:0 auto}
.user-delete-request-admin-list{display:grid;gap:10px}
.user-delete-request-admin-row{padding:12px;border:1px solid var(--line-soft);border-radius:8px;background:var(--panel)}
.user-delete-request-admin-row p{margin:4px 0 0}
.user-delete-request-admin-reason{color:var(--text)}
.user-delete-request-admin-meta{color:var(--text-muted);font-size:var(--font-size-sm)}
.user-delete-request-admin-ops{display:flex;gap:10px;align-items:center;margin-top:8px;flex-wrap:wrap}
.user-delete-request-reject{display:flex;gap:6px;align-items:center}
.user-delete-request-reject input{flex:1;min-width:140px}
/* 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_uid_badge */
.post-meta .post-user-group.user-uid-badge{display:inline-flex;align-items:center;box-sizing:border-box;height:16px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--text-subtle);font-size:var(--font-size-xxs);font-weight:500;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.post-meta .user-uid-icon{display:inline-flex;align-items:center;justify-content:center;width:11px;height:11px;margin-right:2px}.post-meta .user-uid-icon svg{width:11px;height:11px}
