cct-cli 0.7.9.0__py3-none-any.whl

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 (325) hide show
  1. calc_terminal/__init__.py +14 -0
  2. calc_terminal/__main__.py +14 -0
  3. calc_terminal/activity.py +1334 -0
  4. calc_terminal/agent.py +3387 -0
  5. calc_terminal/agent_runtime.py +519 -0
  6. calc_terminal/ai_context.py +447 -0
  7. calc_terminal/ai_modes.py +752 -0
  8. calc_terminal/ai_personalization.py +286 -0
  9. calc_terminal/ai_preview_feedback.py +213 -0
  10. calc_terminal/aicore.py +2572 -0
  11. calc_terminal/anim.py +367 -0
  12. calc_terminal/app.py +3685 -0
  13. calc_terminal/art.py +639 -0
  14. calc_terminal/atomsim.py +368 -0
  15. calc_terminal/attachments.py +743 -0
  16. calc_terminal/benchmark_system.py +414 -0
  17. calc_terminal/browser/__init__.py +36 -0
  18. calc_terminal/browser/browser_state.py +346 -0
  19. calc_terminal/browser/devserver.py +176 -0
  20. calc_terminal/browser/engine.py +494 -0
  21. calc_terminal/browser/navigation.py +84 -0
  22. calc_terminal/browser/preview.py +429 -0
  23. calc_terminal/browser/preview_entry.py +95 -0
  24. calc_terminal/browser/project_detector.py +144 -0
  25. calc_terminal/browser/server.py +449 -0
  26. calc_terminal/browser/state.py +75 -0
  27. calc_terminal/browser/watcher.py +99 -0
  28. calc_terminal/browser_gui/__init__.py +1 -0
  29. calc_terminal/browser_gui/__main__.py +3 -0
  30. calc_terminal/browser_gui/launcher.py +173 -0
  31. calc_terminal/browser_gui/playwright_browser.py +117 -0
  32. calc_terminal/browser_gui/qt_browser.py +1501 -0
  33. calc_terminal/browser_gui/webview_browser.py +57 -0
  34. calc_terminal/capabilities/__init__.py +35 -0
  35. calc_terminal/capabilities/adapters/__init__.py +33 -0
  36. calc_terminal/capabilities/adapters/bioinformatics.py +204 -0
  37. calc_terminal/capabilities/adapters/browser_adapter.py +205 -0
  38. calc_terminal/capabilities/adapters/filesystem.py +206 -0
  39. calc_terminal/capabilities/adapters/git_adapter.py +202 -0
  40. calc_terminal/capabilities/adapters/jupyter_adapter.py +138 -0
  41. calc_terminal/capabilities/adapters/ml_frameworks.py +158 -0
  42. calc_terminal/capabilities/adapters/platforms.py +200 -0
  43. calc_terminal/capabilities/adapters/python_exec.py +93 -0
  44. calc_terminal/capabilities/adapters/quantum_adapter.py +150 -0
  45. calc_terminal/capabilities/adapters/scientific_comp.py +123 -0
  46. calc_terminal/capabilities/adapters/structural_bio.py +161 -0
  47. calc_terminal/capabilities/adapters/terminal.py +99 -0
  48. calc_terminal/capabilities/bus.py +178 -0
  49. calc_terminal/capabilities/discovery.py +207 -0
  50. calc_terminal/capabilities/schema.py +221 -0
  51. calc_terminal/cat.ico +0 -0
  52. calc_terminal/cat_browser.py +2018 -0
  53. calc_terminal/chat_store.py +703 -0
  54. calc_terminal/cli.py +1178 -0
  55. calc_terminal/code_editor.py +640 -0
  56. calc_terminal/collaboration.py +723 -0
  57. calc_terminal/commands_data.py +139 -0
  58. calc_terminal/compatibility_engine.py +352 -0
  59. calc_terminal/compute/__init__.py +31 -0
  60. calc_terminal/compute/fabric.py +350 -0
  61. calc_terminal/config.py +227 -0
  62. calc_terminal/core/__init__.py +41 -0
  63. calc_terminal/core/checkpoint.py +156 -0
  64. calc_terminal/core/input/__init__.py +45 -0
  65. calc_terminal/core/mode_registry.py +300 -0
  66. calc_terminal/core/project_graph.py +172 -0
  67. calc_terminal/core/recovery.py +129 -0
  68. calc_terminal/core/security_layer.py +112 -0
  69. calc_terminal/core/task_graph.py +202 -0
  70. calc_terminal/core/unified_runtime.py +184 -0
  71. calc_terminal/core/verification.py +257 -0
  72. calc_terminal/customization.py +1566 -0
  73. calc_terminal/derivations.py +153 -0
  74. calc_terminal/device_control.py +263 -0
  75. calc_terminal/diagnostics/__init__.py +27 -0
  76. calc_terminal/diagnostics/doctor_engine.py +382 -0
  77. calc_terminal/diagnostics/self_test.py +247 -0
  78. calc_terminal/doctor.py +519 -0
  79. calc_terminal/easter_eggs.py +274 -0
  80. calc_terminal/editor/__init__.py +1 -0
  81. calc_terminal/editor/actions.py +263 -0
  82. calc_terminal/editor/commands.py +160 -0
  83. calc_terminal/editor/shortcuts.py +226 -0
  84. calc_terminal/engine.py +259 -0
  85. calc_terminal/errors.py +120 -0
  86. calc_terminal/event_stream.py +146 -0
  87. calc_terminal/eventbus.py +133 -0
  88. calc_terminal/extensions.py +733 -0
  89. calc_terminal/fallback_cli.py +1321 -0
  90. calc_terminal/first_run.py +265 -0
  91. calc_terminal/fomoji_auth.py +1043 -0
  92. calc_terminal/formulas.py +82 -0
  93. calc_terminal/fs_cache.py +121 -0
  94. calc_terminal/fs_watcher.py +277 -0
  95. calc_terminal/game.py +193 -0
  96. calc_terminal/gen1.py +5 -0
  97. calc_terminal/generators.py +245 -0
  98. calc_terminal/gestures/__init__.py +42 -0
  99. calc_terminal/gestures/bindings.py +175 -0
  100. calc_terminal/gestures/manager.py +477 -0
  101. calc_terminal/goodbye.py +363 -0
  102. calc_terminal/gpu3d.py +290 -0
  103. calc_terminal/graphs.py +358 -0
  104. calc_terminal/hardware_analyzer.py +440 -0
  105. calc_terminal/host/__init__.py +30 -0
  106. calc_terminal/host/browser_manager.py +187 -0
  107. calc_terminal/host/desktop.py +1386 -0
  108. calc_terminal/host/launcher.py +395 -0
  109. calc_terminal/host/terminal.py +279 -0
  110. calc_terminal/identity.py +216 -0
  111. calc_terminal/input/__init__.py +54 -0
  112. calc_terminal/input/capabilities.py +258 -0
  113. calc_terminal/input/focus.py +87 -0
  114. calc_terminal/input/gestures.py +64 -0
  115. calc_terminal/input/pointer.py +114 -0
  116. calc_terminal/input/touch.py +345 -0
  117. calc_terminal/keys.py +84 -0
  118. calc_terminal/live_automation.py +165 -0
  119. calc_terminal/mathtext.py +433 -0
  120. calc_terminal/mcp.py +386 -0
  121. calc_terminal/memory.py +337 -0
  122. calc_terminal/memory_v2.py +479 -0
  123. calc_terminal/metrics.py +333 -0
  124. calc_terminal/mode_detection.py +146 -0
  125. calc_terminal/model.py +2431 -0
  126. calc_terminal/model_router.py +665 -0
  127. calc_terminal/models/__init__.py +0 -0
  128. calc_terminal/models/active_state.py +187 -0
  129. calc_terminal/models/dynamic_registry.py +584 -0
  130. calc_terminal/models/manager.py +781 -0
  131. calc_terminal/models/model_metadata.json +3526 -0
  132. calc_terminal/models/profiles.py +194 -0
  133. calc_terminal/models/registry.py +265 -0
  134. calc_terminal/models/schema.py +197 -0
  135. calc_terminal/models/validator.py +287 -0
  136. calc_terminal/models/verification_engine.py +368 -0
  137. calc_terminal/native_picker.py +215 -0
  138. calc_terminal/ollama_catalog.py +279 -0
  139. calc_terminal/ollama_download.py +233 -0
  140. calc_terminal/orchestrator.py +304 -0
  141. calc_terminal/package_research.py +322 -0
  142. calc_terminal/packages.py +1024 -0
  143. calc_terminal/pc_specs.py +116 -0
  144. calc_terminal/permissions.py +334 -0
  145. calc_terminal/pet.py +106 -0
  146. calc_terminal/pipeline.py +505 -0
  147. calc_terminal/platform/__init__.py +491 -0
  148. calc_terminal/platform/desktop.py +491 -0
  149. calc_terminal/platform/web.py +781 -0
  150. calc_terminal/preview/__init__.py +1 -0
  151. calc_terminal/preview/dev_server.py +303 -0
  152. calc_terminal/preview/diagnostics.py +131 -0
  153. calc_terminal/preview/live_reload.py +66 -0
  154. calc_terminal/preview/manager.py +129 -0
  155. calc_terminal/project_stats.py +209 -0
  156. calc_terminal/projects.py +328 -0
  157. calc_terminal/providers/__init__.py +0 -0
  158. calc_terminal/providers/adapters/__init__.py +80 -0
  159. calc_terminal/providers/adapters/anthropic_adapter.py +127 -0
  160. calc_terminal/providers/adapters/base.py +106 -0
  161. calc_terminal/providers/adapters/chinese_adapters.py +420 -0
  162. calc_terminal/providers/adapters/gemini_adapter.py +101 -0
  163. calc_terminal/providers/adapters/ollama_adapter.py +83 -0
  164. calc_terminal/providers/adapters/openai_adapter.py +159 -0
  165. calc_terminal/providers/adapters/other_adapters.py +246 -0
  166. calc_terminal/providers/anthropic_provider.py +172 -0
  167. calc_terminal/providers/auto_update.py +416 -0
  168. calc_terminal/providers/base_provider.py +105 -0
  169. calc_terminal/providers/discovery_manager.py +207 -0
  170. calc_terminal/providers/gemini_provider.py +178 -0
  171. calc_terminal/providers/lifecycle.py +767 -0
  172. calc_terminal/providers/ollama_adapter.py +707 -0
  173. calc_terminal/providers/openai_provider.py +254 -0
  174. calc_terminal/providers/provider_manager.py +1827 -0
  175. calc_terminal/providers/providers.json +4075 -0
  176. calc_terminal/reactionsim.py +279 -0
  177. calc_terminal/registry.py +337 -0
  178. calc_terminal/report.py +162 -0
  179. calc_terminal/research/__init__.py +45 -0
  180. calc_terminal/research/artifact_intel.py +126 -0
  181. calc_terminal/research/data_lineage.py +123 -0
  182. calc_terminal/research/experiment_ledger.py +303 -0
  183. calc_terminal/research/reproducibility.py +131 -0
  184. calc_terminal/resilience/__init__.py +47 -0
  185. calc_terminal/resilience/agent_state.py +121 -0
  186. calc_terminal/resilience/capability_matcher.py +174 -0
  187. calc_terminal/resilience/circuit_breaker.py +158 -0
  188. calc_terminal/resilience/failover_engine.py +230 -0
  189. calc_terminal/resilience/health_monitor.py +192 -0
  190. calc_terminal/resilience/ollama_adapter.py +125 -0
  191. calc_terminal/resilience/orchestrator.py +312 -0
  192. calc_terminal/resilience/types.py +134 -0
  193. calc_terminal/sandbox.py +98 -0
  194. calc_terminal/scires.py +558 -0
  195. calc_terminal/security_scanner.py +126 -0
  196. calc_terminal/session.py +294 -0
  197. calc_terminal/sim3d.py +206 -0
  198. calc_terminal/solver.py +276 -0
  199. calc_terminal/sound.py +127 -0
  200. calc_terminal/task_reports.py +287 -0
  201. calc_terminal/terminal_host.py +201 -0
  202. calc_terminal/terminal_identity.py +411 -0
  203. calc_terminal/test_ai_mode_reliability.py +344 -0
  204. calc_terminal/test_browser.py +368 -0
  205. calc_terminal/test_code_editor_upgrade.py +485 -0
  206. calc_terminal/test_customization.py +1148 -0
  207. calc_terminal/test_customization_ui.py +612 -0
  208. calc_terminal/test_dynamic_registry.py +304 -0
  209. calc_terminal/test_extensions.py +436 -0
  210. calc_terminal/test_overhaul.py +557 -0
  211. calc_terminal/test_project_detect.py +255 -0
  212. calc_terminal/test_root_cause_fix.py +527 -0
  213. calc_terminal/test_stability.py +532 -0
  214. calc_terminal/test_terminal_identity.py +132 -0
  215. calc_terminal/test_v079_speed.py +460 -0
  216. calc_terminal/theme.py +1107 -0
  217. calc_terminal/timeline.py +139 -0
  218. calc_terminal/todos.py +246 -0
  219. calc_terminal/tool_call_normalizer.py +419 -0
  220. calc_terminal/tui.py +104 -0
  221. calc_terminal/ui/__init__.py +8 -0
  222. calc_terminal/ui/activity_panel.py +231 -0
  223. calc_terminal/ui/activity_stream_panel.py +238 -0
  224. calc_terminal/ui/animations.py +122 -0
  225. calc_terminal/ui/app.py +7271 -0
  226. calc_terminal/ui/attach_panel.py +597 -0
  227. calc_terminal/ui/attachments.py +424 -0
  228. calc_terminal/ui/backup_panel.py +810 -0
  229. calc_terminal/ui/browser_shell.py +887 -0
  230. calc_terminal/ui/cat_agent.py +357 -0
  231. calc_terminal/ui/chats_panel.py +899 -0
  232. calc_terminal/ui/command_palette.py +125 -0
  233. calc_terminal/ui/command_palette_modal.py +166 -0
  234. calc_terminal/ui/composer.py +1141 -0
  235. calc_terminal/ui/context_menu.py +197 -0
  236. calc_terminal/ui/conversation.py +1435 -0
  237. calc_terminal/ui/customization_panel.py +1229 -0
  238. calc_terminal/ui/dashboard.py +404 -0
  239. calc_terminal/ui/design_system.py +557 -0
  240. calc_terminal/ui/diff_panel.py +213 -0
  241. calc_terminal/ui/editor.py +2102 -0
  242. calc_terminal/ui/empty_state.py +302 -0
  243. calc_terminal/ui/events.py +487 -0
  244. calc_terminal/ui/extensions_panel.py +815 -0
  245. calc_terminal/ui/footer.py +166 -0
  246. calc_terminal/ui/gestures_panel.py +383 -0
  247. calc_terminal/ui/goodbye_screen.py +100 -0
  248. calc_terminal/ui/header.py +1034 -0
  249. calc_terminal/ui/help_panel.py +254 -0
  250. calc_terminal/ui/live_activities.py +914 -0
  251. calc_terminal/ui/mcp_panel.py +570 -0
  252. calc_terminal/ui/memory_center.py +524 -0
  253. calc_terminal/ui/mode_colors_panel.py +525 -0
  254. calc_terminal/ui/nav_screens.py +747 -0
  255. calc_terminal/ui/ollama_panel.py +536 -0
  256. calc_terminal/ui/palette.py +221 -0
  257. calc_terminal/ui/permission_panel.py +269 -0
  258. calc_terminal/ui/personalization_panel.py +517 -0
  259. calc_terminal/ui/personalize_center.py +1568 -0
  260. calc_terminal/ui/preview_panel.py +441 -0
  261. calc_terminal/ui/resizers.py +402 -0
  262. calc_terminal/ui/sidebar.py +1285 -0
  263. calc_terminal/ui/statusbar.py +168 -0
  264. calc_terminal/ui/theme_css.py +1396 -0
  265. calc_terminal/ui/thinking.py +226 -0
  266. calc_terminal/ui/timeline_panel.py +102 -0
  267. calc_terminal/ui/todo_panel.py +193 -0
  268. calc_terminal/ui/viewport.py +136 -0
  269. calc_terminal/ui/vision_panel.py +489 -0
  270. calc_terminal/ui/welcome_modal.py +343 -0
  271. calc_terminal/ui/widgets.py +160 -0
  272. calc_terminal/ui/workspace.py +831 -0
  273. calc_terminal/viewers/__init__.py +1 -0
  274. calc_terminal/viewers/document_viewer.py +252 -0
  275. calc_terminal/viewers/image_viewer.py +241 -0
  276. calc_terminal/viewers/pdf_viewer.py +203 -0
  277. calc_terminal/viewers/presentation_viewer.py +164 -0
  278. calc_terminal/viewers/registry.py +120 -0
  279. calc_terminal/viewers/spreadsheet_viewer.py +204 -0
  280. calc_terminal/vision/__init__.py +89 -0
  281. calc_terminal/vision/analysis.py +194 -0
  282. calc_terminal/vision/annotations.py +297 -0
  283. calc_terminal/vision/capture.py +171 -0
  284. calc_terminal/vision/context.py +231 -0
  285. calc_terminal/vision/correlation.py +169 -0
  286. calc_terminal/vision/cursor.py +258 -0
  287. calc_terminal/vision/events.py +66 -0
  288. calc_terminal/vision/frame_pipeline.py +259 -0
  289. calc_terminal/vision/priority.py +218 -0
  290. calc_terminal/vision/provider.py +180 -0
  291. calc_terminal/vision/safety.py +149 -0
  292. calc_terminal/vision/session.py +281 -0
  293. calc_terminal/vision/verify.py +162 -0
  294. calc_terminal/vision.py +514 -0
  295. calc_terminal/vscode_integration.py +113 -0
  296. calc_terminal/web/__init__.py +8 -0
  297. calc_terminal/web/cat_runtime.py +710 -0
  298. calc_terminal/web/server.py +2891 -0
  299. calc_terminal/web/static/css/app.css +3152 -0
  300. calc_terminal/web/static/icons/badge-72.png +0 -0
  301. calc_terminal/web/static/icons/cat.ico +0 -0
  302. calc_terminal/web/static/icons/icon-128.png +0 -0
  303. calc_terminal/web/static/icons/icon-144.png +0 -0
  304. calc_terminal/web/static/icons/icon-152.png +0 -0
  305. calc_terminal/web/static/icons/icon-192.png +0 -0
  306. calc_terminal/web/static/icons/icon-384.png +0 -0
  307. calc_terminal/web/static/icons/icon-512.png +0 -0
  308. calc_terminal/web/static/icons/icon-72.png +0 -0
  309. calc_terminal/web/static/icons/icon-96.png +0 -0
  310. calc_terminal/web/static/icons/icon.svg +34 -0
  311. calc_terminal/web/static/icons/new-project.png +0 -0
  312. calc_terminal/web/static/icons/open-project.png +0 -0
  313. calc_terminal/web/static/index.html +734 -0
  314. calc_terminal/web/static/js/app.js +2403 -0
  315. calc_terminal/web/static/manifest.json +88 -0
  316. calc_terminal/web/static/sw.js +230 -0
  317. calc_terminal/workflow_engine.py +769 -0
  318. calc_terminal/workspace.py +593 -0
  319. calc_terminal/workspace_index.py +385 -0
  320. cct_cli-0.7.9.0.dist-info/METADATA +210 -0
  321. cct_cli-0.7.9.0.dist-info/RECORD +325 -0
  322. cct_cli-0.7.9.0.dist-info/WHEEL +5 -0
  323. cct_cli-0.7.9.0.dist-info/entry_points.txt +4 -0
  324. cct_cli-0.7.9.0.dist-info/licenses/LICENSE +21 -0
  325. cct_cli-0.7.9.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,3152 @@
