// /for hub + 6 vertical pages

const {
  SubHero: _SH, ObservationGrid: _OG, ProcessRail: _PR, StatRow: _SR,
  DeliverablesList: _DL, FaqList: _FL, FitLine: _FT, SubCTA: _SC, HubGrid: _HG
} = window;

// ========================================================================
// /for — hub
// ========================================================================

const ForHub = () => (
  <React.Fragment>
    <SubHero
      eyebrow="Who we work with"
      h2Line1="Same methodology."
      h2Line2="Different application."
      body="Signal-based outbound and CRM enrichment work across industries and CRMs. The specifics matter though. How you target a Series A startup isn't how you approach a professional services firm. How enrichment writes back to Salesforce isn't how it writes back to Dataverse. Six playbooks below. Pick the one that sounds like you."
      sig="The list is the message. The CRM is how the list gets built."
    />
    <HubGrid columns={3} cards={[
      {
        eyebrow:'01 B2B SaaS',
        h3:'Defined ICP, empty CRM.',
        body:"The ICP is clear. The CRM is half-filled. SDRs are researching instead of selling, and the accounts getting outreach either moved on, don't actually fit, or aren't in a buying moment right now. Enriched data, signal-based lists, human-written sequences per segment.",
        stats:'signal-based · committee mapping · human copy',
        cta:'See the B2B SaaS playbook',
        href:'#/for/b2b-saas'
      },
      {
        eyebrow:'02 Series A',
        h3:'Pipeline before the first SDR hire.',
        body:"Capital just landed, the board wants pipeline, and hiring an SDR is three months to fill plus three to ramp. We take the first 10–20 closed deals, read the pattern, and turn it into a system your founder or first AE can run now.",
        stats:'founder-voice · ICP validation · 3–4 wk to meetings',
        cta:'See the Series A playbook',
        href:'#/for/series-a-startups'
      },
      {
        eyebrow:'03 Professional services',
        h3:'Sounds like a partner, not a rep.',
        body:"Consulting, legal, accounting, advisory. Referrals built the firm. Referrals won't scale it. What works here is timing, not volume. New CFOs, regulatory shifts, M&A activity, market expansion. Reach the right person at the moment the signal creates the need.",
        stats:'signal-timed · stakeholder mapping · partner tone',
        cta:'See the professional services playbook',
        href:'#/for/professional-services'
      },
      {
        eyebrow:'04 Salesforce',
        h3:'Direct API write-back, custom objects.',
        body:"Thousands of accounts, a lot of them missing direct emails, phone numbers, or current titles. Single-source tools cap at 40–50% coverage. Our waterfall runs multiple providers in sequence, validates everything, and writes back through the Salesforce API. Custom objects, custom fields, no Dataloader.",
        stats:'70%+ fill · direct API · custom objects',
        cta:'See the Salesforce playbook',
        href:'#/for/salesforce-teams'
      },
      {
        eyebrow:'05 HubSpot',
        h3:"Fields HubSpot's enrichment misses.",
        body:"HubSpot's native enrichment gives you industry and employee count. It doesn't give you direct emails, cell phones, or technographics. Our waterfall does, writes back through the API across all tiers, and coordinates with Operations Hub dedup and workflows if you have them.",
        stats:'all tiers · Ops Hub compatible · workflow-safe',
        cta:'See the HubSpot playbook',
        href:'#/for/hubspot-teams'
      },
      {
        eyebrow:'06 Dynamics 365',
        h3:'Native Dataverse write-back.',
        body:"Most enrichment vendors treat D365 like an afterthought. Export your data, run it through a tool, hand you a spreadsheet to import. We connect to Dataverse directly, map custom entities, and write back in place. Same waterfall, built for the Microsoft ecosystem.",
        stats:'Dataverse · custom entities · Power Automate',
        cta:'See the Dynamics 365 playbook',
        href:'#/for/dynamics-365-teams'
      }
    ]}/>
    <section style={{background:'var(--bone)', padding:'100px 0', borderBottom:'1px solid var(--rule)'}}>
      <div style={{maxWidth:1200, margin:'0 auto', padding:'0 40px', display:'grid', gridTemplateColumns:'260px 1fr', gap:80}} className="two-col">
        <div style={{position:'sticky', top:100, alignSelf:'start'}}>
          <div style={{fontFamily:'var(--mono)', fontSize:11, letterSpacing:'0.14em', textTransform:'uppercase', color:'var(--ink-3)', display:'flex', alignItems:'center', gap:10, marginBottom:20}}>
            <span style={{width:5, height:5, borderRadius:'50%', background:'var(--accent)'}}/>Don't see your industry?
          </div>
          <h2 style={{fontFamily:'var(--serif)', fontSize:36, lineHeight:1.08, letterSpacing:'-0.02em', fontWeight:400, margin:0}}>
            Signal-based outbound works wherever the ICP is definable.
          </h2>
        </div>
        <div>
          <p style={{fontFamily:'var(--serif)', fontSize:22, lineHeight:1.55, color:'var(--ink-2)', margin:0}}>
            If you sell B2B, have a real sense of what your best customers look like, and the sales cycle is longer than a single touch, the methodology applies. The free audit is the fastest way to find out. Thirty minutes on your CRM, a written report inside 24 hours, no pitch attached.
          </p>
          <div style={{fontFamily:'var(--mono)', fontSize:12, letterSpacing:'0.04em', color:'var(--ink-3)', marginTop:32, lineHeight:1.7}}>
            ↳ Or browse the capability stack directly in <a href="#/services" style={{color:'var(--accent)'}}>services</a>.
          </div>
        </div>
      </div>
    </section>
    <SubCTA
      h2Line1="Let's see what's in your data."
      h2Line2="Thirty minutes. Free either way."
      body="Screen-share, live walkthrough, written report inside 24 hours. No pitch attached."
    />
  </React.Fragment>
);

