.recipe-modal-header { display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; border-bottom: 1px solid var(--lora-border); } /* Top Section: Preview and Gen Params */ .recipe-top-section { display: grid; grid-template-columns: 280px 1fr; gap: var(--space-2); flex-shrink: 0; margin-bottom: var(--space-2); } /* Recipe Preview */ .recipe-preview-container { width: 100%; height: 360px; border-radius: var(--border-radius-sm); overflow: hidden; background: var(--lora-surface); border: 1px solid var(--border-color); display: flex; align-items: center; justify-content: center; } .recipe-preview-container img { max-width: 100%; max-height: 100%; object-fit: contain; } /* Generation Parameters */ .recipe-gen-params { height: 360px; display: flex; flex-direction: column; } .recipe-gen-params h3 { margin-top: 0; margin-bottom: var(--space-2); font-size: 1.2em; color: var(--text-color); padding-bottom: var(--space-1); border-bottom: 1px solid var(--border-color); flex-shrink: 0; } .gen-params-container { display: flex; flex-direction: column; gap: var(--space-2); overflow-y: auto; flex: 1; } .param-group { display: flex; flex-direction: column; gap: 8px; } .param-header { display: flex; justify-content: space-between; align-items: center; } .param-header label { font-weight: 500; color: var(--text-color); } .copy-btn { background: none; border: none; color: var(--text-color); opacity: 0.6; cursor: pointer; padding: 4px 8px; border-radius: var(--border-radius-xs); transition: all 0.2s; } .copy-btn:hover { opacity: 1; background: var(--lora-surface); } .param-content { background: var(--lora-surface); border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); padding: var(--space-2); color: var(--text-color); font-size: 0.9em; line-height: 1.5; max-height: 150px; overflow-y: auto; white-space: pre-wrap; word-break: break-word; } /* Other Parameters */ .other-params { display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--space-1); } .param-tag { background: var(--lora-surface); border: 1px solid var(--border-color); border-radius: var(--border-radius-xs); padding: 4px 8px; font-size: 0.85em; color: var(--text-color); display: flex; align-items: center; gap: 6px; } .param-tag .param-name { font-weight: 500; opacity: 0.8; } /* Bottom Section: Resources */ .recipe-bottom-section { max-height: 340px; display: flex; flex-direction: column; border-top: 1px solid var(--border-color); padding-top: var(--space-2); } .recipe-section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-2); padding-bottom: var(--space-1); border-bottom: 1px solid var(--border-color); flex-shrink: 0; } .recipe-section-header h3 { margin: 0; font-size: 1.2em; color: var(--text-color); display: flex; align-items: center; gap: 8px; } .recipe-status { display: inline-flex; align-items: center; font-size: 0.85em; padding: 4px 8px; border-radius: var(--border-radius-xs); margin-left: var(--space-1); } .recipe-status.ready { background: oklch(var(--lora-accent) / 0.1); color: var(--lora-accent); } .recipe-status.missing { background: oklch(var(--lora-error) / 0.1); color: var(--lora-error); } .recipe-status i { margin-right: 4px; } .recipe-section-actions { display: flex; align-items: center; gap: var(--space-1); } #recipeLorasCount { font-size: 0.9em; color: var(--text-color); opacity: 0.8; display: flex; align-items: center; gap: 6px; } #recipeLorasCount i { font-size: 1em; } /* LoRAs List */ .recipe-loras-list { display: flex; flex-direction: column; gap: 12px; overflow-y: auto; flex: 1; } .recipe-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); } .recipe-lora-item.exists-locally { background: oklch(var(--lora-accent) / 0.05); border-left: 4px solid var(--lora-accent); } .recipe-lora-item.missing-locally { border-left: 4px solid var(--lora-error); } .recipe-lora-thumbnail { width: 50px; height: 50px; flex-shrink: 0; border-radius: var(--border-radius-xs); overflow: hidden; background: var(--bg-color); } .recipe-lora-thumbnail img { width: 100%; height: 100%; object-fit: cover; } .recipe-lora-content { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; } .recipe-lora-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); } .recipe-lora-content h4 { margin: 0; font-size: 1em; color: var(--text-color); flex: 1; } .recipe-lora-info { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 0.85em; } .recipe-lora-info .base-model { background: oklch(var(--lora-accent) / 0.1); color: var(--lora-accent); padding: 2px 8px; border-radius: var(--border-radius-xs); } .recipe-lora-version { font-size: 0.85em; color: var(--text-color); opacity: 0.7; } .recipe-lora-weight { background: var(--lora-surface); padding: 2px 8px; border-radius: var(--border-radius-xs); font-size: 0.85em; } .local-badge { display: inline-flex; align-items: center; background: var(--lora-accent); color: white; padding: 3px 6px; border-radius: var(--border-radius-xs); font-size: 0.75em; 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: white; padding: 3px 6px; border-radius: var(--border-radius-xs); font-size: 0.75em; 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; background: var(--bg-color); border: 1px solid var(--border-color); padding: 4px 8px; border-radius: var(--border-radius-xs); font-size: 0.85em; z-index: 10; top: 100%; left: 0; margin-top: 4px; white-space: normal; max-width: 250px; } .local-badge:hover .local-path { display: block; } /* Responsive adjustments */ @media (max-width: 768px) { .recipe-top-section { grid-template-columns: 1fr; } .recipe-preview-container { height: 200px; } .recipe-gen-params { height: auto; max-height: 300px; } }