1
+ /**
2
+ * FATTY CAT — 1:1 CAT CLI Terminal Simulation Stylesheet
3
+ * Strictly matching the Tokyo Night terminal palette and screenshots.
4
+ */
5
+
6
+ :root {
7
+ --term-bg: #12141c;
8
+ --term-surface: #161822;
9
+ --term-surface-alt: #1a1e2d;
10
+ --term-input-bg: #181c28;
11
+ --term-border: #24283b;
12
+ --term-border-strong: #2d354d;
13
+ --term-border-highlight: #384c75;
14
+ --term-text: #e8ebfa;
15
+ --term-text-muted: #878caf;
16
+ --term-text-faint: #5a5e80;
17
+
18
+ /* Mode accents */
19
+ --accent-build: #e0af68;
20
+ --accent-build-bg: #cca75d;
21
+ --accent-build-text: #1b1f27;
22
+ --accent-notebook: #7aa2f7;
23
+ --accent-plan: #9ece6a;
24
+ --accent-research: #ff69b4;
25
+ --accent-debugger: #dc143c;
26
+ --accent-agent: #bb9af7;
27
+
28
+ /* State colors */
29
+ --color-green: #9ece6a;
30
+ --color-amber: #e0af68;
31
+ --color-red: #f7768e;
32
+ --color-blue: #7aa2f7;
33
+ --color-cyan: #7dcfff;
34
+
35
+ --font-mono: 'JetBrains Mono', 'Consolas', 'Courier New', monospace;
36
+ }
37
+
38
+ *, *::before, *::after {
39
+ box-sizing: border-box;
40
+ margin: 0;
41
+ padding: 0;
42
+ }
43
+
44
+ html, body {
45
+ width: 100vw;
46
+ height: 100vh;
47
+ overflow: hidden;
48
+ background-color: var(--term-bg);
49
+ color: var(--term-text);
50
+ font-family: var(--font-mono);
51
+ font-size: 13px;
52
+ line-height: 1.45;
53
+ -webkit-font-smoothing: antialiased;
54
+ -moz-osx-font-smoothing: grayscale;
55
+ user-select: none;
56
+ }
57
+
58
+ /* Custom Terminal Scrollbars */
59
+ * {
60
+ scrollbar-width: thin;
61
+ scrollbar-color: #384c75 #161822;
62
+ }
63
+ ::-webkit-scrollbar {
64
+ width: 7px;
65
+ height: 7px;
66
+ }
67
+ ::-webkit-scrollbar-track {
68
+ background: #161822;
69
+ }
70
+ ::-webkit-scrollbar-thumb {
71
+ background: #2d354d;
72
+ border-radius: 2px;
73
+ }
74
+ ::-webkit-scrollbar-thumb:hover {
75
+ background: #414868;
76
+ }
77
+
78
+ /* ─────────────────────────────────────────────────────────────
79
+ 1. APP CONTAINER & TOP HEADER
80
+ ───────────────────────────────────────────────────────────── */
81
+
82
+ #app {
83
+ display: flex;
84
+ flex-direction: column;
85
+ width: 100vw;
86
+ height: 100vh;
87
+ background-color: var(--term-bg);
88
+ }
89
+
90
+ /* Top Header Bar: ≡ ○ CAT | [ 🔒 Ask Every Time ] | ▣ compressed */
91
+ #cct-header {
92
+ height: 38px;
93
+ min-height: 38px;
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: space-between;
97
+ padding: 0 16px;
98
+ background: linear-gradient(180deg, #1d2030 0%, #161822 60%, #131520 100%);
99
+ border-bottom: 1px solid var(--term-border);
100
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
101
+ box-shadow:
102
+ 0 6px 20px -2px rgba(0, 0, 0, 0.6),
103
+ 0 2px 6px rgba(0, 0, 0, 0.4),
104
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
105
+ inset 0 -1px 0 rgba(0, 0, 0, 0.3);
106
+ z-index: 10;
107
+ position: relative;
108
+ }
109
+
110
+ .cct-header-left {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 8px;
114
+ cursor: pointer;
115
+ }
116
+
117
+ .cct-brand-menu {
118
+ color: var(--accent-build);
119
+ font-weight: bold;
120
+ font-size: 15px;
121
+ letter-spacing: 0.5px;
122
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
123
+ }
124
+
125
+ .cct-brand-circle {
126
+ color: var(--accent-build);
127
+ font-size: 11px;
128
+ }
129
+
130
+ .cct-brand-title {
131
+ color: var(--accent-build);
132
+ font-weight: bold;
133
+ font-size: 14px;
134
+ letter-spacing: 1px;
135
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
136
+ }
137
+
138
+ .cct-header-center {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ }
143
+
144
+ /* Permission pill button with 3D skeuomorphic effect */
145
+ .cct-perm-pill-btn {
146
+ display: inline-flex;
147
+ align-items: center;
148
+ gap: 8px;
149
+ background: linear-gradient(180deg, #242a42 0%, #171a2a 100%);
150
+ border: 1px solid var(--term-border);
151
+ border-top: 1.5px solid rgba(255, 255, 255, 0.3);
152
+ border-left: 1px solid rgba(255, 255, 255, 0.15);
153
+ border-right: 1px solid rgba(0, 0, 0, 0.3);
154
+ border-bottom: 3px solid rgba(10, 12, 18, 0.85);
155
+ border-radius: 8px;
156
+ padding: 5px 18px;
157
+ font-family: var(--font-mono);
158
+ font-size: 12px;
159
+ font-weight: bold;
160
+ color: var(--term-text);
161
+ cursor: pointer;
162
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.2), inset 0 -1px 2px rgba(0, 0, 0, 0.4);
163
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
164
+ }
165
+
166
+ .cct-perm-pill-btn:hover {
167
+ border-color: var(--color-blue);
168
+ border-top: 1.5px solid rgba(147, 197, 253, 0.6);
169
+ box-shadow: 0 6px 16px rgba(99, 102, 241, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.3);
170
+ transform: translateY(-1.5px);
171
+ }
172
+
173
+ .cct-perm-pill-btn:active {
174
+ transform: translateY(1.5px);
175
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6), inset 0 2px 5px rgba(0, 0, 0, 0.6);
176
+ border-bottom: 1px solid rgba(10, 12, 18, 0.85);
177
+ }
178
+
179
+ .cct-header-right {
180
+ display: flex;
181
+ align-items: center;
182
+ gap: 6px;
183
+ font-size: 12px;
184
+ color: var(--term-text-muted);
185
+ cursor: pointer;
186
+ }
187
+
188
+ .cct-ws-icon {
189
+ color: var(--accent-build);
190
+ font-size: 13px;
191
+ }
192
+
193
+ .cct-ws-name {
194
+ color: var(--term-text-muted);
195
+ }
196
+
197
+ /* ─────────────────────────────────────────────────────────────
198
+ 2. MAIN WORKSPACE LAYOUT (3 PANES + RESIZERS)
199
+ ───────────────────────────────────────────────────────────── */
200
+
201
+ #cct-workspace {
202
+ display: flex;
203
+ flex: 1;
204
+ height: calc(100vh - 38px);
205
+ width: 100vw;
206
+ overflow: hidden;
207
+ position: relative;
208
+ }
209
+
210
+ /* Vertical Divider Resizers */
211
+ .cct-resizer {
212
+ width: 3px;
213
+ background: var(--term-border);
214
+ cursor: col-resize;
215
+ transition: background 150ms ease;
216
+ z-index: 5;
217
+ }
218
+
219
+ .cct-resizer:hover, .cct-resizer.dragging {
220
+ background: var(--color-blue);
221
+ }
222
+
223
+ /* ─────────────────────────────────────────────────────────────
224
+ 3. LEFT SIDEBAR (FILE EXPLORER)
225
+ ───────────────────────────────────────────────────────────── */
226
+
227
+ #cct-sidebar {
228
+ width: 260px;
229
+ min-width: 190px;
230
+ max-width: 450px;
231
+ height: 100%;
232
+ background: linear-gradient(175deg, #191c2a 0%, #161822 40%, #12141e 100%);
233
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
234
+ display: flex;
235
+ flex-direction: column;
236
+ overflow: hidden;
237
+ user-select: none;
238
+ box-shadow:
239
+ 3px 0 18px -4px rgba(0, 0, 0, 0.5),
240
+ inset -1px 0 0 rgba(255, 255, 255, 0.04),
241
+ inset 1px 0 0 rgba(255, 255, 255, 0.02);
242
+ }
243
+
244
+ .cct-sidebar-scroll {
245
+ flex: 1;
246
+ overflow-y: auto;
247
+ overflow-x: hidden;
248
+ padding: 10px 12px 14px 12px;
249
+ display: flex;
250
+ flex-direction: column;
251
+ gap: 12px;
252
+ }
253
+
254
+ .cct-sidebar-scroll::-webkit-scrollbar {
255
+ width: 5px;
256
+ }
257
+ .cct-sidebar-scroll::-webkit-scrollbar-thumb {
258
+ background: var(--term-border);
259
+ }
260
+
261
+ /* Open Folder Button area */
262
+ .cct-sidebar-top {
263
+ display: flex;
264
+ flex-direction: column;
265
+ gap: 6px;
266
+ }
267
+
268
+ .cct-sidebar-chevron {
269
+ align-self: flex-end;
270
+ color: var(--term-text-muted);
271
+ font-size: 12px;
272
+ cursor: pointer;
273
+ }
274
+
275
+ .cct-open-folder-btn {
276
+ width: 100%;
277
+ padding: 6px 10px;
278
+ background: linear-gradient(180deg, #24293e 0%, #191c2b 100%);
279
+ border: 1px solid var(--term-border);
280
+ border-top: 1.5px solid rgba(255, 255, 255, 0.2);
281
+ border-bottom: 2.5px solid rgba(10, 12, 18, 0.8);
282
+ border-radius: 6px;
283
+ color: var(--term-text);
284
+ font-family: var(--font-mono);
285
+ font-size: 12px;
286
+ font-weight: 600;
287
+ text-align: center;
288
+ cursor: pointer;
289
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.08);
290
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
291
+ }
292
+
293
+ .cct-open-folder-btn:hover {
294
+ border-color: var(--color-blue);
295
+ border-top: 1.5px solid rgba(147, 197, 253, 0.5);
296
+ color: #ffffff;
297
+ transform: translateY(-1px);
298
+ box-shadow: 0 4px 10px rgba(99, 102, 241, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.15);
299
+ }
300
+
301
+ .cct-open-folder-btn:active {
302
+ transform: translateY(1px);
303
+ border-bottom: 1px solid rgba(10, 12, 18, 0.8);
304
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), inset 0 2px 4px rgba(0, 0, 0, 0.4);
305
+ }
306
+
307
+ /* Active workspace identity block */
308
+ .cct-ws-summary {
309
+ display: flex;
310
+ flex-direction: column;
311
+ gap: 2px;
312
+ }
313
+
314
+ .cct-ws-title {
315
+ color: var(--accent-build);
316
+ font-weight: bold;
317
+ font-size: 13px;
318
+ display: flex;
319
+ align-items: center;
320
+ gap: 6px;
321
+ }
322
+
323
+ .cct-ws-languages {
324
+ color: var(--term-text-faint);
325
+ font-size: 11px;
326
+ padding-left: 2px;
327
+ }
328
+
329
+ /* ASCII File Tree */
330
+ .cct-filetree {
331
+ display: flex;
332
+ flex-direction: column;
333
+ font-size: 12px;
334
+ line-height: 1.6;
335
+ }
336
+
337
+ .cct-tree-node {
338
+ display: flex;
339
+ align-items: center;
340
+ gap: 5px;
341
+ padding: 3px 8px;
342
+ cursor: pointer;
343
+ white-space: nowrap;
344
+ border-radius: 5px;
345
+ border: 1px solid transparent;
346
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
347
+ position: relative;
348
+ }
349
+
350
+ .cct-tree-node:hover {
351
+ background: linear-gradient(135deg, rgba(122, 162, 247, 0.14) 0%, rgba(122, 162, 247, 0.08) 100%);
352
+ border-color: rgba(122, 162, 247, 0.15);
353
+ transform: translateX(3px);
354
+ box-shadow:
355
+ 0 2px 8px rgba(0, 0, 0, 0.25),
356
+ inset 0 1px 0 rgba(255, 255, 255, 0.06);
357
+ }
358
+
359
+ .cct-tree-node.active-file {
360
+ background: linear-gradient(90deg, rgba(31, 43, 69, 0.95) 0%, rgba(25, 33, 54, 0.8) 100%);
361
+ color: var(--color-blue);
362
+ border-left: 2.5px solid var(--color-blue);
363
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.3);
364
+ font-style: italic;
365
+ font-weight: bold;
366
+ }
367
+
368
+ .cct-tree-node.active-file .cct-tree-name {
369
+ color: var(--color-blue);
370
+ }
371
+
372
+ .cct-tree-guide {
373
+ color: var(--term-text-faint);
374
+ white-space: pre;
375
+ }
376
+
377
+ .cct-tree-icon {
378
+ font-size: 12px;
379
+ }
380
+
381
+ .cct-tree-name {
382
+ color: var(--term-text);
383
+ }
384
+
385
+ .cct-tree-folder {
386
+ color: var(--accent-build);
387
+ font-weight: 500;
388
+ }
389
+
390
+ /* Recent Projects list with ✕ */
391
+ .cct-recent-section {
392
+ display: flex;
393
+ flex-direction: column;
394
+ gap: 3px;
395
+ margin-top: 4px;
396
+ }
397
+
398
+ .cct-recent-row {
399
+ display: flex;
400
+ align-items: center;
401
+ justify-content: space-between;
402
+ padding: 1px 4px;
403
+ border-radius: 2px;
404
+ cursor: pointer;
405
+ font-size: 12px;
406
+ }
407
+
408
+ .cct-recent-row:hover {
409
+ background: rgba(255, 255, 255, 0.05);
410
+ }
411
+
412
+ .cct-recent-name {
413
+ display: flex;
414
+ align-items: center;
415
+ gap: 6px;
416
+ color: var(--accent-build);
417
+ }
418
+
419
+ .cct-recent-del {
420
+ color: var(--term-text-faint);
421
+ font-size: 11px;
422
+ padding: 0 4px;
423
+ cursor: pointer;
424
+ }
425
+
426
+ .cct-recent-del:hover {
427
+ color: var(--color-red);
428
+ }
429
+
430
+ /* Bottom Drag & Drop Notice */
431
+ .cct-dropzone-notice {
432
+ font-size: 11px;
433
+ color: var(--term-text-faint);
434
+ line-height: 1.4;
435
+ margin-top: auto;
436
+ padding-top: 14px;
437
+ }
438
+
439
+ /* ─────────────────────────────────────────────────────────────
440
+ 4. CENTER CHAT / WORKSPACE COLUMN
441
+ ───────────────────────────────────────────────────────────── */
442
+
443
+ #cct-main {
444
+ flex: 1;
445
+ min-width: 300px;
446
+ height: 100%;
447
+ display: flex;
448
+ flex-direction: column;
449
+ background-color: var(--term-bg);
450
+ overflow: hidden;
451
+ position: relative;
452
+ }
453
+
454
+ /* Scrollable message/welcome area */
455
+ #cct-conversation {
456
+ flex: 1;
457
+ overflow-y: auto;
458
+ overflow-x: hidden;
459
+ padding: 16px 20px 8px 20px;
460
+ display: flex;
461
+ flex-direction: column;
462
+ gap: 16px;
463
+ }
464
+
465
+ #cct-conversation::-webkit-scrollbar {
466
+ width: 6px;
467
+ }
468
+ #cct-conversation::-webkit-scrollbar-thumb {
469
+ background: var(--term-border);
470
+ }
471
+
472
+ /* Top-right opened folder stamp — 3D rounded notification widget */
473
+ .cct-opened-folder-tag {
474
+ align-self: flex-end;
475
+ display: inline-flex;
476
+ align-items: center;
477
+ gap: 8px;
478
+ background: var(--term-surface-alt);
479
+ border: 1px solid var(--term-border);
480
+ border-top: 1px solid rgba(255, 255, 255, 0.22);
481
+ border-left: 1px solid rgba(255, 255, 255, 0.15);
482
+ border-bottom: 2px solid rgba(0, 0, 0, 0.5);
483
+ border-right: 2px solid rgba(0, 0, 0, 0.4);
484
+ border-radius: 16px;
485
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.15);
486
+ padding: 4px 14px;
487
+ font-size: 11.5px;
488
+ color: var(--term-text);
489
+ margin-bottom: 8px;
490
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
491
+ }
492
+ .cct-opened-folder-tag:hover {
493
+ transform: translateY(-1px);
494
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.25);
495
+ }
496
+
497
+ /* ─────────────────────────────────────────────────────────────
498
+ 5. WELCOME DASHBOARD (SCREENSHOT 1)
499
+ ───────────────────────────────────────────────────────────── */
500
+
501
+ #cct-welcome-view {
502
+ display: flex;
503
+ flex-direction: column;
504
+ gap: 18px;
505
+ padding: 8px 0;
506
+ }
507
+
508
+ .cct-ascii-hero {
509
+ color: var(--accent-build);
510
+ white-space: pre;
511
+ font-weight: bold;
512
+ font-size: 13px;
513
+ line-height: 1.15;
514
+ }
515
+
516
+ .cct-hero-info {
517
+ display: flex;
518
+ flex-direction: column;
519
+ gap: 4px;
520
+ font-size: 13px;
521
+ }
522
+
523
+ .cct-version-row {
524
+ color: #c0caf5;
525
+ font-weight: bold;
526
+ }
527
+
528
+ .cct-tagline-row {
529
+ color: var(--term-text-faint);
530
+ }
531
+
532
+ .cct-ready-row {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: 6px;
536
+ color: var(--term-text-muted);
537
+ }
538
+ .cct-ready-dot {
539
+ color: var(--color-green);
540
+ font-size: 12px;
541
+ }
542
+ .cct-ready-faint {
543
+ color: var(--term-text-faint);
544
+ }
545
+
546
+ .cct-suggest-row {
547
+ color: var(--term-text-faint);
548
+ }
549
+
550
+ .cct-ai-status-row {
551
+ display: flex;
552
+ align-items: center;
553
+ gap: 6px;
554
+ color: var(--term-text-faint);
555
+ font-size: 13px;
556
+ }
557
+ .cct-ai-status-model {
558
+ color: var(--term-text);
559
+ font-weight: bold;
560
+ }
561
+
562
+ /* 4 Action Buttons Row */
563
+ .cct-welcome-actions {
564
+ display: flex;
565
+ gap: 12px;
566
+ flex-wrap: wrap;
567
+ margin: 6px 0 10px 0;
568
+ }
569
+
570
+ .cct-action-btn {
571
+ background: linear-gradient(180deg, #1e2238 0%, #161824 100%);
572
+ border: 1px solid var(--term-border-highlight);
573
+ border-top: 1.5px solid rgba(255, 255, 255, 0.18);
574
+ border-bottom: 3px solid rgba(8, 10, 16, 0.85);
575
+ border-radius: 6px;
576
+ padding: 8px 20px;
577
+ color: var(--term-text);
578
+ font-family: var(--font-mono);
579
+ font-size: 13px;
580
+ cursor: pointer;
581
+ display: inline-flex;
582
+ align-items: center;
583
+ gap: 8px;
584
+ box-shadow:
585
+ 0 4px 12px rgba(0, 0, 0, 0.4),
586
+ inset 0 1px 0 rgba(255, 255, 255, 0.1),
587
+ inset 0 -1px 2px rgba(0, 0, 0, 0.3);
588
+ transition: all 140ms cubic-bezier(0.16, 1, 0.3, 1);
589
+ }
590
+
591
+ .cct-action-btn:hover {
592
+ border-color: var(--color-blue);
593
+ border-top-color: rgba(147, 197, 253, 0.5);
594
+ background: linear-gradient(180deg, #242a42 0%, #1a1e30 100%);
595
+ transform: translateY(-2px);
596
+ box-shadow:
597
+ 0 8px 20px rgba(99, 102, 241, 0.25),
598
+ 0 2px 8px rgba(0, 0, 0, 0.4),
599
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
600
+ }
601
+
602
+ .cct-action-btn:active {
603
+ transform: translateY(1.5px);
604
+ border-bottom: 1px solid rgba(8, 10, 16, 0.85);
605
+ box-shadow:
606
+ 0 1px 3px rgba(0, 0, 0, 0.5),
607
+ inset 0 2px 5px rgba(0, 0, 0, 0.5);
608
+ }
609
+
610
+ /* 2 Columns: Recent Projects & Session Notebooks */
611
+ .cct-welcome-columns {
612
+ display: flex;
613
+ gap: 60px;
614
+ margin: 6px 0 14px 0;
615
+ }
616
+
617
+ .cct-column {
618
+ display: flex;
619
+ flex-direction: column;
620
+ gap: 6px;
621
+ min-width: 180px;
622
+ }
623
+
624
+ .cct-column-title {
625
+ font-weight: bold;
626
+ color: var(--term-text);
627
+ margin-bottom: 2px;
628
+ }
629
+
630
+ .cct-column-item {
631
+ color: var(--term-text-muted);
632
+ font-size: 13px;
633
+ cursor: pointer;
634
+ }
635
+ .cct-column-item:hover {
636
+ color: var(--term-text);
637
+ }
638
+
639
+ .cct-column-faint {
640
+ color: var(--term-text-faint);
641
+ font-size: 13px;
642
+ }
643
+
644
+ /* Centered horizontal divider line: - · - · - */
645
+ .cct-welcome-divider {
646
+ display: flex;
647
+ align-items: center;
648
+ justify-content: center;
649
+ gap: 8px;
650
+ color: var(--term-text-faint);
651
+ font-size: 12px;
652
+ margin: 8px 0;
653
+ width: 100%;
654
+ }
655
+
656
+ .cct-welcome-divider::before,
657
+ .cct-welcome-divider::after {
658
+ content: "";
659
+ flex: 1;
660
+ height: 1px;
661
+ background: var(--term-border);
662
+ }
663
+
664
+ /* ─────────────────────────────────────────────────────────────
665
+ 6. ACTIVE CHAT TURNS & MESSAGES (SCREENSHOT 2)
666
+ ───────────────────────────────────────────────────────────── */
667
+
668
+ #cct-chat-turns {
669
+ display: flex;
670
+ flex-direction: column;
671
+ gap: 16px;
672
+ width: 100%;
673
+ }
674
+
675
+ /* Assistant Message Block — 3D Volumetric Acrylic Floating Slab */
676
+ .cct-response-card {
677
+ width: 100%;
678
+ background: linear-gradient(165deg, rgba(28, 32, 48, 0.96) 0%, rgba(20, 23, 35, 0.98) 60%, rgba(14, 16, 25, 1) 100%);
679
+ border: 1px solid var(--term-border);
680
+ border-top: 1.5px solid rgba(255, 255, 255, 0.22);
681
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
682
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
683
+ border-bottom: 4px solid rgba(10, 12, 18, 0.95);
684
+ border-radius: 12px;
685
+ box-shadow:
686
+ 0 18px 40px -8px rgba(0, 0, 0, 0.65),
687
+ 0 6px 18px rgba(0, 0, 0, 0.45),
688
+ inset 0 1px 2px rgba(255, 255, 255, 0.12),
689
+ inset 0 -2px 6px rgba(0, 0, 0, 0.5);
690
+ padding: 16px 20px;
691
+ display: flex;
692
+ flex-direction: column;
693
+ gap: 12px;
694
+ position: relative;
695
+ transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s ease;
696
+ }
697
+
698
+ .cct-response-card:hover {
699
+ transform: translateY(-2px);
700
+ box-shadow:
701
+ 0 24px 50px -6px rgba(0, 0, 0, 0.75),
702
+ 0 8px 24px rgba(0, 0, 0, 0.5),
703
+ inset 0 1.5px 2px rgba(255, 255, 255, 0.16),
704
+ inset 0 -2px 6px rgba(0, 0, 0, 0.55);
705
+ }
706
+
707
+ .cct-card-header {
708
+ position: absolute;
709
+ top: 12px;
710
+ right: 16px;
711
+ display: flex;
712
+ align-items: center;
713
+ gap: 6px;
714
+ color: var(--accent-build);
715
+ font-size: 12px;
716
+ font-weight: bold;
717
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
718
+ }
719
+
720
+ .cct-card-content {
721
+ color: var(--term-text);
722
+ font-size: 13.5px;
723
+ line-height: 1.55;
724
+ margin-top: 4px;
725
+ padding-right: 80px;
726
+ user-select: text;
727
+ word-break: break-word;
728
+ }
729
+
730
+ .cct-card-content p {
731
+ margin-bottom: 8px;
732
+ }
733
+ .cct-card-content pre {
734
+ background: linear-gradient(175deg, #0f111a 0%, #0a0c14 100%);
735
+ border: 1px solid var(--term-border);
736
+ border-top: 1.5px solid rgba(0, 0, 0, 0.9);
737
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
738
+ box-shadow:
739
+ inset 0 4px 12px rgba(0, 0, 0, 0.8),
740
+ inset 0 1px 3px rgba(0, 0, 0, 0.5),
741
+ 0 2px 4px rgba(0, 0, 0, 0.3),
742
+ 0 1px 0 rgba(255, 255, 255, 0.04);
743
+ padding: 14px;
744
+ border-radius: 8px;
745
+ overflow-x: auto;
746
+ margin: 10px 0;
747
+ position: relative;
748
+ }
749
+ .cct-card-content code {
750
+ font-family: var(--font-mono);
751
+ }
752
+
753
+ /* 3D Hardware Tool Execution Badges */
754
+ .cct-tools-container {
755
+ display: flex;
756
+ flex-wrap: wrap;
757
+ gap: 8px;
758
+ margin: 4px 0 10px 0;
759
+ }
760
+
761
+ .cct-tool-badge {
762
+ display: inline-flex;
763
+ align-items: center;
764
+ gap: 6px;
765
+ background: linear-gradient(180deg, #20263a 0%, #151826 100%);
766
+ border: 1px solid var(--term-border);
767
+ border-top: 1px solid rgba(255, 255, 255, 0.22);
768
+ border-bottom: 2.5px solid rgba(0, 0, 0, 0.7);
769
+ border-radius: 6px;
770
+ padding: 5px 12px;
771
+ font-size: 11.5px;
772
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.1);
773
+ transition: all 0.15s ease;
774
+ }
775
+
776
+ .cct-tool-badge:hover {
777
+ transform: translateY(-1px);
778
+ border-color: var(--color-cyan);
779
+ box-shadow: 0 5px 14px rgba(125, 207, 255, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.2);
780
+ }
781
+
782
+ .cct-tool-badge-icon {
783
+ font-size: 12px;
784
+ }
785
+
786
+ .cct-tool-badge-name {
787
+ color: var(--color-cyan);
788
+ font-weight: bold;
789
+ }
790
+
791
+ .cct-tool-badge-detail {
792
+ color: var(--term-text-muted);
793
+ font-family: var(--font-mono);
794
+ font-size: 11px;
795
+ }
796
+
797
+ /* Metadata Footer inside Assistant Card */
798
+ .cct-card-meta {
799
+ display: flex;
800
+ flex-direction: column;
801
+ gap: 4px;
802
+ font-size: 12px;
803
+ border-top: 1px dashed rgba(255, 255, 255, 0.08);
804
+ padding-top: 10px;
805
+ margin-top: 6px;
806
+ }
807
+
808
+ .cct-meta-complete {
809
+ color: var(--color-green);
810
+ font-weight: bold;
811
+ }
812
+
813
+ .cct-meta-line {
814
+ color: var(--term-text-muted);
815
+ }
816
+
817
+ .cct-meta-timings {
818
+ color: var(--term-text-muted);
819
+ }
820
+
821
+ .cct-meta-calls {
822
+ color: var(--term-text-muted);
823
+ }
824
+
825
+ /* User Message Card — 3D Sculpted Golden Amber with Multi-Layer 3D Shades */
826
+ .cct-user-turn-wrapper {
827
+ display: flex;
828
+ justify-content: flex-end;
829
+ width: 100%;
830
+ perspective: 1000px;
831
+ }
832
+
833
+ .cct-user-bubble {
834
+ background: linear-gradient(145deg, #f0c379 0%, #e0af68 35%, #cca75d 70%, #a87e32 100%);
835
+ color: #171a21;
836
+ border: 1px solid rgba(255, 255, 255, 0.4);
837
+ border-top: 1.5px solid rgba(255, 255, 255, 0.7);
838
+ border-left: 1px solid rgba(255, 255, 255, 0.45);
839
+ border-right: 1px solid rgba(0, 0, 0, 0.25);
840
+ border-bottom: 4px solid #6b4c16;
841
+ border-radius: 14px 14px 3px 14px;
842
+ box-shadow:
843
+ 0 12px 28px -4px rgba(0, 0, 0, 0.6),
844
+ 0 4px 12px rgba(0, 0, 0, 0.4),
845
+ inset 0 2px 3px rgba(255, 255, 255, 0.55),
846
+ inset 0 -3px 6px rgba(90, 58, 12, 0.45);
847
+ padding: 10px 16px 8px 16px;
848
+ display: flex;
849
+ flex-direction: column;
850
+ gap: 4px;
851
+ min-width: 90px;
852
+ max-width: 72%;
853
+ user-select: text;
854
+ position: relative;
855
+ transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.15s ease;
856
+ }
857
+
858
+ .cct-user-bubble:hover {
859
+ transform: translateY(-2px) scale(1.005);
860
+ box-shadow:
861
+ 0 16px 36px -4px rgba(0, 0, 0, 0.7),
862
+ 0 6px 16px rgba(0, 0, 0, 0.45),
863
+ inset 0 2px 3px rgba(255, 255, 255, 0.65),
864
+ inset 0 -3px 6px rgba(90, 58, 12, 0.5);
865
+ }
866
+
867
+ .cct-user-bubble:active {
868
+ transform: translateY(2px) scale(0.995);
869
+ border-bottom: 2px solid #6b4c16;
870
+ box-shadow:
871
+ 0 4px 10px rgba(0, 0, 0, 0.5),
872
+ inset 0 1px 2px rgba(0, 0, 0, 0.4),
873
+ inset 0 3px 6px rgba(0, 0, 0, 0.25);
874
+ }
875
+
876
+ .cct-user-text {
877
+ font-weight: 700;
878
+ font-size: 13.5px;
879
+ color: #171a21;
880
+ line-height: 1.45;
881
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.4), 0 -1px 1px rgba(0, 0, 0, 0.15);
882
+ }
883
+
884
+ .cct-user-meta {
885
+ align-self: flex-end;
886
+ font-size: 11px;
887
+ font-weight: 600;
888
+ color: #4a3b1c;
889
+ display: flex;
890
+ align-items: center;
891
+ gap: 6px;
892
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
893
+ }
894
+
895
+ /* Permission Audit History Lines */
896
+ .cct-audit-log {
897
+ display: flex;
898
+ flex-direction: column;
899
+ gap: 4px;
900
+ font-size: 12px;
901
+ padding: 4px 0;
902
+ }
903
+
904
+ .cct-audit-line {
905
+ color: var(--term-text-muted);
906
+ font-style: italic;
907
+ }
908
+
909
+ .cct-audit-scope {
910
+ color: var(--term-text-faint);
911
+ font-style: italic;
912
+ padding-left: 12px;
913
+ }
914
+
915
+ .cct-audit-check {
916
+ color: var(--term-text-muted);
917
+ }
918
+
919
+ /* ─────────────────────────────────────────────────────────────
920
+ 7. BOTTOM COMPOSER (STICKY INPUT)
921
+ ───────────────────────────────────────────────────────────── */
922
+
923
+ #cct-composer {
924
+ background: linear-gradient(175deg, #1d2132 0%, #151824 50%, #11131c 100%);
925
+ border: 1px solid var(--term-border);
926
+ border-top: 2px solid rgba(255, 255, 255, 0.28);
927
+ border-left: 2px solid rgba(255, 255, 255, 0.16);
928
+ border-right: 2px solid rgba(10, 12, 18, 0.88);
929
+ border-bottom: 4px solid rgba(10, 12, 18, 0.98);
930
+ border-radius: 0px !important;
931
+ box-shadow:
932
+ 0 16px 36px -6px rgba(0, 0, 0, 0.85),
933
+ 0 6px 16px rgba(0, 0, 0, 0.6),
934
+ inset 0 1px 1px rgba(255, 255, 255, 0.15),
935
+ inset 0 -2px 4px rgba(0, 0, 0, 0.5);
936
+ padding: 10px 14px 8px 14px;
937
+ margin: 0 16px 14px 16px;
938
+ display: flex;
939
+ flex-direction: column;
940
+ gap: 6px;
941
+ transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
942
+ flex-shrink: 0;
943
+ }
944
+
945
+ #cct-composer:focus-within {
946
+ border-color: var(--accent-build);
947
+ border-top: 2px solid rgba(255, 255, 255, 0.45);
948
+ border-left: 2px solid rgba(255, 255, 255, 0.25);
949
+ border-right: 2px solid var(--accent-build);
950
+ border-bottom: 4px solid #644e2e;
951
+ border-radius: 0px !important;
952
+ box-shadow:
953
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
954
+ 0 0 0 1px var(--accent-build),
955
+ 0 0 16px rgba(224, 175, 104, 0.35),
956
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
957
+ transform: translateY(-1px);
958
+ }
959
+
960
+ body.mode-notebook #cct-composer:focus-within {
961
+ border-color: var(--accent-notebook);
962
+ border-right-color: var(--accent-notebook);
963
+ border-bottom-color: #2b3a67;
964
+ border-radius: 0px !important;
965
+ box-shadow:
966
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
967
+ 0 0 0 1px var(--accent-notebook),
968
+ 0 0 16px rgba(122, 162, 247, 0.35),
969
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
970
+ }
971
+
972
+ body.mode-plan #cct-composer:focus-within {
973
+ border-color: var(--accent-plan);
974
+ border-right-color: var(--accent-plan);
975
+ border-bottom-color: #3b5a27;
976
+ border-radius: 0px !important;
977
+ box-shadow:
978
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
979
+ 0 0 0 1px var(--accent-plan),
980
+ 0 0 16px rgba(158, 206, 106, 0.35),
981
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
982
+ }
983
+
984
+ body.mode-research #cct-composer:focus-within {
985
+ border-color: var(--accent-research);
986
+ border-right-color: var(--accent-research);
987
+ border-bottom-color: #5c183a;
988
+ border-radius: 0px !important;
989
+ box-shadow:
990
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
991
+ 0 0 0 1px var(--accent-research),
992
+ 0 0 16px rgba(255, 105, 180, 0.35),
993
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
994
+ }
995
+
996
+ body.mode-debugger #cct-composer:focus-within {
997
+ border-color: var(--accent-debugger);
998
+ border-right-color: var(--accent-debugger);
999
+ border-bottom-color: #4a0d18;
1000
+ border-radius: 0px !important;
1001
+ box-shadow:
1002
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
1003
+ 0 0 0 1px var(--accent-debugger),
1004
+ 0 0 16px rgba(220, 20, 60, 0.35),
1005
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
1006
+ }
1007
+
1008
+ body.mode-agent #cct-composer:focus-within {
1009
+ border-color: var(--accent-agent);
1010
+ border-right-color: var(--accent-agent);
1011
+ border-bottom-color: #3d2f5a;
1012
+ border-radius: 0px !important;
1013
+ box-shadow:
1014
+ 0 18px 42px -4px rgba(0, 0, 0, 0.85),
1015
+ 0 0 0 1px var(--accent-agent),
1016
+ 0 0 16px rgba(187, 154, 247, 0.35),
1017
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.25);
1018
+ }
1019
+
1020
+ .cct-composer-input-row {
1021
+ display: flex;
1022
+ align-items: center;
1023
+ gap: 10px;
1024
+ padding: 4px 8px;
1025
+ background: #0e1017;
1026
+ border-radius: 4px;
1027
+ border: none;
1028
+ box-shadow: inset 1.5px 1.5px 4px rgba(0, 0, 0, 0.7), inset -1px -1px 2px rgba(255, 255, 255, 0.04);
1029
+ }
1030
+
1031
+ .cct-prompt-symbol {
1032
+ color: var(--accent-build);
1033
+ font-size: 14px;
1034
+ font-weight: bold;
1035
+ line-height: 1.5;
1036
+ user-select: none;
1037
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
1038
+ }
1039
+
1040
+ .cct-composer-textarea {
1041
+ flex: 1;
1042
+ background: transparent;
1043
+ border: none;
1044
+ border-radius: 0;
1045
+ padding: 4px 6px;
1046
+ box-shadow: none;
1047
+ outline: none;
1048
+ color: var(--term-text);
1049
+ font-family: var(--font-mono);
1050
+ font-size: 13.5px;
1051
+ line-height: 1.45;
1052
+ resize: none;
1053
+ min-height: 24px;
1054
+ max-height: 120px;
1055
+ }
1056
+
1057
+ .cct-composer-textarea::placeholder {
1058
+ color: var(--term-text-faint);
1059
+ }
1060
+
1061
+ /* Composer Bottom Toolbar Row */
1062
+ .cct-composer-footer {
1063
+ display: flex;
1064
+ align-items: center;
1065
+ justify-content: space-between;
1066
+ padding-top: 4px;
1067
+ font-size: 12px;
1068
+ }
1069
+
1070
+ .cct-footer-left {
1071
+ display: flex;
1072
+ align-items: center;
1073
+ gap: 8px;
1074
+ }
1075
+
1076
+ /* 4 Mode Gradient Blocks */
1077
+ .cct-mode-blocks {
1078
+ display: inline-flex;
1079
+ gap: 2px;
1080
+ }
1081
+ .cct-mode-block {
1082
+ width: 5px;
1083
+ height: 9px;
1084
+ border-radius: 1px;
1085
+ box-shadow: 0 1px 2px rgba(0,0,0,0.4);
1086
+ }
1087
+ .b1 { background-color: #e69646; }
1088
+ .b2 { background-color: #eaab55; }
1089
+ .b3 { background-color: #eec064; }
1090
+ .b4 { background-color: #f2d573; }
1091
+
1092
+ .cct-mode-badge {
1093
+ color: var(--accent-build);
1094
+ font-weight: bold;
1095
+ cursor: pointer;
1096
+ display: inline-flex;
1097
+ align-items: center;
1098
+ gap: 4px;
1099
+ padding: 2px 6px;
1100
+ border-radius: 4px;
1101
+ background: rgba(224, 175, 104, 0.1);
1102
+ border: 1px solid rgba(224, 175, 104, 0.2);
1103
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
1104
+ transition: all 0.12s ease;
1105
+ }
1106
+
1107
+ .cct-mode-badge:hover {
1108
+ background: rgba(224, 175, 104, 0.2);
1109
+ border-color: rgba(224, 175, 104, 0.4);
1110
+ transform: translateY(-1px);
1111
+ }
1112
+
1113
+ .cct-badge-sep {
1114
+ color: var(--term-text-faint);
1115
+ }
1116
+
1117
+ .cct-model-badge {
1118
+ color: var(--term-text-muted);
1119
+ cursor: pointer;
1120
+ padding: 2px 6px;
1121
+ border-radius: 0;
1122
+ background: rgba(255, 255, 255, 0.04);
1123
+ border: 1px solid rgba(255, 255, 255, 0.08);
1124
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
1125
+ transition: all 0.12s ease;
1126
+ }
1127
+ .cct-model-badge:hover {
1128
+ color: var(--term-text);
1129
+ border-color: var(--color-blue);
1130
+ transform: translateY(-1px);
1131
+ }
1132
+
1133
+ .cct-workspace-badge {
1134
+ color: var(--term-text-muted);
1135
+ cursor: pointer;
1136
+ padding: 2px 6px;
1137
+ border-radius: 0;
1138
+ background: rgba(255, 255, 255, 0.04);
1139
+ border: 1px solid rgba(255, 255, 255, 0.08);
1140
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
1141
+ transition: all 0.12s ease;
1142
+ }
1143
+ .cct-workspace-badge:hover {
1144
+ color: var(--term-text);
1145
+ border-color: var(--color-green);
1146
+ transform: translateY(-1px);
1147
+ }
1148
+
1149
+ .cct-footer-right {
1150
+ display: flex;
1151
+ align-items: center;
1152
+ gap: 12px;
1153
+ color: var(--term-text-muted);
1154
+ }
1155
+
1156
+ .cct-context-indicator {
1157
+ color: #73daca;
1158
+ background: #0d0f17;
1159
+ padding: 2px 8px;
1160
+ border-radius: 3px;
1161
+ font-size: 11px;
1162
+ font-weight: bold;
1163
+ letter-spacing: 0.5px;
1164
+ box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.8);
1165
+ }
1166
+
1167
+ .cct-footer-btn {
1168
+ background: linear-gradient(180deg, #252b40 0%, #191c2c 100%);
1169
+ border: 1px solid var(--term-border);
1170
+ border-top: 2px solid rgba(255, 255, 255, 0.35);
1171
+ border-left: 1.5px solid rgba(255, 255, 255, 0.2);
1172
+ border-right: 1.5px solid rgba(12, 14, 20, 0.9);
1173
+ border-bottom: 3px solid rgba(12, 14, 20, 0.95);
1174
+ border-radius: 0;
1175
+ color: var(--term-text-muted);
1176
+ font-size: 13px;
1177
+ cursor: pointer;
1178
+ padding: 4px 10px;
1179
+ display: flex;
1180
+ align-items: center;
1181
+ justify-content: center;
1182
+ box-shadow: 0 2px 6px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.15);
1183
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
1184
+ }
1185
+ .cct-footer-btn:hover {
1186
+ color: var(--color-blue);
1187
+ border-color: var(--color-blue);
1188
+ border-top: 2px solid rgba(147, 197, 253, 0.6);
1189
+ transform: translateY(-1px);
1190
+ box-shadow: 0 4px 10px rgba(99, 102, 241, 0.3), inset 0 1px 0 rgba(255,255,255,0.25);
1191
+ }
1192
+ .cct-footer-btn:active {
1193
+ transform: translateY(1px);
1194
+ border-bottom: 1.5px solid rgba(12, 14, 20, 0.95);
1195
+ box-shadow: 0 1px 2px rgba(0,0,0,0.6), inset 0 2px 4px rgba(0,0,0,0.6);
1196
+ }
1197
+
1198
+ .cct-send-btn {
1199
+ background: linear-gradient(180deg, #3b82f6 0%, #1d4ed8 100%);
1200
+ color: #ffffff;
1201
+ border: 1px solid #1e40af;
1202
+ border-top: 2px solid rgba(255, 255, 255, 0.6);
1203
+ border-left: 1.5px solid rgba(255, 255, 255, 0.4);
1204
+ border-right: 1.5px solid #172554;
1205
+ border-bottom: 3.5px solid #172554;
1206
+ border-radius: 0;
1207
+ padding: 4px 14px;
1208
+ font-weight: bold;
1209
+ box-shadow: 0 4px 12px rgba(37, 99, 235, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.35);
1210
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
1211
+ }
1212
+ .cct-send-btn:hover {
1213
+ background: linear-gradient(180deg, #60a5fa 0%, #2563eb 100%);
1214
+ color: #ffffff;
1215
+ transform: translateY(-1.5px);
1216
+ box-shadow: 0 6px 16px rgba(37, 99, 235, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.4);
1217
+ }
1218
+ .cct-send-btn:active {
1219
+ transform: translateY(1.5px);
1220
+ border-bottom: 1.5px solid #172554;
1221
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6), inset 0 2px 5px rgba(0, 0, 0, 0.5);
1222
+ }
1223
+
1224
+ /* ─────────────────────────────────────────────────────────────
1225
+ 8. RIGHT COLUMN: CODE EDITOR (SCREENSHOT 2)
1226
+ ───────────────────────────────────────────────────────────── */
1227
+
1228
+ #cct-editor-pane {
1229
+ width: 42%;
1230
+ min-width: 250px;
1231
+ height: 100%;
1232
+ background: var(--term-surface);
1233
+ border-left: 1px solid var(--term-border);
1234
+ display: none;
1235
+ flex-direction: column;
1236
+ overflow: hidden;
1237
+ }
1238
+
1239
+ #cct-editor-pane.open {
1240
+ display: flex;
1241
+ }
1242
+
1243
+ /* Editor Toolbar / Tab: ≡ ○ index.html ▷ ⿻ ✕ */
1244
+ .cct-editor-toolbar {
1245
+ height: 36px;
1246
+ min-height: 36px;
1247
+ display: flex;
1248
+ align-items: center;
1249
+ justify-content: space-between;
1250
+ padding: 0 14px;
1251
+ background: var(--term-surface);
1252
+ border-bottom: 1px solid var(--term-border);
1253
+ }
1254
+
1255
+ .cct-editor-file-info {
1256
+ display: flex;
1257
+ align-items: center;
1258
+ gap: 8px;
1259
+ font-size: 13px;
1260
+ }
1261
+
1262
+ .cct-editor-menu-glyph {
1263
+ color: var(--term-text-muted);
1264
+ font-size: 14px;
1265
+ }
1266
+
1267
+ .cct-editor-dot {
1268
+ color: var(--term-text-muted);
1269
+ font-size: 10px;
1270
+ }
1271
+
1272
+ .cct-editor-filename {
1273
+ color: var(--term-text);
1274
+ font-weight: bold;
1275
+ }
1276
+
1277
+ .cct-editor-controls {
1278
+ display: flex;
1279
+ align-items: center;
1280
+ gap: 12px;
1281
+ font-size: 14px;
1282
+ }
1283
+
1284
+ .cct-editor-btn {
1285
+ background: transparent;
1286
+ border: none;
1287
+ color: var(--term-text-muted);
1288
+ cursor: pointer;
1289
+ padding: 2px 4px;
1290
+ font-family: var(--font-mono);
1291
+ display: flex;
1292
+ align-items: center;
1293
+ justify-content: center;
1294
+ transition: color 150ms;
1295
+ }
1296
+
1297
+ .cct-editor-btn:hover {
1298
+ color: var(--color-blue);
1299
+ }
1300
+
1301
+ .cct-btn-run:hover {
1302
+ color: var(--color-green);
1303
+ }
1304
+
1305
+ .cct-btn-close:hover {
1306
+ color: var(--color-red);
1307
+ }
1308
+
1309
+ /* Split container for editor vs live preview */
1310
+ .cct-editor-body {
1311
+ flex: 1;
1312
+ display: flex;
1313
+ overflow: hidden;
1314
+ position: relative;
1315
+ background: #141620;
1316
+ }
1317
+
1318
+ /* Line numbers */
1319
+ .cct-line-numbers {
1320
+ width: 44px;
1321
+ background: #141620;
1322
+ padding: 12px 10px 12px 0;
1323
+ text-align: right;
1324
+ color: #7aa2f7;
1325
+ font-size: 12.5px;
1326
+ line-height: 1.55;
1327
+ border-right: 1px solid var(--term-border);
1328
+ user-select: none;
1329
+ }
1330
+
1331
+ /* Code area */
1332
+ .cct-code-container {
1333
+ flex: 1;
1334
+ height: 100%;
1335
+ overflow: auto;
1336
+ position: relative;
1337
+ }
1338
+
1339
+ .cct-code-textarea {
1340
+ width: 100%;
1341
+ height: 100%;
1342
+ background: transparent;
1343
+ border: none;
1344
+ outline: none;
1345
+ color: var(--term-text);
1346
+ font-family: var(--font-mono);
1347
+ font-size: 12.5px;
1348
+ line-height: 1.55;
1349
+ padding: 12px 14px;
1350
+ resize: none;
1351
+ white-space: pre;
1352
+ overflow: auto;
1353
+ tab-size: 2;
1354
+ user-select: text;
1355
+ }
1356
+
1357
+ .cct-code-highlight {
1358
+ display: none; /* Syntax overlay if used */
1359
+ }
1360
+
1361
+ /* Live Web Preview inside Editor Pane */
1362
+ #cct-web-preview {
1363
+ flex: 1;
1364
+ height: 100%;
1365
+ border: none;
1366
+ background: #ffffff;
1367
+ display: none;
1368
+ }
1369
+
1370
+ #cct-web-preview.active {
1371
+ display: block;
1372
+ }
1373
+
1374
+ /* ─────────────────────────────────────────────────────────────
1375
+ 9. MODALS & POPUPS (CAT TERMINAL REPL STYLE)
1376
+ ───────────────────────────────────────────────────────────── */
1377
+
1378
+ .cct-modal-backdrop {
1379
+ position: fixed;
1380
+ top: 0;
1381
+ left: 0;
1382
+ width: 100vw;
1383
+ height: 100vh;
1384
+ background: rgba(0, 0, 0, 0.65);
1385
+ display: flex;
1386
+ align-items: center;
1387
+ justify-content: center;
1388
+ z-index: 1000;
1389
+ }
1390
+
1391
+ .cct-modal-box {
1392
+ background: linear-gradient(170deg, #1c2030 0%, #151825 60%, #10121c 100%);
1393
+ border: 1px solid var(--term-border);
1394
+ border-top: 1.5px solid rgba(255, 255, 255, 0.3);
1395
+ border-left: 1px solid rgba(255, 255, 255, 0.12);
1396
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
1397
+ border-bottom: 4px solid rgba(8, 10, 15, 0.95);
1398
+ border-radius: 12px;
1399
+ width: 480px;
1400
+ max-width: 90vw;
1401
+ display: flex;
1402
+ flex-direction: column;
1403
+ overflow: hidden;
1404
+ box-shadow:
1405
+ 0 24px 60px -8px rgba(0, 0, 0, 0.85),
1406
+ 0 8px 24px rgba(0, 0, 0, 0.6),
1407
+ inset 0 1px 1px rgba(255, 255, 255, 0.15),
1408
+ inset 0 -2px 5px rgba(0, 0, 0, 0.5);
1409
+ animation: cctModalPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
1410
+ }
1411
+
1412
+ @keyframes cctModalPop {
1413
+ 0% { transform: scale(0.96) translateY(8px); opacity: 0; }
1414
+ 100% { transform: scale(1) translateY(0); opacity: 1; }
1415
+ }
1416
+
1417
+ .cct-modal-titlebar {
1418
+ display: flex;
1419
+ align-items: center;
1420
+ justify-content: space-between;
1421
+ padding: 10px 16px;
1422
+ border-bottom: 1px solid var(--term-border);
1423
+ font-weight: bold;
1424
+ font-size: 13px;
1425
+ }
1426
+
1427
+ .cct-modal-content {
1428
+ padding: 16px;
1429
+ display: flex;
1430
+ flex-direction: column;
1431
+ gap: 12px;
1432
+ max-height: 70vh;
1433
+ overflow-y: auto;
1434
+ }
1435
+
1436
+ .cct-modal-close-btn {
1437
+ background: transparent;
1438
+ border: none;
1439
+ color: var(--term-text-muted);
1440
+ cursor: pointer;
1441
+ font-size: 13px;
1442
+ }
1443
+ .cct-modal-close-btn:hover {
1444
+ color: var(--color-red);
1445
+ }
1446
+
1447
+ /* Mode options */
1448
+ .cct-option-item {
1449
+ padding: 10px 14px;
1450
+ border: 1px solid var(--term-border);
1451
+ border-top: 1px solid rgba(255, 255, 255, 0.12);
1452
+ border-radius: 6px;
1453
+ cursor: pointer;
1454
+ display: flex;
1455
+ flex-direction: column;
1456
+ gap: 4px;
1457
+ background: linear-gradient(175deg, #1e2136 0%, #1a1e2d 100%);
1458
+ box-shadow:
1459
+ 0 3px 8px rgba(0,0,0,0.35),
1460
+ 0 1px 3px rgba(0,0,0,0.2),
1461
+ inset 0 1px 0 rgba(255,255,255,0.08);
1462
+ transition: all 140ms cubic-bezier(0.16, 1, 0.3, 1);
1463
+ }
1464
+
1465
+ .cct-option-item:hover, .cct-option-item.selected {
1466
+ border-color: var(--color-blue);
1467
+ border-top-color: rgba(147, 197, 253, 0.4);
1468
+ background: linear-gradient(175deg, #222844 0%, #1c2236 100%);
1469
+ box-shadow:
1470
+ 0 6px 18px rgba(99, 102, 241, 0.3),
1471
+ 0 2px 6px rgba(0, 0, 0, 0.3),
1472
+ inset 0 1px 0 rgba(255,255,255,0.22);
1473
+ transform: translateY(-2px);
1474
+ }
1475
+
1476
+ .cct-option-item:active {
1477
+ transform: translateY(1.5px);
1478
+ box-shadow:
1479
+ 0 1px 3px rgba(0,0,0,0.5),
1480
+ inset 0 3px 6px rgba(0,0,0,0.5);
1481
+ }
1482
+
1483
+ .cct-option-title {
1484
+ font-weight: bold;
1485
+ color: var(--term-text);
1486
+ display: flex;
1487
+ align-items: center;
1488
+ gap: 6px;
1489
+ }
1490
+
1491
+ .cct-option-desc {
1492
+ font-size: 11.5px;
1493
+ color: var(--term-text-muted);
1494
+ }
1495
+
1496
+ /* Modal form inputs */
1497
+ .cct-form-group {
1498
+ display: flex;
1499
+ flex-direction: column;
1500
+ gap: 4px;
1501
+ }
1502
+ .cct-form-label {
1503
+ font-size: 12px;
1504
+ color: var(--term-text-muted);
1505
+ }
1506
+ .cct-form-input {
1507
+ background: var(--term-input-bg);
1508
+ border: 1px solid var(--term-border);
1509
+ border-radius: 3px;
1510
+ padding: 6px 10px;
1511
+ color: var(--term-text);
1512
+ font-family: var(--font-mono);
1513
+ font-size: 12.5px;
1514
+ outline: none;
1515
+ }
1516
+ .cct-form-input:focus {
1517
+ border-color: var(--color-blue);
1518
+ }
1519
+
1520
+ .cct-modal-footer {
1521
+ display: flex;
1522
+ justify-content: flex-end;
1523
+ gap: 10px;
1524
+ padding: 10px 16px;
1525
+ border-top: 1px solid var(--term-border);
1526
+ }
1527
+
1528
+ .cct-modal-btn {
1529
+ background: linear-gradient(180deg, #2a2f3f 0%, #1e222d 100%);
1530
+ border-top: 1px solid rgba(255, 255, 255, 0.18);
1531
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
1532
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
1533
+ border-bottom: 2px solid rgba(0, 0, 0, 0.7);
1534
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.12);
1535
+ border-radius: 4px;
1536
+ padding: 6px 16px;
1537
+ color: var(--term-text);
1538
+ font-family: var(--font-mono);
1539
+ font-size: 12px;
1540
+ font-weight: 500;
1541
+ cursor: pointer;
1542
+ transition: all 0.08s ease;
1543
+ position: relative;
1544
+ user-select: none;
1545
+ }
1546
+ .cct-modal-btn:hover {
1547
+ background: linear-gradient(180deg, #363d52 0%, #242938 100%);
1548
+ border-top-color: rgba(255, 255, 255, 0.3);
1549
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.2);
1550
+ color: #ffffff;
1551
+ }
1552
+ .cct-modal-btn:active {
1553
+ transform: translateY(2px);
1554
+ background: linear-gradient(180deg, #171a23 0%, #222634 100%);
1555
+ border-top: 1px solid rgba(0, 0, 0, 0.6);
1556
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1557
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), inset 0 2px 4px rgba(0, 0, 0, 0.5);
1558
+ }
1559
+ .cct-modal-btn.primary {
1560
+ background: linear-gradient(180deg, #9061f9 0%, #6d28d9 100%);
1561
+ border-top: 1px solid rgba(255, 255, 255, 0.4);
1562
+ border-left: 1px solid rgba(255, 255, 255, 0.2);
1563
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
1564
+ border-bottom: 2px solid #431407;
1565
+ box-shadow: 0 3px 8px rgba(109, 40, 217, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.35);
1566
+ color: #ffffff;
1567
+ font-weight: bold;
1568
+ }
1569
+ .cct-modal-btn.primary:hover {
1570
+ background: linear-gradient(180deg, #a78bfa 0%, #7c3aed 100%);
1571
+ border-top-color: rgba(255, 255, 255, 0.55);
1572
+ box-shadow: 0 4px 12px rgba(109, 40, 217, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.45);
1573
+ }
1574
+ .cct-modal-btn.primary:active {
1575
+ transform: translateY(2px);
1576
+ background: linear-gradient(180deg, #5b21b6 0%, #7c3aed 100%);
1577
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(0, 0, 0, 0.4);
1578
+ }
1579
+
1580
+ /* ─────────────────────────────────────────────────────────────
1581
+ 9. INTEGRATED CAPABILITIES (COMMAND PALETTE, PICKERS, TOOLS)
1582
+ ───────────────────────────────────────────────────────────── */
1583
+
1584
+ /* Command Palette (Ctrl+K / /) */
1585
+ .cct-palette-box {
1586
+ width: 620px;
1587
+ max-width: 90vw;
1588
+ background: linear-gradient(170deg, #1c2030 0%, #151825 60%, #10121c 100%);
1589
+ border: 1px solid var(--term-border-highlight);
1590
+ border-top: 1.5px solid rgba(255, 255, 255, 0.3);
1591
+ border-left: 1px solid rgba(255, 255, 255, 0.12);
1592
+ border-right: 1px solid rgba(0, 0, 0, 0.4);
1593
+ border-bottom: 4px solid rgba(8, 10, 15, 0.95);
1594
+ border-radius: 12px;
1595
+ box-shadow:
1596
+ 0 28px 70px -10px rgba(0, 0, 0, 0.9),
1597
+ 0 10px 30px rgba(0, 0, 0, 0.6),
1598
+ inset 0 1px 1px rgba(255, 255, 255, 0.18),
1599
+ inset 0 -2px 5px rgba(0, 0, 0, 0.5);
1600
+ display: flex;
1601
+ flex-direction: column;
1602
+ overflow: hidden;
1603
+ animation: cctModalPop 0.18s cubic-bezier(0.16, 1, 0.3, 1);
1604
+ }
1605
+
1606
+ .cct-palette-input-wrap {
1607
+ display: flex;
1608
+ align-items: center;
1609
+ gap: 10px;
1610
+ padding: 12px 16px;
1611
+ background: var(--term-surface-alt);
1612
+ border-bottom: 1px solid var(--term-border);
1613
+ }
1614
+
1615
+ .cct-palette-prompt {
1616
+ color: var(--accent-build);
1617
+ font-weight: bold;
1618
+ font-size: 15px;
1619
+ }
1620
+
1621
+ .cct-palette-input {
1622
+ flex: 1;
1623
+ background: transparent;
1624
+ border: none;
1625
+ color: var(--term-text);
1626
+ font-family: var(--font-mono);
1627
+ font-size: 13.5px;
1628
+ outline: none;
1629
+ }
1630
+
1631
+ .cct-palette-list {
1632
+ max-height: 380px;
1633
+ overflow-y: auto;
1634
+ display: flex;
1635
+ flex-direction: column;
1636
+ padding: 6px 0;
1637
+ }
1638
+
1639
+ .cct-palette-item {
1640
+ display: flex;
1641
+ align-items: center;
1642
+ justify-content: space-between;
1643
+ padding: 8px 16px;
1644
+ cursor: pointer;
1645
+ transition: background 100ms;
1646
+ }
1647
+
1648
+ .cct-palette-item:hover, .cct-palette-item.active {
1649
+ background: #1e2438;
1650
+ }
1651
+
1652
+ .cct-palette-item-left {
1653
+ display: flex;
1654
+ align-items: center;
1655
+ gap: 12px;
1656
+ }
1657
+
1658
+ .cct-palette-cmd {
1659
+ color: var(--color-cyan);
1660
+ font-weight: bold;
1661
+ font-size: 12.5px;
1662
+ }
1663
+
1664
+ .cct-palette-desc {
1665
+ color: var(--term-text-muted);
1666
+ font-size: 12px;
1667
+ }
1668
+
1669
+ .cct-palette-badge {
1670
+ font-size: 10.5px;
1671
+ padding: 2px 6px;
1672
+ background: #24293e;
1673
+ border: 1px solid var(--term-border);
1674
+ border-radius: 2px;
1675
+ color: var(--term-text-faint);
1676
+ }
1677
+
1678
+ /* Model & Provider Picker */
1679
+ .cct-picker-box {
1680
+ width: 680px;
1681
+ max-width: 92vw;
1682
+ }
1683
+
1684
+ .cct-provider-list {
1685
+ display: grid;
1686
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
1687
+ gap: 6px;
1688
+ max-height: 220px;
1689
+ overflow-y: auto;
1690
+ padding: 4px;
1691
+ }
1692
+
1693
+ .cct-provider-btn {
1694
+ background: var(--term-surface-alt);
1695
+ border: 1px solid var(--term-border);
1696
+ border-radius: 3px;
1697
+ padding: 6px 10px;
1698
+ color: var(--term-text);
1699
+ font-family: var(--font-mono);
1700
+ font-size: 11.5px;
1701
+ cursor: pointer;
1702
+ text-align: left;
1703
+ transition: border-color 120ms, background 120ms;
1704
+ }
1705
+
1706
+ .cct-provider-btn:hover, .cct-provider-btn.active {
1707
+ border-color: var(--accent-build);
1708
+ background: #242636;
1709
+ color: var(--accent-build);
1710
+ }
1711
+
1712
+ .cct-model-list {
1713
+ display: flex;
1714
+ flex-direction: column;
1715
+ gap: 6px;
1716
+ max-height: 200px;
1717
+ overflow-y: auto;
1718
+ }
1719
+
1720
+ .cct-model-row {
1721
+ display: flex;
1722
+ align-items: center;
1723
+ justify-content: space-between;
1724
+ padding: 6px 10px;
1725
+ background: var(--term-surface-alt);
1726
+ border: 1px solid var(--term-border);
1727
+ border-radius: 3px;
1728
+ cursor: pointer;
1729
+ }
1730
+
1731
+ .cct-model-row:hover, .cct-model-row.active {
1732
+ border-color: var(--color-blue);
1733
+ background: #1c2236;
1734
+ }
1735
+
1736
+ /* Mode Selector */
1737
+ .cct-mode-grid {
1738
+ display: grid;
1739
+ grid-template-columns: 1fr 1fr;
1740
+ gap: 8px;
1741
+ }
1742
+
1743
+ .cct-mode-card {
1744
+ display: flex;
1745
+ align-items: flex-start;
1746
+ gap: 10px;
1747
+ padding: 10px 12px;
1748
+ background: var(--term-surface-alt);
1749
+ border: 1px solid var(--term-border);
1750
+ border-radius: 4px;
1751
+ cursor: pointer;
1752
+ transition: border-color 150ms, background 150ms;
1753
+ }
1754
+
1755
+ .cct-mode-card:hover, .cct-mode-card.active {
1756
+ border-color: var(--accent-build);
1757
+ background: #212536;
1758
+ }
1759
+
1760
+ .cct-mode-card-icon {
1761
+ font-size: 18px;
1762
+ }
1763
+
1764
+ .cct-mode-card-info {
1765
+ display: flex;
1766
+ flex-direction: column;
1767
+ gap: 2px;
1768
+ }
1769
+
1770
+ .cct-mode-card-title {
1771
+ font-weight: bold;
1772
+ font-size: 12.5px;
1773
+ }
1774
+
1775
+ .cct-mode-card-desc {
1776
+ font-size: 11px;
1777
+ color: var(--term-text-muted);
1778
+ }
1779
+
1780
+ /* Memory Center */
1781
+ .cct-memory-list {
1782
+ display: flex;
1783
+ flex-direction: column;
1784
+ gap: 6px;
1785
+ max-height: 260px;
1786
+ overflow-y: auto;
1787
+ }
1788
+
1789
+ .cct-fact-card {
1790
+ display: flex;
1791
+ align-items: center;
1792
+ justify-content: space-between;
1793
+ padding: 8px 12px;
1794
+ background: var(--term-surface-alt);
1795
+ border: 1px solid var(--term-border);
1796
+ border-radius: 3px;
1797
+ }
1798
+
1799
+ .cct-fact-content {
1800
+ font-size: 12px;
1801
+ color: var(--term-text);
1802
+ }
1803
+
1804
+ .cct-fact-del {
1805
+ color: var(--term-text-faint);
1806
+ cursor: pointer;
1807
+ padding: 2px 6px;
1808
+ }
1809
+ .cct-fact-del:hover {
1810
+ color: var(--color-red);
1811
+ }
1812
+
1813
+ .cct-memory-input-row {
1814
+ display: flex;
1815
+ gap: 8px;
1816
+ margin-top: 8px;
1817
+ }
1818
+
1819
+ /* Extensions Manager */
1820
+ .cct-ext-list {
1821
+ display: flex;
1822
+ flex-direction: column;
1823
+ gap: 8px;
1824
+ }
1825
+
1826
+ .cct-ext-card {
1827
+ display: flex;
1828
+ align-items: center;
1829
+ justify-content: space-between;
1830
+ padding: 10px 12px;
1831
+ background: var(--term-surface-alt);
1832
+ border: 1px solid var(--term-border);
1833
+ border-radius: 4px;
1834
+ }
1835
+
1836
+ .cct-ext-info {
1837
+ display: flex;
1838
+ flex-direction: column;
1839
+ gap: 2px;
1840
+ }
1841
+
1842
+ .cct-ext-title {
1843
+ font-weight: bold;
1844
+ font-size: 12.5px;
1845
+ color: var(--term-text);
1846
+ display: flex;
1847
+ align-items: center;
1848
+ gap: 6px;
1849
+ }
1850
+
1851
+ .cct-ext-desc {
1852
+ font-size: 11.5px;
1853
+ color: var(--term-text-muted);
1854
+ }
1855
+
1856
+ .cct-ext-toggle-btn {
1857
+ background: #24293e;
1858
+ border: 1px solid var(--term-border);
1859
+ border-radius: 3px;
1860
+ padding: 4px 10px;
1861
+ font-family: var(--font-mono);
1862
+ font-size: 11px;
1863
+ color: var(--term-text-muted);
1864
+ cursor: pointer;
1865
+ }
1866
+
1867
+ .cct-ext-toggle-btn.active {
1868
+ background: #1c3628;
1869
+ border-color: var(--color-green);
1870
+ color: var(--color-green);
1871
+ font-weight: bold;
1872
+ }
1873
+
1874
+ /* Tool Execution Badges in Chat Cards */
1875
+ .cct-tool-badge {
1876
+ display: inline-flex;
1877
+ align-items: center;
1878
+ gap: 6px;
1879
+ background: #1c2236;
1880
+ border: 1px solid var(--term-border-highlight);
1881
+ border-radius: 3px;
1882
+ padding: 3px 8px;
1883
+ margin: 4px 4px 4px 0;
1884
+ font-size: 11px;
1885
+ color: var(--color-cyan);
1886
+ }
1887
+
1888
+ .cct-tool-badge-icon {
1889
+ color: var(--color-amber);
1890
+ }
1891
+
1892
+ .cct-tool-badge-detail {
1893
+ color: var(--term-text-faint);
1894
+ font-size: 10.5px;
1895
+ }
1896
+
1897
+ /* ─────────────────────────────────────────────────────────────
1898
+ MAIN MENU DROPDOWN (≡ ○ CAT)
1899
+ ───────────────────────────────────────────────────────────── */
1900
+ .cct-menu-dropdown {
1901
+ position: fixed;
1902
+ top: 42px;
1903
+ left: 12px;
1904
+ z-index: 1000;
1905
+ background: var(--term-surface);
1906
+ border: 1px solid var(--term-border-strong);
1907
+ border-radius: 6px;
1908
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.7);
1909
+ min-width: 290px;
1910
+ max-width: 360px;
1911
+ font-family: var(--font-mono);
1912
+ animation: cctFadeDown 0.15s ease-out;
1913
+ }
1914
+
1915
+ @keyframes cctFadeDown {
1916
+ from { opacity: 0; transform: translateY(-6px); }
1917
+ to { opacity: 1; transform: translateY(0); }
1918
+ }
1919
+
1920
+ .cct-menu-scroll {
1921
+ padding: 6px 4px;
1922
+ max-height: 80vh;
1923
+ overflow-y: auto;
1924
+ }
1925
+
1926
+ .cct-menu-item {
1927
+ display: flex;
1928
+ align-items: center;
1929
+ justify-content: space-between;
1930
+ padding: 7px 12px;
1931
+ border-radius: 4px;
1932
+ cursor: pointer;
1933
+ color: var(--term-text);
1934
+ font-size: 12px;
1935
+ margin: 1px 2px;
1936
+ transition: background 0.12s, color 0.12s;
1937
+ }
1938
+
1939
+ .cct-menu-item:hover {
1940
+ background: var(--term-surface-alt);
1941
+ color: var(--term-text);
1942
+ }
1943
+
1944
+ .cct-menu-item-left {
1945
+ display: flex;
1946
+ align-items: center;
1947
+ gap: 10px;
1948
+ }
1949
+
1950
+ .cct-menu-icon {
1951
+ width: 18px;
1952
+ text-align: center;
1953
+ font-size: 13px;
1954
+ }
1955
+
1956
+ .cct-menu-shortcut {
1957
+ font-size: 11px;
1958
+ color: var(--term-text-faint);
1959
+ margin-left: 14px;
1960
+ }
1961
+
1962
+ .cct-menu-sep {
1963
+ height: 1px;
1964
+ background: var(--term-border);
1965
+ margin: 5px 8px;
1966
+ }
1967
+
1968
+ .cct-menu-section {
1969
+ padding: 6px 12px 3px;
1970
+ font-size: 11px;
1971
+ color: var(--term-text-muted);
1972
+ font-weight: bold;
1973
+ }
1974
+
1975
+ /* ─────────────────────────────────────────────────────────────
1976
+ STARTUP WELCOME MODAL (Screenshot 2 / welcome_modal.py)
1977
+ ───────────────────────────────────────────────────────────── */
1978
+ .cct-welcome-box {
1979
+ width: 660px;
1980
+ max-width: 92vw;
1981
+ background: var(--term-surface);
1982
+ border: 1px solid var(--term-border-highlight);
1983
+ border-radius: 8px;
1984
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.85);
1985
+ }
1986
+
1987
+ .cct-ascii-welcome {
1988
+ color: var(--color-blue);
1989
+ font-size: 10.5px;
1990
+ line-height: 1.15;
1991
+ text-align: center;
1992
+ margin: 10px 0 6px;
1993
+ user-select: text;
1994
+ font-weight: bold;
1995
+ }
1996
+
1997
+ .cct-welcome-tagline {
1998
+ text-align: center;
1999
+ color: var(--term-text-muted);
2000
+ font-size: 12px;
2001
+ margin-bottom: 12px;
2002
+ }
2003
+
2004
+ .cct-boot-progress-wrap {
2005
+ width: 100%;
2006
+ height: 6px;
2007
+ background: var(--term-bg);
2008
+ border-radius: 3px;
2009
+ overflow: hidden;
2010
+ margin-bottom: 6px;
2011
+ border: 1px solid var(--term-border);
2012
+ }
2013
+
2014
+ .cct-boot-progress-bar {
2015
+ height: 100%;
2016
+ background: linear-gradient(90deg, var(--color-blue), var(--color-green));
2017
+ border-radius: 3px;
2018
+ transition: width 0.3s ease;
2019
+ }
2020
+
2021
+ .cct-boot-status {
2022
+ font-size: 11.5px;
2023
+ color: var(--color-green);
2024
+ margin-bottom: 14px;
2025
+ text-align: center;
2026
+ }
2027
+
2028
+ .cct-highlights-grid {
2029
+ display: grid;
2030
+ grid-template-columns: 1fr 1fr;
2031
+ gap: 10px;
2032
+ margin-top: 8px;
2033
+ max-height: 240px;
2034
+ overflow-y: auto;
2035
+ }
2036
+
2037
+ .cct-highlight-card {
2038
+ display: flex;
2039
+ gap: 10px;
2040
+ padding: 10px 12px;
2041
+ background: var(--term-surface-alt);
2042
+ border: 1px solid var(--term-border);
2043
+ border-radius: 5px;
2044
+ }
2045
+
2046
+ .cct-highlight-icon {
2047
+ font-size: 20px;
2048
+ line-height: 1;
2049
+ }
2050
+
2051
+ .cct-highlight-title {
2052
+ font-size: 12px;
2053
+ font-weight: bold;
2054
+ color: var(--term-text);
2055
+ margin-bottom: 2px;
2056
+ }
2057
+
2058
+ .cct-highlight-desc {
2059
+ font-size: 11px;
2060
+ color: var(--term-text-muted);
2061
+ line-height: 1.35;
2062
+ }
2063
+
2064
+ .cct-welcome-footer {
2065
+ display: flex;
2066
+ justify-content: space-between;
2067
+ align-items: center;
2068
+ }
2069
+
2070
+ .cct-welcome-checkbox-label {
2071
+ font-size: 11.5px;
2072
+ color: var(--term-text-muted);
2073
+ cursor: pointer;
2074
+ display: flex;
2075
+ align-items: center;
2076
+ gap: 6px;
2077
+ }
2078
+
2079
+ /* ─────────────────────────────────────────────────────────────
2080
+ TAB HEADER & FOLDER BROWSER (METHOD A & B)
2081
+ ───────────────────────────────────────────────────────────── */
2082
+ .cct-tabs-header {
2083
+ display: flex;
2084
+ border-bottom: 1px solid var(--term-border);
2085
+ padding: 0 16px;
2086
+ gap: 8px;
2087
+ background: #13151f;
2088
+ }
2089
+
2090
+ .cct-tab-btn {
2091
+ background: transparent;
2092
+ border: none;
2093
+ border-bottom: 2px solid transparent;
2094
+ color: var(--term-text-muted);
2095
+ padding: 9px 14px;
2096
+ font-family: var(--font-mono);
2097
+ font-size: 12px;
2098
+ cursor: pointer;
2099
+ transition: all 0.15s;
2100
+ }
2101
+
2102
+ .cct-tab-btn:hover {
2103
+ color: var(--term-text);
2104
+ }
2105
+
2106
+ .cct-tab-btn.active {
2107
+ border-bottom-color: var(--color-blue);
2108
+ color: var(--color-blue);
2109
+ font-weight: bold;
2110
+ }
2111
+
2112
+ .cct-fs-nav-bar {
2113
+ display: flex;
2114
+ align-items: center;
2115
+ gap: 8px;
2116
+ margin-bottom: 8px;
2117
+ }
2118
+
2119
+ .cct-fs-up-btn {
2120
+ background: var(--term-surface-alt);
2121
+ border: 1px solid var(--term-border-strong);
2122
+ color: var(--term-text);
2123
+ padding: 5px 12px;
2124
+ border-radius: 3px;
2125
+ cursor: pointer;
2126
+ font-size: 11px;
2127
+ font-family: var(--font-mono);
2128
+ }
2129
+ .cct-fs-up-btn:hover {
2130
+ border-color: var(--color-blue);
2131
+ color: var(--color-blue);
2132
+ }
2133
+
2134
+ .cct-fs-current-path {
2135
+ flex: 1;
2136
+ background: var(--term-bg);
2137
+ padding: 6px 10px;
2138
+ border-radius: 3px;
2139
+ font-size: 11.5px;
2140
+ color: var(--color-cyan);
2141
+ white-space: nowrap;
2142
+ overflow: hidden;
2143
+ text-overflow: ellipsis;
2144
+ border: 1px solid var(--term-border);
2145
+ }
2146
+
2147
+ .cct-fs-drives-row {
2148
+ display: flex;
2149
+ gap: 6px;
2150
+ margin-bottom: 8px;
2151
+ flex-wrap: wrap;
2152
+ }
2153
+
2154
+ .cct-fs-drive-btn {
2155
+ background: var(--term-surface-alt);
2156
+ border: 1px solid var(--term-border-strong);
2157
+ color: var(--term-text);
2158
+ padding: 3px 8px;
2159
+ border-radius: 3px;
2160
+ font-size: 11px;
2161
+ cursor: pointer;
2162
+ font-family: var(--font-mono);
2163
+ }
2164
+ .cct-fs-drive-btn:hover, .cct-fs-drive-btn.active {
2165
+ border-color: var(--color-blue);
2166
+ color: var(--color-blue);
2167
+ }
2168
+
2169
+ .cct-fs-folder-list {
2170
+ max-height: 230px;
2171
+ overflow-y: auto;
2172
+ background: var(--term-bg);
2173
+ border: 1px solid var(--term-border);
2174
+ border-radius: 4px;
2175
+ padding: 4px;
2176
+ display: flex;
2177
+ flex-direction: column;
2178
+ gap: 2px;
2179
+ }
2180
+
2181
+ .cct-fs-folder-item {
2182
+ display: flex;
2183
+ align-items: center;
2184
+ justify-content: space-between;
2185
+ padding: 6px 10px;
2186
+ border-radius: 3px;
2187
+ cursor: pointer;
2188
+ color: var(--term-text);
2189
+ font-size: 12px;
2190
+ }
2191
+ .cct-fs-folder-item:hover {
2192
+ background: var(--term-surface-alt);
2193
+ color: var(--color-blue);
2194
+ }
2195
+
2196
+ .cct-validation-msg {
2197
+ margin-top: 8px;
2198
+ font-size: 12px;
2199
+ padding: 8px 12px;
2200
+ border-radius: 4px;
2201
+ }
2202
+ .cct-validation-msg.valid {
2203
+ background: #14281f;
2204
+ color: var(--color-green);
2205
+ border: 1px solid #1f4934;
2206
+ }
2207
+ .cct-validation-msg.invalid {
2208
+ background: #2a151d;
2209
+ color: var(--color-red);
2210
+ border: 1px solid #4a1f2c;
2211
+ }
2212
+
2213
+ /* ─────────────────────────────────────────────────────────────
2214
+ MODAL LIST ITEMS (RECENT, CHATS, MCP, BACKUP, THEMES)
2215
+ ───────────────────────────────────────────────────────────── */
2216
+ .cct-recent-modal-list,
2217
+ .cct-chats-modal-list,
2218
+ .cct-mcp-servers-list,
2219
+ .cct-backup-chain-list,
2220
+ .cct-gestures-list {
2221
+ display: flex;
2222
+ flex-direction: column;
2223
+ gap: 6px;
2224
+ max-height: 270px;
2225
+ overflow-y: auto;
2226
+ }
2227
+
2228
+ .cct-card-row {
2229
+ background: var(--term-surface-alt);
2230
+ border: 1px solid var(--term-border);
2231
+ border-radius: 4px;
2232
+ padding: 8px 12px;
2233
+ display: flex;
2234
+ align-items: center;
2235
+ justify-content: space-between;
2236
+ gap: 8px;
2237
+ }
2238
+
2239
+ .cct-card-row-info {
2240
+ display: flex;
2241
+ flex-direction: column;
2242
+ gap: 2px;
2243
+ overflow: hidden;
2244
+ }
2245
+
2246
+ .cct-card-row-title {
2247
+ font-weight: bold;
2248
+ font-size: 12.5px;
2249
+ color: var(--term-text);
2250
+ display: flex;
2251
+ align-items: center;
2252
+ gap: 6px;
2253
+ }
2254
+
2255
+ .cct-card-row-sub {
2256
+ font-size: 11px;
2257
+ color: var(--term-text-muted);
2258
+ white-space: nowrap;
2259
+ overflow: hidden;
2260
+ text-overflow: ellipsis;
2261
+ }
2262
+
2263
+ .cct-card-row-actions {
2264
+ display: flex;
2265
+ align-items: center;
2266
+ gap: 6px;
2267
+ flex-shrink: 0;
2268
+ }
2269
+
2270
+ .cct-icon-btn {
2271
+ background: var(--term-surface);
2272
+ border: 1px solid var(--term-border);
2273
+ color: var(--term-text-muted);
2274
+ padding: 4px 8px;
2275
+ border-radius: 3px;
2276
+ cursor: pointer;
2277
+ font-size: 11px;
2278
+ font-family: var(--font-mono);
2279
+ }
2280
+ .cct-icon-btn:hover {
2281
+ border-color: var(--color-blue);
2282
+ color: var(--term-text);
2283
+ }
2284
+
2285
+ .cct-notice-banner {
2286
+ background: #141c2c;
2287
+ border: 1px solid var(--color-blue);
2288
+ border-radius: 4px;
2289
+ padding: 8px 12px;
2290
+ font-size: 11.5px;
2291
+ color: var(--term-text);
2292
+ line-height: 1.4;
2293
+ }
2294
+
2295
+ .cct-action-link-btn {
2296
+ background: transparent;
2297
+ border: none;
2298
+ color: var(--term-text-faint);
2299
+ font-size: 11px;
2300
+ cursor: pointer;
2301
+ text-decoration: underline;
2302
+ }
2303
+ .cct-action-link-btn:hover {
2304
+ color: var(--color-red);
2305
+ }
2306
+
2307
+ /* Themes Grid */
2308
+ .cct-themes-grid {
2309
+ display: grid;
2310
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
2311
+ gap: 10px;
2312
+ max-height: 290px;
2313
+ overflow-y: auto;
2314
+ }
2315
+
2316
+ .cct-theme-card {
2317
+ background: var(--term-surface-alt);
2318
+ border: 1px solid var(--term-border);
2319
+ border-radius: 5px;
2320
+ padding: 10px;
2321
+ cursor: pointer;
2322
+ display: flex;
2323
+ flex-direction: column;
2324
+ gap: 6px;
2325
+ transition: all 0.15s;
2326
+ }
2327
+ .cct-theme-card:hover {
2328
+ border-color: var(--color-blue);
2329
+ background: #1d2235;
2330
+ }
2331
+ .cct-theme-card.active {
2332
+ border-color: var(--color-blue);
2333
+ box-shadow: 0 0 0 1px var(--color-blue);
2334
+ }
2335
+
2336
+ .cct-theme-name {
2337
+ font-size: 12px;
2338
+ font-weight: bold;
2339
+ color: var(--term-text);
2340
+ }
2341
+
2342
+ .cct-theme-badge {
2343
+ font-size: 10px;
2344
+ color: var(--term-text-muted);
2345
+ }
2346
+
2347
+ /* User Profile Card — 3D Metric Tiles */
2348
+ .cct-profile-grid {
2349
+ display: grid;
2350
+ grid-template-columns: 1fr 1fr;
2351
+ gap: 10px;
2352
+ perspective: 600px;
2353
+ }
2354
+ .cct-profile-metric {
2355
+ background: linear-gradient(170deg, #1e2136 0%, #181b2a 100%);
2356
+ border: 1px solid var(--term-border);
2357
+ border-top: 1px solid rgba(255, 255, 255, 0.12);
2358
+ border-bottom: 2.5px solid rgba(8, 10, 16, 0.8);
2359
+ border-radius: 8px;
2360
+ padding: 12px 14px;
2361
+ box-shadow:
2362
+ 0 4px 12px rgba(0, 0, 0, 0.35),
2363
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
2364
+ inset 0 -1px 2px rgba(0, 0, 0, 0.3);
2365
+ transition: all 150ms cubic-bezier(0.16, 1, 0.3, 1);
2366
+ }
2367
+ .cct-profile-metric:hover {
2368
+ transform: translateY(-2px) scale(1.01);
2369
+ box-shadow:
2370
+ 0 8px 20px rgba(0, 0, 0, 0.45),
2371
+ 0 0 12px rgba(122, 162, 247, 0.12),
2372
+ inset 0 1px 0 rgba(255, 255, 255, 0.14);
2373
+ border-color: rgba(122, 162, 247, 0.3);
2374
+ }
2375
+ .cct-profile-metric-title {
2376
+ font-size: 11px;
2377
+ color: var(--term-text-muted);
2378
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
2379
+ }
2380
+ .cct-profile-metric-val {
2381
+ font-size: 14px;
2382
+ font-weight: bold;
2383
+ color: var(--color-blue);
2384
+ margin-top: 2px;
2385
+ text-shadow: 0 1px 3px rgba(122, 162, 247, 0.3);
2386
+ }
2387
+
2388
+ /* Theme Card 3D Enhancement */
2389
+ .cct-theme-card {
2390
+ border-bottom: 2.5px solid rgba(8, 10, 16, 0.75) !important;
2391
+ box-shadow:
2392
+ 0 3px 10px rgba(0, 0, 0, 0.3),
2393
+ inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
2394
+ }
2395
+ .cct-theme-card:hover {
2396
+ transform: translateY(-2px) !important;
2397
+ box-shadow:
2398
+ 0 6px 18px rgba(99, 102, 241, 0.2),
2399
+ 0 2px 6px rgba(0, 0, 0, 0.3),
2400
+ inset 0 1px 0 rgba(255, 255, 255, 0.12) !important;
2401
+ }
2402
+ .cct-theme-card:active {
2403
+ transform: translateY(1px) !important;
2404
+ border-bottom: 1px solid rgba(8, 10, 16, 0.75) !important;
2405
+ box-shadow:
2406
+ 0 1px 3px rgba(0, 0, 0, 0.4),
2407
+ inset 0 2px 4px rgba(0, 0, 0, 0.4) !important;
2408
+ }
2409
+
2410
+ /* Welcome Columns 3D Cards */
2411
+ .cct-column {
2412
+ background: linear-gradient(175deg, rgba(26, 30, 45, 0.5) 0%, rgba(18, 20, 30, 0.3) 100%);
2413
+ border: 1px solid rgba(255, 255, 255, 0.04);
2414
+ border-radius: 8px;
2415
+ padding: 12px;
2416
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.04);
2417
+ }
2418
+
2419
+ /* Recent Row 3D Hover */
2420
+ .cct-recent-row {
2421
+ border-radius: 5px;
2422
+ transition: all 120ms cubic-bezier(0.16, 1, 0.3, 1);
2423
+ }
2424
+ .cct-recent-row:hover {
2425
+ background: linear-gradient(135deg, rgba(224, 175, 104, 0.08) 0%, rgba(224, 175, 104, 0.03) 100%);
2426
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
2427
+ transform: translateX(2px);
2428
+ }
2429
+
2430
+ /* Editor Toolbar 3D */
2431
+ .cct-editor-toolbar {
2432
+ background: linear-gradient(180deg, #1a1e2e 0%, #161822 100%) !important;
2433
+ border-bottom: 1px solid var(--term-border) !important;
2434
+ box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
2435
+ }
2436
+
2437
+ /* Mode Badge 3D Enhancement */
2438
+ .cct-mode-badge {
2439
+ border-bottom: 2px solid rgba(160, 120, 40, 0.4) !important;
2440
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
2441
+ }
2442
+
2443
+ /* Model Badge 3D Enhancement */
2444
+ .cct-model-badge, .cct-workspace-badge {
2445
+ border-bottom: 2px solid rgba(0, 0, 0, 0.3) !important;
2446
+ }
2447
+
2448
+ /* Card Header 3D Emboss */
2449
+ .cct-card-header {
2450
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.7), 0 0 8px rgba(224, 175, 104, 0.15);
2451
+ }
2452
+
2453
+ /* Card Metadata Footer 3D Divider */
2454
+ .cct-card-meta {
2455
+ border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
2456
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.4);
2457
+ padding-top: 12px !important;
2458
+ }
2459
+
2460
+ /* ─────────────────────────────────────────────────────────────
2461
+ 3D SKEUOMORPHIC ANIMATIONS & PERSPECTIVE EFFECTS
2462
+ ───────────────────────────────────────────────────────────── */
2463
+
2464
+ @keyframes cct-slide-up-3d {
2465
+ 0% {
2466
+ opacity: 0;
2467
+ transform: perspective(800px) translate3d(0, 22px, -30px) rotateX(5deg);
2468
+ filter: blur(2px);
2469
+ }
2470
+ 60% {
2471
+ filter: blur(0px);
2472
+ }
2473
+ 100% {
2474
+ opacity: 1;
2475
+ transform: perspective(800px) translate3d(0, 0, 0) rotateX(0deg);
2476
+ filter: blur(0px);
2477
+ }
2478
+ }
2479
+
2480
+ @keyframes cct-card-entry-3d {
2481
+ 0% {
2482
+ opacity: 0;
2483
+ transform: perspective(900px) translate3d(0, 16px, -20px) scale(0.97);
2484
+ filter: blur(1px);
2485
+ }
2486
+ 100% {
2487
+ opacity: 1;
2488
+ transform: perspective(900px) translate3d(0, 0, 0) scale(1);
2489
+ filter: blur(0px);
2490
+ }
2491
+ }
2492
+
2493
+ @keyframes cct-user-bubble-entry {
2494
+ 0% {
2495
+ opacity: 0;
2496
+ transform: perspective(600px) translate3d(20px, 8px, -15px) rotateY(-3deg) scale(0.96);
2497
+ }
2498
+ 100% {
2499
+ opacity: 1;
2500
+ transform: perspective(600px) translate3d(0, 0, 0) rotateY(0deg) scale(1);
2501
+ }
2502
+ }
2503
+
2504
+ @keyframes cct-composer-glow {
2505
+ 0%, 100% {
2506
+ box-shadow:
2507
+ 0 8px 24px rgba(0, 0, 0, 0.5),
2508
+ inset 0 1px 0 rgba(255, 255, 255, 0.1);
2509
+ }
2510
+ 50% {
2511
+ box-shadow:
2512
+ 0 10px 30px rgba(124, 58, 237, 0.2),
2513
+ 0 0 0 1px rgba(124, 58, 237, 0.35),
2514
+ 0 0 20px rgba(122, 162, 247, 0.08),
2515
+ inset 0 1.5px 0 rgba(255, 255, 255, 0.16);
2516
+ }
2517
+ }
2518
+
2519
+ @keyframes cct-shimmer-pulse {
2520
+ 0%, 100% {
2521
+ opacity: 0.6;
2522
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
2523
+ }
2524
+ 50% {
2525
+ opacity: 1;
2526
+ box-shadow: 0 4px 16px rgba(122, 162, 247, 0.15);
2527
+ }
2528
+ }
2529
+
2530
+ @keyframes cct-float-idle {
2531
+ 0%, 100% {
2532
+ transform: translateY(0px);
2533
+ }
2534
+ 50% {
2535
+ transform: translateY(-2px);
2536
+ }
2537
+ }
2538
+
2539
+ @keyframes cct-3d-press {
2540
+ 0% {
2541
+ transform: translateY(0) scale(1);
2542
+ }
2543
+ 50% {
2544
+ transform: translateY(2px) scale(0.98);
2545
+ }
2546
+ 100% {
2547
+ transform: translateY(0) scale(1);
2548
+ }
2549
+ }
2550
+
2551
+ /* Apply 3D Entrance Animations */
2552
+ .cct-modal-box {
2553
+ animation: cct-slide-up-3d 280ms cubic-bezier(0.16, 1, 0.3, 1) both;
2554
+ transform-origin: center bottom;
2555
+ }
2556
+
2557
+ .cct-response-card {
2558
+ animation: cct-card-entry-3d 250ms cubic-bezier(0.16, 1, 0.3, 1) both;
2559
+ }
2560
+
2561
+ .cct-user-bubble {
2562
+ animation: cct-user-bubble-entry 220ms cubic-bezier(0.16, 1, 0.3, 1) both;
2563
+ }
2564
+
2565
+ .cct-user-turn-wrapper {
2566
+ perspective: 1200px;
2567
+ }
2568
+
2569
+ #cct-composer:focus-within {
2570
+ animation: cct-composer-glow 3s ease-in-out infinite alternate;
2571
+ }
2572
+
2573
+ /* Tool Badge Loading Shimmer */
2574
+ .cct-tool-badge.loading {
2575
+ animation: cct-shimmer-pulse 1.5s ease-in-out infinite;
2576
+ }
2577
+
2578
+ /* 3D Button Hover & Active Elevation — Universal */
2579
+ .cct-btn, .cct-dash-action, .cct-perm-pill-btn, .cct-icon-btn, .cct-theme-card {
2580
+ transition: transform 140ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 140ms ease, background 140ms ease, border-color 140ms ease;
2581
+ }
2582
+
2583
+ .cct-btn:hover, .cct-dash-action:hover, .cct-perm-pill-btn:hover, .cct-theme-card:hover {
2584
+ transform: translateY(-2px);
2585
+ }
2586
+
2587
+ .cct-btn:active, .cct-dash-action:active, .cct-perm-pill-btn:active, .cct-theme-card:active {
2588
+ transform: translateY(1.5px);
2589
+ }
2590
+
2591
+ /* 3D Welcome View Entrance */
2592
+ #cct-welcome-view {
2593
+ animation: cct-card-entry-3d 350ms cubic-bezier(0.16, 1, 0.3, 1) both;
2594
+ }
2595
+
2596
+ /* 3D Chat Turns Container Perspective */
2597
+ #cct-chat-turns {
2598
+ perspective: 1200px;
2599
+ }
2600
+
2601
+ /* 3D Active File Depth Enhancement */
2602
+ .cct-tree-node.active-file {
2603
+ box-shadow:
2604
+ inset 0 1px 3px rgba(0, 0, 0, 0.5),
2605
+ 0 3px 10px rgba(0, 0, 0, 0.35),
2606
+ inset 3px 0 0 var(--color-blue) !important;
2607
+ border-left: none !important;
2608
+ }
2609
+
2610
+ /* 3D Scrollbar Depth */
2611
+ ::-webkit-scrollbar-thumb {
2612
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
2613
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
2614
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
2615
+ }
2616
+
2617
+ /* 3D Sidebar Section Dividers */
2618
+ .cct-sidebar-scroll > * + * {
2619
+ position: relative;
2620
+ }
2621
+
2622
+ /* 3D Workspace Icon */
2623
+ .cct-ws-icon {
2624
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.6);
2625
+ filter: drop-shadow(0 1px 2px rgba(224, 175, 104, 0.3));
2626
+ }
2627
+
2628
+ /* Floating Composer Idle Animation */
2629
+ #cct-composer {
2630
+ animation: cct-float-idle 4s ease-in-out infinite;
2631
+ }
2632
+ #cct-composer:focus-within {
2633
+ animation: cct-composer-glow 3s ease-in-out infinite alternate;
2634
+ }
2635
+
2636
+ /* 3D ASCII Hero Text Shadow */
2637
+ .cct-ascii-hero {
2638
+ text-shadow:
2639
+ 0 2px 6px rgba(0, 0, 0, 0.7),
2640
+ 0 0 12px rgba(224, 175, 104, 0.15);
2641
+ filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.5));
2642
+ }
2643
+
2644
+ /* 3D Palette Box Enhancement */
2645
+ .cct-palette-box {
2646
+ animation: cct-slide-up-3d 240ms cubic-bezier(0.16, 1, 0.3, 1) both;
2647
+ border-bottom: 4px solid rgba(8, 10, 15, 0.9) !important;
2648
+ box-shadow:
2649
+ 0 20px 50px -8px rgba(0, 0, 0, 0.8),
2650
+ 0 6px 20px rgba(0, 0, 0, 0.5),
2651
+ inset 0 1px 1px rgba(255, 255, 255, 0.12),
2652
+ inset 0 -2px 4px rgba(0, 0, 0, 0.4) !important;
2653
+ }
2654
+
2655
+ /* 3D Drop Zone */
2656
+ .cct-dropzone-notice {
2657
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
2658
+ }
2659
+
2660
+ /* 3D Version Row Glow */
2661
+ .cct-version-row {
2662
+ text-shadow: 0 1px 4px rgba(192, 202, 245, 0.2);
2663
+ }
2664
+
2665
+ /* 3D Ready Dot Pulse */
2666
+ .cct-ready-dot {
2667
+ text-shadow: 0 0 6px rgba(158, 206, 106, 0.5);
2668
+ animation: cct-shimmer-pulse 2s ease-in-out infinite;
2669
+ }
2670
+
2671
+ /* 3D Resizer Grab Handle */
2672
+ .cct-resizer {
2673
+ background: linear-gradient(180deg, rgba(36, 40, 59, 0.5) 0%, var(--term-border) 50%, rgba(36, 40, 59, 0.5) 100%) !important;
2674
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.04), inset -1px 0 0 rgba(0, 0, 0, 0.3);
2675
+ }
2676
+ .cct-resizer:hover, .cct-resizer.dragging {
2677
+ box-shadow: 0 0 8px rgba(122, 162, 247, 0.3), inset 1px 0 0 rgba(122, 162, 247, 0.3);
2678
+ }
2679
+
2680
+ /* ─────────────────────────────────────────────────────────────
2681
+ STABLE LIGHT THEME & COHESIVE 3D SYSTEM
2682
+ ───────────────────────────────────────────────────────────── */
2683
+ .cct-light-theme {
2684
+ --term-bg: #f8fafc;
2685
+ --term-surface: #ffffff;
2686
+ --term-surface-alt: #f1f5f9;
2687
+ --term-border: #cbd5e1;
2688
+ --term-text: #0f172a;
2689
+ --term-text-muted: #64748b;
2690
+ --term-text-faint: #94a3b8;
2691
+ --term-bubble-user: #e2e8f0;
2692
+ --term-bubble-assistant: #ffffff;
2693
+ }
2694
+
2695
+ .cct-light-theme #cct-header {
2696
+ background: linear-gradient(180deg, #ffffff 0%, #f1f5f9 100%);
2697
+ border-bottom: 1px solid #cbd5e1;
2698
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
2699
+ }
2700
+
2701
+ .cct-light-theme .cct-menu-dropdown {
2702
+ background: #ffffff;
2703
+ border: 1px solid #cbd5e1;
2704
+ border-top: 1px solid #ffffff;
2705
+ border-bottom: 2px solid #94a3b8;
2706
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12);
2707
+ }
2708
+
2709
+ .cct-light-theme .cct-menu-item {
2710
+ color: #0f172a;
2711
+ background: #ffffff;
2712
+ }
2713
+
2714
+ .cct-light-theme .cct-menu-item:hover {
2715
+ background: #f1f5f9;
2716
+ color: var(--color-blue);
2717
+ }
2718
+
2719
+ .cct-light-theme .cct-opened-folder-tag {
2720
+ background: #ffffff;
2721
+ color: #0f172a;
2722
+ border-color: #cbd5e1;
2723
+ border-top-color: #ffffff;
2724
+ border-bottom: 2px solid #94a3b8;
2725
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
2726
+ }
2727
+
2728
+ .cct-light-theme .cct-modal-card {
2729
+ background: #ffffff;
2730
+ color: #0f172a;
2731
+ border: 1px solid #cbd5e1;
2732
+ border-top: 1.5px solid #ffffff;
2733
+ border-bottom: 3px solid #94a3b8;
2734
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
2735
+ }
2736
+
2737
+ .cct-light-theme .cct-btn,
2738
+ .cct-light-theme button {
2739
+ color: #0f172a;
2740
+ background: #ffffff;
2741
+ border: 1px solid #cbd5e1;
2742
+ border-top: 1px solid #ffffff;
2743
+ border-bottom: 2px solid #94a3b8;
2744
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.06);
2745
+ }
2746
+
2747
+ .cct-light-theme .cct-btn:hover,
2748
+ .cct-light-theme button:hover {
2749
+ background: #f8fafc;
2750
+ color: #000000;
2751
+ border-color: #94a3b8;
2752
+ }
2753
+
2754
+ .cct-light-theme .cct-btn-primary,
2755
+ .cct-light-theme button.cct-btn-primary {
2756
+ background: var(--color-blue);
2757
+ color: #ffffff;
2758
+ border-color: var(--color-blue);
2759
+ box-shadow: 0 3px 8px rgba(0, 103, 192, 0.25);
2760
+ }
2761
+
2762
+ /* 3D System Notifications & Pills */
2763
+ .cct-notification-pill, .cct-bubble-system, .cct-system-pill {
2764
+ box-shadow:
2765
+ 0 4px 14px rgba(0, 0, 0, 0.25),
2766
+ inset 0 1px 0 rgba(255, 255, 255, 0.2),
2767
+ inset 0 -2px 0 rgba(0, 0, 0, 0.3) !important;
2768
+ border-radius: 20px !important;
2769
+ transition: transform 140ms ease, box-shadow 140ms ease !important;
2770
+ }
2771
+ .cct-notification-pill:hover, .cct-bubble-system:hover, .cct-system-pill:hover {
2772
+ transform: translateY(-1.5px);
2773
+ box-shadow:
2774
+ 0 6px 18px rgba(0, 0, 0, 0.35),
2775
+ inset 0 1px 0 rgba(255, 255, 255, 0.3),
2776
+ inset 0 -2px 0 rgba(0, 0, 0, 0.3) !important;
2777
+ }
2778
+ .cct-light-theme .cct-notification-pill,
2779
+ .cct-light-theme .cct-bubble-system,
2780
+ .cct-light-theme .cct-system-pill {
2781
+ background: #ffffff !important;
2782
+ color: #0f172a !important;
2783
+ border: 1px solid #cbd5e1 !important;
2784
+ border-top: 1.5px solid #ffffff !important;
2785
+ border-bottom: 2.5px solid #94a3b8 !important;
2786
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08) !important;
2787
+ }
2788
+
2789
+ /* ─────────────────────────────────────────────────────────────
2790
+ 11. UNIVERSAL 3D SKEUOMORPHIC BUTTON SYSTEM (EVERY BUTTON)
2791
+ Tactile physical keycaps with beveled top/left highlight,
2792
+ sunken drop-shadow bottom/right, hover lift, and physical depression.
2793
+ ───────────────────────────────────────────────────────────── */
2794
+
2795
+ .cct-btn,
2796
+ .cct-modal-btn,
2797
+ .cct-footer-btn,
2798
+ .cct-action-btn,
2799
+ .cct-tab-btn,
2800
+ .cct-ext-toggle-btn,
2801
+ .cct-fs-up-btn,
2802
+ .cct-fs-drive-btn,
2803
+ .cct-provider-btn,
2804
+ .cct-send-btn,
2805
+ .cct-icon-btn,
2806
+ .cct-perm-pill-btn,
2807
+ .cct-dash-action,
2808
+ .cct-chat-action-btn,
2809
+ .cct-welcome-footer button,
2810
+ button.cct-btn,
2811
+ button:not(.cct-plain-btn) {
2812
+ border-radius: 0px !important;
2813
+ border-top: 2px solid rgba(255, 255, 255, 0.32) !important;
2814
+ border-left: 1.5px solid rgba(255, 255, 255, 0.18) !important;
2815
+ border-right: 1.5px solid rgba(0, 0, 0, 0.65) !important;
2816
+ border-bottom: 3.5px solid rgba(0, 0, 0, 0.9) !important;
2817
+ box-shadow:
2818
+ 0 4px 10px rgba(0, 0, 0, 0.5),
2819
+ inset 0 1px 0 rgba(255, 255, 255, 0.22),
2820
+ inset 0 -1px 2px rgba(0, 0, 0, 0.4) !important;
2821
+ transition: transform 100ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 100ms ease, background 100ms ease, border-color 100ms ease !important;
2822
+ cursor: pointer !important;
2823
+ user-select: none !important;
2824
+ }
2825
+
2826
+ .cct-btn:hover,
2827
+ .cct-modal-btn:hover,
2828
+ .cct-footer-btn:hover,
2829
+ .cct-action-btn:hover,
2830
+ .cct-tab-btn:hover,
2831
+ .cct-ext-toggle-btn:hover,
2832
+ .cct-fs-up-btn:hover,
2833
+ .cct-fs-drive-btn:hover,
2834
+ .cct-provider-btn:hover,
2835
+ .cct-send-btn:hover,
2836
+ .cct-icon-btn:hover,
2837
+ .cct-perm-pill-btn:hover,
2838
+ .cct-dash-action:hover,
2839
+ button:not(.cct-plain-btn):hover {
2840
+ transform: translateY(-1.5px) !important;
2841
+ border-top-color: rgba(255, 255, 255, 0.5) !important;
2842
+ border-left-color: rgba(255, 255, 255, 0.3) !important;
2843
+ box-shadow:
2844
+ 0 6px 16px rgba(0, 0, 0, 0.6),
2845
+ inset 0 1px 0 rgba(255, 255, 255, 0.35),
2846
+ 0 0 12px rgba(122, 162, 247, 0.2) !important;
2847
+ }
2848
+
2849
+ .cct-btn:active,
2850
+ .cct-modal-btn:active,
2851
+ .cct-footer-btn:active,
2852
+ .cct-action-btn:active,
2853
+ .cct-tab-btn:active,
2854
+ .cct-ext-toggle-btn:active,
2855
+ .cct-fs-up-btn:active,
2856
+ .cct-fs-drive-btn:active,
2857
+ .cct-provider-btn:active,
2858
+ .cct-send-btn:active,
2859
+ .cct-icon-btn:active,
2860
+ .cct-perm-pill-btn:active,
2861
+ .cct-dash-action:active,
2862
+ button:not(.cct-plain-btn):active {
2863
+ transform: translateY(2px) !important;
2864
+ border-top: 1.5px solid rgba(0, 0, 0, 0.8) !important;
2865
+ border-left: 1.5px solid rgba(0, 0, 0, 0.6) !important;
2866
+ border-bottom: 1.5px solid rgba(0, 0, 0, 0.95) !important;
2867
+ border-right: 1.5px solid rgba(255, 255, 255, 0.1) !important;
2868
+ box-shadow:
2869
+ 0 1px 3px rgba(0, 0, 0, 0.7),
2870
+ inset 0 2px 5px rgba(0, 0, 0, 0.7) !important;
2871
+ }
2872
+
2873
+ /* ─────────────────────────────────────────────────────────────
2874
+ 12. UNIVERSAL 3D SKEUOMORPHIC SEARCH BARS & TEXT INPUTS
2875
+ Deep recessed physical tray with ambient cavity occlusion,
2876
+ sunken top/left shadow bevel, and bottom/right rim reflection.
2877
+ ───────────────────────────────────────────────────────────── */
2878
+
2879
+ .cct-search-input,
2880
+ .cct-palette-input-wrap,
2881
+ .cct-form-input,
2882
+ .cct-filter-box,
2883
+ .cct-fs-current-path,
2884
+ #cct-palette-search,
2885
+ .cct-memory-input-row input,
2886
+ input[type="text"],
2887
+ input[type="search"],
2888
+ input[type="password"] {
2889
+ border-radius: 0px !important;
2890
+ border-top: 2px solid rgba(0, 0, 0, 0.9) !important;
2891
+ border-left: 2px solid rgba(0, 0, 0, 0.7) !important;
2892
+ border-right: 1.5px solid rgba(255, 255, 255, 0.14) !important;
2893
+ border-bottom: 1.5px solid rgba(255, 255, 255, 0.22) !important;
2894
+ background-color: #11131c !important;
2895
+ box-shadow:
2896
+ inset 0 3px 6px rgba(0, 0, 0, 0.8),
2897
+ inset 0 1px 2px rgba(0, 0, 0, 0.95),
2898
+ 0 1px 0 rgba(255, 255, 255, 0.08) !important;
2899
+ transition: border-color 140ms ease, box-shadow 140ms ease !important;
2900
+ }
2901
+
2902
+ .cct-search-input:focus,
2903
+ .cct-palette-input-wrap:focus-within,
2904
+ .cct-form-input:focus,
2905
+ .cct-filter-box:focus,
2906
+ #cct-palette-search:focus,
2907
+ .cct-memory-input-row input:focus,
2908
+ input[type="text"]:focus,
2909
+ input[type="search"]:focus {
2910
+ border-top: 2px solid rgba(0, 0, 0, 0.95) !important;
2911
+ border-left: 2px solid rgba(0, 0, 0, 0.75) !important;
2912
+ border-right: 1.5px solid rgba(224, 175, 104, 0.4) !important;
2913
+ border-bottom: 2px solid rgba(224, 175, 104, 0.6) !important;
2914
+ box-shadow:
2915
+ inset 0 3px 6px rgba(0, 0, 0, 0.85),
2916
+ inset 0 1px 2px rgba(0, 0, 0, 0.95),
2917
+ 0 0 12px rgba(224, 175, 104, 0.25) !important;
2918
+ outline: none !important;
2919
+ }
2920
+
2921
+ /* ─────────────────────────────────────────────────────────────
2922
+ 13. EXTENSIONS SECTION 3D SKEUOMORPHIC REDESIGN
2923
+ Tactile raised physical cards, rocker toggle switches,
2924
+ zero rounded corners, and metallic beveled borders.
2925
+ ───────────────────────────────────────────────────────────── */
2926
+
2927
+ .cct-ext-card {
2928
+ border-radius: 0px !important;
2929
+ background: linear-gradient(175deg, #1c2032 0%, #151824 100%) !important;
2930
+ border: 1px solid var(--term-border) !important;
2931
+ border-top: 2px solid rgba(255, 255, 255, 0.2) !important;
2932
+ border-left: 1.5px solid rgba(255, 255, 255, 0.1) !important;
2933
+ border-right: 2px solid rgba(0, 0, 0, 0.7) !important;
2934
+ border-bottom: 4px solid rgba(0, 0, 0, 0.9) !important;
2935
+ box-shadow:
2936
+ 0 6px 16px rgba(0, 0, 0, 0.55),
2937
+ inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
2938
+ padding: 12px 14px !important;
2939
+ transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease !important;
2940
+ }
2941
+
2942
+ .cct-ext-card:hover {
2943
+ transform: translateY(-2px) !important;
2944
+ border-top-color: rgba(255, 255, 255, 0.35) !important;
2945
+ box-shadow:
2946
+ 0 10px 24px rgba(0, 0, 0, 0.7),
2947
+ 0 0 14px rgba(122, 162, 247, 0.15),
2948
+ inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
2949
+ }
2950
+
2951
+ .cct-ext-toggle-btn {
2952
+ border-radius: 0px !important;
2953
+ background: linear-gradient(180deg, #24293c 0%, #171a26 100%) !important;
2954
+ border-top: 1.5px solid rgba(255, 255, 255, 0.2) !important;
2955
+ border-left: 1px solid rgba(255, 255, 255, 0.1) !important;
2956
+ border-right: 1px solid rgba(0, 0, 0, 0.5) !important;
2957
+ border-bottom: 3px solid rgba(0, 0, 0, 0.85) !important;
2958
+ padding: 5px 14px !important;
2959
+ font-weight: bold !important;
2960
+ font-size: 11px !important;
2961
+ letter-spacing: 0.5px !important;
2962
+ }
2963
+
2964
+ .cct-ext-toggle-btn.active {
2965
+ background: linear-gradient(180deg, #1b4a30 0%, #0e2b1b 100%) !important;
2966
+ border-top: 2px solid rgba(158, 206, 106, 0.7) !important;
2967
+ border-left: 1.5px solid rgba(158, 206, 106, 0.4) !important;
2968
+ border-right: 1.5px solid #06170e !important;
2969
+ border-bottom: 3.5px solid #06170e !important;
2970
+ color: #a6e37b !important;
2971
+ box-shadow:
2972
+ 0 4px 12px rgba(158, 206, 106, 0.4),
2973
+ inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
2974
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6) !important;
2975
+ }
2976
+
2977
+ /* ─────────────────────────────────────────────────────────────
2978
+ 14. PERSONALIZE SECTION REDESIGN & ZERO-LAG 3D STUDIO
2979
+ Sleek tactile metric tiles, zero-radius beveled chassis,
2980
+ profile memory cards, and ultra-smooth cached interactions.
2981
+ ───────────────────────────────────────────────────────────── */
2982
+
2983
+ .cct-modal-box {
2984
+ border-radius: 0px !important;
2985
+ border-top: 2px solid rgba(255, 255, 255, 0.28) !important;
2986
+ border-left: 2px solid rgba(255, 255, 255, 0.15) !important;
2987
+ border-right: 2px solid rgba(0, 0, 0, 0.7) !important;
2988
+ border-bottom: 5px solid rgba(0, 0, 0, 0.95) !important;
2989
+ box-shadow:
2990
+ 0 24px 60px -8px rgba(0, 0, 0, 0.9),
2991
+ 0 8px 24px rgba(0, 0, 0, 0.6),
2992
+ inset 0 1px 1px rgba(255, 255, 255, 0.15) !important;
2993
+ }
2994
+
2995
+ .cct-profile-metric {
2996
+ border-radius: 0px !important;
2997
+ background: linear-gradient(170deg, #1e2238 0%, #151826 100%) !important;
2998
+ border: 1px solid var(--term-border) !important;
2999
+ border-top: 2px solid rgba(255, 255, 255, 0.22) !important;
3000
+ border-left: 1.5px solid rgba(255, 255, 255, 0.12) !important;
3001
+ border-right: 2px solid rgba(0, 0, 0, 0.7) !important;
3002
+ border-bottom: 4px solid rgba(0, 0, 0, 0.95) !important;
3003
+ box-shadow:
3004
+ 0 6px 16px rgba(0, 0, 0, 0.5),
3005
+ inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
3006
+ }
3007
+
3008
+ .cct-profile-metric:hover {
3009
+ transform: translateY(-2px) scale(1.01) !important;
3010
+ border-top-color: rgba(255, 255, 255, 0.38) !important;
3011
+ box-shadow:
3012
+ 0 10px 24px rgba(0, 0, 0, 0.65),
3013
+ 0 0 14px rgba(122, 162, 247, 0.2),
3014
+ inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
3015
+ }
3016
+
3017
+ .cct-theme-card {
3018
+ border-radius: 0px !important;
3019
+ background: linear-gradient(175deg, #1d2133 0%, #161825 100%) !important;
3020
+ border: 1px solid var(--term-border) !important;
3021
+ border-top: 2px solid rgba(255, 255, 255, 0.2) !important;
3022
+ border-left: 1.5px solid rgba(255, 255, 255, 0.1) !important;
3023
+ border-right: 2px solid rgba(0, 0, 0, 0.65) !important;
3024
+ border-bottom: 4px solid rgba(0, 0, 0, 0.9) !important;
3025
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
3026
+ }
3027
+
3028
+ .cct-theme-card.active {
3029
+ border-color: var(--color-blue) !important;
3030
+ border-top: 2px solid rgba(147, 197, 253, 0.8) !important;
3031
+ border-bottom: 4px solid #1e3a8a !important;
3032
+ box-shadow:
3033
+ 0 6px 18px rgba(37, 99, 235, 0.4),
3034
+ 0 0 16px rgba(122, 162, 247, 0.3),
3035
+ inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
3036
+ }
3037
+
3038
+ .cct-fact-card,
3039
+ .cct-card-row {
3040
+ border-radius: 0px !important;
3041
+ border-top: 1.5px solid rgba(255, 255, 255, 0.15) !important;
3042
+ border-left: 1px solid rgba(255, 255, 255, 0.08) !important;
3043
+ border-right: 1.5px solid rgba(0, 0, 0, 0.6) !important;
3044
+ border-bottom: 3px solid rgba(0, 0, 0, 0.85) !important;
3045
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
3046
+ }
3047
+
3048
+ /* ─────────────────────────────────────────────────────────────
3049
+ 15. MULTI-ASPECT RATIO RESPONSIVE ENGINE (1000x STABILITY)
3050
+ Fluid responsive adaptation across 21:9 Ultra-wide, 16:9 Desktop,
3051
+ 16:10 Laptop, 4:3 Tablet, and Mobile/Portrait viewports.
3052
+ ───────────────────────────────────────────────────────────── */
3053
+
3054
+ /* Ultra-wide Displays (21:9 and wider) */
3055
+ @media (min-aspect-ratio: 21/10), (min-width: 2200px) {
3056
+ #cct-chat-pane {
3057
+ max-width: 1400px;
3058
+ margin: 0 auto;
3059
+ width: 100%;
3060
+ }
3061
+ #cct-composer {
3062
+ max-width: 1368px;
3063
+ margin: 0 auto 14px auto !important;
3064
+ }
3065
+ .cct-welcome-box,
3066
+ .cct-palette-box,
3067
+ .cct-picker-box {
3068
+ max-width: 800px;
3069
+ }
3070
+ }
3071
+
3072
+ /* Standard 16:9 & 16:10 Displays */
3073
+ @media (min-width: 1200px) and (max-width: 2199px) {
3074
+ #cct-composer {
3075
+ margin: 0 16px 14px 16px;
3076
+ }
3077
+ }
3078
+
3079
+ /* Laptop & Compact Desktop (16:10 and under) */
3080
+ @media (max-width: 1280px), (max-height: 800px) {
3081
+ #cct-composer {
3082
+ padding: 8px 12px 6px 12px;
3083
+ margin: 0 12px 10px 12px;
3084
+ }
3085
+ .cct-composer-textarea {
3086
+ font-size: 13px;
3087
+ min-height: 22px;
3088
+ }
3089
+ .cct-footer-btn,
3090
+ .cct-send-btn {
3091
+ padding: 3px 10px;
3092
+ font-size: 12px;
3093
+ }
3094
+ .cct-card-content {
3095
+ font-size: 12.5px;
3096
+ }
3097
+ }
3098
+
3099
+ /* Tablet & Squarish 4:3 Displays */
3100
+ @media (max-width: 1024px), (max-aspect-ratio: 4/3) {
3101
+ #cct-sidebar {
3102
+ width: 210px !important;
3103
+ min-width: 190px !important;
3104
+ }
3105
+ #cct-editor-pane {
3106
+ width: 48% !important;
3107
+ min-width: 220px !important;
3108
+ }
3109
+ .cct-mode-grid {
3110
+ grid-template-columns: 1fr;
3111
+ }
3112
+ .cct-highlights-grid {
3113
+ grid-template-columns: 1fr;
3114
+ }
3115
+ .cct-profile-grid {
3116
+ grid-template-columns: 1fr;
3117
+ }
3118
+ #cct-composer {
3119
+ margin: 0 8px 8px 8px !important;
3120
+ }
3121
+ }
3122
+
3123
+ /* Mobile & Portrait Displays */
3124
+ @media (max-width: 768px), (orientation: portrait) {
3125
+ #cct-workspace {
3126
+ flex-direction: column;
3127
+ }
3128
+ #cct-sidebar {
3129
+ display: none !important;
3130
+ }
3131
+ #cct-editor-pane {
3132
+ display: none !important;
3133
+ }
3134
+ #cct-chat-pane {
3135
+ width: 100% !important;
3136
+ }
3137
+ #cct-composer {
3138
+ margin: 0 4px 6px 4px !important;
3139
+ padding: 8px 10px;
3140
+ }
3141
+ .cct-composer-footer {
3142
+ flex-wrap: wrap;
3143
+ gap: 6px;
3144
+ }
3145
+ .cct-footer-right {
3146
+ width: 100%;
3147
+ justify-content: flex-end;
3148
+ }
3149
+ .cct-header-center {
3150
+ display: none;
3151
+ }
3152
+ }