// --- Helper to produce the repeated vertical-page template ---

const VerticalPage = ({ eyebrow, h2Line1, h2Line2, heroBody, sig, obs, steps, stats, deliverables, faqs, fit, ctaLine1, ctaLine2, obsH2, obsIntro, stepsH2, stepsSub, deliverablesH2 }) => (
  <React.Fragment>
    <SubHero eyebrow={eyebrow} h2Line1={h2Line1} h2Line2={h2Line2} body={heroBody} sig={sig}/>
    <ObservationGrid eyebrow="What we see" h2={obsH2} intro={obsIntro} cards={obs}/>
    <ProcessRail eyebrow="How we run it" h2={stepsH2} subhead={stepsSub} steps={steps}/>
    <StatRow eyebrow="Shape of the engagement" stats={stats}/>
    <DeliverablesList eyebrow="What you get" h2={deliverablesH2} items={deliverables}/>
    <FaqList eyebrow="FAQ" items={faqs}/>
    <FitLine text={fit}/>
    <SubCTA h2Line1={ctaLine1} h2Line2={ctaLine2} body="Screen-share, live walkthrough, written report inside 24 hours. No pitch attached."/>
  </React.Fragment>
);

// ========================================================================
// /for/b2b-saas
// ========================================================================

const ForB2BSaaS = () => (
  <VerticalPage
    eyebrow="For · B2B SaaS"
    h2Line1="Targeting built for a defined ICP"
    h2Line2="and an empty CRM."
    heroBody="The ICP is clear. The CRM is half-filled. SDRs are researching instead of selling, and the accounts getting outreach either moved on, don't actually fit, or aren't in a buying moment right now. Enriched data, signal-based lists, and human-written sequences per segment."
    sig="Volume doesn't defeat relevance. It trains the reader against you."
    obsH2="The SaaS outbound problem is rarely a copy problem."
    obsIntro="It's a list problem, a signal problem, and a CRM problem, usually all three. Clean the data, read the right events, and the copy writes itself."
    obs={[
      { tag:'Observation A', h3:'Your CRM is half the battle.', body:'Thousands of accounts, hundreds of open slots in the fields that matter. SDRs spend roughly a third of their week deciding who to even target. That time should belong to the system, not a human.' },
      { tag:'Observation B', h3:'ICP drift is real.', body:"The ICP that closed two years ago isn't the one closing today. The last 10–20 closed-won deals tell you what's actually working. That's the input to signal selection."},
      { tag:'Observation C', h3:'Buying committees, not buyers.', body:'B2B SaaS sells through a committee. The champion opens the door. The technical evaluator kills the deal. The economic buyer signs. Different message, same signal.' },
      { tag:'Observation D', h3:'Signals are ubiquitous in SaaS.', body:'Funding rounds, leadership hires, stack changes, integration launches, new pricing pages. SaaS companies telegraph their buying moments loudly. Read the signals, not the tea leaves.' }
    ]}
    stepsH2="Four steps to a running motion."
    stepsSub="Enrichment, signal mapping, committee mapping, and human-written sequences, in that order."
    steps={[
      { tag:'enrich', h3:'Enrich against the target ICP.', body:'Waterfall across Apollo, ZoomInfo, Cognism, Clearbit, and gap-fillers. 70%+ fill on the records that matter, written back into the CRM in the exact fields your team uses.' },
      { tag:'signals', h3:'Map the signals per segment.', body:"Hires into the role that owns your problem. Funding rounds in the stage and sector you close in. Stack additions that imply you're the next logical tool. These get watched, not guessed."},
      { tag:'committee', h3:'Write for the committee.', body:'Champion, technical evaluator, economic buyer. Three sequences minimum per segment, tied back to the same signal, different angle per role.' },
      { tag:'run', h3:'Run, report, refine.', body:'Dedicated sending domains, weekly seed tests, weekly reporting on reply rate and meeting rate per segment. Refinement is continuous, not a quarterly exercise.' }
    ]}
    stats={[
      { n:'70%+', label:'Target-list fill rate' },
      { n:'3–4 wk', label:'Kickoff to first meetings' },
      { n:'~15%', label:'Reply rate on signal segments' },
      { n:'~95%', label:'Inbox placement' }
    ]}
    deliverablesH2="What ships."
    deliverables={[
      'ICP defined from your closed-won data, not a workshop.',
      'Enriched target list, written back into the CRM natively.',
      'Signal map: which events to watch for, per segment.',
      'Committee map: three roles per segment, with sequences for each.',
      'Dedicated sending infrastructure with warmup and weekly seed tests.',
      'Weekly reporting and a documented motion your AE team can run.'
    ]}
    faqs={[
      { q:"We already have Apollo or ZoomInfo. Do we have to replace it?", a:"No. We keep your existing tool and use the waterfall on top. Your single-source coverage becomes the floor." },
      { q:"How many meetings per week?", a:"It depends on signal volume, not on headcount. Most SaaS engagements see 3–5 qualified meetings per week within the first month, scaling with signal coverage." },
      { q:"Our ICP isn't fully defined. Should we wait?", a:"No. The audit surfaces which parts of the ICP are already there in your closed-won data. Often it's clearer than the team thinks." },
      { q:"Does this replace our SDRs?", a:"It replaces the parts of their job that are wasted time, list-building, research, and targeting. Sends can run with us or get handed to your team once the motion is documented." }
    ]}
    fit="This runs on clean data. See /services/crm-enrichment for the input layer, or /services for the full stack."
    ctaLine1="Want this scoped for your team?"
    ctaLine2="Audit first, decide second."
  />
);

