Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/app.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.svg" type="image/svg+xml" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" type="image/png" />
<link rel="apple-touch-icon" href="%sveltekit.assets%/apple-touch-icon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Context Engine - MCP Retrieval Stack</title>
<meta name="description" content="MCP retrieval stack for AI coding assistants. Hybrid code search, ReFRAG micro-chunking, local LLM enhancement." />
Expand Down
114 changes: 96 additions & 18 deletions src/app.scss
Original file line number Diff line number Diff line change
Expand Up @@ -109,36 +109,24 @@ body::before {
.logo {
display: flex;
align-items: center;
gap: 12px;
gap: 10px;
font-weight: 600;
font-size: 17px;
color: var(--text-primary);
text-decoration: none;
}

.logo-icon {
width: 32px;
height: 32px;
background: var(--accent-gradient);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 6px 16px rgba(0, 184, 148, 0.25);
.logo-icon-img {
width: 28px;
height: 28px;
border-radius: 6px;
transition: all var(--transition);
}

.logo:hover .logo-icon {
box-shadow: 0 8px 20px rgba(0, 184, 148, 0.35);
.logo:hover .logo-icon-img {
transform: translateY(-1px);
}

.logo-icon :global(svg) {
width: 18px;
height: 18px;
fill: white;
}

.nav {
display: flex;
gap: 28px;
Expand Down Expand Up @@ -325,6 +313,56 @@ body::before {
align-items: center;
}

/* Hero brand block: logo + badge centered together */
.hero-brand {
display: inline-flex;
flex-direction: column;
align-items: center;
margin-bottom: 28px;
}

.hero-logo {
width: auto;
height: 120px;
max-width: 100%;
margin-bottom: 12px;
filter: drop-shadow(0 4px 24px rgba(0, 184, 148, 0.15));
transition: all var(--transition);
object-fit: contain;
}

/* Show appropriate logo based on theme */
[data-theme="light"] .hero-logo {
content: url('/Context-Engine/logo.svg');
}

/* NVIDIA Inception Badge */
.nvidia-badge-link {
display: inline-block;
transition: opacity var(--transition);
}

.nvidia-badge-link:hover {
opacity: 0.85;
}

.nvidia-badge {
height: 48px;
width: auto;
}

@media (max-width: 768px) {
.nvidia-badge {
height: 38px;
}
}

@media (max-width: 400px) {
.nvidia-badge {
height: 30px;
}
}

.kicker {
font-size: 12px;
letter-spacing: 0.15em;
Expand Down Expand Up @@ -913,6 +951,7 @@ body::before {
gap: 48px;
}
.hero-title { font-size: 40px; }
.hero-logo { height: 90px; }
.nav { display: none; }
.features-grid { grid-template-columns: 1fr; }
.graph-section, .features-section, .demo-section { padding: 60px 24px; }
Expand Down Expand Up @@ -1034,6 +1073,11 @@ body::before {
font-size: 32px;
line-height: 1.2;
}

.hero-logo {
height: 72px;
max-width: 100%;
}

.hero-subtitle {
font-size: 15px;
Expand Down Expand Up @@ -1227,6 +1271,40 @@ body::before {
}
}

/* Very small phones */
@media (max-width: 400px) {
.hero {
padding: 32px 12px;
}

.hero-logo {
height: auto;
max-width: 100%;
}

.hero-title {
font-size: 26px;
}

.hero-subtitle {
font-size: 14px;
}

.header {
padding: 0 12px;
}

.logo {
font-size: 15px;
gap: 8px;
}

.logo-icon-img {
width: 24px;
height: 24px;
}
}

/* Glass morphism utility classes (kept for contact page compatibility) */
.glass {
background: var(--bg-card);
Expand Down
6 changes: 2 additions & 4 deletions src/routes/+layout.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { onMount } from 'svelte';
import { page } from '$app/stores';
import { base } from '$app/paths';
import { Sun, Moon, Mail, Github, Layers, Menu, X, Key, LogIn } from 'lucide-svelte';
import { Sun, Moon, Mail, Github, Menu, X, Key, LogIn } from 'lucide-svelte';

const loginUrl = import.meta.env.VITE_CTX_LOGIN_URL || `${base}/login`;

Expand Down Expand Up @@ -62,9 +62,7 @@
<header class="header">
<div class="header-left">
<a href="{base}/" class="logo">
<span class="logo-icon">
<Layers size={18} />
</span>
<img src="{base}/favicon.png" alt="Context Engine" class="logo-icon-img" />
Context Engine
</a>
<span class="byok-pill" data-tooltip="Bring Your Own LLM Key">
Expand Down
59 changes: 38 additions & 21 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<script lang="ts">
import { onMount } from 'svelte';
import { base } from '$app/paths';
import {
Search,
GitGraph,
Expand Down Expand Up @@ -232,7 +233,21 @@
<!-- Hero Section -->
<section class="hero">
<div class="hero-content">
<span class="kicker">AI Code Context Platform</span>
<div class="hero-brand">
<img src="{base}/logo-white.svg" alt="Context Engine" class="hero-logo" />
<a
href="https://www.nvidia.com/en-us/startups/"
target="_blank"
rel="noopener noreferrer"
class="nvidia-badge-link"
>
<img
src="{base}/nvidia-inception-badge.png"
alt="NVIDIA Inception Program"
class="nvidia-badge"
/>
</a>
</div>
<h1 class="hero-title">
Your Codebase,<br /><span class="gradient-text">Instantly Understood</span>
</h1>
Expand Down Expand Up @@ -432,28 +447,30 @@ result = <span class="c-fn">repo_search</span>(
<h2 class="section-title">Get <span class="gradient-text">Early Access</span></h2>
<p class="section-subtitle">Join the beta and give your AI the context it deserves.</p>

{#if demoSubmitted}
<div class="demo-form" style="color: var(--accent); font-size: 16px; justify-content: center;">
Beta key sent! Check your email at {demoEmail}
{#if demoSubmitted}
<div class="demo-form" style="color: var(--accent); font-size: 16px; justify-content: center;">
Beta key sent! Check your email at {demoEmail}
</div>
{:else}
<form class="demo-form" onsubmit={handleDemoSubmit}>
<input
type="email"
class="input"
placeholder="you@company.com"
required
bind:value={demoEmail}
disabled={demoLoading}
/>
<button type="submit" class="btn btn-primary btn-lg" disabled={demoLoading}>
{demoLoading ? 'Sending…' : 'Request Invite'}
</button>
</form>
{#if demoError}
<div style="color: #ef4444; font-size: 14px; margin-top: 8px; text-align: center;">
{demoError}
</div>
{:else}
<form class="demo-form" onsubmit={handleDemoSubmit}>
<input
type="email"
class="input"
placeholder="you@company.com"
required
bind:value={demoEmail}
disabled={demoLoading}
/>
<button type="submit" class="btn btn-primary btn-lg" disabled={demoLoading}>
{demoLoading ? 'Sending…' : 'Request Invite'}
</button>
</form>
{#if demoError}
<div style="color: #ef4444; font-size: 14px; margin-top: 8px; text-align: center;">{demoError}</div>
{/if}
{/if}
{/if}
</section>

<!-- Footer -->
Expand Down
Binary file added static/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion static/favicon.svg

This file was deleted.

Binary file added static/logo-white.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading