PageSourceSearch

https://www.armorpoint.com/about

html armorpoint.com collected 2026-09-29 10:38:35 UTC 331,809 bytes, 6,731 lines download raw bytes

1<!doctype html>
2<html lang="en" class="dark">
3<head>
4
5<meta charset="utf-8" />
6
7<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/ddae7f9f155b2bbac3f7989a/script.js"></script>
7
8
9<script>
10(function () {
11  var fired = {};
12
13  // ---------------------------------------------------------------------------
14  // Consent decision
15  // ---------------------------------------------------------------------------
16  // We no longer ask CookieYes whether a tag may fire; we decide, and use its
17  // cookie only as the record of what the visitor explicitly chose. CookieYes's
18  // own per-category defaults are `false` for every model, and its US banner
19  // ships no accept control at all, so deferring to it meant US and
20  // rest-of-world visitors could never be measured (see the consent notes).
21  //
22  // The rule, in order:
23  //   1. Global Privacy Control set        -> never fire (a legal opt-out signal,
24  //                                           and CookieYes has respectGPC off).
25  //   2. Visitor explicitly rejected       -> never fire.
26  //   3. Visitor explicitly accepted       -> fire.
27  //   4. No choice yet, EEA/UK/CH visitor  -> do not fire (prior consent required).
28  //   5. No choice yet, anywhere else      -> fire (opt-out model).
29  //
30  // Region comes from the ap_geo cookie, which middleware/geoRegion.js sets from
31  // Cloudflare's CF-IPCountry header. No third-party call, and it survives the
32  // in-memory page cache because headers are per-response. Fallbacks below.
33
34  // EEA + UK + Switzerland: prior consent required for non-essential cookies.
35  var CONSENT_REQUIRED = {
36    AT:1, BE:1, BG:1, HR:1, CY:1, CZ:1, DK:1, EE:1, FI:1, FR:1, DE:1, GR:1,
37    HU:1, IE:1, IT:1, LV:1, LT:1, LU:1, MT:1, NL:1, PL:1, PT:1, RO:1, SK:1,
38    SI:1, ES:1, SE:1, IS:1, LI:1, NO:1, GB:1, CH:1
39  };
40
41  function readCookie(name) {
42    var m = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)'));
43    return m ? decodeURIComponent(m[1]) : '';
44  }
45
46  function consentFromCookie() {
47    var raw = (document.cookie.match(/(?:^|;\s*)cookieyes-consent=([^;]+)/) || [])[1];
48    var map = {};
49    if (raw) {
50      decodeURIComponent(raw).split(',').forEach(function (kv) {
51        var i = kv.indexOf(':');
52        if (i > -1) map[kv.slice(0, i).trim()] = kv.slice(i + 1).trim();
53      });
54    }
55    return map;
56  }
57
58  function consentRequired() {
59    var cc = (readCookie('ap_geo') || '').toUpperCase();
60    if (/^[A-Z]{2}$/.test(cc)) return !!CONSENT_REQUIRED[cc];
61    // No server-side geo (header absent, or local dev without Cloudflare in
62    // front). Timezone is a decent proxy and needs no network call. It
63    // over-includes a little (Europe/Moscow, Europe/Istanbul), which errs safe.
64    try {
65      var tz = (Intl.DateTimeFormat().resolvedOptions().timeZone || '');
66      if (tz) return tz.indexOf('Europe/') === 0;
67    } catch (e) {}
68    // Nothing to go on: fail closed, which is the behaviour we had before.
69    return true;
70  }
71
72  function gpcOn() {
73    try { return navigator.globalPrivacyControl === true; } catch (e) { return false; }
74  }
75
76  // '' = no explicit choice, 'yes' / 'no' = the visitor chose.
77  function choice(category, ev) {
78    if (ev && ev.detail) {
79      if ((ev.detail.accepted || []).indexOf(category) > -1) return 'yes';
80      if ((ev.detail.rejected || []).indexOf(category) > -1) return 'no';
81    }
82    var v = consentFromCookie()[category];
83    return v === 'yes' ? 'yes' : (v === 'no' ? 'no' : '');
84  }
85
86  function shouldFire(category, ev) {
87    if (gpcOn()) return false;
88    var c = choice(category, ev);
89    if (c === 'yes') return true;
90    if (c === 'no') return false;
91    return !consentRequired();
92  }
93
94  // Exposed so other consent-gated tags (e.g. the homepage-only Hotjar tag,
95  // injected by templates/hotjar.js) share this one decision instead of
96  // reimplementing it and drifting.
97  window.apConsent = {
98    shouldFire: shouldFire,
99    consentRequired: consentRequired,
100    gpc: gpcOn
101  };
102
103  // Analytics: GA4 + Pardot (Account Engagement)
104  function loadAnalytics() {
105    if (fired.analytics) return;
106    fired.analytics = true;
107
108    var ga = document.createElement('script');
109    ga.async = true;
110    ga.src = 'https://www.googletagmanager.com/gtag/js?id=G-XZ55Y8YD1Z';
111    document.head.appendChild(ga);
112    window.dataLayer = window.dataLayer || [];
113    window.gtag = function () { window.dataLayer.push(arguments); };
114    window.gtag('js', new Date());
115    window.gtag('config', 'G-XZ55Y8YD1Z');
116
117    window.piAId = '881372';
118    window.piCId = '166844';
119    window.piHostname = 'pi.pardot.com';
120    var pd = document.createElement('script');
121    pd.async = true;
122    pd.src = (location.protocol === 'https:' ? 'https://pi' : 'http://cdn') + '.pardot.com/pd.js';
123    document.head.appendChild(pd);
124  }
125
126  // Advertisement: StackAdapt + RB2B + GCLID capture
127  function loadAdvertisement() {
128    if (fired.advertisement) return;
129    fired.advertisement = true;
130
131    // StackAdapt universal pixel (retargeting)
132    !function(s,a,e,v,n,t,z){if(s.saq)return;n=s.saq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!s._saq)s._saq=n;n.push=n;n.loaded=!0;n.version='1.0';n.queue=[];t=a.createElement(e);t.async=!0;t.src=v;z=a.getElementsByTagName(e)[0];z.parentNode.insertBefore(t,z)}(window,document,'script','https://tags.srv.stackadapt.com/events.js');saq('ts', 'VsiouhXBELxOfPQk3836cw');
133
134    // RB2B visitor identification (de-anonymization)
135    !function () {var reb2b = window.reb2b = window.reb2b || []; if (reb2b.invoked) return;reb2b.invoked = true;reb2b.methods = ["identify", "collect"]; reb2b.factory = function (method) {return function () {var args = Array.prototype.slice.call(arguments); args.unshift(method);reb2b.push(args);return reb2b;};}; for (var i = 0; i < reb2b.methods.length; i++) {var key = reb2b.methods[i];reb2b[key] = reb2b.factory(key);} reb2b.load = function (key) {var script = document.createElement("script");script.type = "text/javascript";script.async = true; script.src = "https://ddwl4m2hdecbv.cloudfront.net/b/" + key + "/LNKLDHP0XEOJ.js.gz"; var first = document.getElementsByTagName("script")[0]; first.parentNode.insertBefore(script, first);}; reb2b.SNIPPET_VERSION = "1.0.1";reb2b.load("LNKLDHP0XEOJ");}();
136
137    // GCLID capture (Google Ads attribution) -> first-party vf_gclid cookie (30d)
138    (function () {
139      function getParam(name) {
140        try {
141          var nm = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
142          var r = new RegExp('[\\?&]' + nm + '=([^&#]*)').exec(location.search);
143          return r === null ? '' : decodeURIComponent(r[1].replace(/\+/g, ' '));
144        } catch (e) { return ''; }
145      }
146      try {
147        var gclid = getParam('gclid');
148        if (gclid) {
149          var d = new Date(); d.setTime(d.getTime() + 30 * 864e5);
150          var secure = location.protocol === 'https:' ? '; secure' : '';
151          document.cookie = 'vf_gclid=' + gclid + '; expires=' + d.toUTCString() + '; path=/; SameSite=Strict' + secure;
152        }
153      } catch (e) {}
154    })();
155  }
156
157  // Under an opt-out model the tags are already running by the time a visitor
158  // clicks Reject, so honouring that click means reloading into a clean page.
159  // This cannot loop: after the reload the stored choice is 'no', so nothing
160  // fires, so `fired` stays empty and we never reach here again.
161  function handleLateReject(ev) {
162    var cats = ['analytics', 'advertisement'];
163    for (var i = 0; i < cats.length; i++) {
164      if (fired[cats[i]] && choice(cats[i], ev) === 'no') {
165        window['ga-disable-G-XZ55Y8YD1Z'] = true;
166        location.reload();
167        return;
168      }
169    }
170  }
171
172  function apply(ev) {
173    if (shouldFire('analytics', ev)) loadAnalytics();
174    if (shouldFire('advertisement', ev)) loadAdvertisement();
175    handleLateReject(ev);
176  }
177
178  // Re-check whenever CookieYes updates consent (accept / reject / change).
179  document.addEventListener('cookieyes_consent_update', apply);
180
181  // Initial pass. Outside the EEA/UK/CH this fires on the first call. Inside it,
182  // we poll briefly for the consent cookie to be written after CookieYes loads.
183  var tries = 0;
184  (function initialCheck() {
185    apply();
186    if ((!fired.analytics || !fired.advertisement) && tries++ < 20) {
187      setTimeout(initialCheck, 300);
188    }
189  })();
190})();
191</script>
191
192
193<script>
194  window.statuspalWidget = {
195    subdomain: 'armorpoint',
196    badge: { enabled: true, selector: '.sp-status', position: 'top' },
197    banner: { enabled: true, position: 'bottom-left' }
198  };
199</script>
199
200
201<script defer src="https://statuspal.io/js/widget.js" crossorigin="anonymous"></script>
201
202<meta name="viewport" content="width=device-width, initial-scale=1" />
203
204
205<style id="cms-fout-guard">
206  html.cms-pending [data-cms-list],
207  html.cms-pending [data-cms-bind],
208  html.cms-pending [data-cms-bind-html],
209  html.cms-pending [data-cms-bind-tokens] {
210    visibility: hidden !important;
211  }
212</style>
213<script>
214  (function () {
215    var root = document.documentElement;
216    root.classList.add('cms-pending');
217    function reveal() { root.classList.remove('cms-pending'); }
218    document.addEventListener('cms:ready', reveal);
219    window.setTimeout(reveal, 3000);
220  })();
221</script>
221
222
223
224<meta property="og:type" content="website" />
225<meta property="og:site_name" content="ArmorPoint" />
226<meta name="twitter:card" content="summary_large_image" />
227<meta name="theme-color" content="#0B1117" />
228
229
230<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%2218%2018%20190%20194%22%3E%3Cpath%20fill%3D%22%230099DC%22%20d%3D%22M184.9%2C53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8%2C0.6-6.5%2C1.3L36.3%2C53.9c-6.3%2C2.6-10.4%2C8.8-10.4%2C15.3c0%2C90.9%2C66.8%2C135.7%2C84.4%2C135.7c11.3%2C0%2C41.8-17.9%2C63-53.5c4.1-7%2C7.9-14.6%2C11.1-23c0.1-0.2%2C0.1-0.3%2C0.2-0.5C191%2C111.2%2C195%2C91.6%2C195%2C69.3C195.3%2C62.7%2C191.2%2C56.5%2C184.9%2C53.9z%22%2F%3E%3Cpath%20fill%3D%22%23FFFFFF%22%20d%3D%22M184.6%2C128c-0.1%2C0.2-0.1%2C0.3-0.2%2C0.5c-3.2%2C8.4-7%2C16-11.1%2C23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6%2C3.6C80.3%2C102%2C77.4%2C116%2C82%2C127.4c4.6%2C11.3%2C16.4%2C19.4%2C28.7%2C19.4s24.1-7.8%2C28.8-19.1c4.7%2C6.4%2C9.4%2C12.7%2C14.1%2C19.1c-6.7%2C9.4-16.6%2C16.5-27.7%2C19.8c-11.1%2C3.4-22.6%2C2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20%2C9.3-40.3%2C26.7-50c8.6-4.8%2C18.7-6.9%2C28.6-6.4c9.8%2C0.6%2C19.7%2C3.8%2C27.6%2C9.7c8.8%2C6.5%2C15.4%2C15.5%2C21.7%2C24.3c6.9%2C9.7%2C13.6%2C19.5%2C20.8%2C28.9C184%2C127.2%2C184.3%2C127.7%2C184.6%2C128z%22%2F%3E%3C%2Fsvg%3E" />
231<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
232<link rel="preconnect" href="https://fonts.googleapis.com">
233<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
234<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
235<style>
236  /* ============ FOUNDATION ============ */
237  html, body { background: #0B1117; color: #E6ECF3; }
238  /* Smooth scroll for all anchor jumps + sticky-nav offset so jumps land
239     below the 80px sticky header instead of underneath it. */
240  html {
241    scroll-behavior: smooth;
242    scroll-padding-top: 96px;
243  }
244  body {
245    font-family: 'Poppins', system-ui, sans-serif;
246    font-feature-settings: 'ss01', 'cv11';
247    -webkit-font-smoothing: antialiased;
248    -moz-osx-font-smoothing: grayscale;
249    background:
250      radial-gradient(ellipse 80% 50% at 50% -10%, rgba(0,153,220,0.10), transparent 60%),
251      radial-gradient(ellipse 60% 40% at 110% 20%, rgba(158,95,166,0.06), transparent 70%),
252      #0B1117;
253    background-attachment: fixed;
254    /* Prevent rubber-band bounce at page ends from breaking scroll
255       momentum on macOS/iOS. */
256    overscroll-behavior-y: contain;
257  }
258  @media (prefers-reduced-motion: reduce) {
259    html { scroll-behavior: auto; }
260  }
261
262  /* ============ REVEAL-ON-SCROLL ============
263     rev 9 (Katie): DISABLED — fade-up animations felt laggy.
264     Elements with .reveal/.revealed/.reveal-d1/d2/d3 now render
265     visible by default, no opacity tween, no translate. The JS
266     IntersectionObserver still runs (toggling .revealed) but has
267     no visual effect since the CSS treats both states identically. */
268  .reveal,
269  .reveal.revealed {
270    opacity: 1;
271    transform: none;
272    transition: none;
273    will-change: auto;
274  }
275  .reveal-d1,
276  .reveal-d2,
277  .reveal-d3 {
278    transition-delay: 0s;
279  }
280  /* Brand-grade typography overrides */
281  h1, h2, h3, h4 { font-family: 'Poppins', sans-serif; letter-spacing: -0.015em; }
282  .display-h1 { font-weight: 600; letter-spacing: -0.025em; }
283  .label-cap { font-family: 'Poppins', sans-serif; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: #0099DC; font-weight: 500; }
284  .mono { font-family: 'Poppins', sans-serif; }
285
286  /* ============ AP-CARD: refined operational dashboard surface ============ */
287  .ap-card {
288    background: linear-gradient(180deg, #1A2434 0%, #141C28 100%);
289    border: 1px solid #243042;
290    border-radius: 12px;
291    box-shadow:
292      0 1px 0 rgba(255,255,255,0.04) inset,
293      0 24px 48px -24px rgba(0,0,0,0.6);
294    position: relative;
295    overflow: hidden;
296  }
297  .ap-card::before {
298    content: '';
299    position: absolute; top: 0; left: 0; right: 0; height: 1px;
300    background: linear-gradient(90deg, transparent, rgba(0,153,220,0.4), transparent);
301  }
302  .ap-card-flat {
303    background: #141C28;
304    border: 1px solid #243042;
305    border-radius: 12px;
306  }
307
308  /* ============ STATUS PILLS ============ */
309  .pill { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 500;letter-spacing: 0.04em; }
310  .pill-green  { background: rgba(63,191,127,0.12); color: #5DD49A; border: 1px solid rgba(63,191,127,0.25); }
311  .pill-amber  { background: rgba(244,183,64,0.12); color: #F4C870; border: 1px solid rgba(244,183,64,0.25); }
312  .pill-red    { background: rgba(229,72,77,0.14); color: #FF7679; border: 1px solid rgba(229,72,77,0.30); }
313  .pill-cyan   { background: rgba(0,153,220,0.14); color: #4FB8E8; border: 1px solid rgba(0,153,220,0.30); }
314  .pill-muted  { background: rgba(154,167,184,0.08); color: #9AA7B8; border: 1px solid rgba(154,167,184,0.18); }
315
316  /* ============ LIVE INDICATOR ============ */
317  .live-dot { display: inline-block; width: 6px; height: 6px; background: #3FBF7F; border-radius: 999px; box-shadow: 0 0 0 0 rgba(63,191,127,0.6); animation: pulse 2s infinite; }
318  @keyframes pulse {
319    0%   { box-shadow: 0 0 0 0 rgba(63,191,127,0.6); }
320    70%  { box-shadow: 0 0 0 8px rgba(63,191,127,0); }
321    100% { box-shadow: 0 0 0 0 rgba(63,191,127,0); }
322  }
323
324  /* ============ CTAs ============ */
325  .btn-primary {
326    display: inline-flex; align-items: center; gap: 8px;
327    padding: 12px 22px;
328    background: #0099DC;
329    color: #fff; font-weight: 600; font-size: 14px;
330    border-radius: 999px;
331    border: 1px solid rgba(255,255,255,0.06);
332    box-shadow: 0 0 0 1px rgba(0,153,220,0.4), 0 8px 24px -8px rgba(0,153,220,0.5);
333    transition: all .18s ease;
334  }
335  .btn-primary:hover { background: #0084BF; transform: translateY(-1px); box-shadow: 0 0 0 1px rgba(0,153,220,0.5), 0 12px 28px -8px rgba(0,153,220,0.6); }
336  .btn-secondary {
337    display: inline-flex; align-items: center; gap: 6px;
338    color: #E6ECF3; font-weight: 500; font-size: 14px;
339    padding: 12px 4px;
340    border-bottom: 1px solid transparent;
341    transition: all .18s ease;
342  }
343  .btn-secondary:hover { color: #4FB8E8; border-bottom-color: rgba(0,153,220,0.5); }
344
345  /* ============ NAV ============
346     Pill-button hover treatment: filled rounded background appears on
347     hover / focus / when the corresponding megamenu is open. Replaces the
348     previous gradient-underline that scaled in on hover. */
349  .nav-link {
350    color: #C5CDD7; font-size: 15px; font-weight: 500;
351    transition: color .15s ease, background-color .18s ease, border-color .18s ease;
352    position: relative;
353    padding: 7px 13px;
354    border-radius: 8px;
355    border: 1px solid transparent;
356  }
357  .nav-link:hover,
358  .nav-link:focus-visible,
359  .nav-link.active,
360  .megamenu-wrap.is-open > .nav-link {
361    color: #E6ECF3;
362    background-color: #1A2434;     /* ap-card surface — matches the reference screenshot */
363    border-color: rgba(36,48,66,0.8); /* subtle ap-line border so the pill reads on dark bg */
364  }
365  .nav-link:focus-visible {
366    outline: none;
367  }
368
369  /* ============ SECTION NEXT-STEP CTA BLOCKS ============
370     Used at the end of Why ArmorPoint, Five Hubs, and FAQ to make
371     the next step from each section unmistakable. Same component used
372     in 3 places so the page has a learned visual rhythm: "this block
373     = decision point". Soft cyan-tinted panel + brand-gradient top
374     hairline + eyebrow + headline + brand gradient button. */
375  .section-cta {
376    margin-top: 56px;
377    padding: 32px 28px 30px;
378    background: linear-gradient(135deg,
379      rgba(0, 153, 220, 0.06) 0%,
380      rgba(158, 95, 166, 0.04) 100%);
381    border: 1px solid rgba(0, 153, 220, 0.2);
382    border-radius: 14px;
383    position: relative;
384    overflow: hidden;
385    display: flex;
386    flex-wrap: wrap;
387    align-items: center;
388    justify-content: space-between;
389    gap: 20px;
390  }
391  .section-cta::before {
392    content: "";
393    position: absolute;
394    top: 0;
395    left: 24px;
396    right: 24px;
397    height: 1px;
398    background: linear-gradient(90deg,
399      transparent 0%,
400      rgba(0, 153, 220, 0.5) 30%,
401      rgba(158, 95, 166, 0.5) 70%,
402      transparent 100%);
403  }
404  .section-cta-text { flex: 1 1 auto; min-width: 240px; }
405  .section-cta-eyebrow {
406    font-family: 'Poppins', sans-serif;
407    font-size: 11px;
408    font-weight: 500;
409    color: var(--ap-cyan);
410    letter-spacing: 0.18em;
411    text-transform: uppercase;
412    margin: 0 0 8px;
413  }
414  .section-cta-headline {
415    font-family: 'Poppins', sans-serif;
416    font-size: 20px;
417    font-weight: 600;
418    color: var(--ap-text);
419    letter-spacing: -0.01em;
420    line-height: 1.25;
421    margin: 0;
422    max-width: 560px;
423  }
424  .section-cta-action {
425    flex: 0 0 auto;
426  }
427  /* Dual-action variant: two buttons side-by-side inside the same panel.
428     First button is the ghost/secondary action; second is the primary
429     brand-gradient action. Used at the Five Hubs CTA where the buyer
430     chooses between "explore deeper" and "skip ahead and book." */
431  .section-cta-actions {
432    flex: 0 0 auto;
433    display: flex;
434    flex-wrap: wrap;
435    align-items: center;
436    gap: 12px;
437  }
438  .btn-secondary-cta {
439    display: inline-flex;
440    align-items: center;
441    gap: 8px;
442    padding: 11px 21px;        /* 11+1 border = 12px vertical; 21+1 = 22px horiz — matches .btn-grad's 12px/22px */
443    border-radius: 999px;
444    background: transparent;
445    color: var(--ap-text);
446    font-family: 'Poppins', sans-serif;
447    font-weight: 600;          /* match primary CTA weight */
448    font-size: 14px;           /* match primary CTA size */
449    text-decoration: none;
450    border: 1px solid rgba(230, 236, 243, 0.2);
451    transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
452    cursor: pointer;
453    white-space: nowrap;
454  }
455  .btn-secondary-cta:hover {
456    border-color: rgba(0, 153, 220, 0.5);
457    background: rgba(0, 153, 220, 0.06);
458    color: #5BC0F0;
459  }
460  @media (max-width: 640px) {
461    .section-cta { padding: 24px 20px; }
462    .section-cta-headline { font-size: 18px; }
463    .section-cta-actions { width: 100%; }
464    .section-cta-actions a { flex: 1 1 0; justify-content: center; }
465  }
466
467  /* ============ STICKY CTA BAR (rev 10) ============
468     Bottom-anchored glass bar that follows the user through the home
469     page, updating its eyebrow/headline/CTAs based on the section
470     currently in view. Replaces the inline .section-cta cards which
471     used to appear at the end of Platform, How-it-works, and FAQ.
472
473     Visibility rules:
474       - Hidden by default (transform: translateY(120%) — off-screen)
475       - Slides in when body has class .sticky-cta-active
476       - Slides out near final CTA section and footer
477
478     Mobile: stays a bottom bar but stacks vertically; primary CTA
479     stays prominent, headline truncates if needed. */
480  .sticky-cta {
481    position: fixed;
482    left: 50%;
483    bottom: 20px;
484    transform: translate(-50%, 130%);   /* off-screen until activated */
485    width: calc(100% - 32px);
486    max-width: 1180px;
487    z-index: 9990;                       /* below chat FAB (9998), above content */
488    pointer-events: none;                /* re-enabled when active */
489    opacity: 0;
490    transition:
491      transform 480ms cubic-bezier(0.22, 1, 0.36, 1),
492      opacity   320ms cubic-bezier(0.22, 1, 0.36, 1);
493    will-change: transform, opacity;
494  }
495  body.sticky-cta-active .sticky-cta {
496    transform: translate(-50%, 0);
497    opacity: 1;
498    pointer-events: auto;
499  }
500  body.sticky-cta-dismissed .sticky-cta {
501    transform: translate(-50%, 130%) !important;
502    opacity: 0 !important;
503    pointer-events: none !important;
504  }
505  /* Glass card surface — matches the rest of the site's glassmorphism */
506  .sticky-cta-inner {
507    position: relative;
508    display: flex;
509    align-items: center;
510    gap: 32px;
511    padding: 28px 32px 28px 36px;
512    border-radius: 22px;
513    background: linear-gradient(180deg,
514      rgba(26, 36, 52, 0.85) 0%,
515      rgba(11, 17, 23, 0.85) 100%);
516    backdrop-filter: blur(22px) saturate(180%);
517    -webkit-backdrop-filter: blur(22px) saturate(180%);
518    border: 1px solid rgba(0, 153, 220, 0.28);
519    box-shadow:
520      0 1px 0 rgba(255, 255, 255, 0.18) inset,
521      0 0 0 1px rgba(0, 153, 220, 0.08) inset,
522      0 28px 72px -16px rgba(0, 0, 0, 0.88),
523      0 14px 40px -8px rgba(0, 153, 220, 0.32),
524      0 0 64px -20px rgba(0, 153, 220, 0.30);
525  }
526  /* Top accent gleam — same neon edge as other glass cards */
527  .sticky-cta-inner::before {
528    content: '';
529    position: absolute;
530    top: 0; left: 0; right: 0;
531    height: 1px;
532    background: linear-gradient(90deg,
533      transparent 0%,
534      rgba(0, 153, 220, 0.6) 25%,
535      rgba(102, 194, 234, 0.85) 50%,
536      rgba(0, 153, 220, 0.6) 75%,
537      transparent 100%);
538    opacity: 0.9;
539    box-shadow: 0 0 10px rgba(0, 153, 220, 0.4);
540    pointer-events: none;
541  }
542  .sticky-cta-text {
543    flex: 1 1 auto;
544    min-width: 0;
545    display: flex;
546    flex-direction: column;
547    gap: 7px;
548  }
549  .sticky-cta-eyebrow {
550    font-family: 'Poppins', sans-serif;
551    font-size: 13px;
552    font-weight: 600;
553    color: #0099DC;
554    letter-spacing: 0.22em;
555    text-transform: uppercase;
556    margin: 0;
557    transition: opacity 220ms ease;
558  }
559  .sticky-cta-headline {
560    font-family: 'Poppins', sans-serif;
561    font-size: 20px;
562    font-weight: 600;
563    color: #E6ECF3;
564    line-height: 1.3;
565    margin: 0;
566    letter-spacing: -0.012em;
567    /* Truncate at 1 line on smaller widths */
568    white-space: nowrap;
569    overflow: hidden;
570    text-overflow: ellipsis;
571    transition: opacity 220ms ease;
572  }
573  /* Content fade during section change — JS toggles .sticky-cta-swapping */
574  .sticky-cta.sticky-cta-swapping .sticky-cta-eyebrow,
575  .sticky-cta.sticky-cta-swapping .sticky-cta-headline {
576    opacity: 0.3;
577  }
578  .sticky-cta-actions {
579    display: inline-flex;
580    align-items: center;
581    gap: 14px;
582    flex-shrink: 0;
583  }
584  .sticky-cta-secondary,
585  .sticky-cta-primary {
586    display: inline-flex;
587    align-items: center;
588    gap: 10px;
589    font-family: 'Poppins', sans-serif;
590    font-size: 16px;
591    font-weight: 600;
592    border-radius: 999px;
593    padding: 16px 26px;
594    text-decoration: none;
595    transition: all 220ms cubic-bezier(0.22, 1, 0.36, 1);
596    white-space: nowrap;
597  }
598  .sticky-cta-secondary {
599    color: rgba(230, 236, 243, 0.92);
600    background: rgba(255, 255, 255, 0.06);
601    border: 1px solid rgba(255, 255, 255, 0.12);
602  }
603  .sticky-cta-secondary:hover {
604    background: rgba(255, 255, 255, 0.10);
605    border-color: rgba(0, 153, 220, 0.40);
606    color: #FFFFFF;
607  }
608  .sticky-cta-primary {
609    color: #FFFFFF;
610    background: #0099DC;
611    border: 1px solid rgba(0, 153, 220, 0.55);
612    box-shadow:
613      0 0 0 1px rgba(255, 255, 255, 0.15) inset,
614      0 6px 16px -4px rgba(0, 153, 220, 0.45);
615  }
616  .sticky-cta-primary:hover {
617    background: #0AA9EC;
618    transform: translateY(-1px);
619    box-shadow:
620      0 0 0 1px rgba(255, 255, 255, 0.22) inset,
621      0 8px 20px -4px rgba(0, 153, 220, 0.6);
622  }
623  /* When the sticky bar is visible, lift the chat FAB so they don't collide —
624     but ONLY on widths where the bar actually reaches the corner. The bar is
625     centered with max-width:1180px, so on wide screens it never gets near the
626     bottom-right FAB; lifting there just leaves the FAB floating in empty space.
627     Above ~1380px the FAB stays in its corner (base bottom:24px). */
628  @media (max-width: 1380px) {
629    body.sticky-cta-active .ap-chat-fab {
630      bottom: 130px;
631    }
632  }
633  /* Responsive */
634  @media (max-width: 900px) {
635    .sticky-cta { bottom: 16px; }
636    .sticky-cta-inner { padding: 20px 22px 20px 24px; gap: 18px; }
637    .sticky-cta-eyebrow { font-size: 11px; letter-spacing: 0.18em; }
638    .sticky-cta-headline { font-size: 17px; }
639    .sticky-cta-secondary { display: none; }      /* primary only on tablet */
640    .sticky-cta-primary { padding: 14px 22px; font-size: 15px; }
641  }
642  @media (max-width: 600px) {
643    .sticky-cta { width: calc(100% - 16px); bottom: 12px; }
644    .sticky-cta-inner {
645      flex-direction: column;
646      align-items: stretch;
647      gap: 14px;
648      padding: 20px 18px;
649    }
650    .sticky-cta-headline { white-space: normal; }
651    .sticky-cta-actions { width: 100%; }
652    .sticky-cta-primary { width: 100%; justify-content: center; }
653    body.sticky-cta-active .ap-chat-fab { bottom: 170px; }
654  }
655  @media (prefers-reduced-motion: reduce) {
656    .sticky-cta { transition: opacity 0.15s ease; }
657    body.sticky-cta-active .sticky-cta { transform: translate(-50%, 0); }
658  }
659  /* ============ END STICKY CTA BAR ============ */
660
661  /* ============ CTA TRUST ROW — embedded credibility footer ============
662     Three trust signals living inside the Final CTA bento card. Visually
663     separated from the buttons by a subtle top divider so the row reads
664     as a supporting credential band, not a competing CTA block. */
665  .cta-trust-row {
666    display: grid;
667    grid-template-columns: repeat(3, 1fr);
668    gap: 28px;
669    margin-top: 40px;
670    padding-top: 28px;
671    border-top: 1px solid rgba(36, 48, 66, 0.7);
672    max-width: 800px;
673    margin-left: auto;
674    margin-right: auto;
675    text-align: left;
676  }
677  .cta-trust-item {
678    display: flex;
679    align-items: flex-start;
680    gap: 12px;
681    min-width: 0;
682  }
683  .cta-trust-icon {
684    width: 32px;
685    height: 32px;
686    border-radius: 8px;
687    background: rgba(0, 153, 220, 0.1);
688    border: 1px solid rgba(0, 153, 220, 0.3);
689    display: flex;
690    align-items: center;
691    justify-content: center;
692    flex-shrink: 0;
693  }
694  .cta-trust-text { min-width: 0; }
695  .cta-trust-title {
696    font-family: 'Poppins', sans-serif;
697    font-size: 13px;
698    font-weight: 600;
699    color: var(--ap-text);
700    line-height: 1.3;
701  }
702  .cta-trust-sub {
703    font-family: 'Poppins', sans-serif;
704    font-size: 11px;
705    color: var(--ap-fog);
706    margin-top: 2px;
707    letter-spacing: 0.01em;
708  }
709  @media (max-width: 768px) {
710    .cta-trust-row {
711      grid-template-columns: 1fr;
712      gap: 16px;
713      margin-top: 32px;
714      padding-top: 24px;
715    }
716  }
717
718  @media (prefers-reduced-motion: reduce) {
719    .nav-link { transition: none; }
720  }
721
722  /* ============ DECORATIVE: scanline / grid background ============ */
723  .grid-bg {
724    background-image:
725      linear-gradient(rgba(36,48,66,0.4) 1px, transparent 1px),
726      linear-gradient(90deg, rgba(36,48,66,0.4) 1px, transparent 1px);
727    background-size: 56px 56px;
728    background-position: -1px -1px;
729    mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, #000 30%, transparent 75%);
730  }
731
732  /* ============ SUBTLE NOISE ============ */
733  .noise {
734    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
735  }
736
737  /* ============ STAGGER REVEALS ============
738     rev 9 (Katie): DISABLED — header fade-up felt laggy.
739     The .rise and .rise-1..5 classes now do nothing visually.
740     Hero headers and their child elements render immediately on
741     page load with no opacity/translate animation. */
742  .rise,
743  .rise-1,
744  .rise-2,
745  .rise-3,
746  .rise-4,
747  .rise-5 {
748    animation: none !important;
749    opacity: 1 !important;
750    transform: none !important;
751  }
752  /* Keyframe kept harmless in case anything else references it */
753  @keyframes rise { from { opacity: 1; transform: none; } to { opacity: 1; transform: none; } }
754
755  /* ============ TBD MARKER ============ */
756  /* Amber "TBD" placeholder flag intentionally removed site-wide. The .tbd
757     class is left on elements but renders no outline/badge — placeholder text
758     shows as normal copy. (Was: dashed amber outline + corner "TBD" badge.) */
759  .tbd { }
760  .tbd::after { content: none; }
761
762  /* ============ SKIP LINK ============ */
763  .skip-link {
764    position: absolute; left: -9999px; top: 8px;
765    background: #0099DC; color: white; padding: 8px 16px;
766    border-radius: 8px; z-index: 100; font-weight: 600;
767  }
768  .skip-link:focus { left: 8px; }
769
770  /* ============ FORM ============ */
771  .field-input {
772    background: rgba(20,28,40,0.6);
773    border: 1px solid #243042;
774    border-radius: 8px;
775    padding: 10px 14px;
776    color: #E6ECF3;
777    font-size: 14px;
778    width: 100%;
779    transition: all .15s ease;
780  }
781  .field-input:focus {
782    outline: none;
783    border-color: #0099DC;
784    box-shadow: 0 0 0 3px rgba(0,153,220,0.15);
785    background: rgba(20,28,40,0.9);
786  }
787  .field-label {
788    display: block;
789    font-family: 'Poppins', sans-serif;
790    font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
791    color: #9AA7B8; font-weight: 500;
792    margin-bottom: 6px;
793  }
794  .field-label .req { color: #0099DC; }
795
796  /* ============ SECTION SPACING ============ */
797  section.page-section { padding: 96px 0; }
798  @media (max-width: 768px) { section.page-section { padding: 64px 0; } }
799
800  /* ============================================================
801     POLISH PASS — MAXIMUM BOLD + GLOW EDITION (rev 2)
802     The glass and the glow ARE the design. Cranked to the wall:
803       1. Heavy glassmorphism — translucent, blurred, glowing edges
804       2. Saturated atmospheric depth that breathes
805       3. Dominant near-poster-scale typography
806       4. Neon-edge accents on borders, top-line gleams
807       5. FLATTER CTAs (rev 2 — reduced gradient/glow per Katie feedback)
808       6. Poppins eyebrows site-wide (rev 2 — converted mono labels)
809       7. SCROLL PERFORMANCE FIXES (rev 2 — see notes)
810     ============================================================ */
811
812  /* ---------- 1. GLASSMORPHISM — MAX TRANSLUCENCY + GLOW ---------- */
813  .ap-card {
814    background: linear-gradient(180deg,
815      rgba(26, 36, 52, 0.28) 0%,
816      rgba(11, 17, 23, 0.22) 100%);
817    backdrop-filter: blur(20px) saturate(170%);
817     /* rev 2: 26 → 20, 180 → 170 for scroll perf */
818    -webkit-backdrop-filter: blur(20px) saturate(170%);
819    border: 1px solid rgba(0, 153, 220, 0.22);
820    border-radius: 18px;
821    box-shadow:
822      0 1px 0 rgba(255, 255, 255, 0.18) inset,
823      0 0 0 1px rgba(0, 153, 220, 0.08) inset,
824      1px 0 0 rgba(255, 255, 255, 0.06) inset,
825      0 40px 100px -24px rgba(0, 0, 0, 0.95),
826      0 16px 48px -12px rgba(0, 153, 220, 0.32),
827      0 0 64px -16px rgba(0, 153, 220, 0.20);
828  }
829  .ap-card::before {
830    height: 1px;
831    background: linear-gradient(90deg,
832      transparent 0%,
833      rgba(0, 153, 220, 0.7) 20%,
834      rgba(102, 194, 234, 0.95) 50%,
835      rgba(0, 153, 220, 0.7) 80%,
836      transparent 100%);
837    opacity: 1;
838    box-shadow: 0 0 12px rgba(0, 153, 220, 0.5);
839  }
840  .ap-card-flat {
841    background: rgba(20, 28, 40, 0.24);
842    backdrop-filter: blur(16px) saturate(160%);      /* rev 2: 20 → 16 for scroll perf */
843    -webkit-backdrop-filter: blur(16px) saturate(160%);
844    border: 1px solid rgba(0, 153, 220, 0.18);
845    border-radius: 18px;
846    box-shadow:
847      0 1px 0 rgba(255, 255, 255, 0.12) inset,
848      0 24px 64px -20px rgba(0, 0, 0, 0.85),
849      0 0 48px -16px rgba(0, 153, 220, 0.18);
850  }
851
852  /* ---------- 2. ATMOSPHERIC BACKGROUNDS — DEEP DARK (rev 5) ----------
853     rev 5 (Katie): pull the base back toward build-35's #091119 deep dark.
854     The saturated atmospheric gleams I had in rev 3-4 were lifting the
855     overall page too light. Each radial-gradient stop is dialed WAY down
856     so the gradients read as faint hints of brand color in dark fog,
857     not as a moody blue sky. Element-level glow stays untouched. */
858  body {
859    background:
860      /* Faint top-center cyan halo */
861      radial-gradient(ellipse 110% 70% at 50% -5%, rgba(0, 153, 220, 0.10), transparent 60%),
862      /* Faint top-right purple hint */
863      radial-gradient(ellipse 80% 70% at 105% 15%, rgba(158, 95, 166, 0.06), transparent 65%),
864      /* Faint mid-left blue */
865      radial-gradient(ellipse 60% 100% at -5% 45%, rgba(0, 153, 220, 0.06), transparent 70%),
866      /* Faint mid-right cyan */
867      radial-gradient(ellipse 55% 70% at 105% 60%, rgba(0, 153, 220, 0.04), transparent 70%),
868      /* Faint bottom-right red */
869      radial-gradient(ellipse 60% 50% at 100% 95%, rgba(233, 65, 66, 0.04), transparent 65%),
870      /* Faint bottom-left purple */
871      radial-gradient(ellipse 50% 50% at -5% 95%, rgba(158, 95, 166, 0.04), transparent 70%),
872      #091119;                                       /* rev 5: build-35 base */
873  }
874
875  /* Animated atmospheric overlay — kept but dimmed. The slow drift adds
876     subtle life without lifting the page brightness. */
877  body::after {
878    content: '';
879    position: fixed;
880    inset: -10%;
881    pointer-events: none;
882    z-index: 0;
883    background:
884      radial-gradient(ellipse 40% 30% at 30% 20%, rgba(0, 153, 220, 0.08), transparent 60%),
885      radial-gradient(ellipse 35% 25% at 70% 60%, rgba(158, 95, 166, 0.06), transparent 60%),
886      radial-gradient(ellipse 30% 25% at 50% 85%, rgba(233, 65, 66, 0.05), transparent 60%);
887    filter: blur(80px);
888    opacity: 0.6;                                    /* rev 5: 0.7 → 0.6 */
889    animation: ap-ambient-drift 22s ease-in-out infinite;
890    mix-blend-mode: screen;
891    will-change: transform;
892    contain: layout style paint;
893  }
894  @keyframes ap-ambient-drift {
895    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
896    33%      { transform: translate3d(-3%, 2%, 0) scale(1.05); }
897    66%      { transform: translate3d(2%, -3%, 0) scale(0.98); }
898  }
899  body > * { position: relative; z-index: 1; }
900
901  /* Darker band sections — pulled back to subtle directional accents */
902  section.page-section.bg-ap-bg-2\/30 {
903    position: relative;
904    overflow: hidden;
905    background: rgba(11, 17, 25, 0.70) !important;   /* rev 5: deeper */
906  }
907  section.page-section.bg-ap-bg-2\/30::before {
908    content: '';
909    position: absolute;
910    inset: 0;
911    background:
912      /* Faint top-right accent */
913      radial-gradient(ellipse 90% 110% at 85% 10%, rgba(0, 153, 220, 0.10), transparent 60%),
914      /* Faint bottom-left counter */
915      radial-gradient(ellipse 75% 95% at 10% 85%, rgba(158, 95, 166, 0.08), transparent 65%),
916      /* Removed the red center-bottom glow and center wash from rev 3
917         — they were lifting the section brightness too much */
918      transparent;
919    pointer-events: none;
920    z-index: 0;
921    contain: layout style paint;
922  }
923  section.page-section.bg-ap-bg-2\/30 > * {
924    position: relative;
925    z-index: 1;
926  }
927  section.page-section:not(.bg-ap-bg-2\/30) { position: relative; }
928  section.page-section:not(.bg-ap-bg-2\/30) > * { position: relative; z-index: 1; }
929
930  /* ---------- 3. CONFIDENT TYPOGRAPHY (rev 6) ----------
931     Katie feedback: H2s pulled back from poster-scale (clamp 48-80px)
932     to a more grounded 36-56px range — bigger than the original baseline
933     but no longer dominating the page. */
934  h2.text-3xl.sm\:text-4xl {
935    font-size: clamp(2.25rem, 4.5vw, 3.5rem);         /* 36px → 56px (was 48-80px) */
936    line-height: 1.05;
937    letter-spacing: -0.025em;
938    font-weight: 600;
939  }
940  h2.text-2xl.sm\:text-3xl,
941  h2.text-2xl.md\:text-3xl {
942    font-size: clamp(1.75rem, 3.5vw, 2.5rem);         /* 28px → 40px (was 36-52px) */
943    line-height: 1.1;
944    letter-spacing: -0.022em;
945  }
946
947  .display-h1 {
948    font-weight: 600;
949    letter-spacing: -0.035em;
950    line-height: 0.98;
951  }
952
953  /* Stat numbers — still confident but pulled back */
954  .text-4xl.font-semibold {
955    font-size: clamp(2.25rem, 4.5vw, 3.25rem);        /* 36px → 52px (was 44-64px) */
956    letter-spacing: -0.028em;
957    line-height: 1.0;
958    text-shadow: 0 0 32px rgba(0, 153, 220, 0.25);
959  }
960  .text-3xl.font-semibold {
961    font-size: clamp(2rem, 4vw, 2.75rem);             /* 32px → 44px */
962    letter-spacing: -0.024em;
963    line-height: 1.02;
964  }
965
966  /* ---------- 4. EYEBROWS — POPPINS, NO GLOW (rev 2) ----------
967     Convert all the mono-font cyan eyebrow labels to Poppins,
968     remove text-shadow glows. Keeps wider tracking + caps for
969     editorial precision feel but in the brand sans font. */
970  .label-cap {
971    font-family: 'Poppins', sans-serif !important;
972    letter-spacing: 0.3em;
973    font-size: 12px;
974    font-weight: 600;
975    color: #38bdf8;                                   /* rev 3: brighter cyan, legible on dark bg */
976    text-shadow: none !important;                    /* rev 2: removed glow */
977  }
978  /* The other mono-cyan eyebrow patterns — coerce all to Poppins */
979  .hub-card .hub-num,
980  .assess-step-counter,
981  .ap-article-callout-label,
982  .duopane-showcase-eyebrow {
983    font-family: 'Poppins', sans-serif !important;
984    font-weight: 600 !important;
985    text-shadow: none !important;
986  }
987
988  /* Body text */
989  section.page-section .text-ap-fog,
990  section.page-section p.text-ap-fog {
991    line-height: 1.72;
992  }
993
994  /* ---------- 5. MOTION ----------
995     rev 4 (Katie): no hover lift/glow on cards site-wide. Cards stay
996     static on hover. Buttons, nav links, tabs, and explicit anchor
997     cards still get their interactive feedback. */
998  .ap-card,
999  .ap-card-flat {
1000    transition:
1001      border-color 350ms cubic-bezier(0.22, 1, 0.36, 1),
1002      background 350ms cubic-bezier(0.22, 1, 0.36, 1);
1003  }
1004  /* Kill all card hover effects — transform, shadow, border, ::before glow */
1005  .ap-card:hover,
1006  .ap-card-flat:hover {
1007    transform: none !important;
1008    border-color: rgba(0, 153, 220, 0.22) !important;
1009    box-shadow:
1010      0 1px 0 rgba(255, 255, 255, 0.18) inset,
1011      0 0 0 1px rgba(0, 153, 220, 0.08) inset,
1012      1px 0 0 rgba(255, 255, 255, 0.06) inset,
1013      0 40px 100px -24px rgba(0, 0, 0, 0.95),
1014      0 16px 48px -12px rgba(0, 153, 220, 0.32),
1015      0 0 64px -16px rgba(0, 153, 220, 0.20) !important;
1016  }
1017  .ap-card:hover::before {
1018    box-shadow: 0 0 12px rgba(0, 153, 220, 0.5) !important;
1019  }
1020
1021  .hub-card {
1022    background: linear-gradient(180deg,
1023      rgba(26, 36, 52, 0.28) 0%,
1024      rgba(11, 17, 23, 0.22) 100%) !important;
1025    backdrop-filter: blur(20px) saturate(170%);
1026    -webkit-backdrop-filter: blur(20px) saturate(170%);
1027    border: 1px solid rgba(0, 153, 220, 0.22) !important;
1028    border-radius: 18px !important;
1029    transition: border-color 350ms cubic-bezier(0.22, 1, 0.36, 1) !important;
1030    box-shadow:
1031      0 1px 0 rgba(255, 255, 255, 0.16) inset,
1032      0 32px 80px -20px rgba(0, 0, 0, 0.85),
1033      0 0 48px -16px rgba(0, 153, 220, 0.20);
1034  }
1035  /* Kill hub-card hover effects too */
1036  .hub-card:hover {
1037    transform: none !important;
1038    border-color: rgba(0, 153, 220, 0.22) !important;
1039    box-shadow:
1040      0 1px 0 rgba(255, 255, 255, 0.16) inset,
1041      0 32px 80px -20px rgba(0, 0, 0, 0.85),
1042      0 0 48px -16px rgba(0, 153, 220, 0.20) !important;
1043  }
1044  /* Kill the inner icon-wrap scale/glow that fires on hub-card hover */
1045  .hub-card:hover .pillar-icon-wrap {
1046    transform: none !important;
1047    border-color: rgba(0, 153, 220, 0.30) !important;
1048    background-color: rgba(0, 153, 220, 0.10) !important;
1049  }
1050  .hub-card:hover .pillar-icon-wrap::after {
1051    opacity: 0 !important;
1052  }
1053
1054  /* Anchor cards (cards that ARE links, like resource tiles) keep a soft
1055     border-color feedback so people know they're clickable. No transform,
1056     no shadow change — just a subtle cyan border on hover. */
1057  a.ap-card:hover,
1058  a.ap-card-flat:hover,
1059  a.hub-card:hover {
1060    border-color: rgba(0, 153, 220, 0.45) !important;
1061  }
1062
1063  /* Integration catalog cards (.int-card) — kill the translateY lift,
1064     keep the subtle background/border tint shift since they're clickable
1065     anchor tiles. Same philosophy as anchor ap-cards above. */
1066  .int-card:hover {
1067    transform: none !important;
1068  }
1069
1070  /* Note: .fcs-col hover effects on the Platform section's hub accordion
1071     are PRESERVED — that section's flex-grow expand-on-hover (and click-to-pin)
1072     is the core interaction pattern of that component, not a generic
1073     decorative lift. Same goes for the related .btn-grad CTA. */
1074
1075  /* ---------- 6. CTAs — FLATTER (rev 2) ----------
1076     Drop the gradient + multi-layer halo treatment. Clean flat
1077     brand-blue fill with just enough lift to read as a button.
1078     No gradient on rest state, no shimmer ::after, minimal glow. */
1079  .btn-primary {
1080    background: #0099DC;                             /* rev 2: flat */
1081    box-shadow:
1082      0 0 0 1px rgba(0, 153, 220, 0.4),
1083      0 6px 18px -6px rgba(0, 153, 220, 0.35);       /* rev 2: minimal */
1084    transition: all 220ms cubic-bezier(0.22, 1, 0.36, 1);
1085    font-weight: 600;
1086  }
1087  .btn-primary::after { display: none; }             /* rev 2: shimmer removed */
1088  .btn-primary:hover {
1089    background: #0AA9EC;                             /* rev 2: flat hover, slight lighten */
1090    transform: translateY(-1px);                     /* rev 2: 2px → 1px lift */
1091    box-shadow:
1092      0 0 0 1px rgba(0, 153, 220, 0.55),
1093      0 10px 24px -6px rgba(0, 153, 220, 0.45);
1094  }
1095
1096  /* Secondary CTAs — remove the glow on hover (rev 2) */
1097  .btn-secondary:hover {
1098    text-shadow: none;
1099  }
1100
1101  /* Pills */
1102  .pill {
1103    backdrop-filter: blur(12px) saturate(170%);
1104    -webkit-backdrop-filter: blur(12px) saturate(170%);
1105    transition: background 320ms ease, border-color 320ms ease, transform 320ms ease, box-shadow 320ms ease;
1106  }
1107  .pill-cyan {
1108    box-shadow: 0 0 16px rgba(0, 153, 220, 0.25);
1109  }
1110
1111  /* Nav links — keep soft cyan glow on hover (small, doesn't compete) */
1112  .nav-link {
1113    transition:
1114      color 260ms cubic-bezier(0.22, 1, 0.36, 1),
1115      background-color 360ms cubic-bezier(0.22, 1, 0.36, 1),
1116      border-color 360ms cubic-bezier(0.22, 1, 0.36, 1);
1117  }
1118
1119  ::selection {
1120    background: rgba(0, 153, 220, 0.55);
1121    color: #FFFFFF;
1122  }
1123
1124  /* ---------- 7. CYAN TEXT GLOW — KEEP BUT GENTLER (rev 2) ---------- */
1125  .text-ap-cyan,
1126  .text-ap-cyan-2 {
1127    text-shadow: 0 0 16px rgba(0, 153, 220, 0.22);
1128  }
1129
1130  /* ---------- 8. SCROLL PERFORMANCE NOTES (rev 2) ----------
1131     Three changes applied above for scroll smoothness:
1132
1133       a) REMOVED `background-attachment: fixed` on body.
1134          On long pages this forces the browser to repaint the
1135          entire viewport every scroll frame. Killing it is the
1136          biggest single perf win. The gradients still create
1137          atmospheric depth, they just scroll WITH the page now.
1138
1139       b) ADDED `contain: layout style paint` on body::after and
1140          on section background overlays. Tells the browser these
1141          layers can't affect document flow — paints stay isolated.
1142
1143       c) ADDED `will-change: transform` + `translate3d()` on the
1144          animated body::after. Promotes it to its own GPU layer
1145          so the animation runs off the main scroll thread.
1146
1147       d) REDUCED blur on cards from 26px → 20px. blur() is
1148          O(blur²) expensive; this is ~40% cheaper per card with
1149          minimal visual difference.
1150
1151     If scroll is STILL laggy after this, the next things to cut
1152     in order of biggest perf win:
1153       1. body::after animation entirely (set animation: none)
1154       2. Drop card blur further to 14-16px
1155       3. Remove section ::before atmospheric layers on
1156          bg-ap-bg-2/30 sections
1157       4. Disable reveal-on-scroll animations (the JS observer)
1158  */
1159
1160  /* ---------- 10. DARKER HEROES (rev 3) ----------
1161     Add a dark vignette overlay to every page hero. Targets the
1162     `relative overflow-hidden` divs that contain `grid-bg` + `noise`
1163     overlays — the canonical hero pattern across MXDR/MDR/XDR/etc. */
1164  div.relative.overflow-hidden:has(> .grid-bg)::after {
1165    content: '';
1166    position: absolute;
1167    inset: 0;
1168    background:
1169      linear-gradient(180deg,
1170        rgba(0, 0, 0, 0.55) 0%,
1171        rgba(0, 0, 0, 0.20) 35%,
1172        rgba(0, 0, 0, 0.35) 75%,
1173        rgba(0, 0, 0, 0.55) 100%),
1174      radial-gradient(ellipse 120% 90% at 50% 50%,
1175        transparent 35%,
1176        rgba(0, 0, 0, 0.45) 100%);
1177    pointer-events: none;
1178    z-index: 0;
1179  }
1180  /* Make sure hero content always sits above the darkening overlay */
1181  div.relative.overflow-hidden:has(> .grid-bg) > .relative {
1182    position: relative;
1183    z-index: 1;
1184  }
1185
1186  /* ---------- 11. INTEGRATION TABS — GLASS (rev 3) ----------
1187     Restyle the existing .int-chip category filter buttons to match
1188     the site-wide glassmorphism treatment. Frosted background, soft
1189     glow on active state, subtle lift on hover. */
1190  .int-chip {
1191    background: rgba(15, 22, 32, 0.40);
1192    backdrop-filter: blur(12px) saturate(150%);
1193    -webkit-backdrop-filter: blur(12px) saturate(150%);
1194    border: 1px solid rgba(255, 255, 255, 0.08);
1195    color: rgba(230, 236, 243, 0.7);
1196    padding: 8px 14px;
1197    transition:
1198      color 280ms cubic-bezier(0.22, 1, 0.36, 1),
1199      background-color 280ms cubic-bezier(0.22, 1, 0.36, 1),
1200      border-color 280ms cubic-bezier(0.22, 1, 0.36, 1),
1201      transform 280ms cubic-bezier(0.22, 1, 0.36, 1),
1202      box-shadow 280ms cubic-bezier(0.22, 1, 0.36, 1);
1203    box-shadow:
1204      0 1px 0 rgba(255, 255, 255, 0.06) inset,
1205      0 4px 12px -4px rgba(0, 0, 0, 0.4);
1206  }
1207  .int-chip:hover {
1208    color: rgba(230, 236, 243, 0.95);
1209    border-color: rgba(0, 153, 220, 0.30);
1210    transform: translateY(-1px);
1211    box-shadow:
1212      0 1px 0 rgba(255, 255, 255, 0.10) inset,
1213      0 8px 18px -4px rgba(0, 0, 0, 0.5),
1214      0 0 24px -8px rgba(0, 153, 220, 0.20);
1215  }
1216  .int-chip.is-active {
1217    color: #FFFFFF;
1218    background: linear-gradient(180deg,
1219      rgba(0, 153, 220, 0.28) 0%,
1220      rgba(0, 153, 220, 0.18) 100%);
1221    border-color: rgba(0, 153, 220, 0.55);
1222    box-shadow:
1223      0 1px 0 rgba(255, 255, 255, 0.18) inset,
1224      0 0 0 1px rgba(0, 153, 220, 0.15) inset,
1225      0 8px 24px -6px rgba(0, 153, 220, 0.40),
1226      0 0 32px -10px rgba(0, 153, 220, 0.35);
1227  }
1228  .int-chip-count {
1229    font-family: 'Poppins', sans-serif;
1230    font-size: 11px;
1231    font-weight: 500;
1232    opacity: 0.7;
1233    margin-left: 6px;
1234    padding: 1px 6px;
1235    border-radius: 999px;
1236    background: rgba(255, 255, 255, 0.08);
1237  }
1238  .int-chip.is-active .int-chip-count {
1239    background: rgba(255, 255, 255, 0.18);
1240    opacity: 1;
1241  }
1242     Add a dark vignette overlay to every page hero. Targets the
1243     `relative overflow-hidden` divs that contain `grid-bg` + `noise`
1244     overlays — the canonical hero pattern across MXDR/MDR/XDR/etc.
1245     Sits behind hero content (which uses `.relative` to lift above). */
1246  div.relative.overflow-hidden:has(> .grid-bg)::after {
1247    content: '';
1248    position: absolute;
1249    inset: 0;
1250    background:
1251      /* Top vignette — pulls the top edge darker so it reads as
1252         deeper space behind the headline */
1253      linear-gradient(180deg,
1254        rgba(0, 0, 0, 0.55) 0%,
1255        rgba(0, 0, 0, 0.20) 35%,
1256        rgba(0, 0, 0, 0.35) 75%,
1257        rgba(0, 0, 0, 0.55) 100%),
1258      /* Corner darkening — pulls eyes toward center */
1259      radial-gradient(ellipse 120% 90% at 50% 50%,
1260        transparent 35%,
1261        rgba(0, 0, 0, 0.45) 100%);
1262    pointer-events: none;
1263    z-index: 0;
1264  }
1265  /* Make sure hero content always sits above the darkening overlay */
1266  div.relative.overflow-hidden:has(> .grid-bg) > .relative {
1267    position: relative;
1268    z-index: 1;
1269  }
1270  @media (prefers-reduced-motion: reduce) {
1271    .ap-card, .ap-card-flat, .hub-card, .btn-primary, .nav-link {
1272      transition: none !important;
1273    }
1274    .ap-card:hover, .ap-card-flat:hover, .hub-card:hover, .btn-primary:hover {
1275      transform: none !important;
1276    }
1277    body::after { animation: none !important; }
1278  }
1279
1280  /* ============ END POLISH PASS ============ */
1281
1282  /* ============ HUB CARDS ============ */
1283  .hub-card {
1284    background: linear-gradient(180deg, rgba(26,36,52,0.7) 0%, rgba(20,28,40,0.7) 100%);
1285    border: 1px solid #243042;
1286    border-radius: 14px;
1287    padding: 28px;
1288    transition: all .25s ease;
1289    position: relative;
1290    overflow: hidden;
1291    height: 100%;
1292  }
1293  .hub-card:hover {
1294    border-color: rgba(0,153,220,0.4);
1295    transform: translateY(-2px);
1296    box-shadow: 0 0 0 1px rgba(0,153,220,0.2), 0 24px 48px -16px rgba(0,153,220,0.18);
1297  }
1298  .hub-card .hub-num {
1299    font-family: 'Poppins', sans-serif;
1300    color: #0099DC; font-size: 12px; font-weight: 500;
1301    letter-spacing: 0.16em;
1302  }
1303
1304  /* Mobile-first table fix: cards stack on mobile */
1305  .data-row { display: grid; align-items: center; }
1306  @media (max-width: 640px) {
1307    .data-row { grid-template-columns: 1fr !important; gap: 4px; padding: 12px !important; }
1308    .data-row > .data-cell-label { display: block !important; }
1309  }
1310  .data-cell-label {
1311    display: none;
1312    font-family: 'Poppins', sans-serif; font-size: 10px;
1313    color: #6B7889; text-transform: uppercase; letter-spacing: 0.08em;
1314  }
1315
1316  /* ============ MOBILE NAV — slide-in drawer with accordion sections ============ */
1317
1318  /* Backdrop: dark overlay behind drawer, fades in */
1319  .mobile-drawer-backdrop {
1320    position: fixed;
1321    inset: 0;
1322    background: rgba(9, 17, 25, 0.72);
1323    backdrop-filter: blur(4px);
1324    -webkit-backdrop-filter: blur(4px);
1325    opacity: 0;
1326    pointer-events: none;
1327    z-index: 90;
1328    transition: opacity 0.25s ease;
1329  }
1330  .mobile-drawer-backdrop.is-open {
1331    opacity: 1;
1332    pointer-events: auto;
1333  }
1334
1335  /* Drawer: slides in from the right */
1336  .mobile-menu {
1337    position: fixed;
1338    top: 0;
1339    right: 0;
1340    bottom: 0;
1341    width: 88vw;
1342    max-width: 400px;
1343    background: linear-gradient(180deg, #1A2434 0%, #0F1822 100%);
1344    border-left: 1px solid #243042;
1345    box-shadow: -24px 0 60px -20px rgba(0,0,0,0.7);
1346    display: flex;
1347    flex-direction: column;
1348    transform: translateX(100%);
1349    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1);
1350    z-index: 100;
1351    overflow: hidden;
1352  }
1353  .mobile-menu.is-open { transform: translateX(0); }
1354
1355  /* Reset the legacy .open class so nothing depends on it */
1356  .mobile-menu.open { transform: translateX(0); }
1357
1358  /* Drawer header — brand + close */
1359  .mobile-drawer-header {
1360    display: flex;
1361    align-items: center;
1362    justify-content: space-between;
1363    padding: 16px 20px;
1364    border-bottom: 1px solid #1F2A3A;
1365    flex-shrink: 0;
1366  }
1367  .mobile-drawer-brand {
1368    display: inline-flex;
1369    align-items: center;
1370    text-decoration: none;
1371    line-height: 0;
1372  }
1373  .mobile-drawer-brand:focus-visible {
1374    outline: 2px solid rgba(0,153,220,0.55);
1375    outline-offset: 2px;
1376    border-radius: 4px;
1377  }
1378  .mobile-drawer-close {
1379    width: 36px;
1380    height: 36px;
1381    border-radius: 8px;
1382    background: transparent;
1383    border: 1px solid #243042;
1384    color: #C5CDD9;
1385    display: inline-flex;
1386    align-items: center;
1387    justify-content: center;
1388    cursor: pointer;
1389    transition: background 0.12s, border-color 0.12s, color 0.12s;
1390  }
1391  .mobile-drawer-close:hover { background: rgba(0,153,220,0.08); border-color: rgba(0,153,220,0.4); color: #E6ECF3; }
1392
1393  /* Drawer body — scrollable list */
1394  .mobile-drawer-body {
1395    flex: 1;
1396    overflow-y: auto;
1397    overscroll-behavior: contain;
1398    padding: 8px 0;
1399  }
1400
1401  /* Accordion section */
1402  .mobile-section {
1403    border-bottom: 1px solid #1F2A3A;
1404  }
1405  .mobile-section:last-child { border-bottom: none; }
1406
1407  /* Section trigger — the tappable header row */
1408  .mobile-section-trigger {
1409    width: 100%;
1410    display: grid;
1411    grid-template-columns: 36px 1fr 16px;
1412    align-items: center;
1413    gap: 12px;
1414    padding: 14px 20px;
1415    background: transparent;
1416    border: none;
1417    color: #E6ECF3;
1418    font-family: 'Poppins', sans-serif;
1419    font-weight: 500;
1420    font-size: 15px;
1421    text-align: left;
1422    cursor: pointer;
1423    transition: background-color 0.12s;
1424    text-decoration: none;
1425    min-height: 52px;
1426  }
1427  .mobile-section-trigger:hover,
1428  .mobile-section-trigger:focus-visible {
1429    background: rgba(0,153,220,0.05);
1430    outline: none;
1431  }
1432  .mobile-section-trigger:focus-visible {
1433    box-shadow: inset 0 0 0 2px rgba(0,153,220,0.4);
1434  }
1435  .mobile-section-icon {
1436    width: 28px;
1437    height: 28px;
1438    border-radius: 7px;
1439    background: linear-gradient(135deg, rgba(0,153,220,0.12), rgba(158,95,166,0.06));
1440    border: 1px solid rgba(0,153,220,0.18);
1441    display: inline-flex;
1442    align-items: center;
1443    justify-content: center;
1444    color: #0099DC;
1445    flex-shrink: 0;
1446    transition: transform 0.15s, border-color 0.15s;
1447  }
1448  .mobile-section-icon svg { width: 16px; height: 16px; }
1449  .mobile-section.is-active .mobile-section-icon {
1450    border-color: rgba(0,153,220,0.45);
1451    background: linear-gradient(135deg, rgba(0,153,220,0.22), rgba(158,95,166,0.1));
1452    transform: scale(1.04);
1453  }
1454  .mobile-section-chevron {
1455    color: #6B7889;
1456    transition: transform 0.22s ease, color 0.15s;
1457    display: inline-flex;
1458  }
1459  .mobile-section.is-active .mobile-section-chevron {
1460    transform: rotate(90deg);
1461    color: #0099DC;
1462  }
1463  .mobile-section.is-active .mobile-section-trigger { color: #33ADE3; }
1464
1465  /* Section body — collapsible content */
1466  .mobile-section-body {
1467    overflow: hidden;
1468    max-height: 0;
1469    transition: max-height 0.28s ease;
1470    background: rgba(9, 17, 25, 0.4);
1471  }
1472  .mobile-section.is-active .mobile-section-body { max-height: 800px; }
1473  .mobile-section-body-inner {
1474    padding: 6px 0 14px;
1475  }
1476
1477  /* Sub-section label (e.g. "Industry capabilities") */
1478  .mobile-sublabel {
1479    font-family: 'Poppins', sans-serif;
1480    font-size: 10px;
1481    letter-spacing: 0.18em;
1482    text-transform: uppercase;
1483    color: #6B7889;
1484    padding: 10px 20px 6px 68px;
1485  }
1486
1487  /* Individual nav link inside a section */
1488  .mobile-link {
1489    display: flex;
1490    align-items: center;
1491    justify-content: space-between;
1492    padding: 10px 20px 10px 68px;
1493    color: #C5CDD9;
1494    text-decoration: none;
1495    font-size: 14px;
1496    transition: background-color 0.12s, color 0.12s;
1497    min-height: 44px;
1498  }
1499  .mobile-link:hover, .mobile-link:focus-visible {
1500    background: rgba(0,153,220,0.06);
1501    color: #E6ECF3;
1502    outline: none;
1503  }
1504  .mobile-link:focus-visible {
1505    box-shadow: inset 0 0 0 2px rgba(0,153,220,0.4);
1506  }
1507  .mobile-link.is-overview {
1508    color: #33ADE3;
1509    font-weight: 500;
1510  }
1511  .mobile-link.is-overview::after {
1512    content: '→';
1513    font-family: 'Poppins', sans-serif;
1514    font-size: 14px;
1515    margin-left: 8px;
1516  }
1517
1518  /* Flat link variant (Pricing) — no accordion, just navigates */
1519  .mobile-section.is-flat {
1520    /* Same look as accordion trigger but no chevron, no body */
1521  }
1522  .mobile-section.is-flat .mobile-section-chevron { visibility: hidden; }
1523
1524  /* Pinned footer with CTAs */
1525  .mobile-drawer-footer {
1526    flex-shrink: 0;
1527    padding: 16px 20px 20px;
1528    border-top: 1px solid #1F2A3A;
1529    background: linear-gradient(180deg, transparent, rgba(0,0,0,0.2));
1530    display: flex;
1531    flex-direction: column;
1532    gap: 10px;
1533  }
1534  .mobile-drawer-signin {
1535    display: inline-flex;
1536    align-items: center;
1537    justify-content: center;
1538    gap: 6px;
1539    padding: 11px 16px;
1540    font-family: 'Poppins', sans-serif;
1541    font-weight: 500;
1542    font-size: 13px;
1543    color: #C5CDD9;
1544    background: transparent;
1545    border: 1px solid #243042;
1546    border-radius: 8px;
1547    text-decoration: none;
1548    transition: border-color 0.12s, color 0.12s;
1549  }
1550  .mobile-drawer-signin:hover {
1551    border-color: rgba(0,153,220,0.5);
1552    color: #E6ECF3;
1553  }
1554  .mobile-drawer-demo {
1555    display: inline-flex;
1556    align-items: center;
1557    justify-content: center;
1558    gap: 6px;
1559    padding: 12px 16px;
1560    font-family: 'Poppins', sans-serif;
1561    font-weight: 600;
1562    font-size: 14px;
1563    color: #fff;
1564    background: linear-gradient(30deg, #0099DC, #33ADE3);
1565    border-radius: 8px;
1566    text-decoration: none;
1567    box-shadow: 0 4px 12px -2px rgba(0,153,220,0.4);
1568    transition: transform 0.12s, box-shadow 0.12s;
1569  }
1570  .mobile-drawer-demo:hover {
1571    transform: translateY(-1px);
1572    box-shadow: 0 6px 16px -2px rgba(0,153,220,0.5);
1573  }
1574
1575  /* Lock body scroll when drawer is open */
1576  body.is-mobile-drawer-open { overflow: hidden; }
1577
1578  /* Respect reduced motion */
1579  @media (prefers-reduced-motion: reduce) {
1580    .mobile-drawer-backdrop,
1581    .mobile-menu,
1582    .mobile-section-body,
1583    .mobile-section-chevron,
1584    .mobile-section-icon {
1585      transition: none !important;
1586    }
1587  }
1588
1589  /* Hide drawer entirely on desktop */
1590  @media (min-width: 1024px) {
1591    .mobile-menu, .mobile-drawer-backdrop { display: none !important; }
1592  }
1593
1594  /* ----- Overflow-driven nav (JS, added 2026-06-29) -----
1595     With JS active (html.js-nav), setupMobileDrawer() measures whether the
1596     desktop bar fits and toggles .nav-collapsed, so the switch follows the
1597     real nav width (CMS-editable labels), not a fixed px breakpoint. The
1598     width media query below is only the no-JS fallback. */
1599  html.js-nav header .lg\:flex { display: flex !important; }
1600  html.js-nav #mobile-toggle { display: none !important; }
1601  html.js-nav .mobile-menu,
1602  html.js-nav .mobile-drawer-backdrop { display: none !important; }
1603  html.js-nav.nav-collapsed header .lg\:flex { display: none !important; }
1604  html.js-nav.nav-collapsed #mobile-toggle { display: inline-block !important; }
1605  html.js-nav.nav-collapsed .mobile-menu { display: flex !important; }
1606  html.js-nav.nav-collapsed .mobile-drawer-backdrop { display: block !important; }
1607  /* Invisible measuring pass: force desktop layout to read its natural width. */
1608  html.nav-measuring header .lg\:flex { display: flex !important; }
1609  html.nav-measuring #mobile-toggle { display: none !important; }
1610  html.nav-measuring header { visibility: hidden !important; }
1611
1612  /* ----- Responsive header switch (added 2026-06-29) -----
1613     The desktop nav (logo + 6 menus + Sign in + demo CTA) crams onto one
1614     row up to ~1390px (per request). Keep the hamburger drawer through that
1615     band; reveal the full desktop bar only above 1390px.
1616     Header-scoped so the page's other lg: utilities are unaffected. */
1617  @media (min-width: 1024px) and (max-width: 1390px) {
1618    header .lg\:flex { display: none !important; }       /* hide desktop nav groups */
1619    #mobile-toggle { display: inline-block !important; } /* show hamburger */
1620    .mobile-menu { display: flex !important; }           /* re-enable off-canvas drawer */
1621    .mobile-drawer-backdrop { display: block !important; }
1622  }
1623
1624  /* ----- Short-viewport handling (added 2026-06-29) -----
1625     Desktop megamenu dropdowns have no height limit, so on a short viewport
1626     they spill off the bottom edge with no scroll. Cap them to the space
1627     under the sticky header and scroll internally instead. (No effect on
1628     tall screens, where the content fits and no scrollbar appears.) */
1629  .megamenu-card {
1630    max-height: calc(100vh - 96px);
1631    overflow-y: auto;
1632    overscroll-behavior: contain;
1633  }
1634
1635
1636  /* ============ FOOTER ============ */
1637  .footer-main {
1638    background:
1639      radial-gradient(80% 50% at 50% 0%, rgba(0,153,220,0.04) 0%, transparent 70%),
1640      linear-gradient(180deg, #0B1320 0%, #060C16 100%);
1641    border-top: 1px solid #1F2A3A;
1642    margin-top: 80px;
1643    position: relative;
1644  }
1645  /* Subtle gradient hairline along the top */
1646  .footer-main::before {
1647    content: '';
1648    position: absolute;
1649    top: 0; left: 0; right: 0;
1650    height: 1px;
1651    background: linear-gradient(90deg, transparent 0%, rgba(0,153,220,0.4) 30%, rgba(158,95,166,0.4) 50%, rgba(233,65,66,0.4) 70%, transparent 100%);
1652    opacity: 0.6;
1653  }
1654  .footer-inner {
1655    max-width: 1280px;
1656    margin: 0 auto;
1657    padding: 64px 28px 32px;
1658  }
1659
1660  /* Top section: brand block + nav columns */
1661  .footer-top {
1662    display: grid;
1663    grid-template-columns: 1fr;
1664    gap: 48px;
1665    padding-bottom: 48px;
1666  }
1667  @media (min-width: 768px) {
1668    .footer-top { grid-template-columns: repeat(3, 1fr); gap: 40px 32px; }
1669  }
1670  @media (min-width: 1024px) {
1671    .footer-top { grid-template-columns: 1.4fr repeat(6, 1fr); gap: 40px; }
1672  }
1673
1674  /* Brand block */
1675  .footer-brand {
1676    display: flex;
1677    flex-direction: column;
1678    gap: 18px;
1679  }
1680  @media (min-width: 768px) and (max-width: 1023px) {
1681    .footer-brand { grid-column: 1 / -1; }
1682  }
1683  .footer-brand-logo { line-height: 0; }
1684  .footer-brand-logo svg { height: 26px; width: auto; display: block; }
1685  .footer-brand-copy {
1686    font-size: 13px;
1687    line-height: 1.6;
1688    color: #9AA7B8;
1689    max-width: 360px;
1690    margin: 0;
1691  }
1692  .footer-brand-eyebrow {
1693    font-family: 'Poppins', sans-serif;
1694    font-size: 10px;
1695    font-weight: 500;
1696    letter-spacing: 0.22em;
1697    text-transform: uppercase;
1698    color: #6B7889;
1699  }
1700  .footer-social {
1701    display: flex;
1702    gap: 10px;
1703    margin-top: 4px;
1704  }
1705  .footer-social a {
1706    width: 36px;
1707    height: 36px;
1708    border-radius: 8px;
1709    background: transparent;
1710    border: 1px solid #243042;
1711    color: #9AA7B8;
1712    display: inline-flex;
1713    align-items: center;
1714    justify-content: center;
1715    transition: color 0.12s, border-color 0.12s, background 0.12s;
1716  }
1717  .footer-social a:hover, .footer-social a:focus-visible {
1718    color: #E6ECF3;
1719    border-color: rgba(0,153,220,0.5);
1720    background: rgba(0,153,220,0.06);
1721    outline: none;
1722  }
1723  .footer-social svg { width: 16px; height: 16px; }
1724
1725  /* Nav columns */
1726  .footer-col h4 {
1727    font-family: 'Poppins', sans-serif;
1728    font-size: 12px;
1729    font-weight: 600;
1730    letter-spacing: 0.12em;
1731    text-transform: uppercase;
1732    color: #E6ECF3;
1733    margin: 0 0 14px;
1734  }
1735  .footer-col ul {
1736    list-style: none;
1737    margin: 0;
1738    padding: 0;
1739    display: flex;
1740    flex-direction: column;
1741    gap: 8px;
1742  }
1743  .footer-col li { margin: 0; }
1744  .footer-col a {
1745    font-size: 13px;
1746    color: #9AA7B8;
1747    text-decoration: none;
1748    transition: color 0.12s;
1749    line-height: 1.4;
1750    display: inline-block;
1751    position: relative;
1752  }
1753  .footer-col a:hover, .footer-col a:focus-visible {
1754    color: #E6ECF3;
1755    outline: none;
1756  }
1757
1758  /* Gradient underline on hover — brand gradient at 90°, sweeps in from the left */
1759  .footer-col a::after,
1760  .footer-bottom-links a::after {
1761    content: '';
1762    position: absolute;
1763    left: 0;
1764    bottom: -3px;
1765    width: 100%;
1766    height: 1.5px;
1767    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 50%, #E94142 100%);
1768    border-radius: 1px;
1769    transform: scaleX(0);
1770    transform-origin: left center;
1771    transition: transform 0.32s cubic-bezier(0.32, 0.72, 0, 1);
1772    pointer-events: none;
1773  }
1774  .footer-col a:hover::after,
1775  .footer-col a:focus-visible::after,
1776  .footer-bottom-links a:hover::after,
1777  .footer-bottom-links a:focus-visible::after {
1778    transform: scaleX(1);
1779  }
1780  @media (prefers-reduced-motion: reduce) {
1781    .footer-col a::after,
1782    .footer-bottom-links a::after {
1783      transition: none !important;
1784    }
1785  }
1786
1787  /* Awards strip */
1788  .footer-awards {
1789    padding: 32px 0;
1790    border-top: 1px solid #1F2A3A;
1791    border-bottom: 1px solid #1F2A3A;
1792    display: flex;
1793    flex-wrap: wrap;
1794    align-items: center;
1795    justify-content: center;
1796    gap: 28px 36px;
1797  }
1798  .footer-awards img {
1799    height: 70px;
1800    width: auto;
1801    max-width: 100%;
1802    display: block;
1803    object-fit: contain;
1804    filter: drop-shadow(0 4px 12px rgba(0,0,0,0.25));
1805    transition: transform 0.18s ease;
1806  }
1807  .footer-awards img:hover {
1808    transform: translateY(-2px);
1809  }
1810  @media (max-width: 640px) {
1811    .footer-awards { gap: 20px 24px; }
1812    .footer-awards img { height: 56px; }
1813  }
1814
1815  /* Bottom bar */
1816  .footer-bottom {
1817    padding-top: 28px;
1818    display: flex;
1819    flex-direction: column;
1820    gap: 16px;
1821    align-items: center;
1822    text-align: center;
1823  }
1824  @media (min-width: 640px) {
1825    .footer-bottom {
1826      flex-direction: row;
1827      justify-content: space-between;
1828      text-align: left;
1829    }
1830  }
1831  .footer-copyright {
1832    font-size: 12px;
1833    color: #6B7889;
1834  }
1835  .footer-bottom-links {
1836    display: flex;
1837    gap: 20px;
1838    flex-wrap: wrap;
1839    justify-content: center;
1840  }
1841  .footer-bottom-links a {
1842    font-size: 12px;
1843    color: #6B7889;
1844    text-decoration: none;
1845    transition: color 0.12s;
1846    position: relative;
1847    display: inline-block;
1848  }
1849  .footer-bottom-links a:hover, .footer-bottom-links a:focus-visible {
1850    color: #C5CDD9;
1851    outline: none;
1852  }
1853  /* ============ END FOOTER ============ */
1854
1855  /* ============================================================
1856     MORPHING BLOB — scroll-driven gradient blob behind two sections
1857
1858     A fixed-position radial gradient blob that lives behind the
1859     Why ArmorPoint and Platform sections, morphing in color,
1860     position, and size as the user scrolls through that range.
1861
1862     Driven by CSS custom properties updated via JS:
1863       --blob-progress  0..1   how far through morph-zone we are
1864       --blob-x         0..1   horizontal drift target (0=left, 1=right)
1865       --blob-y         0..1   vertical drift target
1866     ============================================================ */
1867  #morph-zone {
1868    position: relative;
1869    --blob-progress: 0;
1870    --blob-x: 0;
1871    --blob-y: 0;
1872  }
1873
1874  /* The blob itself. Fixed position so it stays in the viewport
1875     while morph-zone is visible. z-index:0 puts it above the body
1876     background but below page sections (which sit at z-index:1+ here). */
1877  .scroll-blob {
1878    position: fixed;
1879    pointer-events: none;
1880    z-index: 0;
1881    /* Position math: blob travels from upper-left to lower-right */
1882    left: calc(15% + (var(--blob-x, 0) * 55%));
1883    top: calc(10% + (var(--blob-y, 0) * 50%));
1884    width: 720px;
1885    height: 720px;
1886    transform: translate(-50%, -50%);
1887    border-radius: 50%;
1888    background:
1889      radial-gradient(
1890        circle at center,
1891        hsla(calc(196 + var(--blob-progress, 0) * 100), 100%, 50%, 0.32) 0%,
1892        hsla(calc(290 + var(--blob-progress, 0) * 60),  70%, 55%, 0.20) 35%,
1893        hsla(calc(0 + var(--blob-progress, 0) * 20),    100%, 56%, 0.08) 65%,
1894        transparent 80%
1895      );
1896    filter: blur(90px);
1897    transition: opacity 0.4s ease;
1898    opacity: 0;
1899    animation: blob-breathe 9s ease-in-out infinite;
1900    will-change: transform, opacity;
1901  }
1902  body.morph-active .scroll-blob { opacity: var(--blob-opacity, 1); }
1903
1904  @keyframes blob-breathe {
1905    0%, 100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); }
1906    50%      { transform: translate(-50%, -50%) scale(1.08) rotate(15deg); }
1907  }
1908
1909  /* Second blob — moves opposite direction, different color slice */
1910  .scroll-blob-secondary {
1911    position: fixed;
1912    pointer-events: none;
1913    z-index: 0;
1914    left: calc(70% - (var(--blob-x, 0) * 50%));
1915    top: calc(60% - (var(--blob-y, 0) * 35%));
1916    width: 480px;
1917    height: 480px;
1918    transform: translate(-50%, -50%);
1919    border-radius: 50%;
1920    background:
1921      radial-gradient(
1922        circle at center,
1923        hsla(calc(290 - var(--blob-progress, 0) * 50), 80%, 55%, 0.22) 0%,
1924        hsla(calc(220 + var(--blob-progress, 0) * 80), 90%, 55%, 0.12) 40%,
1925        transparent 75%
1926      );
1927    filter: blur(80px);
1928    transition: opacity 0.4s ease;
1929    opacity: 0;
1930    animation: blob-breathe-2 11s ease-in-out infinite;
1931    will-change: transform, opacity;
1932  }
1933  body.morph-active .scroll-blob-secondary { opacity: var(--blob-opacity, 1); }
1934
1935  @keyframes blob-breathe-2 {
1936    0%, 100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); }
1937    50%      { transform: translate(-50%, -50%) scale(0.92) rotate(-20deg); }
1938  }
1939
1940  /* Sections inside morph-zone sit on top of the blob */
1941  #morph-zone > section { position: relative; z-index: 1; }
1942
1943  /* Honor reduced motion: no breathing, no morphing transitions */
1944  @media (prefers-reduced-motion: reduce) {
1945    .scroll-blob,
1946    .scroll-blob-secondary {
1947      animation: none !important;
1948      transition: opacity 0.2s ease !important;
1949    }
1950  }
1951
1952  /* ============================================================
1953     PILLAR ICONS — animated icons inside Why ArmorPoint cards
1954     Each icon has a distinct, layered motion. Subtle but visible.
1955     All GPU-friendly (transform / opacity / stroke-dashoffset).
1956     ============================================================ */
1957
1958  /* Icon tile hover treatment (the 44×44 cyan-bordered box) */
1959  .pillar-icon-wrap {
1960    transition: transform 0.25s ease, border-color 0.2s, background-color 0.2s;
1961    position: relative;
1962  }
1963  .hub-card:hover .pillar-icon-wrap {
1964    transform: scale(1.08);
1965    border-color: rgba(0,153,220,0.55);
1966    background-color: rgba(0,153,220,0.18);
1967  }
1968  .pillar-icon-wrap::after {
1969    content: '';
1970    position: absolute;
1971    inset: -8px;
1972    border-radius: inherit;
1973    background: radial-gradient(circle, rgba(0,153,220,0.30), transparent 70%);
1974    opacity: 0;
1975    transition: opacity 0.3s ease;
1976    z-index: -1;
1977    filter: blur(8px);
1978  }
1979  .hub-card:hover .pillar-icon-wrap::after { opacity: 1; }
1980
1981  /* 1. GLOBE — meridians rotate, outer ring softly breathes, dot orbits */
1982  @keyframes pillar-globe-spin {
1983    from { transform: rotate(0deg); }
1984    to   { transform: rotate(360deg); }
1985  }
1986  .pillar-anim-globe-meridians {
1987    transform-origin: 12px 12px;
1988    animation: pillar-globe-spin 10s linear infinite;
1989  }
1990  @keyframes pillar-globe-ring-pulse {
1991    0%, 100% { transform: scale(1);    opacity: 1; }
1992    50%      { transform: scale(1.05); opacity: 0.85; }
1993  }
1994  .pillar-anim-globe-ring {
1995    transform-origin: 12px 12px;
1996    transform-box: fill-box;
1997    animation: pillar-globe-ring-pulse 3.5s ease-in-out infinite;
1998  }
1999  /* Orbiting dot: small circle that rotates around the globe at radius=9 */
2000  @keyframes pillar-globe-orbit {
2001    from { transform: rotate(0deg)   translateX(9px) rotate(0deg); }
2002    to   { transform: rotate(360deg) translateX(9px) rotate(-360deg); }
2003  }
2004  .pillar-anim-globe-orbit {
2005    transform-origin: 12px 12px;
2006    transform-box: fill-box;
2007    animation: pillar-globe-orbit 7s linear infinite;
2008  }
2009
2010  /* 2. LIGHTNING BOLT — pulse + tilt-wobble + spark */
2011  @keyframes pillar-bolt-pulse {
2012    0%, 100% { opacity: 1;    transform: scale(1)    rotate(0deg);  filter: drop-shadow(0 0 0 transparent); }
2013    25%      { opacity: 0.9;  transform: scale(1.12) rotate(-4deg); filter: drop-shadow(0 0 5px rgba(0,153,220,0.75)); }
2014    50%      { opacity: 1;    transform: scale(1.06) rotate(2deg);  filter: drop-shadow(0 0 4px rgba(0,153,220,0.55)); }
2015    75%      { opacity: 0.92; transform: scale(1.1)  rotate(-2deg); filter: drop-shadow(0 0 5px rgba(0,153,220,0.65)); }
2016  }
2017  .pillar-anim-bolt {
2018    transform-origin: 12px 12px;
2019    transform-box: fill-box;
2020    animation: pillar-bolt-pulse 1.6s ease-in-out infinite;
2021  }
2022  /* Spark dot: small bright dot that travels along the bolt path */
2023  @keyframes pillar-bolt-spark {
2024    0%, 100% { opacity: 0; transform: translate(0, 0)   scale(0.6); }
2025    10%      { opacity: 1; }
2026    50%      { opacity: 1; transform: translate(-3px, 4px) scale(1.2); }
2027    90%      { opacity: 0; transform: translate(-7px, 9px) scale(0.4); }
2028  }
2029  .pillar-anim-bolt-spark {
2030    transform-origin: 13px 8px;
2031    transform-box: fill-box;
2032    animation: pillar-bolt-spark 1.6s ease-in-out infinite;
2033  }
2034
2035  /* 3. COMPLIANCE — ring spin (faster) + check draws (faster) + 3 tick marks t
2035winkle */
2036  @keyframes pillar-ring-spin {
2037    from { transform: rotate(0deg); }
2038    to   { transform: rotate(360deg); }
2039  }
2040  .pillar-anim-check-ring {
2041    transform-origin: 12px 12px;
2042    animation: pillar-ring-spin 12s linear infinite;
2043  }
2044  @keyframes pillar-check-draw {
2045    0%   { stroke-dashoffset: 14; opacity: 0; }
2046    15%  { opacity: 1; }
2047    40%  { stroke-dashoffset: 0;  opacity: 1; }
2048    80%  { stroke-dashoffset: 0;  opacity: 1; }
2049    95%  { stroke-dashoffset: 14; opacity: 0.4; }
2050    100% { stroke-dashoffset: 14; opacity: 0; }
2051  }
2052  .pillar-anim-check {
2053    stroke-dasharray: 14;
2054    stroke-dashoffset: 14;
2055    animation: pillar-check-draw 3s ease-in-out infinite;
2056  }
2057  /* Three small tick-marks around the ring, twinkling in sequence */
2058  @keyframes pillar-tick-twinkle {
2059    0%, 80%, 100% { opacity: 0.15; transform: scale(0.7); }
2060    10%, 30%      { opacity: 1;    transform: scale(1); }
2061  }
2062  .pillar-anim-tick-1 {
2063    transform-origin: center;
2064    transform-box: fill-box;
2065    animation: pillar-tick-twinkle 3s ease-in-out infinite;
2066  }
2067  .pillar-anim-tick-2 {
2068    transform-origin: center;
2069    transform-box: fill-box;
2070    animation: pillar-tick-twinkle 3s ease-in-out infinite 1s;
2071  }
2072  .pillar-anim-tick-3 {
2073    transform-origin: center;
2074    transform-box: fill-box;
2075    animation: pillar-tick-twinkle 3s ease-in-out infinite 2s;
2076  }
2077
2078  /* 4. BREACH -- a fracture draws down the shield, severity dot pulses */
2079  @keyframes pillar-breach-draw {
2080    0%   { stroke-dashoffset: 14; opacity: 0; }
2081    20%  { opacity: 1; }
2082    50%  { stroke-dashoffset: 0;  opacity: 1; }
2083    80%  { stroke-dashoffset: 0;  opacity: 0.75; }
2084    100% { stroke-dashoffset: 14; opacity: 0; }
2085  }
2086  .pillar-anim-breach {
2087    stroke-dasharray: 14;
2088    stroke-dashoffset: 14;
2089    animation: pillar-breach-draw 4s ease-in-out infinite;
2090  }
2091  @keyframes pillar-breach-pulse {
2092    0%, 100% { opacity: 0.45; }
2093    50%      { opacity: 1; }
2094  }
2095  .pillar-anim-breach-dot {
2096    animation: pillar-breach-pulse 2.2s ease-in-out infinite;
2097  }
2098
2099  /* Respect motion preferences */
2100
2101  /* === Bar-draw for Visualize hub icon (mirrors pillar-check-draw) === */
2102  @keyframes pillar-bar-draw {
2103    0%   { stroke-dashoffset: 14; opacity: 0; }
2104    15%  { opacity: 1; }
2105    40%  { stroke-dashoffset: 0;  opacity: 1; }
2106    85%  { stroke-dashoffset: 0;  opacity: 1; }
2107    100% { stroke-dashoffset: 0;  opacity: 1; }
2108  }
2109  .pillar-anim-bar-1,
2110  .pillar-anim-bar-2,
2111  .pillar-anim-bar-3 {
2112    stroke-dasharray: 14;
2113    stroke-dashoffset: 14;
2114    animation: pillar-bar-draw 3s ease-in-out infinite;
2115  }
2116  .pillar-anim-bar-2 { animation-delay: 0.25s; }
2117  .pillar-anim-bar-3 { animation-delay: 0.5s;  }
2118
2119  /* === 4th tick twinkle for Environment hub icon (extends 1/2/3 pattern) === */
2120  .pillar-anim-tick-4 {
2121    transform-origin: center;
2122    transform-box: fill-box;
2123    animation: pillar-tick-twinkle 3s ease-in-out infinite 1.5s;
2124  }
2125
2126
2127  /* === Visualize / guided implementation: runway path draws in === */
2128  @keyframes pillar-runway-draw {
2129    0%   { stroke-dashoffset: 32; opacity: 0; }
2130    15%  { opacity: 1; }
2131    55%  { stroke-dashoffset: 0;  opacity: 1; }
2132    90%  { stroke-dashoffset: 0;  opacity: 1; }
2133    100% { stroke-dashoffset: 0;  opacity: 1; }
2134  }
2135  .pillar-anim-runway-draw {
2136    stroke-dasharray: 32;
2137    stroke-dashoffset: 32;
2138    animation: pillar-runway-draw 3.5s ease-in-out infinite;
2139  }
2140
2141  /* === Environment / monitor status dot: gentle pulse === */
2142  @keyframes pillar-monitor-dot-pulse {
2143    0%, 100% { opacity: 1;   transform: scale(1);   }
2144    50%      { opacity: 0.5; transform: scale(1.3); }
2145  }
2146  .pillar-anim-monitor-dot {
2147    transform-origin: 18px 7px;
2148    transform-box: fill-box;
2149    animation: pillar-monitor-dot-pulse 2.4s ease-in-out infinite;
2150  }
2151
2152  /* === Threat Intel / eye pupil: subtle pulse (different timing from ring) === */
2153  @keyframes pillar-eye-pupil-pulse {
2154    0%, 100% { opacity: 1;   transform: scale(1);    }
2155    50%      { opacity: 0.6; transform: scale(0.65); }
2156  }
2157  .pillar-anim-eye-pupil {
2158    transform-origin: 12px 12px;
2159    transform-box: fill-box;
2160    animation: pillar-eye-pupil-pulse 3.5s ease-in-out infinite;
2161  }
2162
2163  @media (prefers-reduced-motion: reduce) {
2164    .pillar-anim-globe-meridians,
2165    .pillar-anim-globe-ring,
2166    .pillar-anim-globe-orbit,
2167    .pillar-anim-bolt,
2168    .pillar-anim-bolt-spark,
2169    .pillar-anim-check,
2170    .pillar-anim-check-ring,
2171    .pillar-anim-tick-1, .pillar-anim-tick-2, .pillar-anim-tick-3, .pillar-anim-tick-4,
2172    .pillar-anim-breach, .pillar-anim-breach-dot,
2173    .pillar-anim-bar-1, .pillar-anim-bar-2, .pillar-anim-bar-3,
2174    .pillar-anim-runway-draw,
2175    .pillar-anim-monitor-dot,
2176    .pillar-anim-eye-pupil {
2177      animation: none !important;
2178    }
2179    .pillar-anim-check     { stroke-dashoffset: 0; opacity: 1; }
2180    .pillar-anim-breach     { stroke-dashoffset: 0; opacity: 0.8; }
2181    .pillar-anim-bar-1,
2182    .pillar-anim-bar-2,
2183    .pillar-anim-bar-3 { stroke-dashoffset: 0; opacity: 1; }
2184    .pillar-anim-runway-draw { stroke-dashoffset: 0; opacity: 1; }
2185    .pillar-icon-wrap { transition: none !important; }
2186  }
2187
2188  /* ============ SCROLLBAR HIDE (sticky hub-nav) ============ */
2189  .scrollbar-hide { scrollbar-width: none; -ms-overflow-style: none; }
2190  .scrollbar-hide::-webkit-scrollbar { display: none; }
2191
2192  /* ============ EXTENDED BRAND PALETTE ============ */
2193  /* Brand palette extends with purple + red accent for gradient treatments — used sparingly and only in gradients, never as standalone surface colors. */
2194  :root {
2195    --ap-cyan-rgb: 0, 153, 220;
2196    --ap-cyan-light-1: #33ADE3;
2197    --ap-cyan-light-2: #66C2EA;
2198    --ap-cyan-light-3: #7BC8E6;
2199    --ap-cyan-light-4: #A8D9ED;
2200    --ap-purple: #CB58D5;
2201    --ap-red: #E94142;
2202  }
2203
2204
2205  /* ============ DASHBOARD HERO ANIMATIONS (screenshot-derived) ============ */
2206  /* Posture grade ring fill: dasharray 754 = circumference of r=120; offset 445 = 41% fill */
2207  .ap-ring-anim { animation: ap-ring-fill 2s cubic-bezier(0.22, 1, 0.36, 1) 0.3s forwards; }
2208  @keyframes ap-ring-fill { to { stroke-dashoffset: 445; } }
2209  /* Compliance donut: r=100, c=628; 11% fill → offset 559 */
2210  .ap-donut-anim { animation: ap-donut-fill 2s cubic-bezier(0.22, 1, 0.36, 1) 0.4s forwards; }
2211  @keyframes ap-donut-fill { to { stroke-dashoffset: 559; } }
2212  /* Generic width-fill for posture/triage/agent bars */
2213  .ap-bar-fill {
2214    width: 0;
2215    animation: ap-bar-fill 1.6s cubic-bezier(0.22, 1, 0.36, 1) 0.3s forwards;
2216  }
2217  @keyframes ap-bar-fill { to { width: var(--w); } }
2218  /* Sparkline draw-in for KPI tiles */
2219  .ap-spark-line {
2220    stroke-dasharray: 600;
2221    stroke-dashoffset: 600;
2222    animation: ap-spark-draw 2.2s ease-out 0.3s forwards;
2223  }
2224  @keyframes ap-spark-draw { to { stroke-dashoffset: 0; } }
2225  .ap-spark-area {
2226    opacity: 0;
2227    animation: ap-spark-fade 1.4s ease-out 1s forwards;
2228  }
2229  @keyframes ap-spark-fade { to { opacity: 1; } }
2230  @media (prefers-reduced-motion: reduce) {
2231    .ap-ring-anim { animation: none; stroke-dashoffset: 445; }
2232    .ap-donut-anim { animation: none; stroke-dashoffset: 559; }
2233    .ap-bar-fill { animation: none; width: var(--w); }
2234    .ap-spark-line { animation: none; stroke-dashoffset: 0; }
2235    .ap-spark-area { animation: none; opacity: 1; }
2236  }
2237
2238  /* ============ GRADIENT UTILITIES ============ */
2239  /* Three-stop signature gradient — bold, used sparingly for impact moments (hero numbers, accent surfaces). */
2240  .gradient-text-brand {
2241    background-image: linear-gradient(90deg, #0099DC 0%, #CB58D5 54%, #E94142 100%);
2242    -webkit-background-clip: text;
2243    background-clip: text;
2244    color: transparent;
2245    -webkit-text-fill-color: transparent;
2246  }
2247
2248  /* Subtle washed surface — same palette at low opacity, used for highlight cards, footer-bar style surfaces. */
2249  .gradient-surface-brand {
2250    background-image: linear-gradient(135deg, rgba(0,153,220,0.10) 0%, rgba(158,95,166,0.08) 50%, rgba(233,65,66,0.06) 100%);
2251  }
2252
2253  /* Soft cyan-purple gradient — less aggressive than the three-stop, useful for accent rails and highlight tiles. */
2254  .gradient-rail-cyan-purple {
2255    background-image: linear-gradient(90deg, rgba(0,153,220,0.0) 0%, rgba(0,153,220,0.6) 30%, rgba(158,95,166,0.6) 70%, rgba(158,95,166,0.0) 100%);
2256  }
2257
2258  /* ============ EYEBROW WITH ANIMATED ACCENT LINE ============ */
2259  /* When .label-cap also has .eyebrow-line, a thin cyan→transparent line appears beside the text and sweeps subtly. */
2260  .label-cap.eyebrow-line {
2261    display: inline-flex;
2262    align-items: center;
2263    gap: 12px;
2264  }
2265
2266  .label-cap.eyebrow-line::before {
2267    content: '';
2268    display: inline-block;
2269    width: 6px; height: 6px;
2270    border-radius: 999px;
2271    background: #0099DC;
2272    box-shadow: 0 0 0 0 rgba(0,153,220,0.6);
2273    animation: eyebrowDot 2.4s ease-in-out infinite;
2274  }
2275  @keyframes eyebrowDot {
2276    0%, 100% { box-shadow: 0 0 0 0 rgba(0,153,220,0.5); opacity: 1; }
2277    50%      { box-shadow: 0 0 0 5px rgba(0,153,220,0); opacity: 0.55; }
2278  }
2279  @media (prefers-reduced-motion: reduce) {
2280    .label-cap.eyebrow-line::before { animation: none; }
2281  }
2282
2283  /* ============ HUB CARD HOVER LIFT ============ */
2284  /* Existing hub-card class gets a refined hover treatment — small lift, cyan-edge highlight, soft glow. */
2285  .hub-card {
2286    transition: transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1),
2287                border-color 0.32s ease,
2288                box-shadow 0.32s ease;
2289  }
2290  .hub-card:hover {
2291    transform: translateY(-3px);
2292    border-color: rgba(0,153,220,0.45);
2293    box-shadow:
2294      0 0 0 1px rgba(0,153,220,0.15) inset,
2295      0 12px 28px -12px rgba(0,153,220,0.35),
2296      0 24px 48px -24px rgba(0,0,0,0.55);
2297  }
2298  @media (prefers-reduced-motion: reduce) {
2299    .hub-card { transition: border-color 0.2s ease; }
2300    .hub-card:hover { transform: none; }
2301  }
2302
2303  /* ============ HUB CARD — RAISED LABEL VARIANT ============ */
2304  /* Used in #xdr "Where XDR fits". The .label-cap inside is lifted to
2305     straddle the top edge of the card as a pill badge. */
2306  .hub-card-raised-label {
2307    overflow: visible;        /* override base .hub-card overflow:hidden */
2308    padding-top: 38px;        /* room for the raised badge */
2309  }
2310  .hub-card-raised-label > .label-cap {
2311    position: absolute;
2312    top: 0;
2313    left: 50%;
2314    transform: translate(-50%, -40%);
2315    display: inline-flex;
2316    align-items: center;
2317    padding: 6px 14px;
2318    border-radius: 999px;
2319    background: #151e2b;                         /* matches page section bg */
2320    border: 1px solid rgba(0, 153, 220, 0.55);
2321    color: #0099DC;
2322    white-space: nowrap;
2323    margin-bottom: 0 !important;                 /* neutralize utility mb-3 */
2324    box-shadow: 0 1px 0 rgba(0, 153, 220, 0.08); /* subtle seat */
2325    transition: border-color 0.32s ease, box-shadow 0.32s ease, background 0.32s ease;
2326  }
2327  .hub-card-raised-label:hover > .label-cap {
2328    border-color: rgba(0, 153, 220, 0.9);
2329    box-shadow: 0 0 0 3px rgba(0, 153, 220, 0.08);
2330  }
2331  @media (prefers-reduced-motion: reduce) {
2332    .hub-card-raised-label > .label-cap { transition: none; }
2333  }
2334
2335  /* ============ AP-CARD: enhanced top accent gradient ============ */
2336  /* The existing ap-card already has a top accent line — extend it to the multi-color brand gradient on highlighted instances. */
2337  .ap-card.ap-card-accent::before {
2338    background: linear-gradient(90deg, transparent 0%, rgba(0,153,220,0.7) 25%, rgba(158,95,166,0.7) 50%, rgba(233,65,66,0.5) 75%, transparent 100%);
2339    height: 1.5px;
2340  }
2341
2342  /* ============ INTEGRATIONS PAGE ============ */
2343
2344  /* Slim category labels (replaces the old heavy cat-rule + cat-icon banner) */
2345  .int-cat {
2346    display: flex;
2347    align-items: baseline;
2348    gap: 12px;
2349    margin-bottom: 18px;
2350    padding-bottom: 10px;
2351    border-bottom: 1px solid rgba(36,48,66,0.6);
2352  }
2353  .int-cat-title {
2354    font-family: 'Poppins', sans-serif;
2355    font-size: 14px;
2356    font-weight: 600;
2357    color: #E6ECF3;
2358    letter-spacing: -0.005em;
2359  }
2360  .int-cat-count {
2361    font-family: 'Poppins', sans-serif;
2362    font-size: 11px;
2363    color: #9AA7B8;
2364    letter-spacing: 0.5px;
2365  }
2366  .int-cat-meta {
2367    margin-left: auto;
2368    font-family: 'Poppins', sans-serif;
2369    font-size: 10px;
2370    color: #5F6C7E;
2371    text-transform: uppercase;
2372    letter-spacing: 1.5px;
2373  }
2374
2375  /* Vertical card style: logo on top, name + description stacked below.
2376     Larger presence than the previous horizontal row — more breathing room,
2377     bigger logo, more readable copy. Designed for a 3-up grid on desktop. */
2378  .int-card {
2379    position: relative;
2380    display: flex;
2381    flex-direction: column;
2382    align-items: flex-start;
2383    gap: 16px;
2384    padding: 24px;
2385    background: rgba(15,22,32,0.6);
2386    border: 1px solid rgba(36,48,66,0.7);
2387    border-radius: 12px;
2388    transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
2389    min-height: 200px;
2390    /* Anchor-element resets — cards may be <a> or <div>, both should render identically */
2391    text-decoration: none;
2392    color: inherit;
2393  }
2394  a.int-card:focus-visible {
2395    outline: 2px solid rgba(0,153,220,0.6);
2396    outline-offset: 2px;
2397  }
2398  .int-card:hover {
2399    background: rgba(15,22,32,0.85);
2400    border-color: rgba(0,153,220,0.35);
2401    transform: translateY(-2px);
2402  }
2403  .int-card-logo {
2404    width: 56px; height: 56px;
2405    border-radius: 10px;
2406    overflow: hidden;
2407    flex-shrink: 0;
2408    display: flex; align-items: center; justify-content: center;
2409    background: #0F1620;
2410  }
2411  .int-card-body {
2412    flex: 1;
2413    min-width: 0;
2414    width: 100%;
2415  }
2416  .int-card-name {
2417    font-family: 'Poppins', sans-serif;
2418    font-size: 16px;
2419    font-weight: 600;
2420    color: #E6ECF3;
2421    margin: 0 0 6px;
2422    line-height: 1.3;
2423  }
2424  .int-card-desc {
2425    font-family: 'Poppins', sans-serif;
2426    font-size: 13px;
2427    color: #9AA7B8;
2428    margin: 0;
2429    line-height: 1.55;
2430    /* Cap at 3 lines for a uniform card height in the vertical layout */
2431    display: -webkit-box;
2432    -webkit-line-clamp: 3;
2433    -webkit-box-orient: vertical;
2434    overflow: hidden;
2435  }
2436
2437  /* Category tag on each card — same glass pill as the filter rail, pinned to
2438     the card's top-right corner. Injected by the catalog script. */
2439  .int-card-tag {
2440    position: absolute;
2441    top: 18px;
2442    right: 18px;
2443    display: inline-flex;
2444    align-items: center;
2445    padding: 4px 10px;
2446    border-radius: 999px;
2447    font-family: 'Poppins', sans-serif;
2448    font-size: 10.5px;
2449    font-weight: 500;
2450    letter-spacing: 0.01em;
2451    color: #B8C4D4;
2452    background: linear-gradient(180deg, rgba(31,43,54,0.6) 0%, rgba(15,22,32,0.6) 100%);
2453    border: 1px solid rgba(102,194,234,0.16);
2454    box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
2455    white-space: nowrap;
2456  }
2457
2458  /* Catalog grid override — scope to #int-catalog so we don't touch other
2459     grids on the page. The Tailwind utilities on each section default to
2460     2-col at the sm breakpoint; here we promote them to 3-col at md+. */
2461  #int-catalog .grid.sm\:grid-cols-2 {
2462    gap: 16px;
2463  }
2464  @media (min-width: 768px) {
2465    #int-catalog .grid.sm\:grid-cols-2 {
2466      grid-template-columns: repeat(3, minmax(0, 1fr));
2467    }
2468  }
2469
2470  /* Filter chip rail — glassy pill with a leading status dot (muted when idle,
2471     bright cyan when selected). Used in the catalog. */
2472  .int-chip {
2473    position: relative;
2474    display: inline-flex;
2475    align-items: center;
2476    gap: 8px;
2477    padding: 7px 14px;
2478    border-radius: 999px;
2479    font-family: 'Poppins', sans-serif;
2480    font-size: 12px;
2481    font-weight: 500;
2482    color: #9AA7B8;
2483    background: linear-gradient(180deg, rgba(31,43,54,0.55) 0%, rgba(15,22,32,0.55) 100%);
2484    border: 1px solid rgba(102,194,234,0.16);
2485    box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
2486    backdrop-filter: blur(10px) saturate(140%);
2487    -webkit-backdrop-filter: blur(10px) saturate(140%);
2488    cursor: pointer;
2489    transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
2490    white-space: nowrap;
2491  }
2492  .int-chip::before {
2493    content: '';
2494    width: 7px; height: 7px;
2495    border-radius: 999px;
2496    background: #5F6C7E;
2497    flex-shrink: 0;
2498    transition: background-color 0.15s ease, box-shadow 0.15s ease;
2499  }
2500  .int-chip:hover {
2501    color: #E6ECF3;
2502    border-color: rgba(0,153,220,0.40);
2503  }
2504  .int-chip:hover::before { background: #8A9BB0; }
2505  .int-chip.is-active {
2506    color: #E6ECF3;
2507    background: linear-gradient(180deg, rgba(0,153,220,0.18) 0%, rgba(0,153,220,0.06) 100%);
2508    border-color: rgba(0,153,220,0.55);
2509  }
2510  .int-chip.is-active::before {
2511    background: #0099DC;
2512    box-shadow: 0 0 0 3px rgba(0,153,220,0.20), 0 0 8px rgba(0,153,220,0.65);
2513  }
2514  .int-chip-count {
2515    font-family: 'Poppins', sans-serif;
2516    font-size: 10px;
2517    opacity: 0.7;
2518    margin-left: 2px;
2519  }
2520  .int-chip-dot {
2521    width: 6px; height: 6px;
2522    border-radius: 999px;
2523    flex-shrink: 0;
2524  }
2525  .int-chip-dot.is-ready    { background: #85D17F; }
2526  .int-chip-dot.is-beta     { background: #0099DC; }
2527  .int-chip-dot.is-roadmap  { background: #E5B548; }
2528
2529  /* Search input — bigger, calmer than the old field-input */
2530  .int-search {
2531    width: 100%;
2532    background: rgba(15,22,32,0.6);
2533    border: 1px solid rgba(36,48,66,0.7);
2534    border-radius: 10px;
2535    color: #E6ECF3;
2536    font-family: 'Poppins', sans-serif;
2537    font-size: 14px;
2538    padding: 10px 14px 10px 40px;
2539    transition: border-color 0.15s ease, background-color 0.15s ease;
2540  }
2541  .int-search:focus {
2542    outline: none;
2543    border-color: rgba(0,153,220,0.5);
2544    background: rgba(15,22,32,0.85);
2545  }
2546  .int-search::placeholder { color: #5F6C7E; }
2547
2548  /* Empty state — shows when filters return zero */
2549  .int-empty {
2550    text-align: center;
2551    padding: 48px 24px;
2552    border: 1px dashed rgba(36,48,66,0.8);
2553    border-radius: 12px;
2554    color: #9AA7B8;
2555  }
2556  .int-empty-title {
2557    font-family: 'Poppins', sans-serif;
2558    font-size: 16px;
2559    font-weight: 600;
2560    color: #E6ECF3;
2561    margin: 0 0 6px;
2562  }
2563  .int-empty-text {
2564    font-size: 13px;
2565    margin: 0 0 16px;
2566  }
2567
2568  /* Category sections hide cleanly when all their cards are filtered out */
2569  .int-cat-section.is-hidden { display: none; }
2570
2571  /* Flat-grid mode for the catalog. Active when no category-specific filter
2572     and no multi-category search results — every card becomes a direct grid
2573     child of #int-catalog, eliminating the per-section grid containers that
2574     would otherwise leave orphan cells at section boundaries. */
2575  #int-catalog.is-flat {
2576    display: grid;
2577    grid-template-columns: 1fr;
2578    gap: 12px;
2579  }
2580  @media (min-width: 640px) {
2581    #int-catalog.is-flat { grid-template-columns: repeat(2, 1fr); }
2582  }
2583  #int-catalog.is-flat .int-cat-section,
2584  #int-catalog.is-flat .int-cat-section > .grid {
2585    display: contents;
2586  }
2587  /* Hidden sections must beat the display:contents rule above. Use the same
2588     specificity prefix and !important to be unambiguous. */
2589  #int-catalog.is-flat .int-cat-section.is-hidden {
2590    display: none !important;
2591  }
2592
2593  @media (prefers-reduced-motion: reduce) {
2594    .int-card, .int-chip, .int-search { transition: none; }
2595    .int-card:hover { transform: none; }
2596  }
2597
2598  /* ============ CYBER INSURANCE READINESS ASSESSMENT ============ */
2599  .assess-option {
2600    background: transparent;
2601    transition: border-color 0.15s ease, background-color 0.15s ease;
2602  }
2603  .assess-option:hover {
2604    background: rgba(0, 153, 220, 0.04);
2605  }
2606  .assess-option-active {
2607    border-color: rgba(0, 153, 220, 0.55) !important;
2608    background: rgba(0, 153, 220, 0.08);
2609  }
2610  .assess-radio {
2611    accent-color: #0099DC;
2612    cursor: pointer;
2613  }
2614  @media (prefers-reduced-motion: reduce) {
2615    .assess-option { transition: none; }
2616  }
2617
2618  /* ============ STEP FORM ============ */
2619  .assess-step { display: none; }
2620  .assess-step.is-active { display: block; animation: assessStepFade 0.25s ease; }
2621  @keyframes assessStepFade {
2622    from { opacity: 0; transform: translateY(4px); }
2623    to   { opacity: 1; transform: translateY(0); }
2624  }
2625  @media (prefers-reduced-motion: reduce) {
2626    .assess-step.is-active { animation: none; }
2627  }
2628
2629  /* Top progress bar — gradient fill */
2630  .assess-stepbar-track {
2631    height: 6px;
2632    background: rgba(255, 255, 255, 0.06);
2633    border-radius: 999px;
2634    overflow: hidden;
2635    position: relative;
2636  }
2637  .assess-stepbar-fill {
2638    height: 100%;
2639    width: 0%;
2640    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 50%, #E94142 100%);
2641    border-radius: 999px;
2642    transition: width 0.35s ease;
2643    box-shadow: 0 0 12px rgba(0, 153, 220, 0.35);
2644  }
2645
2646  /* Step dots */
2647  .assess-stepdots {
2648    display: flex;
2649    gap: 4px;
2650    align-items: center;
2651    flex-wrap: wrap;
2652    max-width: 60%;
2653    justify-content: flex-end;
2654  }
2655  .assess-stepdot {
2656    width: 18px;
2657    height: 4px;
2658    border-radius: 999px;
2659    background: rgba(255, 255, 255, 0.10);
2660    transition: background 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, width 0.25s ease;
2661  }
2662  .assess-stepdot.is-done {
2663    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 100%);
2664  }
2665  .assess-stepdot.is-current {
2666    width: 28px;
2667    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 50%, #E94142 100%);
2668    box-shadow: 0 0 8px rgba(158, 95, 166, 0.4);
2669  }
2670  @media (max-width: 640px) {
2671    .assess-stepdots { max-width: 100%; justify-content: flex-start; margin-top: 4px; }
2672    .assess-stepdot { width: 14px; }
2673    .assess-stepdot.is-current { width: 22px; }
2674  }
2675
2676  /* Step nav buttons */
2677  .assess-step-nav {
2678    display: flex;
2679    align-items: center;
2680    justify-content: space-between;
2681    gap: 12px;
2682    flex-wrap: wrap;
2683  }
2684  .btn-step-prev {
2685    display: inline-flex;
2686    align-items: center;
2687    gap: 6px;
2688    padding: 10px 18px;
2689    border-radius: 999px;
2690    border: 1px solid var(--ap-line, #2A3744);
2691    background: transparent;
2692    color: var(--ap-fog, #C5CDD7);
2693    font-family: 'Poppins', sans-serif;
2694    font-size: 14px;
2695    font-weight: 500;
2696    cursor: pointer;
2697    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
2698  }
2699  .btn-step-prev:hover:not(:disabled) {
2700    border-color: rgba(0, 153, 220, 0.55);
2701    color: var(--ap-text, #E6ECF3);
2702    background: rgba(0, 153, 220, 0.06);
2703  }
2704  .btn-step-prev:disabled {
2705    opacity: 0.4;
2706    cursor: not-allowed;
2707  }
2708  .btn-step-next {
2709    display: inline-flex;
2710    align-items: center;
2711    gap: 8px;
2712    padding: 11px 22px;
2713    border-radius: 999px;
2714    border: none;
2715    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 55%, #E94142 100%);
2716    background-size: 200% 100%;
2717    background-position: 0% 50%;
2718    color: #ffffff;
2719    font-family: 'Poppins', sans-serif;
2720    font-size: 14px;
2721    font-weight: 600;
2722    cursor: pointer;
2723    transition: background-position 0.4s ease, transform 0.15s ease, box-shadow 0.2s ease, opacity 0.2s ease;
2724    box-shadow: 0 4px 14px rgba(0, 153, 220, 0.25);
2725  }
2726  .btn-step-next:hover:not(:disabled) {
2727    background-position: 100% 50%;
2728    transform: translateY(-1px);
2729    box-shadow: 0 6px 18px rgba(158, 95, 166, 0.35);
2730  }
2731  .btn-step-next:disabled {
2732    opacity: 0.45;
2733    cursor: not-allowed;
2734    box-shadow: none;
2735    transform: none;
2736  }
2737  .assess-step-counter {
2738    font-family: 'Poppins', sans-serif;
2739    font-size: 11px;
2740    letter-spacing: 0.12em;
2741    text-transform: uppercase;
2742    color: var(--ap-cyan, #0099DC);
2743  }
2744  .assess-step-counter .step-current { color: var(--ap-text, #E6ECF3); }
2745
2746  /* ============ BRAND PARTNER LOGOS ============ */
2747  .ap-brand-logo {
2748    height: 28px;
2749    width: auto;
2750    max-width: 160px;
2751    display: block;
2752  }
2753  .ap-brand-logo-wrap {
2754    height: 40px;
2755    display: flex;
2756    align-items: center;
2757  }
2758  /* Customer-logo strip sits on a dark panel. Logos are normalized to a single
2759     white tint via a CSS overlay (filter), so any logo — dark, colored, or
2760     white — reads uniformly on the dark strip and the row looks like one set.
2761     Requires TRANSPARENT logos (PNG/SVG); an opaque background would whiten
2762     into a solid box. All current logos are transparent. */
2763  .cust-logo-cell {
2764    display: flex;
2765    align-items: center;
2766    justify-content: center;
2767    flex: 0 0 auto;
2768    /* Definite cell size so SVGs that carry only a viewBox (no width/height)
2769       still render — Chrome collapses such SVGs to 0×0 when sizing is auto.
2770       object-fit:contain then scales any logo (PNG or SVG) to fit, undistorted. */
2771    width: 180px;
2772    height: 56px;
2773    background: transparent;
2774  }
2775  .cust-logo-cell img {
2776    width: 100%;
2777    height: 100%;
2778    object-fit: contain;
2779    display: block;
2780    /* White overlay: brightness(0) flattens every color to black, invert(1)
2781       turns it white — so all logos become a uniform mark that reads as a soft
2782       light-grey on the dark strip at this opacity. */
2783    filter: brightness(0) invert(1);
2784    opacity: 0.8;
2785    transition: opacity 0.15s ease;
2786  }
2787  .cust-logo-cell img:hover { opacity: 1; }
2788  /* Pre-hydration fallback bar (see the fallback-only cells in the marquee
2789     markup): a quiet skeleton block in place of visible placeholder text. */
2790  .cust-logo-skel {
2791    display: block;
2792    width: 120px;
2793    height: 16px;
2794    border-radius: 4px;
2795    background: #1F2A3A;
2796    opacity: 0.55;
2797  }
2798
2799  /* Trusted-by logo marquee: full-bleed auto-scroll. The data-cms-list track is
2800     cloned client-side (after cms:ready) to fill the viewport and then doubled,
2801     so translateX(-50%) loops seamlessly. Per-cell margin (not flex gap) keeps
2802     the two halves identical so the wrap is invisible. Edge mask fades logos in
2803     and out at the screen edges; hover pauses; reduced-motion falls back to a
2804     static centered wrap. */
2805  .cust-logo-marquee {
2806    overflow: hidden;
2807    width: 100%;
2808    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 7%, #000 93%, transparent 100%);
2809            mask-image: linear-gradient(to right, transparent 0, #000 7%, #000 93%, transparent 100%);
2810  }
2811  .cust-logo-track {
2812    display: flex;
2813    flex-wrap: nowrap;
2814    width: max-content;
2815    align-items: center;
2816    will-change: transform;
2817    animation: cust-logo-scroll var(--cust-logo-dur, 45s) linear infinite;
2818  }
2819  .cust-logo-track .cust-logo-cell { margin-right: 96px; }
2820  .cust-logo-marquee:hover .cust-logo-track { animation-play-state: paused; }
2821  @keyframes cust-logo-scroll {
2822    from { transform: translateX(0); }
2823    to   { transform: translateX(-50%); }
2824  }
2825  @media (prefers-reduced-motion: reduce) {
2826    .cust-logo-track { animation: none; flex-wrap: wrap; justify-content: center; width: auto; row-gap: 32px; }
2827    .cust-logo-track .cust-logo-cell { margin-right: 48px; }
2828  }
2829
2830  /* ============ BLOG / ARTICLE ============ */
2831  .ap-article-prose {
2832    max-width: 68ch;
2833    font-size: 17px;
2834    line-height: 1.7;
2835    color: var(--ap-fog, #C5CDD7);
2836  }
2837  .ap-article-prose > * + * { margin-top: 1.25em; }
2838  .ap-article-prose h2 {
2839    font-family: 'Poppins', sans-serif;
2840    font-weight: 600;
2841    font-size: 28px;
2842    line-height: 1.25;
2843    color: var(--ap-text, #E6ECF3);
2844    margin-top: 2em;
2845    margin-bottom: 0.6em;
2846  }
2847  .ap-article-prose h3 {
2848    font-family: 'Poppins', sans-serif;
2849    font-weight: 600;
2850    font-size: 21px;
2851    line-height: 1.3;
2852    color: var(--ap-text, #E6ECF3);
2853    margin-top: 1.8em;
2854    margin-bottom: 0.5em;
2855  }
2856  .ap-article-prose p { color: var(--ap-fog, #C5CDD7); }
2857  .ap-article-prose strong { color: var(--ap-text, #E6ECF3); font-weight: 600; }
2858  .ap-article-prose a {
2859    color: var(--ap-cyan, #0099DC);
2860    text-decoration: underline;
2861    text-decoration-color: rgba(0,153,220,0.4);
2862    text-underline-offset: 3px;
2863    transition: text-decoration-color 0.15s ease;
2864  }
2865  .ap-article-prose a:hover { text-decoration-color: var(--ap-cyan, #0099DC); }
2866  .ap-article-prose ul, .ap-article-prose ol {
2867    padding-left: 1.5em;
2868  }
2869  .ap-article-prose ul { list-style: none; }
2870  .ap-article-prose ul li {
2871    position: relative;
2872    margin-top: 0.5em;
2873  }
2874  .ap-article-prose ul li::before {
2875    content: "→";
2876    position: absolute;
2877    left: -1.5em;
2878    color: var(--ap-cyan, #0099DC);
2879    font-family: 'Poppins', sans-serif;
2880    font-size: 14px;
2881  }
2882  .ap-article-prose ol { list-style: decimal; }
2883  .ap-article-prose ol li { margin-top: 0.5em; padding-left: 0.3em; }
2884  .ap-article-prose blockquote {
2885    border-left: 3px solid var(--ap-cyan, #0099DC);
2886    padding: 0.4em 0 0.4em 1.2em;
2887    font-style: italic;
2888    color: var(--ap-text, #E6ECF3);
2889    margin: 1.8em 0;
2890  }
2891  .ap-article-prose code {
2892    font-family: 'Poppins', sans-serif;
2893    font-size: 0.88em;
2894    background: rgba(0,153,220,0.08);
2895    border: 1px solid rgba(0,153,220,0.2);
2896    color: var(--ap-cyan, #33ADE3);
2897    padding: 0.15em 0.4em;
2898    border-radius: 4px;
2899  }
2900  .ap-article-prose pre {
2901    background: #0B1117;
2902    border: 1px solid #243042;
2903    border-radius: 8px;
2904    padding: 1em;
2905    overflow-x: auto;
2906    font-size: 14px;
2907    line-height: 1.6;
2908    margin: 1.8em 0;
2909  }
2910  .ap-article-prose pre code {
2911    background: transparent;
2912    border: none;
2913    color: var(--ap-fog, #C5CDD7);
2914    padding: 0;
2915  }
2916  .ap-article-callout {
2917    background: linear-gradient(180deg, rgba(0,153,220,0.06) 0%, rgba(0,153,220,0.02) 100%);
2918    border: 1px solid rgba(0,153,220,0.25);
2919    border-radius: 10px;
2920    padding: 18px 22px;
2921    margin: 1.8em 0;
2922  }
2923  .ap-article-callout-label {
2924    font-family: 'Poppins', sans-serif;
2925    font-size: 10px;
2926    color: var(--ap-cyan, #0099DC);
2927    letter-spacing: 0.18em;
2928    text-transform: uppercase;
2929    margin-bottom: 6px;
2930  }
2931  .ap-article-callout p { margin-top: 0 !important; }
2932  .ap-blog-tag {
2933    display: inline-block;
2934    font-family: 'Poppins', sans-serif;
2935    font-size: 10px;
2936    letter-spacing: 0.14em;
2937    text-transform: uppercase;
2938    padding: 4px 10px;
2939    border-radius: 999px;
2940    background: rgba(0,153,220,0.08);
2941    border: 1px solid rgba(0,153,220,0.3);
2942    color: #33ADE3;
2943  }
2944  .ap-blog-tag.is-muted {
2945    background: transparent;
2946    border-color: #243042;
2947    color: #9AA7B8;
2948  }
2949  .ap-blog-card {
2950    display: block;
2951    background: linear-gradient(180deg, #1A2434 0%, #141C28 100%);
2952    border: 1px solid #243042;
2953    border-radius: 14px;
2954    padding: 22px;
2955    transition: border-color 0.15s ease, transform 0.15s ease;
2956  }
2957  .ap-blog-card:hover {
2958    border-color: rgba(0,153,220,0.4);
2959    transform: translateY(-2px);
2960  }
2961  .ap-blog-card-cover {
2962    aspect-ratio: 16 / 9;
2963    background: linear-gradient(135deg, #0F1620 0%, #1A2434 100%);
2964    border-radius: 8px;
2965    margin-bottom: 18px;
2966    position: relative;
2967    overflow: hidden;
2968  }
2969  .ap-blog-card-cover.is-gradient-1 { background: linear-gradient(135deg, rgba(0,153,220,0.12) 0%, rgba(158,95,166,0.08) 100%); }
2970  .ap-blog-card-cover.is-gradient-2 { background: linear-gradient(135deg, rgba(158,95,166,0.12) 0%, rgba(233,65,66,0.06) 100%); }
2971  .ap-blog-card-cover.is-gradient-3 { background: linear-gradient(135deg, rgba(0,153,220,0.14) 0%, rgba(0,153,220,0.04) 100%); }
2972  .ap-blog-card-cover.is-gradient-4 { background: linear-gradient(135deg, rgba(63,191,127,0.10) 0%, rgba(0,153,220,0.06) 100%); }
2973  .ap-blog-card-cover.is-gradient-5 { background: linear-gradient(135deg, rgba(233,65,66,0.08) 0%, rgba(158,95,166,0.06) 100%); }
2974  .ap-blog-meta {
2975    font-family: 'Poppins', sans-serif;
2976    font-size: 11px;
2977    color: #9AA7B8;
2978    letter-spacing: 0.06em;
2979  }
2980
2981  /* ============ MEGA MENU ============ */
2982  .megamenu-wrap { position: relative; }
2983  .megamenu-panel {
2984    position: absolute;
2985    top: 100%;
2986    left: 50%;
2987    transform: translateX(-50%) translateY(-2px);
2988    padding-top: 12px;
2989    opacity: 0;
2990    pointer-events: none;
2991    transition: opacity 0.22s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
2992    z-index: 50;
2993  }
2994  .megamenu-wrap.is-open .megamenu-panel,
2995  .megamenu-wrap:hover .megamenu-panel,
2996  .megamenu-wrap:focus-within .megamenu-panel {
2997    opacity: 1;
2998    pointer-events: auto;
2999    transform: translateX(-50%) translateY(0);
3000  }
3001
3002  /* Platform is the leftmost menu, so centring its panel on the trigger runs it
3003     off the left edge of the viewport. Anchor that one to the trigger instead. */
3004  .megamenu-wrap[data-megamenu="platform"] .megamenu-panel {
3005    left: 0;
3006    transform: translateX(0) translateY(-2px);
3007  }
3008  .megamenu-wrap[data-megamenu="platform"].is-open .megamenu-panel,
3009  .megamenu-wrap[data-megamenu="platform"]:hover .megamenu-panel,
3010  .megamenu-wrap[data-megamenu="platform"]:focus-within .megamenu-panel {
3011    transform: translateX(0) translateY(0);
3012  }
3013  .megamenu-wrap[data-megamenu="platform"].is-suppressed:hover .megamenu-panel,
3014  .megamenu-wrap[data-megamenu="platform"].is-suppressed:focus-within .megamenu-panel,
3015  .megamenu-wrap[data-megamenu="platform"].is-suppressed .megamenu-panel {
3016    transform: translateX(0) translateY(-2px) !important;
3017  }
3018  /* Override after click: suppress hover/focus reopen briefly so the menu closes after navigation */
3019  .megamenu-wrap.is-suppressed:hover .megamenu-panel,
3020  .megamenu-wrap.is-suppressed:focus-within .megamenu-panel,
3021  .megamenu-wrap.is-suppressed .megamenu-panel {
3022    opacity: 0 !important;
3023    pointer-events: none !important;
3024    transform: translateX(-50%) translateY(-2px) !important;
3025  }
3026  /* Sign-in dropdown (header secondary CTA). Opens on hover/focus like the
3027     megamenus, so no JS is required. */
3028  .signin-menu { position: relative; display: inline-flex; }
3029  .signin-trigger {
3030    display: inline-flex; align-items: center; gap: 5px;
3031    background: none; border: 0; padding: 0; margin: 0;
3032    font: inherit; line-height: 1; cursor: pointer;
3033  }
3034  .signin-trigger svg { transition: transform 0.22s cubic-bezier(0.2, 0.7, 0.2, 1); }
3035  .signin-menu:hover .signin-trigger svg,
3036  .signin-menu:focus-within .signin-trigger svg { transform: rotate(180deg); }
3037  .signin-panel {
3038    position: absolute;
3039    top: 100%;
3040    right: 0;
3041    padding-top: 12px;
3042    opacity: 0;
3043    pointer-events: none;
3044    transform: translateY(-2px);
3045    transition: opacity 0.22s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
3046    z-index: 50;
3047  }
3048  .signin-menu:hover .signin-panel,
3049  .signin-menu:focus-within .signin-panel {
3050    opacity: 1;
3051    pointer-events: auto;
3052    transform: translateY(0);
3053  }
3054  .signin-card {
3055    background: linear-gradient(180deg, #1A2434 0%, #141C28 100%);
3056    border: 1px solid #243042;
3057    border-radius: 12px;
3058    box-shadow:
3059      0 1px 0 rgba(255,255,255,0.04) inset,
3060      0 24px 60px -20px rgba(0,0,0,0.6),
3061      0 8px 20px -8px rgba(0,0,0,0.4);
3062    padding: 8px;
3063    min-width: 232px;
3064  }
3065  .signin-option {
3066    display: flex;
3067    align-items: center;
3068    gap: 11px;
3069    padding: 10px 12px;
3070    border-radius: 8px;
3071    text-decoration: none;
3072    transition: background-color 0.15s ease;
3073  }
3074  .signin-option:hover { background: rgba(0,153,220,0.10); }
3075  .signin-option-icon {
3076    flex: 0 0 auto;
3077    display: inline-flex;
3078    align-items: center;
3079    justify-content: center;
3080    width: 22px;
3081    height: 22px;
3082    color: #0099DC;
3083  }
3084  .signin-option-icon svg { width: 100%; height: 100%; display: block; }
3085  .signin-option-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
3086  .signin-option-label {
3087    font-family: 'Poppins', sans-serif;
3088    font-weight: 500;
3089    font-size: 14px;
3090    color: #E6ECF3;
3091  }
3092  .signin-option-desc { font-size: 12px; color: #9AA7B8; }
3093  /* Icon inside the mobile drawer sign-in buttons */
3094  .mobile-drawer-signin .signin-option-icon { width: 18px; height: 18px; }
3095  .megamenu-card {
3096    background: linear-gradient(180deg, #1A2434 0%, #141C28 100%);
3097    border: 1px solid #243042;
3098    border-radius: 14px;
3099    box-shadow:
3100      0 1px 0 rgba(255,255,255,0.04) inset,
3101      0 24px 60px -20px rgba(0,0,0,0.6),
3102      0 8px 20px -8px rgba(0,0,0,0.4);
3103    padding: 20px;
3104    min-width: 560px;
3105    max-width: 760px;
3106  }
3107  .megamenu-card.is-wide { min-width: 720px; }
3108  .megamenu-card.is-narrow { min-width: 420px; max-width: 460px; }
3109  .megamenu-grid {
3110    display: grid;
3111    gap: 4px;
3112  }
3113  .megamenu-grid.cols-2 { grid-template-columns: 1fr 1fr; column-gap: 20px; }
3114  .megamenu-section-label {
3115    font-family: 'Poppins', sans-serif;
3116    font-size: 10px;
3117    color: #6B7889;
3118    letter-spacing: 0.18em;
3119    text-transform: uppercase;
3120    padding: 8px 12px 6px;
3121    margin-top: 4px;
3122    border-top: 1px solid #1F2A3A;
3123  }
3124  .megamenu-section-label:first-child { border-top: none; margin-top: 0; padding-top: 4px; }
3125  .megamenu-item {
3126    display: block;
3127    padding: 10px 12px;
3128    border-radius: 8px;
3129    color: #E6ECF3;
3130    transition: background-color 0.12s ease;
3131    text-decoration: none;
3132  }
3133  .megamenu-item:hover, .megamenu-item:focus-visible {
3134    background: rgba(0,153,220,0.06);
3135    outline: none;
3136  }
3137  .megamenu-item:focus-visible { box-shadow: 0 0 0 2px rgba(0,153,220,0.5); }
3138  .megamenu-item-title {
3139    font-family: 'Poppins', sans-serif;
3140    font-weight: 600;
3141    font-size: 14px;
3142    color: #E6ECF3;
3143    line-height: 1.3;
3144    display: block;
3145  }
3146  .megamenu-item-desc {
3147    font-size: 12px;
3148    color: #9AA7B8;
3149    line-height: 1.4;
3150    margin-top: 2px;
3151    display: block;
3152  }
3153  .megamenu-item.is-overview {
3154    border-bottom: 1px solid #1F2A3A;
3155    margin-bottom: 6px;
3156    padding-bottom: 12px;
3157  }
3158  .megamenu-item.is-overview .megamenu-item-title { color: #33ADE3; }
3159
3160  /* ============================================================
3161     DuoPane megamenu — two-pane layout: text nav on left, visual
3162     showcase on right. Applied via .megamenu-card.is-duopane.
3163     ============================================================ */
3164  .megamenu-card.is-duopane {
3165    /* Width auto-shrinks so the panel never spills off the viewport edge;
3166       capped so it never exceeds the designed width. Menus whose link list
3167       splits two-up (.is-split-nav, see nav-render.js NAV_COLUMN_BREAK) need
3168       the wider cap; the left pane carries two link columns. */
3169    min-width: 0;
3170    width: min(820px, calc(100vw - 440px));
3171    max-width: 820px;
3172    padding: 0;
3173    display: grid;
3174    grid-template-columns: 1.05fr 0.95fr;
3175    overflow: hidden;
3176  }
3177  .megamenu-card.is-duopane.is-split-nav {
3178    width: min(1000px, calc(100vw - 280px));
3179    max-width: 1000px;
3180    grid-template-columns: minmax(0, 1fr) 360px;
3181  }
3182  .duopane-nav {
3183    padding: 22px 22px 22px 24px;
3184    border-right: 1px solid #1F2A3A;
3185  }
3186  .duopane-nav .megamenu-section-label {
3187    border-top: none;
3188    margin-top: 12px;
3189    padding: 0 0 6px;
3190    font-size: 10px;
3191  }
3192  .duopane-nav .megamenu-section-label:first-child { margin-top: 0; }
3193
3194  /* Two-up link list. The second column starts at the group named in
3195     NAV_COLUMN_BREAK (nav-render.js), which wraps each half in .duopane-col. */
3196  .duopane-nav.is-split {
3197    display: grid;
3198    grid-template-columns: 1fr 1fr;
3199    column-gap: 18px;
3200    align-items: start;
3201  }
3202  .duopane-nav.is-split .duopane-col > .megamenu-section-label:first-child { margin-top: 0; }
3203
3204  /* Each link gets an icon on the left in DuoPane layout */
3205  .duopane-nav .megamenu-item {
3206    display: grid;
3207    grid-template-columns: 32px 1fr;
3208    gap: 12px;
3209    align-items: start;
3210    padding: 10px 12px;
3211  }
3212  .duopane-nav .megamenu-item.is-overview {
3213    grid-template-columns: 32px 1fr;
3214  }
3215  .duopane-icon {
3216    width: 32px; height: 32px;
3217    border-radius: 8px;
3218    background: linear-gradient(135deg, rgba(0,153,220,0.12), rgba(158,95,166,0.06));
3219    border: 1px solid rgba(0,153,220,0.18);
3220    display: inline-flex; align-items: center; justify-content: center;
3221    color: #0099DC;
3222    flex-shrink: 0;
3223    transition: all 0.15s ease;
3224  }
3225  .duopane-nav .megamenu-item:hover .duopane-icon,
3226  .duopane-nav .megamenu-item:focus-visible .duopane-icon {
3227    border-color: rgba(0,153,220,0.45);
3228    background: linear-gradient(135deg, rgba(0,153,220,0.22), rgba(158,95,166,0.1));
3229    transform: scale(1.04);
3230  }
3231  .duopane-icon svg { width: 18px; height: 18px; }
3232  /* Advise (the Advisory-layer item) gets the purple brand color to set it apart. */
3233  .duopane-nav .megamenu-item[href*="advise"] .duopane-icon {
3234    color: #CB58D5;
3235    border-color: rgba(203,88,213,0.30);
3236    background: linear-gradient(135deg, rgba(203,88,213,0.16), rgba(158,95,166,0.08));
3237  }
3238  .duopane-nav .megamenu-item[href*="advise"]:hover .duopane-icon,
3239  .duopane-nav .megamenu-item[href*="advise"]:focus-visible .duopane-icon {
3240    border-color: rgba(203,88,213,0.5);
3241    background: linear-gradient(135deg, rgba(203,88,213,0.26), rgba(158,95,166,0.12));
3242  }
3243
3244  /* Right showcase pane */
3245  .duopane-showcase {
3246    padding: 22px 24px 24px 22px;
3247    background:
3248      radial-gradient(140% 90% at 100% 0%, rgba(0,153,220,0.14) 0%, transparent 62%),
3249      radial-gradient(110% 80% at 0% 100%, rgba(158,95,166,0.10) 0%, transparent 62%),
3250      radial-gradient(80% 60% at 100% 100%, rgba(233,65,66,0.05) 0%, transparent 60%),
3251      linear-gradient(180deg, #131c2a 0%, #0f1822 100%);
3252    display: flex;
3253    flex-direction: column;
3254    gap: 14px;
3255    position: relative;
3256  }
3257  .duopane-showcase-eyebrow {
3258    font-family: 'Poppins', sans-serif;
3259    font-size: 10px;
3260    font-weight: 500;
3261    letter-spacing: 0.18em;
3262    text-transform: uppercase;
3263    color: #0099DC;
3264  }
3265  .duopane-showcase-title {
3266    font-family: 'Poppins', sans-serif;
3267    font-weight: 600;
3268    font-size: 17px;
3269    line-height: 1.3;
3270    letter-spacing: -0.01em;
3271    color: #E6ECF3;
3272    margin: 0;
3273  }
3274  .duopane-showcase-title::after { content: '.'; }
3275  .duopane-showcase-desc {
3276    font-size: 12px;
3277    line-height: 1.5;
3278    color: #9AA7B8;
3279    margin: 0;
3280  }
3281  /* Showcase rail as a navigation surface (#194 nav pass): the Platform rail
3282     carries the five hubs so the left columns can stay in buyer language. When
3283     links are present the rail's description acts as the signpost line into
3284     them, so it gets a rule; scoped with :has() so other showcases are
3285     untouched. */
3286  .duopane-showcase:has(.duopane-showcase-links) .duopane-showcase-desc {
3287    border-left: 2px solid #0099DC;
3288    padding-left: 12px;
3289    color: #B9C6D6;
3290  }
3291  .duopane-showcase-links {
3292    display: flex;
3293    flex-direction: column;
3294    gap: 1px;
3295    margin: 16px 0 4px;
3296    background: #1C2740;
3297    border: 1px solid #22304A;
3298    border-radius: 10px;
3299    overflow: hidden;
3300  }
3301  .duopane-hub-row {
3302    display: flex;
3303    align-items: center;
3304    gap: 12px;
3305    padding: 11px 13px;
3306    background: #0E1725;
3307    text-decoration: none;
3308    transition: background 0.16s ease;
3309  }
3310  .duopane-hub-row:hover,
3311  .duopane-hub-row:focus-visible { background: #14202F; }
3312  .duopane-hub-dot { flex: none; width: 7px; height: 7px; border-radius: 2px; }
3313  .duopane-hub-name {
3314    flex: none;
3315    min-width: 118px;
3316    font-family: 'Poppins', sans-serif;
3317    font-size: 12.5px;
3318    font-weight: 600;
3319    color: #DBE6F2;
3320  }
3321  .duopane-hub-row:hover .duopane-hub-name,
3322  .duopane-hub-row:focus-visible .duopane-hub-name { color: #7CC9EE; }
3323  .duopane-hub-desc { font-size: 11.5px; line-height: 1.4; color: #7D8B9D; }
3324  .duopane-hub-arrow { margin-left: auto; flex: none; font-size: 12px; color: #3B4A5F; }
3325  .duopane-hub-row:hover .duopane-hub-arrow,
3326  .duopane-hub-row:focus-visible .duopane-hub-arrow { color: #4FB8E8; }
3327  @media (prefers-reduced-motion: reduce) {
3328    .duopane-hub-row { transition: none; }
3329  }
3330
3331  .duopane-showcase-visual {
3332    min-height: 220px;
3333    display: flex;
3334    align-items: flex-start;
3335    justify-content: center;
3336    margin: 4px 0 8px;
3337  }
3338  .duopane-showcase-visual svg { width: 100%; height: auto; max-height: 260px; }
3339  .duopane-showcase-cta {
3340    display: inline-flex;
3341    align-items: center;
3342    gap: 6px;
3343    font-family: 'Poppins', sans-serif;
3344    font-weight: 500;
3345    font-size: 12px;
3346    color: #0099DC;
3347    text-decoration: none;
3348    padding: 7px 0;
3349    transition: color 0.12s ease, gap 0.18s ease;
3350  }
3351  .duopane-showcase-cta:hover { color: #33ADE3; gap: 10px; }
3352  .duopane-showcase-cta svg { width: 12px; height: 12px; }
3353
3354  /* Bottom CTA strip — optional, used for "promote a piece of content" */
3355  .duopane-promo {
3356    padding: 12px 14px;
3357    border-radius: 10px;
3358    background: linear-gradient(30deg, rgba(0,153,220,0.10), rgba(158,95,166,0.06), rgba(233,65,66,0.04));
3359    border: 1px solid rgba(0,153,220,0.22);
3360    display: flex; gap: 12px; align-items: center;
3361  }
3362  .duopane-promo-icon {
3363    width: 32px; height: 32px; border-radius: 8px; flex-shrink: 0;
3364    background: linear-gradient(30deg, #0099DC, #CB58D5);
3365    display: inline-flex; align-items: center; justify-content: center;
3366    color: #fff;
3367  }
3368  .duopane-promo-icon svg { width: 16px; height: 16px; }
3369  .duopane-promo-text { flex: 1; min-width: 0; }
3370  .duopane-promo-eyebrow {
3371    font-family: 'Poppins', sans-serif;
3372    font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase;
3373    color: #CB58D5;
3374  }
3375  .duopane-promo-title {
3376    font-family: 'Poppins', sans-serif; font-weight: 500;
3377    font-size: 13px; color: #E6ECF3;
3378    line-height: 1.3;
3379    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
3380  }
3381
3382  /* Smaller breakpoints fall back to single-column */
3383  @media (max-width: 980px) {
3384    .megamenu-card.is-duopane { grid-template-columns: 1fr; min-width: 480px; max-width: 560px; }
3385    .megamenu-card.is-duopane.is-split-nav { grid-template-columns: 1fr; max-width: 560px; }
3386    .duopane-nav.is-split { grid-template-columns: 1fr; }
3387    .duopane-nav { border-right: none; border-bottom: 1px solid #1F2A3A; }
3388  }
3389
3390  /* Solo variant — duopane nav styling (icons, spacing) but no showcase pane.
3391     Used when a menu's content doesn't need a visual showcase. */
3392  .megamenu-card.is-duopane.is-solo {
3393    grid-template-columns: 1fr;
3394    min-width: 520px;
3395    max-width: 600px;
3396  }
3397  .megamenu-card.is-duopane.is-solo .duopane-nav {
3398    border-right: none;
3399  }
3400
3401  /* ============================================================
3402     Showcase SVG animations — minimal, glow-forward system.
3403
3404     Design intent: gradient-glow breathing replaces active motion.
3405     Two source animations (breathe + drift) drive every legacy class
3406     via timing offsets, so all existing markup keeps working without
3407     the busy spin/flow/ripple noise of the previous library.
3408
3409     Per brand guidelines: gradient glow should feel ambient, not
3410     compete with primary content. "When in doubt, reduce rather
3411     than add." All durations 6s+, all opacity floors raised.
3412     ============================================================ */
3413
3414  /* Primary motion: gentle opacity + faint scale breathing (the "glow") */
3415  @keyframes duopane-breathe {
3416    0%, 100% { opacity: 0.7; transform: scale(1);     }
3417    50%      { opacity: 1;   transform: scale(1.015); }
3418  }
3419
3420  /* Ambient drift: barely-perceptible positional float for background layers */
3421  @keyframes duopane-drift {
3422    0%, 100% { transform: translate(0, 0);    }
3423    50%      { transform: translate(3px, -2px); }
3424  }
3425
3426  /* Opacity-only fade for staggered dots — no scale, no movement */
3427  @keyframes duopane-fade {
3428    0%, 100% { opacity: 0.55; }
3429    50%      { opacity: 1;    }
3430  }
3431
3432  /* --- Class map: every legacy hook → one of the three above --- */
3433
3434  /* Pulse / pulse-glow → breathing glow (no more growing ripples) */
3435  .duopane-anim-pulse,
3436  .duopane-anim-pulse-glow {
3437    animation: duopane-breathe 6s ease-in-out infinite;
3438    transform-origin: center;
3439    transform-box: fill-box;
3440  }
3441  .duopane-anim-pulse-glow { animation-duration: 7s; animation-delay: 1s; }
3442
3443  /* Flow variants → ambient fade (replaces marching dashed lines) */
3444  .duopane-anim-flow,
3445  .duopane-anim-flow-slow,
3446  .duopane-anim-flow-rev {
3447    animation: duopane-fade 8s ease-in-out infinite;
3448  }
3449  .duopane-anim-flow-slow { animation-duration: 9s; animation-delay: 0.8s; }
3450  .duopane-anim-flow-rev  { animation-duration: 7s; animation-delay: 1.6s; }
3451
3452  /* Float → soft drift (replaces hard translateY bobbing) */
3453  .duopane-anim-float,
3454  .duopane-anim-float-delay {
3455    animation: duopane-drift 9s ease-in-out infinite;
3456    transform-origin: center;
3457    transform-box: fill-box;
3458  }
3459  .duopane-anim-float-delay { animation-delay: 2s; }
3460
3461  /* Twinkle family → staggered fades, opacity-only */
3462  .duopane-anim-twinkle    { animation: duopane-fade 6s ease-in-out infinite;       }
3463  .duopane-anim-twinkle-2  { animation: duopane-fade 6s ease-in-out infinite 1.2s;  }
3464  .duopane-anim-twinkle-3  { animation: duopane-fade 6s ease-in-out infinite 2.4s;  }
3465  .duopane-anim-twinkle-4  { animation: duopane-fade 6s ease-in-out infinite 3.6s;  }
3466  .duopane-anim-twinkle-5  { animation: duopane-fade 6s ease-in-out infinite 4.8s;  }
3467
3468  /* Orbit / sweep / spin → static, with breathing glow (no rotation) */
3469  .duopane-anim-orbit,
3470  .duopane-anim-sweep,
3471  .duopane-anim-spin-slow,
3472  .duopane-anim-spin-slow-rev {
3473    animation: duopane-breathe 10s ease-in-out infinite;
3474    transform-origin: center;
3475    transform-box: fill-box;
3476  }
3477  .duopane-anim-sweep         { animation-duration: 8s;  animation-delay: 0.5s; }
3478  .duopane-anim-spin-slow-rev { animation-duration: 12s; animation-delay: 2s;   }
3479
3480  /* Drift — kept as drift but slowed and softened */
3481  .duopane-anim-drift,
3482  .duopane-anim-drift-delay {
3483    animation: duopane-drift 10s ease-in-out infinite;
3484    transform-origin: center;
3485    transform-box: fill-box;
3486  }
3487  .duopane-anim-drift-delay { animation-delay: 3.5s; }
3488
3489  /* Wobble + shimmer — both are opacity breathing, slightly different feel */
3490  .duopane-anim-wobble       { animation: duopane-fade 7s ease-in-out infinite;       }
3491  .duopane-anim-wobble-delay { animation: duopane-fade 7s ease-in-out infinite 2.5s;  }
3492  .duopane-anim-shimmer      { animation: duopane-breathe 6s ease-in-out infinite;    }
3493
3494  /* Honor user motion preferences */
3495  @media (prefers-reduced-motion: reduce) {
3496    .duopane-anim-pulse,
3497    .duopane-anim-pulse-glow,
3498    .duopane-anim-flow,
3499    .duopane-anim-flow-slow,
3500    .duopane-anim-flow-rev,
3501    .duopane-anim-float,
3502    .duopane-anim-float-delay,
3503    .duopane-anim-twinkle,
3504    .duopane-anim-twinkle-2,
3505    .duopane-anim-twinkle-3,
3506    .duopane-anim-twinkle-4,
3507    .duopane-anim-twinkle-5,
3508    .duopane-anim-orbit,
3509    .duopane-anim-sweep,
3510    .duopane-anim-drift,
3511    .duopane-anim-drift-delay,
3512    .duopane-anim-wobble,
3513    .duopane-anim-wobble-delay,
3514    .duopane-anim-shimmer,
3515    .duopane-anim-spin-slow,
3516    .duopane-anim-spin-slow-rev { animation: none !important; }
3517  }
3518
3519  /* ============================================================
3520     Showcase animations v2 — three distinct, scoped behaviors:
3521       1) Platform: dashboard "in action" — counting numbers, line draw
3522       2) Resources: card shuffle cycling through 3 content types
3523       3) Partners: orbital ring with counter-rotated badges
3524     ============================================================ */
3525
3526  /* --- Platform: Posture Dashboard --- */
3527
3528  /* Cycle the visibility of the four KPI value sets so the numbers
3529     appear to "tick" as data updates. Four sequential value tracks. */
3530  @keyframes duopane-kpi-tick-a {
3531    0%, 22%   { opacity: 1; }
3532    25%, 97%  { opacity: 0; }
3533    100%      { opacity: 1; }
3534  }
3535  @keyframes duopane-kpi-tick-b {
3536    0%, 22%   { opacity: 0; }
3537    25%, 47%  { opacity: 1; }
3538    50%, 100% { opacity: 0; }
3539  }
3540  @keyframes duopane-kpi-tick-c {
3541    0%, 47%   { opacity: 0; }
3542    50%, 72%  { opacity: 1; }
3543    75%, 100% { opacity: 0; }
3544  }
3545  @keyframes duopane-kpi-tick-d {
3546    0%, 72%   { opacity: 0; }
3547    75%, 97%  { opacity: 1; }
3548    100%      { opacity: 0; }
3549  }
3550  .duopane-kpi-a { animation: duopane-kpi-tick-a 12s steps(1, end) infinite; }
3551  .duopane-kpi-b { animation: duopane-kpi-tick-b 12s steps(1, end) infinite; }
3552  .duopane-kpi-c { animation: duopane-kpi-tick-c 12s steps(1, end) infinite; }
3553  .duopane-kpi-d { animation: duopane-kpi-tick-d 12s steps(1, end) infinite; }
3554
3555  /* Sparkline draws in on each KPI tick */
3556  @keyframes duopane-chart-draw {
3557    0%   { stroke-dashoffset: 600; }
3558    20%  { stroke-dashoffset: 0;   }
3559    100% { stroke-dashoffset: 0;   }
3560  }
3561  .duopane-chart-line {
3562    stroke-dasharray: 600;
3563    animation: duopane-chart-draw 12s ease-in-out infinite;
3564  }
3565
3566  /* Live dot pulse (a single, restrained dot) */
3567  @keyframes duopane-live-dot {
3568    0%, 100% { opacity: 1;   }
3569    50%      { opacity: 0.35;}
3570  }
3571  .duopane-live-dot { animation: duopane-live-dot 1.6s ease-in-out infinite; }
3572
3573  /* --- Resources: card shuffle --- */
3574
3575  /* 9s cycle. Each of three cards spends 3s "in front" then slides
3576     up-and-out as the next one rises into its place. We do this with
3577     transform + opacity. Three offset tracks. */
3578  @keyframes duopane-card-a {
3579    0%, 30%   { transform: translateY(0);   opacity: 1; }
3580    33%       { transform: translateY(-14px); opacity: 0; }
3581    34%, 96%  { transform: translateY(10px); opacity: 0; }
3582    100%      { transform: translateY(0);    opacity: 1; }
3583  }
3584  @keyframes duopane-card-b {
3585    0%, 30%   { transform: translateY(10px); opacity: 0; }
3586    34%, 63%  { transform: translateY(0);    opacity: 1; }
3587    66%, 100% { transform: translateY(-14px); opacity: 0; }
3588  }
3589  @keyframes duopane-card-c {
3590    0%, 63%   { transform: translateY(10px); opacity: 0; }
3591    66%, 96%  { transform: translateY(0);    opacity: 1; }
3592    100%      { transform: translateY(-14px); opacity: 0; }
3593  }
3594  .duopane-card-a { animation: duopane-card-a 9s cubic-bezier(0.4, 0, 0.2, 1) infinite; transform-origin: center; transform-box: fill-box; }
3595  .duopane-card-b { animation: duopane-card-b 9s cubic-bezier(0.4, 0, 0.2, 1) infinite; transform-origin: center; transform-box: fill-box; }
3596  .duopane-card-c { animation: duopane-card-c 9s cubic-bezier(0.4, 0, 0.2, 1) infinite; transform-origin: center; transform-box: fill-box; }
3597
3598  /* --- Partners: orbital ring --- */
3599
3600  @keyframes duopane-orbit-cw {
3601    from { transform: rotate(0deg);   }
3602    to   { transform: rotate(360deg); }
3603  }
3604  @keyframes duopane-orbit-ccw {
3605    from { transform: rotate(0deg);    }
3606    to   { transform: rotate(-360deg); }
3607  }
3608  .duopane-orbit-outer { animation: duopane-orbit-cw  60s linear infinite; transform-origin: 170px 130px; transform-box: view-box; }
3609  .duopane-orbit-mid   { animation: duopane-orbit-ccw 45s linear infinite; transform-origin: 170px 130px; transform-box: view-box; }
3610  .duopane-orbit-inner { animation: duopane-orbit-cw  35s linear infinite; transform-origin: 170px 130px; transform-box: view-box; }
3611  /* Counter-rotations keep badges upright while parent rings rotate.
3612     Each badge is drawn centered on (0,0) inside its translated parent,
3613     so transform-origin: 0 0 spins around the badge's true center. */
3614  .duopane-orbit-counter-outer { animation: duopane-orbit-ccw 60s linear infinite; transform-origin: 0 0; }
3615  .duopane-orbit-counter-mid   { animation: duopane-orbit-cw  45s linear infinite; transform-origin: 0 0; }
3616  .duopane-orbit-counter-inner { animation: duopane-orbit-ccw 35s linear infinite; transform-origin: 0 0; }
3617
3618  @media (prefers-reduced-motion: reduce) {
3619    .duopane-kpi-a,
3620    .duopane-kpi-b,
3621    .duopane-kpi-c,
3622    .duopane-kpi-d { animation: none !important; opacity: 1 !important; }
3623    .duopane-kpi-b,
3624    .duopane-kpi-c,
3625    .duopane-kpi-d { opacity: 0 !important; }   /* only first track visible */
3626    .duopane-chart-line { animation: none !important; stroke-dashoffset: 0 !important; }
3627    .duopane-live-dot { animation: none !important; }
3628    .duopane-card-a,
3629    .duopane-card-b,
3630    .duopane-card-c { animation: none !important; }
3631    .duopane-card-b,
3632    .duopane-card-c { opacity: 0 !important; }  /* only top card visible */
3633    .duopane-orbit-outer,
3634    .duopane-orbit-mid,
3635    .duopane-orbit-inner,
3636    .duopane-orbit-counter-outer,
3637    .duopane-orbit-counter-mid,
3638    .duopane-orbit-counter-inner { animation: none !important; }
3639  }
3640  .megamenu-item.megamenu-item-more {
3641    border-top: 1px solid #1F2A3A;
3642    margin-top: 4px;
3643    padding-top: 10px;
3644  }
3645  .megamenu-item.megamenu-item-more .megamenu-item-title {
3646    color: #33ADE3;
3647    font-weight: 500;
3648    font-size: 13px;
3649  }
3650  .megamenu-item.megamenu-item-more .megamenu-item-desc {
3651    color: #6B7889;
3652    font-size: 11px;
3653  }
3654  .megamenu-overview-eyebrow {
3655    font-family: 'Poppins', sans-serif;
3656    font-size: 10px;
3657    color: #0099DC;
3658    letter-spacing: 0.18em;
3659    text-transform: uppercase;
3660    margin-bottom: 2px;
3661  }
3662  @media (prefers-reduced-motion: reduce) {
3663    .megamenu-panel { transition: none; }
3664    .signin-panel, .signin-trigger svg { transition: none; }
3665  }
3666
3667  /* ============ CHATBOT WIDGET ============ */
3668  .ap-chat-fab {
3669    position: fixed;
3670    bottom: 24px;
3671    right: 24px;
3672    width: 56px;
3673    height: 56px;
3674    border-radius: 999px;
3675    background: linear-gradient(135deg, #0099DC 0%, #0084BF 100%);
3676    border: none;
3677    color: #fff;
3678    cursor: pointer;
3679    box-shadow: 0 8px 24px -4px rgba(0,153,220,0.5), 0 4px 12px -2px rgba(0,0,0,0.3);
3680    z-index: 9998;
3681    display: flex; align-items: center; justify-content: center;
3682    transition: transform 0.18s ease, box-shadow 0.18s ease;
3683  }
3684  .ap-chat-fab:hover { transform: translateY(-2px); box-shadow: 0 12px 32px -4px rgba(0,153,220,0.6), 0 6px 16px -2px rgba(0,0,0,0.4); }
3685  .ap-chat-fab:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
3686  .ap-chat-fab[aria-expanded="true"] svg.icon-open { display: none; }
3687  .ap-chat-fab[aria-expanded="false"] svg.icon-close { display: none; }
3688
3689  .ap-chat-panel {
3690    position: fixed;
3691    bottom: 92px;
3692    right: 24px;
3693    width: 380px;
3694    max-width: calc(100vw - 32px);
3695    height: 580px;
3696    max-height: calc(100vh - 120px);
3697    background: linear-gradient(180deg, #1A2434 0%, #141C28 100%);
3698    border: 1px solid #243042;
3699    border-radius: 16px;
3700    box-shadow:
3701      0 1px 0 rgba(255,255,255,0.04) inset,
3702      0 30px 80px -20px rgba(0,0,0,0.7),
3703      0 12px 30px -8px rgba(0,0,0,0.5);
3704    z-index: 9997;
3705    display: flex; flex-direction: column;
3706    overflow: hidden;
3707    transform: translateY(8px);
3708    opacity: 0;
3709    pointer-events: none;
3710    transition: opacity 0.18s ease, transform 0.18s ease;
3711  }
3712  .ap-chat-panel.is-open {
3713    opacity: 1;
3714    pointer-events: auto;
3715    transform: translateY(0);
3716  }
3717  .ap-chat-header {
3718    padding: 16px 18px;
3719    border-bottom: 1px solid #1F2A3A;
3720    display: flex; align-items: center; justify-content: space-between;
3721    background: rgba(0,153,220,0.04);
3722  }
3723  .ap-chat-header-title {
3724    font-family: 'Poppins', sans-serif;
3725    font-weight: 600;
3726    font-size: 15px;
3727    color: #E6ECF3;
3728    display: flex; align-items: center; gap: 8px;
3729  }
3730  .ap-chat-status-dot {
3731    width: 8px; height: 8px; border-radius: 999px;
3732    background: #3FBF7F;
3733    box-shadow: 0 0 0 2px rgba(63,191,127,0.2);
3734  }
3735  .ap-chat-header-actions { display: flex; gap: 4px; }
3736  .ap-chat-iconbtn {
3737    width: 30px; height: 30px;
3738    border-radius: 8px; border: none;
3739    background: transparent;
3740    color: #9AA7B8;
3741    cursor: pointer;
3742    display: flex; align-items: center; justify-content: center;
3743    transition: background-color 0.12s ease, color 0.12s ease;
3744  }
3745  .ap-chat-iconbtn:hover { background: rgba(154,167,184,0.08); color: #E6ECF3; }
3746  .ap-chat-iconbtn:focus-visible { outline: 2px solid #0099DC; outline-offset: 1px; }
3747
3748  .ap-chat-body {
3749    flex: 1;
3750    overflow-y: auto;
3751    padding: 18px;
3752    display: flex; flex-direction: column; gap: 10px;
3753    scrollbar-width: thin;
3754    scrollbar-color: #243042 transparent;
3755  }
3756  .ap-chat-body::-webkit-scrollbar { width: 6px; }
3757  .ap-chat-body::-webkit-scrollbar-thumb { background: #243042; border-radius: 3px; }
3758  .ap-chat-body::-webkit-scrollbar-track { background: transparent; }
3759
3760  .ap-chat-msg {
3761    max-width: 85%;
3762    padding: 10px 14px;
3763    border-radius: 14px;
3764    font-size: 14px;
3765    line-height: 1.45;
3766    word-wrap: break-word;
3767  }
3768  .ap-chat-msg.is-bot {
3769    background: #0F1620;
3770    border: 1px solid #1F2A3A;
3771    color: #E6ECF3;
3772    align-self: flex-start;
3773    border-bottom-left-radius: 4px;
3774  }
3775  .ap-chat-msg.is-user {
3776    background: #0099DC;
3777    color: #fff;
3778    align-self: flex-end;
3779    border-bottom-right-radius: 4px;
3780  }
3781  .ap-chat-msg.is-system {
3782    background: transparent;
3783    border: 1px dashed #243042;
3784    color: #9AA7B8;
3785    font-size: 12px;
3786    align-self: center;
3787    max-width: 100%;
3788    text-align: center;
3789  }
3790  .ap-chat-quick {
3791    display: flex; flex-direction: column; gap: 6px;
3792    align-self: flex-start;
3793    max-width: 95%;
3794  }
3795  .ap-chat-quick-btn {
3796    background: rgba(0,153,220,0.08);
3797    border: 1px solid rgba(0,153,220,0.3);
3798    color: #33ADE3;
3799    padding: 9px 14px;
3800    border-radius: 999px;
3801    font-size: 13px;
3802    font-weight: 500;
3803    cursor: pointer;
3804    text-align: left;
3805    transition: background-color 0.12s ease, border-color 0.12s ease;
3806    font-family: 'Poppins', sans-serif;
3807  }
3808  .ap-chat-quick-btn:hover {
3809    background: rgba(0,153,220,0.14);
3810    border-color: rgba(0,153,220,0.5);
3811  }
3812  .ap-chat-quick-btn:focus-visible { outline: 2px solid #0099DC; outline-offset: 1px; }
3813  .ap-chat-quick-btn.is-secondary {
3814    background: transparent;
3815    border-color: #243042;
3816    color: #9AA7B8;
3817  }
3818  .ap-chat-quick-btn.is-secondary:hover {
3819    border-color: #6B7889;
3820    color: #E6ECF3;
3821  }
3822
3823  .ap-chat-form {
3824    align-self: stretch;
3825    background: #0F1620;
3826    border: 1px solid #1F2A3A;
3827    border-radius: 14px;
3828    padding: 14px;
3829    display: flex; flex-direction: column; gap: 10px;
3830  }
3831  .ap-chat-form-label {
3832    font-size: 11px;
3833    color: #9AA7B8;
3834    font-family: 'Poppins', sans-serif;
3835    font-weight: 500;
3836    text-transform: uppercase;
3837    letter-spacing: 0.08em;
3838  }
3839  .ap-chat-input, .ap-chat-textarea, .ap-chat-select {
3840    width: 100%;
3841    background: #0B1117;
3842    border: 1px solid #243042;
3843    border-radius: 8px;
3844    padding: 9px 12px;
3845    color: #E6ECF3;
3846    font-size: 14px;
3847    font-family: 'Poppins', sans-serif;
3848    transition: border-color 0.12s ease;
3849  }
3850  .ap-chat-input:focus, .ap-chat-textarea:focus, .ap-chat-select:focus {
3851    outline: none;
3852    border-color: #0099DC;
3853  }
3854  .ap-chat-textarea { resize: vertical; min-height: 70px; }
3855  .ap-chat-input.is-invalid { border-color: #E5484D; }
3856  .ap-chat-error {
3857    font-size: 11px;
3858    color: #E5484D;
3859    margin-top: -4px;
3860  }
3861  .ap-chat-submit {
3862    background: #0099DC;
3863    color: #fff;
3864    border: none;
3865    border-radius: 999px;
3866    padding: 10px 16px;
3867    font-size: 13px;
3868    font-weight: 600;
3869    font-family: 'Poppins', sans-serif;
3870    cursor: pointer;
3871    transition: background-color 0.12s ease;
3872  }
3873  .ap-chat-submit:hover { background: #0084BF; }
3874  .ap-chat-submit:disabled { opacity: 0.5; cursor: not-allowed; }
3875  .ap-chat-submit:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
3876
3877  .ap-chat-footer {
3878    padding: 10px 14px;
3879    border-top: 1px solid #1F2A3A;
3880    font-size: 10px;
3881    color: #6B7889;
3882    text-align: center;
3883    font-family: 'Poppins', sans-serif;
3884    letter-spacing: 0.06em;
3885  }
3886
3887  @media (max-width: 480px) {
3888    .ap-chat-panel {
3889      bottom: 0; right: 0; left: 0;
3890      width: 100%; max-width: 100%;
3891      height: 100vh; max-height: 100vh;
3892      border-radius: 0;
3893    }
3894    .ap-chat-fab { bottom: 16px; right: 16px; }
3895  }
3896  @media (prefers-reduced-motion: reduce) {
3897    .ap-chat-fab, .ap-chat-panel { transition: none; }
3898  }
3899
3900  /* ============ SOLUTIONS PAGE: tabbed chooser ============ */
3901  .sol-tabs {
3902    display: flex;
3903    gap: 8px;
3904    margin-bottom: 28px;
3905    border-bottom: 1px solid #243042;
3906    overflow-x: auto;
3907  }
3908  .sol-tab {
3909    display: inline-flex;
3910    align-items: baseline;
3911    gap: 10px;
3912    padding: 14px 20px;
3913    background: transparent;
3914    border: none;
3915    border-bottom: 2px solid transparent;
3916    color: #9AA7B8;
3917    font-family: 'Poppins', sans-serif;
3918    font-size: 15px;
3919    font-weight: 500;
3920    cursor: pointer;
3921    transition: color 0.18s ease, border-color 0.18s ease;
3922    position: relative;
3923    white-space: nowrap;
3924  }
3925  .sol-tab:hover { color: #E6ECF3; }
3926  .sol-tab.is-active {
3927    color: #E6ECF3;
3928    border-bottom-color: transparent;
3929  }
3930  .sol-tab.is-active::after {
3931    content: '';
3932    position: absolute;
3933    left: 0; right: 0; bottom: -1px;
3934    height: 2px;
3935    background: linear-gradient(90deg, #0099DC 0%, #CB58D5 60%, #E94142 100%);
3936  }
3937  .sol-tab-eyebrow {
3938    font-family: 'Poppins', sans-serif;
3939    font-size: 10px;
3940    color: #5C6878;
3941    letter-spacing: 0.18em;
3942  }
3943  .sol-tab.is-active .sol-tab-eyebrow { color: #0099DC; }
3944  .sol-tab-label { font-weight: 600; }
3945  .sol-tab-count {
3946    font-family: 'Poppins', sans-serif;
3947    font-size: 11px;
3948    color: #5C6878;
3949    padding: 2px 8px;
3950    border: 1px solid #243042;
3951    border-radius: 999px;
3952  }
3953  .sol-tab.is-active .sol-tab-count {
3954    color: #0099DC;
3955    border-color: rgba(0,153,220,0.4);
3956  }
3957  .sol-panel { display: none; }
3958  .sol-panel.is-active { display: block; }
3959  @media (prefers-reduced-motion: reduce) {
3960    .sol-tab { transition: none; }
3961  }
3962
3963  /* ============ ANIMATED UNDERLINE (fx-underline) ============ */
3964  /* Apply to inline links / nav items / any anchor where you want a brand-gradient underline that scales-in on hover. */
3965  .fx-underline {
3966    position: relative;
3967    display: inline-block;
3968    padding-bottom: 2px;
3969  }
3970  .fx-underline::after {
3971    content: '';
3972    position: absolute;
3973    left: 0; bottom: 0;
3974    width: 100%; height: 1.5px;
3975    background: linear-gradient(90deg, #0099DC, #CB58D5, #E94142);
3976    transform: scaleX(0);
3977    transform-origin: left;
3978    transition: transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1);
3979  }
3980  .fx-underline:hover::after,
3981  .fx-underline:focus-visible::after {
3982    transform: scaleX(1);
3983  }
3984  @media (prefers-reduced-motion: reduce) {
3985    .fx-underline::after { transition: none; }
3986  }
3987
3988  /* ============ METRIC GRADIENT NUMBER ============ */
3989  /* For prominent statistic numbers — applies the three-stop gradient and a slightly heavier weight. */
3990  .metric-gradient-number {
3991    background-image: linear-gradient(90deg, #0099DC 0%, #CB58D5 60%, #E94142 100%);
3992    -webkit-background-clip: text;
3993    background-clip: text;
3994    color: transparent;
3995    -webkit-text-fill-color: transparent;
3996    font-weight: 600;
3997    letter-spacing: -0.025em;
3998  }
3999
4000  /* ============ CONNECTOR LINE (cyan rail) ============ */
4001  /* Thin animated line used between section eyebrows and content blocks to add ambient motion. */
4002  .connector-rail {
4003    position: relative;
4004    height: 1px;
4005    background: linear-gradient(90deg, rgba(0,153,220,0) 0%, rgba(0,153,220,0.3) 50%, rgba(0,153,220,0) 100%);
4006    overflow: hidden;
4007  }
4008  .connector-rail::after {
4009    content: '';
4010    position: absolute;
4011    top: 0; left: -30%;
4012    width: 30%; height: 100%;
4013    background: linear-gradient(90deg, transparent, rgba(0,153,220,0.9), transparent);
4014    animation: railSweep 5s ease-in-out infinite;
4015  }
4016  @keyframes railSweep {
4017    0%   { left: -30%; }
4018    50%  { left: 100%; }
4019    100% { left: 100%; }
4020  }
4021  @media (prefers-reduced-motion: reduce) {
4022    .connector-rail::after { animation: none; }
4023  }
4024
4025  /* ============ VENN HERO STYLES (added for hero-v2 layout) ============ */
4026
4027  /* Glow blobs — colored radial gradients positioned absolutely. The parent
4028     container of these has position:relative + overflow:hidden so they
4029     stay clipped to the hero area. */
4030  .glow-cyan, .glow-purple, .glow-pink {
4031    position: absolute;
4032    border-radius: 50%;
4033    pointer-events: none;
4034    z-index: 0;
4035    filter: blur(80px);
4036  }
4037  .glow-cyan   { background: radial-gradient(circle, rgba(0,153,220,0.55), transparent 70%); }
4038  .glow-purple { background: radial-gradient(circle, rgba(158,95,166,0.50), transparent 70%); }
4039  .glow-pink   { background: radial-gradient(circle, rgba(233,65,66,0.45), transparent 70%); }
4040
4041  /* Brand gradient applied as text fill — used for accent words in the
4042     headline and the large stat numbers. Per brand guidelines the
4043     gradient flows #0099DC → #CB58D5 → #E94142 at allowed angles only. */
4044  .grad-text {
4045    background: linear-gradient(30deg, #0099DC 0%, #CB58D5 50%, #E94142 100%);
4046    -webkit-background-clip: text;
4047    background-clip: text;
4048    -webkit-text-fill-color: transparent;
4049    color: transparent;
4050    /* Brand rule: gradient-accented text should be SemiBold for c
4050ontrast. */
4051    font-weight: 600;
4052  }
4053  /* Animated variant — gradient slides subtly in response to mouse movement.
4054     Brand colors at full vibrancy; movement is mellow (handled in JS).
4055     Used sparingly (hero H1 only). */
4056  .grad-text-animated {
4057    background: linear-gradient(
4058      90deg,
4059      #0099DC 0%,
4060      #CB58D5 25%,
4061      #E94142 50%,
4062      #CB58D5 75%,
4063      #0099DC 100%
4064    );
4065    background-size: 280% 100%;
4066    background-position: var(--grad-pos, 50%) 50%;
4067    -webkit-background-clip: text;
4068    background-clip: text;
4069    -webkit-text-fill-color: transparent;
4070    color: transparent;
4071    font-weight: 600;
4072  }
4073  @media (prefers-reduced-motion: reduce) {
4074    .grad-text-animated {
4075      background-position: 50% 50%;
4076    }
4077  }
4078  /* A cyan-to-purple variant for stat numbers (slightly cooler than full
4079     three-stop gradient — keeps the stats reading as primary brand). */
4080  .grad-text-cyan-purple {
4081    background: linear-gradient(30deg, #0099DC 0%, #66C2EA 35%, #CB58D5 100%);
4082    -webkit-background-clip: text;
4083    background-clip: text;
4084    -webkit-text-fill-color: transparent;
4085    color: transparent;
4086    font-weight: 600;
4087  }
4088
4089  /* Announcement badge — small pill with live indicator. */
4090  .badge {
4091    display: inline-flex;
4092    align-items: center;
4093    gap: 8px;
4094    padding: 6px 14px;
4095    border-radius: 999px;
4096    font-family: 'Poppins', sans-serif;
4097    font-size: 12px;
4098    font-weight: 500;
4099    color: #0099DC;
4100    background: rgba(0,153,220,0.08);
4101    border: 1px solid rgba(0,153,220,0.35);
4102    letter-spacing: 0.02em;
4103    transition: background 0.15s ease, border-color 0.15s ease;
4104  }
4105  .badge:hover { background: rgba(0,153,220,0.14); border-color: rgba(0,153,220,0.55); }
4106  .badge-live::before {
4107    content: '\1F3C6'; /* trophy — award badge (was pulsing green dot) */
4108    display: inline-block;
4109    font-size: 12px;
4110    line-height: 1;
4111    margin-right: 2px;
4112  }
4113
4114  /* Primary CTA — gradient pill button per brand spec. */
4115  .btn-grad {
4116    display: inline-flex;
4117    align-items: center;
4118    gap: 8px;
4119    padding: 12px 22px;
4120    border-radius: 999px;
4121    background: linear-gradient(30deg, #0099DC 0%, #CB58D5 50%, #E94142 100%);
4122    color: #fff;
4123    font-family: 'Poppins', sans-serif;
4124    font-weight: 600;
4125    font-size: 14px;
4126    text-decoration: none;
4127    box-shadow: 0 8px 24px -8px rgba(0,153,220,0.5);
4128    transition: transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease;
4129    cursor: pointer;
4130  }
4131  .btn-grad:hover { transform: translateY(-1px); filter: brightness(1.08); box-shadow: 0 12px 28px -8px rgba(0,153,220,0.6); }
4132
4133  /* Orbit-glow primary CTA (hero, 2026-07-09). Wraps .btn-grad: the wrapper
4134     clips a rotating conic-gradient "comet" to a 1.5px ring around the pill,
4135     the inner .btn-grad goes near-black so the ring and ambient glow read.
4136     Comet head is brand cyan trailing into the gradient's purple. */
4137  @keyframes btn-orbit-spin { to { transform: rotate(360deg); } }
4138  .btn-orbit {
4139    position: relative;
4140    display: inline-flex;
4141    border-radius: 999px;
4142    padding: 1.5px;
4143    overflow: hidden;
4144    background: rgba(0,153,220,0.22);
4145    box-shadow: 0 0 22px rgba(0,153,220,0.45), 0 0 46px rgba(203,88,213,0.28);
4146  }
4147  .btn-orbit-spin {
4148    position: absolute;
4149    left: 50%;
4150    top: 50%;
4151    width: 340px;
4152    height: 340px;
4153    margin: -170px 0 0 -170px;
4154    pointer-events: none;
4155    background: conic-gradient(from 0deg, transparent 0deg, transparent 285deg, rgba(0,153,220,0.9) 320deg, #9BDCFF 342deg, #CB58D5 356deg, transparent 360deg);
4156    animation: btn-orbit-spin 3.2s linear infinite;
4157  }
4158  .btn-orbit .btn-grad {
4159    position: relative;
4160    z-index: 1;
4161    background: #0D1119;
4162    box-shadow: none;
4163  }
4164  .btn-orbit .btn-grad:hover { transform: none; filter: brightness(1.25); box-shadow: none; }
4165  @media (prefers-reduced-motion: reduce) { .btn-orbit-spin { animation: none; } }
4166
4167  /* Secondary CTA — outline pill on dark bg.
4168     On hover: an SVG line draws itself around the button's perimeter
4169     using stroke-dasharray. The static border stays at lower opacity
4170     underneath so the button is always visibly outlined. */
4171  .btn-outline {
4172    position: relative;
4173    display: inline-flex;
4174    align-items: center;
4175    gap: 8px;
4176    padding: 11px 21px;
4177    border-radius: 999px;
4178    background: transparent;
4179    color: #E6ECF3;
4180    font-family: 'Poppins', sans-serif;
4181    font-weight: 600;
4182    font-size: 14px;
4183    text-decoration: none;
4184    border: 1px solid rgba(230,236,243,0.25);
4185    transition:
4186      border-color 0.25s ease,
4187      background 0.25s ease,
4188      transform 0.18s cubic-bezier(0.4, 0, 0.2, 1),
4189      box-shadow 0.25s ease;
4190    cursor: pointer;
4191    isolation: isolate; /* establish stacking context for glow layer */
4192  }
4193  /* Fill-sweep layer: a soft light panel that wipes in from the left on hover,
4194     revealed via clip-path so the rounded corners stay crisp. Sits below the
4195     label via negative z-index; isolation:isolate above keeps it scoped. */
4196  .btn-outline::before {
4197    content: "";
4198    position: absolute;
4199    inset: 0;
4200    border-radius: 999px;
4201    background: rgba(230,236,243,0.12);
4202    z-index: -1;
4203    clip-path: inset(0 100% 0 0 round 999px);
4204    transition: clip-path 0.45s cubic-bezier(0.4, 0, 0.2, 1);
4205  }
4206  .btn-outline:hover {
4207    /* Prettier, non-gradient hover: a light fill sweeps in from the left
4208       (the ::before), plus a brighter border and a subtle lift. Kept distinct
4209       from the primary CTA's orbit-glow gradient. */
4210    border-color: rgba(230,236,243,0.55);
4211    transform: translateY(-1px);
4212    box-shadow: 0 6px 18px -10px rgba(0, 0, 0, 0.55);
4213  }
4214  .btn-outline:hover::before { clip-path: inset(0 0 0 0 round 999px); } /* fill sweeps in L->R */
4215
4216  /* Text inside button — on hover, shift to a soft brand-gradient via
4217     background-clip:text. Wrapped in a span so we can target it; falls
4218     back to plain color for the data-cms-field span. */
4219  .btn-outline > span[data-cms-field] {
4220    background: linear-gradient(90deg, #E6ECF3, #E6ECF3);
4221    background-clip: text;
4222    -webkit-background-clip: text;
4223    color: transparent;
4224    -webkit-text-fill-color: transparent;
4225    transition: background 0.3s ease;
4226  }
4227  .btn-outline:hover > span[data-cms-field] {
4228    background: linear-gradient(90deg, #FFFFFF, #FFFFFF);
4229    background-clip: text;
4230    -webkit-background-clip: text;
4231  }
4232
4233  /* Trailing arrow — nudges right on hover */
4234  .btn-outline > svg[viewBox="0 0 12 12"] {
4235    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
4236  }
4237  .btn-outline:hover > svg[viewBox="0 0 12 12"] {
4238    transform: translateX(3px);
4239  }
4240
4241  /* SVG draw-around overlay — sits absolutely over the button perimeter.
4242     A brand-gradient line draws itself around as a hover accent; the
4243     static white pill border stays in place underneath. */
4244  .btn-outline-svg {
4245    position: absolute;
4246    inset: 0;
4247    width: 100%;
4248    height: 100%;
4249    pointer-events: none;
4250    overflow: visible;
4251    opacity: 0;
4252    transition: opacity 0.15s ease;
4253  }
4254  .btn-outline:hover .btn-outline-svg { opacity: 0; } /* gradient draw-around border disabled */
4255  .btn-outline-svg rect {
4256    x: 0.75px;
4257    y: 0.75px;
4258    width: calc(100% - 1.5px);
4259    height: calc(100% - 1.5px);
4260    fill: none;
4261    stroke: url(#btn-outline-gradient);
4262    stroke-width: 1.5;
4263    stroke-linecap: round;
4264    stroke-dasharray: 100;
4265    stroke-dashoffset: 100;
4266  }
4267  .btn-outline:hover .btn-outline-svg rect {
4268    animation:
4269      btn-outline-draw 0.45s cubic-bezier(0.4, 0, 0.2, 1) forwards,
4270      btn-outline-shimmer 3s linear 0.45s infinite;
4271  }
4272  @keyframes btn-outline-draw {
4273    to { stroke-dashoffset: 0; }
4274  }
4275  /* After the draw completes, the gradient slowly travels around the stroke
4276     via stroke-dasharray cycling. Creates an ambient "alive" feel without
4277     theatre — the eye notices motion subliminally but isn't distracted. */
4278  @keyframes btn-outline-shimmer {
4279    0%   { stroke-dasharray: 100 0;   stroke-dashoffset: 0; }
4280    50%  { stroke-dasharray: 60 40;   stroke-dashoffset: -50; }
4281    100% { stroke-dasharray: 100 0;   stroke-dashoffset: -100; }
4282  }
4283  @media (prefers-reduced-motion: reduce) {
4284    .btn-outline,
4285    .btn-outline::before,
4286    .btn-outline > span[data-cms-field],
4287    .btn-outline > svg[viewBox="0 0 12 12"] {
4288      transition: none !important;
4289    }
4290    .btn-outline:hover .btn-outline-svg rect {
4291      animation: none;
4292      stroke-dashoffset: 0;
4293    }
4294    .btn-outline:hover {
4295      transform: none;
4296    }
4297  }
4298
4299  /* Persona micro-label under each CTA. ALL CAPS + cyan + monospace = per the
4300     subheader rule (Medium weight, #0099DC, ALL CAPS, no period). */
4301  .cta-label {
4302    font-family: 'Poppins', sans-serif;
4303    font-size: 10px;
4304    letter-spacing: 0.18em;
4305    text-transform: uppercase;
4306    color: #6B7889;
4307    font-weight: 500;
4308  }
4309
4310  /* Stats bar tiles. */
4311  .stat-card {
4312    display: flex;
4313    flex-direction: column;
4314    align-items: flex-start;
4315    gap: 6px;
4316    padding: 18px 20px;
4317    border-radius: 12px;
4318    background: linear-gradient(180deg, rgba(26,36,52,0.6), rgba(20,28,40,0.6));
4319    border: 1px solid #243042;
4320    backdrop-filter: blur(8px);
4321  }
4322  .stat-num {
4323    font-family: 'Poppins', sans-serif;
4324    font-size: clamp(22px, 2.6vw, 30px);
4325    font-weight: 600;
4326    letter-spacing: -0.015em;
4327    line-height: 1.1;
4328  }
4329  .stat-label {
4330    font-family: 'Poppins', sans-serif;
4331    font-size: 12px;
4332    color: #9AA7B8;
4333    line-height: 1.4;
4334  }
4335
4336  /* Venn lobes — ENTRANCE then AMBIENT.
4337     On load each lobe starts collapsed at the shared center (scale 0) and
4338     expands out to its position with a slight settle, staggered for a build.
4339     Once it lands, a second (looping) animation takes over for a gentle,
4340     independent drift. Two animations on the same element: the drift is listed
4341     LAST so it wins the `transform` once it becomes active, and it's delayed to
4342     begin exactly when the expand finishes — a seamless handoff (both meet at
4343     the identity transform). The start offsets are each lobe's vector back to
4344     the center, so scale-0 lands them all on the same point. */
4345  .venn-lobe {
4346    transform-box: fill-box;
4347    transform-origin: center;
4348  }
4349  .venn-lobe-1 {
4350    animation: venn-expand-1 0.9s cubic-bezier(.34,1.56,.64,1) 0.05s both,
4351               venn-float-1 8s ease-in-out 0.95s infinite;
4352  }
4353  .venn-lobe-2 {
4354    animation: venn-expand-2 0.9s cubic-bezier(.34,1.56,.64,1) 0.15s both,
4355               venn-float-2 9s ease-in-out 1.05s infinite;
4356  }
4357  .venn-lobe-3 {
4358    animation: venn-expand-3 0.9s cubic-bezier(.34,1.56,.64,1) 0.25s both,
4359               venn-float-3 7.5s ease-in-out 1.15s infinite;
4360  }
4361  @keyframes venn-expand-1 {
4362    0%   { transform: translate(115px, 70px) scale(0); opacity: 0; }
4363    55%  { opacity: 1; }
4364    100% { transform: translate(0, 0) scale(1);        opacity: 1; }
4365  }
4366  @keyframes venn-expand-2 {
4367    0%   { transform: translate(-115px, 70px) scale(0); opacity: 0; }
4368    55%  { opacity: 1; }
4369    100% { transform: translate(0, 0) scale(1);         opacity: 1; }
4370  }
4371  @keyframes venn-expand-3 {
4372    0%   { transform: translate(0, -135px) scale(0);    opacity: 0; }
4373    55%  { opacity: 1; }
4374    100% { transform: translate(0, 0) scale(1);         opacity: 1; }
4375  }
4376  @keyframes venn-float-1 {
4377    0%, 100% { transform: translate(0, 0); }
4378    50%      { transform: translate(-3px, -7px); }
4379  }
4380  @keyframes venn-float-2 {
4381    0%, 100% { transform: translate(0, 0); }
4382    50%      { transform: translate(4px, -5px); }
4383  }
4384  @keyframes venn-float-3 {
4385    0%, 100% { transform: translate(0, 0); }
4386    50%      { transform: translate(0, 7px); }
4387  }
4388
4389  /* Labels fade in once the lobes have arrived. */
4390  .venn-label { animation: venn-label-in 0.6s ease 0.75s both; }
4391  @keyframes venn-label-in {
4392    from { opacity: 0; }
4393    to   { opacity: 0.95; }
4394  }
4395
4396  /* Central shield glow — gentle heartbeat behind the mark. The shield SVG
4397     itself is never scaled/distorted; only the light field pulses. */
4398  .venn-shield-glow {
4399    transform-origin: center;
4400    transform-box: fill-box;
4401    animation: venn-shield-pulse 4s ease-in-out infinite;
4402  }
4403  @keyframes venn-shield-pulse {
4404    0%, 100% { opacity: 0.7; transform: scale(0.92); }
4405    50%      { opacity: 1;   transform: scale(1.12); }
4406  }
4407
4408  /* Atmospheric backdrop + central convergence — slow breathe mirrors the
4409     orb's 8s breathing rhythm so the two graphics feel like siblings. */
4410  .venn-atmosphere {
4411    transform-origin: center;
4412    transform-box: fill-box;
4413    animation: venn-breathe 8s ease-in-out infinite;
4414  }
4415  .venn-convergence {
4416    transform-origin: center;
4417    transform-box: fill-box;
4418    animation: venn-breathe 6s ease-in-out infinite;
4419    animation-delay: 0.5s;
4420  }
4421  @keyframes venn-breathe {
4422    0%, 100% { opacity: 0.9; transform: scale(1); }
4423    50%      { opacity: 1;   transform: scale(1.04); }
4424  }
4425
4426  @media (prefers-reduced-motion: reduce) {
4427    .venn-lobe,
4428    .venn-lobe-1, .venn-lobe-2, .venn-lobe-3,
4429    .venn-label,
4430    .venn-shield-glow,
4431    .venn-atmosphere,
4432    .venn-convergence { animation: none !important; }
4433  }
4434
4435  /* ============ END VENN HERO STYLES ============ */
4436
4437	/* ============ CASE STUDY LANDING PAGE STYLES ============ */
4438
4439.case-study-sidebar {
4440  position: sticky;
4441  top: 96px;
4441   /* clears the sticky site nav (~80px) plus breathing room */
4442  align-self: flex-start;
4443}
4444@media (max-width: 1023px) {
4445  .case-study-sidebar {
4446    position: static;
4447  }
4448}
4449
4450/* Customer logo — image upload field. Hide it if the src is empty
4451   (no logo uploaded yet) so we don't get a broken-image icon. */
4452.case-study-logo {
4453  max-height: 40px;
4454  max-width: 160px;
4455  object-fit: contain;
4456  display: block;
4457}
4458.case-study-logo:not([src]),
4459.case-study-logo[src=""] {
4460  display: none;
4461}
4462
4463/* Story body sections */
4464.case-study-section {
4465  margin-bottom: 56px;
4466}
4467.case-study-section:last-of-type {
4468  margin-bottom: 40px;
4469}
4470
4471.case-study-section-heading {
4472  font-family: 'Poppins', sans-serif;
4473  font-size: 24px;
4474  font-weight: 600;
4475  letter-spacing: -0.015em;
4476  color: #E6ECF3;
4477  margin-bottom: 20px;
4478  padding-bottom: 12px;
4479  border-bottom: 1px solid #243042;
4480  position: relative;
4481}
4482/* Cyan accent bar to the left of each section heading */
4483.case-study-section-heading::before {
4484  content: '';
4485  position: absolute;
4486  left: -16px;
4487  top: 4px;
4488  width: 3px;
4489  height: 22px;
4490  background: #0099DC;
4491  border-radius: 2px;
4492}
4493
4494/* Prose styling for the rich-text body fields. Targets <p>, <ul>, <ol>,
4495   <strong>, <a> generated by TipTap inside each section. */
4496.case-study-prose {
4497  font-family: 'Poppins', sans-serif;
4498  color: #9AA7B8;
4499  font-size: 16px;
4500  line-height: 1.8;
4501}
4502.case-study-prose p { margin: 0 0 16px; }
4503.case-study-prose p:last-child { margin-bottom: 0; }
4504.case-study-prose strong { color: #E6ECF3; font-weight: 600; }
4505.case-study-prose a {
4506  color: #0099DC;
4507  text-decoration: underline;
4508  text-underline-offset: 3px;
4509}
4510.case-study-prose a:hover { color: #33ADE3; }
4511.case-study-prose ul, .case-study-prose ol {
4512  margin: 0 0 16px 20px;
4513  padding: 0;
4514}
4515.case-study-prose li { margin-bottom: 6px; }
4516.case-study-prose blockquote {
4517  border-left: 3px solid #0099DC;
4518  padding: 0 0 0 16px;
4519  margin: 16px 0;
4520  color: #E6ECF3;
4521  font-style: italic;
4522}
4523
4524/* Pull quote — the big design moment in the story. Cyan accent quote mark,
4525   gradient border, generous padding. */
4526.case-study-quote {
4527  position: relative;
4528  background: linear-gradient(135deg, rgba(0,153,220,0.06), rgba(158,95,166,0.04));
4529  border: 1px solid rgba(0,153,220,0.25);
4530  border-radius: 12px;
4531  padding: 36px 32px 28px;
4532  margin: 40px 0;
4533}
4534.case-study-quote-mark {
4535  position: absolute;
4536  top: 20px;
4537  left: 24px;
4538}
4539.case-study-quote-text {
4540  font-family: 'Poppins', sans-serif;
4541  font-size: 22px;
4542  font-weight: 500;
4543  line-height: 1.5;
4544  color: #E6ECF3;
4545  margin: 28px 0 24px;
4546  letter-spacing: -0.01em;
4547}
4548.case-study-quote-attribution {
4549  display: flex;
4550  align-items: center;
4551  gap: 14px;
4552}
4553.case-study-quote-avatar {
4554  width: 44px;
4555  height: 44px;
4556  border-radius: 999px;
4557  object-fit: cover;
4558  border: 1px solid #243042;
4559}
4560.case-study-quote-avatar:not([src]),
4561.case-study-quote-avatar[src=""] {
4562  display: none;
4563}
4564
4565/* CTA block at the bottom */
4566.case-study-cta {
4567  margin-top: 48px;
4568  padding-top: 32px;
4569  border-top: 1px solid #243042;
4570  display: flex;
4571  justify-content: flex-start;
4572}
4573
4574/* ============ END CASE STUDY STYLES ============ */
4575
4576	
4577/* ============ BLOG STYLES ============ */
4578
4579/* ---- Blog index page ---- */
4580
4581.blog-index-hero {
4582  padding: 80px 0 56px;
4583  position: relative;
4584  overflow: hidden;
4585}
4586
4587.blog-index-grid {
4588  display: grid;
4589  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
4590  gap: 28px;
4591  padding-bottom: 80px;
4592}
4593
4594/* Each card: image on top, body below. Clickable surface — the whole card
4595   is a single <a> so the hit target is generous. */
4596.blog-card {
4597  display: flex;
4598  flex-direction: column;
4599  background: #131c2a;
4600  border: 1px solid #243042;
4601  border-radius: 12px;
4602  overflow: hidden;
4603  text-decoration: none;
4604  color: inherit;
4605  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
4606}
4607.blog-card:hover {
4608  transform: translateY(-2px);
4609  border-color: rgba(0,153,220,0.4);
4610  box-shadow: 0 8px 24px -10px rgba(0,153,220,0.25);
4611}
4612
4613.blog-card-thumb {
4614  display: block;
4615  width: 100%;
4616  aspect-ratio: 16 / 9;
4617  background: linear-gradient(135deg, rgba(0,153,220,0.08), rgba(158,95,166,0.06));
4618  border-bottom: 1px solid #243042;
4619  object-fit: cover;
4620}
4621/* Hide the <img> wrapper if no featured image is set — the gradient
4622   placeholder shows through instead. */
4623.blog-card-thumb:not([src]),
4624.blog-card-thumb[src=""] {
4625  display: block;
4626}
4627
4628/* ---- Generated title-card cover (used when no featured image) ----
4629   Same layout shape as the <img> thumb (16:9, border-bottom-aligned),
4630   but renders the post's category + title on a brand gradient so each
4631   "missing cover" still feels intentional and on-brand. */
4632.blog-card-thumb-fallback,
4633.blog-detail-cover-fallback {
4634  position: relative;
4635  display: flex;
4636  flex-direction: column;
4637  justify-content: flex-end;
4638  padding: 18px 20px;
4639  color: #fff;
4640  overflow: hidden;
4641  /* Brand gradient at 30° per the ArmorPoint 2026 guidelines */
4642  background:
4643    linear-gradient(155deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 60%),
4644    linear-gradient(30deg, #0099DC 0%, #CB58D5 55%, #E94142 100%);
4645  border-bottom: 1px solid #243042;
4646}
4647.blog-card-thumb-fallback {
4648  aspect-ratio: 16 / 9;
4649}
4650.blog-detail-cover-fallback {
4651  width: 100%;
4652  min-height: 280px;
4653  max-height: 360px;
4654  aspect-ratio: 16 / 7;
4655  border-radius: 14px;
4656  border: 1px solid #243042;
4657  margin: 32px 0 0;
4658  padding: 32px 40px;
4659  justify-content: flex-end;
4660}
4661
4662/* Category eyebrow (top-left) */
4663.blog-cover-cat {
4664  position: absolute;
4665  top: 14px;
4666  left: 20px;
4667  font-family: 'Poppins', sans-serif;
4668  font-size: 10px;
4669  font-weight: 600;
4670  letter-spacing: 0.18em;
4671  text-transform: uppercase;
4672  color: rgba(255,255,255,0.85);
4673  background: rgba(0,0,0,0.25);
4674  padding: 4px 10px;
4675  border-radius: 999px;
4676  backdrop-filter: blur(4px);
4677  border: 1px solid rgba(255,255,255,0.18);
4678}
4679.blog-detail-cover-fallback .blog-cover-cat {
4680  top: 28px;
4681  left: 36px;
4682  font-size: 11px;
4683  padding: 5px 14px;
4684}
4685
4686/* Title takes up the lower portion of the card */
4687.blog-cover-title {
4688  font-family: 'Poppins', sans-serif;
4689  font-weight: 600;
4690  color: #fff;
4691  letter-spacing: -0.01em;
4692  /* Card variant: 2-3 lines max, ellipsis */
4693  font-size: clamp(15px, 1.6vw, 18px);
4694  line-height: 1.25;
4695  display: -webkit-box;
4696  -webkit-line-clamp: 3;
4697  -webkit-box-orient: vertical;
4698  overflow: hidden;
4699  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
4700}
4701.blog-detail-cover-fallback .blog-cover-title {
4702  font-size: clamp(24px, 3.2vw, 38px);
4703  line-height: 1.1;
4704  -webkit-line-clamp: 4;
4705  max-width: 760px;
4706  letter-spacing: -0.02em;
4707}
4708
4709/* ArmorPoint shield mark — bottom-right corner, faded */
4710.blog-cover-mark {
4711  position: absolute;
4712  bottom: 14px;
4713  right: 18px;
4714  width: 18px;
4715  height: 18px;
4716  fill: rgba(255,255,255,0.5);
4717  pointer-events: none;
4718}
4719.blog-detail-cover-fallback .blog-cover-mark {
4720  bottom: 32px;
4721  right: 36px;
4722  width: 26px;
4723  height: 26px;
4724}
4725
4726.blog-card-body {
4727  padding: 20px 22px 24px;
4728  display: flex;
4729  flex-direction: column;
4730  gap: 10px;
4731  flex-grow: 1;
4732}
4733
4734.blog-card-meta {
4735  display: flex;
4736  align-items: center;
4737  gap: 8px;
4738  font-family: 'Poppins', sans-serif;
4739  font-size: 10px;
4740  letter-spacing: 0.12em;
4741  text-transform: uppercase;
4742  color: #6B7889;
4743}
4744.blog-card-meta-sep { color: #3a4a5e; }
4745.blog-card-category { color: #0099DC; }
4746
4747.blog-card-title {
4748  font-family: 'Poppins', sans-serif;
4749  font-size: 18px;
4750  font-weight: 600;
4751  line-height: 1.35;
4752  color: #E6ECF3;
4753  letter-spacing: -0.01em;
4754}
4755
4756.blog-card-excerpt {
4757  font-family: 'Poppins', sans-serif;
4758  font-size: 13px;
4759  color: #9AA7B8;
4760  line-height: 1.55;
4761  display: -webkit-box;
4762  -webkit-line-clamp: 3;
4763  -webkit-box-orient: vertical;
4764  overflow: hidden;
4765}
4766
4767.blog-card-footer {
4768  display: flex;
4769  justify-content: space-between;
4770  align-items: center;
4771  margin-top: auto;
4772  padding-top: 12px;
4773  border-top: 1px solid #243042;
4774  font-size: 12px;
4775  color: #6B7889;
4776}
4777.blog-card-readmore {
4778  color: #0099DC;
4779  font-weight: 600;
4780  display: inline-flex;
4781  align-items: center;
4782  gap: 4px;
4783}
4784
4785
4786/* ---- Blog detail page ---- */
4787
4788.blog-detail-hero {
4789  position: relative;
4790  padding: 60px 0 40px;
4791}
4792
4793.blog-detail-cover {
4794  width: 100%;
4795  max-height: 480px;
4796  object-fit: cover;
4797  border-radius: 14px;
4798  border: 1px solid #243042;
4799  margin: 32px 0 0;
4800  background: linear-gradient(135deg, rgba(0,153,220,0.06), rgba(158,95,166,0.04));
4801}
4802.blog-detail-cover:not([src]),
4803.blog-detail-cover[src=""] {
4804  display: none;
4805}
4806
4807.blog-detail-eyebrow {
4808  display: flex;
4809  flex-wrap: wrap;
4810  align-items: center;
4811  gap: 10px;
4812  margin-bottom: 18px;
4813  font-family: 'Poppins', sans-serif;
4814  font-size: 11px;
4815  letter-spacing: 0.16em;
4816  text-transform: uppercase;
4817  color: #6B7889;
4818}
4819.blog-detail-eyebrow .sep { color: #3a4a5e; }
4820.blog-detail-eyebrow .cat { color: #0099DC; }
4821.blog-detail-author {
4822  /* Inherits eyebrow color (#6B7889). The "By" prefix is rendered as plain
4823     text so it picks up the same muted tone; the name itself gets a slight
4824     lift in color to subtly emphasize attribution. */
4825  color: #6B7889;
4826}
4827.blog-detail-author > span {
4828  color: #9AA7B8;
4829}
4830
4831.blog-detail-title {
4832  font-family: 'Poppins', sans-serif;
4833  font-size: clamp(28px, 4vw, 44px);
4834  font-weight: 600;
4835  line-height: 1.1;
4836  letter-spacing: -0.02em;
4837  color: #E6ECF3;
4838  margin: 0 0 22px;
4839  max-width: 820px;
4840}
4841
4842.blog-detail-tldr {
4843  display: flex;
4844  gap: 18px;
4845  align-items: flex-start;
4846  max-width: 720px;
4847  padding: 18px 22px;
4848  background: linear-gradient(135deg, rgba(0,153,220,0.06), rgba(158,95,166,0.04));
4849  border: 1px solid rgba(0,153,220,0.25);
4850  border-radius: 10px;
4851  margin-top: 6px;
4852}
4853.blog-detail-tldr::before {
4854  content: 'TL;DR';
4855  font-family: 'Poppins', sans-serif;
4856  font-size: 10px;
4857  letter-spacing: 0.16em;
4858  color: #0099DC;
4859  font-weight: 600;
4860  padding: 4px 8px;
4861  background: rgba(0,153,220,0.12);
4862  border-radius: 4px;
4863  flex-shrink: 0;
4864  margin-top: 2px;
4865}
4866.blog-detail-tldr-text {
4867  font-family: 'Poppins', sans-serif;
4868  font-size: 15px;
4869  line-height: 1.6;
4870  color: #C5CDD9;
4871}
4872
4873/* Main body prose. Shares styling with .case-study-prose but with its
4874   own class so we can diverge later without affecting case studies. */
4875.blog-detail-body {
4876  font-family: 'Poppins', sans-serif;
4877  color: #C5CDD9;
4878  font-size: 17px;
4879  line-height: 1.78;
4880  max-width: 760px;
4881  margin: 48px 0 64px;
4882}
4883.blog-detail-body h2 {
4884  font-family: 'Poppins', sans-serif;
4885  font-size: 26px;
4886  font-weight: 600;
4887  letter-spacing: -0.015em;
4888  color: #E6ECF3;
4889  margin: 48px 0 16px;
4890  padding-bottom: 10px;
4891  border-bottom: 1px solid #243042;
4892}
4893.blog-detail-body h3 {
4894  font-family: 'Poppins', sans-serif;
4895  font-size: 20px;
4896  font-weight: 600;
4897  color: #E6ECF3;
4898  margin: 32px 0 12px;
4899}
4900.blog-detail-body h4 {
4901  font-family: 'Poppins', sans-serif;
4902  font-size: 17px;
4903  font-weight: 600;
4904  color: #E6ECF3;
4905  margin: 24px 0 10px;
4906  letter-spacing: 0.01em;
4907}
4908.blog-detail-body p { margin: 0 0 20px; }
4909.blog-detail-body strong { color: #E6ECF3; font-weight: 600; }
4910.blog-detail-body em { color: #E6ECF3; }
4911.blog-detail-body a {
4912  color: #0099DC;
4913  text-decoration: underline;
4914  text-underline-offset: 3px;
4915}
4916.blog-detail-body a:hover { color: #33ADE3; }
4917.blog-detail-body ul, .blog-detail-body ol {
4918  margin: 0 0 20px 24px;
4919  padding: 0;
4920}
4921.blog-detail-body li { margin-bottom: 8px; }
4922.blog-detail-body blockquote {
4923  border-left: 3px solid #0099DC;
4924  padding: 4px 0 4px 20px;
4925  margin: 24px 0;
4926  color: #E6ECF3;
4927  font-style: italic;
4928}
4929.blog-detail-body img {
4930  max-width: 100%;
4931  height: auto;
4932  border-radius: 8px;
4933  border: 1px solid #243042;
4934  margin: 28px 0;
4935}
4936.blog-detail-body code {
4937  background: #1a2333;
4938  padding: 2px 6px;
4939  border-radius: 4px;
4940  font-size: 0.9em;
4941  color: #66C2EA;
4942}
4943.blog-detail-body pre {
4944  background: #0c131e;
4945  padding: 18px 22px;
4946  border-radius: 8px;
4947  border: 1px solid #243042;
4948  overflow-x: auto;
4949  margin: 24px 0;
4950}
4951.blog-detail-body pre code {
4952  background: transparent;
4953  padding: 0;
4954  color: #C5CDD9;
4955  font-size: 13px;
4956}
4957.blog-detail-body hr {
4958  border: none;
4959  height: 1px;
4960  background: #243042;
4961  margin: 40px 0;
4962}
4963
4964/* Tag pills at the bottom */
4965.blog-detail-tags {
4966  display: flex;
4967  flex-wrap: wrap;
4968  gap: 8px;
4969  padding-top: 32px;
4970  margin-top: 48px;
4971  border-top: 1px solid #243042;
4972  max-width: 760px;
4973}
4974.blog-detail-tag {
4975  font-family: 'Poppins', sans-serif;
4976  font-size: 10px;
4977  letter-spacing: 0.1em;
4978  text-transform: uppercase;
4979  color: #9AA7B8;
4980  background: rgba(255,255,255,0.04);
4981  border: 1px solid #243042;
4982  padding: 5px 10px;
4983  border-radius: 999px;
4984}
4985
4986/* Back-to-blog navigation */
4987.blog-detail-backlink {
4988  display: inline-flex;
4989  align-items: center;
4990  gap: 6px;
4991  font-family: 'Poppins', sans-serif;
4992  font-size: 11px;
4993  letter-spacing: 0.12em;
4994  text-transform: uppercase;
4995  color: #0099DC;
4996  text-decoration: none;
4997  margin-bottom: 18px;
4998}
4999.blog-detail-backlink:hover { color: #33ADE3; }
5000
5001/* Empty state shown while loading or if a slug doesn't resolve */
5002.blog-detail-empty {
5003  padding: 80px 0;
5004  text-align: center;
5005  color: #6B7889;
5006}
5007
5008/* ---- Filter + search toolbar (Phase 1.5) ---- */
5009
5010.blog-toolbar {
5011  display: flex;
5012  flex-wrap: wrap;
5013  align-items: center;
5014  gap: 14px;
5015  margin: 8px 0 16px;
5016}
5017
5018/* Search input with leading magnifier icon */
5019.blog-search {
5020  position: relative;
5021  flex: 0 1 320px;
5022  min-width: 220px;
5023}
5024.blog-search-icon {
5025  position: absolute;
5026  top: 50%;
5027  left: 12px;
5028  transform: translateY(-50%);
5029  color: #6B7889;
5030  pointer-events: none;
5031}
5032.blog-search input {
5033  width: 100%;
5034  height: 38px;
5035  padding: 0 12px 0 34px;
5036  background: #131c2a;
5037  border: 1px solid #243042;
5038  border-radius: 999px;
5039  color: #E6ECF3;
5040  font-family: 'Poppins', sans-serif;
5041  font-size: 13px;
5042  outline: none;
5043  transition: border-color 0.15s ease, background 0.15s ease;
5044}
5045.blog-search input:focus {
5046  border-color: rgba(0,153,220,0.55);
5047  background: #15202f;
5048}
5049.blog-search input::placeholder { color: #6B7889; }
5050
5051/* Category pill bar — wraps to multiple rows on small screens */
5052.blog-filter-pills {
5053  display: flex;
5054  flex-wrap: wrap;
5055  gap: 6px;
5056  flex: 1 1 auto;
5057}
5058.blog-filter-pill {
5059  display: inline-flex;
5060  align-items: center;
5061  height: 30px;
5062  padding: 0 14px;
5063  border-radius: 999px;
5064  background: transparent;
5065  border: 1px solid #243042;
5066  color: #9AA7B8;
5067  font-family: 'Poppins', sans-serif;
5068  font-size: 12px;
5069  font-weight: 500;
5070  cursor: pointer;
5071  transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
5072  white-space: nowrap;
5073}
5074.blog-filter-pill:hover {
5075  border-color: rgba(0,153,220,0.45);
5076  color: #E6ECF3;
5077}
5078.blog-filter-pill.is-active {
5079  background: rgba(0,153,220,0.12);
5080  border-color: rgba(0,153,220,0.55);
5081  color: #0099DC;
5082}
5083
5084/* "Clear filters" text-style button */
5085.blog-filter-reset {
5086  background: transparent;
5087  border: none;
5088  color: #0099DC;
5089  font-family: 'Poppins', sans-serif;
5090  font-size: 12px;
5091  font-weight: 500;
5092  cursor: pointer;
5093  padding: 6px 4px;
5094  text-decoration: underline;
5095  text-underline-offset: 3px;
5096}
5097.blog-filter-reset:hover { color: #33ADE3; }
5098
5099/* Small status text above the grid */
5100.blog-result-count {
5101  font-family: 'Poppins', sans-serif;
5102  font-size: 11px;
5103  letter-spacing: 0.08em;
5104  text-transform: uppercase;
5105  color: #6B7889;
5106  margin: 12px 0 20px;
5107}
5108
5109/* Empty state when nothing matches */
5110.blog-empty-state {
5111  padding: 48px 0 80px;
5112  text-align: center;
5113  color: #9AA7B8;
5114}
5115.blog-empty-state p {
5116  font-family: 'Poppins', sans-serif;
5117  font-size: 15px;
5118  margin: 0 0 16px;
5119}
5120
5121/* ---- Load more button (paginates the unfiltered blog index) ----
5122   Inserted by JS as a sibling immediately after the grid. */
5123.blog-load-more {
5124  display: block;
5125  margin: 8px auto 80px;
5126  padding: 12px 28px;
5127  background: transparent;
5128  border: 1px solid #243042;
5129  border-radius: 999px;
5130  color: #C5CDD9;
5131  font-family: 'Poppins', sans-serif;
5132  font-size: 14px;
5133  font-weight: 500;
5134  cursor: pointer;
5135  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease, transform 0.12s ease;
5136}
5137.blog-load-more:hover {
5138  border-color: rgba(0,153,220,0.55);
5139  color: #E6ECF3;
5140  background: rgba(0,153,220,0.04);
5141}
5142.blog-load-more:active {
5143  transform: scale(0.99);
5144}
5145
5146
5147/* ============ END BLOG STYLES ============ */
5148
5149
5150
5151/* ============ PHASE 3 — PRESS RELEASES + RESOURCES LIBRARY ============ */
5152
5153/* ---- Press Releases — index ---- */
5154
5155.press-index-hero {
5156  padding: 80px 0 56px;
5157  position: relative;
5158  overflow: hidden;
5159}
5160
5161.press-result-count {
5162  font-family: 'Poppins', sans-serif;
5163  font-size: 11px;
5164  letter-spacing: 0.08em;
5165  text-transform: uppercase;
5166  color: #6B7889;
5167  margin: 0 0 24px;
5168}
5169
5170.press-index-grid {
5171  display: grid;
5172  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
5173  gap: 28px;
5174  padding-bottom: 80px;
5175}
5176
5177.press-card {
5178  display: flex;
5179  flex-direction: column;
5180  background: #131c2a;
5181  border: 1px solid #243042;
5182  border-radius: 12px;
5183  overflow: hidden;
5184  text-decoration: none;
5185  color: inherit;
5186  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
5187}
5188.press-card:hover {
5189  transform: translateY(-2px);
5190  border-color: rgba(0,153,220,0.4);
5191  box-shadow: 0 8px 24px -10px rgba(0,153,220,0.25);
5192}
5193
5194.press-card-thumb {
5195  display: block;
5196  width: 100%;
5197  aspect-ratio: 16 / 9;
5198  border-bottom: 1px solid #243042;
5199  object-fit: cover;
5200}
5201.press-card-thumb-fallback {
5202  position: relative;
5203  width: 100%;
5204  aspect-ratio: 16 / 9;
5205  display: flex;
5206  align-items: center;
5207  justify-content: center;
5208  background:
5209    linear-gradient(155deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 60%),
5210    linear-gradient(30deg, #0099DC 0%, #CB58D5 55%, #E94142 100%);
5211  border-bottom: 1px solid #243042;
5212}
5213.press-card-thumb-mark {
5214  font-family: 'Poppins', sans-serif;
5215  font-size: 14px;
5216  font-weight: 700;
5217  color: #fff;
5218  letter-spacing: 0.32em;
5219  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
5220}
5221
5222.press-card-body {
5223  padding: 18px 20px 22px;
5224  display: flex;
5225  flex-direction: column;
5226  gap: 10px;
5227  flex-grow: 1;
5228}
5229
5230.press-card-meta {
5231  display: flex;
5232  align-items: center;
5233  gap: 8px;
5234  font-family: 'Poppins', sans-serif;
5235  font-size: 10px;
5236  letter-spacing: 0.12em;
5237  text-transform: uppercase;
5238  color: #6B7889;
5239}
5240.press-card-cat { color: #0099DC; }
5241.press-card-meta-sep { color: #3a4a5e; }
5242
5243.press-card-title {
5244  font-family: 'Poppins', sans-serif;
5245  font-size: 17px;
5246  font-weight: 600;
5247  line-height: 1.35;
5248  color: #E6ECF3;
5249  letter-spacing: -0.01em;
5250}
5251
5252.press-card-excerpt {
5253  font-family: 'Poppins', sans-serif;
5254  font-size: 13px;
5255  color: #9AA7B8;
5256  line-height: 1.55;
5257  display: -webkit-box;
5258  -webkit-line-clamp: 3;
5259  -webkit-box-orient: vertical;
5260  overflow: hidden;
5261}
5262
5263.press-empty {
5264  grid-column: 1 / -1;
5265  text-align: center;
5266  padding: 64px 0;
5267  color: #6B7889;
5268  font-family: 'Poppins', sans-serif;
5269  font-size: 15px;
5270}
5271
5272
5273/* ---- Press Releases — detail ---- */
5274
5275.press-detail-hero {
5276  position: relative;
5277  padding: 60px 0 40px;
5278}
5279
5280.press-detail-backlink {
5281  display: inline-flex;
5282  align-items: center;
5283  gap: 6px;
5284  font-family: 'Poppins', sans-serif;
5285  font-size: 11px;
5286  letter-spacing: 0.12em;
5287  text-transform: uppercase;
5288  color: #0099DC;
5289  text-decoration: none;
5290  margin-bottom: 18px;
5291}
5292.press-detail-backlink:hover { color: #33ADE3; }
5293
5294.press-detail-eyebrow {
5295  display: flex;
5296  flex-wrap: wrap;
5297  align-items: center;
5298  gap: 10px;
5299  margin-bottom: 18px;
5300  font-family: 'Poppins', sans-serif;
5301  font-size: 11px;
5302  letter-spacing: 0.16em;
5303  text-transform: uppercase;
5304  color: #6B7889;
5305}
5306.press-detail-eyebrow .sep { color: #3a4a5e; }
5307.press-detail-eyebrow .cat { color: #0099DC; }
5308.press-detail-author { color: #6B7889; }
5309.press-detail-author > span { color: #9AA7B8; }
5310
5311.press-detail-title {
5312  font-family: 'Poppins', sans-serif;
5313  font-size: clamp(28px, 4vw, 44px);
5314  font-weight: 600;
5315  line-height: 1.1;
5316  letter-spacing: -0.02em;
5317  color: #E6ECF3;
5318  margin: 0 0 22px;
5319  max-width: 820px;
5320}
5321
5322.press-detail-tldr {
5323  display: flex;
5324  gap: 18px;
5325  align-items: flex-start;
5326  max-width: 720px;
5327  padding: 18px 22px;
5328  background: linear-gradient(135deg, rgba(0,153,220,0.06), rgba(158,95,166,0.04));
5329  border: 1px solid rgba(0,153,220,0.25);
5330  border-radius: 10px;
5331  margin-top: 6px;
5332}
5333.press-detail-tldr-text {
5334  font-family: 'Poppins', sans-serif;
5335  font-size: 15px;
5336  line-height: 1.6;
5337  color: #C5CDD9;
5338}
5339
5340/* "Read the original at..." callout. Hidden unless publisher_link is set. */
5341.press-detail-publisher {
5342  display: inline-flex;
5343  align-items: center;
5344  gap: 8px;
5345  padding: 10px 16px;
5346  background: rgba(0,153,220,0.06);
5347  border: 1px solid rgba(0,153,220,0.25);
5348  border-radius: 999px;
5349  margin-top: 20px;
5350  font-family: 'Poppins', sans-serif;
5351  font-size: 13px;
5352}
5353.press-detail-publisher-label {
5354  color: #9AA7B8;
5355}
5356.press-detail-publisher-link {
5357  display: inline-flex;
5358  align-items: center;
5359  gap: 5px;
5360  color: #0099DC;
5361  text-decoration: none;
5362  font-weight: 600;
5363}
5364.press-detail-publisher-link:hover { color: #33ADE3; }
5365
5366.press-detail-cover {
5367  width: 100%;
5368  max-height: 480px;
5369  object-fit: cover;
5370  border-radius: 14px;
5371  border: 1px solid #243042;
5372  margin: 32px 0 0;
5373  background: linear-gradient(135deg, rgba(0,153,220,0.06), rgba(158,95,166,0.04));
5374}
5375
5376.press-detail-body {
5377  font-family: 'Poppins', sans-serif;
5378  color: #C5CDD9;
5379  font-size: 17px;
5380  line-height: 1.78;
5381  max-width: 760px;
5382  margin: 48px 0 64px;
5383}
5384.press-detail-body h2 {
5385  font-family: 'Poppins', sans-serif;
5386  font-size: 26px;
5387  font-weight: 600;
5388  letter-spacing: -0.015em;
5389  color: #E6ECF3;
5390  margin: 48px 0 16px;
5391  padding-bottom: 10px;
5392  border-bottom: 1px solid #243042;
5393}
5394.press-detail-body h3 {
5395  font-family: 'Poppins', sans-serif;
5396  font-size: 20px;
5397  font-weight: 600;
5398  color: #E6ECF3;
5399  margin: 32px 0 12px;
5400}
5401.press-detail-body p { margin: 0 0 20px; }
5402.press-detail-body strong { color: #E6ECF3; font-weight: 600; }
5403.press-detail-body a {
5404  color: #0099DC;
5405  text-decoration: underline;
5406  text-underline-offset: 3px;
5407}
5408.press-detail-body a:hover { color: #33ADE3; }
5409.press-detail-body ul, .press-detail-body ol {
5410  margin: 0 0 20px 24px;
5411}
5412.press-detail-body li { margin-bottom: 8px; }
5413.press-detail-body blockquote {
5414  border-left: 3px solid #0099DC;
5415  padding: 4px 0 4px 20px;
5416  margin: 24px 0;
5417  color: #E6ECF3;
5418  font-style: italic;
5419}
5420.press-detail-body img {
5421  max-width: 100%;
5422  height: auto;
5423  border-radius: 8px;
5424  border: 1px solid #243042;
5425  margin: 28px 0;
5426}
5427.press-detail-body hr {
5428  border: none;
5429  height: 1px;
5430  background: #243042;
5431  margin: 40px 0;
5432}
5433
5434.press-detail-empty {
5435  padding: 64px 0;
5436  text-align: center;
5437  color: #6B7889;
5438}
5439
5440
5441/* ---- Resources Library ---- */
5442
5443.library-hero {
5444  padding: 80px 0 56px;
5445  position: relative;
5446  overflow: hidden;
5447}
5448
5449.library-toolbar {
5450  display: flex;
5451  flex-wrap: wrap;
5452  align-items: center;
5453  gap: 14px;
5454  margin: 8px 0 16px;
5455}
5456
5457.library-filter-pills {
5458  display: flex;
5459  flex-wrap: wrap;
5460  gap: 6px;
5461  flex: 1 1 auto;
5462}
5463.library-filter-pill {
5464  display: inline-flex;
5465  align-items: center;
5466  height: 30px;
5467  padding: 0 14px;
5468  border-radius: 999px;
5469  background: transparent;
5470  border: 1px solid #243042;
5471  color: #9AA7B8;
5472  font-family: 'Poppins', sans-serif;
5473  font-size: 12px;
5474  font-weight: 500;
5475  cursor: pointer;
5476  transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
5477  white-space: nowrap;
5478}
5479.library-filter-pill:hover {
5480  border-color: rgba(0,153,220,0.45);
5481  color: #E6ECF3;
5482}
5483.library-filter-pill.is-active {
5484  background: rgba(0,153,220,0.12);
5485  border-color: rgba(0,153,220,0.55);
5486  color: #0099DC;
5487}
5488
5489.library-filter-reset {
5490  background: transparent;
5491  border: none;
5492  color: #0099DC;
5493  font-family: 'Poppins', sans-serif;
5494  font-size: 12px;
5495  font-weight: 500;
5496  cursor: pointer;
5497  padding: 6px 4px;
5498  text-decoration: underline;
5499  text-underline-offset: 3px;
5500}
5501.library-filter-reset:hover { color: #33ADE3; }
5502
5503.library-result-count {
5504  font-family: 'Poppins', sans-serif;
5505  font-size: 11px;
5506  letter-spacing: 0.08em;
5507  text-transform: uppercase;
5508  color: #6B7889;
5509  margin: 12px 0 20px;
5510}
5511
5512.library-grid {
5513  display: grid;
5514  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
5515  gap: 24px;
5516  padding-bottom: 80px;
5517}
5518
5519.library-card {
5520  display: flex;
5521  flex-direction: column;
5522  background: #131c2a;
5523  border: 1px solid #243042;
5524  border-radius: 12px;
5525  overflow: hidden;
5526  text-decoration: none;
5527  color: inherit;
5528  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
5529}
5530a.library-card:hover {
5531  transform: translateY(-2px);
5532  border-color: rgba(0,153,220,0.4);
5533  box-shadow: 0 8px 24px -10px rgba(0,153,220,0.25);
5534}
5535
5536.library-card-cover {
5537  display: block;
5538  width: 100%;
5539  aspect-ratio: 16 / 10;
5540  border-bottom: 1px solid #243042;
5541  object-fit: cover;
5542  background: linear-gradient(135deg, rgba(0,153,220,0.08), rgba(158,95,166,0.06));
5543}
5544
5545.library-card-cover-fallback {
5546  position: relative;
5547  width: 100%;
5548  aspect-ratio: 16 / 10;
5549  display: flex;
5550  flex-direction: column;
5551  justify-content: flex-end;
5552  padding: 18px 20px;
5553  background:
5554    linear-gradient(155deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 60%),
5555    linear-gradient(30deg, #0099DC 0%, #CB58D5 55%, #E94142 100%);
5556  border-bottom: 1px solid #243042;
5557  color: #fff;
5558}
5559.library-card-cover-type {
5560  position: absolute;
5561  top: 14px;
5562  left: 18px;
5563  font-family: 'Poppins', sans-serif;
5564  font-size: 10px;
5565  font-weight: 600;
5566  letter-spacing: 0.18em;
5567  text-transform: uppercase;
5568  color: rgba(255,255,255,0.85);
5569  background: rgba(0,0,0,0.25);
5570  padding: 4px 10px;
5571  border-radius: 999px;
5572  backdrop-filter: blur(4px);
5573  border: 1px solid rgba(255,255,255,0.18);
5574}
5575.library-card-cover-title {
5576  font-family: 'Poppins', sans-serif;
5577  font-weight: 600;
5578  color: #fff;
5579  font-size: 15px;
5580  line-height: 1.25;
5581  letter-spacing: -0.01em;
5582  display: -webkit-box;
5583  -webkit-line-clamp: 3;
5584  -webkit-box-orient: vertical;
5585  overflow: hidden;
5586  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
5587}
5588
5589.library-card-body {
5590  padding: 16px 18px 20px;
5591  display: flex;
5592  flex-direction: column;
5593  gap: 8px;
5594  flex-grow: 1;
5595}
5596
5597.library-card-type {
5598  font-family: 'Poppins', sans-serif;
5599  font-size: 10px;
5600  font-weight: 600;
5601  letter-spacing: 0.16em;
5602  text-transform: uppercase;
5603  color: #0099DC;
5604}
5605
5606.library-card-title {
5607  font-family: 'Poppins', sans-serif;
5608  font-size: 16px;
5609  font-weight: 600;
5610  line-height: 1.3;
5611  color: #E6ECF3;
5612  letter-spacing: -0.01em;
5613}
5614
5615.library-card-desc {
5616  font-family: 'Poppins', sans-serif;
5617  font-size: 13px;
5618  color: #9AA7B8;
5619  line-height: 1.55;
5620  display: -webkit-box;
5621  -webkit-line-clamp: 3;
5622  -webkit-box-orient: vertical;
5623  overflow: hidden;
5624}
5625
5626.library-card-footer {
5627  display: flex;
5628  margin-top: auto;
5629  padding-top: 12px;
5630  border-top: 1px solid #243042;
5631}
5632
5633.library-card-btn {
5634  display: inline-flex;
5635  align-items: center;
5636  gap: 5px;
5637  font-family: 'Poppins', sans-serif;
5638  font-size: 13px;
5639  font-weight: 600;
5640  color: #0099DC;
5641}
5642.library-card-btn-disabled {
5643  color: #6B7889;
5644  font-weight: 500;
5645}
5646
5647.library-empty-state {
5648  padding: 48px 0 80px;
5649  text-align: center;
5650  color: #9AA7B8;
5651}
5652.library-empty-state p {
5653  font-family: 'Poppins', sans-serif;
5654  font-size: 15px;
5655  margin: 0 0 16px;
5656}
5657
5658/* ============ END PHASE 3 STYLES ============ */
5659
5660/* ===== On-demand demo / customer-video section: CMS mode toggle =====
5661   demo-section:home.mode is baked onto [data-section-mode] on the section.
5662   Show exactly one [data-section-variant] block; default to videos so an
5663   empty/missing/unknown mode never double-renders (only "demo" shows demo). */
5664[data-section-mode="demo"]   [data-section-variant="videos"],
5665[data-section-mode="videos"] [data-section-variant="demo"] { display: none; }
5666[data-cta-section="on-demand-demo"]:not([data-section-mode="demo"]) [data-section-variant="demo"] { display: none; }
5667
5668/* Real customer-story poster. Layers over the fallback SVG, which still paints
5669   if the image 404s or demo-section:home.videos_poster is cleared. */
5670.cit-poster { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
5671.cit-poster-play { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
5672.cit-poster[src=""] { display:none; }
5673.cit-poster[src=""] + .cit-poster-play { display:none; }
5674
5675
5676
5677
5678</style>
5679
5680<link rel="stylesheet" href="/assets/tailwind.css" />
5681
5682<link rel="stylesheet" href="/site-search.css" />
5683
5684<title>About | ArmorPoint</title>
5685  <meta name="description" content="Who we are and what we do." />
5686  <meta property="og:description" content="Who we are and what we do." />
5687  <meta property="og:title" content="About | ArmorPoint" />
5688  <link rel="canonical" href="https://www.armorpoint.com/about" />
5689  <meta property="og:url" content="https://www.armorpoint.com/about" />
5690  <meta property="og:image" content="https://www.armorpoint.com/og-image.png" />
5691  <meta name="twitter:image" content="https://www.armorpoint.com/og-image.png" />
5692  <meta property="og:image:width" content="1200" />
5693  <meta property="og:image:height" content="630" />
5694<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://www.armorpoint.com/#organization","name":"ArmorPoint","url":"https://www.armorpoint.com/","logo":{"@type":"ImageObject","url":"https://www.armorpoint.com/armorpoint-logo.png","width":600,"height":160},"image":"https://www.armorpoint.com/og-image.png","description":"ArmorPoint is a unified security operations platform for small and midsize enterprises and the service providers that support them, centralizing existing security and IT telemetry into one system backed by a 24/7 U.S.-based SOC.","foundingDate":"2018","parentOrganization":{"@type":"Organization","name":"Trapp Technology, Inc."},"address":{"@type":"PostalAddress","streetAddress":"2600 N Central Ave Floor 3","addressLocality":"Phoenix","addressRegion":"AZ","postalCode":"85004","addressCountry":"US"},"contactPoint":{"@type":"ContactPoint","telephone":"+1-877-942-2568","contactType":"sales","areaServed":"US","availableLanguage":"English"},"sameAs":["https://www.linkedin.com/company/armorpoint/","https://www.youtube.com/@armorpoint"]}</script>
5694
5695
5696</head>
5697<body>
5698
5699<header class="sticky top-0 z-40 backdrop-blur-md bg-ap-bg/70 border-b border-ap-line">
5700  <nav aria-label="Primary" class="w-full px-6 lg:px-8">
5701    <div class="flex items-center justify-between h-16">
5702      <a href="/" class="flex items-center gap-2 group" aria-label="ArmorPoint home"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1050 230" style="width:164px; height:36px; display:block;" xml:space="preserve"><g><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/></g><path fill="#FFFFFF" d="M840,76.7c-1.5-1.5-2.3-3.4-2.3-5.6s0.7-4,2.2-5.4c1.6-1.6,3.9-2.4,6.1-2.3c1.9,0.1,3.5,0.8,4.8,2.2c1.5,1.5,2.3,3.3,2.3,5.5c0,2.5-1,4.6-3,6.2c-1.1,0.9-2.5,1.5-3.9,1.6C843.8,79.1,841.7,78.4,840,76.7z"/><path fill="#FFFFFF" d="M537.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C550.9,170.9,543.9,169.2,537.8,165.8z M573.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C564,161.8,569,160.6,573.6,158.1z"/><path fill="#FFFFFF" d="M762.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C775.9,170.9,769,169.2,762.8,165.8z M798.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C789,161.8,794,160.6,798.6,158.1z"/><path fill="#0099DC" d="M1010.8,168.2c-1.5-1.5-2.2-3.4-2.2-5.6c0-2.2,0.7-4,2.2-5.5c1.4-1.4,3.3-2.2,5.5-2.2c2.1,0,3.9,0.7,5.3,2.2c1.5,1.5,2.2,3.3,2.2,5.5s-0.7,4.1-2.2,5.6s-3.2,2.3-5.3,2.3C1014.1,170.5,1012.3,169.7,1010.8,168.2z"/><path fill="#FFFFFF" d="M290.3,144.8H243c-0.1,0-0.3,0.1-0.3,0.2l-9,24.5c0,0.1-0.2,0.2-0.3,0.2H223c-0.2,0-0.4-0.2-0.3-0.5l38.1-103c0-0.1,0.2-0.2,0.3-0.2h11.4c0.1,0,0.3,0.1,0.3,0.2l37.9,103c0.1,0.2-0.1,0.5-0.3,0.5H300c-0.1,0-0.3-0.1-0.3-0.2l-9-24.5C290.5,144.9,290.4,144.8,290.3,144.8z M287.2,135.6l-20.3-55.5c-0.1-0.3-0.5-0.3-0.6,0L246,135.6c-0.1,0.2,0.1,0.5,0.3,0.5h40.5C287.1,136.1,287.3,135.9,287.2,135.6z"/><path fill="#FFFFFF" d="M344.2,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2c-4.6,4.1-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C336.5,96.5,339.9,93,344.2,90.4z"/><path fill="#FFFFFF" d="M494.4,95.3c6.1,6.1,9.1,14.9,9.1,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.6-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.7-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.5c0,0.3,0.4,0.5,0.6,0.1c2.6-4.5,6.1-8,10.5-10.5c4.8-2.7,10.2-4,16.1-4c7.1,0,13.3,1.7,18.7,5.1c5.1,3.3,8.9,8,11.3,14.2c0.1,0.3,0.5,0.3,0.6,0c2.2-6.1,5.9-10.8,11.1-14.1c5.4-3.5,11.4-5.2,18.3-5.2C480.5,86.2,488.3,89.2,494.4,95.3z"/><path fill="#FFFFFF" d="M633.9,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2s-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C626.3,96.5,629.6,93,633.9,90.4z"/><path fill="#FFFFFF" d="M727.6,116.7c-5.9,5.5-14.8,8.3-26.6,8.3h-20.8c-0.2,0-0.3,0.2-0.3,0.3v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V65.1c0-0.2,0.2-0.3,0.3-0.3H701c11.7,0,20.6,2.8,26.5,8.3c6,5.5,8.9,12.8,8.9,21.9C736.4,103.9,733.5,111.2,727.6,116.7z M725.6,94.9c0-7-2-12.3-5.9-15.9s-10.2-5.4-18.8-5.4h-20.8c-0.2,0-0.3,0.2-0.3,0.3v41.7c0,0.2,0.2,0.3,0.3,0.3H701C717.4,116,725.6,108.9,725.6,94.9z"/><path fill="#FFFFFF" d="M850.7,88.4v81.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88.4c0-0.2,0.2-0.3,0.3-0.3h9.8C850.5,88.1,850.7,88.3,850.7,88.4z"/><path fill="#FFFFFF" d="M934.7,95.3c6.2,6.1,9.3,14.9,9.3,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3H934c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.7-20.4c-4.5-4.7-10.5-7.1-18.3-7.1c-7.9,0-14.2,2.5-18.9,7.5s-7.1,12.4-7.1,22.1v44.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.4c0,0.3,0.4,0.5,0.6,0.2c2.6-4.5,6.1-7.9,10.7-10.4c4.9-2.7,10.5-4,16.7-4C920.5,86.2,928.5,89.2,934.7,95.3z"/><path fill="#FFFFFF" d="M975,96.6c-0.2,0-0.3,0.2-0.3,0.3v50.6c0,5,0.9,8.5,2.9,10.4c1.9,1.9,5.3,2.9,10.1,2.9h9.3c0.2,0,0.3,0.2,0.3,0.3v8.3c0,0.2-0.2,0.3-0.3,0.3h-10.9c-7.4,0-12.9-1.7-16.5-5.2s-5.4-9.1-5.4-17.1V96.9c0-0.2-0.2-0.3-0.3-0.3h-10.7c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h10.7c0.2,0,0.3-0.2,0.3-0.3V67.5c0-0.2,0.2-0.3,0.3-0.3h10c0.2,0,0.3,0.2,0.3,0.3v19.9c0,0.2,0.2,0.3,0.3,0.3H997c0.2,0,0.3,0.2,0.3,0.3v8.2c0,0.2-0.2,0.3-0.3,0.3L975,96.6L975,96.6z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg></a>
5703      <div class="hidden lg:flex items-center gap-5">
5704        <div class="megamenu-wrap" data-megamenu="platform"><a href="/platform" class="nav-link flex items-center gap-1" data-nav data-megamenu-trigger>
5704Platform<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><div class="megamenu-panel" role="menu" aria-label="Platform menu"><div class="megamenu-card is-duopane is-split-nav"><div class="duopane-nav is-split"><div class="duopane-col"><a href="/platform" class="megamenu-item is-overview" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/></svg></span><span><span class="megamenu-item-title">Platform Overview</span><span class="megamenu-item-desc">Start here — see how the hubs fit together.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Security Operations</div><a href="/platform/extended-detection-and-response" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3L21 7.5L12 12L3 7.5L12 3Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/> <path d="M3 12L12 16.5L21 12" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" opacity="0.6"/> <path d="M3 16.5L12 21L21 16.5" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" opacity="0.35"/></svg></span><span><span class="megamenu-item-title">Extended Detection and Response</span><span class="megamenu-item-desc">Correlation engine, not just a log lake.</span></span></a><a href="/platform/threat-intelligence" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 12C2 12 5.5 5 12 5C18.5 5 22 12 22 12C22 12 18.5 19 12 19C5.5 19 2 12 2 12Z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/> <circle cx="12" cy="12" r="3.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="1" fill="currentColor"/></svg></span><span><span class="megamenu-item-title">Threat Intelligence</span><span class="megamenu-item-desc">Pre-correlated to your environment. Not shelfware.</span></span></a><a href="/platform/incident-response" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="8.3" stroke="currentColor" stroke-width="1.7"></circle> <circle cx="12" cy="12" r="3.4" stroke="currentColor" stroke-width="1.7"></circle> <path d="M12 3.7V8.6M12 15.4V20.3M3.7 12H8.6M15.4 12H20.3" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></span><span><span class="megamenu-item-title">Incident Response</span><span class="megamenu-item-desc">A structured six-phase workflow, not a chat thread.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Exposure Management</div><a href="/platform/attack-surface-management" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="5" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="1.5" fill="currentColor"/> <path d="M12 3V12L18 6" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Attack Surface Management</span><span class="megamenu-item-desc">Discovery plus correlation against your live stack.</span></span></a><a href="/platform/asset-identity" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 12C3 11 4 10 5 10H8V7C8 6 9 5 10 5H14C15 5 16 6 16 7V10H19C20 10 21 11 21 12C21 13 20 14 19 14H16V17C16 18 15 19 14 19H10C9 19 8 18 8 17V14H5C4 14 3 13 3 12Z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Asset &amp; Identity</span><span class="megamenu-item-desc">Every endpoint and identity you run, tied to your threats.</span></span></a><a href="/platform/vulnerability-management" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 7C9.5 7 7.5 9 7.5 11.5V14C7.5 16.5 9.5 18.5 12 18.5C14.5 18.5 16.5 16.5 16.5 14V11.5C16.5 9 14.5 7 12 7Z" stroke="currentColor" stroke-width="1.8"/> <path d="M9.5 6L8 4M14.5 6L16 4M7.5 12H4M16.5 12H20M8 17L5.5 19M16 17L18.5 19" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Vulnerability Management</span><span class="megamenu-item-desc">Threat-weighted prioritization. CVSS alone isn&#39;t enough.</span></span></a></div><div class="duopane-col"><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Govern &amp; Report</div><a href="/platform/grc" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="5" y="5" width="14" height="16" rx="2.2" stroke="currentColor" stroke-width="1.6"></rect> <rect x="9" y="3.2" width="6" height="3.2" rx="1.2" stroke="currentColor" stroke-width="1.5"></rect> <path d="M8.4 11.3L9.6 12.5L11.6 10.3M8.4 16.3L9.6 17.5L11.6 15.3" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M13.4 11.6H16M13.4 16.6H16" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path></svg></span><span><span class="megamenu-item-title">GRC</span><span class="megamenu-item-desc">Continuous evidence collection. No screenshot factory.</span></span></a><a href="/platform/reporting" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 16.5a8 8 0 0 1 16 0" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path> <path d="M12 16.5L16.2 11.8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path> <circle cx="12" cy="16.5" r="1.5" fill="currentColor"></circle> <path d="M6 13.2l1.1.7M18 13.2l-1.1.7M12 9v1.4" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"></path></svg></span><span><span class="megamenu-item-title">Reporting &amp; Dashboards</span><span class="megamenu-item-desc">Live dashboards and client-branded reports, on a schedule.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Connect</div><a href="/platform/armorpoint-agent" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="20 18 182 194" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg></span><span><span class="megamenu-item-title">ArmorPoint Agent</span><span class="megamenu-item-desc">One install for telemetry, inventory, and daily vulnerability reporting.</span></span></a><a href="/platform/integrations" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="6" cy="6" r="2.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="18" cy="6" r="2.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="6" cy="18" r="2.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="18" cy="18" r="2.5" stroke="currentColor" stroke-width="1.8"/> <path d="M8.5 6H15.5M6 8.5V15.5M18 8.5V15.5M8.5 18H15.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Integrations</span><span class="megamenu-item-desc">Pre-built connectors across the major security categories.</span></span></a></div></div><div class="duopane-showcase"><div class="duopane-showcase-eyebrow">Inside the platform</div><h3 class="duopane-showcase-title">Connected hubs, one operations plane</h3><p class="duopane-showcase-desc">
5704Five connected hubs. The capabilities on the left run inside them.</p><div class="duopane-showcase-links"><a class="duopane-hub-row" href="/platform#hub-visualize" data-nav role="menuitem"><span class="duopane-hub-dot" style="background:#0099DC" aria-hidden="true"></span><span class="duopane-hub-name">Visualize</span><span class="duopane-hub-desc">See your posture, not your tool sprawl.</span><span class="duopane-hub-arrow" aria-hidden="true">&rarr;</span></a><a class="duopane-hub-row" href="/platform#hub-operations" data-nav role="menuitem"><span class="duopane-hub-dot" style="background:#4F7CC1" aria-hidden="true"></span><span class="duopane-hub-name">Operations</span><span class="duopane-hub-desc">From signal to incident to closed ticket.</span><span class="duopane-hub-arrow" aria-hidden="true">&rarr;</span></a><a class="duopane-hub-row" href="/platform#hub-governance" data-nav role="menuitem"><span class="duopane-hub-dot" style="background:#CB58D5" aria-hidden="true"></span><span class="duopane-hub-name">Governance</span><span class="duopane-hub-desc">Controls mapped to live evidence.</span><span class="duopane-hub-arrow" aria-hidden="true">&rarr;</span></a><a class="duopane-hub-row" href="/platform#hub-environment" data-nav role="menuitem"><span class="duopane-hub-dot" style="background:#C45074" aria-hidden="true"></span><span class="duopane-hub-name">Environment</span><span class="duopane-hub-desc">Know what you have before you defend it.</span><span class="duopane-hub-arrow" aria-hidden="true">&rarr;</span></a><a class="duopane-hub-row" href="/platform#hub-response-center" data-nav role="menuitem"><span class="duopane-hub-dot" style="background:#E94142" aria-hidden="true"></span><span class="duopane-hub-name">Response Center</span><span class="duopane-hub-desc">The analyst&#39;s tools, one click away on any screen.</span><span class="duopane-hub-arrow" aria-hidden="true">&rarr;</span></a></div></div></div></div></div>
5705        <div class="megamenu-wrap" data-megamenu="services"><a href="/services" class="nav-link flex items-center gap-1" data-nav data-megamenu-trigger>Services<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><div class="megamenu-panel" role="menu" aria-label="Services menu"><div class="megamenu-card is-duopane"><div class="duopane-nav"><a href="/services" class="megamenu-item is-overview" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3V21M5 8H19M7 8L4 14H10L7 8ZM17 8L14 14H20L17 8Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Compare Services</span><span class="megamenu-item-desc">From self-run to fully managed, plus advisory and onboarding.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Managed SOC</div><a href="/services/mxdr" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9.5" stroke="currentColor" stroke-width="1.6" opacity="0.4"/> <circle cx="12" cy="12" r="6.5" stroke="currentColor" stroke-width="1.7" opacity="0.7"/> <circle cx="12" cy="12" r="3.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="1" fill="currentColor"/></svg></span><span><span class="megamenu-item-title">MXDR</span><span class="megamenu-item-desc">Our SOC runs detection and response across your whole environment.</span></span></a><a href="/services/mdr" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9.5" stroke="currentColor" stroke-width="1.6" opacity="0.4"/> <circle cx="12" cy="12" r="6.5" stroke="currentColor" stroke-width="1.7" opacity="0.7"/> <circle cx="12" cy="12" r="3.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="1" fill="currentColor"/></svg></span><span><span class="megamenu-item-title">
5705MDR</span><span class="megamenu-item-desc">A managed SOC on your endpoints. Start here, grow into more.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Platform only</div><a href="/services/xdr" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="9.5" stroke="currentColor" stroke-width="1.6" opacity="0.4"/> <circle cx="12" cy="12" r="6.5" stroke="currentColor" stroke-width="1.7" opacity="0.7"/> <circle cx="12" cy="12" r="3.5" stroke="currentColor" stroke-width="1.8"/> <circle cx="12" cy="12" r="1" fill="currentColor"/></svg></span><span><span class="megamenu-item-title">XDR</span><span class="megamenu-item-desc">The full platform, run by your team.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Advisory layer</div><a href="/services/advise" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3.3a5.7 5.7 0 0 0-3.3 10.4c.6.4.9 1 .9 1.8v.5h4.8v-.5c0-.8.3-1.4.9-1.8A5.7 5.7 0 0 0 12 3.3Z" stroke="#CB58D5" stroke-width="1.7" stroke-linejoin="round"></path> <path d="M9.8 19h4.4M10.6 21.4h2.8" stroke="#CB58D5" stroke-width="1.5" stroke-linecap="round"></path></svg></span><span><span class="megamenu-item-title">Advise</span><span class="megamenu-item-desc">Get more from ArmorPoint, at the level you need.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Implementation</div><a href="/services/guided-implementation" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 21V3.8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path> <path d="M6 4.4H16.5L13.6 7.9L16.5 11.4H6" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"></path></svg></span><span><span class="megamenu-item-title">Guided Implementation</span><span class="megamenu-item-desc">Expert-led, consultative onboarding to go-live.</span></span></a></div><div class="duopane-showcase"><div class="duopane-showcase-eyebrow">Managed by ArmorPoint</div><h3 class="duopane-showcase-title">A 24/7 SOC behind your stack</h3><p class="duopane-showcase-desc">A U.S.-based SOC and the platform it runs on, watching, investigating, and responding to what matters. Security operations run for you, not handed to you.</p><div class="duopane-showcase-visual" aria-hidden="true">
5706<svg viewBox="0 0 340 240" xmlns="http://www.w3.org/2000/svg">
5707  <defs>
5708    <radialGradient id="svc-glow2" cx="50%" cy="50%" r="55%">
5709      <stop offset="0%" stop-color="#0099DC" stop-opacity="0.18"></stop>
5710      <stop offset="60%" stop-color="#CB58D5" stop-opacity="0.06"></stop>
5711      <stop offset="100%" stop-color="#CB58D5" stop-opacity="0"></stop>
5712    </radialGradient>
5713    <linearGradient id="svc-sweep2" x1="0" y1="0" x2="1" y2="0">
5714      <stop offset="0%" stop-color="#0099DC" stop-opacity="0.5"></stop>
5715      <stop offset="100%" stop-color="#0099DC" stop-opacity="0"></stop>
5716    </linearGradient>
5717  </defs>
5718  <ellipse cx="170" cy="120" rx="155" ry="120" fill="url(#svc-glow2)"></ellipse>
5719
5720  <rect x="14" y="14" width="312" height="212" rx="8" fill="#0F1822" stroke="#1F2A3A" stroke-width="1"></rect>
5721  <rect x="14" y="14" width="312" height="22" rx="8" fill="#131C2A"></rect>
5722  <rect x="14" y="28" width="312" height="8" fill="#131C2A"></rect>
5723  <line x1="14" y1="36" x2="326" y2="36" stroke="#1F2A3A" stroke-width="0.8"></line>
5724  <circle cx="25" cy="25" r="2.4" fill="#E94142"></circle><circle cx="34" cy="25" r="2.4" fill="#E0A82E"></circle><circle cx="43" cy="25" r="2.4" fill="#3FB950"></circle>
5725  <text x="54" y="28" font-family="Poppins, sans-serif" font-size="8" font-weight="600" fill="#9AA7B8" letter-spacing="0.4">ArmorPoint · SOC Console</text>
5726  <circle cx="289" cy="25" r="2.5" fill="#4ADE80"><animate attributeName="opacity" values="0.45;1;
57260.45" dur="1.6s" repeatCount="indefinite"></animate></circle>
5727  <text x="297" y="28" font-family="Poppins, sans-serif" font-size="7.5" font-weight="700" fill="#4ADE80" letter-spacing="0.5">LIVE</text>
5728
5729  <rect x="24" y="44" width="184" height="170" rx="6" fill="#0D1622" stroke="#1F2A3A" stroke-width="0.8"></rect>
5730  <text x="33" y="59" font-family="Poppins, sans-serif" font-size="7.5" font-weight="700" fill="#7C8B9C" letter-spacing="0.8">THREAT RADAR</text>
5731
5732  <line x1="48" y1="132" x2="184" y2="132" stroke="#152532" stroke-width="0.8"></line>
5733  <line x1="116" y1="66" x2="116" y2="200" stroke="#152532" stroke-width="0.8"></line>
5734  <circle cx="116" cy="132" r="68" fill="none" stroke="#1c3242" stroke-width="1"></circle>
5735  <circle cx="116" cy="132" r="45" fill="none" stroke="#1c3242" stroke-width="1"></circle>
5736  <circle cx="116" cy="132" r="22" fill="none" stroke="#1c3242" stroke-width="1"></circle>
5737
5738  <circle cx="116" cy="132" r="8" fill="none" stroke="#0099DC" stroke-width="1.2">
5739    <animate attributeName="r" from="10" to="36" dur="3s" repeatCount="indefinite"></animate>
5740    <animate attributeName="opacity" from="0.55" to="0" dur="3s" repeatCount="indefinite"></animate>
5741  </circle>
5742
5743  <g>
5744    <path d="M116,132 L184,132 A68,68 0 0 0 150,73 Z" fill="url(#svc-sweep2)"></path>
5745    <line x1="116" y1="132" x2="184" y2="132" stroke="#0099DC" stroke-width="1.2" stroke-opacity="0.6"></line>
5746    <animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 116 132" to="360 116 132" dur="4.6s" repeatCount="indefinite"></animateTransform>
5747  </g>
5748
5749  <circle cx="150" cy="96" r="2.8" fill="#0099DC"><animate attributeName="opacity" values="0.3;1;0.3" dur="2.4s" repeatCount="indefinite"></animate></circle>
5750  <circle cx="80" cy="106" r="2.5" fill="#CB58D5"><animate attributeName="opacity" values="0.3;1;0.3" dur="2.4s" begin="0.6s" repeatCount="indefinite"></animate></circle>
5751  <circle cx="148" cy="168" r="2.5" fill="#E94142"><animate attributeName="opacity" values="0.3;1;0.3" dur="2.4s" begin="1.1s" repeatCount="indefinite"></animate></circle>
5752  <circle cx="90" cy="166" r="2.3" fill="#0099DC"><animate attributeName="opacity" values="0.3;1;0.3" dur="2.4s" begin="1.7s" repeatCount="indefinite"></animate></circle>
5753  <circle cx="72" cy="140" r="2.1" fill="#CB58D5"><animate attributeName="opacity" values="0.3;1;0.3" dur="2.4s" begin="0.9s" repeatCount="indefinite"></animate></circle>
5754
5755  <circle cx="116" cy="132" r="20" fill="#0F1822" stroke="#235a7e" stroke-width="1.2"></circle>
5756  <g transform="translate(116 132) scale(0.165) translate(-111 -115)">
5757    <path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"></path>
5758    <path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"></path>
5759  </g>
5760
5761  <g>
5762    <rect x="216" y="44" width="100" height="52" rx="6" fill="#131C2A" stroke="#1F2A3A" stroke-width="0.8"></rect>
5763    <text x="224" y="60" font-family="Poppins, sans-serif" font-size="7" font-weight="600" fill="#6B7889" letter-spacing="0.4">Signals / 24h</text>
5764    <text x="224" y="84" font-family="Poppins, sans-serif" font-size="19" font-weight="700" fill="#E6ECF3">2,051</text>
5765  </g>
5766  <g>
5767    <rect x="216" y="100" width="100" height="52" rx="6" fill="#131C2A" stroke="#1F2A3A" stroke-width="0.8"></rect>
5768    <text x="224" y="116" font-family="Poppins, sans-serif" font-size="7" font-weight="600" fill="#6B7889" letter-spacing="0.4">Analysts on shift</text>
5769    <text x="224" y="140" font-family="Poppins, sans-serif" font-size="19" font-weight="700" fill="#E6ECF3">6 <tspan font-size="8" font-weight="600" fill="#0099DC">U.S.</tspan></text>
5770  </g>
5771  <g>
5772    <rect x="216" y="156" width="100" height="58" rx="6" fill="#131C2A" stroke="#1F2A3A" stroke-width="0.8"></rect>
5773    <text x="224" y="172" font-family="Poppins, sans-serif" font-size="7" font-weight="600" fill="#6B7889" letter-spacing="0.4">Coverage</text>
5774    <text x="224" y="196" font-family="Poppins, sans-serif" font-size="19" font-weight="700" fill="#E6ECF3">24/7</text>
5775    <text x="224" y="207" font-family="Poppins, sans-serif" font-size="6.5" font-weight="600" fill="#4ADE80">always on</text>
5776  </g>
5777</svg></div></div></div></div></div>
5778        <div class="megamenu-wrap" data-megamenu="solutions"><a href="/solutions" class="nav-link flex items-center gap-1" data-nav data-megamenu-trigger>
5778Solutions<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><div class="megamenu-panel" role="menu" aria-label="Solutions menu"><div class="megamenu-card is-duopane"><div class="duopane-nav"><a href="/solutions" class="megamenu-item is-overview" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6" fill="currentColor" fill-opacity="0.2"/></svg></span><span><span class="megamenu-item-title">Compare Solutions</span><span class="megamenu-item-desc">Find your fit by industry or by the problem on your desk.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">By industry</div><a href="/solutions/msp" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="14" width="18" height="6" rx="1.5" stroke="currentColor" stroke-width="1.7"/> <rect x="5" y="9" width="14" height="5" rx="1" stroke="currentColor" stroke-width="1.5" opacity="0.7"/> <rect x="7" y="5" width="10" height="4" rx="1" stroke="currentColor" stroke-width="1.4" opacity="0.45"/></svg></span><span><span class="megamenu-item-title">For MSPs</span><span class="megamenu-item-desc">Run a SOC across every client without standing one up for each.</span></span></a><a href="/solutions/federal" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3L21 8H3L12 3Z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/> <path d="M5 8V19M9 8V19M15 8V19M19 8V19M3 19H21" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Federal &amp; CMMC</span><span class="megamenu-item-desc">CMMC readiness on the same platform that runs your SOC.</span></span></a><a href="/solutions/healthcare" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 12H7L9 8L13 16L15 12H21" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Healthcare</span><span class="megamenu-item-desc">Protect patient data without slowing patient care.</span></span></a><a href="/solutions" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6" fill="currentColor" fill-opacity="0.2"/></svg></span><span><span class="megamenu-item-title">See All Industries →</span><span class="megamenu-item-desc">Finance, Manufacturing, Utilities, Education, and more.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">By need</div><a href="/solutions/cyber-insurance" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 3H14L19 8V21H6V3Z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/> <path d="M14 3V8H19" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/> <path d="M9.5 14L11 15.5L14 12.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Cyber Insurance Readiness</span><span class="megamenu-item-desc">Answer the renewal questionnaire with evidence, not guesses.</span></span></a><a href="/solutions/compliance" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="9.5" r="5.3" stroke="currentColor" stroke-width="1.7"></circle> <path d="M9.6 13.6L8.6 20.8L12 18.7L15.4 20.8L14.4 13.6" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"></path> <path d="M9.8 9.4L11.2 10.8L14.1 7.9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><span><span class="megamenu-item-title">Compliance Certification</span><span class="megamenu-item-desc">Get certification-ready on the evidence you already produce.</span></span></a><a href="/solutions/post-breach" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3L4 6V12C4 16.5 7.5 20.3 12 21C16.5 20.3 20 16.5 20 12V6L12 3Z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/> <path d="M9 13L11 15L15 10" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Post-Incident</span><span class="megamenu-item-desc">A disciplined response when you have been breached.</span></span></a></div><div class="duopane-showcase"><div class="duopane-showcase-eyebrow">Built for your mandate</div><h3 class="duopane-showcase-title">What you actually answer for</h3><p class="duopane-showcase-desc">Healthcare, finance, federal, MSPs — mapped to the obligations you&#39;re measured against.</p><div class="duopane-showcase-visual" aria-hidden="true"><svg viewBox="0 0 340 240" xmlns="http://www.w3.org/2000/svg">
5779  <defs>
5780    <radialGradient id="duopane-glow-solutions" cx="50%" cy="48%" r="60%">
5781      <stop offset="0%" stop-color="#0099DC" stop-opacity="0.16"></stop>
5782      <stop offset="60%" stop-color="#CB58D5" stop-opacity="0.06"></stop>
5783      <stop offset="100%" stop-color="#CB58D5" stop-opacity="0"></stop>
5784    </radialGradient>
5785  </defs>
5786  <ellipse cx="170" cy="116" rx="160" ry="98" fill="url(#duopane-glow-solutions)"></ellipse>
5787  <rect x="44" y="28" width="252" height="184" rx="10" fill="#0F1822" stroke="#1F2A3A" stroke-width="1"></rect>
5788  <rect x="44" y="28" width="252" height="34" rx="10" fill="#131C2A"></rect>
5789  <rect x="44" y="50" width="252" height="12" fill="#131C2A"></rect>
5790  <line x1="44" y1="62" x2="296" y2="62" stroke="#1F2A3A" stroke-width="0.8"></line>
5791  <text x="62" y="50" font-family="Poppins, sans-serif" font-size="11" font-weight="600" fill="#E6ECF3">What you answer for</text>
5792  <circle cx="284" cy="45" r="2.4" fill="#0099DC"></circle>
5793  <g>
5794    <rect x="62" y="75" width="16" height="16" rx="4" fill="rgba(0,153,220,0.10)" stroke="rgba(0,153,220,0.35)" stroke-width="0.8"></rect>
5795    <path d="M66 83l2.5 2.5 4-5" fill="none" stroke="#33ADE3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
5796    <text x="90" y="86" font-family="Poppins, sans-serif" font-size="11" font-weight="500" fill="#E6ECF3">HIPAA</text>
5797    <text x="90" y="97" font-family="JetBrains Mono, monospace" font-size="6.5" fill="#6B7889" letter-spacing="0.3">Healthcare privacy and security</text>
5798    <rect x="232" y="76" width="50" height="14" rx="7" fill="rgba(0,153,220,0.08)" stroke="rgba(0,153,220,0.28)" stroke-width="0.8"></rect>
5799    <text x="257" y="86" font-family="JetBrains Mono, monospace" font-size="6" font-weight="600" fill="#0099DC" text-anchor="middle" letter-spacing="0.5">MAPPED</text>
5800  </g>
5801  <line x1="62" y1="105" x2="282" y2="105" stroke="#1F2A3A" stroke-width="0.5"></line>
5802  <g>
5803    <rect x="62" y="106" width="16" height="16" rx="4" fill="rgba(0,153,220,0.10)" stroke="rgba(0,153,220,0.35)" stroke-width="0.8"></rect>
5804    <path d="M66 114l2.5 2.5 4-5" fill="none" stroke="#33ADE3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
5805    <text x="90" y="117" font-family="Poppins, sans-serif" font-size="11" font-weight="500" fill="#E6ECF3">PCI-DSS</text>
5806    <text x="90" y="128" font-family="JetBrains Mono, monospace" font-size="6.5" fill="#6B7889" letter-spacing="0.3">Cardholder data protection</text>
5807    <rect x="232" y="107" width="50" height="14" rx="7" fill="rgba(0,153,220,0.08)" stroke="rgba(0,153,220,0.28)" stroke-width="0.8"></rect>
5808    <text x="257" y="117" font-family="JetBrains Mono, monospace" font-size="6" font-weight="600" fill="#0099DC" text-anchor="middle" letter-spacing="0.5">MAPPED</text>
5809  </g>
5810  <line x1="62" y1="136" x2="282" y2="136" stroke="#1F2A3A" stroke-width="0.5"></line>
5811  <g>
5812    <rect x="62" y="137" width="16" height="16" rx="4" fill="rgba(0,153,220,0.10)" stroke="rgba(0,153,220,0.35)" stroke-width="0.8"></rect>
5813    <path d="M66 145l2.5 2.5 4-5" fill="none" stroke="#33ADE3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
5814    <text x="90" y="148" font-family="Poppins, sans-serif" font-size="11" font-weight="500" fill="#E6ECF3">CMMC</text>
5815    <text x="90" y="159" font-family="JetBrains Mono, monospace" font-size="6.5" fill="#6B7889" letter-spacing="0.3">Federal contractor readiness</text>
5816    <rect x="232" y="138" width="50" height="14" rx="7" fill="rgba(0,153,220,0.08)" stroke="rgba(0,153,220,0.28)" stroke-width="0.8"></rect>
5817    <text x="257" y="148" font-family="JetBrains Mono, monospace" font-size="6" font-weight="600" fill="#0099DC" text-anchor="middle" letter-spacing="0.5">MAPPED</text>
5818  </g>
5819  <line x1="62" y1="167" x2="282" y2="167" stroke="#1F2A3A" stroke-width="0.5"></line>
5820  <g>
5821    <rect x="62" y="168" width="16" height="16" rx="4" fill="rgba(0,153,220,0.10)" stroke="rgba(0,153,220,0.35)" stroke-width="0.8"></rect>
5822    <path d="M66 176l2.5 2.5 4-5" fill="none" stroke="#33ADE3" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
5823    <text x="90" y="179" font-family="Poppins, sans-serif" font-size="11" font-weight="500" fill="#E6ECF3">Cyber insurance</text>
5824    <text x="90" y="190" font-family="JetBrains Mono, monospace" font-size="6.5" fill="#6B7889" letter-spacing="0.3">Renewal evidence, on demand</text>
5825    <rect x="232" y="169" width="50" height="14" rx="7" fill="rgba(0,153,220,0.08)" stroke="rgba(0,153,220,0.28)" stroke-width="0.8"></rect>
5826    <text x="257" y="179" font-family="JetBrains Mono, monospace" font-size="6" font-weight="600" fill="#0099DC" text-anchor="middle" letter-spacing="0.5">MAPPED</text>
5827  </g>
5828</svg></div></div></div></div></div>
5829        <div class="megamenu-wrap" data-megamenu="resources"><a href="/resources" class="nav-link flex items-center gap-1" data-nav data-megamenu-trigger>
5829Resources<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><div class="megamenu-panel" role="menu" aria-label="Resources menu"><div class="megamenu-card is-duopane"><div class="duopane-nav"><a href="/resources" class="megamenu-item is-overview" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 5L11 7V20L3 18V5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/> <path d="M21 5L13 7V20L21 18V5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Resource Library</span><span class="megamenu-item-desc">Field-tested writing, frameworks, and customer stories from the SOC.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Read</div><a href="/blog" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 4H19V20H5V4Z" stroke="currentColor" stroke-width="1.6"/> <path d="M8 9H16M8 13H16M8 17H13" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Blog</span><span class="megamenu-item-desc">Practical writing on operations, compliance, and incidents.</span></span></a><a href="/press" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 4H19V20H5V4Z" stroke="currentColor" stroke-width="1.6"/> <path d="M8 9H16M8 13H16M8 17H13" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">Press Releases</span><span class="megamenu-item-desc">Partner announcements, awards, and milestones. ArmorPoint in the news.</span></span></a></div><div class="duopane-showcase"><div class="duopane-showcase-eyebrow">Latest content</div><h3 class="duopane-showcase-title">Field notes from the SOC</h3><p class="duopane-showcase-desc">180+ posts. 40+ press releases. 40+ downloadable guides. Practitioner-grade writing on the work that actually matters.</p><div class="duopane-showcase-visual" aria-hidden="true"><svg viewBox="0 0 340 240" xmlns="http://www.w3.org/2000/svg">
5830  <defs>
5831    <radialGradient id="duopane-glow-resources" cx="50%" cy="50%" r="60%">
5832      <stop offset="0%" stop-color="#0099DC" stop-opacity="0.26"></stop>
5833      <stop offset="55%" stop-color="#0099DC" stop-opacity="0.10"></stop>
5834      <stop offset="100%" stop-color="#0099DC" stop-opacity="0"></stop>
5835    </radialGradient>
5836    <clipPath id="rescard-clip"><rect x="60" y="70" width="220" height="130" rx="10"></rect></clipPath>
5837  </defs>
5838
5839  <ellipse cx="170" cy="125" rx="150" ry="100" fill="url(#duopane-glow-resources)"></ellipse>
5840
5841  <rect x="76" y="56" width="188" height="118" rx="9" fill="#0F1822" stroke="#1F2A3A" stroke-width="0.8" opacity="0.6"></rect>
5842  <rect x="68" y="62" width="204" height="124" rx="9" fill="#0F1822" stroke="#1F2A3A" stroke-width="0.8" opacity="0.85"></rect>
5843
5844  <g class="duopane-card-a">
5845    <rect x="60" y="70" width="220" height="130" rx="10" fill="#131C2A" stroke="rgba(0,153,220,0.45)" stroke-width="1.1"></rect>
5846    <rect x="60" y="70" width="220" height="3" fill="#0099DC" clip-path="url(#rescard-clip)"></rect>
5847    <text x="76" y="94" font-family="Poppins, sans-serif" font-size="8" font-weight="700" fill="#0099DC" letter-spacing="0.6">BLOG · 6 MIN READ</text>
5848    <rect x="76" y="105" width="180" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5849    <rect x="76" y="119" width="125" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5850    <rect x="76" y="141" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5851    <rect x="76" y="149" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5852    <rect x="76" y="157" width="140" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5853    <text x="76" y="182" font-family="Poppins, sans-serif" font-size="6.5" font-weight="600" fill="#6B7889" letter-spacing="0.4">STRATEGY · MAY 2026</text>
5854  </g>
5855
5856  <g class="duopane-card-b">
5857    <rect x="60" y="70" width="220" height="130" rx="10" fill="#131C2A" stroke="rgba(203,88,213,0.45)" stroke-width="1.1"></rect>
5858    <rect x="60" y="70" width="220" height="3" fill="#CB58D5" clip-path="url(#rescard-clip)"></rect>
5859    <text x="76" y="94" font-family="Poppins, sans-serif" font-size="8" font-weight="700" fill="#CB58D5" letter-spacing="0.6">PRESS RELEASE</text>
5860    <rect x="76" y="105" width="180" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5861    <rect x="76" y="119" width="155" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5862    <rect x="76" y="141" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5863    <rect x="76" y="149" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5864    <rect x="76" y="157" width="120" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5865    <text x="76" y="182" font-family="Poppins, sans-serif" font-size="6.5" font-weight="600" fill="#6B7889" letter-spacing="0.4">ANNOUNCEMENT · MAY 2026</text>
5866  </g>
5867
5868  <g class="duopane-card-c">
5869    <rect x="60" y="70" width="220" height="130" rx="10" fill="#131C2A" stroke="rgba(233,65,66,0.45)" stroke-width="1.1"></rect>
5870    <rect x="60" y="70" width="220" height="3" fill="#E94142" clip-path="url(#rescard-clip)"></rect>
5871    <text x="76" y="94" font-family="Poppins, sans-serif" font-size="8" font-weight="700" fill="#E94142" letter-spacing="0.6">LIBRARY · REPORT</text>
5872    <rect x="76" y="105" width="180" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5873    <rect x="76" y="119" width="140" height="8" rx="2" fill="#E6ECF3" opacity="0.92"></rect>
5874    <rect x="76" y="141" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5875    <rect x="76" y="149" width="188" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5876    <rect x="76" y="157" width="160" height="2.5" rx="1.25" fill="#9AA7B8" opacity="0.4"></rect>
5877    <text x="76" y="182" font-family="Poppins, sans-serif" font-size="6.5" font-weight="600" fill="#6B7889" letter-spacing="0.4">DOWNLOAD · 24 PAGES</text>
5878  </g>
5879
5880  <g transform="translate(170, 220)">
5881    <rect x="-14" y="-2" width="10" height="4" rx="2" fill="#0099DC" class="duopane-kpi-a"></rect>
5882    <rect x="-14" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-b"></rect>
5883    <rect x="-14" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-c"></rect>
5884
5885    <rect x="-1" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-a"></rect>
5886    <rect x="-1" y="-2" width="10" height="4" rx="2" fill="#CB58D5" class="duopane-kpi-b"></rect>
5887    <rect x="-1" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-c"></rect>
5888
5889    <rect x="12" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-a"></rect>
5890    <rect x="12" y="-2" width="3" height="4" rx="1.5" fill="#1F2A3A" class="duopane-kpi-b"></rect>
5891    <rect x="12" y="-2" width="10" height="4" rx="2" fill="#E94142" class="duopane-kpi-c"></rect>
5892  </g>
5893</svg></div></div></div></div></div>
5894        <div class="megamenu-wrap" data-megamenu="partners"><a href="/partners" class="nav-link flex items-center gap-1" data-nav data-megamenu-trigger>
5894Partners<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a><div class="megamenu-panel" role="menu" aria-label="Partners menu"><div class="megamenu-card is-duopane"><div class="duopane-nav"><a href="/partners" class="megamenu-item is-overview" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="14" width="18" height="6" rx="1.5" stroke="currentColor" stroke-width="1.7"/> <rect x="5" y="9" width="14" height="5" rx="1" stroke="currentColor" stroke-width="1.5" opacity="0.7"/> <rect x="7" y="5" width="10" height="4" rx="1" stroke="currentColor" stroke-width="1.4" opacity="0.45"/></svg></span><span><span class="megamenu-item-title">Partner Program Overview</span><span class="megamenu-item-desc">Find the track that fits how you sell and deliver.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Program tracks</div><a href="/partners/service" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9 11a4 4 0 100-8 4 4 0 000 8z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23 21v-2a4 4 0 00-3-3.87" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16 3.13a4 4 0 010 7.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Service Provider</span><span class="megamenu-item-desc">Deliver managed security with your brand on every report and your team on the relationship.</span></span></a><a href="/partners/reseller" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 10V20a1 1 0 001 1h14a1 1 0 001-1V10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3 6l1.5-3h15L21 6a2.4 2.4 0 01-4.5 1.2A2.4 2.4 0 0112 7.2 2.4 2.4 0 017.5 7.2 2.4 2.4 0 013 6z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9 21v-6a1 1 0 011-1h4a1 1 0 011 1v6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Reseller</span><span class="megamenu-item-desc">Add cybersecurity to your portfolio. Skip the operational lift.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Distribution</div><a href="/partners/distribution" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="5" cy="12" r="2.5" stroke="currentColor" stroke-width="1.6"/> <circle cx="12" cy="5" r="2.5" stroke="currentColor" stroke-width="1.6"/> <circle cx="19" cy="12" r="2.5" stroke="currentColor" stroke-width="1.6"/> <circle cx="12" cy="19" r="2.5" stroke="currentColor" stroke-width="1.6"/> <path d="M7 11L11 7M14 7L17 11M17 14L13.5 17M10 17L7 14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></span><span><span class="megamenu-item-title">TD SYNNEX</span><span class="megamenu-item-desc">Sell or buy ArmorPoint through TD SYNNEX distribution.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Tech alliances</div><a href="/partners/tech-alliances" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 12C3 11 4 10 5 10H8V7C8 6 9 5 10 5H14C15 5 16 6 16 7V10H19C20 10 21 11 21 12C21 13 20 14 19 14H16V17C16 18 15 19 14 19H10C9 19 8 18 8 17V14H5C4 14 3 13 3 12Z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg></span><span><span class="megamenu-item-title">Tech Alliances</span><span class="megamenu-item-desc">EDR partners that run inside ArmorPoint: CrowdStrike, SentinelOne, Cybereason.</span></span></a><div class="megamenu-section-label" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.14em;">Get started</div><a href="/partners/apply" class="megamenu-item" data-nav role="menuitem"><span class="duopane-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="8" r="3.4" stroke="currentColor" stroke-width="1.7"></circle> <path d="M4 20c0-3.3 2.7-6 6-6 1.2 0 2.4.4 3.4 1" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path> <path d="M17.5 14.5V20M14.8 17.2H20.2" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></span><span><span class="megamenu-item-title">Become a Partner</span><span class="megamenu-item-desc">Tell us about your practice and we&#39;ll route the right program.</span></span></a></div><div class="duopane-showcase"><div class="duopane-showcase-eyebrow">Partner ecosystem</div><h3 class="duopane-showcase-title">We sell with you, never around you</h3><p class="duopane-showcase-desc">Sold and delivered through partners who own the customer relationship. Multiple tracks, one platform.</p><div class="duopane-showcase-visual" aria-hidden="true"><svg viewBox="0 0 340 240" xmlns="http://www.w3.org/2000/svg">
5895  <defs>
5896    <radialGradient id="duopane-glow-partners" cx="50%" cy="46%" r="58%">
5897      <stop offset="0%" stop-color="#0099DC" stop-opacity="0.20"></stop>
5898      <stop offset="55%" stop-color="#CB58D5" stop-opacity="0.08"></stop>
5899      <stop offset="100%" stop-color="#CB58D5" stop-opacity="0"></stop>
5900    </radialGradient>
5901    <linearGradient id="duopane-grad-partners" x1="0%" y1="0%" x2="100%" y2="100%" gradientTransform="rotate(30)">
5902      <stop offset="0%" stop-color="#0099DC"></stop><stop offset="50%" stop-color="#CB58D5"></stop><stop offset="100%" stop-color="#E94142"></stop>
5903    </linearGradient>
5904  </defs>
5905  <ellipse cx="170" cy="118" rx="155" ry="96" fill="url(#duopane-glow-partners)"></ellipse>
5906  <path d="M170 54 L84 172 L256 172 Z" fill="none" stroke="#1F2A3A" stroke-width="1"></path>
5907  <path d="M150 76 L104 153" fill="none" stroke="#33ADE3" stroke-width="1.3" opacity="0.9"></path>
5908  <path d="M99 147 L104 153 L109 147" fill="none" stroke="#33ADE3" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path>
5909  <path d="M190 76 L236 153" fill="none" stroke="#9E7BD6" stroke-width="1.3" opacity="0.9"></path>
5910  <path d="M231 147 L236 153 L241 147" fill="none" stroke="#9E7BD6" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path>
5911  <rect x="116" y="36" width="108" height="38" rx="9" fill="#0d1f2e" stroke="rgba(0,153,220,0.6)" stroke-width="1.1"></rect>
5912  <text x="170" y="54" font-family="Poppins, sans-serif" font-size="11" font-weight="600" fill="#E6ECF3" text-anchor="middle">Partner</text>
5913  <text x="170" y="66" font-family="JetBrains Mono, monospace" font-size="6.5" fill="#33ADE3" text-anchor="middle" letter-spacing="1.2">YOU</text>
5914  <rect x="30" y="154" width="104" height="36" rx="9" fill="#101a27" stroke="rgba(0,153,220,0.45)" stroke-width="1"></rect>
5915  <text x="82" y="170" font-family="Poppins, sans-serif" font-size="10.5" font-weight="600" fill="#E6ECF3" text-anchor="middle">Your customer</text>
5916  <text x="82" y="182" font-family="JetBrains Mono, monospace" font-size="6" fill="#0099DC" text-anchor="middle" letter-spacing="0.6">THE RELATIONSHIP</text>
5917  <rect x="204" y="154" width="108" height="36" rx="9" fill="#131C2A" stroke="url
5917(#duopane-grad-partners)" stroke-width="1.1"></rect>
5918  <text x="258" y="170" font-family="Poppins, sans-serif" font-size="11" font-weight="600" fill="#E6ECF3" text-anchor="middle">ArmorPoint</text>
5919  <text x="258" y="182" font-family="JetBrains Mono, monospace" font-size="6" fill="#9AA7B8" text-anchor="middle" letter-spacing="0.6">THE PLATFORM</text>
5920  <text x="170" y="228" font-family="JetBrains Mono, monospace" font-size="7" font-weight="500" fill="#6B7889" text-anchor="middle" letter-spacing="2">NEVER AROUND YOU</text>
5921</svg></div></div></div></div></div>
5922      </div>
5923      <div class="hidden lg:flex items-center gap-4">
5924        <button type="button" class="ap-search-trigger ap-js-search-open" aria-label="Search the site" aria-haspopup="dialog"><span class="ap-search-trigger-l"><svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="1.8"/><path d="M20 20l-3.4-3.4" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg><span>Search</span></span><span class="ap-kbd">/</span></button>
5925        <div class="signin-menu" data-signin-menu><button type="button" class="signin-trigger text-sm text-ap-fog hover:text-ap-text transition" aria-haspopup="true" aria-expanded="false">Sign in<svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="signin-panel" role="menu" aria-label="Sign in options"><div class="signin-card"><a href="https://portal.armorpoint.com" class="signin-option" role="menuitem" target="_blank" rel="noopener noreferrer" data-nav><span class="signin-option-icon" aria-hidden="true"><svg viewBox="20 18 182 194" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg></span><span class="signin-option-text"><span class="signin-option-label">ArmorPoint Platform</span></span></a><a href="https://armorpoint.amp.vg/login" class="signin-option" role="menuitem" target="_blank" rel="noopener noreferrer" data-nav><span class="signin-option-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="7" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <circle cx="17" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <path d="M3 20C3 16 5 14 7 14C8.5 14 10 15 12 17C14 15 15.5 14 17 14C19 14 21 16 21 20" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span><span class="signin-option-text"><span class="signin-option-label">Partner Portal</span></span></a></div></div></div>
5926        <a href="/demo" class="btn-primary" data-nav>Request a demo<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2 6h8m0 0L6.5 2.5M10 6L6.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
5927      </div>
5928      <div class="ap-nav-mobile flex items-center gap-1">
5929        <button type="button" class="ap-search-iconbtn ap-js-search-open" aria-label="Search the site"><svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="1.8"/><path d="M20 20l-3.4-3.4" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
5930        <button id="mobile-toggle" class="p-2 -mr-2 text-ap-text" aria-label="Open menu" aria-expanded="false"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
5931      </div>
5932    </div>
5933  </nav>
5934</header>
5935<div id="ap-search-overlay" class="ap-search-overlay" role="dialog" aria-modal="true" aria-label="Search">
5936  <div class="ap-search-panel">
5937    <form id="ap-search-form" action="/search" method="get" role="search">
5938      <div class="ap-search-glow" aria-hidden="true"></div>
5939      <div class="ap-search-box">
5940        <div class="ap-search-inputrow">
5941          <svg class="ap-search-mag" width="22" height="22" viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="1.9"/><path d="M20 20l-3.4-3.4" stroke="currentColor" stroke-width="1.9" stroke-linecap="round"/></svg>
5942          <input id="ap-search-input" name="q" type="search" autocomplete="off" spellcheck="false" placeholder="Search ArmorPoint — blog, resources, platform, pricing…" aria-label="Search query" />
5943          <button type="button" id="ap-search-clear" class="ap-search-clear" aria-label="Clear search">
5943<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M4 4L12 12M12 4L4 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
5944        </div>
5945      </div>
5946    </form>
5947    <div id="ap-search-results" class="ap-search-results" role="listbox" aria-label="Search results"></div>
5948    <div class="ap-search-foot">
5949      <span><span class="ap-kbd">&uarr;</span><span class="ap-kbd">&darr;</span> navigate &middot; <span class="ap-kbd">Enter</span> all results</span>
5950      <button type="button" id="ap-search-close" style="background:none;border:none;color:inherit;cursor:pointer;font:inherit;">Close <span class="ap-kbd">Esc</span></button>
5951    </div>
5952  </div>
5953</div>
5954<script src="/site-search.js" defer></script>
5954
5955<div id="mobile-backdrop" class="mobile-drawer-backdrop lg:hidden" aria-hidden="true"></div>
5956    <div id="mobile-menu" class="mobile-menu lg:hidden" role="dialog" aria-modal="true" aria-label="Main navigation">
5957      <div class="mobile-drawer-header">
5958        <a href="/" class="mobile-drawer-brand" data-nav aria-label="ArmorPoint home"><svg aria-hidden="true" height="22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1050 230"><g><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/></g><path fill="#FFFFFF" d="M840,76.7c-1.5-1.5-2.3-3.4-2.3-5.6s0.7-4,2.2-5.4c1.6-1.6,3.9-2.4,6.1-2.3c1.9,0.1,3.5,0.8,4.8,2.2c1.5,1.5,2.3,3.3,2.3,5.5c0,2.5-1,4.6-3,6.2c-1.1,0.9-2.5,1.5-3.9,1.6C843.8,79.1,841.7,78.4,840,76.7z"/><path fill="#FFFFFF" d="M537.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C550.9,170.9,543.9,169.2,537.8,165.8z M573.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C564,161.8,569,160.6,573.6,158.1z"/><path fill="#FFFFFF" d="M762.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C775.9,170.9,769,169.2,762.8,165.8z M798.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C789,161.8,794,160.6,798.6,158.1z"/><path fill="#0099DC" d="M1010.8,168.2c-1.5-1.5-2.2-3.4-2.2-5.6c0-2.2,0.7-4,2.2-5.5c1.4-1.4,3.3-2.2,5.5-2.2c2.1,0,3.9,0.7,5.3,2.2c1.5,1.5,2.2,3.3,2.2,5.5s-0.7,4.1-2.2,5.6s-3.2,2.3-5.3,2.3C1014.1,170.5,1012.3,169.7,1010.8,168.2z"/><path fill="#FFFFFF" d="M290.3,144.8H243c-0.1,0-0.3,0.1-0.3,0.2l-9,24.5c0,0.1-0.2,0.2-0.3,0.2H223c-0.2,0-0.4-0.2-0.3-0.5l38.1-103c0-0.1,0.2-0.2,0.3-0.2h11.4c0.1,0,0.3,0.1,0.3,0.2l37.9,103c0.1,0.2-0.1,0.5-0.3,0.5H300c-0.1,0-0.3-0.1-0.3-0.2l-9-24.5C290.5,144.9,290.4,144.8,290.3,144.8z M287.2,135.6l-20.3-55.5c-0.1-0.3-0.5-0.3-0.6,0L246,135.6c-0.1,0.2,0.1,0.5,0.3,0.5h40.5C287.1,136.1,287.3,135.9,287.2,135.6z"/><path fill="#FFFFFF" d="M344.2,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2c-4.6,4.1-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C336.5,96.5,339.9,93,344.2,90.4z"/><path fill="#FFFFFF" d="M494.4,95.3c6.1,6.1,9.1,14.9,9.1,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.6-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.7-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.5c0,0.3,0.4,0.5,0.6,0.1c2.6-4.5,6.1-8,10.5-10.5c4.8-2.7,10.2-4,16.1-4c7.1,0,13.3,1.7,18.7,5.1c5.1,3.3,8.9,8,11.3,14.2c0.1,0.3,0.5,0.3,0.6,0c2.2-6.1,5.9-10.8,11.1-14.1c5.4-3.5,11.4-5.2,18.3-5.2C480.5,86.2,488.3,89.2,494.4,95.3z"/><path fill="#FFFFFF" d="M633.9,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2s-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C626.3,96.5,629.6,93,633.9,90.4z"/><path fill="#FFFFFF" d="M727.6,116.7c-5.9,5.5-14.8,8.3-26.6,8.3h-20.8c-0.2,0-0.3,0.2-0.3,0.3v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V65.1c0-0.2,0.2-0.3,0.3-0.3H701c11.7,0,20.6,2.8,26.5,8.3c6,5.5,8.9,12.8,8.9,21.9C736.4,103.9,733.5,111.2,727.6,116.7z M725.6,94.9c0-7-2-12.3-5.9-15.9s-10.2-5.4-18.8-5.4h-20.8c-0.2,0-0.3,0.2-0.3,0.3v41.7c0,0.2,0.2,0.3,0.3,0.3H701C717.4,116,725.6,108.9,725.6,94.9z"/><path fill="#FFFFFF" d="M850.7,88.4v81.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88.4c0-0.2,0.2-0.3,0.3-0.3h9.8C850.5,88.1,850.7,88.3,850.7,88.4z"/><path fill="#FFFFFF" d="M934.7,95.3c6.2,6.1,9.3,14.9,9.3,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3H934c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.7-20.4c-4.5-4.7-10.5-7.1-18.3-7.1c-7.9,0-14.2,2.5-18.9,7.5s-7.1,12.4-7.1,22.1v44.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.4c0,0.3,0.4,0.5,0.6,0.2c2.6-4.5,6.1-7.9,10.7-10.4c4.9-2.7,10.5-4,16.7-4C920.5,86.2,928.5,89.2,934.7,95.3z"/><path fill="#FFFFFF" d="M975,96.6c-0.2,0-0.3,0.2-0.3,0.3v50.6c0,5,0.9,8.5,2.9,10.4c1.9,1.9,5.3,2.9,10.1,2.9h9.3c0.2,0,0.3,0.2,0.3,0.3v8.3c0,0.2-0.2,0.3-0.3,0.3h-10.9c-7.4,0-12.9-1.7-16.5-5.2s-5.4-9.1-5.4-17.1V96.9c0-0.2-0.2-0.3-0.3-0.3h-10.7c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h10.7c0.2,0,0.3-0.2,0.3-0.3V67.5c0-0.2,0.2-0.3,0.3-0.3h10c0.2,0,0.3,0.2,0.3,0.3v19.9c0,0.2,0.2,0.3,0.3,0.3H997c0.2,0,0.3,0.2,0.3,0.3v8.2c0,0.2-0.2,0.3-0.3,0.3L975,96.6L975,96.6z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg></a>
5959        <button id="mobile-close" class="mobile-drawer-close" aria-label="Close menu">
5959<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M4 4L12 12M12 4L4 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
5960      </div>
5961      <div class="mobile-drawer-body">
5962        <button type="button" class="ap-search-mobile-row ap-js-search-open" aria-label="Search the site"><svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="1.8"/><path d="M20 20l-3.4-3.4" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg><span>Search</span></button>
5963        <div class="mobile-section" data-mobile-section><button class="mobile-section-trigger" data-mobile-trigger aria-expanded="false"><span class="mobile-section-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/> <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.8"/></svg></span>Platform<span class="mobile-section-chevron" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button><div class="mobile-section-body"><div class="mobile-section-body-inner"><a href="/platform" class="mobile-link is-overview" data-nav>Platform Overview</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Security Operations</div><a href="/platform/extended-detection-and-response" class="mobile-link" data-nav>Extended Detection and Response</a><a href="/platform/threat-intelligence" class="mobile-link" data-nav>Threat Intelligence</a><a href="/platform/incident-response" class="mobile-link" data-nav>Incident Response</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Exposure Management</div><a href="/platform/attack-surface-management" class="mobile-link" data-nav>Attack Surface Management</a><a href="/platform/asset-identity" class="mobile-link" data-nav>Asset &amp; Identity</a><a href="/platform/vulnerability-management" class="mobile-link" data-nav>Vulnerability Management</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Govern &amp; Report</div><a href="/platform/grc" class="mobile-link" data-nav>GRC</a><a href="/platform/reporting" class="mobile-link" data-nav>Reporting &amp; Dashboards</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Connect</div><a href="/platform/armorpoint-agent" class="mobile-link" data-nav>ArmorPoint Agent</a><a href="/platform/integrations" class="mobile-link" data-nav>Integrations</a></div></div></div>
5964        <div class="mobile-section" data-mobile-section><button class="mobile-section-trigger" data-mobile-trigger aria-expanded="false"><span class="mobile-section-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 3V21M5 8H19M7 8L4 14H10L7 8ZM17 8L14 14H20L17 8Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span>Services<span class="mobile-section-chevron" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button><div class="mobile-section-body"><div class="mobile-section-body-inner"><a href="/services" class="mobile-link is-overview" data-nav>Compare Services</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Managed SOC</div><a href="/services/mxdr" class="mobile-link" data-nav>MXDR</a><a href="/services/mdr" class="mobile-link" data-nav>MDR</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Platform only</div><a href="/services/xdr" class="mobile-link" data-nav>XDR</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Advisory layer</div><a href="/services/advise" class="mobile-link" data-nav>Advise</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Implementation</div><a href="/services/guided-implementation" class="mobile-link" data-nav>Guided Implementation</a></div></div></div>
5965        <div class="mobile-section" data-mobile-section><button class="mobile-section-trigger" data-mobile-trigger aria-expanded="false"><span class="mobile-section-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="3" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="3" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6"/> <rect x="14" y="14" width="7" height="7" rx="1.5" stroke="currentColor" stroke-width="1.6" fill="currentColor" fill-opacity="0.2"/></svg></span>Solutions<span class="mobile-section-chevron" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button><div class="mobile-section-body"><div class="mobile-section-body-inner"><a href="/solutions" class="mobile-link is-overview" data-nav>Compare Solutions</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">By industry</div><a href="/solutions/msp" class="mobile-link" data-nav>For MSPs</a><a href="/solutions/federal" class="mobile-link" data-nav>Federal &amp; CMMC</a><a href="/solutions/healthcare" class="mobile-link" data-nav>Healthcare</a><a href="/solutions" class="mobile-link" data-nav>See All Industries →</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">By need</div><a href="/solutions/cyber-insurance" class="mobile-link" data-nav>Cyber Insurance Readiness</a><a href="/solutions/compliance" class="mobile-link" data-nav>Compliance Certification</a><a href="/solutions/post-breach" class="mobile-link" data-nav>Post-Incident</a></div></div></div>
5966        <div class="mobile-section" data-mobile-section><button class="mobile-section-trigger" data-mobile-trigger aria-expanded="false"><span class="mobile-section-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 5L11 7V20L3 18V5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/> <path d="M21 5L13 7V20L21 18V5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/></svg></span>
5966Resources<span class="mobile-section-chevron" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button><div class="mobile-section-body"><div class="mobile-section-body-inner"><a href="/resources" class="mobile-link is-overview" data-nav>Resource Library</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Read</div><a href="/blog" class="mobile-link" data-nav>Blog</a><a href="/press" class="mobile-link" data-nav>Press Releases</a></div></div></div>
5967        <div class="mobile-section" data-mobile-section><button class="mobile-section-trigger" data-mobile-trigger aria-expanded="false"><span class="mobile-section-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="7" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <circle cx="17" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <path d="M3 20C3 16 5 14 7 14C8.5 14 10 15 12 17C14 15 15.5 14 17 14C19 14 21 16 21 20" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span>Partners<span class="mobile-section-chevron" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button><div class="mobile-section-body"><div class="mobile-section-body-inner"><a href="/partners" class="mobile-link is-overview" data-nav>Partner Program Overview</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Program tracks</div><a href="/partners/service" class="mobile-link" data-nav>Service Provider</a><a href="/partners/reseller" class="mobile-link" data-nav>Reseller</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Distribution</div><a href="/partners/distribution" class="mobile-link" data-nav>TD SYNNEX</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Tech alliances</div><a href="/partners/tech-alliances" class="mobile-link" data-nav>Tech Alliances</a><div class="mobile-sublabel" style="font-family:'Poppins',sans-serif;font-weight:700;color:#38bdf8;font-size:11px;letter-spacing:.12em;">Get started</div><a href="/partners/apply" class="mobile-link" data-nav>Become a Partner</a></div></div></div>
5968      </div>
5969      <div class="mobile-drawer-footer">
5970        <a href="https://portal.armorpoint.com" class="mobile-drawer-signin" target="_blank" rel="noopener noreferrer" data-nav><span class="signin-option-icon" aria-hidden="true"><svg viewBox="20 18 182 194" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg></span>ArmorPoint Platform</a>
5971        <a href="https://armorpoint.amp.vg/login" class="mobile-drawer-signin" target="_blank" rel="noopener noreferrer" data-nav><span class="signin-option-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="7" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <circle cx="17" cy="7" r="3" stroke="currentColor" stroke-width="1.6"/> <path d="M3 20C3 16 5 14 7 14C8.5 14 10 15 12 17C14 15 15.5 14 17 14C19 14 21 16 21 20" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span>Partner Portal</a>
5972        <a href="/demo" class="mobile-drawer-demo" data-nav>Request a demo<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2 6h8m0 0L6.5 2.5M10 6L6.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
5973      </div>
5974    </div>
5975<main id="main-content">
5976
5977<section data-page="about">
5978
5979  
5980  <div class="relative overflow-hidden">
5981    <div class="absolute inset-0 grid-bg opacity-40" aria-hidden="true"></div>
5982    <div class="absolute inset-0 noise opacity-60" aria-hidden="true"></div>
5983
5984    <div class="relative max-w-7xl mx-auto px-6 lg:px-8 pt-20 pb-16 lg:pt-24 lg:pb-20">
5985      <div class="max-w-3xl">
5986        <div class="rise rise-1 flex items-center gap-2 mb-6">
5987          <span class="label-cap">About ArmorPoint</span>
5988        </div>
5989        <h1 class="rise rise-2 display-h1 text-4xl sm:text-5xl lg:text-6xl text-ap-text leading-[1.05]">
5990          Built by operators
5991          <span class="text-ap-cyan">who run real SOCs</span>.
5992        </h1>
5993        <p class="rise rise-3 mt-7 text-lg text-ap-fog max-w-2xl leading-relaxed">
5994          ArmorPoint is a cloud-native managed security operations platform built for midsize enterprises and the partners who serve them. The platform brings detection, response, risk, and compliance together within a shared operations environment where customers, partners, and ArmorPoint&#39;s 24/7 U.S.-based SOC work side by side. AI-accelerated triage helps prioritize threats while analysts remain in the loop to investigate and respond. The same workflows that reduce risk also generate the evidence organizations need to support compliance initiatives. ArmorPoint delivers enterprise-grade security operations without the complexity of building and staffing a SOC internally. ArmorPoint: Resilience that&#39;s provable, not just promised.
5995        </p>
5996      </div>
5997    </div>
5998  </div>
5999
6000
6001  <div class="relative overflow-hidden border-y border-ap-cyan/20 bg-ap-bg-2/40">
6002    <div class="max-w-7xl mx-auto px-6 lg:px-8 py-12 lg:py-14">
6003      <p class="text-2xl sm:text-3xl font-semibold text-ap-text leading-snug max-w-4xl">
6004        Security shouldn’t take six tools, three vendors, and a translator. We built the platform we wished we’d had, and kept the humans who make it work.
6005      </p>
6006    </div>
6007  </div>
6008
6009
6010  <section class="page-section pt-0" aria-labelledby="our-story">
6011    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6012      <div class="grid lg:grid-cols-12 gap-10 lg:gap-16">
6013        <div class="lg:col-span-5">
6014          <span class="label-cap">Our story</span>
6015          <h2 id="our-story" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text leading-tight">
6016            Why this exists.
6017          </h2>
6018        </div>
6019        <div class="lg:col-span-7">
6020          <div class="space-y-5 text-ap-fog leading-relaxed">
6021            <p>
6022              It started inside a real SOC. We watched mid-market teams buy SIEM, then GRC, then ticketing, then a scanner, then vendor-risk: six tools for work that should have been one workflow.
6023            </p>
6024            <p>
6025              The pattern never changed. Every tool worked, none of them talked. Analysts swivel-chaired. Compliance rebuilt evidence the SOC already had. The board asked for a number nobody could produce.
6026            </p>
6027            <p class="text-ap-text">
6028              So we built one platform where telemetry, response, and evidence share a model. And because the work takes humans, we kept the SOC: U.S.-based, 24/7, operators rather than a queue.
6029            </p>
6030          </div>
6031        </div>
6032      </div>
6033    </div>
6034  </section>
6035
6036  
6037  <section class="page-section bg-ap-bg-2/30 border-y border-ap-line" aria-labelledby="by-numbers">
6038    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6039      <div class="max-w-2xl mb-12">
6040        <span class="label-cap">By the numbers</span>
6041        <h2 id="by-numbers" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text leading-tight">
6042          The shape of who we are.
6043        </h2>
6044      </div>
6045
6046      <div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-4">
6047        <div class="ap-card p-6"><div class="text-xs text-ap-cyan tracking-widest mb-2">HEADQUARTERS</div><div class="text-2xl font-semibold text-ap-text mb-1">Phoenix, AZ</div><div class="text-sm text-ap-fog">U.S. operated end to end.</div></div><div class="ap-card p-6"><div class="text-xs text-ap-cyan tracking-widest mb-2">EMPLOYEES</div><div class="text-2xl font-semibold text-ap-text mb-1">110</div><div class="text-sm text-ap-fog">Remote-first, so the best talent supports the mission from wherever they are.</div></div><div class="ap-card p-6"><div class="text-xs text-ap-cyan tracking-widest mb-2">FOUNDED</div><div class="text-2xl font-semibold text-ap-text mb-1">2018</div><div class="text-sm text-ap-fog">Independent and privately held.</div></div><div class="ap-card p-6"><div class="text-xs text-ap-cyan tracking-widest mb-2">DATA CENTERS</div><div class="text-2xl font-semibold text-ap-text mb-1">U.S.-based</div><div class="text-sm text-ap-fog">
6047infrastructure</div></div>
6048      </div>
6049    </div>
6050  </section>
6051
6052  
6053  
6054
6055  
6056  <section class="page-section bg-ap-bg-2/30 border-y border-ap-line" aria-labelledby="leadership">
6057    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6058      <div class="max-w-2xl mb-12">
6059        <span class="label-cap">The people</span>
6060        <h2 id="leadership" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text leading-tight">
6061          Leadership behind ArmorPoint.
6062        </h2>
6063      </div>
6064
6065      <style>
6066.lead-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
6067.lead-card{position:relative;height:450px;border-radius:20px;overflow:hidden;background:#172033;}
6068.lead-card img{width:100%;height:100%;object-fit:cover;object-position:center 18%;display:block;}
6069.lead-overlay{position:absolute;left:0;right:0;bottom:0;padding:22px;background:linear-gradient(to top,rgba(7,12,22,.94),rgba(7,12,22,.6) 52%,rgba(7,12,22,0));}
6070.lead-name{color:#fff;font-size:20px;font-weight:600;line-height:1.15;}
6071.lead-title{color:#9aa7b8;font-size:13px;margin-top:3px;}
6072.lead-since{color:#8ea2b6;font-size:11px;margin-top:9px;letter-spacing:.02em;}
6073.lead-li{position:absolute;bottom:20px;right:20px;width:32px;height:32px;border-radius:8px;background:rgba(0,153,220,.15);border:1px solid rgba(0,153,220,.5);color:#0099DC;display:flex;align-items:center;justify-content:center;z-index:3;transition:background .15s,color .15s;}
6074.lead-li:hover{background:#0099DC;color:#fff;}
6075.lead-li svg{width:16px;height:16px;}
6076.lead-li.is-hidden{display:none;}
6077@media (max-width:900px){.lead-grid{grid-template-columns:repeat(2,1fr);}}
6078@media (max-width:560px){.lead-grid{grid-template-columns:1fr;}}
6079</style>
6080      <div class="lead-grid">
6081        <div class="lead-card"><img src="/uploads/leader-david-trapp.webp" alt="David Trapp" loading="lazy" /><div class="lead-overlay"><div class="lead-name">David Trapp</div><div class="lead-title">Chief Executive Officer</div><div class="lead-since">With ArmorPoint since 2009</div></div><a class="lead-li " href="https://www.linkedin.com/in/davidtrapp/" target="_blank" rel="noopener" aria-label="David Trapp on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div><div class="lead-card"><img src="/uploads/leader-jacob-johnson.webp" alt="Jacob Johnson" loading="lazy" /><div class="lead-overlay"><div class="lead-name">Jacob Johnson</div><div class="lead-title">Chief Information Security Officer</div><div class="lead-since">With ArmorPoint since 2016</div></div><a class="lead-li is-hidden" href="" target="_blank" rel="noopener" aria-label="Jacob Johnson on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div><div class="lead-card"><img src="/uploads/leader-ashley-capps.webp" alt="Ashley Capps" loading="lazy" /><div class="lead-overlay"><div class="lead-name">Ashley Capps</div><div class="lead-title">Chief Marketing Officer</div><div class="lead-since">With ArmorPoint since 2013</div></div><a class="lead-li " href="https://www.linkedin.com/in/cappsashley/" target="_blank" rel="noopener" aria-label="Ashley Capps on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div><div class="lead-card"><img src="/uploads/leader-stephan-tallent.webp" alt="Stephan Tallent" loading="lazy" /><div class="lead-overlay"><div class="lead-name">Stephan Tallent</div><div class="lead-title">Chief Sales Officer</div><div class="lead-since">With ArmorPoint since 2025</div></div><a class="lead-li " href="https://www.linkedin.com/in/stephantallent/" target="_blank" rel="noopener" aria-label="Stephan Tallent on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div><div class="lead-card"><img src="/uploads/leader-katie-yokose.webp" alt="Katie Yokose" loading="lazy" /><div class="lead-overlay"><div class="lead-name">Katie Yokose</div><div class="lead-title">Chief Administrative Officer</div><div class="lead-since">With ArmorPoint since 2014</div></div><a class="lead-li " href="https://www.linkedin.com/in/katieyokose/" target="_blank" rel="noopener" aria-label="Katie Yokose on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div><div class="lead-card"><img src="/uploads/leader-beth-steddum.webp" alt="Beth Steddum" loading="lazy" /><div class="lead-overlay"><div class="lead-name">Beth Steddum</div><div class="lead-title">Chief People Officer</div><div class="lead-since">With ArmorPoint since 2016</div></div><a class="lead-li " href="https://www.linkedin.com/in/bethanysteddum/" target="_blank" rel="noopener" aria-label="Beth Steddum on LinkedIn"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11 0-4.12 2.06 2.06 0 0 1 0 4.12zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z"></path></svg></a></div>
6082      </div>
6083    </div>
6084  </section>
6085
6086  
6087  <section class="page-section" aria-labelledby="advisory-team">
6088    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6089      <div class="grid lg:grid-cols-12 gap-10 items-start">
6090        <div class="lg:col-span-5">
6091          <span class="label-cap">The advisory bench</span>
6092          <h2 id="advisory-team" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text leading-tight">
6093            The same operators advise.
6094          </h2>
6095          <p class="mt-4 text-ap-fog leading-relaxed">
6096            ArmorPoint Advise is delivered by senior security operators. Most of whom spent years running SOCs, GRC programs, or security engineering before moving into advisory work. They know the platform because they help build the playbooks customers run on it.
6097          </p>
6098          <p class="mt-4 text-ap-fog leading-relaxed">
6099            That continuity matters: advisors aren&#39;t a separate consulting layer translating between you and a black-box product. They&#39;re operators who happen to be on the advisory side of the desk this quarter.
6100          </p>
6101          <a href="/services/advise" class="btn-secondary mt-6 inline-flex" data-nav>
6102            Explore Advise
6103            <svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2 6h8m0 0L6.5 2.5M10 6L6.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>
6104          </a>
6105        </div>
6106
6107        <div class="lg:col-span-7">
6108          <div class="ap-card p-6 lg:p-8">
6109            <div class="text-xs text-ap-cyan tracking-widest mb-4">ADVISOR PROFILE STANDARD</div>
6110
6111            <div class="space-y-4">
6112              <div class="flex items-start gap-4 pb-4 border-b border-ap-line">
6113                <div class="w-10 h-10 rounded-lg bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6114                  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" role="img" aria-label="Operator background"><title>Operator background</title>
6115                    <path d="M9 11V7a3 3 0 016 0v4M5 11h14v9a1 1 0 01-1 1H6a1 1 0 01-1-1v-9z" stroke="#0099DC" stroke-width="1.5" stroke-linejoin="round"></path>
6116                  </svg>
6117                </div>
6118                <div>
6119                  <div class="text-sm font-semibold text-ap-text">Operator background.</div>
6120                  <div class="text-xs text-ap-fog mt-1">Most advisors: 10+ years in security operations, GRC, or detection engineering before joining the advisory bench.</
6120div>
6121                </div>
6122              </div>
6123
6124              <div class="flex items-start gap-4 pb-4 border-b border-ap-line">
6125                <div class="w-10 h-10 rounded-lg bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6126                  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" role="img" aria-label="U.S. residency"><title>U.S. residency</title>
6127                    <circle cx="12" cy="12" r="9" stroke="#0099DC" stroke-width="1.5"></circle>
6128                    <path d="M3 12h18" stroke="#0099DC" stroke-width="1.5"></path>
6129                  </svg>
6130                </div>
6131                <div>
6132                  <div class="text-sm font-semibold text-ap-text">Same residency standard as the SOC.</div>
6133                  <div class="text-xs text-ap-fog mt-1">U.S. citizens on U.S. soil, background-checked. Required for healthcare, federal, and FinServ engagements.</div>
6134                </div>
6135              </div>
6136
6137              <div class="flex items-start gap-4 pb-4 border-b border-ap-line">
6138                <div class="w-10 h-10 rounded-lg bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6139                  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" role="img" aria-label="Credentialed"><title>Credentialed</title>
6140                    <path d="M12 15l-2-2-3 3 3 3 5-5-3-3-2 2zM12 2l9 4-9 4-9-4 9-4z" stroke="#0099DC" stroke-width="1.5" stroke-linejoin="round"></path>
6141                  </svg>
6142                </div>
6143                <div>
6144                  <div class="text-sm font-semibold text-ap-text">Credentialed and current.</div>
6145                  <div class="text-xs text-ap-fog mt-1">CISSP, CISA, CISM common. Framework-specific certifications (CMMC RP/RPA, HITRUST CCSFP) where engagement type demands.</div>
6146                </div>
6147              </div>
6148
6149              <div class="flex items-start gap-4">
6150                <div class="w-10 h-10 rounded-lg bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6151                  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" role="img" aria-label="Specialist depth"><title>Specialist depth</title>
6152                    <path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2M9 11a4 4 0 100-8 4 4 0 000 8zM23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" stroke="#0099DC" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
6153                </svg>
6154                </div>
6155                <div>
6156                  <div class="text-sm font-semibold text-ap-text">Backed by specialist depth.</div>
6157                  <div class="text-xs text-ap-fog mt-1">Named advisor leads each engagement; specialists in compliance, identity, detection, vendor risk pulled in as topics demand.</div>
6158                </div>
6159              </div>
6160            </div>
6161
6162            <div class="mt-5 pt-4 border-t border-ap-line text-xs text-ap-muted">
6163              <span class="tbd">Full advisor team directory available under NDA.</span> Profile matching
6164              and specialty alignment surfaced during the discovery call.
6165            </div>
6166          </div>
6167        </div>
6168      </div>
6169    </div>
6170  </section>
6171
6172  
6173    <section class="page-section" aria-labelledby="about-awards"><style>
6174.aw-cat{font-size:11px;letter-spacing:.16em;color:#8ea2b6;text-transform:uppercase;margin:22px 0 10px;font-weight:600;}
6175.aw-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
6176.aw-card{background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.09);border-radius:14px;padding:16px;display:flex;gap:13px;}
6177.aw-ico{width:34px;height:34px;border-radius:9px;background:rgba(0,153,220,.14);border:1px solid rgba(0,153,220,.4);color:#0099DC;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
6178.aw-ico svg{width:18px;height:18px;}
6179.aw-pill{display:inline-block;font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:5px;margin-bottom:6px;}
6180.aw-win{background:#0099DC;color:#04121d;}
6181.aw-alt{background:transparent;border:1px solid rgba(0,153,220,.5);color:#5fbfe8;}
6182.aw-title{font-size:14px;font-weight:600;color:#e8eef5;line-height:1.25;}
6183.aw-org{font-size:11px;color:#9aa7b8;margin-top:3px;}
6184.aw-desc{font-size:12px;color:#8ea2b6;margin-top:7px;line-height:1.5;}
6185.aw-link{display:inline-flex;align-items:center;gap:4px;margin-top:9px;color:#0099DC;font-size:11px;font-weight:600;text-decoration:none;}
6186.aw-link:hover{text-decoration:underline;}
6187.aw-nolink{display:none;}
6188@media(max-width:900px){.aw-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
6189@media(max-width:560px){.aw-grid{grid-template-columns:1fr;}}
6190</style>
6191    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6192      <div class="max-w-2xl mb-8">
6193        <span class="label-cap">Recognition</span>
6194        <h2 id="about-awards" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text leading-tight">Recognized by the industry.</h2>
6195      </div>
6196      <div class="aw-cat">Platform &amp; solution</div>
6197      <div class="aw-grid"><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-win">Winner</span><div class="aw-title">Best SME Security Solution</div><div class="aw-org">SC Awards · 2026</div><div class="aw-desc">Threat detection and remediation built for small-to-midsized enterprises.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-wins-best-sme-security-solution-category-in-2026-sc-awards/" target="_blank" rel="noopener">Read the announcement →</a></div></div><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-win">Winner</span><div class="aw-title">Best MXDR Platform</div><div class="aw-org">The Hacker News Cybersecurity Stars · 2026</div><div class="aw-desc">Endpoint defense and multi-vector detection across the Unified MXDR platform.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-named-best-managed-extended-detection-and-response-platform-in-the-the-hacker-news-inaugural-2026-cybersecurity-stars-awards/" target="_blank" rel="noopener">Read the announcement →</a></div></div><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-win">Winner</span><div class="aw-title">Cybersecurity Service Provider of the Year</div><div class="aw-org">Cybersecurity Excellence Awards · 2023</div><div class="aw-desc">Managed risk, integrated SIEM, and a 24/7 U.S.-based SOC.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-named-2023-cybersecurity-service-provider-of-the-year/" target="_blank" rel="noopener">Read the announcement →</a></div></div></div>
6198      <div class="aw-cat">Channel &amp; market</div>
6199      <div class="aw-grid"><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-win">Winner</span><div class="aw-title">5-Star Partner Program Guide</div><div class="aw-org">CRN · 2024 &amp; 2025</div><div class="aw-desc">Back-to-back recognition for partner enablement, margins, and support.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-earns-5-star-rating-in-the-2025-crn-partner-program-guide/" target="_blank" rel="noopener">Read the announcement →</a></div></div><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-alt">Listed</span><div class="aw-title">Top 250 MSSP</div><div class="aw-org">MSSP Alert</div><div class="aw-desc">Named among the top managed security service providers globally.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-ranked-70-on-mssp-alerts-2024/" target="_blank" rel="noopener">Read the announcement →</a></div></div><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-alt">Listed</span><div class="aw-title">Midmarket 100</div><div class="aw-org">MES · 2025</div><div class="aw-desc">Recognized for simplifying security programs for midmarket companies.</div><a class="aw-link " href="https://armorpoint.com/press-release/armoroint-named-to-prestigious-mes-midmarket-100/" target="_blank" rel="noopener">Read the announcement →</a></div></div></div>
6200      <div class="aw-cat">Workplace &amp; culture</div>
6201      <div class="aw-grid"><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-alt">Finalist</span><div class="aw-title">Gender Parity — Women of the Year</div><div class="aw-org">CRN · 2024</div><div class="aw-desc">
6201For strong representation of women across executive, sales, engineering, and operations roles.</div><a class="aw-link " href="https://armorpoint.com/press-release/armorpoint-is-a-finalist-for-crns-2024-women-of-the-year-awards/" target="_blank" rel="noopener">Read the announcement →</a></div></div></div>
6202      <div class="aw-cat">Individual leadership</div>
6203      <div class="aw-grid"><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-win">Winner</span><div class="aw-title">B2B Innovator, C-Suite Strategy</div><div class="aw-org">Ashley Capps · B2B Marketing Exchange · 2024</div><div class="aw-desc">For performance marketing and corporate revenue strategy.</div><a class="aw-link " href="https://armorpoint.com/press-release/ashley-capps-wins-b2b-innovator-award-for-c-suite-strategy/" target="_blank" rel="noopener">Read the announcement →</a></div></div><div class="aw-card"><div class="aw-ico"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="6"></circle><path d="m8.5 13-1 8 4.5-3 4.5 3-1-8"></path></svg></div><div><span class="aw-pill aw-alt">Honoree</span><div class="aw-title">Women of the Channel</div><div class="aw-org">Emi Yokose · CRN · 2024</div><div class="aw-desc">For growing the IT channel community as Partner Enablement Program Manager.</div><a class="aw-link " href="https://armorpoint.com/press-release/crn-recognizes-emi-yokose-of-armorpoint-on-the-2024-women-of-the-channel-list/" target="_blank" rel="noopener">Read the announcement →</a></div></div></div>
6204    </div>
6205  </section>
6206
6207<section class="page-section" aria-labelledby="about-trust">
6208    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6209      <h2 id="about-trust" class="sr-only">Trust signals</h2>
6210      <div class="ap-card p-8 lg:p-10">
6211        <div class="grid md:grid-cols-3 gap-8">
6212          <div class="flex items-start gap-4">
6213            <div class="w-11 h-11 rounded-xl bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6214              <svg width="22" height="22" viewBox="0 0 24 24" fill="none" role="img" aria-label="24/7 U.S.-based SOC"><title>24/7 U.S.-based SOC</title>
6215                <circle cx="12" cy="12" r="9" stroke="#0099DC" stroke-width="1.5"></circle>
6216                <path d="M12 7v5l3 2" stroke="#0099DC" stroke-width="1.5" stroke-linecap="round"></path>
6217              </svg>
6218            </div>
6219            <div>
6220              <div class="font-semibold text-ap-text">24/7 U.S.-based SOC</div>
6221              <div class="text-sm text-ap-fog mt-1">Human analysts in U.S. operations centers.</div>
6222            </div>
6223          </div>
6224          <div class="flex items-start gap-4">
6225            <div class="w-11 h-11 rounded-xl bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6226              <svg width="22" height="22" viewBox="0 0 24 24" fill="none" role="img" aria-label="SOC 2 Type II"><title>SOC 2 Type II</title>
6227                <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" stroke="#0099DC" stroke-width="1.5" stroke-linejoin="round"></path>
6228                <path d="M9 12l2 2 4-4" stroke="#0099DC" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
6229              </svg>
6230            </div>
6231            <div>
6232              <div class="font-semibold text-ap-text">SOC 2 Type II</div>
6233              <div class="text-sm text-ap-fog mt-1">Our own platform attested annually. Report available under NDA.</div>
6234            </div>
6235          </div>
6236          <div class="flex items-start gap-4">
6237            <div class="w-11 h-11 rounded-xl bg-ap-cyan/10 border border-ap-cyan/30 flex items-center justify-center shrink-0">
6238              <svg width="22" height="22" viewBox="0 0 24 24" fill="none" role="img" aria-label="Partner-distributed"><title>Partner-distributed</title>
6239                <path d="M3 7h18M7 12h10M9 17h6" stroke="#0099DC" stroke-width="1.5" stroke-linecap="round"></path>
6240              </svg>
6241            </div>
6242            <div>
6243              <div class="font-semibold text-ap-text">TD SYNNEX-distributed</div>
6244              <div class="text-sm text-ap-fog mt-1">Available through TD SYNNEX and a network of regional partners.</div>
6245            </div>
6246          </div>
6247        </div>
6248      </div>
6249    </div>
6250  </section>
6251
6252  
6253  <section class="page-section" aria-labelledby="about-cta">
6254    <div class="max-w-7xl mx-auto px-6 lg:px-8">
6255      <div class="ap-card p-10 lg:p-14 text-center relative overflow-hidden">
6256        <div class="absolute inset-0 grid-bg opacity-30" aria-hidden="true"></div>
6257        <div class="relative">
6258          <span class="label-cap">Ready when you are</span>
6259          <h2 id="about-cta" class="mt-3 text-3xl sm:text-4xl font-semibold text-ap-text">
6260            Let&#39;s see if we belong in your stack.
6261          </h2>
6262          <p class="mt-4 text-ap-fog max-w-2xl mx-auto">
6263            30 minutes with a security engineer. We&#39;ll tell you honestly what fits today, what&#39;s on the roadmap, and what&#39;s not a fit.
6264          </p>
6265          <div class="mt-8 flex flex-wrap items-center justify-center gap-6">
6266            <a href="/demo" class="btn-primary" data-nav>
6267              Request a demo
6268              <svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2 6h8m0 0L6.5 2.5M10 6L6.5 9.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>
6269            </a>
6270            <a href="/partners" class="btn-secondary" data-nav>Become a partner →</a>
6271          </div>
6272        </div>
6273      </div>
6274    </div>
6275  </section>
6276
6277</section>
6278</main>
6279<footer class="footer-main">
6280  <div class="footer-inner">
6281
6282    <div class="footer-top">
6283
6284      <div class="footer-brand">
6285        <a href="/" class="footer-brand-logo" data-nav aria-label="ArmorPoint home">
6286          <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1050 230"><g><path fill="#0099DC" d="M184.9,53.9l-67.8-28.3c-1.7-0.7-4.7-1.3-6.5-1.3s-4.8,0.6-6.5,1.3L36.3,53.9c-6.3,2.6-10.4,8.8-10.4,15.3c0,90.9,66.8,135.7,84.4,135.7c11.3,0,41.8-17.9,63-53.5c4.1-7,7.9-14.6,11.1-23c0.1-0.2,0.1-0.3,0.2-0.5C191,111.2,195,91.6,195,69.3C195.3,62.7,191.2,56.5,184.9,53.9z"/></g><path fill="#FFFFFF" d="M840,76.7c-1.5-1.5-2.3-3.4-2.3-5.6s0.7-4,2.2-5.4c1.6-1.6,3.9-2.4,6.1-2.3c1.9,0.1,3.5,0.8,4.8,2.2c1.5,1.5,2.3,3.3,2.3,5.5c0,2.5-1,4.6-3,6.2c-1.1,0.9-2.5,1.5-3.9,1.6C843.8,79.1,841.7,78.4,840,76.7z"/><path fill="#FFFFFF" d="M537.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C550.9,170.9,543.9,169.2,537.8,165.8z M573.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C564,161.8,569,160.6,573.6,158.1z"/><path fill="#FFFFFF" d="M762.8,165.8c-6.2-3.5-11-8.4-14.6-14.7c-3.6-6.4-5.3-13.8-5.3-22.3s1.8-15.9,5.4-22.3c3.6-6.4,8.5-11.3,14.7-14.7c6.2-3.5,13.2-5.2,20.9-5.2s14.7,1.7,21,5.2s11.2,8.4,14.7,14.7c3.6,6.4,5.3,13.8,5.3,22.3c0,8.4-1.8,15.8-5.4,22.2c-3.6,6.4-8.6,11.3-14.9,14.8c-6.3,3.5-13.3,5.2-21,5.2C775.9,170.9,769,169.2,762.8,165.8z M798.6,158.1c4.6-2.5,8.3-6.2,11.2-11.1c2.9-5,4.3-11,4.3-18.3c0-7.2-1.4-13.3-4.2-18.3s-6.5-8.7-11.1-11.1c-4.6-2.5-9.6-3.7-15-3.7s-10.4,1.2-15,3.7s-8.3,6.2-11,11.1c-2.8,5-4.1,11-4.1,18.3c0,7.2,1.4,13.3,4.1,18.3c2.8,5,6.4,8.7,11,11.1c4.6,2.5,9.5,3.7,14.9,3.7C789,161.8,794,160.6,798.6,158.1z"/><path fill="#0099DC" d="M1010.8,168.2c-1.5-1.5-2.2-3.4-2.2-5.6c0-2.2,0.7-4,2.2-5.5c1.4-1.4,3.3-2.2,5.5-2.2c2.1,0,3.9,0.7,5.3,2.2c1.5,1.5,2.2,3.3,2.2,5.5s-0.7,4.1-2.2,5.6s-3.2,2.3-5.3,2.3C1014.1,170.5,1012.3,169.7,1010.8,168.2z"/><path fill="#FFFFFF" d="M290.3,144.8H243c-0.1,0-0.3,0.1-0.3,0.2l-9,24.5c0,0.1-0.2,0.2-0.3,0.2H223c-0.2,0-0.4-0.2-0.3-0.5l38.1-103c0-0.1,0.2-0.2,0.3-0.2h11.4c0.1,0,0.3,0.1,0.3,0.2l37.9,103c0.1,0.2-0.1,0.5-0.3,0.5H300c-0.1,0-0.3-0.1-0.3-0.2l-9-24.5C290.5,144.9,290.4,144.8,290.3,144.8z M287.2,135.6l-20.3-55.5c-0.1-0.3-0.5-0.3-0.6,0L246,135.6c-0.1,0.2,0.1,0.5,0.3,0.5h40.5C287.1,136.1,287.3,135.9,287.2,135.6z"/><path fill="#FFFFFF" d="M344.2,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2c-4.6,4.1-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C336.5,96.5,339.9,93,344.2,90.4z"/><path fill="#FFFFFF" d="M494.4,95.3c6.1,6.1,9.1,14.9,9.1,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.6-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.7c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.5-20.4c-4.3-4.7-10.2-7.1-17.7-7.1c-7.7,0-13.9,2.6-18.5,7.7s-6.9,12.5-6.9,22.2v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.5c0,0.3,0.4,0.5,0.6,0.1c2.6-4.5,6.1-8,10.5-10.5c4.8-2.7,10.2-4,16.
62861-4c7.1,0,13.3,1.7,18.7,5.1c5.1,3.3,8.9,8,11.3,14.2c0.1,0.3,0.5,0.3,0.6,0c2.2-6.1,5.9-10.8,11.1-14.1c5.4-3.5,11.4-5.2,18.3-5.2C480.5,86.2,488.3,89.2,494.4,95.3z"/><path fill="#FFFFFF" d="M633.9,90.4c4.7-2.8,10.4-4.2,17.2-4.2c0.2,0,0.4,0.2,0.4,0.3v10.6h-2.9c-7.6,0-13.7,2.1-18.3,6.2s-6.9,11-6.9,20.6v45.5c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.8c0,0.4,0.5,0.5,0.6,0.1C626.3,96.5,629.6,93,633.9,90.4z"/><path fill="#FFFFFF" d="M727.6,116.7c-5.9,5.5-14.8,8.3-26.6,8.3h-20.8c-0.2,0-0.3,0.2-0.3,0.3v44.1c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V65.1c0-0.2,0.2-0.3,0.3-0.3H701c11.7,0,20.6,2.8,26.5,8.3c6,5.5,8.9,12.8,8.9,21.9C736.4,103.9,733.5,111.2,727.6,116.7z M725.6,94.9c0-7-2-12.3-5.9-15.9s-10.2-5.4-18.8-5.4h-20.8c-0.2,0-0.3,0.2-0.3,0.3v41.7c0,0.2,0.2,0.3,0.3,0.3H701C717.4,116,725.6,108.9,725.6,94.9z"/><path fill="#FFFFFF" d="M850.7,88.4v81.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88.4c0-0.2,0.2-0.3,0.3-0.3h9.8C850.5,88.1,850.7,88.3,850.7,88.4z"/><path fill="#FFFFFF" d="M934.7,95.3c6.2,6.1,9.3,14.9,9.3,26.4v47.7c0,0.2-0.2,0.3-0.3,0.3H934c-0.2,0-0.3-0.2-0.3-0.3v-46.5c0-8.9-2.2-15.7-6.7-20.4c-4.5-4.7-10.5-7.1-18.3-7.1c-7.9,0-14.2,2.5-18.9,7.5s-7.1,12.4-7.1,22.1v44.4c0,0.2-0.2,0.3-0.3,0.3h-9.8c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h9.8c0.2,0,0.3,0.2,0.3,0.3v12.4c0,0.3,0.4,0.5,0.6,0.2c2.6-4.5,6.1-7.9,10.7-10.4c4.9-2.7,10.5-4,16.7-4C920.5,86.2,928.5,89.2,934.7,95.3z"/><path fill="#FFFFFF" d="M975,96.6c-0.2,0-0.3,0.2-0.3,0.3v50.6c0,5,0.9,8.5,2.9,10.4c1.9,1.9,5.3,2.9,10.1,2.9h9.3c0.2,0,0.3,0.2,0.3,0.3v8.3c0,0.2-0.2,0.3-0.3,0.3h-10.9c-7.4,0-12.9-1.7-16.5-5.2s-5.4-9.1-5.4-17.1V96.9c0-0.2-0.2-0.3-0.3-0.3h-10.7c-0.2,0-0.3-0.2-0.3-0.3V88c0-0.2,0.2-0.3,0.3-0.3h10.7c0.2,0,0.3-0.2,0.3-0.3V67.5c0-0.2,0.2-0.3,0.3-0.3h10c0.2,0,0.3,0.2,0.3,0.3v19.9c0,0.2,0.2,0.3,0.3,0.3H997c0.2,0,0.3,0.2,0.3,0.3v8.2c0,0.2-0.2,0.3-0.3,0.3L975,96.6L975,96.6z"/><path fill="#FFFFFF" d="M184.6,128c-0.1,0.2-0.1,0.3-0.2,0.5c-3.2,8.4-7,16-11.1,23c-11.2-15.7-22.4-31.4-33.6-47.2c-3.8-5.3-7.7-10.7-13-14.4c-11.2-7.8-27.8-6-37.6,3.6C80.3,102,77.4,116,82,127.4c4.6,11.3,16.4,19.4,28.7,19.4s24.1-7.8,28.8-19.1c4.7,6.4,9.4,12.7,14.1,19.1c-6.7,9.4-16.6,16.5-27.7,19.8c-11.1,3.4-22.6,2.6-33.5-1c-8.7-2.9-16.5-9-22.3-16.1c-5.9-7.2-10-15.9-11.5-25.1c-0.2-1.5-0.4-3-0.5-4.4c-1.6-20,9.3-40.3,26.7-50c8.6-4.8,18.7-6.9,28.6-6.4c9.8,0.6,19.7,3.8,27.6,9.7c8.8,6.5,15.4,15.5,21.7,24.3c6.9,9.7,13.6,19.5,20.8,28.9C184,127.2,184.3,127.7,184.6,128z"/></svg>
6287        </a>
6288        <p class="footer-brand-copy">
6289          ArmorPoint is the security outcome layer for midsize enterprises and their partners, connecting detection, response, exposure, and compliance in one cloud-delivered platform with a 24/7 U.S.-based SOC. AI accelerates triage; human analysts stay in the loop.
6290        </p>
6291        <div class="footer-brand-eyebrow">Detection · Response · Compliance</div>
6292        <div class="footer-social">
6293          <a href="https://www.linkedin.com/company/armorpoint/" target="_blank" rel="noopener" aria-label="ArmorPoint on LinkedIn">
6294            <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M20.5 2h-17A1.5 1.5 0 002 3.5v17A1.5 1.5 0 003.5 22h17a1.5 1.5 0 001.5-1.5v-17A1.5 1.5 0 0020.5 2zM8 19H5v-9h3v9zM6.5 8.25A1.75 1.75 0 118.3 6.5a1.78 1.78 0 01-1.8 1.75zM19 19h-3v-4.74c0-1.42-.6-2.06-1.5-2.06A1.74 1.74 0 0013 14.19V19h-3v-9h2.9v1.3a3.11 3.11 0 012.7-1.4c1.55 0 3.36.86 3.36 3.66z"/></svg>
6295          </a>
6296          <a href="https://www.instagram.com/armorpoint/" target="_blank" rel="noopener" aria-label="ArmorPoint on Instagram">
6297            <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M12 2c2.72 0 3.06.01 4.12.06 1.07.05 1.79.22 2.43.47.66.25 1.22.6 1.77 1.15.55.55.9 1.11 1.15 1.77.25.64.42 1.36.47 2.43.05 1.06.06 1.4.06 4.12s-.01 3.06-.06 4.12c-.05 1.07-.22 1.79-.47 2.43a4.9 4.9 0 01-1.15 1.77c-.55.55-1.11.9-1.77 1.15-.64.25-1.36.42-2.43.47-1.06.05-1.4.06-4.12.06s-3.06-.01-4.12-.06c-1.07-.05-1.79-.22-2.43-.47a4.9 4.9 0 01-1.77-1.15 4.9 4.9 0 01-1.15-1.77c-.25-.64-.42-1.36-.47-2.43C2.01 15.06 2 14.72 2 12s.01-3.06.06-4.12c.05-1.07.22-1.79.47-2.43.25-.66.6-1.22 1.15-1.77.55-.55 1.11-.9 1.77-1.15.64-.25 1.36-.42 2.43-.47C8.94 2.01 9.28 2 12 2zm0 1.8c-2.67 0-2.99.01-4.04.06-.98.04-1.5.2-1.85.34-.47.18-.8.4-1.15.75-.35.35-.57.68-.75 1.15-.14.35-.3.87-.34 1.85-.05 1.05-.06 1.37-.06 4.04s.01 2.99.06 4.04c.04.98.2 1.5.34 1.85.18.47.4.8.75 1.15.35.35.68.57 1.15.75.35.14.87.3 1.85.34 1.05.05 1.37.
629706 4.04.06s2.99-.01 4.04-.06c.98-.04 1.5-.2 1.85-.34.47-.18.8-.4 1.15-.75.35-.35.57-.68.75-1.15.14-.35.3-.87.34-1.85.05-1.05.06-1.37.06-4.04s-.01-2.99-.06-4.04c-.04-.98-.2-1.5-.34-1.85a3.1 3.1 0 00-.75-1.15 3.1 3.1 0 00-1.15-.75c-.35-.14-.87-.3-1.85-.34-1.05-.05-1.37-.06-4.04-.06zM12 7.13a4.87 4.87 0 110 9.74 4.87 4.87 0 010-9.74zm0 1.8a3.07 3.07 0 100 6.14 3.07 3.07 0 000-6.14zm6.2-2.02a1.14 1.14 0 11-2.28 0 1.14 1.14 0 012.28 0z"/></svg>
6298          </a>
6299          <a href="https://www.youtube.com/@armorpoint" target="_blank" rel="noopener" aria-label="ArmorPoint on YouTube">
6300            <svg viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M23.5 6.51a3 3 0 00-2.12-2.13C19.5 4 12 4 12 4s-7.5 0-9.38.38A3 3 0 00.5 6.51 31.5 31.5 0 000 12a31.5 31.5 0 00.5 5.49 3 3 0 002.12 2.13C4.5 20 12 20 12 20s7.5 0 9.38-.38a3 3 0 002.12-2.13A31.5 31.5 0 0024 12a31.5 31.5 0 00-.5-5.49zM9.75 15.5v-7l6.5 3.5-6.5 3.5z"/></svg>
6301          </a>
6302        </div>
6303      </div>
6304
6305      <div class="footer-col">
6306        <h4>Platform</h4>
6307        <ul>
6308          <li><a href="/platform" data-nav>Overview</a></li>
6309          <li><a href="/platform/grc" data-nav>GRC</a></li>
6310          <li><a href="/platform/attack-surface-management" data-nav>Attack Surface Mgmt</a></li>
6311          <li><a href="/platform/extended-detection-and-response" data-nav>Extended Detection and Response</a></li>
6312          <li><a href="/platform/vulnerability-management" data-nav>Vulnerability Mgmt</a></li>
6313          <li><a href="/platform/threat-intelligence" data-nav>Threat Intelligence</a></li>
6314          <li><a href="/platform/integrations" data-nav>Integrations</a></li>
6315        </ul>
6316      </div>
6317
6318      <div class="footer-col">
6319        <h4>Services</h4>
6320        <ul>
6321          <li><a href="/services" data-nav>Compare all</a></li>
6322          <li><a href="/services/mxdr" data-nav>MXDR</a></li>
6323          <li><a href="/services/mdr" data-nav>MDR</a></li>
6324          <li><a href="/services/xdr" data-nav>XDR</a></li>
6325          <li><a href="/services/advise" data-nav>Advise</a></li>
6326          <li><a href="/services/guided-implementation" data-nav>Guided Implementation</a></li>
6327        </ul>
6328      </div>
6329
6330      <div class="footer-col">
6331        <h4>Solutions</h4>
6332        <ul>
6333          <li><a href="/solutions" data-nav>Compare all</a></li>
6334          <li><a href="/solutions/msp" data-nav>For MSPs</a></li>
6335          <li><a href="/solutions/federal" data-nav>Federal &amp; CMMC</a></li>
6336          <li><a href="/solutions/healthcare" data-nav>Healthcare</a></li>
6337          <li><a href="/solutions/finance" data-nav>Financial Services</a></li>
6338          <li><a href="/solutions/cyber-insurance" data-nav>Cyber Insurance</a></li>
6339          <li><a href="/solutions/compliance" data-nav>Compliance Cert.</a></li>
6340        </ul>
6341      </div>
6342
6343      <div class="footer-col">
6344        <h4>Resources</h4>
6345        <ul>
6346          <li><a href="/resources" data-nav>Resource library</a></li>
6347          <li><a href="/blog" data-nav>Blog</a></li>
6348          <li><a href="/press" data-nav>Press Releases</a></li>
6349        </ul>
6350      </div>
6351
6352      <div class="footer-col">
6353        <h4>Company</h4>
6354        <ul>
6355          <li><a href="/about" data-nav>About</a></li>
6356          <li><a href="/partners" data-nav>Partners</a></li>
6357          <li><a href="/partners/find" data-nav>Find a partner</a></li>
6358          <li><a href="/partners/apply" data-nav>Become a partner</a></li>
6359          <li><a href="/demo" data-nav>Request a demo</a></li>
6360          <li><a href="https://portal.armorpoint.com" target="_blank" rel="noopener">Platform login</a></li>
6361        </ul>
6362      </div>
6363
6364      <div class="footer-col">
6365        <h4>Legal</h4>
6366        <ul>
6367          <li><a href="/trust" data-nav>Trust Center</a></li>
6368          <li><a href="/legal/data-privacy-notice" data-nav>Privacy notice</a></li>
6369          <li><a href="/legal/terms-of-service" data-nav>Terms of service</a></li>
6370          <li><a href="https://status.armorpoint.com" target="_blank" rel="noopener">Status page</a></li>
6371        </ul>
6372      </div>
6373
6374    </div>
6375
6376    <div class="footer-awards" aria-label="Industry recognition">
6377      <img src="/assets/awards/sc-award-2026-excellence-winner.webp" alt="SC Awards 2026 Excellence Award Winner" width="120" height="160" loading="lazy">
6378      <img src="/assets/awards/mssp-alert-top-250-2024.webp" alt="MSSP Alert Top 250 MSSP 2024 Honoree" width="160" height="160" loading="lazy">
6379      <img src="/assets/awards/crn-ppg-5-star-2025.webp" alt="CRN 5-Star Partner Program Guide Winner 2025" width="80" height="160" loading="lazy">
6380      <img src="/assets/awards/crn-ppg-5-star-2024.webp" alt="CRN 5-Star Partner Program Guide Winner 2024" width="80" height="160" loading="lazy">
6381    </div>
6382
6383    <div class="footer-bottom">
6384      <div class="footer-copyright">© 2026 ArmorPoint, LLC. All rights reserved.</div>
6385      <div class="footer-bottom-links">
6386        <a href="/legal/data-privacy-notice" data-nav>Privacy</a>
6387        <a href="/legal/terms-of-service" data-nav>Terms</a>
6388        <a href="/trust" data-nav>Trust</a>
6389      </div>
6390    </div>
6391
6392  </div>
6393</footer>
6394<script>// ============ MOBILE MENU — drawer + accordion ============
6395  (function setupMobileDrawer(){
6396    var toggleBtn  = document.getElementById('mobile-toggle');
6397    var closeBtn   = document.getElementById('mobile-close');
6398    var mobileMenu = document.getElementById('mobile-menu');
6399    var backdrop   = document.getElementById('mobile-backdrop');
6400    if (!toggleBtn || !mobileMenu || !backdrop) return;
6401
6402    function openDrawer() {
6403      mobileMenu.classList.add('is-open');
6404      backdrop.classList.add('is-open');
6405      document.body.classList.add('is-mobile-drawer-open');
6406      toggleBtn.setAttribute('aria-expanded', 'true');
6407    }
6408    function closeDrawer() {
6409      mobileMenu.classList.remove('is-open', 'open');
6410      backdrop.classList.remove('is-open');
6411      document.body.classList.remove('is-mobile-drawer-open');
6412      toggleBtn.setAttribute('aria-expanded', 'false');
6413    }
6414
6415    toggleBtn.addEventListener('click', function(){
6416      if (mobileMenu.classList.contains('is-open')) closeDrawer(); else openDrawer();
6417    });
6418    if (closeBtn) closeBtn.addEventListener('click', closeDrawer);
6419    backdrop.addEventListener('click', closeDrawer);
6420
6421    // ESC to close
6422    document.addEventListener('keydown', function(e){
6423      if (e.key === 'Escape' && mobileMenu.classList.contains('is-open')) closeDrawer();
6424    });
6425
6426    // Accordion behavior — single-open mode
6427    var triggers = mobileMenu.querySelectorAll('[data-mobile-trigger]');
6428    triggers.forEach(function(trigger){
6429      trigger.addEventListener('click', function(){
6430        var section = trigger.closest('[data-mobile-section]');
6431        if (!section) return;
6432        var wasActive = section.classList.contains('is-active');
6433        // Close all sections first (single-open)
6434        mobileMenu.querySelectorAll('[data-mobile-section]').forEach(function(s){
6435          s.classList.remove('is-active');
6436          var t = s.querySelector('[data-mobile-trigger]');
6437          if (t) t.setAttribute('aria-expanded', 'false');
6438        });
6439        // Open the clicked one if it wasn't already open
6440        if (!wasActive) {
6441          section.classList.add('is-active');
6442          trigger.setAttribute('aria-expanded', 'true');
6443        }
6444      });
6445    });
6446
6447    // ----- Overflow-driven collapse (added 2026-06-29) -----
6448    // Switch to the hamburger whenever the desktop bar cannot fit horizontally.
6449    // Content-driven, so it adapts to CMS-edited labels instead of a fixed px
6450    // breakpoint. Vertical overflow is handled by the dropdown scroll (CSS).
6451    var docEl = document.documentElement;
6452    var navEl = document.querySelector('header nav');
6453    var row = navEl ? navEl.firstElementChild : null;
6454    if (row) {
6455      docEl.classList.add('js-nav');
6456      var logoEl = row.querySelector(':scope > a');
6457      var groupEls = row.querySelectorAll(':scope > div');
6458      var SAFETY = 24; // px breathing room so items never sit edge-to-edge
6459      var navRaf = null;
6460      function desktopFits() {
6461        var wasCollapsed = docEl.classList.contains('nav-collapsed');
6462        docEl.classList.remove('nav-collapsed');
6463        docEl.classList.add('nav-measuring');
6464        var required = SAFETY + (logoEl ? logoEl.offsetWidth : 0);
6465        for (var i = 0; i < groupEls.length; i++) required += groupEls[i].offsetWidth;
6466        var available = row.clientWidth;
6467        docEl.classList.remove('nav-measuring');
6468        if (wasCollapsed) docEl.classList.add('nav-collapsed');
6469        return required <= available;
6470      }
6471      // Collapse to the hamburger on short viewports too: below MIN_NAV_HEIGHT the
6472      // tall dropdowns don't fit comfortably, so switch to the full-height scrolling
6473      // drawer. 858 = the reference laptop's viewport height, so that laptop and taller
6474      // screens keep the desktop bar and anything shorter collapses.
6475      var MIN_NAV_HEIGHT = 858;
6476      function evaluateNav() {
6477        navRaf = null;
6478        var collapsed = window.innerWidth <= 1390 || window.innerHeight < MIN_NAV_HEIGHT || !desktopFits();
6479        if (collapsed === docEl.classList.contains('nav-collapsed')) return;
6480        docEl.classList.toggle('nav-collapsed', collapsed);
6481        if (!collapsed) closeDrawer(); // tidy up if we expanded while open
6482      }
6483      function scheduleNav() {
6484        if (navRaf === null) navRaf = requestAnimationFrame(evaluateNav);
6485      }
6486      if (typeof ResizeObserver !== 'undefined') {
6487        new ResizeObserver(scheduleNav).observe(navEl);
6488      }
6489      // Always watch window resize so viewport HEIGHT changes are caught too (the
6490      // ResizeObserver on the nav only fires on its own width/content changes).
6491      window.addEventListener('resize', scheduleNav, { passive: true });
6492      if (document.fonts && document.fonts.ready) document.fonts.ready.then(scheduleNav);
6493      evaluateNav();
6494    }
6495  })();</script>
vendor: 1 bytes, line 6495
6495
6496<script>(function(){
6497/* AP-LEAD-CAPTURE:START — extracted by backend/templates/extract-chrome.js and
6498     injected into CMS-rendered designed pages so these forms submit there too.
6499     Keep this block self-contained (no refs to the router's vars above). */
6500  // ============ FORM PREFILL FROM CTAs ============
6501  document.addEventListener('click', function(e){
6502    var link = e.target.closest('[data-prefill-interest]');
6503    if (link) {
6504      sessionStorage.setItem('ap_prefill_interest', link.dataset.prefillInterest);
6505    }
6506  });
6507
6508  // ============================================================
6509  // LEAD CAPTURE → Pardot (Marketing Cloud Account Engagement)
6510  // Each form posts to its Pardot Form Handler endpoint. The field
6511  // names sent are the form's own `name=` attributes, which must
6512  // match the External Field Names mapped in the Pardot form handler
6513  // EXACTLY (case-sensitive).
6514  //
6515  // Endpoints MUST be https — an http endpoint is blocked by the
6516  // browser as mixed content on an https site, so the POST never
6517  // leaves and it looks like nothing happened.
6518  // ============================================================
6519  var AP_LEAD_ENDPOINTS = {
6520    demo:    'https://ww2.armorpoint.com/l/880372/2026-05-27/qv7z1',
6521    partner: 'https://ww2.armorpoint.com/l/880372/2026-06-10/qwqb2',
6522    // Chatbot lead handler. PASTE the real Pardot Form Handler URL (https) to go
6523    // live; until then armorpointSendLead rejects the PASTE_ value and the chat
6524    // lead is logged but not sent. The handler's External Field Names MUST match
6525    // the keys posted in armorpointSubmitChatLead exactly (case-sensitive):
6526    // firstName, lastName, email, company, companySize, intent, topic, message, pageUrl.
6527    chat:    'https://ww2.armorpoint.com/l/880372/2026-06-23/qxw31'
6528  };
6529
6530  // Posts urlencoded form data to a Pardot form handler.
6531  // Pardot is on another origin, so we use mode:'no-cors': the data
6532  // is delivered, but the response is opaque — we can't read its
6533  // status. The promise resolves once the request is sent and the
6534  // server responds, and rejects only on a true network failure
6535  // (offline, DNS, blocked by an extension). It cannot see a Pardot
6536  // field-level rejection, so keep the handler's required fields
6537  // matched to the form and verify the first real submission lands
6538  // in Pardot.
6539  function armorpointSendLead(endpoint, formData) {
6540    if (!endpoint || endpoint.indexOf('PASTE_') !== -1) {
6541      return Promise.reject(new Error('Lead endpoint not configured'));
6542    }
6543    return fetch(endpoint, {
6544      method: 'POST',
6545      mode: 'no-cors',
6546      body: new URLSearchParams(formData)
6547    });
6548  }
6549
6550  // Attach the captured Google Ads click id (the vf_gclid cookie set by the gated
6551  // GCLID script) so Pardot can attribute the lead to the paid click. No-op when
6552  // absent — no ad click, or ad-consent not granted (the cookie only exists once
6553  // CookieYes runs the GCLID script). The Pardot form handler must map an external
6554  // field named "gclid".
6555  function apAppendGclid(formData) {
6556    try {
6557      var m = document.cookie.match(/(?:^|;\s*)vf_gclid=([^;]*)/);
6558      if (m && m[1]) formData.set('gclid', decodeURIComponent(m[1]));
6559    } catch (e) {}
6560  }
6561
6562  // ============ DEMO REQUEST SUBMIT → Pardot ============
6563  document.addEventListener('submit', function(e){
6564    var form = e.target.closest('#demo-form');
6565    if (!form) return;
6566    e.preventDefault();
6567
6568    // Honeypot check
6569    if (form.elements['website'] && form.elements['website'].value) return;
6570
6571    // Basic validation
6572    if (!form.checkValidity()) {
6573      form.reportValidity();
6574      return;
6575    }
6576
6577    var firstName = form.elements['firstName'].value;
6578    var card = document.getElementById('form-card');
6579    if (!card) return;
6580
6581    // Collect the named fields for Pardot. Drop the honeypot; the
6582    // submit button is unnamed so it isn't included.
6583    var leadData = new FormData(form);
6584    leadData.delete('website');
6585    apAppendGclid(leadData);
6586
6587    // Loading state — prevents a double-submit on a slow network.
6588    var submitBtn = form.querySelector('[type="submit"]');
6589    var btnLabel = submitBtn ? submitBtn.innerHTML : '';
6590    if (submitBtn) { submitBtn.disabled = true; submitBtn.innerHTML = 'Sending…'; }
6591
6592    function showSuccess() {
6593      card.innerHTML = [
6594        '<div class="text-center py-6">',
6595          '<div class="inline-flex items-center justify-center w-14 h-14 roun
6595ded-full bg-ap-cyan/15 border border-ap-cyan/40 mb-5">',
6596            '<svg width="28" height="28" viewBox="0 0 24 24" fill="none" role="img" aria-label="Confirmed">',
6597              '<title>Confirmed</title>',
6598              '<path d="M5 13l4 4L19 7" stroke="#0099DC" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
6599            '</svg>',
6600          '</div>',
6601          '<h2 class="text-2xl font-semibold text-ap-text mb-2">Thanks for the request, ' + firstName.replace(/[<>"]/g, '') + '!</h2>',
6602          '<p class="text-ap-fog mb-2">We&rsquo;ve got your details and a member of our team will reach out shortly.</p>',
6603        '</div>'
6604      ].join('');
6605    }
6606
6607    function showError() {
6608      if (submitBtn) { submitBtn.disabled = false; submitBtn.innerHTML = btnLabel; }
6609      var err = form.querySelector('.ap-form-error');
6610      if (!err) {
6611        err = document.createElement('p');
6612        err.className = 'ap-form-error text-sm text-ap-red mt-3';
6613        err.setAttribute('role', 'alert');
6614        form.appendChild(err);
6615      }
6616      err.textContent = 'Something went wrong sending your request — please try again, or email us directly.';
6617    }
6618
6619    // Send to Pardot first; only show the scheduler on a completed send.
6620    armorpointSendLead(AP_LEAD_ENDPOINTS.demo, leadData)
6621      .then(showSuccess)
6622      .catch(showError);
6623  });
6624
6625  // ============ PARTNER APPLICATION SUBMIT → Pardot ============
6626  document.addEventListener('submit', function(e){
6627    var form = e.target.closest('#partner-form');
6628    if (!form) return;
6629    e.preventDefault();
6630
6631    // Honeypot check
6632    if (form.elements['website'] && form.elements['website'].value) return;
6633
6634    // Basic validation
6635    if (!form.checkValidity()) {
6636      form.reportValidity();
6637      return;
6638    }
6639
6640    var firstName = form.elements['firstName'].value;
6641    var partnerType = form.elements['partnerType'].value || 'partner';
6642    var card = document.getElementById('partner-form-card');
6643    if (!card) return;
6644
6645    // Collect the named fields for Pardot. Drop the honeypot; the submit
6646    // button is unnamed so it isn't included.
6647    var leadData = new FormData(form);
6648    leadData.delete('website');
6649    apAppendGclid(leadData);
6650
6651    // Loading state — prevents a double-submit on a slow network.
6652    var submitBtn = form.querySelector('[type="submit"]');
6653    var btnLabel = submitBtn ? submitBtn.innerHTML : '';
6654    if (submitBtn) { submitBtn.disabled = true; submitBtn.innerHTML = 'Sending…'; }
6655
6656    function showSuccess() {
6657      card.innerHTML = [
6658        '<div class="text-center py-8">',
6659          '<div class="inline-flex items-center justify-center w-14 h-14 rounded-full bg-ap-cyan/15 border border-ap-cyan/40 mb-5">',
6660            '<svg width="28" height="28" viewBox="0 0 24 24" fill="none" role="img" aria-label="Application received">',
6661              '<title>Application received</title>',
6662              '<path d="M5 13l4 4L19 7" stroke="#0099DC" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
6663            '</svg>',
6664          '</div>',
6665          '<h2 class="text-2xl font-semibold text-ap-text mb-2">Application received, ' + firstName.replace(/[<>"]/g, '') + '.</h2>',
6666          '<p class="text-ap-fog max-w-md mx-auto mb-8">A partner manager reviews every application personally. You\'ll hear back within 2 business days with next steps.</p>',
6667          '<div class="ap-card-flat p-6 max-w-md mx-auto text-left">',
6668            '<div class="mono text-[10px] text-ap-cyan tracking-widest mb-3">WHAT TO EXPECT</div>',
6669            '<div class="space-y-3 text-sm">',
6670              '<div class="flex items-start gap-3">',
6671                '<span class="text-xs text-ap-cyan mt-0.5">→</span>',
6672                '<span class="text-ap-text">Review and discovery scheduling within 2 business days.</span>',
6673              '</div>',
6674              '<div class="flex items-start gap-3">',
6675                '<span class="text-xs text-ap-cyan mt-0.5">→</span>',
6676                '<span class="text-ap-text">If we move forward: enablement plan tailored to ' + partnerType.replace(/[<>"]/g, '') + ' practices.</span>',
6677              '</div>',
6678              '<div class="flex items-start gap-3">',
6679                '<span class="text-xs text-ap-cyan mt-0.5">→</span>',
6680                '<span class="text-ap-text">If we don\'t move forward: a direct, honest reason why.</span>',
6681              '</div>',
6682            '</div>',
6683          '</div>',
6684          '<div class="mt-8">',
6685            '<a href="/partners" class="btn-secondary" data-nav>← Back to partner program</a>',
6686          '</div>',
6687        '</div>'
6688      ].join('');
6689    }
6690
6691    function showError() {
6692      if (submitBtn) { submitBtn.disabled = false; submitBtn.innerHTML = btnLabel; }
6693      var err = form.querySelector('.ap-form-error');
6694      if (!err) {
6695        err = document.createElement('p');
6696        err.className = 'ap-form-error text-sm text-ap-red mt-3';
6697        err.setAttribute('role', 'alert');
6698        form.appendChild(err);
6699      }
6700      err.textContent = 'Something went wrong sending your application — please try again, or email us directly.';
6701    }
6702
6703    // Send to Pardot first; only show the confirmation on a completed send.
6704    armorpointSendLead(AP_LEAD_ENDPOINTS.partner, leadData)
6705      .then(showSuccess)
6706      .catch(showError);
6707  });
6708
6709  // ============ PREFILL INTEREST ON DEMO PAGE LOAD ============
6710  window.addEventListener('hashchange', function(){
6711    if (location.hash === '#demo') {
6712      setTimeout(function(){
6713        var prefill = sessionStorage.getItem('ap_prefill_interest');
6714        var form = document.getElementById('demo-form');
6715        if (prefill && form && form.elements['interest']) {
6716          var sel = form.elements['interest'];
6717          for (var i = 0; i < sel.options.length; i++) {
6718            if (sel.options[i].value === prefill) {
6719              sel.selectedIndex = i;
6720              break;
6721            }
6722          }
6723          sessionStorage.removeItem('ap_prefill_interest');
6724        }
6725      }, 100);
6726    }
6727  });
6728  /* AP-LEAD-CAPTURE:END */
6729})();</script>
vendor: 1 bytes, line 6729
6729
6730<script>(function(){var inp=document.getElementById('mkt-search-input');if(!inp)return;var cards=[].slice.call(document.querySelectorAll('.mkt-card'));var radios=[].slice.call(document.querySelectorAll('input[name="mktcat"]'));function ac(){var r=radios.filter(function(x){return x.checked})[0];return r?r.id.replace('mc-',''):'all';}function ap(){var q=inp.value.toLowerCase().trim(),cat=ac();cards.forEach(function(c){var inc=(cat==='all')||c.classList.contains('cat-'+cat);var show=inc&&(!q||c.textContent.toLowerCase().indexOf(q)!==-1);c.style.display=show?'flex':'none';});}inp.addEventListener('input',ap);radios.forEach(function(r){r.addEventListener('change',ap);});ap();})();</script>
6730
6731</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.