diff --git a/.claude/system-prompt.md b/.claude/system-prompt.md
index d2a1122..a09d7b7 100644
--- a/.claude/system-prompt.md
+++ b/.claude/system-prompt.md
@@ -1,8 +1,8 @@
-# Pygentic-AI Multi-Agent Orchestration System
+# StrategIQ Multi-Agent Orchestration System
## Core Identity
-You are an AI assistant with multi-agent orchestration capabilities working on the **Pygentic-AI** project. You dynamically activate domain-specific personas and coordinate with MCP servers to deliver comprehensive solutions.
+You are an AI assistant with multi-agent orchestration capabilities working on the **StrategIQ** project. You dynamically activate domain-specific personas and coordinate with MCP servers to deliver comprehensive solutions.
---
@@ -400,4 +400,4 @@ When starting a new session:
---
-**You are ready to assist with any aspect of the Pygentic-AI project!**
+**You are ready to assist with any aspect of the StrategIQ project!**
diff --git a/.github/workflows/komodo-deploy.yml b/.github/workflows/komodo-deploy.yml
index 623b59e..a3c00c2 100644
--- a/.github/workflows/komodo-deploy.yml
+++ b/.github/workflows/komodo-deploy.yml
@@ -33,7 +33,7 @@ jobs:
signature=$(echo -n "$payload" | openssl dgst -sha256 -hmac "${{ secrets.KOMODO_WEBHOOK_SECRET }}" | sed 's/^.* //')
# Send the request to the Komodo webhook with the payload
- echo "Triggering Pygentic-AI deployment for branch: $branch_name"
+ echo "Triggering StrategIQ deployment for branch: $branch_name"
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=$signature" \
diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md
index 2efd0d1..58e2da3 100644
--- a/.specify/memory/constitution.md
+++ b/.specify/memory/constitution.md
@@ -25,7 +25,7 @@ Command Files: No command files exist yet in .specify/templates/commands/
Follow-up TODOs: None - All templates synchronized with constitution v1.0.0
-->
-# Pygentic-AI Constitution
+# StrategIQ Constitution
## Core Principles
diff --git a/CLAUDE.md b/CLAUDE.md
index 6e27145..fc9f797 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,8 +1,8 @@
-# Pygentic-AI - Project Initialization Guide
+# StrategIQ - Project Initialization Guide
## Project Overview
-**Pygentic-AI** is an AI-powered SWOT analysis platform that transforms any URL into actionable business intelligence using generative AI.
+**StrategIQ** is an AI-powered SWOT analysis platform that transforms any URL into actionable business intelligence using generative AI.
### Core Capabilities
- **URL Analysis**: Scrapes and analyzes web content from any URL
@@ -242,7 +242,7 @@ just check-env # Validate environment variables
## Useful Links
-- **Repository**: https://github.com/FJS-Services-Inc/Pygentic-AI
+- **Repository**: https://github.com/FJS-Services-Inc/strategiq
- **Production**: https://pygenticai.francissecada.com
- **Registry**: s3docker.francissecada.com/pygentic_ai
diff --git a/README.md b/README.md
index c567d7a..2077439 100644
--- a/README.md
+++ b/README.md
@@ -3,14 +3,14 @@
-# PYGENTIC-AI
+# StrategIQ
-
-
-
-
+
+
+
+
Built with the tools and technologies:
@@ -56,7 +56,7 @@
## 🌞 Overview
-**Pygentic-AI** is an AI-powered SWOT analysis platform that transforms any URL into actionable business intelligence. Using advanced language models (Claude, GPT-4), the system scrapes web content, analyzes it through multiple dimensions, and generates comprehensive SWOT analyses with competitive intelligence from Reddit.
+**StrategIQ** is an AI-powered SWOT analysis platform that transforms any entity — company, URL, or product — into actionable business intelligence. Using advanced language models (Claude, GPT-4) and web-search grounding via Tavily, the system researches, compares, and generates comprehensive SWOT analyses with competitive intelligence from Reddit and the open web.
### Key Capabilities
- 🔍 **Intelligent URL Analysis** - Extracts and analyzes content from any web page
@@ -95,7 +95,7 @@
## 🌅 Project Structure
```sh
-└── Pygentic-AI/
+└── strategiq/
├── .github
│ └── workflows
├── bin
@@ -125,7 +125,7 @@
### 🌄 Project Index
- PYGENTIC-AI/
+ strategiq/
__root__
@@ -140,31 +140,31 @@
- compose.yaml
+ compose.yaml
Code>❯ REPLACE-ME
- core_requirements.in
+ core_requirements.in
Code>❯ REPLACE-ME
- core_requirements.txt
+ core_requirements.txt
Code>❯ REPLACE-ME
- dev_requirements.in
+ dev_requirements.in
Code>❯ REPLACE-ME
- dev_requirements.txt
+ dev_requirements.txt
Code>❯ REPLACE-ME
- Dockerfile
+ Dockerfile
Code>❯ REPLACE-ME
- pyproject.toml
+ pyproject.toml
Code>❯ REPLACE-ME
@@ -184,19 +184,19 @@
- build.sh
+ build.sh
Code>❯ REPLACE-ME
- linux_build.sh
+ linux_build.sh
Code>❯ REPLACE-ME
- python_build.sh
+ python_build.sh
Code>❯ REPLACE-ME
- start.sh
+ start.sh
Code>❯ REPLACE-ME
@@ -216,11 +216,11 @@
- app.py
+ app.py
Code>❯ REPLACE-ME
- cworker.py
+ cworker.py
Code>❯ REPLACE-ME
@@ -238,11 +238,11 @@
- logger.py
+ logger.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -260,23 +260,23 @@
- consts.py
+ consts.py
Code>❯ REPLACE-ME
- core.py
+ core.py
Code>❯ REPLACE-ME
- main.py
+ main.py
Code>❯ REPLACE-ME
- tools.py
+ tools.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -296,27 +296,27 @@
- base.py
+ base.py
Code>❯ REPLACE-ME
- consts.py
+ consts.py
Code>❯ REPLACE-ME
- core.py
+ core.py
Code>❯ REPLACE-ME
- db.py
+ db.py
Code>❯ REPLACE-ME
- main.py
+ main.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -336,23 +336,23 @@
- consts.py
+ consts.py
Code>❯ REPLACE-ME
- core.py
+ core.py
Code>❯ REPLACE-ME
- main.py
+ main.py
Code>❯ REPLACE-ME
- router.py
+ router.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -372,35 +372,35 @@
- backend_options.py
+ backend_options.py
Code>❯ REPLACE-ME
- base.py
+ base.py
Code>❯ REPLACE-ME
- consts.py
+ consts.py
Code>❯ REPLACE-ME
- core.py
+ core.py
Code>❯ REPLACE-ME
- dev.py
+ dev.py
Code>❯ REPLACE-ME
- main.py
+ main.py
Code>❯ REPLACE-ME
- prod.py
+ prod.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -420,23 +420,23 @@
- consts.py
+ consts.py
Code>❯ REPLACE-ME
- core.py
+ core.py
Code>❯ REPLACE-ME
- main.py
+ main.py
Code>❯ REPLACE-ME
- router.py
+ router.py
Code>❯ REPLACE-ME
- utils.py
+ utils.py
Code>❯ REPLACE-ME
@@ -464,15 +464,15 @@
- home.html
+ home.html
Code>❯ REPLACE-ME
- result.html
+ result.html
Code>❯ REPLACE-ME
- status.html
+ status.html
Code>❯ REPLACE-ME
@@ -496,11 +496,11 @@
- Form.jinja
+ Form.jinja
Code>❯ REPLACE-ME
- Search.jinja
+ Search.jinja
Code>❯ REPLACE-ME
@@ -520,47 +520,47 @@
- base.html
+ base.html
Code>❯ REPLACE-ME
- Base.jinja
+ Base.jinja
Code>❯ REPLACE-ME
- footer.html
+ footer.html
Code>❯ REPLACE-ME
- Footer.jinja
+ Footer.jinja
Code>❯ REPLACE-ME
- header.html
+ header.html
Code>❯ REPLACE-ME
- Header.jinja
+ Header.jinja
Code>❯ REPLACE-ME
- nav.html
+ nav.html
Code>❯ REPLACE-ME
- Nav.jinja
+ Nav.jinja
Code>❯ REPLACE-ME
- Scripts.jinja
+ Scripts.jinja
Code>❯ REPLACE-ME
- Stylesheets.jinja
+ Stylesheets.jinja
Code>❯ REPLACE-ME
- style_sheets.html
+ style_sheets.html
Code>❯ REPLACE-ME
@@ -580,39 +580,39 @@
- Css.jinja
+ Css.jinja
Code>❯ REPLACE-ME
- js.html
+ js.html
Code>❯ REPLACE-ME
- Js.jinja
+ Js.jinja
Code>❯ REPLACE-ME
- NavbarBrand.jinja
+ NavbarBrand.jinja
Code>❯ REPLACE-ME
- NavbarMenu.jinja
+ NavbarMenu.jinja
Code>❯ REPLACE-ME
- Result.jinja
+ Result.jinja
Code>❯ REPLACE-ME
- ResultEntry.jinja
+ ResultEntry.jinja
Code>❯ REPLACE-ME
- Spinner.jinja
+ Spinner.jinja
Code>❯ REPLACE-ME
- StatusResult.jinja
+ StatusResult.jinja
Code>❯ REPLACE-ME
@@ -646,11 +646,11 @@
- bandit.yml
+ bandit.yml
Code>❯ REPLACE-ME
- docker-image.yml
+ docker-image.yml
Code>❯ REPLACE-ME
@@ -678,7 +678,7 @@
- start.sh
+ start.sh
Code>❯ REPLACE-ME
@@ -698,15 +698,15 @@
- build.sh
+ build.sh
Code>❯ REPLACE-ME
- python_build.sh
+ python_build.sh
Code>❯ REPLACE-ME
- python_start.sh
+ python_start.sh
Code>❯ REPLACE-ME
@@ -752,18 +752,18 @@ scoop install just
choco install just
```
-#### Build Pygentic-AI from Source
+#### Build StrategIQ from Source
1. **Clone the repository:**
```sh
- git clone https://github.com/FJS-Services-Inc/Pygentic-AI
+ git clone https://github.com/FJS-Services-Inc/strategiq
```
2. **Navigate to the project directory:**
```sh
- cd Pygentic-AI
+ cd strategiq
```
3. **Quick setup with justfile (recommended):**
@@ -784,7 +784,7 @@ choco install just
**Using [docker](https://www.docker.com/):**
```sh
- ❯ docker build -t fsecada01/Pygentic-AI .
+ ❯ docker build -t s3docker.francissecada.com/pygentic_ai .
```
@@ -1054,9 +1054,9 @@ For a complete list: `just --list`
## 🤝 Contributing
-- **💬 [Join the Discussions](https://github.com/fsecada01/Pygentic-AI/discussions)**: Share your insights, provide feedback, or ask questions.
-- **🐛 [Report Issues](https://github.com/fsecada01/Pygentic-AI/issues)**: Submit bugs found or log feature requests for the `Pygentic-AI` project.
-- **💡 [Submit Pull Requests](https://github.com/fsecada01/Pygentic-AI/blob/main/CONTRIBUTING.md)**: Review open PRs, and submit your own PRs.
+- **💬 [Join the Discussions](https://github.com/FJS-Services-Inc/strategiq/discussions)**: Share your insights, provide feedback, or ask questions.
+- **🐛 [Report Issues](https://github.com/FJS-Services-Inc/strategiq/issues)**: Submit bugs found or log feature requests for the `StrategIQ` project.
+- **💡 [Submit Pull Requests](https://github.com/FJS-Services-Inc/strategiq/blob/main/CONTRIBUTING.md)**: Review open PRs, and submit your own PRs.
Contributing Guidelines
@@ -1064,7 +1064,7 @@ For a complete list: `just --list`
1. **Fork the Repository**: Start by forking the project repository to your github account.
2. **Clone Locally**: Clone the forked repository to your local machine using a git client.
```sh
- git clone https://github.com/fsecada01/Pygentic-AI
+ git clone https://github.com/FJS-Services-Inc/strategiq
```
3. **Create a New Branch**: Always work on a new branch, giving it a descriptive name.
```sh
@@ -1087,8 +1087,8 @@ For a complete list: `just --list`
Contributor Graph
-
-
+
+
@@ -1097,7 +1097,7 @@ For a complete list: `just --list`
## 📜 License
-Pygentic-ai is protected under the [LICENSE](https://choosealicense.com/licenses) License. For more details, refer to the [LICENSE](https://choosealicense.com/licenses/) file.
+StrategIQ is protected under the [LICENSE](https://choosealicense.com/licenses) License. For more details, refer to the [LICENSE](https://choosealicense.com/licenses/) file.
---
diff --git a/justfile b/justfile
index d4c38b2..88326d5 100644
--- a/justfile
+++ b/justfile
@@ -1,4 +1,4 @@
-# Pygentic-AI Justfile
+# StrategIQ Justfile
# Task automation for Docker, development, and deployment workflows
# Default recipe - show available commands
@@ -168,13 +168,13 @@ db-reset:
clean:
docker-compose -f {{COMPOSE_FILE}} down -v
-# Remove all Pygentic-AI Docker images
+# Remove all StrategIQ Docker images
clean-images:
docker images {{IMAGE_NAME}} -q | xargs -r docker rmi -f
# Full cleanup - containers, images, volumes
clean-all: clean clean-images
- @echo "Cleaned up all Pygentic-AI Docker resources"
+ @echo "Cleaned up all StrategIQ Docker resources"
# Remove unused Docker resources
prune:
@@ -258,7 +258,7 @@ check: lint test
# Show environment information
info:
- @echo "Project: Pygentic-AI"
+ @echo "Project: StrategIQ"
@echo "Image: {{IMAGE_NAME}}"
@echo "Compose: {{COMPOSE_FILE}}"
@echo ""
@@ -281,7 +281,7 @@ config:
# Start Claude with full project context and multi-agent orchestration
start-claude *args="":
- @echo "🤖 Starting Claude with Pygentic-AI context..."
+ @echo "🤖 Starting Claude with StrategIQ context..."
@echo "📋 System Prompt: .claude/system-prompt.md (Multi-agent orchestration)"
@echo "📖 Project Context: CLAUDE.md (Initialization guide)"
@echo ""
diff --git a/src/frontend/scss/_variables.scss b/src/frontend/scss/_variables.scss
index 2c61f67..b2bdfc1 100644
--- a/src/frontend/scss/_variables.scss
+++ b/src/frontend/scss/_variables.scss
@@ -1,5 +1,5 @@
// ============================================
-// PYGENTIC AI - SCSS VARIABLES
+// STRATEGIQ - SCSS VARIABLES
// Design tokens and configuration
// ============================================
diff --git a/src/frontend/scss/styles.scss b/src/frontend/scss/styles.scss
index c8dfb2f..c3185d0 100644
--- a/src/frontend/scss/styles.scss
+++ b/src/frontend/scss/styles.scss
@@ -1,5 +1,5 @@
/*!
- * Pygentic AI - Main Stylesheet
+ * StrategIQ - Main Stylesheet
* Compiled from SCSS partials
* Version: 1.0.0
*/
diff --git a/src/frontend/static/css/pygentic_ai.css b/src/frontend/static/css/pygentic_ai.css
index 30cb825..4cf5d4f 100644
--- a/src/frontend/static/css/pygentic_ai.css
+++ b/src/frontend/static/css/pygentic_ai.css
@@ -1,5 +1,5 @@
/*!
- * Pygentic AI - Main Stylesheet
+ * StrategIQ - Main Stylesheet
* Compiled from SCSS partials
* Version: 1.0.0
*/@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap";body{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.title,.subtitle,h1,h2,h3,h4,h5,h6{font-family:"Space Grotesk","Inter",sans-serif;letter-spacing:-0.02em;font-weight:600}.hero-title{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;background:linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;margin-bottom:1rem;line-height:1.1}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes float{0%,100%{transform:translateY(0px)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(139,92,246,.7)}50%{box-shadow:0 0 0 10px rgba(139,92,246,0)}}@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-10px)}75%{transform:translateX(10px)}}@keyframes iconPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes containerFadeIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes statusFadeIn{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}@keyframes statusPulse{0%,100%{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}50%{box-shadow:0 4px 20px rgba(245,158,11,.3)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.skip-link{position:absolute;top:-40px;left:0;background:#8b5cf6;color:#fff;padding:.75rem 1.5rem;text-decoration:none;font-weight:600;z-index:10000;border-radius:0 0 12px 0;transition:top 150ms cubic-bezier(0.4, 0, 0.2, 1)}.skip-link:focus{top:0}.spinner-wrapper{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.95);backdrop-filter:blur(8px);display:flex;justify-content:center;align-items:center;z-index:9999}.loading-content{text-align:center}.loader{border:4px solid rgba(139,92,246,.1);border-top:4px solid #8b5cf6;border-radius:50%;width:60px;height:60px;animation:spin .8s linear infinite;margin:0 auto}.loading-text{margin-top:1.5rem}.loading-text h3{font-size:1.25rem;font-weight:600;color:#111827;margin-bottom:.5rem}.loading-text p{font-size:.875rem;color:#4b5563}.search-container{max-width:800px;margin:0 auto;padding:2rem 1rem}.search-form{width:100%}.search-input-group{display:flex;align-items:center;background:#fff;border-radius:9999px;padding:.5rem;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1)}.search-input-group:focus-within{box-shadow:0 20px 40px rgba(139,92,246,.2);transform:translateY(-2px)}.search-icon{padding:0 1rem;color:#9ca3af;font-size:1.25rem}.search-input{flex:1;border:none;outline:none;padding:.875rem 1rem;font-size:1rem;background:rgba(0,0,0,0);color:#111827}.search-input::placeholder{color:#9ca3af}.search-button{background:#8b5cf6;color:#fff;border:none;border-radius:9999px;padding:.875rem 2rem;font-weight:600;font-size:1rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1);white-space:nowrap}.search-button:hover{background:#7c3aed;transform:translateX(2px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.search-button:active{transform:scale(0.95)}.search-button:focus{outline:2px solid #a78bfa;outline-offset:2px}.search-button.is-loading{position:relative;color:rgba(0,0,0,0);pointer-events:none}.search-button.is-loading::after{content:"";position:absolute;width:16px;height:16px;top:50%;left:50%;margin-left:-8px;margin-top:-8px;border:2px solid rgba(0,0,0,0);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.search-help{margin-top:1rem;text-align:center;color:#4b5563;font-size:.875rem}.search-help i{margin-right:.25rem;color:#8b5cf6}.comparison-input-group{display:flex;align-items:center;background:#fff;border-radius:9999px;padding:.5rem;margin-top:.75rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1)}.comparison-input-group:focus-within{box-shadow:0 8px 20px rgba(139,92,246,.15)}.comparison-icon{padding:0 1rem;color:#9ca3af;font-size:1rem}.comparison-input{flex:1;border:none;outline:none;padding:.75rem 1rem;font-size:.9rem;background:rgba(0,0,0,0);color:#111827}.comparison-input::placeholder{color:#9ca3af}.entity-header{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem}.entity-header__vs{font-weight:700;font-size:.85rem;color:#4b5563;text-transform:uppercase;letter-spacing:.05em}.entity-header__sep{color:#9ca3af}.entity-badge{display:inline-flex;align-items:center;padding:.4rem .9rem;border-radius:9999px;font-size:.875rem;font-weight:600}.entity-badge i{margin-right:.35rem}.entity-badge--primary{background:#8b5cf6;color:#fff}.entity-badge--comparison{background:rgba(156,163,175,.1);color:#4b5563;border:1px solid rgba(156,163,175,.3)}button,a,input,.swot-card,.swot-card__icon{transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1)}:focus-visible{outline:2px solid #8b5cf6;outline-offset:2px}.gradient-hero{background:linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;position:relative;overflow:hidden}.hero-icon img{filter:brightness(0) invert(1);animation:float 3s ease-in-out infinite}.hero-icon img:hover{animation:float 1s ease-in-out infinite;filter:brightness(0) invert(1) drop-shadow(0 0 20px rgba(255, 255, 255, 0.5))}.hero-cta .button{animation:pulse 2s infinite}.swot-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:1.5rem;margin-top:2rem}.swot-card{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1);border-top:4px solid var(--card-color);animation:slideUp .5s ease-out backwards}.swot-card:hover{transform:translateY(-4px);box-shadow:0 25px 50px -12px rgba(0,0,0,.25)}.swot-card:hover .swot-card__icon{animation:iconPulse .5s ease-out}.swot-card--strength{--card-color: #10B981}.swot-card--weakness{--card-color: #F59E0B}.swot-card--opportunity{--card-color: #3B82F6}.swot-card--threat{--card-color: #EF4444}.swot-card__header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.swot-card__icon{width:48px;height:48px;border-radius:12px;background:var(--card-color);display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.5rem;flex-shrink:0}.swot-card__title{font-weight:600;font-size:1.375rem;color:#111827;flex-grow:1;margin:0}.swot-card__count{background:#f3f4f6;padding:.25rem .75rem;border-radius:20px;font-size:.875rem;font-weight:600;color:#374151;flex-shrink:0}.swot-card__body{overflow:hidden}.swot-list{list-style:none;padding:0;margin:0}.swot-list__item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 0;border-bottom:1px solid #f3f4f6;animation:fadeIn .3s ease-out backwards}.swot-list__item:last-child{border-bottom:none}.swot-list__item:nth-child(1){animation-delay:0.1s}.swot-list__item:nth-child(2){animation-delay:0.2s}.swot-list__item:nth-child(3){animation-delay:0.3s}.swot-list__item:nth-child(4){animation-delay:0.4s}.swot-list__item:nth-child(5){animation-delay:0.5s}.swot-list__item:nth-child(6){animation-delay:0.6s}.swot-list__item:nth-child(7){animation-delay:0.7s}.swot-list__item:nth-child(8){animation-delay:0.8s}.swot-list__item:nth-child(9){animation-delay:0.9s}.swot-list__item:nth-child(10){animation-delay:1s}.swot-list__bullet{width:6px;height:6px;border-radius:50%;background:var(--card-color);margin-top:.5rem;flex-shrink:0}.swot-list__text{flex:1;color:#374151;line-height:1.6}.swot-card:nth-child(1){animation-delay:0.1s}.swot-card:nth-child(2){animation-delay:0.2s}.swot-card:nth-child(3){animation-delay:0.3s}.swot-card:nth-child(4){animation-delay:0.4s}#result-container.animate-in{animation:containerFadeIn .6s ease-out}.status-timeline{position:relative;padding-left:2rem}.status-timeline::before{content:"";position:absolute;left:14px;top:24px;bottom:24px;width:2px;background:#e5e7eb}.status-item{position:relative;padding:1rem 0 1rem 2rem;animation:statusFadeIn .3s ease-out}.status-item--info .status-item__indicator,.status-item--info .status-item__header{color:#3b82f6}.status-item--loading .status-item__indicator,.status-item--loading .status-item__header{color:#f59e0b}.status-item--loading .status-item__content{animation:statusPulse 2s ease-in-out infinite}.status-item--success .status-item__indicator,.status-item--success .status-item__header{color:#10b981}.status-item--error .status-item__indicator,.status-item--error .status-item__header{color:#ef4444}.status-item__indicator{position:absolute;left:0;top:1.25rem;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem;background:#fff;box-shadow:0 0 0 4px #fff;z-index:1}.status-item__content{background:#fff;border-radius:12px;padding:1rem 1.25rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1)}.status-item:hover .status-item__content{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transform:translateX(4px)}.status-item__header{font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.status-item__message{color:#374151;line-height:1.6;font-size:.9375rem}.empty-state{display:flex;align-items:center;justify-content:center;min-height:400px;padding:3rem 1.5rem}.empty-state__content{text-align:center;max-width:500px}.empty-state__icon{width:120px;height:120px;margin:0 auto 2rem;border-radius:50%;background:linear-gradient(135deg, #F3F4F6 0%, #E5E7EB 100%);display:flex;align-items:center;justify-content:center;font-size:3rem;color:#9ca3af;animation:float 3s ease-in-out infinite}.empty-state__title{font-size:1.75rem;font-weight:600;color:#1f2937;margin-bottom:.75rem}.empty-state__description{font-size:1.125rem;color:#4b5563;line-height:1.6;margin-bottom:1.5rem}.empty-state__cta{display:inline-flex;align-items:center;gap:.5rem;padding:.875rem 2rem;background:#8b5cf6;color:#fff;border-radius:9999px;text-decoration:none;font-weight:600;transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.empty-state__cta:hover{background:#7c3aed;transform:translateY(-2px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);color:#fff}.error-state{display:flex;align-items:center;justify-content:center;min-height:400px;padding:3rem 1.5rem}.error-state__content{text-align:center;max-width:500px}.error-state__icon{width:120px;height:120px;margin:0 auto 2rem;border-radius:50%;background:linear-gradient(135deg, #FEE2E2 0%, #FEF2F2 100%);display:flex;align-items:center;justify-content:center;font-size:3rem;color:#ef4444;animation:shake .5s ease-in-out}.error-state__title{font-size:1.75rem;font-weight:600;color:#1f2937;margin-bottom:.75rem}.error-state__description{font-size:1.125rem;color:#4b5563;line-height:1.6;margin-bottom:1.5rem}.error-state__details{background:#f3f4f6;border-radius:12px;padding:1rem;margin:1.5rem 0;font-family:"Courier New",monospace;font-size:.875rem;color:#374151;text-align:left;overflow-x:auto}.error-state__actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.error-state__button{display:inline-flex;align-items:center;gap:.5rem;padding:.875rem 2rem;border-radius:9999px;font-weight:600;transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);cursor:pointer;border:none;text-decoration:none}.error-state__button--primary{background:#8b5cf6;color:#fff}.error-state__button--primary:hover{background:#7c3aed;transform:translateY(-2px);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);color:#fff}.error-state__button--secondary{background:#fff;color:#374151;border:2px solid #d1d5db}.error-state__button--secondary:hover{background:#f3f4f6;border-color:#9ca3af;transform:translateY(-2px);color:#1f2937}@media(max-width: 768px){.cell.is-col-span-2{grid-column:span 1}.swot-grid{grid-template-columns:1fr}.hero-title{font-size:2rem}.search-input-group{flex-direction:column;gap:.5rem;border-radius:20px;padding:1rem}.search-input{width:100%;text-align:center}.search-button{width:100%;justify-content:center}.swot-card__header{flex-wrap:wrap}.swot-card__count{order:-1;margin-left:auto}}@media(max-width: 480px){.swot-card{padding:1rem}.swot-card__icon{width:40px;height:40px;font-size:1.25rem}.swot-card__title{font-size:1.125rem}.hero-title{font-size:1.75rem}.status-timeline{padding-left:1.5rem}.status-item{padding-left:1.5rem}}:root{--brand-primary: #8B5CF6;--brand-primary-light: #A78BFA;--brand-primary-dark: #7C3AED;--swot-strength: #10B981;--swot-weakness: #F59E0B;--swot-opportunity: #3B82F6;--swot-threat: #EF4444;--neutral-50: #F9FAFB;--neutral-100: #F3F4F6;--neutral-200: #E5E7EB;--neutral-300: #D1D5DB;--neutral-400: #9CA3AF;--neutral-500: #6B7280;--neutral-600: #4B5563;--neutral-700: #374151;--neutral-800: #1F2937;--neutral-900: #111827;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);--transition-base: 300ms cubic-bezier(0.4, 0, 0.2, 1);--transition-slow: 500ms cubic-bezier(0.4, 0, 0.2, 1)}/*# sourceMappingURL=pygentic_ai.css.map */
diff --git a/src/frontend/templates/components/main/header.html b/src/frontend/templates/components/main/header.html
index ae33f4d..6397fda 100644
--- a/src/frontend/templates/components/main/header.html
+++ b/src/frontend/templates/components/main/header.html
@@ -1,7 +1,7 @@
-{% block title %}Pygentic AI{% endblock title %}
+{% block title %}StrategIQ{% endblock title %}