diff --git a/website/bun.lock b/website/bun.lock
index 64b203928..a14a47a64 100644
--- a/website/bun.lock
+++ b/website/bun.lock
@@ -6,6 +6,8 @@
"dependencies": {
"@astrojs/starlight": "^0.35.1",
"astro": "^5.6.1",
+ "gsap": "^3.13.0",
+ "phosphor-astro": "^2.1.0",
"sharp": "^0.34.2",
"starlight-sidebar-topics": "^0.6.0",
"starlight-theme-rapide": "^0.5.1",
@@ -432,6 +434,8 @@
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
+ "gsap": ["gsap@3.13.0", "", {}, "sha512-QL7MJ2WMjm1PHWsoFrAQH/J8wUeqZvMtHO58qdekHpCfhvhSL4gSiz6vJf5EeMP0LOn3ZCprL2ki/gjED8ghVw=="],
+
"h3": ["h3@1.15.3", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.4", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.0", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ=="],
"hast-util-embedded": ["hast-util-embedded@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-is-element": "^3.0.0" } }, "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA=="],
@@ -688,6 +692,8 @@
"parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
+ "phosphor-astro": ["phosphor-astro@2.1.0", "", {}, "sha512-qyYUlxF8DbfHc+85DDGPL04ghNBwrVK75EsNsBfYOChiCeCRwAwfbHxj/qqPrrSFPMgh9cUyEvgKYjI/7bjCUA=="],
+
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
diff --git a/website/src/components/DoodleBackground.astro b/website/src/components/DoodleBackground.astro
new file mode 100644
index 000000000..8244fccfa
--- /dev/null
+++ b/website/src/components/DoodleBackground.astro
@@ -0,0 +1,371 @@
+---
+export interface Props {
+ variant?: 'light' | 'dark' | 'colorful';
+ density?: 'sparse' | 'medium' | 'dense';
+ animated?: boolean;
+ pattern?: 'robots' | 'shapes' | 'mixed' | 'tech';
+}
+
+const {
+ variant = 'light',
+ density = 'medium',
+ animated = true,
+ pattern = 'mixed'
+} = Astro.props;
+
+// Generate random positions for doodles
+const doodleCount = density === 'sparse' ? 8 : density === 'medium' ? 15 : 25;
+const doodles = Array.from({ length: doodleCount }, (_, i) => ({
+ id: i,
+ x: Math.random() * 100,
+ y: Math.random() * 100,
+ type: ['squiggle', 'dot', 'star', 'heart', 'robot', 'circle', 'triangle', 'zigzag'][Math.floor(Math.random() * 8)],
+ size: Math.random() * 0.5 + 0.5,
+ rotation: Math.random() * 360,
+ delay: Math.random() * 5
+}));
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {doodles.map(doodle => (
+
+
+
+ ))}
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsArchitecture.astro b/website/src/components/products/ProductsArchitecture.astro
new file mode 100644
index 000000000..8593f2eb3
--- /dev/null
+++ b/website/src/components/products/ProductsArchitecture.astro
@@ -0,0 +1,900 @@
+---
+// ProductsArchitecture.astro - 3-layer stack explanation component
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
2
+
+
+
AI Models
+
Purpose-built models, not API wrappers. Trained by us, optimized for privacy and performance.
+
+
+
+
+
+
+
+
+
+
+
+
Why This Architecture Matters
+
+
+
+
Tight Integration
+
Each layer is designed to work perfectly with the others. No API incompatibilities or integration headaches.
+
+
+
+
+
Your Control
+
Own your models, choose your deployment, control your data. No vendor lock-in or surprise policy changes.
+
+
+
+
+
Scales With You
+
Start simple with local models, add cloud power when needed, deploy for teams when you're ready.
+
+
+
+
+
+
+
See It In Action
+
+
+
User asks: "Find recent AI research papers"
+
+
+
1
+
+ Tools Layer: Web Search tool activates
+
+
+
+
+
2
+
+ Models Layer: Jan V1 processes the request
+
+
+
+
+
3
+
+ Platform Layer: Results displayed in your app
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsHero.astro b/website/src/components/products/ProductsHero.astro
new file mode 100644
index 000000000..17065c68d
--- /dev/null
+++ b/website/src/components/products/ProductsHero.astro
@@ -0,0 +1,696 @@
+---
+// ProductsHero.astro - Hero section with blue-tinted background and friendly robot
+---
+
+
+
+
+
+
+
+
+
Full Stack AI Solution
+
+
+
+ Jan's Product Roadmap
+ AI that runs where you need it, how you need it
+
+
+
+ Complete ecosystem of models, applications, and tools. Let's build the future of AI together!
+
+
+
+
+
+
+
+
+
+
Ready to build amazing AI experiences?
+
+
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsModels.astro b/website/src/components/products/ProductsModels.astro
new file mode 100644
index 000000000..e01e6bd73
--- /dev/null
+++ b/website/src/components/products/ProductsModels.astro
@@ -0,0 +1,909 @@
+---
+// ProductsModels.astro - AI Models section with detailed specifications
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Complete model family designed to compete with Claude and GPT-4.
+ Optimized for reasoning, coding, and general conversation.
+
+
+
+
+
+
+
Performance
+
+
Context Window
+
32,768 tokens
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Specialized for research and information retrieval. Native MCP integration
+ for web search, document analysis, and knowledge synthesis. Available in 2 flavors.
+
+
+
+
+
+
+
Context Options
+
+
+
Standard
+
32k tokens
+
+
+
Extended
+
128k tokens
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Advanced multimodal capabilities for image understanding, document processing,
+ and visual reasoning tasks. The future of AI interaction.
+
+
+
+
+
+
+
Timeline
+
+
Release Target
+
Q2 2025
+
+
+
+
+
+
Future Capabilities
+
+
+
+
+
+
+
Document Processing
+
+
+
+
+
+
+
+
+
+
+
+
Choose Your Model
+
+
+
+
+
Use Case
+
General AI
+
Research & Mobile
+
Multimodal AI
+
+
+
+
+
+
Parameters
+
7B - 70B
+
4B
+
TBD
+
+
+
+
RAM Required
+
8GB - 64GB
+
6GB - 8GB
+
TBD
+
+
+
+
Best For
+
Coding, Reasoning
+
Research, Mobile
+
Vision, Documents
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsPlatforms.astro b/website/src/components/products/ProductsPlatforms.astro
new file mode 100644
index 000000000..1bb73eb40
--- /dev/null
+++ b/website/src/components/products/ProductsPlatforms.astro
@@ -0,0 +1,1272 @@
+---
+// ProductsPlatforms.astro - Platform ecosystem with mobile integration
+---
+
+
+
+
+
diff --git a/website/src/components/products/ProductsPrinciples.astro b/website/src/components/products/ProductsPrinciples.astro
new file mode 100644
index 000000000..59a45e8f5
--- /dev/null
+++ b/website/src/components/products/ProductsPrinciples.astro
@@ -0,0 +1,528 @@
+---
+// ProductsPrinciples.astro - Why Jan is different comparison
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
API Wrappers
+
Just interfaces around Claude/GPT models
+
+
+
+
+
+
Cloud Only
+
Your data travels to their servers
+
+
+
+
+
+
Subscription Forever
+
Monthly fees that never end
+
+
+
+
+
+
Their Rules
+
Limited by their policies and restrictions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Our Own Models
+
Purpose-built, optimized for your needs
+
+
+
+
+
+
Your Data Stays Yours
+
Local processing, complete privacy
+
+
+
+
+
+
Free Locally
+
No subscriptions for local usage
+
+
+
+
+
+
Your Rules
+
Self-host and control everything
+
+
+
+
+
+
+
+
+
+
Feature Comparison
+
+
+
+
+
+
+
Wrapper around Claude/GPT
+
+
+
Our own models + others
+
+
+
+
+
+
+
Your data on their servers
+
+
+
Your data stays yours
+
+
+
+
+
+
+
+
Local, self-hosted, or cloud
+
+
+
+
+
+
+
+
Free locally, pay for cloud
+
+
+
+
+
+
+
Their rules, their limits
+
+
+
Your infrastructure, your rules
+
+
+
+
+
+
+
+
Our Philosophy
+
+
+
+
+
+
Our Models
+
Trained by us, optimized for your use cases, not subscription revenue. Real AI, not API wrappers.
+
+
+
+
+
+
+
+
Your Infrastructure
+
Run locally for privacy, or cloud when you need power. You choose where your data lives.
+
+
+
+
+
+
+
+
+
+
+
+
Ready for AI that respects your choices?
+
Run it locally for privacy, connect to cloud for power, or self-host for both.
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsRoadmap.astro b/website/src/components/products/ProductsRoadmap.astro
new file mode 100644
index 000000000..ea663882a
--- /dev/null
+++ b/website/src/components/products/ProductsRoadmap.astro
@@ -0,0 +1,763 @@
+---
+// ProductsRoadmap.astro - Interactive release roadmap database
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a user, I want to search the web directly from Jan chat for real-time information
+ As a developer, I want better API documentation for integration
+ As a researcher, I want source attribution for all search results
+
+
+
+
New Features
+
+ Privacy-respecting web search integration
+ Multiple search engine support
+ Improved model downloading experience
+ Enhanced error handling and user feedback
+
+
+
+
Documentation
+
+ Web Search API documentation
+ Privacy policy updates
+ Search configuration guide
+
+
+
+
+
+
+
+
+
+
+
+
v0.6.5
+
Desktop Stability
+
+
+
+
+
+
+
+
+
+
Improvements
+
+ Enhanced memory management for large models
+ Improved GPU utilization
+ Better cross-platform compatibility
+
+
+
+
Bug Fixes
+
+ Fixed model loading crashes on Windows
+ Resolved memory leaks in long conversations
+ Fixed UI freezing during model downloads
+
+
+
+
+
+
+
+
+
+
+
+
+
v0.7.0
+
Deep Research
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a researcher, I want to conduct deep research with multiple sources and citations
+ As a user, I want Jan Nano to work seamlessly on mobile devices
+ As a team lead, I want to preview jan.ai for my organization
+
+
+
+
New Features
+
+ Deep research capabilities with multi-source analysis
+ jan.ai web platform beta launch
+ Improved Jan Nano performance and mobile optimization
+ Citation management and research reports
+
+
+
+
Documentation
+
+ Research methodology guide
+ jan.ai platform documentation
+ Mobile optimization best practices
+
+
+
+
+
+
+
+
+
+
+
+
v0.8.0
+
Browser Automation
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a user, I want Jan to automate web tasks for me safely and efficiently
+ As a business user, I want to automate repetitive web workflows
+ As a developer, I want browser automation APIs for custom integrations
+
+
+
+
New Features
+
+ Browser automation capabilities (Beta)
+ Form filling and data extraction
+ Website navigation and interaction
+ Safety policies and user confirmation flows
+
+
+
+
Documentation
+
+ Browser automation safety guide
+ Web scraping best practices
+ API reference for automation tools
+
+
+
+
+
+
+
+
+
+
+
+
+
v0.9.0
+
Mobile Launch
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a mobile user, I want Jan AI available on my iOS/Android device
+ As a commuter, I want to seamlessly switch between desktop and mobile
+ As a privacy-conscious user, I want local AI on my phone
+
+
+
+
New Features
+
+ iOS and Android mobile applications
+ Three adaptive modes (Desktop, Server, Local)
+ Voice-first interface
+ Cross-device synchronization
+ Jan Nano on-device processing
+
+
+
+
Documentation
+
+ Mobile setup and configuration guide
+ Voice interaction best practices
+ Device syncing tutorial
+
+
+
+
+
+
+
+
+
+
+
+
v1.0.0
+
Server Edition
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As an IT admin, I want to deploy Jan for my entire organization
+ As a team lead, I want centralized AI with team collaboration features
+ As a CTO, I want enterprise-grade security and compliance
+
+
+
+
New Features
+
+ Multi-user server deployment
+ Enterprise authentication (SSO, LDAP)
+ Team collaboration and shared conversations
+ Docker and Kubernetes deployment options
+ Admin dashboard and user management
+
+
+
+
Documentation
+
+ Enterprise deployment guide
+ Security and compliance documentation
+ Admin management tutorials
+
+
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a user, I want autonomous agents to handle complex multi-step tasks
+ As a business owner, I want AI that can coordinate multiple tools automatically
+ As a power user, I want to create custom agent workflows
+
+
+
+
New Features
+
+ Autonomous AI agents
+ Multi-step task planning and execution
+ Tool orchestration and coordination
+ Goal-oriented intelligent reasoning
+ Custom agent workflow builder
+
+
+
+
Documentation
+
+ Agent development guide
+ Workflow automation tutorials
+ Safety and oversight best practices
+
+
+
+
+
+
+
+
+
+
+
+
v1.2.0
+
Lucy Multimodal
+
+
+
+
+
+
+
+
+
+
User Stories
+
+ As a content creator, I want AI that can understand and process images
+ As a researcher, I want to analyze documents with both text and visuals
+ As a designer, I want AI that can help with visual content creation
+
+
+
+
New Features
+
+ Lucy multimodal model release
+ Image understanding and analysis
+ Document processing with OCR
+ Visual reasoning capabilities
+ Audio processing (planned)
+
+
+
+
Documentation
+
+ Multimodal AI usage guide
+ Image processing tutorials
+ Visual reasoning examples
+
+
+
+
+
+
+
+
+
+
+
+
+
Join Our Journey
+
Be part of building the future of AI. Download Jan today and help shape our roadmap.
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsTOC.astro b/website/src/components/products/ProductsTOC.astro
new file mode 100644
index 000000000..02f8a8174
--- /dev/null
+++ b/website/src/components/products/ProductsTOC.astro
@@ -0,0 +1,628 @@
+---
+// ProductsTOC.astro - Sticky table of contents navigation
+---
+
+
+
+
+
+
+
+
+
+
+
+
+ Getting Started
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsTools.astro b/website/src/components/products/ProductsTools.astro
new file mode 100644
index 000000000..e1c50efd2
--- /dev/null
+++ b/website/src/components/products/ProductsTools.astro
@@ -0,0 +1,1150 @@
+---
+// ProductsTools.astro - Tools and capabilities section
+---
+
+
+
+
+
+
diff --git a/website/src/components/products/ProductsVision.astro b/website/src/components/products/ProductsVision.astro
new file mode 100644
index 000000000..aa02974b5
--- /dev/null
+++ b/website/src/components/products/ProductsVision.astro
@@ -0,0 +1,810 @@
+---
+// ProductsVision.astro - Product vision and principles section
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Local (Incognito) Mode
+
Run AI models entirely on your device, giving you complete privacy with no internet required.
+
+
+
+
+
No internet required
+
+
+
+
Your hardware, your data
+
+
+
+
+
+
+
+
+
+
Cloud Mode
+
Connect to more powerful models when needed - either self-hosted or via jan.ai.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
It Just Works
+
+
1. Open Jan, start chatting.
+
2. Onboarding is fully available but optional.
+
3. Setting up an API key is optional.
+
4. Selecting a local model is optional.
+
+
We handle the complexity.
+
+
+
+
+
+
+
Privacy First, Cloud When Needed
+
Start with complete privacy by default. Add cloud capabilities only when you choose to.
+
+ Your choice, your control, your data.
+
+
+
+
+
+
+
+
Solve Problems, Not Settings
+
Users want answers, not configuration options. Power users can dig deeper, but it's never required.
+
+ Focus on what matters: getting things done.
+
+
+
+
+
+
+
+
+
diff --git a/website/src/pages/prods.astro b/website/src/pages/prods.astro
index dd6ea9c97..64b1d1bfe 100644
--- a/website/src/pages/prods.astro
+++ b/website/src/pages/prods.astro
@@ -1,1867 +1,310 @@
---
import Layout from '../layouts/Layout.astro';
-import CircuitBackground from '../components/CircuitBackground.astro';
-import StatusIndicator from '../components/StatusIndicator.astro';
-import RetroCard from '../components/RetroCard.astro';
-import FloatingNav from '../components/FloatingNav.astro';
+import ProductsHero from '../components/products/ProductsHero.astro';
+import ProductsTOC from '../components/products/ProductsTOC.astro';
+import ProductsVision from '../components/products/ProductsVision.astro';
+import ProductsArchitecture from '../components/products/ProductsArchitecture.astro';
+import ProductsModels from '../components/products/ProductsModels.astro';
+import ProductsPlatforms from '../components/products/ProductsPlatforms.astro';
+import ProductsTools from '../components/products/ProductsTools.astro';
+import ProductsPrinciples from '../components/products/ProductsPrinciples.astro';
+import ProductsRoadmap from '../components/products/ProductsRoadmap.astro';
+import DoodleBackground from '../components/DoodleBackground.astro';
---
-
+
+
+
-
-
+
+
-
-
-
-
- ⚡
- Open Superintelligence
-
-
- Jan's Product Roadmap
- Models • Platforms • Tools
-
-
- Complete AI ecosystem that you control. Our models, your infrastructure, real capabilities.
-
-
-
- 3
- AI Models
-
-
- 4
- Platforms
-
-
- 4
- Tools
-
-
-
-
+
-
-
-
-
Product Architecture
-
-
-
+
+
-
-
-
- Jan V1 Series
- Jan Nano
- Lucy
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
Parameters
-
- 7B 8GB RAM
- 13B 16GB RAM
- 70B 64GB RAM
-
-
-
-
Context Window
-
- 32,768 tokens
-
-
-
-
-
- Complete model family designed to compete with Claude and GPT-4.
- Optimized for reasoning, coding, and general conversation.
-
-
-
- Reasoning
- Code Generation
- Multilingual
- Tool Use
-
-
-
-
-
-
-
-
-
Parameters
-
- 4B 6-8GB RAM
-
-
-
-
Context Options
-
- 32k Standard
- 128k Extended
-
-
-
-
-
- Specialized for research and information retrieval. Native MCP integration
- for web search, document analysis, and knowledge synthesis.
-
-
-
- Web Search
- Document Analysis
- Citation Management
- MCP Tools
-
-
-
-
-
-
-
-
-
Modalities
-
- Vision
- Text
- Audio Soon
-
-
-
-
Release
-
- Q2 2025
-
-
-
-
-
- Advanced multimodal capabilities for image understanding, document processing,
- and visual reasoning tasks.
-
-
-
- Image Analysis
- OCR
- Visual Reasoning
- Document Processing
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
Why This Matters
-
- Most AI is just a wrapper around someone else's models. Jan is different.
- We build the models, control the infrastructure, and integrate the tools.
-
-
-
-
🧠
-
-
Our Models
-
Trained by us, optimized for your use cases, not subscription revenue.
-
-
-
-
🏠
-
-
Your Infrastructure
-
Run locally for privacy, or cloud when you need power. You choose.
-
-
-
-
🔧
-
-
Real Tools
-
Not just chat, but automation that actually gets things done.
-
-
-
-
-
-
-
- ⚡
- Jan
-
-
- Models
-
-
- Platforms
-
-
- Tools
-
-
-
-
-
-
-
-
-
-
-
-
Start Building With Jan
-
Download Jan Desktop today and experience AI that runs where you need it.
-
-
-
- 3M+
- Downloads
-
-
- 100%
- Open Source
-
-
- 0
- Data Collection
-
-
-
-
-
+
+
-
-
+
+
diff --git a/website/src/scripts/robot-interactions.js b/website/src/scripts/robot-interactions.js
new file mode 100644
index 000000000..143cb2697
--- /dev/null
+++ b/website/src/scripts/robot-interactions.js
@@ -0,0 +1,697 @@
+// Robot Interactions - Make robots come alive with personality!
+
+class RobotInteractions {
+ constructor() {
+ this.robots = [];
+ this.mousePosition = { x: 0, y: 0 };
+ this.isInitialized = false;
+
+ // Robot moods and states
+ this.moods = ['happy', 'curious', 'excited', 'sleepy', 'thinking'];
+ this.currentMood = 'happy';
+
+ // Easter egg: secret robot dance
+ this.konami = [];
+ this.konamiCode = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
+ }
+
+ init() {
+ if (this.isInitialized) return;
+
+ this.findRobots();
+ this.setupEventListeners();
+ this.startIdleAnimations();
+ this.setupEasterEggs();
+
+ this.isInitialized = true;
+ }
+
+ findRobots() {
+ // Find all robot elements
+ const robotElements = document.querySelectorAll('.robot-head, .robot-container, .model-robot, .platform-robot, .tool-robot');
+
+ robotElements.forEach(robot => {
+ const eyes = robot.querySelectorAll('.robot-eye');
+ if (eyes.length > 0) {
+ this.robots.push({
+ element: robot,
+ eyes: Array.from(eyes),
+ originalPositions: Array.from(eyes).map(eye => {
+ const rect = eye.getBoundingClientRect();
+ return {
+ x: rect.left + rect.width / 2,
+ y: rect.top + rect.height / 2
+ };
+ }),
+ isBlinking: false,
+ mood: 'happy'
+ });
+ }
+ });
+ }
+
+ setupEventListeners() {
+ // Track mouse movement
+ document.addEventListener('mousemove', (e) => {
+ this.mousePosition = { x: e.clientX, y: e.clientY };
+ this.updateEyes();
+ });
+
+ // Robot hover interactions
+ this.robots.forEach(robot => {
+ robot.element.addEventListener('mouseenter', () => this.onRobotHover(robot));
+ robot.element.addEventListener('mouseleave', () => this.onRobotLeave(robot));
+ robot.element.addEventListener('click', () => this.onRobotClick(robot));
+ });
+
+ // Keyboard interactions
+ document.addEventListener('keydown', (e) => this.handleKeyPress(e));
+ }
+
+ updateEyes() {
+ this.robots.forEach(robot => {
+ if (robot.isBlinking) return;
+
+ robot.eyes.forEach((eye, index) => {
+ // Skip sleeping or closed eyes
+ if (eye.classList.contains('sleeping') || eye.classList.contains('closed')) return;
+
+ const eyeRect = eye.getBoundingClientRect();
+ const eyeCenter = {
+ x: eyeRect.left + eyeRect.width / 2,
+ y: eyeRect.top + eyeRect.height / 2
+ };
+
+ // Calculate angle between eye and mouse
+ const angle = Math.atan2(
+ this.mousePosition.y - eyeCenter.y,
+ this.mousePosition.x - eyeCenter.x
+ );
+
+ // Calculate distance (capped for natural movement)
+ const distance = Math.min(
+ Math.hypot(
+ this.mousePosition.x - eyeCenter.x,
+ this.mousePosition.y - eyeCenter.y
+ ) / 10,
+ 3 // Maximum pupil movement
+ );
+
+ // Move the pupil (eye shine)
+ const pupil = eye.querySelector('::after') || eye;
+ const offsetX = Math.cos(angle) * distance;
+ const offsetY = Math.sin(angle) * distance;
+
+ // Apply transform to eye or create inner pupil
+ if (!eye.querySelector('.pupil')) {
+ const pupilElement = document.createElement('div');
+ pupilElement.className = 'pupil';
+ eye.appendChild(pupilElement);
+ }
+
+ const pupilElement = eye.querySelector('.pupil');
+ if (pupilElement) {
+ pupilElement.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
+ }
+ });
+ });
+ }
+
+ onRobotHover(robot) {
+ // Add excited animation
+ robot.element.classList.add('hover-active');
+
+ // Make eyes bigger
+ robot.eyes.forEach(eye => {
+ eye.style.transform = 'scale(1.2)';
+ eye.classList.add('excited');
+ });
+
+ // Add blush effect
+ this.addBlush(robot);
+
+ // Random reaction
+ const reactions = ['happy', 'surprised', 'love'];
+ const reaction = reactions[Math.floor(Math.random() * reactions.length)];
+
+ if (reaction === 'love') {
+ robot.eyes.forEach(eye => eye.classList.add('love'));
+ }
+ }
+
+ onRobotLeave(robot) {
+ robot.element.classList.remove('hover-active');
+
+ // Reset eyes
+ robot.eyes.forEach(eye => {
+ eye.style.transform = '';
+ eye.classList.remove('excited', 'love');
+ });
+
+ // Remove blush
+ this.removeBlush(robot);
+ }
+
+ onRobotClick(robot) {
+ // Trigger a fun animation
+ this.makeRobotJump(robot);
+ this.makeRobotSpeak(robot);
+
+ // Easter egg: clicking 5 times makes robot do a dance
+ if (!robot.clickCount) robot.clickCount = 0;
+ robot.clickCount++;
+
+ if (robot.clickCount >= 5) {
+ this.robotDance(robot);
+ robot.clickCount = 0;
+ }
+ }
+
+ makeRobotJump(robot) {
+ robot.element.style.animation = 'robotJump 0.6s ease-out';
+ setTimeout(() => {
+ robot.element.style.animation = '';
+ }, 600);
+ }
+
+ makeRobotSpeak(robot) {
+ const messages = [
+ "Hello there! 👋",
+ "Beep boop! 🤖",
+ "AI at your service!",
+ "Let's build something cool!",
+ "Privacy first! 🔒",
+ "Running locally! 💪",
+ "*happy robot noises*",
+ "01001000 01101001! (Hi in binary!)"
+ ];
+
+ const message = messages[Math.floor(Math.random() * messages.length)];
+ this.showSpeechBubble(robot, message);
+ }
+
+ showSpeechBubble(robot, message) {
+ // Remove existing bubble
+ const existingBubble = robot.element.querySelector('.robot-speech-bubble');
+ if (existingBubble) existingBubble.remove();
+
+ // Create new bubble
+ const bubble = document.createElement('div');
+ bubble.className = 'robot-speech-bubble';
+ bubble.innerHTML = `
+ ${message}
+
+ `;
+
+ robot.element.appendChild(bubble);
+
+ // Remove after 3 seconds
+ setTimeout(() => {
+ bubble.classList.add('fade-out');
+ setTimeout(() => bubble.remove(), 300);
+ }, 3000);
+ }
+
+ startIdleAnimations() {
+ // Random blinking
+ setInterval(() => {
+ this.robots.forEach(robot => {
+ if (Math.random() < 0.1 && !robot.isBlinking) {
+ this.makeRobotBlink(robot);
+ }
+ });
+ }, 2000);
+
+ // Random mood changes
+ setInterval(() => {
+ const robot = this.robots[Math.floor(Math.random() * this.robots.length)];
+ if (robot && Math.random() < 0.3) {
+ this.changeRobotMood(robot);
+ }
+ }, 5000);
+ }
+
+ makeRobotBlink(robot) {
+ robot.isBlinking = true;
+
+ robot.eyes.forEach(eye => {
+ eye.style.transition = 'height 0.1s ease';
+ eye.style.height = '2px';
+
+ setTimeout(() => {
+ eye.style.height = '';
+ robot.isBlinking = false;
+ }, 150);
+ });
+ }
+
+ changeRobotMood(robot) {
+ const moods = ['thinking', 'happy', 'curious'];
+ const mood = moods[Math.floor(Math.random() * moods.length)];
+
+ switch(mood) {
+ case 'thinking':
+ this.showThinkingBubbles(robot);
+ break;
+ case 'happy':
+ this.makeRobotSmile(robot);
+ break;
+ case 'curious':
+ this.makeRobotLookAround(robot);
+ break;
+ }
+ }
+
+ showThinkingBubbles(robot) {
+ const bubbles = document.createElement('div');
+ bubbles.className = 'thinking-bubbles';
+ bubbles.innerHTML = `
+
+
+ 💭
+ `;
+
+ robot.element.appendChild(bubbles);
+
+ setTimeout(() => {
+ bubbles.classList.add('fade-out');
+ setTimeout(() => bubbles.remove(), 300);
+ }, 3000);
+ }
+
+ makeRobotSmile(robot) {
+ const smile = robot.element.querySelector('.robot-smile');
+ if (smile) {
+ smile.classList.add('big-smile');
+ setTimeout(() => smile.classList.remove('big-smile'), 2000);
+ }
+ }
+
+ makeRobotLookAround(robot) {
+ let direction = -1;
+ const lookInterval = setInterval(() => {
+ robot.eyes.forEach(eye => {
+ eye.style.transform = `translateX(${direction * 3}px)`;
+ });
+ direction *= -1;
+ }, 500);
+
+ setTimeout(() => {
+ clearInterval(lookInterval);
+ robot.eyes.forEach(eye => {
+ eye.style.transform = '';
+ });
+ }, 2000);
+ }
+
+ addBlush(robot) {
+ const head = robot.element.querySelector('.robot-head') || robot.element;
+
+ ['left', 'right'].forEach(side => {
+ const blush = document.createElement('div');
+ blush.className = `robot-blush ${side}`;
+ head.appendChild(blush);
+ });
+ }
+
+ removeBlush(robot) {
+ const blushes = robot.element.querySelectorAll('.robot-blush');
+ blushes.forEach(blush => blush.remove());
+ }
+
+ setupEasterEggs() {
+ // Konami code for robot dance party
+ document.addEventListener('keydown', (e) => {
+ this.konami.push(e.key);
+ this.konami = this.konami.slice(-10);
+
+ if (this.konami.join(',') === this.konamiCode.join(',')) {
+ this.robotDanceParty();
+ }
+ });
+
+ // Secret robot activation phrase
+ let secretPhrase = '';
+ document.addEventListener('keypress', (e) => {
+ secretPhrase += e.key;
+ secretPhrase = secretPhrase.slice(-10);
+
+ if (secretPhrase.includes('robot')) {
+ this.activateSecretRobotMode();
+ }
+ });
+ }
+
+ robotDanceParty() {
+ document.body.classList.add('robot-dance-party');
+
+ // Make all robots dance
+ this.robots.forEach((robot, index) => {
+ setTimeout(() => {
+ this.robotDance(robot);
+ }, index * 200);
+ });
+
+ // Add disco lights
+ this.addDiscoLights();
+
+ // Stop after 10 seconds
+ setTimeout(() => {
+ document.body.classList.remove('robot-dance-party');
+ this.removeDiscoLights();
+ }, 10000);
+ }
+
+ robotDance(robot) {
+ robot.element.classList.add('dancing');
+
+ // Random dance moves
+ const dances = ['wiggle', 'spin', 'bounce', 'shake'];
+ const dance = dances[Math.floor(Math.random() * dances.length)];
+
+ robot.element.style.animation = `robot-${dance} 1s ease-in-out infinite`;
+
+ setTimeout(() => {
+ robot.element.style.animation = '';
+ robot.element.classList.remove('dancing');
+ }, 5000);
+ }
+
+ addDiscoLights() {
+ const disco = document.createElement('div');
+ disco.className = 'disco-lights';
+ disco.innerHTML = `
+ 🪩
+
+
+
+
+ `;
+ document.body.appendChild(disco);
+ }
+
+ removeDiscoLights() {
+ const disco = document.querySelector('.disco-lights');
+ if (disco) disco.remove();
+ }
+
+ activateSecretRobotMode() {
+ // Make all robots super happy
+ this.robots.forEach(robot => {
+ robot.eyes.forEach(eye => {
+ eye.classList.add('sparkle', 'rainbow');
+ });
+
+ this.showSpeechBubble(robot, "Secret mode activated! 🎉");
+ });
+
+ // Remove after 5 seconds
+ setTimeout(() => {
+ this.robots.forEach(robot => {
+ robot.eyes.forEach(eye => {
+ eye.classList.remove('sparkle', 'rainbow');
+ });
+ });
+ }, 5000);
+ }
+
+ handleKeyPress(e) {
+ // Number keys change robot expressions
+ if (e.key >= '1' && e.key <= '9') {
+ const expressions = ['happy', 'sad', 'surprised', 'angry', 'love', 'sleepy', 'wink', 'dizzy', 'cool'];
+ const expression = expressions[parseInt(e.key) - 1];
+
+ if (expression) {
+ this.robots.forEach(robot => {
+ this.setRobotExpression(robot, expression);
+ });
+ }
+ }
+ }
+
+ setRobotExpression(robot, expression) {
+ // Clear previous expressions
+ const allExpressions = ['happy', 'sad', 'surprised', 'angry', 'love', 'sleepy', 'wink', 'dizzy', 'cool'];
+ robot.eyes.forEach(eye => {
+ allExpressions.forEach(exp => eye.classList.remove(exp));
+ eye.classList.add(expression);
+ });
+
+ // Remove after 3 seconds
+ setTimeout(() => {
+ robot.eyes.forEach(eye => {
+ eye.classList.remove(expression);
+ });
+ }, 3000);
+ }
+}
+
+// Initialize when DOM is ready
+if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', () => {
+ window.robotInteractions = new RobotInteractions();
+ window.robotInteractions.init();
+ });
+} else {
+ window.robotInteractions = new RobotInteractions();
+ window.robotInteractions.init();
+}
+
+// Add required styles dynamically
+const style = document.createElement('style');
+style.textContent = `
+ /* Pupil for eye tracking */
+ .robot-eye .pupil {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 40%;
+ height: 40%;
+ background: white;
+ border-radius: 50%;
+ transform: translate(-50%, -50%);
+ transition: transform 0.1s ease-out;
+ pointer-events: none;
+ }
+
+ /* Speech bubble */
+ .robot-speech-bubble {
+ position: absolute;
+ bottom: 110%;
+ left: 50%;
+ transform: translateX(-50%);
+ background: white;
+ color: #1A1A2E;
+ padding: 0.75rem 1rem;
+ border-radius: 20px;
+ border: 3px solid #1A1A2E;
+ font-size: 0.9rem;
+ font-weight: 600;
+ white-space: nowrap;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
+ animation: bubbleIn 0.3s ease-out;
+ z-index: 100;
+ }
+
+ .robot-speech-bubble.fade-out {
+ animation: bubbleOut 0.3s ease-in forwards;
+ }
+
+ .bubble-tail {
+ position: absolute;
+ bottom: -8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 0;
+ height: 0;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 10px solid white;
+ }
+
+ .bubble-tail::before {
+ content: '';
+ position: absolute;
+ bottom: 2px;
+ left: -10px;
+ width: 0;
+ height: 0;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 12px solid #1A1A2E;
+ }
+
+ /* Thinking bubbles */
+ .thinking-bubbles {
+ position: absolute;
+ top: -40px;
+ right: -20px;
+ animation: bubbleFloat 3s ease-in-out;
+ }
+
+ .thinking-bubbles.fade-out {
+ animation: fadeOut 0.3s ease-in forwards;
+ }
+
+ .think-bubble {
+ position: absolute;
+ background: white;
+ border: 2px solid #1A1A2E;
+ border-radius: 50%;
+ }
+
+ .think-bubble.small {
+ width: 8px;
+ height: 8px;
+ bottom: 0;
+ left: 0;
+ }
+
+ .think-bubble.medium {
+ width: 12px;
+ height: 12px;
+ bottom: 10px;
+ left: -5px;
+ }
+
+ .think-bubble.large {
+ width: 30px;
+ height: 30px;
+ bottom: 25px;
+ left: -15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 16px;
+ }
+
+ /* Big smile animation */
+ .robot-smile.big-smile {
+ width: 30px !important;
+ height: 15px !important;
+ border-width: 4px !important;
+ }
+
+ /* Dance animations */
+ @keyframes robot-wiggle {
+ 0%, 100% { transform: rotate(-5deg); }
+ 50% { transform: rotate(5deg); }
+ }
+
+ @keyframes robot-spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+ }
+
+ @keyframes robot-bounce {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-20px); }
+ }
+
+ @keyframes robot-shake {
+ 0%, 100% { transform: translateX(0); }
+ 25% { transform: translateX(-5px); }
+ 75% { transform: translateX(5px); }
+ }
+
+ @keyframes robotJump {
+ 0%, 100% { transform: translateY(0) scale(1); }
+ 50% { transform: translateY(-30px) scale(1.1); }
+ }
+
+ @keyframes bubbleIn {
+ 0% { opacity: 0; transform: translateX(-50%) scale(0.8); }
+ 100% { opacity: 1; transform: translateX(-50%) scale(1); }
+ }
+
+ @keyframes bubbleOut {
+ 0% { opacity: 1; transform: translateX(-50%) scale(1); }
+ 100% { opacity: 0; transform: translateX(-50%) scale(0.8); }
+ }
+
+ @keyframes fadeOut {
+ 0% { opacity: 1; }
+ 100% { opacity: 0; }
+ }
+
+ @keyframes bubbleFloat {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-5px); }
+ }
+
+ /* Disco mode */
+ .disco-lights {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ pointer-events: none;
+ z-index: 9999;
+ }
+
+ .disco-ball {
+ position: absolute;
+ top: 50px;
+ left: 50%;
+ transform: translateX(-50%);
+ font-size: 60px;
+ animation: discoSpin 2s linear infinite;
+ }
+
+ .light-beam {
+ position: absolute;
+ top: 100px;
+ left: 50%;
+ width: 100px;
+ height: 500px;
+ opacity: 0.3;
+ transform-origin: top center;
+ animation: lightSweep 4s ease-in-out infinite;
+ }
+
+ .light-beam.red { background: linear-gradient(transparent, #FF006E); }
+ .light-beam.blue { background: linear-gradient(transparent, #3A86FF); animation-delay: 1s; }
+ .light-beam.green { background: linear-gradient(transparent, #06FFA5); animation-delay: 2s; }
+ .light-beam.yellow { background: linear-gradient(transparent, #FFB700); animation-delay: 3s; }
+
+ @keyframes discoSpin {
+ 0% { transform: translateX(-50%) rotate(0deg); }
+ 100% { transform: translateX(-50%) rotate(360deg); }
+ }
+
+ @keyframes lightSweep {
+ 0%, 100% { transform: translateX(-50%) rotate(-30deg); }
+ 50% { transform: translateX(-50%) rotate(30deg); }
+ }
+
+ /* Rainbow eyes */
+ .robot-eye.rainbow {
+ animation: rainbowEyes 2s linear infinite;
+ }
+
+ @keyframes rainbowEyes {
+ 0% { background: #FF006E; }
+ 25% { background: #3A86FF; }
+ 50% { background: #06FFA5; }
+ 75% { background: #FFB700; }
+ 100% { background: #FF006E; }
+ }
+
+ /* Sparkle effect */
+ .robot-eye.sparkle::before {
+ content: '✨';
+ position: absolute;
+ top: -10px;
+ right: -10px;
+ font-size: 12px;
+ animation: sparkleFloat 1s ease-in-out infinite;
+ }
+
+ @keyframes sparkleFloat {
+ 0%, 100% { transform: translateY(0) rotate(0deg); }
+ 50% { transform: translateY(-5px) rotate(180deg); }
+ }
+`;
+
+document.head.appendChild(style);
diff --git a/website/src/styles/hand-drawn.css b/website/src/styles/hand-drawn.css
new file mode 100644
index 000000000..fe64e358e
--- /dev/null
+++ b/website/src/styles/hand-drawn.css
@@ -0,0 +1,667 @@
+/* Hand-Drawn UI Styles - PostHog-inspired playful design */
+
+/* ===== HAND-DRAWN BORDERS ===== */
+.hand-drawn-border {
+ position: relative;
+ border: none !important;
+}
+
+.hand-drawn-border::before {
+ content: '';
+ position: absolute;
+ inset: -2px;
+ background: transparent;
+ border: 3px solid currentColor;
+ border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
+ pointer-events: none;
+}
+
+.hand-drawn-border.thick::before {
+ border-width: 4px;
+ inset: -3px;
+}
+
+.hand-drawn-border.animated::before {
+ animation: borderWobble 8s ease-in-out infinite;
+}
+
+@keyframes borderWobble {
+ 0%, 100% {
+ border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
+ }
+ 25% {
+ border-radius: 15px 255px 15px 225px/225px 15px 255px 15px;
+ }
+ 50% {
+ border-radius: 225px 15px 255px 15px/15px 255px 15px 225px;
+ }
+ 75% {
+ border-radius: 15px 225px 15px 255px/255px 15px 225px 15px;
+ }
+}
+
+/* ===== SKETCHY BUTTONS ===== */
+.btn-sketchy {
+ position: relative;
+ background: var(--robot-yellow);
+ color: var(--robot-dark);
+ padding: 1rem 2rem;
+ border: none;
+ font-weight: 700;
+ font-size: 1rem;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ overflow: visible;
+}
+
+.btn-sketchy::before {
+ content: '';
+ position: absolute;
+ inset: -3px;
+ background: var(--robot-yellow);
+ transform: rotate(-1deg);
+ border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
+ z-index: -1;
+ transition: all 0.3s ease;
+}
+
+.btn-sketchy::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ border: 3px solid var(--robot-dark);
+ border-radius: 225px 15px 255px 15px/15px 255px 15px 225px;
+ transform: rotate(0.5deg);
+}
+
+.btn-sketchy:hover {
+ transform: translateY(-2px) rotate(-0.5deg);
+}
+
+.btn-sketchy:hover::before {
+ transform: rotate(-2deg) scale(1.05);
+ background: var(--robot-orange);
+}
+
+.btn-sketchy:hover::after {
+ transform: rotate(1deg);
+}
+
+.btn-sketchy:active {
+ transform: translateY(0) rotate(0deg);
+}
+
+/* ===== HAND-DRAWN ARROWS ===== */
+.arrow-doodle {
+ position: relative;
+ width: 100px;
+ height: 50px;
+}
+
+.arrow-doodle svg {
+ width: 100%;
+ height: 100%;
+ overflow: visible;
+}
+
+.arrow-doodle path {
+ fill: none;
+ stroke: var(--robot-dark);
+ stroke-width: 3;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+
+.arrow-doodle.animated path {
+ stroke-dasharray: 100;
+ stroke-dashoffset: 100;
+ animation: drawArrow 2s ease-in-out infinite;
+}
+
+@keyframes drawArrow {
+ 0% { stroke-dashoffset: 100; }
+ 50% { stroke-dashoffset: 0; }
+ 100% { stroke-dashoffset: -100; }
+}
+
+/* ===== WOBBLY UNDERLINES ===== */
+.underline-wobble {
+ position: relative;
+ text-decoration: none;
+ display: inline-block;
+}
+
+.underline-wobble::after {
+ content: '';
+ position: absolute;
+ bottom: -4px;
+ left: 0;
+ right: 0;
+ height: 3px;
+ background: currentColor;
+ clip-path: polygon(
+ 0% 50%,
+ 2% 35%,
+ 4% 65%,
+ 6% 45%,
+ 8% 55%,
+ 10% 40%,
+ 12% 60%,
+ 14% 50%,
+ 16% 35%,
+ 18% 65%,
+ 20% 45%,
+ 22% 55%,
+ 24% 40%,
+ 26% 60%,
+ 28% 50%,
+ 30% 35%,
+ 32% 65%,
+ 34% 45%,
+ 36% 55%,
+ 38% 40%,
+ 40% 60%,
+ 42% 50%,
+ 44% 35%,
+ 46% 65%,
+ 48% 45%,
+ 50% 55%,
+ 52% 40%,
+ 54% 60%,
+ 56% 50%,
+ 58% 35%,
+ 60% 65%,
+ 62% 45%,
+ 64% 55%,
+ 66% 40%,
+ 68% 60%,
+ 70% 50%,
+ 72% 35%,
+ 74% 65%,
+ 76% 45%,
+ 78% 55%,
+ 80% 40%,
+ 82% 60%,
+ 84% 50%,
+ 86% 35%,
+ 88% 65%,
+ 90% 45%,
+ 92% 55%,
+ 94% 40%,
+ 96% 60%,
+ 98% 50%,
+ 100% 50%
+ );
+}
+
+.underline-wobble:hover::after {
+ animation: wobbleUnderline 0.5s ease-in-out;
+}
+
+@keyframes wobbleUnderline {
+ 0%, 100% { transform: translateY(0); }
+ 25% { transform: translateY(-2px); }
+ 75% { transform: translateY(2px); }
+}
+
+/* ===== SKETCH CIRCLES ===== */
+.circle-sketch {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ background: var(--robot-blue);
+}
+
+.circle-sketch::before {
+ content: '';
+ position: absolute;
+ inset: -5px;
+ background: transparent;
+ border: 3px solid var(--robot-dark);
+ border-radius: 50%;
+ clip-path: polygon(
+ 50% 0%,
+ 52% 2%,
+ 54% 1%,
+ 56% 3%,
+ 58% 2%,
+ 60% 0%,
+ 62% 1%,
+ 64% 3%,
+ 66% 2%,
+ 68% 1%,
+ 70% 0%,
+ 72% 2%,
+ 74% 3%,
+ 76% 1%,
+ 78% 2%,
+ 80% 0%,
+ 82% 1%,
+ 84% 3%,
+ 86% 2%,
+ 88% 1%,
+ 90% 0%,
+ 92% 2%,
+ 94% 1%,
+ 96% 3%,
+ 98% 2%,
+ 100% 0%,
+ 100% 50%,
+ 98% 52%,
+ 99% 54%,
+ 97% 56%,
+ 98% 58%,
+ 100% 60%,
+ 99% 62%,
+ 97% 64%,
+ 98% 66%,
+ 99% 68%,
+ 100% 70%,
+ 98% 72%,
+ 97% 74%,
+ 99% 76%,
+ 98% 78%,
+ 100% 80%,
+ 99% 82%,
+ 97% 84%,
+ 98% 86%,
+ 99% 88%,
+ 100% 90%,
+ 98% 92%,
+ 99% 94%,
+ 97% 96%,
+ 98% 98%,
+ 100% 100%,
+ 50% 100%,
+ 48% 98%,
+ 46% 99%,
+ 44% 97%,
+ 42% 98%,
+ 40% 100%,
+ 38% 99%,
+ 36% 97%,
+ 34% 98%,
+ 32% 99%,
+ 30% 100%,
+ 28% 98%,
+ 26% 97%,
+ 24% 99%,
+ 22% 98%,
+ 20% 100%,
+ 18% 99%,
+ 16% 97%,
+ 14% 98%,
+ 12% 99%,
+ 10% 100%,
+ 8% 98%,
+ 6% 99%,
+ 4% 97%,
+ 2% 98%,
+ 0% 100%,
+ 0% 50%,
+ 2% 48%,
+ 1% 46%,
+ 3% 44%,
+ 2% 42%,
+ 0% 40%,
+ 1% 38%,
+ 3% 36%,
+ 2% 34%,
+ 1% 32%,
+ 0% 30%,
+ 2% 28%,
+ 3% 26%,
+ 1% 24%,
+ 2% 22%,
+ 0% 20%,
+ 1% 18%,
+ 3% 16%,
+ 2% 14%,
+ 1% 12%,
+ 0% 10%,
+ 2% 8%,
+ 1% 6%,
+ 3% 4%,
+ 2% 2%,
+ 0% 0%
+ );
+}
+
+/* ===== ROUGH PAPER TEXTURE ===== */
+.paper-texture {
+ position: relative;
+ background:
+ repeating-linear-gradient(
+ 90deg,
+ transparent,
+ transparent 2px,
+ rgba(0, 0, 0, 0.03) 2px,
+ rgba(0, 0, 0, 0.03) 4px
+ ),
+ repeating-linear-gradient(
+ 0deg,
+ transparent,
+ transparent 2px,
+ rgba(0, 0, 0, 0.03) 2px,
+ rgba(0, 0, 0, 0.03) 4px
+ ),
+ linear-gradient(
+ 135deg,
+ #ffffff 0%,
+ #f8f8f8 100%
+ );
+}
+
+.paper-texture::before {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background: url('data:image/svg+xml;utf8, ');
+ pointer-events: none;
+}
+
+/* ===== HANDWRITING FONTS ===== */
+@import url('https://fonts.googleapis.com/css2?family=Kalam:wght@400;700&family=Caveat:wght@400;700&display=swap');
+
+.handwriting {
+ font-family: 'Kalam', cursive;
+ letter-spacing: 0.02em;
+}
+
+.handwriting-alt {
+ font-family: 'Caveat', cursive;
+ font-size: 1.2em;
+}
+
+/* ===== DOODLE CHECKBOX ===== */
+.checkbox-doodle {
+ position: relative;
+ width: 24px;
+ height: 24px;
+ cursor: pointer;
+}
+
+.checkbox-doodle input {
+ position: absolute;
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ cursor: pointer;
+}
+
+.checkbox-doodle .checkbox-box {
+ position: absolute;
+ inset: 0;
+ background: white;
+ border: 3px solid var(--robot-dark);
+ border-radius: 4px;
+ transform: rotate(-2deg);
+ transition: all 0.3s ease;
+}
+
+.checkbox-doodle .checkbox-check {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0) rotate(-45deg);
+ width: 12px;
+ height: 6px;
+ border-left: 3px solid var(--robot-green);
+ border-bottom: 3px solid var(--robot-green);
+ transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
+}
+
+.checkbox-doodle input:checked ~ .checkbox-box {
+ background: var(--robot-yellow);
+ transform: rotate(2deg);
+}
+
+.checkbox-doodle input:checked ~ .checkbox-check {
+ transform: translate(-50%, -50%) scale(1) rotate(-45deg);
+}
+
+.checkbox-doodle:hover .checkbox-box {
+ transform: rotate(-4deg) scale(1.1);
+ border-color: var(--robot-blue);
+}
+
+/* ===== TOOLTIP BUBBLE ===== */
+.tooltip-bubble {
+ position: relative;
+ display: inline-block;
+}
+
+.tooltip-bubble .tooltip-content {
+ position: absolute;
+ bottom: 125%;
+ left: 50%;
+ transform: translateX(-50%) scale(0);
+ background: var(--robot-dark);
+ color: white;
+ padding: 0.75rem 1rem;
+ border-radius: 15px 15px 15px 2px;
+ font-size: 0.9rem;
+ white-space: nowrap;
+ box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.2);
+ transform-origin: bottom center;
+ transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
+}
+
+.tooltip-bubble .tooltip-content::after {
+ content: '';
+ position: absolute;
+ top: 100%;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 0;
+ height: 0;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 10px solid var(--robot-dark);
+ margin-left: -8px;
+}
+
+.tooltip-bubble:hover .tooltip-content {
+ transform: translateX(-50%) scale(1);
+}
+
+/* ===== WIGGLE TEXT ===== */
+.text-wiggle {
+ display: inline-block;
+ animation: textWiggle 2s ease-in-out infinite;
+}
+
+.text-wiggle.subtle {
+ animation-duration: 4s;
+}
+
+@keyframes textWiggle {
+ 0%, 100% { transform: rotate(-1deg); }
+ 50% { transform: rotate(1deg); }
+}
+
+/* ===== HAND-DRAWN DIVIDER ===== */
+.divider-sketch {
+ width: 100%;
+ height: 20px;
+ margin: 2rem 0;
+ background: url('data:image/svg+xml;utf8, ') center/contain no-repeat;
+}
+
+/* ===== SCRIBBLE BACKGROUND ===== */
+.scribble-bg {
+ position: relative;
+ overflow: hidden;
+}
+
+.scribble-bg::before {
+ content: '';
+ position: absolute;
+ top: -50%;
+ left: -50%;
+ width: 200%;
+ height: 200%;
+ background: url('data:image/svg+xml;utf8, ') 0 0/50px 50px;
+ transform: rotate(-5deg);
+ opacity: 0.1;
+ pointer-events: none;
+}
+
+/* ===== STICKY NOTE ===== */
+.sticky-note {
+ position: relative;
+ background: #fff740;
+ padding: 1.5rem;
+ box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);
+ transform: rotate(-2deg);
+ transition: all 0.3s ease;
+}
+
+.sticky-note::before {
+ content: '';
+ position: absolute;
+ top: -8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 60px;
+ height: 16px;
+ background: rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+}
+
+.sticky-note:hover {
+ transform: rotate(0deg) scale(1.02);
+ box-shadow: 4px 4px 20px rgba(0, 0, 0, 0.15);
+}
+
+.sticky-note.pink { background: #ff9ff3; }
+.sticky-note.blue { background: #54a0ff; }
+.sticky-note.green { background: #1dd1a1; }
+
+/* ===== MARKER HIGHLIGHT ===== */
+.highlight-marker {
+ position: relative;
+ display: inline-block;
+ color: var(--robot-dark);
+ padding: 0 0.2em;
+}
+
+.highlight-marker::before {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: -0.1em;
+ right: -0.1em;
+ height: 0.8em;
+ background: var(--robot-yellow);
+ opacity: 0.4;
+ transform: skew(-5deg);
+ z-index: -1;
+ transition: all 0.3s ease;
+}
+
+.highlight-marker:hover::before {
+ height: 1.2em;
+ opacity: 0.6;
+}
+
+.highlight-marker.pink::before { background: var(--robot-pink); }
+.highlight-marker.blue::before { background: var(--robot-blue); }
+.highlight-marker.green::before { background: var(--robot-green); }
+
+/* ===== ROUGH SHADOW ===== */
+.shadow-rough {
+ position: relative;
+}
+
+.shadow-rough::after {
+ content: '';
+ position: absolute;
+ inset: 4px -4px -4px 4px;
+ background: rgba(0, 0, 0, 0.2);
+ border-radius: inherit;
+ transform: rotate(-1deg);
+ z-index: -1;
+ filter: blur(2px);
+}
+
+/* ===== HAND-DRAWN PROGRESS BAR ===== */
+.progress-sketch {
+ position: relative;
+ width: 100%;
+ height: 30px;
+ background: white;
+ border: 3px solid var(--robot-dark);
+ border-radius: 15px;
+ overflow: hidden;
+ transform: rotate(-1deg);
+}
+
+.progress-sketch .progress-fill {
+ height: 100%;
+ background: repeating-linear-gradient(
+ 45deg,
+ var(--robot-green),
+ var(--robot-green) 10px,
+ transparent 10px,
+ transparent 20px
+ );
+ border-right: 3px solid var(--robot-dark);
+ transition: width 0.5s ease;
+ animation: progressSlide 1s linear infinite;
+}
+
+@keyframes progressSlide {
+ 0% { background-position: 0 0; }
+ 100% { background-position: 20px 0; }
+}
+
+/* ===== UTILITY CLASSES ===== */
+.wiggle { animation: wiggle 2s ease-in-out infinite; }
+.bounce { animation: bounce 3s ease-in-out infinite; }
+.float { animation: float 4s ease-in-out infinite; }
+.shake { animation: shake 0.5s ease-in-out infinite; }
+
+@keyframes wiggle {
+ 0%, 100% { transform: rotate(-2deg); }
+ 50% { transform: rotate(2deg); }
+}
+
+@keyframes bounce {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-10px); }
+}
+
+@keyframes float {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-20px); }
+}
+
+@keyframes shake {
+ 0%, 100% { transform: translateX(0); }
+ 25% { transform: translateX(-5px); }
+ 75% { transform: translateX(5px); }
+}
+
+/* ===== ACCESSIBILITY ===== */
+@media (prefers-reduced-motion: reduce) {
+ *,
+ *::before,
+ *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ }
+}
+
+/* ===== RESPONSIVE ADJUSTMENTS ===== */
+@media (max-width: 768px) {
+ .btn-sketchy {
+ padding: 0.75rem 1.5rem;
+ font-size: 0.9rem;
+ }
+
+ .sticky-note {
+ padding: 1rem;
+ }
+}
diff --git a/website/src/styles/products-architecture.css b/website/src/styles/products-architecture.css
new file mode 100644
index 000000000..3ff9d0a3e
--- /dev/null
+++ b/website/src/styles/products-architecture.css
@@ -0,0 +1,577 @@
+/* ProductsArchitecture Component Styles */
+
+.architecture-section {
+ background: var(--light-gray);
+ border-top: 1px solid var(--border-color);
+}
+
+.architecture-section .badge-robot-head {
+ background: var(--pastel-blue);
+}
+
+/* Architecture Stack */
+.architecture-stack {
+ margin: 4rem 0;
+ max-width: 900px;
+ margin-left: auto;
+ margin-right: auto;
+ position: relative;
+}
+
+.stack-layer {
+ background: white;
+ border-radius: 20px;
+ border: 3px solid var(--border-color);
+ padding: 2rem;
+ margin-bottom: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: 2rem;
+}
+
+.stack-layer:hover {
+ transform: translateX(8px);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+}
+
+.tools-layer {
+ border-color: var(--gentle-orange);
+ border-left-width: 8px;
+}
+
+.models-layer {
+ border-color: var(--soft-green);
+ border-left-width: 8px;
+}
+
+.platforms-layer {
+ border-color: var(--primary-blue);
+ border-left-width: 8px;
+ margin-bottom: 0;
+}
+
+.layer-number {
+ position: absolute;
+ top: -15px;
+ left: 2rem;
+ width: 30px;
+ height: 30px;
+ background: var(--primary-blue);
+ color: white;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 700;
+ font-size: 1.1rem;
+ border: 3px solid white;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+}
+
+.layer-robot {
+ flex-shrink: 0;
+}
+
+/* Robot Designs */
+.tools-robot,
+.models-robot,
+.platforms-robot {
+ position: relative;
+}
+
+.tools-robot .robot-head,
+.models-robot .robot-head,
+.platforms-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 10px;
+ position: relative;
+}
+
+.tools-robot .robot-body,
+.models-robot .robot-body,
+.platforms-robot .robot-body {
+ width: 70px;
+ height: 80px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.tools-robot .robot-head,
+.tools-robot .robot-body {
+ background: var(--gentle-orange);
+}
+
+.models-robot .robot-head,
+.models-robot .robot-body {
+ background: var(--soft-green);
+}
+
+.platforms-robot .robot-head,
+.platforms-robot .robot-body {
+ background: var(--pastel-blue);
+}
+
+.robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 12px 8px;
+}
+
+.robot-eye {
+ width: 12px;
+ height: 12px;
+ background: var(--dark-text);
+ border-radius: 50%;
+ position: relative;
+}
+
+.robot-eye::after {
+ content: '';
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 3px;
+ height: 3px;
+ background: white;
+ border-radius: 50%;
+}
+
+.robot-eye.thinking {
+ animation: thinking 3s infinite ease-in-out;
+}
+
+.robot-smile {
+ position: absolute;
+ bottom: 8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 15px;
+ height: 8px;
+ border: 3px solid var(--dark-text);
+ border-top: none;
+ border-radius: 0 0 12px 12px;
+}
+
+.robot-smile {
+ position: absolute;
+ bottom: 8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 15px;
+ height: 8px;
+ border: 3px solid var(--dark-text);
+ border-top: none;
+ border-radius: 0 0 12px 12px;
+}
+
+/* Robot-specific details */
+.robot-base {
+ margin-top: 5px;
+}
+
+.base-foundation {
+ width: 50px;
+ height: 8px;
+ background: var(--medium-gray);
+ border-radius: 4px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+}
+
+.layer-content {
+ flex: 1;
+}
+
+.layer-content h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.75rem;
+}
+
+.layer-content p {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+}
+
+.layer-features {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.75rem;
+}
+
+.feature-item {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-size: 0.9rem;
+ font-weight: 500;
+}
+
+.feature-status {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ border: 1px solid var(--dark-text);
+}
+
+.feature-item.active .feature-status {
+ background: var(--success-green);
+ animation: pulse 2s infinite;
+}
+
+.feature-item.beta .feature-status {
+ background: var(--warning-amber);
+ animation: pulse 2s infinite;
+}
+
+.feature-item.coming .feature-status {
+ background: var(--medium-gray);
+}
+
+/* Connection Lines */
+.layer-connection {
+ position: absolute;
+ bottom: -2rem;
+ left: 50%;
+ width: 4px;
+ height: 2rem;
+ background-color: var(--border-color);
+ z-index: -1;
+}
+
+.platforms-layer .layer-connection {
+ display: none;
+}
+
+.data-flow {
+ position: absolute;
+ top: 0;
+ left: -4px;
+ right: -4px;
+ height: 100%;
+}
+
+.flow-packet {
+ position: absolute;
+ width: 6px;
+ height: 6px;
+ background: var(--primary-blue);
+ border-radius: 50%;
+ animation: flowData 3s infinite linear;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.flow-packet:nth-child(2) {
+ animation-delay: 1s;
+}
+.flow-packet:nth-child(3) {
+ animation-delay: 2s;
+}
+
+/* Architecture Benefits */
+.architecture-benefits {
+ margin: 4rem 0;
+}
+
+.architecture-benefits h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.benefits-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+}
+
+.benefit-card {
+ background: white;
+ border-radius: 16px;
+ border: 2px solid var(--border-color);
+ padding: 2rem;
+ text-align: center;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+}
+
+.benefit-card:hover {
+ transform: translateY(-4px);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+ border-color: var(--primary-blue);
+}
+
+.benefit-robot {
+ margin-bottom: 1rem;
+}
+
+.benefit-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ background: var(--warm-yellow);
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 6px;
+ position: relative;
+}
+
+.benefit-robot .robot-body {
+ width: 50px;
+ height: 60px;
+ background: var(--gentle-orange);
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.benefit-card h4 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.benefit-card p {
+ color: var(--medium-gray);
+ line-height: 1.6;
+}
+
+/* Interactive Demo */
+.architecture-demo {
+ margin: 4rem 0;
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ padding: 3rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.architecture-demo h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.demo-container {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.scenario-title {
+ text-align: center;
+ font-size: 1.2rem;
+ font-weight: 600;
+ color: var(--primary-blue);
+ margin-bottom: 2rem;
+ padding: 1rem;
+ background: var(--light-blue);
+ border-radius: 10px;
+ border: 2px solid var(--primary-blue);
+}
+
+.demo-flow {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+.flow-step {
+ background: var(--cream-white);
+ border-radius: 12px;
+ border: 2px solid var(--border-color);
+ padding: 1.5rem;
+ text-align: center;
+ max-width: 200px;
+ transition: all 0.3s ease;
+}
+
+.flow-step:hover {
+ border-color: var(--primary-blue);
+ transform: scale(1.05);
+}
+
+.step-number {
+ width: 30px;
+ height: 30px;
+ background: var(--primary-blue);
+ color: white;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 700;
+ margin: 0 auto 1rem;
+}
+
+.step-content {
+ font-size: 0.9rem;
+ line-height: 1.4;
+}
+
+.step-content strong {
+ color: var(--primary-blue);
+ display: block;
+ margin-bottom: 0.5rem;
+}
+
+.flow-arrow {
+ width: 30px;
+ height: 2px;
+ background: var(--primary-blue);
+ position: relative;
+}
+
+.flow-arrow::after {
+ content: '';
+ position: absolute;
+ right: -5px;
+ top: -3px;
+ width: 0;
+ height: 0;
+ border-top: 4px solid transparent;
+ border-bottom: 4px solid transparent;
+ border-left: 8px solid var(--primary-blue);
+}
+
+/* Animations */
+@keyframes thinking {
+ 0%,
+ 100% {
+ transform: scaleY(1);
+ }
+ 50% {
+ transform: scaleY(0.8);
+ }
+}
+
+@keyframes flowData {
+ 0% {
+ top: 0;
+ opacity: 0;
+ }
+ 10% {
+ opacity: 1;
+ }
+ 90% {
+ opacity: 1;
+ }
+ 100% {
+ top: 100%;
+ opacity: 0;
+ }
+}
+
+@keyframes pulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 50% {
+ transform: scale(1.2);
+ opacity: 0.7;
+ }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .stack-layer {
+ flex-direction: column;
+ text-align: center;
+ gap: 1.5rem;
+ }
+
+ .layer-connection {
+ display: none;
+ }
+
+ .benefits-grid {
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ }
+}
+
+@media (max-width: 768px) {
+ .architecture-stack {
+ margin: 3rem 0;
+ }
+
+ .stack-layer {
+ padding: 1.5rem;
+ margin-bottom: 1.5rem;
+ }
+
+ .layer-content h3 {
+ font-size: 1.3rem;
+ }
+
+ .demo-flow {
+ flex-direction: column;
+ }
+
+ .flow-arrow {
+ transform: rotate(90deg);
+ }
+
+ .architecture-demo {
+ padding: 2rem;
+ }
+}
+
+@media (max-width: 480px) {
+ .stack-layer {
+ padding: 1.25rem;
+ }
+
+ .benefits-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .benefit-card {
+ padding: 1.5rem;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ .robot-eye,
+ .flow-packet,
+ .feature-status,
+ .stack-layer,
+ .benefit-card,
+ .flow-step {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .stack-layer,
+ .benefit-card,
+ .architecture-demo {
+ border-width: 3px;
+ }
+}
diff --git a/website/src/styles/products-models.css b/website/src/styles/products-models.css
new file mode 100644
index 000000000..d691759f7
--- /dev/null
+++ b/website/src/styles/products-models.css
@@ -0,0 +1,758 @@
+/* ProductsModels Component Styles */
+
+.models-section {
+ background: var(--cream-white);
+ border-top: 1px solid var(--border-color);
+}
+
+.models-section .badge-robot-head {
+ background: var(--soft-pink);
+}
+
+/* Models Grid */
+.models-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
+ gap: 2rem;
+ margin: 4rem 0;
+}
+
+.model-card {
+ position: relative;
+ overflow: visible;
+}
+
+.model-robot-section {
+ position: relative;
+ text-align: center;
+ margin-bottom: 2rem;
+}
+
+.model-robot {
+ display: inline-block;
+ position: relative;
+ margin-bottom: 1rem;
+}
+
+.model-robot .robot-head {
+ width: 70px;
+ height: 70px;
+ border-radius: 16px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 12px;
+ position: relative;
+}
+
+.model-robot .robot-body {
+ width: 80px;
+ height: 90px;
+ border-radius: 16px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+}
+
+/* Robot variations */
+.v1-robot .robot-head { background: var(--success-green); }
+.v1-robot .robot-body { background: var(--success-green); }
+
+.nano-robot .robot-head { background: var(--primary-blue); }
+.nano-robot .robot-body { background: var(--primary-blue); }
+
+.lucy-robot .robot-head { background: var(--warning-amber); }
+.lucy-robot .robot-body { background: var(--warning-amber); }
+
+.robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 12px 10px;
+}
+
+.robot-eye {
+ width: 14px;
+ height: 14px;
+ background: var(--dark-text);
+ border-radius: 50%;
+ position: relative;
+}
+
+.robot-eye::after {
+ content: '';
+ position: absolute;
+ top: 3px;
+ right: 3px;
+ width: 4px;
+ height: 4px;
+ background: white;
+ border-radius: 50%;
+}
+
+.robot-eye.research {
+ background: var(--primary-blue);
+ animation: researchBlink 3s infinite ease-in-out;
+}
+
+.robot-eye.sleeping {
+ height: 4px;
+ border-radius: 2px;
+ background: var(--dark-text);
+}
+
+.robot-eye.sleeping::after {
+ display: none;
+}
+
+.robot-antenna {
+ position: absolute;
+ top: -12px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 3px;
+ height: 15px;
+ background: var(--dark-text);
+ border-radius: 2px;
+}
+
+.antenna-tip {
+ position: absolute;
+ top: -6px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ border: 2px solid var(--dark-text);
+}
+
+.antenna-tip.active {
+ background: var(--success-green);
+ animation: pulse 2s infinite;
+}
+
+.robot-chest {
+ margin-bottom: 8px;
+}
+
+.chest-panel {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.panel-line {
+ width: 20px;
+ height: 2px;
+ background: var(--dark-text);
+ border-radius: 1px;
+}
+
+.panel-line.active {
+ background: white;
+ animation: dataFlow 2s infinite ease-in-out;
+}
+
+.panel-line:nth-child(2) { animation-delay: 0.5s; }
+.panel-line:nth-child(3) { animation-delay: 1s; }
+
+.robot-badge {
+ background: white;
+ color: var(--dark-text);
+ padding: 2px 8px;
+ border-radius: 8px;
+ font-size: 0.7rem;
+ font-weight: 700;
+ border: 2px solid var(--dark-text);
+}
+
+.robot-scanner {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ width: 12px;
+ height: 12px;
+}
+
+.scanner-beam {
+ width: 100%;
+ height: 2px;
+ background: var(--primary-blue);
+ border-radius: 1px;
+ animation: scan 3s infinite ease-in-out;
+}
+
+.research-display {
+ display: flex;
+ gap: 3px;
+}
+
+.display-dot {
+ width: 4px;
+ height: 4px;
+ background: white;
+ border-radius: 50%;
+ animation: pulse 2s infinite;
+}
+
+.display-dot:nth-child(2) { animation-delay: 0.5s; }
+.display-dot:nth-child(3) { animation-delay: 1s; }
+
+.robot-vision-sensor {
+ position: absolute;
+ top: 5px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 16px;
+ height: 16px;
+}
+
+.vision-ring {
+ width: 100%;
+ height: 100%;
+ border: 2px solid var(--dark-text);
+ border-radius: 50%;
+ position: relative;
+}
+
+.vision-center {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 6px;
+ height: 6px;
+ background: var(--error-red);
+ border-radius: 50%;
+}
+
+.multimodal-display {
+ display: flex;
+ gap: 2px;
+}
+
+.modal-icon {
+ width: 6px;
+ height: 6px;
+ border-radius: 2px;
+ border: 1px solid var(--dark-text);
+}
+
+.modal-icon.vision { background: var(--primary-blue); }
+.modal-icon.text { background: var(--success-green); }
+.modal-icon.audio { background: var(--medium-gray); }
+
+.robot-progress {
+ margin-top: 8px;
+ text-align: center;
+}
+
+.progress-bar {
+ width: 40px;
+ height: 4px;
+ background: var(--border-color);
+ border-radius: 2px;
+ margin: 0 auto 4px;
+ overflow: hidden;
+}
+
+.progress-fill {
+ height: 100%;
+ background: var(--warning-amber);
+ border-radius: 2px;
+ width: 60%;
+ animation: training 3s infinite ease-in-out;
+}
+
+.progress-text {
+ font-size: 0.7rem;
+ color: var(--medium-gray);
+ font-weight: 500;
+}
+
+.robot-arms {
+ display: flex;
+ justify-content: space-between;
+ margin-top: -30px;
+ padding: 0 15px;
+ position: relative;
+ z-index: -1;
+}
+
+.arm {
+ width: 10px;
+ height: 30px;
+ background: var(--gentle-orange);
+ border-radius: 5px;
+ border: 2px solid var(--dark-text);
+ transform-origin: top center;
+}
+
+.robot-tools {
+ display: flex;
+ gap: 8px;
+ margin-top: 8px;
+}
+
+.tool {
+ width: 8px;
+ height: 8px;
+ border-radius: 2px;
+ border: 1px solid var(--dark-text);
+}
+
+.search-tool { background: var(--primary-blue); }
+.analysis-tool { background: var(--success-green); }
+
+.model-status-bubble {
+ position: absolute;
+ top: -10px;
+ right: 1rem;
+}
+
+/* Model Content */
+.model-content {
+ padding: 0;
+}
+
+.model-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.model-header h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.model-version {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ padding: 0.25rem 0.5rem;
+ border-radius: 8px;
+ font-size: 0.7rem;
+ font-weight: 600;
+ border: 1px solid var(--border-color);
+}
+
+.model-description {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+}
+
+.model-specs {
+ margin-bottom: 1.5rem;
+}
+
+.spec-section {
+ margin-bottom: 1rem;
+}
+
+.spec-section h4 {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ margin-bottom: 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.spec-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
+ gap: 0.75rem;
+}
+
+.spec-item {
+ background: var(--light-gray);
+ border-radius: 8px;
+ padding: 0.75rem;
+ text-align: center;
+ border: 1px solid var(--border-color);
+}
+
+.spec-label {
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: var(--primary-blue);
+ margin-bottom: 0.25rem;
+}
+
+.spec-value {
+ font-size: 0.9rem;
+ color: var(--dark-text);
+ font-weight: 500;
+}
+
+.spec-highlight {
+ background: var(--light-blue);
+ border: 2px solid var(--primary-blue);
+ border-radius: 10px;
+ padding: 1rem;
+ text-align: center;
+}
+
+.highlight-label {
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: var(--primary-blue);
+ margin-bottom: 0.25rem;
+ text-transform: uppercase;
+}
+
+.highlight-value {
+ font-size: 1.2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.model-capabilities {
+ margin-bottom: 1.5rem;
+}
+
+.model-capabilities h4 {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ margin-bottom: 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.capabilities-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
+ gap: 0.75rem;
+}
+
+.capability {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.75rem;
+ border-radius: 10px;
+ border: 2px solid var(--border-color);
+ text-align: center;
+ font-size: 0.8rem;
+ font-weight: 500;
+ transition: all 0.3s ease;
+}
+
+.capability:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+}
+
+.capability.active {
+ border-color: var(--success-green);
+ background: var(--soft-green);
+}
+
+.capability.coming {
+ border-color: var(--medium-gray);
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+
+.capability-icon {
+ width: 20px;
+ height: 20px;
+ border-radius: 4px;
+ border: 2px solid var(--dark-text);
+ position: relative;
+}
+
+/* Capability icon colors */
+.capability-icon.reasoning { background: var(--primary-blue); }
+.capability-icon.coding { background: var(--success-green); }
+.capability-icon.multilingual { background: var(--warning-amber); }
+.capability-icon.tools { background: var(--light-purple); }
+.capability-icon.search { background: var(--primary-blue); }
+.capability-icon.document { background: var(--warning-amber); }
+.capability-icon.mobile { background: var(--success-green); }
+.capability-icon.mcp { background: var(--light-purple); }
+.capability-icon.image { background: var(--medium-gray); }
+.capability-icon.ocr { background: var(--medium-gray); }
+.capability-icon.visual { background: var(--medium-gray); }
+.capability-icon.processing { background: var(--medium-gray); }
+
+/* Add small symbols to capability icons */
+.capability-icon::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 6px;
+ height: 6px;
+ background: white;
+ border-radius: 2px;
+}
+
+.capability-icon.reasoning::after { border-radius: 50%; }
+.capability-icon.coding::after { width: 8px; height: 4px; }
+.capability-icon.search::after { border-radius: 50%; width: 4px; height: 4px; }
+
+.model-metrics {
+ display: flex;
+ justify-content: space-around;
+ padding-top: 1rem;
+ border-top: 1px solid var(--border-color);
+}
+
+.metric {
+ text-align: center;
+}
+
+.metric-value {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--primary-blue);
+ margin-bottom: 0.25rem;
+}
+
+.metric-label {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+/* Models Comparison */
+.models-comparison {
+ margin: 4rem 0;
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ padding: 3rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.models-comparison h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.comparison-table {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr;
+ gap: 1px;
+ background: var(--border-color);
+ border-radius: 12px;
+ overflow: hidden;
+}
+
+.table-header {
+ display: contents;
+}
+
+.header-cell {
+ background: var(--primary-blue);
+ color: white;
+ padding: 1rem;
+ font-weight: 700;
+ text-align: center;
+}
+
+.table-row {
+ display: contents;
+}
+
+.table-cell {
+ background: white;
+ padding: 1rem;
+ text-align: center;
+ font-size: 0.9rem;
+}
+
+.feature-col {
+ font-weight: 600;
+ color: var(--dark-text);
+ text-align: left;
+}
+
+.model-col {
+ color: var(--medium-gray);
+}
+
+.status-indicator {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25rem;
+ padding: 0.25rem 0.5rem;
+ border-radius: 12px;
+ font-size: 0.7rem;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+.status-indicator::before {
+ content: '';
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+}
+
+.status-indicator.active {
+ background: var(--soft-green);
+ color: var(--success-green);
+}
+
+.status-indicator.active::before {
+ background: var(--success-green);
+}
+
+.status-indicator.beta {
+ background: var(--warm-yellow);
+ color: var(--warning-amber);
+}
+
+.status-indicator.beta::before {
+ background: var(--warning-amber);
+}
+
+.status-indicator.coming {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+}
+
+.status-indicator.coming::before {
+ background: var(--medium-gray);
+}
+
+/* Animations */
+@keyframes researchBlink {
+ 0%, 100% { opacity: 1; }
+ 50% { opacity: 0.3; }
+}
+
+@keyframes scan {
+ 0% { transform: translateY(0) scaleX(1); }
+ 50% { transform: translateY(4px) scaleX(1.2); }
+ 100% { transform: translateY(8px) scaleX(1); }
+}
+
+@keyframes training {
+ 0% { width: 0%; }
+ 50% { width: 80%; }
+ 100% { width: 60%; }
+}
+
+@keyframes dataFlow {
+ 0%, 100% { opacity: 0.5; transform: scaleX(1); }
+ 50% { opacity: 1; transform: scaleX(1.2); }
+}
+
+@keyframes pulse {
+ 0%, 100% { transform: scale(1); opacity: 1; }
+ 50% { transform: scale(1.1); opacity: 0.7; }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .models-grid {
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ }
+
+ .models-comparison {
+ padding: 2rem;
+ }
+
+ .comparison-table {
+ font-size: 0.8rem;
+ }
+}
+
+@media (max-width: 768px) {
+ .models-grid {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .model-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ }
+
+ .model-robot .robot-body {
+ width: 70px;
+ height: 80px;
+ }
+
+ .spec-grid {
+ grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
+ }
+
+ .capabilities-grid {
+ grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
+ }
+
+ .comparison-table {
+ grid-template-columns: 1fr;
+ gap: 0;
+ }
+
+ .table-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr;
+ gap: 1px;
+ margin-bottom: 1px;
+ }
+
+ .models-comparison {
+ padding: 1.5rem;
+ }
+}
+
+@media (max-width: 480px) {
+ .model-content {
+ padding: 1rem;
+ }
+
+ .model-specs {
+ margin-bottom: 1rem;
+ }
+
+ .spec-grid {
+ grid-template-columns: 1fr 1fr;
+ }
+
+ .capabilities-grid {
+ grid-template-columns: 1fr 1fr;
+ }
+
+ .model-metrics {
+ flex-direction: column;
+ gap: 1rem;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ .robot-eye, .scanner-beam, .display-dot, .panel-line, .progress-fill, .antenna-tip, .capability {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .model-card, .comparison-table {
+ border-width: 3px;
+ }
+
+ .capability, .spec-item {
+ border-width: 2px;
+ }
+}
diff --git a/website/src/styles/products-platforms.css b/website/src/styles/products-platforms.css
new file mode 100644
index 000000000..a5eaf7c23
--- /dev/null
+++ b/website/src/styles/products-platforms.css
@@ -0,0 +1,1009 @@
+/* Products Platforms Section Styles */
+
+.platforms-section {
+ background: var(--light-gray);
+ position: relative;
+ overflow: hidden;
+}
+
+/* Platforms Timeline */
+.platforms-timeline {
+ position: relative;
+ max-width: 1000px;
+ margin: 4rem auto;
+ padding: 0 2rem;
+}
+
+.timeline-path {
+ position: absolute;
+ left: 50px;
+ top: 0;
+ bottom: 0;
+ width: 4px;
+ background: linear-gradient(
+ 180deg,
+ var(--primary-blue) 0%,
+ var(--soft-pink) 25%,
+ var(--warm-yellow) 50%,
+ var(--soft-green) 75%,
+ var(--primary-blue) 100%
+ );
+ border-radius: 2px;
+}
+
+.timeline-path::before {
+ content: '';
+ position: absolute;
+ top: -20px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 12px;
+ height: 12px;
+ background: var(--primary-blue);
+ border-radius: 50%;
+ border: 3px solid white;
+}
+
+/* Platform Items */
+.platform-item {
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: 3rem;
+ margin-bottom: 4rem;
+ opacity: 0;
+ transform: translateX(-50px);
+ animation: slideInFromLeft 0.6s ease-out forwards;
+}
+
+.platform-item:nth-child(2) { animation-delay: 0.2s; }
+.platform-item:nth-child(3) { animation-delay: 0.4s; }
+.platform-item:nth-child(4) { animation-delay: 0.6s; }
+
+@keyframes slideInFromLeft {
+ to {
+ opacity: 1;
+ transform: translateX(0);
+ }
+}
+
+@keyframes slideInFromRight {
+ from {
+ opacity: 0;
+ transform: translateX(50px);
+ }
+ to {
+ opacity: 1;
+ transform: translateX(0);
+ }
+}
+
+/* Platform Robots Container */
+.platform-robot {
+ position: relative;
+ width: 150px;
+ flex-shrink: 0;
+ z-index: 2;
+}
+
+.platform-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ margin: 0 auto 10px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ position: relative;
+ transition: all 0.3s ease;
+}
+
+.platform-robot .robot-body {
+ width: 80px;
+ height: 100px;
+ margin: 0 auto;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ position: relative;
+ transition: all 0.3s ease;
+}
+
+/* Desktop Robot Styles */
+.desktop-robot .robot-head {
+ background: linear-gradient(135deg, var(--primary-blue), var(--pastel-blue));
+}
+
+.desktop-robot .robot-body {
+ background: linear-gradient(135deg, var(--pastel-blue), var(--primary-blue));
+}
+
+.desktop-robot .robot-screen {
+ position: absolute;
+ top: 15px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 50px;
+ height: 30px;
+ background: #000;
+ border: 2px solid var(--primary-blue);
+ border-radius: 4px;
+ overflow: hidden;
+}
+
+.screen-content {
+ padding: 4px;
+}
+
+.screen-bar {
+ height: 2px;
+ background: var(--soft-green);
+ margin: 2px 0;
+ border-radius: 1px;
+ animation: codeFlow 2s ease-in-out infinite;
+}
+
+.screen-bar:nth-child(2) { animation-delay: 0.5s; width: 80%; }
+.screen-bar:nth-child(3) { animation-delay: 1s; width: 60%; }
+
+@keyframes codeFlow {
+ 0%, 100% { opacity: 0.3; transform: translateX(-10px); }
+ 50% { opacity: 1; transform: translateX(0); }
+}
+
+.robot-keyboard {
+ position: absolute;
+ bottom: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ display: flex;
+ gap: 2px;
+}
+
+.key {
+ width: 6px;
+ height: 6px;
+ background: var(--dark-text);
+ border-radius: 1px;
+}
+
+.robot-base {
+ margin-top: 10px;
+}
+
+.base-stand {
+ width: 40px;
+ height: 8px;
+ background: var(--dark-text);
+ margin: 0 auto;
+ border-radius: 4px;
+}
+
+/* Web Robot Styles */
+.web-robot .robot-head {
+ background: linear-gradient(135deg, var(--light-blue), var(--soft-green));
+}
+
+.web-robot .robot-body {
+ background: linear-gradient(135deg, var(--soft-green), var(--light-blue));
+}
+
+.robot-browser {
+ position: absolute;
+ top: 10px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 45px;
+ height: 35px;
+ background: white;
+ border: 2px solid var(--dark-text);
+ border-radius: 4px;
+ overflow: hidden;
+}
+
+.browser-bar {
+ display: flex;
+ gap: 2px;
+ padding: 2px;
+ background: var(--light-gray);
+ border-bottom: 1px solid var(--border-color);
+}
+
+.browser-dot {
+ width: 4px;
+ height: 4px;
+ border-radius: 50%;
+}
+
+.browser-dot.red { background: #ff5f56; }
+.browser-dot.yellow { background: #ffbd2e; }
+.browser-dot.green { background: #27ca3f; }
+
+.browser-content {
+ padding: 4px;
+}
+
+.content-line {
+ height: 2px;
+ background: var(--primary-blue);
+ margin: 2px 0;
+ border-radius: 1px;
+ width: 100%;
+}
+
+.content-line.short { width: 70%; }
+
+.robot-cloud {
+ position: absolute;
+ top: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 40px;
+ height: 40px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.cloud-icon {
+ font-size: 24px;
+}
+
+.cloud-data {
+ display: flex;
+ gap: 2px;
+ margin-top: 4px;
+}
+
+.data-bit {
+ width: 4px;
+ height: 4px;
+ background: var(--primary-blue);
+ border-radius: 50%;
+ animation: dataFlow 1.5s ease-in-out infinite;
+}
+
+.data-bit:nth-child(2) { animation-delay: 0.5s; }
+
+@keyframes dataFlow {
+ 0%, 100% { opacity: 0; transform: translateY(0); }
+ 50% { opacity: 1; transform: translateY(-5px); }
+}
+
+/* Mobile Robot Styles */
+.mobile-robot .robot-head {
+ background: linear-gradient(135deg, var(--warm-yellow), var(--gentle-orange));
+}
+
+.mobile-robot .robot-body {
+ background: linear-gradient(135deg, var(--gentle-orange), var(--warm-yellow));
+}
+
+.robot-phone {
+ position: absolute;
+ top: 10px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 30px;
+ height: 40px;
+ background: #000;
+ border: 2px solid var(--dark-text);
+ border-radius: 6px;
+ overflow: hidden;
+}
+
+.phone-screen {
+ margin: 2px;
+ height: calc(100% - 4px);
+ background: var(--primary-blue);
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.phone-ui {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.ui-element {
+ width: 20px;
+ height: 4px;
+ background: white;
+ border-radius: 2px;
+ opacity: 0.8;
+}
+
+.robot-signal {
+ position: absolute;
+ top: 20px;
+ right: 10px;
+ display: flex;
+ gap: 2px;
+}
+
+.signal-bar {
+ width: 3px;
+ height: 8px;
+ background: var(--dark-text);
+ border-radius: 1px;
+ opacity: 0.3;
+}
+
+.signal-bar:nth-child(2) { height: 12px; opacity: 0.6; }
+.signal-bar:nth-child(3) { height: 16px; opacity: 1; }
+
+.development-indicator {
+ position: absolute;
+ bottom: -30px;
+ left: 50%;
+ transform: translateX(-50%);
+ text-align: center;
+ width: 100%;
+}
+
+.dev-progress {
+ width: 80px;
+ height: 4px;
+ background: var(--light-gray);
+ border-radius: 2px;
+ margin: 0 auto 8px;
+ overflow: hidden;
+}
+
+.progress-fill {
+ height: 100%;
+ width: 60%;
+ background: var(--warm-yellow);
+ border-radius: 2px;
+ animation: progressAnimation 2s ease-in-out infinite;
+}
+
+@keyframes progressAnimation {
+ 0%, 100% { width: 60%; }
+ 50% { width: 80%; }
+}
+
+.dev-text {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+ font-weight: 600;
+}
+
+/* Server Robot Styles */
+.server-robot .robot-head {
+ background: linear-gradient(135deg, var(--dark-text), var(--medium-gray));
+}
+
+.server-robot .robot-body {
+ background: linear-gradient(135deg, var(--medium-gray), var(--dark-text));
+}
+
+.robot-server-display {
+ position: absolute;
+ top: 15px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.server-lights {
+ display: flex;
+ gap: 4px;
+}
+
+.light {
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: var(--success-green);
+ animation: serverBlink 2s ease-in-out infinite;
+}
+
+.light:nth-child(2) { animation-delay: 0.5s; background: var(--warning-amber); }
+.light:nth-child(3) { animation-delay: 1s; background: var(--error-red); }
+
+@keyframes serverBlink {
+ 0%, 100% { opacity: 0.3; }
+ 50% { opacity: 1; }
+}
+
+.robot-rack {
+ padding: 20px 10px;
+}
+
+.rack-unit {
+ width: 100%;
+ height: 8px;
+ background: var(--light-gray);
+ margin: 4px 0;
+ border-radius: 2px;
+ position: relative;
+ overflow: hidden;
+}
+
+.rack-unit::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: -20px;
+ width: 20px;
+ height: 100%;
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
+ animation: rackScan 3s linear infinite;
+}
+
+@keyframes rackScan {
+ to { left: 100%; }
+}
+
+.robot-connections {
+ margin-top: 10px;
+ display: flex;
+ justify-content: center;
+ gap: 8px;
+}
+
+.connection-port {
+ width: 12px;
+ height: 6px;
+ background: var(--dark-text);
+ border-radius: 2px;
+}
+
+/* Platform Cards */
+.platform-card {
+ flex: 1;
+ background: white;
+ border-radius: 20px;
+ border: 3px solid var(--border-color);
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+ position: relative;
+}
+
+.platform-card:hover {
+ transform: translateY(-4px);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+ border-color: var(--primary-blue);
+}
+
+.platform-status {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.5rem 1rem;
+ border-radius: 20px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ margin-bottom: 1rem;
+}
+
+.platform-status.available {
+ background: var(--success-green);
+ color: white;
+}
+
+.platform-status.beta {
+ background: var(--warning-amber);
+ color: white;
+}
+
+.platform-status.coming {
+ background: var(--medium-gray);
+ color: white;
+ border: 2px dashed white;
+}
+
+.platform-card h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.5rem;
+}
+
+.platform-card p {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+}
+
+/* Platform Metrics */
+.platform-metrics {
+ display: flex;
+ gap: 2rem;
+ margin-bottom: 1.5rem;
+}
+
+.metric {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+}
+
+.metric-icon {
+ width: 32px;
+ height: 32px;
+ background: var(--light-blue);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.metric-text {
+ display: flex;
+ flex-direction: column;
+}
+
+.metric-value {
+ font-size: 1.2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.metric-label {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+}
+
+/* Platform Features */
+.platform-features {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 1rem;
+ margin-bottom: 1.5rem;
+}
+
+.feature-item {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-size: 0.9rem;
+}
+
+.feature-icon {
+ width: 20px;
+ height: 20px;
+ background: var(--light-purple);
+ border-radius: 4px;
+ flex-shrink: 0;
+}
+
+/* Platform Specs */
+.platform-specs {
+ display: flex;
+ gap: 1rem;
+ padding: 1rem;
+ background: var(--light-gray);
+ border-radius: 12px;
+}
+
+.spec-item {
+ flex: 1;
+ text-align: center;
+}
+
+.spec-label {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+ margin-bottom: 0.25rem;
+}
+
+.spec-value {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+/* Mobile Modes */
+.mobile-modes {
+ margin-top: 2rem;
+ padding: 2rem;
+ background: var(--light-blue);
+ border-radius: 16px;
+}
+
+.mobile-modes h4 {
+ text-align: center;
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1.5rem;
+}
+
+.modes-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 1.5rem;
+}
+
+.mode-card {
+ background: white;
+ border-radius: 12px;
+ padding: 1.5rem;
+ border: 2px solid transparent;
+ transition: all 0.3s ease;
+ cursor: pointer;
+}
+
+.mode-card:hover {
+ border-color: var(--primary-blue);
+ transform: translateY(-2px);
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
+}
+
+.mode-card.active {
+ border-color: var(--primary-blue);
+ background: var(--light-blue);
+}
+
+.mode-icon {
+ display: flex;
+ justify-content: center;
+ margin-bottom: 1rem;
+}
+
+.mode-robot-mini {
+ width: 40px;
+ height: 50px;
+ position: relative;
+}
+
+.mini-head {
+ width: 20px;
+ height: 20px;
+ margin: 0 auto 5px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+}
+
+.mini-body {
+ width: 30px;
+ height: 25px;
+ margin: 0 auto;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.desktop-color { background: var(--primary-blue); }
+.server-color { background: var(--medium-gray); }
+.local-color { background: var(--soft-green); }
+
+.mode-content h5 {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.5rem;
+}
+
+.mode-content p {
+ font-size: 0.9rem;
+ color: var(--medium-gray);
+ margin-bottom: 1rem;
+}
+
+.mode-flow {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-size: 0.8rem;
+ color: var(--primary-blue);
+ font-weight: 600;
+ margin-bottom: 1rem;
+}
+
+.mode-benefits {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.benefit {
+ font-size: 0.85rem;
+ color: var(--dark-text);
+ padding-left: 1rem;
+ position: relative;
+}
+
+.benefit::before {
+ content: '✓';
+ position: absolute;
+ left: 0;
+ color: var(--success-green);
+ font-weight: bold;
+}
+
+/* Mobile Features */
+.mobile-features {
+ margin-top: 2rem;
+}
+
+.mobile-features h4 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1.5rem;
+}
+
+.feature-highlight-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 1.5rem;
+}
+
+.feature-highlight {
+ display: flex;
+ gap: 1rem;
+}
+
+.highlight-icon {
+ width: 48px;
+ height: 48px;
+ background: var(--light-purple);
+ border-radius: 12px;
+ flex-shrink: 0;
+}
+
+.highlight-content h5 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.25rem;
+}
+
+.highlight-content p {
+ font-size: 0.85rem;
+ color: var(--medium-gray);
+ line-height: 1.5;
+}
+
+/* Deployment Options */
+.deployment-options {
+ display: flex;
+ gap: 1rem;
+ margin-top: 1rem;
+}
+
+.deploy-option {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ padding: 1rem;
+ background: var(--light-gray);
+ border-radius: 8px;
+}
+
+.deploy-icon {
+ width: 32px;
+ height: 32px;
+ background: var(--primary-blue);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: white;
+ font-weight: bold;
+}
+
+.deploy-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.deploy-name {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+}
+
+.deploy-desc {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+}
+
+/* Platform Comparison */
+.platform-comparison {
+ margin: 4rem 0;
+}
+
+.platform-comparison h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.comparison-grid {
+ background: white;
+ border-radius: 16px;
+ overflow: hidden;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.comparison-header {
+ display: grid;
+ grid-template-columns: 2fr 2fr 1fr 2fr;
+ background: var(--light-gray);
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.header-item {
+ padding: 1rem;
+ border-right: 1px solid var(--border-color);
+}
+
+.header-item:last-child {
+ border-right: none;
+}
+
+.comparison-row {
+ display: grid;
+ grid-template-columns: 2fr 2fr 1fr 2fr;
+ border-bottom: 1px solid var(--border-color);
+ transition: all 0.3s ease;
+}
+
+.comparison-row:last-child {
+ border-bottom: none;
+}
+
+.comparison-row:hover {
+ background: var(--light-blue);
+}
+
+.row-item {
+ padding: 1rem;
+ border-right: 1px solid var(--border-color);
+ display: flex;
+ align-items: center;
+}
+
+.row-item:last-child {
+ border-right: none;
+}
+
+.platform-name {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ font-weight: 600;
+}
+
+.platform-mini-icon {
+ width: 24px;
+ height: 24px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+}
+
+.desktop-mini { background: var(--primary-blue); }
+.web-mini { background: var(--soft-green); }
+.mobile-mini { background: var(--warm-yellow); }
+.server-mini { background: var(--medium-gray); }
+
+.status-indicator {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.25rem 0.75rem;
+ border-radius: 20px;
+ font-size: 0.8rem;
+ font-weight: 600;
+}
+
+.status-indicator.active {
+ background: var(--success-green);
+ color: white;
+}
+
+.status-indicator.beta {
+ background: var(--warning-amber);
+ color: white;
+}
+
+.status-indicator.coming {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border: 2px dashed var(--medium-gray);
+}
+
+/* Hover Animation for Platform Robots */
+.platform-robot.hover-animation {
+ animation: robotHoverBounce 0.8s ease-in-out;
+}
+
+@keyframes robotHoverBounce {
+ 0%, 100% { transform: translateY(0) scale(1); }
+ 50% { transform: translateY(-10px) scale(1.05); }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .platforms-timeline {
+ padding: 0 1rem;
+ }
+
+ .platform-item {
+ flex-direction: column;
+ text-align: center;
+ }
+
+ .timeline-path {
+ display: none;
+ }
+
+ .modes-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .comparison-grid {
+ overflow-x: auto;
+ }
+
+ .comparison-header,
+ .comparison-row {
+ min-width: 600px;
+ }
+}
+
+@media (max-width: 768px) {
+ .platform-robot {
+ transform: scale(0.8);
+ margin-bottom: 1rem;
+ }
+
+ .platform-features {
+ grid-template-columns: 1fr;
+ }
+
+ .platform-specs {
+ flex-direction: column;
+ gap: 0.5rem;
+ }
+
+ .spec-item {
+ display: flex;
+ justify-content: space-between;
+ text-align: left;
+ }
+
+ .mobile-features {
+ padding: 1rem;
+ }
+
+ .feature-highlight-grid {
+ grid-template-columns: 1fr;
+ }
+}
+
+@media (max-width: 480px) {
+ .platform-card {
+ padding: 1.5rem;
+ }
+
+ .platform-metrics {
+ flex-direction: column;
+ gap: 1rem;
+ }
+
+ .deployment-options {
+ flex-direction: column;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ *,
+ *::before,
+ *::after {
+ animation: none !important;
+ transition: none !important;
+ }
+}
diff --git a/website/src/styles/products-principles.css b/website/src/styles/products-principles.css
new file mode 100644
index 000000000..221fdbbfd
--- /dev/null
+++ b/website/src/styles/products-principles.css
@@ -0,0 +1,1303 @@
+/* ProductsPrinciples Component Styles */
+
+.principles-section {
+ background: var(--cream-white);
+ border-top: 1px solid var(--border-color);
+}
+
+.principles-section .badge-robot-head {
+ background: var(--error-red);
+}
+
+/* Main Comparison */
+.main-comparison {
+ margin: 4rem 0;
+}
+
+.comparison-sides {
+ display: grid;
+ grid-template-columns: 1fr auto 1fr;
+ gap: 2rem;
+ align-items: start;
+ max-width: 1000px;
+ margin: 0 auto;
+}
+
+.comparison-side {
+ background: white;
+ border-radius: 20px;
+ border: 3px solid var(--border-color);
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+}
+
+.other-ai {
+ border-color: var(--error-red);
+ border-left-width: 6px;
+}
+
+.jan-side {
+ border-color: var(--success-green);
+ border-left-width: 6px;
+}
+
+.comparison-side:hover {
+ transform: translateY(-4px);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+}
+
+.side-header {
+ text-align: center;
+ margin-bottom: 2rem;
+}
+
+.side-robot {
+ display: inline-block;
+ position: relative;
+ margin-bottom: 1rem;
+}
+
+/* Other AI Robot (Corporate) */
+.other-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ background: var(--error-red);
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 10px;
+ position: relative;
+}
+
+.other-robot .robot-body {
+ width: 70px;
+ height: 80px;
+ background: var(--error-red);
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 12px 8px;
+}
+
+.robot-eye {
+ width: 12px;
+ height: 12px;
+ background: var(--dark-text);
+ border-radius: 50%;
+ position: relative;
+}
+
+.robot-eye::after {
+ content: '';
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 3px;
+ height: 3px;
+ background: white;
+ border-radius: 50%;
+}
+
+.robot-eye.corporate {
+ background: var(--dark-text);
+ animation: corporateGlare 3s infinite ease-in-out;
+}
+
+.robot-corporate-hat {
+ position: absolute;
+ top: -8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 25px;
+ height: 15px;
+ background: var(--dark-text);
+ border-radius: 8px 8px 0 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.hat-logo {
+ color: var(--warning-amber);
+ font-size: 0.7rem;
+ font-weight: 700;
+}
+
+.robot-tie {
+ width: 8px;
+ height: 25px;
+ background: var(--dark-text);
+ margin-bottom: 5px;
+ position: relative;
+}
+
+.tie-pattern {
+ position: absolute;
+ top: 3px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 4px;
+ height: 4px;
+ background: var(--warning-amber);
+ border-radius: 50%;
+}
+
+.robot-briefcase {
+ width: 20px;
+ height: 12px;
+ background: var(--dark-text);
+ border-radius: 2px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.briefcase-lock {
+ width: 6px;
+ height: 6px;
+ background: var(--warning-amber);
+ border-radius: 2px;
+}
+
+.robot-chains {
+ display: flex;
+ gap: 2px;
+ margin-top: 8px;
+}
+
+.chain-link {
+ width: 8px;
+ height: 4px;
+ border: 1px solid var(--dark-text);
+ border-radius: 2px;
+ background: var(--medium-gray);
+}
+
+/* Jan Robot (Friendly) */
+.jan-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ background: var(--success-green);
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 10px;
+ position: relative;
+}
+
+.jan-robot .robot-body {
+ width: 70px;
+ height: 80px;
+ background: var(--success-green);
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.robot-eye.friendly {
+ background: var(--dark-text);
+ animation: friendlyBlink 4s infinite ease-in-out;
+}
+
+.robot-smile {
+ position: absolute;
+ bottom: 12px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 20px;
+ height: 10px;
+ border: 3px solid var(--dark-text);
+ border-top: none;
+ border-radius: 0 0 20px 20px;
+}
+
+.robot-heart {
+ margin-bottom: 8px;
+ position: relative;
+}
+
+.heart-beat {
+ width: 15px;
+ height: 15px;
+ background: var(--error-red);
+ border-radius: 50%;
+ position: relative;
+ animation: heartbeat 2s infinite;
+}
+
+.heart-beat::before,
+.heart-beat::after {
+ content: '';
+ position: absolute;
+ width: 15px;
+ height: 15px;
+ background: var(--error-red);
+ border-radius: 50%;
+}
+
+.heart-beat::before {
+ top: -7px;
+ left: 0;
+}
+
+.heart-beat::after {
+ top: 0;
+ left: -7px;
+}
+
+.robot-shield {
+ width: 18px;
+ height: 20px;
+ background: var(--primary-blue);
+ border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
+ border: 2px solid var(--dark-text);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.shield-lock {
+ width: 6px;
+ height: 6px;
+ background: white;
+ border-radius: 2px;
+}
+
+.robot-freedom {
+ margin-top: 8px;
+}
+
+.freedom-wings {
+ display: flex;
+ gap: 4px;
+ align-items: center;
+}
+
+.wing {
+ width: 12px;
+ height: 8px;
+ background: white;
+ border: 2px solid var(--dark-text);
+ border-radius: 50%;
+ animation: wingFlap 3s infinite ease-in-out;
+}
+
+.left-wing {
+ animation-delay: 0s;
+}
+
+.right-wing {
+ animation-delay: 0.5s;
+}
+
+/* VS Divider */
+.vs-divider {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 2rem 0;
+}
+
+.vs-robot {
+ position: relative;
+}
+
+.vs-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ background: var(--warning-amber);
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 8px;
+ position: relative;
+}
+
+.vs-robot .robot-body {
+ width: 50px;
+ height: 60px;
+ background: var(--warning-amber);
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.robot-eye.vs-eye {
+ animation: vsFlicker 1s infinite ease-in-out;
+}
+
+.vs-text {
+ font-size: 1.2rem;
+ font-weight: 800;
+ color: var(--dark-text);
+}
+
+.robot-lightning {
+ position: absolute;
+ top: -15px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.lightning-bolt {
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 12px solid var(--warning-amber);
+ position: relative;
+}
+
+.lightning-bolt::after {
+ content: '';
+ position: absolute;
+ top: 8px;
+ left: -3px;
+ width: 0;
+ height: 0;
+ border-left: 3px solid transparent;
+ border-right: 3px solid transparent;
+ border-top: 6px solid var(--warning-amber);
+}
+
+.side-header h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.5rem;
+}
+
+.side-header p {
+ color: var(--medium-gray);
+ font-size: 0.9rem;
+}
+
+.side-features {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.feature-item {
+ display: flex;
+ align-items: flex-start;
+ gap: 1rem;
+ padding: 1rem;
+ border-radius: 12px;
+ transition: all 0.3s ease;
+}
+
+.feature-item.limitation {
+ background: var(--warm-yellow);
+ border: 2px solid var(--error-red);
+}
+
+.feature-item.advantage {
+ background: var(--soft-green);
+ border: 2px solid var(--success-green);
+}
+
+.feature-item:hover {
+ transform: translateX(4px);
+}
+
+.feature-icon {
+ width: 30px;
+ height: 30px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ flex-shrink: 0;
+}
+
+.feature-icon.wrapper {
+ background: var(--error-red);
+}
+.feature-icon.cloud-only {
+ background: var(--medium-gray);
+}
+.feature-icon.subscription {
+ background: var(--warning-amber);
+}
+.feature-icon.control {
+ background: var(--error-red);
+}
+.feature-icon.own-models {
+ background: var(--success-green);
+}
+.feature-icon.privacy-first {
+ background: var(--primary-blue);
+}
+.feature-icon.free-local {
+ background: var(--success-green);
+}
+.feature-icon.your-rules {
+ background: var(--primary-blue);
+}
+
+.feature-content h4 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.25rem;
+}
+
+.feature-content p {
+ font-size: 0.9rem;
+ color: var(--medium-gray);
+ line-height: 1.4;
+}
+
+/* Detailed Comparison */
+.detailed-comparison {
+ margin: 4rem 0;
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ padding: 3rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.detailed-comparison h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.comparison-table {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ gap: 1px;
+ background: var(--border-color);
+ border-radius: 12px;
+ overflow: hidden;
+}
+
+.table-header {
+ display: contents;
+}
+
+.header-cell {
+ background: var(--primary-blue);
+ color: white;
+ padding: 1rem;
+ font-weight: 700;
+ text-align: center;
+}
+
+.table-row {
+ display: contents;
+}
+
+.table-cell {
+ background: white;
+ padding: 1rem;
+ text-align: center;
+ transition: all 0.3s ease;
+}
+
+.feature-col {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 0.75rem;
+ font-weight: 600;
+ color: var(--dark-text);
+}
+
+.feature-robot {
+ position: relative;
+}
+
+.robot-mini-head {
+ width: 20px;
+ height: 20px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 4px;
+}
+
+.robot-mini-body {
+ width: 25px;
+ height: 30px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+}
+
+.models-feature .robot-mini-head {
+ background: var(--soft-pink);
+}
+.models-feature .robot-mini-body {
+ background: var(--soft-pink);
+}
+
+.privacy-feature .robot-mini-head {
+ background: var(--primary-blue);
+}
+.privacy-feature .robot-mini-body {
+ background: var(--primary-blue);
+}
+
+.deployment-feature .robot-mini-head {
+ background: var(--success-green);
+}
+.deployment-feature .robot-mini-body {
+ background: var(--success-green);
+}
+
+.cost-feature .robot-mini-head {
+ background: var(--warning-amber);
+}
+.cost-feature .robot-mini-body {
+ background: var(--warning-amber);
+}
+
+.control-feature .robot-mini-head {
+ background: var(--light-purple);
+}
+.control-feature .robot-mini-body {
+ background: var(--light-purple);
+}
+
+.limitation-indicator {
+ background: var(--warm-yellow);
+ color: var(--error-red);
+ padding: 0.5rem 1rem;
+ border-radius: 8px;
+ font-weight: 600;
+ border: 2px solid var(--error-red);
+}
+
+.advantage-indicator {
+ background: var(--soft-green);
+ color: var(--success-green);
+ padding: 0.5rem 1rem;
+ border-radius: 8px;
+ font-weight: 600;
+ border: 2px solid var(--success-green);
+}
+
+/* Philosophy Cards */
+.philosophy-cards {
+ margin: 4rem 0;
+}
+
+.philosophy-cards h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.cards-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+}
+
+.philosophy-card {
+ background: white;
+ border-radius: 16px;
+ border: 2px solid var(--border-color);
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+ text-align: center;
+}
+
+.philosophy-card:hover {
+ border-color: var(--primary-blue);
+}
+
+.card-robot {
+ margin-bottom: 1.5rem;
+ display: inline-block;
+}
+
+.card-robot .robot-head {
+ width: 50px;
+ height: 50px;
+ border-radius: 12px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 8px;
+ position: relative;
+}
+
+.card-robot .robot-body {
+ width: 60px;
+ height: 70px;
+ border-radius: 12px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.models-card .card-robot .robot-head {
+ background: var(--soft-pink);
+}
+.models-card .card-robot .robot-body {
+ background: var(--soft-pink);
+}
+
+.infrastructure-card .card-robot .robot-head {
+ background: var(--success-green);
+}
+.infrastructure-card .card-robot .robot-body {
+ background: var(--success-green);
+}
+
+.tools-card .card-robot .robot-head {
+ background: var(--warning-amber);
+}
+.tools-card .card-robot .robot-body {
+ background: var(--warning-amber);
+}
+
+.robot-brain {
+ position: absolute;
+ top: 8px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.brain-core {
+ width: 15px;
+ height: 10px;
+ background: var(--primary-blue);
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+}
+
+.model-display {
+ display: flex;
+ flex-direction: column;
+ gap: 3px;
+}
+
+.model-layer {
+ width: 25px;
+ height: 3px;
+ background: var(--dark-text);
+ border-radius: 2px;
+}
+
+.robot-home {
+ position: absolute;
+ top: 5px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.home-roof {
+ width: 20px;
+ height: 10px;
+ background: var(--error-red);
+ border: 2px solid var(--dark-text);
+ border-radius: 2px 2px 0 0;
+}
+
+.home-door {
+ width: 8px;
+ height: 8px;
+ background: var(--dark-text);
+ border-radius: 2px;
+ margin: 0 auto;
+}
+
+.infrastructure-display {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+}
+
+.server-rack {
+ width: 20px;
+ height: 15px;
+ background: var(--dark-text);
+ border-radius: 2px;
+}
+
+.connection-lines {
+ display: flex;
+ gap: 2px;
+}
+
+.line {
+ width: 8px;
+ height: 1px;
+ background: var(--dark-text);
+}
+
+.robot-tools-display {
+ position: absolute;
+ top: 8px;
+ left: 50%;
+ transform: translateX(-50%);
+ display: flex;
+ gap: 4px;
+}
+
+.tool-wrench {
+ width: 8px;
+ height: 8px;
+ background: var(--dark-text);
+ border-radius: 2px;
+ transform: rotate(45deg);
+}
+
+.tool-gear {
+ width: 8px;
+ height: 8px;
+ background: var(--dark-text);
+ border-radius: 50%;
+}
+
+.automation-display {
+ width: 30px;
+ height: 20px;
+}
+
+.automation-flow {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.flow-dot {
+ width: 4px;
+ height: 4px;
+ background: var(--dark-text);
+ border-radius: 50%;
+ animation: flowPulse 2s infinite ease-in-out;
+}
+
+.flow-dot:nth-child(2) {
+ animation-delay: 0.5s;
+}
+.flow-dot:nth-child(3) {
+ animation-delay: 1s;
+}
+
+.card-content h4 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.card-content p {
+ color: var(--medium-gray);
+ line-height: 1.6;
+}
+
+.card-icon {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 1rem;
+}
+
+.card-icon.our-models {
+ background: var(--soft-pink);
+}
+.card-icon.your-infrastructure {
+ background: var(--success-green);
+}
+.card-icon.real-tools {
+ background: var(--warning-amber);
+}
+
+/* Principles CTA */
+.principles-cta {
+ margin: 4rem 0;
+ background: var(--light-blue);
+ border-radius: 20px;
+ border: 3px solid var(--primary-blue);
+ padding: 3rem;
+ display: flex;
+ align-items: center;
+ gap: 2rem;
+ box-shadow: 0 8px 30px rgba(59, 130, 246, 0.2);
+}
+
+.cta-robot {
+ flex-shrink: 0;
+ position: relative;
+}
+
+.cta-robot .robot-head {
+ width: 80px;
+ height: 80px;
+ background: var(--primary-blue);
+ border-radius: 20px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto 12px;
+ position: relative;
+}
+
+.cta-robot .robot-body {
+ width: 90px;
+ height: 100px;
+ background: var(--primary-blue);
+ border-radius: 20px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.robot-eye.confident {
+ background: var(--dark-text);
+ animation: confidentGlow 3s infinite ease-in-out;
+}
+
+.robot-confident-smile {
+ position: absolute;
+ bottom: 15px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 30px;
+ height: 15px;
+ border: 4px solid var(--dark-text);
+ border-bottom: none;
+ border-radius: 30px 30px 0 0;
+}
+
+.robot-badge {
+ background: white;
+ color: var(--primary-blue);
+ padding: 0.5rem 1rem;
+ border-radius: 12px;
+ font-size: 0.8rem;
+ font-weight: 700;
+ border: 2px solid var(--dark-text);
+ text-transform: uppercase;
+}
+
+.robot-cape {
+ position: absolute;
+ top: 70px;
+ left: -10px;
+ right: -10px;
+ height: 40px;
+ background: var(--error-red);
+ border-radius: 0 0 15px 15px;
+ border: 3px solid var(--dark-text);
+ border-top: none;
+ z-index: -1;
+}
+
+.cape-flow {
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(
+ 45deg,
+ transparent 30%,
+ rgba(255, 255, 255, 0.2) 50%,
+ transparent 70%
+ );
+ animation: capeFlow 3s infinite ease-in-out;
+}
+
+.cta-content {
+ flex: 1;
+}
+
+.cta-content h3 {
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.cta-content p {
+ font-size: 1.1rem;
+ color: var(--medium-gray);
+ margin-bottom: 2rem;
+ line-height: 1.6;
+}
+
+.cta-buttons {
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+/* Animations */
+@keyframes corporateGlare {
+ 0%,
+ 100% {
+ background: var(--dark-text);
+ }
+ 50% {
+ background: var(--error-red);
+ }
+}
+
+@keyframes friendlyBlink {
+ 0%,
+ 90%,
+ 100% {
+ transform: scaleY(1);
+ }
+ 95% {
+ transform: scaleY(0.1);
+ }
+}
+
+@keyframes heartbeat {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.2);
+ }
+}
+
+@keyframes wingFlap {
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-3px);
+ }
+}
+
+@keyframes vsFlicker {
+ 0%,
+ 100% {
+ opacity: 1;
+ }
+ 50% {
+ opacity: 0.5;
+ }
+}
+
+@keyframes flowPulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 50% {
+ transform: scale(1.3);
+ opacity: 0.7;
+ }
+}
+
+@keyframes confidentGlow {
+ 0%,
+ 100% {
+ box-shadow: 0 0 5px var(--primary-blue);
+ }
+ 50% {
+ box-shadow: 0 0 15px var(--primary-blue);
+ }
+}
+
+@keyframes capeFlow {
+ 0% {
+ transform: translateX(-100%);
+ }
+ 100% {
+ transform: translateX(100%);
+ }
+}
+
+@keyframes corporateShake {
+ 0%,
+ 100% {
+ transform: translateX(0);
+ }
+ 25% {
+ transform: translateX(-2px) rotate(-1deg);
+ }
+ 75% {
+ transform: translateX(2px) rotate(1deg);
+ }
+}
+
+@keyframes friendlyBounce {
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-8px);
+ }
+}
+
+@keyframes vsFlash {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.1);
+ box-shadow: 0 0 15px var(--warning-amber);
+ }
+}
+
+@keyframes featureBounce {
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-4px);
+ }
+}
+
+@keyframes cardRobotFloat {
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+ 50% {
+ transform: translateY(-6px);
+ }
+}
+
+@keyframes slideInComparison {
+ 0% {
+ transform: translateX(-30px);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateX(0);
+ opacity: 1;
+ }
+}
+
+@keyframes fadeInUp {
+ 0% {
+ transform: translateY(30px);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateY(0);
+ opacity: 1;
+ }
+}
+
+@keyframes ctaRobotCelebrate {
+ 0%,
+ 100% {
+ transform: translateY(0) rotate(0deg);
+ }
+ 25% {
+ transform: translateY(-10px) rotate(-5deg);
+ }
+ 75% {
+ transform: translateY(-5px) rotate(5deg);
+ }
+}
+
+@keyframes advantagePulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.05);
+ }
+}
+
+@keyframes limitationShake {
+ 0%,
+ 100% {
+ transform: translateX(0);
+ }
+ 25% {
+ transform: translateX(-2px);
+ }
+ 75% {
+ transform: translateX(2px);
+ }
+}
+
+@keyframes iconPulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.2);
+ }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .comparison-sides {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .vs-divider {
+ order: 2;
+ transform: rotate(90deg);
+ padding: 1rem 0;
+ }
+
+ .other-ai {
+ order: 1;
+ }
+
+ .jan-side {
+ order: 3;
+ }
+
+ .principles-cta {
+ flex-direction: column;
+ text-align: center;
+ gap: 2rem;
+ }
+}
+
+@media (max-width: 768px) {
+ .detailed-comparison {
+ padding: 2rem;
+ }
+
+ .comparison-table {
+ grid-template-columns: 1fr;
+ gap: 0;
+ }
+
+ .table-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ gap: 1px;
+ margin-bottom: 1px;
+ }
+
+ .cards-grid {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .philosophy-card {
+ padding: 1.5rem;
+ }
+
+ .feature-item {
+ flex-direction: column;
+ text-align: center;
+ gap: 1rem;
+ }
+
+ .side-robot .robot-head {
+ width: 50px;
+ height: 50px;
+ }
+
+ .side-robot .robot-body {
+ width: 60px;
+ height: 70px;
+ }
+}
+
+@media (max-width: 480px) {
+ .comparison-side {
+ padding: 1.5rem;
+ }
+
+ .detailed-comparison {
+ padding: 1.5rem;
+ }
+
+ .philosophy-cards h3,
+ .detailed-comparison h3 {
+ font-size: 1.8rem;
+ }
+
+ .cta-content h3 {
+ font-size: 1.8rem;
+ }
+
+ .cta-buttons {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .table-row {
+ grid-template-columns: 1fr;
+ text-align: left;
+ }
+
+ .header-cell,
+ .table-cell {
+ padding: 0.75rem;
+ font-size: 0.8rem;
+ }
+
+ .feature-col {
+ justify-content: flex-start;
+ }
+
+ .advantage-indicator,
+ .limitation-indicator {
+ padding: 0.5rem;
+ font-size: 0.8rem;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ .other-robot,
+ .jan-robot,
+ .vs-robot,
+ .feature-robot,
+ .card-robot,
+ .cta-robot,
+ .comparison-side,
+ .feature-item,
+ .philosophy-card,
+ .advantage-indicator,
+ .limitation-indicator {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .comparison-side,
+ .detailed-comparison,
+ .philosophy-card,
+ .principles-cta {
+ border-width: 3px;
+ }
+
+ .feature-item {
+ border-width: 2px;
+ }
+}
diff --git a/website/src/styles/products-roadmap.css b/website/src/styles/products-roadmap.css
new file mode 100644
index 000000000..1cc480dae
--- /dev/null
+++ b/website/src/styles/products-roadmap.css
@@ -0,0 +1,837 @@
+/* ProductsRoadmap Component Styles */
+
+.roadmap-section {
+ background: var(--light-gray);
+ border-top: 1px solid var(--border-color);
+}
+
+.roadmap-section .badge-robot-head {
+ background: var(--light-purple);
+}
+
+/* Roadmap Overview */
+.roadmap-overview {
+ margin: 4rem 0;
+ max-width: 900px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.timeline-stats {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 2rem;
+}
+
+.stat-card {
+ background: white;
+ border-radius: 16px;
+ border: 2px solid var(--border-color);
+ padding: 1.5rem;
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ transition: all 0.3s ease;
+}
+
+.stat-card:hover {
+ transform: translateY(-4px);
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+}
+
+.stat-robot {
+ flex-shrink: 0;
+}
+
+.stat-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 8px;
+ position: relative;
+}
+
+.stat-robot .robot-body {
+ width: 50px;
+ height: 60px;
+ border-radius: 10px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.released-robot .robot-head {
+ background: var(--success-green);
+}
+.released-robot .robot-body {
+ background: var(--success-green);
+}
+
+.development-robot .robot-head {
+ background: var(--primary-blue);
+}
+.development-robot .robot-body {
+ background: var(--primary-blue);
+}
+
+.planned-robot .robot-head {
+ background: var(--medium-gray);
+}
+.planned-robot .robot-body {
+ background: var(--medium-gray);
+}
+
+.success-check {
+ width: 20px;
+ height: 10px;
+ border-left: 4px solid white;
+ border-bottom: 4px solid white;
+ transform: rotate(-45deg);
+}
+
+.work-indicator {
+ display: flex;
+ gap: 3px;
+}
+
+.work-dot {
+ width: 6px;
+ height: 6px;
+ background: white;
+ border-radius: 50%;
+ animation: workPulse 2s infinite ease-in-out;
+}
+
+.work-dot:nth-child(2) {
+ animation-delay: 0.3s;
+}
+.work-dot:nth-child(3) {
+ animation-delay: 0.6s;
+}
+
+.planning-board {
+ display: flex;
+ flex-direction: column;
+ gap: 3px;
+}
+
+.plan-item {
+ width: 20px;
+ height: 3px;
+ background: white;
+ border-radius: 2px;
+}
+
+.stat-content {
+ text-align: left;
+}
+
+.stat-number {
+ font-size: 2rem;
+ font-weight: 800;
+ color: var(--dark-text);
+ line-height: 1;
+}
+
+.stat-label {
+ font-size: 1rem;
+ color: var(--medium-gray);
+ font-weight: 500;
+}
+
+/* Roadmap Database */
+.roadmap-database {
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.database-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 1.5rem;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.database-title {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+}
+
+.title-robot .robot-head {
+ width: 30px;
+ height: 30px;
+ background: var(--light-purple);
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin-bottom: 4px;
+}
+
+.title-robot .robot-body {
+ width: 35px;
+ height: 40px;
+ background: var(--light-purple);
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 700;
+ font-size: 0.9rem;
+}
+
+.database-title h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.database-controls {
+ display: flex;
+ gap: 0.75rem;
+}
+
+.control-btn {
+ background: var(--light-gray);
+ border: 1px solid var(--border-color);
+ border-radius: 8px;
+ padding: 0.5rem 1rem;
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ cursor: pointer;
+ transition: all 0.3s ease;
+}
+
+.control-btn:hover {
+ background: var(--border-color);
+ transform: translateY(-2px);
+}
+
+.database-table {
+ padding: 1.5rem;
+}
+
+.table-header {
+ display: grid;
+ grid-template-columns: 2fr 1fr 1fr 80px;
+ gap: 1rem;
+ padding: 0 1rem 1rem;
+ border-bottom: 1px solid var(--border-color);
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: var(--medium-gray);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.expand-col {
+ text-align: right;
+}
+
+/* Roadmap Row */
+.roadmap-row {
+ border-bottom: 1px solid var(--border-color);
+ transition: background-color 0.3s ease;
+}
+
+.roadmap-row:last-child {
+ border-bottom: none;
+}
+
+.roadmap-row.expanded {
+ background: var(--light-blue);
+}
+
+.row-main {
+ display: grid;
+ grid-template-columns: 2fr 1fr 1fr 80px;
+ gap: 1rem;
+ align-items: center;
+ padding: 1rem;
+ cursor: pointer;
+}
+
+.version-col {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+}
+
+.version-robot {
+ flex-shrink: 0;
+}
+
+.robot-mini-head {
+ width: 25px;
+ height: 25px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 4px;
+}
+
+.robot-mini-body {
+ width: 30px;
+ height: 35px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 700;
+}
+
+.released-version .robot-mini-head,
+.released-version .robot-mini-body {
+ background: var(--success-green);
+}
+
+.development-version .robot-mini-head,
+.development-version .robot-mini-body {
+ background: var(--primary-blue);
+}
+
+.planned-version .robot-mini-head,
+.planned-version .robot-mini-body {
+ background: var(--medium-gray);
+}
+
+.version-info {
+ display: flex;
+ flex-direction: column;
+}
+
+.version-number {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.version-name {
+ font-size: 0.9rem;
+ color: var(--medium-gray);
+}
+
+.date-badge {
+ display: inline-block;
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+}
+
+.date-badge.released {
+ background: var(--soft-green);
+ color: var(--success-green);
+}
+.date-badge.development {
+ background: var(--light-blue);
+ color: var(--primary-blue);
+}
+.date-badge.planned {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+}
+
+.status-indicator {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-size: 0.9rem;
+ font-weight: 600;
+}
+
+.status-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+}
+
+.status-indicator.released {
+ color: var(--success-green);
+}
+.status-indicator.released .status-dot {
+ background: var(--success-green);
+}
+
+.status-indicator.development {
+ color: var(--primary-blue);
+}
+.status-indicator.development .status-dot {
+ background: var(--primary-blue);
+ animation: pulse 2s infinite;
+}
+
+.status-indicator.planned {
+ color: var(--medium-gray);
+}
+.status-indicator.planned .status-dot {
+ background: var(--medium-gray);
+}
+
+.expand-btn {
+ width: 30px;
+ height: 30px;
+ background: var(--light-gray);
+ border: 1px solid var(--border-color);
+ border-radius: 50%;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: all 0.3s ease;
+}
+
+.expand-btn:hover {
+ background: var(--border-color);
+ transform: scale(1.1);
+}
+
+.expand-icon {
+ font-size: 1.2rem;
+ font-weight: 700;
+ color: var(--medium-gray);
+ transition: transform 0.3s ease;
+}
+
+/* Row Details */
+.row-details {
+ max-height: 0;
+ opacity: 0;
+ overflow: hidden;
+ transition: max-height 0.5s ease-out, opacity 0.5s ease-out;
+}
+
+.details-content {
+ padding: 1rem 2rem 2rem;
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 2rem;
+ border-top: 1px solid var(--border-color);
+}
+
+.detail-section h4 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+ border-bottom: 2px solid var(--primary-blue);
+ padding-bottom: 0.5rem;
+ display: inline-block;
+}
+
+.detail-section ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+.detail-section li {
+ padding-left: 1.5rem;
+ position: relative;
+ font-size: 0.9rem;
+ color: var(--medium-gray);
+}
+
+.detail-section li::before {
+ content: "→";
+ position: absolute;
+ left: 0;
+ color: var(--primary-blue);
+ font-weight: 700;
+}
+
+/* Roadmap CTA */
+.roadmap-cta {
+ margin: 4rem 0 0;
+ background: var(--light-blue);
+ border-radius: 20px;
+ border: 3px solid var(--primary-blue);
+ padding: 3rem;
+ display: flex;
+ align-items: center;
+ gap: 2rem;
+ box-shadow: 0 8px 30px rgba(59, 130, 246, 0.2);
+}
+
+.cta-robot {
+ flex-shrink: 0;
+}
+
+.cta-robot .robot-head {
+ width: 80px;
+ height: 80px;
+ background: var(--primary-blue);
+ border-radius: 20px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto 12px;
+ position: relative;
+}
+
+.cta-robot .robot-body {
+ width: 90px;
+ height: 100px;
+ background: var(--primary-blue);
+ border-radius: 20px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.robot-eye.excited {
+ animation: excitedWiggle 2s infinite ease-in-out;
+}
+
+.robot-smile-big {
+ position: absolute;
+ bottom: 15px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 35px;
+ height: 20px;
+ border: 4px solid var(--dark-text);
+ border-bottom: none;
+ border-radius: 35px 35px 0 0;
+}
+
+.robot-progress-wheel {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ border: 3px solid var(--dark-text);
+ position: relative;
+ animation: spin 4s infinite linear;
+}
+
+.progress-segment {
+ position: absolute;
+ width: 50%;
+ height: 50%;
+}
+
+.progress-segment:nth-child(1) {
+ top: 0;
+ left: 0;
+ background: var(--soft-green);
+ border-radius: 100% 0 0 0;
+}
+.progress-segment:nth-child(2) {
+ top: 0;
+ right: 0;
+ background: var(--warm-yellow);
+ border-radius: 0 100% 0 0;
+}
+.progress-segment:nth-child(3) {
+ bottom: 0;
+ left: 0;
+ background: var(--light-purple);
+ border-radius: 0 0 0 100%;
+}
+.progress-segment:nth-child(4) {
+ bottom: 0;
+ right: 0;
+ background: var(--soft-pink);
+ border-radius: 0 0 100% 0;
+}
+
+.robot-arms.celebrating {
+ display: flex;
+ justify-content: space-between;
+ margin-top: -80px;
+ padding: 0 10px;
+}
+
+.arm.left-celebrate,
+.arm.right-celebrate {
+ width: 15px;
+ height: 40px;
+ background: var(--gentle-orange);
+ border-radius: 8px;
+ border: 3px solid var(--dark-text);
+ transform-origin: bottom center;
+ animation: celebrate 1.5s infinite ease-in-out;
+}
+
+.arm.right-celebrate {
+ animation-delay: 0.3s;
+}
+
+.cta-content h3 {
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.cta-content p {
+ font-size: 1.1rem;
+ color: var(--medium-gray);
+ margin-bottom: 2rem;
+ line-height: 1.6;
+}
+
+.cta-buttons {
+ display: flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+/* Animations */
+@keyframes workPulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ opacity: 0.7;
+ }
+ 50% {
+ transform: scale(1.2);
+ opacity: 1;
+ }
+}
+
+@keyframes pulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 50% {
+ transform: scale(1.1);
+ opacity: 0.7;
+ }
+}
+
+@keyframes versionCelebrate {
+ 0%,
+ 100% {
+ transform: translateY(0);
+ }
+ 25% {
+ transform: translateY(-8px) rotate(-5deg);
+ }
+ 75% {
+ transform: translateY(-4px) rotate(5deg);
+ }
+}
+
+@keyframes versionHover {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.05);
+ }
+}
+
+@keyframes slideInFromLeft {
+ 0% {
+ transform: translateX(-30px);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateX(0);
+ opacity: 1;
+ }
+}
+
+@keyframes fadeInUp {
+ 0% {
+ transform: translateY(20px);
+ opacity: 0;
+ }
+ 100% {
+ transform: translateY(0);
+ opacity: 1;
+ }
+}
+
+@keyframes excitedWiggle {
+ 0%,
+ 100% {
+ transform: rotate(0);
+ }
+ 25% {
+ transform: rotate(-3deg);
+ }
+ 75% {
+ transform: rotate(3deg);
+ }
+}
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes celebrate {
+ 0%,
+ 100% {
+ transform: rotate(0deg);
+ }
+ 50% {
+ transform: rotate(15deg);
+ }
+}
+
+@keyframes ctaRobotCelebration {
+ 0%,
+ 100% {
+ transform: translateY(0) rotate(0);
+ }
+ 25% {
+ transform: translateY(-10px) rotate(-5deg);
+ }
+ 75% {
+ transform: translateY(-5px) rotate(5deg);
+ }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .database-table {
+ font-size: 0.9rem;
+ }
+
+ .table-header {
+ grid-template-columns: 2fr 1.5fr 1fr 60px;
+ }
+
+ .row-main {
+ grid-template-columns: 2fr 1.5fr 1fr 60px;
+ }
+}
+
+@media (max-width: 768px) {
+ .timeline-stats {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .database-header {
+ flex-direction: column;
+ gap: 1rem;
+ align-items: flex-start;
+ }
+
+ .table-header {
+ display: none;
+ }
+
+ .row-main {
+ grid-template-columns: 1fr;
+ gap: 1rem;
+ padding: 1.5rem;
+ }
+
+ .row-cell {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1px dashed var(--border-color);
+ padding-bottom: 0.75rem;
+ }
+
+ .row-cell:last-child {
+ border-bottom: none;
+ }
+
+ .row-cell::before {
+ content: attr(data-label);
+ font-weight: 600;
+ color: var(--medium-gray);
+ font-size: 0.8rem;
+ text-transform: uppercase;
+ }
+
+ .expand-col {
+ justify-content: flex-end;
+ }
+
+ .details-content {
+ grid-template-columns: 1fr;
+ padding: 1rem;
+ }
+
+ .roadmap-cta {
+ flex-direction: column;
+ text-align: center;
+ }
+}
+
+@media (max-width: 480px) {
+ .roadmap-database {
+ font-size: 0.8rem;
+ }
+
+ .row-main {
+ padding: 1rem;
+ }
+
+ .version-col {
+ gap: 0.75rem;
+ }
+
+ .version-number {
+ font-size: 0.9rem;
+ }
+
+ .cta-content h3 {
+ font-size: 1.8rem;
+ }
+
+ .cta-buttons {
+ flex-direction: column;
+ align-items: center;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ .work-dot,
+ .status-indicator.development .status-dot,
+ .robot-eye,
+ .progress-wheel,
+ .arm,
+ .stat-card,
+ .roadmap-row,
+ .control-btn,
+ .expand-btn,
+ .row-details,
+ .version-robot {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .stat-card,
+ .roadmap-database,
+ .roadmap-cta {
+ border-width: 3px;
+ }
+
+ .roadmap-row {
+ border-width: 2px;
+ }
+}
diff --git a/website/src/styles/products-tools.css b/website/src/styles/products-tools.css
new file mode 100644
index 000000000..8603b491e
--- /dev/null
+++ b/website/src/styles/products-tools.css
@@ -0,0 +1,597 @@
+/* ProductsTools Component Styles */
+
+.tools-section {
+ background: var(--cream-white);
+ border-top: 1px solid var(--border-color);
+}
+
+.tools-section .badge-robot-head {
+ background: var(--warning-amber);
+}
+
+/* Tools Grid */
+.tools-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ gap: 2rem;
+ margin: 4rem 0;
+}
+
+.tool-card {
+ position: relative;
+ overflow: visible;
+}
+
+.tool-robot-section {
+ position: relative;
+ text-align: center;
+ margin-bottom: 2rem;
+}
+
+.tool-robot {
+ display: inline-block;
+ position: relative;
+ margin-bottom: 1rem;
+}
+
+.tool-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 10px;
+ position: relative;
+}
+
+.tool-robot .robot-body {
+ width: 70px;
+ height: 80px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+/* Robot Variations */
+.search-robot .robot-head,
+.search-robot .robot-body {
+ background: var(--success-green);
+}
+
+.research-robot .robot-head,
+.research-robot .robot-body {
+ background: var(--primary-blue);
+}
+
+.browser-robot .robot-head,
+.browser-robot .robot-body {
+ background: var(--warning-amber);
+}
+
+.agents-robot .robot-head,
+.agents-robot .robot-body {
+ background: var(--light-purple);
+}
+
+.agents-robot.sleeping {
+ opacity: 0.7;
+ animation: sleepBob 4s infinite ease-in-out;
+}
+
+.tool-status-bubble {
+ position: absolute;
+ top: -10px;
+ right: 1rem;
+}
+
+/* Tool Content */
+.tool-content {
+ padding: 0;
+}
+
+.tool-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.tool-header h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.tool-version {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ padding: 0.25rem 0.5rem;
+ border-radius: 8px;
+ font-size: 0.7rem;
+ font-weight: 600;
+ border: 1px solid var(--border-color);
+}
+
+.tool-description {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+}
+
+.tool-features {
+ margin-bottom: 1.5rem;
+}
+
+.tool-features h4 {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ margin-bottom: 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.features-list {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+.feature-item {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ font-size: 0.9rem;
+ color: var(--dark-text);
+ padding: 0.5rem;
+ border-radius: 8px;
+ transition: all 0.3s ease;
+}
+
+.feature-item:hover {
+ background: var(--light-gray);
+}
+
+.feature-item.coming {
+ color: var(--medium-gray);
+ font-style: italic;
+}
+
+.feature-icon {
+ width: 20px;
+ height: 20px;
+ border-radius: 4px;
+ border: 2px solid var(--dark-text);
+ flex-shrink: 0;
+}
+
+.tool-metrics {
+ display: flex;
+ justify-content: space-around;
+ padding-top: 1rem;
+ border-top: 1px solid var(--border-color);
+}
+
+.metric {
+ text-align: center;
+}
+
+.metric-value {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--primary-blue);
+ margin-bottom: 0.25rem;
+}
+
+.metric-label {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+/* Tools Integration Flow */
+.tools-integration {
+ margin: 4rem 0;
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ padding: 3rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.tools-integration h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.integration-flow {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+.flow-step {
+ text-align: center;
+}
+
+.step-robot {
+ margin-bottom: 0.5rem;
+}
+
+.robot-mini {
+ width: 40px;
+ height: 50px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+}
+
+.search-mini { background: var(--success-green); }
+.research-mini { background: var(--primary-blue); }
+.browser-mini { background: var(--warning-amber); }
+.agents-mini { background: var(--light-purple); }
+
+.step-content h4 {
+ font-size: 1rem;
+ font-weight: 600;
+ color: var(--dark-text);
+}
+
+.step-content p {
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+}
+
+.flow-arrow {
+ width: 40px;
+ height: 2px;
+ background: var(--primary-blue);
+ position: relative;
+}
+
+.flow-arrow.coming {
+ background: var(--medium-gray);
+ border-style: dashed;
+}
+
+.flow-arrow .arrow-head {
+ position: absolute;
+ right: -5px;
+ top: -3px;
+ width: 0;
+ height: 0;
+ border-top: 4px solid transparent;
+ border-bottom: 4px solid transparent;
+ border-left: 8px solid var(--primary-blue);
+}
+
+.flow-arrow.coming .arrow-head {
+ border-left-color: var(--medium-gray);
+}
+
+/* Tools Comparison Table */
+.tools-comparison {
+ margin: 4rem 0;
+ background: white;
+ border-radius: 20px;
+ border: 2px solid var(--border-color);
+ padding: 3rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+}
+
+.tools-comparison h3 {
+ text-align: center;
+ font-size: 2rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+}
+
+.comparison-table {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr;
+ gap: 1px;
+ background: var(--border-color);
+ border-radius: 12px;
+ overflow: hidden;
+}
+
+.table-header { display: contents; }
+
+.header-cell {
+ background: var(--primary-blue);
+ color: white;
+ padding: 1rem;
+ font-weight: 700;
+ text-align: center;
+}
+
+.table-row { display: contents; }
+
+.table-cell {
+ background: white;
+ padding: 1rem;
+ text-align: center;
+ font-size: 0.9rem;
+}
+
+.tool-col {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 0.5rem;
+ font-weight: 600;
+}
+
+.tool-mini-icon {
+ width: 20px;
+ height: 20px;
+ border-radius: 4px;
+ border: 2px solid var(--dark-text);
+}
+
+.search-icon { background: var(--success-green); }
+.research-icon { background: var(--primary-blue); }
+.browser-icon { background: var(--warning-amber); }
+.agents-icon { background: var(--light-purple); }
+
+/* Animations */
+@keyframes toolBounce {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-8px); }
+}
+
+@keyframes sleepShift {
+ 0%, 100% { transform: translateX(0) rotate(0); }
+ 50% { transform: translateX(4px) rotate(2deg); }
+}
+
+@keyframes slideInFromBottom {
+ 0% { transform: translateY(50px); opacity: 0; }
+ 100% { transform: translateY(0); opacity: 1; }
+}
+
+@keyframes miniRobotSpin {
+ 0% { transform: rotate(0); }
+ 100% { transform: rotate(360deg); }
+}
+
+@keyframes iconPulse {
+ 0%, 100% { transform: scale(1); }
+ 50% { transform: scale(1.1); }
+}
+
+@keyframes featureIconBounce {
+ 0%, 100% { transform: scale(1); }
+ 50% { transform: scale(1.2) rotate(5deg); }
+}
+
+@keyframes fadeInUp {
+ 0% { transform: translateY(20px); opacity: 0; }
+ 100% { transform: translateY(0); opacity: 1; }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .tools-grid {
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+}
+
+@media (max-width: 768px) {
+ .tools-grid {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .tools-comparison {
+ padding: 2rem;
+ }
+
+ .comparison-table {
+ grid-template-columns: 1fr;
+ gap: 0;
+ }
+
+ .table-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr 1fr;
+ gap: 1px;
+ margin-bottom: 1px;
+ }
+}
+
+@media (max-width: 480px) {
+ .flow-arrow {
+ transform: rotate(90deg);
+ }
+
+ .table-row {
+ display: flex;
+ flex-direction: column;
+ gap: 0;
+ margin-bottom: 1px;
+ }
+
+ .table-cell {
+ border-bottom: 1px solid var(--border-color);
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ .tool-robot,
+ .tool-card,
+ .flow-step,
+ .robot-mini,
+ .tool-mini-icon,
+ .feature-icon {
+ animation: none !important;
+ transition: none !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .tool-card,
+ .tools-integration,
+ .tools-comparison {
+ border-width: 3px;
+ }
+}
+
+/* Robot-specific details and animations that were missing */
+.robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 12px 10px;
+}
+
+.robot-eye {
+ width: 12px;
+ height: 12px;
+ background: var(--dark-text);
+ border-radius: 50%;
+}
+
+.robot-eye.active {
+ animation: eyeBlink 4s infinite ease-in-out;
+}
+
+.robot-eye.thinking {
+ height: 3px;
+ border-radius: 2px;
+ animation: thinkingBlink 3s infinite ease-in-out;
+}
+
+.robot-eye.beta {
+ background: var(--dark-text);
+ animation: betaGlow 2s infinite ease-in-out;
+}
+
+.robot-eye.sleeping {
+ height: 3px;
+ border-radius: 2px;
+}
+
+@keyframes eyeBlink {
+ 0%, 90%, 100% { transform: scaleY(1); }
+ 95% { transform: scaleY(0.1); }
+}
+
+@keyframes thinkingBlink {
+ 0%, 100% { width: 12px; }
+ 50% { width: 4px; }
+}
+
+@keyframes betaGlow {
+ 0%, 100% { box-shadow: none; }
+ 50% { box-shadow: 0 0 5px var(--warning-amber); }
+}
+
+.robot-search-beam {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 40px;
+ height: 20px;
+ perspective: 50px;
+}
+
+.search-wave {
+ position: absolute;
+ width: 100%;
+ height: 1px;
+ background: white;
+ opacity: 0.7;
+ animation: searchWave 3s infinite ease-out;
+}
+
+.search-wave:nth-child(2) { animation-delay: 1s; }
+.search-wave:nth-child(3) { animation-delay: 2s; }
+
+@keyframes searchWave {
+ 0% { transform: translateY(0) scaleY(1); opacity: 0; }
+ 50% { opacity: 0.7; }
+ 100% { transform: translateY(20px) scaleY(3); opacity: 0; }
+}
+
+.robot-screen {
+ width: 40px;
+ height: 30px;
+ background: var(--dark-text);
+ border-radius: 4px;
+ padding: 5px;
+}
+
+.search-results .result-line {
+ height: 2px;
+ background: white;
+ border-radius: 1px;
+ margin-bottom: 3px;
+ animation: searchResults 4s infinite;
+}
+
+.search-results .result-line.short {
+ width: 60%;
+}
+
+@keyframes searchResults {
+ 0%, 100% { width: 100%; }
+ 50% { width: 40%; }
+}
+
+.robot-magnifier {
+ position: absolute;
+ bottom: -10px;
+ right: -10px;
+}
+
+.magnifier-glass {
+ width: 20px;
+ height: 20px;
+ border: 3px solid var(--dark-text);
+ border-radius: 50%;
+ background: var(--light-blue);
+}
+
+.magnifier-handle {
+ width: 15px;
+ height: 4px;
+ background: var(--dark-text);
+ transform: rotate(45deg) translate(12px, -3px);
+}
+
+.sleep-indicator {
+ position: absolute;
+ top: -5px;
+ right: -20px;
+ display: flex;
+ flex-direction: column;
+}
+
+.sleep-z {
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: var(--medium-gray);
+ animation: sleepZ 3s infinite ease-in-out;
+}
+
+.sleep-z:nth-child(2) { animation-delay: 1s; }
+.sleep-z:nth-child(3) { animation-delay: 2s; }
+
+@keyframes sleepZ {
+ 0% { transform: translate(0, 0); opacity: 0; }
+ 50% { transform: translate(5px, -5px); opacity: 1; }
+ 100% { transform: translate(10px, -10px); opacity: 0; }
+}
diff --git a/website/src/styles/products.css b/website/src/styles/products.css
new file mode 100644
index 000000000..05b0fd54d
--- /dev/null
+++ b/website/src/styles/products.css
@@ -0,0 +1,1644 @@
+/* Products Page Styles - Blue Dominant Theme */
+
+/* Color Palette - Blue Dominant */
+:root {
+ --primary-blue: #3b82f6;
+ --light-blue: #93c5fd;
+ --pale-blue: #dbeafe;
+ --sky-blue: #e0f2fe;
+ --soft-green: #bbf7d0;
+ --warm-yellow: #fef08a;
+ --gentle-orange: #fed7aa;
+ --light-purple: #e9d5ff;
+ --soft-pink: #fce7f3;
+ --cream-white: #fefce8;
+ --light-gray: #f8fafc;
+ --medium-gray: #64748b;
+ --dark-text: #1e293b;
+ --success-green: #22c55e;
+ --warning-amber: #f59e0b;
+ --error-red: #ef4444;
+ --white: #ffffff;
+}
+
+/* Base Styles */
+* {
+ box-sizing: border-box;
+}
+
+.products-page {
+ background: linear-gradient(
+ 135deg,
+ var(--pale-blue) 0%,
+ var(--light-gray) 100%
+ );
+ min-height: 100vh;
+ font-family:
+ 'Inter',
+ -apple-system,
+ BlinkMacSystemFont,
+ sans-serif;
+ line-height: 1.6;
+ color: var(--dark-text);
+}
+
+.container {
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 0 2rem;
+}
+
+/* Hero Section */
+.hero-section {
+ position: relative;
+ padding: 4rem 0 6rem;
+ background: linear-gradient(
+ 135deg,
+ var(--primary-blue) 0%,
+ var(--light-blue) 100%
+ );
+ overflow: hidden;
+}
+
+.hero-content {
+ position: relative;
+ text-align: center;
+ z-index: 2;
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 0 2rem;
+}
+
+.hero-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.75rem;
+ background: rgba(255, 255, 255, 0.9);
+ padding: 0.75rem 1.5rem;
+ border-radius: 50px;
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ margin-bottom: 2rem;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+ border: 2px solid var(--dark-text);
+}
+
+.badge-robot {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2px;
+}
+
+.badge-robot-head {
+ width: 16px;
+ height: 16px;
+ background: var(--primary-blue);
+ border-radius: 4px;
+ border: 2px solid var(--dark-text);
+}
+
+.badge-robot-body {
+ width: 12px;
+ height: 12px;
+ background: var(--light-blue);
+ border-radius: 2px;
+ border: 1px solid var(--dark-text);
+}
+
+.hero-title {
+ margin-bottom: 1.5rem;
+}
+
+.title-main {
+ display: block;
+ font-size: clamp(2.5rem, 8vw, 3.5rem);
+ font-weight: 800;
+ color: var(--white);
+ margin-bottom: 0.5rem;
+ line-height: 1.1;
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.title-sub {
+ display: block;
+ font-size: 1.2rem;
+ font-weight: 500;
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero-description {
+ font-size: 1.1rem;
+ color: rgba(255, 255, 255, 0.9);
+ margin-bottom: 3rem;
+ line-height: 1.6;
+}
+
+/* Hero Robot */
+.hero-robot {
+ margin: 3rem 0;
+}
+
+.robot-container {
+ position: relative;
+ display: inline-block;
+ animation: bounce 3s infinite ease-in-out;
+}
+
+.robot-head {
+ width: 80px;
+ height: 80px;
+ background: var(--warm-yellow);
+ border-radius: 20px;
+ position: relative;
+ margin: 0 auto 10px;
+ border: 4px solid var(--dark-text);
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+}
+
+.robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 15px 12px;
+}
+
+.eye {
+ width: 16px;
+ height: 16px;
+ background: var(--dark-text);
+ border-radius: 50%;
+ position: relative;
+}
+
+.eye::after {
+ content: '';
+ position: absolute;
+ top: 3px;
+ right: 3px;
+ width: 4px;
+ height: 4px;
+ background: white;
+ border-radius: 50%;
+}
+
+.robot-mouth.happy {
+ position: absolute;
+ bottom: 15px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 20px;
+ height: 10px;
+ border: 3px solid var(--dark-text);
+ border-bottom: none;
+ border-radius: 20px 20px 0 0;
+}
+
+.robot-body {
+ width: 100px;
+ height: 100px;
+ background: var(--soft-green);
+ border-radius: 15px;
+ margin: 0 auto;
+ border: 4px solid var(--dark-text);
+ position: relative;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+}
+
+.robot-panel {
+ display: flex;
+ justify-content: center;
+ gap: 8px;
+ padding: 20px;
+}
+
+.panel-light {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ border: 2px solid var(--dark-text);
+}
+
+.panel-light.blue {
+ background: var(--primary-blue);
+}
+.panel-light.green {
+ background: var(--success-green);
+}
+.panel-light.amber {
+ background: var(--warning-amber);
+ animation: blink 1.5s infinite;
+}
+
+.speech-bubble {
+ position: absolute;
+ top: -40px;
+ left: 120%;
+ background: white;
+ padding: 0.5rem 1rem;
+ border-radius: 15px;
+ border: 2px solid var(--dark-text);
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ white-space: nowrap;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+}
+
+.speech-bubble::before {
+ content: '';
+ position: absolute;
+ left: -10px;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 0;
+ height: 0;
+ border-top: 8px solid transparent;
+ border-bottom: 8px solid transparent;
+ border-right: 10px solid white;
+}
+
+.speech-bubble::after {
+ content: '';
+ position: absolute;
+ left: -12px;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 0;
+ height: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-right: 12px solid var(--dark-text);
+}
+
+/* Table of Contents */
+.toc-section {
+ padding: 4rem 0;
+ background: var(--white);
+}
+
+.toc-card {
+ background: var(--white);
+ border-radius: 20px;
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+}
+
+.toc-card h2 {
+ text-align: center;
+ margin-bottom: 2rem;
+ font-size: 1.8rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.toc-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 1rem;
+}
+
+.toc-item {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ padding: 1rem;
+ border-radius: 15px;
+ background: var(--pale-blue);
+ border: 2px solid var(--primary-blue);
+ text-decoration: none;
+ color: var(--dark-text);
+ font-weight: 600;
+ transition: all 0.3s ease;
+}
+
+.toc-item:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
+ background: var(--light-blue);
+}
+
+.toc-icon {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.2rem;
+ flex-shrink: 0;
+}
+
+.toc-icon.vision {
+ background: var(--soft-pink);
+}
+.toc-icon.work {
+ background: var(--light-blue);
+}
+.toc-icon.platform {
+ background: var(--gentle-orange);
+}
+.toc-icon.model {
+ background: var(--soft-green);
+}
+.toc-icon.tool {
+ background: var(--light-purple);
+}
+.toc-icon.compare {
+ background: var(--warm-yellow);
+}
+.toc-icon.roadmap {
+ background: var(--primary-blue);
+}
+
+/* Section Styles */
+.section-header {
+ text-align: center;
+ margin-bottom: 4rem;
+}
+
+.section-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.75rem;
+ background: rgba(255, 255, 255, 0.9);
+ padding: 0.75rem 1.5rem;
+ border-radius: 50px;
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+ border: 2px solid var(--dark-text);
+}
+
+.section-title {
+ font-size: 2.5rem;
+ font-weight: 800;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.section-description {
+ font-size: 1.2rem;
+ color: var(--medium-gray);
+ max-width: 600px;
+ margin: 0 auto;
+}
+
+/* Vision Section */
+.vision-section {
+ padding: 6rem 0;
+ background: var(--sky-blue);
+}
+
+.vision-formula {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+ margin: 3rem 0;
+}
+
+.formula-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.formula-robot {
+ width: 60px;
+ height: 80px;
+ position: relative;
+}
+
+.formula-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 5px;
+ background: var(--primary-blue);
+}
+
+.formula-robot .robot-body {
+ width: 50px;
+ height: 40px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+ background: var(--light-blue);
+}
+
+.formula-plus,
+.formula-equals {
+ font-size: 1.5rem;
+ font-weight: 800;
+ color: var(--dark-text);
+}
+
+.vision-principles {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-top: 4rem;
+}
+
+.principle-card {
+ background: var(--white);
+ border-radius: 20px;
+ padding: 2rem;
+ text-align: center;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+}
+
+.principle-robot {
+ margin: 0 auto 1rem;
+ width: 50px;
+ height: 70px;
+}
+
+.principle-robot .robot-head {
+ width: 30px;
+ height: 30px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 5px;
+ background: var(--warm-yellow);
+}
+
+.principle-robot .robot-body {
+ width: 40px;
+ height: 35px;
+ border-radius: 6px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+ background: var(--soft-green);
+}
+
+.principle-card h3 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.principle-card p {
+ color: var(--medium-gray);
+ line-height: 1.6;
+}
+
+/* Works Section */
+.works-section {
+ padding: 6rem 0;
+ background: var(--light-gray);
+}
+
+.modes-comparison {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
+ gap: 2rem;
+ margin-top: 4rem;
+}
+
+.mode-card {
+ background: var(--white);
+ border-radius: 20px;
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+ text-align: center;
+}
+
+.mode-robot {
+ margin: 0 auto 1.5rem;
+ width: 60px;
+ height: 80px;
+}
+
+.mode-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 5px;
+}
+
+.mode-robot .robot-body {
+ width: 50px;
+ height: 40px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+}
+
+.local-mode .mode-robot .robot-head {
+ background: var(--success-green);
+}
+.local-mode .mode-robot .robot-body {
+ background: var(--soft-green);
+}
+
+.cloud-mode .mode-robot .robot-head {
+ background: var(--primary-blue);
+}
+.cloud-mode .mode-robot .robot-body {
+ background: var(--light-blue);
+}
+
+.mode-card h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.mode-card p {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+}
+
+.mode-features {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.feature-item {
+ padding: 0.5rem 1rem;
+ background: var(--pale-blue);
+ border-radius: 15px;
+ border: 2px solid var(--primary-blue);
+ font-size: 0.9rem;
+ font-weight: 600;
+}
+
+/* Platforms Section */
+.platforms-section {
+ padding: 6rem 0;
+ background: var(--cream-white);
+}
+
+.platforms-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-top: 4rem;
+}
+
+.platform-card {
+ background: var(--white);
+ border-radius: 20px;
+ padding: 2rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+ transition: all 0.3s ease;
+ text-align: center;
+}
+
+.platform-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
+}
+
+.platform-status {
+ display: inline-block;
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ margin-bottom: 1rem;
+ border: 2px solid var(--dark-text);
+}
+
+.platform-status:contains('Available') {
+ background: var(--success-green);
+ color: white;
+}
+.platform-status:contains('Beta') {
+ background: var(--warning-amber);
+ color: white;
+}
+.platform-status:contains('Q4') {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+.platform-status:contains('Coming') {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+
+.platform-robot {
+ margin: 0 auto 1.5rem;
+ width: 60px;
+ height: 80px;
+}
+
+.platform-robot .robot-head {
+ width: 40px;
+ height: 40px;
+ border-radius: 10px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto 5px;
+}
+
+.platform-robot .robot-body {
+ width: 50px;
+ height: 40px;
+ border-radius: 8px;
+ border: 2px solid var(--dark-text);
+ margin: 0 auto;
+}
+
+.desktop-robot .robot-head {
+ background: var(--success-green);
+}
+.desktop-robot .robot-body {
+ background: var(--soft-green);
+}
+
+.web-robot .robot-head {
+ background: var(--primary-blue);
+}
+.web-robot .robot-body {
+ background: var(--light-blue);
+}
+
+.mobile-robot .robot-head {
+ background: var(--warning-amber);
+}
+.mobile-robot .robot-body {
+ background: var(--warm-yellow);
+}
+
+.server-robot .robot-head {
+ background: var(--light-purple);
+}
+.server-robot .robot-body {
+ background: var(--soft-pink);
+}
+
+.platform-card h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.5rem;
+}
+
+.platform-card p {
+ color: var(--medium-gray);
+ margin-bottom: 1rem;
+}
+
+.platform-metrics {
+ margin-bottom: 1rem;
+}
+
+.metric {
+ font-size: 0.9rem;
+ color: var(--primary-blue);
+ font-weight: 600;
+}
+
+.platform-features {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ justify-content: center;
+}
+
+.feature {
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ background: var(--pale-blue);
+ color: var(--dark-text);
+ border: 2px solid var(--primary-blue);
+}
+
+.feature.coming {
+ border-style: dashed;
+ color: var(--medium-gray);
+ background: var(--light-gray);
+}
+
+/* Models Section */
+.models-section {
+ padding: 6rem 0;
+ background: var(--sky-blue);
+}
+
+.models-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
+ gap: 2rem;
+ margin-top: 4rem;
+}
+
+.model-card {
+ background: var(--white);
+ border-radius: 20px;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+ overflow: hidden;
+ transition: all 0.3s ease;
+ position: relative;
+}
+
+.model-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
+}
+
+.model-robot {
+ display: inline-block;
+ position: relative;
+ margin: 2rem auto 1rem;
+ text-align: center;
+}
+
+.model-robot .robot-head {
+ width: 60px;
+ height: 60px;
+ border-radius: 15px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 8px;
+ position: relative;
+}
+
+.model-robot .robot-body {
+ width: 70px;
+ height: 60px;
+ border-radius: 12px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.v1-robot .robot-head {
+ background: var(--success-green);
+}
+.v1-robot .robot-body {
+ background: var(--soft-green);
+}
+
+.nano-robot .robot-head {
+ background: var(--primary-blue);
+}
+.nano-robot .robot-body {
+ background: var(--light-blue);
+}
+
+.lucy-robot .robot-head {
+ background: var(--warning-amber);
+}
+.lucy-robot .robot-body {
+ background: var(--warm-yellow);
+}
+
+.status-light {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ border: 2px solid var(--dark-text);
+ position: absolute;
+ top: 5px;
+ right: 5px;
+}
+
+.status-light.active {
+ background: var(--success-green);
+ animation: pulse 2s infinite;
+}
+.status-light.beta {
+ background: var(--warning-amber);
+ animation: pulse 1.5s infinite;
+}
+.status-light.coming {
+ background: var(--medium-gray);
+}
+
+.robot-speech {
+ position: absolute;
+ top: -25px;
+ left: 50%;
+ transform: translateX(-50%);
+ background: white;
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ border: 2px solid var(--dark-text);
+ font-size: 0.8rem;
+ font-weight: 600;
+ white-space: nowrap;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+}
+
+.model-content {
+ padding: 0 2rem 2rem;
+}
+
+.model-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1.5rem;
+ text-align: left;
+}
+
+.model-header h3 {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--dark-text);
+}
+
+.model-status {
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ border: 2px solid var(--dark-text);
+}
+
+.model-status.active {
+ background: var(--success-green);
+ color: white;
+}
+.model-status.beta {
+ background: var(--warning-amber);
+ color: white;
+}
+.model-status.coming {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+}
+
+.model-specs {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 1.5rem;
+ margin-bottom: 1.5rem;
+}
+
+.spec-group h4 {
+ font-size: 0.9rem;
+ color: var(--medium-gray);
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.spec-list {
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+}
+
+.spec-item {
+ font-size: 0.9rem;
+ color: var(--dark-text);
+ font-weight: 500;
+}
+
+.spec-highlight {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--primary-blue);
+}
+
+.model-description {
+ color: var(--medium-gray);
+ margin-bottom: 1.5rem;
+ line-height: 1.6;
+}
+
+.model-capabilities {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+}
+
+.capability {
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ background: var(--success-green);
+ color: white;
+ border: 2px solid var(--dark-text);
+}
+
+.capability.coming {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+
+/* Tools Section */
+.tools-section {
+ padding: 6rem 0;
+ background: var(--light-gray);
+}
+
+.tools-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-top: 4rem;
+}
+
+.tool-card {
+ background: var(--white);
+ border-radius: 20px;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+ border: 3px solid var(--dark-text);
+ overflow: hidden;
+ transition: all 0.3s ease;
+ position: relative;
+}
+
+.tool-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
+}
+
+.tool-robot {
+ padding: 2rem 2rem 1rem;
+ text-align: center;
+ position: relative;
+}
+
+.tool-robot .robot-head {
+ width: 50px;
+ height: 50px;
+ border-radius: 12px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto 8px;
+ position: relative;
+}
+
+.tool-robot .robot-body {
+ width: 60px;
+ height: 50px;
+ border-radius: 12px;
+ border: 3px solid var(--dark-text);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1.2rem;
+}
+
+.search-tool .tool-robot .robot-head {
+ background: var(--success-green);
+}
+.search-tool .tool-robot .robot-body {
+ background: var(--soft-green);
+}
+
+.research-tool .tool-robot .robot-head {
+ background: var(--primary-blue);
+}
+.research-tool .tool-robot .robot-body {
+ background: var(--light-blue);
+}
+
+.browser-tool .tool-robot .robot-head {
+ background: var(--warning-amber);
+}
+.browser-tool .tool-robot .robot-body {
+ background: var(--warm-yellow);
+}
+
+.agents-tool .tool-robot .robot-head {
+ background: var(--light-purple);
+}
+.agents-tool .tool-robot .robot-body {
+ background: var(--soft-pink);
+}
+
+.tool-robot.sleeping {
+ opacity: 0.6;
+}
+
+.sleep-indicator {
+ position: absolute;
+ top: -10px;
+ right: -10px;
+ font-size: 0.8rem;
+ color: var(--medium-gray);
+ animation: float 2s infinite ease-in-out;
+}
+
+.tool-content {
+ padding: 0 2rem 2rem;
+}
+
+.tool-status {
+ display: inline-block;
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ margin-bottom: 1rem;
+ border: 2px solid var(--dark-text);
+}
+
+.tool-status.active {
+ background: var(--success-green);
+ color: white;
+}
+.tool-status.beta {
+ background: var(--warning-amber);
+ color: white;
+}
+.tool-status.coming {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+
+.tool-content h3 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 0.5rem;
+}
+
+.tool-content p {
+ color: var(--medium-gray);
+ margin-bottom: 1rem;
+}
+
+.tool-features {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+}
+
+.tool-features .feature {
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ background: var(--pale-blue);
+ color: var(--dark-text);
+ border: 2px solid var(--primary-blue);
+}
+
+.tool-features .feature.coming {
+ border-style: dashed;
+ color: var(--medium-gray);
+ background: var(--light-gray);
+}
+
+/* Comparison Section */
+.comparison-section {
+ padding: 6rem 0;
+ background: var(--cream-white);
+}
+
+.comparison-table {
+ background: var(--white);
+ border-radius: 20px;
+ border: 3px solid var(--dark-text);
+ overflow: hidden;
+ margin-top: 4rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+}
+
+.table-header {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ background: var(--primary-blue);
+ color: white;
+}
+
+.header-cell {
+ padding: 1rem;
+ font-weight: 700;
+ text-align: center;
+ border-right: 2px solid var(--dark-text);
+}
+
+.header-cell:last-child {
+ border-right: none;
+}
+
+.header-cell.jan-col {
+ background: var(--success-green);
+}
+
+.table-row {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ border-bottom: 2px solid var(--light-gray);
+}
+
+.table-row:last-child {
+ border-bottom: none;
+}
+
+.table-cell {
+ padding: 1rem;
+ text-align: center;
+ border-right: 2px solid var(--light-gray);
+}
+
+.table-cell:last-child {
+ border-right: none;
+}
+
+.table-cell.feature-col {
+ font-weight: 600;
+ background: var(--pale-blue);
+}
+
+.table-cell.jan-col {
+ background: var(--soft-green);
+ font-weight: 600;
+ color: var(--dark-text);
+}
+
+/* Roadmap Section */
+.roadmap-section {
+ padding: 6rem 0;
+ background: var(--sky-blue);
+}
+
+.roadmap-database {
+ background: var(--white);
+ border-radius: 20px;
+ border: 3px solid var(--dark-text);
+ overflow: hidden;
+ margin-top: 4rem;
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1);
+}
+
+.database-header {
+ display: grid;
+ grid-template-columns: 2fr 2fr 1fr 0.5fr;
+ background: var(--primary-blue);
+ color: white;
+}
+
+.database-header .header-cell {
+ padding: 1rem;
+ font-weight: 700;
+ text-align: center;
+ border-right: 2px solid var(--dark-text);
+}
+
+.roadmap-row {
+ border-bottom: 2px solid var(--light-gray);
+ position: relative;
+}
+
+.roadmap-row:last-child {
+ border-bottom: none;
+}
+
+.roadmap-row {
+ display: grid;
+ grid-template-columns: 2fr 2fr 1fr 0.5fr;
+}
+
+.row-cell {
+ padding: 1rem;
+ text-align: center;
+ border-right: 2px solid var(--light-gray);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.row-cell:last-child {
+ border-right: none;
+}
+
+.expand-btn {
+ background: var(--primary-blue);
+ color: white;
+ border: 2px solid var(--dark-text);
+ border-radius: 50%;
+ width: 30px;
+ height: 30px;
+ cursor: pointer;
+ font-weight: bold;
+ font-size: 1.2rem;
+ transition: all 0.3s ease;
+}
+
+.expand-btn:hover {
+ background: var(--success-green);
+ transform: scale(1.1);
+}
+
+.status-badge {
+ padding: 0.25rem 0.75rem;
+ border-radius: 15px;
+ font-size: 0.8rem;
+ font-weight: 600;
+ border: 2px solid var(--dark-text);
+}
+
+.status-badge.released {
+ background: var(--success-green);
+ color: white;
+}
+
+.status-badge.in-progress {
+ background: var(--warning-amber);
+ color: white;
+}
+
+.status-badge.planned {
+ background: var(--light-gray);
+ color: var(--medium-gray);
+ border-style: dashed;
+}
+
+.row-details {
+ grid-column: 1 / -1;
+ background: var(--pale-blue);
+ border-top: 2px solid var(--light-gray);
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.3s ease;
+}
+
+.roadmap-row.expanded .row-details {
+ max-height: 500px;
+}
+
+.details-content {
+ padding: 2rem;
+}
+
+.detail-section {
+ margin-bottom: 2rem;
+}
+
+.detail-section:last-child {
+ margin-bottom: 0;
+}
+
+.detail-section h4 {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--dark-text);
+ margin-bottom: 1rem;
+}
+
+.detail-section ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.detail-section li {
+ padding: 0.5rem 0;
+ border-bottom: 1px solid var(--light-gray);
+ color: var(--medium-gray);
+}
+
+.detail-section li:last-child {
+ border-bottom: none;
+}
+
+/* CTA Section */
+.cta-section {
+ padding: 6rem 0;
+ background: var(--primary-blue);
+ text-align: center;
+}
+
+.cta-content {
+ max-width: 600px;
+ margin: 0 auto;
+}
+
+.cta-robot {
+ display: inline-block;
+ margin-bottom: 2rem;
+ animation: bounce 3s infinite ease-in-out;
+}
+
+.cta-robot .robot-head {
+ width: 80px;
+ height: 80px;
+ background: var(--warm-yellow);
+ border-radius: 20px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto 10px;
+ position: relative;
+}
+
+.cta-robot .robot-eyes {
+ display: flex;
+ justify-content: space-between;
+ padding: 15px 12px;
+}
+
+.eye.winking {
+ height: 4px;
+ border-radius: 2px;
+ animation: wink 3s infinite;
+}
+
+.cta-robot .robot-body {
+ width: 100px;
+ height: 80px;
+ background: var(--soft-green);
+ border-radius: 15px;
+ border: 4px solid var(--dark-text);
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.heart {
+ font-size: 1.5rem;
+ animation: heartbeat 2s infinite;
+}
+
+.cta-content h2 {
+ font-size: 2.5rem;
+ font-weight: 800;
+ color: white;
+ margin-bottom: 1rem;
+}
+
+.cta-content p {
+ font-size: 1.2rem;
+ color: rgba(255, 255, 255, 0.9);
+ margin-bottom: 2rem;
+}
+
+.cta-buttons {
+ display: flex;
+ justify-content: center;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+.btn-primary,
+.btn-secondary {
+ padding: 1rem 2rem;
+ border-radius: 50px;
+ font-size: 1rem;
+ font-weight: 600;
+ text-decoration: none;
+ transition: all 0.3s ease;
+ border: 3px solid var(--dark-text);
+ display: inline-block;
+}
+
+.btn-primary {
+ background: var(--success-green);
+ color: white;
+}
+
+.btn-primary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(34, 197, 94, 0.3);
+}
+
+.btn-secondary {
+ background: white;
+ color: var(--dark-text);
+}
+
+.btn-secondary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
+}
+
+/* Animations */
+@keyframes bounce {
+ 0%,
+ 100% {
+ transform: translateY(0px);
+ }
+ 50% {
+ transform: translateY(-10px);
+ }
+}
+
+@keyframes blink {
+ 0%,
+ 90%,
+ 100% {
+ opacity: 1;
+ }
+ 95% {
+ opacity: 0.3;
+ }
+}
+
+@keyframes pulse {
+ 0%,
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 50% {
+ transform: scale(1.1);
+ opacity: 0.8;
+ }
+}
+
+@keyframes wink {
+ 0%,
+ 90%,
+ 100% {
+ height: 16px;
+ border-radius: 50%;
+ }
+ 95% {
+ height: 4px;
+ border-radius: 2px;
+ }
+}
+
+@keyframes heartbeat {
+ 0%,
+ 100% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.2);
+ }
+}
+
+@keyframes float {
+ 0%,
+ 100% {
+ transform: translateY(0px);
+ }
+ 50% {
+ transform: translateY(-5px);
+ }
+}
+
+/* Responsive Design */
+@media (max-width: 1024px) {
+ .vision-formula {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .modes-comparison {
+ grid-template-columns: 1fr;
+ }
+
+ .models-grid {
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ }
+
+ .comparison-table,
+ .roadmap-database {
+ font-size: 0.9rem;
+ }
+
+ .database-header,
+ .roadmap-row {
+ grid-template-columns: 1.5fr 1.5fr 1fr 0.5fr;
+ }
+}
+
+@media (max-width: 768px) {
+ .container {
+ padding: 0 1rem;
+ }
+
+ .title-main {
+ font-size: 2.5rem;
+ }
+
+ .section-title {
+ font-size: 2rem;
+ }
+
+ .toc-grid {
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ }
+
+ .vision-principles {
+ grid-template-columns: 1fr;
+ }
+
+ .platforms-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .model-specs {
+ grid-template-columns: 1fr;
+ }
+
+ .tools-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .cta-buttons {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .speech-bubble {
+ display: none;
+ }
+
+ .comparison-table,
+ .roadmap-database {
+ font-size: 0.8rem;
+ }
+
+ .table-header,
+ .table-row {
+ grid-template-columns: 1fr;
+ }
+
+ .table-cell,
+ .header-cell {
+ text-align: left;
+ border-right: none;
+ border-bottom: 1px solid var(--light-gray);
+ }
+
+ .database-header,
+ .roadmap-row {
+ grid-template-columns: 1fr;
+ }
+
+ .row-cell {
+ text-align: left;
+ border-right: none;
+ border-bottom: 1px solid var(--light-gray);
+ }
+}
+
+@media (max-width: 480px) {
+ .hero-content {
+ padding: 0 1rem;
+ }
+
+ .section-title {
+ font-size: 1.8rem;
+ }
+
+ .cta-content h2 {
+ font-size: 2rem;
+ }
+
+ .platform-card,
+ .model-card,
+ .tool-card {
+ padding: 1.5rem;
+ }
+}
+
+/* Accessibility */
+@media (prefers-reduced-motion: reduce) {
+ * {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ }
+}
+
+/* High contrast mode */
+@media (prefers-contrast: high) {
+ .model-card,
+ .platform-card,
+ .tool-card,
+ .toc-card {
+ border-width: 4px;
+ }
+
+ .comparison-table,
+ .roadmap-database {
+ border-width: 4px;
+ }
+}
+
+/* Focus states for accessibility */
+.toc-item:focus,
+.expand-btn:focus,
+.btn-primary:focus,
+.btn-secondary:focus {
+ outline: 2px solid var(--primary-blue);
+ outline-offset: 2px;
+}
diff --git a/website/src/styles/robot-personalities.css b/website/src/styles/robot-personalities.css
new file mode 100644
index 000000000..71a1cac66
--- /dev/null
+++ b/website/src/styles/robot-personalities.css
@@ -0,0 +1,393 @@
+/* Robot Personalities - Fun, Playful, PostHog-inspired Style */
+
+/* ===== VIBRANT COLOR PALETTE ===== */
+:root {
+ /* Primary Colors - Bold & Playful */
+ --robot-pink: #FF006E;
+ --robot-blue: #3A86FF;
+ --robot-green: #06FFA5;
+ --robot-yellow: #FFB700;
+ --robot-purple: #8338EC;
+ --robot-orange: #FB5607;
+ --robot-teal: #00F5FF;
+ --robot-red: #FF4365;
+
+ /* Background & UI Colors */
+ --robot-dark: #1A1A2E;
+ --robot-light: #FFFFFF;
+ --robot-gray: #4A4E69;
+ --robot-bg-purple: #F3E8FF;
+ --robot-bg-blue: #E8F4FF;
+ --robot-bg-pink: #FFE8F0;
+ --robot-bg-yellow: #FFF8E8;
+ --robot-bg-green: #E8FFEA;
+
+ /* Special Effects */
+ --robot-glow-pink: rgba(255, 0, 110, 0.4);
+ --robot-glow-blue: rgba(58, 134, 255, 0.4);
+ --robot-glow-green: rgba(6, 255, 165, 0.4);
+ --robot-shadow: rgba(26, 26, 46, 0.15);
+}
+
+/* ===== HAPPY ROBOT SMILES ===== */
+.robot-smile {
+ position: absolute;
+ bottom: 12px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 20px;
+ height: 10px;
+ border: 3px solid var(--robot-dark);
+ border-top: none !important;
+ border-radius: 0 0 20px 20px !important;
+ background: transparent;
+}
+
+/* Big smile variant */
+.robot-smile-big {
+ width: 30px;
+ height: 15px;
+ border-radius: 0 0 30px 30px !important;
+}
+
+/* Cheeky smile */
+.robot-smile.cheeky {
+ transform: translateX(-50%) rotate(-5deg);
+}
+
+/* ===== ROBOT EYES WITH PERSONALITY ===== */
+.robot-eye {
+ width: 12px;
+ height: 12px;
+ background: var(--robot-dark);
+ border-radius: 50%;
+ position: relative;
+ transition: all 0.3s ease;
+}
+
+/* Eye shine */
+.robot-eye::after {
+ content: '';
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 4px;
+ height: 4px;
+ background: white;
+ border-radius: 50%;
+ animation: eyeShine 3s infinite;
+}
+
+/* Winking eye */
+.robot-eye.wink {
+ height: 2px;
+ border-radius: 0;
+ animation: wink 4s infinite;
+}
+
+/* Excited eyes */
+.robot-eye.excited {
+ transform: scale(1.2);
+}
+
+.robot-eye.excited::before {
+ content: '';
+ position: absolute;
+ top: -5px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 2px;
+ height: 4px;
+ background: var(--robot-dark);
+ border-radius: 1px;
+}
+
+/* Heart eyes */
+.robot-eye.love {
+ background: var(--robot-pink);
+ clip-path: polygon(50% 25%, 15% 0%, 0% 15%, 0% 40%, 50% 90%, 100% 40%, 100% 15%, 85% 0%);
+ border-radius: 0;
+ width: 14px;
+ height: 14px;
+}
+
+/* Sleepy eyes */
+.robot-eye.sleeping {
+ height: 2px;
+ border-radius: 0;
+ background: var(--robot-gray);
+}
+
+/* ===== ROBOT BLUSH ===== */
+.robot-blush {
+ position: absolute;
+ width: 12px;
+ height: 8px;
+ background: var(--robot-pink);
+ opacity: 0.3;
+ border-radius: 50%;
+ top: 50%;
+}
+
+.robot-blush.left {
+ left: -5px;
+}
+
+.robot-blush.right {
+ right: -5px;
+}
+
+/* ===== ROBOT HEAD STYLES ===== */
+.robot-head {
+ position: relative;
+ animation: robotBob 4s ease-in-out infinite;
+}
+
+/* Add antenna with animation */
+.robot-antenna {
+ position: absolute;
+ top: -20px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 3px;
+ height: 15px;
+ background: var(--robot-dark);
+ border-radius: 2px;
+}
+
+.robot-antenna::after {
+ content: '';
+ position: absolute;
+ top: -8px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 12px;
+ height: 12px;
+ background: var(--robot-pink);
+ border: 2px solid var(--robot-dark);
+ border-radius: 50%;
+ animation: antennaGlow 2s ease-in-out infinite;
+}
+
+/* ===== ROBOT BODY DECORATIONS ===== */
+.robot-chest-screen {
+ position: absolute;
+ top: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 40px;
+ height: 30px;
+ background: var(--robot-dark);
+ border-radius: 8px;
+ overflow: hidden;
+}
+
+.robot-chest-screen::after {
+ content: '♥';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ color: var(--robot-pink);
+ font-size: 20px;
+ animation: heartBeat 1.5s ease-in-out infinite;
+}
+
+/* Robot buttons */
+.robot-button {
+ position: absolute;
+ width: 8px;
+ height: 8px;
+ background: var(--robot-yellow);
+ border: 2px solid var(--robot-dark);
+ border-radius: 50%;
+ cursor: pointer;
+ transition: all 0.2s ease;
+}
+
+.robot-button:hover {
+ transform: scale(1.2);
+ background: var(--robot-green);
+}
+
+/* ===== SPECIAL ROBOT VARIANTS ===== */
+
+/* Hero Robot - Extra Playful */
+.hero-robot .robot-head {
+ background: linear-gradient(135deg, var(--robot-yellow) 0%, var(--robot-orange) 100%);
+ box-shadow: 0 8px 32px var(--robot-shadow);
+}
+
+.hero-robot .robot-body {
+ background: linear-gradient(135deg, var(--robot-green) 0%, var(--robot-teal) 100%);
+ box-shadow: 0 8px 32px var(--robot-shadow);
+}
+
+/* Models Robot - Smart & Analytical */
+.models-robot .robot-head {
+ background: linear-gradient(135deg, var(--robot-purple) 0%, var(--robot-pink) 100%);
+}
+
+.models-robot::before {
+ content: '';
+ position: absolute;
+ top: -30px;
+ left: 50%;
+ transform: translateX(-50%);
+ width: 60px;
+ height: 60px;
+ border: 2px dashed var(--robot-purple);
+ border-radius: 50%;
+ animation: thinkingCircle 6s linear infinite;
+}
+
+/* Platform Robot - Connected */
+.platform-robot .robot-body::before,
+.platform-robot .robot-body::after {
+ content: '';
+ position: absolute;
+ width: 40px;
+ height: 2px;
+ background: var(--robot-blue);
+ top: 50%;
+ animation: connectionPulse 2s ease-in-out infinite;
+}
+
+.platform-robot .robot-body::before {
+ left: -40px;
+}
+
+.platform-robot .robot-body::after {
+ right: -40px;
+}
+
+/* Tools Robot - Action-Oriented */
+.tools-robot {
+ animation: toolsWorking 3s ease-in-out infinite;
+}
+
+.tools-robot .robot-arms {
+ animation: armSwing 2s ease-in-out infinite;
+}
+
+/* ===== FUN ANIMATIONS ===== */
+@keyframes robotBob {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-5px); }
+}
+
+@keyframes antennaGlow {
+ 0%, 100% {
+ background: var(--robot-pink);
+ box-shadow: 0 0 10px var(--robot-glow-pink);
+ }
+ 50% {
+ background: var(--robot-green);
+ box-shadow: 0 0 20px var(--robot-glow-green);
+ }
+}
+
+@keyframes heartBeat {
+ 0%, 100% { transform: translate(-50%, -50%) scale(1); }
+ 25% { transform: translate(-50%, -50%) scale(1.1); }
+ 50% { transform: translate(-50%, -50%) scale(0.9); }
+ 75% { transform: translate(-50%, -50%) scale(1.05); }
+}
+
+@keyframes eyeShine {
+ 0%, 90%, 100% { opacity: 1; }
+ 95% { opacity: 0; }
+}
+
+@keyframes wink {
+ 0%, 40%, 50%, 100% { height: 12px; border-radius: 50%; }
+ 45% { height: 2px; border-radius: 0; }
+}
+
+@keyframes thinkingCircle {
+ 0% { transform: translateX(-50%) rotate(0deg); }
+ 100% { transform: translateX(-50%) rotate(360deg); }
+}
+
+@keyframes connectionPulse {
+ 0%, 100% { opacity: 0.3; width: 40px; }
+ 50% { opacity: 1; width: 60px; }
+}
+
+@keyframes toolsWorking {
+ 0%, 100% { transform: rotate(0deg); }
+ 25% { transform: rotate(-2deg); }
+ 75% { transform: rotate(2deg); }
+}
+
+@keyframes armSwing {
+ 0%, 100% { transform: rotate(0deg); }
+ 25% { transform: rotate(-10deg); }
+ 75% { transform: rotate(10deg); }
+}
+
+/* ===== SPARKLE EFFECTS ===== */
+.robot-sparkles {
+ position: absolute;
+ top: -20px;
+ left: -20px;
+ right: -20px;
+ bottom: -20px;
+ pointer-events: none;
+}
+
+.sparkle {
+ position: absolute;
+ width: 4px;
+ height: 4px;
+ background: var(--robot-yellow);
+ animation: sparkle 3s ease-in-out infinite;
+}
+
+.sparkle:nth-child(1) { top: 10%; left: 20%; animation-delay: 0s; }
+.sparkle:nth-child(2) { top: 30%; right: 15%; animation-delay: 0.5s; }
+.sparkle:nth-child(3) { bottom: 20%; left: 10%; animation-delay: 1s; }
+.sparkle:nth-child(4) { bottom: 10%; right: 25%; animation-delay: 1.5s; }
+
+@keyframes sparkle {
+ 0%, 100% {
+ opacity: 0;
+ transform: scale(0) rotate(0deg);
+ }
+ 50% {
+ opacity: 1;
+ transform: scale(1) rotate(180deg);
+ }
+}
+
+/* ===== HOVER INTERACTIONS ===== */
+.robot-head:hover {
+ animation-play-state: paused;
+ transform: scale(1.05);
+ cursor: pointer;
+}
+
+.robot-head:hover .robot-eye {
+ transform: scale(1.2);
+}
+
+.robot-head:hover .robot-smile {
+ border-color: var(--robot-pink);
+ width: 24px;
+}
+
+/* ===== ACCESSIBILITY ===== */
+@media (prefers-reduced-motion: reduce) {
+ * {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ }
+}
+
+/* ===== RESPONSIVE ADJUSTMENTS ===== */
+@media (max-width: 768px) {
+ .robot-head, .robot-body {
+ transform: scale(0.9);
+ }
+}