// ========================================================================
// /for/series-a-startups
// ========================================================================

const ForSeriesA = () => (
  <VerticalPage
    eyebrow="For · Series A startups"
    h2Line1="Pipeline before the first SDR hire."
    h2Line2="Board-facing numbers in weeks, not quarters."
    heroBody="Capital just landed, the board wants pipeline numbers, and hiring an SDR is three months to fill plus three to ramp. We take the first 10–20 closed deals, read the pattern, and turn it into a system your founder or first AE can run now. First meetings in about 3–4 weeks."
    sig="Hire the team when the motion is proven. Run this to prove the motion."
    obsH2="Series A is a timing problem."
    obsIntro="The pressure is real. The math for a full SDR team doesn't work yet. The right next move is a documented motion your founder or first AE can run today, that an SDR can inherit cleanly in six months."
    obs={[
      { tag:'Observation A', h3:'Your founder is your best salesperson.', body:"Founders close the first 10–20 deals because they carry the narrative. That narrative is the strongest training data for the outbound voice. We borrow it."},
      { tag:'Observation B', h3:'SDR ramp is a quarter you don\'t have.', body:'Three months to fill the seat, three to six to ramp. That\'s two board meetings of silence on pipeline. Outbound runs in parallel.' },
      { tag:'Observation C', h3:'The ICP is partially discovered.', body:"Closed-won deals tell most of the story. The ones that ghosted tell the rest. We read both and land on the ICP that's actually converting, not the one in the deck."},
      { tag:'Observation D', h3:'Signal selection is narrower.', body:'Early-stage companies don\'t need 20 signals. They need two or three sharp ones. We pick the events that most reliably indicate an in-market moment for your specific wedge.' }
    ]}
    stepsH2="Four steps to a first meeting."
    stepsSub="Founder voice, narrow signals, and a sending motion that runs without a full SDR team."
    steps={[
      { tag:'read', h3:'Read the first 10–20 closed deals.', body:'Industry, stage, role of the buyer, trigger that got them in the door. Pattern emerges inside a week. That becomes the ICP.' },
      { tag:'voice', h3:'Translate the founder voice.', body:"We shadow a few founder calls and read existing outbound that worked. The sequence voice mirrors it. Not a template. Not an AI pastiche. The founder's sentences."},
      { tag:'target', h3:'Narrow signals, tight list.', body:'Two to three signals. A few hundred accounts, not thousands. Enriched to 70%+. The list is small on purpose.' },
      { tag:'ship', h3:'Ship in 3–4 weeks.', body:'Dedicated sending domain, warmed, seed-tested. First meetings on the calendar inside the first month. Board-facing numbers by the next update.' }
    ]}
    stats={[
      { n:'3–4 wk', label:'Kickoff to first meetings' },
      { n:'10–20', label:'Closed deals that train the pattern' },
      { n:'70%+', label:'Fill rate on the target list' },
      { n:'$1.5K', label:'Pilot starting price' }
    ]}
    deliverablesH2="What ships in the first month."
    deliverables={[
      'ICP pattern read from your closed-won deals.',
      'Narrow signal selection, two or three events worth watching.',
      'Target list, enriched and validated, written to your CRM.',
      'Founder-voice sequences, human-written, tied to each signal.',
      'Dedicated sending domain, warmed and verified.',
      'First meetings booked, with a motion your first AE can inherit.'
    ]}
    faqs={[
      { q:"We don't have a CRM yet. Still works?", a:"Yes. We'll run the motion on HubSpot Starter, Pipedrive, or whatever lightweight tool fits. The write-back patterns translate." },
      { q:"Can we run this without a sales hire?", a:"For the first few months, yes. Most Series A teams have a founder and maybe a first AE taking the meetings. That's enough. The SDR comes later, when volume justifies it." },
      { q:"What's the $1.5K pilot?", a:"A bounded first engagement, ICP read, narrow signal selection, one sending domain, one segment. Gets us to first meetings without a long commitment on either side." },
      { q:"How do we know it's working?", a:"Meetings on the calendar is the unambiguous signal. Reply rate on signal segments is the leading indicator. We report both weekly." }
    ]}
    fit="The 90-day reset and pipeline-first pilot on the homepage are the engagements that map to this stage."
    ctaLine1="Want pipeline numbers by the next board meeting?"
    ctaLine2="Start with a thirty-minute audit."
  />
);

