/* 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)}
}