.header{background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.header-left{align-items:center;gap:20px;display:flex}.header-title{color:var(--text-primary);white-space:nowrap;margin:0;font-size:18px;font-weight:700}.mode-tabs{background:var(--bg-tertiary);border-radius:8px;gap:2px;padding:3px;display:flex}.mode-tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 18px;font-size:13px;font-weight:500;transition:all .2s}.mode-tab:hover{color:var(--text-primary)}.mode-tab.active{background:var(--accent);color:#fff}.header-right{align-items:center;gap:12px;display:flex}.btn-reset{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 14px;font-size:12px;transition:all .2s}.btn-reset:hover{color:#fff;background:#e74c3c;border-color:#e74c3c}.model-select{align-items:center;gap:6px;display:flex}.model-select label{color:var(--text-secondary);white-space:nowrap;font-size:12px}.model-select select{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;border-radius:6px;outline:none;padding:5px 8px;font-size:12px}.model-select select:focus{border-color:var(--accent)}.num-select select{width:60px}.theme-toggle{border:1px solid var(--border-color);background:var(--bg-primary);cursor:pointer;border-radius:6px;padding:6px 10px;font-size:16px;transition:background .2s}.theme-toggle:hover{background:var(--bg-tertiary)}.gen-type-selector{margin-bottom:12px}.gen-type-row{align-items:center;gap:6px;display:flex}.gen-type-select{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:8px;outline:none;flex:1;padding:8px 10px;font-size:13px}.gen-type-select:focus{border-color:var(--accent)}.remove-custom-btn{border:1px solid var(--danger);color:var(--danger);cursor:pointer;background:0 0;border-radius:4px;padding:4px 8px;font-size:14px;line-height:1}.custom-type-input{gap:6px;margin-top:8px;display:flex}.custom-type-input input{border:1px solid var(--accent);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:6px 10px;font-size:13px}.btn-small{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border-radius:6px;padding:6px 12px;font-size:12px}.btn-small.btn-cancel{color:var(--text-secondary);border-color:var(--border-color);background:0 0}.structured-input-view{margin-bottom:8px}.section-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.section-title{color:var(--text-primary);margin:0;font-size:14px;font-weight:600}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.link-btn:hover{text-decoration:underline}.hint-text{color:var(--text-secondary);font-size:13px;font-style:italic}.fields-grid{flex-direction:column;gap:8px;display:flex}.field-item{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--text-secondary);text-transform:none;font-size:12px;font-weight:500}.field-input-row{gap:6px;display:flex}.field-select{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;flex:1;min-width:0;padding:6px 8px;font-size:12px}.field-select:focus{border-color:var(--accent)}.field-custom-input{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;flex:1.5;min-width:0;padding:6px 8px;font-size:12px}.field-custom-input:focus{border-color:var(--accent)}.custom-size{background:var(--bg-tertiary);border-radius:6px;padding:8px}.size-inputs{align-items:center;gap:8px;display:flex}.size-input{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:6px 8px;font-size:12px}.size-input:focus{border-color:var(--accent)}.direct-prompt-view{margin-bottom:8px}.sub-title{color:var(--text-secondary);margin:0 0 6px;font-size:12px;font-weight:500}.template-list{max-height:180px;margin-bottom:10px;padding-right:4px;overflow-y:auto}.template-category{margin-bottom:6px}.template-cat-name{color:var(--accent);margin-bottom:3px;font-size:11px;font-weight:600;display:block}.template-items{flex-wrap:wrap;gap:4px;display:flex}.template-item{align-items:center;gap:2px;display:flex}.template-use-btn{border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:140px;padding:3px 8px;font-size:11px;transition:all .15s;overflow:hidden}.template-use-btn:hover{border-color:var(--accent);background:var(--accent-muted)}.template-edit-btn,.template-del-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:11px;line-height:1}.template-edit-btn:hover{color:var(--accent);background:var(--bg-tertiary)}.template-del-btn:hover{color:var(--danger);background:var(--bg-tertiary)}.prompt-input-area{margin-bottom:8px}.prompt-textarea{border:1px solid var(--border-color);background:var(--bg-primary);width:100%;color:var(--text-primary);resize:vertical;box-sizing:border-box;border-radius:8px;outline:none;padding:10px;font-family:SF Mono,Consolas,monospace;font-size:13px;line-height:1.5}.prompt-textarea:focus{border-color:var(--accent)}.btn-save-template{border:1px dashed var(--border-color);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:5px 12px;font-size:12px;transition:all .2s}.btn-save-template:hover{border-color:var(--accent);color:var(--accent)}.save-dialog-overlay{z-index:100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.save-dialog{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;flex-direction:column;gap:12px;width:360px;padding:20px;display:flex}.save-dialog h4{color:var(--text-primary);margin:0;font-size:14px}.save-dialog-input{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;padding:8px 10px;font-size:13px}.save-dialog-input:focus{border-color:var(--accent)}.save-dialog-row{gap:8px;display:flex}.save-dialog-row select{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:8px;font-size:13px}.new-cat{flex:1}.save-dialog-actions{justify-content:flex-end;gap:8px;display:flex}.prompt-composer{margin-bottom:12px}.composer-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.btn-synthesize{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:6px 14px;font-size:13px;transition:all .2s}.btn-synthesize:hover{opacity:.9}.prompt-section{margin-bottom:10px}.prompt-section.optimized{background:var(--bg-tertiary);border:1px solid var(--accent-muted);border-radius:8px;padding:10px}.btn-optimize{color:#c9a94e;cursor:pointer;background:linear-gradient(135deg,#c9a94e26,#c9a94e0d);border:1px solid #c9a94e;border-radius:8px;width:100%;margin-top:8px;padding:8px 16px;font-size:13px;transition:all .2s;display:block}.btn-optimize:hover:not(:disabled){background:linear-gradient(135deg,#c9a94e40,#c9a94e1a)}.btn-optimize:disabled{opacity:.5;cursor:not-allowed}.optimized-textarea{border-color:var(--accent-muted)}.optimized-actions{gap:8px;margin-top:8px;display:flex}.image-uploader{border-top:1px solid var(--border-color);gap:16px;margin-top:8px;padding:12px 0;display:flex}.upload-section{flex:1}.upload-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.upload-title{color:var(--text-primary);margin:0;font-size:13px;font-weight:600}.upload-count{color:var(--text-secondary);font-size:12px}.upload-dropzone{border:2px dashed var(--border-color);text-align:center;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-height:50px;padding:16px;transition:all .2s;display:flex}.upload-dropzone:hover{border-color:var(--accent);background:var(--accent-muted)}.dropzone-text{color:var(--text-secondary);font-size:12px}.image-previews{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.image-preview-item{border:1px solid var(--border-color);border-radius:6px;width:64px;height:64px;position:relative;overflow:hidden}.image-preview-item img{object-fit:cover;width:100%;height:100%}.remove-btn{color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;line-height:1;display:flex;position:absolute;top:2px;right:2px}.remove-btn:hover{background:var(--danger)}.image-editor-overlay{z-index:200;background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.image-editor{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;flex-direction:column;width:90vw;max-width:1000px;max-height:85vh;display:flex;overflow:hidden}.editor-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.editor-header h3{color:var(--text-primary);margin:0;font-size:15px}.close-btn{background:var(--bg-tertiary);width:28px;height:28px;color:var(--text-primary);cursor:pointer;border:none;border-radius:6px;font-size:16px}.editor-body{flex:1;display:flex;overflow:hidden}.editor-preview{background:var(--bg-tertiary);flex:1;justify-content:center;align-items:center;padding:16px;display:flex;overflow:hidden}.editor-preview img{object-fit:contain;border-radius:4px;max-width:100%;max-height:60vh}.editor-controls{border-left:1px solid var(--border-color);width:260px;padding:16px;overflow-y:auto}.control-group{margin-bottom:14px}.control-group label{color:var(--text-secondary);margin-bottom:6px;font-size:11px;display:block}.control-group input[type=range]{width:100%;accent-color:var(--accent)}.filter-buttons{flex-wrap:wrap;gap:4px;display:flex}.filter-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:4px 10px;font-size:11px;transition:all .15s}.filter-btn.active{border-color:var(--accent);background:var(--accent-muted);color:var(--accent)}.text-overlay-input{border:1px solid var(--border-color);background:var(--bg-primary);width:100%;color:var(--text-primary);box-sizing:border-box;border-radius:6px;outline:none;padding:6px 8px;font-size:12px}.text-overlay-input:focus{border-color:var(--accent)}.editor-footer{border-top:1px solid var(--border-color);gap:8px;padding:12px 16px;display:flex}.history-panel{margin-top:12px}.history-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:8px 0;display:flex}.expand-icon{color:var(--text-secondary);margin-left:4px;font-size:12px}.btn-export{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:11px}.btn-export:hover{border-color:var(--accent);color:var(--accent)}.history-list{flex-direction:column;gap:8px;max-height:400px;padding-right:4px;display:flex;overflow-y:auto}.history-item{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;padding:10px}.history-meta{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.history-time{color:var(--text-secondary);font-size:11px}.history-model{color:var(--text-secondary);background:var(--bg-primary);border-radius:4px;padding:1px 6px;font-size:10px}.history-type{color:var(--accent);margin-bottom:4px;font-size:12px;font-weight:500}.history-prompt{color:var(--text-primary);opacity:.8;margin-bottom:6px;font-size:11px;line-height:1.4}.history-thumbs{gap:4px;margin-bottom:8px;display:flex}.history-thumb{object-fit:cover;border:1px solid var(--border-color);border-radius:4px;width:50px;height:50px}.more-thumbs{background:var(--bg-primary);width:50px;height:50px;color:var(--text-secondary);border-radius:4px;justify-content:center;align-items:center;font-size:11px;display:flex}.history-actions{gap:6px;display:flex}.history-action-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:3px 10px;font-size:11px;transition:all .15s}.history-action-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.history-action-btn.danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.history-action-btn:disabled{opacity:.4;cursor:not-allowed}.debug-log-container{border-top:1px solid var(--border-color);margin-top:4px}.debug-log-toggle{width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:8px 0;font-size:12px;display:flex}.debug-log-toggle:hover{color:var(--text-primary)}.debug-toggle-icon{font-size:10px}.debug-log-panel{flex-direction:column;max-height:320px;display:flex}.debug-log-toolbar,.debug-log-filters{gap:6px;margin-bottom:6px;display:flex}.debug-log-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:3px 8px;font-size:11px}.debug-log-btn:hover{border-color:var(--accent);color:var(--accent)}.debug-log-filter{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:999px;padding:3px 8px;font-size:11px}.debug-log-filter.active,.debug-log-filter:hover{border-color:var(--accent);color:var(--accent);background:#7c5cff14}.debug-log-list{flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.debug-log-empty{color:var(--text-secondary);text-align:center;padding:8px;font-size:11px;font-style:italic}.debug-log-entry{background:var(--bg-tertiary);border-radius:4px;overflow:hidden}.debug-log-entry.error{background:#ff6b6b14}.debug-log-entry-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:flex}.debug-log-entry-header:hover{background:var(--bg-primary)}.debug-log-time{color:var(--text-secondary);white-space:nowrap;font-family:monospace;font-size:10px}.debug-log-label{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.debug-log-status-badge{white-space:nowrap;border-radius:3px;padding:0 4px;font-size:9px;font-weight:600}.debug-log-status-badge.error{background:var(--danger);color:#fff}.debug-log-status-badge.ok{background:var(--success);color:#fff}.debug-log-status-badge.upload{background:var(--accent);color:#fff}.debug-log-detail{color:var(--text-secondary);background:var(--bg-primary);border-top:1px solid var(--border-color);white-space:pre-wrap;word-break:break-all;max-height:200px;margin:0;padding:6px 8px;font-family:SF Mono,Consolas,monospace;font-size:10px;line-height:1.4;overflow-y:auto}.error-overlay-backdrop{z-index:300;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.error-overlay{background:var(--bg-secondary);border:1px solid var(--danger);border-radius:12px;flex-direction:column;width:100%;max-width:600px;max-height:80vh;display:flex;box-shadow:0 8px 40px #00000080}.error-overlay-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.error-overlay-title{color:var(--danger);font-size:15px;font-weight:600}.error-overlay-close{background:var(--bg-tertiary);width:28px;height:28px;color:var(--text-primary);cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:18px;display:flex}.error-overlay-close:hover{background:var(--danger);color:#fff}.error-overlay-body{flex:1;padding:16px 18px;overflow-y:auto}.error-overlay-text{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);white-space:pre-wrap;word-break:break-all;-webkit-user-select:text;user-select:text;cursor:text;border-radius:8px;max-height:50vh;margin:0;padding:12px;font-family:SF Mono,Consolas,monospace;font-size:12px;line-height:1.5;overflow-y:auto}.error-overlay-footer{border-top:1px solid var(--border-color);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.error-overlay-btn{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:8px;padding:7px 16px;font-size:13px;transition:all .15s}.error-overlay-btn:hover{opacity:.9}.error-overlay-btn-cancel{color:var(--text-secondary);border-color:var(--border-color);background:0 0}.error-overlay-btn-cancel:hover{border-color:var(--text-secondary);color:var(--text-primary)}.settings-section{border-top:1px solid var(--border-color);margin-top:8px;padding:12px 0}.settings-actions{gap:8px;margin:8px 0;display:flex}.btn-settings{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:12px;transition:all .2s}.btn-settings:hover{border-color:var(--accent);color:var(--accent)}.settings-hint{color:var(--text-secondary);margin:4px 0 0;font-size:11px;font-style:italic}:root,[data-theme=dark]{--bg-primary:#1a1a2e;--bg-secondary:#16213e;--bg-tertiary:#0f3460;--text-primary:#e0e0e0;--text-secondary:#8892b0;--border-color:#2a3a5c;--accent:#4a9eff;--accent-muted:#4a9eff1a;--danger:#ff6b6b;--success:#51cf66;--warning:#ffd43b}[data-theme=light]{--bg-primary:#fff;--bg-secondary:#f8f9fa;--bg-tertiary:#e9ecef;--text-primary:#212529;--text-secondary:#6c757d;--border-color:#dee2e6;--accent:#3b82f6;--accent-muted:#3b82f614;--danger:#e03131;--success:#2f9e44;--warning:#f08c00}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.app{flex-direction:column;width:100vw;height:100vh;display:flex}.app-body{flex:1;min-height:0;display:flex;overflow:hidden}.sidebar-left{border-right:1px solid var(--border-color);background:var(--bg-secondary);width:360px;min-width:320px}.sidebar-right{border-left:1px solid var(--border-color);background:var(--bg-secondary);width:300px;min-width:260px}.sidebar-scroll{height:100%;padding:16px;overflow-y:auto}.main-content{background:var(--bg-primary);flex-direction:column;flex:1;display:flex;overflow:hidden}.result-area{flex:1;justify-content:center;align-items:center;padding:20px;display:flex;overflow-y:auto}.empty-state{text-align:center;color:var(--text-secondary)}.empty-icon{opacity:.5;margin-bottom:16px;font-size:64px}.empty-state p{margin-bottom:6px;font-size:15px}.empty-sub{opacity:.6;font-size:13px}.loading-state{text-align:center;color:var(--text-secondary)}.loading-spinner{border:4px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;width:48px;height:48px;margin:0 auto 16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.generated-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;gap:16px;width:100%;display:grid}.generated-card{border:1px solid var(--border-color);background:var(--bg-secondary);border-radius:10px;transition:border-color .2s;overflow:hidden}.generated-card:hover{border-color:var(--accent)}.generated-image{object-fit:contain;width:100%;max-height:400px;display:block}.generated-card-actions{border-top:1px solid var(--border-color);gap:6px;padding:8px 10px;display:flex}.card-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;border-radius:6px;flex:1;padding:5px 8px;font-size:12px;transition:all .15s}.card-btn:hover{border-color:var(--accent);color:var(--accent)}.generate-section{padding:10px 0}.btn-generate{background:linear-gradient(135deg, var(--accent), #6366f1);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px 24px;font-size:15px;font-weight:600;transition:all .2s}.btn-generate:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 20px #4a9eff4d}.btn-generate:disabled{opacity:.4;cursor:not-allowed}.sidebar-upload{margin-top:8px}.upload-diagnostic{border:1px solid var(--border-color);background:var(--bg-primary);border-radius:10px;margin-bottom:12px;padding:12px}.upload-diagnostic.success{border-color:#51cf6673}.upload-diagnostic.error{border-color:#ff6b6b73}.upload-diagnostic.running{border-color:#4a9eff73}.upload-diagnostic-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.upload-diagnostic-title{color:var(--text-primary);font-size:13px;font-weight:700}.upload-diagnostic-subtitle{color:var(--text-secondary);margin-top:2px;font-size:11px}.upload-diagnostic-badge{color:#fff;white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.upload-diagnostic-badge.success{background:var(--success)}.upload-diagnostic-badge.error{background:var(--danger)}.upload-diagnostic-badge.running{background:var(--accent)}.upload-diagnostic-grid{grid-template-columns:1fr 1fr;gap:8px 12px;margin-bottom:10px;font-size:12px;display:grid}.upload-diagnostic-grid div{color:var(--text-primary);flex-direction:column;gap:2px;display:flex}.upload-diagnostic-grid strong,.upload-diagnostic-block strong{color:var(--text-secondary);font-size:11px;font-weight:600}.upload-diagnostic-block{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.upload-diagnostic-block code{background:var(--bg-secondary);color:var(--text-primary);word-break:break-all;white-space:pre-wrap;border-radius:6px;padding:6px 8px;font-size:11px;display:block}.upload-diagnostic-block.error code{color:var(--danger)}.upload-diagnostic-actions{justify-content:flex-end;display:flex}input[type=text],input[type=number],textarea,select{font-family:inherit}
