@keak/sdk 1.0.1

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.
Files changed (89) hide show
  1. package/README.md +131 -0
  2. package/dist/Conversion.d.ts +13 -0
  3. package/dist/Conversion.d.ts.map +1 -0
  4. package/dist/KeakToolbarShadow.d.ts +21 -0
  5. package/dist/KeakToolbarShadow.d.ts.map +1 -0
  6. package/dist/components/ui/card.d.ts +9 -0
  7. package/dist/components/ui/card.d.ts.map +1 -0
  8. package/dist/components/ui/html-preview.d.ts +9 -0
  9. package/dist/components/ui/html-preview.d.ts.map +1 -0
  10. package/dist/components/ui/simple-tabs.d.ts +26 -0
  11. package/dist/components/ui/simple-tabs.d.ts.map +1 -0
  12. package/dist/components/ui/spinner.d.ts +6 -0
  13. package/dist/components/ui/spinner.d.ts.map +1 -0
  14. package/dist/components/ui/tabs.d.ts +13 -0
  15. package/dist/components/ui/tabs.d.ts.map +1 -0
  16. package/dist/components/ui/textarea.d.ts +6 -0
  17. package/dist/components/ui/textarea.d.ts.map +1 -0
  18. package/dist/index.cjs.js +17407 -0
  19. package/dist/index.cjs.js.map +1 -0
  20. package/dist/index.d.ts +101 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +17395 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/runtime/sourceInjector.d.ts +2 -0
  25. package/dist/runtime/sourceInjector.d.ts.map +1 -0
  26. package/dist/scripts/sourcePathInjection.d.ts +11 -0
  27. package/dist/scripts/sourcePathInjection.d.ts.map +1 -0
  28. package/dist/services/index.d.ts +7 -0
  29. package/dist/services/index.d.ts.map +1 -0
  30. package/dist/services/telemetry/index.d.ts +20 -0
  31. package/dist/services/telemetry/index.d.ts.map +1 -0
  32. package/dist/services/telemetry/telemetryService.d.ts +66 -0
  33. package/dist/services/telemetry/telemetryService.d.ts.map +1 -0
  34. package/dist/services/telemetry/types.d.ts +64 -0
  35. package/dist/services/telemetry/types.d.ts.map +1 -0
  36. package/dist/toolbar/AIPromptPanel.d.ts +9 -0
  37. package/dist/toolbar/AIPromptPanel.d.ts.map +1 -0
  38. package/dist/toolbar/ElementSelector.d.ts +8 -0
  39. package/dist/toolbar/ElementSelector.d.ts.map +1 -0
  40. package/dist/toolbar/ExperimentPanel.d.ts +9 -0
  41. package/dist/toolbar/ExperimentPanel.d.ts.map +1 -0
  42. package/dist/toolbar/KeakToolbar.d.ts +10 -0
  43. package/dist/toolbar/KeakToolbar.d.ts.map +1 -0
  44. package/dist/toolbar/MetricsPanel.d.ts +7 -0
  45. package/dist/toolbar/MetricsPanel.d.ts.map +1 -0
  46. package/dist/toolbar/PageScanPanel.d.ts +15 -0
  47. package/dist/toolbar/PageScanPanel.d.ts.map +1 -0
  48. package/dist/toolbar/components/PrimaryButton.d.ts +12 -0
  49. package/dist/toolbar/components/PrimaryButton.d.ts.map +1 -0
  50. package/dist/toolbar/components/WarningButton.d.ts +12 -0
  51. package/dist/toolbar/components/WarningButton.d.ts.map +1 -0
  52. package/dist/toolbar/components/icons/index.d.ts +13 -0
  53. package/dist/toolbar/components/icons/index.d.ts.map +1 -0
  54. package/dist/toolbar/components/ui/Badge.d.ts +10 -0
  55. package/dist/toolbar/components/ui/Badge.d.ts.map +1 -0
  56. package/dist/toolbar/components/ui/Button.d.ts +12 -0
  57. package/dist/toolbar/components/ui/Button.d.ts.map +1 -0
  58. package/dist/toolbar/components/ui/Progress.d.ts +5 -0
  59. package/dist/toolbar/components/ui/Progress.d.ts.map +1 -0
  60. package/dist/toolbar/components/ui/Tabs.d.ts +44 -0
  61. package/dist/toolbar/components/ui/Tabs.d.ts.map +1 -0
  62. package/dist/toolbar/components/ui/dropdown-menu.d.ts +28 -0
  63. package/dist/toolbar/components/ui/dropdown-menu.d.ts.map +1 -0
  64. package/dist/toolbar/lib/utils.d.ts +3 -0
  65. package/dist/toolbar/lib/utils.d.ts.map +1 -0
  66. package/dist/toolbar/utils/fiberSource.d.ts +64 -0
  67. package/dist/toolbar/utils/fiberSource.d.ts.map +1 -0
  68. package/dist/toolbar/utils/keakCodeClient.d.ts +104 -0
  69. package/dist/toolbar/utils/keakCodeClient.d.ts.map +1 -0
  70. package/dist/toolbar.css +1 -0
  71. package/dist/toolbar.js +1257 -0
  72. package/dist/toolbar.js.map +1 -0
  73. package/dist/utils/generateElementId.d.ts +44 -0
  74. package/dist/utils/generateElementId.d.ts.map +1 -0
  75. package/dist/utils/injectDataId.d.ts +33 -0
  76. package/dist/utils/injectDataId.d.ts.map +1 -0
  77. package/package.json +152 -0
  78. package/src/cli/ai-helper.js +206 -0
  79. package/src/cli/code-transformer.js +354 -0
  80. package/src/cli/conversion-detector.js +716 -0
  81. package/src/cli/framework-config.js +477 -0
  82. package/src/cli/install.js +618 -0
  83. package/src/cli/keak-setup.js +43 -0
  84. package/src/cli/revert-conversions.js +264 -0
  85. package/src/cli/safe-transformer.js +456 -0
  86. package/src/cli/simple-transformer.js +339 -0
  87. package/src/plugins/README.md +131 -0
  88. package/src/plugins/babel-source-inject.cjs +170 -0
  89. package/src/plugins/next.cjs +145 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Keak Code WebSocket Client
