#find-models-launcher { display: inline-flex; align-items: center; margin-inline: 4px; padding: 7px 12px; border: 1px solid #4b5563; border-radius: 8px; color: #e5e7eb; background: #24262b; cursor: pointer; white-space: nowrap; transition: 0.15s ease; } #find-models-launcher:hover { background: #30333a; border-color: #6b7280; } #find-models-launcher.has-missing { color: #fff; background: #7f1d1d; border-color: #ef4444; } #find-models-launcher.toolbar-fallback { position: fixed; top: 8px; right: 220px; z-index: 1000; } #find-models-panel { --fm-bg: #0d1116; --fm-surface: #141920; --fm-surface-raised: #191f28; --fm-line: #303742; --fm-muted: #929baa; --fm-text: #edf1f7; display: none; position: fixed; top: 12px; right: 12px; z-index: 1001; width: min(600px, calc(100vw - 24px)); height: calc(100vh - 24px); max-height: calc(100vh - 24px); box-sizing: border-box; padding: 0 16px 18px; overflow-x: hidden; overflow-y: auto; color: var(--fm-text); background: radial-gradient(circle at 78% 0%, #1c212b 0, #11151b 36%, var(--fm-bg) 100%); border: 1px solid #343b48; border-radius: 8px; box-shadow: 0 24px 80px #000c; font: 13px/1.45 Inter, ui-sans-serif, system-ui, sans-serif; } #find-models-panel.open { display: block; } #find-models-panel.native-docked { display: block; position: relative; inset: auto; width: 100% !important; height: 100%; max-height: none; margin: 0; border: 0; border-radius: 0; box-shadow: none; } #find-models-panel button { padding: 6px 9px; color: #e5e7eb; background: #292f39; border: 1px solid #4b5361; border-radius: 6px; cursor: pointer; } #find-models-panel button:hover { background: #373e49; border-color: #697382; } #find-models-panel button:disabled { opacity: 0.5; cursor: not-allowed; } #find-models-panel::-webkit-scrollbar { width: 8px; } #find-models-panel::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 999px; background: #4a5363; background-clip: padding-box; } .fm-header { position: sticky; top: 0; z-index: 5; display: flex; min-height: 36px; margin: 0 -16px; padding: 14px 16px; align-items: center; justify-content: space-between; background: #11151bef; border-bottom: 1px solid var(--fm-line); backdrop-filter: blur(12px); } .fm-header-copy { display: grid; gap: 2px; min-width: 0; } .fm-header-copy strong { font-size: 18px; letter-spacing: 0.2px; } .fm-header-copy span { display: none; } .fm-window-actions { display: flex; gap: 6px; } .fm-window-actions button { padding: 2px 8px !important; border: 0 !important; background: transparent !important; font-size: 17px; } .fm-resize-handle { position: absolute; top: 0; bottom: 0; left: -5px; z-index: 8; width: 10px; cursor: ew-resize; } .fm-resize-handle::after { position: absolute; top: 0; bottom: 0; left: 5px; width: 1px; background: transparent; content: ""; } .fm-resize-handle:hover::after { width: 2px; background: #7470ff; } #find-models-panel.native-docked .fm-resize-handle { display: none; } .fm-scan-state { display: flex; margin: 12px 0 6px; padding: 10px 12px; align-items: center; gap: 8px; color: #aeb7c5; background: linear-gradient(90deg, #171d25, #141920); border: 1px solid #29313c; border-radius: 9px; } .fm-scan-state [data-scan-status] { flex: 1; min-width: 0; } .fm-scan-dot { width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: #4e93ff; box-shadow: 0 0 0 4px #4e93ff18; } .fm-tabs { position: sticky; top: 64px; z-index: 4; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 -16px 14px; padding: 8px 16px 0; background: #10141aee; border-bottom: 1px solid #343b46; backdrop-filter: blur(12px); } .fm-tabs button { display: flex; min-width: 0; padding: 12px 4px !important; align-items: center; justify-content: center; gap: 5px; color: #9ca3af !important; background: transparent !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; font-size: 12px; } .fm-tabs button.active, .fm-tabs button:hover { color: #dfe5ff !important; border-bottom-color: #746dff !important; } .fm-tabs .fm-tab-icon { display: none; } .fm-tabs .fm-tab-label { overflow: hidden; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; } .fm-tabs button b, .fm-section-toolbar em { display: inline-grid; min-width: 18px; height: 18px; padding: 0 4px; place-items: center; color: #fff; background: #e4515c; border-radius: 5px; font-size: 11px; font-style: normal; } .fm-summary { display: flex; margin: 8px 0 18px; padding: 0 2px; align-items: center; gap: 9px; color: #939dab; font-size: 12px; } .fm-summary i { width: 1px; height: 14px; margin: 0 4px; background: #3b424d; } .fm-summary-ok { display: grid; width: 17px; height: 17px; place-items: center; color: #57d475; border: 1px solid #3db55e; border-radius: 50%; } .fm-tab-panel { display: none; min-height: 360px; padding: 4px 0 16px; animation: fm-fade-in 0.16s ease-out; } .fm-tab-panel.active { display: block; } .fm-section-toolbar { display: flex; margin: 0 0 10px; align-items: flex-start; justify-content: space-between; gap: 12px; } .fm-section-toolbar > div { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; } .fm-section-toolbar > div:first-child { align-items: baseline; } .fm-section-toolbar > div:first-child strong { font-size: 16px; } .fm-section-toolbar > div:first-child span { display: none; } .fm-section-toolbar > div:last-child { justify-content: flex-end; } .fm-section-toolbar button { min-height: 34px; padding: 7px 12px !important; } .fm-primary { color: #fff !important; background: linear-gradient(135deg, #5962f4, #765cff) !important; border-color: #6863ff !important; box-shadow: 0 5px 18px #615cff35; } .fm-primary:hover { background: linear-gradient(135deg, #6870ff, #846cff) !important; } .fm-table-head { display: grid; grid-template-columns: minmax(170px, 1.2fr) minmax(150px, 1fr) minmax(160px, auto); padding: 9px 11px; gap: 10px; color: #9aa5b4; background: #1b2028; border: 1px solid var(--fm-line); border-bottom: 0; font-size: 11px; } .fm-table-foot { padding: 6px 12px; color: #8c96a5; background: #1a1f27; border: 1px solid var(--fm-line); border-top: 0; text-align: center; font-size: 11px; } .fm-model-list, .fm-node-list { display: block !important; min-height: 0; } .fm-item, .fm-model-card { display: grid !important; grid-template-columns: minmax(170px, 1.2fr) minmax(150px, 1fr) minmax(160px, auto); min-height: 0; margin: 0; padding: 10px 11px; align-items: center; gap: 5px 10px; background: var(--fm-surface); border: 1px solid var(--fm-line); border-radius: 0; } .fm-item + .fm-item { border-top: 0; } .fm-missing { border-color: #5b2a2e; } .fm-adaptable { border-color: #5b4723; } .fm-item-title { display: flex; min-width: 0; grid-column: 1; align-items: center; gap: 7px; } .fm-item-title .fm-status-icon { display: none; } .fm-item-title strong { flex: 0 1 auto; min-width: 0; overflow: visible; color: #f3f4f6; font-size: 12px; font-weight: 600; overflow-wrap: anywhere; word-break: break-all; white-space: normal; } .fm-copy-name { width: 22px; height: 22px; flex: 0 0 22px; padding: 0 !important; overflow: hidden; color: #b7bbc4 !important; background: transparent !important; border-color: transparent !important; font-size: 0 !important; } .fm-copy-name::before { content: "⧉"; font-size: 13px; line-height: 20px; } .fm-copy-name:hover { color: #fff !important; border-color: #6b7280 !important; } .fm-status-icon { display: inline-grid; width: 20px; height: 20px; flex: 0 0 20px; place-items: center; color: #fff; background: #dc2626; border-radius: 50%; font-weight: 700; } .fm-meta { display: flex; min-width: 0; grid-column: 2; margin: 0; align-items: center; flex-wrap: wrap; gap: 5px; color: var(--fm-muted); font-size: 11px; } .fm-meta span:nth-child(2) { display: none; } .fm-meta [data-model-size] { flex-basis: 100%; } .fm-badge { padding: 2px 7px; color: #c7cfda; background: #1d232c; border: 1px solid #3c4552; border-radius: 999px; font-size: 11px; } .fm-item-actions { display: flex; grid-column: 3; margin: 0; justify-content: flex-end; flex-wrap: wrap; gap: 6px; } .fm-model-actions { white-space: nowrap; } .fm-local-load, .fm-external-move { color: #b9f6c9 !important; background: #193322 !important; border-color: #2f7546 !important; } .fm-match, .fm-external-candidates, .fm-sources, .fm-node-candidates, .fm-node-types { grid-column: 1 / -1; margin-top: 5px; } .fm-match { padding: 6px 8px; overflow-wrap: anywhere; color: #85df9e; background: #16251c; border: 1px solid #294a34; border-radius: 6px; font-size: 11px; } .fm-sources, .fm-node-candidates, .fm-external-candidates { display: grid; gap: 6px; } .fm-source { display: grid; grid-template-columns: minmax(0, 1fr) auto; padding: 7px; align-items: center; gap: 7px; background: #171d25; border: 1px solid #303844; border-radius: 6px; } .fm-source a, .fm-source span { overflow-wrap: anywhere; font-size: 11px; } .fm-source a, .fm-node-actions a, .fm-quark-links a { color: #93c5fd; } .fm-external-source { background: #16231b; border-color: #315540; } .fm-external-source span { min-width: 0; color: #bbf7d0; overflow-wrap: anywhere; word-break: break-word; } .fm-external-source .fm-target-warning { grid-column: 1 / -1; } .fm-external-source .fm-target-warning, .fm-candidate-warning { color: #fbbf24; } .fm-node-list .fm-node-types { grid-column: 1 / 3; } .fm-node-list .fm-item-actions { grid-row: 1 / 3; } .fm-node-types { display: flex; flex-wrap: wrap; gap: 6px; } .fm-node-types span { padding: 4px 8px; color: #c8cbd1; background: #171a1f; border-radius: 6px; font-size: 12px; } .fm-node-actions, .fm-download-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; } .fm-node-install-options { display: grid; margin: 0 0 12px; padding: 10px; gap: 8px; background: #151a21; border: 1px solid var(--fm-line); } .fm-node-install-options label { display: flex; align-items: center; gap: 7px; color: #cbd2dc; } .fm-node-install-options > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; } .fm-node-install-options input[type="url"], .fm-external-config input, .fm-quark-auth-config input { min-width: 0; padding: 7px 9px; color: #e5e7eb; background: #10141a; border: 1px solid #444b58; border-radius: 6px; outline: none; } .fm-download-jobs { display: grid; gap: 0; margin: 9px 0 12px; padding: 0; background: var(--fm-surface); border: 1px solid var(--fm-line); } .fm-download-job { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; padding: 10px 12px; align-items: center; gap: 10px; color: #86efac; border-bottom: 1px solid var(--fm-line); } .fm-download-job:last-child { border-bottom: 0; } .fm-download-job-info { display: grid; min-width: 0; gap: 2px; } .fm-download-job-info strong { overflow-wrap: anywhere; color: #d1fae5; } .fm-download-job-info span { color: #9aa5b4; font-size: 11px; } .fm-install-progress { height: 4px; margin-top: 4px; overflow: hidden; background: #26302a; border-radius: 999px; } .fm-install-progress i { display: block; height: 100%; background: linear-gradient(90deg, #22c55e, #86efac); border-radius: inherit; transition: width 0.25s ease; } .fm-install-progress.active i { position: relative; min-width: 12%; } .fm-install-progress.active i::after { position: absolute; inset: 0; background: linear-gradient(90deg, transparent, #ffffff55, transparent); content: ""; animation: fm-progress-shine 1.2s linear infinite; } .fm-job-kind { align-self: start; padding: 2px 6px; color: #bbf7d0; background: #28543a; border-radius: 999px; font-size: 10px; } .fm-job-node { color: #bfdbfe; background: #284561; } .fm-download-progress { min-height: 14px; color: #86efac; font-size: 11px; } .fm-download-paused { color: #fde68a; background: #292315; } .fm-download-cancelled { color: #9ca3af; background: #202126; } .fm-download-failed { color: #fca5a5; } .fm-settings-card { display: grid; margin-top: 8px; padding: 12px; gap: 8px; background: #151a21; border: 1px solid var(--fm-line); } .fm-settings-card > strong { font-size: 14px; } .fm-settings-card > span { color: var(--fm-muted); font-size: 11px; } .fm-external-config { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; } .fm-quark-auth-config { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 7px; } .fm-quark-libraries { display: grid; gap: 6px; } .fm-quark-library { display: flex; padding: 8px; align-items: center; justify-content: space-between; gap: 8px; background: #10151b; border: 1px solid #303844; border-radius: 6px; } .fm-quark-library > div { display: grid; min-width: 0; gap: 2px; } .fm-quark-library a { overflow-wrap: anywhere; color: #93c5fd; font-size: 11px; } .fm-quark-library > span { flex: 0 0 auto; color: #86efac; font-size: 11px; } .fm-quark-library > span.failed { color: #fca5a5; } .fm-empty { display: grid; min-height: 80px; padding: 24px; place-items: center; gap: 4px; color: var(--fm-muted); background: linear-gradient(145deg, #171a20, #13161b); border: 1px dashed #353c48; } .fm-empty strong { color: #e5e7eb; font-size: 15px; } #find-models-panel.native-docked .fm-table-head { display: none; } #find-models-panel.native-docked .fm-item, #find-models-panel.native-docked .fm-model-card { grid-template-columns: minmax(0, 1fr); gap: 6px; } #find-models-panel.native-docked .fm-item-title, #find-models-panel.native-docked .fm-meta, #find-models-panel.native-docked .fm-match, #find-models-panel.native-docked .fm-external-candidates, #find-models-panel.native-docked .fm-sources, #find-models-panel.native-docked .fm-node-candidates, #find-models-panel.native-docked .fm-node-types, #find-models-panel.native-docked .fm-item-actions { grid-column: 1 / -1; grid-row: auto; } #find-models-panel.native-docked .fm-item-actions { justify-content: flex-start; } #find-models-panel.native-docked .fm-node-list .fm-item-actions { grid-row: auto; } @keyframes fm-fade-in { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: translateY(0); } } @keyframes fm-progress-shine { from { transform: translateX(-100%); } to { transform: translateX(100%); } } @media (max-width: 760px) { #find-models-panel { right: 6px; width: calc(100vw - 12px); } .fm-table-head { display: none; } .fm-item, .fm-model-card { grid-template-columns: minmax(0, 1fr); gap: 6px; } .fm-item-title, .fm-meta, .fm-item-actions, .fm-node-list .fm-node-types { grid-column: 1; grid-row: auto; } .fm-item-actions { justify-content: flex-start; } .fm-section-toolbar { flex-direction: column; } .fm-section-toolbar > div:last-child { justify-content: flex-start; } } @media (max-width: 560px) { #find-models-panel { right: 0; width: 100vw !important; } .fm-resize-handle { display: none; } .fm-tab-label { display: none; } .fm-external-config, .fm-quark-auth-config { grid-template-columns: 1fr; } .fm-node-install-options > div { grid-template-columns: 1fr; } }