aboutsummaryrefslogtreecommitdiff
path: root/website
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-27 00:33:25 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-27 00:33:25 +0300
commit61bec49572358259f7e98e37c2f8cdfda423ed5d (patch)
tree0a1d42cee6c1ff26f72069df77867fda32ef5396 /website
parentcfffe6599e4f82f89af4f9b36487793226f54dfe (diff)
feat: refactor website homepage
Diffstat (limited to 'website')
-rw-r--r--website/assets/agent-icons/amp.svg1
-rw-r--r--website/assets/agent-icons/antigravity.svg1
-rw-r--r--website/assets/agent-icons/claude.svg1
-rw-r--r--website/assets/agent-icons/codex-mask.svg1
-rw-r--r--website/assets/agent-icons/codex.svg1
-rw-r--r--website/assets/agent-icons/cursor.svg1
-rw-r--r--website/assets/agent-icons/droid.pngbin0 -> 43583 bytes
-rw-r--r--website/assets/agent-icons/github-copilot.svg1
-rw-r--r--website/assets/agent-icons/grok.svg1
-rw-r--r--website/assets/agent-icons/herdr-mask.svg1
-rw-r--r--website/assets/agent-icons/hermes.svg1
-rw-r--r--website/assets/agent-icons/kimi.svg1
-rw-r--r--website/assets/agent-icons/kiro-mask.svg1
-rw-r--r--website/assets/agent-icons/kiro.svg11
-rw-r--r--website/assets/agent-icons/opencode.svg1
-rw-r--r--website/assets/agent-icons/pi.svg20
-rw-r--r--website/astro.config.mjs4
-rw-r--r--website/css/style.css1940
-rw-r--r--website/index.html484
-rw-r--r--website/src/components/SiteTitle.astro77
-rw-r--r--website/src/content/docs/index.mdx2
-rw-r--r--website/src/pages/compare.astro175
-rw-r--r--website/src/styles/starlight.css149
23 files changed, 2022 insertions, 853 deletions
diff --git a/website/assets/agent-icons/amp.svg b/website/assets/agent-icons/amp.svg
new file mode 100644
index 00000000..68848aa9
--- /dev/null
+++ b/website/assets/agent-icons/amp.svg
@@ -0,0 +1 @@
+<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Amp</title><path d="M15.087 23.18L12.03 24l-2.097-7.823-5.738 5.738-2.251-2.251 5.718-5.719-7.769-2.082.82-3.057 11.294 3.08 3.08 11.295z" fill="#F34E3F"></path><path d="M19.505 18.762l-3.057.82-2.564-9.573-9.572-2.564.819-3.057 11.295 3.079 3.08 11.295z" fill="#F34E3F"></path><path d="M23.893 14.374l-3.057.82-2.565-9.572L8.7 3.057 9.52 0l11.295 3.08 3.079 11.294z" fill="#F34E3F"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/antigravity.svg b/website/assets/agent-icons/antigravity.svg
new file mode 100644
index 00000000..3ed10ab6
--- /dev/null
+++ b/website/assets/agent-icons/antigravity.svg
@@ -0,0 +1 @@
+<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Antigravity</title><mask height="23" id="lobe-icons-antigravity-0-_R_0_" maskUnits="userSpaceOnUse" width="24" x="0" y="1"><path d="M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z" fill="#fff"></path></mask><g mask="url(#lobe-icons-antigravity-0-_R_0_)"><g filter="url(#lobe-icons-antigravity-1-_R_0_)"><path d="M-1.018-3.992c-.408 3.591 2.686 6.89 6.91 7.37 4.225.48 7.98-2.043 8.387-5.633.408-3.59-2.686-6.89-6.91-7.37-4.225-.479-7.98 2.043-8.387 5.633z" fill="#FFE432"></path></g><g filter="url(#lobe-icons-antigravity-2-_R_0_)"><path d="M15.269 7.747c1.058 4.557 5.691 7.374 10.348 6.293 4.657-1.082 7.575-5.653 6.516-10.21-1.058-4.556-5.691-7.374-10.348-6.292-4.657 1.082-7.575 5.653-6.516 10.21z" fill="#FC413D"></path></g><g filter="url(#lobe-icons-antigravity-3-_R_0_)"><path d="M-12.443 10.804c1.338 4.703 7.36 7.11 13.453 5.378 6.092-1.733 9.947-6.95 8.61-11.652C8.282-.173 2.26-2.58-3.833-.848-9.925.884-13.78 6.1-12.443 10.804z" fill="#00B95C"></path></g><g filter="url(#lobe-icons-antigravity-4-_R_0_)"><path d="M-12.443 10.804c1.338 4.703 7.36 7.11 13.453 5.378 6.092-1.733 9.947-6.95 8.61-11.652C8.282-.173 2.26-2.58-3.833-.848-9.925.884-13.78 6.1-12.443 10.804z" fill="#00B95C"></path></g><g filter="url(#lobe-icons-antigravity-5-_R_0_)"><path d="M-7.608 14.703c3.352 3.424 9.126 3.208 12.896-.483 3.77-3.69 4.108-9.459.756-12.883C2.69-2.087-3.083-1.871-6.853 1.82c-3.77 3.69-4.108 9.458-.755 12.883z" fill="#00B95C"></path></g><g filter="url(#lobe-icons-antigravity-6-_R_0_)"><path d="M9.932 27.617c1.04 4.482 5.384 7.303 9.7 6.3 4.316-1.002 6.971-5.448 5.93-9.93-1.04-4.483-5.384-7.304-9.7-6.301-4.316 1.002-6.971 5.448-5.93 9.93z" fill="#3186FF"></path></g><g filter="url(#lobe-icons-antigravity-7-_R_0_)"><path d="M2.572-8.185C.392-3.329 2.778 2.472 7.9 4.771c5.122 2.3 11.042.227 13.222-4.63 2.18-4.855-.205-10.656-5.327-12.955-5.122-2.3-11.042-.227-13.222 4.63z" fill="#FBBC04"></path></g><g filter="url(#lobe-icons-antigravity-8-_R_0_)"><path d="M-3.267 38.686c-5.277-2.072 3.742-19.117 5.984-24.83 2.243-5.712 8.34-8.664 13.616-6.592 5.278 2.071 11.533 13.482 9.29 19.195-2.242 5.713-23.613 14.298-28.89 12.227z" fill="#3186FF"></path></g><g filter="url(#lobe-icons-antigravity-9-_R_0_)"><path d="M28.71 17.471c-1.413 1.649-5.1.808-8.236-1.878-3.135-2.687-4.531-6.201-3.118-7.85 1.412-1.649 5.1-.808 8.235 1.878s4.532 6.2 3.119 7.85z" fill="#749BFF"></path></g><g filter="url(#lobe-icons-antigravity-10-_R_0_)"><path d="M18.163 9.077c5.81 3.93 12.502 4.19 14.946.577 2.443-3.612-.287-9.727-6.098-13.658-5.81-3.931-12.502-4.19-14.946-.577-2.443 3.612.287 9.727 6.098 13.658z" fill="#FC413D"></path></g><g filter="url(#lobe-icons-antigravity-11-_R_0_)"><path d="M-.915 2.684c-1.44 3.473-.97 6.967 1.05 7.804 2.02.837 4.824-1.3 6.264-4.772 1.44-3.473.97-6.967-1.05-7.804-2.02-.837-4.824 1.3-6.264 4.772z" fill="#FFEE48"></path></g></g><defs><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="17.587" id="lobe-icons-antigravity-1-_R_0_" width="19.838" x="-3.288" y="-11.917"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="1.117"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="38.565" id="lobe-icons-antigravity-2-_R_0_" width="38.9" x="4.251" y="-13.493"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="5.4"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="36.517" id="lobe-icons-antigravity-3-_R_0_" width="40.955" x="-21.889" y="-10.592"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="4.591"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="36.517" id="lobe-icons-antigravity-4-_R_0_" width="40.955" x="-21.889" y="-10.592"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="4.591"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="36.595" id="lobe-icons-antigravity-5-_R_0_" width="36.632" x="-19.099" y="-10.278"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="4.591"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="34.087" id="lobe-icons-antigravity-6-_R_0_" width="33.533" x=".981" y="8.758"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="4.363"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="35.276" id="lobe-icons-antigravity-7-_R_0_" width="35.978" x="-6.143" y="-21.659"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="3.954"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="46.523" id="lobe-icons-antigravity-8-_R_0_" width="45.114" x="-11.96" y="-.46"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="3.531"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="24.054" id="lobe-icons-antigravity-9-_R_0_" width="25.094" x="10.485" y=".58"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="3.159"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="30.007" id="lobe-icons-antigravity-10-_R_0_" width="33.508" x="5.833" y="-12.467"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="2.669"></feGaussianBlur></filter><filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="26.151" id="lobe-icons-antigravity-11-_R_0_" width="22.194" x="-8.355" y="-8.876"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur result="effect1_foregroundBlur_977_115" stdDeviation="3.303"></feGaussianBlur></filter></defs></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/claude.svg b/website/assets/agent-icons/claude.svg
new file mode 100644
index 00000000..ed1293c4
--- /dev/null
+++ b/website/assets/agent-icons/claude.svg
@@ -0,0 +1 @@
+<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Claude Code</title><path clip-rule="evenodd" d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="#D97757" fill-rule="evenodd"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/codex-mask.svg b/website/assets/agent-icons/codex-mask.svg
new file mode 100644
index 00000000..a864d063
--- /dev/null
+++ b/website/assets/agent-icons/codex-mask.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="white" d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z"/></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/codex.svg b/website/assets/agent-icons/codex.svg
new file mode 100644
index 00000000..c77ccfdd
--- /dev/null
+++ b/website/assets/agent-icons/codex.svg
@@ -0,0 +1 @@
+<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Codex</title><path d="M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z" fill="#fff"></path><path d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z" fill="url(#lobe-icons-codex-_R_0_)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-codex-_R_0_" x1="12" x2="12" y1="3" y2="21"><stop stop-color="#B1A7FF"></stop><stop offset=".5" stop-color="#7A9DFF"></stop><stop offset="1" stop-color="#3941FF"></stop></linearGradient></defs></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/cursor.svg b/website/assets/agent-icons/cursor.svg
new file mode 100644
index 00000000..a5b2ee3b
--- /dev/null
+++ b/website/assets/agent-icons/cursor.svg
@@ -0,0 +1 @@
+<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Cursor</title><path d="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/droid.png b/website/assets/agent-icons/droid.png
new file mode 100644
index 00000000..7a2f42b4
--- /dev/null
+++ b/website/assets/agent-icons/droid.png
Binary files differ
diff --git a/website/assets/agent-icons/github-copilot.svg b/website/assets/agent-icons/github-copilot.svg
new file mode 100644
index 00000000..3cbf22a5
--- /dev/null
+++ b/website/assets/agent-icons/github-copilot.svg
@@ -0,0 +1 @@
+<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>GithubCopilot</title><path d="M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/grok.svg b/website/assets/agent-icons/grok.svg
new file mode 100644
index 00000000..efb1a618
--- /dev/null
+++ b/website/assets/agent-icons/grok.svg
@@ -0,0 +1 @@
+<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Grok</title><path d="M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/herdr-mask.svg b/website/assets/agent-icons/herdr-mask.svg
new file mode 100644
index 00000000..b3d8b310
--- /dev/null
+++ b/website/assets/agent-icons/herdr-mask.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g fill="white" transform="translate(0 512) scale(.1 -.1)"><path d="M2794 3710 c-129 -33 -299 -135 -359 -214 -21 -28 -26 -42 -21 -63 9 -38 154 -178 199 -192 32 -11 41 -9 104 23 171 86 354 70 475 -43 150 -138 150 -379 0 -511 -107 -95 -278 -94 -386 2 l-46 40 -11 -29 c-16 -40 -14 -122 4 -164 60 -144 264 -222 452 -174 360 92 559 494 430 868 -36 103 -81 173 -175 267 -71 72 -100 93 -180 132 -52 26 -127 54 -167 62 -96 21 -230 20 -319 -4z M2183 3695 c-116 -32 -221 -108 -273 -199 -17 -28 -30 -54 -30 -58 0 -4 20 1 45 12 66 28 220 68 294 76 64 7 65 7 137 83 40 41 71 77 69 79 -2 2 -21 8 -42 13 -55 12 -140 10 -200 -6z M2212 3388 c-159 -22 -390 -122 -559 -241 -299 -210 -585 -600 -609 -828 -12 -118 40 -251 125 -318 96 -76 178 -98 426 -116 110 -8 224 -21 254 -29 125 -34 230 -115 272 -211 11 -24 24 -81 30 -127 20 -170 65 -271 166 -374 34 -35 63 -65 63 -67 0 -1 -10 -27 -22 -57 -29 -76 -37 -259 -14 -350 42 -170 158 -318 311 -397 44 -23 98 -46 120 -52 22 -6 45 -14 51 -18 5 -5 15 -48 22 -96 6 -48 14 -92 17 -97 4 -6 415 -10 1131 -10 l1124 0 0 1584 0 1585 -55 -19 c-84 -29 -143 -68 -232 -154 l-83 -78 -54 49 c-111 102 -233 151 -391 160 -113 6 -199 -10 -298 -54 l-60 -27 -26 34 c-37 51 -120 134 -127 128 -3 -4 0 -34 7 -67 17 -89 7 -268 -21 -356 -103 -328 -377 -545 -688 -545 -161 0 -273 41 -373 137 -37 35 -66 75 -85 116 -79 173 -8 407 124 407 44 0 68 -14 117 -66 74 -78 167 -82 238 -9 60 62 72 147 33 231 -42 90 -120 130 -238 122 -50 -4 -85 -14 -131 -37 -89 -45 -122 -52 -176 -40 -92 20 -262 163 -302 253 -11 25 -21 45 -22 45 -1 -1 -30 -6 -65 -11z m-256 -505 c115 -88 129 -102 132 -131 2 -18 -2 -40 -9 -49 -7 -8 -69 -55 -138 -105 -103 -73 -130 -88 -151 -83 -35 8 -51 34 -48 74 3 31 12 42 83 92 44 31 80 61 82 66 1 4 -30 31 -69 58 -39 28 -77 56 -85 63 -18 19 -16 72 4 94 32 35 63 23 199 -79z m528 -88 c23 -24 28 -52 14 -82 l-13 -28 -141 -3 c-130 -2 -142 -1 -158 17 -23 26 -24 66 -1 91 16 18 32 20 151 20 105 0 136 -3 148 -15z"/></g></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/hermes.svg b/website/assets/agent-icons/hermes.svg
new file mode 100644
index 00000000..2521a105
--- /dev/null
+++ b/website/assets/agent-icons/hermes.svg
@@ -0,0 +1 @@
+<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Hermes Agent</title><path d="M5.938 12.835c.127-.039.285.02.373.143.028.038.036.092.046.14.003.014-.02.033-.04.05-.124-.098-.24-.194-.354-.291-.011-.01-.016-.027-.025-.042zM8.396 9.412c.195-.032.39-.06.588-.05a.54.54 0 01.148.026c.202.071.402.147.601.224.028.01.05.036.075.055l-.013.027a9.203 9.203 0 01-.26-.089c-.115-.038-.213-.077-.315-.098-.25-.05-.25-.046-.292-.014l.574.144c.275.139.55.276.823.417.042.022.09.057.107.098.026.06.063.076.117.072.066-.006.132-.017.213-.027l-.04.086c.051.08.142.02.216.064-.074.13-.247.09-.334.199l.061.074-.12.087c0 .106-.038.168-.306.243l.026.085-.196.042.07.124h-.25l-.007.137c-.081-.01-.161-.018-.244-.027l-.053.123c-.027-.008-.052-.011-.073-.023-.067-.038-.128-.056-.195.006-.019.017-.063.014-.093.008-.026-.006-.05-.029-.07-.042-.11.095-.11.095-.208.003-.057.046-.12.074-.186.011-.063.027-.123-.02-.178-.014-.07.007-.097-.035-.133-.07l-.13.033c-.013-.236-.194-.19-.34-.203.005-.072.05-.092.095-.094a.474.474 0 01.159.022c.164.05.32.12.496.138.203.021.405.029.601-.015.265-.059.52-.149.707-.365.049-.056.083-.127.117-.195.019-.038.02-.084-.02-.116a1.397 1.397 0 00-.382-.217c.024.12-.031.182-.115.221 0 .014-.004.025 0 .03.08.115.084.16-.007.267a1.39 1.39 0 01-.218.211.477.477 0 01-.641-.05 1.36 1.36 0 01-.133-.152c-.078-.107-.076-.108-.033-.236-.165-.08-.128-.226-.104-.364.008-.05.028-.096.049-.163-.04.014-.067.017-.087.032a.897.897 0 00-.316.357c-.007.016-.01.034-.02.047-.012.015-.034.038-.045.035-.02-.006-.037-.027-.05-.045-.008-.012-.007-.032-.012-.057h-.126l.053-.172a14.82 14.82 0 00-.039-.049l.11-.284c-.06.026-.091.044-.124.051-.03.007-.064 0-.095 0 0-.031-.01-.07.004-.092.149-.22.305-.428.593-.476z"></path><path d="M8.06 10.788c-.003-.038-.004-.075.037-.062.016.006.034.048.028.067-.01.04-.038.032-.064-.005z"></path><path clip-rule="evenodd" d="M11.981.009c.226-.012.453-.011.679 0 .247.01.495.024.74.062.401.064.798.157 1.19.273.463.138.92.299 1.356.511a7.31 7.31 0 012.948 2.642c.292.469.536.963.739 1.479.219.556.446 1.11.623 1.683.204.654.329 1.326.458 1.997.097.504.182 1.01.29 1.511.156.722.329 1.44.494 2.16.186.812.4 1.615.63 2.415.102.355.193.713.282 1.072.11.436.202.876.254 1.323.031.278.066.557.073.837a7.56 7.56 0 01-.017.88c-.037.413-.1.818-.226 1.212a5.017 5.017 0 01-.915 1.649l-.13.156.018.023c.043-.023.088-.041.127-.068.2-.138.373-.307.531-.49.4-.46.721-.973.975-1.529a3.59 3.59 0 00.325-1.72c-.024-.424-.097-.834-.3-1.213-.013-.027-.015-.06-.03-.121.05.035.082.048.101.072.107.13.22.258.315.398.33.494.46 1.052.486 1.64a3.75 3.75 0 01-.47 1.97c-.36.655-.887 1.14-1.526 1.506-.193.111-.394.21-.595.308-.157.078-.248.211-.318.365a.522.522 0 00-.033.406.359.359 0 01.013.139c-.005.077-.077.155-.14.162-.054.006-.125-.043-.15-.116a1.206 1.206 0 01-.06-.233c-.04-.314-.155-.6-.308-.87a3.906 3.906 0 00-.73-.91 2.129 2.129 0 00-.897-.524 4.093 4.093 0 00-.692-.131c-.075-.008-.15-.04-.22.01.18.06.363.11.538.18.434.173.82.43 1.18.728.308.255.58.543.794.884.098.155.186.315.227.496.027.123.042.25.067.375.013.062-.002.109-.053.144-.047.033-.122.034-.163-.01a.455.455 0 01-.08-.14c-.03-.073-.038-.159-.078-.225a7.314 7.314 0 00-1.423-1.664c-.16-.137-.329-.26-.537-.323-.376-.114-.753-.203-1.15-.154-.213.025-.427.032-.64.053a1.6 1.6 0 00-.736.278 5.14 5.14 0 00-.834.72c-.329.342-.642.699-.955 1.055-.136.155-.264.319-.314.531a5.227 5.227 0 00-.012.051.096.096 0 01-.09.076h-.31c-.046 0-.082-.048-.072-.094.023-.108.045-.216.07-.324.075-.325.19-.635.368-.917.024-.039.04-.088.104-.08l.01.049.027.077c.28-.435.571-.834.996-1.135.283-.204.584-.378.89-.55a.196.196 0 00-.098-.002c-.162.043-.325.084-.485.134-.402.124-.764.33-1.11.566-.147.1-.298.193-.414.333a7.314 7.314 0 00-1.07 1.767.845.845 0 00-.04.12.075.075 0 01-.072.056h-.494c-.04 0-.062-.051-.036-.082.123-.14.246-.282.377-.415.275-.281.58-.532.777-.884.027-.048.063-.09.095-.135.238-.333.54-.607.818-.902.082-.086.175-.16.26-.24.029-.027.053-.057.079-.085l-.018-.025-.135.041c-.034.017-.07.031-.102.05-.248.144-.494.292-.743.433-.408.23-.825.439-1.209.711-.281.2-.591.358-.889.533-.02.012-.044.015-.08.028-.015-.135.143-.201.108-.336-.033.014-.064.02-.085.038-.111.096-.227.19-.328.296-.148.157-.284.325-.425.488-.125.143-.25.286-.373.431A.153.153 0 019.89 24H8.762a.316.316 0 00.016-.042c.028-.09.085-.172.083-.28-.091-.018-.162.001-.212.077a4.45 4.45 0 00-.136.215c-.01.016-.024.03-.042.03h-.093c-.019 0-.029-.022-.017-.037.071-.088.14-.178.209-.268.001-.002-.006-.012-.012-.024-.014.004-.03.006-.045.013-.176.09-.352.181-.527.274a.363.363 0 01-.168.042H5.202c-.026 0-.039-.036-.019-.053.21-.178.402-.374.558-.605.335-.496.538-1.047.667-1.629.004-.02-.003-.043-.006-.091-.037.048-.059.072-.076.1a1.943 1.943 0 01-.334.415c-.28.258-.59.448-.983.464-.297.012-.588 0-.865-.127-.46-.21-.722-.57-.794-1.072-.025-.17-.017-.171-.182-.219A3.513 3.513 0 011.97 20.6a2.286 2.286 0 01-.808-1.13 3.569 3.569 0 01-.16-1.245c.002-.034.016-.067.024-.1.032.023.046.043.05.066.033.153.059.308.096.46.086.355.257.664.516.92.258.256.571.419.91.532.358.118.717.138 1.07-.016a1.89 1.89 0 00.621-.452c.328-.348.533-.76.648-1.223.009-.034.005-.071.007-.11-.015.006-.026.006-.03.011-.031.05-.064.1-.093.152-.284.502-.679.887-1.196 1.135-.351.17-.718.255-1.11.159a1.607 1.607 0 01-.971-.64 2.006 2.006 0 01-.368-.924 2.903 2.903 0 01.02-.886c.05-.439.466-1.17.742-1.271-.02.063-.035.112-.053.16-.043.116-.097.227-.13.345a1.901 1.901 0 00-.05.82c.033.212.09.416.204.6.147.236.346.407.62.465.11.023.225.014.338.018a.576.576 0 00.386-.131c.164-.128.282-.292.366-.481.168-.375.24-.777.309-1.179.05-.296.093-.594.133-.893.039-.281.071-.563.104-.845.026-.232.048-.464.074-.696.024-.228.052-.455.076-.683.024-.227.047-.455.069-.683.013-.14.022-.28.034-.42l.037-.417c.022-.25.041-.5.065-.748.008-.082-.02-.132-.09-.177a2.46 2.46 0 01-.492-.418c-.1-.109-.188-.228-.282-.342-.035-.042-.056-.097-.116-.118a2.084 2.084 0 00.275.597c.06.092.131.176.196.265.063.086.182.115.234.226-.028.003-.046.01-.06.006a4.74 4.74 0 01-.22-.057 2.71 2.71 0 01-1.287-.819c-.435-.487-.656-1.076-.71-1.723a5.206 5.206 0 01.014-1.06c.072-.602.22-1.186.45-1.745.155-.376.338-.741.526-1.102.205-.393.466-.75.765-1.076.512-.559 1.104-1.024 1.726-1.448.717-.49 1.478-.898 2.277-1.233C8.244.828 8.767.632 9.31.494c.655-.166 1.31-.33 1.982-.415.229-.03.458-.058.688-.07zm-1.847 22.82c-.07.06-.147.111-.207.18-.238.27-.464.549-.668.869l-.044.108a.177.177 0 00.093-.057c.174-.19.351-.378.519-.574.104-.122.195-.255.288-.386.024-.034.03-.08.046-.12l-.027-.02zm1.65-3.695a5.51 5.51 0 00-.653.593l-.37.386a.963.963 0 01-.377.25 1.372 1.372 0 01-.467.09c-.044 0-.087.006-.151.012.028.058.043.097.064.131.15.242.301.482.45.724.136.22.276.438.399.666.068.125.105.267.156.404.077.027.14-.018.202-.048.29-.135.579-.274.867-.412.213-.101.437-.186.636-.31.347-.215.68-.455 1.018-.685.015-.01.026-.028.042-.046-.023-.019-.038-.037-.056-.044-.287-.111-.527-.3-.77-.482a5.319 5.319 0 01-.506-.42 1.757 1.757 0 01-.41-.653c-.019-.049-.045-.095-.075-.156zm-5.847.264c-.06.096-.097.194-.132.293a3.38 3.38 0 01-.555 1.01c-.2.25-.455.412-.762.493-.23.06-.464.076-.7.07-.048-.002-.097.002-.158.005.016.04.021.066.035.085.1.145.23.246.4.295.157.046.316.034.498.023.181-.037.343-.115.485-.234.238-.199.402-.454.536-.732.175-.363.264-.751.342-1.144.01-.053.008-.11.011-.164zm14.945-4.586c.008.029.016.057.027.107.024.155.051.31.072.464.03.219.067.437.078.657.017.344.027.689-.014 1.033-.037.315-.063.633-.116.946a6.153 6.153 0 01-.46 1.518c-.008.018-.01.039-.02.082.047-.03.077-.042.098-.064.085-.083.17-.167.248-.255.271-.305.458-.66.596-1.043.18-.498.228-1.011.145-1.531-.103-.65-.33-1.263-.597-1.881a9.055 9.055 0 00-.024-.055l-.033.022zM5.797 8.29a.26.26 0 00.018.153c.124.251.25.501.379.75.025.049.066.09.03.163-.284.06-.578.119-.88.255.059.038.097.06.132.087.042.032.112.058.09.12-.01.033-.075.048-.117.072.017.01.043.021.067.036.166.102.33.207.447.368.138.192.229.404.188.644-.079.469-.306.85-.69 1.132-.054.04-.106.083-.161.122a.243.243 0 00-.103.245.77.77 0 00.055.195c.083.196.22.35.375.492.083.076.159.164.222.257a.37.37 0 01.025.377c-.023.05-.05.099-.076.148-.03.06-.028.111.022.162.041.042.08.089.112.138.038.058.078.079.147.05a.486.486 0 01.333-.006c.16.046.302.126.444.21.13.077.264.149.4.219.067.035.14.05.219.026.071-.022.124.01.145.076.02.064-.003.108-.074.139-.07.03-.137.063-.209.088-.1.035-.201.073-.314.077-.013-.107.11-.088.127-.159-.206-.126-.643-.145-.801-.034.063.112.035.21-.096.313-.13-.1-.025-.202.002-.3a.209.209 0 00-.249.17c-.015.101.067.216.178.224.108.007.218-.005.326-.012.06-.005.12-.027.199 0-.103.123-.248.127-.357.19.002.05.07.086.019.131-.053.048-.095-.001-.132-.03-.08-.063-.16-.126-.231-.197a.474.474 0 01-.157-.311.52.52 0 00-.043-.172c-.032-.074-.032-.137.033-.19-.018-.03-.028-.053-.045-.072a1.222 1.222 0 01-.196-.369c-.053-.137-.046-.264.048-.381.024-.03.05-.06.064-.095a.664.664 0 00.047-.168c.017-.165-.064-.287-.182-.387-.186-.156-.36-.322-.46-.551-.005-.011-.024-.017-.037-.026-.011.017-.024.027-.025.038-.019.185-.045.37-.052.557-.014.377.058.743.162 1.104.118.41.289.798.488 1.173.267.502.537 1.002.812 1.5.055.098.13.189.208.27.198.202.452.272.724.273.202 0 .404-.006.605-.026.295-.03.59-.073.884-.113.183-.025.365-.057.548-.08.21-.026.38.073.522.21.16.156.305.327.447.5.22.265.397.56.554.867.05.098.07.1.147.03.13-.121.26-.242.394-.36.067-.059.088-.12.067-.213a3.535 3.535 0 01-.085-.796c.002-.157.006-.314.018-.471.015-.224.03-.45.06-.672a59.114 59.114 0 01.362-2.298c.087-.493.182-.984.268-1.477.06-.347.118-.694.162-1.043.034-.273.055-.55.063-.825.011-.332.003-.665.002-.998 0-.077.004-.155-.01-.23-.028-.142-.01-.155-.162-.19a5.826 5.826 0 00-.607-.107c-.146-.018-.207-.053-.221-.19-.006-.049-.025-.098-.041-.146-.009-.025-.024-.048-.046-.09l-.025.264c-.009.096-.029.116-.127.115-.055 0-.11-.008-.164-.008-.476 0-.952-.008-1.426.032-.095.008-.173-.015-.226-.103-.04-.066-.088-.126-.134-.186-.063-.084-.086-.093-.182-.06-.195.068-.388.138-.582.21a2.71 2.71 0 00-.675.394.986.986 0 01-.323.168c-.033.01-.07.008-.127.013.02-.066.024-.114.047-.15.064-.105.135-.205.205-.306.023-.033.049-.063.073-.095l-.015-.023-.201.037c-.146.04-.296.07-.437.122-.148.053-.266.023-.386-.072a3.623 3.623 0 01-.733-.786l-.093-.132zm8.592 8.963l-.147.09c-.22.134-.44.266-.659.402-.093.058-.184.12-.27.188-.085.07-.124.161-.072.272.047.1.093.2.147.294.047.08.124.138.213.147.11.01.228.012.336-.012.217-.05.372-.205.528-.357a.291.291 0 00.087-.308c-.046-.18-.079-.365-.118-.547-.011-.052-.027-.103-.045-.169zm-.257-2.409c-.12.291-.205.597-.325.91-.151.433-.294.87-.435 1.323.036-.01.054-.01.067-.018.261-.16.522-.324.785-.484.054-.033.071-.078.065-.138-.012-.13-.024-.262-.034-.393l-.068-.886c-.008-.103-.02-.206-.029-.31-.009 0-.017-.002-.026-.004zm3.081-8.13l.099.285c.08.231.159.463.24.714l.58 1.952c.187.63.372 1.262.558 1.893.114.382.235.762.343 1.146.072.257.126.519.186.799.044.206.087.413.127.64.034.106.023.226.077.325l.025-.006-.068-.362c-.038-.206-.077-.412-.113-.638-.015-.07-.029-.141-.046-.211-.095-.396-.177-.796-.29-1.187-.196-.685-.413-1.364-.618-2.046-.165-.549-.322-1.1-.488-1.648-.069-.227-.15-.45-.226-.695l-.117-.336c-.037-.107-.075-.216-.115-.322-.04-.106-.084-.21-.127-.314a7.558 7.558 0 01-.027.01zM6.225 14.304c-.063-.001-.115.014-.134.083a.35.35 0 00.41.012 4.533 4.533 0 00-.276-.095zM5.23 11.98c-.026-.027-.057-.048-.075.002-.012.032-.007.07-.01.113.082-.037.082-.037.085-.115zm.062-1.189a.135.135 0 00-.088.056.197.197 0 00-.025.11c.005.152.01.306.026.457a.751.751 0 00.066.218c.061.136.157.167.288.101.055-.027.06-.054.025-.11a4.52 4.52 0 01-.129-.211c-.015-.068-.066-.131-.033-.207.04-.09-.076-.116-.074-.19V10.874c-.003-.038-.006-.087-.056-.083zm-.017-.968a.867.867 0 00-.467.127c-.076.045-.084.07-.05.158.034.087.07.173.115.254.064.117.09.125.21.077a.657.657 0 01.336-.053c.202.022.357.136.504.264l.092.077c.007-.006.014-.013.022-.018-.019-.105-.035-.226-.149-.264-.157-.053-.324-.075-.508-.117l-.24-.005c.24-.169.452-.044.687.009-.063-.115-.153-.147-.23-.193-.082-.05-.17-.092-.25-.144-.06-.037-.12-.08-.072-.172zm10.233.325c-.23-.01-.427.08-.608.211-.034.026-.06.065-.105.117.087.026.15.046.232.065.044-.015.088-.03.13-.046.306-.114.61-.115.904.031.126.063.237.04.366-.005-.02-.031-.03-.054-.045-.071a.986.986 0 00-.448-.273c-.14-.044-.284-.024-.426-.03zM7.99 6.483a.308.308 0 00.002.133c.08.321.156.643.242.962.104.387.27.75.456 1.103.02.037.061.08.098.087a.404.404 0 00.253-.051l-.472-.84c-.23-.448-.405-.92-.579-1.394zM10.397.497c-.2-.008-.405.004-.603.034-.236.035-.47.087-.7.152-.287.08-.569.18-.852.273-.04.013-.074.038-.11.058.028.014.05.018.07.014.287-.068.58-.085.873-.09.134-.002.269.009.402.025.19.024.382.048.57.09.456.104.874.3 1.265.556.464.306.888.66 1.257 1.078.205.232.395.475.56.739.17.274.315.561.449.856.273.601.456 1.232.6 1.876.04.173.07.348.1.524.017.104.065.167.17.19.122.028.2.105.22.251-.003.102-.06.174-.129.24a1.065 1.065 0 00-.268.358.164.164 0 00.083-.039c.08-.086.162-.172.235-.265a.56.56 0 00.13-.333c.009-.05.022-.1.024-.15.007-.124-.017-.15-.143-.168-.025-.004-.049-.014-.073-.015-.082-.007-.125-.063-.137-.131-.033-.198-.004-.355.247-.408.086-.018.174-.03.26-.042.158-.023.315-.053.473-.067.14-.012.19.033.226.167.008.029.018.057.021.087.019.179-.008.225-.141.288-.027.013-.055.024-.078.042a.148.148 0 00-.051.067c-.039.144.073.382.206.445l.673.32c.023.011.05.015.075.023l.018-.026c-.015-.008-.032-.013-.044-.024a2.27 2.27 0 00-.544-.32 4.898 4.898 0 00-.173-.075.203.203 0 01-.126-.191c-.003-.085.045-.154.128-.187l.059-.025c.099-.044.118-.076.112-.187a.384.384 0 00-.008-.063c-.067-.294-.123-.59-.205-.88a9.478 9.478 0 00-.826-2.036 7.465 7.465 0 00-1.39-1.805 4.536 4.536 0 00-1.177-.824 3.656 3.656 0 00-1.016-.328 6.155 6.155 0 00-.712-.074zm6.719 5.955c.01.014.018.028.038.034l-.022-.044-.016.01zM4.103 3.917a.062.062 0 01-.03.012.455.455 0 01-.04.039c-.01.01-.02.02-.045.04l-.363.354c-.088.085-.17.178-.266.253-.284.22-.425.53-.544.855a.132.132 0 00-.007.071c.013.055.033.108.052.168l.074.026c-.017.056-.03.105-.047.152-.058.164-.118.327-.175.491-.005.015.008.036.019.077.08-.175.158-.33.225-.489.228-.544.484-1.074.819-1.561.09-.133.182-.266.283-.401.004-.006.007-.013.022-.03.001-.016.003-.032.015-.04l.008-.017zm12.976 2.408a.023.023 0 01.009.019.073.073 0 00-.006.01.188.188 0 00.007.02l.018.022c.002-.007.007-.016.005-.021-.003-.01-.012-.018-.02-.038a1.331 1.331 0 01-.013-.012zM4.199 4.48c-.003.004-.008.008-.027.014-.005.013-.011.025-.031.047a2.085 2.085 0 01-.124.167c-.048.07-.116.055-.181.041-.134-.028-.228.016-.287.143-.089.187-.187.37-.273.56-.049.108-.11.216-.118.36.081.003.154.007.228.008h.228a2.563 2.563 0 01-.079.264c-.01.052-.022.103-.033.155l.02.004c.018-.046.037-.092.067-.153.066-.142.13-.285.2-.426.02-.04.034-.1.116-.092 0 .043.004.084 0 .124-.005.045-.017.09-.028.143.141.043.086.174.115.269.102-.022.104-.195.248-.144v.205l.017.002.439-1.059c-.13 0-.246-.02-.358.033-.024.011-.058-.001-.108-.004.075-.15.139-.278.211-.417a.128.128 0 01.025-.036c0-.015-.001-.03.008-.038l.006-.02c-.005.006-.01.011-.028.017-.004.012-.009.024-.026.045a.085.085 0 01-.032.033c-.123.157-.09.164-.258.106-.079-.027-.078-.028-.047-.144.028-.046.056-.093.098-.15 0-.016-.001-.032.007-.042L4.2 4.48zm2.073-.67c-.003.006-.007.011-.027.016-.094.125-.194.246-.28.377-.155.238-.301.481-.451.723-.14.224-.345.368-.575.481-.017.008-.04.006-.079.011.012-.059.016-.109.033-.153a6.076 6.076 0 01.229-.518l-.007-.02a.138.138 0 01-.035.025c-.028.05-.055.1-.093.164-.26.424-.443.817-.442.95.024.004.048.011.073.013.177.013.188.007.26-.165.03-.07.077-.12.147-.15l.175-.07c.044-.018.085-.057.146-.032.003.05-.01.11.014.145.042.062.044.125.047.193.002.049.017.098.026.147.029-.034.039-.065.05-.097.142-.39.277-.782.428-1.17.1-.256.22-.504.33-.756.013-.03.013-.067.03-.092V3.81zm3.987-.34c0 .045.01.084.021.123.042.16.094.318.124.48.024.133.023.27.028.406 0 .033-.019.067-.032.11-.094-.058-.047-.158-.106-.215h-.125c-.015.072-.01.152-.046.2-.066.085-.155.154-.236.227-.043.038-.078.018-.103-.025l-.046-.087c-.065.035-.117.069-.172.093-.116.051-.235.095-.35.147-.085.038-.09.053-.07.147.014.075.034.148.047.223.013.072.05.109.123.124.233.05.462.115.657.265.058-.102.058-.102.168-.151.03-.014.06-.03.092-.042.08-.03.115-.017.15.06.023.048.041.098.066.158.06-.14-.042-.267.017-.416.157.18.24.39.375.567a.235.235 0 00.022-.098c.002-.124 0-.247.002-.371 0-.034.013-.067.02-.1l.032-.003c.11.155.13.354.226.52a3.036 3.036 0 00-.01-.392c-.004-.045 0-.074.05-.088.08.036.116.14.215.158-.03-.275-.423-1.137-.798-1.635-.114-.127-.2-.28-.34-.386zm-2.667.696c-.019.034-.03.05-.037.067-.061.185-.125.37-.18.556-.031.105-.087.169-.195.19-.09.019-.178.052-.268.073-.038.009-.089.015-.118-.003-.024-.016-.025-.069-.036-.106-.064.076-.082.087-.17.047-.133-.062-.262-.135-.393-.201-.048-.025-.093-.063-.17-.03-.043.12-.091.25-.137.382-.099.28-.087.242.095.453.046.048.102.03.154.023.054-.009.106-.03.16-.036.13-.013.26-.08.367-.015.204-.064.387-.122.571-.178.05-.015.089.005.114.054.022.042.034.093.082.121.038-.056-.013-.128.063-.178l.14.241-.042-1.46zm.278.358c-.096-.01-.107.01-.11.108-.002.038-.003.078.002.115.03.2.099.386.174.57.002.006.012.01.022.015l.078-.05c.052.036.081.088.153.088.205-.002.41.014.616.012.099-.001.158.042.205.12.018.03.024.077.088.066l-.08-.394c-.05-.195-.085-.395-.172-.589-.057.057-.114.068-.18.046a.72.72 0 00-.135-.028c-.22-.028-.44-.059-.66-.08zm10.254-1.727c.089.163.155.316.139.491-.016.168.026.342-.044.516-.047-.033-.088-.082-.112-.075-.117.035-.164-.057-.227-.115a4.772 4.772 0 01-.286-.29l-.104-.113a4.856 4.856 0 01-.023.019c.035.046.07.093.11.156.04.064.084.127.122.193.034.058.065.118.031.205-.082-.01-.164-.019-.246-.032-.06-.01-.101 0-.124.07-.031.098-.037.096-.15.09.02.042.036.08.057.116.041.074.03.138-.03.196-.06.06-.118.122-.178.181a.175.175 0 01-.185.046c-.222-.061-.447-.113-.67-.174-.032-.009-.063-.04-.086-.068-.03-.04-.052-.087-.08-.13-.044-.07-.09-.138-.136-.207a.18.18 0 00-.014.105c.012.127.03.253.035.38.005.1-.024.12-.121.104-.104-.017-.206-.04-.31-.058-.064-.012-.131-.028-.202.03l.081.208c.09 0 .166-.01.237.002a.819.819 0 01.458.251c.078.083.154.168.241.26l.018-.005c-.004-.006-.008-.013-.01-.04.014-.056-.062-.118.018-.178.031.03.064.057.088.09.058.078.111.159.169.257l.089.141.024-.013a2093.819 2093.819 0 01-.427-.934c.055.007.083.007.108.016.193.07.385.142.577.216.074.028.147.06.219.094.062.028.112.018.157-.033.05-.056.102-.112.154-.167.05-.051.095-.046.132.014.016.025.026.053.04.08.071.138.143.277.217.433l.159.308.025-.011c-.044-.106-.07-.218-.138-.334-.057-.182-.168-.346-.206-.545.136.034.362.326.567.732l.057.074.018-.011a1.563 1.563 0 01-.052-.127c-.046-.145-.097-.29-.136-.436-.022-.083-.036-.173.022-.26l.109.058-.026-.207.027-.016c.022.02.05.036.065.06.073.108.143.22.215.33.01.016.029.029.043.043-.036-.217-.2-.38-.229-.626l.155.112c.014-.166.012-.319.042-.465.032-.158-.023-.297-.063-.445.024.004.036.006.055.025.092.124.183.249.277.371.02.027.05.047.069.087l.04.063.019-.015a.293.293 0 01-.053-.082 27.922 27.922 0 01-.332-.49c-.221-.311-.363-.467-.485-.521zm-6.57.327c-.003.161.092.275.069.415l-.368.087c.09.139.032.237-.052.331-.05.057-.092.122-.143.178-.037.04-.046.078-.018.126l.16.275c.029.048.072.066.128.064.076-.003.152 0 .228-.001.116-.003.216.022.275.137.006.014.02.024.044.052.004-.059-.003-.098.01-.13.016-.04.04-.099.072-.108.084-.023.173-.024.26-.03.013-.001.027.018.04.029l.071.065c.019-.11-.082-.198-.024-.31l.126.04c-.026-.123-.07-.245-.071-.366 0-.123.051-.243.115-.36.107.062.16.156.234.253.183.265.36.533.494.834.165-.078.27.068.407.088-.003-.106-.133-.441-.197-.492a.142.142 0 00-.102-.028c-.06.011-.119.039-.191.063-.025-.039-.056-.078-.077-.122a3.936 3.936 0 00-.473-.783c-.076-.094-.16-.182-.228-.26l-.391.285c-.049.035-.094.03-.132-.017l-.169-.207c-.025-.03-.053-.059-.097-.108z"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/kimi.svg b/website/assets/agent-icons/kimi.svg
new file mode 100644
index 00000000..83878fa2
--- /dev/null
+++ b/website/assets/agent-icons/kimi.svg
@@ -0,0 +1 @@
+<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Kimi</title><path d="M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z" fill="#1783FF"></path><path d="M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z" fill="#fff"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/kiro-mask.svg b/website/assets/agent-icons/kiro-mask.svg
new file mode 100644
index 00000000..c01b543b
--- /dev/null
+++ b/website/assets/agent-icons/kiro-mask.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg"><path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/><path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/><path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/kiro.svg b/website/assets/agent-icons/kiro.svg
new file mode 100644
index 00000000..5fe3cf68
--- /dev/null
+++ b/website/assets/agent-icons/kiro.svg
@@ -0,0 +1,11 @@
+<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
+<mask id="mask0_1106_4856" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
+<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_1106_4856)">
+<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
+<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
+<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
+</g>
+</svg>
diff --git a/website/assets/agent-icons/opencode.svg b/website/assets/agent-icons/opencode.svg
new file mode 100644
index 00000000..9c4cb89e
--- /dev/null
+++ b/website/assets/agent-icons/opencode.svg
@@ -0,0 +1 @@
+<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>opencode</title><path d="M16 6H8v12h8V6zm4 16H4V2h16v20z"></path></svg> \ No newline at end of file
diff --git a/website/assets/agent-icons/pi.svg b/website/assets/agent-icons/pi.svg
new file mode 100644
index 00000000..df44f948
--- /dev/null
+++ b/website/assets/agent-icons/pi.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800">
+ <path fill="#fff" fill-rule="evenodd" d="
+ M165.29 165.29
+ H517.36
+ V400
+ H400
+ V517.36
+ H282.65
+ V634.72
+ H165.29
+ Z
+ M282.65 282.65
+ V400
+ H400
+ V282.65
+ Z
+ "/>
+ <path fill="#fff" d="M517.36 400 H634.72 V634.72 H517.36 Z"/>
+</svg>
diff --git a/website/astro.config.mjs b/website/astro.config.mjs
index 6783dd5d..72c150e9 100644
--- a/website/astro.config.mjs
+++ b/website/astro.config.mjs
@@ -54,10 +54,6 @@ export default defineConfig({
title: 'herdr',
description: 'Terminal-native agent runtime and multiplexer.',
favicon: '/assets/favicon.png?v=14',
- logo: {
- src: './public/assets/logo.svg',
- alt: 'herdr',
- },
social: [
{
icon: 'github',
diff --git a/website/css/style.css b/website/css/style.css
index d4a46d8e..979d9bb8 100644
--- a/website/css/style.css
+++ b/website/css/style.css
@@ -10,41 +10,285 @@
}
:root {
- --bg: #f7f3ea;
- --bg-soft: #efe8dc;
- --paper: #fffdf8;
- --paper-muted: #f6f0e6;
- --grass: #e3f3d0;
- --wool: #fff8e9;
- --ink: #151a21;
- --ink-soft: #303944;
- --muted: #687381;
- --muted-2: #8a928f;
- --line: #ded6c8;
- --line-strong: #c9bdad;
- --terminal: #151a21;
- --terminal-2: #202731;
- --terminal-3: #2a3340;
- --accent: #1f6f68;
- --accent-dark: #124d49;
- --accent-soft: #d9eee9;
- --blue: #2563eb;
- --blue-soft: #dce7ff;
- --green: #2f8a4f;
- --yellow: #9a6a00;
- --red: #c43f5f;
- --shadow: 0 24px 80px rgb(35 29 21 / 0.12);
- --radius-lg: 28px;
- --radius-md: 18px;
- --radius-sm: 12px;
+ --bg: #f0eee9;
+ --bg-elevated: #f5f3ee;
+ --ink: #1a1a18;
+ --ink-soft: #3a3a36;
+ --muted: #6b6b66;
+ --muted-2: #8a8a84;
+ --line: #d8d6d0;
+ --line-strong: #c4c2bb;
+ --terminal: #0c0c0b;
+ --terminal-2: #131312;
+ --accent: #4a9eff;
+ --accent-soft: color-mix(in srgb, var(--accent) 10%, transparent);
+ --green: #2d9f52;
+ --yellow: #b8860b;
+ --red: #c73e3e;
+ --radius-lg: 6px;
+ --radius-md: 4px;
+ --radius-sm: 2px;
--max: 1160px;
- --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
- monospace;
- --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
- "Segoe UI", sans-serif;
-}
-
-*,
+ --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
+ --body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
+ --term-bg: #1a1d22;
+ --term-sidebar-bg: #15181d;
+ --term-active-bg: #20242c;
+ --term-tab-bg: #20242c;
+ --term-tab-active-bg: #4a9eff;
+ --term-tab-active-text: #0c0c0b;
+ --term-border: #2b3038;
+ --term-text: #c8cdd4;
+ --term-muted: #5a6068;
+ --term-prompt: #4a9eff;
+ --term-cmd: #8ecf7a;
+ --term-str: #e6c060;
+ --term-dim: #6a7078;
+ --term-blue: #4a9eff;
+ --term-green-bright: #7ecf8a;
+ --logo-filter: none;
+ --logo-opacity: 0.72;
+}
+
+[data-palette="herdr"] {
+ --bg: #0c0c0b; --bg-elevated: #131312; --ink: #f0ece0; --ink-soft: #dedad0;
+ --muted: #8a8a80; --muted-2: #5c5c55; --line: #252522; --line-strong: #2e2e2b;
+ --terminal: #0c0c0b; --terminal-2: #131312; --accent: #4a9eff;
+ --green: #52c97a; --yellow: #e6b84a; --red: #e05a5a;
+ --term-bg: #0c0c0b; --term-sidebar-bg: #131312; --term-active-bg: #191918;
+ --term-tab-bg: #191918; --term-tab-active-bg: #4a9eff; --term-tab-active-text: #0c0c0b;
+ --term-border: #252522; --term-text: #dedad0; --term-muted: #5c5c55;
+ --term-prompt: #4a9eff; --term-cmd: #52c97a; --term-str: #e6b84a;
+ --term-dim: #8a8a80; --term-blue: #4a9eff; --term-green-bright: #52c97a;
+}
+[data-palette="taat"] {
+ --bg: #0c0c0b; --bg-elevated: #111110; --ink: #f0ece0; --ink-soft: #e2ddd0;
+ --muted: #6a6a62; --muted-2: #4a4a44; --line: #252522; --line-strong: #2a2a26;
+ --terminal: #0c0c0b; --terminal-2: #111110; --accent: #4a9eff;
+ --green: #4a9e6a; --yellow: #c4a84a; --red: #c46a6a;
+ --term-bg: #0c0c0b; --term-sidebar-bg: #111110; --term-active-bg: #161614;
+ --term-tab-bg: #161614; --term-tab-active-bg: #4a9eff; --term-tab-active-text: #0c0c0b;
+ --term-border: #252522; --term-text: #e2ddd0; --term-muted: #4a4a44;
+ --term-prompt: #4a9eff; --term-cmd: #4a9e6a; --term-str: #c4a84a;
+ --term-dim: #6a6a62; --term-blue: #4a9eff; --term-green-bright: #4a9e6a;
+}
+[data-palette="catppuccin"] {
+ --bg: #11111b; --bg-elevated: #181825; --ink: #f5e0dc; --ink-soft: #cdd6f4;
+ --muted: #9399b2; --muted-2: #6c7086; --line: #313244; --line-strong: #45475a;
+ --terminal: #11111b; --terminal-2: #181825; --accent: #89b4fa;
+ --green: #a6e3a1; --yellow: #f9e2af; --red: #f38ba8;
+ --term-bg: #11111b; --term-sidebar-bg: #181825; --term-active-bg: #1e1e2e;
+ --term-tab-bg: #1e1e2e; --term-tab-active-bg: #89b4fa; --term-tab-active-text: #11111b;
+ --term-border: #313244; --term-text: #cdd6f4; --term-muted: #6c7086;
+ --term-prompt: #89b4fa; --term-cmd: #a6e3a1; --term-str: #f9e2af;
+ --term-dim: #9399b2; --term-blue: #89b4fa; --term-green-bright: #a6e3a1;
+}
+[data-palette="catppuccin-latte"] {
+ --bg: #eff1f5; --bg-elevated: #e6e9ef; --ink: #1e1e2e; --ink-soft: #4c4f69;
+ --muted: #6c6f85; --muted-2: #9ca0b0; --line: #ccd0da; --line-strong: #bcc0cc;
+ --terminal: #eff1f5; --terminal-2: #e6e9ef; --accent: #1e66f5;
+ --green: #40a02b; --yellow: #df8e1d; --red: #d20f39;
+ --term-bg: #eff1f5; --term-sidebar-bg: #e6e9ef; --term-active-bg: #dce0e8;
+ --term-tab-bg: #dce0e8; --term-tab-active-bg: #1e66f5; --term-tab-active-text: #eff1f5;
+ --term-border: #ccd0da; --term-text: #4c4f69; --term-muted: #9ca0b0;
+ --term-prompt: #1e66f5; --term-cmd: #40a02b; --term-str: #df8e1d;
+ --term-dim: #6c6f85; --term-blue: #1e66f5; --term-green-bright: #40a02b;
+}
+[data-palette="terminal"] {
+ --bg: #000000; --bg-elevated: #080808; --ink: #ffffff; --ink-soft: #d8d8d8;
+ --muted: #888888; --muted-2: #555555; --line: #1a1a1a; --line-strong: #2a2a2a;
+ --terminal: #000000; --terminal-2: #080808; --accent: #4a9eff;
+ --green: #55d66b; --yellow: #e6d55a; --red: #ff6b6b;
+ --term-bg: #000000; --term-sidebar-bg: #080808; --term-active-bg: #101010;
+ --term-tab-bg: #101010; --term-tab-active-bg: #4a9eff; --term-tab-active-text: #000000;
+ --term-border: #1a1a1a; --term-text: #d8d8d8; --term-muted: #555555;
+ --term-prompt: #4a9eff; --term-cmd: #55d66b; --term-str: #e6d55a;
+ --term-dim: #888888; --term-blue: #4a9eff; --term-green-bright: #55d66b;
+}
+[data-palette="tokyo-night"] {
+ --bg: #1a1b26; --bg-elevated: #202331; --ink: #d5dcff; --ink-soft: #c0caf5;
+ --muted: #737aa2; --muted-2: #565f89; --line: #2f3549; --line-strong: #414868;
+ --terminal: #1a1b26; --terminal-2: #202331; --accent: #7aa2f7;
+ --green: #9ece6a; --yellow: #e0af68; --red: #f7768e;
+ --term-bg: #1a1b26; --term-sidebar-bg: #202331; --term-active-bg: #24283b;
+ --term-tab-bg: #24283b; --term-tab-active-bg: #7aa2f7; --term-tab-active-text: #1a1b26;
+ --term-border: #2f3549; --term-text: #c0caf5; --term-muted: #565f89;
+ --term-prompt: #7aa2f7; --term-cmd: #9ece6a; --term-str: #e0af68;
+ --term-dim: #737aa2; --term-blue: #7aa2f7; --term-green-bright: #9ece6a;
+}
+[data-palette="tokyo-night-day"] {
+ --bg: #e1e2e7; --bg-elevated: #d8d9e0; --ink: #1f2f66; --ink-soft: #3760bf;
+ --muted: #68709a; --muted-2: #8990b3; --line: #b6bbd1; --line-strong: #a8aecb;
+ --terminal: #e1e2e7; --terminal-2: #d8d9e0; --accent: #2e7de9;
+ --green: #587539; --yellow: #8c6c3e; --red: #f52a65;
+ --term-bg: #e1e2e7; --term-sidebar-bg: #d8d9e0; --term-active-bg: #c4c8da;
+ --term-tab-bg: #c4c8da; --term-tab-active-bg: #2e7de9; --term-tab-active-text: #e1e2e7;
+ --term-border: #b6bbd1; --term-text: #3760bf; --term-muted: #8990b3;
+ --term-prompt: #2e7de9; --term-cmd: #587539; --term-str: #8c6c3e;
+ --term-dim: #68709a; --term-blue: #2e7de9; --term-green-bright: #587539;
+}
+[data-palette="dracula"] {
+ --bg: #282a36; --bg-elevated: #303241; --ink: #ffffff; --ink-soft: #f8f8f2;
+ --muted: #8a91b4; --muted-2: #6272a4; --line: #44475a; --line-strong: #6272a4;
+ --terminal: #282a36; --terminal-2: #303241; --accent: #bd93f9;
+ --green: #50fa7b; --yellow: #f1fa8c; --red: #ff5555;
+ --term-bg: #282a36; --term-sidebar-bg: #303241; --term-active-bg: #383a4a;
+ --term-tab-bg: #383a4a; --term-tab-active-bg: #bd93f9; --term-tab-active-text: #282a36;
+ --term-border: #44475a; --term-text: #f8f8f2; --term-muted: #6272a4;
+ --term-prompt: #bd93f9; --term-cmd: #50fa7b; --term-str: #f1fa8c;
+ --term-dim: #8a91b4; --term-blue: #bd93f9; --term-green-bright: #50fa7b;
+}
+[data-palette="nord"] {
+ --bg: #2e3440; --bg-elevated: #343b49; --ink: #ffffff; --ink-soft: #eceff4;
+ --muted: #8792a8; --muted-2: #5f6a80; --line: #434c5e; --line-strong: #4c566a;
+ --terminal: #2e3440; --terminal-2: #343b49; --accent: #88c0d0;
+ --green: #a3be8c; --yellow: #ebcb8b; --red: #bf616a;
+ --term-bg: #2e3440; --term-sidebar-bg: #343b49; --term-active-bg: #3b4252;
+ --term-tab-bg: #3b4252; --term-tab-active-bg: #88c0d0; --term-tab-active-text: #2e3440;
+ --term-border: #434c5e; --term-text: #eceff4; --term-muted: #5f6a80;
+ --term-prompt: #88c0d0; --term-cmd: #a3be8c; --term-str: #ebcb8b;
+ --term-dim: #8792a8; --term-blue: #88c0d0; --term-green-bright: #a3be8c;
+}
+[data-palette="gruvbox"] {
+ --bg: #282828; --bg-elevated: #32302f; --ink: #fbf1c7; --ink-soft: #ebdbb2;
+ --muted: #a89984; --muted-2: #928374; --line: #504945; --line-strong: #665c54;
+ --terminal: #282828; --terminal-2: #32302f; --accent: #d79921;
+ --green: #b8bb26; --yellow: #fabd2f; --red: #fb4934;
+ --term-bg: #282828; --term-sidebar-bg: #32302f; --term-active-bg: #3c3836;
+ --term-tab-bg: #3c3836; --term-tab-active-bg: #d79921; --term-tab-active-text: #282828;
+ --term-border: #504945; --term-text: #ebdbb2; --term-muted: #928374;
+ --term-prompt: #d79921; --term-cmd: #b8bb26; --term-str: #fabd2f;
+ --term-dim: #a89984; --term-blue: #d79921; --term-green-bright: #b8bb26;
+}
+[data-palette="gruvbox-light"] {
+ --bg: #fbf1c7; --bg-elevated: #f2e5bc; --ink: #282828; --ink-soft: #3c3836;
+ --muted: #665c54; --muted-2: #928374; --line: #d5c4a1; --line-strong: #bdae93;
+ --terminal: #fbf1c7; --terminal-2: #f2e5bc; --accent: #076678;
+ --green: #79740e; --yellow: #b57614; --red: #9d0006;
+ --term-bg: #fbf1c7; --term-sidebar-bg: #f2e5bc; --term-active-bg: #ebdbb2;
+ --term-tab-bg: #ebdbb2; --term-tab-active-bg: #076678; --term-tab-active-text: #fbf1c7;
+ --term-border: #d5c4a1; --term-text: #3c3836; --term-muted: #928374;
+ --term-prompt: #076678; --term-cmd: #79740e; --term-str: #b57614;
+ --term-dim: #665c54; --term-blue: #076678; --term-green-bright: #79740e;
+}
+[data-palette="one-dark"] {
+ --bg: #282c34; --bg-elevated: #2c313a; --ink: #d7dae0; --ink-soft: #abb2bf;
+ --muted: #7f848e; --muted-2: #5c6370; --line: #3e4451; --line-strong: #4b5263;
+ --terminal: #282c34; --terminal-2: #2c313a; --accent: #61afef;
+ --green: #98c379; --yellow: #e5c07b; --red: #e06c75;
+ --term-bg: #282c34; --term-sidebar-bg: #2c313a; --term-active-bg: #323842;
+ --term-tab-bg: #323842; --term-tab-active-bg: #61afef; --term-tab-active-text: #282c34;
+ --term-border: #3e4451; --term-text: #abb2bf; --term-muted: #5c6370;
+ --term-prompt: #61afef; --term-cmd: #98c379; --term-str: #e5c07b;
+ --term-dim: #7f848e; --term-blue: #61afef; --term-green-bright: #98c379;
+}
+[data-palette="one-light"] {
+ --bg: #fafafa; --bg-elevated: #f5f5f6; --ink: #202228; --ink-soft: #383a42;
+ --muted: #686b77; --muted-2: #a0a1a7; --line: #e5e5e6; --line-strong: #d5d7de;
+ --terminal: #fafafa; --terminal-2: #f5f5f6; --accent: #4078f2;
+ --green: #50a14f; --yellow: #c18401; --red: #e45649;
+ --term-bg: #fafafa; --term-sidebar-bg: #f5f5f6; --term-active-bg: #f0f0f1;
+ --term-tab-bg: #f0f0f1; --term-tab-active-bg: #4078f2; --term-tab-active-text: #fafafa;
+ --term-border: #e5e5e6; --term-text: #383a42; --term-muted: #a0a1a7;
+ --term-prompt: #4078f2; --term-cmd: #50a14f; --term-str: #c18401;
+ --term-dim: #686b77; --term-blue: #4078f2; --term-green-bright: #50a14f;
+}
+[data-palette="solarized"] {
+ --bg: #002b36; --bg-elevated: #073642; --ink: #eee8d5; --ink-soft: #93a1a1;
+ --muted: #839496; --muted-2: #586e75; --line: #164a57; --line-strong: #586e75;
+ --terminal: #002b36; --terminal-2: #073642; --accent: #268bd2;
+ --green: #859900; --yellow: #b58900; --red: #dc322f;
+ --term-bg: #002b36; --term-sidebar-bg: #073642; --term-active-bg: #0b3d4a;
+ --term-tab-bg: #0b3d4a; --term-tab-active-bg: #268bd2; --term-tab-active-text: #002b36;
+ --term-border: #164a57; --term-text: #93a1a1; --term-muted: #586e75;
+ --term-prompt: #268bd2; --term-cmd: #859900; --term-str: #b58900;
+ --term-dim: #839496; --term-blue: #268bd2; --term-green-bright: #859900;
+}
+[data-palette="solarized-light"] {
+ --bg: #fdf6e3; --bg-elevated: #eee8d5; --ink: #073642; --ink-soft: #657b83;
+ --muted: #586e75; --muted-2: #93a1a1; --line: #d6ceb8; --line-strong: #93a1a1;
+ --terminal: #fdf6e3; --terminal-2: #eee8d5; --accent: #268bd2;
+ --green: #859900; --yellow: #b58900; --red: #dc322f;
+ --term-bg: #fdf6e3; --term-sidebar-bg: #eee8d5; --term-active-bg: #e6dec8;
+ --term-tab-bg: #e6dec8; --term-tab-active-bg: #268bd2; --term-tab-active-text: #fdf6e3;
+ --term-border: #d6ceb8; --term-text: #657b83; --term-muted: #93a1a1;
+ --term-prompt: #268bd2; --term-cmd: #859900; --term-str: #b58900;
+ --term-dim: #586e75; --term-blue: #268bd2; --term-green-bright: #859900;
+}
+[data-palette="kanagawa"] {
+ --bg: #1f1f28; --bg-elevated: #252532; --ink: #f3ead3; --ink-soft: #dcd7ba;
+ --muted: #8f8d80; --muted-2: #727169; --line: #363646; --line-strong: #54546d;
+ --terminal: #1f1f28; --terminal-2: #252532; --accent: #7e9cd8;
+ --green: #76946a; --yellow: #c0a36e; --red: #c34043;
+ --term-bg: #1f1f28; --term-sidebar-bg: #252532; --term-active-bg: #2a2a37;
+ --term-tab-bg: #2a2a37; --term-tab-active-bg: #7e9cd8; --term-tab-active-text: #1f1f28;
+ --term-border: #363646; --term-text: #dcd7ba; --term-muted: #727169;
+ --term-prompt: #7e9cd8; --term-cmd: #76946a; --term-str: #c0a36e;
+ --term-dim: #8f8d80; --term-blue: #7e9cd8; --term-green-bright: #76946a;
+}
+[data-palette="kanagawa-lotus"] {
+ --bg: #f2ecbc; --bg-elevated: #e5ddb0; --ink: #2a2a37; --ink-soft: #545464;
+ --muted: #77736a; --muted-2: #a09cac; --line: #cbcbd1; --line-strong: #b7b2a0;
+ --terminal: #f2ecbc; --terminal-2: #e5ddb0; --accent: #4d699b;
+ --green: #6f894e; --yellow: #77713f; --red: #c84053;
+ --term-bg: #f2ecbc; --term-sidebar-bg: #e5ddb0; --term-active-bg: #dcd5ac;
+ --term-tab-bg: #dcd5ac; --term-tab-active-bg: #4d699b; --term-tab-active-text: #f2ecbc;
+ --term-border: #cbcbd1; --term-text: #545464; --term-muted: #a09cac;
+ --term-prompt: #4d699b; --term-cmd: #6f894e; --term-str: #77713f;
+ --term-dim: #77736a; --term-blue: #4d699b; --term-green-bright: #6f894e;
+}
+[data-palette="rose-pine"] {
+ --bg: #191724; --bg-elevated: #1f1d2e; --ink: #f4f0ff; --ink-soft: #e0def4;
+ --muted: #908caa; --muted-2: #6e6a86; --line: #312f45; --line-strong: #403d52;
+ --terminal: #191724; --terminal-2: #1f1d2e; --accent: #c4a7e7;
+ --green: #9ccfd8; --yellow: #f6c177; --red: #eb6f92;
+ --term-bg: #191724; --term-sidebar-bg: #1f1d2e; --term-active-bg: #26233a;
+ --term-tab-bg: #26233a; --term-tab-active-bg: #c4a7e7; --term-tab-active-text: #191724;
+ --term-border: #312f45; --term-text: #e0def4; --term-muted: #6e6a86;
+ --term-prompt: #c4a7e7; --term-cmd: #9ccfd8; --term-str: #f6c177;
+ --term-dim: #908caa; --term-blue: #c4a7e7; --term-green-bright: #9ccfd8;
+}
+[data-palette="rose-pine-dawn"] {
+ --bg: #faf4ed; --bg-elevated: #f2e9e1; --ink: #191724; --ink-soft: #464261;
+ --muted: #797593; --muted-2: #9893a5; --line: #e6ded7; --line-strong: #d8d0ca;
+ --terminal: #faf4ed; --terminal-2: #f2e9e1; --accent: #907aa9;
+ --green: #56949f; --yellow: #ea9d34; --red: #b4637a;
+ --term-bg: #faf4ed; --term-sidebar-bg: #f2e9e1; --term-active-bg: #fffaf3;
+ --term-tab-bg: #fffaf3; --term-tab-active-bg: #907aa9; --term-tab-active-text: #faf4ed;
+ --term-border: #e6ded7; --term-text: #464261; --term-muted: #9893a5;
+ --term-prompt: #907aa9; --term-cmd: #56949f; --term-str: #ea9d34;
+ --term-dim: #797593; --term-blue: #907aa9; --term-green-bright: #56949f;
+}
+[data-palette="vesper"] {
+ --bg: #101010; --bg-elevated: #1a1a1a; --ink: #ffffff; --ink-soft: #ffffff;
+ --muted: #7e7e7e; --muted-2: #5c5c5c; --line: #282828; --line-strong: #343434;
+ --terminal: #101010; --terminal-2: #1a1a1a; --accent: #ffc799;
+ --green: #99ffe4; --yellow: #ffc799; --red: #ff8080;
+ --term-bg: #101010; --term-sidebar-bg: #1a1a1a; --term-active-bg: #232323;
+ --term-tab-bg: #232323; --term-tab-active-bg: #ffc799; --term-tab-active-text: #101010;
+ --term-border: #282828; --term-text: #ffffff; --term-muted: #5c5c5c;
+ --term-prompt: #ffc799; --term-cmd: #99ffe4; --term-str: #ffc799;
+ --term-dim: #7e7e7e; --term-blue: #ffc799; --term-green-bright: #99ffe4;
+}
+
+[data-palette="herdr"],
+[data-palette="taat"],
+[data-palette="catppuccin"],
+[data-palette="terminal"],
+[data-palette="tokyo-night"],
+[data-palette="dracula"],
+[data-palette="nord"],
+[data-palette="gruvbox"],
+[data-palette="one-dark"],
+[data-palette="solarized"],
+[data-palette="kanagawa"],
+[data-palette="rose-pine"],
+[data-palette="vesper"] {
+ --logo-filter: invert(1) hue-rotate(180deg) brightness(1.08) contrast(0.9) saturate(1.05);
+ --logo-opacity: 0.72;
+}
+
+*,
*::before,
*::after {
box-sizing: border-box;
@@ -53,8 +297,9 @@
html {
background: var(--bg);
color: var(--ink);
- font-family: var(--sans);
+ font-family: var(--body);
font-size: 16px;
+ line-height: 1.65;
-webkit-font-smoothing: antialiased;
scroll-behavior: smooth;
}
@@ -62,23 +307,7 @@ html {
body {
margin: 0;
min-width: 320px;
- background:
- radial-gradient(circle at 12% 0%, rgb(47 138 79 / 0.17), transparent 30rem),
- radial-gradient(circle at 92% 4rem, rgb(37 99 235 / 0.1), transparent 28rem),
- linear-gradient(180deg, #fbf8f1 0%, var(--bg) 36rem, var(--grass) 100%);
-}
-
-body::before {
- content: "";
- position: fixed;
- inset: 0;
- z-index: -1;
- opacity: 0.35;
- background-image:
- linear-gradient(rgb(21 26 33 / 0.05) 1px, transparent 1px),
- linear-gradient(90deg, rgb(21 26 33 / 0.05) 1px, transparent 1px);
- background-size: 48px 48px;
- mask-image: linear-gradient(180deg, black, transparent 70%);
+ background: var(--bg);
}
img,
@@ -98,7 +327,7 @@ a {
}
a:hover {
- color: var(--accent-dark);
+ color: var(--accent);
}
code,
@@ -116,9 +345,9 @@ samp {
position: sticky;
top: 0;
z-index: 20;
- backdrop-filter: blur(18px);
- background: rgb(247 243 234 / 0.78);
- border-bottom: 1px solid rgb(222 214 200 / 0.7);
+ backdrop-filter: blur(12px);
+ background: color-mix(in srgb, var(--bg) 92%, transparent);
+ border-bottom: 1px solid var(--line);
}
.nav {
@@ -134,36 +363,43 @@ samp {
.brand {
display: inline-flex;
align-items: center;
- gap: 0.65rem;
+ gap: 0.55rem;
font-family: var(--mono);
font-weight: 700;
letter-spacing: -0.04em;
color: var(--ink);
}
-.brand img {
- width: 38px;
- height: 38px;
- border: 1px solid rgb(201 189 173 / 0.76);
- border-radius: 13px;
- background: #d9dad8;
- box-shadow: 0 10px 28px rgb(21 26 33 / 0.13);
-}
-
.brand-logo {
+ position: relative;
+ display: inline-block;
+ width: 32px;
+ height: 32px;
+ flex: 0 0 auto;
+ border: 1px solid var(--line);
+ border-radius: var(--radius-md);
+ background: var(--bg-elevated);
cursor: context-menu;
}
+.brand-logo::before {
+ content: "";
+ position: absolute;
+ inset: 2px;
+ background: var(--ink);
+ -webkit-mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+ mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+}
+
.logo-menu {
position: fixed;
z-index: 1000;
min-width: 170px;
padding: 0.35rem;
border: 1px solid var(--line-strong);
- border-radius: 16px;
- background: rgb(255 253 248 / 0.96);
- box-shadow: 0 22px 70px rgb(21 26 33 / 0.18);
- backdrop-filter: blur(14px);
+ border-radius: var(--radius-md);
+ background: var(--bg-elevated);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
}
.logo-menu a,
@@ -171,13 +407,13 @@ samp {
display: block;
width: 100%;
border: 0;
- border-radius: 11px;
+ border-radius: var(--radius-sm);
background: transparent;
color: var(--ink-soft);
- padding: 0.62rem 0.7rem;
+ padding: 0.5rem 0.65rem;
font: inherit;
- font-size: 0.9rem;
- font-weight: 700;
+ font-size: 0.85rem;
+ font-weight: 600;
text-align: left;
cursor: pointer;
}
@@ -185,7 +421,7 @@ samp {
.logo-menu a:hover,
.logo-menu button:hover {
background: var(--accent-soft);
- color: var(--accent-dark);
+ color: var(--accent);
}
.nav-links {
@@ -193,38 +429,302 @@ samp {
align-items: center;
gap: 1.25rem;
color: var(--muted);
- font-size: 0.92rem;
+ font-size: 0.9rem;
+ font-family: var(--mono);
}
.nav-links a,
.footer a,
.inline-links a {
- transition:
- color 0.16s ease,
- border-color 0.16s ease,
- background 0.16s ease;
+ transition: color 0.15s ease;
}
.nav-cta {
display: inline-flex;
align-items: center;
justify-content: center;
- height: 2.3rem;
- padding: 0 1rem;
+ height: 2.1rem;
+ padding: 0 0.9rem;
border: 1px solid var(--line-strong);
- border-radius: 999px;
- background: rgb(255 253 248 / 0.74);
+ border-radius: var(--radius-md);
+ background: transparent;
color: var(--ink-soft);
- font-size: 0.9rem;
- font-weight: 650;
+ font-family: var(--mono);
+ font-size: 0.82rem;
+ font-weight: 600;
}
.nav-cta:hover {
border-color: var(--accent);
+ color: var(--accent);
+ background: var(--accent-soft);
+}
+
+.theme-hint {
+ position: fixed;
+ bottom: 1rem;
+ left: 1rem;
+ z-index: 30;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.45rem 0.7rem;
+ border: 1px solid var(--line-strong);
+ border-radius: var(--radius-md);
+ background: color-mix(in srgb, var(--bg) 92%, transparent);
+ backdrop-filter: blur(8px);
+ color: var(--muted);
+ font-family: var(--mono);
+ font-size: 0.72rem;
+ font-weight: 600;
+ cursor: pointer;
+ transition: border-color 0.12s ease, color 0.12s ease;
+}
+
+.theme-hint::after {
+ content: "";
+ position: absolute;
+ inset: -4px;
+ border: 1px solid var(--accent);
+ border-radius: calc(var(--radius-md) + 4px);
+ opacity: 0;
+ pointer-events: none;
+}
+
+.theme-hint:not(.is-seen)::after {
+ animation: theme-hint-pulse 3.6s ease-in-out infinite;
+}
+
+.theme-hint:not(.is-seen) .theme-hint-dot {
+ animation: theme-hint-dot 3.6s ease-in-out infinite;
+}
+
+.theme-hint:hover {
+ border-color: var(--accent);
+ color: var(--accent);
background: var(--accent-soft);
}
-.hero,
+.theme-hint-dot {
+ display: inline-block;
+ width: 0.5rem;
+ height: 0.5rem;
+ border-radius: 50%;
+ background: conic-gradient(var(--accent) 25%, var(--green) 25% 50%, var(--yellow) 50% 75%, var(--red) 75%);
+ flex: 0 0 auto;
+}
+
+.theme-hint-key {
+ color: var(--muted-2);
+ font-size: 0.65rem;
+}
+
+.theme-overlay {
+ position: fixed;
+ inset: 0;
+ z-index: 100;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(0, 0, 0, 0.15);
+ backdrop-filter: blur(1px);
+}
+
+.theme-overlay[hidden] {
+ display: none;
+}
+
+.theme-overlay-panel {
+ width: min(480px, calc(100vw - 2rem));
+ max-height: calc(100vh - 4rem);
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ border: 2px solid var(--accent);
+ border-radius: 2px;
+ background: var(--term-bg);
+ font-family: var(--mono);
+ color: var(--term-text);
+ box-shadow: 0 24px 80px rgba(0, 0, 0, 0.4);
+}
+
+.theme-overlay-title {
+ padding: 0.7rem 1rem 0.2rem;
+ color: var(--term-text);
+ font-size: 0.92rem;
+ font-weight: 700;
+ letter-spacing: 0.02em;
+}
+
+.theme-overlay-tabs {
+ display: flex;
+ align-items: center;
+ gap: 0.15rem;
+ padding: 0.2rem 1rem 0.6rem;
+ border-bottom: 1px solid var(--term-border);
+ color: var(--term-muted);
+ font-size: 0.78rem;
+ font-weight: 600;
+}
+
+.theme-overlay-tabs span {
+ padding: 0.2rem 0.5rem;
+ border-radius: 1px;
+}
+
+.theme-overlay-tabs span.active {
+ background: var(--accent);
+ color: var(--term-tab-active-text);
+}
+
+.theme-overlay-list {
+ flex: 1;
+ overflow-y: auto;
+ padding: 0.8rem 0.6rem;
+ scrollbar-width: thin;
+ scrollbar-color: var(--term-border) transparent;
+}
+
+.theme-overlay-list::-webkit-scrollbar {
+ width: 5px;
+}
+
+.theme-overlay-list::-webkit-scrollbar-thumb {
+ background: var(--term-border);
+ border-radius: 1px;
+}
+
+.theme-sep {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.3rem 0.8rem;
+ margin-top: 0.3rem;
+ color: var(--term-muted);
+ font-family: inherit;
+ font-size: 0.72rem;
+ font-weight: 700;
+ text-transform: lowercase;
+ pointer-events: none;
+ user-select: none;
+}
+
+.theme-sep:first-child {
+ margin-top: 0;
+}
+
+.theme-sep::after {
+ content: "";
+ flex: 1;
+ height: 1px;
+ background: var(--term-border);
+ opacity: 0.6;
+}
+
+.theme-overlay-list button {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: 0.35rem 0.8rem;
+ border: 0;
+ border-radius: 1px;
+ background: transparent;
+ color: var(--term-text);
+ font-family: inherit;
+ font-size: 0.82rem;
+ font-weight: 400;
+ text-align: left;
+ cursor: pointer;
+ white-space: nowrap;
+ line-height: 1.5;
+}
+
+.theme-overlay-list button::before {
+ content: "";
+ display: inline-block;
+ width: 0.9rem;
+ flex: 0 0 auto;
+ text-align: center;
+}
+
+.theme-overlay-list button:hover,
+.theme-overlay-list button:focus-visible {
+ outline: none;
+ background: var(--term-active-bg);
+ color: var(--term-text);
+}
+
+.theme-overlay-list button[aria-selected="true"] {
+ background: var(--term-active-bg);
+ color: var(--term-text);
+ font-weight: 700;
+}
+
+.theme-overlay-list button[aria-selected="true"]::before {
+ content: "▸";
+ color: var(--term-text);
+ font-size: 0.7rem;
+}
+
+.theme-overlay-list button[aria-selected="true"]::after {
+ content: "✓";
+ margin-left: auto;
+ color: var(--term-text);
+ font-size: 0.78rem;
+ font-weight: 400;
+}
+
+.theme-overlay-footer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1rem;
+ padding: 0.55rem 1rem;
+ border-top: 1px solid var(--term-border);
+ color: var(--term-muted);
+ font-size: 0.72rem;
+ font-weight: 400;
+}
+
+.theme-overlay-actions {
+ display: inline-flex;
+ align-items: center;
+ gap: 1rem;
+}
+
+.theme-overlay-footer .key {
+ color: var(--term-muted);
+ font-weight: 700;
+}
+
+.theme-apply-btn {
+ display: inline-block;
+ padding: 0.15rem 0.5rem;
+ background: var(--accent);
+ color: var(--term-tab-active-text);
+ font-weight: 700;
+ border-radius: 1px;
+}
+
+.theme-close-btn {
+ border: 0;
+ border-radius: 1px;
+ background: var(--term-active-bg);
+ color: var(--term-muted);
+ padding: 0.15rem 0.5rem;
+ font-family: inherit;
+ font-size: inherit;
+ font-weight: 700;
+ cursor: pointer;
+}
+
+.theme-close-btn:hover,
+.theme-close-btn:focus-visible {
+ outline: none;
+ color: var(--term-text);
+ background: var(--term-border);
+}
+
.section,
.demo-section,
.footer,
@@ -236,41 +736,54 @@ samp {
.hero {
position: relative;
- max-width: 1280px;
display: grid;
- grid-template-columns: minmax(320px, 0.78fr) minmax(560px, 1.22fr);
- gap: 3.25rem;
- align-items: center;
- padding-top: 6.25rem;
- padding-bottom: 3.75rem;
- overflow: hidden;
+ grid-template-columns: 1fr 1fr;
+ min-height: calc(100vh - 56px);
+ border-bottom: 1px solid var(--line);
}
-.hero-copy,
-.hero-product-shot {
+.hero-left {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 4rem 3rem 4rem 2.5rem;
+ border-right: 1px solid var(--line);
+}
+
+.hero-right {
position: relative;
- z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 3rem 2.5rem;
+ background: var(--bg-elevated);
+ overflow: hidden;
}
-.hero-pasture {
+.hero-right::before {
+ content: '';
position: absolute;
inset: 0;
- z-index: 0;
- overflow: hidden;
+ background-image:
+ linear-gradient(var(--line) 1px, transparent 1px),
+ linear-gradient(90deg, var(--line) 1px, transparent 1px);
+ background-size: 32px 32px;
+ opacity: 0.4;
pointer-events: none;
- user-select: none;
}
-.hero-pasture .sheep-el {
+.hero-right::after {
+ content: '';
position: absolute;
- margin: 0;
- font-family: var(--mono);
- font-weight: 700;
- line-height: 1.08;
- white-space: pre;
+ inset: 0;
+ background: radial-gradient(ellipse at center, transparent 35%, var(--bg-elevated) 80%);
pointer-events: none;
- user-select: none;
- will-change: transform;
+}
+
+.hero-copy,
+.hero-product-shot {
+ position: relative;
+ z-index: 1;
}
.eyebrow,
@@ -278,10 +791,11 @@ samp {
margin: 0 0 1rem;
display: inline-flex;
align-items: center;
- gap: 0.55rem;
- color: var(--accent-dark);
- font-size: 0.78rem;
- font-weight: 750;
+ gap: 0.5rem;
+ color: var(--muted);
+ font-family: var(--mono);
+ font-size: 0.72rem;
+ font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
}
@@ -291,25 +805,28 @@ samp {
.final-cta h2 {
margin: 0;
color: var(--ink);
- letter-spacing: -0.065em;
- line-height: 0.97;
+ letter-spacing: -0.04em;
+ line-height: 1.05;
+ font-family: var(--mono);
+ font-weight: 400;
}
.hero h1 {
max-width: 760px;
- font-size: clamp(3.2rem, 6.4vw, 5.7rem);
+ font-size: clamp(2.6rem, 5.5vw, 4.6rem);
}
.hero-lede {
- max-width: 690px;
- margin: 1.5rem 0 0;
+ max-width: 520px;
+ margin: 1.25rem 0 0;
color: var(--ink-soft);
- font-size: clamp(1.08rem, 2vw, 1.35rem);
+ font-size: clamp(1rem, 1.8vw, 1.2rem);
line-height: 1.6;
}
.state {
- font-weight: 750;
+ font-weight: 600;
+ font-family: var(--mono);
}
.state.blocked {
@@ -321,13 +838,13 @@ samp {
}
.state.done {
- color: var(--blue);
+ color: var(--green);
}
.status-dot {
display: inline-block;
- width: 0.58rem;
- height: 0.58rem;
+ width: 0.5rem;
+ height: 0.5rem;
border-radius: 50%;
flex: 0 0 auto;
}
@@ -337,22 +854,22 @@ samp {
}
.dot-working {
- background: #d89a00;
+ background: var(--yellow);
}
.dot-done {
- background: var(--blue);
+ background: var(--green);
}
.dot-idle {
- background: var(--green);
+ background: var(--muted);
}
.hero-actions {
display: flex;
flex-wrap: wrap;
- gap: 0.8rem;
- margin-top: 2rem;
+ gap: 0.6rem;
+ margin-top: 1.75rem;
}
.hero-actions.center {
@@ -363,49 +880,53 @@ samp {
display: inline-flex;
align-items: center;
justify-content: center;
- min-height: 3rem;
- padding: 0.8rem 1.15rem;
- border-radius: 999px;
- font-weight: 750;
+ min-height: 2.6rem;
+ padding: 0.6rem 1.1rem;
+ border-radius: var(--radius-md);
+ font-family: var(--mono);
+ font-weight: 600;
+ font-size: 0.9rem;
border: 1px solid transparent;
+ transition: all 0.12s ease;
}
.button-primary {
background: var(--ink);
- color: #fffdf8;
- box-shadow: 0 18px 46px rgb(21 26 33 / 0.18);
+ color: var(--bg);
}
.button-primary:hover {
- background: var(--accent-dark);
- color: #fffdf8;
+ background: var(--accent);
+ color: #fff;
}
.button-secondary {
- background: rgb(255 253 248 / 0.74);
+ background: transparent;
border-color: var(--line-strong);
color: var(--ink-soft);
}
.button-secondary:hover {
- background: var(--accent-soft);
border-color: var(--accent);
+ color: var(--accent);
+ background: var(--accent-soft);
}
.install-panel {
- max-width: 650px;
- margin-top: 1rem;
+ max-width: 520px;
+ margin-top: 1.25rem;
}
.install-methods {
display: flex;
align-items: center;
flex-wrap: wrap;
- gap: 0.42rem;
- padding-left: 0.15rem;
+ gap: 0.35rem;
+ padding-left: 0.1rem;
color: var(--muted);
- font-size: 0.86rem;
- font-weight: 800;
+ font-family: var(--mono);
+ font-size: 0.78rem;
+ font-weight: 600;
}
.install-method {
@@ -414,7 +935,8 @@ samp {
color: var(--muted);
cursor: pointer;
padding: 0;
- font-weight: 800;
+ font-family: var(--mono);
+ font-weight: 600;
}
.install-method:hover,
@@ -431,13 +953,13 @@ samp {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
- gap: 0.75rem;
- margin-top: 0.65rem;
- padding: 0.82rem 0.9rem;
- border-radius: 999px;
- background: var(--terminal);
- color: #eaf1f8;
- box-shadow: 0 18px 54px rgb(21 26 33 / 0.18);
+ gap: 0.6rem;
+ margin-top: 0.5rem;
+ padding: 0.7rem 0.85rem;
+ border-radius: var(--radius-md);
+ background: var(--term-bg);
+ color: var(--term-text);
+ border: 1px solid var(--term-border);
}
.install-card code {
@@ -446,11 +968,11 @@ samp {
overflow-y: hidden;
white-space: nowrap;
scrollbar-width: none;
- font-size: 0.86rem;
+ font-size: 0.82rem;
}
.install-card code.is-compact {
- font-size: clamp(0.68rem, 1.15vw, 0.8rem);
+ font-size: clamp(0.65rem, 1.1vw, 0.78rem);
}
.install-card code::-webkit-scrollbar {
@@ -458,45 +980,45 @@ samp {
}
.prompt {
- color: #67d7ca;
+ color: var(--accent);
font-family: var(--mono);
font-weight: 700;
}
.install-card button {
- border: 1px solid rgb(255 255 255 / 0.14);
- border-radius: 999px;
- background: rgb(255 255 255 / 0.07);
- color: #d8e3ed;
+ border: 1px solid var(--term-border);
+ border-radius: var(--radius-sm);
+ background: var(--term-active-bg);
+ color: var(--term-text);
cursor: pointer;
- padding: 0.42rem 0.75rem;
- font-size: 0.75rem;
- font-weight: 700;
+ padding: 0.3rem 0.65rem;
+ font-family: var(--mono);
+ font-size: 0.72rem;
+ font-weight: 600;
}
.install-card button:hover {
- background: rgb(255 255 255 / 0.14);
+ background: var(--accent-soft);
+ border-color: var(--accent);
+ color: var(--accent);
}
.hero-note {
- margin: 1rem 0 0;
- color: var(--muted);
- font-size: 0.9rem;
+ margin: 0.75rem 0 0;
+ color: var(--muted-2);
+ font-size: 0.82rem;
+ font-family: var(--mono);
}
.hero-product-shot {
margin: 0;
- transform: rotate(1.1deg);
}
.hero-product-shell {
overflow: hidden;
border-radius: var(--radius-lg);
background: var(--terminal);
- box-shadow:
- var(--shadow),
- 0 0 0 1px rgb(21 26 33 / 0.1),
- 0 36px 120px rgb(21 26 33 / 0.18);
+ border: 1px solid var(--line-strong);
}
.hero-product-shell img {
@@ -506,10 +1028,11 @@ samp {
}
.hero-product-shot figcaption {
- margin-top: 0.85rem;
+ margin-top: 0.6rem;
color: var(--muted);
- font-size: 0.84rem;
+ font-size: 0.78rem;
text-align: center;
+ font-family: var(--mono);
}
.herdr-ui-mock {
@@ -518,31 +1041,29 @@ samp {
overflow: hidden;
aspect-ratio: 2560 / 1401;
border-radius: var(--radius-lg);
- background: #20262f;
- color: #b9c3d0;
+ background: var(--term-bg);
+ color: var(--term-muted);
font-family: var(--mono);
font-size: clamp(0.44rem, 0.72vw, 0.64rem);
line-height: 1.38;
pointer-events: none;
user-select: none;
- box-shadow:
- var(--shadow),
- 0 0 0 1px rgb(21 26 33 / 0.1),
- 0 36px 120px rgb(21 26 33 / 0.18);
+ border: 1px solid var(--term-border);
}
.mock-sidebar {
display: flex;
flex-direction: column;
min-width: 0;
- border-right: 1px solid #2b333f;
- background: #1c222b;
+ border-right: 1px solid var(--term-border);
+ background: var(--term-sidebar-bg);
}
.mock-sidebar-title {
padding: 0.5rem 0.7rem;
- color: #727d8d;
+ color: var(--term-muted);
font-weight: 700;
+ font-family: var(--mono);
}
.mock-space {
@@ -551,18 +1072,18 @@ samp {
gap: 0.45rem;
align-items: start;
padding: 0.55rem 0.7rem;
- color: #aeb8c6;
+ color: var(--term-dim);
}
.mock-space.active {
- background: #282f3a;
+ background: var(--term-active-bg);
}
.mock-space strong,
.mock-agent strong {
display: block;
overflow: hidden;
- color: #c8d1dd;
+ color: var(--term-text);
font-weight: 700;
white-space: nowrap;
text-overflow: ellipsis;
@@ -573,13 +1094,13 @@ samp {
display: block;
overflow: hidden;
margin-top: 0.16rem;
- color: #6e7788;
+ color: var(--term-muted);
white-space: nowrap;
text-overflow: ellipsis;
}
.mock-space.active small {
- color: #d676ff;
+ color: var(--accent);
}
.mock-dot {
@@ -594,18 +1115,26 @@ samp {
min-height: 4rem;
}
+.herdr-ui-mock .mock-sidebar-spacer {
+ flex: 0 0 5.2rem;
+ min-height: 0;
+}
+
.mock-sidebar-row,
.mock-agent-title {
display: flex;
justify-content: space-between;
padding: 0.45rem 0.7rem;
- border-top: 1px solid #2b333f;
- color: #727d8d;
+ color: var(--term-muted);
font-weight: 700;
+ font-family: var(--mono);
+}
+
+.mock-sidebar-row {
+ border-bottom: 1px solid var(--term-border);
}
.mock-agent-title {
- border-top: 0;
text-transform: lowercase;
}
@@ -617,7 +1146,7 @@ samp {
}
.mock-agent > span {
- color: #a6e3a1;
+ color: var(--term-green-bright);
line-height: 1.1;
}
@@ -627,17 +1156,17 @@ samp {
.mock-agent.working > span,
.mock-agent.working small {
- color: #f4c76e;
+ color: var(--term-str);
}
.mock-agent.blocked > span,
.mock-agent.blocked small {
- color: #f07187;
+ color: var(--red);
}
.mock-agent.done > span,
.mock-agent.done small {
- color: #5ec8d8;
+ color: var(--accent);
}
.mock-main {
@@ -650,19 +1179,19 @@ samp {
display: flex;
align-items: center;
height: 1.35rem;
- background: #282f3a;
- color: #6f7888;
+ background: var(--term-tab-bg);
+ color: var(--term-muted);
}
.mock-tabs span {
min-width: 4.6rem;
padding: 0.24rem 0.7rem;
- border-right: 1px solid #252c36;
+ border-right: 1px solid var(--term-border);
}
.mock-tabs span.active {
- background: #66b9f2;
- color: #111820;
+ background: var(--term-tab-active-bg);
+ color: var(--term-tab-active-text);
font-weight: 800;
}
@@ -681,90 +1210,90 @@ samp {
.mock-pane {
min-width: 0;
overflow: hidden;
- border: 1px solid #58616f;
- background: #20262f;
+ border: 1px solid var(--term-border);
+ background: var(--term-bg);
padding: 0.75rem;
}
.mock-pane.focused {
- border: 2px solid #61b7f4;
+ border: 2px solid var(--term-tab-active-bg);
padding: calc(0.75rem - 1px);
}
.mock-prompt {
margin-bottom: 0.25rem;
- color: #67c7ff;
+ color: var(--term-prompt);
font-size: 1.08em;
font-weight: 700;
}
.mock-prompt em {
- color: #8b929f;
+ color: var(--term-dim);
font-style: normal;
font-weight: 500;
}
.mock-pane b {
- color: #d276ff;
+ color: var(--accent);
}
.herdr-ui-mock .cmd {
- color: #9ed987;
+ color: var(--term-cmd);
}
.herdr-ui-mock .str {
- color: #f4c76e;
+ color: var(--term-str);
}
.herdr-ui-mock pre {
margin: 0.55rem 0 0.75rem;
- color: #c3ccd7;
+ color: var(--term-text);
white-space: pre;
}
.herdr-ui-mock .dim,
.herdr-ui-mock .time {
- color: #818b9a;
+ color: var(--term-dim);
}
.herdr-ui-mock .blue,
.herdr-ui-mock .url-line span {
- color: #5ec8ff;
+ color: var(--term-blue);
}
.herdr-ui-mock .green {
- color: #a6e3a1;
+ color: var(--term-green-bright);
}
.herdr-ui-mock .badge {
display: inline-block;
- padding: 0.12rem 0.5rem;
- background: #95d581;
- color: #49605a;
+ padding: 0.1rem 0.45rem;
+ background: var(--term-green-bright);
+ color: var(--term-bg);
font-weight: 800;
}
.cursor {
display: inline-block;
- width: 0.45rem;
- height: 0.95rem;
- background: #c8d1dd;
- vertical-align: -0.16rem;
+ width: 0.4rem;
+ height: 0.85rem;
+ background: var(--term-text);
+ vertical-align: -0.14rem;
}
.demo-section {
padding-top: 0;
- padding-bottom: 6rem;
+ padding-bottom: 5rem;
}
.demo-video {
width: 100%;
overflow: hidden;
aspect-ratio: 16 / 9;
- border-radius: 28px;
+ border-radius: var(--radius-lg);
background: var(--terminal);
object-fit: cover;
- box-shadow: var(--shadow), 0 0 0 1px rgb(21 26 33 / 0.08);
+ border: 1px solid var(--line-strong);
}
.logo-cloud {
@@ -775,57 +1304,66 @@ samp {
}
.logo-cloud-heading {
- margin-bottom: 0.9rem;
+ margin-bottom: 0.8rem;
text-align: center;
}
.logo-cloud-heading .section-kicker {
- margin-bottom: 0.45rem;
+ margin-bottom: 0.4rem;
}
.logo-cloud-heading h2 {
margin: 0;
- color: var(--ink-soft);
- font-size: clamp(1.05rem, 2vw, 1.35rem);
+ color: var(--muted);
+ font-size: clamp(1rem, 2vw, 1.25rem);
line-height: 1.25;
- letter-spacing: -0.035em;
+ letter-spacing: -0.02em;
+ font-family: var(--body);
+ font-weight: 400;
}
.logo-marquee {
position: relative;
overflow: hidden;
- background: radial-gradient(ellipse at center, rgb(201 189 173 / 0.28) 0%, rgb(201 189 173 / 0.16) 36%, transparent 72%);
- -webkit-mask-image: linear-gradient(90deg, transparent, black 7%, black 93%, transparent);
- mask-image: linear-gradient(90deg, transparent, black 7%, black 93%, transparent);
+ border-top: 1px solid var(--line);
+ border-bottom: 1px solid var(--line);
+ padding: 0.5rem 0;
}
.logo-track {
display: flex;
width: max-content;
- animation: logo-marquee 22s linear infinite;
+ animation: logo-marquee 24s linear infinite;
}
.logo-row {
display: flex;
flex: 0 0 auto;
- gap: 0.65rem;
- padding: 0.45rem 0.325rem;
+ gap: 0.5rem;
+ padding: 0.25rem 0.25rem;
}
.logo-card {
- width: 150px;
- height: 58px;
+ width: 140px;
+ height: 50px;
display: grid;
place-items: center;
- padding: 0.5rem 0.85rem;
- color: var(--ink-soft);
+ padding: 0.4rem 0.75rem;
+ color: var(--muted);
}
.logo-card img {
width: auto;
- height: 32px;
- max-width: 116px;
+ height: 26px;
+ max-width: 110px;
object-fit: contain;
+ opacity: var(--logo-opacity);
+ filter: var(--logo-filter);
+ transition: opacity 0.2s, filter 0.2s;
+}
+
+.logo-card img:hover {
+ opacity: 0.95;
}
.logo-card span {
@@ -838,14 +1376,42 @@ samp {
}
}
-.section {
- padding-top: 6rem;
- padding-bottom: 6rem;
- border-top: 1px solid rgb(201 189 173 / 0.68);
+@keyframes theme-hint-pulse {
+ 0%, 70%, 100% {
+ opacity: 0;
+ transform: scale(1);
+ }
+ 78% {
+ opacity: 0.45;
+ transform: scale(1.06);
+ }
+ 88% {
+ opacity: 0;
+ transform: scale(1.13);
+ }
+}
+
+@keyframes theme-hint-dot {
+ 0%, 70%, 100% {
+ transform: translateX(0);
+ }
+ 78% {
+ transform: translateX(2px);
+ }
+ 86% {
+ transform: translateX(0);
+ }
+}
+
+.section,
+.awareness-section {
+ padding-top: 5rem;
+ padding-bottom: 5rem;
+ border-top: 1px solid var(--line);
}
.intro-section {
- padding-top: 3rem;
+ padding-top: 2.5rem;
}
.intro-section .section-heading-wide h2 {
@@ -855,38 +1421,38 @@ samp {
.contrast-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: 0.85rem;
- margin-top: 2rem;
+ gap: 0.75rem;
+ margin-top: 1.75rem;
}
.contrast-grid article {
- min-height: 150px;
- padding: 1.1rem;
+ min-height: 140px;
+ padding: 1rem;
border: 1px solid var(--line);
border-radius: var(--radius-md);
- background: rgb(255 253 248 / 0.64);
- box-shadow: 0 16px 50px rgb(35 29 21 / 0.05);
+ background: transparent;
}
.contrast-grid span {
display: block;
- color: var(--accent-dark);
+ color: var(--accent);
font-family: var(--mono);
- font-size: 0.74rem;
+ font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.contrast-grid p {
- margin: 0.85rem 0 0;
+ margin: 0.7rem 0 0;
color: var(--ink-soft);
- line-height: 1.6;
+ line-height: 1.55;
+ font-size: 0.95rem;
}
.section-heading,
.section-heading-wide {
- margin-bottom: 2rem;
+ margin-bottom: 1.75rem;
}
.section-heading h2,
@@ -894,13 +1460,15 @@ samp {
.feature-copy h2,
.api-copy h2,
.final-cta h2 {
- font-size: clamp(2.1rem, 4.8vw, 4.4rem);
- max-width: 880px;
+ font-size: clamp(1.8rem, 4vw, 3.2rem);
+ max-width: 800px;
+ font-family: var(--mono);
+ font-weight: 400;
}
.section-heading-wide {
display: grid;
- grid-template-columns: minmax(0, 1fr) minmax(300px, 0.52fr);
+ grid-template-columns: minmax(0, 1fr) minmax(280px, 0.48fr);
gap: 2.5rem;
align-items: end;
}
@@ -910,15 +1478,15 @@ samp {
.api-copy p,
.final-cta p {
margin: 0;
- color: var(--ink-soft);
- font-size: 1.05rem;
- line-height: 1.75;
+ color: var(--muted);
+ font-size: 1rem;
+ line-height: 1.65;
}
.pillar-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
- gap: 1rem;
+ gap: 0.75rem;
}
.pillar-card,
@@ -926,44 +1494,46 @@ samp {
.awareness-card {
border: 1px solid var(--line);
border-radius: var(--radius-md);
- background: rgb(255 253 248 / 0.74);
- box-shadow: 0 16px 50px rgb(35 29 21 / 0.06);
+ background: transparent;
}
.pillar-card {
- min-height: 235px;
- padding: 1.35rem;
+ min-height: 220px;
+ padding: 1.25rem;
display: flex;
flex-direction: column;
}
.card-index {
width: fit-content;
- border-radius: 999px;
+ border-radius: var(--radius-sm);
background: var(--accent-soft);
- color: var(--accent-dark);
- padding: 0.26rem 0.55rem;
+ color: var(--accent);
+ padding: 0.2rem 0.5rem;
font-family: var(--mono);
- font-size: 0.72rem;
+ font-size: 0.68rem;
font-weight: 700;
}
.pillar-card h3,
.access-card h3,
.awareness-card h3 {
- margin: 1.25rem 0 0;
+ margin: 1rem 0 0;
color: var(--ink);
- letter-spacing: -0.04em;
- line-height: 1.08;
- font-size: 1.45rem;
+ letter-spacing: -0.02em;
+ line-height: 1.1;
+ font-size: 1.2rem;
+ font-family: var(--mono);
+ font-weight: 400;
}
.pillar-card p,
.access-card p,
.awareness-card p {
- margin: 0.9rem 0 0;
+ margin: 0.75rem 0 0;
color: var(--muted);
- line-height: 1.65;
+ line-height: 1.6;
+ font-size: 0.95rem;
}
.feature-split,
@@ -986,70 +1556,143 @@ samp {
.feature-copy p,
.api-copy p {
- margin-top: 1.3rem;
+ margin-top: 1.1rem;
}
.check-list {
list-style: none;
- margin: 1.4rem 0 0;
+ margin: 1.2rem 0 0;
padding: 0;
display: grid;
- gap: 0.7rem;
- color: var(--ink-soft);
+ gap: 0.6rem;
+ color: var(--muted);
+ font-size: 0.95rem;
}
.check-list li {
position: relative;
- padding-left: 1.55rem;
+ padding-left: 1.4rem;
}
.check-list li::before {
- content: "✓";
+ content: "→";
position: absolute;
left: 0;
color: var(--accent);
- font-weight: 800;
+ font-family: var(--mono);
+ font-weight: 700;
}
-.screenshot-card {
+.feature-mock {
margin: 0;
overflow: hidden;
border-radius: var(--radius-lg);
- background: var(--terminal);
- box-shadow: var(--shadow);
- border: 1px solid rgb(21 26 33 / 0.1);
+ background: var(--term-bg);
+ border: 1px solid var(--term-border);
+ font-family: var(--mono);
+ font-size: 0.72rem;
+ line-height: 1.5;
+ color: var(--term-muted);
+ pointer-events: none;
+ user-select: none;
+ min-height: 380px;
+ display: flex;
+ flex-direction: column;
}
-.screenshot-card img {
- width: 100%;
- height: auto;
+.feature-mock-panes {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
+ gap: 0.45rem;
+ padding: 0.55rem;
+ flex: 1;
+}
+
+.feature-mock .mock-pane {
+ min-width: 0;
+ overflow: hidden;
+ border: 1px solid var(--term-border);
+ background: var(--term-bg);
+ padding: 0.75rem;
+}
+
+.feature-mock .mock-pane.focused {
+ border: 2px solid var(--term-tab-active-bg);
+ padding: calc(0.75rem - 1px);
+}
+
+.feature-mock .mock-prompt {
+ margin-bottom: 0.35rem;
+ color: var(--term-prompt);
+ font-size: 1.05em;
+ font-weight: 700;
+}
+
+.feature-mock .mock-prompt em {
+ color: var(--term-dim);
+ font-style: normal;
+ font-weight: 500;
+}
+
+.feature-mock b {
+ color: var(--accent);
+}
+
+.feature-mock .cmd {
+ color: var(--term-cmd);
+}
+
+.feature-mock .str {
+ color: var(--term-str);
+}
+
+.feature-mock .dim,
+.feature-mock .time {
+ color: var(--term-dim);
+}
+
+.feature-mock .green {
+ color: var(--term-green-bright);
+}
+
+.feature-mock .red {
+ color: var(--red);
+}
+
+.feature-mock .cursor {
+ display: inline-block;
+ width: 0.4rem;
+ height: 0.85rem;
+ background: var(--term-text);
+ vertical-align: -0.14rem;
}
.access-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: 1rem;
+ gap: 0.75rem;
}
.access-card {
position: relative;
display: flex;
flex-direction: column;
- min-height: 360px;
+ min-height: 340px;
overflow: hidden;
- padding: 1.25rem;
+ padding: 1.1rem;
+ background: var(--bg-elevated);
}
.access-card::before {
content: "";
position: absolute;
inset: 0 0 auto;
- height: 4px;
+ height: 3px;
background: var(--accent);
}
.access-card:nth-child(2)::before {
- background: var(--blue);
+ background: var(--green);
}
.access-card:nth-child(3)::before {
@@ -1057,33 +1700,32 @@ samp {
}
.access-label {
- color: var(--accent-dark);
- font-size: 0.72rem;
- font-weight: 800;
+ color: var(--accent);
+ font-family: var(--mono);
+ font-size: 0.68rem;
+ font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.access-card h3 {
- margin-top: 1rem;
+ margin-top: 0.85rem;
}
.access-card p {
- margin-top: 0.85rem;
+ margin-top: 0.7rem;
}
.access-card pre {
margin: auto 0 0;
- padding: 1rem;
+ padding: 0.85rem;
overflow: auto;
- border-radius: 14px;
- background:
- linear-gradient(90deg, rgb(103 215 202 / 0.12), transparent 42%),
- var(--terminal);
- color: #d8e3ed;
- font-size: 0.82rem;
- line-height: 1.55;
- box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.07);
+ border-radius: var(--radius-sm);
+ background: var(--term-bg);
+ color: var(--term-text);
+ font-size: 0.78rem;
+ line-height: 1.5;
+ border: 1px solid var(--term-border);
}
.mobile-proof {
@@ -1098,24 +1740,29 @@ samp {
margin: 0;
max-width: 620px;
color: var(--ink);
- font-size: clamp(2rem, 4vw, 3.5rem);
- letter-spacing: -0.06em;
- line-height: 0.98;
+ font-size: clamp(1.7rem, 3.5vw, 2.8rem);
+ letter-spacing: -0.03em;
+ line-height: 1.05;
+ font-family: var(--mono);
+ font-weight: 400;
}
.mobile-copy p:not(.section-kicker) {
- margin: 1.1rem 0 0;
- max-width: 520px;
- color: var(--ink-soft);
- font-size: 1.02rem;
- line-height: 1.7;
+ margin: 1rem 0 0;
+ max-width: 480px;
+ color: var(--muted);
+ font-size: 0.95rem;
+ line-height: 1.6;
}
.mobile-shots {
display: grid;
- grid-template-columns: repeat(2, minmax(0, 230px));
- justify-content: end;
- gap: 1rem;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 0.85rem;
+ padding: 0.9rem;
+ border: 1px solid var(--line);
+ border-radius: var(--radius-lg);
+ background: var(--bg-elevated);
}
.mobile-proof figure {
@@ -1124,32 +1771,33 @@ samp {
}
.mobile-proof img {
- aspect-ratio: 9 / 18;
width: 100%;
+ height: 340px;
object-fit: cover;
object-position: top;
- border-radius: 24px;
- border: 8px solid var(--terminal);
- box-shadow: 0 24px 70px rgb(21 26 33 / 0.18);
+ border-radius: var(--radius-md);
+ border: 5px solid var(--term-bg);
+ background: var(--term-bg);
}
.mobile-proof figcaption {
- margin-top: 0.7rem;
+ margin-top: 0.5rem;
color: var(--muted);
- font-size: 0.85rem;
+ font-size: 0.78rem;
+ font-family: var(--mono);
}
.mobile-shout {
grid-column: 1 / -1;
- margin: 0.2rem 0 0;
+ margin: 0.1rem 0 0;
color: var(--muted);
- font-size: 0.82rem;
+ font-size: 0.78rem;
text-align: center;
}
.mobile-shout a {
- color: var(--ink-soft);
- border-bottom: 1px solid var(--line-strong);
+ color: var(--muted);
+ border-bottom: 1px solid var(--line);
}
.mobile-shout a:hover {
@@ -1164,131 +1812,182 @@ samp {
.inline-links {
display: flex;
flex-wrap: wrap;
- gap: 0.8rem;
- margin-top: 1.5rem;
+ gap: 0.6rem;
+ margin-top: 1.25rem;
}
.inline-links a {
border: 1px solid var(--line-strong);
- border-radius: 999px;
- padding: 0.62rem 0.85rem;
- color: var(--ink-soft);
- font-weight: 700;
+ border-radius: var(--radius-md);
+ padding: 0.5rem 0.75rem;
+ color: var(--muted);
+ font-family: var(--mono);
+ font-size: 0.82rem;
+ font-weight: 600;
}
.inline-links a:hover {
border-color: var(--accent);
+ color: var(--accent);
background: var(--accent-soft);
}
.code-card {
min-width: 0;
border-radius: var(--radius-lg);
- background: var(--terminal);
- box-shadow: var(--shadow), inset 0 0 0 1px rgb(255 255 255 / 0.08);
+ background: var(--term-bg);
+ border: 1px solid var(--line-strong);
overflow: hidden;
}
.code-card pre {
margin: 0;
- padding: 1.35rem;
- color: #d8e3ed;
+ padding: 1.15rem;
+ color: var(--term-text);
overflow: auto;
font-size: 0.82rem;
- line-height: 1.8;
+ line-height: 1.75;
}
-.comment {
- color: #788697;
+.code-card .comment {
+ color: var(--term-muted);
}
-.cmd {
- color: #67d7ca;
+.code-card .cmd {
+ color: var(--term-prompt);
font-weight: 700;
}
-.flag {
- color: #8eb3ff;
+.code-card .flag {
+ color: var(--term-str);
}
-.str {
- color: #f4cf88;
+.code-card .str {
+ color: var(--term-cmd);
}
.awareness-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 1rem;
+ gap: 0.75rem;
}
.awareness-card {
display: flex;
flex-direction: column;
- padding: 1.25rem;
+ padding: 1.1rem;
}
-.awareness-card img {
+.awareness-mock {
width: 100%;
- height: 320px;
- object-fit: contain;
- border-radius: 16px;
- background: var(--terminal);
- padding: 1rem;
+ height: 240px;
+ margin: 0;
+ overflow: hidden;
+ border-radius: var(--radius-sm);
+ background: var(--term-bg);
+ border: 1px solid var(--term-border);
+ font-family: var(--mono);
+ font-size: 0.68rem;
+ line-height: 1.4;
+ color: var(--term-muted);
+ pointer-events: none;
+ user-select: none;
+}
+
+.awareness-mock .mock-sidebar {
+ height: 100%;
+ border-right: none;
+ background: var(--term-sidebar-bg);
+}
+
+.awareness-mock .mock-sidebar-title {
+ padding: 0.6rem 0.85rem;
+ font-size: 0.72rem;
+}
+
+.awareness-mock .mock-space {
+ padding: 0.5rem 0.85rem;
+ gap: 0.5rem;
+ font-size: 0.72rem;
+}
+
+.awareness-mock .mock-agent {
+ padding: 0.4rem 0.85rem;
+ gap: 0.45rem;
+ font-size: 0.72rem;
+}
+
+.awareness-mock .mock-agent-title {
+ padding: 0.5rem 0.85rem;
+ font-size: 0.72rem;
+}
+
+.awareness-mock .mock-dot {
+ width: 0.42rem;
+ height: 0.42rem;
+ margin-top: 0.2rem;
+}
+
+.awareness-mock .mock-sidebar-spacer {
+ min-height: 2rem;
}
.awareness-card p {
- margin-top: 0.85rem;
+ margin-top: 0.75rem;
}
.state-legend {
display: flex;
flex-wrap: wrap;
- gap: 0.75rem;
+ gap: 0.6rem;
margin-top: 1rem;
}
.state-legend span {
display: inline-flex;
align-items: center;
- gap: 0.5rem;
+ gap: 0.4rem;
border: 1px solid var(--line);
- border-radius: 999px;
- background: rgb(255 253 248 / 0.65);
- color: var(--ink-soft);
- padding: 0.5rem 0.75rem;
- font-size: 0.9rem;
+ border-radius: var(--radius-sm);
+ background: transparent;
+ color: var(--muted);
+ padding: 0.4rem 0.65rem;
+ font-size: 0.82rem;
+ font-family: var(--mono);
}
.table-wrap {
overflow: auto;
border: 1px solid var(--line);
border-radius: var(--radius-md);
- background: rgb(255 253 248 / 0.76);
- box-shadow: 0 16px 50px rgb(35 29 21 / 0.06);
+ background: transparent;
}
table {
width: 100%;
border-collapse: collapse;
- min-width: 720px;
+ min-width: 680px;
}
th,
td {
- padding: 1rem;
+ padding: 0.85rem 1rem;
border-bottom: 1px solid var(--line);
text-align: left;
}
th {
color: var(--muted);
- font-size: 0.75rem;
- letter-spacing: 0.12em;
+ font-size: 0.68rem;
+ font-family: var(--mono);
+ letter-spacing: 0.1em;
text-transform: uppercase;
+ font-weight: 700;
}
td {
color: var(--ink-soft);
+ font-size: 0.92rem;
}
tr:last-child td {
@@ -1297,45 +1996,75 @@ tr:last-child td {
th:last-child,
td:last-child {
- color: var(--accent-dark);
- font-weight: 800;
- background: rgb(217 238 233 / 0.5);
+ color: var(--accent);
+ font-weight: 700;
+ background: var(--accent-soft);
}
.compare-cards {
display: none;
}
-.integration-grid {
+.agent-grid {
display: grid;
- grid-template-columns: repeat(4, minmax(0, 1fr));
- gap: 0.75rem;
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ gap: 0.6rem;
}
-.integration-grid span {
- display: flex;
+.agent-card {
+ display: inline-flex;
align-items: center;
justify-content: center;
- min-height: 4.5rem;
+ gap: 0.5rem;
+ min-height: 3rem;
+ padding: 0.65rem 0.75rem;
border: 1px solid var(--line);
- border-radius: 18px;
- background: rgb(255 253 248 / 0.76);
+ border-radius: var(--radius-md);
+ background: var(--bg-elevated);
color: var(--ink-soft);
- font-weight: 750;
- box-shadow: 0 12px 36px rgb(35 29 21 / 0.05);
+ font-family: var(--mono);
+ font-size: 0.78rem;
+ font-weight: 600;
+ line-height: 1;
+ text-align: center;
+ white-space: nowrap;
}
+.agent-card .agent-icon {
+ display: inline-block;
+ width: 1.15rem;
+ height: 1.15rem;
+ flex: 0 0 auto;
+ background-color: currentColor;
+ opacity: 0.9;
+ -webkit-mask-image: var(--agent-icon);
+ -webkit-mask-size: contain;
+ -webkit-mask-repeat: no-repeat;
+ -webkit-mask-position: center;
+ mask-image: var(--agent-icon);
+ mask-size: contain;
+ mask-repeat: no-repeat;
+ mask-position: center;
+}
+
+.agent-more {
+ color: var(--accent);
+ background: var(--accent-soft);
+ border-color: color-mix(in srgb, var(--accent) 32%, var(--line));
+}
+
+
.integration-note {
- max-width: 720px;
- margin: 1.3rem 0 0;
- color: var(--ink-soft);
- font-size: 1.02rem;
- line-height: 1.7;
+ max-width: 680px;
+ margin: 1.1rem 0 0;
+ color: var(--muted);
+ font-size: 0.95rem;
+ line-height: 1.6;
}
.integration-note a {
- color: var(--accent-dark);
- font-weight: 800;
+ color: var(--accent);
+ font-weight: 700;
text-decoration: underline;
text-decoration-thickness: 0.08em;
text-underline-offset: 0.18em;
@@ -1343,17 +2072,13 @@ td:last-child {
.final-cta {
margin-top: 2rem;
- margin-bottom: 5rem;
- padding-top: 4rem;
- padding-bottom: 4rem;
+ margin-bottom: 4rem;
+ padding-top: 3.5rem;
+ padding-bottom: 3.5rem;
text-align: center;
- border-radius: 36px;
- background:
- radial-gradient(circle at 18% 20%, rgb(103 215 202 / 0.2), transparent 22rem),
- radial-gradient(circle at 82% 0%, rgb(37 99 235 / 0.16), transparent 20rem),
- var(--paper);
+ border-radius: var(--radius-lg);
+ background: transparent;
border: 1px solid var(--line);
- box-shadow: var(--shadow);
}
.final-cta .section-kicker {
@@ -1362,23 +2087,25 @@ td:last-child {
.final-cta h2 {
margin-inline: auto;
- max-width: 760px;
+ max-width: 680px;
}
.final-cta p {
- max-width: 620px;
- margin: 1.2rem auto 0;
+ max-width: 560px;
+ margin: 1rem auto 0;
}
.footer {
- padding-top: 2rem;
- padding-bottom: 2rem;
+ padding-top: 1.75rem;
+ padding-bottom: 1.75rem;
border-top: 1px solid var(--line);
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
color: var(--muted);
+ font-size: 0.85rem;
+ font-family: var(--mono);
}
.footer div {
@@ -1386,74 +2113,80 @@ td:last-child {
flex-wrap: wrap;
gap: 1rem;
justify-content: flex-end;
- font-size: 0.9rem;
}
.compare-hero {
- grid-template-columns: minmax(360px, 0.95fr) minmax(360px, 0.75fr);
+ max-width: var(--max);
+ min-height: auto;
+ margin: 0 auto;
+ padding: 5rem 1.25rem;
+ grid-template-columns: minmax(0, 0.95fr) minmax(320px, 0.75fr);
+ gap: 2rem;
align-items: center;
+ border-bottom: 0;
+}
+
+.compare-hero .hero-copy {
+ max-width: 640px;
+}
+
+.compare-hero h1 {
+ font-size: clamp(2.4rem, 5vw, 4rem);
}
.compare-claim-card {
- border: 1px solid var(--line-strong);
+ border: 1px solid var(--line);
border-radius: var(--radius-lg);
- background:
- radial-gradient(circle at 22% 0%, rgb(103 215 202 / 0.2), transparent 18rem),
- rgb(255 253 248 / 0.82);
- box-shadow: var(--shadow);
- padding: clamp(1.35rem, 3vw, 2rem);
+ background: transparent;
+ padding: clamp(1.25rem, 3vw, 1.75rem);
}
.compare-claim-card h2 {
margin: 0;
color: var(--ink);
- font-size: clamp(1.85rem, 3vw, 2.85rem);
- letter-spacing: -0.055em;
- line-height: 1.04;
+ font-size: clamp(1.6rem, 3vw, 2.4rem);
+ letter-spacing: -0.03em;
+ line-height: 1.1;
+ font-family: var(--mono);
+ font-weight: 400;
}
.compare-checks {
list-style: none;
- margin: 1.25rem 0 0;
+ margin: 1.1rem 0 0;
padding: 0;
display: grid;
- gap: 0.65rem;
+ gap: 0.55rem;
}
.compare-checks li {
position: relative;
- padding-left: 1.65rem;
- color: var(--ink-soft);
- line-height: 1.5;
+ padding-left: 1.4rem;
+ color: var(--muted);
+ line-height: 1.45;
+ font-size: 0.92rem;
}
.compare-checks li::before {
- content: "✓";
+ content: "→";
position: absolute;
left: 0;
- top: 0.05rem;
- display: inline-grid;
- place-items: center;
- width: 1.05rem;
- height: 1.05rem;
- border-radius: 999px;
- background: var(--accent-soft);
- color: var(--accent-dark);
- font-size: 0.72rem;
- font-weight: 900;
+ color: var(--accent);
+ font-family: var(--mono);
+ font-weight: 700;
}
.compare-section .section-heading-wide a,
.compare-stack-section .section-heading-wide a {
- color: var(--accent-dark);
- font-weight: 800;
+ color: var(--accent);
+ font-weight: 700;
text-decoration: underline;
text-decoration-thickness: 0.08em;
text-underline-offset: 0.18em;
}
.comparison-matrix table {
- min-width: 980px;
+ min-width: 900px;
}
.comparison-matrix th:last-child,
@@ -1465,134 +2198,135 @@ td:last-child {
.comparison-matrix th:nth-child(2),
.comparison-matrix td:nth-child(2) {
- color: var(--accent-dark);
- font-weight: 850;
- background: rgb(217 238 233 / 0.54);
+ color: var(--accent);
+ font-weight: 700;
+ background: var(--accent-soft);
}
.comparison-matrix td:first-child {
color: var(--ink);
- font-weight: 760;
+ font-weight: 600;
}
.differ-grid {
display: grid;
- grid-template-columns: minmax(320px, 0.88fr) minmax(0, 1.12fr);
- gap: 1rem;
+ grid-template-columns: minmax(300px, 0.88fr) minmax(0, 1.12fr);
+ gap: 0.75rem;
align-items: stretch;
}
.intersection-card,
.differ-list article {
border: 1px solid var(--line);
- background: rgb(255 253 248 / 0.74);
- box-shadow: 0 16px 50px rgb(35 29 21 / 0.06);
+ background: transparent;
}
.intersection-card {
- border-color: var(--line-strong);
border-radius: var(--radius-lg);
- padding: clamp(1.4rem, 3vw, 2rem);
- background:
- radial-gradient(circle at 18% 0%, rgb(103 215 202 / 0.2), transparent 18rem),
- radial-gradient(circle at 100% 100%, rgb(37 99 235 / 0.1), transparent 16rem),
- rgb(255 253 248 / 0.84);
+ padding: clamp(1.25rem, 3vw, 1.75rem);
}
.intersection-card h3 {
- margin: 1.2rem 0 0;
+ margin: 1rem 0 0;
color: var(--ink);
- font-size: clamp(2rem, 4vw, 3.35rem);
- letter-spacing: -0.06em;
- line-height: 1;
+ font-size: clamp(1.6rem, 3.5vw, 2.6rem);
+ letter-spacing: -0.03em;
+ line-height: 1.1;
+ font-family: var(--mono);
+ font-weight: 400;
}
.intersection-card p {
- margin: 1.15rem 0 0;
- color: var(--ink-soft);
- font-size: 1.05rem;
- line-height: 1.75;
+ margin: 1rem 0 0;
+ color: var(--muted);
+ font-size: 0.95rem;
+ line-height: 1.65;
}
.intersection-pills {
display: flex;
flex-wrap: wrap;
- gap: 0.55rem;
- margin-top: 1.45rem;
+ gap: 0.45rem;
+ margin-top: 1.2rem;
}
.intersection-pills span {
- border: 1px solid rgb(31 111 104 / 0.18);
- border-radius: 999px;
- background: var(--accent-soft);
- color: var(--accent-dark);
- padding: 0.45rem 0.65rem;
- font-size: 0.78rem;
- font-weight: 800;
+ border: 1px solid var(--line);
+ border-radius: var(--radius-sm);
+ background: transparent;
+ color: var(--accent);
+ padding: 0.3rem 0.55rem;
+ font-size: 0.72rem;
+ font-family: var(--mono);
+ font-weight: 700;
}
.differ-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 1rem;
+ gap: 0.75rem;
}
.differ-list article {
- min-height: 210px;
+ min-height: 190px;
border-radius: var(--radius-md);
- padding: 1.2rem;
+ padding: 1.1rem;
}
.differ-list article span {
display: block;
- color: var(--accent-dark);
+ color: var(--accent);
font-family: var(--mono);
- font-size: 0.72rem;
- font-weight: 750;
+ font-size: 0.68rem;
+ font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.differ-list article h3 {
- margin: 1rem 0 0;
+ margin: 0.85rem 0 0;
color: var(--ink);
- font-size: 1.32rem;
- letter-spacing: -0.04em;
- line-height: 1.1;
+ font-size: 1.15rem;
+ letter-spacing: -0.02em;
+ line-height: 1.15;
+ font-family: var(--mono);
+ font-weight: 400;
}
.differ-list article p {
- margin: 0.85rem 0 0;
+ margin: 0.7rem 0 0;
color: var(--muted);
- line-height: 1.65;
+ line-height: 1.6;
+ font-size: 0.92rem;
}
.one-liner-list {
display: grid;
- gap: 0.75rem;
+ gap: 0.6rem;
}
.one-liner-list article {
display: grid;
- grid-template-columns: minmax(180px, 0.34fr) minmax(0, 1fr);
+ grid-template-columns: minmax(160px, 0.32fr) minmax(0, 1fr);
gap: 1rem;
align-items: start;
- padding: 1rem 1.1rem;
+ padding: 0.85rem 1rem;
border: 1px solid var(--line);
- border-radius: 18px;
- background: rgb(255 253 248 / 0.72);
- box-shadow: 0 12px 34px rgb(35 29 21 / 0.04);
+ border-radius: var(--radius-md);
+ background: transparent;
}
.one-liner-list strong {
- color: var(--accent-dark);
+ color: var(--accent);
font-family: var(--mono);
- font-size: 0.86rem;
+ font-size: 0.8rem;
+ font-weight: 700;
}
.one-liner-list span {
- color: var(--ink-soft);
- line-height: 1.65;
+ color: var(--muted);
+ line-height: 1.55;
+ font-size: 0.92rem;
}
.compare-final-cta {
@@ -1600,20 +2334,28 @@ td:last-child {
}
@media (max-width: 980px) {
- .hero,
- .feature-split,
- .api-section,
- .section-heading-wide {
+ .hero {
grid-template-columns: 1fr;
}
- .hero {
- padding-top: 4.5rem;
+ .hero-left {
+ padding: 3rem 2rem;
+ border-right: none;
+ border-bottom: 1px solid var(--line);
+ }
+
+ .hero-right {
+ padding: 3rem 2rem;
}
.hero-product-shot {
- transform: none;
- max-width: 760px;
+ max-width: 720px;
+ }
+
+ .feature-split,
+ .api-section,
+ .section-heading-wide {
+ grid-template-columns: 1fr;
}
.pillar-grid,
@@ -1621,9 +2363,16 @@ td:last-child {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
- .access-grid,
- .integration-grid {
- grid-template-columns: repeat(2, minmax(0, 1fr));
+ .access-grid {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .agent-grid {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .agent-card:nth-child(8) {
+ grid-column-start: auto;
}
.mobile-proof,
@@ -1632,7 +2381,8 @@ td:last-child {
}
.mobile-shots {
- justify-content: center;
+ max-width: 720px;
+ margin-inline: auto;
}
.intersection-card {
@@ -1649,8 +2399,8 @@ td:last-child {
display: none;
}
- .hero,
.section,
+ .awareness-section,
.demo-section,
.logo-cloud,
.footer,
@@ -1658,22 +2408,28 @@ td:last-child {
padding-inline: 1rem;
}
+ .hero-left {
+ padding: 2.5rem 1.25rem;
+ }
+
+ .hero-right {
+ padding: 2rem 1.25rem;
+ }
+
.hero {
- padding-top: 3.25rem;
- padding-bottom: 2.5rem;
- gap: 2rem;
+ min-height: auto;
}
.hero h1 {
- font-size: clamp(2.65rem, 13.2vw, 3.65rem);
+ font-size: clamp(2.2rem, 11vw, 3rem);
}
.hero-lede {
- font-size: 1rem;
+ font-size: 0.95rem;
}
.install-card {
- border-radius: 18px;
+ border-radius: var(--radius-md);
grid-template-columns: auto minmax(0, 1fr);
}
@@ -1683,30 +2439,31 @@ td:last-child {
}
.demo-section {
- padding-bottom: 4rem;
+ padding-bottom: 3rem;
}
.demo-video {
- border-radius: 18px;
+ border-radius: var(--radius-md);
}
.logo-cloud {
- padding-bottom: 3rem;
+ padding-bottom: 2.5rem;
}
.logo-card {
- width: 132px;
- height: 54px;
+ width: 120px;
+ height: 46px;
}
.logo-card img {
- height: 28px;
- max-width: 100px;
+ height: 24px;
+ max-width: 92px;
}
- .section {
- padding-top: 4rem;
- padding-bottom: 4rem;
+ .section,
+ .awareness-section {
+ padding-top: 3rem;
+ padding-bottom: 3rem;
}
.section-heading h2,
@@ -1714,72 +2471,77 @@ td:last-child {
.feature-copy h2,
.api-copy h2,
.final-cta h2 {
- font-size: clamp(2rem, 11vw, 3rem);
+ font-size: clamp(1.6rem, 10vw, 2.4rem);
}
.pillar-grid,
.contrast-grid,
.access-grid,
.awareness-grid,
- .integration-grid,
.differ-list {
grid-template-columns: 1fr;
}
+ .agent-grid {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
.compare-section .table-wrap {
display: none;
}
.compare-cards {
display: grid;
- gap: 0.75rem;
+ gap: 0.6rem;
}
.compare-cards article {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: 0.5rem;
- padding: 1rem;
+ gap: 0.4rem;
+ padding: 0.85rem;
border: 1px solid var(--line);
border-radius: var(--radius-md);
- background: rgb(255 253 248 / 0.76);
- box-shadow: 0 12px 36px rgb(35 29 21 / 0.05);
+ background: transparent;
}
.compare-cards h3 {
grid-column: 1 / -1;
- margin: 0 0 0.25rem;
+ margin: 0 0 0.2rem;
color: var(--ink);
- font-size: 1.05rem;
- letter-spacing: -0.04em;
+ font-size: 0.95rem;
+ letter-spacing: -0.02em;
+ font-family: var(--mono);
}
.compare-cards span {
display: grid;
- gap: 0.25rem;
- padding: 0.65rem 0.55rem;
- border-radius: 14px;
- background: var(--paper-muted);
+ gap: 0.2rem;
+ padding: 0.55rem 0.45rem;
+ border-radius: var(--radius-sm);
+ background: var(--bg-elevated);
color: var(--muted);
- font-size: 0.72rem;
- font-weight: 800;
+ font-size: 0.65rem;
+ font-weight: 700;
text-align: center;
text-transform: uppercase;
+ font-family: var(--mono);
}
.compare-cards b {
color: var(--ink-soft);
- font-size: 0.9rem;
+ font-size: 0.82rem;
text-transform: none;
+ font-weight: 600;
}
.compare-cards .herdr {
background: var(--accent-soft);
- color: var(--accent-dark);
+ color: var(--accent);
}
.compare-cards .herdr b {
- color: var(--accent-dark);
+ color: var(--accent);
}
.one-liner-list article {
@@ -1791,11 +2553,7 @@ td:last-child {
}
.pillar-card p {
- margin-top: 1rem;
- }
-
- .screenshot-card img {
- height: auto;
+ margin-top: 0.85rem;
}
.access-card {
@@ -1803,12 +2561,16 @@ td:last-child {
}
.mobile-shots {
- grid-template-columns: minmax(0, 230px);
+ grid-template-columns: 1fr;
+ }
+
+ .mobile-proof img {
+ height: 300px;
}
.final-cta {
- border-radius: 24px;
- margin-bottom: 3rem;
+ border-radius: var(--radius-md);
+ margin-bottom: 2.5rem;
}
.footer {
@@ -1830,35 +2592,103 @@ td:last-child {
width: 100%;
}
+ .hero-right {
+ order: -1;
+ display: flex;
+ padding: 1.25rem 1rem 1.5rem;
+ border-bottom: 1px solid var(--line);
+ border-top: 0;
+ }
+
+ .hero-left {
+ border-bottom: none;
+ }
+
.hero-product-shot {
- display: none;
+ width: 100%;
+ }
+
+ .hero-product-shot figcaption {
+ display: block;
+ margin-top: 0.45rem;
+ font-size: 0.68rem;
+ }
+
+ .herdr-ui-mock {
+ grid-template-columns: 96px minmax(0, 1fr);
+ aspect-ratio: 16 / 10;
+ font-size: 0.38rem;
+ border-radius: var(--radius-md);
+ }
+
+ .mock-sidebar-title,
+ .mock-sidebar-row,
+ .mock-agent-title {
+ padding: 0.28rem 0.45rem;
+ }
+
+ .mock-space {
+ gap: 0.3rem;
+ padding: 0.3rem 0.45rem;
+ }
+
+ .mock-agent {
+ gap: 0.3rem;
+ padding: 0.24rem 0.45rem;
}
- .hero-pasture {
+ .herdr-ui-mock .mock-sidebar-spacer {
+ flex: 0 0 0.35rem;
+ }
+
+ .mock-tabs {
+ height: 1.05rem;
+ }
+
+ .mock-tabs span {
+ min-width: 2.8rem;
+ padding: 0.15rem 0.4rem;
+ }
+
+ .mock-panes {
+ grid-template-columns: 1fr;
+ gap: 0;
+ padding: 0.35rem;
+ }
+
+ .mock-pane {
+ padding: 0.45rem;
+ }
+
+ .mock-pane.focused {
+ padding: calc(0.45rem - 1px);
+ }
+
+ .mock-pane:nth-child(2) {
display: none;
}
- .hero-product-shot figcaption {
- font-size: 0.78rem;
+ .mock-pane pre {
+ margin: 0.35rem 0 0.45rem;
}
.logo-card {
- width: 118px;
+ width: 110px;
}
.logo-card img {
- height: 26px;
- max-width: 92px;
+ height: 22px;
+ max-width: 88px;
}
.mobile-proof,
.mobile-shots {
- gap: 0.65rem;
+ gap: 0.55rem;
}
.mobile-proof img {
- border-width: 5px;
- border-radius: 18px;
+ height: 260px;
+ border-width: 4px;
}
}
@@ -1870,4 +2700,8 @@ td:last-child {
animation-duration: 0.001ms !important;
animation-iteration-count: 1 !important;
}
+
+ .theme-hint::after {
+ display: none;
+ }
}
diff --git a/website/index.html b/website/index.html
index 79e350fe..53ca28aa 100644
--- a/website/index.html
+++ b/website/index.html
@@ -8,7 +8,7 @@
name="description"
content="Terminal-native agent runtime and multiplexer. Run AI coding agents in real panes, detach and reattach, SSH in, see state, and orchestrate through the CLI/socket API."
/>
- <meta name="theme-color" content="#f7f3ea" />
+ <meta name="theme-color" content="#f0eee9" />
<link rel="canonical" href="https://herdr.dev/" />
<meta property="og:type" content="website" />
@@ -48,13 +48,22 @@
type="font/woff2"
crossorigin
/>
- <link rel="stylesheet" href="/css/style.css?v=19" />
+ <script>
+ (function () {
+ var saved = localStorage.getItem("herdr-palette");
+ var system = window.matchMedia("(prefers-color-scheme: dark)").matches
+ ? "tokyo-night"
+ : "tokyo-night-day";
+ document.documentElement.setAttribute("data-palette", saved || system);
+ })();
+ </script>
+ <link rel="stylesheet" href="/css/style.css?v=20" />
</head>
<body>
<header class="site-header">
<nav class="nav" aria-label="Primary navigation">
<a class="brand" href="/" aria-label="Herdr home">
- <img class="brand-logo" src="/assets/logo.svg" alt="" />
+ <span class="brand-logo" aria-hidden="true"></span>
<span>herdr</span>
</a>
<div class="nav-links">
@@ -64,14 +73,16 @@
<a href="/docs/socket-api/">API</a>
<a href="https://github.com/ogulcancelik/herdr">GitHub</a>
</div>
- <a class="nav-cta" href="/docs/install/">Install</a>
+ <div class="nav-tools">
+ <a class="nav-cta" href="/docs/install/">Install</a>
+ </div>
</nav>
</header>
<main>
<section class="hero" id="hero">
- <div class="hero-pasture" aria-hidden="true"></div>
- <div class="hero-copy">
+ <div class="hero-left">
+ <div class="hero-copy">
<p class="eyebrow">
<span class="status-dot dot-done"></span>
Terminal-native agent runtime
@@ -133,7 +144,9 @@
binary · no Electron
</p>
</div>
+ </div>
+ <div class="hero-right">
<figure class="hero-product-shot">
<div
class="herdr-ui-mock"
@@ -158,7 +171,7 @@
<div class="mock-sidebar-row"><span>new</span><span>menu</span></div>
<div class="mock-agent-title"><span>agents</span><span>all</span></div>
<div class="mock-agent"><span>✓</span><div><strong>doc</strong><small>idle · pi</small></div></div>
- <div class="mock-agent working"><span>⠴</span><div><strong>custom-row</strong><small>working · pi</small></div></div>
+ <div class="mock-agent working"><span class="braille-spinner"></span><div><strong>custom-row</strong><small>working · pi</small></div></div>
<div class="mock-agent blocked"><span>◉</span><div><strong>llm-proxy</strong><small>blocked · claude</small></div></div>
<div class="mock-agent done"><span>●</span><div><strong>qmp</strong><small>done · codex</small></div></div>
</aside>
@@ -202,20 +215,7 @@
The whole herd in one terminal.
</figcaption>
</figure>
- </section>
-
- <section class="demo-section" aria-label="Herdr demo">
- <video
- class="demo-video"
- autoplay
- muted
- loop
- playsinline
- preload="auto"
- poster="/assets/hero-session.png"
- >
- <source src="/assets/demo-v2.mp4" type="video/mp4" />
- </video>
+ </div>
</section>
<section class="logo-cloud" aria-labelledby="logo-cloud-title">
@@ -425,12 +425,33 @@
<li>Stay keyboard-first, or disable mouse input entirely.</li>
</ul>
</div>
- <figure class="screenshot-card">
- <img
- src="/assets/terminal-panes.png"
- alt="Herdr showing real terminal panes side by side"
- loading="lazy"
- />
+ <figure class="feature-mock" role="img" aria-label="Herdr showing split terminal panes">
+ <div class="mock-panes feature-mock-panes">
+ <div class="mock-pane focused">
+ <div class="mock-prompt"><span>~/Projects/herdr</span> <em>master</em></div>
+ <div><b>❯</b> <span class="cmd">just</span> <span class="str">test</span></div>
+ <div class="dim">cargo nextest run</div>
+ <div><span class="time">02:14:22</span> <span class="green">PASS</span> app::state::tests</div>
+ <div><span class="time">02:14:23</span> <span class="green">PASS</span> platform::pty::tests</div>
+ <div><span class="time">02:14:24</span> <span class="green">PASS</span> protocol::wire::tests</div>
+ <br />
+ <div><span class="green">3 passed</span> · 0 failed · 0.8s</div>
+ <div class="mock-prompt"><span>~/Projects/herdr</span> <em>master</em></div>
+ <div><b>❯</b> <span class="cursor"></span></div>
+ </div>
+ <div class="mock-pane">
+ <div class="mock-prompt"><span>~/Projects/herdr</span> <em>master</em></div>
+ <div><b>❯</b> <span class="cmd">git</span> <span class="str">status</span></div>
+ <div class="dim">On branch master</div>
+ <div>Your branch is up to date.</div>
+ <br />
+ <div class="dim">Changes not staged:</div>
+ <div><span class="red">M</span> src/app/state.rs</div>
+ <div><span class="green">??</span> docs/next/</div>
+ <br />
+ <div class="dim">2 files changed, 14 insertions</div>
+ </div>
+ </div>
</figure>
</section>
@@ -588,30 +609,52 @@ $ herdr</code></pre>
<h2>Keep the herd in sight.</h2>
</div>
<div class="awareness-grid">
- <article class="awareness-card">
- <img
- src="/assets/sidebar-workspaces-v2.png"
- alt="Herdr workspace sidebar state"
- loading="lazy"
- />
- <h3>Workspace rollups</h3>
- <p>
- Each workspace rolls up to its most urgent agent
- state, so the whole session is scannable.
- </p>
- </article>
- <article class="awareness-card">
- <img
- src="/assets/sidebar-agents-v2.png"
- alt="Herdr agent sidebar state"
- loading="lazy"
- />
- <h3>Agent list</h3>
- <p>
- See which agents are blocked, working, done, idle, or
- unknown without opening every pane.
- </p>
- </article>
+ <article class="awareness-card">
+ <figure class="awareness-mock" role="img" aria-label="Herdr workspace sidebar showing state rollups">
+ <div class="mock-sidebar">
+ <div class="mock-sidebar-title">spaces</div>
+ <div class="mock-space active">
+ <span class="mock-dot dot-done"></span>
+ <div><strong>herdr</strong><small>master</small></div>
+ </div>
+ <div class="mock-space">
+ <span class="mock-dot dot-working"></span>
+ <div><strong>llm-proxy</strong><small>master</small></div>
+ </div>
+ <div class="mock-space">
+ <span class="mock-dot dot-blocked"></span>
+ <div><strong>docs-site</strong><small>docs/palette</small></div>
+ </div>
+ <div class="mock-space">
+ <span class="mock-dot dot-idle"></span>
+ <div><strong>qmp</strong><small>autoresearch/…</small></div>
+ </div>
+ <div class="mock-sidebar-spacer"></div>
+ </div>
+ </figure>
+ <h3>Workspace rollups</h3>
+ <p>
+ Each workspace rolls up to its most urgent agent
+ state, so the whole session is scannable.
+ </p>
+ </article>
+ <article class="awareness-card">
+ <figure class="awareness-mock" role="img" aria-label="Herdr agent list showing states">
+ <div class="mock-sidebar">
+ <div class="mock-agent-title"><span>agents</span><span>all</span></div>
+ <div class="mock-agent"><span>✓</span><div><strong>doc</strong><small>idle · pi</small></div></div>
+ <div class="mock-agent working"><span class="braille-spinner"></span><div><strong>custom-row</strong><small>working · pi</small></div></div>
+ <div class="mock-agent blocked"><span>◉</span><div><strong>llm-proxy</strong><small>blocked · claude</small></div></div>
+ <div class="mock-agent done"><span>●</span><div><strong>qmp</strong><small>done · codex</small></div></div>
+ <div class="mock-sidebar-spacer"></div>
+ </div>
+ </figure>
+ <h3>Agent list</h3>
+ <p>
+ See which agents are blocked, working, done, idle, or
+ unknown without opening every pane.
+ </p>
+ </article>
</div>
<div class="state-legend">
<span><i class="status-dot dot-blocked"></i>blocked</span>
@@ -627,15 +670,21 @@ $ herdr</code></pre>
<p class="section-kicker">Integrations</p>
<h2>Bring your existing agents into the herd.</h2>
</div>
- <div class="integration-grid">
- <span>Pi</span>
- <span>Claude Code</span>
- <span>Codex</span>
- <span>OpenCode</span>
- <span>Droid</span>
- <span>Amp</span>
- <span>Grok CLI</span>
- <span>Gemini CLI</span>
+ <div class="agent-grid" aria-label="Supported agents">
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/pi.svg')"></span><span>Pi</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/claude.svg')"></span><span>Claude Code</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/codex-mask.svg')"></span><span>Codex</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/droid.png')"></span><span>Droid</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/amp.svg')"></span><span>Amp</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/opencode.svg')"></span><span>OpenCode</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/grok.svg')"></span><span>Grok CLI</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/hermes.svg')"></span><span>Hermes</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/cursor.svg')"></span><span>Cursor</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/antigravity.svg')"></span><span>Antigravity</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/kimi.svg')"></span><span>Kimi</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/kiro-mask.svg')"></span><span>Kiro</span></div>
+ <div class="agent-card"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/github-copilot.svg')"></span><span>Copilot</span></div>
+ <div class="agent-card agent-more"><span class="agent-icon" style="--agent-icon: url('/assets/agent-icons/herdr-mask.svg')"></span><span>more soon</span></div>
</div>
<p class="integration-note">
Any terminal agent works in Herdr. Use the Herdr API to add
@@ -665,7 +714,7 @@ $ herdr</code></pre>
<footer class="footer">
<a class="brand" href="/" aria-label="Herdr home">
- <img class="brand-logo" src="/assets/logo.svg" alt="" />
+ <span class="brand-logo" aria-hidden="true"></span>
<span>herdr</span>
</a>
<div>
@@ -686,8 +735,176 @@ $ herdr</code></pre>
<button type="button" id="copy-logo-url">Copy SVG URL</button>
</div>
+ <div class="theme-hint" id="theme-hint" title="Press / or t to switch theme">
+ <span class="theme-hint-dot"></span>
+ <span class="theme-hint-label" id="theme-hint-label">light</span>
+ <span class="theme-hint-key">[/]</span>
+ </div>
+
+ <div class="theme-overlay" id="theme-overlay" hidden>
+ <div class="theme-overlay-panel" role="dialog" aria-label="Theme switcher" aria-modal="true">
+ <div class="theme-overlay-title">settings</div>
+ <div class="theme-overlay-tabs">
+ <span class="active">theme</span>
+ </div>
+ <div class="theme-overlay-list" id="theme-overlay-list" role="listbox" aria-label="Themes">
+ <div class="theme-sep"><span>dark</span></div>
+ <button type="button" role="option" data-value="catppuccin">catppuccin</button>
+ <button type="button" role="option" data-value="terminal">terminal</button>
+ <button type="button" role="option" data-value="tokyo-night">tokyo night</button>
+ <button type="button" role="option" data-value="dracula">dracula</button>
+ <button type="button" role="option" data-value="nord">nord</button>
+ <button type="button" role="option" data-value="gruvbox">gruvbox</button>
+ <button type="button" role="option" data-value="one-dark">one dark</button>
+ <button type="button" role="option" data-value="solarized">solarized</button>
+ <button type="button" role="option" data-value="kanagawa">kanagawa</button>
+ <button type="button" role="option" data-value="rose-pine">rose pine</button>
+ <button type="button" role="option" data-value="vesper">vesper</button>
+ <div class="theme-sep"><span>light</span></div>
+ <button type="button" role="option" data-value="catppuccin-latte">catppuccin latte</button>
+ <button type="button" role="option" data-value="tokyo-night-day">tokyo day</button>
+ <button type="button" role="option" data-value="gruvbox-light">gruvbox light</button>
+ <button type="button" role="option" data-value="one-light">one light</button>
+ <button type="button" role="option" data-value="solarized-light">solarized light</button>
+ <button type="button" role="option" data-value="kanagawa-lotus">kanagawa lotus</button>
+ <button type="button" role="option" data-value="rose-pine-dawn">rose pine dawn</button>
+ </div>
+ <div class="theme-overlay-footer">
+ <span class="theme-overlay-hints"><span class="key">↑↓</span> select</span>
+ <span class="theme-overlay-actions"><span class="theme-apply-btn">↵ apply</span><button class="theme-close-btn" type="button" id="theme-close-btn">esc close</button></span>
+ </div>
+ </div>
+ </div>
+
<script>
(function () {
+ var overlay = document.getElementById("theme-overlay");
+ var list = document.getElementById("theme-overlay-list");
+ var hintLabel = document.getElementById("theme-hint-label");
+ if (!overlay || !list) return;
+
+ var options = Array.prototype.slice.call(list.querySelectorAll("[role='option']"));
+ var media = window.matchMedia("(prefers-color-scheme: dark)");
+ var saved = localStorage.getItem("herdr-palette") || "";
+ var committed = saved || defaultPalette();
+
+ function defaultPalette() {
+ return media.matches ? "tokyo-night" : "tokyo-night-day";
+ }
+
+ function setPalette(value) {
+ document.documentElement.setAttribute("data-palette", value || defaultPalette());
+ }
+
+ function updateUI(value) {
+ var activeValue = value || defaultPalette();
+ options.forEach(function (opt) {
+ var selected = opt.dataset.value === activeValue;
+ opt.setAttribute("aria-selected", String(selected));
+ });
+ var active = options.find(function (o) { return o.dataset.value === activeValue; });
+ if (hintLabel && active) hintLabel.textContent = active.textContent.trim();
+ }
+
+ function openOverlay() {
+ overlay.hidden = false;
+ document.body.style.overflow = "hidden";
+ committed = localStorage.getItem("herdr-palette") || defaultPalette();
+ updateUI(committed);
+ var active = list.querySelector("[aria-selected='true']") || options[0];
+ if (active) active.focus();
+ }
+
+ function closeOverlay() {
+ overlay.hidden = true;
+ document.body.style.overflow = "";
+ }
+
+ function toggleOverlay() {
+ if (overlay.hidden) openOverlay();
+ else closeOverlay();
+ }
+
+ function preview(index) {
+ if (index < 0 || index >= options.length) return;
+ setPalette(options[index].dataset.value);
+ updateUI(options[index].dataset.value);
+ options[index].focus();
+ }
+
+ function commit(value) {
+ setPalette(value);
+ localStorage.setItem("herdr-palette", value);
+ updateUI(value);
+ closeOverlay();
+ }
+
+ function revert() {
+ setPalette(committed);
+ updateUI(committed);
+ closeOverlay();
+ }
+
+ media.addEventListener("change", function () {
+ if (!localStorage.getItem("herdr-palette")) {
+ setPalette("");
+ updateUI("");
+ }
+ });
+
+ options.forEach(function (opt, idx) {
+ opt.addEventListener("click", function () {
+ commit(opt.dataset.value);
+ });
+ opt.addEventListener("mouseenter", function () {
+ preview(idx);
+ });
+ });
+
+ document.addEventListener("keydown", function (e) {
+ if ((e.key === "t" || e.key === "/") && !e.ctrlKey && !e.metaKey && !e.altKey) {
+ var tag = document.activeElement && document.activeElement.tagName;
+ if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return;
+ e.preventDefault();
+ toggleOverlay();
+ return;
+ }
+ if (overlay.hidden) return;
+ var current = document.activeElement;
+ var idx = options.indexOf(current);
+ if (e.key === "ArrowDown") {
+ e.preventDefault();
+ var nextIdx = idx >= 0 ? Math.min(options.length - 1, idx + 1) : 0;
+ preview(nextIdx);
+ } else if (e.key === "ArrowUp") {
+ e.preventDefault();
+ var prevIdx = idx >= 0 ? Math.max(0, idx - 1) : options.length - 1;
+ preview(prevIdx);
+ } else if (e.key === "Enter" && idx >= 0) {
+ e.preventDefault();
+ commit(options[idx].dataset.value);
+ } else if (e.key === "Escape") {
+ e.preventDefault();
+ revert();
+ }
+ });
+
+ var themeHint = document.getElementById("theme-hint");
+ if (localStorage.getItem("herdr-theme-hint-seen") === "1") {
+ themeHint.classList.add("is-seen");
+ }
+ themeHint.addEventListener("mouseenter", function () {
+ localStorage.setItem("herdr-theme-hint-seen", "1");
+ themeHint.classList.add("is-seen");
+ }, { once: true });
+ themeHint.addEventListener("click", toggleOverlay);
+ document.getElementById("theme-close-btn").addEventListener("click", revert);
+
+ setPalette(saved);
+ updateUI(saved);
+ })();
+
+ (function () {
var menu = document.getElementById("logo-menu");
var copyButton = document.getElementById("copy-logo-url");
var logos = document.querySelectorAll(".brand-logo");
@@ -770,135 +987,6 @@ $ herdr</code></pre>
})();
(function () {
- var hero = document.getElementById("hero");
- var pasture = hero && hero.querySelector(".hero-pasture");
- var reduceMotion = window.matchMedia(
- "(prefers-reduced-motion: reduce)",
- ).matches;
-
- if (hero && pasture && !reduceMotion) {
- var sheepRight = [
- [" ,ww", " wWWWWWWW)", " `WWWWWW'", " /I I\\"],
- [" ,ww", " wWWWWWWW)", " `WWWWWW'", " I\\ /I "],
- ];
- var sheepLeft = [
- [" ww,", "(WWWWWWWw", " 'WWWWWW`", " /I I\\"],
- [" ww,", "(WWWWWWWw", " 'WWWWWW`", " I\\ /I "],
- ];
- var colors = [
- "31,111,104",
- "37,99,235",
- "21,26,33",
- "154,106,0",
- ];
-
- var heroWidth = hero.offsetWidth;
- var heroHeight = hero.offsetHeight;
- var heroRect = hero.getBoundingClientRect();
- var mouseX = -9999;
- var mouseY = -9999;
- var flock = [];
- var count = window.matchMedia("(max-width: 900px)").matches
- ? 8
- : 16;
-
- document.addEventListener("mousemove", function (event) {
- mouseX = event.clientX - heroRect.left;
- mouseY = event.clientY - heroRect.top;
- });
- document.addEventListener("mouseleave", function () {
- mouseX = -9999;
- mouseY = -9999;
- });
- window.addEventListener("resize", function () {
- heroWidth = hero.offsetWidth;
- heroHeight = hero.offsetHeight;
- heroRect = hero.getBoundingClientRect();
- });
- window.addEventListener("scroll", function () {
- heroRect = hero.getBoundingClientRect();
- });
-
- for (var i = 0; i < count; i += 1) {
- var sheep = document.createElement("pre");
- sheep.className = "sheep-el";
- var color = colors[i % colors.length];
- var opacity = 0.045 + Math.random() * 0.045;
- var size = 8.5 + Math.random() * 4.5;
- sheep.style.cssText =
- "font-size:" +
- size +
- "px;color:rgba(" +
- color +
- "," +
- opacity +
- ")";
- pasture.appendChild(sheep);
-
- flock.push({
- el: sheep,
- x: Math.random() * heroWidth,
- y: 24 + Math.random() * Math.max(heroHeight - 64, 120),
- dir: Math.random() > 0.5 ? 1 : -1,
- speed: 0.08 + Math.random() * 0.2,
- frame: 0,
- frameTime: 0,
- frameInterval: 420 + Math.random() * 320,
- shoveX: 0,
- shoveY: 0,
- });
- }
-
- var lastFrame = 0;
- function tick(timestamp) {
- var delta = Math.min(timestamp - lastFrame, 100);
- lastFrame = timestamp;
-
- for (var i = 0; i < flock.length; i += 1) {
- var sheep = flock[i];
- sheep.frameTime += delta;
- if (sheep.frameTime > sheep.frameInterval) {
- sheep.frameTime = 0;
- sheep.frame ^= 1;
- }
-
- var dx = sheep.x - mouseX;
- var dy = sheep.y - mouseY;
- var distance = Math.sqrt(dx * dx + dy * dy);
- if (distance < 150 && distance > 1) {
- var force = (1 - distance / 150) * 0.48;
- sheep.shoveX += (dx / distance) * force;
- sheep.shoveY += (dy / distance) * force;
- }
-
- sheep.x += sheep.shoveX;
- sheep.y += sheep.shoveY;
- sheep.shoveX *= 0.965;
- sheep.shoveY *= 0.965;
- sheep.x += sheep.dir * sheep.speed * (delta / 16);
-
- if (sheep.dir > 0 && sheep.x > heroWidth + 120) sheep.x = -120;
- if (sheep.dir < 0 && sheep.x < -120) sheep.x = heroWidth + 120;
- if (sheep.y < -48) sheep.y = heroHeight + 24;
- if (sheep.y > heroHeight + 48) sheep.y = -24;
-
- var frames = sheep.dir > 0 ? sheepRight : sheepLeft;
- sheep.el.textContent = frames[sheep.frame].join("\n");
- sheep.el.style.transform =
- "translate3d(" + sheep.x + "px," + sheep.y + "px,0)";
- }
-
- requestAnimationFrame(tick);
- }
-
- requestAnimationFrame(function (timestamp) {
- lastFrame = timestamp;
- tick(timestamp);
- });
- }
- })();
-
- (function () {
var copyButton = document.getElementById("copy-btn");
var command = document.getElementById("install-cmd");
var methods = Array.prototype.slice.call(
@@ -936,6 +1024,22 @@ $ herdr</code></pre>
}
});
})();
+
+ (function () {
+ var frames = ["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];
+ var els = document.querySelectorAll(".braille-spinner");
+ if (!els.length) return;
+ var states = Array.prototype.map.call(els, function () { return 0; });
+ els.forEach(function (el, idx) {
+ el.textContent = frames[0];
+ });
+ setInterval(function () {
+ els.forEach(function (el, idx) {
+ states[idx] = (states[idx] + 1) % frames.length;
+ el.textContent = frames[states[idx]];
+ });
+ }, 80);
+ })();
</script>
</body>
</html>
diff --git a/website/src/components/SiteTitle.astro b/website/src/components/SiteTitle.astro
index 04839c38..ee979e9d 100644
--- a/website/src/components/SiteTitle.astro
+++ b/website/src/components/SiteTitle.astro
@@ -1,37 +1,11 @@
---
-import { logos } from 'virtual:starlight/user-images';
-import config from 'virtual:starlight/user-config';
-
const { siteTitle, siteTitleHref } = Astro.locals.starlightRoute;
---
<div class="title-row sl-flex">
<a href={siteTitleHref} class="site-title sl-flex">
- {
- config.logo && logos.dark && (
- <>
- <img
- class:list={{ 'light:sl-hidden print:hidden': !('src' in config.logo) }}
- alt={config.logo.alt}
- src={logos.dark.src}
- width={logos.dark.width}
- height={logos.dark.height}
- />
- {!('src' in config.logo) && (
- <img
- class="dark:sl-hidden print:block"
- alt={config.logo.alt}
- src={logos.light?.src}
- width={logos.light?.width}
- height={logos.light?.height}
- />
- )}
- </>
- )
- }
- <span class:list={{ 'sr-only': config.logo?.replacesTitle }} translate="no">
- {siteTitle}
- </span>
+ <span class="docs-brand-logo" aria-hidden="true"></span>
+ <span translate="no">{siteTitle}</span>
</a>
<nav class="title-nav" aria-label="Primary">
<a href="/docs/">Docs</a>
@@ -41,32 +15,47 @@ const { siteTitle, siteTitleHref } = Astro.locals.starlightRoute;
<style>
@layer starlight.core {
.title-row {
- align-items: baseline;
+ align-items: center;
gap: 1rem;
min-width: 0;
}
.site-title {
- align-items: baseline;
- gap: var(--sl-nav-gap);
+ align-items: center;
+ gap: 0.55rem;
+ font-family: var(--sl-font-mono);
font-size: var(--sl-text-h4);
- font-weight: 600;
- color: var(--sl-color-text-accent);
+ font-weight: 700;
+ letter-spacing: -0.04em;
+ color: var(--sl-color-white);
text-decoration: none;
white-space: nowrap;
min-width: 0;
+ transition: color 120ms ease;
}
- span {
- overflow: hidden;
+ .docs-brand-logo {
+ position: relative;
+ display: inline-block;
+ width: 32px;
+ height: 32px;
+ flex: 0 0 auto;
+ border: 1px solid var(--sl-color-hairline);
+ border-radius: 4px;
+ background: var(--sl-color-bg-nav);
}
- img {
- height: calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));
- width: auto;
- max-width: 100%;
- object-fit: contain;
- object-position: 0 50%;
+ .docs-brand-logo::before {
+ content: "";
+ position: absolute;
+ inset: 2px;
+ background: var(--sl-color-white);
+ -webkit-mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+ mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+ }
+
+ span:not(.docs-brand-logo) {
+ overflow: hidden;
}
.title-nav {
@@ -79,15 +68,11 @@ const { siteTitle, siteTitleHref } = Astro.locals.starlightRoute;
}
.title-nav a {
- color: var(--sl-color-text-accent);
+ color: var(--sl-color-white);
text-decoration: none;
transition: color 120ms ease;
}
- .site-title {
- transition: color 120ms ease;
- }
-
.site-title:hover,
.title-nav a:hover {
color: var(--sl-color-accent-high);
diff --git a/website/src/content/docs/index.mdx b/website/src/content/docs/index.mdx
index fd7e9ecb..20ea24af 100644
--- a/website/src/content/docs/index.mdx
+++ b/website/src/content/docs/index.mdx
@@ -5,7 +5,7 @@ template: splash
hero:
tagline: "One terminal for the whole herd: real panes, persistent sessions, SSH attach, state awareness, and CLI/socket orchestration."
image:
- file: ../../../public/assets/logo.svg
+ html: '<span class="docs-hero-logo" aria-hidden="true"></span>'
actions:
- text: Install Herdr
link: /docs/install/
diff --git a/website/src/pages/compare.astro b/website/src/pages/compare.astro
index 531c2c19..2baf7b30 100644
--- a/website/src/pages/compare.astro
+++ b/website/src/pages/compare.astro
@@ -8,7 +8,7 @@
name="description"
content="Compare Herdr with tmux, Zellij, cmux, Warp, Solo, Conductor, Emdash, and Superset. See where terminal multiplexers, agent terminals, process dashboards, and worktree orchestrators differ."
/>
- <meta name="theme-color" content="#f7f3ea" />
+ <meta name="theme-color" content="#f0eee9" />
<link rel="canonical" href="https://herdr.dev/compare/" />
<meta property="og:type" content="website" />
@@ -36,13 +36,22 @@
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon.png?v=14" />
<link rel="apple-touch-icon" href="/assets/logo.png" />
<link rel="preload" href="/assets/jbm.woff2" as="font" type="font/woff2" crossorigin />
- <link rel="stylesheet" href="/css/style.css?v=compare1" />
+ <script>
+ (function () {
+ var saved = localStorage.getItem("herdr-palette");
+ var system = window.matchMedia("(prefers-color-scheme: dark)").matches
+ ? "tokyo-night"
+ : "tokyo-night-day";
+ document.documentElement.setAttribute("data-palette", saved || system);
+ })();
+ </script>
+ <link rel="stylesheet" href="/css/style.css?v=compare2" />
</head>
<body>
<header class="site-header">
<nav class="nav" aria-label="Primary navigation">
<a class="brand" href="/" aria-label="Herdr home">
- <img class="brand-logo" src="/assets/logo.svg" alt="" />
+ <span class="brand-logo" aria-hidden="true"></span>
<span>herdr</span>
</a>
<div class="nav-links">
@@ -250,7 +259,7 @@
<footer class="footer">
<a class="brand" href="/" aria-label="Herdr home">
- <img class="brand-logo" src="/assets/logo.svg" alt="" />
+ <span class="brand-logo" aria-hidden="true"></span>
<span>herdr</span>
</a>
<div>
@@ -262,5 +271,163 @@
<a href="mailto:hey@herdr.dev">hey@herdr.dev</a>
</div>
</footer>
+
+ <div class="theme-hint" id="theme-hint" title="Press / or t to switch theme">
+ <span class="theme-hint-dot"></span>
+ <span class="theme-hint-label" id="theme-hint-label">light</span>
+ <span class="theme-hint-key">[/]</span>
+ </div>
+
+ <div class="theme-overlay" id="theme-overlay" hidden>
+ <div class="theme-overlay-panel" role="dialog" aria-label="Theme switcher" aria-modal="true">
+ <div class="theme-overlay-title">settings</div>
+ <div class="theme-overlay-tabs"><span class="active">theme</span></div>
+ <div class="theme-overlay-list" id="theme-overlay-list" role="listbox" aria-label="Themes">
+ <div class="theme-sep"><span>dark</span></div>
+ <button type="button" role="option" data-value="catppuccin">catppuccin</button>
+ <button type="button" role="option" data-value="terminal">terminal</button>
+ <button type="button" role="option" data-value="tokyo-night">tokyo night</button>
+ <button type="button" role="option" data-value="dracula">dracula</button>
+ <button type="button" role="option" data-value="nord">nord</button>
+ <button type="button" role="option" data-value="gruvbox">gruvbox</button>
+ <button type="button" role="option" data-value="one-dark">one dark</button>
+ <button type="button" role="option" data-value="solarized">solarized</button>
+ <button type="button" role="option" data-value="kanagawa">kanagawa</button>
+ <button type="button" role="option" data-value="rose-pine">rose pine</button>
+ <button type="button" role="option" data-value="vesper">vesper</button>
+ <div class="theme-sep"><span>light</span></div>
+ <button type="button" role="option" data-value="catppuccin-latte">catppuccin latte</button>
+ <button type="button" role="option" data-value="tokyo-night-day">tokyo day</button>
+ <button type="button" role="option" data-value="gruvbox-light">gruvbox light</button>
+ <button type="button" role="option" data-value="one-light">one light</button>
+ <button type="button" role="option" data-value="solarized-light">solarized light</button>
+ <button type="button" role="option" data-value="kanagawa-lotus">kanagawa lotus</button>
+ <button type="button" role="option" data-value="rose-pine-dawn">rose pine dawn</button>
+ </div>
+ <div class="theme-overlay-footer">
+ <span class="theme-overlay-hints"><span class="key">↑↓</span> select</span>
+ <span class="theme-overlay-actions"><span class="theme-apply-btn">↵ apply</span><button class="theme-close-btn" type="button" id="theme-close-btn">esc close</button></span>
+ </div>
+ </div>
+ </div>
+
+ <script>
+ (function () {
+ var overlay = document.getElementById("theme-overlay");
+ var list = document.getElementById("theme-overlay-list");
+ var hintLabel = document.getElementById("theme-hint-label");
+ if (!overlay || !list) return;
+ var options = Array.prototype.slice.call(list.querySelectorAll("[role='option']"));
+ var media = window.matchMedia("(prefers-color-scheme: dark)");
+ var saved = localStorage.getItem("herdr-palette") || "";
+ var committed = saved || defaultPalette();
+
+ function defaultPalette() {
+ return media.matches ? "tokyo-night" : "tokyo-night-day";
+ }
+
+ function setPalette(value) {
+ document.documentElement.setAttribute("data-palette", value || defaultPalette());
+ }
+
+ function updateUI(value) {
+ var activeValue = value || defaultPalette();
+ options.forEach(function (opt) {
+ opt.setAttribute("aria-selected", String(opt.dataset.value === activeValue));
+ });
+ var active = options.find(function (opt) { return opt.dataset.value === activeValue; });
+ if (hintLabel && active) hintLabel.textContent = active.textContent.trim();
+ }
+
+ function openOverlay() {
+ overlay.hidden = false;
+ document.body.style.overflow = "hidden";
+ committed = localStorage.getItem("herdr-palette") || defaultPalette();
+ updateUI(committed);
+ var active = list.querySelector("[aria-selected='true']") || options[0];
+ if (active) active.focus();
+ }
+
+ function closeOverlay() {
+ overlay.hidden = true;
+ document.body.style.overflow = "";
+ }
+
+ function toggleOverlay() {
+ if (overlay.hidden) openOverlay();
+ else closeOverlay();
+ }
+
+ function preview(index) {
+ if (index < 0 || index >= options.length) return;
+ setPalette(options[index].dataset.value);
+ updateUI(options[index].dataset.value);
+ options[index].focus();
+ }
+
+ function commit(value) {
+ setPalette(value);
+ localStorage.setItem("herdr-palette", value);
+ updateUI(value);
+ closeOverlay();
+ }
+
+ function revert() {
+ setPalette(committed);
+ updateUI(committed);
+ closeOverlay();
+ }
+
+ media.addEventListener("change", function () {
+ if (!localStorage.getItem("herdr-palette")) {
+ setPalette("");
+ updateUI("");
+ }
+ });
+
+ options.forEach(function (opt, idx) {
+ opt.addEventListener("click", function () { commit(opt.dataset.value); });
+ opt.addEventListener("mouseenter", function () { preview(idx); });
+ });
+
+ document.addEventListener("keydown", function (e) {
+ if ((e.key === "t" || e.key === "/") && !e.ctrlKey && !e.metaKey && !e.altKey) {
+ var tag = document.activeElement && document.activeElement.tagName;
+ if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return;
+ e.preventDefault();
+ toggleOverlay();
+ return;
+ }
+ if (overlay.hidden) return;
+ var idx = options.indexOf(document.activeElement);
+ if (e.key === "ArrowDown") {
+ e.preventDefault();
+ preview(idx >= 0 ? Math.min(options.length - 1, idx + 1) : 0);
+ } else if (e.key === "ArrowUp") {
+ e.preventDefault();
+ preview(idx >= 0 ? Math.max(0, idx - 1) : options.length - 1);
+ } else if (e.key === "Enter" && idx >= 0) {
+ e.preventDefault();
+ commit(options[idx].dataset.value);
+ } else if (e.key === "Escape") {
+ e.preventDefault();
+ revert();
+ }
+ });
+
+ var themeHint = document.getElementById("theme-hint");
+ if (localStorage.getItem("herdr-theme-hint-seen") === "1") {
+ themeHint.classList.add("is-seen");
+ }
+ themeHint.addEventListener("mouseenter", function () {
+ localStorage.setItem("herdr-theme-hint-seen", "1");
+ themeHint.classList.add("is-seen");
+ }, { once: true });
+ themeHint.addEventListener("click", toggleOverlay);
+ document.getElementById("theme-close-btn").addEventListener("click", revert);
+ setPalette(saved);
+ updateUI(saved);
+ })();
+ </script>
</body>
</html>
diff --git a/website/src/styles/starlight.css b/website/src/styles/starlight.css
index 1120e31b..0747bcc4 100644
--- a/website/src/styles/starlight.css
+++ b/website/src/styles/starlight.css
@@ -14,88 +14,124 @@
--sl-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
--sl-content-width: 54rem;
--sl-sidebar-width: 18.5rem;
- --sl-color-accent-low: #123c37;
- --sl-color-accent: #42cabb;
- --sl-color-accent-high: #d9fff8;
- --sl-color-white: #f8fbff;
- --sl-color-gray-1: #e8edf2;
- --sl-color-gray-2: #c7d0d9;
- --sl-color-gray-3: #93a0ad;
- --sl-color-gray-4: #62707f;
- --sl-color-gray-5: #34404c;
- --sl-color-gray-6: #202833;
- --sl-color-black: #10151c;
- --sl-color-bg: #10151c;
- --sl-color-bg-nav: #151b23;
- --sl-color-bg-sidebar: #151b23;
- --sl-color-bg-inline-code: #202833;
- --sl-color-hairline: #25303b;
- --sl-color-hairline-light: #34404c;
+}
+
+:root,
+:root[data-theme="dark"] {
+ --sl-color-accent-low: #26314f;
+ --sl-color-accent: #7aa2f7;
+ --sl-color-accent-high: #a9c2ff;
+ --sl-color-white: #d5dcff;
+ --sl-color-gray-1: #c0caf5;
+ --sl-color-gray-2: #a9b1d6;
+ --sl-color-gray-3: #737aa2;
+ --sl-color-gray-4: #565f89;
+ --sl-color-gray-5: #414868;
+ --sl-color-gray-6: #2f3549;
+ --sl-color-gray-7: #24283b;
+ --sl-color-black: #1a1b26;
+ --sl-color-bg: #1a1b26;
+ --sl-color-bg-nav: #202331;
+ --sl-color-bg-sidebar: #202331;
+ --sl-color-bg-inline-code: #24283b;
+ --sl-color-hairline: #2f3549;
+ --sl-color-hairline-light: #414868;
}
:root[data-theme="light"] {
- --sl-color-accent-low: #d7f1ed;
- --sl-color-accent: #1f6f68;
- --sl-color-accent-high: #0f3f3b;
- --sl-color-white: #151a21;
- --sl-color-gray-1: #26313c;
- --sl-color-gray-2: #40505d;
- --sl-color-gray-3: #687381;
- --sl-color-gray-4: #8d989f;
- --sl-color-gray-5: #d4cabd;
- --sl-color-gray-6: #eee7dc;
- --sl-color-gray-7: #f7f3ea;
- --sl-color-black: #fffdf8;
- --sl-color-bg: #f7f3ea;
- --sl-color-bg-nav: #fffdf8;
- --sl-color-bg-sidebar: #fffdf8;
- --sl-color-bg-inline-code: #eee7dc;
- --sl-color-hairline: #ded6c8;
- --sl-color-hairline-light: #c9bdad;
+ --sl-color-accent-low: #c4c8da;
+ --sl-color-accent: #2e7de9;
+ --sl-color-accent-high: #1f2f66;
+ --sl-color-white: #1f2f66;
+ --sl-color-gray-1: #3760bf;
+ --sl-color-gray-2: #68709a;
+ --sl-color-gray-3: #8990b3;
+ --sl-color-gray-4: #a8aecb;
+ --sl-color-gray-5: #b6bbd1;
+ --sl-color-gray-6: #c4c8da;
+ --sl-color-gray-7: #d8d9e0;
+ --sl-color-black: #e1e2e7;
+ --sl-color-bg: #e1e2e7;
+ --sl-color-bg-nav: #d8d9e0;
+ --sl-color-bg-sidebar: #d8d9e0;
+ --sl-color-bg-inline-code: #c4c8da;
+ --sl-color-hairline: #b6bbd1;
+ --sl-color-hairline-light: #a8aecb;
}
.site-title {
font-family: var(--sl-font-mono);
- font-weight: 800;
+ font-weight: 700;
letter-spacing: -0.04em;
}
+.docs-brand-logo {
+ position: relative;
+ display: inline-block;
+ width: 32px;
+ height: 32px;
+ flex: 0 0 auto;
+ border: 1px solid var(--sl-color-hairline);
+ border-radius: 4px;
+ background: var(--sl-color-bg-nav);
+}
+
+.docs-brand-logo::before {
+ content: "";
+ position: absolute;
+ inset: 2px;
+ background: var(--sl-color-white);
+ -webkit-mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+ mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+}
+
+.docs-hero-logo {
+ display: block;
+ width: min(20rem, 62vw);
+ aspect-ratio: 1;
+ background: var(--sl-color-white);
+ -webkit-mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+ mask: url("/assets/agent-icons/herdr-mask.svg") center / contain no-repeat;
+}
+
.sl-markdown-content {
font-size: 1rem;
- line-height: 1.75;
+ line-height: 1.65;
}
.sl-markdown-content h1,
.hero h1 {
- letter-spacing: -0.055em;
- line-height: 0.98;
- font-size: clamp(2.4rem, 5vw, 4.2rem);
+ letter-spacing: -0.03em;
+ line-height: 1.1;
+ font-weight: 400;
+ font-size: clamp(2rem, 5vw, 3.2rem);
+ font-family: var(--sl-font-mono);
}
.sl-markdown-content h2 {
- margin-top: 2.6rem;
- letter-spacing: -0.035em;
+ margin-top: 2.4rem;
+ letter-spacing: -0.02em;
+ font-family: var(--sl-font-mono);
+ font-weight: 400;
}
.sl-markdown-content h3 {
- letter-spacing: -0.025em;
+ letter-spacing: -0.01em;
+ font-family: var(--sl-font-mono);
+ font-weight: 400;
}
.sl-markdown-content > p:first-child {
- font-size: 1.08rem;
+ font-size: 1.05rem;
color: var(--sl-color-gray-1);
}
#starlight__sidebar a[aria-current="page"] {
- background: color-mix(in srgb, var(--sl-color-accent) 13%, transparent);
+ background: color-mix(in srgb, var(--sl-color-accent) 8%, transparent);
color: var(--sl-color-accent-high);
box-shadow: inset 2px 0 0 var(--sl-color-accent);
}
-:root[data-theme="light"] #starlight__sidebar a[aria-current="page"] {
- color: var(--sl-color-accent-high);
-}
-
.mobile-doc-shots {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
@@ -111,7 +147,7 @@
display: block;
width: 100%;
border: 1px solid var(--sl-color-hairline);
- border-radius: 1rem;
+ border-radius: 4px;
}
.mobile-doc-shots figcaption {
@@ -124,17 +160,19 @@
.sl-markdown-content a:not(:where(.not-content *)) {
text-decoration-thickness: 1px;
text-underline-offset: 0.18em;
+ color: var(--sl-color-accent);
}
.sl-markdown-content code:not(:where(.not-content *)) {
border: 1px solid var(--sl-color-hairline);
- border-radius: 0.35rem;
+ border-radius: 2px;
font-size: 0.88em;
+ background: var(--sl-color-bg-inline-code);
}
.sl-markdown-content pre {
border: 1px solid var(--sl-color-hairline);
- border-radius: 0.85rem;
+ border-radius: 4px;
}
.expressive-code {
@@ -143,7 +181,7 @@
.expressive-code .frame {
border: 1px solid var(--sl-color-hairline) !important;
- border-radius: 0.85rem !important;
+ border-radius: 4px !important;
box-shadow: none !important;
overflow: hidden;
}
@@ -169,8 +207,9 @@
.sl-markdown-content .card {
border-color: var(--sl-color-hairline);
background:
- linear-gradient(180deg, color-mix(in srgb, var(--sl-color-accent) 5%, transparent), transparent 58%),
+ linear-gradient(180deg, color-mix(in srgb, var(--sl-color-accent) 4%, transparent), transparent 58%),
var(--sl-color-black);
+ border-radius: 4px;
}
.sl-markdown-content .card .title {
@@ -179,5 +218,5 @@
.hero img {
image-rendering: auto;
- filter: drop-shadow(0 20px 50px rgb(31 111 104 / 0.18));
+ border-radius: 4px;
}