tide-commander 0.66.2 → 0.67.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.
- package/README.md +5 -2
- package/dist/assets/icons/apple-touch-icon.png +0 -0
- package/dist/assets/icons/favicon-16x16.png +0 -0
- package/dist/assets/icons/favicon-32x32.png +0 -0
- package/dist/assets/icons/favicon.ico +0 -0
- package/dist/assets/icons/icon-192.png +0 -0
- package/dist/assets/icons/icon-512.png +0 -0
- package/dist/assets/landing/tc-icon.png +0 -0
- package/dist/assets/landing-Dh2c2T6f.css +1 -0
- package/dist/assets/{main-hKDljNT8.js → main-Dg1wfA5W.js} +78 -78
- package/dist/assets/{main-D54qodDF.css → main-flegxlsj.css} +1 -1
- package/dist/index.html +6 -3
- package/dist/locales/de/config.json +1 -0
- package/dist/locales/en/config.json +1 -0
- package/dist/locales/es/config.json +1 -0
- package/dist/locales/fr/config.json +1 -0
- package/dist/locales/hi/config.json +1 -0
- package/dist/locales/it/config.json +1 -0
- package/dist/locales/ja/config.json +1 -0
- package/dist/locales/pt/config.json +1 -0
- package/dist/locales/ru/config.json +1 -0
- package/dist/locales/zh-CN/config.json +1 -0
- package/dist/src/packages/landing/index.html +12 -9
- package/dist/src/packages/server/claude/backend.js +8 -2
- package/dist/src/packages/server/codex/backend.js +7 -2
- package/dist/src/packages/server/routes/agents.js +29 -1
- package/dist/src/packages/server/routes/config.js +1 -1
- package/dist/src/packages/server/services/system-prompt-service.js +38 -0
- package/package.json +1 -1
- package/dist/assets/landing-Dtk9M_cY.css +0 -1
- /package/dist/assets/{landing-DdrW9aMA.js → landing-Dpofz3Fo.js} +0 -0
package/dist/index.html
CHANGED
|
@@ -17,13 +17,16 @@
|
|
|
17
17
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
18
18
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
19
19
|
<meta name="apple-mobile-web-app-title" content="Tide CMD" />
|
|
20
|
-
<link rel="
|
|
20
|
+
<link rel="icon" type="image/x-icon" href="/assets/icons/favicon.ico" />
|
|
21
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png" />
|
|
22
|
+
<link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png" />
|
|
23
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png" />
|
|
21
24
|
<title>Tide Commander</title>
|
|
22
|
-
<script type="module" crossorigin src="/assets/main-
|
|
25
|
+
<script type="module" crossorigin src="/assets/main-Dg1wfA5W.js"></script>
|
|
23
26
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
|
|
24
27
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-uS-d4TUT.js">
|
|
25
28
|
<link rel="modulepreload" crossorigin href="/assets/vendor-three-4iQNXcoo.js">
|
|
26
|
-
<link rel="stylesheet" crossorigin href="/assets/main-
|
|
29
|
+
<link rel="stylesheet" crossorigin href="/assets/main-flegxlsj.css">
|
|
27
30
|
</head>
|
|
28
31
|
<body>
|
|
29
32
|
<div id="app"></div>
|
|
@@ -28,8 +28,11 @@
|
|
|
28
28
|
<meta name="twitter:description" content="Command multiple Claude Code and Codex AI agents from an RTS-inspired 3D battlefield." />
|
|
29
29
|
<meta name="twitter:image" content="https://tidecommander.com/assets/landing/preview-3d.png" />
|
|
30
30
|
|
|
31
|
-
<!-- Favicon
|
|
32
|
-
<link rel="icon"
|
|
31
|
+
<!-- Favicon -->
|
|
32
|
+
<link rel="icon" type="image/x-icon" href="/assets/icons/favicon.ico" />
|
|
33
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png" />
|
|
34
|
+
<link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png" />
|
|
35
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png" />
|
|
33
36
|
|
|
34
37
|
<!-- Fonts -->
|
|
35
38
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
@@ -67,16 +70,16 @@
|
|
|
67
70
|
"runtimePlatform": "Node.js"
|
|
68
71
|
}
|
|
69
72
|
</script>
|
|
70
|
-
<script type="module" crossorigin src="/assets/landing-
|
|
73
|
+
<script type="module" crossorigin src="/assets/landing-Dpofz3Fo.js"></script>
|
|
71
74
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
|
|
72
|
-
<link rel="stylesheet" crossorigin href="/assets/landing-
|
|
75
|
+
<link rel="stylesheet" crossorigin href="/assets/landing-Dh2c2T6f.css">
|
|
73
76
|
</head>
|
|
74
77
|
<body>
|
|
75
78
|
<!-- Navigation -->
|
|
76
79
|
<nav class="nav" id="nav">
|
|
77
80
|
<div class="nav-content">
|
|
78
81
|
<a href="#" class="nav-logo">
|
|
79
|
-
<
|
|
82
|
+
<img src="/assets/landing/tc-icon.png" alt="Tide Commander" class="logo-icon" width="28" height="28" />
|
|
80
83
|
<span class="logo-text">Tide Commander</span>
|
|
81
84
|
</a>
|
|
82
85
|
<div class="nav-links" id="nav-links">
|
|
@@ -130,9 +133,9 @@
|
|
|
130
133
|
Get Started
|
|
131
134
|
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
|
|
132
135
|
</a>
|
|
133
|
-
<a href="
|
|
134
|
-
|
|
135
|
-
<svg class="icon" viewBox="0 0 24 24" fill="currentColor"><
|
|
136
|
+
<a href="/app" class="btn btn-secondary btn-lg">
|
|
137
|
+
Try Demo
|
|
138
|
+
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M8 12h8M12 8l4 4-4 4"/></svg>
|
|
136
139
|
</a>
|
|
137
140
|
</div>
|
|
138
141
|
|
|
@@ -697,7 +700,7 @@
|
|
|
697
700
|
<div class="footer-grid">
|
|
698
701
|
<div class="footer-brand">
|
|
699
702
|
<div class="footer-logo">
|
|
700
|
-
<
|
|
703
|
+
<img src="/assets/landing/tc-icon.png" alt="Tide Commander" class="logo-icon" width="24" height="24" />
|
|
701
704
|
<span>Tide Commander</span>
|
|
702
705
|
</div>
|
|
703
706
|
<p class="footer-tagline">Visual multi-agent orchestrator for Claude Code & Codex</p>
|
|
@@ -7,7 +7,7 @@ import * as fs from 'fs';
|
|
|
7
7
|
import * as os from 'os';
|
|
8
8
|
import { createLogger, sanitizeUnicode } from '../utils/index.js';
|
|
9
9
|
import { TIDE_COMMANDER_APPENDED_PROMPT } from '../prompts/tide-commander.js';
|
|
10
|
-
import { getSystemPrompt } from '../services/system-prompt-service.js';
|
|
10
|
+
import { getSystemPrompt, isEchoPromptEnabled } from '../services/system-prompt-service.js';
|
|
11
11
|
const log = createLogger('Backend');
|
|
12
12
|
// Track tool_use_id to tool_name mapping for matching tool_result events
|
|
13
13
|
// This is a module-level map that persists across parseEvent calls
|
|
@@ -457,7 +457,13 @@ export class ClaudeBackend {
|
|
|
457
457
|
*/
|
|
458
458
|
formatStdinInput(prompt) {
|
|
459
459
|
// Sanitize prompt to remove invalid Unicode surrogates that break JSON
|
|
460
|
-
|
|
460
|
+
let sanitizedPrompt = sanitizeUnicode(prompt);
|
|
461
|
+
// Echo Prompt: duplicate the user message for improved attention coverage.
|
|
462
|
+
// On the second pass every token can attend to every other token.
|
|
463
|
+
if (isEchoPromptEnabled()) {
|
|
464
|
+
log.log(` Echo prompt enabled - duplicating user message (${sanitizedPrompt.length} chars)`);
|
|
465
|
+
sanitizedPrompt = sanitizedPrompt + '\n\n---\n\n' + sanitizedPrompt;
|
|
466
|
+
}
|
|
461
467
|
return JSON.stringify({
|
|
462
468
|
type: 'user',
|
|
463
469
|
message: {
|
|
@@ -3,6 +3,7 @@ import * as os from 'os';
|
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { CodexJsonEventParser } from './json-event-parser.js';
|
|
5
5
|
import { TIDE_COMMANDER_APPENDED_PROMPT } from '../prompts/tide-commander.js';
|
|
6
|
+
import { isEchoPromptEnabled } from '../services/system-prompt-service.js';
|
|
6
7
|
function shouldPassCodexModel(model) {
|
|
7
8
|
if (!model)
|
|
8
9
|
return false;
|
|
@@ -24,13 +25,17 @@ function buildCodexPrompt(config) {
|
|
|
24
25
|
}
|
|
25
26
|
injectedSections.push(TIDE_COMMANDER_APPENDED_PROMPT);
|
|
26
27
|
if (injectedSections.length === 0) {
|
|
27
|
-
return userPrompt;
|
|
28
|
+
return isEchoPromptEnabled() ? userPrompt + '\n\n---\n\n' + userPrompt : userPrompt;
|
|
28
29
|
}
|
|
30
|
+
// Echo Prompt: duplicate the user message for improved attention coverage
|
|
31
|
+
const echoedUserPrompt = isEchoPromptEnabled()
|
|
32
|
+
? userPrompt + '\n\n---\n\n' + userPrompt
|
|
33
|
+
: userPrompt;
|
|
29
34
|
return [
|
|
30
35
|
'Follow all instructions below for this task.',
|
|
31
36
|
...injectedSections,
|
|
32
37
|
'## User Request',
|
|
33
|
-
|
|
38
|
+
echoedUserPrompt,
|
|
34
39
|
].join('\n\n');
|
|
35
40
|
}
|
|
36
41
|
export class CodexBackend {
|
|
@@ -12,7 +12,7 @@ import { getClaudeProjectDir } from '../data/index.js';
|
|
|
12
12
|
// Session listing is done inline for performance
|
|
13
13
|
import { createLogger } from '../utils/logger.js';
|
|
14
14
|
import { buildCustomAgentConfig } from '../websocket/handlers/command-handler.js';
|
|
15
|
-
import { getSystemPrompt, setSystemPrompt, clearSystemPrompt } from '../services/system-prompt-service.js';
|
|
15
|
+
import { getSystemPrompt, setSystemPrompt, clearSystemPrompt, isEchoPromptEnabled, setEchoPromptEnabled } from '../services/system-prompt-service.js';
|
|
16
16
|
const log = createLogger('Routes');
|
|
17
17
|
const router = Router();
|
|
18
18
|
function runCommandWithTimeout(command, args, timeoutMs, cwd) {
|
|
@@ -454,4 +454,32 @@ router.delete('/system-settings/prompt', (_req, res) => {
|
|
|
454
454
|
res.status(500).json({ error: err.message });
|
|
455
455
|
}
|
|
456
456
|
});
|
|
457
|
+
// GET /api/system-settings/echo-prompt - Get echo prompt setting
|
|
458
|
+
router.get('/system-settings/echo-prompt', (_req, res) => {
|
|
459
|
+
try {
|
|
460
|
+
const enabled = isEchoPromptEnabled();
|
|
461
|
+
res.json({ enabled });
|
|
462
|
+
}
|
|
463
|
+
catch (err) {
|
|
464
|
+
log.error(' Failed to get echo prompt setting:', err);
|
|
465
|
+
res.status(500).json({ error: err.message });
|
|
466
|
+
}
|
|
467
|
+
});
|
|
468
|
+
// POST /api/system-settings/echo-prompt - Update echo prompt setting
|
|
469
|
+
router.post('/system-settings/echo-prompt', (req, res) => {
|
|
470
|
+
try {
|
|
471
|
+
const { enabled } = req.body;
|
|
472
|
+
if (typeof enabled !== 'boolean') {
|
|
473
|
+
res.status(400).json({ error: 'enabled must be a boolean' });
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
setEchoPromptEnabled(enabled);
|
|
477
|
+
log.log(` Echo prompt setting updated: enabled=${enabled}`);
|
|
478
|
+
res.json({ success: true, enabled });
|
|
479
|
+
}
|
|
480
|
+
catch (err) {
|
|
481
|
+
log.error(' Failed to set echo prompt setting:', err);
|
|
482
|
+
res.status(500).json({ error: err.message });
|
|
483
|
+
}
|
|
484
|
+
});
|
|
457
485
|
export default router;
|
|
@@ -97,7 +97,7 @@ const CONFIG_CATEGORIES = [
|
|
|
97
97
|
id: 'system-settings',
|
|
98
98
|
name: 'System Settings',
|
|
99
99
|
description: 'Global system prompt and settings',
|
|
100
|
-
files: ['system-prompt.json'],
|
|
100
|
+
files: ['system-prompt.json', 'echo-prompt-setting.json'],
|
|
101
101
|
sourceDir: 'data',
|
|
102
102
|
},
|
|
103
103
|
];
|
|
@@ -77,3 +77,41 @@ export function clearSystemPrompt() {
|
|
|
77
77
|
export function hasSystemPrompt() {
|
|
78
78
|
return fs.existsSync(SYSTEM_PROMPT_FILE);
|
|
79
79
|
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Echo Prompt Setting
|
|
82
|
+
// ============================================================================
|
|
83
|
+
const ECHO_PROMPT_FILE = path.join(DATA_DIR, 'echo-prompt-setting.json');
|
|
84
|
+
/**
|
|
85
|
+
* Check if echo prompt is enabled
|
|
86
|
+
*/
|
|
87
|
+
export function isEchoPromptEnabled() {
|
|
88
|
+
ensureDataDir();
|
|
89
|
+
try {
|
|
90
|
+
if (fs.existsSync(ECHO_PROMPT_FILE)) {
|
|
91
|
+
const data = JSON.parse(fs.readFileSync(ECHO_PROMPT_FILE, 'utf-8'));
|
|
92
|
+
return data.enabled;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
log.error(` Failed to load echo prompt setting: ${error.message}`);
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Set echo prompt enabled/disabled
|
|
102
|
+
*/
|
|
103
|
+
export function setEchoPromptEnabled(enabled) {
|
|
104
|
+
ensureDataDir();
|
|
105
|
+
const data = {
|
|
106
|
+
enabled,
|
|
107
|
+
updatedAt: Date.now(),
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
fs.writeFileSync(ECHO_PROMPT_FILE, JSON.stringify(data, null, 2), 'utf-8');
|
|
111
|
+
log.log(` Echo prompt setting updated: enabled=${enabled}`);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
log.error(` Failed to save echo prompt setting: ${error.message}`);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--bg-primary: #0a0a0f;--bg-secondary: #12121a;--bg-tertiary: #1a1a25;--bg-card: #15151f;--text-primary: #ffffff;--text-secondary: #a0a0b0;--text-muted: #606070;--accent-primary: #6366f1;--accent-secondary: #8b5cf6;--accent-tertiary: #06b6d4;--accent-gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #06b6d4 100%);--success: #22c55e;--warning: #f59e0b;--error: #ef4444;--border: rgba(255, 255, 255, .08);--border-hover: rgba(255, 255, 255, .15);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 40px rgba(0, 0, 0, .5);--shadow-glow: 0 0 40px rgba(99, 102, 241, .3);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}@media(max-width:768px){body,input,textarea,select{font-size:16px}}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}code{font-family:var(--font-mono)}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.gradient-text{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.icon{width:1.25em;height:1.25em;vertical-align:middle;flex-shrink:0}.reveal{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}.reveal.revealed{opacity:1;transform:translateY(0)}.reveal.revealed .bento-card:nth-child(2){transition-delay:.1s}.reveal.revealed .bento-card:nth-child(3){transition-delay:.2s}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;font-family:var(--font-sans);border-radius:var(--radius-md);border:none;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:var(--shadow-glow)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 60px #6366f166}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-card);border-color:var(--border-hover)}.btn-outline{background:transparent;color:var(--text-primary);border:1px solid var(--border)}.btn-outline:hover{background:var(--bg-tertiary);border-color:var(--border-hover)}.btn-lg{padding:1rem 2rem;font-size:1rem}.btn-sm{padding:.5rem 1rem;font-size:.8125rem}.nav{position:fixed;top:0;left:0;right:0;z-index:100;background:#0a0a0fcc;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}.nav.scrolled{border-bottom-color:var(--border);background:#0a0a0ff2}.nav-content{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:60px;display:flex;align-items:center;justify-content:space-between}@media(max-width:768px){.nav-content{height:56px;padding:0 1rem}}.nav-logo{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:1.125rem;z-index:101}.logo-emoji{font-size:1.5rem;line-height:1}.nav-links{display:flex;align-items:center;gap:2rem}.nav-links a:not(.btn){color:var(--text-secondary);font-size:.9375rem;transition:color .2s;position:relative}.nav-links a:not(.btn):hover,.nav-links a:not(.btn).active{color:var(--text-primary)}.nav-links a:not(.btn).active:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--accent-gradient);border-radius:1px}.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px;z-index:101}.hamburger span{display:block;width:24px;height:2px;background:var(--text-primary);transition:all .3s;border-radius:1px}.hamburger.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.hero{position:relative;min-height:100vh;display:flex;align-items:center;padding:6rem 0 4rem;overflow:hidden}.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.grid-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse at center,black 0%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at center,black 0%,transparent 70%)}.glow{position:absolute;border-radius:50%;filter:blur(100px);opacity:.4;animation:float 8s ease-in-out infinite}.glow-1{top:10%;left:20%;width:400px;height:400px;background:var(--accent-primary)}.glow-2{top:40%;right:10%;width:300px;height:300px;background:var(--accent-secondary);animation-delay:-3s}.glow-3{bottom:10%;left:40%;width:350px;height:350px;background:var(--accent-tertiary);animation-delay:-5s}@keyframes float{0%,to{transform:translate(0)}33%{transform:translate(30px,-30px)}66%{transform:translate(-20px,20px)}}.hero-inner{position:relative;z-index:1;max-width:1200px;margin:0 auto;padding:0 1.5rem;display:grid;grid-template-columns:1fr 1.2fr;gap:4rem;align-items:center}.hero-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:100px;font-size:.8125rem;color:var(--text-secondary);margin-bottom:1.5rem}.badge-dot{width:8px;height:8px;background:var(--success);border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.hero-title{font-size:clamp(2.5rem,5vw,3.75rem);font-weight:800;line-height:1.1;margin-bottom:1.5rem;letter-spacing:-.02em}.hero-subtitle{font-size:1.2rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.7}.hero-actions{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.install-snippet{display:inline-flex;align-items:center;gap:.5rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:.625rem 1rem;margin-bottom:2.5rem}.install-snippet code{color:var(--success);font-size:.9375rem}.hero-stats{display:flex;gap:3rem}.stat{display:flex;flex-direction:column}.stat-value{font-size:1.75rem;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-label{font-size:.8125rem;color:var(--text-muted)}.hero-visual{position:relative}.browser-frame{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg),0 0 80px #6366f11a}.browser-bar{display:flex;align-items:center;gap:8px;padding:.625rem 1rem;background:var(--bg-tertiary);border-bottom:1px solid var(--border)}.dot{width:12px;height:12px;border-radius:50%}.dot.red{background:#ff5f56}.dot.yellow{background:#ffbd2e}.dot.green{background:#27ca40}.browser-url{margin-left:8px;font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono)}.browser-frame img{width:100%;display:block}.social-bar{padding:1.5rem 0;background:var(--bg-secondary);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.social-bar-inner{display:flex;align-items:center;justify-content:center;gap:1.5rem;flex-wrap:wrap}.social-bar-inner a{display:flex;align-items:center;transition:opacity .2s}.social-bar-inner a:hover{opacity:.8}.social-divider{width:1px;height:20px;background:var(--border)}.built-with{font-size:.8125rem;color:var(--text-muted);font-style:italic}.the-problem{padding:5rem 0}.problem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2rem}.problem-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.5rem;text-align:center;transition:all .3s ease}.problem-card:hover{border-color:#ef44444d;transform:translateY(-3px)}.problem-icon{font-size:2rem;display:block;margin-bottom:.75rem}.problem-card p{color:var(--text-secondary);font-size:.9375rem;font-style:italic;line-height:1.5}.problem-answer{text-align:center;font-size:1.125rem;color:var(--text-secondary);max-width:700px;margin:0 auto;line-height:1.7}.problem-answer strong{color:var(--text-primary)}.section-header{text-align:center;margin-bottom:3rem}.section-tag{display:inline-block;padding:.25rem 1rem;background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:100px;font-size:.8125rem;font-weight:500;color:var(--accent-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem}.section-header h2{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;margin-bottom:1rem}.section-header p{font-size:1.125rem;color:var(--text-secondary);max-width:600px;margin:0 auto}.features{padding:6rem 0;background:var(--bg-secondary)}.bento-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:1.25rem}.bento-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;transition:all .3s ease}.bento-card:hover{border-color:var(--border-hover);transform:translateY(-3px);box-shadow:var(--shadow-md)}.bento-full{grid-column:span 6}.bento-half{grid-column:span 3}.bento-third{grid-column:span 2}.feature-emoji{font-size:2rem;display:block;margin-bottom:.75rem}.bento-card h3{font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.bento-card p{color:var(--text-secondary);font-size:.9375rem;line-height:1.6}.bento-card code{background:#6366f126;padding:.125rem .375rem;border-radius:4px;font-size:.8125rem;color:var(--accent-tertiary)}.bento-card kbd{display:inline-block;padding:.1rem .35rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:3px;font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary)}.bento-full{display:grid;grid-template-columns:1fr 1.5fr;gap:0;padding:0;overflow:hidden}.bento-full .bento-card-content{padding:2.5rem;display:flex;flex-direction:column;justify-content:center}.bento-full .bento-card-image img{width:100%;height:100%;object-fit:cover}.feature-pills{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.pill{padding:.25rem .75rem;background:#6366f11a;border:1px solid rgba(99,102,241,.2);border-radius:100px;font-size:.75rem;color:var(--accent-primary)}.controls-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-top:1.25rem}.control-hint{display:flex;align-items:center;gap:.5rem}.control-hint kbd{display:inline-block;padding:.25rem .5rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem;min-width:40px;text-align:center}.control-hint span{color:var(--text-muted);font-size:.8125rem}.boss-visual{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:1.5rem;padding:1rem;background:var(--bg-tertiary);border-radius:var(--radius-md)}.boss-node{padding:.375rem 1rem;border-radius:100px;font-size:.8125rem;font-weight:500}.boss-node.boss{background:#f59e0b33;border:1px solid rgba(245,158,11,.4);color:var(--warning)}.boss-node.worker{background:#6366f11a;border:1px solid rgba(99,102,241,.3);color:var(--accent-primary);font-size:.75rem}.boss-lines{display:flex;gap:2rem;position:relative}.boss-line{width:2px;height:20px;background:var(--border)}.boss-workers{display:flex;gap:.5rem}.buildings-gallery{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:4px}.buildings-gallery img{width:100%;height:100%;object-fit:cover;opacity:.85;transition:opacity .3s}.buildings-gallery img:first-child{grid-row:span 2}.buildings-gallery img:hover{opacity:1}.bento-mobile-remote{grid-column:span 6;display:grid;grid-template-columns:1fr auto;align-items:center;gap:2rem;padding:2.5rem;background:linear-gradient(135deg,#8b5cf614,#3b82f614);border:1px solid rgba(139,92,246,.2)}.mobile-remote-content{max-width:500px}.mobile-remote-content h3{font-size:1.5rem;margin:.75rem 0 .5rem}.mobile-remote-content p{font-size:1rem;line-height:1.6;color:#ffffffb3}.mobile-remote-image{width:220px;flex-shrink:0}.mobile-remote-image img{width:100%;border-radius:16px;border:2px solid rgba(139,92,246,.3);box-shadow:0 8px 32px #8b5cf626;transition:transform .3s ease,box-shadow .3s ease}.mobile-remote-image img:hover{transform:scale(1.03);box-shadow:0 12px 40px #8b5cf640}.bento-image-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.bento-image-card .bento-text{padding:1.75rem 1.75rem 1rem}.bento-image-card .bento-card-image{flex:1;overflow:hidden}.bento-image-card .bento-card-image img{width:100%;height:100%;object-fit:cover;object-position:top;opacity:.85;transition:opacity .3s}.bento-image-card:hover .bento-card-image img{opacity:1}.views{padding:6rem 0}.views-tabs{display:flex;justify-content:center;gap:.5rem;margin-bottom:2rem}.view-tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-sans);font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s}.view-tab:hover{border-color:var(--border-hover);color:var(--text-primary)}.view-tab.active{background:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--text-primary);box-shadow:0 0 20px #6366f126}.view-tab-icon{font-size:1.25rem}.views-display{max-width:960px;margin:0 auto}.view-pane{display:none}.view-pane.active{display:block;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.view-desc{text-align:center;color:var(--text-secondary);font-size:.9375rem;margin-top:1.25rem;max-width:600px;margin-left:auto;margin-right:auto}.agent-classes{padding:6rem 0;background:var(--bg-secondary)}.classes-showcase{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:3rem;transition:border-color .3s}.classes-showcase:hover{border-color:var(--accent-primary)}.classes-showcase-text h3{font-size:1.5rem;font-weight:700;margin-bottom:.75rem}.classes-showcase-text p{font-size:1rem;line-height:1.7;color:var(--text-muted);margin-bottom:1.25rem}.classes-features-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}.classes-features-list li{font-size:.9rem;color:#ffffffbf;padding-left:1.5rem;position:relative}.classes-features-list li:before{content:"✓";position:absolute;left:0;color:var(--accent-secondary);font-weight:700}.classes-showcase-image{display:flex;justify-content:center}.classes-showcase-image img{max-width:100%;border-radius:12px;border:1px solid rgba(139,92,246,.2);box-shadow:0 8px 32px #0000004d;transition:transform .3s ease,box-shadow .3s ease}.classes-showcase-image img:hover{transform:scale(1.02);box-shadow:0 12px 40px #8b5cf633}.classes-showcase+.classes-showcase{margin-top:2rem}.demo{padding:6rem 0}.video-wrapper{max-width:900px;margin:0 auto}.video-container{position:relative;width:100%;padding-top:56.25%;background:var(--bg-secondary);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-lg),0 0 60px #6366f11a;cursor:pointer}.video-container img,.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.video-thumb{object-fit:cover;transition:opacity .3s}.video-container:hover .video-thumb{opacity:.85}.video-play-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:none;border:none;cursor:pointer;opacity:.9;transition:opacity .2s,transform .2s;z-index:1}.video-container:hover .video-play-btn{opacity:1;transform:translate(-50%,-50%) scale(1.1)}.how-it-works{padding:6rem 0;background:var(--bg-secondary)}.steps{max-width:700px;margin:0 auto;display:flex;flex-direction:column;align-items:stretch}.step{display:flex;gap:1.5rem;align-items:flex-start}.step-number{width:48px;height:48px;min-width:48px;display:flex;align-items:center;justify-content:center;background:var(--accent-gradient);border-radius:50%;font-size:1.25rem;font-weight:700}.step-content{flex:1;padding-bottom:.5rem}.step-content h3{font-size:1.25rem;font-weight:600;margin-bottom:.375rem}.step-content p{color:var(--text-secondary);font-size:.9375rem}.step-connector{width:2px;height:32px;background:var(--border);margin-left:23px}.terminal-mock{margin-top:.75rem;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem 1rem;font-family:var(--font-mono);font-size:.875rem}.terminal-mock .prompt{color:var(--accent-primary);margin-right:.5rem}.terminal-mock code{color:var(--success)}.tech-stack{padding:6rem 0}.tech-grid{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap;margin-bottom:3rem}.tech-card{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);transition:all .3s;font-size:.9375rem}.tech-card:hover{border-color:var(--border-hover);transform:translateY(-2px)}.tech-icon{font-size:1.5rem}.architecture{max-width:700px;margin:0 auto;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem;text-align:center}.architecture img{margin:0 auto;max-width:100%}.cta{padding:6rem 0;background:linear-gradient(180deg,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.cta-content{text-align:center;max-width:700px;margin:0 auto}.cta-content h2{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;margin-bottom:1rem}.cta-content>p{font-size:1.125rem;color:var(--text-secondary);margin-bottom:2rem}.install-box{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:2rem}.install-row{display:flex;align-items:center;justify-content:center;gap:.75rem}.install-row code{font-size:1.25rem;color:var(--success)}.install-alt{display:block;margin-top:.75rem;font-size:.8125rem;color:var(--text-muted)}.install-alt code{color:var(--text-secondary);font-size:.8125rem}.cta-actions{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}.cta-trust{font-size:.9375rem;color:var(--text-secondary);margin-bottom:.75rem;letter-spacing:.01em}.cta-req{font-size:.8125rem;color:var(--text-muted)}.cta-req a{color:var(--accent-tertiary);text-decoration:underline;text-underline-offset:2px}.copy-btn{display:flex;align-items:center;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.375rem;border-radius:var(--radius-sm);transition:all .2s}.copy-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.copy-btn .check-icon{display:none;color:var(--success)}.copy-btn.copied .copy-icon{display:none}.copy-btn.copied .check-icon{display:block}.footer{padding:4rem 0 2rem;border-top:1px solid var(--border)}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;margin-bottom:3rem}.footer-logo{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:1rem;margin-bottom:.75rem}.footer-logo .logo-emoji{font-size:1.25rem}.footer-tagline{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.footer-built{font-size:.8125rem;color:var(--text-muted);font-style:italic}.footer-col{display:flex;flex-direction:column;gap:.625rem}.footer-col h5{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);margin-bottom:.25rem}.footer-col a{color:var(--text-secondary);font-size:.875rem;transition:color .2s}.footer-col a:hover{color:var(--text-primary)}.footer-bottom{padding-top:2rem;border-top:1px solid var(--border);text-align:center}.footer-bottom p{font-size:.8125rem;color:var(--text-muted)}.expandable-img{cursor:zoom-in;transition:opacity .2s}.expandable-img:hover{opacity:.85}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#000000e6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s ease}.lightbox-overlay.active{opacity:1;pointer-events:auto}.lightbox-inner{position:relative;max-width:95vw;max-height:92vh}.lightbox-img{display:block;max-width:95vw;max-height:90vh;border-radius:var(--radius-md);box-shadow:0 8px 60px #0009;transform:scale(.95);transition:transform .25s ease}.lightbox-overlay.active .lightbox-img{transform:scale(1)}.lightbox-close{position:absolute;top:-40px;right:0;background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:6px;border-radius:50%;transition:color .2s,background .2s;display:flex;align-items:center;justify-content:center}.lightbox-close:hover{color:var(--text-primary);background:#ffffff1a}@media(max-width:1024px){.container{padding:0 1.5rem}.hero-inner{grid-template-columns:1fr;gap:2.5rem;text-align:center}.hero-content{max-width:100%;margin:0 auto}.hero-title{font-size:clamp(2rem,5vw,3rem)}.hero-subtitle{font-size:1.0625rem;max-width:600px;margin:0 auto 1.5rem}.hero-actions{justify-content:center;flex-wrap:wrap}.install-snippet{margin:0 auto 2rem}.hero-stats{justify-content:center;flex-wrap:wrap}.hero-visual{max-width:100%;margin:0 auto}.the-problem,.features,.views,.agent-classes,.demo,.how-it-works,.cta{padding:4rem 0}.section-header{margin-bottom:2.5rem}.bento-grid{gap:1.125rem}.bento-full{grid-template-columns:1fr}.bento-full .bento-card-content{padding:2rem}.bento-full .bento-card-image{min-height:280px}.bento-full .bento-card-image img{max-height:300px}.buildings-gallery{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.buildings-gallery img:first-child{grid-row:span 2}.bento-mobile-remote{grid-template-columns:1fr 280px;gap:2rem}.mobile-remote-image{width:100%;max-width:280px}.controls-grid{grid-template-columns:repeat(2,1fr)}.classes-showcase{grid-template-columns:1fr;gap:2rem;padding:2.25rem}.footer{padding:3.5rem 0 2rem}.footer-grid{grid-template-columns:repeat(2,1fr);gap:2.5rem}}@media(max-width:768px){.container{padding:0 1.25rem}.problem-grid{grid-template-columns:1fr;gap:.875rem}.problem-card{padding:1.25rem}.problem-answer{font-size:1.0625rem}.hamburger{display:flex}.nav-links{position:fixed;top:0;right:0;bottom:0;width:100%;max-width:320px;background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;align-items:flex-start;padding:4.5rem 1.5rem 2rem;gap:1.125rem;transform:translate(100%);transition:transform .3s ease;z-index:100;overflow-y:auto}.nav-links.open{transform:translate(0)}.nav-links a:not(.btn){font-size:1rem;min-height:44px;display:flex;align-items:center}.nav-links .btn{width:100%;justify-content:center;min-height:44px}.hero{padding:4.5rem 0 2rem;min-height:auto}.hero-inner{grid-template-columns:1fr;gap:2rem}.hero-content{max-width:100%}.hero-title{font-size:2rem}.hero-subtitle{font-size:.9375rem;margin-bottom:1.5rem}.hero-actions{flex-direction:column;gap:.75rem}.btn-lg{min-height:44px}.install-snippet{flex-direction:column;gap:.5rem;margin:0 auto 2rem}.hero-stats{flex-direction:column;gap:1rem;align-items:flex-start;width:100%}.hero-visual{max-width:100%}.the-problem,.features,.views,.agent-classes,.demo,.how-it-works,.cta{padding:3.5rem 0}.section-header{margin-bottom:2.5rem}.section-header h2{font-size:1.75rem}.section-header p{font-size:1rem}.bento-grid{grid-template-columns:1fr;gap:1.125rem}.bento-full,.bento-half,.bento-third{grid-column:span 1}.bento-full{grid-template-columns:1fr;padding:0}.bento-full .bento-card-content{padding:2rem}.bento-card{padding:1.5rem}.bento-card h3{font-size:1.125rem}.feature-emoji{font-size:1.75rem}.bento-image-card{flex-direction:column}.bento-image-card .bento-text{padding:1.5rem}.bento-image-card .bento-card-image{height:200px}.bento-full .bento-card-image img{max-height:250px}.controls-grid{grid-template-columns:repeat(2,1fr);gap:.75rem}.buildings-gallery{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:3px}.buildings-gallery img:first-child{grid-row:span 2}.bento-mobile-remote{grid-template-columns:1fr;text-align:center;gap:1.5rem}.mobile-remote-content{max-width:100%}.mobile-remote-image{width:180px;margin:0 auto}.feature-pills{margin-top:.875rem}.views-tabs{flex-direction:column;align-items:stretch;gap:.625rem;max-width:100%}.view-tab{padding:.75rem 1.25rem;min-height:44px}.classes-showcase{grid-template-columns:1fr;padding:1.75rem;gap:1.5rem}.classes-showcase-text h3{font-size:1.25rem}.classes-showcase-text p{font-size:.9375rem}.classes-features-list li{font-size:.875rem}.step{gap:1.25rem}.step-number{width:44px;height:44px;min-width:44px}.step-content h3{font-size:1.125rem}.terminal-mock{font-size:.8125rem}.cta-content h2{font-size:1.75rem}.install-box{padding:1.25rem}.install-row{flex-direction:column;align-items:flex-start}.cta-actions{flex-direction:column;gap:.875rem}.footer{padding:3rem 0 1.5rem}.footer-grid{grid-template-columns:1fr;gap:2rem}.footer-col{gap:.75rem}}@media(max-width:480px){.container{padding:0 1rem}body{font-size:16px}.hero{padding:5rem 0 2rem;min-height:auto}.hero-title{font-size:1.75rem;margin-bottom:1rem}.hero-subtitle{font-size:.9375rem;margin-bottom:1.5rem}.hero-badge{margin-bottom:1rem;font-size:.75rem}.hero-actions{flex-direction:column;width:100%;gap:.75rem;margin-bottom:1.25rem}.btn-lg{width:100%;justify-content:center;padding:.875rem 1.5rem;font-size:.9375rem}.btn{min-height:44px;padding:.625rem 1.25rem}.install-snippet{flex-direction:column;width:100%;margin-bottom:1.5rem;padding:.75rem}.install-snippet code{font-size:.8125rem;word-break:break-word}.copy-btn{flex-shrink:0;padding:.25rem}.hero-stats{flex-direction:column;gap:1rem;align-items:flex-start;width:100%}.stat{width:100%;text-align:left}.stat-value{font-size:1.5rem}.the-problem,.features,.views,.agent-classes,.demo,.how-it-works,.cta{padding:3rem 0}.section-header{margin-bottom:2rem}.section-header h2{font-size:1.5rem}.section-header p{font-size:.9375rem}.problem-grid{grid-template-columns:1fr;gap:.75rem}.problem-card{padding:1.25rem}.problem-icon{font-size:1.75rem;margin-bottom:.5rem}.problem-card p{font-size:.875rem}.problem-answer{font-size:1rem;padding:0 1rem}.bento-grid{grid-template-columns:1fr;gap:1rem}.bento-full,.bento-half,.bento-third,.bento-mobile-remote{grid-column:span 1!important}.bento-card{padding:1.25rem}.bento-card h3{font-size:1.125rem}.bento-card p{font-size:.875rem}.feature-emoji{font-size:1.75rem;margin-bottom:.5rem}.bento-full{grid-template-columns:1fr;padding:0}.bento-full .bento-card-content{padding:1.5rem}.bento-full .bento-card-image,.bento-full .bento-card-image img{max-height:200px}.bento-image-card{flex-direction:column}.bento-image-card .bento-text{padding:1.25rem}.bento-image-card .bento-card-image{height:150px}.controls-grid{grid-template-columns:1fr;gap:.5rem;margin-top:1rem}.control-hint{padding:.75rem;background:var(--bg-primary);border-radius:var(--radius-sm);border:1px solid var(--border)}.control-hint kbd{min-width:35px;font-size:.7rem}.control-hint span{font-size:.75rem}.boss-visual{padding:.75rem;gap:.25rem}.boss-node{padding:.3rem .75rem;font-size:.7rem}.boss-lines{gap:1rem}.boss-line{height:15px}.buildings-gallery{grid-template-columns:1fr;grid-template-rows:auto;gap:2px}.buildings-gallery img{max-height:150px}.buildings-gallery img:first-child{grid-row:auto}.bento-mobile-remote{grid-template-columns:1fr;text-align:center;gap:1.5rem;padding:1.5rem}.mobile-remote-content{max-width:100%}.mobile-remote-content h3{font-size:1.25rem;margin:.5rem 0}.mobile-remote-content p{font-size:.875rem;line-height:1.5}.mobile-remote-image{width:140px;margin:0 auto}.feature-pills{gap:.35rem;flex-wrap:wrap;margin-top:.75rem}.pill{font-size:.7rem;padding:.2rem .6rem}.views-tabs{flex-direction:column;align-items:stretch;gap:.5rem;max-width:100%}.view-tab{padding:.625rem 1rem;font-size:.875rem;min-height:44px}.view-tab-icon{font-size:1rem}.classes-showcase{grid-template-columns:1fr;padding:1.25rem;gap:1.25rem}.classes-showcase-text h3{font-size:1.25rem}.classes-showcase-text p{font-size:.875rem}.classes-features-list li{font-size:.85rem;padding-left:1.25rem}.classes-showcase-image{display:block}.classes-showcase-image img,.steps{max-width:100%}.step{gap:1rem}.step-number{width:40px;height:40px;min-width:40px;font-size:1.125rem}.step-connector{margin-left:19px}.step-content h3{font-size:1.1rem}.step-content p{font-size:.875rem}.terminal-mock{font-size:.75rem;padding:.5rem .75rem}.cta-content h2{font-size:1.5rem}.cta-content>p{font-size:1rem}.install-box{padding:1rem}.install-row{flex-direction:column;align-items:flex-start;gap:.5rem}.install-row code{font-size:.875rem;word-break:break-word}.install-alt{font-size:.75rem;margin-top:.5rem}.install-alt code{font-size:.75rem}.cta-actions{flex-direction:column;gap:.75rem}.cta-trust{font-size:.875rem}.cta-req{font-size:.75rem}.footer{padding:2.5rem 0 1.5rem}.footer-grid{grid-template-columns:1fr;gap:1.5rem}.footer-logo{font-size:.95rem}.footer-col h5{font-size:.75rem}.footer-col a{font-size:.8125rem}.nav-content{padding:0 1rem}.nav-logo{font-size:1rem}.logo-emoji{font-size:1.25rem}.nav-links{width:240px;padding:4.5rem 1.5rem 1.5rem;gap:1rem}.nav-links a:not(.btn){font-size:1rem}.lightbox-img{border-radius:var(--radius-sm)}.lightbox-close{top:-32px}.copy-btn{min-height:40px;min-width:40px}}
|
|
File without changes
|