@lovenyberg/ove 0.5.1 → 0.5.2
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 +10 -3
- package/bun.lock +1 -1
- package/docs/index.html +194 -196
- package/docs/plans/2026-02-25-landing-page-harmonization-design.md +89 -0
- package/docs/plans/2026-02-25-landing-page-harmonization-plan.md +604 -0
- package/package.json +1 -1
- package/src/handlers.ts +10 -1
- package/src/router.ts +40 -0
- package/src/setup.ts +51 -16
package/docs/index.html
CHANGED
|
@@ -7,20 +7,22 @@
|
|
|
7
7
|
<title>Ove — Your Grumpy Dev Companion</title>
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
|
-
<link href="https://fonts.googleapis.com/css2?family=
|
|
10
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
11
11
|
<style>
|
|
12
12
|
:root {
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--text: #
|
|
20
|
-
--text-
|
|
21
|
-
--muted: #
|
|
22
|
-
--
|
|
23
|
-
--
|
|
13
|
+
--bg: #1a1a1a;
|
|
14
|
+
--bg-panel: #161616;
|
|
15
|
+
--bg-item: #1e1e1e;
|
|
16
|
+
--bg-item-hover: #252525;
|
|
17
|
+
--border: #2a2a2a;
|
|
18
|
+
--border-light: #333;
|
|
19
|
+
--text: #e0e0e0;
|
|
20
|
+
--text-dim: #777;
|
|
21
|
+
--text-muted: #555;
|
|
22
|
+
--accent: #8ab4f8;
|
|
23
|
+
--green: #4ade80;
|
|
24
|
+
--red: #f28b82;
|
|
25
|
+
--amber: #fbbf24;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
@@ -28,188 +30,175 @@
|
|
|
28
30
|
html { scroll-behavior: smooth; }
|
|
29
31
|
|
|
30
32
|
body {
|
|
31
|
-
font-family: "
|
|
33
|
+
font-family: "Inter", system-ui, -apple-system, sans-serif;
|
|
32
34
|
color: var(--text);
|
|
33
35
|
line-height: 1.7;
|
|
34
|
-
background: var(--
|
|
35
|
-
font-size:
|
|
36
|
+
background: var(--bg);
|
|
37
|
+
font-size: 16px;
|
|
36
38
|
-webkit-font-smoothing: antialiased;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
|
-
/*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
background
|
|
47
|
-
|
|
41
|
+
/* ─── HEADER ─── */
|
|
42
|
+
header {
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
justify-content: space-between;
|
|
46
|
+
padding: 0.5rem 1rem;
|
|
47
|
+
border-bottom: 1px solid var(--border);
|
|
48
|
+
background: var(--bg-panel);
|
|
49
|
+
position: sticky;
|
|
50
|
+
top: 0;
|
|
51
|
+
z-index: 100;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.header-left {
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
gap: 1rem;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.header-logo {
|
|
61
|
+
width: 24px;
|
|
62
|
+
height: 24px;
|
|
63
|
+
border-radius: 3px;
|
|
64
|
+
object-fit: cover;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.header-left h1 {
|
|
68
|
+
font-family: "JetBrains Mono", monospace;
|
|
69
|
+
font-size: 0.85rem;
|
|
70
|
+
font-weight: 600;
|
|
71
|
+
letter-spacing: 0.05em;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.nav-link {
|
|
75
|
+
color: var(--text-dim);
|
|
76
|
+
text-decoration: none;
|
|
77
|
+
font-family: "JetBrains Mono", monospace;
|
|
78
|
+
font-size: 0.7rem;
|
|
79
|
+
padding: 0.2rem 0.5rem;
|
|
80
|
+
border: 1px solid var(--border);
|
|
81
|
+
border-radius: 3px;
|
|
82
|
+
transition: all 0.15s;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.nav-link:hover {
|
|
86
|
+
color: var(--text);
|
|
87
|
+
border-color: var(--border-light);
|
|
88
|
+
background: var(--bg-item);
|
|
48
89
|
}
|
|
49
90
|
|
|
50
91
|
/* ─── HERO ─── */
|
|
51
92
|
.hero {
|
|
52
|
-
min-height: 100vh;
|
|
53
93
|
display: flex;
|
|
54
94
|
align-items: center;
|
|
55
95
|
justify-content: center;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
border-bottom: 1px solid var(--subtle);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.hero::before {
|
|
62
|
-
content: "";
|
|
63
|
-
position: absolute;
|
|
64
|
-
inset: 0;
|
|
65
|
-
background:
|
|
66
|
-
radial-gradient(ellipse 60% 50% at 50% 40%, rgba(199, 141, 94, 0.06) 0%, transparent 70%),
|
|
67
|
-
linear-gradient(180deg, var(--base) 0%, var(--surface) 100%);
|
|
96
|
+
padding: 64px 32px;
|
|
97
|
+
border-bottom: 1px solid var(--border);
|
|
68
98
|
}
|
|
69
99
|
|
|
70
100
|
.hero-inner {
|
|
71
|
-
position: relative;
|
|
72
|
-
z-index: 1;
|
|
73
101
|
display: grid;
|
|
74
102
|
grid-template-columns: auto 1fr;
|
|
75
|
-
gap:
|
|
103
|
+
gap: 48px;
|
|
76
104
|
align-items: center;
|
|
77
105
|
max-width: 900px;
|
|
78
|
-
padding: 40px 32px;
|
|
79
106
|
}
|
|
80
107
|
|
|
81
108
|
.hero-portrait {
|
|
82
|
-
width:
|
|
83
|
-
height:
|
|
109
|
+
width: 140px;
|
|
110
|
+
height: 140px;
|
|
84
111
|
border-radius: 4px;
|
|
85
|
-
border:
|
|
86
|
-
box-shadow:
|
|
87
|
-
0 0 0 1px rgba(199, 141, 94, 0.1),
|
|
88
|
-
0 24px 48px rgba(0,0,0,0.4);
|
|
112
|
+
border: 1px solid var(--border);
|
|
113
|
+
box-shadow: 0 12px 32px rgba(0,0,0,0.3);
|
|
89
114
|
object-fit: cover;
|
|
90
115
|
}
|
|
91
116
|
|
|
92
117
|
.hero-text h1 {
|
|
93
|
-
font-family: "
|
|
94
|
-
font-size:
|
|
118
|
+
font-family: "JetBrains Mono", monospace;
|
|
119
|
+
font-size: 2.5rem;
|
|
95
120
|
font-weight: 700;
|
|
96
|
-
color: var(--text
|
|
121
|
+
color: var(--text);
|
|
97
122
|
letter-spacing: -0.02em;
|
|
98
123
|
line-height: 1;
|
|
99
|
-
margin-bottom:
|
|
124
|
+
margin-bottom: 6px;
|
|
100
125
|
}
|
|
101
126
|
|
|
102
127
|
.hero-subtitle {
|
|
103
|
-
font-family: "
|
|
104
|
-
font-size:
|
|
105
|
-
color: var(--
|
|
128
|
+
font-family: "JetBrains Mono", monospace;
|
|
129
|
+
font-size: 0.8rem;
|
|
130
|
+
color: var(--text-dim);
|
|
106
131
|
font-weight: 400;
|
|
107
132
|
letter-spacing: 0.08em;
|
|
108
133
|
text-transform: uppercase;
|
|
109
|
-
margin-bottom:
|
|
134
|
+
margin-bottom: 20px;
|
|
110
135
|
}
|
|
111
136
|
|
|
112
137
|
.hero-quote {
|
|
113
138
|
font-style: italic;
|
|
114
|
-
color: var(--
|
|
115
|
-
font-size: 1.
|
|
139
|
+
color: var(--text-dim);
|
|
140
|
+
font-size: 1.05rem;
|
|
116
141
|
line-height: 1.5;
|
|
117
|
-
margin-bottom:
|
|
142
|
+
margin-bottom: 24px;
|
|
118
143
|
max-width: 420px;
|
|
119
144
|
}
|
|
120
145
|
|
|
121
146
|
.hero-quote span {
|
|
122
|
-
color: var(--muted);
|
|
147
|
+
color: var(--text-muted);
|
|
123
148
|
font-style: normal;
|
|
124
|
-
font-size: 0.
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.hero-actions {
|
|
128
|
-
display: flex;
|
|
129
|
-
gap: 16px;
|
|
130
|
-
align-items: center;
|
|
149
|
+
font-size: 0.8rem;
|
|
131
150
|
}
|
|
132
151
|
|
|
133
152
|
.btn {
|
|
134
153
|
display: inline-block;
|
|
135
|
-
font-family: "
|
|
136
|
-
font-size: 0.
|
|
137
|
-
font-weight:
|
|
154
|
+
font-family: "JetBrains Mono", monospace;
|
|
155
|
+
font-size: 0.8rem;
|
|
156
|
+
font-weight: 500;
|
|
138
157
|
text-decoration: none;
|
|
139
|
-
padding:
|
|
140
|
-
border: 1px solid var(--
|
|
141
|
-
color: var(--
|
|
158
|
+
padding: 10px 24px;
|
|
159
|
+
border: 1px solid var(--border-light);
|
|
160
|
+
color: var(--accent);
|
|
142
161
|
background: transparent;
|
|
143
|
-
|
|
162
|
+
border-radius: 3px;
|
|
163
|
+
transition: all 0.15s;
|
|
144
164
|
letter-spacing: 0.02em;
|
|
145
165
|
}
|
|
146
166
|
|
|
147
167
|
.btn:hover {
|
|
148
|
-
background: var(--
|
|
149
|
-
color: var(--
|
|
150
|
-
border-color: var(--
|
|
168
|
+
background: var(--accent);
|
|
169
|
+
color: var(--bg);
|
|
170
|
+
border-color: var(--accent);
|
|
151
171
|
}
|
|
152
172
|
|
|
153
173
|
.btn-ghost {
|
|
154
|
-
border-color: var(--
|
|
155
|
-
color: var(--
|
|
174
|
+
border-color: var(--border);
|
|
175
|
+
color: var(--text-dim);
|
|
156
176
|
}
|
|
157
177
|
|
|
158
178
|
.btn-ghost:hover {
|
|
159
|
-
border-color: var(--
|
|
179
|
+
border-color: var(--text-dim);
|
|
160
180
|
color: var(--text);
|
|
161
181
|
background: transparent;
|
|
162
182
|
}
|
|
163
183
|
|
|
164
|
-
/* ─── SCROLL HINT ─── */
|
|
165
|
-
.scroll-hint {
|
|
166
|
-
position: absolute;
|
|
167
|
-
bottom: 28px;
|
|
168
|
-
left: 50%;
|
|
169
|
-
transform: translateX(-50%);
|
|
170
|
-
z-index: 1;
|
|
171
|
-
display: flex;
|
|
172
|
-
flex-direction: column;
|
|
173
|
-
align-items: center;
|
|
174
|
-
gap: 8px;
|
|
175
|
-
color: var(--muted);
|
|
176
|
-
font-family: "JetBrains Mono", monospace;
|
|
177
|
-
font-size: 0.65rem;
|
|
178
|
-
letter-spacing: 0.12em;
|
|
179
|
-
text-transform: uppercase;
|
|
180
|
-
animation: fadeUp 0.7s ease 0.7s both;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.scroll-hint svg {
|
|
184
|
-
width: 18px;
|
|
185
|
-
height: 18px;
|
|
186
|
-
stroke: var(--copper-dim);
|
|
187
|
-
animation: bobDown 2s ease-in-out infinite;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
@keyframes bobDown {
|
|
191
|
-
0%, 100% { transform: translateY(0); }
|
|
192
|
-
50% { transform: translateY(5px); }
|
|
193
|
-
}
|
|
194
|
-
|
|
195
184
|
/* ─── INSTALL BAR ─── */
|
|
196
185
|
.install-bar {
|
|
197
|
-
background: var(--
|
|
198
|
-
border-bottom: 1px solid var(--
|
|
199
|
-
padding:
|
|
186
|
+
background: var(--bg-panel);
|
|
187
|
+
border-bottom: 1px solid var(--border);
|
|
188
|
+
padding: 16px 32px;
|
|
200
189
|
text-align: center;
|
|
201
190
|
}
|
|
202
191
|
|
|
203
192
|
.install-bar code {
|
|
204
193
|
font-family: "JetBrains Mono", monospace;
|
|
205
|
-
font-size: 0.
|
|
206
|
-
color: var(--
|
|
194
|
+
font-size: 0.82rem;
|
|
195
|
+
color: var(--accent);
|
|
207
196
|
letter-spacing: -0.02em;
|
|
208
197
|
}
|
|
209
198
|
|
|
210
199
|
.install-bar code::before {
|
|
211
200
|
content: "$ ";
|
|
212
|
-
color: var(--muted);
|
|
201
|
+
color: var(--text-muted);
|
|
213
202
|
}
|
|
214
203
|
|
|
215
204
|
/* ─── MAIN CONTENT ─── */
|
|
@@ -220,8 +209,8 @@
|
|
|
220
209
|
}
|
|
221
210
|
|
|
222
211
|
.section {
|
|
223
|
-
padding:
|
|
224
|
-
border-bottom: 1px solid var(--
|
|
212
|
+
padding: 64px 0;
|
|
213
|
+
border-bottom: 1px solid var(--border);
|
|
225
214
|
}
|
|
226
215
|
|
|
227
216
|
.section:last-child {
|
|
@@ -230,26 +219,26 @@
|
|
|
230
219
|
|
|
231
220
|
/* ─── SECTION HEADERS ─── */
|
|
232
221
|
h2 {
|
|
233
|
-
font-family: "
|
|
234
|
-
font-size: 1.
|
|
222
|
+
font-family: "JetBrains Mono", monospace;
|
|
223
|
+
font-size: 1.3rem;
|
|
235
224
|
font-weight: 700;
|
|
236
|
-
color: var(--text
|
|
225
|
+
color: var(--text);
|
|
237
226
|
margin-bottom: 8px;
|
|
238
227
|
letter-spacing: -0.01em;
|
|
239
228
|
}
|
|
240
229
|
|
|
241
230
|
.section-note {
|
|
242
|
-
color: var(--
|
|
231
|
+
color: var(--text-dim);
|
|
243
232
|
font-style: italic;
|
|
244
233
|
margin-bottom: 32px;
|
|
245
|
-
font-size: 0.
|
|
234
|
+
font-size: 0.9rem;
|
|
246
235
|
}
|
|
247
236
|
|
|
248
237
|
h3 {
|
|
249
|
-
font-family: "
|
|
250
|
-
font-size:
|
|
251
|
-
font-weight:
|
|
252
|
-
color: var(--
|
|
238
|
+
font-family: "JetBrains Mono", monospace;
|
|
239
|
+
font-size: 0.9rem;
|
|
240
|
+
font-weight: 500;
|
|
241
|
+
color: var(--accent);
|
|
253
242
|
margin: 32px 0 10px;
|
|
254
243
|
letter-spacing: 0.01em;
|
|
255
244
|
}
|
|
@@ -263,80 +252,81 @@
|
|
|
263
252
|
.features {
|
|
264
253
|
display: grid;
|
|
265
254
|
grid-template-columns: 1fr 1fr;
|
|
266
|
-
gap:
|
|
267
|
-
background: var(--
|
|
268
|
-
border: 1px solid var(--
|
|
255
|
+
gap: 1px;
|
|
256
|
+
background: var(--border);
|
|
257
|
+
border: 1px solid var(--border);
|
|
269
258
|
margin-top: 32px;
|
|
270
259
|
}
|
|
271
260
|
|
|
272
261
|
.feature {
|
|
273
|
-
padding:
|
|
274
|
-
background: var(--
|
|
262
|
+
padding: 24px 20px;
|
|
263
|
+
background: var(--bg);
|
|
275
264
|
}
|
|
276
265
|
|
|
277
266
|
.feature-label {
|
|
278
267
|
font-family: "JetBrains Mono", monospace;
|
|
279
|
-
font-size: 0.
|
|
268
|
+
font-size: 0.65rem;
|
|
280
269
|
text-transform: uppercase;
|
|
281
270
|
letter-spacing: 0.12em;
|
|
282
|
-
color: var(--
|
|
283
|
-
margin-bottom:
|
|
271
|
+
color: var(--text-muted);
|
|
272
|
+
margin-bottom: 8px;
|
|
284
273
|
}
|
|
285
274
|
|
|
286
275
|
.feature h3 {
|
|
287
|
-
font-family: "
|
|
288
|
-
font-size:
|
|
289
|
-
color: var(--text
|
|
276
|
+
font-family: "JetBrains Mono", monospace;
|
|
277
|
+
font-size: 0.95rem;
|
|
278
|
+
color: var(--text);
|
|
290
279
|
margin: 0 0 8px;
|
|
291
|
-
font-weight:
|
|
280
|
+
font-weight: 500;
|
|
292
281
|
}
|
|
293
282
|
|
|
294
283
|
.feature p {
|
|
295
|
-
color: var(--
|
|
296
|
-
font-size: 0.
|
|
284
|
+
color: var(--text-dim);
|
|
285
|
+
font-size: 0.85rem;
|
|
297
286
|
line-height: 1.55;
|
|
298
|
-
margin-bottom:
|
|
287
|
+
margin-bottom: 10px;
|
|
299
288
|
}
|
|
300
289
|
|
|
301
290
|
.feature code {
|
|
302
291
|
font-family: "JetBrains Mono", monospace;
|
|
303
|
-
font-size: 0.
|
|
304
|
-
color: var(--
|
|
305
|
-
background: var(--
|
|
292
|
+
font-size: 0.75rem;
|
|
293
|
+
color: var(--accent);
|
|
294
|
+
background: var(--bg-item);
|
|
306
295
|
padding: 3px 8px;
|
|
307
|
-
border: 1px solid var(--
|
|
296
|
+
border: 1px solid var(--border);
|
|
308
297
|
display: inline-block;
|
|
309
298
|
}
|
|
310
299
|
|
|
311
300
|
/* ─── PERSONALITY QUOTES ─── */
|
|
312
301
|
.ove-says {
|
|
313
|
-
border-left: 2px solid var(--
|
|
314
|
-
padding:
|
|
315
|
-
margin:
|
|
302
|
+
border-left: 2px solid var(--accent);
|
|
303
|
+
padding: 14px 0 14px 20px;
|
|
304
|
+
margin: 32px 0;
|
|
316
305
|
font-style: italic;
|
|
317
|
-
color: var(--
|
|
318
|
-
font-size:
|
|
306
|
+
color: var(--text-dim);
|
|
307
|
+
font-size: 0.95rem;
|
|
319
308
|
}
|
|
320
309
|
|
|
321
310
|
.ove-says .attr {
|
|
322
311
|
display: block;
|
|
323
312
|
font-style: normal;
|
|
324
|
-
color: var(--muted);
|
|
325
|
-
font-size: 0.
|
|
313
|
+
color: var(--text-muted);
|
|
314
|
+
font-size: 0.75rem;
|
|
326
315
|
margin-top: 6px;
|
|
327
316
|
font-family: "JetBrains Mono", monospace;
|
|
328
317
|
}
|
|
329
318
|
|
|
330
319
|
/* ─── CODE BLOCKS ─── */
|
|
331
320
|
pre {
|
|
332
|
-
background: var(--
|
|
333
|
-
border: 1px solid var(--
|
|
334
|
-
padding: 18px
|
|
321
|
+
background: var(--bg-panel);
|
|
322
|
+
border: 1px solid var(--border);
|
|
323
|
+
padding: 16px 18px;
|
|
335
324
|
overflow-x: auto;
|
|
336
|
-
font-size: 0.
|
|
325
|
+
font-size: 0.8rem;
|
|
337
326
|
margin: 14px 0;
|
|
338
327
|
line-height: 1.65;
|
|
339
328
|
position: relative;
|
|
329
|
+
border-radius: 3px;
|
|
340
330
|
}
|
|
341
331
|
|
|
342
332
|
pre::before {
|
|
@@ -348,11 +338,12 @@
|
|
|
348
338
|
font-size: 0.6rem;
|
|
349
339
|
text-transform: uppercase;
|
|
350
340
|
letter-spacing: 0.1em;
|
|
351
|
-
color: var(--muted);
|
|
341
|
+
color: var(--text-muted);
|
|
352
342
|
padding: 4px 10px;
|
|
353
|
-
background: var(--
|
|
354
|
-
border-left: 1px solid var(--
|
|
355
|
-
border-bottom: 1px solid var(--
|
|
343
|
+
background: var(--bg-item);
|
|
344
|
+
border-left: 1px solid var(--border);
|
|
345
|
+
border-bottom: 1px solid var(--border);
|
|
346
|
+
border-radius: 0 3px 0 3px;
|
|
356
347
|
}
|
|
357
348
|
|
|
358
349
|
code {
|
|
@@ -366,11 +357,12 @@
|
|
|
366
357
|
}
|
|
367
358
|
|
|
368
359
|
p code {
|
|
369
|
-
background: var(--
|
|
370
|
-
border: 1px solid var(--
|
|
360
|
+
background: var(--bg-item);
|
|
361
|
+
border: 1px solid var(--border);
|
|
371
362
|
padding: 1px 6px;
|
|
372
|
-
color: var(--
|
|
363
|
+
color: var(--accent);
|
|
373
364
|
font-size: 0.82em;
|
|
365
|
+
border-radius: 2px;
|
|
374
366
|
}
|
|
375
367
|
|
|
376
368
|
/* ─── LISTS ─── */
|
|
@@ -385,7 +377,7 @@
|
|
|
385
377
|
counter-increment: step;
|
|
386
378
|
padding: 8px 0 8px 36px;
|
|
387
379
|
position: relative;
|
|
388
|
-
border-bottom: 1px solid var(--
|
|
380
|
+
border-bottom: 1px solid var(--border);
|
|
389
381
|
font-size: 0.95rem;
|
|
390
382
|
}
|
|
391
383
|
|
|
@@ -399,25 +391,25 @@
|
|
|
399
391
|
left: 0;
|
|
400
392
|
font-family: "JetBrains Mono", monospace;
|
|
401
393
|
font-size: 0.75rem;
|
|
402
|
-
color: var(--
|
|
394
|
+
color: var(--text-muted);
|
|
403
395
|
width: 22px;
|
|
404
396
|
text-align: right;
|
|
405
397
|
}
|
|
406
398
|
|
|
407
399
|
/* ─── LINKS ─── */
|
|
408
400
|
a {
|
|
409
|
-
color: var(--
|
|
401
|
+
color: var(--accent);
|
|
410
402
|
text-decoration: none;
|
|
411
|
-
border-bottom: 1px solid var(--
|
|
403
|
+
border-bottom: 1px solid var(--border);
|
|
412
404
|
transition: border-color 0.15s;
|
|
413
405
|
}
|
|
414
406
|
|
|
415
407
|
a:hover {
|
|
416
|
-
border-bottom-color: var(--
|
|
408
|
+
border-bottom-color: var(--accent);
|
|
417
409
|
}
|
|
418
410
|
|
|
419
411
|
strong {
|
|
420
|
-
color: var(--text
|
|
412
|
+
color: var(--text);
|
|
421
413
|
font-weight: 500;
|
|
422
414
|
}
|
|
423
415
|
|
|
@@ -434,14 +426,14 @@
|
|
|
434
426
|
display: grid;
|
|
435
427
|
grid-template-columns: auto 1fr;
|
|
436
428
|
gap: 0;
|
|
437
|
-
border: 1px solid var(--
|
|
429
|
+
border: 1px solid var(--border);
|
|
438
430
|
font-size: 0.88rem;
|
|
439
431
|
}
|
|
440
432
|
|
|
441
433
|
.cmd-grid dt,
|
|
442
434
|
.cmd-grid dd {
|
|
443
435
|
padding: 10px 16px;
|
|
444
|
-
border-bottom: 1px solid var(--
|
|
436
|
+
border-bottom: 1px solid var(--border);
|
|
445
437
|
}
|
|
446
438
|
|
|
447
439
|
.cmd-grid dt:last-of-type,
|
|
@@ -451,15 +443,15 @@
|
|
|
451
443
|
|
|
452
444
|
.cmd-grid dt {
|
|
453
445
|
font-family: "JetBrains Mono", monospace;
|
|
454
|
-
font-size: 0.
|
|
455
|
-
color: var(--
|
|
456
|
-
background: var(--
|
|
446
|
+
font-size: 0.78rem;
|
|
447
|
+
color: var(--accent);
|
|
448
|
+
background: var(--bg-panel);
|
|
457
449
|
white-space: nowrap;
|
|
458
|
-
border-right: 1px solid var(--
|
|
450
|
+
border-right: 1px solid var(--border);
|
|
459
451
|
}
|
|
460
452
|
|
|
461
453
|
.cmd-grid dd {
|
|
462
|
-
color: var(--
|
|
454
|
+
color: var(--text-dim);
|
|
463
455
|
}
|
|
464
456
|
|
|
465
457
|
/* ─── HOW IT WORKS ─── */
|
|
@@ -473,7 +465,7 @@
|
|
|
473
465
|
display: flex;
|
|
474
466
|
gap: 16px;
|
|
475
467
|
padding: 14px 0;
|
|
476
|
-
border-bottom: 1px solid var(--
|
|
468
|
+
border-bottom: 1px solid var(--border);
|
|
477
469
|
align-items: baseline;
|
|
478
470
|
font-size: 0.95rem;
|
|
479
471
|
}
|
|
@@ -485,14 +477,14 @@
|
|
|
485
477
|
.pipeline .step-n {
|
|
486
478
|
font-family: "JetBrains Mono", monospace;
|
|
487
479
|
font-size: 0.7rem;
|
|
488
|
-
color: var(--
|
|
480
|
+
color: var(--text-muted);
|
|
489
481
|
flex-shrink: 0;
|
|
490
482
|
width: 16px;
|
|
491
483
|
text-align: right;
|
|
492
484
|
}
|
|
493
485
|
|
|
494
486
|
.pipeline .step-arrow {
|
|
495
|
-
color: var(--
|
|
487
|
+
color: var(--border-light);
|
|
496
488
|
flex-shrink: 0;
|
|
497
489
|
font-size: 0.8rem;
|
|
498
490
|
}
|
|
@@ -501,20 +493,20 @@
|
|
|
501
493
|
footer {
|
|
502
494
|
padding: 40px 32px;
|
|
503
495
|
text-align: center;
|
|
504
|
-
color: var(--
|
|
505
|
-
font-size: 0.
|
|
506
|
-
border-top: 1px solid var(--
|
|
496
|
+
color: var(--text-dim);
|
|
497
|
+
font-size: 0.78rem;
|
|
498
|
+
border-top: 1px solid var(--border);
|
|
507
499
|
font-family: "JetBrains Mono", monospace;
|
|
508
500
|
letter-spacing: 0.02em;
|
|
509
501
|
}
|
|
510
502
|
|
|
511
503
|
footer a {
|
|
512
|
-
color: var(--
|
|
504
|
+
color: var(--text-muted);
|
|
513
505
|
border-bottom: none;
|
|
514
506
|
}
|
|
515
507
|
|
|
516
508
|
footer a:hover {
|
|
517
|
-
color: var(--
|
|
509
|
+
color: var(--accent);
|
|
518
510
|
}
|
|
519
511
|
|
|
520
512
|
/* ─── RESPONSIVE ─── */
|
|
@@ -525,8 +517,8 @@
|
|
|
525
517
|
gap: 32px;
|
|
526
518
|
}
|
|
527
519
|
.hero-portrait {
|
|
528
|
-
width:
|
|
529
|
-
height:
|
|
520
|
+
width: 120px;
|
|
521
|
+
height: 120px;
|
|
530
522
|
margin: 0 auto;
|
|
531
523
|
}
|
|
532
524
|
.hero-quote {
|
|
@@ -536,7 +528,7 @@
|
|
|
536
528
|
justify-content: center;
|
|
537
529
|
}
|
|
538
530
|
.hero-text h1 {
|
|
539
|
-
font-size:
|
|
531
|
+
font-size: 2rem;
|
|
540
532
|
}
|
|
541
533
|
.features {
|
|
542
534
|
grid-template-columns: 1fr;
|
|
@@ -587,6 +579,18 @@
|
|
|
587
579
|
</head>
|
|
588
580
|
<body>
|
|
589
581
|
|
|
582
|
+
<header>
|
|
583
|
+
<div class="header-left">
|
|
584
|
+
<img class="header-logo" src="logo.png" alt="">
|
|
585
|
+
<h1>ove</h1>
|
|
586
|
+
<a class="nav-link" href="#features">features</a>
|
|
587
|
+
<a class="nav-link" href="#getting-started">setup</a>
|
|
588
|
+
<a class="nav-link" href="#commands">commands</a>
|
|
589
|
+
<a class="nav-link" href="#deploy">deploy</a>
|
|
590
|
+
</div>
|
|
591
|
+
<a class="nav-link" href="https://github.com/jacksoncage/ove">github</a>
|
|
592
|
+
</header>
|
|
593
|
+
|
|
590
594
|
<section class="hero">
|
|
591
595
|
<div class="hero-inner">
|
|
592
596
|
<img class="hero-portrait" src="logo.png" alt="Ove, grumpy but reliable">
|
|
@@ -603,12 +607,6 @@
|
|
|
603
607
|
</div>
|
|
604
608
|
</div>
|
|
605
609
|
</div>
|
|
606
|
-
<a href="#getting-started" class="scroll-hint">
|
|
607
|
-
scroll
|
|
608
|
-
<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
609
|
-
<path d="M12 5v14M19 12l-7 7-7-7"/>
|
|
610
|
-
</svg>
|
|
611
|
-
</a>
|
|
612
610
|
</section>
|
|
613
611
|
|
|
614
612
|
<div class="install-bar">
|
|
@@ -617,7 +615,7 @@
|
|
|
617
615
|
|
|
618
616
|
<div class="container">
|
|
619
617
|
|
|
620
|
-
<section class="section">
|
|
618
|
+
<section class="section" id="features">
|
|
621
619
|
<h2>What Ove Does</h2>
|
|
622
620
|
<p class="section-note">He grumbles, but he gets it done. Properly.</p>
|
|
623
621
|
|
|
@@ -753,7 +751,7 @@ sudo systemctl enable --now ove</pre>
|
|
|
753
751
|
</div>
|
|
754
752
|
</section>
|
|
755
753
|
|
|
756
|
-
<section class="section">
|
|
754
|
+
<section class="section" id="commands">
|
|
757
755
|
<h2>Commands</h2>
|
|
758
756
|
<p class="section-note">Shortcuts for common tasks. You can also just type what you need in plain language.</p>
|
|
759
757
|
|