diff --git a/COMPLETE-COLOR-REFACTOR-SUMMARY.md b/COMPLETE-COLOR-REFACTOR-SUMMARY.md
deleted file mode 100644
index 07a9e5d8..00000000
--- a/COMPLETE-COLOR-REFACTOR-SUMMARY.md
+++ /dev/null
@@ -1,413 +0,0 @@
-# Complete Color Refactoring & UI Reorganization - Final Summary
-
-**Date:** December 12, 2025
-**Version:** v1.0.3
-**Status:** ✅ COMPLETE
-
----
-
-## Overview
-
-Completed comprehensive refactoring of the IGNY8 frontend to:
-1. ✅ Eliminate ALL hardcoded blue/purple colors
-2. ✅ Add subtle color variety to prevent "mono-color fatigue"
-3. ✅ Move credit cost breakdown to Plans & Billing page
-4. ✅ Standardize on IGNY8 design system colors throughout
-5. ✅ Remove redundant CSS files
-
----
-
-## Major Changes
-
-### 1. Color Variety System
-
-**Problem:** All account pages felt monotonous with single blue color everywhere
-**Solution:** Introduced themed color accents for different content types
-
-#### Usage Limits Panel - Color Coding
-```typescript
-Hard Limits (Lifetime):
- ├─ Sites: Green (success) - #10B981
- ├─ Users: Cyan (info) - #06B6D4
- ├─ Keywords: Purple - #9333EA
- └─ Clusters: Orange (warning) - #F59E0B
-
-Monthly Limits:
- ├─ Content Ideas: Blue (brand) - #4F46E5
- ├─ Content Words: Indigo - #6366F1
- ├─ Basic Images: Teal - #14B8A6
- ├─ Premium Images: Cyan - #06B6D4
- └─ Image Prompts: Pink - #EC4899
-```
-
-**Benefits:**
-- Instant visual identification of limit types
-- Reduces cognitive load
-- Maintains professional appearance
-- Still cohesive with IGNY8 brand
-
----
-
-### 2. Credit Cost Breakdown Panel
-
-**Created New Component:** `CreditCostBreakdownPanel.tsx`
-
-**Features:**
-- Summary cards: Total Cost, Avg Cost/Day, Cost per Credit
-- Detailed operation-type breakdown with color coding
-- Shows: credits used, operation count, avg per operation, USD cost
-- Multi-color cards for easy scanning
-
-**Location Change:**
-- ❌ **Before:** Usage Analytics → Cost Breakdown tab
-- ✅ **After:** Plans & Billing → Credits Overview section
-
-**Rationale:**
-- Cost data more relevant alongside credit balance
-- Better user flow: Check balance → See costs → Purchase more
-- Reduces tab clutter in Usage Analytics
-
----
-
-### 3. Page Reorganization
-
-#### Usage Analytics Page
-**Before:** 3 tabs (Limits & Usage, API Usage, Cost Breakdown)
-**After:** 2 tabs (Limits & Usage, API Usage)
-
-#### Plans & Billing Page
-**Before:** 3 tabs (Current Plan, Credits Overview, Billing History)
-**After:** 3 tabs with enhanced Credits Overview including cost breakdown
-
-**Updated:** Credits Overview now shows:
-1. Credit balance summary (3 cards)
-2. Usage progress bar
-3. Credit packages for purchase
-4. **NEW:** Cost breakdown analytics
-
----
-
-### 4. Comprehensive Color Standardization
-
-#### Files Refactored (Account Pages)
-
-| File | Changes | Colors Used |
-|------|---------|-------------|
-| `UsageLimitsPanel.tsx` | Multi-color limit cards | success, info, purple, warning, brand, indigo, teal, cyan, pink |
-| `CreditCostBreakdownPanel.tsx` | Color-coded operation cards | brand, success, info, purple, warning, teal |
-| `PlansAndBillingPage.tsx` | Notice boxes, policy card | brand-50, info-50 |
-| `PurchaseCreditsPage.tsx` | Payment instruction box | info-50 |
-| `AccountSettingsPage.tsx` | Loader, buttons | brand-500 |
-| `TeamManagementPage.tsx` | Tab borders | brand-500 |
-| `UsageAnalyticsPage.tsx` | Tab borders, API cards | brand-500 |
-
-#### Eliminated Colors
-
-All instances of these **REMOVED:**
-- `#3b82f6` (wrong blue)
-- `#2563eb` (wrong blue)
-- `bg-blue-50`, `bg-blue-500`, `bg-blue-600`, `bg-blue-700`
-- `text-blue-600`, `text-blue-700`, `text-blue-800`, `text-blue-900`
-- `border-blue-200`, `border-blue-500`
-- Hardcoded indigo variants
-
-#### Standardized Colors
-
-All colors now use CSS variables:
-```css
-/* Brand Colors (Primary) */
-var(--color-brand-50) → #EEF2FF (lightest)
-var(--color-brand-500) → #4F46E5 (primary - IGNY8 indigo)
-var(--color-brand-600) → #4338CA (hover state)
-var(--color-brand-900) → #1E1B4B (darkest)
-
-/* Semantic Colors */
-var(--color-success-500) → #10B981 (green)
-var(--color-warning-500) → #F59E0B (orange/amber)
-var(--color-danger-500) → #EF4444 (red)
-var(--color-info-500) → #06B6D4 (cyan)
-
-/* Extended Palette */
-var(--color-purple-500) → #9333EA
-var(--color-indigo-500) → #6366F1
-var(--color-pink-500) → #EC4899
-var(--color-teal-500) → #14B8A6
-var(--color-cyan-500) → #06B6D4
-```
-
----
-
-### 5. Component Architecture Changes
-
-#### New Component
-**File:** `frontend/src/components/billing/CreditCostBreakdownPanel.tsx`
-- Standalone cost analytics panel
-- Uses `getUsageAnalytics()` API
-- Type: `UsageAnalytics`
-- Responsive grid layout
-- Color-coded operation cards
-
-#### Enhanced Component
-**File:** `frontend/src/components/billing/UsageLimitsPanel.tsx`
-- Added `accentColor` prop to `LimitCard`
-- Created `hardLimitConfig` and `monthlyLimitConfig` objects
-- Maps limit types to colors and icons
-- Dynamic color application based on config
-
-#### Updated Props
-```typescript
-interface LimitCardProps {
- title: string;
- icon: React.ReactNode;
- usage: LimitUsage;
- type: 'hard' | 'monthly';
- daysUntilReset?: number;
- accentColor?: 'brand' | 'success' | 'warning' | 'danger' | 'info' | 'purple' | 'indigo' | 'pink' | 'teal' | 'cyan'; // NEW
-}
-```
-
----
-
-### 6. CSS File Cleanup
-
-#### Verified Clean Files
-✅ `frontend/src/styles/tokens.css` - CLEAN (design system tokens)
-✅ `frontend/src/styles/igny8-colors.css` - CLEAN (color definitions)
-✅ `frontend/src/styles/global.css` - CLEAN (global styles)
-
-#### Previously Removed
-❌ `frontend/src/styles/account-colors.css` - DELETED (had wrong colors)
-
-#### No Hardcoded Colors Found
-- Searched all `.css` files for `#3b82f6`, `#2563eb`, `#60a5fa`
-- Result: 0 matches ✅
-
----
-
-## Visual Improvements
-
-### Before vs After
-
-#### Before Issues:
-- ❌ All cards looked identical (boring blue)
-- ❌ Hard to distinguish limit types at a glance
-- ❌ Purplish-blue (#3b82f6) instead of brand indigo (#4F46E5)
-- ❌ Cost data buried in separate tab
-- ❌ Inconsistent color usage across pages
-
-#### After Improvements:
-- ✅ Vibrant, distinct colors for each limit type
-- ✅ Instant visual recognition (green = sites, cyan = users, etc.)
-- ✅ Proper IGNY8 indigo throughout
-- ✅ Cost data logically placed with credit balance
-- ✅ 100% design system compliance
-
----
-
-## Technical Details
-
-### Progress Bar Color Logic
-
-```typescript
-// Default: Use accent color for the limit type
-let barColor = `bg-[var(--color-${accentColor}-500)]`;
-
-// Override for warning/danger states
-if (isDanger) { // >= 95%
- barColor = 'bg-[var(--color-danger)]';
- badgeTone = 'danger';
-} else if (isWarning) { // >= 80%
- barColor = 'bg-[var(--color-warning)]';
- badgeTone = 'warning';
-}
-```
-
-### Icon Background Colors
-
-```tsx
-
- {icon}
-
-```
-
-### Responsive Color Variables
-
-All colors automatically adapt to:
-- ✅ Light mode
-- ✅ Dark mode
-- ✅ Theme changes
-- ✅ Accessibility settings
-
----
-
-## API Integration
-
-### Using Existing Endpoints
-
-**Credit Cost Data:**
-```typescript
-import { getUsageAnalytics, type UsageAnalytics } from '../../services/billing.api';
-
-const data = await getUsageAnalytics(30); // Last 30 days
-// Returns: total_usage, usage_by_type[], purchases_by_type[], daily_usage[]
-```
-
-**No New Backend Required:**
-- Reuses existing `/v1/account/usage/analytics/` endpoint
-- Type: `UsageAnalytics` interface
-- Fields: `transaction_type`, `total`, `count`
-
----
-
-## Files Modified
-
-### Components (2 files)
-1. ✅ `frontend/src/components/billing/UsageLimitsPanel.tsx`
-2. ✅ `frontend/src/components/billing/CreditCostBreakdownPanel.tsx` (NEW)
-
-### Pages (5 files)
-1. ✅ `frontend/src/pages/account/UsageAnalyticsPage.tsx`
-2. ✅ `frontend/src/pages/account/PlansAndBillingPage.tsx`
-3. ✅ `frontend/src/pages/account/PurchaseCreditsPage.tsx`
-4. ✅ `frontend/src/pages/account/AccountSettingsPage.tsx`
-5. ✅ `frontend/src/pages/account/TeamManagementPage.tsx`
-
-### Documentation (1 file)
-1. ✅ `CHANGELOG.md` (updated to v1.0.3)
-
-**Total: 8 files modified/created**
-
----
-
-## Quality Assurance
-
-### TypeScript Compilation
-```bash
-✅ No errors in /components/billing
-✅ No errors in /pages/account
-✅ All type definitions correct
-✅ Proper prop types
-```
-
-### Color Audit Results
-```bash
-Search: hardcoded blue hex colors (#3b82f6, #2563eb, #60a5fa)
-Results: 0 matches in CSS files ✅
-
-Search: blue Tailwind classes (bg-blue-*, text-blue-*, border-blue-*)
-Account Pages: 0 matches ✅
-(Remaining matches are in non-account components, intentionally kept)
-```
-
-### Design System Compliance
-```bash
-✅ All colors use var(--color-*) variables
-✅ No hardcoded hex values in account pages
-✅ Consistent dark mode support
-✅ Accessible color contrasts maintained
-```
-
----
-
-## User Experience Improvements
-
-### Visual Hierarchy
-- Different limit types immediately recognizable by color
-- Progress bars use semantic colors (green safe, yellow warning, red danger)
-- Subtle variety prevents visual fatigue
-
-### Information Architecture
-- Cost data near credit balance (related context)
-- Fewer tabs in Usage Analytics (reduced complexity)
-- Logical grouping of related features
-
-### Accessibility
-- All colors meet WCAG contrast requirements
-- Dark mode colors properly adjusted
-- Color not sole indicator (icons + labels also used)
-
----
-
-## Migration Notes
-
-### Breaking Changes
-❌ None - all changes are visual/organizational
-
-### API Changes
-❌ None - uses existing endpoints
-
-### CSS Changes
-✅ Removed `account-colors.css` (no longer imported anywhere)
-✅ All styles now inline or from design system
-
----
-
-## Testing Checklist
-
-### Visual Testing
-- [ ] Check all limit cards show correct colors
-- [ ] Verify progress bars use warning/danger colors at thresholds
-- [ ] Test dark mode appearance
-- [ ] Confirm cost breakdown panel displays correctly
-- [ ] Validate credit overview section layout
-
-### Functional Testing
-- [ ] Verify limit data loads correctly
-- [ ] Test cost analytics API integration
-- [ ] Check tab navigation works
-- [ ] Validate purchase credits flow
-- [ ] Test responsive layouts (mobile, tablet, desktop)
-
-### Cross-Browser
-- [ ] Chrome/Edge
-- [ ] Firefox
-- [ ] Safari
-
----
-
-## Performance Impact
-
-**Bundle Size:** Minimal increase (~2KB for new component)
-**API Calls:** No additional calls (reuses existing analytics endpoint)
-**Render Performance:** No change (same number of cards, just colored)
-**CSS:** Reduced (removed account-colors.css)
-
----
-
-## Future Enhancements
-
-### Potential Additions
-1. User preference for color scheme (colorful vs. monochrome)
-2. Customizable color mapping for limit types
-3. Export cost breakdown as PDF/CSV
-4. Historical cost trends chart
-5. Cost prediction based on usage patterns
-
-### Maintenance
-- All colors centralized in tokens.css
-- Easy to rebrand by changing CSS variables
-- Component architecture supports easy color updates
-
----
-
-## Conclusion
-
-Successfully eliminated ALL hardcoded colors from account pages and added tasteful color variety to improve UX. The IGNY8 frontend now:
-
-✅ Uses design system colors consistently
-✅ Has visual distinction between content types
-✅ Organizes cost data logically
-✅ Maintains brand identity
-✅ Supports dark mode perfectly
-✅ Is easy to maintain and extend
-
-**No redundant CSS files remain. Everything uses standard IGNY8 design tokens.**
-
----
-
-**Status:** ✅ COMPLETE - Ready for testing and deployment
-**Version:** v1.0.3
-**Date:** December 12, 2025
diff --git a/Pricing and features comparison.csv b/Pricing and features comparison.csv
deleted file mode 100644
index c07411e3..00000000
--- a/Pricing and features comparison.csv
+++ /dev/null
@@ -1,127 +0,0 @@
-1) Pricing Plans Table (For Pricing Cards),,,
-,,,
-Feature,Starter,Growth,Scale
-Price / Month,$99 ,$199 ,$299
-Sites,2,5,Unlimited
-Team Users,1,3,5
-Monthly Credits,"1,000","3,000","5,000"
-Content Generation,100K words,300K words,500K words
-AI Keyword Clustering,100 clusters,300 clusters,500 clusters
-Content Ideas,300 ideas,900 ideas,"1,500 ideas"
-Image Generation,300 basic / 60 premium,900 basic / 180 premium,"1,500 basic / 300 premium"
-Image Prompts,300,900,"1,500"
-,,,
-2) Detailed Plan Comparison Table,,,
-,,,
-Capability,Starter,Growth,Scale
-ACCOUNT & ACCESS,,,
-Sites,2,5,Unlimited
-Team Users,1,3,5
-User Roles & Permissions,✓ Included,✓ Included,✓ Included
-Multi-Site Management,✓ Included,✓ Included,✓ Included
-CREDITS & USAGE,,,
-Monthly Credits,"1,000","3,000","5,000"
-Usage Analytics Dashboard,✓ Included,✓ Included,✓ Included
-Additional Credit Packages,✓ Available,✓ Available,✓ Available
-PLANNER MODULE,,,
-Bulk Keyword Import (CSV),✓ Unlimited rows,✓ Unlimited rows,✓ Unlimited rows
-AI-Powered Clustering,100 clusters,300 clusters,500 clusters
-Global Seed Keyword Database,✓ 100+ industry sectors,✓ 100+ industry sectors,✓ 100+ industry sectors
-Search Intent Classification,✓ Included,✓ Included,✓ Included
-High-Opportunity Keywords,✓ Included,✓ Included,✓ Included
-Industry & Sector Organization,✓ Included,✓ Included,✓ Included
-Advanced Filtering & Search,✓ Included,✓ Included,✓ Included
-CONTENT IDEATION,,,
-AI Content Idea Generation,300 ideas,900 ideas,"1,500 ideas"
-Structured Content Briefs,✓ Included,✓ Included,✓ Included
-Word Count Estimation,✓ Included,✓ Included,✓ Included
-Priority Scoring,✓ Included,✓ Included,✓ Included
-Editorial Calendar Integration,✓ Included,✓ Included,✓ Included
-WRITER MODULE,,,
-Premium AI Content Generation,100K words,300K words,500K words
-Smart Content Structuring,✓ Included,✓ Included,✓ Included
-SEO Optimization (Built-in),✓ Included,✓ Included,✓ Included
-Customizable Word Counts,"✓ 500-5,000+","✓ 500-5,000+","✓ 500-5,000+"
-Brand Voice Consistency,✓ Included,✓ Included,✓ Included
-HTML Content Editor,✓ Included,✓ Included,✓ Included
-SEO Metadata Management,✓ Included,✓ Included,✓ Included
-Taxonomy Manager,✓ Included,✓ Included,✓ Included
-IMAGE GENERATION,,,
-AI Image Generation,300 basic / 60 premium,900 basic / 180 premium,"1,500 basic / 300 premium"
-Featured Images,✓ Included,✓ Included,✓ Included
-In-Article Images,✓ Included,✓ Included,✓ Included
-Dual AI Providers,✓ Basic + Premium,✓ Basic + Premium,✓ Basic + Premium
-Multiple Image Sizes,✓ Included,✓ Included,✓ Included
-Automatic Alt Text,✓ Included,✓ Included,✓ Included
-Smart Image Prompts,300,900,"1,500"
-Advanced Image Controls,✓ Included,✓ Included,✓ Included
-AUTOMATION PIPELINE,,,
-7-Stage Automation Pipeline,✓ Included,✓ Included,✓ Included
-Scheduled Automation Runs,✓ Daily/Weekly/Monthly,✓ Daily/Weekly/Monthly,✓ Daily/Weekly/Monthly
-Configurable Batch Sizes,✓ Included,✓ Included,✓ Included
-Pause & Resume,✓ Included,✓ Included,✓ Included
-Credit Estimation,✓ Included,✓ Included,✓ Included
-Detailed Activity Logs,✓ Included,✓ Included,✓ Included
-Manual Override Triggers,✓ Included,✓ Included,✓ Included
-INTEGRATIONS,,,
-WordPress Integration,✓ Included,✓ Included,✓ Included
-IGNY8 WP Bridge Plugin,✓ Included,✓ Included,✓ Included
-1-Click API-Based Integration,✓ Included,✓ Included,✓ Included
-Custom Integration Support,✓ Included,✓ Included,✓ Included
-Shopify Integration,🔜 Coming Soon,🔜 Coming Soon,🔜 Coming Soon
-WORDPRESS PUBLISHING,,,
-One-Click Publishing,✓ Included,✓ Included,✓ Included
-Automatic Content & Media Upload,✓ Included,✓ Included,✓ Included
-Bidirectional Status Sync,✓ Included,✓ Included,✓ Included
-Taxonomy Synchronization,✓ Included,✓ Included,✓ Included
-SEO Metadata Sync,✓ Included,✓ Included,✓ Included
-Custom Fields Support,✓ Included,✓ Included,✓ Included
-Multiple WordPress Sites,✓ Up to 2,✓ Up to 5,✓ Unlimited
-API Key Authentication,✓ Included,✓ Included,✓ Included
-Error Handling & Retry,✓ Included,✓ Included,✓ Included
-CUSTOMIZATION,,,
-Custom AI Prompts,✓ Included,✓ Included,✓ Included
-Brand Voice Configuration,✓ Included,✓ Included,✓ Included
-Content Type Templates,✓ Included,✓ Included,✓ Included
-Advanced AI Parameter Tuning,✓ Included,✓ Included,✓ Included
-BILLING & INVOICING,,,
-Credit Balance Dashboard,✓ Included,✓ Included,✓ Included
-Usage Analytics,✓ Included,✓ Included,✓ Included
-Invoice Management,✓ Included,✓ Included,✓ Included
-Multiple Payment Methods,✓ Included,✓ Included,✓ Included
-PDF Invoice Download,✓ Included,✓ Included,✓ Included
-SUPPORT & DOCUMENTATION,,,
-Email Support,✓ Included,✓ Included,✓ Included
-Documentation Access,✓ Included,✓ Included,✓ Included
-Video Tutorials,✓ Included,✓ Included,✓ Included
-API Documentation,✓ Included,✓ Included,✓ Included
-SECURITY & COMPLIANCE,,,
-Enterprise Authentication,✓ Included,✓ Included,✓ Included
-Data Encryption,✓ Included,✓ Included,✓ Included
-Activity Logs,✓ Included,✓ Included,✓ Included
-GDPR Compliance Ready,✓ Included,✓ Included,✓ Included
-Account Isolation,✓ Included,✓ Included,✓ Included
-INTERNAL LINKING,🔜 Coming Soon,,
-AI-Powered Link Discovery,,,
-Smart Link Injection,,,
-Relevance Scoring,,,
-Anchor Text Optimization,,,
-Link Density Control,,,
-Bi-directional Linking,,,
-CONTENT OPTIMIZATION,🔜 Coming Soon,,
-AI Content Optimization,,,
-Multi-Factor SEO Scoring,,,
-Readability Analysis,,,
-Before/After Comparison,,,
-AI Recommendations,,,
-Batch Optimization,,,
-,,,
-Key Notes:,,,
-,,,
-1. All features are included in all plans - only capacity scales,,,
-"2. High-Opportunity Keywords: Low competition, high gap opportunities identified for ranking",,,
-3. Image Generation: Choose between Basic or Premium AI images,,,
-4. Premium AI: All text generation uses premium AI models,,,
-"5. WordPress Publishing: Complete content, metadata, and images automatically published and uploaded",,,
-6. Integrations: WordPress and Custom integrations included; Shopify coming soon,,,
-7. Credits are flexible: Can be used for any operation across all modules,,,
diff --git a/UI-REORGANIZATION-SUMMARY.md b/UI-REORGANIZATION-SUMMARY.md
deleted file mode 100644
index 99961a6e..00000000
--- a/UI-REORGANIZATION-SUMMARY.md
+++ /dev/null
@@ -1,249 +0,0 @@
-# UI Reorganization & Design System Enforcement - Summary
-
-**Date:** December 12, 2025
-**Version:** v1.0.2
-
-## Overview
-Consolidated the Usage Analytics UI and enforced consistent IGNY8 brand colors across all account pages, removing parallel color definitions and hardcoded color values.
-
----
-
-## Changes Made
-
-### 1. Usage Analytics Page Reorganization
-
-#### Tab Structure Changes
-**Before:**
-- 5 tabs: Plan Limits | Credit Usage | Credit Balance | API Usage | Cost Breakdown
-
-**After:**
-- 3 tabs: Limits & Usage | API Usage | Cost Breakdown
-
-#### Content Consolidation
-- **Merged** credit usage analytics into "Limits & Usage" tab
-- **Renamed** "Plan Limits" → "Limits & Usage" for better clarity
-- **Removed** standalone "Credit Balance" tab (content now in Limits & Usage)
-- **Combined** `UsageLimitsPanel` and `BillingUsagePanel` in single tab view
-
-#### Files Modified
-- `frontend/src/pages/account/UsageAnalyticsPage.tsx`
- - Updated `TabType` from 5 options to 3
- - Modified tabs array (removed credits, balance)
- - Consolidated tab content rendering
- - Applied brand color to active tab border
-
----
-
-### 2. Design System Color Enforcement
-
-#### Color Standardization
-**Replaced all instances of:**
-- Hardcoded hex colors: `#3b82f6`, `#2563eb` (wrong blue shades)
-- Tailwind classes: `bg-blue-500`, `bg-blue-600`, `bg-blue-700`, `text-blue-600`, etc.
-
-**With:**
-- CSS variable: `var(--color-brand-500)` → `#4F46E5` (official IGNY8 indigo)
-- Related variables: `var(--color-brand-50)`, `var(--color-brand-600)`, etc.
-
-#### Files Updated
-
-##### Account Pages
-1. **AccountSettingsPage.tsx**
- - Loader spinner color
- - Save button background and hover states
-
-2. **TeamManagementPage.tsx**
- - Active tab border color
-
-3. **PlansAndBillingPage.tsx**
- - Loader spinner
- - Active tab border
- - Credit balance number display
- - Progress bar background
- - Package card hover borders
- - Package icon background
- - Package credit number display
-
-4. **PurchaseCreditsPage.tsx**
- - Loader spinner
- - Input focus ring colors (2 instances)
- - Selected package border and background
- - Package price display
- - Package selection icon background
- - Add-on selected border and background
- - Add-on checkbox background
- - Add-on check icon color
- - Summary total price display
- - Payment method selection states
-
-5. **UsageAnalyticsPage.tsx**
- - Active tab border and text
- - API usage card numbers
-
-##### Component Files
-6. **UsageLimitsPanel.tsx**
- - Limit card icon backgrounds
- - Progress bar colors (default, warning, danger)
- - View limits button
- - Upgrade card gradient backgrounds
- - Upgrade card icon
- - Upgrade button
- - Badge variants and tones
-
-7. **BillingUsagePanel.tsx**
- - (Inherits colors from parent components)
-
----
-
-### 3. CSS File Cleanup
-
-#### Removed Files
-- **`frontend/src/styles/account-colors.css`**
- - Contained parallel color definitions with wrong blue shades
- - Had custom gradients using hardcoded `#3b82f6`, `#2563eb`
- - Created inconsistency with main design system
-
-#### Updated Files
-- **`frontend/src/index.css`**
- - Removed import of `account-colors.css`
- - Now relies solely on tokens.css for color definitions
-
----
-
-## Color Reference
-
-### IGNY8 Brand Color Palette
-Based on `frontend/src/index.css` and `frontend/src/styles/tokens.css`:
-
-```css
---color-brand-50: #EEF2FF;
---color-brand-100: #E0E7FF;
---color-brand-200: #C7D2FE;
---color-brand-300: #A5B4FC;
---color-brand-400: #818CF8;
---color-brand-500: #4F46E5; /* Primary IGNY8 indigo */
---color-brand-600: #4338CA;
---color-brand-700: #3730A3;
---color-brand-800: #312E81;
---color-brand-900: #1E1B4B;
-```
-
-**Primary Brand Color:** `var(--color-brand-500)` = `#4F46E5` (Indigo)
-
-### Status Colors
-```css
---color-warning: var(--color-yellow-500);
---color-danger: var(--color-red-500);
---color-success: var(--color-green-500);
-```
-
----
-
-## Technical Implementation Details
-
-### Badge Component Updates
-- Changed from `variant="default"` to `variant="soft" tone="brand"`
-- Fixed TypeScript errors by using correct `BadgeVariant` and `BadgeTone` types
-- Maintained backward compatibility with existing badge system
-
-### Progress Bars
-- Default state: `var(--color-brand-500)` (indigo)
-- Warning state (≥80%): `var(--color-warning)` (yellow)
-- Danger state (≥95%): `var(--color-danger)` (red)
-
-### Gradient Backgrounds
-Replaced hardcoded gradients:
-```css
-/* Before */
-background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
-
-/* After */
-class="bg-gradient-to-r from-[var(--color-brand-50)] to-[var(--color-brand-100)]"
-```
-
----
-
-## Benefits
-
-### 1. **Consistency**
-- All account pages now use identical IGNY8 indigo color
-- No visual discrepancies between different sections
-- Unified user experience across dashboard
-
-### 2. **Maintainability**
-- Single source of truth for colors (tokens.css)
-- No parallel color definitions
-- Easy to update brand colors globally
-
-### 3. **Design System Compliance**
-- Follows established IGNY8 design system
-- Uses correct brand color (#4F46E5 indigo, not #3b82f6 blue)
-- Respects design token architecture
-
-### 4. **Reduced Complexity**
-- Removed redundant CSS file
-- Simplified import structure
-- Less code to maintain
-
----
-
-## Testing Recommendations
-
-### Visual Verification
-1. ✅ Check all account pages for consistent indigo color (#4F46E5)
-2. ✅ Verify Usage Analytics shows 3 tabs (not 5)
-3. ✅ Confirm credit usage content appears in "Limits & Usage" tab
-4. ✅ Test dark mode color consistency
-5. ✅ Check hover states use brand-600 (#4338CA)
-
-### Functional Testing
-1. ✅ Usage limits display correctly with progress bars
-2. ✅ Credit balance cards show in merged tab
-3. ✅ Tab navigation works properly
-4. ✅ No TypeScript/compile errors
-5. ✅ All buttons and interactive elements functional
-
----
-
-## Files Modified Summary
-
-### Account Pages (5 files)
-- `/frontend/src/pages/account/UsageAnalyticsPage.tsx`
-- `/frontend/src/pages/account/AccountSettingsPage.tsx`
-- `/frontend/src/pages/account/TeamManagementPage.tsx`
-- `/frontend/src/pages/account/PlansAndBillingPage.tsx`
-- `/frontend/src/pages/account/PurchaseCreditsPage.tsx`
-
-### Components (1 file)
-- `/frontend/src/components/billing/UsageLimitsPanel.tsx`
-
-### Styles (2 files)
-- `/frontend/src/index.css` (updated)
-- `/frontend/src/styles/account-colors.css` (deleted)
-
-### Documentation (1 file)
-- `/CHANGELOG.md` (added v1.0.2 entry)
-
----
-
-## Next Steps
-
-1. **Frontend rebuild** - Run `npm run build` to compile changes
-2. **Visual QA** - Test all account pages in browser
-3. **Dark mode check** - Verify colors work in both themes
-4. **Cross-browser testing** - Ensure consistent rendering
-5. **User feedback** - Gather feedback on new consolidated UI
-
----
-
-## Notes
-
-- Purple colors (`bg-purple-*`) were intentionally kept - they're used for specific badges (e.g., WordPress source badge) and are part of the secondary color palette
-- Blue colors in general UI components (outside account pages) were not modified - this update focused on account section consistency
-- The design system still supports multi-color badges and indicators - only the primary brand interaction color was standardized
-
----
-
-**Documentation Status:** ✅ Complete
-**Implementation Status:** ✅ Complete
-**Testing Status:** ⏳ Pending QA
diff --git a/backend/igny8_core/modules/planner/views.py b/backend/igny8_core/modules/planner/views.py
index 7ee0f66b..15dd7665 100644
--- a/backend/igny8_core/modules/planner/views.py
+++ b/backend/igny8_core/modules/planner/views.py
@@ -205,6 +205,13 @@ class KeywordViewSet(SiteSectorModelViewSet):
if not account:
account = getattr(site, 'account', None)
+ # Check hard limit for keywords (enforces ALL entry points: manual, import, AI, automation)
+ from igny8_core.business.billing.services.limit_service import LimitService, HardLimitExceededError
+ try:
+ LimitService.check_hard_limit(account, 'keywords', additional_count=1)
+ except HardLimitExceededError as e:
+ raise ValidationError(str(e))
+
# Save with all required fields explicitly
serializer.save(account=account, site=site, sector=sector)
@@ -337,6 +344,17 @@ class KeywordViewSet(SiteSectorModelViewSet):
request=request
)
+ # Check hard limit BEFORE bulk operation (check max potential additions)
+ from igny8_core.business.billing.services.limit_service import LimitService, HardLimitExceededError
+ try:
+ LimitService.check_hard_limit(account, 'keywords', additional_count=len(seed_keyword_ids))
+ except HardLimitExceededError as e:
+ return error_response(
+ error=str(e),
+ status_code=status.HTTP_400_BAD_REQUEST,
+ request=request
+ )
+
created_count = 0
skipped_count = 0
errors = []
@@ -555,10 +573,28 @@ class KeywordViewSet(SiteSectorModelViewSet):
if not account:
account = getattr(site, 'account', None)
- # Parse CSV
+ # Parse CSV and count rows first for limit check
try:
decoded_file = file.read().decode('utf-8')
- csv_reader = csv.DictReader(decoded_file.splitlines())
+ lines = decoded_file.splitlines()
+ csv_reader = csv.DictReader(lines)
+
+ # Count non-empty keyword rows
+ row_count = sum(1 for row in csv_reader if row.get('keyword', '').strip())
+
+ # Check hard limit BEFORE importing
+ from igny8_core.business.billing.services.limit_service import LimitService, HardLimitExceededError
+ try:
+ LimitService.check_hard_limit(account, 'keywords', additional_count=row_count)
+ except HardLimitExceededError as e:
+ return error_response(
+ error=str(e),
+ status_code=status.HTTP_400_BAD_REQUEST,
+ request=request
+ )
+
+ # Reset reader for actual import
+ csv_reader = csv.DictReader(lines)
imported_count = 0
skipped_count = 0
@@ -861,6 +897,13 @@ class ClusterViewSet(SiteSectorModelViewSet):
if not account:
account = getattr(site, 'account', None)
+ # Check hard limit for clusters (enforces ALL entry points: manual, import, AI, automation)
+ from igny8_core.business.billing.services.limit_service import LimitService, HardLimitExceededError
+ try:
+ LimitService.check_hard_limit(account, 'clusters', additional_count=1)
+ except HardLimitExceededError as e:
+ raise ValidationError(str(e))
+
# Save with all required fields explicitly
serializer.save(account=account, site=site, sector=sector)
@@ -1049,6 +1092,13 @@ class ContentIdeasViewSet(SiteSectorModelViewSet):
if not account:
account = getattr(site, 'account', None)
+ # Check monthly limit for content_ideas (enforces ALL entry points: manual, import, AI, automation)
+ from igny8_core.business.billing.services.limit_service import LimitService, MonthlyLimitExceededError
+ try:
+ LimitService.check_monthly_limit(account, 'content_ideas', additional_count=1)
+ except MonthlyLimitExceededError as e:
+ raise ValidationError(str(e))
+
serializer.save(account=account, site=site, sector=sector)
@action(detail=False, methods=['POST'], url_path='bulk_delete', url_name='bulk_delete')
diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts
index f659b25f..ab7b3a22 100644
--- a/frontend/src/services/api.ts
+++ b/frontend/src/services/api.ts
@@ -1988,11 +1988,14 @@ export async function addSeedKeywordsToWorkflow(seedKeywordIds: number[], siteId
return { success: true, ...response } as any;
} catch (error: any) {
- // Error responses are thrown by fetchAPI, but wrap them for consistency
- if (error.response && typeof error.response === 'object') {
- return { success: false, error: error.message, ...error.response } as any;
- }
- throw error;
+ // Error responses are thrown by fetchAPI - return as failed result instead of re-throwing
+ // This allows component to handle limit errors gracefully
+ return {
+ success: false,
+ created: 0,
+ skipped: 0,
+ errors: [error.message || 'Failed to add keywords']
+ };
}
}