diff --git a/src/client/features/auth/AuthPage.tsx b/src/client/features/auth/AuthPage.tsx index 821e0d2..e581acc 100644 --- a/src/client/features/auth/AuthPage.tsx +++ b/src/client/features/auth/AuthPage.tsx @@ -136,9 +136,13 @@ export function AuthInputField({ {isSubmitting ? ( @@ -223,11 +227,11 @@ export function AuthPageCard({ footer?: React.ReactNode; }) { return ( -
+
Metatroncube

@@ -242,7 +246,9 @@ export function AuthPageCard({
{children}
- {footer ?
{footer}
: null} + {footer ? ( +
{footer}
+ ) : null}
@@ -261,7 +267,7 @@ export function InviteOnlyCard({ redirectTo }: { redirectTo: string }) { Back to sign in @@ -273,18 +279,18 @@ export function InviteOnlyCard({ redirectTo }: { redirectTo: string }) { const VALUE_PROPS = [ { icon: Zap, - title: "Get Started Quickly", - desc: "Set up your account in just a few simple steps.", + title: "Live Site Audits", + desc: "120+ technical checks, prioritized by what actually moves rankings.", }, { icon: ShieldCheck, - title: "Your Data is Safe", - desc: "Enterprise-grade security to keep your information protected.", + title: "Review Before It Ships", + desc: "AI-drafted fixes wait for your approval — nothing publishes itself.", }, { icon: TrendingUp, - title: "Build for What's Next", - desc: "Powerful tools and flexible features to help you grow.", + title: "Client-Ready Reporting", + desc: "Rank movement and traffic, in language your clients understand.", }, ]; @@ -301,10 +307,10 @@ export function AuthPageShell({ }; }) { return ( -
+
@@ -312,47 +318,44 @@ export function AuthPageShell({
Metatroncube -
-
- Metatroncube -
-
- Solutions -
+
+ CrawlerX
-
- - JOIN OUR PLATFORM +
+ + WEBSITE INTELLIGENCE THAT ACTS

- Build something + Find it. Fix it.
- - exceptional. + + Prove it.

- Create your account and get started in minutes. Join a growing - community of creators, builders and innovators. + Sign in to audit your sites, review AI-drafted fixes and report + progress your clients actually understand.

{VALUE_PROPS.map(({ icon: Icon, title, desc }) => (
-
- +
+
-
{title}
+
+ {title} +
{desc}
@@ -361,10 +364,10 @@ export function AuthPageShell({ ))}
-
- "More than software, +
+ "Built for agencies who bill
- it's a better tomorrow." + by results, not by hours."
@@ -380,7 +383,7 @@ export function AuthPageShell({ {topLink.linkText} @@ -389,7 +392,9 @@ export function AuthPageShell({ ) : null}
-
{children}
+
+ {children} +
diff --git a/src/client/features/billing/PricingGraphics.tsx b/src/client/features/billing/PricingGraphics.tsx index 4ea6c1f..b38eaf4 100644 --- a/src/client/features/billing/PricingGraphics.tsx +++ b/src/client/features/billing/PricingGraphics.tsx @@ -15,28 +15,59 @@ import { export function CrawlerXLogo() { return (
- - {/* Top facet - Cyan / Ice Blue (#4faede) */} + + {/* Top facet - CrawlerX accent teal (#3fb6ae) */} - {/* Left facet - MetatronCube Blue (#3779b9) */} + {/* Left facet - CrawlerX primary teal (#0e6e6a) */} - {/* Right facet - Deep Navy (#0f1d34) */} + {/* Right facet - CrawlerX ink navy (#0f161c) */} {/* Subtle highlights */} - + - - - + + + - - - + + + - - - + + + @@ -72,7 +103,7 @@ export function DotGridMatrix({ className }: { className?: string }) { height="16" patternUnits="userSpaceOnUse" > - + @@ -91,7 +122,7 @@ export function Floating3DChartCard({ className }: { className?: string }) {
{/* Top Row: "Grow Faster" Pill & Growth Arrow */}
- + Grow Faster @@ -111,9 +142,16 @@ export function Floating3DChartCard({ className }: { className?: string }) { strokeLinejoin="round" /> - - - + + + @@ -121,20 +159,36 @@ export function Floating3DChartCard({ className }: { className?: string }) { {/* 4 Rising Theme Blue Bars */}
-
-
-
-
+
+
+
+
{/* Small Plant in White Pot */}
- - - - + + + +
@@ -153,35 +207,41 @@ export function Floating3DSearchCard({ className }: { className?: string }) {
{/* Search Input Simulation */}
- -
+ +
{/* 3 Theme Pills */}
- Better Rankings + + Better Rankings +
-
- - More Traffic +
+ + + More Traffic +
-
- - Real Results +
+ + + Real Results +
{/* Hand-drawn Loop Arrow */} -
+
- - - - + + + + @@ -223,7 +290,7 @@ export function CornerWaveDecoration() { > @@ -244,13 +311,13 @@ export function renderPlanIcon(type: keyof typeof PLAN_ICONS) { } const TRUST_ICONS: Record = { - guarantee: , - upi: , - gst: , - cards: , + guarantee: , + upi: , + gst: , + cards: , support: 🇮🇳, }; export function renderTrustIcon(id: string) { - return TRUST_ICONS[id] ?? ; + return TRUST_ICONS[id] ?? ; } diff --git a/src/client/features/onboarding/OnboardingChat.tsx b/src/client/features/onboarding/OnboardingChat.tsx index 32461b9..3214c9e 100644 --- a/src/client/features/onboarding/OnboardingChat.tsx +++ b/src/client/features/onboarding/OnboardingChat.tsx @@ -85,7 +85,7 @@ function SiteForm({ projectId }: { projectId: string }) { >
CrawlerX diff --git a/src/client/features/onboarding/PostSignupOnboarding.tsx b/src/client/features/onboarding/PostSignupOnboarding.tsx index 470a3c6..b238294 100644 --- a/src/client/features/onboarding/PostSignupOnboarding.tsx +++ b/src/client/features/onboarding/PostSignupOnboarding.tsx @@ -60,7 +60,7 @@ export function PostSignupOnboarding({
CrawlerX diff --git a/src/client/styles/app.css b/src/client/styles/app.css index 1a199e4..2181052 100644 --- a/src/client/styles/app.css +++ b/src/client/styles/app.css @@ -8,14 +8,14 @@ "Helvetica Neue", Arial, sans-serif; } -/* CrawlerX brand gradient (MetatronCube blue → deep black), used on the - sign-in surface and the sidebar header. */ +/* CrawlerX brand gradient (teal → ink navy), used on the sign-in surface and + the sidebar header. Matches the brand guide's product-UI palette. */ :root { --brand-gradient: linear-gradient( 135deg, - #3779b9 0%, - #0f1d34 70%, - #00060c 100% + #0e6e6a 0%, + #0f161c 70%, + #060a0d 100% ); } @@ -38,7 +38,7 @@ exclude: properties; } -/* Light theme — CrawlerX / MetatronCube brand (primary #3779b9) */ +/* Light theme — CrawlerX brand (primary #0E6E6A, from the brand guide) */ @plugin "daisyui/theme" { name: "crawlerx"; default: true; @@ -48,15 +48,15 @@ --color-base-200: #f6f8fa; --color-base-300: #e6eaef; --color-base-content: #151515; - --color-primary: #3779b9; + --color-primary: #0e6e6a; --color-primary-content: #ffffff; - --color-secondary: #0f1d34; + --color-secondary: #0f161c; --color-secondary-content: #ffffff; - --color-accent: #4faede; + --color-accent: #3fb6ae; --color-accent-content: #06263a; --color-neutral: #151515; --color-neutral-content: #ffffff; - --color-info: #3779b9; + --color-info: #0e6e6a; --color-info-content: #ffffff; --color-success: oklch(65% 0.18 145); --color-success-content: oklch(100% 0 0); @@ -83,16 +83,16 @@ --color-base-200: #0e121b; --color-base-300: #232a37; --color-base-content: #e8ebf0; - --color-primary: #3f8ad4; - --color-primary-content: #ffffff; + --color-primary: #3fb6ae; + --color-primary-content: #06263a; --color-secondary: #9fb3c8; --color-secondary-content: #0e121b; - --color-accent: #4faede; + --color-accent: #3fb6ae; --color-accent-content: #06263a; --color-neutral: #e8ebf0; --color-neutral-content: #141821; - --color-info: #3f8ad4; - --color-info-content: #ffffff; + --color-info: #3fb6ae; + --color-info-content: #06263a; --color-success: oklch(65% 0.18 145); --color-success-content: oklch(100% 0 0); --color-warning: oklch(80% 0.15 80); diff --git a/src/routes/_authenticated.oauth-consent.tsx b/src/routes/_authenticated.oauth-consent.tsx index 878cbdc..366c37e 100644 --- a/src/routes/_authenticated.oauth-consent.tsx +++ b/src/routes/_authenticated.oauth-consent.tsx @@ -73,7 +73,7 @@ function OAuthConsentPage() {
CrawlerX diff --git a/src/routes/_authenticated.subscribe.tsx b/src/routes/_authenticated.subscribe.tsx index eac2a04..5d15768 100644 --- a/src/routes/_authenticated.subscribe.tsx +++ b/src/routes/_authenticated.subscribe.tsx @@ -125,8 +125,7 @@ function SubscribePage() { }); const siteCount = Math.max(1, projectsQuery.data?.length ?? 1); const activePlanId: "free" | "starter" | "pro" | "agency" = - billingQuery.data?.planId ?? - (planStatus === "paid" ? "pro" : "free"); + billingQuery.data?.planId ?? (planStatus === "paid" ? "pro" : "free"); const subscribeRouteState = getSubscribeRouteState({ hasSession, isCustomerLoading: customerQuery.isLoading, @@ -184,14 +183,14 @@ function SubscribePage() {
CrawlerX

Finalizing your subscription…

- +

Setting up your workspace limits and credits.

@@ -239,7 +238,9 @@ function SubscribePage() { throw new Error("Stripe checkout session did not return a valid URL."); } catch (err: unknown) { - const errObj = err as { message?: string; data?: { message?: string } } | undefined; + const errObj = err as + | { message?: string; data?: { message?: string } } + | undefined; const rawMsg = errObj?.data?.message || errObj?.message; const msg = rawMsg ? getStandardErrorMessage(new Error(rawMsg), rawMsg) @@ -278,8 +279,13 @@ function SubscribePage() { } throw new Error("Unable to retrieve Stripe billing portal URL."); } catch (err: unknown) { - const errObj = err as { message?: string; data?: { message?: string } } | undefined; - const msg = errObj?.data?.message || errObj?.message || "Failed to open billing portal."; + const errObj = err as + | { message?: string; data?: { message?: string } } + | undefined; + const msg = + errObj?.data?.message || + errObj?.message || + "Failed to open billing portal."; toast.error(msg); } finally { setIsOpeningPortal(false); @@ -379,7 +385,8 @@ function SubscribePage() { {/* Footer */}