// ========================================================================
// /for/professional-services
// ========================================================================

const ForProServices = () => (
  <VerticalPage
    eyebrow="For · Professional services"
    h2Line1="Outbound that sounds like a partner."
    h2Line2="Not a rep."
    heroBody="Consulting, legal, accounting, advisory. Referrals built the firm. Referrals won't scale it. What works here is timing, not volume. New CFOs, regulatory shifts, M&A activity, market expansion. Reach the right person at the moment the signal creates the need."
    sig="Timing is the whole product here."
    obsH2="In professional services, the signal is the sale."
    obsIntro="Nobody calls an advisory firm out of the blue. They call when something changed, a CFO arrived, a regulation shifted, a deal closed, a market opened. Outbound that reads those events and shows up at the right moment works. Outbound that shouts at the wrong moment doesn't."
    obs={[
      { tag:'Observation A', h3:'The tone matters more here.', body:"A partner-tone sequence works. A rep-tone sequence doesn't. The firm's reputation is on every sentence that goes out, so every sentence reads like it came from a partner, not a template."},
      { tag:'Observation B', h3:'Stakeholders, not contacts.', body:"CFO, GC, CEO, board. The person you're talking to is one of several with a say. We map the real picture, not the org-chart stereotype."},
      { tag:'Observation C', h3:'Signals are specific.', body:'New CFO hires. Audit opinion changes. M&A filings. Regulatory shifts in the sector. Geographic expansion. Each one is a discrete event that changes what the firm needs.' },
      { tag:'Observation D', h3:'Volume is a red flag.', body:'A firm that lands 5 new engagements a quarter doesn\'t need 10,000 sends. It needs 50 well-timed conversations. The whole apparatus sizes to that.' }
    ]}
    stepsH2="Four steps, low-volume, high-signal."
    stepsSub="A professional services motion should feel closer to business development than outbound. That's by design."
    steps={[
      { tag:'map', h3:'Map the service lines to signals.', body:'Each service the firm sells has a small number of events that trigger demand. We list them, tier them, and scope a monitoring approach for the top two or three.' },
      { tag:'target', h3:'Enrich the target accounts.', body:'Partner-facing roles: CFO, GC, CEO, COO, and the operating layer beneath each. 70%+ fill on direct contacts, with technographic and firmographic context.' },
      { tag:'write', h3:'Partner-tone sequences.', body:'Each sequence reads like it came from a partner at the firm. Written to one stakeholder, referencing one signal, with a specific hypothesis about what changed for them.' },
      { tag:'route', h3:'Replies route to the right partner.', body:'Responses never go to a shared inbox. Each reply lands on the partner whose name and signature ran the sequence. The hand-off is clean.' }
    ]}
    stats={[
      { n:'Low', label:'Sending volume (on purpose)' },
      { n:'High', label:'Reply quality (measured)' },
      { n:'2–3', label:'Signals watched per service line' },
      { n:'Weekly', label:'Signal and inbox monitoring' }
    ]}
    deliverablesH2="What ships."
    deliverables={[
      'Service-line-to-signal map for the top revenue areas.',
      'Enriched target-account and stakeholder list.',
      'Partner-tone sequences, human-written, signal-specific.',
      'Reply routing to the named partner on each send.',
      'Signal-monitoring setup covering the top two to three events.',
      'Weekly report on signal coverage and conversations opened.'
    ]}
    faqs={[
      { q:"Will this cannibalize our referral channel?", a:"Never seen it. Referrals come from existing relationships. Outbound opens new ones. They run on different timelines and different audiences." },
      { q:"Our partners don't want to be associated with cold email.", a:"Understood. The sequences are hand-written and signal-specific enough that they don't read like cold email. If a partner wouldn't sign it, we don't send it." },
      { q:"What signals work for legal / accounting / consulting?", a:"The specific signals shift by practice, but the pattern is consistent. New leadership, regulatory shifts, deal activity, expansion. We scope these to your service lines on the audit call." },
      { q:"Is this a monthly retainer?", a:"It can be. Most professional services engagements are monthly because signal monitoring is ongoing. Scope depends on how many service lines and how many signals." }
    ]}
    fit="This methodology sits on signal-based outbound. See /services/outbound-strategy for how it's built, or /services for the full stack."
    ctaLine1="Want a service-line-to-signal map?"
    ctaLine2="Start with thirty minutes."
  />
);

