/* 统一模型管理台（v2.103.0） */
.mm-wrap { max-width: 1180px; margin: 0 auto; }
.mm-intro { color: var(--muted, #8aa); margin-bottom: 12px; }
.mm-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.mm-tab { padding: 8px 16px; border-radius: 10px; border: 1px solid var(--border, rgba(255,255,255,.12)); background: var(--card, rgba(255,255,255,.04)); color: var(--text, #e1ebfa); cursor: pointer; font-size: 14px; }
.mm-tab.active { background: var(--accent, #3b82f6); color: #fff; border-color: transparent; }
.mm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
/* 「模型目录」二级 tab（v2.105.31）：按能力分组切换，一屏只展示一类，不用一直往下拉 */
.mm-subtabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--border, rgba(255,255,255,.1)); }
.mm-subtab { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 999px; border: 1px solid transparent; background: transparent; color: var(--muted, #8aa); font-size: 13px; cursor: pointer; line-height: 1; }
.mm-subtab:hover { background: rgba(255,255,255,.07); color: var(--text, #e1ebfa); }
.mm-subtab.active { background: rgba(59,130,246,.18); border-color: rgba(59,130,246,.6); color: #dbeafe; font-weight: 600; }
.mm-subcount { font-size: 11px; min-width: 18px; text-align: center; padding: 1px 5px; border-radius: 999px; background: rgba(255,255,255,.12); color: inherit; }
.mm-subtab.active .mm-subcount { background: rgba(59,130,246,.42); }
.mm-cap-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
/* 目录排序（v2.105.38）：价格/效果排序 + 依据说明 */
.mm-cap-side { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.mm-sort { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted, #8aa); }
.mm-sort select { padding: 5px 8px; border-radius: 8px; border: 1px solid var(--border, rgba(255,255,255,.12)); background: var(--card, rgba(255,255,255,.06)); color: var(--text, #e1ebfa); font-size: 12px; cursor: pointer; }
.mm-sort-hint { opacity: .85; }
.mm-cap-head h4 { margin: 0; }
.mm-cap { margin-bottom: 18px; }
.mm-cap h4 { margin: 0 0 10px; font-size: 15px; }
.mm-model.bound { border-color: var(--accent, #3b82f6); box-shadow: 0 0 0 1px var(--accent, #3b82f6) inset; }
.mm-muted { color: var(--muted, #8aa); font-size: 12px; }
.mm-empty { color: var(--muted, #8aa); padding: 14px; border: 1px dashed var(--border, rgba(255,255,255,.12)); border-radius: 10px; }
.mm-warn { color: #f59e0b; }
.mm-banner-warn { background: rgba(245,158,11,.14); border: 1px solid rgba(245,158,11,.5); color: #fbbf24; border-radius: 10px; padding: 10px 14px; margin-bottom: 14px; font-size: 13px; line-height: 1.6; }
.mm-actions { margin: 14px 0; }
.mm-switch { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted, #8aa); }
.mm-bindings { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.mm-cmp-pick { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.mm-cmp-pick label { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted, #8aa); }
.mm-cmp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
.mm-cmp-side { border: 1px solid var(--border, rgba(255,255,255,.12)); border-radius: 10px; padding: 12px; min-height: 120px; background: var(--card, rgba(255,255,255,.04)); }
.mm-cmp-side.empty { color: var(--muted, #8aa); display: flex; align-items: center; justify-content: center; }
.mm-cmp-model { font-weight: 600; margin-bottom: 8px; }
.mm-cmp-side pre { white-space: pre-wrap; word-break: break-word; font-family: inherit; font-size: 13px; line-height: 1.6; margin: 0; }
.mm-cmp-side.err { border-color: #ef4444; }
.mm-err { color: #fca5a5; }
.mm-out { color: var(--text, #e1ebfa); }
.mm-metrics { font-size: 12px; color: #7dd3fc; margin: 4px 0 8px; }
.mm-vote { display: flex; align-items: center; gap: 10px; margin-top: 12px; font-size: 13px; color: var(--muted, #8aa); flex-wrap: wrap; }
.mm-tally { margin-top: 12px; font-size: 13px; display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; }
.mm-tally-item b { color: var(--text, #e1ebfa); }
.mm-loading, .mm-error { padding: 30px; text-align: center; color: var(--muted, #8aa); }
.mm-bind-actions { display: flex; align-items: center; gap: 10px; margin: 10px 0 2px; }
.mm-test-out { font-size: 12px; color: var(--muted, #8aa); }
@media (max-width: 760px) { .mm-cmp-grid { grid-template-columns: 1fr; } }

/* 编辑/新建 表单弹窗（v2.103.6）：内联到页尾时卡片在下方便看不到，改为居中弹窗 */
.mm-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 20px; }
.mm-modal-mask { position: absolute; inset: 0; background: rgba(6, 12, 24, .62); backdrop-filter: blur(2px); }
.mm-modal-box { position: relative; z-index: 1; width: min(700px, 100%); max-height: 90vh; overflow-y: auto; animation: mmModalIn .16s ease-out; }
.mm-modal-box > .card { margin: 0; }
.mm-modal-box .card-head { padding-right: 44px; }
.mm-modal-x { position: absolute; top: 10px; right: 10px; z-index: 2; width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border, rgba(255,255,255,.14)); background: var(--card, rgba(20,28,44,.9)); color: var(--text, #e1ebfa); font-size: 18px; line-height: 1; cursor: pointer; }
.mm-modal-x:hover { background: rgba(239,68,68,.22); border-color: rgba(239,68,68,.6); }
@keyframes mmModalIn { from { opacity: 0; transform: translateY(8px) scale(.99); } to { opacity: 1; transform: none; } }
@media (max-width: 560px) { .mm-modal { padding: 10px; } .mm-modal-box { max-height: 94vh; } }
