*{box-sizing:border-box}body{margin:0;padding:0}#root{width:100%}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;margin:0;padding:0}:root{--bg-dark: #0f0f0f;--bg-darker: #0a0a0a;--bg-card: #1a1a1a;--bg-hover: #252525;--text-primary: #ffffff;--text-secondary: #a0a0a0;--accent: rgb(252, 189, 216);--accent-hover: rgb(232, 169, 196);--success: #22c55e;--warning: #f59e0b;--danger: #ef4444;--border: #2a2a2a}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-dark);color:var(--text-primary);line-height:1.6}.app{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--bg-card);padding:20px;border-right:1px solid var(--border);position:fixed;height:100vh;overflow-y:auto}.logo{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid var(--border)}.logo h1{font-size:1.5rem;color:var(--accent);margin:0}.logo span{color:var(--text-secondary);font-size:.9rem}.logo-header{display:flex;align-items:center;gap:10px}.sidebar-logo{width:32px;height:32px;border-radius:6px;filter:invert(85%) sepia(20%) saturate(500%) hue-rotate(290deg) brightness(105%)}.nav-links{list-style:none}.nav-links li{margin-bottom:5px}.nav-links a{display:block;padding:12px 15px;color:var(--text-secondary);text-decoration:none;border-radius:8px;transition:all .2s}.nav-links a:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-links a.active{background:var(--accent);color:#fff}.main-content{flex:1;margin-left:240px;padding:30px;min-height:100vh}.page{max-width:1400px;margin:0 auto}.page h1{font-size:2rem;margin-bottom:30px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.page-header h1{margin-bottom:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border)}.stat-card h3{color:var(--text-secondary);font-size:.9rem;font-weight:500;margin-bottom:10px}.stat-card .stat-value{font-size:2.5rem;font-weight:700}.stat-card.queued .stat-value{color:var(--warning)}.stat-card.processing .stat-value{color:var(--accent)}.stat-card.completed .stat-value{color:var(--success)}.stat-card.failed .stat-value{color:var(--danger)}.section{margin-bottom:40px}.section h2{font-size:1.3rem;margin-bottom:20px}.btn{display:inline-block;padding:10px 20px;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:.95rem;text-decoration:none;transition:all .2s}.btn:hover{background:var(--bg-hover)}.btn.primary{background:var(--accent);border-color:var(--accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{background:var(--danger);border-color:var(--danger)}.btn.small{padding:6px 12px;font-size:.85rem}.btn.large{padding:15px 30px;font-size:1.1rem}.action-buttons{display:flex;gap:10px;flex-wrap:wrap}.table-container{background:var(--bg-card);border-radius:12px;border:1px solid var(--border);overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:15px;text-align:left;border-bottom:1px solid var(--border)}th{background:var(--bg-hover);font-weight:600;font-size:.9rem;color:var(--text-secondary)}tr:last-child td{border-bottom:none}tr:hover{background:var(--bg-hover)}tr.selected{background:#6366f11a}code{background:var(--bg-hover);padding:2px 6px;border-radius:4px;font-size:.85rem}.status-badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:.8rem;font-weight:500;text-transform:capitalize}.status-badge.pending{background:#f59e0b33;color:var(--warning)}.status-badge.testing,.status-badge.generating,.status-badge.training{background:#6366f133;color:var(--accent)}.status-badge.completed{background:#22c55e33;color:var(--success)}.status-badge.listed{background:#3b82f633;color:#3b82f6}.status-badge.failed{background:#ef444433;color:var(--danger)}.status-badge.discarded{background:#a0a0a033;color:var(--text-secondary)}.status-badge.queued{background:#f59e0b33;color:var(--warning)}.status-badge.processing{background:#6366f133;color:var(--accent)}.generator-form{background:var(--bg-card);padding:30px;border-radius:12px;border:1px solid var(--border);max-width:600px;margin-bottom:30px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:var(--text-secondary);font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:1rem}.form-group select{cursor:pointer;-webkit-appearance:menulist;-moz-appearance:menulist;appearance:menulist}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent)}.form-group .hint{display:block;margin-top:5px;font-size:.85rem;color:var(--text-secondary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.character-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px}.character-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border);cursor:pointer;transition:all .2s}.character-card:hover{border-color:var(--accent);transform:translateY(-2px)}.character-avatar{width:60px;height:60px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin-bottom:15px}.character-card h3{margin-bottom:5px}.character-card p{color:var(--text-secondary);font-size:.9rem;margin-bottom:5px}.character-card .theme{font-size:.85rem;color:var(--accent)}.filters{display:flex;gap:20px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:10px}.filter-group label{color:var(--text-secondary)}.filter-group select{padding:8px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;color:var(--text-primary)}.filter-actions{display:flex;gap:10px;align-items:center}.selected-count{color:var(--accent);font-weight:500}.breadcrumb{margin-bottom:20px;color:var(--text-secondary)}.breadcrumb a{color:var(--accent);text-decoration:none}.character-detail{background:var(--bg-card);border-radius:12px;border:1px solid var(--border);overflow:hidden}.detail-header{display:flex;gap:20px;align-items:center;padding:30px;border-bottom:1px solid var(--border)}.avatar-large{width:80px;height:80px;background:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:700}.header-info{flex:1}.header-info h1{margin-bottom:5px}.header-info p{color:var(--text-secondary);margin-bottom:10px}.header-actions{display:flex;gap:10px;align-items:center}.header-actions select{padding:8px 12px;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;color:var(--text-primary)}.detail-sections{padding:30px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:30px}.detail-section{background:var(--bg-dark);padding:20px;border-radius:8px}.detail-section.full-width{grid-column:1 / -1}.detail-section h2{font-size:1rem;margin-bottom:15px;color:var(--accent)}.detail-section dl{display:grid;gap:10px}.detail-section dt{color:var(--text-secondary);font-size:.85rem;text-transform:capitalize}.detail-section dd{margin:0}.prompt-box{background:var(--bg-card);padding:15px;border-radius:8px;margin-bottom:15px}.prompt-box code{background:transparent;padding:0;white-space:pre-wrap;word-break:break-word}.workflow-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.workflow-card{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border)}.workflow-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.workflow-header h3{margin:0}.workflow-type{font-size:.8rem;background:var(--bg-hover);padding:4px 8px;border-radius:4px;color:var(--text-secondary)}.workflow-card p{color:var(--text-secondary);font-size:.9rem;margin-bottom:10px}.workflow-meta{font-size:.85rem;color:var(--text-secondary);margin-bottom:15px}.workflow-actions{display:flex;gap:10px}.modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--bg-card);border-radius:12px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal.large{max-width:800px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer}.modal-body{padding:20px}.modal-footer{padding:20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.code-editor{font-family:Monaco,Menlo,monospace;font-size:.9rem;resize:vertical}.empty-state{text-align:center;padding:60px 20px;background:var(--bg-card);border-radius:12px;border:1px solid var(--border)}.empty-state p{color:var(--text-secondary);margin-bottom:20px}.loading{text-align:center;padding:40px;color:var(--text-secondary)}.error-message{background:#ef44441a;border:1px solid var(--danger);color:var(--danger);padding:15px;border-radius:8px;margin-top:20px}.info-box{background:var(--bg-card);padding:20px;border-radius:12px;border:1px solid var(--border)}.info-box h3{margin-bottom:10px}.info-box ul{margin-top:15px;padding-left:20px;color:var(--text-secondary)}.info-box li{margin-bottom:8px}.hint{color:var(--text-secondary);font-size:.9rem}.view-toggle{display:flex;gap:5px;margin-left:auto}.characters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}.characters-grid .character-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;padding:0;overflow:hidden}.characters-grid .card-image{position:relative;width:100%;aspect-ratio:3 / 4;background:var(--bg-dark);overflow:hidden}.characters-grid .card-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.characters-grid .character-card:hover .card-image img{transform:scale(1.05)}.characters-grid .card-image .no-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-hover) 100%)}.characters-grid .card-image .no-image span{font-size:3rem;font-weight:700;color:#fff}.characters-grid .card-image .status-badge{position:absolute;top:10px;right:10px}.characters-grid .card-content{padding:15px}.characters-grid .card-content h3{margin:0 0 5px;font-size:1.1rem}.characters-grid .card-content .ethnicity{color:var(--text-secondary);font-size:.9rem;margin:0 0 8px}.characters-grid .card-content .theme{color:var(--accent);font-size:.85rem;margin:0;line-height:1.4}.lora-section{margin-top:20px;padding:20px;background:var(--bg-card);border-radius:12px;border:1px solid var(--border)}.lora-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.lora-section .section-header label{font-size:1rem;font-weight:600;color:var(--text-primary)}.lora-manager{background:var(--bg-dark);border-radius:8px;padding:15px;margin-bottom:15px}.add-lora-form{display:grid;grid-template-columns:1fr 1.5fr 1fr auto;gap:15px;align-items:end;margin-bottom:15px}.add-lora-form input[type=text]{padding:10px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:.9rem}.add-lora-form .weight-input{display:flex;flex-direction:column;gap:8px;min-width:140px}.add-lora-form .weight-input label{font-size:.85rem;color:var(--text-secondary);white-space:nowrap}.add-lora-form .weight-input input[type=range]{width:100%;accent-color:var(--accent)}.lora-list{border-top:1px solid var(--border);padding-top:15px}.lora-list h4{margin:0 0 10px;font-size:.9rem;color:var(--text-secondary)}.lora-item{display:flex;align-items:center;gap:15px;padding:10px;background:var(--bg-card);border-radius:6px;margin-bottom:8px}.lora-item .lora-name{font-weight:500;min-width:120px}.lora-item .lora-filename{flex:1;color:var(--text-secondary);font-size:.85rem;font-family:monospace}.lora-item .lora-weight{color:var(--accent);font-size:.85rem}.lora-selection{margin-top:10px}.lora-dropdown select{width:100%;padding:12px;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);cursor:pointer}.selected-loras{margin-top:15px}.selected-lora-item{display:flex;align-items:center;gap:15px;padding:12px 15px;background:var(--bg-dark);border-radius:8px;margin-bottom:8px;border:1px solid var(--border)}.selected-lora-item.disabled{opacity:.5}.selected-lora-item input[type=checkbox]{width:18px;height:18px;cursor:pointer}.selected-lora-item .lora-name{font-weight:500;min-width:150px}.selected-lora-item .weight-slider{flex:1;display:flex;align-items:center;gap:12px}.selected-lora-item .weight-slider input[type=range]{flex:1;min-width:120px;max-width:250px;accent-color:var(--accent)}.selected-lora-item .weight-value{font-family:monospace;color:var(--accent);min-width:45px;font-size:.9rem}@media(max-width:768px){.sidebar{display:none}.main-content{margin-left:0}.form-row{grid-template-columns:1fr}.detail-header{flex-direction:column;text-align:center}.header-actions{flex-direction:column;width:100%}.characters-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:15px}.view-toggle{margin-left:0;width:100%;justify-content:flex-end}.add-lora-form{grid-template-columns:1fr}}.editable-name:hover .edit-name-btn{opacity:.6!important}.editable-name .edit-name-btn:hover{opacity:1!important}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--bg-darker);color:var(--text-primary)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-darker);padding:20px}.login-box{background:var(--bg-dark);padding:40px;border-radius:12px;width:100%;max-width:400px;box-shadow:0 4px 20px #0000004d}.login-header{text-align:center;margin-bottom:30px}.login-logo-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px}.login-logo{width:32px;height:32px;filter:invert(1) brightness(2)}.login-brand{color:var(--text-primary);font-size:1.5rem;font-weight:600}.login-subtitle{color:var(--text-secondary);font-size:.9rem;display:block}.login-form{display:flex;flex-direction:column;gap:20px}.login-form .form-group{display:flex;flex-direction:column;gap:8px}.login-form label{color:var(--text-secondary);font-size:.9rem}.login-form input{padding:12px 16px;background:var(--bg-darker);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:1rem;transition:border-color .2s}.login-form input:focus{outline:none;border-color:var(--accent)}.login-error{background:#ff52521a;border:1px solid var(--danger);color:var(--danger);padding:12px;border-radius:8px;font-size:.9rem}.login-button{padding:14px;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s}.login-button:hover:not(:disabled){opacity:.9}.login-button:disabled{opacity:.6;cursor:not-allowed}.sidebar-footer{margin-top:auto;padding:15px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.admin-name{color:var(--text-secondary);font-size:.85rem;text-align:center}.logout-button{padding:8px 16px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;cursor:pointer;transition:all .2s;font-size:.85rem}.logout-button:hover{background:var(--danger);border-color:var(--danger);color:#fff}
