@pheem49/mint 1.5.5 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/.codex +0 -0
  2. package/.github/FUNDING.yml +2 -0
  3. package/.github/workflows/ci.yml +45 -0
  4. package/.github/workflows/release.yml +79 -0
  5. package/Cargo.lock +5792 -0
  6. package/Cargo.toml +32 -0
  7. package/README.md +387 -353
  8. package/assets/icon.png +0 -0
  9. package/bin/mint +0 -0
  10. package/crates/mint-cli/Cargo.toml +23 -0
  11. package/crates/mint-cli/src/agent.rs +851 -0
  12. package/crates/mint-cli/src/gmail.rs +216 -0
  13. package/crates/mint-cli/src/image.rs +142 -0
  14. package/crates/mint-cli/src/main.rs +2837 -0
  15. package/crates/mint-cli/src/mcp.rs +63 -0
  16. package/crates/mint-cli/src/onboard.rs +1149 -0
  17. package/crates/mint-cli/src/setup.rs +390 -0
  18. package/crates/mint-cli/src/skills.rs +8 -0
  19. package/crates/mint-cli/src/updater.rs +279 -0
  20. package/crates/mint-core/Cargo.toml +22 -0
  21. package/crates/mint-core/src/agent_loop.rs +94 -0
  22. package/crates/mint-core/src/api_server.rs +991 -0
  23. package/crates/mint-core/src/channels.rs +248 -0
  24. package/crates/mint-core/src/chat.rs +895 -0
  25. package/crates/mint-core/src/code_tools.rs +729 -0
  26. package/crates/mint-core/src/config.rs +368 -0
  27. package/crates/mint-core/src/files.rs +159 -0
  28. package/crates/mint-core/src/knowledge.rs +541 -0
  29. package/crates/mint-core/src/lib.rs +84 -0
  30. package/crates/mint-core/src/mcp.rs +273 -0
  31. package/crates/mint-core/src/memory.rs +673 -0
  32. package/crates/mint-core/src/orchestration.rs +2157 -0
  33. package/crates/mint-core/src/pictures.rs +314 -0
  34. package/crates/mint-core/src/plugins.rs +727 -0
  35. package/crates/mint-core/src/safety.rs +416 -0
  36. package/crates/mint-core/src/semantic.rs +254 -0
  37. package/crates/mint-core/src/shell.rs +317 -0
  38. package/crates/mint-core/src/skills.rs +71 -0
  39. package/crates/mint-core/src/symbols.rs +157 -0
  40. package/crates/mint-core/src/tasks.rs +308 -0
  41. package/crates/mint-core/src/tts.rs +92 -0
  42. package/crates/mint-core/src/weather.rs +93 -0
  43. package/crates/mint-core/src/web_search.rs +200 -0
  44. package/crates/mint-core/src/workflows.rs +81 -0
  45. package/crates/mint-core/tests/mcp_stdio.rs +45 -0
  46. package/crates/mint-core/tests/memory_persistence.rs +172 -0
  47. package/crates/mint-core/tests/pictures_storage.rs +14 -0
  48. package/crates/mint-core/tests/task_lifecycle.rs +87 -0
  49. package/package.json +35 -99
  50. package/src/bin/index.js +16 -0
  51. package/src/renderer/index-web.html +17 -0
  52. package/src/renderer/index.html +17 -0
  53. package/src/renderer/public/Live2DCubismCore.js +9 -0
  54. package/src/renderer/public/assets/icon.png +0 -0
  55. package/src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.model3.json +36 -0
  56. package/src/renderer/src/App.tsx +33 -0
  57. package/src/renderer/src/calculator.ts +47 -0
  58. package/src/renderer/src/components/ChatPanel.tsx +1598 -0
  59. package/src/renderer/src/components/DashboardSidebar.tsx +358 -0
  60. package/src/renderer/src/components/Live2DStage.tsx +374 -0
  61. package/src/renderer/src/components/MintDashboard.tsx +950 -0
  62. package/src/renderer/src/components/ModelPanel.tsx +154 -0
  63. package/src/renderer/src/components/PicturesLibrary.tsx +46 -0
  64. package/src/renderer/src/components/ProactiveGlow.tsx +19 -0
  65. package/src/renderer/src/components/ScreenPicker.tsx +579 -0
  66. package/src/renderer/src/components/SettingsWindow.tsx +1467 -0
  67. package/src/renderer/src/components/SpotlightWindow.tsx +280 -0
  68. package/src/renderer/src/components/WidgetWindow.tsx +36 -0
  69. package/src/renderer/src/components/WorkspacePanel.tsx +268 -0
  70. package/src/{UI → renderer/src/css}/settings.css +69 -16
  71. package/src/renderer/src/css/spotlight.css +113 -0
  72. package/src/renderer/src/css/styles.css +3722 -0
  73. package/src/renderer/src/css/widget.css +185 -0
  74. package/src/renderer/src/env.d.ts +116 -0
  75. package/src/renderer/src/index.css +379 -0
  76. package/src/renderer/src/main.tsx +13 -0
  77. package/src/renderer/src/tauri.ts +996 -0
  78. package/src/renderer/src-web/App.tsx +25 -0
  79. package/src/renderer/src-web/calculator.ts +47 -0
  80. package/src/renderer/src-web/components/ChatPanel.tsx +1662 -0
  81. package/src/renderer/src-web/components/DashboardSidebar.tsx +242 -0
  82. package/src/renderer/src-web/components/MintDashboard.tsx +763 -0
  83. package/src/renderer/src-web/components/PicturesLibrary.tsx +73 -0
  84. package/src/renderer/src-web/components/SettingsWindow.tsx +1500 -0
  85. package/src/renderer/src-web/css/settings.css +1100 -0
  86. package/src/{UI → renderer/src-web/css}/spotlight.css +4 -4
  87. package/src/{UI → renderer/src-web/css}/styles.css +1055 -159
  88. package/src/{UI → renderer/src-web/css}/widget.css +2 -2
  89. package/src/renderer/src-web/env.d.ts +107 -0
  90. package/src/renderer/src-web/index.css +379 -0
  91. package/src/renderer/src-web/main.tsx +13 -0
  92. package/src/renderer/src-web/tauri.ts +983 -0
  93. package/tsconfig.json +30 -0
  94. package/vite.config.ts +33 -0
  95. package/vite.config.web.ts +51 -0
  96. package/GUIDE_TH.md +0 -125
  97. package/assets/Agent_Mint.png +0 -0
  98. package/assets/CLI_Screen.png +0 -0
  99. package/assets/Settings.png +0 -0
  100. package/benchmark_ai.js +0 -71
  101. package/install.ps1 +0 -64
  102. package/install.sh +0 -54
  103. package/main.js +0 -139
  104. package/mint-cli-logic.js +0 -3
  105. package/mint-cli.js +0 -410
  106. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.model3.json +0 -47
  107. package/models/Shiroko_Model/Shiroko//342/232/241/351/253/230/344/272/256/342/232/241/344/275/277/347/224/250/346/225/231/347/250/213/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.txt +0 -23
  108. package/preload-picker.js +0 -11
  109. package/preload-settings.js +0 -11
  110. package/preload.js +0 -41
  111. package/scripts/install_linux_desktop_entry.js +0 -48
  112. package/src/AI_Brain/Gemini_API.js +0 -813
  113. package/src/AI_Brain/agent_orchestrator.js +0 -73
  114. package/src/AI_Brain/autonomous_brain.js +0 -179
  115. package/src/AI_Brain/behavior_memory.js +0 -135
  116. package/src/AI_Brain/headless_agent.js +0 -143
  117. package/src/AI_Brain/knowledge_base.js +0 -349
  118. package/src/AI_Brain/memory_store.js +0 -662
  119. package/src/AI_Brain/proactive_engine.js +0 -172
  120. package/src/AI_Brain/provider_adapter.js +0 -365
  121. package/src/Automation_Layer/browser_automation.js +0 -149
  122. package/src/Automation_Layer/file_operations.js +0 -286
  123. package/src/Automation_Layer/open_app.js +0 -85
  124. package/src/Automation_Layer/open_website.js +0 -38
  125. package/src/CLI/approval_handler.js +0 -47
  126. package/src/CLI/chat_router.js +0 -247
  127. package/src/CLI/chat_ui.js +0 -1159
  128. package/src/CLI/cli_colors.js +0 -115
  129. package/src/CLI/cli_formatters.js +0 -94
  130. package/src/CLI/code_agent.js +0 -1667
  131. package/src/CLI/code_session_memory.js +0 -62
  132. package/src/CLI/gmail_auth.js +0 -210
  133. package/src/CLI/image_input.js +0 -90
  134. package/src/CLI/intent_detectors.js +0 -181
  135. package/src/CLI/interactive_chat.js +0 -658
  136. package/src/CLI/list_features.js +0 -64
  137. package/src/CLI/onboarding.js +0 -416
  138. package/src/CLI/repo_summarizer.js +0 -282
  139. package/src/CLI/semantic_code_search.js +0 -312
  140. package/src/CLI/skill_manager.js +0 -41
  141. package/src/CLI/slash_command_handler.js +0 -418
  142. package/src/CLI/symbol_indexer.js +0 -231
  143. package/src/CLI/updater.js +0 -230
  144. package/src/CLI/workspace_manager.js +0 -90
  145. package/src/Channels/brave_search_bridge.js +0 -35
  146. package/src/Channels/discord_bridge.js +0 -66
  147. package/src/Channels/google_search_bridge.js +0 -38
  148. package/src/Channels/line_bridge.js +0 -60
  149. package/src/Channels/slack_bridge.js +0 -48
  150. package/src/Channels/telegram_bridge.js +0 -41
  151. package/src/Channels/whatsapp_bridge.js +0 -57
  152. package/src/Command_Parser/parser.js +0 -45
  153. package/src/Plugins/dev_tools.js +0 -41
  154. package/src/Plugins/discord.js +0 -20
  155. package/src/Plugins/docker.js +0 -47
  156. package/src/Plugins/gmail.js +0 -251
  157. package/src/Plugins/google_calendar.js +0 -252
  158. package/src/Plugins/mcp_manager.js +0 -95
  159. package/src/Plugins/notion.js +0 -256
  160. package/src/Plugins/obsidian.js +0 -54
  161. package/src/Plugins/plugin_manager.js +0 -81
  162. package/src/Plugins/spotify.js +0 -173
  163. package/src/Plugins/system_metrics.js +0 -31
  164. package/src/Plugins/system_monitor.js +0 -72
  165. package/src/System/action_executor.js +0 -178
  166. package/src/System/bridge_manager.js +0 -76
  167. package/src/System/chat_history_manager.js +0 -83
  168. package/src/System/config_manager.js +0 -194
  169. package/src/System/custom_workflows.js +0 -163
  170. package/src/System/daemon_manager.js +0 -67
  171. package/src/System/google_tts_urls.js +0 -51
  172. package/src/System/granular_automation.js +0 -157
  173. package/src/System/ipc_handlers.js +0 -332
  174. package/src/System/notifications.js +0 -23
  175. package/src/System/optional_require.js +0 -23
  176. package/src/System/picture_store.js +0 -109
  177. package/src/System/proactive_loop.js +0 -153
  178. package/src/System/safety_manager.js +0 -273
  179. package/src/System/sandbox_runner.js +0 -182
  180. package/src/System/screen_capture.js +0 -175
  181. package/src/System/smart_context.js +0 -227
  182. package/src/System/system_automation.js +0 -162
  183. package/src/System/system_events.js +0 -79
  184. package/src/System/system_info.js +0 -125
  185. package/src/System/task_manager.js +0 -222
  186. package/src/System/tool_registry.js +0 -293
  187. package/src/System/window_manager.js +0 -220
  188. package/src/UI/floating.css +0 -80
  189. package/src/UI/floating.html +0 -17
  190. package/src/UI/floating.js +0 -67
  191. package/src/UI/live2d_manager.js +0 -600
  192. package/src/UI/preload-floating.js +0 -7
  193. package/src/UI/preload-spotlight.js +0 -11
  194. package/src/UI/preload-widget.js +0 -5
  195. package/src/UI/proactive-glow.html +0 -42
  196. package/src/UI/renderer.js +0 -2127
  197. package/src/UI/screenPicker.html +0 -214
  198. package/src/UI/screenPicker.js +0 -262
  199. package/src/UI/settings.html +0 -577
  200. package/src/UI/settings.js +0 -770
  201. package/src/UI/spotlight.html +0 -23
  202. package/src/UI/spotlight.js +0 -185
  203. package/src/UI/widget.html +0 -29
  204. package/src/UI/widget.js +0 -10
  205. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/72d86db84cfa9730b894c241fd24c0db.png +0 -0
  206. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/233/264/350/243/231.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/apron.exp3.json} +0 -0
  207. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/214/253/345/222/252/346/273/244/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/catfilter.exp3.json} +0 -0
  208. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/202/271/344/270/200/344/270/213.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/click.exp3.json} +0 -0
  209. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazed.exp3.json} +0 -0
  210. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253/347/234/274/347/217/240/346/221/207/346/231/203.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazedeyes.exp3.json} +0 -0
  211. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/234/274/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/glasses.exp3.json} +0 -0
  212. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/items_pinned_to_model.json +0 -0
  213. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/277/347/254/224.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/pen.exp3.json} +0 -0
  214. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/215/347/205/247.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/photo.exp3.json} +0 -0
  215. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_00.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_00.png} +0 -0
  216. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_01.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_01.png} +0 -0
  217. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_02.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_02.png} +0 -0
  218. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_03.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_03.png} +0 -0
  219. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.cdi3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.cdi3.json} +0 -0
  220. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.moc3" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.moc3} +0 -0
  221. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.physics3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.physics3.json} +0 -0
  222. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.vtube.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.vtube.json} +0 -0