// ========================================================================
// /for/salesforce-teams
// ========================================================================

const ForSalesforce = () => (
  <VerticalPage
    eyebrow="For · Salesforce teams"
    h2Line1="Direct API write-back."
    h2Line2="Custom objects included."
    heroBody="Thousands of accounts, a lot of them missing direct emails, phone numbers, or current titles. Single-source tools cap at 40–50% coverage. Our waterfall runs multiple providers in sequence, validates everything, and writes back through the Salesforce API. Custom objects, custom fields, no Dataloader."
    sig="If the data isn't in the CRM, it doesn't exist."
    obsH2="Salesforce is opinionated about its own schema. We respect it."
    obsIntro="Custom objects are where the business lives. Validation rules are there for a reason. Duplicate management matters. We built the write-back to go through the same API patterns the internal admin team already trusts."
    obs={[
      { tag:'Observation A', h3:'Single-source tools cap at 40–50%.', body:'Apollo, ZoomInfo, Cognism, Clearbit. Each one is strong in its sweet spot. None of them cover your whole target list. A waterfall closes the gap.' },
      { tag:'Observation B', h3:'Custom objects matter.', body:"Opportunities, assets, agreements, partner records. The things that make your Salesforce your Salesforce. We write back into those, not around them."},
      { tag:'Observation C', h3:'Dedup rules aren\'t bypassed.', body:'Your admin team built dedup rules for a reason. Write-back runs through them, not around them. Nothing gets in that shouldn\'t.' },
      { tag:'Observation D', h3:'No spreadsheet round-trip.', body:"If the enrichment ends in a spreadsheet, it never lands. Dataloader is how it doesn't land. We skip both."}
    ]}
    stepsH2="Four steps, clean against your org."
    stepsSub="Scoped to your schema, your validation rules, and your dedup logic. Nothing exotic, just done right."
    steps={[
      { tag:'scope', h3:'Scope the objects and fields.', body:'Standard Account, Contact, Lead. Plus whichever custom objects hold the data your AEs actually read. Field mapping is agreed before a single record writes.' },
      { tag:'run', h3:'Run the waterfall.', body:'Providers in sequence. First valid match wins per field. Cost stays at ~$0.10 per record because each provider only charges when it returns the answer.' },
      { tag:'validate', h3:'Validate end-to-end.', body:'Emails validated via SMTP. Phones validated via carrier lookup. Titles cross-checked. Nothing writes until it passes.' },
      { tag:'write', h3:'API write-back.', body:'Direct REST API into your org. Dedup rules honored. Validation rules honored. Records land in the fields your team already uses.' }
    ]}
    stats={[
      { n:'70%+', label:'Fill on the target list' },
      { n:'$0.10', label:'Per record, all-in' },
      { n:'2–4 wk', label:'Kickoff to first write-back' },
      { n:'100%', label:'Native REST API' }
    ]}
    deliverablesH2="What ships into your org."
    deliverables={[
      'Target list scoped and aligned to your ICP.',
      'Enriched records written back into standard and custom objects.',
      'Validated emails, direct dials, titles, firmographic fields.',
      'Field-level documentation of what came from which provider.',
      'Dedup and validation rule compliance verified.',
      'Ongoing refresh cadence (monthly or quarterly) if needed.'
    ]}
    faqs={[
      { q:"Do you need admin access to our org?", a:"Yes, but scoped. A user with API-enabled write access to the objects in scope. No broader admin privileges needed." },
      { q:"Will this break our existing integrations?", a:"No. Write-back goes through the standard REST API that every other tool uses. If Outreach or Salesloft don't break your org, neither do we." },
      { q:"What about Salesforce Data Cloud?", a:"Supported. If Data Cloud is your source of truth, we write there. Most teams still have the AE experience living in standard Sales Cloud, so we usually write there too." },
      { q:"Can we run this without changing our stack?", a:"Yes. We sit behind your existing tools. Apollo and ZoomInfo stay contracted if you want them. The waterfall runs on top." }
    ]}
    fit="Enrichment is the input layer. See /services/outbound-strategy for what runs on top."
    ctaLine1="Want a read on your org's fill rate?"
    ctaLine2="Thirty minutes, live in Salesforce."
  />
);

