// SitePages2.jsx — Pricing, Customers, Careers, Partners, Philosophy // Dispatcher reads window.PAGE2 (set per shell) and wraps Nav + Footer. // ── Shared page hero ── const S2Hero = ({ eyebrow, title, sub, stats }) => { const ref = React.useRef(null); const [pos, setPos] = React.useState({ x: 50, y: 30 }); const onMove = e => { const r = ref.current.getBoundingClientRect(); setPos({ x: ((e.clientX - r.left) / r.width) * 100, y: ((e.clientY - r.top) / r.height) * 100 }); }; return (
{eyebrow}

{title}

{sub}

{stats && (
{stats.map(s => (
{s.v}
{s.l}
))}
)}
); }; const S2SectionHead = ({ eyebrow, title, sub, center }) => (

{eyebrow}

{title}

{sub &&

{sub}

}
); const S2Edge = () =>
; const S2FAQ = ({ items }) => { const [open, setOpen] = React.useState(0); return (
{items.map((it, i) => (

{it.a}

))}
); }; // ── Numbered step row: [{ t, d }] ── const S2Steps = ({ items, min = '220px' }) => (
{items.map((s, i) => (
{String(i + 1).padStart(2, '0')} {s.meta && {s.meta}}

{s.t}

{s.d}

))}
); // ── Icon card grid: [{ i, t, d }] ── const S2IconCards = ({ items, cols = 3, min = '244px' }) => (
{items.map(b => (
e.currentTarget.style.borderColor = '#34343a'} onMouseLeave={e => e.currentTarget.style.borderColor = '#23252a'}>

{b.t}

{b.d}

))}
); // ── Check list grid: ['text', ...] ── const S2Checks = ({ items, cols = 3, min = '244px' }) => (
{items.map(f => (
{f}
))}
); // ── Testimonial: role only; company withheld under NDA (same tag as the home carousel) ── const S2NdaTag = () => ( COMPANY WITHHELD · NDA ); // ═══════════════════════════════ PRICING ═══════════════════════════════ const PLANS = [ { name: 'Standard', kind: 'One-off penetration testing', accent: false, who: 'For teams that need a point-in-time test for a compliance audit, a customer request, or a major release.', price: 'Custom quote', unit: 'fixed fee per engagement', cta: 'Get a quote', features: [ 'Quote within 48 hours of the scoping call', 'Manual testing by certified testers', 'Dedicated engagement manager', 'Findings shared as they are confirmed', 'Executive summary and per-finding technical report', 'Compliance-ready attestation letter', 'Free retesting within 90 days', ], }, { name: 'Continuous', kind: 'Penetration testing as a service', accent: true, badge: 'Recommended', who: 'For teams that want a standing program: testing that keeps pace with releases, with attestations refreshed through the year.', price: 'Custom quote', unit: 'annual program', cta: 'Get a quote', more: { label: 'How continuous testing works', href: '/services/ptaas/' }, lead: 'Everything in Standard, plus', features: [ 'Testing of new features, endpoints, and APIs before each release', 'Quarterly retest of high-risk surfaces', 'Attestation letter refreshed every quarter', 'The same testing team across every cycle', 'Findings delivered into your ticket system', 'Program dashboard with findings pipeline and time-to-fix', 'Retesting included for the contract term', ], }, ]; const PlanRow = ({ icon, text, strong, acc }) => (
{text}
); const PlanCard = ({ p }) => { const [h, setH] = React.useState(false); const acc = p.accent; return (
setH(true)} onMouseLeave={() => setH(false)} style={{ position: 'relative', overflow: 'hidden', display: 'flex', flexDirection: 'column', background: acc ? '#141516' : '#0f1011', border: `1px solid ${acc ? (h ? 'rgba(130,143,255,0.6)' : 'rgba(94,105,210,0.45)') : (h ? '#34343a' : '#23252a')}`, borderRadius: 16, padding: 32, transition: 'border-color 200ms ease-out, transform 220ms ease-out', transform: h ? 'translateY(-2px)' : 'none', }}>
{acc &&
} ); }; const PricingPage = () => ( <>
{PLANS.map(p => )}

Red teaming, TIBER-EU and CBEST exercises, and multi-year programs are scoped individually.{' '} Get a quote

{[ { t: 'Changes the price', icon: 'plus', color: '#828fff', wash: 'rgba(94,105,210,0.12)', line: 'rgba(94,105,210,0.3)', items: ['Size of the surface: endpoints, screens, hosts, accounts', 'Number of user roles and tenants to test across', 'Authenticated versus unauthenticated testing', 'Depth requested: a checklist pass or a full attack chain', 'Compressed timelines that need more testers in parallel'] }, { t: 'Does not change the price', icon: 'check', color: '#27a644', wash: 'rgba(39,166,68,0.12)', line: 'rgba(39,166,68,0.3)', items: ['How many findings we uncover', 'Retesting your fixes within the window', 'The readout call and follow-up questions', 'The attestation letter', 'Our day rate, which is the same for every client'] }, ].map(col => (

{col.t}

{col.items.map(it => (
{it}
))}
))}
); // ═══════════════════════════════ CUSTOMERS ═══════════════════════════════ // Testimonials show the person's role only; the company is withheld under NDA. const TESTIMONIALS_2 = [ { q: 'We had used three other vendors before GreySurface. None of them found the cross-tenant issue GreySurface surfaced in the first week, and the report was written for the engineers who had to fix it.', n: 'VP Engineering' }, { q: 'They reached Domain Admin in under four hours and then kept going, to our backup vault and our signing keys. That single engagement reshaped our detection roadmap.', n: 'Head of Security' }, { q: 'The continuous program means every release gets a real person looking at it. Our auditors like the quarterly attestations. Our engineers like that findings come with a working reproduction.', n: 'CTO and co-founder' }, { q: 'Straightforward from the first call. One point of contact, a fixed price, and a report we could act on. We have re-engaged every year since.', n: 'Director of Infrastructure' }, ]; const CustomersPage = () => ( <> {/* Industries: descriptive only. Client names are never shown; most engagements are under NDA. */}

