This commit is contained in:
2026-06-13 14:36:27 -05:00
parent 75ece13f80
commit dfd5e744a4
7 changed files with 137 additions and 160 deletions

View File

@@ -542,6 +542,14 @@ h3 {
line-height: 1.38;
}
.hero-local-trust {
max-width: 32rem;
margin: var(--space-2) 0 0;
color: var(--blue);
font-size: var(--step--1);
font-weight: 700;
}
.trust-list,
.check-stack,
.local-strip ul {
@@ -1489,10 +1497,16 @@ h3 {
.pain-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: var(--space-4);
}
@media (min-width: 760px) {
.pain-grid {
grid-template-columns: repeat(3, 1fr);
}
}
.pain-grid article {
padding-block: var(--space-4);
border-top: 1px solid var(--line);
@@ -2789,6 +2803,72 @@ h3 {
color: var(--green);
}
.offer-banner {
display: flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-3) var(--space-4);
border: 1px solid oklch(67% 0.16 147 / 0.62);
border-radius: var(--radius-md);
background: oklch(16% 0.06 147 / 0.18);
color: var(--green);
font-size: var(--step--1);
font-weight: 800;
line-height: 1.4;
}
:root[data-theme="light"] .offer-banner {
background: oklch(90% 0.06 147 / 0.32);
}
.offer-banner-icon {
flex: 0 0 auto;
color: var(--green);
font-size: 1.1rem;
}
.price-subtext {
margin: 0;
color: var(--text-muted);
font-size: var(--step--1);
}
.pricing-included-panel {
display: grid;
gap: var(--space-4);
align-content: start;
padding: clamp(1.25rem, 2vw, 2rem);
border: 1px solid var(--line-soft);
border-radius: var(--radius-md);
background: oklch(12% 0.034 245 / 0.62);
}
:root[data-theme="light"] .pricing-included-panel {
background: oklch(99% 0.006 245 / 0.86);
}
.included-feature-list {
display: grid;
gap: var(--space-3);
list-style: none;
padding: 0;
margin: 0;
}
.included-feature-list li {
display: flex;
align-items: center;
gap: var(--space-3);
color: var(--text-muted);
}
.included-check {
flex: 0 0 auto;
color: var(--green);
font-weight: 800;
font-size: 0.95rem;
}
.plan-summary,
.pricing-note {
margin: 0;
@@ -3264,6 +3344,13 @@ textarea::placeholder {
font-size: var(--step--1);
}
.form-trust-line {
margin: var(--space-2) 0 0;
color: var(--text-dim);
font-size: var(--step--1);
text-align: center;
}
.form-status {
min-height: 1.5rem;
margin: 0;

View File

@@ -4,72 +4,20 @@ import { FormEvent, MouseEvent, useEffect, useState } from "react";
import SiteHeader from "../components/SiteHeader";
import HeroSection from "../components/HeroSection";
import ProblemSection from "../components/ProblemSection";
import ProcessSection from "../components/ProcessSection";
import DeliverabilitySection from "../components/DeliverabilitySection";
import ContinuitySection, { type ContinuityFeature, type FeatureKey } from "../components/ContinuitySection";
import MigrationProcessSection from "../components/MigrationProcessSection";
import PricingSection, { type Plan } from "../components/PricingSection";
import PricingSection from "../components/PricingSection";
import FaqSection from "../components/FaqSection";
import AssessmentSection from "../components/AssessmentSection";
import SiteFooter from "../components/SiteFooter";
type Theme = "dark" | "light";
const pricingSummaries: Record<Plan, string> = {
hosting:
"Core business email hosting with 25 GB mailboxes, custom domain email, and AWS-backed infrastructure.",
managed:
"Managed setup adds rollout planning, DNS validation, migration coordination, and device handoff checks during the assessment.",
};
const continuityFeatures: Record<FeatureKey, ContinuityFeature> = {
buffering: {
title: "Inbound buffering",
copy: "Incoming mail can be buffered before mailbox delivery during maintenance or provider-side disruption.",
proof: [
"Supports planned maintenance windows",
"Keeps delivery flow observable",
"Feeds mailbox delivery after processing",
],
},
sending: {
title: "Outbound sending",
copy: "Amazon SES gives outbound email an authenticated sending path with reputation tooling and clearer operational visibility.",
proof: [
"Separates outbound sending from old shared hosting mail",
"Uses domain authentication as part of setup",
"Makes sending behavior easier to troubleshoot",
],
},
standby: {
title: "Standby failover",
copy: "A standby environment is part of the continuity plan when primary systems need intervention or provider-side work.",
proof: [
"Keeps the fallback path visible",
"Reduces guesswork during incidents",
"Pairs with status checks and local support",
],
},
local: {
title: "Local management",
copy: "Domain records, migration, mailbox changes, device setup, and troubleshooting stay with a local Corpus Christi team.",
proof: [
"One support path for DNS and devices",
"Migration scope is reviewed before work starts",
"Mailbox changes stay tied to the business context",
],
},
};
export default function Page() {
const [menuOpen, setMenuOpen] = useState(false);
const [theme, setTheme] = useState<Theme>("dark");
const [activeFeature, setActiveFeature] = useState<FeatureKey>("buffering");
const [activePlan, setActivePlan] = useState<Plan>("hosting");
const [mailboxes, setMailboxes] = useState(25);
const [mailboxes, setMailboxes] = useState(10);
const [formErrors, setFormErrors] = useState({ name: "", email: "" });
const [formStatus, setFormStatus] = useState("");
const activeFeatureDetails = continuityFeatures[activeFeature];
useEffect(() => {
const storedTheme = window.localStorage.getItem("bes-theme");
@@ -211,19 +159,8 @@ export default function Page() {
<main id="main">
<HeroSection />
<ProblemSection />
<ProcessSection />
<DeliverabilitySection />
<ContinuitySection
activeFeature={activeFeature}
activeFeatureDetails={activeFeatureDetails}
onFeatureChange={setActiveFeature}
/>
<MigrationProcessSection />
<PricingSection
activePlan={activePlan}
mailboxes={mailboxes}
pricingSummaries={pricingSummaries}
onPlanChange={setActivePlan}
onMailboxesChange={setMailboxes}
/>
<FaqSection />