// ========================================================================
// /for/hubspot-teams
// ========================================================================

const ForHubSpot = () => (
  <VerticalPage
    eyebrow="For · HubSpot teams"
    h2Line1="Fields HubSpot's enrichment misses."
    h2Line2="Filled, at a lower per-record cost."
    heroBody="HubSpot's native enrichment gives you industry and employee count. It doesn't give you direct emails, cell phones, or technographics. Our waterfall does, writes back through the API across all tiers, and coordinates with Operations Hub dedup and workflows if you have them."
    sig="Breeze Intelligence is fine for firmographics. The contact fields are where we live."
    obsH2="HubSpot's native enrichment is a floor, not a ceiling."
    obsIntro="It covers the firmographic basics well. For contact-level data, direct emails, cell phones, current titles, technographic signals, it's thin. The waterfall fills what's missing at a lower per-record cost than Breeze Intelligence, without changing tier."
    obs={[
      { tag:'Observation A', h3:'Native enrichment stops at the firm.', body:'Industry, employee count, estimated revenue. Solid. The contact layer is where teams run out of data.' },
      { tag:'Observation B', h3:'Cost per record matters at scale.', body:"At 10,000 contacts, the difference between Breeze's pricing and our $0.10 shows up in the budget line. Not the feature list, the invoice."},
      { tag:'Observation C', h3:'Operations Hub changes the workflow.', body:"If you have Operations Hub, dedup and workflows are already doing work. We plug into them, don't replace them, and don't fight them."},
      { tag:'Observation D', h3:'All tiers work.', body:"Starter, Professional, Enterprise. The API patterns we use are the ones HubSpot documents for everyone. No Enterprise-only dependencies."}
    ]}
    stepsH2="Four steps, HubSpot-native."
    stepsSub="Nothing exotic. The waterfall runs, the write-back lands, Operations Hub keeps doing its job."
    steps={[
      { tag:'scope', h3:'Scope contacts and fields.', body:'Which contact properties need fill. Which companies need the matching firmographic layer. Field-level mapping agreed before anything writes.' },
      { tag:'run', h3:'Run the waterfall.', body:'Apollo, ZoomInfo, Cognism, Clearbit plus gap-fillers. First valid match wins. Cost stays around $0.10 per record.' },
      { tag:'validate', h3:'Validate.', body:"Emails, phones, titles. All verified before they hit HubSpot. Invalid records don't get a second chance on reputation."},
      { tag:'write', h3:'API write-back.', body:'Contact and company objects. Custom properties respected. Workflow triggers honored. Dedup via Operations Hub if you have it.' }
    ]}
    stats={[
      { n:'70%+', label:'Fill rate on target list' },
      { n:'$0.10', label:'Per record, all-in' },
      { n:'All', label:'HubSpot tiers supported' },
      { n:'Ops Hub', label:'Dedup and workflow compatible' }
    ]}
    deliverablesH2="What ships into your portal."
    deliverables={[
      'Target list scoped to your ICP and sales process.',
      'Enriched contacts and companies written back via API.',
      'Validated emails, direct dials, titles, and firmographic fields.',
      'Custom properties and tech-stack signals filled.',
      'Operations Hub dedup and workflow compatibility verified.',
      'Documented field-level sourcing.'
    ]}
    faqs={[
      { q:"Does this work on Starter?", a:"Yes. The API patterns we use are available on Starter. Higher tiers give you more (workflows, custom objects, Operations Hub dedup) but the baseline write-back works everywhere." },
      { q:"Do we need to drop Breeze Intelligence?", a:"No. Keep it if you like the firmographic side. We fill the contact fields it doesn't. They coexist." },
      { q:"Will this fight with our workflows?", a:"No. Write-back uses the same API that every other HubSpot integration uses. If your workflows work today, they work after." },
      { q:"What about Operations Hub dedup?", a:"It runs as-is. We write through it, not around it. The dedup logic you've built stays the source of truth." }
    ]}
    fit="Enrichment is the input layer. See /services/outbound-strategy for what runs on top."
    ctaLine1="Want a fill-rate read on your portal?"
    ctaLine2="Thirty minutes, live in HubSpot."
  />
);

