-
-
-
install
-
cargo · locked
+
+
+
+
+ install
+ cargo · locked
+
+
cargo install --git https://github.com/makefunstuff/jev-lsp --locked jev-lsp jev
+
+
+
+
+ init.lua
+ after symlink
+
+
require('jev').setup({})
-
cargo install --git https://github.com/makefunstuff/jev-lsp --locked jev-lsp jev
@@ -418,7 +429,7 @@
Start
diff --git a/site/styles.css b/site/styles.css
index f28795a..bb29d1b 100644
--- a/site/styles.css
+++ b/site/styles.css
@@ -450,8 +450,7 @@ a > code { color: inherit; }
}
.demo-frame { margin: 0; }
-.demo-frame figcaption,
-.client-card figcaption {
+.demo-frame figcaption {
margin-top: 0.85rem;
font: 400 var(--t-sm) / 1.5 var(--sans);
color: var(--muted); max-width: 42rem;
@@ -562,8 +561,18 @@ tr.mark strong { color: var(--accent); }
background: transparent; border: 0; padding: 0; color: var(--machine-ink);
}
-/* ---------- clients ---------- */
-.sec-clients { background: var(--bg); }
+/* ---------- clients (one-at-a-time CSS radio showcase) ---------- */
+.sec-clients {
+ background: var(--bg);
+ padding-block: clamp(3.5rem, 9vw, 6.5rem);
+ overflow: clip;
+ isolation: isolate;
+}
+.sec-clients .sec-head {
+ margin-bottom: clamp(2rem, 5vw, 3.25rem);
+ max-width: 36rem;
+}
+.sec-clients h2 { max-width: 28ch; }
.chips {
display: flex; flex-wrap: wrap; gap: 0.45rem; margin: 1.1rem 0 0;
}
@@ -573,30 +582,87 @@ tr.mark strong { color: var(--accent); }
font: 500 var(--t-xs) / 1.3 var(--mono); color: var(--ink-soft);
background: rgba(255, 255, 255, 0.02);
}
-.client-grid {
- display: grid; gap: 1.25rem;
+
+.client-showcase {
+ position: relative;
+ max-width: 48rem;
+}
+.client-radio {
+ position: absolute;
+ width: 1px; height: 1px;
+ padding: 0; margin: -1px;
+ overflow: hidden; clip: rect(0, 0, 0, 0);
+ white-space: nowrap; border: 0;
+}
+.client-seg {
+ display: inline-flex; flex-wrap: wrap;
+ gap: 0.2rem; padding: 0.25rem;
+ margin: 0 0 1.75rem;
+ border: 1px solid var(--line-strong);
+ border-radius: 999px;
+ background: rgba(255, 255, 255, 0.02);
}
-@media (min-width: 960px) {
- .client-grid { grid-template-columns: 1fr 1fr 1fr; gap: 1.15rem; }
+.client-seg-btn {
+ cursor: pointer;
+ padding: 0.55rem 1.15rem;
+ border-radius: 999px;
+ font: 600 var(--t-sm) / 1.2 var(--sans);
+ letter-spacing: -0.01em;
+ color: var(--muted);
+ user-select: none;
+ transition: color 0.15s ease, background 0.15s ease;
+}
+.client-seg-btn:hover {
+ color: var(--ink-soft);
+ background: rgba(255, 255, 255, 0.04);
+}
+.client-seg-btn:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+ color: var(--ink);
}
-@media (min-width: 720px) and (max-width: 959px) {
- .client-grid { grid-template-columns: 1fr 1fr; }
-}
-.client-card { margin: 0; }
-.client-card .win {
- height: 100%;
- transition: transform 0.2s ease, box-shadow 0.2s ease;
-}
-@media (hover: hover) {
- .client-card .win:hover {
- transform: translateY(-3px);
- box-shadow:
- 0 0 0 1px rgba(255, 255, 255, 0.1),
- 0 28px 56px rgba(0, 0, 0, 0.55);
- }
+
+#client-harness:checked ~ .client-seg label[for="client-harness"],
+#client-nvim:checked ~ .client-seg label[for="client-nvim"],
+#client-vsc:checked ~ .client-seg label[for="client-vsc"] {
+ color: #0e1117;
+ background: var(--accent);
+ box-shadow: 0 0 0 1px rgba(240, 184, 73, 0.25), 0 6px 18px rgba(240, 184, 73, 0.18);
}
-/* neovim chrome in client card */
+.client-stage {
+ position: relative;
+ min-height: 18rem;
+}
+.client-panel {
+ display: none;
+ margin: 0;
+ animation: client-in 0.22s ease;
+}
+#client-harness:checked ~ .client-stage .panel-harness,
+#client-nvim:checked ~ .client-stage .panel-nvim,
+#client-vsc:checked ~ .client-stage .panel-vsc {
+ display: block;
+}
+@keyframes client-in {
+ from { opacity: 0; transform: translateY(6px); }
+ to { opacity: 1; transform: none; }
+}
+@media (prefers-reduced-motion: reduce) {
+ .client-panel { animation: none; }
+}
+.client-panel .win {
+ width: 100%;
+ box-shadow: var(--shadow-float);
+}
+.client-panel figcaption,
+.demo-frame figcaption {
+ margin-top: 1.1rem;
+ font: 400 var(--t-sm) / 1.5 var(--sans);
+ color: var(--muted); max-width: 42rem;
+}
+
+/* neovim chrome in client panel */
.nvim-status {
display: flex; gap: 0.65rem; align-items: center;
padding: 0.4rem 0.75rem; background: #141a24;
@@ -608,7 +674,7 @@ tr.mark strong { color: var(--accent); }
font-weight: 700; border-radius: 2px; font-size: 0.65rem;
}
.nvim-right { margin-left: auto; }
-.nvim-pane { min-height: 8.5rem; }
+.nvim-pane { min-height: 11rem; }
/* vscode chrome */
.vsc-tabs {
@@ -624,7 +690,7 @@ tr.mark strong { color: var(--accent); }
color: var(--machine-ink); background: var(--machine);
box-shadow: inset 0 -2px 0 var(--accent);
}
-.vsc-body { display: flex; min-height: 9.5rem; }
+.vsc-body { display: flex; min-height: 12rem; }
.vsc-rail {
width: 1.65rem; flex-shrink: 0;
background: var(--machine-2); border-right: 1px solid var(--line);
@@ -662,14 +728,12 @@ tr.mark strong { color: var(--accent); }
}
.prob-item { color: var(--machine-ink); }
-.win-config {
- margin-top: 1.5rem; max-width: 28rem;
-}
-
/* ---------- start ---------- */
.sec-start {
- padding-bottom: clamp(4rem, 10vw, 7rem);
+ padding-block: clamp(3.25rem, 8vw, 5.5rem) clamp(4rem, 10vw, 7rem);
background: var(--bg-elev);
+ overflow: clip;
+ isolation: isolate;
}
.start-layout {
display: grid; gap: clamp(1.75rem, 4vw, 2.75rem); align-items: start;
@@ -677,19 +741,30 @@ tr.mark strong { color: var(--accent); }
@media (min-width: 860px) {
.start-layout {
grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
- align-items: center;
+ align-items: start;
}
}
.next-steps {
margin: 1.35rem 0 0; padding-left: 1.25rem; color: var(--ink-soft);
}
.next-steps li + li { margin-top: 0.65rem; }
+.start-wins {
+ display: flex; flex-direction: column; gap: 1rem;
+ position: relative; z-index: 1;
+}
.win-install {
box-shadow: var(--shadow-float);
}
.win-install .win-body {
font-size: 0.78rem; word-break: break-all;
}
+.win-config {
+ max-width: none;
+ box-shadow: var(--shadow-win);
+}
+.win-config .win-body {
+ font-size: 0.85rem;
+}
/* ---------- footer ---------- */
.site-foot {