@evalstudio/cli 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web-dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>EvalStudio</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-XxlYEs9R.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DD1NTjgB.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #6366f1;--color-primary-dark: #4f46e5;--color-danger: #ef4444;--color-danger-dark: #dc2626;--color-success: #22c55e;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-secondary: #64748b;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}.app{min-height:100vh}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.header h1{font-size:1.5rem;font-weight:600}.floating-status-bar{position:fixed;bottom:1rem;left:1rem;z-index:50;display:flex;align-items:center;gap:.5rem;font-size:.75rem;padding:.375rem .75rem;border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:0 2px 8px #0000001a;color:var(--color-text-secondary)}.floating-status-ok{border-color:#bbf7d0}.floating-status-error{border-color:#fecaca;color:#991b1b}.floating-status-bar .status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.floating-status-bar .status-online{background:#22c55e}.floating-status-bar .status-offline{background:#ef4444}.floating-status-bar .status-connecting{background:#f59e0b;animation:pulse 1.5s ease-in-out infinite}.floating-status-bar .status-separator{color:var(--color-border)}.main{max-width:960px;margin:0 auto;padding:2rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header h2{font-size:1.25rem;font-weight:600}.btn{padding:.5rem 1rem;border:none;border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-secondary{background:var(--color-border);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:#cbd5e1}.btn-success{background:#10b981;color:#fff}.btn-success:hover:not(:disabled){background:#059669}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-dark)}.btn-inline{width:auto;align-self:flex-start}.loading,.error,.empty-state{text-align:center;padding:3rem;color:var(--color-text-secondary)}.error{color:var(--color-danger)}.project-list{display:flex;flex-direction:column;gap:1rem}.project-card{display:flex;justify-content:space-between;align-items:flex-start;padding:1.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.project-info h3{font-size:1rem;font-weight:600;margin-bottom:.25rem}.project-info p{color:var(--color-text-secondary);font-size:.875rem;margin-bottom:.5rem}.project-date{font-size:.75rem;color:var(--color-text-secondary)}.project-actions{display:flex;gap:.5rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--color-surface);border-radius:var(--radius);padding:1.5rem;width:100%;max-width:480px;box-shadow:0 25px 50px -12px #00000040}.modal h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.375rem}.form-group input,.form-group textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-family:inherit}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11a}.form-error{background:#fee2e2;color:#991b1b;padding:.75rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:1rem}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.form-hint{display:block;font-size:.75rem;color:var(--color-text-secondary);margin-top:.25rem}.form-info{background:var(--color-bg);border-radius:var(--radius);padding:.75rem;font-size:.8125rem;color:var(--color-text-secondary);margin-top:1rem}.form-info p{margin:0}.project-card{cursor:pointer;transition:border-color .15s,box-shadow .15s}.project-card:hover{border-color:var(--color-primary)}.project-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11a}.personas-section{margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--color-border)}.persona-list{display:flex;flex-direction:column;gap:.5rem}.persona-row{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.persona-name{font-weight:600;font-size:.875rem;white-space:nowrap}.persona-description{flex:1;color:var(--color-text-secondary);font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persona-menu-container{position:relative;margin-left:auto}.persona-menu-btn{background:none;border:none;padding:.25rem .5rem;cursor:pointer;font-size:1rem;font-weight:700;color:var(--color-text-secondary);border-radius:var(--radius)}.persona-menu-btn:hover{background:var(--color-border)}.persona-menu-dropdown{position:absolute;top:100%;right:0;margin-top:.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #00000026;z-index:100;min-width:100px}.persona-menu-item{display:block;width:100%;padding:.5rem .75rem;text-align:left;background:none;border:none;cursor:pointer;font-size:.8125rem}.persona-menu-item:hover{background:var(--color-bg)}.persona-menu-item-danger{color:var(--color-danger)}.persona-menu-item-danger:hover{background:#fef2f2}.persona-row-clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.persona-row-clickable:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #6366f126}.persona-detail-content{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.persona-edit-form{display:flex;flex-direction:column;gap:1.5rem}.persona-edit-form .form-group{margin-bottom:0}.persona-edit-form textarea{min-height:100px;resize:vertical}.persona-runs-section{margin-top:2rem}.persona-runs-section h2{font-size:1.125rem;font-weight:600;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--color-border)}.btn-sm{padding:.25rem .625rem;font-size:.75rem}.project-layout{display:flex;min-height:100vh}.project-layout-loading,.project-layout-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;text-align:center;padding:2rem;color:var(--color-text-secondary)}.project-layout-error h2{color:var(--color-text);margin-bottom:.5rem}.project-layout-error p{margin-bottom:1.5rem}.project-content{flex:1;padding:2rem;overflow-y:auto}.sidebar{width:240px;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:1rem;border-bottom:1px solid var(--color-border)}.sidebar-back{font-size:.75rem;color:var(--color-text-secondary);text-decoration:none;display:block;margin-bottom:.5rem}.sidebar-back:hover{color:var(--color-primary)}.sidebar-project-name{font-size:1rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-nav{flex:1;padding:.75rem 0;overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:.625rem;padding:.625rem 1rem;color:var(--color-text-secondary);text-decoration:none;font-size:.875rem;transition:background .15s,color .15s}.sidebar-link:hover{background:var(--color-bg);color:var(--color-text)}.sidebar-link.active{background:#6366f11a;color:var(--color-primary);font-weight:500}.sidebar-link-nested{padding-left:2.5rem}.sidebar-icon{font-size:.75rem;width:1rem;text-align:center}.sidebar-divider{height:1px;background:var(--color-border);margin:.5rem 1rem}.sidebar-section-title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);padding:.75rem 1rem .375rem}.page{max-width:960px;display:flex;flex-direction:column;gap:1.5rem}.page-header{display:flex;justify-content:space-between;align-items:center}.page-header h1{font-size:1.5rem;font-weight:600}.page-header-actions{display:flex;align-items:center;gap:.5rem}.import-report{padding:.75rem 1rem;border-radius:var(--radius);font-size:.8125rem;margin-bottom:.5rem;border:1px solid var(--color-border);background:var(--color-surface)}.import-report-success{border-color:#22c55e4d}.import-report-warning{border-color:#eab30866}.import-report-header{display:flex;justify-content:space-between;align-items:center}.import-report-title{font-weight:600;font-size:.875rem}.import-report-dismiss{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);font-size:.875rem;padding:0 .25rem;line-height:1}.import-report-dismiss:hover{color:var(--color-text)}.import-report-stats{display:flex;gap:1rem;margin-top:.5rem}.import-report-stat{font-variant-numeric:tabular-nums}.import-report-stat-created{color:#16a34a}.import-report-stat-failed{color:var(--color-danger)}.import-report-stat-total{color:var(--color-text-secondary)}.import-report-results{margin-top:.5rem;list-style:none;display:flex;flex-direction:column;gap:.25rem}.import-report-results li{display:flex;align-items:baseline;gap:.5rem}.import-result-icon{flex-shrink:0;font-weight:700;font-size:.75rem;width:1rem;text-align:center}.import-result-ok .import-result-icon{color:#16a34a}.import-result-error .import-result-icon{color:var(--color-danger)}.import-result-name{font-weight:500}.import-result-error .import-result-name{color:var(--color-text-secondary)}.import-result-error-msg{color:var(--color-danger);font-size:.75rem}.menu-container{position:relative}.menu-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);cursor:pointer;color:var(--color-text-secondary);transition:background .15s,color .15s,border-color .15s}.menu-btn:hover{background:var(--color-bg);color:var(--color-text);border-color:var(--color-text-secondary)}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.menu-dropdown{position:absolute;top:100%;right:0;z-index:20;min-width:140px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #00000026;padding:.25rem;margin-top:.25rem}.menu-item{display:flex;align-items:center;gap:.375rem;width:100%;padding:.5rem .75rem;border:none;background:transparent;text-align:left;font-size:.875rem;cursor:pointer;border-radius:calc(var(--radius) / 2);transition:background .15s;color:var(--color-text);white-space:nowrap}.menu-item:hover{background:var(--color-bg)}.menu-item-icon{width:14px;height:14px;flex-shrink:0}.btn-icon{width:14px;height:14px;flex-shrink:0;vertical-align:-2px;margin-right:.25rem}.menu-item-danger{color:var(--color-danger)}.menu-item-danger:hover{background:#fee2e2}.menu-item:disabled{opacity:.5;cursor:not-allowed}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.dashboard-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.dashboard-card h3{font-size:.875rem;font-weight:600;margin-bottom:1rem;color:var(--color-text-secondary)}.text-muted{color:var(--color-text-secondary);font-size:.875rem}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;text-align:center}.stat-value{display:block;font-size:1.5rem;font-weight:600;color:var(--color-text)}.stat-value.stat-success{color:#16a34a}.stat-value.stat-failed{color:var(--color-danger)}.stat-label{font-size:.75rem;color:var(--color-text-secondary)}.stat-link{display:block;padding:.5rem;border-radius:var(--radius);text-decoration:none;transition:background-color .15s ease}.stat-link:hover{background:var(--color-border)}.stat-link:hover .stat-label{color:var(--color-primary)}.dashboard-card-wide{grid-column:span 3}.dashboard-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.dashboard-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.dashboard-card-header h3{margin:0}@media(max-width:768px){.dashboard-charts-row{grid-template-columns:1fr}}@media(max-width:640px){.dashboard-card-wide{grid-column:span 1}}.dashboard-list{display:flex;flex-direction:column;gap:.5rem}.dashboard-list-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--color-bg);border-radius:calc(var(--radius) / 2);text-decoration:none;color:var(--color-text);transition:background .15s}.dashboard-list-item:hover{background:var(--color-border)}.dashboard-list-name{flex:1;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-list-date{font-size:.75rem;color:var(--color-text-secondary);flex-shrink:0}.dashboard-list-version{font-size:.75rem;font-family:monospace;color:var(--color-primary);font-weight:500;flex-shrink:0}.info-list{font-size:.875rem}.info-list dt{font-weight:500;color:var(--color-text-secondary);margin-top:.75rem}.info-list dt:first-child{margin-top:0}.info-list dd{margin-left:0;color:var(--color-text)}.scenario-list{display:flex;flex-direction:column;gap:.5rem}.scenario-row{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.scenario-name{font-weight:600;font-size:.875rem;white-space:nowrap}.scenario-description{flex:1;color:var(--color-text-secondary);font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scenario-menu-container{position:relative;margin-left:auto}.scenario-menu-btn{background:none;border:none;padding:.25rem .5rem;cursor:pointer;font-size:1rem;font-weight:700;color:var(--color-text-secondary);border-radius:var(--radius)}.scenario-menu-btn:hover{background:var(--color-border)}.scenario-menu-dropdown{position:absolute;top:100%;right:0;margin-top:.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #00000026;z-index:100;min-width:100px}.scenario-menu-item{display:block;width:100%;padding:.5rem .75rem;text-align:left;background:none;border:none;cursor:pointer;font-size:.8125rem;color:var(--color-text)}.scenario-menu-item:hover{background:var(--color-border)}.scenario-menu-item-danger{color:var(--color-error)}.scenario-menu-item-danger:hover{background:#ef44441a}.scenario-row-clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.scenario-row-clickable:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #6366f126}.scenario-row-selected{border-color:var(--color-primary);background:#6366f10a}.scenario-row-checkbox{width:1rem;height:1rem;cursor:pointer;flex-shrink:0}.scenario-list-toolbar{display:flex;align-items:center;gap:1rem;padding:.5rem 0}.scenario-select-all{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.8125rem;color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.scenario-select-all input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}.scenario-toolbar-actions{display:flex;align-items:center;gap:.75rem;margin-left:auto}.scenario-selection-count{font-size:.8125rem;color:var(--color-text-secondary)}.btn-sm{padding:.25rem .75rem;font-size:.8125rem}.scenario-edit-form{display:flex;flex-direction:column;gap:1rem}.scenario-edit-form .form-group{margin-bottom:0}.scenario-edit-form textarea{min-height:100px;resize:vertical}.scenario-edit-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.scenario-edit-form .form-row.form-row-auto{grid-template-columns:1fr auto}.form-group-narrow{max-width:120px}@media(max-width:640px){.scenario-edit-form .form-row{grid-template-columns:1fr}.form-group-narrow{max-width:none}}.form-group select:disabled{opacity:.5;cursor:not-allowed}.criteria-recap{font-style:italic;margin-top:0}.scenario-messages-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.scenario-message{padding:.75rem 1rem;border-radius:var(--radius);background:var(--color-bg);border:1px solid var(--color-border)}.scenario-message-user{background:#eff6ff;border-color:#bfdbfe}.scenario-message-assistant{background:#f0fdf4;border-color:#bbf7d0}.scenario-message-system{background:#fefce8;border-color:#fde68a}.scenario-message-role{display:inline-block;font-size:.6875rem;font-weight:600;text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:.25rem}.scenario-message-content{font-size:.875rem;white-space:pre-wrap}.code-textarea{font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:.8125rem}.form-hint{font-size:.75rem;color:var(--color-text-secondary);margin-bottom:.5rem}.eval-list{display:flex;flex-direction:column;gap:.75rem}.eval-card{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.eval-card-clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.eval-card-clickable:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #6366f126}.eval-info h4{font-size:.9375rem;font-weight:600;margin-bottom:.25rem}.eval-info p{color:var(--color-text-secondary);font-size:.8125rem;margin-bottom:.375rem}.eval-meta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem;font-size:.75rem}.eval-mode{padding:0 .5rem;background:var(--color-border);border-radius:999px;color:var(--color-text-secondary)}.eval-persona,.eval-scenario{color:var(--color-text-secondary)}.eval-field{font-size:.8125rem;color:var(--color-text-secondary);margin-top:.375rem}.eval-row{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.eval-row-clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.eval-row-clickable:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #6366f126}.eval-name{font-weight:600;font-size:.875rem;white-space:nowrap}.eval-row .eval-meta{flex:1;color:var(--color-text-secondary);font-size:.8125rem;margin:0}.eval-field strong{color:var(--color-text)}.eval-actions{display:flex;gap:.375rem;flex-shrink:0}.modal-large{max-width:600px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-group select{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-family:inherit;background:var(--color-surface)}.form-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11a}.form-group-small{max-width:200px}.llm-provider-list{display:flex;flex-direction:column;gap:.5rem}.llm-provider-row{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.llm-provider-name{font-weight:500;font-size:.9375rem;flex-shrink:0}.llm-provider-type{font-size:.75rem;padding:.125rem .5rem;background:var(--color-primary);color:#fff;border-radius:999px;text-transform:capitalize;flex-shrink:0}.llm-provider-key{font-size:.8125rem;color:var(--color-text-secondary);font-family:monospace;flex:1;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.llm-provider-menu-container{position:relative;margin-left:auto;flex-shrink:0}.llm-provider-menu-btn{background:none;border:none;padding:.25rem .5rem;cursor:pointer;font-size:1rem;color:var(--color-text-secondary);border-radius:var(--radius)}.llm-provider-menu-btn:hover{background:var(--color-border)}.llm-provider-menu-dropdown{position:absolute;top:100%;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:10;min-width:100px}.llm-provider-menu-item{display:block;width:100%;padding:.5rem .75rem;border:none;background:none;text-align:left;cursor:pointer;font-size:.875rem;color:var(--color-text)}.llm-provider-menu-item:hover{background:var(--color-border)}.llm-provider-menu-item-danger{color:var(--color-error)}.llm-provider-menu-item-danger:hover{background:#ef44441a}.connector-list{display:flex;flex-direction:column;gap:.75rem}.connector-card{padding:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.connector-card-inner{display:flex}.connector-card .connector-info,.connector-card .connector-actions{display:flex;justify-content:space-between;align-items:flex-start}.connector-info{flex-direction:column;flex:1}.connector-info h4{font-size:.9375rem;font-weight:600;margin-bottom:.25rem}.connector-meta{margin-bottom:.375rem}.connector-type{font-size:.75rem;padding:.125rem .5rem;background:var(--color-primary);color:#fff;border-radius:999px}.connector-details{display:flex;flex-direction:column;gap:.25rem;margin-top:.5rem}.connector-url,.connector-auth,.connector-config{font-size:.75rem;color:var(--color-text-secondary);font-family:monospace}.connector-actions{padding-left:.75rem;border-left:1px solid var(--color-border)}.connector-test-result{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.75rem;margin-top:.75rem;border-radius:calc(var(--radius) / 2);font-size:.8125rem}.connector-test-result.test-success{background:#dcfce7;color:#166534}.connector-test-result.test-error{background:#fee2e2;color:#991b1b}.test-status{font-weight:500}.test-latency{font-family:monospace;opacity:.8}.test-response,.test-error-msg{width:100%;font-family:monospace;font-size:.75rem;word-break:break-all}.eval-title-link{color:var(--color-text);text-decoration:none;transition:color .15s}.eval-title-link:hover{color:var(--color-primary)}.page-header-nav{display:flex;flex-direction:column;gap:.5rem}.back-link{font-size:.875rem;color:var(--color-text-secondary);text-decoration:none}.back-link:hover{color:var(--color-primary)}.eval-detail-settings{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.eval-two-column{display:grid;grid-template-columns:1.5fr 1fr;gap:2rem}.eval-primary-fields{display:flex;flex-direction:column;gap:1rem}.eval-secondary-fields{display:flex;flex-direction:column;gap:1rem;padding-left:1.5rem;border-left:1px solid var(--color-border)}.eval-secondary-fields label{color:var(--color-text-secondary)}@media(max-width:768px){.eval-two-column{grid-template-columns:1fr}.eval-secondary-fields{padding-left:0;border-left:none;padding-top:1rem;border-top:1px solid var(--color-border)}}.eval-detail-settings h2{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--color-text-secondary)}.eval-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.eval-detail-field{display:flex;flex-direction:column;gap:.25rem}.eval-detail-field-full{grid-column:1 / -1}.eval-detail-field label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.eval-detail-value{font-size:.875rem}.eval-detail-value strong{font-weight:600}.eval-detail-value p{color:var(--color-text-secondary);font-size:.8125rem;margin-top:.25rem}.eval-detail-criteria{padding:.5rem .75rem;border-radius:calc(var(--radius) / 2);font-size:.8125rem}.eval-detail-criteria.success{background:#dcfce7;color:#166534}.eval-detail-criteria.failure{background:#fee2e2;color:#991b1b}.eval-tabs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;border-bottom:1px solid var(--color-border);padding-bottom:.75rem}.eval-tabs-nav{display:flex;gap:.5rem}.eval-tab{padding:.5rem 1rem;background:transparent;border:none;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-.8125rem;transition:color .15s,border-color .15s}.eval-tab:hover{color:var(--color-text)}.eval-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.scenario-tabs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;border-bottom:1px solid var(--color-border);padding-bottom:.75rem}.scenario-tabs-nav{display:flex;gap:.5rem}.scenario-tab{padding:.5rem 1rem;background:transparent;border:none;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-.8125rem;transition:color .15s,border-color .15s}.scenario-tab:hover{color:var(--color-text)}.scenario-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.persona-tabs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;border-bottom:1px solid var(--color-border);padding-bottom:.75rem}.persona-tabs-nav{display:flex;gap:.5rem}.persona-tab{padding:.5rem 1rem;background:transparent;border:none;font-size:.875rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-.8125rem;transition:color .15s,border-color .15s}.persona-tab:hover{color:var(--color-text)}.persona-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.code-snippets{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.code-snippets-tabs{display:flex;border-bottom:1px solid var(--color-border);background:var(--color-background)}.code-snippets-tab{padding:.75rem 1.25rem;background:transparent;border:none;font-size:.8125rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,background-color .15s}.code-snippets-tab:hover{color:var(--color-text);background:var(--color-surface)}.code-snippets-tab.active{color:var(--color-text);background:var(--color-surface);border-bottom-color:var(--color-primary)}.code-snippets-content{padding:0}.code-snippet-container{display:flex;flex-direction:column}.code-snippet-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--color-background);border-bottom:1px solid var(--color-border)}.code-snippet-label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary)}.code-snippet-copy{padding:.25rem .75rem;font-size:.75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) / 2);color:var(--color-text-secondary);cursor:pointer;transition:background-color .15s,color .15s}.code-snippet-copy:hover{background:var(--color-background);color:var(--color-text)}.code-snippet{margin:0;padding:1rem;background:#1e1e1e;color:#d4d4d4;font-family:SF Mono,Monaco,Inconsolata,Fira Mono,Droid Sans Mono,Source Code Pro,monospace;font-size:.8125rem;line-height:1.5;overflow-x:auto;white-space:pre}.code-snippet code{font-family:inherit}.run-list{display:flex;flex-direction:column;gap:.5rem}.run-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.run-item-clickable{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.run-item-clickable:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #00000014}.run-row{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem}.run-version{font-size:.8125rem;font-family:monospace;color:var(--color-primary);font-weight:500;min-width:100px;flex-shrink:0}.run-version-empty{color:var(--color-text-secondary);font-family:inherit}.run-execution{font-size:.8125rem;font-family:monospace;color:var(--color-text-secondary);width:40px;flex-shrink:0}.run-context{font-size:.8125rem;font-weight:500;color:var(--color-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-persona{font-size:.8125rem;color:var(--color-text-secondary);margin-left:.25rem}.run-version{font-size:.75rem;color:var(--color-text-secondary);min-width:80px;max-width:100px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-status{font-size:.75rem;font-weight:500;padding:.25rem .625rem;border-radius:999px;flex-shrink:0;width:70px;text-align:center}.run-status.status-queued{background:#fef3c7;color:#92400e;animation:pulse-queued 2s ease-in-out infinite}.run-status.status-pending{background:var(--color-border);color:var(--color-text-secondary)}.run-status.status-running{background:linear-gradient(90deg,#dbeafe,#bfdbfe,#dbeafe);background-size:200% 100%;color:#1d4ed8;animation:shimmer-running 1.5s ease-in-out infinite}@keyframes pulse-queued{0%,to{opacity:1}50%{opacity:.6}}@keyframes shimmer-running{0%{background-position:200% 0}to{background-position:-200% 0}}.run-status.status-completed{background:var(--color-border);color:var(--color-text-secondary)}.run-status.status-success{background:#dcfce7;color:#166534}.run-status.status-failed{background:#fee2e2;color:#991b1b}.run-status.status-error{background:#fef3c7;color:#92400e}.run-started{font-size:.8125rem;color:var(--color-text-secondary);flex-shrink:0;width:120px;text-align:right}.run-duration{font-size:.8125rem;font-family:monospace;color:var(--color-text-secondary);flex-shrink:0;width:70px}.run-messages-btn{flex-shrink:0}.run-messages-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.run-messages-btn:disabled{opacity:.5;cursor:not-allowed}.run-messages-panel{border-top:1px solid var(--color-border);padding:1rem;background:var(--color-bg);display:flex;flex-direction:column;gap:.75rem;max-height:400px;overflow-y:auto}.run-message{padding:.75rem;border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border)}.run-message-role{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:.25rem}.run-message-user .run-message-role{color:#2563eb}.run-message-assistant .run-message-role{color:#059669}.run-message-system .run-message-role{color:#7c3aed}.run-message-content{font-size:.875rem;white-space:pre-wrap;word-break:break-word}.run-result-panel{padding:.75rem;border-radius:var(--radius);font-size:.875rem}.run-result-panel.success{background:#dcfce7;color:#166534}.run-result-panel.failed{background:#fee2e2;color:#991b1b}.run-result-panel p{margin:.5rem 0 0}.run-result-header{display:flex;justify-content:space-between;align-items:center}.run-result-score{font-size:.8em;font-weight:400;opacity:.8}.run-evaluation-details{margin-top:1rem;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius)}.run-evaluation-header{font-weight:600;font-size:.875rem;margin-bottom:.75rem;color:var(--color-text-secondary)}.run-evaluation-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.run-evaluation-item{display:flex;flex-direction:column;gap:.125rem}.run-evaluation-item.full-width{grid-column:1 / -1}.run-evaluation-label{font-size:.75rem;color:var(--color-text-secondary)}.run-evaluation-value{font-size:.875rem;font-weight:500}.run-evaluation-value.met{color:#16a34a}.run-evaluation-value.not-met{color:var(--color-text-secondary)}.run-evaluation-value.triggered{color:#dc2626}.run-evaluation-value.not-triggered{color:#16a34a}.run-evaluation-warning{font-size:.8rem;color:#ca8a04;font-style:italic}.run-error-panel{padding:.75rem;border-radius:var(--radius);background:#fee2e2;color:#991b1b;font-size:.875rem}.run-menu-container{position:relative;flex-shrink:0;margin-left:auto}.run-menu-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:var(--radius);cursor:pointer;color:var(--color-text-secondary);transition:background .15s,color .15s}.run-menu-btn:hover{background:var(--color-bg);color:var(--color-text)}.dots-icon{font-weight:700;letter-spacing:1px;line-height:1}.run-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.run-menu-dropdown{position:absolute;top:100%;right:0;z-index:20;min-width:120px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #00000026;padding:.25rem;margin-top:.25rem}.run-menu-item{display:block;width:100%;padding:.5rem .75rem;border:none;background:transparent;text-align:left;font-size:.8125rem;cursor:pointer;border-radius:calc(var(--radius) / 2);transition:background .15s}.run-menu-item:hover{background:var(--color-bg)}.run-menu-item-danger{color:var(--color-danger)}.run-menu-item-danger:hover{background:#fee2e2}.run-menu-item:disabled{opacity:.5;cursor:not-allowed}.run-preview-modal{max-width:700px;max-height:85vh;display:flex;flex-direction:column}.run-preview-content{overflow-y:auto;flex:1;margin-bottom:1rem}.run-preview-section{margin-bottom:1.25rem}.run-preview-section:last-child{margin-bottom:0}.run-preview-section>label{display:block;font-size:.75rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.run-preview-muted{font-weight:400;text-transform:none;letter-spacing:normal}.run-preview-box{background:var(--color-bg);border-radius:var(--radius);padding:.75rem 1rem;font-size:.875rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.run-preview-system{border-left:3px solid var(--color-primary)}.run-preview-scenario{border-left:3px solid #f59e0b}.run-preview-system-section{background:#fffbeb;border-left:3px solid #f59e0b;border-radius:var(--radius);margin-bottom:1rem;overflow:hidden}.run-preview-system-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.run-preview-system-header:hover{background:#f59e0b1a}.run-preview-system-header .run-preview-role{color:#b45309;margin-bottom:0}.run-preview-expand-btn{background:none;border:none;color:#b45309;font-size:.75rem;font-weight:500;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius)}.run-preview-expand-btn:hover{background:#f59e0b26}.run-preview-system-content{max-height:100px;overflow:hidden;padding:0 .75rem .5rem;position:relative;font-size:.875rem}.run-preview-system-content:after{content:"";position:absolute;bottom:0;left:0;right:0;height:40px;background:linear-gradient(transparent,#fffbeb);pointer-events:none}.run-preview-system-content.expanded{max-height:none;overflow:visible}.run-preview-system-content.expanded:after{display:none}.run-preview-messages{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.run-preview-message{padding:.5rem .75rem;border-radius:var(--radius);font-size:.875rem;max-width:85%;width:fit-content}.run-preview-role{display:block;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-bottom:.25rem}.run-preview-content-text{white-space:pre-wrap;word-break:break-word;line-height:1.4}.run-preview-message-user{background:#eff6ff;border-radius:var(--radius);margin-left:auto;border-right:3px solid #3b82f6}.run-preview-message-user .run-preview-role{color:#1d4ed8;text-align:right}.run-preview-message-assistant{background:#faf5ff;border-left:3px solid #a855f7;margin-right:auto}.run-preview-tool-call .run-preview-role,.run-preview-message-assistant .run-preview-role{color:#7c3aed}.run-preview-message-system{background:#fffbeb;border-left:3px solid #f59e0b;margin-right:auto}.run-preview-message-system .run-preview-role{color:#b45309}.run-preview-json{background:#1e293b;color:#e2e8f0;padding:.75rem 1rem;border-radius:var(--radius);font-family:ui-monospace,SF Mono,Monaco,monospace;font-size:.8125rem;line-height:1.4;overflow-x:auto;white-space:pre}.run-preview-empty{color:var(--color-text-secondary);font-style:italic;font-size:.875rem;padding:.5rem 0}.run-preview-result{padding:.75rem 1rem;border-radius:var(--radius);font-size:.875rem}.run-preview-result.success{background:#f0fdf4;border-left:3px solid var(--color-success);color:#166534}.run-preview-result.failed{background:#fef2f2;border-left:3px solid var(--color-danger);color:#991b1b}.run-preview-score{margin-left:.75rem;color:var(--color-text-secondary)}.run-preview-reason{margin-top:.5rem;line-height:1.4}.run-preview-error{background:#fef2f2;border-left:3px solid var(--color-danger);padding:.75rem 1rem;border-radius:var(--radius);color:#991b1b;font-size:.875rem;white-space:pre-wrap;word-break:break-word}.run-preview-simulated{border-style:dashed!important;background:#f0fdf4!important;border-color:#22c55e!important}.run-preview-simulated .run-preview-role{color:#15803d!important}.run-preview-latency{display:block;font-size:.6875rem;color:var(--color-text-secondary);margin-top:.25rem;font-family:ui-monospace,SF Mono,Monaco,monospace}.run-preview-loading{color:var(--color-text-secondary);font-style:italic}.run-preview-simulation-error{background:#fef2f2;border:1px dashed var(--color-danger);padding:.5rem .75rem;border-radius:var(--radius);color:#991b1b;font-size:.8125rem;margin-top:.5rem}.run-preview-raw-response{margin-top:.5rem;padding:.5rem;background:#fee2e2;border-radius:var(--radius-sm);font-size:.75rem;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.run-preview-persist-checkbox{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-text-secondary);margin-right:auto;cursor:pointer}.run-preview-persist-checkbox input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}.run-preview-tool-calls{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem;width:85%;margin-right:auto}.run-preview-message .run-preview-tool-calls{max-width:none;margin-right:0;margin-top:.5rem}.run-preview-tool-call{background:#faf5ff;border-left:3px solid #a855f7;border-radius:var(--radius);overflow:hidden}.run-preview-tool-call-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.run-preview-tool-call-header:hover{background:#7c3aed0d}.run-preview-tool-call.expanded .run-preview-tool-call-header{border-bottom:1px solid rgba(124,58,237,.2)}.run-preview-tool-call-title{display:flex;align-items:center;gap:.5rem}.run-preview-tool-call-header .run-preview-expand-btn{color:#7c3aed;border-color:#7c3aed4d}.run-preview-tool-call-header .run-preview-expand-btn:hover{background:#7c3aed1a}.run-preview-tool-name{text-transform:initial;font-family:var(--font-mono)}.run-preview-tool-call-body{display:flex;flex-direction:column}.run-preview-tool-section{padding:.5rem .75rem}.run-preview-tool-section-result{background:#10b9810d;border-top:1px dashed var(--border-color)}.run-preview-tool-section-label{display:block;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#7c3aed;margin-bottom:.375rem}.run-preview-tool-section-result .run-preview-tool-section-label{color:#10b981}.run-preview-tool-args-list{display:flex;flex-direction:column;gap:.25rem;background:var(--bg-primary);border:1px solid rgba(124,58,237,.2);border-radius:.25rem;padding:.5rem}.run-preview-tool-arg{display:flex;gap:.5rem;font-size:.75rem;line-height:1.4}.run-preview-tool-arg-key{font-family:var(--font-mono);font-weight:600;color:#7c3aed;flex-shrink:0}.run-preview-tool-arg-key:after{content:":"}.run-preview-tool-arg-value{font-family:var(--font-mono);color:var(--text-primary);word-break:break-word;white-space:pre-wrap}.run-preview-tool-result-content{font-family:var(--font-mono);font-size:.75rem;background:var(--bg-primary);border:1px solid rgba(16,185,129,.2);border-radius:.25rem;padding:.5rem;margin:0;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.persona-checkbox-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.checkbox-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,background .15s}.checkbox-item:hover{border-color:var(--color-primary);background:#6366f10d}.checkbox-item input[type=checkbox]{margin-top:.125rem;width:1rem;height:1rem;cursor:pointer;flex-shrink:0}.checkbox-label{display:flex;flex-direction:column;gap:.25rem;min-width:0}.checkbox-name{font-weight:500;font-size:.875rem;color:var(--color-text)}.checkbox-description{font-size:.8125rem;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editable-title{padding:.125rem .375rem;margin:-.125rem -.375rem;border-radius:var(--radius);transition:background .15s;cursor:text}.editable-title:hover{background:var(--color-bg)}.editable-title-input{font-size:1.5rem;font-weight:600;padding:.125rem .375rem;margin:-.125rem -.375rem;border:2px solid var(--color-primary);border-radius:var(--radius);outline:none;background:var(--color-surface);min-width:100px}.playground-actions{flex-direction:row;gap:.75rem}.playground-run-row{display:flex;gap:.5rem;width:100%}.playground-connector-select,.playground-llm-select,.playground-persona-select{padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font-size:.875rem}.playground-llm-select,.playground-persona-select{max-width:150px}.run-status-indicator{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:var(--color-surface);border-radius:var(--radius);font-size:.875rem;color:var(--color-text-secondary)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--color-text-secondary)}.status-dot.running{background:#3b82f6;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.run-result{padding:.75rem;border-radius:var(--radius);font-size:.875rem}.run-result.success{background:#dcfce7;color:#166534}.run-result.failed{background:#fee2e2;color:#991b1b}.run-result p{margin:.5rem 0 0}.run-result .score{display:block;margin-top:.25rem;font-size:.8em;opacity:.8}.play-icon{font-size:.75rem;margin-right:.25rem}.performance-chart{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1rem .5rem;box-shadow:var(--shadow)}.performance-chart-empty{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;text-align:center;color:var(--color-text-secondary);font-size:.875rem}.performance-chart-single{display:flex;gap:2rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem 1.5rem;box-shadow:var(--shadow)}.performance-stat{display:flex;flex-direction:column;gap:.25rem}.performance-stat-value{font-size:1.5rem;font-weight:600;color:var(--color-text)}.performance-stat-label{font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.performance-chart-toggle{display:flex;gap:.25rem;margin-bottom:.75rem}.performance-chart-toggle-btn{padding:.375rem .75rem;font-size:.75rem;font-weight:500;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-secondary);cursor:pointer;transition:all .15s}.performance-chart-toggle-btn:hover{background:var(--color-border);color:var(--color-text)}.performance-chart-toggle-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.dashboard-performance-chart{width:100%}.dashboard-performance-chart h3{margin:0 0 1rem;font-size:.875rem;font-weight:600;color:var(--color-text)}.dashboard-performance-chart .performance-chart,.dashboard-performance-chart .performance-chart-empty,.dashboard-performance-chart .performance-chart-single{margin-bottom:0}.llm-config-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-top:2rem;box-shadow:var(--shadow)}.llm-config-section>h2{font-size:1rem;font-weight:600;margin:0 0 .5rem;color:var(--color-text)}.llm-config-section>p{font-size:.875rem;color:var(--color-text-secondary);margin:0 0 1.5rem}.llm-config-section .settings-subsection{margin-bottom:1.5rem}.llm-config-section .settings-subsection:last-of-type{margin-bottom:1rem}.llm-config-section .settings-subsection h3{font-size:.875rem;font-weight:500;margin:0 0 .25rem;color:var(--color-text)}.llm-config-section .settings-subsection>p{font-size:.8125rem;color:var(--color-text-secondary);margin:0 0 .75rem}.llm-config-section .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:640px){.llm-config-section .form-row{grid-template-columns:1fr}}.llm-config-section .form-actions{display:flex;align-items:center;gap:1rem;padding-top:.5rem}.save-success{font-size:.875rem;color:#059669}.save-error{font-size:.875rem;color:#dc2626}
|