/* user_titles */
/* ===== 前台徽章 ===== */
.user-titles-badge-list{display:inline-flex;align-items:center;flex-wrap:wrap;gap:3px;margin-left:4px;vertical-align:middle}
.user-titles-badge{
    --user-titles-text:#2563eb;
    --user-titles-bg:#2563eb;
    position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
    width:var(--user-titles-image-size,14px);height:var(--user-titles-image-size,14px);border-radius:50%;
    color:#fff;background:var(--user-titles-bg);
    vertical-align:middle;cursor:default;
}
.user-titles-badge-icon{position:relative;z-index:1;width:calc(var(--user-titles-image-size,14px) - 4px);height:calc(var(--user-titles-image-size,14px) - 4px);display:block;flex:none}
.user-titles-badge-img{position:relative;z-index:1;display:block;flex:none;height:var(--user-titles-image-size,14px);width:auto;max-width:160px;object-fit:contain;background:none}
.user-titles-badge-item{display:inline-flex;align-items:center;gap:4px;min-width:0}
.user-titles-badge-name{margin-left:4px;font-size:var(--font-size-sm);color:var(--ut-name,var(--text));font-weight:500;white-space:nowrap}
.user-titles-text-list{display:inline-flex;align-items:center;flex-wrap:wrap;gap:3px 10px;margin-left:6px;vertical-align:middle}
.user-titles-text{display:inline-flex;align-items:center;gap:4px;font-size:var(--font-size-sm);color:var(--ut-text,#e53935);font-weight:500;white-space:nowrap;line-height:1.2}
.user-titles-text i{width:6px;height:6px;border-radius:50%;background:var(--ut-text,#e53935);flex:none}
.post-avatar{position:relative}
.user-titles-avatar-badges{position:absolute;right:-4px;bottom:-4px;z-index:2;line-height:0}
.user-titles-avatar-badges .user-titles-badge-list{margin:0;flex-wrap:nowrap}
.user-titles-avatar-badges .user-titles-badge{width:15px;height:15px;box-shadow:0 0 0 2px var(--panel,#fff)}
.user-titles-avatar-badges .user-titles-badge-icon{width:9px;height:9px}
.user-titles-avatar-badges .user-titles-badge--image{box-shadow:none}
.user-titles-avatar-badges .user-titles-badge-img{height:13px}
.user-titles-avatar-badges .user-titles-badge--dalao{width:auto;height:auto;min-width:0;max-width:64px;padding:0 4px 1px;font-size:9px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 0 0 2px var(--panel,#fff)}
.user-titles-badge--red{--user-titles-bg:#e53935}
.user-titles-badge--blue{--user-titles-bg:#1e88e5}
.user-titles-badge--green{--user-titles-bg:#43a047}
.user-titles-badge--purple{--user-titles-bg:#7e57c2}
.user-titles-badge--gold{--user-titles-bg:#f9a825}
.user-titles-badge--orange{--user-titles-bg:#fb8c00}
.user-titles-badge--teal{--user-titles-bg:#009688}
.user-titles-badge--gray{--user-titles-bg:#78909c}
.user-titles-badge--custom{--user-titles-bg:var(--user-titles-text)}
.user-titles-badge--image{background:none;border-radius:0;width:auto;padding:0}
.user-titles-badge--dalao{
    width:auto;height:auto;min-width:0;border-radius:5px;padding:0 5px 1px;
    font-size:var(--user-titles-badge-size,10px);font-weight:500;line-height:1.5;white-space:nowrap;
    color:var(--user-titles-badge-text,#fff);background:var(--user-titles-bg);
}
.user-titles-badge.user-titles-badge--vip{--user-titles-bg:#d32f2f}
.user-titles-badge--image.user-titles-badge--vip{--user-titles-bg:none;background:none}

/* ===== 后台布局 ===== */
.ut-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:0 0 14px}
.ut-stat{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 4px 14px var(--shadow-base)}
.ut-stat b{font-size:26px;font-weight:700;line-height:1.1;letter-spacing:-.5px}
.ut-stat span{font-size:var(--font-size-sm);color:var(--text-muted)}
.ut-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 4px 14px var(--shadow-base);padding:16px;margin:0 0 14px}
.ut-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin:0 0 14px}
.ut-card-head h3{margin:0;font-size:var(--font-size-lg);font-weight:600;line-height:1.3}
.ut-card-head p{margin:3px 0 0;font-size:var(--font-size-sm);color:var(--text-muted)}
.ut-card-actions{display:flex;align-items:center;gap:10px;padding-top:4px}

/* ===== 后台表单 ===== */
.ut-settings-form{display:grid;gap:16px}
.ut-settings-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.ut-mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.ut-mode-option{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);cursor:pointer;text-align:center;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.ut-mode-option:hover{border-color:var(--line);background:var(--bg)}
.ut-mode-option input{position:absolute;opacity:0;pointer-events:none}
.ut-mode-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:var(--bg);color:var(--text-muted);transition:transform .2s ease,color .2s ease}
.ut-mode-icon svg{width:28px;height:28px}
.ut-mode-label{font-size:var(--font-size-sm);font-weight:600;color:var(--text)}
.ut-mode-desc{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.4}
.ut-mode-option:has(input:checked){border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px var(--focus-ring)}
.ut-mode-option:has(input:checked) .ut-mode-icon{color:var(--brand);background:#fff;transform:scale(1.06)}
.ut-mode-option:has(input:checked) .ut-mode-desc{color:var(--text)}
.ut-hint{padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--bg);font-size:var(--font-size-sm);color:var(--text-muted);line-height:1.6}
.ut-hint strong{color:var(--text);font-weight:600;margin-right:6px}
.ut-edit-form{display:grid;gap:14px}
.ut-edit-form .grid,.ut-settings-form .grid{display:grid;grid-template-columns:1fr;gap:5px;margin:0;align-items:start}
.ut-edit-form .grid>span,.ut-settings-form .grid>span{padding-top:0;color:var(--text-muted);font-size:var(--font-size-sm)}
.ut-edit-form .grid input,.ut-edit-form .grid select,.ut-settings-form .grid input{max-width:none}
.ut-field{margin:0}
.ut-edit-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.ut-cancel{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--font-size-sm)}
.ut-cancel:hover{border-color:var(--line);background:var(--bg);color:var(--text)}

/* ===== 样式选择器 ===== */
.ut-picker{display:grid;gap:6px}
.ut-picker-label{color:var(--text-muted);font-size:var(--font-size-sm)}
.ut-picker-label small{display:block;color:var(--text-subtle);font-size:var(--font-size-xs)}
.ut-style-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.ut-style-option{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.ut-style-option:hover{border-color:var(--line);background:var(--bg)}
.ut-style-option input{position:absolute;opacity:0;pointer-events:none}
.ut-style-swatch{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--ut-swatch,#eee);color:#fff;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);transition:transform .2s ease}
.ut-style-check{width:14px;height:14px;opacity:0;transition:opacity .2s ease}
.ut-style-option--custom .ut-style-swatch{background:#fff;box-shadow:inset 0 0 0 1px var(--line)}
.ut-style-option--image .ut-style-swatch{background:var(--bg);border:1px dashed var(--line);border-radius:8px;color:var(--text-muted)}
.ut-style-img-icon{width:16px;height:16px}
.ut-style-custom-swatch{width:16px;height:16px;border-radius:50%;background:conic-gradient(#f59e0b,#ef4444,#8b5cf6,#06b6d4,#22c55e,#f59e0b)}
.ut-picker--dl{margin-top:14px}
.ut-style-option--dalao .ut-style-swatch{width:auto;min-width:34px;height:18px;border-radius:6px;padding:0 6px;background:var(--ut-swatch-bg,#eee);color:var(--ut-swatch-text,#fff);font-size:10px;font-weight:500;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.ut-style-label{font-size:var(--font-size-xs);color:var(--text-muted);text-align:center;line-height:1.3}
.ut-style-option:has(input:checked){border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px var(--focus-ring)}
.ut-style-option:has(input:checked) .ut-style-swatch{transform:scale(1.12)}
.ut-style-option:has(input:checked) .ut-style-check{opacity:1}
.ut-style-option:has(input:checked) .ut-style-label{color:var(--text);font-weight:600}

/* ===== 称号列表 ===== */
.ut-table{margin:0}
.ut-table td{padding-top:10px;padding-bottom:10px}
.ut-preview{display:inline-flex;align-items:center;justify-content:center;min-width:56px;height:40px;padding:0 12px;border-radius:10px;background:var(--bg);border:1px solid var(--line)}
.ut-preview-empty{color:var(--text-disabled);font-size:var(--font-size-xs)}
.ut-style-tag{display:inline-flex;align-items:center;min-height:22px;padding:0 9px;border:1px solid var(--line-soft);border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs)}
.ut-sort-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:22px;padding:0 6px;border-radius:6px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs);font-family:var(--font-mono)}
.ut-pos-tag{display:inline-flex;align-items:center;min-height:22px;padding:0 9px;border:1px solid var(--line-soft);border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs)}
.ut-pos-tag--avatar{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.ut-op{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--font-size-sm)}
.ut-op:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}

/* ===== 空状态 ===== */
.ut-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:38px 16px;text-align:center;color:var(--text-muted)}
.ut-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-bottom:4px;border-radius:50%;background:var(--bg);color:var(--text-subtle)}
.ut-empty-icon svg{width:22px;height:22px}
.ut-empty b{font-size:var(--font-size-md);color:var(--text)}
.ut-empty p{margin:0;font-size:var(--font-size-sm);color:var(--text-muted)}

/* ===== 颁发页 ===== */
.ut-search{margin:0 0 12px}
.ut-search form{display:flex;align-items:center;gap:0;max-width:520px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 1px 3px var(--shadow-base);overflow:hidden}
.ut-search-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:34px;flex:none;color:var(--text-subtle)}
.ut-search-icon svg{width:15px;height:15px}
.ut-search-input{flex:1;min-width:0;height:34px;padding:0 8px;border:0;background:transparent;box-shadow:none;font-size:var(--font-size-sm)}
.ut-search form button{height:30px;margin:2px;padding:0 16px;border:0;border-radius:6px;background:var(--brand);color:var(--inverse-text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer}
.ut-search form button:hover{background:var(--brand-hover)}
.ut-result-meta{font-size:var(--font-size-sm);color:var(--text-muted);margin:0 0 10px}
.ut-award-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);box-shadow:0 4px 14px var(--shadow-base);margin:0 0 14px;overflow:hidden}
.ut-award-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line-soft);background:var(--bg)}
.ut-award-user{display:flex;align-items:center;gap:10px;min-width:0}
.ut-award-user .avatar-img{width:34px;height:34px;flex:none;border-radius:50%}
.ut-award-user-main{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.ut-award-name{font-size:var(--font-size-md);font-weight:600}
.ut-award-uid{font-size:var(--font-size-xs);color:var(--text-muted);font-family:var(--font-mono)}
.ut-award-state{flex:none;padding:3px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text-muted);font-size:var(--font-size-xs)}
.ut-award-current{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--line-soft);font-size:var(--font-size-sm);color:var(--text-muted)}
.ut-award-current-label{flex:none;color:var(--text-subtle)}
.ut-chips{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}
.ut-chip{display:inline-flex;align-items:center;padding:2px 8px 2px 5px;border:1px solid var(--line-soft);border-radius:999px;background:var(--panel)}
.ut-chip .user-titles-badge-list{margin-left:0}
.ut-none{color:var(--text-disabled);font-size:var(--font-size-sm)}
.ut-award-pick{border-bottom:1px solid var(--line-soft)}
.ut-award-pick-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px 2px}
.ut-award-pick-title{font-size:var(--font-size-sm);font-weight:600;color:var(--text)}
.ut-award-count{flex:none;padding:2px 10px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:var(--font-size-xs)}
.ut-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;padding:12px 16px;align-items:start}
.ut-check{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.ut-check:hover{border-color:var(--line);background:var(--bg)}
.ut-check:has(input:checked){border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px var(--focus-ring)}
.ut-check input{width:15px;height:15px;margin:0;flex:none;accent-color:var(--brand);cursor:pointer}
.ut-check .user-titles-badge-list{flex-wrap:nowrap;align-items:center;margin-left:0;min-width:0;gap:6px}
.ut-check .user-titles-badge{flex:none;cursor:pointer}
.ut-check .user-titles-badge-name{white-space:normal;overflow:visible;text-overflow:clip;flex:none;min-width:0;line-height:1.4;color:var(--text)}
.ut-award-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid var(--line-soft);background:var(--bg)}
.ut-award-hint{font-size:var(--font-size-xs);color:var(--text-subtle)}

/* ===== 图标上传 ===== */
.user-titles-icon-row{display:grid;gap:0;padding:0 2px}
.user-titles-icon-field{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;margin:0!important}
.user-titles-icon-field input[type="file"]{padding:7px;font-size:var(--font-size-sm)}
.user-titles-icon-current{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 10px;border:1px dashed var(--line);border-radius:8px;background:var(--bg)}
.user-titles-icon-current img{width:auto;height:34px;border-radius:8px;object-fit:contain}
.user-titles-icon-current span{font-size:var(--font-size-sm);color:var(--text-muted)}
.user-titles-icon-current button{margin-left:auto}

/* ===== 自定义颜色 ===== */
.user-titles-custom-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0 14px}

/* ===== 页签 ===== */
.user-titles-tabs{margin:0 0 14px}
.user-titles-tabs .tab{padding:8px 16px}