3
+ *
4
+ * This client connects the keak-toolbar (running in preview iframe) to the
5
+ * Keak Code IDE via WebSocket for enhanced source mapping.
6
+ */
7
+ export interface EnhancedElementData {
8
+ tagName: string;
9
+ textContent: string;
10
+ className: string;
11
+ id: string;
12
+ outerHTML: string;
13
+ keakId?: string;
14
+ sourceMapping?: {
15
+ method: 'react-fiber' | 'jsx-tool' | 'search-fallback' | 'babel-plugin';
16
+ fileName: string;
17
+ lineNumber: number;
18
+ columnNumber?: number;
19
+ componentName?: string;
20
+ confidence: 'high' | 'medium' | 'low';
21
+ };
22
+ parentInfo?: {
23
+ tagName: string;
24
+ className: string;
25
+ childIndex: number;
26
+ };
27
+ parentText?: string;
28
+ childrenText?: string[];
29
+ }
30
+ export interface KeakCodeClientOptions {
31
+ wsUrl: string;
32
+ onConnected?: () => void;
33
+ onDisconnected?: () => void;
34
+ onError?: (error: Error) => void;
35
+ onMessage?: (message: any) => void;
36
+ autoReconnect?: boolean;
37
+ reconnectInterval?: number;
38
+ }
39
+ export declare class KeakCodeClient {
40
+ private ws;
41
+ private options;
42
+ private reconnectTimer;
43
+ private isIntentionallyClosed;
44
+ private messageQueue;
45
+ private connectionStatus;
46
+ constructor(options: KeakCodeClientOptions);
47
+ /**
48
+ * Connect to Keak Code WebSocket server
49
+ */
50
+ connect(): void;
51
+ /**
52
+ * Disconnect from server
53
+ */
54
+ disconnect(): void;
55
+ /**
56
+ * Send element selection data to IDE
57
+ */
58
+ sendElementSelected(elementData: EnhancedElementData): void;
59
+ /**
60
+ * Request file content from IDE
61
+ */
62
+ requestFile(path: string): void;
63
+ /**
64
+ * Send ping to keep connection alive
65
+ */
66
+ ping(): void;
67
+ /**
68
+ * Send a generic message to the server (public API)
69
+ */
70
+ sendMessage(message: any): void;
71
+ /**
72
+ * Send a message to the server
73
+ */
74
+ private send;
75
+ /**
76
+ * Send all queued messages
77
+ */
78
+ private flushMessageQueue;
79
+ /**
80
+ * Schedule reconnection attempt
81
+ */
82
+ private scheduleReconnect;
83
+ /**
84
+ * Get current connection status
85
+ */
86
+ getStatus(): 'disconnected' | 'connecting' | 'connected';
87
+ /**
88
+ * Check if connected
89
+ */
90
+ isConnected(): boolean;
91
+ }
92
+ /**
93
+ * Detect if running inside Keak Code IDE
94
+ */
95
+ export declare function isKeakCodeEnvironment(): boolean;
96
+ /**
97
+ * Get WebSocket URL for Keak Code
98
+ */
99
+ export declare function getKeakCodeWsUrl(): string | null;
100
+ /**
101
+ * Create and initialize Keak Code client
102
+ */
103
+ export declare function createKeakCodeClient(onConnected?: () => void, onDisconnected?: () => void, onError?: (error: Error) => void): KeakCodeClient | null;
104
+ //# sourceMappingURL=keakCodeClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keakCodeClient.d.ts","sourceRoot":"","sources":["../../../src/toolbar/utils/keakCodeClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE;QACd,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,iBAAiB,GAAG,cAAc,CAAC;QACxE,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACvC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,qBAAqB,CAAkB;IAC/C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,gBAAgB,CAA+D;gBAE3E,OAAO,EAAE,qBAAqB;IAY1C;;OAEG;IACH,OAAO,IAAI,IAAI;IAiEf;;OAEG;IACH,UAAU,IAAI,IAAI;IAgBlB;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,IAAI;IAgBZ;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,SAAS,IAAI,cAAc,GAAG,YAAY,GAAG,WAAW;IAIxD;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAK/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAoBhD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,CAAC,EAAE,MAAM,IAAI,EACxB,cAAc,CAAC,EAAE,MAAM,IAAI,EAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC/B,cAAc,GAAG,IAAI,CA6BvB"}
@@ -0,0 +1 @@
1
+ :root{--keak-background:17 23 34;--keak-foreground:243 246 252;--keak-card:17 23 34;--keak-card-foreground:243 246 252;--keak-popover:17 23 34;--keak-popover-foreground:243 246 252;--keak-primary:88 152 237;--keak-primary-foreground:17 23 34;--keak-secondary:47 61 90;--keak-secondary-foreground:243 246 252;--keak-muted:47 61 90;--keak-muted-foreground:168 179 202;--keak-accent:88 152 237;--keak-accent-foreground:17 23 34;--keak-destructive:239 68 68;--keak-destructive-foreground:255 255 255;--keak-border:47 61 90;--keak-input:17 23 34;--keak-ring:88 152 237;--keak-radius:12px;--glass-bg:rgba(17,23,34,.95);--glass-border:rgba(88,152,237,.15);--glass-shadow:0 8px 32px rgba(0,0,0,.3);--glass-backdrop:blur(20px);--keak-chart-1:88 152 237;--keak-chart-2:16 185 129;--keak-chart-3:245 158 11;--keak-chart-4:239 68 68;--keak-chart-5:139 92 246}*{scrollbar-color:#2f3d5a #111722;scrollbar-width:thin}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#111722;border-radius:3px}::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px;-webkit-transition:background .2s;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:#374151}::-webkit-scrollbar-corner{background:#111722}.keak-toolbar-panel-content::-webkit-scrollbar{width:6px}.keak-toolbar-panel-content::-webkit-scrollbar-track{background:transparent}.keak-toolbar-panel-content::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-toolbar-panel-content::-webkit-scrollbar-thumb:hover{background:#374151}.keak-toolbar{backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--keak-radius);box-shadow:var(--glass-shadow);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-size:14px;line-height:1.5;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none}.keak-toolbar:before{background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(147,197,253,.05) 50%,rgba(59,130,246,.1));bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:-1}.keak-toolbar *{box-sizing:border-box}.keak-toolbar.dragging{backdrop-filter:blur(25px);box-shadow:0 12px 40px rgba(59,130,246,.25),0 0 0 1px rgba(59,130,246,.3);transform:scale(1.02);transition:none}.keak-toolbar.dragging .keak-toolbar-header{cursor:grabbing!important}.keak-toolbar.minimized{border-radius:26px;box-shadow:0 4px 20px rgba(59,130,246,.2);height:52px;width:52px}.keak-toolbar-toggle{align-items:center;background:transparent;border:none;border-radius:26px;cursor:pointer;display:flex;height:52px;justify-content:center;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);width:52px}.keak-toolbar-toggle:before{background:linear-gradient(135deg,rgba(59,130,246,.2),rgba(147,197,253,.1));border-radius:inherit;content:"";inset:0;opacity:0;position:absolute;transition:opacity .3s ease}.keak-toolbar-toggle:hover:before{opacity:1}.keak-toolbar-toggle:hover{box-shadow:0 6px 24px rgba(59,130,246,.3);transform:scale(1.08)}.keak-toolbar-collapsed{align-items:center;background:var(--glass-bg);border-radius:26px;box-shadow:var(--glass-shadow);display:flex;gap:12px;min-width:140px;padding:8px 16px}.keak-toolbar-collapsed .keak-toolbar-toggle{align-items:center;display:flex;flex:1;gap:8px;justify-content:flex-start;padding:0 12px}.keak-toolbar-label{color:hsl(var(--keak-foreground));font-size:14px;font-weight:600}.keak-toolbar-minimize{align-items:center;background:transparent;border:none;border-radius:10px;color:hsl(var(--keak-muted-foreground));cursor:pointer;display:flex;height:36px;justify-content:center;transition:all .2s ease;width:36px}.keak-toolbar-minimize:hover{background:hsl(var(--keak-accent));color:hsl(var(--keak-accent-foreground));transform:scale(1.05)}.keak-toolbar.expanded{display:flex;flex-direction:column;max-height:650px;width:400px}.keak-toolbar-expanded{background:var(--glass-bg);border-radius:var(--keak-radius);display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}.keak-toolbar-header{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.95);border-bottom:1px solid hsl(var(--keak-border));cursor:grab;display:flex;padding:16px 20px;position:relative;transition:all .2s ease;z-index:2}.keak-toolbar-header:before{background:linear-gradient(90deg,rgba(59,130,246,.05),transparent 50%,rgba(59,130,246,.05));bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.keak-toolbar-header:hover{background:hsla(0,0%,100%,.98)}.keak-toolbar-header:active{cursor:grabbing}.keak-toolbar-brand{align-items:center;display:flex;flex:1;gap:10px;pointer-events:none}.keak-toolbar-title{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,hsl(var(--keak-primary)),#0ea5e9);-webkit-background-clip:text;background-clip:text;color:hsl(var(--keak-foreground));font-size:18px;font-weight:700}.keak-model-selector{margin:0 16px;pointer-events:auto;position:relative}.keak-simple-dropdown{display:inline-block;position:relative}.keak-dropdown-trigger{align-items:center;background:hsla(0,0%,100%,.9);border:1px solid hsl(var(--keak-border));border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.05);color:hsl(var(--keak-foreground));cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:8px;min-width:120px;padding:8px 14px;position:relative;transition:all .2s ease}.keak-dropdown-trigger:hover{background:rgba(59,130,246,.05);border-color:hsl(var(--keak-primary));box-shadow:0 4px 12px rgba(59,130,246,.15);transform:translateY(-1px)}.keak-dropdown-arrow{height:12px;margin-left:auto;transition:transform .2s ease;width:12px}.keak-dropdown-trigger[data-open=true] .keak-dropdown-arrow{transform:rotate(180deg)}.keak-dropdown-content{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.98);border:1px solid hsl(var(--keak-border));border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.1);left:0;margin-top:4px;min-width:140px;overflow:hidden;position:absolute;right:0;top:100%;z-index:999999999}.keak-dropdown-item{align-items:center;color:hsl(var(--keak-foreground));cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:8px;padding:10px 14px;transition:all .2s ease}.keak-dropdown-item:hover{background:rgba(59,130,246,.08)}.keak-dropdown-item[data-selected=true]{background:rgba(59,130,246,.1);color:hsl(var(--keak-primary))}.keak-model-dropdown{-webkit-appearance:none;-moz-appearance:none;appearance:none;backdrop-filter:blur(8px);background:rgba(51,65,85,.9);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%23cbd5e1' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;background-size:16px;border:1px solid var(--glass-border);border-radius:10px;color:hsl(var(--keak-foreground));cursor:pointer;font-size:13px;font-weight:500;min-width:120px;padding:8px 32px 8px 14px;transition:all .2s ease}.keak-model-dropdown:hover{background:rgba(59,130,246,.15);border-color:hsl(var(--keak-primary));box-shadow:0 4px 12px rgba(59,130,246,.25);transform:translateY(-1px)}.keak-model-dropdown:focus{border-color:hsl(var(--keak-primary));box-shadow:0 0 0 3px rgba(59,130,246,.2);outline:none}.keak-toolbar-controls{display:flex;gap:6px;pointer-events:auto}.keak-toolbar-close{align-items:center;background:transparent;border:none;border-radius:8px;color:hsl(var(--keak-muted-foreground));cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .2s ease;width:32px}.keak-toolbar-close:hover{background:rgba(239,68,68,.1);color:hsl(var(--keak-destructive));transform:scale(1.05)}.keak-toolbar-actions{backdrop-filter:blur(8px);background:rgba(248,250,252,.8);border-bottom:1px solid hsl(var(--keak-border));display:flex;gap:10px;padding:16px 20px}.keak-toolbar,.keak-toolbar *{color:#000!important;font-weight:600}.keak-action-btn span,.keak-action-btn.active,.keak-action-btn.active *,.keak-dropdown-item,.keak-dropdown-trigger,.keak-optimize-btn,.keak-optimize-btn *,.keak-status-selected,.keak-toolbar-title{color:#fff!important}.keak-toolbar .keak-element-text,.keak-toolbar .keak-form-label,.keak-toolbar .keak-metrics-title,.keak-toolbar .keak-scan-summary-title,.keak-toolbar .keak-scan-title,.keak-toolbar .keak-suggestion-text,.keak-toolbar .keak-suggestions-header,.keak-toolbar .keak-variation-title,.keak-toolbar h1,.keak-toolbar h2,.keak-toolbar h3{color:#f3f6fc;font-weight:700}.keak-action-btn{align-items:center;backdrop-filter:blur(8px);background:hsla(0,0%,100%,.9);border:1px solid hsl(var(--keak-border));border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,.05);color:hsl(var(--keak-foreground));cursor:pointer;display:flex;flex:1;flex-direction:column;font-size:12px;gap:6px;overflow:hidden;padding:12px 16px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.keak-action-btn:before{background:linear-gradient(90deg,transparent,rgba(59,130,246,.1),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.keak-action-btn:hover:before{left:100%}.keak-action-btn:hover{background:rgba(59,130,246,.05);border-color:hsl(var(--keak-primary));box-shadow:0 4px 20px rgba(59,130,246,.15);transform:translateY(-2px)}.keak-action-btn.active{background:linear-gradient(135deg,hsl(var(--keak-primary)),#0ea5e9);border-color:hsl(var(--keak-primary));box-shadow:0 6px 20px rgba(59,130,246,.4);color:#fff}.keak-action-btn.active:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent)}.keak-action-btn span{color:hsl(var(--keak-foreground));font-weight:700;letter-spacing:.025em}.keak-toolbar-content{backdrop-filter:blur(8px);background:rgba(248,250,252,.3);flex:1;overflow-y:auto;position:relative}.keak-toolbar-content::-webkit-scrollbar-thumb{background:#2f3d5a}.keak-toolbar-content::-webkit-scrollbar-thumb:hover{background:#374151}.keak-toolbar-content:before{background:linear-gradient(180deg,rgba(59,130,246,.02),transparent 50%);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.keak-toolbar-status{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.95);border-top:1px solid hsl(var(--keak-border));color:hsl(var(--keak-foreground));display:flex;font-size:12px;font-weight:600;justify-content:space-between;padding:12px 20px}.keak-status-selected code{background:rgba(59,130,246,.1);border-radius:6px;color:hsl(var(--keak-foreground));font-family:JetBrains Mono,SF Mono,monospace;font-weight:700;padding:3px 8px}.keak-toolbar-status kbd{background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.1);border-radius:6px;color:hsl(var(--keak-foreground));font-family:inherit;font-size:11px;font-weight:600;padding:3px 8px}.keak-toolbar-content::-webkit-scrollbar{width:6px}.keak-toolbar-content::-webkit-scrollbar-track{background:transparent}.keak-toolbar-content::-webkit-scrollbar-thumb{background:rgba(59,130,246,.3);border-radius:3px;-webkit-transition:background .2s ease;transition:background .2s ease}.keak-toolbar-content::-webkit-scrollbar-thumb:hover{background:rgba(59,130,246,.5)}@keyframes keak-slide-up{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes keak-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes keak-scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.keak-toolbar.expanded{animation:keak-slide-up .4s cubic-bezier(.34,1.56,.64,1)}@media (max-width:480px){.keak-toolbar.expanded{max-width:400px;width:calc(100vw - 32px)}}.keak-selected-highlight{background:rgba(37,99,235,.08);border:2px solid #2563eb;border-radius:8px;box-shadow:0 0 0 1px rgba(37,99,235,.1),0 4px 12px rgba(37,99,235,.15),0 2px 4px rgba(37,99,235,.1);pointer-events:none;position:absolute;transition:all .2s cubic-bezier(.4,0,.2,1);z-index:999998}.keak-selected-highlight.generating{animation:keak-shimmer 2s ease-in-out infinite;background:linear-gradient(90deg,rgba(37,99,235,.08),rgba(37,99,235,.2) 50%,rgba(37,99,235,.08));background-size:200% 100%;border-color:#2563eb;box-shadow:0 0 0 1px rgba(37,99,235,.2),0 4px 16px rgba(37,99,235,.25),0 2px 6px rgba(37,99,235,.15)}@keyframes keak-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.keak-loading-spinner{animation:keak-spin 1s linear infinite;border:2px solid rgba(59,130,246,.2);border-radius:50%;border-top:2px solid hsl(var(--keak-primary));height:20px;width:20px}@keyframes keak-spin{to{transform:rotate(1turn)}}.keak-success-toast{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 8px 25px rgba(16,185,129,.3)}.keak-error-toast,.keak-success-toast{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);border-radius:12px;color:#fff;font-weight:500;padding:12px 20px}.keak-error-toast{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 8px 25px rgba(239,68,68,.3)}.keak-selector-highlight{background:rgba(88,152,237,.15);border:2px solid #6b7280;border-radius:4px;box-shadow:0 0 0 2px rgba(88,152,237,.25);display:none;pointer-events:none;position:absolute;transition:all .1s ease-out;z-index:999999}.keak-selector-tooltip{backdrop-filter:blur(12px);background:rgba(15,23,42,.9);border:1px solid hsla(0,0%,100%,.1);border-radius:8px;box-shadow:0 8px 25px rgba(0,0,0,.3);color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;padding:8px 14px;pointer-events:none;position:fixed;white-space:nowrap;z-index:999999}.keak-selector-tooltip code{background:rgba(59,130,246,.2);border-radius:4px;color:#60a5fa;font-family:JetBrains Mono,SF Mono,monospace;font-weight:500;padding:2px 6px}.keak-selector-instructions{align-items:center;animation:keak-fade-in .3s ease-out;background:rgba(15,23,42,.9);border:1px solid hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 12px 40px rgba(0,0,0,.4);color:#fff;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;gap:16px;left:50%;padding:16px 24px;pointer-events:none;position:fixed;top:24px;transform:translateX(-50%);z-index:999999}.keak-selector-instructions-icon{align-items:center;background:hsl(var(--keak-primary));border-radius:50%;box-shadow:0 4px 12px rgba(59,130,246,.4);display:flex;height:28px;justify-content:center;width:28px}.keak-selector-instructions kbd{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:6px;font-size:12px;font-weight:500;margin:0 4px;padding:4px 8px}body.keak-selecting,body.keak-selecting *{cursor:crosshair!important}body.keak-selecting .keak-selector-highlight,body.keak-selecting .keak-selector-instructions,body.keak-selecting .keak-selector-tooltip,body.keak-selecting .keak-toolbar{cursor:default!important}.keak-prompt-panel{display:flex;flex-direction:column;height:100%;padding:16px}.keak-prompt-header{margin-bottom:12px}.keak-prompt-title{color:hsl(var(--keak-foreground));font-size:14px;font-weight:600;margin-bottom:8px}.keak-element-preview{background:hsla(0,0%,100%,.05);border:1px solid #2f3d5a;border-radius:4px;color:#a8b3ca;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:12px;overflow:hidden;padding:8px 12px;text-overflow:ellipsis;white-space:nowrap}.keak-main-input{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.keak-input-label{color:hsl(var(--keak-foreground));font-size:14px;font-weight:600;margin-bottom:8px}.keak-main-textarea{background:hsla(0,0%,100%,.05);border:1px solid #2f3d5a;border-radius:4px;color:#f3f6fc;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;font-weight:400;line-height:1.5;min-height:100px;padding:16px;resize:vertical;transition:all .2s;width:100%}.keak-main-textarea:focus{background:hsla(0,0%,100%,.08);border-color:#374151;box-shadow:0 4px 10px 0 rgba(43,59,91,.12);outline:none}.keak-main-textarea::-moz-placeholder{color:#6b7280;opacity:1}.keak-main-textarea::placeholder{color:#6b7280;opacity:1}.keak-main-textarea:-webkit-autofill,.keak-main-textarea:-webkit-autofill:focus,.keak-main-textarea:-webkit-autofill:hover{-webkit-text-fill-color:#f3f6fc;-webkit-box-shadow:inset 0 0 0 1000px hsla(0,0%,100%,.05);-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}.keak-context-section{display:flex;flex-direction:column;gap:6px}.keak-context-input{background:hsla(0,0%,100%,.05);border:1px solid #2f3d5a;border-radius:4px;color:#f3f6fc;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;padding:12px 16px;transition:all .2s;width:100%}.keak-context-input:focus{background:hsla(0,0%,100%,.08);border-color:#374151;box-shadow:0 4px 10px 0 rgba(43,59,91,.12);outline:none}.keak-context-input::-moz-placeholder{color:#6b7280;opacity:1}.keak-context-input::placeholder{color:#6b7280;opacity:1}.keak-context-input:-webkit-autofill,.keak-context-input:-webkit-autofill:focus,.keak-context-input:-webkit-autofill:hover{-webkit-text-fill-color:#f3f6fc;-webkit-box-shadow:inset 0 0 0 1000px hsla(0,0%,100%,.05);-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}.keak-optimize-section{align-items:center;display:flex;flex-direction:column;gap:8px;margin-top:20px}.keak-optimize-btn{align-items:center;background:linear-gradient(135deg,#3b82f6,#6366f1);border:none;border-radius:12px;box-shadow:0 4px 20px rgba(59,130,246,.3);color:#fff;cursor:pointer;display:flex;font-size:16px;font-weight:800;gap:10px;justify-content:center;overflow:hidden;padding:16px 24px;position:relative;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .3s cubic-bezier(.4,0,.2,1);width:100%}.keak-optimize-btn span{color:#fff}.keak-optimize-btn:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.keak-optimize-btn:hover:before{left:100%}.keak-optimize-btn:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#4f46e5);box-shadow:0 8px 30px rgba(59,130,246,.4);transform:translateY(-2px)}.keak-optimize-btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.5;transform:none}.keak-optimize-btn:disabled:before{display:none}.keak-optimize-hint{color:#f3f6fc!important;font-size:11px;opacity:.7;text-align:center}.keak-optimize-hint kbd{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:4px;font-size:10px;font-weight:500;margin:0 2px;padding:2px 6px}.keak-suggestions{flex:1;overflow-y:auto;padding-top:16px}.keak-suggestions::-webkit-scrollbar{width:6px}.keak-suggestions::-webkit-scrollbar-track{background:transparent}.keak-suggestions::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-suggestions::-webkit-scrollbar-thumb:hover{background:#374151}.keak-loading{align-items:center;color:hsl(var(--keak-muted-foreground));display:flex;flex-direction:column;gap:12px;justify-content:center;padding:40px}.keak-suggestion-card{background:hsla(0,0%,100%,.05);border:1px solid #2f3d5a;border-radius:8px;box-shadow:0 4px 10px 0 rgba(43,59,91,.12);cursor:pointer;margin-bottom:12px;overflow:hidden;padding:16px;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1)}.keak-suggestion-card:before{background:linear-gradient(135deg,rgba(88,152,237,.05),rgba(88,152,237,.08));bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.keak-suggestion-card:hover{background:hsla(0,0%,100%,.08);border-color:#374151;box-shadow:0 4px 10px 0 rgba(43,59,91,.18);transform:translateY(-2px)}.keak-suggestion-card:hover:before{opacity:1}.keak-suggestion-text{color:#f3f6fc;font-size:14px;font-weight:600;line-height:1.4;margin-bottom:8px;position:relative;text-shadow:0 1px 2px rgba(0,0,0,.05);z-index:1}.keak-suggestion-meta{align-items:center;color:#a8b3ca;display:flex;font-size:12px;font-weight:600;gap:8px;position:relative;z-index:1}.keak-suggestion-card:hover .keak-suggestion-action{opacity:1}.keak-suggestion-content-wrapper{align-items:flex-start;display:flex;gap:12px;width:100%}.keak-suggestion-badge-wrapper{flex-shrink:0}.keak-suggestion-variant-badge{align-items:center;background:rgba(88,152,237,.2);border:1px solid rgba(88,152,237,.3);border-radius:8px;box-shadow:none;color:#5898ed;display:flex;font-size:12px;font-weight:700;height:32px;justify-content:center;width:32px}.keak-suggestion-text-wrapper{flex:1;min-width:0}.keak-suggestion-action{color:#5898ed;flex-shrink:0;opacity:.6;transition:opacity .2s}.keak-variation-history{margin-bottom:12px;max-height:200px;overflow-y:auto}.keak-variation-history::-webkit-scrollbar{width:6px}.keak-variation-history::-webkit-scrollbar-track{background:transparent}.keak-variation-history::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-variation-history::-webkit-scrollbar-thumb:hover{background:#374151}.keak-variation-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.keak-variation-title{color:#f3f6fc;flex-shrink:0;font-size:13px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.05);white-space:nowrap}.keak-variation-actions{display:flex;flex-shrink:0;gap:8px}.keak-variation-item{background:hsla(0,0%,100%,.05);border:1px solid #2f3d5a;border-radius:8px;cursor:pointer;font-size:11px;margin-bottom:6px;padding:10px;transition:all .2s}.keak-variation-item:hover{background:hsla(0,0%,100%,.08);border-color:#374151}.keak-variation-item.selected{background:rgba(88,152,237,.15);border-color:#5898ed}.keak-variation-meta{align-items:center;display:flex;justify-content:space-between;margin-bottom:4px}.keak-variation-model{background:rgba(88,152,237,.2);border-radius:4px;color:#5898ed;font-size:9px;font-weight:600;padding:2px 6px;text-transform:uppercase}.keak-variation-time{color:#a8b3ca;font-size:9px}.keak-variation-prompt{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;color:#f3f6fc;display:-webkit-box;font-size:10px;line-height:1.3;margin-bottom:4px;overflow:hidden}.keak-variation-count{color:#a8b3ca;font-size:9px}.keak-save-changes-section{background:rgba(88,152,237,.1);border:1px solid rgba(88,152,237,.3);border-radius:8px;margin-top:16px;padding:16px;text-align:center}.keak-save-message{color:#f3f6fc;font-size:13px;font-weight:500;margin-bottom:12px}.keak-save-changes-btn{align-items:center;background:linear-gradient(-46.0266deg,rgba(20,10,86,0) 20.511%,rgba(20,10,86,.2) 87.062%),linear-gradient(181.531deg,rgba(255,254,254,.12) 8.1705%,rgba(2,4,13,.2) 91.829%),#5898ed;border:1px solid rgba(55,65,81,.5);border-radius:4px;box-shadow:0 8px 10px 0 rgba(1,1,42,.25),inset 2px 2px 4px 0 rgba(5,5,80,.4),inset -4px -4px 10px 0 hsla(0,0%,100%,.25),inset 4px 4px 10px 0 rgba(25,18,67,.4);color:#000!important;cursor:pointer;display:flex;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:12px 16px;transition:all .2s;width:100%}.keak-save-changes-btn *{color:#000!important}.keak-save-changes-btn:hover{box-shadow:0 8px 10px 0 rgba(1,1,42,.25),0 0 15px rgba(88,152,237,.4),inset 2px 2px 4px 0 rgba(5,5,80,.4),inset -4px -4px 10px 0 hsla(0,0%,100%,.25),inset 4px 4px 10px 0 rgba(25,18,67,.4);transform:scale(1.01)}.keak-page-scan-panel{display:flex;flex-direction:column;height:100%;padding:16px}.keak-scan-header{margin-bottom:16px}.keak-scan-title{align-items:center;color:#f3f6fc;display:flex;font-size:14px;font-weight:600;justify-content:space-between;margin-bottom:8px}.keak-scan-stats{color:#a8b3ca;display:flex;font-size:12px;gap:16px;margin-bottom:8px}.keak-scan-actions{display:flex;gap:8px;margin-bottom:8px}.keak-scan-summary{background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);border-radius:12px;font-size:12px;margin-bottom:16px;padding:16px}.keak-scan-summary-title{color:hsl(var(--keak-foreground));font-size:13px;font-weight:600;margin-bottom:6px}.keak-scan-summary-text{color:hsl(var(--keak-muted-foreground));line-height:1.4}.keak-scan-results{flex:1;overflow-y:auto}.keak-scan-results::-webkit-scrollbar{width:6px}.keak-scan-results::-webkit-scrollbar-track{background:transparent}.keak-scan-results::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-scan-results::-webkit-scrollbar-thumb:hover{background:#374151}.keak-scan-loading{align-items:center;color:hsl(var(--keak-muted-foreground));display:flex;flex-direction:column;justify-content:center;padding:40px}.keak-scan-spinner{animation:keak-spin 1s linear infinite;border:3px solid hsl(var(--keak-border));border-radius:50%;border-top:3px solid #10b981;height:32px;margin-bottom:16px;width:32px}.keak-scan-progress-container{align-items:center;display:flex;flex-direction:column;gap:16px;max-width:300px;width:100%}.keak-scan-progress-bar{height:8px;width:100%}.keak-scan-progress-text{font-size:11px}.keak-no-results,.keak-scan-progress-text{color:hsl(var(--keak-muted-foreground));text-align:center}.keak-no-results{padding:40px}.keak-element-card{background:hsl(var(--keak-card));border:1px solid hsl(var(--keak-border));border-radius:12px;margin-bottom:12px;overflow:hidden;transition:all .2s}.keak-element-card:hover{border-color:#10b981;box-shadow:0 4px 12px rgba(16,185,129,.1);transform:translateY(-1px)}.keak-element-header{align-items:center;background:hsl(var(--keak-muted));border-bottom:1px solid hsl(var(--keak-border));cursor:pointer;display:flex;justify-content:space-between;padding:12px 16px;transition:all .2s}.keak-element-header:hover{background:rgba(59,130,246,.05)}.keak-element-info{align-items:center;display:flex;flex:1;gap:10px}.keak-element-tag{background:rgba(88,152,237,.2);border-radius:4px;color:#5898ed;font-size:10px;font-weight:600;padding:3px 8px;text-transform:uppercase}.keak-element-text{color:#f3f6fc;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.keak-navigate-icon{color:hsl(var(--keak-muted-foreground));font-size:12px;margin-left:8px}.keak-priority-badge{border-radius:6px;color:#fff;font-size:10px;font-weight:600;padding:3px 8px}.keak-suggestions-list{padding:16px}.keak-suggestions-header{align-items:center;color:hsl(var(--keak-muted-foreground));display:flex;font-size:11px;font-weight:500;gap:6px;margin-bottom:12px}.keak-suggestion-item{background:hsl(var(--keak-input));border:1px solid hsl(var(--keak-border));border-radius:8px;cursor:pointer;font-size:12px;line-height:1.4;margin-bottom:8px;padding:12px;transition:all .2s}.keak-suggestion-item:hover{background:rgba(59,130,246,.05);border-color:#10b981;transform:translateX(2px)}.keak-suggestion-item:last-child{margin-bottom:0}.keak-suggestion-item.recommended{background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(99,102,241,.1));border-color:rgba(59,130,246,.3)}.keak-suggestion-content{align-items:flex-start;display:flex;gap:10px}.keak-suggestion-badge{border-radius:6px;color:#fff;flex-shrink:0;font-size:10px;font-weight:700;padding:3px 8px}.keak-suggestion-badge.recommended{background:#3b82f6}.keak-suggestion-badge.default{background:#6b7280}.keak-suggestion-text-content{flex:1;line-height:1.4}.keak-suggestion-recommended-label{color:#3b82f6;font-size:10px;font-weight:500;margin-top:4px}.keak-model-badge{align-items:center;background:rgba(59,130,246,.1);border-radius:6px;color:hsl(var(--keak-primary));display:inline-flex;font-size:10px;font-weight:600;padding:2px 8px;text-transform:uppercase}.line-clamp-2{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.space-y-2>*+*{margin-top:.5rem}.max-h-48{max-height:12rem}.keak-experiment-panel{display:flex;flex-direction:column;height:100%;padding:16px}.keak-experiment-form{display:flex;flex-direction:column;gap:12px}.keak-form-group{display:flex;flex-direction:column;gap:6px}.keak-form-label{color:hsl(var(--keak-muted-foreground));font-size:12px;font-weight:500}.keak-form-input{background:hsl(var(--keak-input));border:1px solid hsl(var(--keak-border));border-radius:8px;color:hsl(var(--keak-foreground));font-size:13px;padding:12px 16px;transition:all .2s}.keak-form-input:focus{border-color:hsl(var(--keak-primary));box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.keak-variants-section{flex:1;overflow-y:auto}.keak-variants-section::-webkit-scrollbar{width:6px}.keak-variants-section::-webkit-scrollbar-track{background:transparent}.keak-variants-section::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-variants-section::-webkit-scrollbar-thumb:hover{background:#374151}.keak-variant-card{background:hsl(var(--keak-card));border:1px solid hsl(var(--keak-border));border-radius:8px;margin-bottom:8px;padding:12px}.keak-variant-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.keak-variant-name{color:hsl(var(--keak-foreground));font-size:13px;font-weight:500}.keak-variant-content{background:hsl(var(--keak-input));border:1px solid hsl(var(--keak-border));border-radius:8px;color:hsl(var(--keak-foreground));font-family:JetBrains Mono,SF Mono,monospace;font-size:12px;min-height:60px;padding:12px;resize:vertical;width:100%}.keak-experiment-actions{display:flex;gap:8px;margin-top:16px}.keak-experiment-list{flex:1;overflow-y:auto}.keak-experiment-list::-webkit-scrollbar{width:6px}.keak-experiment-list::-webkit-scrollbar-track{background:transparent}.keak-experiment-list::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-experiment-list::-webkit-scrollbar-thumb:hover{background:#374151}.keak-experiment-item{background:hsl(var(--keak-card));border:1px solid hsl(var(--keak-border));border-radius:8px;cursor:pointer;margin-bottom:8px;padding:12px;transition:all .2s}.keak-experiment-item:hover{background:rgba(59,130,246,.02);border-color:hsl(var(--keak-primary))}.keak-experiment-name{color:hsl(var(--keak-foreground));font-weight:500}.keak-experiment-url{align-items:center;display:flex;font-size:10px;gap:4px;margin-top:4px;opacity:.7}.keak-experiment-url,.keak-no-element{color:hsl(var(--keak-muted-foreground))}.keak-no-element{padding:20px;text-align:center}.keak-metrics-panel{display:flex;flex-direction:column;height:100%;padding:16px}.keak-metrics-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.keak-metrics-title{color:hsl(var(--keak-foreground));font-size:14px;font-weight:600}.keak-time-selector{background:hsl(var(--keak-muted));border-radius:6px;display:flex;gap:4px;padding:2px}.keak-time-option{background:transparent;border:none;border-radius:4px;color:hsl(var(--keak-muted-foreground));cursor:pointer;font-size:11px;font-weight:500;padding:4px 8px;transition:all .2s}.keak-time-option.active{background:hsl(var(--keak-primary));color:#fff}.keak-metrics-list{flex:1;overflow-y:auto}.keak-metrics-list::-webkit-scrollbar{width:6px}.keak-metrics-list::-webkit-scrollbar-track{background:transparent}.keak-metrics-list::-webkit-scrollbar-thumb{background:#2f3d5a;border-radius:3px}.keak-metrics-list::-webkit-scrollbar-thumb:hover{background:#374151}.keak-metric-card{background:hsl(var(--keak-card));border:1px solid hsl(var(--keak-border));border-radius:8px;cursor:pointer;margin-bottom:8px;padding:12px;transition:all .2s}.keak-metric-card:hover{background:rgba(59,130,246,.02);border-color:hsl(var(--keak-primary))}.keak-metric-card.selected{background:rgba(59,130,246,.05);border-color:hsl(var(--keak-primary))}.keak-empty-state{color:hsl(var(--keak-muted-foreground));padding:40px 20px;text-align:center}.keak-multi-element-toggle{background:hsla(0,0%,100%,.95);border:1px solid hsl(var(--keak-border));border-radius:12px;margin-bottom:16px;padding:20px}.keak-toggle-header{margin-bottom:16px;text-align:center}.keak-toggle-title{color:hsl(var(--keak-foreground));font-size:16px;font-weight:700;margin-bottom:6px}.keak-toggle-info{color:hsl(var(--keak-muted-foreground));font-size:12px;font-weight:500}.keak-version-toggle{background:hsl(var(--keak-muted));border-radius:10px;display:flex;gap:12px;margin-bottom:20px;padding:4px}.keak-version-btn{background:transparent;border:none;border-radius:8px;color:hsl(var(--keak-muted-foreground));cursor:pointer;flex:1;font-size:14px;font-weight:600;overflow:hidden;padding:12px 16px;position:relative;transition:all .2s ease}.keak-version-btn:hover:not(:disabled){background:rgba(59,130,246,.1);color:hsl(var(--keak-primary))}.keak-version-btn.active{background:linear-gradient(135deg,hsl(var(--keak-primary)),#0ea5e9);box-shadow:0 4px 12px rgba(59,130,246,.3);color:#fff}.keak-version-btn:disabled{cursor:not-allowed;opacity:.6}.keak-version-btn:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.keak-version-btn.active:hover:before{left:100%}@media (max-width:480px){.keak-quick-actions{flex-direction:column}.keak-element-info{align-items:flex-start}.keak-element-info,.keak-suggestions-content{flex-direction:column;gap:6px}.keak-version-toggle{flex-direction:column;gap:8px}}