diff --git a/frontend/index.html b/frontend/index.html index 6e98ac5c..b821fef3 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -10,7 +10,7 @@ - + diff --git a/frontend/src/pages/LandingPage.tsx b/frontend/src/pages/LandingPage.tsx index 3c352033..3a8c4610 100644 --- a/frontend/src/pages/LandingPage.tsx +++ b/frontend/src/pages/LandingPage.tsx @@ -164,46 +164,74 @@ export default function LandingPage() { - {/* Problem — asymmetric: headline left, cards right */} -
+ {/* Problem — editorial list, no cards */} +
The Problem

Documentation is broken.
Everyone knows it.

-

Engineers don't want to write it. Managers hate chasing it. Clients never see it. The same issues get solved from scratch — every time.

-
-
- - - - +

Engineers don't want to write it. Managers hate chasing it. Clients never see it. The same issues get solved from scratch, every time.

+
    +
  1. + 01 +
    +

    15–25 min lost per ticket

    +

    More time documenting than resolving. After a complex issue, writing notes is the last thing anyone does.

    +
    +
  2. +
  3. + 02 +
    +

    Vague, useless notes

    +

    “Fixed Outlook” tells no one anything. Notes under pressure are always too vague to help next time.

    +
    +
  4. +
  5. + 03 +
    +

    Knowledge walks out the door

    +

    When a senior engineer leaves, years of tribal knowledge vanish overnight.

    +
    +
  6. +
  7. + 04 +
    +

    Context switching kills speed

    +

    Jumping between the issue, docs, PSA tickets, and knowledge bases fragments focus.

    +
    +
  8. +
- {/* Equation */} + {/* Equation — typographic moment */}
The Answer
-
- Resolution - + - Documentation - - Time - = - ResolutionFlow +
+
+ Resolution + + + Documentation + + Time +
+
+ = +
+
ResolutionFlow

- What if documentation was a byproduct of solving the issue — not a separate task? + What if documentation was a byproduct of solving the issue, not a separate task?

{/* How It Works — zigzag */} -
+
How It Works

Three steps. Zero note-writing.

@@ -268,54 +296,47 @@ export default function LandingPage() {
- {/* Features */} -
+ {/* Features — editorial spec list */} +
Features

Everything you need to troubleshoot faster.

-
- -
+
-

FlowPilot — Your AI Copilot

-

Like having a senior engineer on every call. Describe the issue, get expert troubleshooting guidance, and documentation writes itself — as a byproduct of solving the problem.

+

FlowPilot, your AI copilot

+

Like having a senior engineer on every call. Describe the issue, get expert troubleshooting guidance, and documentation writes itself, as a byproduct of solving the problem.

-
- } - title="Guided Flows" - description="Build step-by-step troubleshooting paths your team can follow. Great for onboarding and consistency." - /> - } - title="Zero Empty Tickets" - description="Every session generates timestamped notes, formatted for your PSA. No more empty ticket closures." - /> - } - title="Team Knowledge" - description="Solutions are saved and surfaced when the next engineer hits a similar issue." - /> - } - title="Session Analytics" - description="Track resolution times, identify recurring issues, and measure team performance." - /> - } - title="PSA Integration" - description="Connect to ConnectWise, Atera, and Syncro. Push session docs straight to tickets." - /> -
+
+
+
Guided Flows
+
Build step-by-step troubleshooting paths your team can follow. Great for onboarding and consistency.
+
+
+
Zero Empty Tickets
+
Every session generates timestamped notes, formatted for your PSA. No more empty ticket closures.
+
+
+
Team Knowledge
+
Solutions are saved and surfaced when the next engineer hits a similar issue.
+
+
+
Session Analytics
+
Track resolution times, identify recurring issues, and measure team performance.
+
+
+
PSA Integration
+
Connect to ConnectWise, Atera, and Syncro. Push session docs straight to tickets.
+
+
{/* Pricing */} -
+
Pricing

Simple pricing. No surprises.

