ft-scout 9.4.3 → 9.4.4

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 (47) hide show
  1. package/.firebase/hosting.d2Vi.cache +7 -7
  2. package/README.md +2 -2
  3. package/artifacts/scout_drone_3d.glb +0 -0
  4. package/artifacts/scout_drone_3d_render.png +0 -0
  5. package/bin/src/commands/brief.d.ts.map +1 -1
  6. package/bin/src/commands/brief.js +31 -1
  7. package/bin/src/commands/brief.js.map +1 -1
  8. package/bin/src/commands/plan.d.ts.map +1 -1
  9. package/bin/src/commands/plan.js +23 -3
  10. package/bin/src/commands/plan.js.map +1 -1
  11. package/bin/src/commands/risky.d.ts.map +1 -1
  12. package/bin/src/commands/risky.js +82 -1
  13. package/bin/src/commands/risky.js.map +1 -1
  14. package/bin/src/discovery/messages.js +2 -2
  15. package/bin/src/discovery/messages.js.map +1 -1
  16. package/bin/src/engine/computer/computerController.d.ts.map +1 -1
  17. package/bin/src/engine/computer/computerController.js +5 -0
  18. package/bin/src/engine/computer/computerController.js.map +1 -1
  19. package/bin/src/engine/computer/scoutDriver.cs +152 -18
  20. package/bin/src/engine/computer/scout_driver.exe +0 -0
  21. package/bin/src/engine/llm.d.ts.map +1 -1
  22. package/bin/src/engine/llm.js +3 -0
  23. package/bin/src/engine/llm.js.map +1 -1
  24. package/bin/src/engine/runtime/agentRuntime.d.ts.map +1 -1
  25. package/bin/src/engine/runtime/agentRuntime.js +20 -8
  26. package/bin/src/engine/runtime/agentRuntime.js.map +1 -1
  27. package/bin/src/engine/verifier.d.ts.map +1 -1
  28. package/bin/src/engine/verifier.js +31 -12
  29. package/bin/src/engine/verifier.js.map +1 -1
  30. package/bin/src/engine/workspace/agentWorkspace.d.ts.map +1 -1
  31. package/bin/src/engine/workspace/agentWorkspace.js +43 -0
  32. package/bin/src/engine/workspace/agentWorkspace.js.map +1 -1
  33. package/bin/src/index.js +21 -10
  34. package/bin/src/index.js.map +1 -1
  35. package/bin/src/mcp/client.js +1 -1
  36. package/bin/src/utils/branding.js +1 -1
  37. package/bin/src/utils/payment.d.ts.map +1 -1
  38. package/bin/src/utils/payment.js +38 -0
  39. package/bin/src/utils/payment.js.map +1 -1
  40. package/bin/src/utils/qrBridge.js +1 -1
  41. package/package.json +1 -1
  42. package/scripts/build_3d_drone.js +130 -0
  43. package/scripts/export_and_capture.js +48 -0
  44. package/scripts/render_and_export_drone.js +94 -0
  45. package/scripts/render_front_view.js +76 -0
  46. package/web/app.js +4 -4
  47. package/web/styles.css +338 -25
