<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Promptheus - AI-Powered Prompt Optimization Tool</title>
<meta name="description" content="Transform raw prompts into polished, effective prompts for LLMs. Multi-provider support with intelligent question-asking and beautiful alchemical interface.">
<!-- Favicon Implementation -->
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="manifest" href="site.webmanifest">
<meta name="theme-color" content="#1a1a1a">
<!-- Preconnect to external domains -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Distinctive fonts -->
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:wght@400;600;700&family=Fira+Code:wght@400;600&display=swap" rel="stylesheet">
<!-- Critical CSS -->
<style>
/* CSS Reset & Base Styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--bg-primary: #0A0E1A;
--bg-secondary: #151F2E;
--bg-tertiary: #1E293B;
--accent-gold: #D4A574;
--accent-gold-light: #E5B88A;
--accent-gold-dark: #B8935F;
--accent-emerald: #4ADE80;
--accent-cyan: #06B6D4;
--accent-rose: #F43F5E;
--text-primary: #E2E8F0;
--text-secondary: #94A3B8;
--text-muted: #64748B;
--gradient-primary: linear-gradient(135deg, #0A0E1A 0%, #151F2E 50%, #1E293B 100%);
--gradient-gold: linear-gradient(135deg, #D4A574 0%, #E5B88A 100%);
--shadow-gold: 0 0 30px rgba(212, 165, 116, 0.3);
--shadow-glow: 0 0 60px rgba(212, 165, 116, 0.2);
}
@font-face {
font-family: 'IBM Plex Serif';
font-display: swap;
}
@font-face {
font-family: 'Fira Code';
font-display: swap;
}
body {
font-family: 'IBM Plex Serif', Georgia, serif;
line-height: 1.7;
color: var(--text-primary);
background: var(--bg-primary);
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'IBM Plex Serif', Georgia, serif;
font-weight: 700;
line-height: 1.1;
margin-bottom: 1rem;
}
h1 {
font-size: clamp(2.5rem, 5vw, 3.5rem);
letter-spacing: -0.02em;
}
h2 {
font-size: clamp(1.75rem, 3vw, 2.25rem);
margin-top: 3rem;
letter-spacing: -0.01em;
}
h3 {
font-size: clamp(1.5rem, 2.5vw, 1.875rem);
}
h4 {
font-size: 1.25rem;
}
p { margin-bottom: 1rem; }
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.75rem 1.5rem;
border: none;
border-radius: 8px;
font-weight: 600;
text-decoration: none;
cursor: pointer;
transition: all 0.3s ease;
font-size: 1rem;
}
.btn-primary {
background: var(--gradient-gold);
color: var(--bg-primary);
box-shadow: 0 4px 15px rgba(212, 165, 116, 0.3);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(212, 165, 116, 0.4);
}
.btn-secondary {
background: transparent;
color: var(--accent-gold);
border: 2px solid var(--accent-gold);
}
.btn-secondary:hover {
background: var(--accent-gold);
color: var(--bg-primary);
transform: translateY(-2px);
}
.btn-ghost {
background: transparent;
color: var(--text-secondary);
border: 1px solid var(--text-muted);
}
.btn-ghost:hover {
background: var(--bg-tertiary);
border-color: var(--accent-gold);
color: var(--text-primary);
}
/* Hero Section */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
position: relative;
background: var(--gradient-primary);
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at 20% 50%, rgba(212, 165, 116, 0.1) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(212, 165, 116, 0.05) 0%, transparent 50%);
pointer-events: none;
}
.hero-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
position: relative;
z-index: 1;
}
.hero-text h1 {
font-size: clamp(2.5rem, 5vw, 3.5rem);
font-weight: 900;
margin-bottom: 1rem;
background: var(--gradient-gold);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
letter-spacing: -0.02em;
}
.hero-text .subheadline {
font-size: 1.25rem;
color: var(--text-secondary);
margin-bottom: 2rem;
line-height: 1.8;
}
.hero-buttons {
display: flex;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 2rem;
}
.hero-buttons .btn {
min-width: 180px;
}
.hero-visual {
display: flex;
justify-content: center;
align-items: center;
min-height: 400px;
position: relative;
}
.alchemical-circle {
width: 300px;
height: 300px;
border: 3px solid var(--accent-gold);
border-radius: 50%;
position: relative;
background: radial-gradient(circle, rgba(212, 165, 116, 0.1) 0%, transparent 70%);
animation: rotate 20s linear infinite;
will-change: transform;
}
.alchemical-circle::before {
content: '⚗️';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 4rem;
color: var(--accent-gold);
animation: pulse 2s ease-in-out infinite;
}
.alchemical-circle::after {
content: '';
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
border: 1px solid var(--accent-gold-light);
border-radius: 50%;
opacity: 0.5;
animation: rotate 15s linear infinite reverse;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@keyframes pulse {
0%, 100% { transform: translate(-50%, -50%) scale(1); }
50% { transform: translate(-50%, -50%) scale(1.1); }
}
/* Features Section */
.features {
padding: 6rem 0;
background: var(--bg-secondary);
}
.section-header {
text-align: center;
margin-bottom: 4rem;
}
.section-header h2 {
font-weight: 800;
background: var(--gradient-gold);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.section-header .description {
color: var(--text-secondary);
max-width: 600px;
margin: 0 auto;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
}
.feature-card {
background: var(--bg-tertiary);
padding: 2rem;
border-radius: 16px;
border: 1px solid rgba(212, 165, 116, 0.2);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.feature-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at top right, rgba(212, 165, 116, 0.1) 0%, transparent 70%);
opacity: 0;
transition: opacity 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
border-color: var(--accent-gold);
box-shadow: var(--shadow-gold);
}
.feature-card:hover::before {
opacity: 1;
}
.feature-icon {
width: 60px;
height: 60px;
background: var(--gradient-gold);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
margin-bottom: 1rem;
}
.feature-card h3 {
color: var(--accent-gold);
margin-bottom: 1rem;
}
.feature-card p {
color: var(--text-secondary);
line-height: 1.6;
}
/* Demo Section */
.demo {
padding: 6rem 0;
background: var(--bg-primary);
}
.demo-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: center;
}
.demo-content h3 {
color: var(--accent-gold);
margin-bottom: 1.5rem;
}
.demo-examples {
display: flex;
flex-direction: column;
gap: 2rem;
}
.demo-card {
background: var(--bg-secondary);
border-radius: 12px;
padding: 1.5rem;
border-left: 4px solid var(--accent-gold);
}
.demo-card h4 {
color: var(--text-primary);
margin-bottom: 0.5rem;
font-size: 1rem;
}
.demo-card p {
color: var(--text-secondary);
font-size: 0.95rem;
line-height: 1.5;
}
.demo-visual {
background: var(--bg-secondary);
border-radius: 16px;
padding: 2rem;
border: 1px solid rgba(212, 165, 116, 0.2);
min-height: 400px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.mock-ui {
width: 100%;
max-width: 500px;
background: var(--bg-tertiary);
border-radius: 8px;
padding: 1.5rem;
border: 1px solid var(--accent-gold);
}
.mock-ui-header {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid rgba(212, 165, 116, 0.2);
}
.mock-ui-dot {
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--accent-gold);
}
.mock-ui-content {
color: var(--text-secondary);
font-size: 0.9rem;
line-height: 1.6;
}
/* How It Works Section */
.how-it-works {
padding: 6rem 0;
background: var(--bg-secondary);
}
.workflow-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.workflow-step {
text-align: center;
position: relative;
}
.workflow-step::before {
content: '';
position: absolute;
top: 40px;
left: 50%;
right: -100%;
height: 2px;
background: linear-gradient(90deg, var(--accent-gold), transparent);
z-index: 1;
}
.workflow-step:last-child::before {
display: none;
}
.workflow-number {
width: 80px;
height: 80px;
background: var(--gradient-gold);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
font-weight: 800;
margin: 0 auto 1rem;
color: var(--bg-primary);
position: relative;
z-index: 2;
}
.workflow-title {
color: var(--accent-gold);
font-weight: 700;
margin-bottom: 1rem;
font-size: 1.1rem;
}
.workflow-description {
color: var(--text-secondary);
line-height: 1.6;
font-size: 0.95rem;
}
/* Providers Section */
.providers {
padding: 6rem 0;
background: var(--bg-primary);
}
.providers-grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 2rem;
}
.provider-badge {
background: var(--bg-secondary);
border: 1px solid rgba(212, 165, 116, 0.3);
border-radius: 12px;
padding: 1rem 1.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
transition: all 0.3s ease;
}
.provider-badge:hover {
border-color: var(--accent-gold);
transform: translateY(-2px);
}
.provider-badge span {
font-weight: 600;
color: var(--text-primary);
}
/* Installation Section */
.installation {
padding: 6rem 0;
background: var(--bg-secondary);
}
/* MCP Server Section */
.mcp-server {
padding: 6rem 0;
background: var(--bg-secondary);
}
.mcp-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-bottom: 3rem;
}
.mcp-card {
background: var(--bg-tertiary);
padding: 2rem;
border-radius: 16px;
border: 1px solid rgba(212, 165, 116, 0.2);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.mcp-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at top right, rgba(212, 165, 116, 0.1) 0%, transparent 70%);
opacity: 0;
transition: opacity 0.3s ease;
}
.mcp-card:hover {
transform: translateY(-5px);
border-color: var(--accent-gold);
box-shadow: var(--shadow-gold);
}
.mcp-card:hover::before {
opacity: 1;
}
.mcp-card h3 {
color: var(--accent-gold-light);
margin-bottom: 1rem;
font-size: 1.25rem;
margin-top: 0;
}
.mcp-card ul {
list-style: none;
padding: 0;
}
.mcp-card li {
margin-bottom: 0.5rem;
padding-left: 1.5rem;
position: relative;
color: var(--text-secondary);
}
.mcp-card li::before {
content: '→';
position: absolute;
left: 0;
color: var(--accent-emerald);
}
.mcp-card p {
color: var(--text-secondary);
line-height: 1.6;
}
.mcp-details {
background: var(--bg-tertiary);
padding: 2rem;
border-radius: 16px;
border: 1px solid rgba(212, 165, 116, 0.2);
}
.mcp-details h3 {
color: var(--accent-gold-light);
margin-bottom: 1rem;
margin-top: 0;
}
.mcp-details ol {
margin-left: 1.5rem;
margin-bottom: 2rem;
}
.mcp-details li {
margin-bottom: 0.5rem;
color: var(--text-secondary);
}
.mcp-details code {
background: rgba(212, 165, 116, 0.1);
padding: 0.2rem 0.4rem;
border-radius: 4px;
color: var(--accent-emerald);
font-family: 'Fira Code', monospace;
border: 1px solid rgba(212, 165, 116, 0.2);
}
.info-box {
background: linear-gradient(135deg, rgba(212, 165, 116, 0.08) 0%, rgba(212, 165, 116, 0.03) 100%);
border-left: 5px solid var(--accent-gold);
border-radius: 8px;
padding: 1.5rem;
margin: 2rem 0;
border-top: 1px solid rgba(212, 165, 116, 0.2);
border-right: 1px solid rgba(212, 165, 116, 0.1);
border-bottom: 1px solid rgba(212, 165, 116, 0.1);
}
.info-box h4 {
color: var(--accent-gold);
margin: 0 0 0.75rem 0;
display: flex;
align-items: center;
gap: 0.5rem;
}
.info-box p {
color: var(--text-secondary);
margin: 0.5rem 0;
}
.install-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
}
.install-code {
background: var(--bg-tertiary);
border-radius: 12px;
padding: 2rem;
border: 1px solid rgba(212, 165, 116, 0.2);
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
font-size: 0.95rem;
line-height: 1.5;
overflow-x: auto;
}
.install-code code {
color: #E2E8F0;
}
.install-steps {
padding-left: 0;
}
.install-steps li {
background: var(--bg-tertiary);
border-radius: 8px;
padding: 1.5rem;
margin-bottom: 1rem;
border-left: 4px solid var(--accent-gold);
}
.install-steps h4 {
color: var(--accent-gold);
margin-bottom: 0.5rem;
}
/* Footer */
footer {
background: var(--bg-primary);
padding: 3rem 0 2rem;
border-top: 1px solid rgba(212, 165, 116, 0.2);
}
.footer-content {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 2rem;
margin-bottom: 2rem;
}
.footer-section h4 {
color: var(--accent-gold);
margin-bottom: 1rem;
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 0.5rem;
}
.footer-links a {
color: var(--text-secondary);
text-decoration: none;
transition: color 0.3s ease;
}
.footer-links a:hover {
color: var(--accent-gold);
}
.footer-bottom {
text-align: center;
padding-top: 2rem;
border-top: 1px solid rgba(212, 165, 116, 0.1);
color: var(--text-muted);
}
/* Responsive Design */
/* Mobile - 480px and below */
@media (max-width: 480px) {
.container {
padding: 0 1rem;
}
.hero-content {
grid-template-columns: 1fr;
gap: 1.5rem;
text-align: center;
}
.hero-buttons {
justify-content: center;
flex-direction: column;
}
.hero-buttons .btn {
width: 100%;
}
.features-grid {
grid-template-columns: 1fr;
}
.alchemical-circle {
width: 200px;
height: 200px;
}
}
/* Tablet Portrait - 481px to 768px */
@media (min-width: 481px) and (max-width: 768px) {
.hero-content {
grid-template-columns: 1fr;
gap: 2rem;
text-align: center;
}
.hero-buttons {
justify-content: center;
}
.demo-container,
.install-grid {
grid-template-columns: 1fr;
}
.features-grid {
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
}
/* Tablet Landscape and below - 1024px and below */
@media (max-width: 1024px) {
.demo-container,
.install-grid {
grid-template-columns: 1fr;
}
.footer-content {
grid-template-columns: 1fr;
text-align: center;
}
.providers-grid {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
}
/* Loading Animation */
.loading {
display: inline-block;
width: 20px;
height: 20px;
border: 2px solid var(--accent-gold-light);
border-radius: 50%;
border-top-color: transparent;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* Smooth Scrolling */
html {
scroll-behavior: smooth;
}
/* Visibility Animation */
.fade-in {
opacity: 0;
transform: translateY(30px);
transition: all 0.8s ease;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
/* Utility Classes */
.text-center { text-align: center; }
.text-right { text-align: right; }
.mb-2 { margin-bottom: 2rem; }
.mb-4 { margin-bottom: 4rem; }
.text-muted { color: var(--text-muted); }
/* Accessibility */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* Focus styles */
*:focus {
outline: 2px solid var(--accent-gold);
outline-offset: 2px;
}
*:focus-visible {
outline: 3px solid var(--accent-gold);
outline-offset: 3px;
border-radius: 4px;
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
.alchemical-circle,
.fade-in,
.btn,
.feature-card,
.provider-badge,
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* Skip to content link */
.skip-link {
position: absolute;
top: -40px;
left: 0;
background: var(--accent-gold);
color: var(--bg-primary);
padding: 0.5rem 1rem;
text-decoration: none;
border-radius: 0 0 8px 0;
}
.skip-link:focus {
top: 0;
}
/* SVG Icon Styles */
.icon {
width: 1.25em;
height: 1.25em;
display: inline-block;
vertical-align: middle;
margin-right: 0.5rem;
}
.feature-icon .icon {
width: 1.75rem;
height: 1.75rem;
margin: 0;
}
.alchemical-circle::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 4rem;
height: 4rem;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23D4A574' d='M9 2v5.5L4 17c-.6 1.2.1 2.5 1.5 2.5h13c1.4 0 2.1-1.3 1.5-2.5l-5-9.5V2h-6zm2 1h2v5l.4.8 1.6 3.2H9l1.6-3.2.4-.8V3z'/%3E%3Ccircle cx='9' cy='13' r='1' fill='%23D4A574'/%3E%3Ccircle cx='15' cy='15' r='1' fill='%23D4A574'/%3E%3C/svg%3E");
background-size: contain;
background-repeat: no-repeat;
animation: pulse 2s ease-in-out infinite;
}
</style>
</head>
<body>
<!-- SVG Icon Sprite -->
<svg style="display: none;" aria-hidden="true">
<defs>
<!-- Alchemical Flask Icon -->
<symbol id="icon-flask" viewBox="0 0 24 24">
<path fill="currentColor" d="M9 2v5.5L4 17c-.6 1.2.1 2.5 1.5 2.5h13c1.4 0 2.1-1.3 1.5-2.5l-5-9.5V2h-6zm2 1h2v5l.4.8 1.6 3.2H9l1.6-3.2.4-.8V3z"/>
<circle cx="9" cy="13" r="1" fill="currentColor"/>
<circle cx="15" cy="15" r="1" fill="currentColor"/>
</symbol>
<!-- Crystal Ball Icon -->
<symbol id="icon-crystal" viewBox="0 0 24 24">
<circle cx="12" cy="11" r="7" stroke="currentColor" stroke-width="2" fill="none"/>
<path d="M6 17.5c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2" stroke="currentColor" stroke-width="2" fill="none"/>
<path d="M9 11c.5-1 1.5-2 3-2s2.5 1 3 2" stroke="currentColor" stroke-width="1.5" fill="none" opacity="0.6"/>
</symbol>
<!-- Question Icon -->
<symbol id="icon-question" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" fill="none"/>
<path d="M10 9c0-1.1.9-2 2-2s2 .9 2 2c0 .8-.5 1.5-1.2 1.8-.8.3-1.3 1-1.3 1.9" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/>
<circle cx="12" cy="17" r="1" fill="currentColor"/>
</symbol>
<!-- Mask/Theater Icon -->
<symbol id="icon-mask" viewBox="0 0 24 24">
<path d="M12 2C7 2 3 5.6 3 10c0 3.3 2 6.1 5 7.4V20l4-2 4 2v-2.6c3-1.3 5-4.1 5-7.4 0-4.4-4-8-9-8z" stroke="currentColor" stroke-width="2" fill="none"/>
<circle cx="9" cy="10" r="1.5" fill="currentColor"/>
<circle cx="15" cy="10" r="1.5" fill="currentColor"/>
<path d="M9 13c.5.8 1.5 1.5 3 1.5s2.5-.7 3-1.5" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round"/>
</symbol>
<!-- Keyboard Icon -->
<symbol id="icon-keyboard" viewBox="0 0 24 24">
<rect x="2" y="5" width="20" height="14" rx="2" stroke="currentColor" stroke-width="2" fill="none"/>
<line x1="5" y1="9" x2="7" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
<line x1="9" y1="9" x2="11" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
<line x1="13" y1="9" x2="15" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
<line x1="17" y1="9" x2="19" y2="9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
<line x1="7" y1="15" x2="17" y2="15" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</symbol>
<!-- Monitor/Screen Icon -->
<symbol id="icon-monitor" viewBox="0 0 24 24">
<rect x="2" y="3" width="20" height="14" rx="2" stroke="currentColor" stroke-width="2" fill="none"/>
<line x1="8" y1="21" x2="16" y2="21" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
<line x1="12" y1="17" x2="12" y2="21" stroke="currentColor" stroke-width="2"/>
</symbol>
<!-- Plug/Connection Icon -->
<symbol id="icon-plug" viewBox="0 0 24 24">
<path d="M9 2v3m6-3v3M7 5h10c1.1 0 2 .9 2 2v4c0 3-2 5-5 5h-2c-3 0-5-2-5-5V7c0-1.1.9-2 2-2z" stroke="currentColor" stroke-width="2" fill="none"/>
<line x1="11" y1="16" x2="11" y2="22" stroke="currentColor" stroke-width="2"/>
<line x1="13" y1="16" x2="13" y2="22" stroke="currentColor" stroke-width="2"/>
</symbol>
<!-- Chart/History Icon -->
<symbol id="icon-chart" viewBox="0 0 24 24">
<path d="M3 3v18h18" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/>
<path d="M7 14l4-4 3 3 5-7" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="7" cy="14" r="1.5" fill="currentColor"/>
<circle cx="11" cy="10" r="1.5" fill="currentColor"/>
<circle cx="14" cy="13" r="1.5" fill="currentColor"/>
<circle cx="19" cy="6" r="1.5" fill="currentColor"/>
</symbol>
<!-- Book/Documentation Icon -->
<symbol id="icon-book" viewBox="0 0 24 24">
<path d="M4 19.5C4 18.1 5.1 17 6.5 17H20" stroke="currentColor" stroke-width="2" fill="none"/>
<path d="M6.5 2H20v20H6.5c-1.4 0-2.5-1.1-2.5-2.5v-15C4 3.1 5.1 2 6.5 2z" stroke="currentColor" stroke-width="2" fill="none"/>
<line x1="9" y1="7" x2="17" y2="7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
<line x1="9" y1="11" x2="17" y2="11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
</symbol>
<!-- Code/Terminal Icon -->
<symbol id="icon-terminal" viewBox="0 0 24 24">
<polyline points="4 17 10 11 4 5" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="12" y1="19" x2="20" y2="19" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
</symbol>
<!-- Package/Box Icon -->
<symbol id="icon-package" viewBox="0 0 24 24">
<path d="M12 2L2 7l10 5 10-5-10-5z" stroke="currentColor" stroke-width="2" fill="none" stroke-linejoin="round"/>
<path d="M2 17l10 5 10-5M2 12l10 5 10-5" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</symbol>
</defs>
</svg>
<a href="#main-content" class="skip-link">Skip to content</a>
<!-- Hero Section -->
<section class="hero" id="hero">
<div class="container">
<div class="hero-content">
<div class="hero-text">
<h1>Transform Raw Prompts into AI Gold</h1>
<p class="subheadline">
Promptheus uses advanced AI to transform your basic prompts into polished,
effective queries that get superior results from any LLM.
From vague ideas to precise instructions.
</p>
<div class="hero-buttons">
<a href="documentation.html" class="btn btn-primary" aria-label="Read Documentation">
<svg class="icon" aria-hidden="true"><use href="#icon-book"></use></svg>
Read Documentation
</a>
<a href="#mcp-server" class="btn btn-secondary" aria-label="MCP Server">
<svg class="icon" aria-hidden="true"><use href="#icon-plug"></use></svg>
MCP Server
</a>
<a href="#installation" class="btn btn-ghost" aria-label="Install CLI">
<svg class="icon" aria-hidden="true"><use href="#icon-terminal"></use></svg>
Install CLI
</a>
<a href="https://github.com/abhichandra21/Promptheus" target="_blank" class="btn btn-ghost" aria-label="View on GitHub">
<svg class="icon" aria-hidden="true"><use href="#icon-package"></use></svg>
View on GitHub
</a>
</div>
</div>
<div class="hero-visual">
<div class="alchemical-circle"></div>
</div>
</div>
</div>
</section>
<main id="main-content">
<!-- Features Section -->
<section class="features" id="features">
<div class="container">
<div class="section-header">
<h2>Alchemical Intelligence</h2>
<p class="description">
Just as ancient alchemists transformed base metals into gold,
Promptheus transforms your raw ideas into refined, powerful prompts.
</p>
</div>
<div class="features-grid">
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-crystal"></use></svg>
</div>
<h3>Multi-Provider Support</h3>
<p>
Works with Google Gemini, OpenAI, Anthropic Claude, Groq, Qwen, and GLM.
No vendor lock-in - transform prompts for any AI system.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-question"></use></svg>
</div>
<h3>Intelligent Questioning</h3>
<p>
Automatically asks clarifying questions to understand your intent,
then crafts the perfect prompt with all the right details.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-mask"></use></svg>
</div>
<h3>Multiple Output Styles</h3>
<p>
Choose from bullets, steps, plain text, or concise formats.
Get your refined prompt in the style that best suits your needs.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-keyboard"></use></svg>
</div>
<h3>Powerful CLI Interface</h3>
<p>
Built for developers and power users with keyboard shortcuts,
command history, and seamless pipe integration.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-monitor"></use></svg>
</div>
<h3>Beautiful Web Interface</h3>
<p>
Experience prompt enhancement in a modern, alchemical-themed web UI
with smooth animations and intuitive controls.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-plug"></use></svg>
</div>
<h3>MCP Server Integration</h3>
<p>
Built-in Model Context Protocol server for seamless integration
with AI toolchains and MCP-compatible clients.
</p>
</div>
<div class="feature-card fade-in">
<div class="feature-icon">
<svg class="icon" aria-hidden="true"><use href="#icon-chart"></use></svg>
</div>
<h3>History & Session Management</h3>
<p>
Track your prompt evolution with built-in history.
Load previous refinements and build on your best work.
</p>
</div>
</div>
</div>
</section>
<!-- Demo Section -->
<section class="demo" id="demo">
<div class="container">
<div class="section-header">
<h2>Witness the Transformation</h2>
<p class="description">
See how Promptheus transforms simple prompts into powerful, detailed instructions.
</p>
</div>
<div class="demo-container">
<div class="demo-content">
<h3>Before & After Examples</h3>
<div class="demo-examples">
<div class="demo-card">
<h4>❌ Basic Prompt</h4>
<p>Write a story about a dragon who loses its fire and has to find it again.</p>
</div>
<div class="demo-card">
<h4>✅ Transformed Prompt</h4>
<p>Create a 1000-word fantasy story about Ember, a young dragon who accidentally loses their fire-breathing ability after a magical storm. Include themes of perseverance, self-discovery, and unlikely friendships. The story should have three distinct acts: 1) The accident and Ember's despair, 2) A journey through the forest to find the lost flame, 3) The emotional climax where Ember realizes true power comes from within.</p>
</div>
</div>
</div>
<div class="demo-visual">
<div class="mock-ui">
<div class="mock-ui-header">
<div class="mock-ui-dot"></div>
<div class="mock-ui-dot"></div>
<div class="mock-ui-dot"></div>
</div>
<div class="mock-ui-content">
<strong>🔮 Promptheus Web Interface</strong><br><br>
Enter your raw prompt:<br>
"Help me write an email to my boss"<br><br>
<span style="color: #D4A574;">✨ AI Analysis:</span><br>
• Purpose: Professional communication<br>
• Audience: Manager/supervisor<br>
• Context: Workplace setting<br><br>
<span style="color: #D4A574;">🎯 Clarifying Questions:</span><br>
• What's the purpose of the email?<br>
• What tone should we use?<br>
• Any specific topics to include?
</div>
</div>
</div>
</div>
</div>
</section>
<!-- How It Works Section -->
<section class="how-it-works" id="how-it-works">
<div class="container">
<div class="section-header">
<h2>The Alchemical Process</h2>
<p class="description">
Four simple steps to transform your raw ideas into AI gold.
</p>
</div>
<div class="workflow-container">
<div class="workflow-step fade-in">
<div class="workflow-number">1</div>
<h3 class="workflow-title">Gather Raw Materials</h3>
<p class="workflow-description">
Start with your basic idea or rough prompt.
No need for perfect phrasing - just your raw intention.
</p>
</div>
<div class="workflow-step fade-in">
<div class="workflow-number">2</div>
<h3 class="workflow-title">Apply AI Heat</h3>
<p class="workflow-description">
Our intelligent AI analyzes your intent and asks clarifying questions
to understand exactly what you want to achieve.
</p>
</div>
<div class="workflow-step fade-in">
<div class="workflow-number">3</div>
<h3 class="workflow-title">Transmutation</h3>
<p class="workflow-description">
The alchemical transformation begins. We refine your concept,
add structure, and craft a precise, effective prompt.
</p>
</div>
<div class="workflow-step fade-in">
<div class="workflow-number">4</div>
<h3 class="workflow-title">Extract the Gold</h3>
<p class="workflow-description">
Receive your polished prompt ready for any AI.
Better clarity, better results - the transformation is complete.
</p>
</div>
</div>
</div>
</section>
<!-- Providers Section -->
<section class="providers" id="providers">
<div class="container">
<div class="section-header">
<h2>Supported AI Providers</h2>
<p class="description">
Transform prompts for any AI system. No vendor lock-in here.
</p>
</div>
<div class="providers-grid">
<div class="provider-badge fade-in">
<span>🔵 Google Gemini</span>
</div>
<div class="provider-badge fade-in">
<span>🟢 OpenAI</span>
</div>
<div class="provider-badge fade-in">
<span>🦉 Anthropic Claude</span>
</div>
<div class="provider-badge fade-in">
<span>⚡ Groq</span>
</div>
<div class="provider-badge fade-in">
<span>🌙 Qwen</span>
</div>
<div class="provider-badge fade-in">
<span>🤖 GLM</span>
</div>
</div>
</div>
</section>
<!-- MCP Server Section -->
<section class="mcp-server" id="mcp-server">
<div class="container">
<div class="section-header">
<h2>MCP Server Integration</h2>
<p class="description">
Built-in Model Context Protocol server for seamless integration with AI toolchains and MCP-compatible clients.
</p>
</div>
<div class="mcp-content">
<div class="mcp-grid">
<div class="mcp-card">
<h3>🚀 Quick Start</h3>
<div class="install-code" style="margin-bottom: 1.5rem;">
<code>promptheus mcp</code>
</div>
<ul>
<li>Start server with single command</li>
<li>Connect via MCP-compatible clients</li>
<li>Call tools using standard MCP protocol</li>
<li>Handle clarifications interactively</li>
<li>Integrate with AI toolchains</li>
</ul>
</div>
<div class="mcp-card">
<h3>🛠 Available Tools</h3>
<ul>
<li><strong>refine_prompt</strong> - Intelligent prompt refinement</li>
<li><strong>tweak_prompt</strong> - Surgical prompt modifications</li>
<li><strong>list_models</strong> - Provider model discovery</li>
<li><strong>list_providers</strong> - Configuration status checking</li>
<li><strong>validate_environment</strong> - Environment validation</li>
</ul>
</div>
<div class="mcp-card">
<h3>🎯 Use Cases</h3>
<ul>
<li>AI toolchain integration</li>
<li>Batch prompt processing</li>
<li>Custom AI workflows</li>
<li>Development automation</li>
<li>Automated prompt optimization pipelines</li>
<li>Multi-model prompt testing</li>
</ul>
</div>
</div>
<div class="mcp-details">
<h3>How It Works</h3>
<ol>
<li><strong>Connect:</strong> Start the MCP server with <code>promptheus mcp</code></li>
<li><strong>Discover:</strong> Use <code>list_providers</code> to check available AI providers</li>
<li><strong>Refine:</strong> Call <code>refine_prompt</code> with your basic prompt</li>
<li><strong>Integrate:</strong> Use the refined prompt with your AI toolchain</li>
</ol>
<div class="info-box">
<h4>🔄 Two Integration Modes</h4>
<p><strong>Interactive Mode:</strong> When AskUserQuestion is available, questions are asked automatically.</p>
<p><strong>Structured Mode:</strong> Returns clarification questions for client-side handling.</p>
</div>
</div>
</div>
</div>
</section>
<!-- Installation Section -->
<section class="installation" id="installation">
<div class="container">
<div class="section-header">
<h2>Get Started in Minutes</h2>
<p class="description">
Install Promptheus and start transforming your prompts today.
</p>
</div>
<div class="install-grid">
<div>
<h3>Quick Installation</h3>
<div class="install-code">
<code>pip install promptheus</code>
</div>
<h3>Usage Examples</h3>
<div class="install-code">
<code># Basic usage
promptheus "Write a poem about AI"
# Skip questions
promptheus -s "Explain quantum computing"
# Interactive mode
promptheus
# Different providers
promptheus --provider gemini "Create a marketing plan"
</code>
</div>
</div>
<div>
<ul class="install-steps">
<li>
<h4>Step 1: Install Python</h4>
<p>Ensure you have Python 3.8+ installed. Check with:</p>
<code>python --version</code>
</li>
<li>
<h4>Step 2: Install Promptheus</h4>
<p>Install the package using pip:</p>
<code>pip install promptheus</code>
</li>
<li>
<h4>Step 3: Set Up API Keys</h4>
<p>Add your API keys to environment variables:</p>
<code>export OPENAI_API_KEY="your-key"</code>
</li>
<li>
<h4>Step 4: Start Transforming</h4>
<p>Run Promptheus and watch your prompts transform:</p>
<code>promptheus "Your prompt here"</code>
</li>
</ul>
</div>
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer>
<div class="container">
<div class="footer-content">
<div class="footer-section">
<h4>Product</h4>
<ul class="footer-links">
<li><a href="#features">Features</a></li>
<li><a href="#mcp-server">MCP Server</a></li>
<li><a href="#demo">Demo</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="documentation.html">Documentation</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Resources</h4>
<ul class="footer-links">
<li><a href="https://github.com/abhichandra21/Promptheus" target="_blank">GitHub</a></li>
<li><a href="https://github.com/abhichandra21/Promptheus/releases" target="_blank">Changelog</a></li>
<li><a href="documentation.html#contributing">Contributing</a></li>
<li><a href="https://github.com/abhichandra21/Promptheus/issues" target="_blank">Issues</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Quick Links</h4>
<ul class="footer-links">
<li><a href="#how-it-works">How It Works</a></li>
<li><a href="#providers">Providers</a></li>
<li><a href="documentation.html#troubleshooting">Troubleshooting</a></li>
<li><a href="documentation.html#examples">Examples</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>© 2024 Promptheus. Open source project. MIT License.</p>
</div>
</div>
</footer>
<!-- JavaScript -->
<script>
// Intersection Observer for fade-in animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, observerOptions);
// Observe all fade-in elements
document.querySelectorAll('.fade-in').forEach(el => {
observer.observe(el);
});
// Smooth scroll for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// Parallax effect for hero section with throttling
let ticking = false;
let lastScrollY = 0;
function handleParallax() {
const scrolled = window.pageYOffset;
const hero = document.querySelector('.hero');
const heroContent = document.querySelector('.hero-content');
if (hero && heroContent) {
const parallax = scrolled * 0.5;
heroContent.style.transform = `translateY(${parallax}px)`;
}
lastScrollY = scrolled;
ticking = false;
}
window.addEventListener('scroll', () => {
if (!ticking) {
window.requestAnimationFrame(handleParallax);
ticking = true;
}
});
// Animate counter for GitHub stars (placeholder)
function animateCounter(element, target) {
let current = 0;
const increment = target / 100;
const timer = setInterval(() => {
current += increment;
if (current >= target) {
current = target;
clearInterval(timer);
}
element.textContent = Math.floor(current);
}, 20);
}
// Initialize when DOM is loaded
document.addEventListener('DOMContentLoaded', function() {
console.log('Promptheus landing page loaded');
});
</script>
</body>
</html>