diff --git a/.env.example b/.env.example
index 973c937b..db97bda7 100644
--- a/.env.example
+++ b/.env.example
@@ -590,3 +590,6 @@ OPENLIT_ENVIRONMENT=development
# End of Auth & Bridge Configuration
# ---------------------------------------------------------------------------
+
+# Landing page login URL (used by SvelteKit frontend)
+# VITE_CTX_LOGIN_URL=https://dev.context-engine.ai/login
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 3acc9277..8ce69f5f 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -42,6 +42,7 @@ jobs:
env:
NODE_ENV: production
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ VITE_CTX_LOGIN_URL: ${{ secrets.VITE_CTX_LOGIN_URL }}
run: npm run build
- name: Upload artifact
diff --git a/src/app.scss b/src/app.scss
index 31ee16c5..23a925f8 100644
--- a/src/app.scss
+++ b/src/app.scss
@@ -234,6 +234,54 @@ body::before {
font-size: 15px;
}
+/* Login / Sign Up - attention-grabbing */
+.btn-login {
+ background: transparent;
+ color: #00ffcc;
+ border: 2px solid #00ffcc;
+ padding: 8px 20px;
+ font-weight: 600;
+ font-size: 14px;
+ letter-spacing: 0.02em;
+ box-shadow: 0 0 12px rgba(0, 255, 204, 0.3), inset 0 0 12px rgba(0, 255, 204, 0.06);
+ animation: loginGlow 2s ease-in-out infinite alternate;
+ position: relative;
+}
+
+.btn-login:hover {
+ background: rgba(0, 255, 204, 0.12);
+ box-shadow: 0 0 24px rgba(0, 255, 204, 0.5), inset 0 0 16px rgba(0, 255, 204, 0.1);
+ transform: translateY(-1px);
+ color: #fff;
+ border-color: #00ffcc;
+}
+
+@keyframes loginGlow {
+ 0% { box-shadow: 0 0 10px rgba(0, 255, 204, 0.25), inset 0 0 10px rgba(0, 255, 204, 0.04); }
+ 100% { box-shadow: 0 0 20px rgba(0, 255, 204, 0.45), inset 0 0 14px rgba(0, 255, 204, 0.08); }
+}
+
+[data-theme="light"] .btn-login {
+ color: #00896b;
+ border-color: #00896b;
+ box-shadow: 0 0 12px rgba(0, 137, 107, 0.25), inset 0 0 10px rgba(0, 137, 107, 0.05);
+}
+
+[data-theme="light"] .btn-login:hover {
+ background: rgba(0, 137, 107, 0.1);
+ box-shadow: 0 0 22px rgba(0, 137, 107, 0.4), inset 0 0 14px rgba(0, 137, 107, 0.08);
+ color: #005d49;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .btn-login {
+ animation: none;
+ }
+ .btn-login:hover {
+ transform: none;
+ }
+}
+
.icon-btn {
display: flex;
align-items: center;
@@ -939,6 +987,29 @@ body::before {
color: var(--text-primary);
}
+ .mobile-login-link {
+ color: #00ffcc !important;
+ font-weight: 600;
+ border: 1px solid rgba(0, 255, 204, 0.3);
+ background: rgba(0, 255, 204, 0.06);
+ }
+
+ .mobile-login-link:hover {
+ background: rgba(0, 255, 204, 0.12) !important;
+ color: #fff !important;
+ }
+
+ [data-theme="light"] .mobile-login-link {
+ color: #00896b !important;
+ border-color: rgba(0, 137, 107, 0.35);
+ background: rgba(0, 137, 107, 0.06);
+ }
+
+ [data-theme="light"] .mobile-login-link:hover {
+ background: rgba(0, 137, 107, 0.12) !important;
+ color: #005d49 !important;
+ }
+
.mobile-menu-cta {
margin-top: auto;
padding-top: 24px;
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 66366076..c8dfb620 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -3,7 +3,9 @@
import { onMount } from 'svelte';
import { page } from '$app/stores';
import { base } from '$app/paths';
- import { Sun, Moon, Mail, Github, Layers, Menu, X, Key } from 'lucide-svelte';
+ import { Sun, Moon, Mail, Github, Layers, Menu, X, Key, LogIn } from 'lucide-svelte';
+
+ const loginUrl = import.meta.env.VITE_CTX_LOGIN_URL || `${base}/login`;
let { children } = $props();
@@ -117,6 +119,10 @@
{/if}
Request Demo
+
+