Most engagements are covered by NDA, so we do not publish client names or logos.

{/* Testimonials */}
{TESTIMONIALS_2.map((t, i) => (

“{t.q}”

{t.n.split(' ').map(w => w[0]).join('').slice(0,2)}
{t.n}
))}
{/* Case study teasers */}
{[ { tag: 'Fintech · Web and API', stat: '11 criticals', d: 'A pre-Series-C platform went to audit clean after we chained an IDOR into full cross-tenant account takeover, and verified the fix in 36 hours.' }, { tag: 'Healthcare · Internal', stat: '4h to Domain Admin', d: 'An assumed-breach engagement reached Domain Admin, then the patient-record store, in an afternoon. The follow-up session produced nine new detections.' }, { tag: 'Dev tools · Continuous', stat: '30% of cycles', d: 'A continuous program caught authentication regressions in roughly a third of release cycles, before they reached production.' }, ].map(c => ( { e.currentTarget.style.background = '#141516'; e.currentTarget.style.borderColor = '#34343a'; }} onMouseLeave={e => { e.currentTarget.style.background = '#0f1011'; e.currentTarget.style.borderColor = '#23252a'; }}> {c.tag}
{c.stat}

{c.d}

))}
); // ═══════════════════════════════ CAREERS ═══════════════════════════════ const ROLES_2 = [ { t: 'Web / API Penetration Tester', loc: 'Remote', type: 'Full-time', tags: ['Burp Pro', 'GraphQL', 'OSWE'] }, { t: 'Active Directory & Identity Lead', loc: 'Remote', type: 'Full-time', tags: ['BloodHound', 'ADCS', 'CRTO'] }, { t: 'Cloud & Kubernetes Operator', loc: 'Remote', type: 'Full-time', tags: ['Pacu', 'CloudFox', 'CKS'] }, { t: 'Red Team Operator', loc: 'Remote', type: 'Full-time', tags: ['Sliver', 'OPSEC', 'OSEP'] }, { t: 'Mobile & Reversing Specialist', loc: 'Remote', type: 'Full-time', tags: ['Frida', 'Ghidra', 'MASVS'] }, { t: 'Report Engineer (Technical Writer)', loc: 'Remote', type: 'Full-time', tags: ['Writing', 'CVSS', 'Markdown'] }, ]; const Role2 = ({ t, loc, type, tags }) => { const [h, setH] = React.useState(false); return ( setH(true)} onMouseLeave={() => setH(false)} style={{ display: 'block', textDecoration: 'none', background: h ? '#141516' : '#0f1011', border: `1px solid ${h ? '#34343a' : '#23252a'}`, borderRadius: 12, padding: 22, position: 'relative', overflow: 'hidden', transition: 'all 220ms', transform: h ? 'translateY(-2px)' : 'translateY(0)', }}>

