// v1-editorial.jsx — OpenLines landing page. // Editorial / restrained direction: cream paper, italic serif headline, muted // oxblood accent. Fully responsive using Cross-Device Unified Experience // Foundation Tokens (see shared.jsx injection + style.css authoritative block): // desktop (≥ --bp-tablet-landscape 1024px+), tablet (≤1023px / --bp-tablet-landscape), // mobile (≤700px / --bp-mobile + --bp-small 480px for tighter tweaks). // HeroStory swaps to stacked on mobile via useIsMobile (aligns --bp-tablet). (function () { const { WF_CONTENT, PALETTE, ImagePlaceholder, SectionLabel, LiveDot, HeroStory, OLButton, useIsMobile, PricingSection, PhoneTimeValue } = window; const conversations = window.OL_CONVERSATIONS; const serif = `"Iowan Old Style", "Hoefler Text", "Georgia", "Times New Roman", serif`; const sans = `"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif`; const mono = `ui-monospace, SFMono-Regular, Menlo, monospace`; // Inject the responsive stylesheet once. Uses !important to override the // inline styles set on each element below. if (typeof document !== "undefined" && !document.getElementById("v1-responsive-styles")) { const s = document.createElement("style"); s.id = "v1-responsive-styles"; s.textContent = ` /* ───── TABLET ( ≤ 1023px ) ───── */ /* aligns to --bp-tablet-landscape: 1024px (and --bp-tablet 768px for reference) */ @media (max-width: 1023px) { .v1-nav { padding: 22px 32px !important; } .v1-hero { padding: 56px 32px 0 !important; } .v1-hero h1 { font-size: 76px !important; letter-spacing: -2px !important; } .v1-hero .v1-value-prop { font-size: 19px !important; } .v1-section { padding-left: 32px !important; padding-right: 32px !important; } .v1-how h2, .v1-contact h2 { font-size: 48px !important; } .v1-contact-grid { gap: 48px !important; } .v1-contact-col { padding-right: 24px !important; } .v1-trust-card { padding: 48px 40px !important; } .v1-step { gap: 32px !important; } .v1-step-num { font-size: 64px !important; } } /* ───── MOBILE ( ≤ 700px ) ───── */ /* aligns to --bp-mobile: 700px (see also --bp-small: 480px in tokens) */ @media (max-width: 700px) { .v1-nav { padding: 18px 20px !important; } .v1-nav-links { display: none !important; } .v1-brand-text { font-size: 18px !important; } .v1-hero { padding: 36px 20px 0 !important; } .v1-hero h1 { font-size: 48px !important; letter-spacing: -1.4px !important; } .v1-hero .v1-value-prop { font-size: 16px !important; margin-bottom: 28px !important; } .v1-hero .v1-ctas { flex-direction: column !important; gap: 10px !important; align-items: stretch !important; } .v1-hero .v1-ctas > a { width: 100% !important; box-sizing: border-box !important; } .v1-hero-text { margin-bottom: 40px !important; } .v1-hero-story-wrap { height: 720px !important; margin-bottom: 40px !important; } .v1-section { padding-left: 20px !important; padding-right: 20px !important; padding-top: 60px !important; padding-bottom: 60px !important; } .v1-how h2 { font-size: 32px !important; letter-spacing: -0.8px !important; margin-bottom: 40px !important; } .v1-step { grid-template-columns: 56px 1fr !important; gap: 16px !important; padding: 24px 0 !important; } .v1-step-num { font-size: 40px !important; } .v1-step-title { font-size: 20px !important; grid-column: 1 / -1 !important; margin-top: 4px !important; } .v1-step-body { font-size: 15px !important; grid-column: 1 / -1 !important; } .v1-trust-card { padding: 36px 24px !important; } .v1-trust-card h2 { font-size: 28px !important; letter-spacing: -0.6px !important; } .v1-trust-card p { font-size: 15px !important; margin-bottom: 32px !important; } .v1-trust-grid { grid-template-columns: 1fr !important; gap: 32px !important; } .v1-who { grid-template-columns: 1fr !important; gap: 40px !important; } .v1-who h2 { font-size: 30px !important; letter-spacing: -0.6px !important; } .v1-who p { font-size: 15px !important; } .v1-who li { font-size: 16px !important; } .v1-founder { grid-template-columns: 1fr !important; gap: 20px !important; max-width: 100% !important; } .v1-founder-portrait { width: 220px !important; height: auto !important; } .v1-founder p { font-size: 18px !important; } .v1-contact h2 { font-size: 36px !important; letter-spacing: -0.9px !important; } .v1-contact p { font-size: 16px !important; } .v1-contact-grid { grid-template-columns: 1fr !important; gap: 56px !important; } .v1-contact-col { padding: 0 !important; border-right: none !important; border-bottom: 1px solid rgba(36,28,18,0.18) !important; padding-bottom: 56px !important; } .v1-contact-col:last-child { border-bottom: none !important; padding-bottom: 0 !important; } .v1-footer { padding: 24px 20px !important; flex-direction: column !important; align-items: flex-start !important; gap: 6px !important; } } `; document.head.appendChild(s); } function V1Editorial({ buttonVariant = "block", emailMode = "borderless" }) { const isMobile = useIsMobile(768); /* aligns to --bp-tablet from foundation tokens */ return (
{WF_CONTENT.valueProp}
{s.body}
An answering service that overpromises is worse than one that's honest about its limits.
{d.body}
{WF_CONTENT.forWhoBody}
"{WF_CONTENT.founder.note}"
Send a quick note and we'll set up a 15-minute call where you can listen to the agent answer a sample of your own questions.
Update your script, tweak your business profile, or just ask a question. We read every message and reply the same day.