:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-muted: #64748b;--accent-primary: #6366f1;--accent-primary-hover: #4f46e5;--accent-secondary: #8b5cf6;--border-color: #334155;--success: #22c55e;--warning: #f59e0b;--error: #ef4444;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4);--transition: .15s ease;--sidebar-width: 280px;--header-height: 56px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;line-height:1.5;color:var(--text-primary);background-color:var(--bg-primary)}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.app{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{height:var(--header-height);padding:0 16px;display:flex;align-items:center;border-bottom:1px solid var(--border-color)}.logo{font-size:1.125rem;font-weight:700;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ds-selector{padding:16px;border-bottom:1px solid var(--border-color)}.ds-selector label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px}.ds-selector select{width:100%;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;transition:border-color var(--transition)}.ds-selector select:hover{border-color:var(--text-muted)}.ds-selector select:focus{outline:none;border-color:var(--accent-primary)}.chat-list-container{flex:1;display:flex;flex-direction:column;overflow:hidden}.chat-list-header{padding:16px;display:flex;align-items:center;justify-content:space-between}.chat-list-header h2{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.chat-list{flex:1;list-style:none;overflow-y:auto;padding:0 8px 16px}.chat-list-item{padding:12px;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition);margin-bottom:4px}.chat-list-item:hover{background:var(--bg-tertiary)}.chat-list-item.active{background:var(--accent-primary)}.chat-list-item-title{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-list-item-top{display:flex;align-items:center;gap:8px}.chat-list-item-top .chat-list-item-title{flex:1}.chat-list-item-delete{width:22px;height:22px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:.875rem;line-height:1;flex-shrink:0}.chat-list-item-delete:hover{border-color:#ef444459;background:#ef44441f;color:#fecaca}.chat-list-item-delete:focus-visible{outline:2px solid rgba(239,68,68,.6);outline-offset:1px}.chat-list-item.active .chat-list-item-delete{color:#ffffffbf}.chat-list-item.active .chat-list-item-delete:hover{border-color:#fff6;background:#ffffff26;color:#fff}.chat-list-item-meta{font-size:.75rem;color:var(--text-muted);margin-top:4px}.chat-list-item.active .chat-list-item-meta{color:#ffffffb3}.chat-list-empty{padding:16px;text-align:center;color:var(--text-muted);font-size:.875rem}.main-content{flex:1;display:flex;overflow:hidden}.chat-panel{display:flex;flex-direction:column;flex-shrink:0}.resize-handle{width:4px;cursor:col-resize;background:var(--border-color);transition:background var(--transition);flex-shrink:0}.resize-handle:hover{background:var(--accent-primary)}.chat-header{padding:8px 16px;display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.chat-header-top,.chat-header-bottom{display:flex;align-items:center;gap:12px}.chat-header h2{font-size:1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-title-editable{cursor:pointer;padding:2px 4px;margin:-2px -4px;border-radius:var(--radius-sm);transition:background var(--transition)}.chat-title-editable:hover{background:var(--bg-tertiary)}.chat-title-input{font-size:1rem;font-weight:600;padding:2px 4px;background:var(--bg-tertiary);border:1px solid var(--accent-primary);border-radius:var(--radius-sm);color:var(--text-primary);outline:none;min-width:200px}.chat-ds-badge{font-size:.75rem;padding:4px 8px;background:var(--bg-tertiary);border-radius:var(--radius-sm);color:var(--text-secondary)}.chat-ds-badge:empty{display:none}.chat-provider-label{display:flex;align-items:center;gap:8px;font-size:.75rem;font-weight:600;color:var(--text-muted)}.chat-provider-select{padding:4px 8px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.75rem;transition:border-color var(--transition);cursor:pointer}.chat-provider-select:hover{border-color:var(--text-muted)}.chat-provider-select:focus{outline:none;border-color:var(--accent-primary)}.chat-token-usage{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.75rem;color:var(--text-secondary)}.chat-token-usage span{padding:2px 6px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-tertiary)}.chat-token-usage-row{padding:0 16px 10px}.messages{flex:1;overflow-y:auto;padding:16px}.messages-empty{height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.message{margin-bottom:16px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.message-user{text-align:right}.message-bubble{display:inline-block;max-width:85%;padding:12px 16px;border-radius:var(--radius-lg);text-align:left}.message-user .message-bubble{background:var(--accent-primary);border-bottom-right-radius:4px}.message-assistant .message-bubble{background:var(--bg-secondary);border:1px solid var(--border-color);border-bottom-left-radius:4px}.message-bubble h1,.message-bubble h2,.message-bubble h3,.message-bubble h4,.message-bubble h5,.message-bubble h6{margin-top:.5em;margin-bottom:.25em;font-weight:600;line-height:1.3}.message-bubble h1:first-child,.message-bubble h2:first-child,.message-bubble h3:first-child,.message-bubble h4:first-child,.message-bubble h5:first-child,.message-bubble h6:first-child{margin-top:0}.message-bubble p{margin:.5em 0}.message-bubble p:first-child{margin-top:0}.message-bubble p:last-child{margin-bottom:0}.message-bubble ul,.message-bubble ol{margin:.5em 0;padding-left:1.5em}.message-bubble li{margin:.25em 0}.message-bubble code{background:var(--bg-tertiary);padding:.15em .4em;border-radius:var(--radius-sm);font-family:Monaco,Menlo,monospace;font-size:.85em}.message-bubble pre{background:var(--bg-tertiary);padding:.75em 1em;border-radius:var(--radius-md);overflow-x:auto;margin:.5em 0}.message-bubble pre code{background:none;padding:0}.message-bubble strong{font-weight:600}.message-bubble hr{border:none;border-top:1px solid var(--border-color);margin:.75em 0}.message-error .message-bubble{background:#ef444426;border:1px solid var(--error);color:#fca5a5}.message-debug{background:#6366f11a;border:1px solid var(--accent-primary);border-radius:var(--radius-md);padding:12px;margin-bottom:16px;font-size:.8rem}.debug-header{font-weight:600;color:var(--accent-primary);margin-bottom:8px}.debug-details{margin-top:8px}.debug-details summary{cursor:pointer;color:var(--text-secondary);font-weight:500;padding:4px 0}.debug-details summary:hover{color:var(--text-primary)}.debug-pre{background:var(--bg-tertiary);border-radius:var(--radius-sm);padding:12px;margin-top:8px;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;font-family:Monaco,Menlo,monospace;font-size:.75rem;line-height:1.4;color:var(--text-secondary)}.message-time{font-size:.7rem;color:var(--text-muted);margin-top:4px}.message-form{padding:16px;background:var(--bg-secondary);border-top:1px solid var(--border-color)}.message-input-container{display:flex;gap:12px;align-items:flex-end}.message-action-column{display:flex;flex-direction:column;gap:8px}.message-action-column .btn{width:100%}.message-input-container textarea{flex:1;resize:none;padding:12px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.875rem;line-height:1.5;transition:border-color var(--transition)}.message-input-container textarea::placeholder{color:var(--text-muted)}.message-input-container textarea:hover{border-color:var(--text-muted)}.message-input-container textarea:focus{outline:none;border-color:var(--accent-primary)}.message-input-container textarea:disabled{opacity:.5;cursor:not-allowed}.preview-panel{flex:1;display:flex;flex-direction:column;background:var(--bg-primary)}.preview-header{height:var(--header-height);padding:0 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.preview-header h2{font-size:1rem;font-weight:600}.preview-actions{display:flex;gap:8px}.preview-container{flex:1;padding:16px;display:flex;flex-direction:column;gap:10px;overflow:hidden}.preview-container iframe{flex:1;width:100%;height:100%;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:#fff}.preview-alert{border-radius:var(--radius-md);padding:10px 12px;font-size:.8125rem;line-height:1.4}.preview-alert-error{background:#ef44441f;border:1px solid rgba(239,68,68,.4);color:#fecaca}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-md);transition:all var(--transition)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:.8125rem}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover:not(:disabled){background:var(--border-color)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172acc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loading-overlay.hidden{display:none}.loading-spinner{width:48px;height:48px;border:3px solid var(--bg-tertiary);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}.loading-overlay p{color:var(--text-secondary);font-size:.9375rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.state-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.state-badge{padding:4px 12px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.05em}.drop-back-btn{margin-left:auto;font-size:.75rem}@media (max-width: 768px){.sidebar{width:240px}}.admin-app{display:flex;flex-direction:column;height:100vh;background:#0f172a;color:#f8fafc;font-family:system-ui,-apple-system,sans-serif}.admin-header{padding:1.5rem 2rem;border-bottom:1px solid #1e293b;display:flex;justify-content:space-between;align-items:center;background:#1e293b}.admin-header h1{margin:0;font-size:1.5rem;font-weight:600}.back-link{color:#6366f1;text-decoration:none;font-size:.9rem}.back-link:hover{text-decoration:underline}.admin-tabs{display:flex;gap:.5rem;padding:1rem 2rem;border-bottom:1px solid #1e293b;background:#1e293b}.admin-tabs button{padding:.5rem 1rem;background:transparent;border:1px solid #334155;color:#94a3b8;border-radius:.375rem;cursor:pointer;transition:all .2s}.admin-tabs button:hover{background:#334155;color:#f8fafc}.admin-tabs button.active{background:#6366f1;color:#fff;border-color:#6366f1}.admin-content{flex:1;overflow:hidden}.prompts-manager{display:grid;grid-template-columns:300px 1fr;height:100%;overflow:hidden}.prompts-list{border-right:1px solid #1e293b;padding:1rem;overflow-y:auto;background:#1e293b}.new-prompt-btn{width:100%;padding:.75rem;background:#6366f1;color:#fff;border:none;border-radius:.375rem;font-weight:500;cursor:pointer;margin-bottom:1rem}.new-prompt-btn:hover{background:#5558e3}.prompts-items{display:flex;flex-direction:column;gap:.5rem}.prompt-item{padding:.75rem;background:#0f172a;border:1px solid #334155;border-radius:.375rem;cursor:pointer;transition:all .2s}.prompt-item:hover{background:#1e293b;border-color:#6366f1}.prompt-item.active{background:#6366f1;color:#fff;border-color:#6366f1}.prompt-index{display:inline-block;width:2rem;color:#94a3b8}.prompt-name{color:inherit}.prompt-section-label{margin:.75rem 0 .5rem;padding:0 .25rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.prompt-details{padding:2rem;overflow-y:auto}.no-selection{display:flex;align-items:center;justify-content:center;height:100%;color:#94a3b8}.prompt-editor{margin-bottom:2rem}.editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.editor-header h2{margin:0;display:flex;align-items:center;gap:.5rem}.version{font-size:.9rem;color:#94a3b8;font-weight:400}.editor-message{padding:.75rem;border-radius:.375rem;margin-bottom:1rem}.editor-message.success{background:#22c55e1a;border:1px solid #22c55e;color:#22c55e}.editor-message.error{background:#ef44441a;border:1px solid #ef4444;color:#ef4444}.prompt-editor textarea{width:100%;min-height:400px;background:#1e293b;color:#f8fafc;border:1px solid #334155;padding:1rem;font-family:Courier New,monospace;font-size:14px;border-radius:.375rem;resize:vertical}.prompt-editor textarea:focus{outline:none;border-color:#6366f1}.save-controls{display:flex;gap:1rem;margin-top:1rem}.comment-input{flex:1;padding:.75rem;background:#1e293b;border:1px solid #334155;color:#f8fafc;border-radius:.375rem}.comment-input:focus{outline:none;border-color:#6366f1}.save-btn{padding:.75rem 1.5rem;background:#6366f1;color:#fff;border:none;border-radius:.375rem;font-weight:500;cursor:pointer}.save-btn:hover:not(:disabled){background:#5558e3}.save-btn:disabled{opacity:.5;cursor:not-allowed}.version-history{margin-top:2rem;padding-top:2rem;border-top:1px solid #1e293b}.version-history h3{margin-top:0;margin-bottom:1rem}.version-history table{width:100%;border-collapse:collapse;background:#1e293b;border-radius:.375rem;overflow:hidden}.version-history th{padding:.75rem;text-align:left;background:#334155;font-weight:500;font-size:.9rem}.version-history td{padding:.75rem;border-top:1px solid #334155}.version-history tr.current{background:#6366f11a}.badge{display:inline-block;padding:.25rem .5rem;background:#6366f1;color:#fff;border-radius:.25rem;font-size:.75rem;margin-left:.5rem}.view-btn,.revert-btn{padding:.375rem .75rem;border:none;border-radius:.25rem;font-size:.85rem;cursor:pointer;margin-right:.5rem}.view-btn{background:#334155;color:#f8fafc}.view-btn:hover{background:#475569}.revert-btn{background:#f59e0b;color:#fff}.revert-btn:hover{background:#d97706}.api-keys-manager{max-width:800px}.api-keys-manager h2{margin-top:0;margin-bottom:1.5rem}.api-message{padding:.75rem;border-radius:.375rem;margin-bottom:1rem}.api-message.success{background:#22c55e1a;border:1px solid #22c55e;color:#22c55e}.api-message.error{background:#ef44441a;border:1px solid #ef4444;color:#ef4444}.existing-keys{margin-bottom:2rem}.existing-keys h3{margin-top:0;margin-bottom:1rem}.existing-keys table{width:100%;border-collapse:collapse;background:#1e293b;border-radius:.375rem;overflow:hidden}.existing-keys th{padding:.75rem;text-align:left;background:#334155;font-weight:500}.existing-keys td{padding:.75rem;border-top:1px solid #334155}.masked-key{font-family:Courier New,monospace;color:#94a3b8}.existing-keys td button+button{margin-left:.5rem}.edit-btn{padding:.375rem .75rem;background:#3b82f6;color:#fff;border:none;border-radius:.25rem;font-size:.85rem;cursor:pointer}.edit-btn:hover{background:#2563eb}.delete-btn{padding:.375rem .75rem;background:#ef4444;color:#fff;border:none;border-radius:.25rem;font-size:.85rem;cursor:pointer}.delete-btn:hover{background:#dc2626}.add-key-form{padding:1.5rem;background:#1e293b;border-radius:.375rem;border:1px solid #334155}.add-key-form h3{margin-top:0;margin-bottom:1rem}.form-row{margin-bottom:1rem}.form-row input{width:100%;padding:.75rem;background:#0f172a;border:1px solid #334155;color:#f8fafc;border-radius:.375rem}.form-row input:focus{outline:none;border-color:#6366f1}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#1e293b;padding:2rem;border-radius:.5rem;max-width:500px;width:90%;box-shadow:0 20px 25px -5px #00000080}.version-modal{max-width:800px}.modal h3{margin-top:0;margin-bottom:1rem}.version-info{margin-bottom:1rem;padding:1rem;background:#0f172a;border-radius:.375rem}.version-info p{margin:.5rem 0}.modal textarea{width:100%;min-height:300px;background:#0f172a;color:#f8fafc;border:1px solid #334155;padding:1rem;font-family:Courier New,monospace;font-size:14px;border-radius:.375rem;margin-bottom:1rem}.modal input{width:100%;padding:.75rem;background:#0f172a;border:1px solid #334155;color:#f8fafc;border-radius:.375rem;margin-bottom:1rem}.modal input:focus{outline:none;border-color:#6366f1}.modal-actions{display:flex;gap:1rem;justify-content:flex-end}.modal-actions button{padding:.75rem 1.5rem;border:none;border-radius:.375rem;font-weight:500;cursor:pointer}.modal-actions button:first-child{background:#6366f1;color:#fff}.modal-actions button:first-child:hover{background:#5558e3}.modal-actions button:last-child{background:#334155;color:#f8fafc}.modal-actions button:last-child:hover{background:#475569}.loading,.error,.empty{padding:2rem;text-align:center;color:#94a3b8}.error{color:#ef4444}.llm-history-manager{display:grid;grid-template-columns:350px 1fr;height:100%;overflow:hidden}.llm-history-sidebar{border-right:1px solid #1e293b;padding:1rem;overflow-y:auto;background:#1e293b}.llm-history-sidebar h3{margin:0 0 1rem;font-size:1rem}.llm-history-sidebar .empty-state{color:#64748b;font-size:.9rem;padding:1rem 0}.session-list{list-style:none;padding:0;margin:0}.session-list li{padding:.75rem;border-radius:.375rem;cursor:pointer;margin-bottom:.5rem;border:1px solid transparent}.session-list li:hover{background:#334155}.session-list li.active{background:#6366f1;border-color:#6366f1}.session-title{font-weight:500;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-meta{display:flex;gap:.5rem;margin-bottom:.25rem}.session-meta .ds-badge{font-size:.7rem;padding:.125rem .375rem;background:#334155;border-radius:.25rem;color:#94a3b8}.session-list li.active .ds-badge{background:#fff3;color:#fff}.session-meta .log-count{font-size:.75rem;color:#64748b}.session-list li.active .log-count{color:#ffffffb3}.session-date{font-size:.7rem;color:#64748b}.session-list li.active .session-date{color:#ffffffb3}.llm-history-content{padding:1.5rem;overflow-y:auto}.service-doc{background:#1e293b;border-radius:.5rem;padding:1.5rem;border:1px solid #334155;color:#f8fafc;max-height:calc(100vh - 220px);overflow:auto}.service-doc.loading,.service-doc.error{padding:1rem}.service-doc h1,.service-doc h2,.service-doc h3{margin-top:0}.service-doc code{background:#0f172a;padding:.1rem .3rem;border-radius:.25rem}.service-doc pre{background:#0f172a;padding:1rem;border-radius:.375rem;overflow:auto}.llm-history-content .empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:1rem}.logs-list h3{margin:0 0 1rem}.logs-table{width:100%;border-collapse:collapse;background:#1e293b;border-radius:.375rem;overflow:hidden}.logs-table th{padding:.75rem;text-align:left;background:#334155;font-weight:500;font-size:.85rem}.logs-table td{padding:.75rem;border-top:1px solid #334155;font-size:.85rem}.logs-table tr:hover{background:#6366f10d}.logs-table tr.error-row{background:#ef44441a}.logs-table .provider{display:block;font-weight:500}.logs-table .model{display:block;font-size:.75rem;color:#64748b}.logs-table .btn{padding:.375rem .75rem;background:#334155;color:#f8fafc;border:none;border-radius:.25rem;cursor:pointer;font-size:.8rem}.logs-table .btn:hover{background:#475569}.modal-content{background:#1e293b;border-radius:.5rem;max-width:90%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 25px -5px #00000080}.log-detail-modal{width:1000px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid #334155;background:#334155}.modal-header h3{margin:0;font-size:1rem}.close-btn{background:none;border:none;color:#94a3b8;font-size:1.5rem;cursor:pointer;line-height:1}.close-btn:hover{color:#f8fafc}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.log-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.5rem;padding:1rem;background:#0f172a;border-radius:.375rem;font-size:.85rem}.log-section{margin-bottom:1.5rem}.log-section.error{background:#ef44441a;border:1px solid #ef4444;border-radius:.375rem;padding:1rem}.log-section h4{margin:0 0 .75rem;font-size:.9rem;color:#94a3b8}.messages-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.messages-header h4{margin:0}.messages-actions{display:flex;gap:.5rem}.messages-actions .btn{padding:.25rem .5rem;font-size:.75rem;background:#334155;color:#f8fafc;border:none;border-radius:.25rem;cursor:pointer}.messages-actions .btn:hover{background:#475569}.messages-list{display:flex;flex-direction:column;gap:.75rem;max-height:none;overflow-y:visible}.message-item{border-radius:.375rem;overflow:hidden}.message-item.highlighted{box-shadow:0 0 0 2px #f59e0b}.message-role{padding:.375rem .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;gap:.5rem;-webkit-user-select:none;user-select:none}.message-role:hover{opacity:.9}.collapse-indicator{font-size:.65rem;width:1rem}.content-length{font-weight:400;font-size:.7rem;opacity:.7;margin-left:auto;text-transform:none}.role-system .message-role{background:#1e40af;color:#fff}.role-user .message-role{background:#6366f1;color:#fff}.message-item.highlighted .message-role{background:#f59e0b}.role-assistant .message-role{background:#059669;color:#fff}textarea.message-content{margin:0;padding:.75rem;background:#0f172a;color:#f8fafc;border:none;border-radius:0;font-family:Courier New,monospace;font-size:.8rem;width:100%;min-height:100px;max-height:none;resize:vertical;box-sizing:border-box}textarea.message-content:focus{outline:none}.message-item.highlighted textarea.message-content{min-height:150px}textarea.response-content{margin:0;padding:1rem;background:#0f172a;color:#f8fafc;border:1px solid #334155;border-radius:.375rem;font-family:Courier New,monospace;font-size:.8rem;width:100%;min-height:200px;max-height:none;resize:vertical;box-sizing:border-box}textarea.response-content:focus{outline:none;border-color:#6366f1}.error-message{color:#ef4444;padding:.5rem;font-size:.85rem}.builder-app{display:grid;grid-template-columns:220px 1fr 1fr;height:100vh;gap:16px;padding:16px;background:var(--bg-primary)}.builder-sidebar{display:flex;flex-direction:column;padding-top:8px;overflow-y:auto}.builder-ds-selector{margin-bottom:20px}.builder-ds-selector label{display:block;font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.builder-ds-row{display:flex;gap:6px}.builder-ds-selector select{flex:1;padding:8px 10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px}.builder-ds-selector select:focus{outline:none;border-color:var(--accent-primary)}.builder-create-btn{width:32px;height:32px;padding:0;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:18px;cursor:pointer;transition:all var(--transition)}.builder-create-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary)}.builder-section{margin-bottom:20px}.builder-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.builder-section-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.builder-create-btn-small{width:20px;height:20px;font-size:14px;line-height:1}.builder-file-list{display:flex;flex-direction:column;gap:2px}.builder-file-item{font-size:13px;color:var(--text-secondary);cursor:pointer;padding:4px 0 4px 12px;border-radius:var(--radius-sm);transition:all var(--transition)}.builder-file-item:hover{color:var(--text-primary);background:var(--bg-tertiary)}.builder-file-item.active{font-weight:500;color:var(--text-primary);background:var(--bg-secondary)}.builder-editor-panel{display:flex;flex-direction:column;background:var(--bg-secondary);border-radius:16px;overflow:hidden;position:relative}.builder-editor-container{flex:1;overflow:hidden}.builder-editor-tabs{position:absolute;bottom:12px;left:12px;display:flex;background:#0006;border-radius:12px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10}.builder-tab-btn{padding:6px 14px;border-radius:12px;font-size:11px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;border:none;background:transparent;color:var(--text-muted);transition:all var(--transition)}.builder-tab-btn:hover{color:var(--text-secondary)}.builder-tab-btn.active{background:var(--accent-primary);color:#fff;box-shadow:0 2px 4px #0000004d}.builder-action-btn{position:absolute;bottom:12px;right:12px;background:var(--accent-primary);color:#fff;border:none;padding:6px 14px;border-radius:12px;font-size:11px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 2px 4px #0000004d;transition:all var(--transition);z-index:10}.builder-action-btn:hover{background:var(--accent-primary-hover)}.builder-action-btn-secondary{right:100px;background:var(--bg-tertiary)}.builder-action-btn-secondary:hover{background:var(--border-color)}.builder-preview-panel{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;position:relative;background:#fff}.builder-preview-frame{flex:1;border:none;background:#fff;width:420px;max-width:100%;align-self:center}.builder-empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:14px}.builder-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.builder-dialog{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:24px;min-width:320px;box-shadow:0 10px 40px #0006}.builder-dialog h3{margin:0 0 16px;font-size:16px;font-weight:600;color:var(--text-primary)}.builder-dialog input{width:100%;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;margin-bottom:16px}.builder-dialog input:focus{outline:none;border-color:var(--accent-primary)}.builder-dialog-actions{display:flex;gap:8px;justify-content:flex-end}.builder-dialog-btn{padding:8px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:600;cursor:pointer;border:none;background:var(--accent-primary);color:#fff;transition:all var(--transition)}.builder-dialog-btn:hover:not(:disabled){background:var(--accent-primary-hover)}.builder-dialog-btn:disabled{opacity:.5;cursor:not-allowed}.builder-dialog-btn-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.builder-dialog-btn-secondary:hover:not(:disabled){background:var(--border-color)}.builder-component-folder{margin-bottom:2px}.builder-folder-header{display:flex;align-items:center;gap:4px;padding:4px 8px;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition)}.builder-folder-header:hover{background:var(--bg-tertiary)}.builder-folder-header.expanded{color:var(--text-primary)}.builder-folder-icon{font-size:8px;color:var(--text-muted);width:12px}.builder-folder-name{flex:1;font-size:13px;color:var(--text-secondary)}.builder-folder-header:hover .builder-folder-name,.builder-folder-header.expanded .builder-folder-name{color:var(--text-primary)}.builder-upload-btn{width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:12px;cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:all var(--transition)}.builder-folder-header:hover .builder-upload-btn{opacity:1}.builder-upload-btn:hover{background:var(--accent-primary);color:#fff}.builder-component-files{padding-left:16px}.builder-nested-file{display:flex;align-items:center;justify-content:space-between;padding-left:8px!important}.builder-file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.builder-delete-btn{width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:14px;cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:all var(--transition)}.builder-nested-file:hover .builder-delete-btn{opacity:1}.builder-delete-btn:hover{background:#e74c3c;color:#fff}.builder-editor-header{padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-tertiary);display:flex;justify-content:space-between;align-items:center}.builder-editor-path{font-size:12px;color:var(--text-muted);font-family:monospace}.builder-save-status{font-size:11px;color:var(--text-muted);padding:2px 8px;border-radius:var(--radius-sm);background:var(--bg-secondary)}.builder-image-preview{display:flex;align-items:center;justify-content:center;height:100%;padding:20px;background:var(--bg-tertiary)}.builder-image-preview img{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-md)}.builder-delete-ds-btn{background:transparent;color:var(--text-muted)}.builder-delete-ds-btn:hover{background:#e74c3c;border-color:#e74c3c;color:#fff}.builder-delete-component-btn{width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:14px;cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:all var(--transition)}.builder-folder-header:hover .builder-delete-component-btn{opacity:1}.builder-delete-component-btn:hover{background:#e74c3c;color:#fff}.builder-section-header{display:flex;align-items:center;gap:4px}.builder-section-header .builder-upload-btn,.builder-section-header .builder-add-btn{opacity:0;width:18px;height:18px}.builder-section-header:hover .builder-upload-btn,.builder-section-header:hover .builder-add-btn{opacity:1}.builder-add-btn{width:18px;height:18px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:14px;cursor:pointer;border-radius:var(--radius-sm);opacity:0;transition:all var(--transition)}.builder-folder-header:hover .builder-add-btn,.builder-folder-header:hover .builder-delete-btn{opacity:1}.builder-add-btn:hover{background:var(--accent-primary);color:#fff}.builder-dialog-path{font-family:monospace;font-size:12px;color:var(--text-muted);margin:0 0 8px;padding:4px 8px;background:var(--bg-tertiary);border-radius:var(--radius-sm)}.builder-sidebar.drop-target{background:#6366f10d}.builder-section.drop-target{background:#6366f114;border-radius:var(--radius-md)}.builder-folder-header.drop-target{background:#6366f126}.builder-tree-item{margin-bottom:2px}.builder-tree-children{padding-left:16px}.builder-preview-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color)}.builder-preview-actions{display:flex;align-items:center;gap:8px}.builder-preview-selector{padding:4px 8px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px;cursor:pointer}.builder-preview-selector:focus{outline:none;border-color:var(--accent-primary)}.builder-preview-btn{padding:4px 10px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px;cursor:pointer}.builder-preview-btn:disabled{opacity:.6;cursor:default}.builder-dialog p{color:var(--text-secondary);font-size:14px;margin:0 0 16px}.builder-upload-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.builder-upload-spinner{width:48px;height:48px;border:3px solid var(--bg-tertiary);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.builder-upload-status{color:var(--text-primary);font-size:14px;font-weight:500}