@@ -0,0 +1,1100 @@
1
+ :root {
2
+ --bg-color: #101010;
3
+ --bg-gradient: #101010;
4
+ --panel-bg: #101010;
5
+ --sidebar-bg: #1b1b1c;
6
+ --chrome-bg: #101010;
7
+ --surface-bg: #151515;
8
+ --surface-strong: #1d1d1e;
9
+ --surface-hover: #29292b;
10
+ --input-bg: #2f2f30;
11
+ --input-focus-bg: #343435;
12
+ --text-main: #e8e8ea;
13
+ --text-muted: #8c8c90;
14
+ --text-soft: #c4c4c7;
15
+ --accent: #4f83e6;
16
+ --accent-hover: #75a2ff;
17
+ --accent-soft: #343435;
18
+ --border: rgba(255, 255, 255, 0.075);
19
+ --border-strong: rgba(255, 255, 255, 0.12);
20
+ --danger: #ff4d4d;
21
+ --placeholder: #77777c;
22
+ --shadow: 0 24px 72px rgba(0, 0, 0, 0.5);
23
+ --glass-blur: none;
24
+ }
25
+
26
+ [data-theme="light"] {
27
+ --bg-color: #eef2f7;
28
+ --bg-gradient: linear-gradient(145deg, #f8fafc 0%, #e8edf5 100%);
29
+ --panel-bg: rgba(255, 255, 255, 0.94);
30
+ --sidebar-bg: rgba(241, 245, 249, 0.82);
31
+ --chrome-bg: rgba(255, 255, 255, 0.82);
32
+ --surface-bg: rgba(15, 23, 42, 0.035);
33
+ --surface-strong: rgba(15, 23, 42, 0.065);
34
+ --surface-hover: rgba(15, 23, 42, 0.085);
35
+ --input-bg: rgba(15, 23, 42, 0.045);
36
+ --input-focus-bg: #ffffff;
37
+ --text-main: #0f172a;
38
+ --text-muted: #64748b;
39
+ --text-soft: #334155;
40
+ --border: rgba(15, 23, 42, 0.12);
41
+ --border-strong: rgba(15, 23, 42, 0.18);
42
+ --placeholder: #8590a2;
43
+ --shadow: 0 20px 50px rgba(15, 23, 42, 0.16);
44
+ }
45
+
46
+ [data-theme="midnight"] {
47
+ --bg-color: #020617;
48
+ --bg-gradient: linear-gradient(145deg, #020617 0%, #080a22 55%, #120828 100%);
49
+ --panel-bg: rgba(5, 8, 24, 0.94);
50
+ --sidebar-bg: rgba(2, 6, 23, 0.82);
51
+ --chrome-bg: rgba(2, 6, 23, 0.78);
52
+ --surface-bg: rgba(99, 102, 241, 0.055);
53
+ --surface-strong: rgba(99, 102, 241, 0.085);
54
+ --surface-hover: rgba(99, 102, 241, 0.13);
55
+ --input-bg: rgba(0, 0, 0, 0.46);
56
+ --input-focus-bg: rgba(0, 0, 0, 0.64);
57
+ --text-main: #e2e8f0;
58
+ --text-muted: #74809a;
59
+ --text-soft: #bac4d6;
60
+ --border: rgba(99, 102, 241, 0.16);
61
+ --border-strong: rgba(99, 102, 241, 0.26);
62
+ --placeholder: #68708a;
63
+ }
64
+
65
+ * {
66
+ box-sizing: border-box;
67
+ margin: 0;
68
+ padding: 0;
69
+ }
70
+
71
+ body {
72
+ height: 100vh;
73
+ overflow: hidden;
74
+ background: transparent;
75
+ color: var(--text-main);
76
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
77
+ user-select: none;
78
+ }
79
+
80
+ button,
81
+ input,
82
+ select,
83
+ textarea {
84
+ font: inherit;
85
+ }
86
+
87
+ button {
88
+ -webkit-app-region: no-drag;
89
+ }
90
+
91
+ .settings-container {
92
+ display: grid;
93
+ grid-template-rows: auto minmax(0, 1fr) auto;
94
+ height: 100vh;
95
+ overflow: hidden;
96
+ background: var(--panel-bg);
97
+ border: 1px solid var(--border);
98
+ border-radius: 10px;
99
+ box-shadow: var(--shadow);
100
+ opacity: 1;
101
+ }
102
+
103
+ @keyframes appEntrance {
104
+ from {
105
+ opacity: 0;
106
+ transform: scale(0.985) translateY(8px);
107
+ }
108
+ to {
109
+ opacity: 1;
110
+ transform: scale(1) translateY(0);
111
+ }
112
+ }
113
+
114
+ .settings-header,
115
+ .settings-footer {
116
+ display: flex;
117
+ align-items: center;
118
+ background: var(--panel-bg);
119
+ border-color: var(--border);
120
+ backdrop-filter: var(--glass-blur);
121
+ }
122
+
123
+ .settings-header {
124
+ -webkit-app-region: drag;
125
+ position: relative;
126
+ z-index: 3;
127
+ min-height: 64px;
128
+ padding: 16px 24px;
129
+ border-bottom: 1px solid var(--border);
130
+ }
131
+
132
+ .header-left {
133
+ display: flex;
134
+ align-items: center;
135
+ gap: 12px;
136
+ }
137
+
138
+ .settings-icon {
139
+ display: grid;
140
+ place-items: center;
141
+ width: 34px;
142
+ height: 34px;
143
+ border: 1px solid var(--border-strong);
144
+ border-radius: 10px;
145
+ background: var(--surface-strong);
146
+ color: var(--accent-hover);
147
+ font-size: 1rem;
148
+ }
149
+
150
+ h1 {
151
+ color: var(--text-main);
152
+ font-size: 1.02rem;
153
+ font-weight: 600;
154
+ letter-spacing: 0;
155
+ }
156
+
157
+ .header-left p {
158
+ margin-top: 2px;
159
+ color: var(--text-muted);
160
+ font-size: 0.78rem;
161
+ }
162
+
163
+ .close-btn {
164
+ position: absolute;
165
+ top: 50%;
166
+ transform: translateY(-50%);
167
+ right: 24px;
168
+ z-index: 5;
169
+ display: grid;
170
+ place-items: center;
171
+ width: 32px;
172
+ height: 32px;
173
+ border: 1px solid transparent;
174
+ border-radius: 8px;
175
+ background: transparent;
176
+ color: var(--text-muted);
177
+ cursor: pointer;
178
+ transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.15s;
179
+ }
180
+
181
+ .close-btn:hover {
182
+ background: rgba(239, 68, 68, 0.12);
183
+ border-color: rgba(239, 68, 68, 0.28);
184
+ color: var(--danger);
185
+ transform: translateY(-50%) scale(1.05);
186
+ }
187
+
188
+ .settings-body {
189
+ display: flex;
190
+ flex: 1;
191
+ min-height: 0;
192
+ overflow: hidden;
193
+ }
194
+
195
+ .settings-sidebar {
196
+ width: 194px;
197
+ min-width: 194px;
198
+ padding: 24px 8px 12px;
199
+ overflow-y: auto;
200
+ background: var(--sidebar-bg);
201
+ border-right: 1px solid var(--border);
202
+ }
203
+
204
+ .tab-btn {
205
+ display: flex;
206
+ align-items: center;
207
+ width: 100%;
208
+ min-height: 42px;
209
+ gap: 10px;
210
+ padding: 9px 10px;
211
+ border: 1px solid transparent;
212
+ border-radius: 7px;
213
+ background: transparent;
214
+ color: var(--text-muted);
215
+ cursor: pointer;
216
+ text-align: left;
217
+ transition: background 0.16s, border-color 0.16s, color 0.16s, transform 0.16s;
218
+ }
219
+
220
+ .tab-btn + .tab-btn {
221
+ margin-top: 5px;
222
+ }
223
+
224
+ .tab-btn span {
225
+ display: inline-flex;
226
+ align-items: center;
227
+ justify-content: center;
228
+ }
229
+
230
+ .tab-btn strong {
231
+ font-size: 0.86rem;
232
+ font-weight: 500;
233
+ line-height: 1.2;
234
+ }
235
+
236
+ .tab-btn:hover {
237
+ background: var(--surface-hover);
238
+ color: var(--text-main);
239
+ transform: none;
240
+ }
241
+
242
+ .tab-btn.active {
243
+ background: var(--surface-strong);
244
+ border-color: transparent;
245
+ color: var(--text-main);
246
+ box-shadow: none;
247
+ }
248
+
249
+ .settings-content {
250
+ flex: 1;
251
+ min-width: 0;
252
+ overflow-y: auto;
253
+ padding: 24px 32px 32px;
254
+ }
255
+
256
+ .web-safe-notice {
257
+ width: 100%;
258
+ max-width: 624px;
259
+ margin: 0 auto 18px;
260
+ padding: 12px 14px;
261
+ border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border));
262
+ border-radius: 9px;
263
+ background: color-mix(in srgb, var(--accent) 9%, var(--surface-bg));
264
+ color: var(--text-main);
265
+ }
266
+
267
+ .web-safe-notice strong,
268
+ .web-safe-notice span {
269
+ display: block;
270
+ }
271
+
272
+ .web-safe-notice strong {
273
+ font-size: 0.82rem;
274
+ font-weight: 750;
275
+ }
276
+
277
+ .web-safe-notice span {
278
+ margin-top: 3px;
279
+ color: var(--text-muted);
280
+ font-size: 0.76rem;
281
+ line-height: 1.45;
282
+ }
283
+
284
+ .settings-content::-webkit-scrollbar,
285
+ .settings-sidebar::-webkit-scrollbar {
286
+ width: 6px;
287
+ }
288
+
289
+ .settings-content::-webkit-scrollbar-thumb,
290
+ .settings-sidebar::-webkit-scrollbar-thumb {
291
+ background: var(--border-strong);
292
+ border-radius: 10px;
293
+ }
294
+
295
+ .tab-pane {
296
+ display: none;
297
+ flex-direction: column;
298
+ gap: 18px;
299
+ width: 100%;
300
+ max-width: 624px;
301
+ margin: 0 auto;
302
+ animation: fadeTab 0.18s ease;
303
+ }
304
+
305
+ .tab-pane.active {
306
+ display: flex;
307
+ }
308
+
309
+ @keyframes fadeTab {
310
+ from {
311
+ opacity: 0;
312
+ transform: translateY(4px);
313
+ }
314
+ to {
315
+ opacity: 1;
316
+ transform: translateY(0);
317
+ }
318
+ }
319
+
320
+ .setting-section {
321
+ padding: 0;
322
+ border: 1px solid var(--border);
323
+ border-radius: 12px;
324
+ background: color-mix(in srgb, var(--surface-bg) 74%, transparent);
325
+ overflow: hidden;
326
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
327
+ }
328
+
329
+ .section-heading {
330
+ display: block;
331
+ margin-bottom: 0;
332
+ padding: 20px 14px 14px;
333
+ border-bottom: 1px solid var(--border);
334
+ }
335
+
336
+ .section-kicker {
337
+ margin-bottom: 4px;
338
+ color: var(--accent-hover);
339
+ font-size: 0.72rem;
340
+ font-weight: 600;
341
+ letter-spacing: 0.08em;
342
+ text-transform: uppercase;
343
+ }
344
+
345
+ .section-title {
346
+ color: var(--text-main);
347
+ font-size: 1rem;
348
+ font-weight: 500;
349
+ }
350
+
351
+ .section-description {
352
+ max-width: none;
353
+ margin-top: 8px;
354
+ color: var(--text-muted);
355
+ font-size: 0.82rem;
356
+ line-height: 1.45;
357
+ }
358
+
359
+ .form-grid {
360
+ display: grid;
361
+ grid-template-columns: minmax(0, 1fr);
362
+ gap: 0;
363
+ padding: 0;
364
+ }
365
+
366
+ .form-grid.compact {
367
+ grid-template-columns: minmax(0, 1fr);
368
+ }
369
+
370
+ .form-grid.single {
371
+ grid-template-columns: minmax(0, 1fr);
372
+ max-width: 540px;
373
+ }
374
+
375
+ .setting-row {
376
+ min-width: 0;
377
+ display: grid;
378
+ grid-template-columns: 220px 1fr;
379
+ align-items: center;
380
+ gap: 18px;
381
+ min-height: 48px;
382
+ padding: 12px 16px;
383
+ border-top: 1px solid var(--border);
384
+ }
385
+
386
+ .setting-section .form-grid:first-child .setting-row:first-child,
387
+ .setting-section .section-heading + .form-grid .setting-row:first-child,
388
+ .custom-theme-panel .setting-row:first-child {
389
+ border-top: 0;
390
+ }
391
+
392
+ .setting-row.wide {
393
+ grid-column: 1 / -1;
394
+ }
395
+
396
+ .setting-row label,
397
+ .color-section label,
398
+ .toggle-row label {
399
+ display: block;
400
+ margin-bottom: 0;
401
+ color: var(--text-soft);
402
+ font-size: 0.83rem;
403
+ font-weight: 500;
404
+ }
405
+
406
+ input[type="text"],
407
+ input[type="password"],
408
+ input[type="email"],
409
+ input[type="url"],
410
+ select,
411
+ textarea {
412
+ width: 100%;
413
+ min-height: 32px;
414
+ padding: 6px 10px;
415
+ border: 1px solid var(--border);
416
+ border-radius: 7px;
417
+ outline: none;
418
+ background: var(--input-bg);
419
+ color: var(--text-main);
420
+ font-size: 0.88rem;
421
+ user-select: text;
422
+ transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
423
+ }
424
+
425
+ select {
426
+ cursor: pointer;
427
+ background-color: var(--input-bg) !important;
428
+ color: var(--text-main) !important;
429
+ color-scheme: dark;
430
+ }
431
+
432
+ select:focus {
433
+ background-color: var(--input-focus-bg) !important;
434
+ }
435
+
436
+ select option {
437
+ background-color: var(--input-bg) !important;
438
+ color: var(--text-main) !important;
439
+ }
440
+
441
+ select option:checked {
442
+ background: linear-gradient(var(--accent), var(--accent)) !important;
443
+ color: #ffffff !important;
444
+ }
445
+
446
+ [data-theme="light"] select {
447
+ color-scheme: light;
448
+ }
449
+
450
+ textarea {
451
+ min-height: 74px;
452
+ resize: vertical;
453
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
454
+ font-size: 0.8rem;
455
+ line-height: 1.45;
456
+ }
457
+
458
+ input:focus,
459
+ select:focus,
460
+ textarea:focus {
461
+ background: var(--input-focus-bg);
462
+ border-color: var(--accent);
463
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
464
+ }
465
+
466
+ input::placeholder,
467
+ textarea::placeholder {
468
+ color: var(--placeholder);
469
+ }
470
+
471
+ input[type="color"] {
472
+ width: 44px;
473
+ height: 34px;
474
+ padding: 3px;
475
+ border: 1px solid var(--border);
476
+ border-radius: 9px;
477
+ background: var(--input-bg);
478
+ cursor: pointer;
479
+ }
480
+
481
+ #sect-theme .form-grid {
482
+ padding: 0;
483
+ }
484
+
485
+ #sect-theme .form-grid .setting-row {
486
+ min-height: 56px;
487
+ background: transparent;
488
+ }
489
+
490
+ #sect-theme select {
491
+ height: 36px;
492
+ border-radius: 8px;
493
+ background: var(--input-bg);
494
+ }
495
+
496
+ .input-group {
497
+ display: flex;
498
+ align-items: stretch;
499
+ gap: 8px;
500
+ }
501
+
502
+ .toggle-visibility {
503
+ display: grid;
504
+ place-items: center;
505
+ width: 42px;
506
+ min-width: 42px;
507
+ border: 1px solid var(--border);
508
+ border-radius: 9px;
509
+ background: var(--input-bg);
510
+ color: var(--text-muted);
511
+ cursor: pointer;
512
+ transition: background 0.15s, border-color 0.15s, color 0.15s;
513
+ }
514
+
515
+ .toggle-visibility:hover {
516
+ background: var(--accent-soft);
517
+ border-color: rgba(16, 185, 129, 0.36);
518
+ color: var(--text-main);
519
+ }
520
+
521
+ .hidden-row {
522
+ display: none;
523
+ }
524
+
525
+ .hint {
526
+ color: var(--text-muted);
527
+ font-size: 0.78rem;
528
+ line-height: 1.45;
529
+ }
530
+
531
+ .hint a {
532
+ color: var(--accent-hover);
533
+ text-decoration: none;
534
+ }
535
+
536
+ .hint a:hover {
537
+ text-decoration: underline;
538
+ }
539
+
540
+ .toggle-row {
541
+ display: grid;
542
+ grid-template-columns: minmax(0, 1fr) auto;
543
+ align-items: center;
544
+ justify-content: space-between;
545
+ gap: 20px;
546
+ min-height: 58px;
547
+ padding: 10px 12px;
548
+ border: 1px solid var(--border);
549
+ border-radius: 11px;
550
+ background: transparent;
551
+ }
552
+
553
+ .setting-section .toggle-row {
554
+ border: 0;
555
+ border-radius: 0;
556
+ border-top: 1px solid var(--border);
557
+ padding: 12px 16px;
558
+ }
559
+
560
+ .setting-section .section-heading + .toggle-row,
561
+ .setting-section .form-grid:first-child .toggle-row:first-child {
562
+ border-top: 0;
563
+ }
564
+
565
+ .setting-actions {
566
+ display: flex;
567
+ gap: 12px;
568
+ padding: 12px 16px;
569
+ border-top: 1px solid var(--border);
570
+ }
571
+
572
+ .toggle-row label {
573
+ margin-bottom: 4px;
574
+ color: var(--text-main);
575
+ }
576
+
577
+ .toggle-switch {
578
+ position: relative;
579
+ display: inline-block;
580
+ width: 46px;
581
+ min-width: 46px;
582
+ height: 26px;
583
+ }
584
+
585
+ .toggle-switch input {
586
+ width: 0;
587
+ height: 0;
588
+ opacity: 0;
589
+ }
590
+
591
+ .toggle-slider {
592
+ position: absolute;
593
+ inset: 0;
594
+ cursor: pointer;
595
+ background: var(--input-bg);
596
+ border: 1px solid var(--border-strong);
597
+ border-radius: 999px;
598
+ transition: background 0.18s, border-color 0.18s;
599
+ }
600
+
601
+ .toggle-slider::before {
602
+ position: absolute;
603
+ content: "";
604
+ width: 18px;
605
+ height: 18px;
606
+ left: 3px;
607
+ bottom: 3px;
608
+ border-radius: 50%;
609
+ background: var(--text-muted);
610
+ transition: transform 0.18s, background 0.18s;
611
+ }
612
+
613
+ input:checked + .toggle-slider {
614
+ background: var(--accent);
615
+ border-color: var(--accent);
616
+ }
617
+
618
+ input:checked + .toggle-slider::before {
619
+ transform: translateX(20px);
620
+ background: #ffffff;
621
+ }
622
+
623
+ .slider-stack {
624
+ display: grid;
625
+ gap: 16px;
626
+ max-width: 660px;
627
+ }
628
+
629
+ .slider-group {
630
+ display: flex;
631
+ align-items: center;
632
+ gap: 12px;
633
+ }
634
+
635
+ .range-slider {
636
+ flex: 1;
637
+ min-height: 22px;
638
+ -webkit-appearance: none;
639
+ appearance: none;
640
+ background: transparent;
641
+ cursor: pointer;
642
+ }
643
+
644
+ .range-slider::-webkit-slider-runnable-track {
645
+ height: 6px;
646
+ border-radius: 999px;
647
+ background: var(--border-strong);
648
+ }
649
+
650
+ .range-slider::-webkit-slider-thumb {
651
+ width: 18px;
652
+ height: 18px;
653
+ margin-top: -6px;
654
+ -webkit-appearance: none;
655
+ appearance: none;
656
+ border: 3px solid var(--panel-bg);
657
+ border-radius: 50%;
658
+ background: var(--accent);
659
+ box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.5), 0 6px 16px rgba(0, 0, 0, 0.25);
660
+ }
661
+
662
+ .range-value {
663
+ min-width: 68px;
664
+ padding: 5px 9px;
665
+ border: 1px solid rgba(16, 185, 129, 0.3);
666
+ border-radius: 8px;
667
+ background: var(--accent-soft);
668
+ color: var(--accent-hover);
669
+ font-size: 0.78rem;
670
+ font-weight: 600;
671
+ text-align: center;
672
+ white-space: nowrap;
673
+ }
674
+
675
+ .button-row,
676
+ .footer-actions {
677
+ display: flex;
678
+ align-items: center;
679
+ gap: 10px;
680
+ }
681
+
682
+ .btn-primary,
683
+ .btn-secondary,
684
+ .btn-danger,
685
+ .btn-connect,
686
+ .btn-disconnect {
687
+ min-height: 38px;
688
+ padding: 9px 15px;
689
+ border-radius: 9px;
690
+ cursor: pointer;
691
+ font-size: 0.86rem;
692
+ font-weight: 600;
693
+ transition: transform 0.15s, background 0.15s, border-color 0.15s, color 0.15s;
694
+ }
695
+
696
+ .btn-primary:disabled,
697
+ .btn-secondary:disabled,
698
+ .btn-danger:disabled,
699
+ .btn-connect:disabled,
700
+ .btn-disconnect:disabled {
701
+ opacity: 0.46;
702
+ cursor: not-allowed;
703
+ transform: none;
704
+ }
705
+
706
+ .btn-small {
707
+ min-height: 32px;
708
+ padding: 6px 11px;
709
+ font-size: 0.78rem;
710
+ }
711
+
712
+ .btn-primary {
713
+ border: 1px solid transparent;
714
+ background: var(--accent);
715
+ color: #ffffff;
716
+ box-shadow: none;
717
+ }
718
+
719
+ .btn-primary:hover,
720
+ .btn-secondary:hover,
721
+ .btn-danger:hover,
722
+ .btn-connect:hover,
723
+ .btn-disconnect:hover {
724
+ transform: translateY(-1px);
725
+ }
726
+
727
+ .btn-secondary {
728
+ border: 1px solid var(--border);
729
+ background: #252526;
730
+ color: var(--text-soft);
731
+ }
732
+
733
+ .btn-secondary:hover {
734
+ border-color: var(--border-strong);
735
+ color: var(--text-main);
736
+ }
737
+
738
+ .btn-danger,
739
+ .btn-disconnect {
740
+ border: 1px solid rgba(239, 68, 68, 0.36);
741
+ background: rgba(239, 68, 68, 0.1);
742
+ color: var(--danger);
743
+ }
744
+
745
+ .btn-danger:hover,
746
+ .btn-disconnect:hover {
747
+ background: var(--danger);
748
+ color: #ffffff;
749
+ }
750
+
751
+ .btn-connect {
752
+ border: 1px solid transparent;
753
+ background: var(--accent);
754
+ color: #ffffff;
755
+ }
756
+
757
+ .full-width {
758
+ width: 100%;
759
+ }
760
+
761
+ .web-safe-footer-note {
762
+ color: var(--text-muted);
763
+ font-size: 0.78rem;
764
+ }
765
+
766
+ .theme-grid {
767
+ display: grid;
768
+ grid-template-columns: repeat(4, minmax(0, 1fr));
769
+ gap: 10px;
770
+ padding: 14px;
771
+ }
772
+
773
+ .theme-card {
774
+ position: relative;
775
+ display: flex;
776
+ flex-direction: column;
777
+ gap: 10px;
778
+ min-height: 102px;
779
+ padding: 10px;
780
+ border: 1px solid var(--border);
781
+ border-radius: 10px;
782
+ background: var(--input-bg);
783
+ color: var(--text-soft);
784
+ cursor: pointer;
785
+ text-align: left;
786
+ overflow: hidden;
787
+ transition: border-color 0.16s, background 0.16s, color 0.16s, transform 0.16s, box-shadow 0.16s;
788
+ }
789
+
790
+ .theme-card:hover {
791
+ background: var(--surface-hover);
792
+ border-color: var(--border-strong);
793
+ color: var(--text-main);
794
+ }
795
+
796
+ .theme-card.active {
797
+ border-color: var(--accent);
798
+ color: var(--text-main);
799
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent);
800
+ }
801
+
802
+ .theme-card.active::after {
803
+ content: "";
804
+ position: absolute;
805
+ top: 10px;
806
+ right: 10px;
807
+ width: 8px;
808
+ height: 8px;
809
+ border-radius: 999px;
810
+ background: var(--accent);
811
+ box-shadow: 0 0 12px color-mix(in srgb, var(--accent) 70%, transparent);
812
+ }
813
+
814
+ .theme-card span {
815
+ font-size: 0.88rem;
816
+ font-weight: 500;
817
+ }
818
+
819
+ .theme-preview {
820
+ width: 100%;
821
+ height: 54px;
822
+ border-radius: 8px;
823
+ border: 1px solid rgba(255, 255, 255, 0.06);
824
+ box-shadow: inset 0 -18px 30px rgba(0, 0, 0, 0.12);
825
+ }
826
+
827
+ .dark-preview {
828
+ background: linear-gradient(135deg, #0b1020 0%, #241642 100%);
829
+ }
830
+
831
+ .light-preview {
832
+ background: linear-gradient(135deg, #f8fafc 0%, #dbe5f0 100%);
833
+ }
834
+
835
+ .midnight-preview {
836
+ background: linear-gradient(135deg, #020617 0%, #100626 100%);
837
+ }
838
+
839
+ .custom-preview {
840
+ background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 100%);
841
+ border: 1px dashed rgba(255, 255, 255, 0.28);
842
+ }
843
+
844
+ .custom-theme-panel {
845
+ margin: 0 14px 14px;
846
+ padding: 0;
847
+ border: 1px dashed var(--border-strong);
848
+ border-radius: 10px;
849
+ background: var(--input-bg);
850
+ overflow: hidden;
851
+ }
852
+
853
+ .custom-theme-panel .setting-row + .setting-row {
854
+ margin-top: 12px;
855
+ }
856
+
857
+ .color-range,
858
+ .color-inputs {
859
+ display: flex;
860
+ align-items: center;
861
+ gap: 10px;
862
+ }
863
+
864
+ .color-section {
865
+ display: grid;
866
+ grid-template-columns: minmax(0, 1fr) auto;
867
+ align-items: center;
868
+ justify-content: space-between;
869
+ gap: 20px;
870
+ padding: 14px;
871
+ }
872
+
873
+ .color-presets {
874
+ display: flex;
875
+ flex-wrap: wrap;
876
+ gap: 10px;
877
+ }
878
+
879
+ .color-dot {
880
+ width: 31px;
881
+ height: 31px;
882
+ border: 3px solid transparent;
883
+ border-radius: 50%;
884
+ cursor: pointer;
885
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
886
+ transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s;
887
+ }
888
+
889
+ .color-dot:hover {
890
+ transform: scale(1.08);
891
+ }
892
+
893
+ .color-dot.active {
894
+ border-color: #ffffff;
895
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 44%, transparent), inset 0 0 0 1px rgba(255, 255, 255, 0.22);
896
+ }
897
+
898
+ .accent-purple { background: #8b5cf6; }
899
+ .accent-cyan { background: #06b6d4; }
900
+ .accent-green { background: #10b981; }
901
+ .accent-amber { background: #f59e0b; }
902
+ .accent-red { background: #ef4444; }
903
+ .accent-pink { background: #ec4899; }
904
+
905
+ .plugin-list {
906
+ display: grid;
907
+ gap: 10px;
908
+ }
909
+
910
+ .plugin-card {
911
+ display: grid;
912
+ grid-template-columns: 38px minmax(0, 1fr) auto;
913
+ align-items: center;
914
+ gap: 12px;
915
+ padding: 12px;
916
+ border: 1px solid var(--border);
917
+ border-radius: 11px;
918
+ background: var(--surface-bg);
919
+ }
920
+
921
+ .plugin-icon {
922
+ display: grid;
923
+ place-items: center;
924
+ width: 38px;
925
+ height: 38px;
926
+ border: 1px solid var(--border);
927
+ border-radius: 10px;
928
+ background: var(--surface-strong);
929
+ }
930
+
931
+ .plugin-name {
932
+ margin-bottom: 3px;
933
+ color: var(--text-main);
934
+ font-size: 0.92rem;
935
+ font-weight: 600;
936
+ }
937
+
938
+ .plugin-desc {
939
+ color: var(--text-muted);
940
+ font-size: 0.78rem;
941
+ line-height: 1.35;
942
+ }
943
+
944
+ .mcp-list {
945
+ display: grid;
946
+ gap: 10px;
947
+ margin-bottom: 16px;
948
+ }
949
+
950
+ .mcp-empty {
951
+ padding: 16px;
952
+ border: 1px dashed var(--border);
953
+ border-radius: 11px;
954
+ color: var(--text-muted);
955
+ font-size: 0.82rem;
956
+ text-align: center;
957
+ }
958
+
959
+ .mcp-item {
960
+ display: flex;
961
+ align-items: center;
962
+ justify-content: space-between;
963
+ gap: 14px;
964
+ padding: 12px;
965
+ border: 1px solid var(--border);
966
+ border-radius: 11px;
967
+ background: var(--surface-bg);
968
+ }
969
+
970
+ .mcp-info {
971
+ min-width: 0;
972
+ }
973
+
974
+ .mcp-name {
975
+ margin-bottom: 4px;
976
+ color: var(--text-main);
977
+ font-size: 0.9rem;
978
+ font-weight: 600;
979
+ }
980
+
981
+ .mcp-command {
982
+ overflow: hidden;
983
+ color: var(--text-muted);
984
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
985
+ font-size: 0.74rem;
986
+ text-overflow: ellipsis;
987
+ white-space: nowrap;
988
+ }
989
+
990
+ .add-mcp-box {
991
+ display: grid;
992
+ gap: 10px;
993
+ padding: 14px;
994
+ border: 1px dashed var(--border-strong);
995
+ border-radius: 11px;
996
+ background: var(--surface-bg);
997
+ }
998
+
999
+ .add-mcp-box h3 {
1000
+ color: var(--accent-hover);
1001
+ font-size: 0.94rem;
1002
+ font-weight: 600;
1003
+ }
1004
+
1005
+ .shortcut-list {
1006
+ display: grid;
1007
+ gap: 10px;
1008
+ }
1009
+
1010
+ .shortcut-item {
1011
+ display: flex;
1012
+ align-items: center;
1013
+ justify-content: space-between;
1014
+ gap: 16px;
1015
+ padding: 13px 14px;
1016
+ border: 1px solid var(--border);
1017
+ border-radius: 11px;
1018
+ background: var(--surface-bg);
1019
+ color: var(--text-soft);
1020
+ font-size: 0.88rem;
1021
+ }
1022
+
1023
+ .keys {
1024
+ display: flex;
1025
+ align-items: center;
1026
+ gap: 6px;
1027
+ }
1028
+
1029
+ kbd {
1030
+ min-width: 30px;
1031
+ padding: 4px 8px;
1032
+ border: 1px solid var(--border-strong);
1033
+ border-radius: 7px;
1034
+ background: var(--input-bg);
1035
+ color: var(--accent-hover);
1036
+ font-family: 'Outfit', sans-serif;
1037
+ font-size: 0.76rem;
1038
+ font-weight: 700;
1039
+ text-align: center;
1040
+ }
1041
+
1042
+ .settings-footer {
1043
+ justify-content: space-between;
1044
+ gap: 14px;
1045
+ min-height: 64px;
1046
+ padding: 12px 20px;
1047
+ border-top: 1px solid var(--border);
1048
+ background: var(--panel-bg);
1049
+ }
1050
+
1051
+ .settings-footer .btn-danger {
1052
+ min-width: 150px;
1053
+ }
1054
+
1055
+ .footer-actions {
1056
+ margin-left: auto;
1057
+ }
1058
+
1059
+ @media (max-width: 620px) {
1060
+ .settings-sidebar {
1061
+ width: 64px;
1062
+ min-width: 64px;
1063
+ padding: 12px 8px;
1064
+ }
1065
+
1066
+ .tab-btn {
1067
+ justify-content: center;
1068
+ padding: 10px;
1069
+ }
1070
+
1071
+ .tab-btn span {
1072
+ display: inline-block;
1073
+ font-size: 1.15rem;
1074
+ }
1075
+
1076
+ .tab-btn strong {
1077
+ display: none;
1078
+ }
1079
+
1080
+ .settings-content {
1081
+ padding: 18px;
1082
+ }
1083
+
1084
+ .section-heading,
1085
+ .color-section,
1086
+ .settings-footer {
1087
+ align-items: stretch;
1088
+ flex-direction: column;
1089
+ }
1090
+
1091
+ .footer-actions {
1092
+ margin-left: 0;
1093
+ }
1094
+
1095
+ .form-grid,
1096
+ .form-grid.compact,
1097
+ .theme-grid {
1098
+ grid-template-columns: minmax(0, 1fr);
1099
+ }
1100
+ }