@@ -364,7 +385,7 @@ export default function LandingPage() {
{/* FAQ */} -
+
FAQ

Common questions

@@ -399,15 +420,16 @@ export default function LandingPage() {
- {/* CTA */} -
+ {/* CTA — drenched */} +
-

Ready to stop writing ticket notes?

-

Get early access. Troubleshoot your next ticket with FlowPilot.

+
Stop writing ticket notes
+

Troubleshoot your next ticket with FlowPilot.

+

Get early access. Free to start, no credit card.

- Get started + Get started + See how it works
-

Free to start. No credit card required.

@@ -421,30 +443,6 @@ export default function LandingPage() { /* ---- Sub-components ---- */ -function ProblemCard({ icon, color, title, description }: { - icon: string; color: string; title: string; description: string -}) { - return ( -
-
{icon}
-

{title}

-

{description}

-
- ) -} - -function FeatureCard({ icon, title, description }: { - icon: React.ReactNode; title: string; description: string -}) { - return ( -
-
{icon}
-

{title}

-

{description}

-
- ) -} - function PricingCard({ name, target, amount, period, note, features, btnLabel, btnStyle, featured, plan }: { name: string; target: string; amount: string; period?: string; note: string features: string[]; btnLabel: string; btnStyle: 'outline' | 'filled'; featured?: boolean; plan: string diff --git a/frontend/src/styles/landing.css b/frontend/src/styles/landing.css index 313b4d95..edc130b3 100644 --- a/frontend/src/styles/landing.css +++ b/frontend/src/styles/landing.css @@ -7,7 +7,7 @@ /* ---- LANDING COLOR PALETTE ---- */ .landing-page { --lp-bg: #14161d; - --lp-bg-alt: #181a22; + --lp-bg-alt: #1c1f2a; --lp-card: #1e2028; --lp-elevated: #262830; --lp-border: #2a2e3a; @@ -23,14 +23,24 @@ --lp-success: #34d399; --lp-danger: #f87171; --lp-warning: #fbbf24; + + /* Typeset: a single hyperlegibility-engineered family across the page. + Atkinson Hyperlegible Next (Braille Institute, 2024) — designed for + low-vision readers. Picked here because MSP engineers read this page + mid-ticket, under pressure, often glancing. Hyperlegibility IS the + brand value, not decoration. Mono sibling pairs naturally for + timestamps and ticket IDs. */ + --lp-font-display: 'Atkinson Hyperlegible Next', system-ui, sans-serif; + --lp-font-body: 'Atkinson Hyperlegible Next', system-ui, sans-serif; + --lp-font-mono: 'Atkinson Hyperlegible Mono', ui-monospace, monospace; } /* ---- BASE ---- */ .landing-page { - font-family: 'IBM Plex Sans', sans-serif; + font-family: var(--lp-font-body); background: var(--lp-bg); color: var(--lp-text-body); - line-height: 1.6; + line-height: 1.55; overflow-x: hidden; -webkit-font-smoothing: antialiased; min-height: 100vh; @@ -110,7 +120,7 @@ } .landing-nav-wordmark { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 1.25rem; font-weight: 700; color: var(--lp-text-heading); @@ -189,6 +199,14 @@ padding: 5rem 2rem; } +.landing-section-tight { + padding: 4rem 2rem 5rem; +} + +.landing-section-generous { + padding: 7rem 2rem 6rem; +} + .landing-section-alt { background: var(--lp-bg-alt); } @@ -199,24 +217,36 @@ } .landing-section-label { - font-family: 'IBM Plex Sans', sans-serif; - font-size: 0.7rem; - font-weight: 600; - color: var(--lp-accent-text); - letter-spacing: 0.14em; + display: flex; + align-items: center; + gap: 0.9rem; + font-family: var(--lp-font-display); + font-size: 0.9rem; + font-weight: 700; + color: var(--lp-accent); + letter-spacing: 0.08em; text-transform: uppercase; - margin-bottom: 0.75rem; + margin-bottom: 1.25rem; +} + +.landing-section-label::before { + content: ''; + width: 40px; + height: 2px; + background: var(--lp-accent); + flex-shrink: 0; } .landing-section-title { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: clamp(2rem, 4vw, 2.75rem); + font-family: var(--lp-font-display); + font-size: clamp(2rem, 4.5vw, 3.25rem); font-weight: 800; color: var(--lp-text-heading); - letter-spacing: -0.03em; - line-height: 1.15; + letter-spacing: -0.035em; + line-height: 1.05; margin-top: 0; margin-bottom: 1rem; + max-width: 22ch; } .landing-section-desc { @@ -251,8 +281,8 @@ position: absolute; inset: 0; background: - linear-gradient(to right, #14161d 22%, rgba(20, 22, 29, 0.80) 38%, rgba(20, 22, 29, 0.20) 58%, transparent 78%), - linear-gradient(to top, #14161d 0%, rgba(20, 22, 29, 0) 16%); + linear-gradient(to right, #14161d 0%, #14161d 38%, rgba(20, 22, 29, 0.92) 52%, rgba(20, 22, 29, 0.35) 72%, transparent 92%), + linear-gradient(to top, #14161d 0%, rgba(20, 22, 29, 0.4) 24%, rgba(20, 22, 29, 0) 48%); z-index: 1; } @@ -300,7 +330,7 @@ } .landing-hero h1 { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: clamp(2.5rem, 5vw, 3.75rem); font-weight: 800; line-height: 1.08; @@ -447,7 +477,7 @@ font-size: 0.65rem; font-weight: 700; color: var(--lp-text-secondary); - font-family: 'IBM Plex Sans', sans-serif; + font-family: var(--lp-font-body); } .tc-status { @@ -531,7 +561,7 @@ .tc-time { font-size: 0.55rem; color: var(--lp-text-dim); - font-family: 'JetBrains Mono', monospace; + font-family: var(--lp-font-mono); flex-shrink: 0; min-width: 28px; } @@ -601,7 +631,7 @@ align-items: flex-start; gap: 8px; font-size: 0.65rem; - font-family: 'IBM Plex Sans', sans-serif; + font-family: var(--lp-font-body); padding: 6px 10px; border-radius: 6px; } @@ -641,7 +671,7 @@ } .landing-mock-chat-line code { - font-family: 'JetBrains Mono', monospace; + font-family: var(--lp-font-mono); font-size: 0.6rem; padding: 1px 5px; border-radius: 3px; @@ -708,142 +738,172 @@ color: var(--lp-success); } -/* ---- PROBLEM SECTION (asymmetric) ---- */ +/* ---- PROBLEM SECTION (editorial, no cards) ---- */ .landing-problem-layout { display: grid; - grid-template-columns: 2fr 3fr; - gap: 3rem; + grid-template-columns: 5fr 7fr; + gap: clamp(2.5rem, 6vw, 6rem); align-items: start; } +.landing-problem-headline { + position: sticky; + top: 6rem; +} + .landing-problem-headline h2 { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: clamp(1.75rem, 3.5vw, 2.5rem); + font-family: var(--lp-font-display); + font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; color: var(--lp-text-heading); - letter-spacing: -0.03em; - line-height: 1.15; - margin: 0 0 1rem; + letter-spacing: -0.035em; + line-height: 1.05; + margin: 0 0 1.25rem; } .landing-problem-headline > p { - font-size: 1rem; + font-size: 1.05rem; color: var(--lp-text-secondary); - line-height: 1.7; + line-height: 1.65; + max-width: 36ch; } -.landing-problem-grid { +.landing-problem-list { + list-style: none; + margin: 0; + padding: 0; +} + +.landing-problem-item { display: grid; - grid-template-columns: 1fr 1fr; - gap: 1rem; + grid-template-columns: 4.5rem 1fr; + column-gap: 1.25rem; + padding: 2rem 0; + border-top: 1px solid var(--lp-border); } -.landing-problem-card { - padding: 1.25rem; - border-radius: 8px; - background: var(--lp-card); - border: 1px solid var(--lp-border); - transition: border-color 0.3s; +.landing-problem-item:last-child { + border-bottom: 1px solid var(--lp-border); } -.landing-problem-card:hover { - border-color: var(--lp-border-hover); +.landing-problem-num { + font-family: var(--lp-font-display); + font-size: 0.85rem; + font-weight: 700; + color: var(--lp-accent); + letter-spacing: 0.08em; + padding-top: 0.65rem; } -.landing-problem-icon { - width: 36px; - height: 36px; - border-radius: 8px; - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0.75rem; - font-size: 1.1rem; -} - -.landing-problem-icon.red { - background: rgba(248, 113, 113, 0.1); - color: var(--lp-danger); -} - -.landing-problem-icon.amber { - background: rgba(251, 191, 36, 0.1); - color: var(--lp-warning); -} - -.landing-problem-icon.slate { - background: rgba(145, 152, 168, 0.1); - color: var(--lp-text-secondary); -} - -.landing-problem-icon.violet { - background: rgba(139, 92, 246, 0.1); - color: #a78bfa; -} - -.landing-problem-card h3 { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: 0.95rem; +.landing-problem-body h3 { + font-family: var(--lp-font-display); + font-size: clamp(1.35rem, 2.5vw, 1.85rem); font-weight: 700; color: var(--lp-text-heading); - margin-bottom: 0.4rem; - letter-spacing: -0.01em; + letter-spacing: -0.025em; + line-height: 1.15; + margin: 0 0 0.6rem; } -.landing-problem-card p { - font-size: 0.8rem; +.landing-problem-body p { + font-size: 0.95rem; color: var(--lp-text-secondary); - line-height: 1.6; + line-height: 1.65; margin: 0; + max-width: 52ch; } -/* ---- EQUATION ---- */ +/* ---- EQUATION (hero-scale typographic moment) ---- */ .landing-equation-section { - text-align: center; - padding: 4rem 2rem; + text-align: left; + padding: 9rem 2rem 8rem; + position: relative; + overflow: hidden; +} + +.landing-equation-section::before { + content: ''; + position: absolute; + inset: 0; + background: + radial-gradient(60% 80% at 78% 30%, rgba(96, 165, 250, 0.10), transparent 70%); + pointer-events: none; + z-index: 0; } .landing-equation-inner { - max-width: 900px; + max-width: 1200px; margin: 0 auto; + position: relative; + z-index: 1; } .landing-brand-equation { + font-family: var(--lp-font-display); + font-weight: 800; + letter-spacing: -0.04em; + line-height: 0.95; + margin: 1.5rem 0 2rem; +} + +.landing-eq-lhs { display: flex; - align-items: center; - justify-content: center; - gap: 0.75rem; + align-items: baseline; flex-wrap: wrap; - font-family: 'Bricolage Grotesque', sans-serif; - font-size: clamp(1.25rem, 3vw, 2.25rem); - font-weight: 700; - letter-spacing: -0.02em; - margin-bottom: 1.5rem; + gap: 0.5em; + font-size: clamp(1.5rem, 4vw, 3rem); + color: var(--lp-text-secondary); + margin-bottom: 0.4rem; } .landing-eq-item { - padding: 0.4rem 1rem; - border-radius: 8px; - background: var(--lp-card); - border: 1px solid var(--lp-border); color: var(--lp-text-heading); } .landing-eq-operator { color: var(--lp-accent); - font-size: 1.5em; + font-weight: 600; +} + +.landing-eq-equals { + font-size: clamp(2rem, 5vw, 4rem); + color: var(--lp-accent); + line-height: 1; + margin: 0.1em 0 0.05em; +} + +.landing-eq-operator-equals { + display: inline-block; } .landing-eq-result { - color: var(--lp-accent-text); + font-size: clamp(2.25rem, 11vw, 9.5rem); + font-weight: 800; + color: var(--lp-text-heading); + letter-spacing: -0.055em; + line-height: 0.92; + display: inline-block; + position: relative; + padding-bottom: 0.05em; + max-width: 100%; +} + +.landing-eq-result::after { + content: ''; + position: absolute; + left: 0; + right: 14%; + bottom: 0.02em; + height: 0.12em; + background: linear-gradient(to right, var(--lp-accent), rgba(96, 165, 250, 0)); } .landing-equation-desc { - font-size: 1.05rem; + font-size: 1.1rem; color: var(--lp-text-secondary); - max-width: 480px; - margin: 0 auto; - line-height: 1.7; + max-width: 520px; + margin: 2rem 0 0; + line-height: 1.6; } /* ---- HOW IT WORKS (zigzag) ---- */ @@ -872,7 +932,7 @@ } .landing-zigzag-number { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 0.75rem; font-weight: 700; color: var(--lp-accent); @@ -881,7 +941,7 @@ } .landing-zigzag-text h3 { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 1.5rem; font-weight: 700; color: var(--lp-text-heading); @@ -907,100 +967,79 @@ background: var(--lp-bg-alt); } -/* ---- FEATURES ---- */ +/* ---- FEATURES (editorial spec list) ---- */ .landing-feature-highlight { - display: flex; - align-items: flex-start; - gap: 1.5rem; - padding: 2rem; - border-radius: 8px; - background: var(--lp-accent-soft); - border: 1px solid rgba(96, 165, 250, 0.15); + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + gap: 1.75rem; + padding: 2.25rem 2rem; + border-radius: 0; + background: transparent; + border: none; + border-top: 1px solid var(--lp-accent); + border-bottom: 1px solid var(--lp-border); margin-top: 2.5rem; - margin-bottom: 1.5rem; + margin-bottom: 0; } -.landing-feature-highlight-icon { - width: 52px; - height: 52px; - border-radius: 8px; - background: rgba(96, 165, 250, 0.15); - display: flex; - align-items: center; - justify-content: center; +.landing-feature-highlight-marker { + font-family: var(--lp-font-display); + font-size: 2.25rem; + font-weight: 800; color: var(--lp-accent); - flex-shrink: 0; + letter-spacing: -0.04em; + line-height: 1; + padding-right: 1.75rem; + border-right: 1px solid var(--lp-border); } .landing-feature-highlight-content h3 { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: 1.35rem; + font-family: var(--lp-font-display); + font-size: clamp(1.35rem, 2.4vw, 1.65rem); font-weight: 700; color: var(--lp-text-heading); - letter-spacing: -0.01em; - margin-bottom: 0.5rem; + letter-spacing: -0.02em; + margin: 0 0 0.4rem; } .landing-feature-highlight-content p { - font-size: 0.95rem; + font-size: 1rem; color: var(--lp-text-secondary); line-height: 1.65; margin: 0; + max-width: 68ch; } -.landing-features-grid { +.landing-feature-spec { + margin: 0; + padding: 0; +} + +.landing-feature-row { display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 1rem; + grid-template-columns: minmax(180px, 24%) 1fr; + column-gap: 3rem; + align-items: baseline; + padding: 1.75rem 0; + border-bottom: 1px solid var(--lp-border); } -.landing-feature-card { - padding: 1.5rem; - border-radius: 8px; - background: var(--lp-card); - border: 1px solid var(--lp-border); - transition: border-color 0.3s; -} - -.landing-feature-card:hover { - border-color: var(--lp-border-hover); -} - -.landing-feature-icon { - width: 36px; - height: 36px; - border-radius: 8px; - background: var(--lp-accent-soft); - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 1rem; - color: var(--lp-accent-text); -} - -.landing-feature-card h3 { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: 1rem; +.landing-feature-row dt { + font-family: var(--lp-font-display); + font-size: clamp(1.15rem, 2vw, 1.5rem); font-weight: 700; color: var(--lp-text-heading); - margin-bottom: 0.4rem; - letter-spacing: -0.01em; + letter-spacing: -0.02em; + line-height: 1.15; } -.landing-feature-card p { - font-size: 0.85rem; +.landing-feature-row dd { + font-size: 1rem; color: var(--lp-text-secondary); - line-height: 1.6; + line-height: 1.65; margin: 0; -} - -/* 5 cards: 3 + 2 bottom row centered */ -.landing-features-grid .landing-feature-card:nth-child(4) { - grid-column: 1 / 2; -} - -.landing-features-grid .landing-feature-card:nth-child(5) { - grid-column: 2 / 3; + max-width: 62ch; } /* ---- PRICING ---- */ @@ -1048,7 +1087,7 @@ } .landing-pricing-plan-name { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 1.1rem; font-weight: 700; color: var(--lp-text-heading); @@ -1069,7 +1108,7 @@ } .landing-pricing-price .amount { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 2.5rem; font-weight: 800; color: var(--lp-text-heading); @@ -1199,7 +1238,7 @@ border: none; cursor: pointer; text-align: left; - font-family: 'IBM Plex Sans', sans-serif; + font-family: var(--lp-font-body); font-size: 1rem; font-weight: 600; color: var(--lp-text-heading); @@ -1255,7 +1294,7 @@ } .landing-founder-section blockquote { - font-family: 'Bricolage Grotesque', sans-serif; + font-family: var(--lp-font-display); font-size: 1.25rem; font-weight: 500; line-height: 1.6; @@ -1271,32 +1310,125 @@ padding-left: 1.25rem; } -/* ---- CTA ---- */ +/* ---- CTA (drenched) ---- */ .landing-cta-section { - text-align: center; - padding: 5rem 2rem; + padding: 6rem 2rem; background: var(--lp-bg-alt); } +.landing-cta-section.landing-cta-drench { + background: var(--lp-accent); + color: #0a1430; + padding: 7rem 2rem; + position: relative; + overflow: hidden; +} + +.landing-cta-section.landing-cta-drench::before { + content: ''; + position: absolute; + inset: 0; + background: + radial-gradient(80% 60% at 100% 0%, rgba(255, 255, 255, 0.18), transparent 60%), + radial-gradient(60% 80% at 0% 100%, rgba(13, 15, 21, 0.18), transparent 60%); + pointer-events: none; +} + .landing-cta-inner { - max-width: 520px; + max-width: 1100px; margin: 0 auto; + position: relative; + z-index: 1; +} + +.landing-cta-eyebrow { + display: flex; + align-items: center; + gap: 0.9rem; + font-family: var(--lp-font-display); + font-size: 0.9rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #0a1430; + margin-bottom: 1.5rem; +} + +.landing-cta-eyebrow::before { + content: ''; + width: 40px; + height: 2px; + background: #0a1430; + flex-shrink: 0; + opacity: 0.55; } .landing-cta-section h2 { - font-family: 'Bricolage Grotesque', sans-serif; - font-size: clamp(1.75rem, 3.5vw, 2.5rem); + font-family: var(--lp-font-display); + font-size: clamp(2.25rem, 5vw, 4rem); font-weight: 800; - color: var(--lp-text-heading); - letter-spacing: -0.03em; - margin-bottom: 0.75rem; + color: #0a1430; + letter-spacing: -0.04em; + line-height: 1.02; + margin: 0 0 1.25rem; + max-width: 22ch; } .landing-cta-section h2 + p { + font-size: 1.15rem; + color: #0a1430; + opacity: 0.78; + margin-bottom: 2.5rem; + line-height: 1.55; + max-width: 44ch; +} + +.landing-cta-actions { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; +} + +.landing-btn-cta-invert { + display: inline-flex; + align-items: center; + justify-content: center; font-size: 1rem; - color: var(--lp-text-secondary); - margin-bottom: 2rem; - line-height: 1.7; + font-weight: 600; + color: var(--lp-accent); + text-decoration: none; + padding: 0.95rem 2rem; + border-radius: 8px; + background: #ffffff; + transition: transform 0.25s ease-out, box-shadow 0.25s ease-out; + letter-spacing: -0.01em; + box-shadow: 0 1px 0 rgba(13, 15, 21, 0.08); +} + +.landing-btn-cta-invert:hover { + transform: translateY(-2px); + box-shadow: 0 12px 28px rgba(10, 20, 48, 0.25); +} + +.landing-btn-cta-ghost { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 1rem; + font-weight: 600; + color: #0a1430; + text-decoration: none; + padding: 0.95rem 1.5rem; + border-radius: 8px; + border: 1px solid rgba(10, 20, 48, 0.35); + background: transparent; + transition: background 0.25s, border-color 0.25s; +} + +.landing-btn-cta-ghost:hover { + background: rgba(10, 20, 48, 0.06); + border-color: rgba(10, 20, 48, 0.55); } .landing-cta-email-form { @@ -1317,7 +1449,7 @@ border: 1px solid var(--lp-border); background: var(--lp-card); color: var(--lp-text-heading); - font-family: 'IBM Plex Sans', sans-serif; + font-family: var(--lp-font-body); font-size: 0.9rem; outline: none; transition: border-color 0.3s, box-shadow 0.3s; @@ -1605,8 +1737,18 @@ gap: 2rem; } - .landing-problem-grid { - grid-template-columns: 1fr; + .landing-problem-headline { + position: static; + } + + .landing-problem-item { + grid-template-columns: 3rem 1fr; + column-gap: 1rem; + padding: 1.5rem 0; + } + + .landing-problem-num { + padding-top: 0.5rem; } .landing-zigzag { @@ -1628,19 +1770,22 @@ order: 2; } - .landing-features-grid { - grid-template-columns: 1fr; - } - - .landing-features-grid .landing-feature-card:nth-child(4), - .landing-features-grid .landing-feature-card:nth-child(5) { - grid-column: auto; - } - .landing-feature-highlight { - flex-direction: column; + grid-template-columns: 1fr; gap: 1rem; - padding: 1.5rem; + padding: 1.5rem 0; + } + + .landing-feature-highlight-marker { + padding-right: 0; + border-right: none; + font-size: 1.75rem; + } + + .landing-feature-row { + grid-template-columns: 1fr; + row-gap: 0.6rem; + padding: 1.5rem 0; } .landing-pricing-grid { @@ -1669,16 +1814,8 @@ } .landing-equation-section { - padding: 3rem 1.25rem; - } - - .landing-brand-equation { - font-size: 1.1rem; - gap: 0.4rem; - } - - .landing-eq-item { - padding: 0.3rem 0.6rem; + padding: 5rem 1.25rem 4.5rem; + text-align: left; } .landing-founder-section {