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 -license -last-commit -repo-top-language -repo-language-count +license +last-commit +repo-top-language +repo-language-count 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 %}
Pygentic AI