/* Import Modal Styles */ .import-step { margin: var(--space-2) 0; } .input-group { margin-bottom: var(--space-2); } .input-group label { display: block; margin-bottom: 8px; color: var(--text-color); } .input-group input, .input-group select { width: 100%; padding: 8px; border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); background: var(--bg-color); color: var(--text-color); } .error-message { color: var(--lora-error); font-size: 0.9em; margin-top: 4px; } /* Image Upload Styles */ .image-upload-container { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-3); } .image-preview { width: 100%; height: 200px; border: 2px dashed var(--border-color); border-radius: var(--border-radius-sm); display: flex; align-items: center; justify-content: center; overflow: hidden; background: var(--bg-color); } .image-preview img { max-width: 100%; max-height: 100%; object-fit: contain; } .image-preview .placeholder { color: var(--text-color); opacity: 0.5; font-size: 0.9em; } .file-input-wrapper { position: relative; } .file-input-wrapper input[type="file"] { opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; cursor: pointer; } .file-input-wrapper .file-input-button { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 16px; background: var(--lora-surface); border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); color: var(--text-color); cursor: pointer; transition: all 0.2s ease; } .file-input-wrapper:hover .file-input-button { background: var(--lora-surface-hover); } /* Recipe Details Styles */ .recipe-details-container { display: flex; flex-direction: column; gap: var(--space-3); } .recipe-name-container { margin-bottom: var(--space-2); } .recipe-name-container label { display: block; margin-bottom: 8px; font-weight: 500; } .recipe-name-container input { width: 100%; padding: 8px; border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); background: var(--bg-color); color: var(--text-color); } .tags-section { margin-bottom: var(--space-2); } .tags-section label { display: block; margin-bottom: 8px; font-weight: 500; } .tag-input-container { display: flex; gap: 8px; margin-bottom: 8px; } .tag-input-container input { flex: 1; padding: 8px; border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); background: var(--bg-color); color: var(--text-color); } .tags-container { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; min-height: 32px; } .recipe-tag { display: flex; align-items: center; gap: 4px; background: var(--lora-surface); color: var(--text-color); padding: 4px 8px; border-radius: var(--border-radius-xs); font-size: 0.9em; } .recipe-tag i { cursor: pointer; opacity: 0.7; transition: opacity 0.2s; } .recipe-tag i:hover { opacity: 1; } .empty-tags { color: var(--text-color); opacity: 0.5; font-size: 0.9em; } /* LoRAs List Styles */ .loras-list { max-height: 300px; overflow-y: auto; margin: var(--space-2) 0; display: flex; flex-direction: column; gap: 12px; padding: 1px; } .lora-item { display: flex; gap: var(--space-2); padding: var(--space-2); border: 1px solid var(--border-color); border-radius: var(--border-radius-sm); background: var(--bg-color); margin: 1px; position: relative; } .lora-item.exists-locally { background: oklch(var(--lora-accent) / 0.05); border-left: 4px solid var(--lora-accent); } .lora-item.missing-locally { background: oklch(var(--lora-error) / 0.05); border-left: 4px solid var(--lora-error); } .lora-thumbnail { width: 60px; height: 60px; flex-shrink: 0; border-radius: var(--border-radius-xs); overflow: hidden; background: var(--bg-color); } .lora-thumbnail img { width: 100%; height: 100%; object-fit: cover; } .lora-content { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; } .lora-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); } .lora-content h3 { margin: 0; font-size: 1em; color: var(--text-color); flex: 1; } .lora-info { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 0.9em; } .lora-info .base-model { background: oklch(var(--lora-accent) / 0.1); color: var(--lora-accent); padding: 2px 8px; border-radius: var(--border-radius-xs); } .weight-badge { background: var(--lora-surface); color: var(--text-color); padding: 2px 8px; border-radius: var(--border-radius-xs); } .lora-meta { display: flex; gap: 12px; font-size: 0.85em; color: var(--text-color); opacity: 0.7; } .lora-meta span { display: flex; align-items: center; gap: 4px; } /* Status Badges */ .local-badge { display: inline-flex; align-items: center; background: var(--lora-accent); color: var(--lora-text); padding: 4px 8px; border-radius: var(--border-radius-xs); font-size: 0.8em; font-weight: 500; white-space: nowrap; flex-shrink: 0; position: relative; } .local-badge i { margin-right: 4px; font-size: 0.9em; } .missing-badge { display: inline-flex; align-items: center; background: var(--lora-error); color: var(--lora-text); padding: 4px 8px; border-radius: var(--border-radius-xs); font-size: 0.8em; font-weight: 500; white-space: nowrap; flex-shrink: 0; } .missing-badge i { margin-right: 4px; font-size: 0.9em; } .local-path { display: none; position: absolute; top: 100%; right: 0; background: var(--card-bg); border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); padding: var(--space-1); margin-top: 4px; font-size: 0.9em; color: var(--text-color); white-space: normal; word-break: break-all; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); z-index: 1; min-width: 200px; max-width: 300px; } .local-badge:hover .local-path { display: block; } /* Missing LoRAs List */ .missing-loras-list { max-height: 150px; overflow-y: auto; margin: var(--space-2) 0; display: flex; flex-direction: column; gap: 8px; } .missing-lora-item { display: flex; justify-content: space-between; align-items: center; padding: 8px; background: oklch(var(--lora-error) / 0.05); border-left: 4px solid var(--lora-error); border-radius: var(--border-radius-xs); } .lora-name { font-weight: 500; } .lora-type { font-size: 0.9em; opacity: 0.7; } /* Folder Browser Styles */ .folder-browser { border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); padding: var(--space-1); max-height: 200px; overflow-y: auto; } /* Modal Header Styles - Updated to match download-modal */ .modal-header { display: flex; justify-content: space-between; /* align-items: center; */ margin-bottom: var(--space-3); padding-bottom: var(--space-2); border-bottom: 1px solid var(--border-color); position: relative; } .close-modal { font-size: 1.5rem; cursor: pointer; opacity: 0.7; transition: opacity 0.2s; position: absolute; right: 0; top: 0; padding: 0 5px; line-height: 1; } .close-modal:hover { opacity: 1; } /* Recipe Details Layout */ .recipe-details-layout { display: flex; gap: var(--space-3); margin-bottom: var(--space-3); } .recipe-image-container { flex: 0 0 200px; } .recipe-image { width: 100%; height: 200px; border-radius: var(--border-radius-sm); overflow: hidden; border: 1px solid var(--border-color); background: var(--bg-color); } .recipe-image img { width: 100%; height: 100%; object-fit: contain; } .recipe-form-container { flex: 1; display: flex; flex-direction: column; gap: var(--space-3); } /* Simplify file input for step 1 */ .file-input-wrapper { margin: var(--space-3) auto; max-width: 300px; } /* Update LoRA item styles to include version */ .lora-content { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; } .lora-version { font-size: 0.85em; color: var(--text-color); opacity: 0.7; margin-top: 2px; } .lora-count-info { font-size: 0.85em; font-weight: normal; color: var(--text-color); opacity: 0.8; margin-left: 8px; }