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 & 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'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 & 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 & 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">→</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">→</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">→</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">→</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's tools, one click away on any screen.</span><span class="duopane-hub-arrow" aria-hidden="true">→</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 & 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'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'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">↑</span><span class="ap-kbd">↓</span> navigate · <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 & 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 & Report</div><a href="/platform/grc" class="mobile-link" data-nav>GRC</a><a href="/platform/reporting" class="mobile-link" data-nav>Reporting & 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 & 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'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'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't a separate consulting layer translating between you and a black-box product. They'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 & 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 & 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 & 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 & 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'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'll tell you honestly what fits today, what's on the roadmap, and what'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 & 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’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.