// ========================================================================
// /for/dynamics-365-teams
// ========================================================================

const ForDynamics = () => (
  <VerticalPage
    eyebrow="For · Dynamics 365 teams"
    h2Line1="Native Dataverse write-back."
    h2Line2="No spreadsheet round-trip."
    heroBody="Most enrichment vendors treat D365 like an afterthought. Export your data, run it through a tool, hand you a spreadsheet to import. We connect to Dataverse directly, map custom entities, and write back in place. Same waterfall, built for the Microsoft ecosystem."
    sig="If it ends in a CSV, it never lands."
    obsH2="Dynamics deserves first-class enrichment, not an export job."
    obsIntro="Dataverse is the platform. Power Automate is the glue. Security roles actually matter. Vendors who treat D365 like a Salesforce clone miss what makes the stack work, and the hand-off always ends in a spreadsheet nobody imports."
    obs={[
      { tag:'Observation A', h3:'Dataverse is the source of truth.', body:"The write-back goes there. Not into a sandbox, not into a staging table, into the same Dataverse entities the sales team reads."},
      { tag:'Observation B', h3:'Custom entities are the business.', body:'Partner records, asset records, contract records. Whatever your org extended. We map to them and write back natively.' },
      { tag:'Observation C', h3:'Power Automate is an option, not a dependency.', body:'If you want post-write workflows to trigger, we hand off to Power Automate cleanly. If you don\'t, the write-back stands alone.' },
      { tag:'Observation D', h3:'Security roles matter.', body:'We operate inside a scoped security role, not as a global admin. Writes are scoped to the entities in scope, audited, and reversible.' }
    ]}
    stepsH2="Four steps, Dataverse-native."
    stepsSub="Same waterfall as everyone else. Different write-back target. No CSV in the middle."
    steps={[
      { tag:'scope', h3:'Scope entities and fields.', body:'Standard Account, Contact, Lead. Plus whichever custom entities your team uses. Field-level mapping agreed up front.' },
      { tag:'run', h3:'Run the waterfall.', body:'Waterfall across providers as elsewhere. Cost stays around $0.10 per record. Validation on every field before write.' },
      { tag:'write', h3:'Write into Dataverse.', body:'Direct Dataverse API. Custom entities respected. Security roles scoped. Nothing routes through a spreadsheet.' },
      { tag:'automate', h3:'Hand off to Power Automate (optional).', body:'If you want post-write flows, task creation, assignment, notification, Power Automate takes it from there. We document the handoff.' }
    ]}
    stats={[
      { n:'Direct', label:'Dataverse API write-back' },
      { n:'70%+', label:'Fill rate on target list' },
      { n:'$0.10', label:'Per record, all-in' },
      { n:'Custom', label:'Entity mapping supported' }
    ]}
    deliverablesH2="What ships into Dataverse."
    deliverables={[
      'Target list scoped and aligned to your ICP.',
      'Enriched records written natively into standard and custom entities.',
      'Validated emails, direct dials, titles, and firmographic fields.',
      'Security-role scoped write-back with full audit trail.',
      'Power Automate handoff documented if downstream flows are used.',
      'Field-level documentation of provider sourcing.'
    ]}
    faqs={[
      { q:"Our D365 is on-prem. Does this work?", a:"On-prem and hybrid are supported with a Dataverse gateway. Cloud-native D365 is the easier path, but both work." },
      { q:"Do we need to give up our existing tools?", a:"No. If you're using Microsoft Sales Copilot, ZoomInfo's D365 connector, or anything else, the waterfall complements them. Your contracts stay as-is." },
      { q:"What about Microsoft Sales Copilot?", a:"Compatible. Sales Copilot reads from Dataverse. The enriched records we write are exactly what it reads from. Better input, better output." },
      { q:"Can we use this with Dynamics Customer Insights?", a:"Yes. CI-J reads from Dataverse for segmentation. Writing enriched records to Dataverse means your segments build on complete data." }
    ]}
    fit="Enrichment is the input layer. See /services/outbound-strategy for what runs on top."
    ctaLine1="Want a fill-rate read on your Dataverse?"
    ctaLine2="Thirty minutes, live in D365."
  />
);

Object.assign(window, {
  ForHub, ForB2BSaaS, ForSeriesA, ForProServices,
  ForSalesforce, ForHubSpot, ForDynamics
});