@@ -0,0 +1,76 @@
1
+ import { getMCPManager } from '../bin/src/mcp/index.js';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+
5
+ async function main() {
6
+ const mgr = getMCPManager();
7
+
8
+ const artifactsDir = path.resolve('artifacts');
9
+ const glbPath = path.resolve(artifactsDir, 'scout_drone_3d.glb').replace(/\\/g, '/');
10
+ const renderPath = path.resolve(artifactsDir, 'scout_drone_3d_render.png').replace(/\\/g, '/');
11
+
12
+ const pyCode = `
13
+ import bpy
14
+ import math
15
+
16
+ # Position camera in front-three-quarter view (looking directly at the glowing front cockpit eye)
17
+ cam = bpy.data.objects.get('Camera')
18
+ if not cam:
19
+ bpy.ops.object.camera_add(location=(3.6, 3.8, 2.4))
20
+ cam = bpy.context.active_object
21
+ else:
22
+ cam.location = (3.6, 3.8, 2.4)
23
+
24
+ cam.rotation_euler = (math.radians(64), 0, math.radians(138))
25
+ bpy.context.scene.camera = cam
26
+
27
+ # Adjust lights for cinematic drama
28
+ # Front Key light on the glowing eye and gold ring
29
+ light_key = bpy.data.objects.get('Light')
30
+ if light_key:
31
+ light_key.location = (2.5, 4.0, 3.5)
32
+ light_key.data.energy = 900
33
+ light_key.data.color = (1.0, 0.92, 0.8)
34
+
35
+ # Cool cyan rim fill on the opposite flank
36
+ light_fill = bpy.data.objects.get('Light_Fill')
37
+ if light_fill:
38
+ light_fill.location = (-4.0, 2.0, 2.8)
39
+ light_fill.data.energy = 650
40
+ light_fill.data.color = (0.0, 0.85, 1.0)
41
+
42
+ # Back rim light for separation
43
+ light_under = bpy.data.objects.get('Light_Underglow')
44
+ if light_under:
45
+ light_under.location = (-1.0, -3.5, 3.0)
46
+ light_under.data.energy = 700
47
+ light_under.data.color = (0.9, 0.4, 1.0)
48
+
49
+ # Export updated GLB with all materials
50
+ bpy.ops.export_scene.gltf(
51
+ filepath='${glbPath}',
52
+ export_format='GLB',
53
+ use_selection=False,
54
+ export_apply=True
55
+ )
56
+
57
+ # Render cinematic 1280x720 still
58
+ bpy.context.scene.render.resolution_x = 1280
59
+ bpy.context.scene.render.resolution_y = 720
60
+ bpy.context.scene.render.image_settings.file_format = 'PNG'
61
+ bpy.context.scene.render.filepath = '${renderPath}'
62
+ bpy.ops.render.render(write_still=True)
63
+ print('FRONT_CINEMATIC_RENDER_COMPLETE')
64
+ `;
65
+
66
+ console.log('Rendering front cinematic view in Blender...');
67
+ const result = await mgr.executeTool('execute_blender_code', {
68
+ code: pyCode,
69
+ user_prompt: 'Render front cinematic camera angle of 3D Scout Drone'
70
+ });
71
+
72
+ console.log('Result Status:', result.status);
73
+ console.log('Output Summary:', result.outputSummary);
74
+ }
75
+
76
+ main().catch(console.error);
package/web/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================================
2
- FrontTerrain Scout Multi-Page Application Engine v9.4.3
2
+ FrontTerrain Scout Multi-Page Application Engine v9.4.4
3
3
  ========================================================================== */
4
4
 