{t}

{type}
{loc}
{tags.map(tag => {tag})}
Apply through the contact form
); }; const CareersPage = () => ( <>
{ROLES_2.map(r => )}

Don't see your specialism? Send us a write-up of your work through the contact form and tell us what you do best.

); // ═══════════════════════════════ PARTNERS ═══════════════════════════════ const PartnersPage = () => ( <>
{[ 'Co-scope the engagement with your team and your client.', 'Our team tests manually, on your timeline.', 'You receive a report, white-labeled to your brand if you want it.', 'We support the readout; you keep the relationship and the renewal.', ].map((s, i) => (
{i + 1} {s}
))}

What partners get

{['Partner margins on every engagement', 'White-label or co-branded reporting', 'A named partner contact', 'Deal-registration protection', 'Joint scoping support before the sale', 'NDA and MSA handled centrally'].map(f => (
{f}
))}
e.currentTarget.style.background = '#828fff'} onMouseLeave={e => e.currentTarget.style.background = '#5e6ad2'}>Become a partner
); // ═══════════════════════════════ PHILOSOPHY ═══════════════════════════════ const PhilosophyPage = () => ( <>
{[ { t: 'Findings should get fixed', d: 'We write reports for the engineer who has to ship the fix, with reproduction steps, root cause, and remediation guidance. Then we retest until it is closed.' }, { t: 'People find what tools miss', d: 'Automated tools match patterns. Attackers reason. We combine individually low findings into the path that leads to a breach, because that is the path a real attacker takes.' }, { t: 'Continuity from scoping to sign-off', d: 'The tester who scopes your engagement also tests it and signs the report.' }, { t: 'Test in the open', d: 'We coordinate with your team, allowlist our traffic, and tell you exactly what we did.' }, { t: 'Say the uncomfortable thing', d: 'If the budget only buys shallow coverage of everything, we will say so and recommend testing what matters most in depth instead.' }, ].map((p, i) => (
{String(i + 1).padStart(2, '0')}

{p.t}

{p.d}

))}
{[ 'Take engagements we cannot staff with experienced testers.', 'Hand your work to a less experienced team behind the scenes.', 'Pad a report with scanner output to inflate the finding count.', 'Sell you a platform subscription instead of an accountable person.', ].map((l, i) => (
{l}
))}

Our commitments in writing

None of this is marketing copy. Confidentiality, the rules of engagement, who performs the testing, and what you own at the end are written into every statement of work and into our{' '} terms of service.

); // ── Dispatcher ── const PAGE2_MAP = { pricing: PricingPage, customers: CustomersPage, careers: CareersPage, partners: PartnersPage, philosophy: PhilosophyPage, }; const Site2App = () => { const which = window.PAGE2; const Page = PAGE2_MAP[which] || (() => null); return (
); }; Object.assign(window, { S2Hero, S2SectionHead, S2Edge, S2FAQ, S2Steps, S2IconCards, S2Checks, S2NdaTag, PricingPage, PlanCard, CustomersPage, CareersPage, Role2, PartnersPage, PhilosophyPage, Site2App, });