agent-nuvira 1.78.0 → 1.78.2
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/dist/gateway/contacts.d.ts +2 -2
- package/dist/gateway/contacts.d.ts.map +1 -1
- package/dist/gateway/contacts.js +7 -2
- package/dist/gateway/contacts.js.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/{index-Dy2JGPXg.css → index-D2BU1Q01.css} +1 -1
- package/src/web-dashboard/public/assets/{index-D7wybkPX.js → index-D7jbaDHR.js} +77 -77
- package/src/web-dashboard/public/assets/index-D7jbaDHR.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/src/web-dashboard/public/assets/index-D7wybkPX.js.map +0 -1
|
@@ -65,8 +65,8 @@ export declare function sameContactName(a: string, b: string): boolean;
|
|
|
65
65
|
*/
|
|
66
66
|
export declare function validateContactId(platform: Platform, id: string): string | null;
|
|
67
67
|
/** Normalize a phone number to digits-only for flexible comparison.
|
|
68
|
-
* Handles: +918800604222, 918800604222, 08800604222, 8800604222
|
|
69
|
-
* Strips
|
|
68
|
+
* Handles: +918800604222, 918800604222, 08800604222, 8800604222, 8800604222
|
|
69
|
+
* Strips non-digit characters, leading 0, and country codes until 10 digits. */
|
|
70
70
|
export declare function normalizePhone(phone: string): string;
|
|
71
71
|
/** True when two phone numbers refer to the same person (digits-only comparison). */
|
|
72
72
|
export declare function samePhone(a: string, b: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/gateway/contacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,QAAQ,EAAE,QAAQ,CAAC;IACnB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,EAAE,aAAa,CAAC;IACtB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhE,mFAAmF;AACnF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAuBtD;AAMD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAQrE;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/E;AAED;;
|
|
1
|
+
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/gateway/contacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,QAAQ,EAAE,QAAQ,CAAC;IACnB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,EAAE,aAAa,CAAC;IACtB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhE,mFAAmF;AACnF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAuBtD;AAMD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAQrE;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/E;AAED;;gFAEgF;AAChF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUpD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAoB7C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CASlF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7G;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EAAE,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,SAAS,CAgB5B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAWT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASjE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAWtE"}
|
package/dist/gateway/contacts.js
CHANGED
|
@@ -111,13 +111,18 @@ export function validateContactId(platform, id) {
|
|
|
111
111
|
return null;
|
|
112
112
|
}
|
|
113
113
|
/** Normalize a phone number to digits-only for flexible comparison.
|
|
114
|
-
* Handles: +918800604222, 918800604222, 08800604222, 8800604222
|
|
115
|
-
* Strips
|
|
114
|
+
* Handles: +918800604222, 918800604222, 08800604222, 8800604222, 8800604222
|
|
115
|
+
* Strips non-digit characters, leading 0, and country codes until 10 digits. */
|
|
116
116
|
export function normalizePhone(phone) {
|
|
117
117
|
let digits = (phone || '').replace(/\D+/g, '');
|
|
118
118
|
// Strip leading 0 (local format: 08800604222 → 8800604222)
|
|
119
119
|
if (digits.startsWith('0') && digits.length > 10)
|
|
120
120
|
digits = digits.slice(1);
|
|
121
|
+
// Strip country codes until we reach a 10-digit local number
|
|
122
|
+
// (e.g. 918800604222 → 8800604222, 15551234567 stays as-is)
|
|
123
|
+
while (digits.length > 10 && !digits.startsWith('0')) {
|
|
124
|
+
digits = digits.slice(1);
|
|
125
|
+
}
|
|
121
126
|
return digits;
|
|
122
127
|
}
|
|
123
128
|
/** True when two phone numbers refer to the same person (digits-only comparison). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/gateway/contacts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/gateway/contacts.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-nuvira",
|
|
3
|
-
"version": "1.78.
|
|
3
|
+
"version": "1.78.2",
|
|
4
4
|
"description": "Agent-Nuvira: Multi-agent AI coding CLI — plan, write, review, test, and publish code with local models (Ollama) or cloud APIs (Groq, NVIDIA NIM, Google Gemini, OpenRouter)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #1c2333;--bg-card: #1a1f2e;--bg-hover: #1c2538;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-blue: #58a6ff;--accent-green: #3fb950;--accent-yellow: #d29922;--accent-red: #f85149;--accent-purple: #bc8cff;--accent-cyan: #39d2c0;--border: #30363d;--border-light: #21262d;--shadow: rgba(0, 0, 0, .3);--nav-width: 220px;--transition: all .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;font-size:14px;min-height:100vh}#root{min-height:100vh}.layout{display:flex;min-height:100vh}.nav{width:var(--nav-width);background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:100}.nav-header{display:flex;align-items:center;gap:10px;padding:20px 16px;border-bottom:1px solid var(--border)}.nav-logo{font-size:24px}.nav-title{font-size:15px;font-weight:600;color:var(--text-primary)}.nav-links{flex:1;padding:8px 0}.nav-link{display:block;padding:10px 16px;color:var(--text-secondary);text-decoration:none;font-size:13px;transition:var(--transition);border-left:3px solid transparent}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-link.active{color:var(--accent-blue);background:#58a6ff14;border-left-color:var(--accent-blue);font-weight:500}.nav-footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.connected{background:var(--accent-green);box-shadow:0 0 6px #3fb95066}.status-dot.reconnecting{background:var(--accent-yellow);animation:pulse 1s infinite}.status-text{font-size:11px;color:var(--text-secondary);flex:1}.last-updated{font-size:10px;color:var(--text-muted)}.main{margin-left:var(--nav-width);flex:1;padding:32px 40px;max-width:1200px}.section-title{font-size:22px;font-weight:600;margin-bottom:24px;color:var(--text-primary)}.section-subtitle{font-size:15px;font-weight:500;color:var(--text-secondary);margin:28px 0 14px}.section-description{color:var(--text-secondary);font-size:13px;margin-bottom:24px;line-height:1.6}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:10px}.stats-grid.mini{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:18px 16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.stat-card:hover{border-color:var(--accent-blue);box-shadow:0 4px 12px var(--shadow)}.stat-icon{font-size:24px}.stat-body{min-width:0}.stat-value{font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-label{font-size:11px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:10px}.cost-summary{display:flex;gap:24px;margin-bottom:20px}.cost-summary-sub{margin-bottom:20px}.cost-summary-sub .cost-total{padding:10px 16px;background:transparent;border-style:dashed}.cost-summary-sub .cost-amount{font-size:20px}.cost-total{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px 24px;text-align:center;flex:1}.cost-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.cost-amount{font-size:28px;font-weight:700;color:var(--accent-green);display:block;margin-top:4px}.cost-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.cost-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.cost-row:last-child{border-bottom:none}.cost-row:hover{background:var(--bg-hover)}.cost-row-name{flex:1;font-size:13px;font-weight:500}.cost-row-bar{width:200px;height:6px;background:var(--bg-tertiary);border-radius:3px;margin:0 16px;overflow:hidden}.cost-row-fill{height:100%;background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan));border-radius:3px;transition:width .5s ease}.cost-row-value{font-size:13px;font-weight:600;color:var(--accent-green);min-width:70px;text-align:right}.request-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.request-row{display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.request-row:last-child{border-bottom:none}.request-row:hover{background:var(--bg-hover)}.request-time{color:var(--text-muted);min-width:70px}.request-provider{min-width:80px;font-weight:500}.request-model{flex:1;color:var(--text-secondary)}.request-cost{min-width:60px;text-align:right;color:var(--accent-green);font-weight:500}.request-tokens{min-width:60px;text-align:right;color:var(--text-secondary)}.history-stats{margin-bottom:14px;font-size:13px;color:var(--text-secondary)}.history-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.history-item{padding:12px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.history-item:last-child{border-bottom:none}.history-item:hover{background:var(--bg-hover)}.history-summary{font-size:13px;color:var(--text-primary);margin-bottom:4px;line-height:1.5}.history-meta{font-size:11px;color:var(--text-secondary);display:flex;gap:12px;flex-wrap:wrap;align-items:center}.history-meta span{display:inline-flex;align-items:center;gap:4px}.history-tag{background:#58a6ff26;color:var(--accent-blue);padding:1px 6px;border-radius:3px;font-size:10px;margin-left:2px}.benchmark-latest{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.benchmark-header{margin-bottom:8px;font-size:13px;color:var(--text-primary)}.benchmark-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:12px}.benchmark-stat{text-align:center;padding:12px;background:var(--bg-tertiary);border-radius:8px}.benchmark-stat-value{font-size:18px;font-weight:700}.benchmark-stat-label{font-size:10px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.benchmark-stat.pass .benchmark-stat-value{color:var(--accent-green)}.benchmark-stat.fail .benchmark-stat-value{color:var(--accent-red)}.benchmark-stat.quality .benchmark-stat-value{color:var(--accent-purple)}.benchmark-stat.latency .benchmark-stat-value{color:var(--accent-yellow)}.benchmark-stat.deps .benchmark-stat-value{color:var(--accent-blue)}.benchmark-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.benchmark-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.benchmark-item:last-child{border-bottom:none}.benchmark-item:hover{background:var(--bg-hover)}.benchmark-date{min-width:100px;color:var(--text-muted)}.benchmark-model{flex:1;font-weight:500}.benchmark-score{min-width:50px;text-align:right}.benchmark-score.high{color:var(--accent-green)}.benchmark-score.medium{color:var(--accent-yellow)}.benchmark-score.low{color:var(--accent-red)}.dag-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:24px;margin-bottom:16px;overflow-x:auto}.dag-container svg{display:block;margin:0 auto}.dag-legend{display:flex;flex-wrap:wrap;gap:12px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-icon{font-size:12px}.legend-label{font-size:11px}.memory-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.memory-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px;transition:var(--transition)}.memory-item:last-child{border-bottom:none}.memory-item:hover{background:var(--bg-hover)}.memory-project{flex:1;font-weight:500}.memory-count{min-width:50px;text-align:right;color:var(--text-secondary)}.health-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px}.health-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.health-card:hover{border-color:var(--accent-blue)}.health-icon{font-size:22px}.health-body{min-width:0}.health-title{font-size:12px;color:var(--text-secondary);margin-bottom:2px}.health-path{font-size:11px;color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace}.health-value{font-size:16px;font-weight:600;color:var(--text-primary)}.server-info{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.info-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px}.info-row:last-child{border-bottom:none}.info-label{min-width:140px;color:var(--text-secondary)}.info-value{color:var(--text-primary);font-weight:500}.loading-state{text-align:center;padding:80px 20px;color:var(--text-muted)}.loading-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{padding:32px;text-align:center;color:var(--text-muted);font-size:13px}.empty-state code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:14px;transition:var(--transition)}.dag-status-bar.active{border-color:var(--accent-blue);box-shadow:0 0 12px #58a6ff1a}.dag-pipeline-name{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text-primary)}.dag-live-dot{width:10px;height:10px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 8px #3fb95099;animation:pulse 1.5s infinite}.dag-live-badge{background:#3fb95026;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px;animation:pulse 2s infinite}.dag-pipeline-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dag-step-count{font-size:11px;color:var(--text-secondary)}.dag-running-badge{background:#58a6ff26;color:var(--accent-blue);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-completed-badge{background:#3fb9501f;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-pending-badge{background:#6e768126;color:var(--text-secondary);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-failed-badge{background:#f8514926;color:var(--accent-red);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-empty{text-align:center;padding:60px 20px;background:var(--bg-card);border:1px dashed var(--border);border-radius:12px}.dag-empty-icon{font-size:48px;margin-bottom:16px}.dag-empty h3{font-size:18px;color:var(--text-primary);margin-bottom:8px}.dag-empty p{color:var(--text-secondary);font-size:13px;max-width:400px;margin:0 auto}.dag-empty-hint{margin-top:12px!important;font-size:12px!important;color:var(--text-muted)!important}.dag-empty-hint code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-node-group{transition:opacity .3s ease}.dag-node-group:hover rect:first-of-type{filter:brightness(1.2)}.dag-node-running{animation:dag-node-pulse 2s ease-in-out infinite}.dag-edge{transition:stroke .5s ease,stroke-width .5s ease,stroke-opacity .5s ease}@keyframes dag-node-pulse{0%,to{stroke-opacity:.9}50%{stroke-opacity:.5}}.dag-node-summary{pointer-events:none;animation:fadeIn .2s ease-out}.dag-table-wrapper{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.dag-table{width:100%;border-collapse:collapse;font-size:12px}.dag-table th{background:var(--bg-tertiary);padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.dag-table td{padding:8px 14px;border-bottom:1px solid var(--border-light)}.dag-row:last-child td{border-bottom:none}.dag-row:hover td{background:var(--bg-hover)}.dag-cell-step{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;width:40px}.dag-cell-agent{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--text-primary)}.dag-agent-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.dag-cell-status{font-weight:500}.dag-status-pending{color:var(--text-muted)}.dag-status-running{color:var(--accent-blue)}.dag-status-completed{color:var(--accent-green)}.dag-status-failed{color:var(--accent-red)}.dag-cell-duration{color:var(--text-secondary);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-time{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-summary{color:var(--text-secondary);font-size:11px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stat-card,.health-card,.cost-row,.history-item,.benchmark-item,.dag-row,.dag-status-bar{animation:fadeIn .3s ease-out}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width: 768px){.nav{width:60px}.nav-title,.nav-link,.nav-footer{display:none}.nav-header{justify-content:center;padding:16px}.main{margin-left:60px;padding:20px}.stats-grid,.benchmark-stats{grid-template-columns:repeat(2,1fr)}.cost-summary{flex-direction:column;gap:12px}}.dag-timeline-section{margin-bottom:16px}.timeline-subtitle{font-weight:400;font-size:11px;color:var(--text-muted);margin-left:6px}.phase-timeline{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;transition:var(--transition)}.phase-timeline:hover{border-color:var(--border-light)}.phase-timeline-empty{color:var(--text-secondary);font-size:13px}.phase-timeline-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}.phase-timeline-runs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.phase-run-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);padding:5px 10px;border-radius:16px;font-size:11px;cursor:pointer;transition:var(--transition);max-width:260px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.phase-run-chip:hover{border-color:var(--accent-blue);color:var(--text-primary)}.phase-run-chip.active{border-color:var(--accent-blue);background:#58a6ff1a;color:var(--text-primary)}.phase-run-chip.live{border-color:#3fb95080}.phase-run-chip-time{color:var(--text-muted);font-size:10px}.phase-timeline-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--text-secondary)}.phase-meta-ok{color:var(--accent-green)}.phase-meta-bad{color:var(--accent-red)}.phase-timeline-controls{display:flex;align-items:center;gap:12px;margin-bottom:10px}.phase-play-btn{background:#58a6ff1f;color:var(--accent-blue);border:1px solid rgba(88,166,255,.35);border-radius:6px;padding:4px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:var(--transition)}.phase-play-btn:hover{background:#58a6ff38}.phase-play-btn.paused{background:#f851491f;color:var(--accent-red);border-color:#f8514959}.phase-time-label{font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums;min-width:96px}.phase-range{flex:1;accent-color:var(--accent-blue);cursor:pointer}.phase-track-wrap{padding:8px 0 2px}.phase-track{position:relative;height:46px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:8px;overflow:visible;-webkit-user-select:none;user-select:none;touch-action:none}.phase-block{position:absolute;top:5px;bottom:5px;border:none;border-radius:5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#fff;cursor:pointer;min-width:10px;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;font-size:10px}.phase-block:hover{filter:brightness(1.15);transform:translateY(-1px)}.phase-block-pending{opacity:.55}.phase-block-failed{outline:1px solid rgba(248,81,73,.6)}.phase-block.active{z-index:2}.phase-block-icon{font-size:13px;line-height:1}.phase-block-label{font-size:9px;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.6);max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 3px}.phase-caret{position:absolute;top:-3px;bottom:-3px;width:2px;background:#f0f6fc;box-shadow:0 0 8px #f0f6fccc;cursor:ew-resize;z-index:3;transform:translate(-1px);border-radius:2px}.phase-caret:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);border:5px solid transparent;border-top:6px solid #f0f6fc}.phase-ticks{display:flex;justify-content:space-between;color:var(--text-muted);font-size:9px;padding:3px 2px 0;font-variant-numeric:tabular-nums}.phase-detail{margin-top:12px;padding:10px 12px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:8px;min-height:58px}.phase-detail-title{display:flex;align-items:center;gap:8px;margin-bottom:4px}.phase-detail-icon{font-size:14px}.phase-detail-agent{font-size:13px;font-weight:700}.phase-status-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;margin-left:auto}.phase-status-pending{background:#6e768126;color:var(--text-muted)}.phase-status-running{background:#58a6ff26;color:var(--accent-blue)}.phase-status-completed{background:#3fb95026;color:var(--accent-green)}.phase-status-failed{background:#f8514926;color:var(--accent-red)}.phase-detail-desc{color:var(--text-primary);font-size:12px;margin:0 0 4px}.phase-detail-meta{display:flex;gap:12px;color:var(--text-secondary);font-size:10px;font-variant-numeric:tabular-nums}.phase-detail-summary{color:var(--text-secondary);font-size:11px;margin:6px 0 0;border-top:1px solid var(--border-light);padding-top:6px}.phase-detail-gap{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:4px}.admin-refresh-btn{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;padding:8px 16px;font-size:13px;cursor:pointer;transition:var(--transition)}.admin-refresh-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue);box-shadow:0 0 8px #58a6ff26}.admin-refresh-btn:disabled{opacity:.6;cursor:wait}.admin-subtitle{color:var(--text-secondary);font-size:12px;margin:0 0 16px;max-width:720px}.admin-error{background:#f851491a;border:1px solid rgba(248,81,73,.4);color:var(--accent-red);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:16px}.admin-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:24px}.admin-summary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center;transition:var(--transition)}.admin-summary-card:hover{border-color:var(--accent-blue)}.admin-summary-pass .admin-summary-value{color:var(--accent-green)}.admin-summary-warn .admin-summary-value{color:var(--accent-yellow)}.admin-summary-fail .admin-summary-value{color:var(--accent-red)}.admin-summary-value{font-size:26px;font-weight:700}.admin-summary-label{color:var(--text-secondary);font-size:12px;margin-top:2px}.admin-check-list{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.admin-check-row{display:flex;gap:12px;background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:10px 14px;transition:var(--transition)}.admin-check-row:hover{border-color:var(--accent-blue)}.admin-check-row[data-status=pass]{border-left-color:var(--accent-green)}.admin-check-row[data-status=warn]{border-left-color:var(--accent-yellow)}.admin-check-row[data-status=fail]{border-left-color:var(--accent-red)}.admin-check-badge{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;height:fit-content;margin-top:2px}.admin-check-pass{background:#3fb95026;color:var(--accent-green)}.admin-check-warn{background:#d2992226;color:var(--accent-yellow)}.admin-check-fail{background:#f8514926;color:var(--accent-red)}.admin-check-body{min-width:0}.admin-check-name{font-weight:600;font-size:13px}.admin-check-message{color:var(--text-primary);font-size:12px;margin-top:2px}.admin-check-detail{color:var(--text-secondary);font-size:11px;margin-top:4px;white-space:pre-wrap}.admin-check-fix{color:var(--accent-cyan);font-size:11px;margin-top:4px}.admin-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:8px;margin-bottom:24px}.admin-table{width:100%;border-collapse:collapse;font-size:12px}.admin-table th{text-align:left;padding:10px 14px;background:var(--bg-tertiary);color:var(--text-secondary);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border)}.admin-table td{padding:10px 14px;border-bottom:1px solid var(--border-light)}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--bg-hover)}.admin-provider-type{font-weight:600;color:var(--accent-blue)}.admin-key-masked{color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.admin-endpoint{color:var(--text-secondary);font-size:11px}.admin-header-actions{display:flex;gap:8px;align-items:center}.admin-logout-btn{background:transparent;border:1px solid var(--border, #333);color:var(--text-secondary);border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;transition:all .15s ease}.admin-logout-btn:hover{border-color:var(--accent-red);color:var(--accent-red)}.admin-gate-form{max-width:380px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:20px;background:#ffffff08;border:1px solid var(--border, #333);border-radius:10px}.admin-gate-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text-secondary)}.admin-input{background:#00000040;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:6px 8px;font-size:12px;min-width:0;width:100%;transition:border-color .15s ease}.admin-input:focus{outline:none;border-color:var(--accent, #4c9aff)}.admin-key-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.admin-provider-sub{font-size:11px;color:var(--text-secondary);margin-top:2px}.admin-hint{font-size:11px;color:var(--text-secondary);opacity:.8;margin-top:4px}.admin-hint code{background:#ffffff0f;padding:1px 4px;border-radius:4px;font-size:10px}.admin-row-actions{display:flex;gap:6px;flex-wrap:wrap}.admin-mini-btn{background:#ffffff0f;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer;transition:all .15s ease}.admin-mini-btn:hover:not(:disabled){border-color:var(--accent, #4c9aff);color:var(--accent, #4c9aff)}.admin-mini-btn:disabled{opacity:.5;cursor:default}.admin-mini-danger:hover:not(:disabled){border-color:var(--accent-red);color:var(--accent-red)}.admin-quota-panel{margin-top:22px}.admin-quota-note{font-size:11px;color:var(--text-secondary);margin:0 0 10px;max-width:760px;line-height:1.5}.admin-quota-table{display:flex;flex-direction:column;gap:4px;max-width:820px}.admin-quota-row{display:grid;grid-template-columns:120px 1fr 1fr 1fr 90px;gap:8px;align-items:center}.admin-quota-row.admin-quota-head{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);padding:0 4px}.admin-quota-row .admin-input{min-width:0}.admin-quota-row .admin-input:disabled{opacity:.55;cursor:default}.admin-quota-cost{margin-top:12px;max-width:820px}.admin-quota-cost-hint{font-size:10px;color:var(--text-secondary);grid-column:2 / span 3}.admin-quota-actions{display:flex;align-items:center;gap:10px;margin-top:12px}.admin-quota-ok{font-size:12px;color:var(--accent-green, #4ade80)}.admin-quota-err{font-size:12px;color:var(--accent-red)}.admin-row-msg{font-size:11px;margin-top:6px;color:var(--text-secondary)}.admin-row-msg-err{color:var(--accent-red)}.admin-empty-cell{text-align:center;color:var(--text-secondary);padding:16px!important}.admin-add-provider{display:flex;gap:8px;align-items:center;margin-top:12px}.admin-add-provider .admin-input{max-width:320px}.admin-role-badge{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:10px;font-size:11px;vertical-align:middle;background:#ffffff0f;border:1px solid var(--border, #333);color:var(--text-secondary)}.admin-role-admin{background:#3fb9501f;border-color:#3fb95059;color:var(--accent-green)}.admin-role-operator{background:#d299221f;border-color:#d2992259;color:var(--accent-yellow)}.admin-role-viewer{background:#7882961f;border-color:#78829659;color:var(--text-secondary)}.admin-readonly-note{margin-top:12px;padding:10px 14px;border:1px solid rgba(210,153,34,.35);background:#d2992214;border-radius:8px;font-size:12px;color:var(--accent-yellow)}.admin-readonly-note code{background:#ffffff0f;padding:1px 4px;border-radius:4px;font-size:11px}.admin-users-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.admin-user-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border, #333);border-radius:8px;background:#ffffff05}.admin-user-name{font-weight:600;font-size:13px}.admin-user-since{font-size:11px;color:var(--text-secondary);flex:1}.admin-user-form{margin-top:0;max-width:420px}.admin-user-form select{background:#00000040;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:6px 8px;font-size:12px}.hub-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0;border-bottom:1px solid var(--border-light);padding-bottom:10px}.hub-tab{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-light);border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;transition:var(--transition)}.hub-tab:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border)}.hub-tab.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#0d1117;font-weight:600}.hub-tab-count{margin-left:6px;background:#00000040;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:700}.hub-tab.active .hub-tab-count{background:#0000004d}.hub-toolset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin-top:14px}.hub-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;padding:14px;transition:var(--transition)}.hub-card:hover{border-color:var(--border)}.hub-card-disabled{opacity:.72;border-color:var(--accent-red)}.hub-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.hub-card-title{display:flex;flex-direction:column;gap:2px;min-width:0}.hub-card-name{font-weight:600;font-size:14px}.hub-card-id{font-size:11px;color:var(--text-muted);font-family:SF Mono,Menlo,Consolas,monospace}.hub-card-desc{margin:8px 0;color:var(--text-secondary);font-size:12px}.hub-card-tools{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.hub-chip{background:#58a6ff1f;color:var(--accent-blue);border:1px solid rgba(88,166,255,.25);border-radius:6px;padding:2px 8px;font-size:11px;font-family:SF Mono,Menlo,Consolas,monospace}.hub-chip-pending{background:#d9770624;color:var(--accent-warn, #d97706);border:1px dashed rgba(217,119,6,.45)}.chat-resolve-card{margin:10px 0;padding:10px 14px;border-radius:8px;border:1px solid rgba(88,166,255,.45);background:#58a6ff0f;font-size:13px}.chat-resolve-head{margin-bottom:6px;color:var(--text-primary)}.chat-resolve-cmd{margin:6px 0;padding:6px 10px;background:var(--bg-tertiary);border-radius:6px;overflow-x:auto}.chat-resolve-options{display:flex;flex-direction:column;gap:6px;margin:8px 0}.chat-resolve-options .chat-chip{text-align:left}.chat-resolve-foot{display:flex;align-items:center;gap:8px;margin-top:8px}.hub-reveal-row{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:12px}.hub-reveal-toggle{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-weight:500}.hub-reveal-toggle input[type=checkbox]{accent-color:var(--accent-blue);cursor:pointer}.hub-unsaved-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:4px 0 12px;padding:8px 12px;border-radius:6px;border:1px solid rgba(217,119,6,.45);background:#d9770614;color:var(--text-primary);font-size:12px}.hub-card-note{margin-top:10px;font-size:11px;color:var(--accent-yellow)}.hub-switch{position:relative;width:40px;height:22px;border-radius:12px;border:1px solid var(--border);background:#00000059;cursor:pointer;transition:var(--transition);flex-shrink:0}.hub-switch:hover:not(:disabled){border-color:var(--accent-blue)}.hub-switch:disabled{opacity:.5;cursor:not-allowed}.hub-switch.on{background:var(--accent-green);border-color:var(--accent-green)}.hub-switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#e6edf3;transition:var(--transition)}.hub-switch.on .hub-switch-knob{left:20px}.hub-alias-list,.hub-platform-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.hub-platform{display:flex;align-items:center;gap:8px;background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:8px;padding:6px 10px;font-size:12px}.hub-platform.configured{border-color:#3fb95066}.hub-platform-label{font-weight:600;color:var(--text-primary)}.hub-platform-env{color:var(--text-muted);font-size:11px;font-family:SF Mono,Menlo,Consolas,monospace}.hub-alias-row{display:flex;align-items:center;gap:8px;background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:8px;padding:6px 10px}.hub-send-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:8px;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.hub-send-form label{display:flex;flex-direction:column;gap:4px;min-width:0}.hub-send-form .hub-send-target{flex:2;min-width:240px}.hub-send-form .hub-send-message{flex:3;min-width:240px}.hub-send-form input{background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:0;width:100%;transition:border-color .15s ease}.hub-send-form input:focus{outline:none;border-color:var(--accent-blue)}.hub-send-form input:disabled{opacity:.55}.hub-send-form .admin-refresh-btn{flex-shrink:0}.hub-session-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.hub-artifact-list{list-style:none;display:flex;flex-direction:column;gap:6px;margin-top:8px}.hub-artifact-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.hub-artifact-title{color:var(--text-primary);font-weight:500}.hub-artifact-preview{flex-basis:100%;color:var(--text-muted);font-size:11px;background:#0003;border-radius:6px;padding:6px 8px;white-space:pre-wrap;word-break:break-word;font-family:SF Mono,Menlo,Consolas,monospace;max-height:60px;overflow:hidden}.task-run-form{display:flex;gap:8px;margin:12px 0 4px;align-items:stretch}.task-cmd-input{flex:1;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.task-timeout-select{width:auto;flex:0 0 auto}.task-hint{color:var(--text-muted);font-size:12px;margin:4px 0 12px}.task-console-wrap{margin:12px 0 16px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0a0e14}.task-console-header{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);font-size:12px;flex-wrap:wrap}.task-console-cmd{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--text-primary);overflow-wrap:anywhere}.task-meta{color:var(--text-muted);margin-left:auto}.task-cancel-btn{color:var(--accent-red)}.task-console{height:320px;overflow-y:auto;padding:8px 12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.task-line-stdout{color:var(--text-primary)}.task-line-stderr{color:var(--accent-red)}.task-line-system{color:var(--text-muted);font-style:italic}.task-autoscroll{display:block;padding:6px 12px;border-top:1px solid var(--border-light);color:var(--text-muted);font-size:11px;cursor:pointer}.task-status{font-size:12px;font-weight:600;padding:1px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-tertiary);white-space:nowrap}.task-status-running{color:var(--accent-yellow);border-color:var(--accent-yellow)}.task-status-done{color:var(--accent-green);border-color:var(--accent-green)}.task-status-failed{color:var(--accent-red);border-color:var(--accent-red)}.task-status-cancelled{color:var(--text-muted)}.task-status-timeout{color:var(--accent-yellow)}.task-status-error{color:var(--accent-red)}.task-history-title{font-size:14px;margin:8px 0}.task-table tbody tr{cursor:pointer}.task-table tbody tr:hover{background:var(--bg-hover)}.task-table tbody tr.task-row-active{background:#58a6ff14;border-left:3px solid var(--accent-blue)}.task-table code{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;color:var(--text-primary)}.wa-panel{margin-top:8px;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.wa-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}.wa-panel-title{font-weight:600;font-size:13px;color:var(--text-primary)}.wa-badge{font-size:11px;padding:2px 10px;border-radius:999px;border:1px solid var(--border);color:var(--text-secondary);background:#0003}.wa-badge-paired{color:#4ade80;border-color:#4ade8066}.wa-badge-pairing{color:#fbbf24;border-color:#fbbf2466}.wa-actions,.wa-pairing{display:flex;flex-direction:column;gap:10px;margin-top:10px}.wa-action-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.wa-phone-row{gap:8px}.wa-phone-input{background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:240px;transition:border-color .15s ease}.wa-phone-input:focus{outline:none;border-color:var(--accent-blue)}.wa-phone-input:disabled{opacity:.55}.wa-qr-box{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px;background:#fff;border-radius:10px;border:1px solid var(--border)}.wa-qr-box .admin-hint{color:#444;max-width:360px;text-align:center}.wa-qr-img{width:240px;height:240px;image-rendering:pixelated;border-radius:6px}.wa-code-box{padding:14px;background:#00000040;border:1px dashed var(--border);border-radius:10px;display:flex;flex-direction:column;gap:8px;align-items:center}.wa-code{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:28px;font-weight:700;letter-spacing:6px;color:var(--accent-blue, #3b82f6)}.wa-unpair-btn{border-color:#ef444480;color:#f87171}.admin-login-hint{margin:16px 0;padding:14px;border:1px dashed var(--border);border-radius:10px;color:var(--text-secondary);background:#00000026}.md-root{display:flex;flex-direction:column;gap:8px;font-size:13px;line-height:1.55}.md-root p.md-para{margin:0}.md-blank{height:6px}.md-heading{margin:4px 0 2px;font-weight:700;color:var(--text-primary)}.md-h1{font-size:17px}.md-h2{font-size:15px}.md-h3{font-size:14px}.md-h4,.md-h5,.md-h6{font-size:13px}.md-list{margin:0;padding-left:20px}.md-list li{margin:2px 0}.md-quote{margin:0;padding:4px 10px;border-left:3px solid var(--accent-blue, #3b82f6);color:var(--text-secondary);background:#3b82f614;border-radius:0 6px 6px 0}.md-hr{border:none;border-top:1px solid var(--border);margin:4px 0}.md-inline-code,.md-root :not(pre)>code{background:#7f7f7f33;border:1px solid rgba(127,127,127,.3);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.md-root ul:has(input[type=checkbox]){list-style:none;padding-left:4px}.md-root input[type=checkbox]{margin-right:6px;accent-color:var(--accent-blue, #3b82f6)}.md-code-pre code .hljs-keyword,.md-code-pre code .hljs-selector-tag,.md-code-pre code .hljs-built_in{color:#c678dd}.md-code-pre code .hljs-string,.md-code-pre code .hljs-attr,.md-code-pre code .hljs-template-tag{color:#98c379}.md-code-pre code .hljs-number,.md-code-pre code .hljs-literal,.md-code-pre code .hljs-symbol{color:#d19a66}.md-code-pre code .hljs-comment,.md-code-pre code .hljs-quote{color:#7f848e;font-style:italic}.md-code-pre code .hljs-function,.md-code-pre code .hljs-title,.md-code-pre code .hljs-title.function_{color:#61afef}.md-code-pre code .hljs-variable,.md-code-pre code .hljs-params,.md-code-pre code .hljs-property{color:#e06c75}.md-code-pre code .hljs-meta{color:#abb2bf}.md-code-pre code .hljs-emphasis{font-style:italic}.md-code-pre code .hljs-strong{font-weight:700}.md-root a{color:var(--accent-blue, #60a5fa);text-decoration:underline}.md-code-block{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#00000059}.md-code-head{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;background:#7f7f7f26;border-bottom:1px solid var(--border)}.md-code-lang{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.md-code-copy{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer}.md-code-copy:hover{color:var(--text-primary);border-color:var(--accent-blue, #3b82f6)}.md-code-pre{margin:0;padding:10px 12px;overflow-x:auto}.md-code-pre code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre;color:var(--text-primary)}.md-table{border-collapse:collapse;font-size:12px;margin:2px 0;width:100%}.md-table th,.md-table td{border:1px solid var(--border);padding:4px 8px;text-align:left}.md-table th{background:#7f7f7f26;font-weight:600}.empty-state-title{margin:0 0 10px;color:var(--text-secondary)}.empty-state-chips{display:flex;flex-wrap:wrap;gap:8px}.chat-project-bar{border:1px solid var(--border);border-radius:10px;background:var(--bg-card);padding:8px 10px;margin-bottom:10px}.chat-project-attached{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.chat-project-icon{font-size:14px}.chat-project-name{font-weight:700}.chat-project-meta{color:var(--text-secondary)}.chat-project-path{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-project-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.chat-project-hint{color:var(--text-secondary)}.chat-project-chips{display:flex;gap:6px;flex-wrap:wrap}.chat-project-input{flex:1;min-width:180px;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:6px 10px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.chat-project-input:focus{outline:none;border-color:var(--accent-blue)}.chat-project-error{color:#f87171}.chat-project-pick{position:relative}.chat-browse-popover{position:absolute;top:100%;left:0;z-index:100;width:380px;max-height:360px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000004d;display:flex;flex-direction:column;overflow:hidden;margin-top:4px}.chat-browse-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);font-size:11px}.chat-browse-path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-secondary)}.chat-browse-list{flex:1;overflow-y:auto;padding:4px;display:flex;flex-direction:column;gap:1px}.chat-browse-entry{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;border:none;background:transparent;color:var(--text-primary);font-size:12px;border-radius:6px;cursor:pointer;text-align:left}.chat-browse-entry:hover{background:#ffffff0f}.chat-browse-foot{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid var(--border)}.chat-browse-breadcrumbs{flex:1;display:flex;align-items:center;gap:2px;overflow-x:auto;white-space:nowrap;font-size:11px}.chat-breadcrumb{background:none;border:none;color:var(--accent);cursor:pointer;padding:2px 4px;border-radius:4px;font-size:11px}.chat-breadcrumb:hover{background:#ffffff1a}.chat-breadcrumb-sep{color:var(--text-secondary);font-size:10px}.chat-browse-drives{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);flex-wrap:wrap}.chat-browse-drive{padding:4px 10px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;cursor:pointer;font-size:11px}.chat-browse-drive:hover{background:#ffffff14;border-color:var(--accent)}.chat-browse-search{padding:6px 10px;border-bottom:1px solid var(--border)}.chat-browse-filter{width:100%;padding:4px 8px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;font-size:12px;outline:none}.chat-browse-filter:focus{border-color:var(--accent)}.chat-browse-entry-icon{font-size:14px}.chat-browse-entry-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-browse-entry-date{font-size:10px;color:var(--text-secondary)}.chat-session-project-banner{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;margin:0 14px 8px;font-size:13px;color:var(--text-secondary)}.chat-session-project-banner code{background:var(--bg-primary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--text-primary);word-break:break-all}.chat-layout{display:flex;gap:12px;min-height:380px}.chat-rail{width:34px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding-top:8px;border:1px solid var(--border);border-radius:10px;background:var(--bg-card)}.chat-rail-btn{background:transparent;border:none;font-size:16px;cursor:pointer;padding:6px;border-radius:6px}.chat-rail-btn:hover{background:#3b82f61f}.chat-sidebar{width:260px;flex-shrink:0;border:1px solid var(--border);border-radius:10px;background:var(--bg-card);display:flex;flex-direction:column;max-height:480px;overflow:hidden}.chat-sidebar-head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;font-size:12px;font-weight:600;border-bottom:1px solid var(--border);color:var(--text-secondary)}.chat-sidebar-head-actions{display:flex;gap:4px;align-items:center}.chat-mini-action{background:transparent;border:none;cursor:pointer;font-size:11px;padding:2px 5px;border-radius:5px;color:var(--text-secondary)}.chat-mini-action:hover{background:#3b82f626;color:var(--text-primary)}.chat-session-search{width:calc(100% - 20px);margin:8px 10px;padding:6px 8px;font-size:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input, #0d1117);color:var(--text-primary)}.chat-session-group{margin-bottom:4px}.chat-session-group-label{padding:6px 10px 2px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);opacity:.8}.chat-session-main{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;padding:4px 0;color:var(--text-primary);min-width:0}.chat-session-preview{font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-session-actions{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;gap:2px}.chat-session-rename{display:flex;gap:4px;align-items:center;padding:4px 0}.chat-session-rename input{flex:1;min-width:0;font-size:12px;padding:4px 6px;border:1px solid var(--accent-blue, #3b82f6);border-radius:6px;background:var(--bg-input, #0d1117);color:var(--text-primary)}.chat-sidebar-empty{padding:14px 10px;font-size:12px;color:var(--text-secondary)}.chat-sidebar-list{overflow-y:auto;flex:1}.chat-session-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;background:transparent;border:none;border-bottom:1px solid rgba(127,127,127,.15);cursor:pointer;color:var(--text-primary)}.chat-session-item{position:relative;padding-right:40px}.chat-session-item:hover{background:#3b82f61a}.chat-session-item:hover .chat-session-actions{display:flex}.chat-session-item.chat-session-active{background:#3b82f62e;border-left:3px solid var(--accent-blue, #3b82f6)}.chat-session-title{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-session-meta{font-size:11px;color:var(--text-secondary)}.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.ops-console{margin:10px 0;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.ops-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.ops-custom-row{display:flex;gap:8px;align-items:center}.ops-custom-row input{flex:1;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:0;transition:border-color .15s ease}.ops-custom-row input:focus{outline:none;border-color:var(--accent-blue)}.ops-console-box{margin:12px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0000004d}.ops-console-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-secondary)}.ops-console{max-height:320px;overflow-y:auto;margin:0;padding:12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;line-height:1.5;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.chat-head-actions{display:flex;align-items:center;gap:10px}.chat-thread{display:flex;flex-direction:column;gap:10px;margin:14px 0;padding:14px;max-height:60vh;overflow-y:auto;background:#0000002e;border:1px solid var(--border);border-radius:10px}.chat-bubble{max-width:85%;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg-card);white-space:pre-wrap;word-break:break-word}.chat-user{align-self:flex-end;background:#3b82f62e;border-color:#3b82f666}.chat-assistant{align-self:flex-start}.chat-error{border-color:#ef444480}.chat-bubble-role{font-size:11px;font-weight:600;color:var(--text-secondary);margin-bottom:4px}.chat-bubble-text{font-size:13px;line-height:1.5;color:var(--text-primary)}.chat-streaming .chat-bubble-text{margin:0 0 6px}.chat-streaming .chat-bubble-text>:last-child:after{content:"▍";color:var(--accent-blue, #4da3ff);animation:chat-stream-cursor .9s step-end infinite}@keyframes chat-stream-cursor{0%,to{opacity:1}50%{opacity:0}}.chat-working{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px}.chat-dots:after{content:"…";animation:chat-dots 1.2s infinite}.chat-cancel-btn{align-self:center;white-space:nowrap}.chat-cancel-btn:hover{border-color:var(--danger, #e5534b);color:var(--danger, #e5534b)}.chat-retry-row{display:flex;align-items:center;gap:10px;margin:0 0 10px}@keyframes chat-dots{0%{content:""}33%{content:"."}66%{content:".."}to{content:"..."}}.chat-followups{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.chat-chip{background:#3b82f61f;border:1px solid rgba(59,130,246,.45);color:var(--text-primary);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;transition:background .15s ease;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-chip:hover{background:#3b82f647}.chat-composer{border:1px solid var(--border);border-radius:10px;padding:6px 8px;background:var(--bg-card);display:flex;flex-direction:column;gap:6px}.chat-composer:focus-within{border-color:var(--accent-blue, #3b82f6)}.chat-composer-drag{border-color:var(--accent-blue, #3b82f6);background:#3b82f60f}.chat-attach-row{display:flex;flex-wrap:wrap;gap:6px}.chat-attach-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:3px 8px;border:1px solid var(--border);border-radius:999px;background:#3b82f614;color:var(--text-primary);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-paste-offer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;background:#facc150d}.chat-attach-btn{background:transparent;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:14px;padding:6px 8px;line-height:1;color:var(--text-secondary)}.chat-attach-btn:hover:not(:disabled){background:#3b82f61f}.chat-attach-btn:disabled{opacity:.4;cursor:not-allowed}.chat-attach-content{margin-top:6px}.chat-attach-content pre{margin:4px 0 0;padding:8px 10px;font-size:11px;line-height:1.4;max-height:200px;overflow:auto;background:var(--bg-input, #0d1117);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.chat-input-row{display:flex;gap:8px;align-items:center}.chat-input-row textarea.chat-input-box{flex:1;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:10px 12px;font-size:13px;min-width:0;resize:vertical;min-height:40px;max-height:160px;font-family:inherit;line-height:1.4;transition:border-color .15s ease}.chat-input-row textarea.chat-input-box:focus{outline:none;border-color:var(--accent-blue)}.chat-input-row textarea.chat-input-box:disabled{opacity:.55}.chat-working-lines{display:flex;flex-direction:column;gap:2px}.chat-step-line{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--text-secondary);line-height:1.5}.chat-steps{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border)}.chat-steps summary{cursor:pointer;font-size:11px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-steps>div{margin-top:6px}.chat-tool-cards{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}.chat-tool-card{border:1px solid var(--border);border-left:3px solid var(--accent-blue, #3b82f6);border-radius:8px;padding:6px 8px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-tool-card.chat-tool-ok{border-left-color:#22c55e}.chat-tool-card.chat-tool-err{border-left-color:#ef4444}.chat-tool-card.chat-tool-running{border-left-color:var(--accent-blue, #3b82f6);opacity:.92}.chat-tool-head{display:flex;align-items:center;gap:6px;min-width:0}.chat-tool-icon{font-size:12px;flex:none}.chat-tool-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary);flex:none}.chat-tool-args{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.chat-tool-status{font-size:12px;flex:none}.chat-tool-dur{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none}.chat-tool-detail{margin-top:5px}.chat-tool-detail summary{cursor:pointer;font-size:10.5px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-tool-body{margin:5px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-plan-card{border:1px solid var(--border);border-left:3px solid #a78bfa;border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-plan-head{display:flex;align-items:center;gap:6px}.chat-plan-icon{font-size:12px;flex:none}.chat-plan-goal{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-plan-count{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);flex:none}.chat-plan-steps{margin-top:7px;display:flex;flex-direction:column;gap:3px}.chat-plan-step{display:flex;align-items:center;gap:6px;min-width:0}.chat-plan-step-icon{font-size:11px;flex:none}.chat-plan-step-text{font-size:12px;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-plan-step-status{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10px;color:var(--text-secondary);flex:none;text-transform:uppercase}.chat-plan-step-done .chat-plan-step-text{text-decoration:line-through;opacity:.65}.chat-plan-step-blocked .chat-plan-step-text{color:#ef4444}.chat-diff-card{border:1px solid var(--border);border-left:3px solid #f59e0b;border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-diff-head{display:flex;align-items:center;gap:6px}.chat-diff-icon{font-size:12px;flex:none}.chat-diff-title{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary)}.chat-diff-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);margin-left:auto}.chat-diff-files{margin-top:6px;display:flex;flex-direction:column;gap:4px}.chat-diff-file{border:1px solid var(--border);border-radius:6px}.chat-diff-file summary{cursor:pointer;padding:4px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-diff-body{margin:0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-top:1px dashed var(--border)}.chat-diff-line{min-height:1.5em}.chat-diff-line.diff-add{color:#4ade80;background:color-mix(in srgb,#22c55e 12%,transparent)}.chat-diff-line.diff-del{color:#f87171;background:color-mix(in srgb,#ef4444 12%,transparent)}.chat-diff-line.diff-hunk{color:var(--text-secondary);background:color-mix(in srgb,#3b82f6 10%,transparent)}.chat-diff-file-path{display:flex;align-items:center;gap:6px}.chat-diff-toggle{flex:none;width:18px;height:18px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:11px;line-height:1;cursor:pointer;padding:0}.chat-diff-toggle-on{background:color-mix(in srgb,#22c55e 22%,transparent);border-color:#22c55e;color:#4ade80}.chat-diff-file-rejected{opacity:.55}.chat-diff-file-rejected .chat-diff-toggle{background:color-mix(in srgb,#ef4444 18%,transparent);border-color:#ef4444;color:#f87171}.chat-diff-actions{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}.chat-diff-locked{font-style:italic}.chat-artifacts{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}.chat-artifact-item{border-radius:8px}.chat-artifact-item:focus{outline:2px solid var(--accent-blue, #3b82f6);outline-offset:2px}.chat-card-copy{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer;flex:none;margin-left:6px}.chat-card-copy:hover{color:var(--text-primary);border-color:var(--accent-blue, #3b82f6)}.chat-result-card{border:1px solid var(--border);border-left:3px solid #6e7681;border-radius:8px;padding:8px 10px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-result-pass{border-left-color:#22c55e}.chat-result-fail{border-left-color:#ef4444}.chat-result-head{display:flex;align-items:center;gap:6px}.chat-result-icon{font-size:12px;flex:none}.chat-result-title{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-result-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none;text-transform:uppercase}.chat-result-body{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-deploy-card{border:1px solid var(--border);border-left:3px solid #22d3ee;border-radius:8px;padding:8px 10px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-deploy-head{display:flex;align-items:center;gap:6px}.chat-deploy-icon{font-size:12px;flex:none}.chat-deploy-title{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-deploy-url{display:block;margin-top:6px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--accent-blue, #3b82f6);word-break:break-all}.chat-task-card{border:1px solid var(--border);border-left:3px solid var(--accent-blue, #3b82f6);border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-task-running{border-left-color:var(--accent-blue, #3b82f6)}.chat-task-ok{border-left-color:#22c55e}.chat-task-err{border-left-color:#ef4444}.chat-task-head{display:flex;align-items:center;gap:8px;min-width:0}.chat-task-icon{font-size:12px;flex:none}.chat-task-cmd{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.chat-task-status{font-size:11.5px;color:var(--text-secondary);flex:none}.chat-task-exit,.chat-task-dur{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none}.chat-task-logs{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-task-log{white-space:pre-wrap;word-break:break-word}.chat-task-log-stdout{color:var(--text-secondary)}.chat-task-log-stderr{color:#f87171}.chat-task-log-system{color:var(--text-secondary);font-style:italic;opacity:.85}.chat-task-log-sep{margin:4px 0 2px;padding:1px 6px;border-top:1px dashed var(--border);font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.chat-task-log-sep-stderr{color:#f87171}.chat-task-log-sep-system{color:var(--text-secondary)}.chat-draft-card{border:1px solid var(--border);border-left:3px solid #bc8cff;border-radius:8px;padding:10px 12px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-draft-card.chat-draft-saved{border-left-color:#4ade80}.chat-draft-card.chat-draft-rejected{border-left-color:#6e7681;opacity:.75}.chat-draft-head{display:flex;align-items:center;gap:6px}.chat-draft-icon{font-size:12px;flex:none}.chat-draft-title{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary)}.chat-draft-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);margin-left:auto}.chat-draft-desc{margin:6px 0 0;font-size:12.5px;color:var(--text-secondary)}.chat-draft-body{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border:1px dashed var(--border);border-radius:6px}.chat-draft-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.platform-config{margin-top:10px}.platform-config .hub-platform{flex-direction:column;align-items:stretch;width:100%;gap:6px;padding:8px 10px}.platform-config .hub-platform-head{display:flex;align-items:center;gap:8px}.platform-config .hub-platform-head .admin-refresh-btn{margin-left:auto}.platform-config .hub-platform-env{display:flex;flex-wrap:wrap;gap:4px 12px}.platform-config-form{display:flex;flex-direction:column;gap:8px;padding-top:4px;border-top:1px dashed var(--border-light)}.platform-config-form .hub-send-target{width:100%}.platform-config-form input{width:100%;box-sizing:border-box}.platform-config-actions{display:flex;gap:8px}.hub-remove-btn{background:transparent;border:1px solid rgba(224,49,49,.5);color:#e03131;border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.hub-remove-btn:hover{background:#e031311a}.platform-docs-link{text-decoration:none;font-size:11px;padding:2px 6px;border-radius:4px;color:var(--accent-blue, #58a6ff);border:1px solid rgba(88,166,255,.3)}.platform-docs-link:hover{background:#58a6ff1a}.platform-setup-hint{font-size:12px;color:var(--text-secondary, #8b949e);padding:4px 8px;background:#58a6ff0f;border-radius:4px;border-left:2px solid rgba(88,166,255,.3);line-height:1.4}.wizard-start-btn{background:#38bd9426;border:1px solid rgba(56,189,148,.4);color:#38bd94;border-radius:6px;padding:2px 8px;font-size:11px;cursor:pointer;white-space:nowrap}.wizard-start-btn:hover{background:#38bd9440}.wizard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.wizard-modal{background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:12px;width:520px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:0 16px 48px #00000080}.wizard-header{display:flex;align-items:center;gap:8px;padding:16px 20px;border-bottom:1px solid var(--border-light, #30363d)}.wizard-icon{font-size:20px}.wizard-title{font-size:16px;font-weight:600;color:var(--text-primary, #e6edf3);flex:1}.wizard-body{padding:20px}.wizard-section-title{font-size:14px;font-weight:600;color:var(--text-primary, #e6edf3);margin:0 0 12px}.wizard-steps{margin:0 0 16px;padding-left:20px;color:var(--text-secondary, #8b949e);font-size:13px;line-height:1.8}.wizard-steps li{margin-bottom:4px}.wizard-nav{display:flex;gap:8px;margin-top:16px}.wizard-steps-indicator{display:flex;gap:4px;margin-left:auto;margin-right:8px}.wizard-step-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e);border:1px solid var(--border-light, #30363d)}.wizard-step-dot.active{background:#58a6ff33;color:var(--accent-blue, #58a6ff);border-color:#58a6ff80}.wizard-verify-status{padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:12px;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e)}.wizard-verify-status.ok{background:#38bd941a;color:#38bd94;border:1px solid rgba(56,189,148,.3)}.wizard-verify-status.err{background:#e031311a;color:#e03131;border:1px solid rgba(224,49,49,.3)}.wizard-test-section{margin-top:12px;padding:12px;background:var(--bg-tertiary, #1c2333);border-radius:8px;border:1px solid var(--border-light, #30363d)}.wizard-test-row{display:flex;gap:8px;margin-bottom:8px}.wizard-test-input{flex:1;background:var(--bg-primary, #0d1117);border:1px solid var(--border-light, #30363d);border-radius:6px;padding:6px 10px;font-size:13px;color:var(--text-primary, #e6edf3)}.wizard-hint{margin-top:12px;font-size:12px;color:var(--text-secondary, #8b949e);line-height:1.4}.platforms-summary{display:flex;align-items:center;gap:20px;padding:12px 16px;background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;margin-bottom:16px}.platforms-summary-stat{display:flex;flex-direction:column;align-items:center;min-width:60px}.platforms-summary-number{font-size:24px;font-weight:700;color:var(--text-primary, #e6edf3)}.platforms-summary-label{font-size:11px;color:var(--text-secondary, #8b949e);text-transform:uppercase}.platforms-summary-filters{display:flex;gap:6px;margin-left:auto}.platforms-filter-btn{background:transparent;border:1px solid var(--border-light, #30363d);color:var(--text-secondary, #8b949e);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.platforms-filter-btn:hover{background:var(--bg-hover, #1c2538)}.platforms-filter-btn.active{background:#58a6ff26;border-color:#58a6ff66;color:var(--accent-blue, #58a6ff)}.platforms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.platform-card{background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;padding:14px;transition:border-color .2s}.platform-card:hover{border-color:var(--border-hover, #484f58)}.platform-card.configured{border-color:#38bd944d;background:#38bd940a}.platform-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.platform-card-icon{font-size:24px;width:32px;text-align:center}.platform-card-info{flex:1;display:flex;flex-direction:column}.platform-card-name{font-size:14px;font-weight:600;color:var(--text-primary, #e6edf3)}.platform-card-category{font-size:11px;color:var(--text-secondary, #8b949e)}.platform-card-vars{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.platform-var-chip{font-size:11px;padding:2px 6px;border-radius:4px;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e);font-family:monospace}.platform-var-chip.set{background:#38bd941f;color:#38bd94}.platform-card-actions{display:flex;gap:6px;align-items:center}.platform-card-badge{font-size:12px;color:#38bd94;font-weight:500}.platform-card-hint{margin-top:8px;font-size:11px;color:var(--text-secondary, #8b949e);line-height:1.4;padding:6px 8px;background:#58a6ff0f;border-radius:4px;border-left:2px solid rgba(88,166,255,.3)}.platforms-cli-hint{margin-top:16px;padding:10px 14px;background:var(--bg-secondary, #161b22);border:1px dashed var(--border-light, #30363d);border-radius:8px;font-size:13px}.platforms-cli-hint code{background:var(--bg-tertiary, #1c2333);padding:2px 6px;border-radius:4px;font-size:12px}.hub-chip-bundled{background:#bc8cff2e!important;color:var(--accent-purple, #bc8cff)!important;border:1px solid rgba(188,140,255,.4)}.hub-market-search{display:flex;gap:8px;margin:0 0 10px}.hub-market-search input{flex:1;min-width:0}.hub-card-actions{display:flex;align-items:center;gap:8px}.hub-mini-btn{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;padding:3px 10px;font-size:12px;cursor:pointer;transition:var(--transition)}.hub-mini-btn:hover{border-color:#e0313180;color:#e03131;background:#e0313114}.hub-mini-btn:disabled{opacity:.5;cursor:not-allowed}.chat-chip-selected{background:#3b82f673!important;border-color:#3b82f6e6!important;box-shadow:0 0 0 1px #3b82f680}.chat-question-card{border-color:#eab30880}.chat-question-card .chat-chip{max-width:none;white-space:normal;text-align:left}.timeline-bar-container{display:flex;flex-direction:column;gap:2px;min-width:120px;max-width:200px}.timeline-bar{height:6px;background:#21262d;border-radius:3px;overflow:hidden;width:100%}.timeline-bar.small{height:3px}.timeline-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.timeline-bar-fill.probe{background:#58a6ff}.timeline-bar-fill.verify{background:#3fb950}.timeline-bar-fill.use{background:#d29922}
|
|
1
|
+
:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #1c2333;--bg-card: #1a1f2e;--bg-hover: #1c2538;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-blue: #58a6ff;--accent-green: #3fb950;--accent-yellow: #d29922;--accent-red: #f85149;--accent-purple: #bc8cff;--accent-cyan: #39d2c0;--border: #30363d;--border-light: #21262d;--shadow: rgba(0, 0, 0, .3);--nav-width: 220px;--transition: all .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;font-size:14px;min-height:100vh}#root{min-height:100vh}.layout{display:flex;min-height:100vh}.nav{width:var(--nav-width);background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:100}.nav-header{display:flex;align-items:center;gap:10px;padding:20px 16px;border-bottom:1px solid var(--border)}.nav-logo{font-size:24px}.nav-title{font-size:15px;font-weight:600;color:var(--text-primary)}.nav-links{flex:1;padding:8px 0}.nav-link{display:block;padding:10px 16px;color:var(--text-secondary);text-decoration:none;font-size:13px;transition:var(--transition);border-left:3px solid transparent}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-link.active{color:var(--accent-blue);background:#58a6ff14;border-left-color:var(--accent-blue);font-weight:500}.nav-footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.connected{background:var(--accent-green);box-shadow:0 0 6px #3fb95066}.status-dot.reconnecting{background:var(--accent-yellow);animation:pulse 1s infinite}.status-text{font-size:11px;color:var(--text-secondary);flex:1}.last-updated{font-size:10px;color:var(--text-muted)}.main{margin-left:var(--nav-width);flex:1;padding:32px 40px;max-width:1200px}.section-title{font-size:22px;font-weight:600;margin-bottom:24px;color:var(--text-primary)}.section-subtitle{font-size:15px;font-weight:500;color:var(--text-secondary);margin:28px 0 14px}.section-description{color:var(--text-secondary);font-size:13px;margin-bottom:24px;line-height:1.6}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:10px}.stats-grid.mini{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:18px 16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.stat-card:hover{border-color:var(--accent-blue);box-shadow:0 4px 12px var(--shadow)}.stat-icon{font-size:24px}.stat-body{min-width:0}.stat-value{font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-label{font-size:11px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:10px}.cost-summary{display:flex;gap:24px;margin-bottom:20px}.cost-summary-sub{margin-bottom:20px}.cost-summary-sub .cost-total{padding:10px 16px;background:transparent;border-style:dashed}.cost-summary-sub .cost-amount{font-size:20px}.cost-total{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px 24px;text-align:center;flex:1}.cost-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.cost-amount{font-size:28px;font-weight:700;color:var(--accent-green);display:block;margin-top:4px}.cost-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.cost-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.cost-row:last-child{border-bottom:none}.cost-row:hover{background:var(--bg-hover)}.cost-row-name{flex:1;font-size:13px;font-weight:500}.cost-row-bar{width:200px;height:6px;background:var(--bg-tertiary);border-radius:3px;margin:0 16px;overflow:hidden}.cost-row-fill{height:100%;background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan));border-radius:3px;transition:width .5s ease}.cost-row-value{font-size:13px;font-weight:600;color:var(--accent-green);min-width:70px;text-align:right}.request-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.request-row{display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.request-row:last-child{border-bottom:none}.request-row:hover{background:var(--bg-hover)}.request-time{color:var(--text-muted);min-width:70px}.request-provider{min-width:80px;font-weight:500}.request-model{flex:1;color:var(--text-secondary)}.request-cost{min-width:60px;text-align:right;color:var(--accent-green);font-weight:500}.request-tokens{min-width:60px;text-align:right;color:var(--text-secondary)}.history-stats{margin-bottom:14px;font-size:13px;color:var(--text-secondary)}.history-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.history-item{padding:12px 16px;border-bottom:1px solid var(--border-light);transition:var(--transition)}.history-item:last-child{border-bottom:none}.history-item:hover{background:var(--bg-hover)}.history-summary{font-size:13px;color:var(--text-primary);margin-bottom:4px;line-height:1.5}.history-meta{font-size:11px;color:var(--text-secondary);display:flex;gap:12px;flex-wrap:wrap;align-items:center}.history-meta span{display:inline-flex;align-items:center;gap:4px}.history-tag{background:#58a6ff26;color:var(--accent-blue);padding:1px 6px;border-radius:3px;font-size:10px;margin-left:2px}.benchmark-latest{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.benchmark-header{margin-bottom:8px;font-size:13px;color:var(--text-primary)}.benchmark-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:12px}.benchmark-stat{text-align:center;padding:12px;background:var(--bg-tertiary);border-radius:8px}.benchmark-stat-value{font-size:18px;font-weight:700}.benchmark-stat-label{font-size:10px;color:var(--text-secondary);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.benchmark-stat.pass .benchmark-stat-value{color:var(--accent-green)}.benchmark-stat.fail .benchmark-stat-value{color:var(--accent-red)}.benchmark-stat.quality .benchmark-stat-value{color:var(--accent-purple)}.benchmark-stat.latency .benchmark-stat-value{color:var(--accent-yellow)}.benchmark-stat.deps .benchmark-stat-value{color:var(--accent-blue)}.benchmark-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.benchmark-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:12px;transition:var(--transition)}.benchmark-item:last-child{border-bottom:none}.benchmark-item:hover{background:var(--bg-hover)}.benchmark-date{min-width:100px;color:var(--text-muted)}.benchmark-model{flex:1;font-weight:500}.benchmark-score{min-width:50px;text-align:right}.benchmark-score.high{color:var(--accent-green)}.benchmark-score.medium{color:var(--accent-yellow)}.benchmark-score.low{color:var(--accent-red)}.dag-container{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:24px;margin-bottom:16px;overflow-x:auto}.dag-container svg{display:block;margin:0 auto}.dag-legend{display:flex;flex-wrap:wrap;gap:12px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-icon{font-size:12px}.legend-label{font-size:11px}.memory-list{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.memory-item{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px;transition:var(--transition)}.memory-item:last-child{border-bottom:none}.memory-item:hover{background:var(--bg-hover)}.memory-project{flex:1;font-weight:500}.memory-count{min-width:50px;text-align:right;color:var(--text-secondary)}.health-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px}.health-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:16px;display:flex;align-items:center;gap:14px;transition:var(--transition)}.health-card:hover{border-color:var(--accent-blue)}.health-icon{font-size:22px}.health-body{min-width:0}.health-title{font-size:12px;color:var(--text-secondary);margin-bottom:2px}.health-path{font-size:11px;color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace}.health-value{font-size:16px;font-weight:600;color:var(--text-primary)}.server-info{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.info-row{display:flex;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-light);font-size:13px}.info-row:last-child{border-bottom:none}.info-label{min-width:140px;color:var(--text-secondary)}.info-value{color:var(--text-primary);font-weight:500}.loading-state{text-align:center;padding:80px 20px;color:var(--text-muted)}.loading-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{padding:32px;text-align:center;color:var(--text-muted);font-size:13px}.empty-state code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:14px;transition:var(--transition)}.dag-status-bar.active{border-color:var(--accent-blue);box-shadow:0 0 12px #58a6ff1a}.dag-pipeline-name{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text-primary)}.dag-live-dot{width:10px;height:10px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 8px #3fb95099;animation:pulse 1.5s infinite}.dag-live-badge{background:#3fb95026;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.5px;animation:pulse 2s infinite}.dag-pipeline-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dag-step-count{font-size:11px;color:var(--text-secondary)}.dag-running-badge{background:#58a6ff26;color:var(--accent-blue);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-completed-badge{background:#3fb9501f;color:var(--accent-green);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-pending-badge{background:#6e768126;color:var(--text-secondary);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-failed-badge{background:#f8514926;color:var(--accent-red);padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600}.dag-empty{text-align:center;padding:60px 20px;background:var(--bg-card);border:1px dashed var(--border);border-radius:12px}.dag-empty-icon{font-size:48px;margin-bottom:16px}.dag-empty h3{font-size:18px;color:var(--text-primary);margin-bottom:8px}.dag-empty p{color:var(--text-secondary);font-size:13px;max-width:400px;margin:0 auto}.dag-empty-hint{margin-top:12px!important;font-size:12px!important;color:var(--text-muted)!important}.dag-empty-hint code{background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--accent-blue)}.dag-node-group{transition:opacity .3s ease}.dag-node-group:hover rect:first-of-type{filter:brightness(1.2)}.dag-node-running{animation:dag-node-pulse 2s ease-in-out infinite}.dag-edge{transition:stroke .5s ease,stroke-width .5s ease,stroke-opacity .5s ease}@keyframes dag-node-pulse{0%,to{stroke-opacity:.9}50%{stroke-opacity:.5}}.dag-node-summary{pointer-events:none;animation:fadeIn .2s ease-out}.dag-table-wrapper{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:16px}.dag-table{width:100%;border-collapse:collapse;font-size:12px}.dag-table th{background:var(--bg-tertiary);padding:10px 14px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.dag-table td{padding:8px 14px;border-bottom:1px solid var(--border-light)}.dag-row:last-child td{border-bottom:none}.dag-row:hover td{background:var(--bg-hover)}.dag-cell-step{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;width:40px}.dag-cell-agent{display:flex;align-items:center;gap:6px;font-weight:500;color:var(--text-primary)}.dag-agent-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.dag-cell-status{font-weight:500}.dag-status-pending{color:var(--text-muted)}.dag-status-running{color:var(--accent-blue)}.dag-status-completed{color:var(--accent-green)}.dag-status-failed{color:var(--accent-red)}.dag-cell-duration{color:var(--text-secondary);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-time{color:var(--text-muted);font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.dag-cell-summary{color:var(--text-secondary);font-size:11px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stat-card,.health-card,.cost-row,.history-item,.benchmark-item,.dag-row,.dag-status-bar{animation:fadeIn .3s ease-out}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width: 768px){.nav{width:60px}.nav-title,.nav-link,.nav-footer{display:none}.nav-header{justify-content:center;padding:16px}.main{margin-left:60px;padding:20px}.stats-grid,.benchmark-stats{grid-template-columns:repeat(2,1fr)}.cost-summary{flex-direction:column;gap:12px}}.dag-timeline-section{margin-bottom:16px}.timeline-subtitle{font-weight:400;font-size:11px;color:var(--text-muted);margin-left:6px}.phase-timeline{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;transition:var(--transition)}.phase-timeline:hover{border-color:var(--border-light)}.phase-timeline-empty{color:var(--text-secondary);font-size:13px}.phase-timeline-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}.phase-timeline-runs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.phase-run-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);padding:5px 10px;border-radius:16px;font-size:11px;cursor:pointer;transition:var(--transition);max-width:260px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.phase-run-chip:hover{border-color:var(--accent-blue);color:var(--text-primary)}.phase-run-chip.active{border-color:var(--accent-blue);background:#58a6ff1a;color:var(--text-primary)}.phase-run-chip.live{border-color:#3fb95080}.phase-run-chip-time{color:var(--text-muted);font-size:10px}.phase-timeline-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--text-secondary)}.phase-meta-ok{color:var(--accent-green)}.phase-meta-bad{color:var(--accent-red)}.phase-timeline-controls{display:flex;align-items:center;gap:12px;margin-bottom:10px}.phase-play-btn{background:#58a6ff1f;color:var(--accent-blue);border:1px solid rgba(88,166,255,.35);border-radius:6px;padding:4px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:var(--transition)}.phase-play-btn:hover{background:#58a6ff38}.phase-play-btn.paused{background:#f851491f;color:var(--accent-red);border-color:#f8514959}.phase-time-label{font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums;min-width:96px}.phase-range{flex:1;accent-color:var(--accent-blue);cursor:pointer}.phase-track-wrap{padding:8px 0 2px}.phase-track{position:relative;height:46px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:8px;overflow:visible;-webkit-user-select:none;user-select:none;touch-action:none}.phase-block{position:absolute;top:5px;bottom:5px;border:none;border-radius:5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#fff;cursor:pointer;min-width:10px;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;font-size:10px}.phase-block:hover{filter:brightness(1.15);transform:translateY(-1px)}.phase-block-pending{opacity:.55}.phase-block-failed{outline:1px solid rgba(248,81,73,.6)}.phase-block.active{z-index:2}.phase-block-icon{font-size:13px;line-height:1}.phase-block-label{font-size:9px;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.6);max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 3px}.phase-caret{position:absolute;top:-3px;bottom:-3px;width:2px;background:#f0f6fc;box-shadow:0 0 8px #f0f6fccc;cursor:ew-resize;z-index:3;transform:translate(-1px);border-radius:2px}.phase-caret:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);border:5px solid transparent;border-top:6px solid #f0f6fc}.phase-ticks{display:flex;justify-content:space-between;color:var(--text-muted);font-size:9px;padding:3px 2px 0;font-variant-numeric:tabular-nums}.phase-detail{margin-top:12px;padding:10px 12px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:8px;min-height:58px}.phase-detail-title{display:flex;align-items:center;gap:8px;margin-bottom:4px}.phase-detail-icon{font-size:14px}.phase-detail-agent{font-size:13px;font-weight:700}.phase-status-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;margin-left:auto}.phase-status-pending{background:#6e768126;color:var(--text-muted)}.phase-status-running{background:#58a6ff26;color:var(--accent-blue)}.phase-status-completed{background:#3fb95026;color:var(--accent-green)}.phase-status-failed{background:#f8514926;color:var(--accent-red)}.phase-detail-desc{color:var(--text-primary);font-size:12px;margin:0 0 4px}.phase-detail-meta{display:flex;gap:12px;color:var(--text-secondary);font-size:10px;font-variant-numeric:tabular-nums}.phase-detail-summary{color:var(--text-secondary);font-size:11px;margin:6px 0 0;border-top:1px solid var(--border-light);padding-top:6px}.phase-detail-gap{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:4px}.admin-refresh-btn{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;padding:8px 16px;font-size:13px;cursor:pointer;transition:var(--transition)}.admin-refresh-btn:hover:not(:disabled){border-color:var(--accent-blue);color:var(--accent-blue);box-shadow:0 0 8px #58a6ff26}.admin-refresh-btn:disabled{opacity:.6;cursor:wait}.admin-subtitle{color:var(--text-secondary);font-size:12px;margin:0 0 16px;max-width:720px}.admin-error{background:#f851491a;border:1px solid rgba(248,81,73,.4);color:var(--accent-red);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:16px}.admin-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:24px}.admin-summary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center;transition:var(--transition)}.admin-summary-card:hover{border-color:var(--accent-blue)}.admin-summary-pass .admin-summary-value{color:var(--accent-green)}.admin-summary-warn .admin-summary-value{color:var(--accent-yellow)}.admin-summary-fail .admin-summary-value{color:var(--accent-red)}.admin-summary-value{font-size:26px;font-weight:700}.admin-summary-label{color:var(--text-secondary);font-size:12px;margin-top:2px}.admin-check-list{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.admin-check-row{display:flex;gap:12px;background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:10px 14px;transition:var(--transition)}.admin-check-row:hover{border-color:var(--accent-blue)}.admin-check-row[data-status=pass]{border-left-color:var(--accent-green)}.admin-check-row[data-status=warn]{border-left-color:var(--accent-yellow)}.admin-check-row[data-status=fail]{border-left-color:var(--accent-red)}.admin-check-badge{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;height:fit-content;margin-top:2px}.admin-check-pass{background:#3fb95026;color:var(--accent-green)}.admin-check-warn{background:#d2992226;color:var(--accent-yellow)}.admin-check-fail{background:#f8514926;color:var(--accent-red)}.admin-check-body{min-width:0}.admin-check-name{font-weight:600;font-size:13px}.admin-check-message{color:var(--text-primary);font-size:12px;margin-top:2px}.admin-check-detail{color:var(--text-secondary);font-size:11px;margin-top:4px;white-space:pre-wrap}.admin-check-fix{color:var(--accent-cyan);font-size:11px;margin-top:4px}.admin-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:8px;margin-bottom:24px}.admin-table{width:100%;border-collapse:collapse;font-size:12px}.admin-table th{text-align:left;padding:10px 14px;background:var(--bg-tertiary);color:var(--text-secondary);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border)}.admin-table td{padding:10px 14px;border-bottom:1px solid var(--border-light)}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:var(--bg-hover)}.admin-provider-type{font-weight:600;color:var(--accent-blue)}.admin-key-masked{color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.admin-endpoint{color:var(--text-secondary);font-size:11px}.admin-header-actions{display:flex;gap:8px;align-items:center}.admin-logout-btn{background:transparent;border:1px solid var(--border, #333);color:var(--text-secondary);border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;transition:all .15s ease}.admin-logout-btn:hover{border-color:var(--accent-red);color:var(--accent-red)}.admin-gate-form{max-width:380px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:20px;background:#ffffff08;border:1px solid var(--border, #333);border-radius:10px}.admin-gate-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text-secondary)}.admin-input{background:#00000040;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:6px 8px;font-size:12px;min-width:0;width:100%;transition:border-color .15s ease}.admin-input:focus{outline:none;border-color:var(--accent, #4c9aff)}.admin-key-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.admin-provider-sub{font-size:11px;color:var(--text-secondary);margin-top:2px}.admin-hint{font-size:11px;color:var(--text-secondary);opacity:.8;margin-top:4px}.admin-hint code{background:#ffffff0f;padding:1px 4px;border-radius:4px;font-size:10px}.admin-row-actions{display:flex;gap:6px;flex-wrap:wrap}.admin-mini-btn{background:#ffffff0f;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:4px 8px;font-size:11px;cursor:pointer;transition:all .15s ease}.admin-mini-btn:hover:not(:disabled){border-color:var(--accent, #4c9aff);color:var(--accent, #4c9aff)}.admin-mini-btn:disabled{opacity:.5;cursor:default}.admin-mini-danger:hover:not(:disabled){border-color:var(--accent-red);color:var(--accent-red)}.admin-quota-panel{margin-top:22px}.admin-quota-note{font-size:11px;color:var(--text-secondary);margin:0 0 10px;max-width:760px;line-height:1.5}.admin-quota-table{display:flex;flex-direction:column;gap:4px;max-width:820px}.admin-quota-row{display:grid;grid-template-columns:120px 1fr 1fr 1fr 90px;gap:8px;align-items:center}.admin-quota-row.admin-quota-head{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);padding:0 4px}.admin-quota-row .admin-input{min-width:0}.admin-quota-row .admin-input:disabled{opacity:.55;cursor:default}.admin-quota-cost{margin-top:12px;max-width:820px}.admin-quota-cost-hint{font-size:10px;color:var(--text-secondary);grid-column:2 / span 3}.admin-quota-actions{display:flex;align-items:center;gap:10px;margin-top:12px}.admin-quota-ok{font-size:12px;color:var(--accent-green, #4ade80)}.admin-quota-err{font-size:12px;color:var(--accent-red)}.admin-row-msg{font-size:11px;margin-top:6px;color:var(--text-secondary)}.admin-row-msg-err{color:var(--accent-red)}.admin-empty-cell{text-align:center;color:var(--text-secondary);padding:16px!important}.admin-add-provider{display:flex;gap:8px;align-items:center;margin-top:12px}.admin-add-provider .admin-input{max-width:320px}.admin-role-badge{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:10px;font-size:11px;vertical-align:middle;background:#ffffff0f;border:1px solid var(--border, #333);color:var(--text-secondary)}.admin-role-admin{background:#3fb9501f;border-color:#3fb95059;color:var(--accent-green)}.admin-role-operator{background:#d299221f;border-color:#d2992259;color:var(--accent-yellow)}.admin-role-viewer{background:#7882961f;border-color:#78829659;color:var(--text-secondary)}.admin-readonly-note{margin-top:12px;padding:10px 14px;border:1px solid rgba(210,153,34,.35);background:#d2992214;border-radius:8px;font-size:12px;color:var(--accent-yellow)}.admin-readonly-note code{background:#ffffff0f;padding:1px 4px;border-radius:4px;font-size:11px}.admin-users-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.admin-user-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border, #333);border-radius:8px;background:#ffffff05}.admin-user-name{font-weight:600;font-size:13px}.admin-user-since{font-size:11px;color:var(--text-secondary);flex:1}.admin-user-form{margin-top:0;max-width:420px}.admin-user-form select{background:#00000040;border:1px solid var(--border, #333);color:var(--text-primary);border-radius:6px;padding:6px 8px;font-size:12px}.hub-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0;border-bottom:1px solid var(--border-light);padding-bottom:10px}.hub-tab{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-light);border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;transition:var(--transition)}.hub-tab:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border)}.hub-tab.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#0d1117;font-weight:600}.hub-tab-count{margin-left:6px;background:#00000040;border-radius:10px;padding:1px 8px;font-size:11px;font-weight:700}.hub-tab.active .hub-tab-count{background:#0000004d}.hub-toolset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin-top:14px}.hub-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;padding:14px;transition:var(--transition)}.hub-card:hover{border-color:var(--border)}.hub-card-disabled{opacity:.72;border-color:var(--accent-red)}.hub-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.hub-card-title{display:flex;flex-direction:column;gap:2px;min-width:0}.hub-card-name{font-weight:600;font-size:14px}.hub-card-id{font-size:11px;color:var(--text-muted);font-family:SF Mono,Menlo,Consolas,monospace}.hub-card-desc{margin:8px 0;color:var(--text-secondary);font-size:12px}.hub-card-tools{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.hub-chip{background:#58a6ff1f;color:var(--accent-blue);border:1px solid rgba(88,166,255,.25);border-radius:6px;padding:2px 8px;font-size:11px;font-family:SF Mono,Menlo,Consolas,monospace}.hub-chip-pending{background:#d9770624;color:var(--accent-warn, #d97706);border:1px dashed rgba(217,119,6,.45)}.chat-resolve-card{margin:10px 0;padding:10px 14px;border-radius:8px;border:1px solid rgba(88,166,255,.45);background:#58a6ff0f;font-size:13px}.chat-resolve-head{margin-bottom:6px;color:var(--text-primary)}.chat-resolve-cmd{margin:6px 0;padding:6px 10px;background:var(--bg-tertiary);border-radius:6px;overflow-x:auto}.chat-resolve-options{display:flex;flex-direction:column;gap:6px;margin:8px 0}.chat-resolve-options .chat-chip{text-align:left}.chat-resolve-foot{display:flex;align-items:center;gap:8px;margin-top:8px}.hub-reveal-row{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:12px}.hub-reveal-toggle{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-weight:500}.hub-reveal-toggle input[type=checkbox]{accent-color:var(--accent-blue);cursor:pointer}.hub-unsaved-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:4px 0 12px;padding:8px 12px;border-radius:6px;border:1px solid rgba(217,119,6,.45);background:#d9770614;color:var(--text-primary);font-size:12px}.hub-card-note{margin-top:10px;font-size:11px;color:var(--accent-yellow)}.hub-switch{position:relative;width:40px;height:22px;border-radius:12px;border:1px solid var(--border);background:#00000059;cursor:pointer;transition:var(--transition);flex-shrink:0}.hub-switch:hover:not(:disabled){border-color:var(--accent-blue)}.hub-switch:disabled{opacity:.5;cursor:not-allowed}.hub-switch.on{background:var(--accent-green);border-color:var(--accent-green)}.hub-switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#e6edf3;transition:var(--transition)}.hub-switch.on .hub-switch-knob{left:20px}.hub-alias-list,.hub-platform-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.hub-platform{display:flex;align-items:center;gap:8px;background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:8px;padding:6px 10px;font-size:12px}.hub-platform.configured{border-color:#3fb95066}.hub-platform-label{font-weight:600;color:var(--text-primary)}.hub-platform-env{color:var(--text-muted);font-size:11px;font-family:SF Mono,Menlo,Consolas,monospace}.hub-alias-row{display:flex;align-items:center;gap:8px;background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:8px;padding:6px 10px}.hub-send-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:8px;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.hub-send-form label{display:flex;flex-direction:column;gap:4px;min-width:0}.hub-send-form .hub-send-target{flex:2;min-width:240px}.hub-send-form .hub-send-message{flex:3;min-width:240px}.hub-send-form input{background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:0;width:100%;transition:border-color .15s ease}.hub-send-form input:focus{outline:none;border-color:var(--accent-blue)}.hub-send-form input:disabled{opacity:.55}.hub-send-form .admin-refresh-btn{flex-shrink:0}.hub-session-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.hub-artifact-list{list-style:none;display:flex;flex-direction:column;gap:6px;margin-top:8px}.hub-artifact-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.hub-artifact-title{color:var(--text-primary);font-weight:500}.hub-artifact-preview{flex-basis:100%;color:var(--text-muted);font-size:11px;background:#0003;border-radius:6px;padding:6px 8px;white-space:pre-wrap;word-break:break-word;font-family:SF Mono,Menlo,Consolas,monospace;max-height:60px;overflow:hidden}.task-run-form{display:flex;gap:8px;margin:12px 0 4px;align-items:stretch}.task-cmd-input{flex:1;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px}.task-timeout-select{width:auto;flex:0 0 auto}.task-hint{color:var(--text-muted);font-size:12px;margin:4px 0 12px}.task-console-wrap{margin:12px 0 16px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0a0e14}.task-console-header{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);font-size:12px;flex-wrap:wrap}.task-console-cmd{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);color:var(--text-primary);overflow-wrap:anywhere}.task-meta{color:var(--text-muted);margin-left:auto}.task-cancel-btn{color:var(--accent-red)}.task-console{height:320px;overflow-y:auto;padding:8px 12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.task-line-stdout{color:var(--text-primary)}.task-line-stderr{color:var(--accent-red)}.task-line-system{color:var(--text-muted);font-style:italic}.task-autoscroll{display:block;padding:6px 12px;border-top:1px solid var(--border-light);color:var(--text-muted);font-size:11px;cursor:pointer}.task-status{font-size:12px;font-weight:600;padding:1px 8px;border-radius:999px;border:1px solid var(--border);background:var(--bg-tertiary);white-space:nowrap}.task-status-running{color:var(--accent-yellow);border-color:var(--accent-yellow)}.task-status-done{color:var(--accent-green);border-color:var(--accent-green)}.task-status-failed{color:var(--accent-red);border-color:var(--accent-red)}.task-status-cancelled{color:var(--text-muted)}.task-status-timeout{color:var(--accent-yellow)}.task-status-error{color:var(--accent-red)}.task-history-title{font-size:14px;margin:8px 0}.task-table tbody tr{cursor:pointer}.task-table tbody tr:hover{background:var(--bg-hover)}.task-table tbody tr.task-row-active{background:#58a6ff14;border-left:3px solid var(--accent-blue)}.task-table code{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;color:var(--text-primary)}.wa-panel{margin-top:8px;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.wa-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}.wa-panel-title{font-weight:600;font-size:13px;color:var(--text-primary)}.wa-badge{font-size:11px;padding:2px 10px;border-radius:999px;border:1px solid var(--border);color:var(--text-secondary);background:#0003}.wa-badge-paired{color:#4ade80;border-color:#4ade8066}.wa-badge-pairing{color:#fbbf24;border-color:#fbbf2466}.wa-actions,.wa-pairing{display:flex;flex-direction:column;gap:10px;margin-top:10px}.wa-action-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.wa-phone-row{gap:8px}.wa-phone-input{background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:240px;transition:border-color .15s ease}.wa-phone-input:focus{outline:none;border-color:var(--accent-blue)}.wa-phone-input:disabled{opacity:.55}.wa-qr-box{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px;background:#fff;border-radius:10px;border:1px solid var(--border)}.wa-qr-box .admin-hint{color:#444;max-width:360px;text-align:center}.wa-qr-img{width:240px;height:240px;image-rendering:pixelated;border-radius:6px}.wa-code-box{padding:14px;background:#00000040;border:1px dashed var(--border);border-radius:10px;display:flex;flex-direction:column;gap:8px;align-items:center}.wa-code{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:28px;font-weight:700;letter-spacing:6px;color:var(--accent-blue, #3b82f6)}.wa-unpair-btn{border-color:#ef444480;color:#f87171}.admin-login-hint{margin:16px 0;padding:14px;border:1px dashed var(--border);border-radius:10px;color:var(--text-secondary);background:#00000026}.md-root{display:flex;flex-direction:column;gap:8px;font-size:13px;line-height:1.55}.md-root p.md-para{margin:0}.md-blank{height:6px}.md-heading{margin:4px 0 2px;font-weight:700;color:var(--text-primary)}.md-h1{font-size:17px}.md-h2{font-size:15px}.md-h3{font-size:14px}.md-h4,.md-h5,.md-h6{font-size:13px}.md-list{margin:0;padding-left:20px}.md-list li{margin:2px 0}.md-quote{margin:0;padding:4px 10px;border-left:3px solid var(--accent-blue, #3b82f6);color:var(--text-secondary);background:#3b82f614;border-radius:0 6px 6px 0}.md-hr{border:none;border-top:1px solid var(--border);margin:4px 0}.md-inline-code,.md-root :not(pre)>code{background:#7f7f7f33;border:1px solid rgba(127,127,127,.3);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.md-root ul:has(input[type=checkbox]){list-style:none;padding-left:4px}.md-root input[type=checkbox]{margin-right:6px;accent-color:var(--accent-blue, #3b82f6)}.md-code-pre code .hljs-keyword,.md-code-pre code .hljs-selector-tag,.md-code-pre code .hljs-built_in{color:#c678dd}.md-code-pre code .hljs-string,.md-code-pre code .hljs-attr,.md-code-pre code .hljs-template-tag{color:#98c379}.md-code-pre code .hljs-number,.md-code-pre code .hljs-literal,.md-code-pre code .hljs-symbol{color:#d19a66}.md-code-pre code .hljs-comment,.md-code-pre code .hljs-quote{color:#7f848e;font-style:italic}.md-code-pre code .hljs-function,.md-code-pre code .hljs-title,.md-code-pre code .hljs-title.function_{color:#61afef}.md-code-pre code .hljs-variable,.md-code-pre code .hljs-params,.md-code-pre code .hljs-property{color:#e06c75}.md-code-pre code .hljs-meta{color:#abb2bf}.md-code-pre code .hljs-emphasis{font-style:italic}.md-code-pre code .hljs-strong{font-weight:700}.md-root a{color:var(--accent-blue, #60a5fa);text-decoration:underline}.md-code-block{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#00000059}.md-code-head{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;background:#7f7f7f26;border-bottom:1px solid var(--border)}.md-code-lang{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.md-code-copy{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer}.md-code-copy:hover{color:var(--text-primary);border-color:var(--accent-blue, #3b82f6)}.md-code-pre{margin:0;padding:10px 12px;overflow-x:auto}.md-code-pre code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;white-space:pre;color:var(--text-primary)}.md-table{border-collapse:collapse;font-size:12px;margin:2px 0;width:100%}.md-table th,.md-table td{border:1px solid var(--border);padding:4px 8px;text-align:left}.md-table th{background:#7f7f7f26;font-weight:600}.empty-state-title{margin:0 0 10px;color:var(--text-secondary)}.empty-state-chips{display:flex;flex-wrap:wrap;gap:8px}.chat-project-bar{border:1px solid var(--border);border-radius:10px;background:var(--bg-card);padding:8px 10px;margin-bottom:10px}.chat-project-attached{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.chat-project-icon{font-size:14px}.chat-project-name{font-weight:700}.chat-project-meta{color:var(--text-secondary)}.chat-project-path{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-project-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.chat-project-hint{color:var(--text-secondary)}.chat-project-chips{display:flex;gap:6px;flex-wrap:wrap}.chat-project-input{flex:1;min-width:180px;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:6px 10px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.chat-project-input:focus{outline:none;border-color:var(--accent-blue)}.chat-project-error{color:#f87171}.chat-project-pick{position:relative}.chat-browse-popover{position:absolute;top:100%;left:0;z-index:100;width:380px;max-height:360px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000004d;display:flex;flex-direction:column;overflow:hidden;margin-top:4px}.chat-browse-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);font-size:11px}.chat-browse-path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-secondary)}.chat-browse-list{flex:1;overflow-y:auto;padding:4px;display:flex;flex-direction:column;gap:1px}.chat-browse-entry{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;border:none;background:transparent;color:var(--text-primary);font-size:12px;border-radius:6px;cursor:pointer;text-align:left}.chat-browse-entry:hover{background:#ffffff0f}.chat-browse-foot{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid var(--border)}.chat-browse-breadcrumbs{flex:1;display:flex;align-items:center;gap:2px;overflow-x:auto;white-space:nowrap;font-size:11px}.chat-breadcrumb{background:none;border:none;color:var(--accent);cursor:pointer;padding:2px 4px;border-radius:4px;font-size:11px}.chat-breadcrumb:hover{background:#ffffff1a}.chat-breadcrumb-sep{color:var(--text-secondary);font-size:10px}.chat-browse-drives{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border);flex-wrap:wrap}.chat-browse-drive{padding:4px 10px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;cursor:pointer;font-size:11px}.chat-browse-drive:hover{background:#ffffff14;border-color:var(--accent)}.chat-browse-search{padding:6px 10px;border-bottom:1px solid var(--border)}.chat-browse-filter{width:100%;padding:4px 8px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;font-size:12px;outline:none}.chat-browse-filter:focus{border-color:var(--accent)}.chat-browse-entry-icon{font-size:14px}.chat-browse-entry-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-browse-entry-date{font-size:10px;color:var(--text-secondary)}.chat-session-project-banner{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;margin:0 14px 8px;font-size:13px;color:var(--text-secondary)}.chat-session-project-banner code{background:var(--bg-primary);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--text-primary);word-break:break-all}.chat-layout{display:flex;gap:12px;min-height:380px}.chat-rail{width:34px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding-top:8px;border:1px solid var(--border);border-radius:10px;background:var(--bg-card)}.chat-rail-btn{background:transparent;border:none;font-size:16px;cursor:pointer;padding:6px;border-radius:6px}.chat-rail-btn:hover{background:#3b82f61f}.chat-sidebar{width:260px;flex-shrink:0;border:1px solid var(--border);border-radius:10px;background:var(--bg-card);display:flex;flex-direction:column;max-height:480px;overflow:hidden}.chat-sidebar-head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;font-size:12px;font-weight:600;border-bottom:1px solid var(--border);color:var(--text-secondary)}.chat-sidebar-head-actions{display:flex;gap:4px;align-items:center}.chat-mini-action{background:transparent;border:none;cursor:pointer;font-size:11px;padding:2px 5px;border-radius:5px;color:var(--text-secondary)}.chat-mini-action:hover{background:#3b82f626;color:var(--text-primary)}.chat-session-search{width:calc(100% - 20px);margin:8px 10px;padding:6px 8px;font-size:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input, #0d1117);color:var(--text-primary)}.chat-session-group{margin-bottom:4px}.chat-session-group-label{padding:6px 10px 2px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);opacity:.8}.chat-session-main{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;padding:4px 0;color:var(--text-primary);min-width:0}.chat-session-preview{font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-session-actions{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;gap:2px}.chat-session-rename{display:flex;gap:4px;align-items:center;padding:4px 0}.chat-session-rename input{flex:1;min-width:0;font-size:12px;padding:4px 6px;border:1px solid var(--accent-blue, #3b82f6);border-radius:6px;background:var(--bg-input, #0d1117);color:var(--text-primary)}.chat-sidebar-empty{padding:14px 10px;font-size:12px;color:var(--text-secondary)}.chat-sidebar-list{overflow-y:auto;flex:1}.chat-session-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;background:transparent;border:none;border-bottom:1px solid rgba(127,127,127,.15);cursor:pointer;color:var(--text-primary)}.chat-session-item{position:relative;padding-right:40px}.chat-session-item:hover{background:#3b82f61a}.chat-session-item:hover .chat-session-actions{display:flex}.chat-session-item.chat-session-active{background:#3b82f62e;border-left:3px solid var(--accent-blue, #3b82f6)}.chat-session-title{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-session-meta{font-size:11px;color:var(--text-secondary)}.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.ops-console{margin:10px 0;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px}.ops-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.ops-custom-row{display:flex;gap:8px;align-items:center}.ops-custom-row input{flex:1;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px;min-width:0;transition:border-color .15s ease}.ops-custom-row input:focus{outline:none;border-color:var(--accent-blue)}.ops-console-box{margin:12px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0000004d}.ops-console-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-secondary)}.ops-console{max-height:320px;overflow-y:auto;margin:0;padding:12px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;line-height:1.5;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.chat-head-actions{display:flex;align-items:center;gap:10px}.chat-thread{display:flex;flex-direction:column;gap:10px;margin:14px 0;padding:14px;max-height:60vh;overflow-y:auto;background:#0000002e;border:1px solid var(--border);border-radius:10px}.chat-bubble{max-width:85%;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg-card);white-space:pre-wrap;word-break:break-word}.chat-user{align-self:flex-end;background:#3b82f62e;border-color:#3b82f666}.chat-assistant{align-self:flex-start}.chat-error{border-color:#ef444480}.chat-bubble-role{font-size:11px;font-weight:600;color:var(--text-secondary);margin-bottom:4px}.chat-bubble-text{font-size:13px;line-height:1.5;color:var(--text-primary)}.chat-streaming .chat-bubble-text{margin:0 0 6px}.chat-streaming .chat-bubble-text>:last-child:after{content:"▍";color:var(--accent-blue, #4da3ff);animation:chat-stream-cursor .9s step-end infinite}@keyframes chat-stream-cursor{0%,to{opacity:1}50%{opacity:0}}.chat-working{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px}.chat-dots:after{content:"…";animation:chat-dots 1.2s infinite}.chat-cancel-btn{align-self:center;white-space:nowrap}.chat-cancel-btn:hover{border-color:var(--danger, #e5534b);color:var(--danger, #e5534b)}.chat-retry-row{display:flex;align-items:center;gap:10px;margin:0 0 10px}@keyframes chat-dots{0%{content:""}33%{content:"."}66%{content:".."}to{content:"..."}}.chat-followups{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.chat-chip{background:#3b82f61f;border:1px solid rgba(59,130,246,.45);color:var(--text-primary);border-radius:999px;padding:5px 12px;font-size:12px;cursor:pointer;transition:background .15s ease;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-chip:hover{background:#3b82f647}.chat-composer{border:1px solid var(--border);border-radius:10px;padding:6px 8px;background:var(--bg-card);display:flex;flex-direction:column;gap:6px}.chat-composer:focus-within{border-color:var(--accent-blue, #3b82f6)}.chat-composer-drag{border-color:var(--accent-blue, #3b82f6);background:#3b82f60f}.chat-attach-row{display:flex;flex-wrap:wrap;gap:6px}.chat-attach-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:3px 8px;border:1px solid var(--border);border-radius:999px;background:#3b82f614;color:var(--text-primary);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-paste-offer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;background:#facc150d}.chat-attach-btn{background:transparent;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:14px;padding:6px 8px;line-height:1;color:var(--text-secondary)}.chat-attach-btn:hover:not(:disabled){background:#3b82f61f}.chat-attach-btn:disabled{opacity:.4;cursor:not-allowed}.chat-attach-content{margin-top:6px}.chat-attach-content pre{margin:4px 0 0;padding:8px 10px;font-size:11px;line-height:1.4;max-height:200px;overflow:auto;background:var(--bg-input, #0d1117);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.chat-input-row{display:flex;gap:8px;align-items:center}.chat-input-row textarea.chat-input-box{flex:1;background:#00000040;border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:10px 12px;font-size:13px;min-width:0;resize:vertical;min-height:40px;max-height:160px;font-family:inherit;line-height:1.4;transition:border-color .15s ease}.chat-input-row textarea.chat-input-box:focus{outline:none;border-color:var(--accent-blue)}.chat-input-row textarea.chat-input-box:disabled{opacity:.55}.chat-working-lines{display:flex;flex-direction:column;gap:2px}.chat-step-line{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--text-secondary);line-height:1.5}.chat-steps{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border)}.chat-steps summary{cursor:pointer;font-size:11px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-steps>div{margin-top:6px}.chat-tool-cards{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}.chat-tool-card{border:1px solid var(--border);border-left:3px solid var(--accent-blue, #3b82f6);border-radius:8px;padding:6px 8px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-tool-card.chat-tool-ok{border-left-color:#22c55e}.chat-tool-card.chat-tool-err{border-left-color:#ef4444}.chat-tool-card.chat-tool-running{border-left-color:var(--accent-blue, #3b82f6);opacity:.92}.chat-tool-head{display:flex;align-items:center;gap:6px;min-width:0}.chat-tool-icon{font-size:12px;flex:none}.chat-tool-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary);flex:none}.chat-tool-args{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.chat-tool-status{font-size:12px;flex:none}.chat-tool-dur{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none}.chat-tool-detail{margin-top:5px}.chat-tool-detail summary{cursor:pointer;font-size:10.5px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-tool-body{margin:5px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-plan-card{border:1px solid var(--border);border-left:3px solid #a78bfa;border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-plan-head{display:flex;align-items:center;gap:6px}.chat-plan-icon{font-size:12px;flex:none}.chat-plan-goal{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-plan-count{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);flex:none}.chat-plan-steps{margin-top:7px;display:flex;flex-direction:column;gap:3px}.chat-plan-step{display:flex;align-items:center;gap:6px;min-width:0}.chat-plan-step-icon{font-size:11px;flex:none}.chat-plan-step-text{font-size:12px;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-plan-step-status{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10px;color:var(--text-secondary);flex:none;text-transform:uppercase}.chat-plan-step-done .chat-plan-step-text{text-decoration:line-through;opacity:.65}.chat-plan-step-blocked .chat-plan-step-text{color:#ef4444}.chat-diff-card{border:1px solid var(--border);border-left:3px solid #f59e0b;border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-diff-head{display:flex;align-items:center;gap:6px}.chat-diff-icon{font-size:12px;flex:none}.chat-diff-title{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary)}.chat-diff-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);margin-left:auto}.chat-diff-files{margin-top:6px;display:flex;flex-direction:column;gap:4px}.chat-diff-file{border:1px solid var(--border);border-radius:6px}.chat-diff-file summary{cursor:pointer;padding:4px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--accent-blue, #3b82f6);-webkit-user-select:none;user-select:none}.chat-diff-body{margin:0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-top:1px dashed var(--border)}.chat-diff-line{min-height:1.5em}.chat-diff-line.diff-add{color:#4ade80;background:color-mix(in srgb,#22c55e 12%,transparent)}.chat-diff-line.diff-del{color:#f87171;background:color-mix(in srgb,#ef4444 12%,transparent)}.chat-diff-line.diff-hunk{color:var(--text-secondary);background:color-mix(in srgb,#3b82f6 10%,transparent)}.chat-diff-file-path{display:flex;align-items:center;gap:6px}.chat-diff-toggle{flex:none;width:18px;height:18px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:11px;line-height:1;cursor:pointer;padding:0}.chat-diff-toggle-on{background:color-mix(in srgb,#22c55e 22%,transparent);border-color:#22c55e;color:#4ade80}.chat-diff-file-rejected{opacity:.55}.chat-diff-file-rejected .chat-diff-toggle{background:color-mix(in srgb,#ef4444 18%,transparent);border-color:#ef4444;color:#f87171}.chat-diff-actions{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}.chat-diff-locked{font-style:italic}.chat-artifacts{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}.chat-artifact-item{border-radius:8px}.chat-artifact-item:focus{outline:2px solid var(--accent-blue, #3b82f6);outline-offset:2px}.chat-card-copy{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer;flex:none;margin-left:6px}.chat-card-copy:hover{color:var(--text-primary);border-color:var(--accent-blue, #3b82f6)}.chat-result-card{border:1px solid var(--border);border-left:3px solid #6e7681;border-radius:8px;padding:8px 10px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-result-pass{border-left-color:#22c55e}.chat-result-fail{border-left-color:#ef4444}.chat-result-head{display:flex;align-items:center;gap:6px}.chat-result-icon{font-size:12px;flex:none}.chat-result-title{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-result-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none;text-transform:uppercase}.chat-result-body{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-deploy-card{border:1px solid var(--border);border-left:3px solid #22d3ee;border-radius:8px;padding:8px 10px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-deploy-head{display:flex;align-items:center;gap:6px}.chat-deploy-icon{font-size:12px;flex:none}.chat-deploy-title{font-size:12.5px;font-weight:600;color:var(--text-primary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.chat-deploy-url{display:block;margin-top:6px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11.5px;color:var(--accent-blue, #3b82f6);word-break:break-all}.chat-task-card{border:1px solid var(--border);border-left:3px solid var(--accent-blue, #3b82f6);border-radius:8px;padding:8px 10px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-task-running{border-left-color:var(--accent-blue, #3b82f6)}.chat-task-ok{border-left-color:#22c55e}.chat-task-err{border-left-color:#ef4444}.chat-task-head{display:flex;align-items:center;gap:8px;min-width:0}.chat-task-icon{font-size:12px;flex:none}.chat-task-cmd{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.chat-task-status{font-size:11.5px;color:var(--text-secondary);flex:none}.chat-task-exit,.chat-task-dur{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:10.5px;color:var(--text-secondary);flex:none}.chat-task-logs{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border-radius:6px;color:var(--text-secondary)}.chat-task-log{white-space:pre-wrap;word-break:break-word}.chat-task-log-stdout{color:var(--text-secondary)}.chat-task-log-stderr{color:#f87171}.chat-task-log-system{color:var(--text-secondary);font-style:italic;opacity:.85}.chat-task-log-sep{margin:4px 0 2px;padding:1px 6px;border-top:1px dashed var(--border);font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.chat-task-log-sep-stderr{color:#f87171}.chat-task-log-sep-system{color:var(--text-secondary)}.chat-draft-card{border:1px solid var(--border);border-left:3px solid #bc8cff;border-radius:8px;padding:10px 12px;margin:8px 0 2px;background:color-mix(in srgb,var(--bg-secondary, #1b1f27) 55%,transparent)}.chat-draft-card.chat-draft-saved{border-left-color:#4ade80}.chat-draft-card.chat-draft-rejected{border-left-color:#6e7681;opacity:.75}.chat-draft-head{display:flex;align-items:center;gap:6px}.chat-draft-icon{font-size:12px;flex:none}.chat-draft-title{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;font-weight:600;color:var(--text-primary)}.chat-draft-meta{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;color:var(--text-secondary);margin-left:auto}.chat-draft-desc{margin:6px 0 0;font-size:12.5px;color:var(--text-secondary)}.chat-draft-body{margin:6px 0 0;padding:6px 8px;font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow:auto;background:color-mix(in srgb,var(--bg, #14171c) 70%,transparent);border:1px dashed var(--border);border-radius:6px}.chat-draft-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.platform-config{margin-top:10px}.platform-config .hub-platform{flex-direction:column;align-items:stretch;width:100%;gap:6px;padding:8px 10px}.platform-config .hub-platform-head{display:flex;align-items:center;gap:8px}.platform-config .hub-platform-head .admin-refresh-btn{margin-left:auto}.platform-config .hub-platform-env{display:flex;flex-wrap:wrap;gap:4px 12px}.platform-config-form{display:flex;flex-direction:column;gap:8px;padding-top:4px;border-top:1px dashed var(--border-light)}.platform-config-form .hub-send-target{width:100%}.platform-config-form input{width:100%;box-sizing:border-box}.platform-config-actions{display:flex;gap:8px}.hub-remove-btn{background:transparent;border:1px solid rgba(224,49,49,.5);color:#e03131;border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.hub-remove-btn:hover{background:#e031311a}.platform-docs-link{text-decoration:none;font-size:11px;padding:2px 6px;border-radius:4px;color:var(--accent-blue, #58a6ff);border:1px solid rgba(88,166,255,.3)}.platform-docs-link:hover{background:#58a6ff1a}.platform-setup-hint{font-size:12px;color:var(--text-secondary, #8b949e);padding:4px 8px;background:#58a6ff0f;border-radius:4px;border-left:2px solid rgba(88,166,255,.3);line-height:1.4}.wizard-start-btn{background:#38bd9426;border:1px solid rgba(56,189,148,.4);color:#38bd94;border-radius:6px;padding:2px 8px;font-size:11px;cursor:pointer;white-space:nowrap}.wizard-start-btn:hover{background:#38bd9440}.wizard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.wizard-modal{background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:12px;width:520px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:0 16px 48px #00000080}.wizard-header{display:flex;align-items:center;gap:8px;padding:16px 20px;border-bottom:1px solid var(--border-light, #30363d)}.wizard-icon{font-size:20px}.wizard-title{font-size:16px;font-weight:600;color:var(--text-primary, #e6edf3);flex:1}.wizard-body{padding:20px}.wizard-section-title{font-size:14px;font-weight:600;color:var(--text-primary, #e6edf3);margin:0 0 12px}.wizard-steps{margin:0 0 16px;padding-left:20px;color:var(--text-secondary, #8b949e);font-size:13px;line-height:1.8}.wizard-steps li{margin-bottom:4px}.wizard-nav{display:flex;gap:8px;margin-top:16px}.wizard-steps-indicator{display:flex;gap:4px;margin-left:auto;margin-right:8px}.wizard-step-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e);border:1px solid var(--border-light, #30363d)}.wizard-step-dot.active{background:#58a6ff33;color:var(--accent-blue, #58a6ff);border-color:#58a6ff80}.wizard-verify-status{padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:12px;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e)}.wizard-verify-status.ok{background:#38bd941a;color:#38bd94;border:1px solid rgba(56,189,148,.3)}.wizard-verify-status.err{background:#e031311a;color:#e03131;border:1px solid rgba(224,49,49,.3)}.wizard-test-section{margin-top:12px;padding:12px;background:var(--bg-tertiary, #1c2333);border-radius:8px;border:1px solid var(--border-light, #30363d)}.wizard-test-row{display:flex;gap:8px;margin-bottom:8px}.wizard-test-input{flex:1;background:var(--bg-primary, #0d1117);border:1px solid var(--border-light, #30363d);border-radius:6px;padding:6px 10px;font-size:13px;color:var(--text-primary, #e6edf3)}.wizard-hint{margin-top:12px;font-size:12px;color:var(--text-secondary, #8b949e);line-height:1.4}.platforms-summary{display:flex;align-items:center;gap:20px;padding:12px 16px;background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;margin-bottom:16px}.platforms-summary-stat{display:flex;flex-direction:column;align-items:center;min-width:60px}.platforms-summary-number{font-size:24px;font-weight:700;color:var(--text-primary, #e6edf3)}.platforms-summary-label{font-size:11px;color:var(--text-secondary, #8b949e);text-transform:uppercase}.platforms-summary-filters{display:flex;gap:6px;margin-left:auto}.platforms-filter-btn{background:transparent;border:1px solid var(--border-light, #30363d);color:var(--text-secondary, #8b949e);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.platforms-filter-btn:hover{background:var(--bg-hover, #1c2538)}.platforms-filter-btn.active{background:#58a6ff26;border-color:#58a6ff66;color:var(--accent-blue, #58a6ff)}.platforms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.platform-card{background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;padding:14px;transition:border-color .2s}.platform-card:hover{border-color:var(--border-hover, #484f58)}.platform-card.configured{border-color:#38bd944d;background:#38bd940a}.platform-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.platform-card-icon{font-size:24px;width:32px;text-align:center}.platform-card-info{flex:1;display:flex;flex-direction:column}.platform-card-name{font-size:14px;font-weight:600;color:var(--text-primary, #e6edf3)}.platform-card-category{font-size:11px;color:var(--text-secondary, #8b949e)}.platform-card-vars{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.platform-var-chip{font-size:11px;padding:2px 6px;border-radius:4px;background:var(--bg-tertiary, #1c2333);color:var(--text-secondary, #8b949e);font-family:monospace}.platform-var-chip.set{background:#38bd941f;color:#38bd94}.platform-card-actions{display:flex;gap:6px;align-items:center}.platform-card-badge{font-size:12px;color:#38bd94;font-weight:500}.platform-card-hint{margin-top:8px;font-size:11px;color:var(--text-secondary, #8b949e);line-height:1.4;padding:6px 8px;background:#58a6ff0f;border-radius:4px;border-left:2px solid rgba(88,166,255,.3)}.platforms-cli-hint{margin-top:16px;padding:10px 14px;background:var(--bg-secondary, #161b22);border:1px dashed var(--border-light, #30363d);border-radius:8px;font-size:13px}.platforms-cli-hint code{background:var(--bg-tertiary, #1c2333);padding:2px 6px;border-radius:4px;font-size:12px}.hub-chip-bundled{background:#bc8cff2e!important;color:var(--accent-purple, #bc8cff)!important;border:1px solid rgba(188,140,255,.4)}.hub-market-search{display:flex;gap:8px;margin:0 0 10px}.hub-market-search input{flex:1;min-width:0}.hub-card-actions{display:flex;align-items:center;gap:8px}.hub-mini-btn{background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:6px;padding:3px 10px;font-size:12px;cursor:pointer;transition:var(--transition)}.hub-mini-btn:hover{border-color:#e0313180;color:#e03131;background:#e0313114}.hub-mini-btn:disabled{opacity:.5;cursor:not-allowed}.chat-chip-selected{background:#3b82f673!important;border-color:#3b82f6e6!important;box-shadow:0 0 0 1px #3b82f680}.chat-question-card{border-color:#eab30880}.chat-question-card .chat-chip{max-width:none;white-space:normal;text-align:left}.timeline-bar-container{display:flex;flex-direction:column;gap:2px;min-width:120px;max-width:200px}.timeline-bar{height:6px;background:#21262d;border-radius:3px;overflow:hidden;width:100%}.timeline-bar.small{height:3px}.timeline-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.timeline-bar-fill.probe{background:#58a6ff}.timeline-bar-fill.verify{background:#3fb950}.timeline-bar-fill.use{background:#d29922}.bedrock-onboarding{max-width:900px}.bedrock-status-bar{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;margin-bottom:20px;flex-wrap:wrap}.bedrock-status-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary, #8b949e)}.bedrock-status-label{color:var(--text-secondary, #8b949e);font-size:12px}.bedrock-status-actions{margin-left:auto;display:flex;gap:8px}.bedrock-setup-wizard{background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px;padding:20px;margin-top:16px}.bedrock-wizard-step{margin-bottom:24px}.bedrock-wizard-step h4{font-size:15px;font-weight:600;color:var(--text-primary, #e6edf3);margin-bottom:10px}.bedrock-auth-options{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.bedrock-auth-option{display:flex;align-items:flex-start;gap:10px;padding:12px;background:var(--bg-tertiary, #1c2333);border:1px solid var(--border-light, #30363d);border-radius:8px;cursor:pointer;transition:border-color .15s}.bedrock-auth-option:hover{border-color:var(--accent-blue, #58a6ff)}.bedrock-auth-option.selected{border-color:var(--accent-blue, #58a6ff);background:#58a6ff14}.bedrock-auth-option strong{display:block;color:var(--text-primary, #e6edf3);font-size:14px}.bedrock-auth-option span{display:block;color:var(--text-secondary, #8b949e);font-size:12px;margin-top:2px}.bedrock-auth-option input[type=radio]{margin-top:2px;accent-color:var(--accent-blue, #58a6ff)}.bedrock-wizard-fields{display:flex;flex-direction:column;gap:10px}.bedrock-setup-hint{padding:10px 12px;background:var(--bg-tertiary, #1c2333);border:1px solid var(--border-light, #30363d);border-radius:6px;font-size:13px;color:var(--text-secondary, #8b949e);margin-bottom:10px}.bedrock-setup-hint strong{color:var(--text-primary, #e6edf3);display:block;margin-bottom:4px}.bedrock-setup-hint ol{margin:4px 0 0 18px;padding:0}.bedrock-setup-hint li{margin-bottom:2px}.bedrock-region-select{width:100%;max-width:400px;padding:8px 12px;background:var(--bg-tertiary, #1c2333);color:var(--text-primary, #e6edf3);border:1px solid var(--border-light, #30363d);border-radius:6px;font-size:14px}.bedrock-model-access-hint{margin-bottom:12px}.bedrock-family-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.bedrock-family-card{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg-tertiary, #1c2333);border:1px solid var(--border-light, #30363d);border-radius:6px;cursor:pointer;transition:border-color .15s}.bedrock-family-card:hover{border-color:var(--accent-blue, #58a6ff)}.bedrock-family-card.selected{border-color:var(--accent-blue, #58a6ff);background:#58a6ff14}.bedrock-family-card input[type=checkbox]{accent-color:var(--accent-blue, #58a6ff)}.bedrock-family-card strong{display:block;font-size:13px;color:var(--text-primary, #e6edf3)}.bedrock-family-card span{display:block;font-size:11px;color:var(--text-secondary, #8b949e)}.bedrock-wizard-actions{display:flex;gap:10px;margin-top:16px}.bedrock-getting-started{margin-top:20px}.bedrock-steps{display:flex;flex-direction:column;gap:12px;margin-top:12px}.bedrock-step{display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:8px}.bedrock-step-num{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--accent-blue, #58a6ff);color:#fff;border-radius:50%;font-weight:700;font-size:14px;flex-shrink:0}.bedrock-step strong{display:block;color:var(--text-primary, #e6edf3);font-size:14px}.bedrock-step span{display:block;color:var(--text-secondary, #8b949e);font-size:12px;margin-top:2px}.bedrock-quick-status,.bedrock-probe-results{margin-top:16px}.bedrock-probe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;margin-top:12px}.bedrock-probe-card{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-secondary, #161b22);border:1px solid var(--border-light, #30363d);border-radius:6px;font-size:12px}.bedrock-probe-card.bedrock-probe-accessible{border-color:#38bd944d}.bedrock-probe-card.bedrock-probe-permission-denied{border-color:#d299224d}.bedrock-probe-id{flex:1;color:var(--text-primary, #e6edf3);font-family:monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bedrock-probe-status{color:var(--text-secondary, #8b949e);font-size:11px;white-space:nowrap}.bedrock-probe-action{margin-top:16px;padding:12px;background:#d2992214;border:1px solid rgba(210,153,34,.3);border-radius:6px;display:flex;align-items:center;gap:12px}.bedrock-probe-action p{margin:0;color:var(--text-primary, #e6edf3);font-size:13px}.contacts-page{max-width:1200px}.contacts-filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.contacts-filters .admin-refresh-btn{margin-left:auto}.contacts-table-wrapper{overflow-x:auto}.contacts-table{width:100%;border-collapse:collapse;font-size:13px}.contacts-table th{text-align:left;padding:8px 10px;background:var(--bg-secondary, #161b22);border-bottom:1px solid var(--border-light, #30363d);color:var(--text-secondary, #8b949e);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.contacts-table td{padding:8px 10px;border-bottom:1px solid var(--border-light, #30363d);color:var(--text-primary, #e6edf3)}.contact-row:hover{background:#58a6ff0a}.contact-row.status-pending{background:#d299220a}.contact-row.status-rejected{background:#da36330a}.contact-name{font-weight:600}.contact-id code{background:var(--bg-tertiary, #1c2333);padding:2px 6px;border-radius:4px;font-size:12px;color:var(--text-secondary, #8b949e)}.contact-phone{color:var(--text-secondary, #8b949e)}.contact-date{color:var(--text-secondary, #8b949e);font-size:12px}.contact-actions{display:flex;gap:4px;flex-wrap:nowrap}.contact-status-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:500}.contact-status-badge.approved{background:#38bd9426;color:#38bd94}.contact-status-badge.pending{background:#d2992226;color:#d29922}.contact-status-badge.rejected{background:#da363326;color:#da3633}.contact-approve-btn{color:#38bd94}.contact-reject-btn{color:#d29922}.contact-delete-btn{color:#da3633}
|