5
5
  const FIREBASE_CONFIG = {
@@ -1103,7 +1103,7 @@ function initTerminalSimulator() {
1103
1103
  `;
1104
1104
  } else if (lower.includes('status')) {
1105
1105
  response.innerHTML = `
1106
- <span class="term-green">✔ Scout CLI Engine: v9.4.3 Online</span><br>
1106
+ <span class="term-green">✔ Scout CLI Engine: v9.4.4 Online</span><br>
1107
1107
  ↳ User: <strong>${escapeHtml(state.user ? state.user.name : 'Guest Session')}</strong><br>
1108
1108
  ↳ Active Subscription: <strong>${escapeHtml(TIER_DETAILS[state.currentTier].name)}</strong><br>
1109
1109
  ↳ Credit Quota: <strong>${state.byokEnabled ? 'BYOK Mode (Unlimited)' : `${state.creditsUsed} / ${state.creditsTotal} Credits Used`}</strong><br>
@@ -3869,7 +3869,7 @@ function renderMcpServersList() {
3869
3869
  }
3870
3870
 
3871
3871
  const h = mcpState.health[server.id] || server.health || {};
3872
- const latencyText = h.latencyMs !== undefined ? `${h.latencyMs}ms` : '—';
3872
+ const latencyText = h.latencyMs !== undefined ? `${h.latencyMs}ms` : '--';
3873
3873
  const toolsCount = server.tools ? server.tools.length : 0;
3874
3874
  const activeToolsCount = server.tools ? server.tools.filter(t => t.enabled !== false).length : 0;
3875
3875
  const isHttp = server.transport === 'http';
@@ -4183,7 +4183,7 @@ function openInspectMcpModal(serverId) {
4183
4183
  const subtitleEl = getEl('inspect-mcp-subtitle');
4184
4184
  const contentEl = getEl('inspect-mcp-content');
4185
4185
 
4186
- if (titleEl) titleEl.innerText = `${server.name} — Tools & Capabilities`;
4186
+ if (titleEl) titleEl.innerText = `${server.name} - Tools & Capabilities`;
4187
4187
  if (subtitleEl) subtitleEl.innerText = `${server.transport.toUpperCase()} Transport • ${server.tools.length} Tools Available`;
4188
4188
 
4189
4189
  if (contentEl) {
package/web/styles.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================================
2
- FrontTerrain Scout Design System & Visual Engine v9.4.3
2
+ FrontTerrain Scout Design System & Visual Engine v9.4.4
3
3
  Inspired by HappyRobot, Linear.app & Vercel aesthetics
4
4
  ========================================================================== */
5
5
 
@@ -225,19 +225,134 @@ body {
225
225
  min-height: 100vh;
226
226
  }
227
227
 
228
- /* Typography Helpers */
228
+ /* ==========================================================================
229
+ Animated Headings & Typography Engine
230
+ ========================================================================== */
231
+
232
+ @keyframes headingShimmerFlow {
233
+ 0% {
234
+ background-position: 0% 50%;
235
+ }
236
+ 50% {
237
+ background-position: 100% 50%;
238
+ }
239
+ 100% {
240
+ background-position: 0% 50%;
241
+ }
242
+ }
243
+
244
+ @keyframes headingPulseAura {
245
+ 0%, 100% {
246
+ filter: drop-shadow(0 0 12px rgba(225, 91, 55, 0.25)) drop-shadow(0 0 24px rgba(56, 189, 248, 0.15));
247
+ }
248
+ 50% {
249
+ filter: drop-shadow(0 0 22px rgba(225, 91, 55, 0.55)) drop-shadow(0 0 40px rgba(56, 189, 248, 0.35));
250
+ }
251
+ }
252
+
253
+ @keyframes headingFloatSubtle {
254
+ 0%, 100% {
255
+ transform: translateY(0);
256
+ }
257
+ 50% {
258
+ transform: translateY(-2.5px);
259
+ }
260
+ }
261
+
262
+ @keyframes textBeaconPulse {
263
+ 0%, 100% {
264
+ opacity: 1;
265
+ transform: scale(1);
266
+ box-shadow: 0 0 0 0 rgba(225, 91, 55, 0.7);
267
+ }
268
+ 50% {
269
+ opacity: 0.8;
270
+ transform: scale(1.15);
271
+ box-shadow: 0 0 0 6px rgba(225, 91, 55, 0);
272
+ }
273
+ }
274
+
275
+ @keyframes borderGradientRotate {
276
+ 0% {
277
+ background-position: 0% 50%;
278
+ }
279
+ 50% {
280
+ background-position: 100% 50%;
281
+ }
282
+ 100% {
283
+ background-position: 0% 50%;
284
+ }
285
+ }
286
+
287
+ /* Base Headings */
229
288
  h1, h2, h3, h4, h5, h6 {
230
289
  font-family: var(--font-sans);
231
290
  color: var(--text-primary);
232
291
  font-weight: 700;
233
292
  letter-spacing: -0.025em;
293
+ position: relative;
294
+ transition: transform var(--transition-fast), filter var(--transition-fast);
295
+ }
296
+
297
+ /* Primary Animated Headings */
298
+ .animated-gradient-heading,
299
+ .scout-hero-title,
300
+ .hero-title,
301
+ .arcade-title {
302
+ background: linear-gradient(135deg, #ffffff 0%, #ff8a65 25%, #38bdf8 50%, #ffffff 75%, #f06843 100%);
303
+ background-size: 300% 300%;
304
+ -webkit-background-clip: text;
305
+ background-clip: text;
306
+ -webkit-text-fill-color: transparent;
307
+ animation: headingShimmerFlow 6s ease-in-out infinite, headingFloatSubtle 5s ease-in-out infinite;
308
+ display: inline-block;
309
+ will-change: background-position, transform;
310
+ }
311
+
312
+ .animated-gradient-heading:hover,
313
+ .scout-hero-title:hover {
314
+ animation: headingShimmerFlow 3s ease-in-out infinite, headingFloatSubtle 3s ease-in-out infinite;
315
+ filter: drop-shadow(0 0 20px rgba(56, 189, 248, 0.4));
316
+ }
317
+
318
+ .shimmer-text,
319
+ .scout-hero-title .shimmer-text {
320
+ background: linear-gradient(90deg, #38bdf8 0%, #ff7043 35%, #00e5ff 70%, #ff8a65 100%);
321
+ background-size: 250% 250%;
322
+ -webkit-background-clip: text;
323
+ background-clip: text;
324
+ -webkit-text-fill-color: transparent;
325
+ animation: headingShimmerFlow 4s ease-in-out infinite;
326
+ font-weight: 800;
327
+ }
328
+
329
+ .plan-name {
330
+ background: linear-gradient(120deg, #ffffff 0%, #fde047 30%, #38bdf8 70%, #ffffff 100%);
331
+ background-size: 250% 250%;
332
+ -webkit-background-clip: text;
333
+ background-clip: text;
334
+ -webkit-text-fill-color: transparent;
335
+ animation: headingShimmerFlow 8s ease-in-out infinite;
336
+ display: inline-block;
337
+ }
338
+
339
+ .scout-card-title,
340
+ .card-header h3 {
341
+ background: linear-gradient(135deg, #f8fafc 0%, #cbd5e1 55%, #38bdf8 100%);
342
+ background-size: 200% 200%;
343
+ -webkit-background-clip: text;
344
+ background-clip: text;
345
+ -webkit-text-fill-color: transparent;
346
+ animation: headingShimmerFlow 9s ease-in-out infinite;
234
347
  }
235
348
 
236
349
  .text-gradient {
237
350
  background: linear-gradient(135deg, #f8fafc 0%, #c7d2fe 40%, #38bdf8 100%);
351
+ background-size: 200% 200%;
238
352
  background-clip: text;
239
353
  -webkit-background-clip: text;
240
354
  -webkit-text-fill-color: transparent;
355
+ animation: headingShimmerFlow 8s ease-in-out infinite;
241
356
  }
242
357
 
243
358
  .text-bright { color: var(--text-primary); }
@@ -294,7 +409,13 @@ h1, h2, h3, h4, h5, h6 {
294
409
  font-size: 18px;
295
410
  font-weight: 800;
296
411
  letter-spacing: 0.08em;
297
- color: var(--text-primary);
412
+ background: linear-gradient(135deg, #ffffff 0%, #ff8a65 35%, #38bdf8 70%, #ffffff 100%);
413
+ background-size: 250% 250%;
414
+ -webkit-background-clip: text;
415
+ background-clip: text;
416
+ -webkit-text-fill-color: transparent;
417
+ animation: headingShimmerFlow 6s ease-in-out infinite;
418
+ display: inline-block;
298
419
  }
299
420
 
300
421
  .brand-subtitle {
@@ -824,8 +945,24 @@ h1, h2, h3, h4, h5, h6 {
824
945
  }
825
946
 
826
947
  .popular-tier {
827
- border-color: var(--hr-rust);
828
- box-shadow: 0 0 35px var(--hr-rust-glow);
948
+ position: relative;
949
+ border-color: rgba(225, 91, 55, 0.5);
950
+ box-shadow: 0 0 40px rgba(225, 91, 55, 0.3), 0 0 70px rgba(56, 189, 248, 0.15);
951
+ }
952
+
953
+ .popular-tier::before {
954
+ content: '';
955
+ position: absolute;
956
+ inset: -1px;
957
+ border-radius: var(--radius-lg);
958
+ padding: 1px;
959
+ background: linear-gradient(135deg, #ff5722, #38bdf8, #818cf8, #ff5722);
960
+ background-size: 300% 300%;
961
+ animation: borderGradientRotate 6s linear infinite;
962
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
963
+ -webkit-mask-composite: xor;
964
+ mask-composite: exclude;
965
+ pointer-events: none;
829
966
  }
830
967
 
831
968
  .popular-badge {
@@ -833,14 +970,16 @@ h1, h2, h3, h4, h5, h6 {
833
970
  top: -14px;
834
971
  left: 50%;
835
972
  transform: translateX(-50%);
836
- background: var(--hr-rust);
973
+ background: linear-gradient(135deg, var(--hr-rust) 0%, #ea580c 100%);
837
974
  color: #ffffff;
838
975
  font-size: 10px;
839
976
  font-weight: 800;
840
977
  letter-spacing: 0.12em;
841
- padding: 4px 14px;
978
+ padding: 5px 16px;
842
979
  border-radius: var(--radius-pill);
843
980
  text-transform: uppercase;
981
+ box-shadow: 0 4px 14px rgba(225, 91, 55, 0.4);
982
+ animation: textBeaconPulse 2s infinite;
844
983
  }
845
984
 
846
985
  .pricing-header { text-align: center; margin-bottom: 24px; }
@@ -1055,7 +1194,7 @@ h1, h2, h3, h4, h5, h6 {
1055
1194
  .footer-links a:hover { color: var(--hr-rust); }
1056
1195
 
1057
1196
  /* ==========================================================================
1058
- Visual Perception & Automation Engine v9.4.3
1197
+ Visual Perception & Automation Engine v9.4.4
1059
1198
  ========================================================================== */
1060
1199
  .vision-banner {
1061
1200
  margin-bottom: 28px;
@@ -1713,10 +1852,15 @@ h1, h2, h3, h4, h5, h6 {
1713
1852
 
1714
1853
  .scout-sidebar-brand-title {
1715
1854
  font-size: 14px;
1716
- font-weight: 700;
1855
+ font-weight: 800;
1717
1856
  letter-spacing: 0.08em;
1718
- color: #ffffff;
1719
- display: flex;
1857
+ background: linear-gradient(135deg, #ffffff 0%, #ff8a65 35%, #38bdf8 70%, #ffffff 100%);
1858
+ background-size: 250% 250%;
1859
+ -webkit-background-clip: text;
1860
+ background-clip: text;
1861
+ -webkit-text-fill-color: transparent;
1862
+ animation: headingShimmerFlow 6s ease-in-out infinite;
1863
+ display: inline-flex;
1720
1864
  align-items: center;
1721
1865
  gap: 6px;
1722
1866
  }
@@ -2024,7 +2168,8 @@ h1, h2, h3, h4, h5, h6 {
2024
2168
 
2025
2169
  /* Command Center: Hero & Composer */
2026
2170
  .scout-hero-header {
2027
- margin-bottom: 24px;
2171
+ margin-bottom: 28px;
2172
+ position: relative;
2028
2173
  }
2029
2174
 
2030
2175
  .scout-hero-eyebrow {
@@ -2032,29 +2177,192 @@ h1, h2, h3, h4, h5, h6 {
2032
2177
  align-items: center;
2033
2178
  gap: 8px;
2034
2179
  font-size: 11px;
2035
- font-weight: 600;
2180
+ font-weight: 700;
2036
2181
  text-transform: uppercase;
2037
2182
  letter-spacing: 0.12em;
2038
2183
  color: var(--scout-rust);
2039
- background: var(--scout-rust-subtle);
2040
- border: 1px solid rgba(225, 91, 55, 0.25);
2041
- padding: 3px 10px;
2184
+ background: linear-gradient(90deg, rgba(225, 91, 55, 0.12) 0%, rgba(56, 189, 248, 0.08) 100%);
2185
+ border: 1px solid rgba(225, 91, 55, 0.35);
2186
+ padding: 5px 14px;
2042
2187
  border-radius: 9999px;
2043
- margin-bottom: 8px;
2188
+ margin-bottom: 12px;
2189
+ box-shadow: 0 0 16px rgba(225, 91, 55, 0.15);
2190
+ }
2191
+
2192
+ .scout-hero-eyebrow .pulse-beacon {
2193
+ width: 7px;
2194
+ height: 7px;
2195
+ border-radius: 50%;
2196
+ background-color: var(--scout-rust);
2197
+ box-shadow: 0 0 10px var(--scout-rust);
2198
+ animation: textBeaconPulse 1.8s infinite;
2044
2199
  }
2045
2200
 
2046
2201
  .scout-hero-title {
2047
- font-size: 26px;
2048
- font-weight: 700;
2202
+ font-size: clamp(24px, 3.2vw, 36px);
2203
+ font-weight: 800;
2049
2204
  letter-spacing: -0.03em;
2050
- color: #ffffff;
2051
- margin-bottom: 4px;
2205
+ line-height: 1.25;
2206
+ margin-bottom: 8px;
2052
2207
  }
2053
2208
 
2054
2209
  .scout-hero-subtitle {
2055
- font-size: 14px;
2210
+ font-size: 14.5px;
2211
+ line-height: 1.6;
2056
2212
  color: var(--scout-text-secondary);
2057
- max-width: 680px;
2213
+ max-width: 820px;
2214
+ }
2215
+
2216
+ /* QuickStart Terminal Bar */
2217
+ .scout-quickstart-banner {
2218
+ background: radial-gradient(100% 120% at 50% 0%, rgba(22, 27, 40, 0.85) 0%, rgba(10, 13, 20, 0.95) 100%);
2219
+ border: 1px solid rgba(56, 189, 248, 0.22);
2220
+ border-radius: 12px;
2221
+ padding: 12px 18px;
2222
+ margin-bottom: 24px;
2223
+ display: flex;
2224
+ align-items: center;
2225
+ justify-content: space-between;
2226
+ flex-wrap: wrap;
2227
+ gap: 14px;
2228
+ box-shadow: 0 8px 30px -10px rgba(0, 0, 0, 0.6);
2229
+ position: relative;
2230
+ overflow: hidden;
2231
+ }
2232
+
2233
+ .scout-quickstart-banner::before {
2234
+ content: '';
2235
+ position: absolute;
2236
+ top: 0;
2237
+ left: 0;
2238
+ right: 0;
2239
+ height: 1px;
2240
+ background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.6), transparent);
2241
+ }
2242
+
2243
+ .scout-quickstart-left {
2244
+ display: flex;
2245
+ align-items: center;
2246
+ gap: 12px;
2247
+ flex-wrap: wrap;
2248
+ }
2249
+
2250
+ .scout-quickstart-code {
2251
+ font-family: var(--font-mono);
2252
+ font-size: 13px;
2253
+ color: #38bdf8;
2254
+ background: rgba(0, 0, 0, 0.5);
2255
+ padding: 6px 14px;
2256
+ border-radius: 6px;
2257
+ border: 1px solid rgba(56, 189, 248, 0.25);
2258
+ display: inline-flex;
2259
+ align-items: center;
2260
+ gap: 8px;
2261
+ }
2262
+
2263
+ .scout-quickstart-pills {
2264
+ display: flex;
2265
+ align-items: center;
2266
+ gap: 8px;
2267
+ flex-wrap: wrap;
2268
+ }
2269
+
2270
+ .scout-feature-pill {
2271
+ font-size: 11px;
2272
+ font-family: var(--font-mono);
2273
+ padding: 4px 10px;
2274
+ border-radius: 9999px;
2275
+ background: rgba(255, 255, 255, 0.04);
2276
+ border: 1px solid rgba(255, 255, 255, 0.08);
2277
+ color: var(--scout-text-secondary);
2278
+ display: inline-flex;
2279
+ align-items: center;
2280
+ gap: 6px;
2281
+ }
2282
+
2283
+ /* 3 Superpower Value Pillars */
2284
+ .scout-pillars-grid {
2285
+ display: grid;
2286
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
2287
+ gap: 16px;
2288
+ margin-bottom: 28px;
2289
+ }
2290
+
2291
+ .scout-pillar-card {
2292
+ background: radial-gradient(120% 120% at 50% 0%, rgba(20, 24, 36, 0.75) 0%, rgba(13, 16, 24, 0.9) 100%);
2293
+ border: 1px solid rgba(255, 255, 255, 0.08);
2294
+ border-radius: 12px;
2295
+ padding: 20px;
2296
+ display: flex;
2297
+ flex-direction: column;
2298
+ gap: 10px;
2299
+ position: relative;
2300
+ overflow: hidden;
2301
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2302
+ }
2303
+
2304
+ .scout-pillar-card:hover {
2305
+ border-color: rgba(56, 189, 248, 0.4);
2306
+ transform: translateY(-2px);
2307
+ box-shadow: 0 12px 30px -10px rgba(56, 189, 248, 0.2);
2308
+ }
2309
+
2310
+ .scout-pillar-header {
2311
+ display: flex;
2312
+ align-items: center;
2313
+ justify-content: space-between;
2314
+ }
2315
+
2316
+ .scout-pillar-icon {
2317
+ width: 38px;
2318
+ height: 38px;
2319
+ border-radius: 10px;
2320
+ display: flex;
2321
+ align-items: center;
2322
+ justify-content: center;
2323
+ font-size: 16px;
2324
+ }
2325
+
2326
+ .scout-pillar-card.brief .scout-pillar-icon {
2327
+ background: rgba(245, 158, 11, 0.12);
2328
+ color: #f59e0b;
2329
+ border: 1px solid rgba(245, 158, 11, 0.3);
2330
+ }
2331
+
2332
+ .scout-pillar-card.risky .scout-pillar-icon {
2333
+ background: rgba(239, 68, 68, 0.12);
2334
+ color: #ef4444;
2335
+ border: 1px solid rgba(239, 68, 68, 0.3);
2336
+ }
2337
+
2338
+ .scout-pillar-card.operator .scout-pillar-icon {
2339
+ background: rgba(56, 189, 248, 0.12);
2340
+ color: #38bdf8;
2341
+ border: 1px solid rgba(56, 189, 248, 0.3);
2342
+ }
2343
+
2344
+ .scout-pillar-title {
2345
+ font-size: 15px;
2346
+ font-weight: 700;
2347
+ color: #ffffff;
2348
+ }
2349
+
2350
+ .scout-pillar-desc {
2351
+ font-size: 12.5px;
2352
+ color: var(--scout-text-secondary);
2353
+ line-height: 1.55;
2354
+ margin: 0;
2355
+ }
2356
+
2357
+ .scout-pillar-code {
2358
+ font-family: var(--font-mono);
2359
+ font-size: 11px;
2360
+ background: rgba(0, 0, 0, 0.35);
2361
+ padding: 4px 8px;
2362
+ border-radius: 4px;
2363
+ color: var(--scout-cyan);
2364
+ align-self: flex-start;
2365
+ margin-top: auto;
2058
2366
  }
2059
2367
 
2060
2368
  /* Task Composer */
@@ -2707,8 +3015,13 @@ h1, h2, h3, h4, h5, h6 {
2707
3015
 
2708
3016
  .scout-capability-title {
2709
3017
  font-size: 15px;
2710
- font-weight: 600;
2711
- color: #ffffff;
3018
+ font-weight: 700;
3019
+ background: linear-gradient(135deg, #f8fafc 0%, #cbd5e1 55%, #38bdf8 100%);
3020
+ background-size: 200% 200%;
3021
+ -webkit-background-clip: text;
3022
+ background-clip: text;
3023
+ -webkit-text-fill-color: transparent;
3024
+ animation: headingShimmerFlow 8s ease-in-out infinite;
2712
3025
  margin-bottom: 6px;
2713
3026
  }
2714
3027