<!DOCTYPE html>
<html lang="en">
<head>

<script>
(function(){
  if (window.__kgEmbed) return;
  window.dataLayer = window.dataLayer || [];
  function gtag(){window.dataLayer.push(arguments);}
  gtag('consent', 'default', {
    ad_storage: 'denied',
    ad_user_data: 'denied',
    ad_personalization: 'denied',
    analytics_storage: 'denied',
    functionality_storage: 'granted',
    security_storage: 'granted',
    wait_for_update: 500
  });
})();
</script>

<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
(function() {
  var loaded = false;
  function loadGTM() {
    if (loaded) return; loaded = true;
    var s = document.createElement('script');
    s.async = true;
    s.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-5V39ZK9V';
    document.head.appendChild(s);
  }
  var schedule = function() {
    (window.requestIdleCallback || function(cb){ setTimeout(cb, 1500); })(loadGTM, {timeout: 3000});
  };
  if (document.readyState === 'complete') schedule();
  else window.addEventListener('load', schedule);
})();
</script>


<link rel="stylesheet" href="/public/vendor/cookieconsent/cookieconsent.css">
<link rel="stylesheet" href="/public/cookie-consent.css">
<script defer src="/public/vendor/cookieconsent/cookieconsent.umd.js"></script>
<script defer src="/public/cookie-consent.js"></script>

<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Community Program | Keygraph</title>
<meta name="description" content="Free Keygraph Pro for U.S. 501(c)(3) nonprofits and seed or pre-Series-A startups. Learn who qualifies for the Keygraph Community Program and how to apply.">
<link rel="canonical" href="https://keygraph.io/community-program">
<meta name="robots" content="index, follow">
<meta property="og:title" content="Community Program | Keygraph" />
<meta property="og:description" content="Free Keygraph Pro for U.S. 501(c)(3) nonprofits and seed or pre-Series-A startups. Learn who qualifies for the Keygraph Community Program and how to apply." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://keygraph.io/community-program" />
<meta property="og:image" content="https://keygraph.io/public/og-image.png" />
<meta property="og:site_name" content="Keygraph" />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Community Program | Keygraph" />
<meta name="twitter:description" content="Free Keygraph Pro for U.S. 501(c)(3) nonprofits and seed or pre-Series-A startups. Learn who qualifies for the Keygraph Community Program and how to apply." />
<meta name="twitter:image" content="https://keygraph.io/public/og-image.png" />
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://keygraph.io/#organization",
      "name": "Keygraph",
      "legalName": "Keygraph Inc.",
      "url": "https://keygraph.io",
      "description": "Continuous agentic pentesting platform for the enterprise.",
      "logo": {
        "@type": "ImageObject",
        "url": "https://keygraph.io/public/keygraph-wordmark.png",
        "contentUrl": "https://keygraph.io/public/keygraph-wordmark.png",
        "width": 1200,
        "height": 300
      },
      "sameAs": ["https://github.com/KeygraphHQ"]
    }
  ]
}
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    { "@type": "Question", "name": "What about non-U.S. nonprofits?", "acceptedAnswer": { "@type": "Answer", "text": "The Nonprofit track is limited to U.S.-based 501(c)(3) organizations, so non-U.S. nonprofits are not eligible for it. Shannon OSS is free forever and self-hosted for anyone, and paid Keygraph Pro is available worldwide." } },
    { "@type": "Question", "name": "How Active Developers are measured", "acceptedAnswer": { "@type": "Answer", "text": "As defined in the Keygraph Terms of Service. We confirm the count with you during onboarding." } },
    { "@type": "Question", "name": "How long does free access last?", "acceptedAnswer": { "@type": "Answer", "text": "Free access renews monthly, with a quick annual eligibility re-certification. Your Order Form states your enrollment terms." } },
    { "@type": "Question", "name": "What if we need self-hosted or air-gapped?", "acceptedAnswer": { "@type": "Answer", "text": "The program is cloud-hosted only. For self-hosted, use Shannon OSS (free) or the Keygraph Enterprise plan." } },
    { "@type": "Question", "name": "EU data residency", "acceptedAnswer": { "@type": "Answer", "text": "Available. Request it when we follow up on your application." } },
    { "@type": "Question", "name": "What counts as a Graduation Event", "acceptedAnswer": { "@type": "Answer", "text": "Your free access runs until you graduate: closing a Series A or later round, raising more than US $10 million in total outside funding, being acquired, or growing past 20 Active Developers. The Order Form has the precise definition." } },
    { "@type": "Question", "name": "The 90-day Conversion Window", "acceptedAnswer": { "@type": "Answer", "text": "After a Graduation Event you have 90 days to convert to a paid plan, with free access continuing in the meantime. Your team keeps working; nothing migrates." } },
    { "@type": "Question", "name": "Conversion pricing", "acceptedAnswer": { "@type": "Answer", "text": "You convert at our then-current published pricing, based on your actual Active Developer count and enabled modules." } }
  ]
}
</script>
<link rel="preload" href="/public/fonts/geist-latin-wght-normal.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/public/fonts/geist-mono-latin-wght-normal.woff2" as="font" type="font/woff2" crossorigin>
<link rel="icon" href="public/favicon.svg?v=5" type="image/svg+xml">
<meta name="color-scheme" content="dark" />
<meta name="theme-color" content="#0B100F" />
<link rel="apple-touch-icon" href="public/web-app-manifest-512x512.png?v=5" />
<link rel="manifest" href="public/site.webmanifest?v=5" />
<link rel="dns-prefetch" href="https://www.googletagmanager.com" />
<link rel="icon" href="public/favicon.ico?v=5" type="image/x-icon" sizes="32x32">
<style>

  
  
  @font-face { font-family: 'Geist'; font-style: normal; font-weight: 100 900; font-display: swap; src: url('/public/fonts/geist-latin-wght-normal.woff2') format('woff2-variations'); }
  @font-face { font-family: 'Geist Mono'; font-style: normal; font-weight: 100 900; font-display: swap; src: url('/public/fonts/geist-mono-latin-wght-normal.woff2') format('woff2-variations'); }
  :root {
    --container: 1200px;
    --gutter: 24px;
    --banner-h: 0px;
    
    --bg: #F4EFE3;
    --bg-alt: #EBE4D2;
    --bg-dark: #221E1B;
    --white: #FAF6EB;
    --paper: #FAF6EB;
    --ink: #221E1B;
    --text: #221E1B;
    --text-sec: #5D5546;
    --text-tri: var(--ramp-6);
    --border: #221E1B;
    --border-lt: #DCD2BC;
    --teal: #3A322B; 
    --accent: #EE5B23;
    
    --st-yellow: #F5A800;
    --st-orange: #EE5B23;
    --st-red: #DD3641;
    --st-magenta: #C21F5B;
    --st-purple: #5F2E74;
    
    --st-green: #55976C;
    --st-blue: #4D93B7;
    
    --bloom: #F3DFB2;
    --bloom-soft: #EFE8D2;
    --glow: rgba(208, 81, 33, 0.10);
    
    --radius: 12px;
    --radius-sm: 8px;
    --sans: 'Geist', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
    --serif: 'Geist', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
    --display: 'Geist', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
    --mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
    
    --fs-xs:      clamp(10px, 0.75vw, 12px);
    --fs-sm:      clamp(12px, 0.95vw, 14px);
    --fs-base:    clamp(14px, 1.05vw, 16px);
    --fs-md:      clamp(14px, 1.15vw, 17px);
    --fs-lg:      clamp(16px, 1.4vw, 20px);
    --fs-xl:      clamp(18px, 1.7vw, 24px);
    --fs-2xl:     clamp(20px, 2.2vw, 32px);
    --fs-3xl:     clamp(28px, 4vw, 56px);
    --fs-display: clamp(38px, 5vw, 72px);
    
    --stripes-v: linear-gradient(180deg,
        var(--st-yellow) 0 20%, var(--st-orange) 20% 40%, var(--st-red) 40% 60%,
        var(--st-magenta) 60% 80%, var(--st-purple) 80% 100%);
    
    --prism-v: linear-gradient(180deg,
        var(--st-red) 0 20%, var(--st-orange) 20% 40%, var(--st-yellow) 40% 60%,
        var(--st-green) 60% 80%, var(--st-blue) 80% 100%);
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }
  
  html { scroll-behavior: smooth; background: var(--bg); overflow-x: hidden; overflow-x: clip; }
  body { font-family: var(--sans); background: var(--bg); color: var(--text); -webkit-font-smoothing: antialiased; }
  a { color: inherit; text-decoration: none; }
  ::selection { background: var(--st-orange); color: var(--white); }
  :focus-visible { outline: 3px solid var(--st-orange); outline-offset: 2px; }
  h1, h2, h3 { font-family: var(--display); font-weight: 800; }

  
  body::after {
    content: ""; position: fixed; inset: 0; z-index: 2147483000;
    pointer-events: none; opacity: 0.42;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.13 0 0 0 0 0.11 0 0 0 0 0.09 0 0 0 0.10 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-size: 240px 240px;
  }

  
  .rt-stripes { display: block; height: 15px; background: var(--stripes-v); border: 0; }
  .rt-stripes-thin { height: 8px; }
  .rt-stripes-thick { height: 25px; }

  
  .rt-rule { border: 0; height: 6px; background:
    linear-gradient(180deg, var(--ink) 0 3px, transparent 3px 5px, var(--ink) 5px 6px); }

  .rt-eyebrow { font-family: var(--mono); font-size: 12px; letter-spacing: 0.22em;
    text-transform: uppercase; font-weight: 700; color: var(--text-sec);
    display: flex; align-items: center; gap: 12px; }
  .rt-eyebrow::before { content: ""; width: 34px; height: 12px; background: var(--stripes-v); flex: none; }
  .rt-eyebrow-center { justify-content: center; }

  .rt-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 13px 24px; border: 1px solid var(--hud-line); border-radius: var(--radius-sm);
    font-family: var(--sans); font-size: 14px; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.06em; line-height: 1;
    cursor: pointer; text-decoration: none;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s, color 0.15s; }
  .rt-btn-primary { background: var(--ink); color: var(--white); box-shadow: 4px 4px 0 var(--st-orange); }
  .rt-btn-primary:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--st-orange); background: var(--ink); color: var(--white); }
  .rt-btn-secondary { background: transparent; color: var(--ink); box-shadow: 4px 4px 0 rgba(26, 26, 26,0.18); }
  .rt-btn-secondary:hover { background: var(--ink); color: var(--white); transform: translate(-2px,-2px); box-shadow: 6px 6px 0 rgba(26, 26, 26,0.28); }

  .rt-tag { display: inline-block; font-family: var(--mono); font-size: 10px;
    font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
    border: 1px solid var(--hud-line); padding: 3px 8px 2px; color: var(--ink); background: var(--paper); }

  
  .rt-badge { display: inline-flex; flex-direction: column; align-items: center;
    border: 1px solid var(--hud-line); border-radius: var(--radius-sm); padding: 6px 14px 4px; background: var(--paper); color: var(--ink); }
  .rt-badge-main { font-family: var(--display); font-weight: 800; font-style: italic; font-size: 22px;
    letter-spacing: -0.02em; line-height: 1; text-transform: uppercase; }
  .rt-badge-sub { font-family: var(--mono); font-size: 8px; font-weight: 700;
    letter-spacing: 0.3em; text-transform: uppercase; margin-top: 3px; }

  
  .rt-checkline { display: flex; flex-wrap: wrap; gap: 10px 26px;
    font-family: var(--mono); font-size: 11px; font-weight: 700;
    letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-sec); list-style: none; margin: 0; padding: 0; }
  .rt-checkline li { display: inline-flex; align-items: center; gap: 8px; }
  .rt-checkline li::before { content: ""; width: 9px; height: 9px;
    border: 1.5px solid currentColor; flex: none; }
  .rt-checkline li.checked::before { background: var(--st-orange); border-color: var(--hud-line); }

  .rt-barcode { height: 36px; width: 150px; background:
    repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 5px,
      var(--ink) 5px 6px, transparent 6px 8px, var(--ink) 8px 11px, transparent 11px 13px,
      var(--ink) 13px 14px, transparent 14px 19px); }
  .rt-barcode-num { font-family: var(--mono); font-size: 10px; letter-spacing: 0.42em; margin-top: 5px; color: var(--text-sec); }

  
  .rt-kana { font-family: var(--mono); writing-mode: vertical-rl; font-size: 10px;
    letter-spacing: 0.34em; color: var(--text-tri); user-select: none; }

  
  .rt-index-code { font-family: var(--mono); font-size: 11px; font-weight: 700;
    letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-sec);
    border-left: 4px solid var(--st-orange); padding-left: 10px; }

  
  .rt-frame { border: 1px solid var(--hud-line); border-radius: var(--radius); background: var(--ink); box-shadow: 8px 8px 0 rgba(26, 26, 26,0.16); }
  .rt-frame-bar { display: flex; align-items: center; gap: 12px; padding: 8px 12px;
    background: var(--paper); border-bottom: 1px solid var(--hud-line); }
  .rt-frame-lights { display: inline-flex; gap: 5px; }
  .rt-frame-lights i { width: 9px; height: 9px; border: 1px solid var(--hud-line); display: block; }
  .rt-frame-lights i:nth-child(1) { background: var(--st-yellow); }
  .rt-frame-lights i:nth-child(2) { background: var(--st-orange); }
  .rt-frame-lights i:nth-child(3) { background: var(--st-red); }
  .rt-frame-label { font-family: var(--mono); font-size: 10px; font-weight: 700;
    letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-sec); }
  

  

  
  
  html { overflow-x: hidden; background: var(--yellow); overscroll-behavior-y: none; }
  
  :root {
    --ramp-1:  #FFFFFF;
    --ramp-2:  #F7F7F7;   
    --ramp-3:  #D4D4D4;
    --ramp-4:  #ABABAB;
    --ramp-5:  #8A8A8A;
    --ramp-6:  #666666;   
    --ramp-7:  #4E4E4E;
    --ramp-8:  #3A3A3A;
    --ramp-9:  #292929;
    --ramp-10: #1A1A1A;   
    --ramp-11: #0B0B0B;

    
    --ground: var(--ramp-2);
    --grey:   var(--ramp-6);
    --light:  var(--ramp-10);

    
    --panel:   #FFFFFF;
    --panel-2: #FAFAFA;

    
    --yellow:    #D05121;   
    --yellow-lt: #DDCBB6;   
    --ink-deep:  #1A1A1A;   
    
    --orange: var(--yellow); --gold: var(--yellow); --amber: var(--yellow);
    --cadmium: var(--yellow); --ossein: var(--yellow-lt);
    --mint: var(--yellow-lt); --teal: var(--yellow); --teal-deep: var(--ink-deep);

    
    --text:     var(--ramp-10);
    --text-sec: var(--ramp-7);
    --text-tri: var(--ramp-6);

    
    
    --ink-rgb: 26, 26, 26;
    --hud-line: rgba(var(--ink-rgb), 0.24);
    --hud-hair: rgba(var(--ink-rgb), 0.13);
    --hud-mark: rgba(var(--ink-rgb), 0.13);

    
    --accent:     var(--yellow);
    --accent-ink: var(--ink-deep);

    
    --bg: var(--ground); --bg-alt: var(--panel); --bg-dark: var(--ground);
    --paper: var(--panel); --white: var(--ramp-11);
    --ink: var(--text);
    --border: var(--hud-line); --border-lt: var(--hud-hair);
    --stripes-v: repeating-linear-gradient(90deg, var(--hud-line) 0 5px, transparent 5px 11px);
    --prism-v: var(--stripes-v);
    
    --frame-inset: 28px;
    --frame-pad: 52px;
    --frame-max: var(--container);
  }
  body { background: var(--ground); color: var(--text); }
  ::selection { background: var(--mint); color: var(--ink); }
  :focus-visible { outline: 2px solid var(--light); outline-offset: 3px; }
  h1, h2, h3, h4 { font-family: var(--sans); font-weight: 700; }
  body::after { content: none; }

  
  .p2-wrap {
    width: min(calc(100% - (var(--frame-inset) + var(--frame-pad)) * 2),
               calc(var(--frame-max) - var(--frame-pad) * 2));
    margin-left: auto; margin-right: auto;
  }

  
  
  .p2-badge { display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 13px; border: 1px solid var(--yellow); border-radius: 999px;
    background: var(--mint);
    font-family: var(--mono); font-size: 11px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink);
    text-decoration: none; }
  .p2-badge svg { width: 13px; height: 13px; flex: none; }

  
  .p2-btn { display: inline-flex; align-items: center; justify-content: center; gap: 9px;
    padding: 13px 24px; border-radius: 999px; border: 1px solid transparent;
    font-family: var(--sans); font-size: 15px; font-weight: 600; line-height: 1;
    text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: background 0.2s, color 0.2s, border-color 0.2s; }
  
  .p2-btn-primary { background: var(--accent); color: var(--accent-ink);
    border-color: var(--accent); }
  
  .p2-btn-primary:hover { background: var(--ink-deep); color: #FFFFFF;
    border-color: var(--ink-deep); }
  .p2-btn-ghost { background: transparent; color: var(--light); border-color: var(--hud-line); }
  .p2-btn-ghost:hover { background: var(--light); color: var(--ground); border-color: var(--light); }
  .p2-btn svg { width: 15px; height: 15px; flex: none; }

  
  .p2-head { max-width: 760px; }
  .p2-head-center { margin-left: auto; margin-right: auto; text-align: center; }
  .p2-eyebrow { font-family: var(--mono); font-size: 11px; font-weight: 600;
    letter-spacing: 0.24em; text-transform: uppercase; color: var(--text-tri);
    margin: 0 0 16px; }
  .p2-h2 { font-family: var(--sans); font-size: clamp(28px, 3.5vw, 46px);
    font-weight: 700; letter-spacing: -0.025em; line-height: 1.08; margin: 0 0 16px;
    color: var(--light); }
  .p2-h2 em { font-style: normal; color: var(--text-tri); }
  .p2-sub { font-size: 17px; line-height: 1.6; color: var(--text-sec); margin: 0; }
  .p2-section { padding: 104px 0; position: relative; }
  .p2-section > * { position: relative; }
  
  button { font-family: var(--sans); cursor: pointer; }
  img { max-width: 100%; }
  html { overflow-x: hidden; }

  
  footer .nav-logo { color: var(--text); }
  .footer-link:hover { color: var(--text); }
  .footer-socials a:hover { color: var(--text); }

  
  html { background: var(--bg); }
  body { min-height: 100vh !important; display: flex !important; flex-direction: column !important; }
  body > footer { margin-top: auto !important; }

  @media (max-width: 640px) {
    nav { padding: 0; }
    footer { padding: 48px 0 20px; }
    .footer-bottom { flex-direction: column; gap: 12px; }
  }

  
  
  nav {
    position: fixed;
    top: calc(var(--banner-h, 0px) + 14px);
    left: var(--gutter); right: var(--gutter);
    margin: 0 auto;
    max-width: var(--container);
    z-index: 100;
    padding: 0;
    background: rgba(255, 255, 255, 0.97);
    backdrop-filter: blur(12px);
    border: 1px solid var(--hud-line);
    border-radius: var(--radius);
    box-shadow: 5px 5px 0 var(--ink);
  }
  
  .nav-inner {
    max-width: var(--container); margin: 0 auto;
    padding: 0 var(--gutter);
    display: flex; align-items: center; justify-content: space-between;
    height: 50px;
    position: relative;
  }
  #products-dropdown, #docs-dropdown { position: relative; }
  .nav-left { display: flex; align-items: center; gap: 28px; }
  .nav-logo { font-family: var(--sans); font-weight: 700; font-size: 20px; letter-spacing: -0.02em; text-transform: none; color: var(--ink); }
  .nav-divider { width: 2px; height: 20px; background: var(--ink); }
  .nav-links { display: flex; gap: 24px; font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-sec); align-items: center; }
  .nav-links a { transition: color 0.15s; }
  .nav-links a:hover, .nav-links a.active { color: var(--ink); text-decoration: underline; text-decoration-color: var(--st-orange); text-decoration-thickness: 2px; text-underline-offset: 6px; }
  .nav-right { display: flex; align-items: center; gap: 16px; }
  .nav-login { font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink); }
  .nav-login:hover { text-decoration: underline; text-decoration-color: var(--st-orange); text-decoration-thickness: 2px; text-underline-offset: 6px; }
  nav .btn-primary {
    background: var(--ink);
    color: var(--white);
    border: 1px solid var(--hud-line);
    border-radius: var(--radius-sm);
    padding: 8px 14px;
    font-family: var(--sans); font-size: 12px; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.05em;
    box-shadow: 3px 3px 0 var(--st-orange);
    transition: transform 0.15s, box-shadow 0.15s;
  }
  nav .btn-primary:hover { background: var(--ink); color: var(--white); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--st-orange); }
  .btn-primary {
    background: var(--ink); color: var(--white); border: 1px solid var(--hud-line);
    border-radius: var(--radius-sm); padding: 12px 22px; font-size: 14px; font-family: var(--sans);
    font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
    box-shadow: 4px 4px 0 var(--st-orange);
    transition: transform 0.15s, box-shadow 0.15s;
  }
  .btn-primary:hover { background: var(--ink); transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--st-orange); }
  .nav-dropdown-wrap { position: relative; }
  .nav-dropdown-trigger {
    background: none; border: none;
    font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--text-sec);
    cursor: pointer; display: flex; align-items: center; gap: 5px;
    padding: 0; transition: color 0.15s;
  }
  .nav-dropdown-trigger:hover, .nav-dropdown-trigger.active { color: var(--ink); }
  .nav-dropdown-trigger svg { transition: transform 0.2s; }
  .nav-dropdown-wrap:hover .nav-dropdown-trigger svg { transform: rotate(180deg); }
  .nav-dropdown {
    position: absolute; top: calc(100% + 14px); left: -12px;
    background: var(--paper); border: 1px solid var(--hud-line);
    border-radius: var(--radius-sm); padding: 10px; min-width: 220px;
    box-shadow: 8px 8px 0 rgba(26, 26, 26, 0.18);
    opacity: 0; visibility: hidden;
    transform: translateY(-4px);
    transition: all 0.2s ease;
    z-index: 200;
  }
  
  .nav-dropdown::before { content: ""; position: absolute; top: -16px; left: 0; right: 0; height: 16px; }
  .nav-dropdown-wrap:hover .nav-dropdown {
    opacity: 1; visibility: visible; transform: translateY(0);
  }
  .nav-dropdown > a {
    display: block; padding: 10px 14px; border-radius: var(--radius-sm);
    font-size: 14px; color: var(--text-sec); transition: all 0.15s;
    background: var(--bg); margin-bottom: 4px;
  }
  .nav-dropdown > a:last-child { margin-bottom: 0; }
  .nav-dropdown > a:hover { background: var(--bg-alt); color: var(--ink); }
  .nav-dropdown a .dd-label { font-weight: 700; color: var(--ink); display: block; margin-bottom: 2px; }
  .nav-dropdown-docs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; width: 240px; left: -12px; right: auto; }
  .nav-dropdown-docs > a { margin-bottom: 0; }
  
  #products-dropdown .nav-dropdown {
    width: 520px;
    padding: 12px;
    left: -12px;
    right: auto;
    display: grid;
    grid-template-columns: 1.7fr 1fr;
    grid-template-areas: "products opensource" "products platform";
    gap: 10px;
    align-items: stretch;
  }
  #products-dropdown .mega-box { background: var(--bg); border: 1px solid var(--hud-line); border-radius: var(--radius-sm); padding: 12px 10px 10px; }
  #products-dropdown .mega-box-products { grid-area: products; }
  #products-dropdown .mega-box-opensource { grid-area: opensource; }
  #products-dropdown .mega-box-platform { grid-area: platform; }
  #products-dropdown .mega-box-label { font-family: var(--mono); font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--accent-text); font-weight: 700; margin-bottom: 8px; padding: 0 8px; }
  #products-dropdown .mega-box-items { display: flex; flex-direction: column; }
  #products-dropdown .mega-box-products .mega-box-items { display: grid; grid-auto-flow: column; grid-template-rows: repeat(4, auto); gap: 0 4px; }
  #products-dropdown .mega-box-items a { display: block; padding: 7px 8px; border-radius: var(--radius-sm); font-size: 13px; font-weight: 600; color: var(--text-sec); background: transparent; border: 0; margin: 0 0 1px 0; letter-spacing: -0.005em; transition: background 0.15s, color 0.15s; text-decoration: none; }
  #products-dropdown .mega-box-items a:hover { background: var(--bg-alt); color: var(--ink); }
  #products-dropdown .mega-platform { grid-area: platform; display: flex; flex-direction: column; padding: 16px 14px; background: var(--bg); border: 1px solid var(--hud-line); border-radius: var(--radius-sm); margin: 0; transition: background 0.15s; text-decoration: none; color: var(--text-sec); }
  #products-dropdown .mega-platform:hover { background: var(--bg-alt); }
  #products-dropdown .mega-platform-label { display: block; font-family: var(--mono); font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--accent-text); font-weight: 700; margin-bottom: 0; }
  #products-dropdown .mega-platform-title { display: block; font-family: var(--sans); font-size: 19px; font-weight: 800; color: var(--ink); margin: 14px 0 8px; letter-spacing: -0.01em; line-height: 1.15; }
  #products-dropdown .mega-platform-desc { display: block; font-size: 12px; color: var(--text-sec); line-height: 1.5; flex: 1; }
  #products-dropdown .mega-platform-arrow { display: block; font-family: var(--mono); font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--accent-text); margin-top: 14px; font-weight: 700; }
  @media (max-width: 760px) {
    #products-dropdown .nav-dropdown { min-width: 280px; width: auto; grid-template-columns: 1fr; grid-template-areas: "products" "opensource" "platform"; }
    #products-dropdown .mega-box-products .mega-box-items { grid-auto-flow: row; grid-template-rows: none; grid-template-columns: 1fr; }
  }
  .nav-hamburger {
    display: none; flex-direction: column; gap: 5px;
    background: none; border: none; padding: 6px; cursor: pointer; margin-left: 8px;
  }
  .nav-hamburger span {
    display: block; width: 22px; height: 3px;
    background: var(--ink); border-radius: var(--radius-sm); transition: all 0.25s;
  }
  .nav-hamburger.open span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
  .nav-hamburger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
  .nav-hamburger.open span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
  .nav-mobile-menu {
    display: none;
    position: fixed; top: calc(var(--banner-h, 0px) + 78px);
    left: var(--gutter); right: var(--gutter); margin: 0 auto; max-width: var(--container);
    background: var(--bg);
    border: 1px solid var(--hud-line);
    border-radius: var(--radius);
    padding: 8px var(--gutter) 20px;
    z-index: 99;
    flex-direction: column;
    box-shadow: 5px 5px 0 var(--ink);
    max-height: calc(100vh - 102px);
    overflow-y: auto;
  }
  .nav-mobile-menu.open { display: flex; }
  .nav-mobile-menu a {
    display: block; padding: 11px 0; font-size: 15px; font-weight: 600;
    color: var(--text-sec);
    border-bottom: 1px solid var(--border-lt);
    transition: color 0.2s;
  }
  .nav-mobile-menu a:hover { color: var(--ink); }
  .nav-mobile-menu a:last-of-type { border-bottom: none; }
  .nav-mobile-section-label {
    font-family: var(--mono);
    font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
    font-weight: 700; color: var(--accent-text);
    padding: 18px 0 4px;
  }
  .nav-mobile-menu > .nav-mobile-section-label:first-child { padding-top: 6px; }
  .mobile-nav-cta {
    margin-top: 14px; text-align: center;
    background: var(--ink); color: var(--bg) !important;
    padding: 13px !important; border-radius: var(--radius-sm);
    font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
    border: 1px solid var(--hud-line);
    box-shadow: 4px 4px 0 var(--st-orange);
    border-bottom: 1px solid var(--hud-line) !important;
  }
  .hero-lede-row { display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
  .hero-lede-row .hero-lede { margin: 0; flex: 0 0 auto; max-width: none; white-space: nowrap; }
  .hero-lede-row .shannon-badge { flex: 0 0 auto; max-width: none; white-space: nowrap; }
  .hero-lede-row .shannon-badge-copy { white-space: nowrap; line-height: 1.4; }
  .shannon-callout-section { max-width: var(--container); margin: 0 auto; padding: 32px var(--gutter) 24px; text-align: right; }
  .shannon-badge {
    display: inline-flex; align-items: center; gap: 0.8333em;
    padding: 0.75em 1.1667em;
    background: var(--paper);
    border: 1px solid var(--hud-line);
    border-radius: var(--radius-sm);
    font-family: var(--mono); font-size: 12px; line-height: 1.3;
    color: var(--text-sec);
    text-decoration: none;
    box-shadow: 0.25em 0.25em 0 rgba(26, 26, 26, 0.16);
    transition: transform 0.15s, box-shadow 0.15s;
    max-width: 100%;
  }
  .shannon-badge:hover { transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--st-orange); }
  .shannon-badge-gh { width: 1.1667em; height: 1.1667em; color: var(--ink); flex-shrink: 0; }
  .shannon-badge-copy strong { color: var(--ink); font-weight: 700; }
  .shannon-badge-logo { height: 1.1667em; width: auto; vertical-align: middle; margin: 0 0.1667em; object-fit: contain; position: relative; top: -0.0833em; filter: invert(1); }
  .shannon-badge-stars { display: inline-flex; align-items: center; gap: 0.4167em; padding-left: 0.8333em; margin-left: 0.3333em; border-left: 1px solid var(--hud-line); color: var(--ink); font-weight: 700; flex-shrink: 0; }
  .shannon-badge-stars svg { width: 1em; height: 1em; color: var(--accent-text); flex-shrink: 0; }
  footer {
    position: relative;
    background: var(--bg-dark);
    color: #EFE8D6;
    padding: 62px 0 28px;
  }
  
  footer::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 15px; background: var(--stripes-v); }
  
  body > footer {
    --bg: var(--ground); --bg-alt: var(--panel); --white: var(--ramp-11); --paper: var(--panel);
    --ink: var(--ramp-10); --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: #F5A800;
  }
  footer .nav-logo { color: #F4EFE3; }
  .footer-logo { font-family: var(--sans); font-weight: 700; font-size: 26px; letter-spacing: -0.02em; text-transform: none; color: #F4EFE3; }
  .footer-inner {
    max-width: var(--container); margin: 0 auto;
    padding: 0 var(--gutter);
    display: grid; grid-template-columns: 1.2fr 1.7fr 1.1fr 1fr 1fr; gap: 36px; align-items: start;
  }
  .footer-col { display: flex; flex-direction: column; }
  .footer-products-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }
  .footer-products-grid > div { display: flex; flex-direction: column; }
  .footer-brand p { color: #8B8270; font-family: var(--mono); font-size: 12px; margin-top: 10px; max-width: 220px; line-height: 1.6; }
  .footer-col-title {
    font-family: var(--mono); font-size: 10px; font-weight: 700; color: var(--st-yellow);
    margin-bottom: 12px; letter-spacing: 0.22em; text-transform: uppercase;
  }
  .footer-link { font-size: 14px; color: #B5AC9A; margin-bottom: 7px; display: block; transition: color 0.2s; }
  .footer-link:hover { color: #F4EFE3; text-decoration: underline; text-decoration-color: var(--st-orange); text-decoration-thickness: 2px; text-underline-offset: 4px; }
  .footer-bottom {
    max-width: var(--container); margin: 28px auto 0; padding: 18px var(--gutter) 0;
    border-top: 1px solid #3A342C;
    display: flex; justify-content: space-between; align-items: center;
    font-family: var(--mono); font-size: 11px; letter-spacing: 0.05em; color: #8B8270;
  }
  .footer-socials { display: flex; align-items: center; gap: 16px; }
  .footer-socials a { color: #8B8270; transition: color 0.2s; }
  .footer-socials a:hover { color: #F4EFE3; }
  .footer-link-platform { margin-top: 22px; font-weight: 700; border-top: 1px solid #3A342C; padding-top: 18px; transition: color 0.2s; }
  .footer-link-platform:hover { color: var(--st-yellow); }

  @media (max-width: 1040px) {
    .footer-inner { grid-template-columns: repeat(3, 1fr); }
    .footer-col-platform { grid-column: 2 / -1; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 24px; }
  }
  @media (max-width: 860px) {
    .footer-inner { grid-template-columns: 1fr 1fr; gap: 32px; }
    .footer-col-platform { grid-column: auto; display: flex; flex-direction: column; gap: 0; }
  }
  @media (max-width: 520px) {
    .footer-inner { grid-template-columns: 1fr 1fr; gap: 24px; }
    .footer-brand { grid-column: 1 / -1; }
    .footer-products-grid { grid-template-columns: 1fr; }
  }
  @media (max-width: 760px) {
    .nav-links, .nav-divider, .nav-login { display: none !important; }
    .nav-right .btn-primary { display: none !important; }
    .nav-hamburger { display: flex !important; }
    
    html, body { overflow-x: hidden; max-width: 100vw; }
    img, svg, table, pre, video, iframe { max-width: 100%; height: auto; }
    pre, code { white-space: pre-wrap; word-break: break-word; }
  }
  

  
  main.cf-dark {
    position: relative; isolation: isolate; background: var(--ground);
    --bg: var(--ground); --bg-alt: var(--panel); --paper: var(--panel); --white: var(--ramp-11);
    --ink: var(--ramp-10); --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: var(--yellow);
    color: var(--text);
  }
  main.cf-dark::before {
    content: ""; position: absolute; inset: 0; z-index: -2; pointer-events: none;
    left: 50%; transform: translateX(-50%); width: 100vw;
    background-image: none;
  }
  main.cf-dark::after {
    content: ""; position: absolute; z-index: -1; pointer-events: none;
    top: 0; bottom: 0; left: 50%; transform: translateX(-50%);
    width: min(calc(var(--container) + 2px), 100%);
    border-left: 1px solid var(--hud-hair);
    border-right: 1px solid var(--hud-hair);
  }
  @media (max-width: 1300px) { main.cf-dark::after { display: none; } }

  
  main.cf-dark > .hero-wrap,
  main.cf-dark > .nav-mobile-menu {
    --bg: var(--ground); --bg-alt: var(--panel); --paper: var(--panel); --white: var(--ramp-11);
    --ink: var(--ramp-10); --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: var(--yellow);
    color: var(--text);
  }
  
  main.cf-dark > .hero-wrap { position: relative; z-index: 1; background: var(--bg); }
  main.cf-dark > .hero-wrap::before {
    content: ""; position: absolute; inset: 0; z-index: -1;
    left: 50%; transform: translateX(-50%); width: 100vw; background: var(--bg);
  }

  
  main.cf-dark .rt-btn-primary,
  main.cf-dark .btn-primary,
  main.cf-dark .btn-primary-lg,
  main.cf-dark .os-cta-btn.primary,
  main.cf-dark .pricing-cta-btn.primary {
    background: var(--btn-bg); border-color: var(--btn-bg);
    color: var(--btn-ink); box-shadow: none;
  }
  main.cf-dark .rt-btn-primary:hover,
  main.cf-dark .btn-primary:hover,
  main.cf-dark .btn-primary-lg:hover,
  main.cf-dark .os-cta-btn.primary:hover,
  main.cf-dark .pricing-cta-btn.primary:hover {
    background: var(--btn-bg-hover); border-color: var(--btn-bg-hover); color: var(--btn-ink);
  }

  
  main.cf-dark ~ footer {
    position: relative; background: var(--ground);
    --bg: var(--ground); --bg-alt: var(--panel); --paper: var(--panel); --white: var(--ramp-11);
    --ink: var(--ramp-10); --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: var(--yellow);
    color: var(--text);
  }

  
  
  main.cf-dark .cp-cta,
  main.cf-dark .integ-cta-link,
  main.cf-dark .community-cta,
  main.cf-dark .product-cta-btn {
    background: var(--btn-bg); border-color: var(--btn-bg); color: var(--btn-ink);
  }
  main.cf-dark .cp-cta:hover,
  main.cf-dark .integ-cta-link:hover,
  main.cf-dark .community-cta:hover,
  main.cf-dark .product-cta-btn:hover {
    background: var(--btn-bg-hover); border-color: var(--btn-bg-hover); color: var(--btn-ink);
  }
  
  
  main.cf-dark [style*="background:var(--white)"],
  .cf-zone [style*="background:var(--white)"] { background: var(--bg-alt) !important; }

  
  
  main#main-content { position: relative; isolation: isolate; background: var(--ground);
    color: var(--text); flex: 1 0 auto; }
  
  main#main-content::after {
    content: ""; position: absolute; z-index: -1; pointer-events: none;
    top: 0; bottom: 0; left: 50%; transform: translateX(-50%);
    width: min(calc(100% - var(--frame-inset) * 2), var(--frame-max));
    border-left: 1px solid var(--hud-hair);
    border-right: 1px solid var(--hud-hair);
  }
  @media (max-width: 760px) {
    body { --frame-inset: 0px; --frame-pad: var(--gutter); }
    main#main-content::after { display: none; }
  }
  
  nav {
    top: var(--banner-h, 0px);
    left: 0; right: 0; margin: 0; max-width: none;
    background: var(--ramp-1); backdrop-filter: none;
    border: 0; border-bottom: 1px solid rgba(var(--ink-rgb), 0.16);
    border-radius: 0; box-shadow: none;
    transition: background 0.3s ease, border-color 0.3s ease, top 0.28s ease;
  }

  
  :root { --banner-h: 44px; }
  body { padding-top: var(--banner-h); }
  .announce-bar {
    position: absolute; top: 0; left: 0; right: 0; z-index: 101;
    display: flex; align-items: center; justify-content: center;
    flex-wrap: wrap; gap: 6px 12px;
    
    padding: 9px calc(var(--gutter) + 30px);
    background: var(--yellow); color: var(--ink-deep);
    font-family: var(--mono); font-size: 12px; line-height: 1.5;
    letter-spacing: 0.02em; text-align: center;
  }
  .announce-bar .announce-msg { color: inherit; text-decoration: none; font-weight: 400; }
  .announce-bar .announce-msg strong { font-weight: 700; }
  .announce-arrow { display: inline-block; font-weight: 700; transition: transform 0.2s ease; }
  .announce-msg:hover .announce-arrow { transform: translateX(3px); }
  .announce-close {
    position: absolute; top: 50%; right: max(8px, calc(var(--gutter) - 10px));
    transform: translateY(-50%);
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; padding: 0;
    background: transparent; border: 0; border-radius: 6px;
    color: var(--accent-ink); cursor: pointer; transition: background 0.15s;
  }
  .announce-close:hover { background: rgba(var(--ink-rgb), 0.14); }
  .announce-close svg { width: 14px; height: 14px; }
  @media (max-width: 520px) {
    .announce-bar { font-size: 10px; padding: 8px 40px; gap: 4px 8px; }
  }
  
  html.kg-banner-gone nav { top: 0; }
  html.kg-banner-gone .nav-mega .nav-dropdown { top: 66px; }
  html.kg-banner-gone .nav-mobile-menu { top: 74px; }
  @media (prefers-reduced-motion: reduce) { nav { transition: none; } }
  
  svg text { font-family: var(--mono); }
  .nav-mobile-menu { top: calc(var(--banner-h, 0px) + 74px); }

  
  .nav-links, .nav-login { transition: opacity 0.25s ease, visibility 0.25s ease; }
  nav.is-condensed { background: transparent; border-bottom-color: transparent; }
  nav.is-condensed .nav-links,
  nav.is-condensed .nav-login { opacity: 0; visibility: hidden; pointer-events: none; }
  
  nav.is-condensed .nav-logo { color: var(--ink); }
  
  .nav-logo { transition: color 0.25s ease; }
  nav .btn-primary { transition: background 0.25s ease, color 0.25s ease,
    border-color 0.25s ease; }
  nav.is-condensed.is-over-hero .nav-logo { color: #FFFFFF; }
  nav.is-condensed.is-over-hero .btn-primary { background: #FFFFFF;
    color: var(--ink-deep); border-color: #FFFFFF; }
  
  .nav-inner { justify-content: flex-start; gap: 32px; padding: 0; max-width: none;
    height: 66px;
    width: min(calc(100% - var(--gutter) * 2), calc(var(--frame-max) + 160px)); }
  .nav-right { margin-left: auto; }
  
  @media (min-width: 1321px) {
    .nav-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
    .nav-left { justify-self: start; }
    .nav-links { justify-self: center; }
    .nav-right { justify-self: end; }
  }
  
  .nav-links, .nav-dropdown-trigger, .nav-login {
    text-transform: none; letter-spacing: 0.01em;
    font-size: 14.5px; font-weight: 600;
  }
  
  .nav-links { gap: 4px; }
  .nav-logo { color: var(--light); font-size: 23px; }
  
  nav .btn-primary { font-size: 13.5px; padding: 10px 17px; white-space: nowrap; }
  .nav-links, .nav-login, .nav-dropdown-trigger { color: rgba(var(--ink-rgb), 0.72); }
  .nav-links a:hover, .nav-links a.active,
  .nav-login:hover,
  .nav-dropdown-trigger:hover, .nav-dropdown-trigger.active { color: var(--light); }
  .nav-links a:hover, .nav-links a.active, .nav-login:hover {
    text-decoration-color: var(--yellow); text-decoration-thickness: 3px;
  }
  
  nav .btn-primary, .btn-primary { background: var(--yellow); color: var(--ink-deep);
    border: 1px solid var(--yellow); font-family: var(--sans); box-shadow: none; }
  nav .btn-primary:hover, .btn-primary:hover { background: var(--ink-deep);
    color: #FFFFFF; border-color: var(--ink-deep); transform: none; box-shadow: none; }
  
  .nav-dropdown { background: var(--panel); border: 1px solid rgba(var(--ink-rgb), 0.13);
    box-shadow: none; }
  .nav-dropdown > a { background: transparent; color: rgba(var(--ink-rgb), 0.72); }
  .nav-dropdown > a:hover { background: rgba(var(--ink-rgb), 0.07); color: var(--light); }
  
  .nav-mega .nav-dropdown {
    position: fixed;
    top: calc(var(--banner-h, 0px) + 66px);
    left: 50%; right: auto;
    width: min(calc(100vw - var(--gutter) * 2), calc(var(--frame-max) + 160px));
    transform: translate(-50%, -6px);
    display: block;
    grid-template-areas: none;
    gap: 0; padding: 0; margin: 0; min-width: 0;
    background: var(--panel);
    border: 1px solid var(--hud-line); border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 20px 44px rgba(var(--ink-rgb), 0.11);
  }
  
  .nav-mega.nav-dropdown-wrap:hover .nav-dropdown,
  .nav-mega.nav-dropdown-wrap:focus-within .nav-dropdown { transform: translate(-50%, 0); }
  
  .nav-mega .nav-dropdown::before { content: none; }
  .nav-mega::after { content: ""; position: absolute;
    left: -22px; right: -22px; top: 100%; height: 26px; }

  
  .nav-links .nav-dropdown-trigger { padding: 7px 9px; border-radius: 8px;
    border: 1px solid transparent; background: transparent;
    transition: background 0.16s, border-color 0.16s, color 0.16s; }
  .nav-mega:hover > .nav-dropdown-trigger,
  .nav-mega:focus-within > .nav-dropdown-trigger {
    background: var(--ground); border-color: var(--hud-hair); color: var(--ink); }
  
  .nav-links > a { padding: 7px 9px; border-radius: 8px;
    border: 1px solid transparent;
    transition: background 0.16s, border-color 0.16s, color 0.16s; }
  .nav-links > a:hover, .nav-links > a.active {
    background: var(--ground); border-color: var(--hud-hair); color: var(--ink);
    text-decoration: none; }
  .nav-mega .nav-dropdown a:hover { text-decoration: none; }
  
  .nav-chev { width: 15px; height: 15px; margin-left: 2px; margin-right: -3px;
    opacity: 0.42; transition: opacity 0.16s; }
  .nav-dropdown-wrap:hover .nav-dropdown-trigger .nav-chev { transform: none; }
  .nav-mega:hover .nav-chev, .nav-mega:focus-within .nav-chev { opacity: 0.9; }

  .mega-cols { display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.2fr); }
  .nav-mega .mega-col { padding: 24px 24px 28px;
    border-left: 1px solid var(--hud-hair); }
  .nav-mega .mega-col:first-child { border-left: 0; }
  
  .nav-mega .mega-col-label { font-family: var(--mono); font-size: 10.5px;
    font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase;
    color: var(--text-tri); margin: 0 -24px 16px; padding: 0 24px 15px;
    border-bottom: 1px solid var(--hud-hair); }

  .nav-mega .mega-item { display: flex; align-items: flex-start; gap: 12px;
    padding: 9px 10px; margin: 0 -10px 1px; border-radius: 8px;
    background: transparent; text-decoration: none; transition: background 0.15s; }
  .nav-mega .mega-item:hover { background: var(--mint); }
  .nav-mega .mega-item > svg { width: 18px; height: 18px; flex: none;
    margin-top: 1px; stroke-width: 1.7; color: var(--ink); }
  .nav-mega .mega-item-name { display: block; font-size: 14.5px;
    font-weight: 600; color: var(--ink); letter-spacing: -0.005em; }
  .nav-mega .mega-item-desc { display: block; font-size: 12px;
    line-height: 1.45; color: var(--text-tri); margin-top: 2px; }

  .nav-mega .mega-highlights { background: var(--ground); }
  .nav-mega .mega-card { display: block; padding: 14px 15px 15px;
    border: 1px solid var(--hud-hair); border-radius: 10px; background: var(--panel);
    text-decoration: none; margin-bottom: 10px; transition: border-color 0.15s; }
  .nav-mega .mega-card:last-child { margin-bottom: 0; }
  .nav-mega .mega-card:hover { border-color: var(--accent-ink); }
  .nav-mega .mega-card-accent { background: var(--mint);
    border-color: var(--orange); }
  .nav-mega .mega-card > svg { display: block; width: 18px; height: 18px;
    stroke-width: 1.7; color: var(--ink); margin-bottom: 9px; }
  .nav-mega .mega-card-accent > svg { color: var(--accent-ink); }
  .nav-mega .mega-card strong { display: block; font-size: 14.5px;
    font-weight: 600; color: var(--ink); letter-spacing: -0.005em; margin-bottom: 3px; }
  .nav-mega .mega-card span { display: block; font-size: 12px;
    line-height: 1.5; color: var(--text-tri); }
  .nav-mega .mega-card-accent span { color: rgba(var(--ink-rgb), 0.72); }

  
  .mega-foot { display: flex; align-items: center; justify-content: space-between;
    gap: 20px; flex-wrap: wrap; padding: 14px 24px;
    border-top: 1px solid var(--hud-hair); background: var(--ground); }
  .mega-foot-cta { font-size: 13.5px; font-weight: 600; color: var(--ink);
    text-decoration: none; }
  .mega-foot-cta:hover { text-decoration: underline;
    text-decoration-color: var(--yellow); text-decoration-thickness: 3px;
    text-underline-offset: 3px; }
  .mega-foot-links { display: flex; gap: 22px; flex-wrap: wrap; }
  .mega-foot-links a { font-size: 12.5px; color: var(--text-tri);
    text-decoration: none; transition: color 0.15s; }
  .mega-foot-links a:hover { color: var(--ink); }

  
  @media (max-width: 1040px) {
    .mega-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nav-mega .mega-col:nth-child(odd) { border-left: 0; }
    .nav-mega .mega-col:nth-child(n+3) { border-top: 1px solid var(--hud-hair); }
    .nav-mega .mega-highlights { grid-column: 1 / -1; border-left: 0;
      display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
    .nav-mega .mega-highlights .mega-col-label { grid-column: 1 / -1; }
    .nav-mega .mega-highlights .mega-card { margin-bottom: 0; }
  }
  .nav-hamburger span { background: var(--light); }
  .nav-mobile-menu { background: var(--panel); border: 1px solid rgba(var(--ink-rgb), 0.13);
    box-shadow: none; }
  .nav-mobile-menu a { color: rgba(var(--ink-rgb), 0.72); border-bottom-color: rgba(var(--ink-rgb), 0.09); }
  .nav-mobile-menu a:hover { color: var(--light); }
  .nav-mobile-section-label { color: rgba(var(--ink-rgb), 0.56); }
  .mobile-nav-cta { background: var(--yellow); color: var(--ink-deep) !important;
    border: 1px solid var(--yellow); box-shadow: none;
    
    border-bottom: 1px solid var(--yellow) !important; }

  
  nav .nav-logo, nav .nav-links, nav .nav-links a, nav .nav-dropdown-trigger,
  nav .nav-login, nav .btn-primary, nav .mega-col-label, nav .mega-item-name,
  nav .mega-item-desc, nav .mega-card strong, nav .mega-card span,
  .nav-mobile-menu a, .nav-mobile-section-label, .mobile-nav-cta {
    font-family: var(--sans);
  }
  
  .nav-dropdown-wrap:focus-within .nav-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
  .nav-dropdown-wrap:focus-within .nav-dropdown-trigger { color: var(--light); }

  
  
  
  body > footer {
    --bg: var(--panel); --bg-alt: var(--ground); --white: var(--ramp-1);
    --paper: var(--panel); --ink: var(--ramp-10);
    --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --light: var(--ramp-10);
    --border: var(--hud-line); --border-lt: var(--hud-hair);
    --accent: var(--yellow);
    background: var(--panel); color: var(--text);
  }
  footer::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
    background: var(--hud-hair); }
  footer .nav-logo { color: var(--light); }
  .footer-logo { color: var(--light); font-size: 34px; letter-spacing: -0.025em; }
  .footer-col-title { color: rgba(var(--ink-rgb), 0.56); }
  
  .footer-brand p { color: var(--text-tri); font-size: 15px;
    line-height: 1.5; max-width: 260px; margin-top: 12px; }
  .footer-link { color: var(--text-sec); }
  .footer-link:hover { color: var(--light); text-decoration-color: var(--yellow);
    text-decoration-thickness: 3px; }
  .footer-bottom { border-top: 1px solid var(--hud-hair); color: var(--text-tri); }
  .footer-socials a { color: var(--text-tri); }
  .footer-socials a:hover { color: var(--light); }
  .footer-link-platform { border-top: 1px solid var(--hud-hair); }
  
  body > footer, body > footer .footer-logo, body > footer .footer-brand p,
  body > footer .footer-col-title, body > footer .footer-link,
  body > footer .footer-bottom, body > footer .footer-bottom *,
  body > footer .footer-link-platform, body > footer .nav-logo {
    font-family: var(--sans);
  }
  .footer-link-platform:hover { color: var(--light); }

  
  
  
  .p2-outro-spacer { height: clamp(96px, 25vw, 340px); }
  .p2-outro { position: fixed; left: 0; right: 0; bottom: 0; z-index: 0;
    display: flex; align-items: flex-end; justify-content: center;
    overflow: hidden; background: var(--panel); height: clamp(96px, 25vw, 340px);
    --mark-ink-top: 14%; }
  main#main-content { z-index: 1; }
  body > footer { position: relative; z-index: 1; }
  
  .p2-outro-ink { position: absolute; inset: 0;
    background: linear-gradient(180deg,
      rgba(208, 81, 33, 0) 0%, rgba(208, 81, 33, 0) var(--mark-ink-top, 38%),
      #D05121 100%); }
  
  
  .p2-outro-mark { position: relative; z-index: 1; color: #FFFFFF;
    font-family: var(--sans); font-weight: 700;
    
    font-size: min(22.9vw, 311px);
    letter-spacing: -0.05em; line-height: 1; white-space: nowrap;
    margin-bottom: 0.017em; user-select: none; }
  
</style>
<style id="kg-a11y">
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
.kg-skip-link{position:absolute;left:-9999px;top:0;z-index:2147483647;display:inline-block;padding:10px 16px;background:#FFFFFF;color:#1A1A1A;font:600 14px/1.2 var(--sans,-apple-system,system-ui,sans-serif);text-decoration:none;border-radius:0 0 8px 0}
.kg-skip-link:focus{left:0}
#main-content:focus{outline:none}
</style>
<style id="kg-community-program">
  
  .cp-page { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }

  
  .cp-hero { padding: 150px 0 56px; position: relative; }
  .cp-eyebrow { font-family: var(--mono); font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; color: var(--text-sec); margin-bottom: 26px; display: flex; align-items: center; gap: 12px; }
  .cp-eyebrow::before { content: none; }
  .cp-hero h1 { font-family: var(--sans); font-size: clamp(34px, 4.6vw, 62px); font-weight: 700; letter-spacing: -0.03em; line-height: 1.02; margin: 0 0 26px; color: var(--text); max-width: 1050px; }
  .cp-hero h1 em { font-style: normal; color: var(--text-tri); }
  .cp-hero-kana { position: absolute; top: 156px; right: 0; height: 260px; }
  @media (max-width: 900px) { .cp-hero-kana { display: none; } }
  
  .cp-hero-kana { display: none; }
  .cp-hero-sub { font-size: 17px !important; line-height: 1.65 !important; color: var(--text-sec) !important; max-width: 640px; margin: 0 0 30px !important; }
  .cp-hero-check { margin: 0 0 34px; }
  .cp-hero-cta { margin: 0 !important; }

  
  a.cp-cta { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 13px 24px; border: 1px solid var(--hud-line); border-radius: var(--radius-sm); font-family: var(--sans); font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; line-height: 1; background: var(--ink); color: var(--white); box-shadow: none; text-decoration: none; transition: transform 0.15s, box-shadow 0.15s, background 0.15s, color 0.15s; }
  a.cp-cta:hover { background: var(--ink); color: var(--white); transform: none; box-shadow: none; }

  
  .cp-page p { font-size: 16px; line-height: 1.7; color: var(--text-sec); margin: 0 0 16px; }
  .cp-page strong { color: var(--text); font-weight: 700; }
  .cp-page a:not(.cp-cta) { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
  .cp-page a:not(.cp-cta):hover { text-decoration-color: currentColor; }

  
  .cp-blurb-sec { padding: 48px 0 64px; }
  .cp-page .cp-blurb { font-size: clamp(26px, 3.6vw, 44px); font-weight: 700; line-height: 1.16; letter-spacing: -0.02em; margin: 0; max-width: 1200px; color: var(--text); }
  .cp-blurb-bright { color: var(--text); }
  .cp-blurb-dim { color: var(--text-tri); }
  @media (max-width: 720px) {
    .cp-page .cp-blurb { font-size: clamp(22px, 5vw, 28px); }
    .cp-blurb-sec { padding: 32px 0 44px; }
  }

  
  .cp-sec { padding: 76px 0; margin: 0; border-top: 1px solid var(--hud-line); position: relative; }
  .sec-code { font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--text-sec); border-left: 0; padding-left: 0; margin-bottom: 18px; }
  .cp-sec h2 { font-family: var(--sans); font-size: clamp(30px, 4vw, 52px); font-weight: 700; letter-spacing: -0.025em; line-height: 1.06; color: var(--text); margin: 0 0 16px; }
  .cp-sec h2 em { font-style: normal; color: var(--text-tri); }

  
  .band-white { position: relative; isolation: isolate; }
  .band-white::before {
    content: ""; position: absolute; inset: 0; z-index: -1;
    left: 50%; transform: translateX(-50%); width: 100vw;
    background: var(--paper);
    border-top: 1px solid var(--hud-line);
    border-bottom: 1px solid var(--hud-line);
  }
  .cp-sec.band-white { border-top: 0; }
  .band-white + .cp-sec { border-top: 0; }

  
  .band-dark { position: relative; isolation: isolate; color: var(--text);
    --bg: var(--ground); --bg-alt: var(--panel); --paper: var(--panel); --white: var(--ramp-11);
    --ink: var(--ramp-10); --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: var(--yellow); }
  
  .band-dark::before { content: ""; position: absolute; inset: 0; z-index: -1;
    left: 50%; transform: translateX(-50%); width: 100vw;
    background-color: var(--panel-2);
    background-image: none; }
  .cp-sec.band-dark { padding: 100px 0 108px; border-top: 0; }
  .band-dark + .cp-sec { border-top: 0; }
  
  .band-dark .sec-code { border-left: 0; }
  .band-dark h2 em { text-decoration: none; }

  
  .cp-split { display: grid; grid-template-columns: 1fr 1.3fr; gap: clamp(40px, 6vw, 96px); align-items: start; }
  .cp-split-left h2 { margin: 0; }
  .cp-split-lede { font-size: clamp(19px, 2vw, 24px) !important; line-height: 1.45 !important; color: var(--text) !important; font-weight: 500; margin: 4px 0 18px !important; }
  .cp-split-sub { font-size: 14.5px !important; line-height: 1.65 !important; color: var(--text-tri) !important; margin: 0 !important; }
  .cp-split-right .cp-tracks { margin: 0 0 8px; }
  @media (max-width: 860px) { .cp-split { grid-template-columns: 1fr; gap: 24px; } }

  
  .cp-tracks { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 32px 0 20px; }
  .cp-track { position: relative; overflow: hidden; background: var(--paper); border: 1px solid var(--hud-line); border-radius: var(--radius-sm); padding: 30px 26px 24px; transition: border-color 0.15s; }
  .cp-track::before { content: none; }
  
  .cp-track:hover { border-color: rgba(var(--ink-rgb), 0.42); }
  .cp-track-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; font-weight: 700; color: var(--accent-text); margin-bottom: 14px; }
  .cp-track h3 { font-family: var(--sans); font-size: 18px; font-weight: 700; letter-spacing: -0.01em; color: var(--text); line-height: 1.3; margin: 0 0 6px; }
  .cp-track-sub { font-size: 14px !important; color: var(--text-sec); margin: 0 0 16px !important; }
  .cp-track-benefit { font-size: 14px !important; line-height: 1.55; color: var(--text-sec); margin: 0 !important; padding-top: 14px; border-top: 1px solid var(--border-lt); }
  .cp-track-benefit strong { color: var(--accent-text); font-weight: 700; }
  .cp-wq-note { font-size: 14px !important; line-height: 1.65 !important; color: var(--text-tri) !important; margin: 24px 0 0 !important; }

  
  .cp-list { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 36px; }
  .cp-item { background: var(--paper); border: 1px solid var(--hud-line); border-radius: var(--radius-sm); padding: 20px; }
  .cp-item h3 { font-family: var(--sans); font-size: 15px; font-weight: 700; letter-spacing: -0.01em; color: var(--text); line-height: 1.3; margin: 0 0 8px; }
  .cp-item p { font-size: 13.5px !important; line-height: 1.55; margin: 0 !important; }

  
  .cp-faq { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; align-items: start; margin-top: 36px; }
  .cp-faq-col { display: grid; gap: 12px; min-width: 0; align-content: start; }
  @media (max-width: 760px) { .cp-faq { grid-template-columns: 1fr; gap: 12px; } }
  .cp-faq details { background: var(--paper); border: 1px solid var(--hud-line); border-radius: var(--radius-sm); overflow: hidden; transition: border-color 0.15s; }
  .cp-faq details[open] { border-color: rgba(var(--ink-rgb), 0.42); }
  .cp-faq summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 15px 18px; font-size: 15px; font-weight: 700; color: var(--text); letter-spacing: -0.005em; }
  .cp-faq summary::-webkit-details-marker { display: none; }
  .cp-faq summary::after { content: ""; flex-shrink: 0; width: 9px; height: 9px; margin-top: -2px; border-right: 1px solid var(--hud-line); border-bottom: 1px solid var(--hud-line); transform: rotate(45deg); transition: transform 0.2s; }
  .cp-faq details[open] > summary::after { transform: rotate(-135deg); }
  .cp-faq .cp-faq-a { padding: 0 18px 16px; }
  .cp-faq .cp-faq-a p { font-size: 14px !important; line-height: 1.6 !important; margin: 0 !important; }

  
  .cp-cta-final { text-align: left; padding: 88px 0 96px; }
  .cp-cta-final h2 { margin-bottom: 18px; }
  .cp-cta-final .cp-split-lede { max-width: 620px; margin: 0 0 30px !important; }
  .cp-cta-spec { position: absolute; right: 0; top: 96px; text-align: right; }
  .cp-cta-spec .rt-barcode { margin-left: auto; }
  @media (max-width: 900px) { .cp-cta-spec { display: none; } }

  
  @media (max-width: 700px) {
    .cp-tracks, .cp-list { grid-template-columns: 1fr; }
  }
  @media (max-width: 640px) {
    .cp-hero { padding: 110px 0 40px; }
    .cp-sec { padding: 48px 0; }
    .cp-sec.band-dark { padding: 72px 0 80px; }
    .cp-track { padding: 26px 18px 20px; }
    .cp-cta-final { padding: 56px 0 72px; }
  }
  
  
  .cp-page { max-width: none; margin: 0; padding: 0; }
  .cp-page p { font-size: 16px; line-height: 1.6; }

  
  .p2-hero { position: relative; display: flex; align-items: center;
    justify-content: center; min-height: min(60vh, 560px);
    padding: 84px var(--gutter) 26px; text-align: center;
    background: var(--ground); overflow: hidden; }
  .p2-hero-plate { position: absolute; inset: 84px var(--gutter) 26px; z-index: 0;
    border-radius: 26px; overflow: hidden; pointer-events: none; }
  .p2-hero-inner { position: relative; z-index: 1; box-sizing: border-box;
    display: flex; flex-direction: column; align-items: center;
    padding: 64px 24px 68px; }
  .p2-hero .p2-badge { margin: 0 0 24px; }
  .p2-hero h1 { font-family: var(--sans); font-size: clamp(34px, 5vw, 62px);
    font-weight: 700; letter-spacing: -0.03em; line-height: 1.06;
    margin: 0 0 22px; max-width: 20ch; color: var(--text); }
  .p2-hero h1 em { font-style: normal; color: var(--text-tri); }
  .p2-hero-sub { font-size: 18px; line-height: 1.6; color: var(--text-sec);
    max-width: 620px; margin: 0 0 28px; }
  .cp-hero-chips { list-style: none; display: flex; flex-wrap: wrap;
    justify-content: center; gap: 8px; margin: 0 0 34px; padding: 0; }
  .cp-hero-chips li { padding: 6px 12px; border: 1px solid var(--hud-line);
    border-radius: 999px; font-family: var(--mono); font-size: 11px;
    font-weight: 600; letter-spacing: 0.14em; line-height: 1.2;
    text-transform: uppercase; color: var(--text); }
  .p2-cta-row { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
  .p2-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0;
    height: 1px; background: var(--hud-hair); }

  
  .cp-page .p2-section { padding: 104px 0; }
  .cp-page .p2-head + .p2-cells { margin-top: 48px; }
  .cp-page .p2-sub { font-size: 17px; line-height: 1.6; color: var(--text-sec); margin: 0; }
  .cp-page .p2-sub strong { color: var(--text); font-weight: 600; }

  
  .cp-page .cp-blurb-sec { padding: 72px 0 0; }
  .cp-page .cp-blurb { font-family: var(--sans); font-size: clamp(24px, 3vw, 38px);
    font-weight: 700; line-height: 1.2; letter-spacing: -0.025em;
    max-width: 1040px; margin: 0; color: var(--text); }

  
  .p2-cells { position: relative; display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--hud-hair); border-left: 1px solid var(--hud-hair); }
  .p2-cell { position: relative; padding: 30px 30px 36px;
    border-right: 1px solid var(--hud-hair); border-bottom: 1px solid var(--hud-hair); }
  .p2-cell::before, .p2-cell::after { content: ""; position: absolute;
    width: 11px; height: 11px; pointer-events: none; background:
      linear-gradient(var(--hud-mark), var(--hud-mark)) 0 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) 4px 0 / 2px 11px no-repeat; }
  .p2-cell::before { top: -6px; left: -6px; }
  .p2-cell::after { top: -6px; right: -6px; display: none; }
  .p2-cells-2 .p2-cell:nth-child(2n)::after { display: block; }
  .p2-cells::after { content: ""; position: absolute; left: -6px; right: -6px;
    bottom: -6px; height: 11px; pointer-events: none; background:
      linear-gradient(var(--hud-mark), var(--hud-mark)) left 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) left 4px top 0 / 2px 11px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) 50% 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) 50% 0 / 2px 11px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) right 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) right 4px top 0 / 2px 11px no-repeat; }
  .p2-cell h3 { font-family: var(--sans); font-size: 16px; font-weight: 700;
    letter-spacing: -0.01em; line-height: 1.35; margin: 0 0 9px; color: var(--light); }
  .cp-page .p2-cell p { font-size: 14px; line-height: 1.6; color: var(--text-sec); margin: 0; }
  .cp-page .cp-track-label { font-family: var(--mono); font-size: 11px; font-weight: 600;
    letter-spacing: 0.24em; text-transform: uppercase; color: var(--text-tri);
    margin: 0 0 18px; }
  .cp-page .cp-track-sub { margin: 0 0 16px !important; }
  .cp-page .cp-track-benefit { border-top: 1px solid var(--hud-hair); padding-top: 14px; }
  .cp-page .cp-track-benefit strong { color: var(--accent-text); font-weight: 700; }
  .cp-page .cp-wq-note { margin: 28px 0 0 !important; }

  
  .cp-page .cp-split-left h2 { margin: 0; }
  .cp-page .cp-split-right { padding-top: 27px; }
  .cp-page .cp-split .p2-sub { margin: 0 0 16px; }
  .cp-page .cp-split-sub { font-size: 14px !important; line-height: 1.6 !important; }

  
  .cp-page .cp-faq { gap: 0 12px; margin-top: 48px; }
  .cp-page .cp-faq-col { gap: 12px; }
  .cp-page .cp-faq details { border: 1px solid var(--hud-hair); border-radius: 10px;
    background: var(--panel); box-shadow: none; }
  .cp-page .cp-faq details[open] { border-color: var(--hud-line); }
  .cp-page .cp-faq summary { padding: 18px 22px; font-family: var(--sans);
    font-size: 15px; font-weight: 700; letter-spacing: -0.01em; color: var(--text); }
  .cp-page .cp-faq summary::after { width: 11px; height: 11px; margin-top: 0;
    border: 0; transform: none; transition: none; background:
      linear-gradient(var(--text-tri), var(--text-tri)) center / 11px 2px no-repeat,
      linear-gradient(var(--text-tri), var(--text-tri)) center / 2px 11px no-repeat; }
  .cp-page .cp-faq details[open] > summary::after { transform: none; background:
      linear-gradient(var(--text-tri), var(--text-tri)) center / 11px 2px no-repeat; }
  .cp-page .cp-faq .cp-faq-a { padding: 0 22px 20px; }

  
  .p2-final { padding: 0 0 26px; }
  .p2-final > .p2-wrap { width: 100%; max-width: none; margin: 0; }
  .p2-plate { position: relative; overflow: hidden; border-radius: 26px;
    margin: 0 var(--gutter); padding: 92px var(--gutter) 96px; text-align: center; }
  .p2-plate > * { position: relative; z-index: 1; }
  .p2-plate h2 { font-family: var(--sans); font-size: clamp(30px, 4.2vw, 52px);
    font-weight: 700; letter-spacing: -0.03em; line-height: 1.05; margin: 0 0 18px; }
  
  #main-content .p2-plate h2 em { color: inherit; }
  .p2-plate p { font-size: 17px; line-height: 1.55; margin: 0 auto 32px; max-width: 560px; }

  @media (max-width: 860px) {
    .cp-page .cp-split-right { padding-top: 0; }
  }
  @media (max-width: 720px) {
    .p2-cells, .p2-cells-2 { grid-template-columns: minmax(0, 1fr); }
    .p2-cells-2 .p2-cell::after { display: block; }
    .p2-cells::after { background:
      linear-gradient(var(--hud-mark), var(--hud-mark)) left 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) left 4px top 0 / 2px 11px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) right 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) right 4px top 0 / 2px 11px no-repeat; }
  }
  @media (max-width: 700px) {
    .cp-page .p2-section { padding: 76px 0; }
    .cp-page .cp-blurb-sec { padding: 56px 0 0; }
    .cp-page .cp-blurb { font-size: 22px; }
    .p2-hero { min-height: auto; padding: 76px var(--gutter) 18px; }
    .p2-hero-plate { inset: 76px var(--gutter) 18px; border-radius: 20px; }
    .p2-hero-inner { padding: 52px 16px 56px; }
    .p2-cell { padding: 26px 22px 30px; }
    .p2-final { padding-bottom: 18px; }
    .p2-plate { padding: 64px var(--gutter) 68px; border-radius: 20px; }
  }
  
  @media (max-width: 1300px) { main.cf-dark::after { display: block; } }
  
  .cp-page a:not(.cp-cta):not(.p2-btn) { color: var(--light); text-decoration: underline;
    text-decoration-color: rgba(var(--ink-rgb), 0.5); text-decoration-thickness: 1px;
    text-underline-offset: 3px; }
  .cp-page a:not(.cp-cta):not(.p2-btn):hover { text-decoration-color: currentColor; }
  
  .cp-page .cp-blurb { text-align: center; margin-left: auto; margin-right: auto; }
  .cp-page .p2-head { text-align: center; margin-left: auto; margin-right: auto; }
  .cp-page .p2-head > * { margin-left: auto; margin-right: auto; }
  .cp-page .p2-cell { text-align: center; }
  .cp-page .cp-wq-note { text-align: center; margin-left: auto; margin-right: auto; }
  .cp-page .cp-split { display: block; text-align: center; }
  .cp-page .cp-split > * { max-width: 760px; margin-left: auto; margin-right: auto; }
  .cp-page .cp-split-right { margin-top: 20px; }
  .cp-page .cp-split-right > * { margin-left: auto; margin-right: auto; }
  
  .cp-page .p2-section { padding: 80px 0 0; }
  .cp-page .p2-section:last-child { padding-bottom: 80px; }
  .cp-page .p2-eyebrow { display: none; }
  .cp-page .p2-cells-title { position: relative; margin: 0; padding: 18px 24px;
    font-family: var(--sans); font-size: 20px; font-weight: 700; letter-spacing: -0.015em;
    line-height: 1.2; color: var(--light); text-align: center;
    border: 1px solid var(--hud-hair); border-bottom: 0; }
  .cp-page .p2-cells-title::before, .cp-page .p2-cells-title::after { content: "";
    position: absolute; top: -6px; width: 11px; height: 11px; pointer-events: none; background:
      linear-gradient(var(--hud-mark), var(--hud-mark)) 0 4px / 11px 2px no-repeat,
      linear-gradient(var(--hud-mark), var(--hud-mark)) 4px 0 / 2px 11px no-repeat; }
  .cp-page .p2-cells-title::before { left: -6px; }
  .cp-page .p2-cells-title::after { right: -6px; }
  .cp-page .p2-cells-title + .p2-cells { margin-top: 0; }
  .cp-page .p2-cells > .cp-row-note { grid-column: 1 / -1; margin: 0; padding: 24px 32px;
    text-align: center; font-size: 15px; line-height: 1.6; color: var(--text-sec);
    border-right: 1px solid var(--hud-hair); border-bottom: 1px solid var(--hud-hair); }
  .cp-page .p2-cells > .cp-row-intro { font-size: 16px; padding: 28px 40px; }
  .cp-page .cp-cell-title { margin: 0 0 12px; font-family: var(--sans); font-size: 20px; font-weight: 700;
    letter-spacing: -0.015em; line-height: 1.25; color: var(--light); }
  .cp-page .cp-run .p2-cell { padding: 36px 36px 38px; }
  .cp-page .cp-run .p2-cell p { font-size: 15px; line-height: 1.6; color: var(--text-sec); }
  @media (max-width: 700px) {
    .cp-page .p2-section { padding-top: 64px; }
    .cp-page .p2-section:last-child { padding-bottom: 64px; } }
  
  .cp-page .p2-cell::before, .cp-page .p2-cell::after,
  .cp-page .p2-cells::after { content: none; }
  
  .cp-page .cp-run .p2-cell .cp-split-sub { margin: 12px 0 0 !important;
    font-size: 15px !important; line-height: 1.6 !important; color: var(--text-sec) !important; }
  
  .cp-page .cp-q-title { margin: 0 0 32px; font-family: var(--sans); font-size: 20px;
    font-weight: 700; letter-spacing: -0.015em; line-height: 1.2; color: var(--light);
    text-align: center; }
  .cp-page .cp-q { display: grid; grid-template-columns: repeat(2, minmax(0, 460px));
    justify-content: center; gap: 20px; padding: 0 40px; }
  .cp-page .cp-q-box { display: flex; flex-direction: column; padding: 32px 32px 30px;
    text-align: left; background: var(--panel); border: 0; border-radius: 18px; }
  .cp-page .cp-q-chip { display: grid; place-items: center; width: 40px; height: 40px;
    margin: 0 0 22px; border-radius: 11px; background: var(--btn2-bg);
    transition: background 0.2s ease; }
  .cp-page .cp-q-ic { width: 20px; height: 20px; fill: none; stroke: var(--light);
    stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; transition: stroke 0.2s ease; }
  .cp-page .cp-q-box:hover .cp-q-chip { background: #2A1C16; }
  .cp-page .cp-q-box:hover .cp-q-ic { stroke: var(--accent-text); }
  .cp-page .cp-q-head h3 { margin: 0 0 8px; font-family: var(--sans); font-size: 18px;
    font-weight: 700; letter-spacing: -0.015em; line-height: 1.3; color: var(--light); }
  .cp-page .cp-q-head p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--text-sec); }
  .cp-page .cp-q-benefit { margin-top: auto; padding-top: 22px; }
  .cp-page .cp-q-head + .cp-q-benefit { margin-top: 24px; border-top: 1px solid rgba(var(--ink-rgb), 0.1); }
  .cp-page .cp-q-benefit p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--text-sec); }
  .cp-page .cp-q-benefit .cp-q-free { margin: 0 0 6px; font-family: var(--sans); font-size: 21px;
    font-weight: 700; letter-spacing: -0.02em; line-height: 1.25; color: var(--light); }
  .cp-page .cp-q-note { max-width: 760px; margin: 28px auto 0; text-align: center;
    font-size: 15px; line-height: 1.6; color: var(--text-sec); }
  @media (max-width: 720px) {
    .cp-page .cp-q { grid-template-columns: minmax(0, 460px); gap: 16px; padding: 0 16px; }
    .cp-page .cp-q-box { padding: 26px 24px 24px; } }

  
  .sh-ag { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid var(--hud-hair); border-left: 1px solid var(--hud-hair); }
  .sh-ag > * { border-right: 1px solid var(--hud-hair); border-bottom: 1px solid var(--hud-hair); }
  .sh-ag-intro { grid-row: span 2; padding: 40px 36px; }
  .cp-page .sh-ag-intro .p2-h2 { margin: 0; font-size: clamp(22px, 2.3vw, 30px);
    letter-spacing: -0.02em; line-height: 1.12; }
  .cp-page .sh-ag-intro .p2-sub { margin-top: 16px; font-size: 15.5px; line-height: 1.6;
    color: var(--text-sec); }
  .sh-ag-card { display: flex; flex-direction: column; }
  .sh-ag-art { position: relative; overflow: hidden; height: 210px; padding: 0;
    border-bottom: 1px solid var(--hud-hair); box-sizing: border-box;
    background-color: var(--ramp-4);
    background-image: radial-gradient(circle, rgba(var(--ink-rgb), 0.05) 1px, transparent 1.4px);
    background-size: 18px 18px; background-position: center; }
  .sh-ag-art svg.cp-art { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
  .sh-ag-copy { padding: 26px 28px 32px; }
  .cp-page .sh-ag-copy h3 { margin: 0 0 8px; font-size: 16px; font-weight: 700;
    letter-spacing: -0.01em; color: var(--light); }
  .cp-page .sh-ag-copy p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--text-sec); }
  .cp-page .sh-ag-copy p + p { margin-top: 12px; }
  @media (max-width: 1000px) {
    .sh-ag { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sh-ag-intro { grid-column: 1 / -1; grid-row: auto; padding: 32px 28px; }
  }
  @media (max-width: 640px) {
    .sh-ag { grid-template-columns: minmax(0, 1fr); }
    .sh-ag-art { height: 180px; }
  }
  
  .cp-art text { font-family: var(--sans); }
  .cp-art .ca-win { fill: var(--ground); stroke: rgba(243, 243, 243, 0.28); stroke-width: 1; }
  .cp-art .ca-tile { fill: var(--ground); stroke: rgba(243, 243, 243, 0.3); stroke-width: 1;
    transition: stroke 0.25s ease; }
  .cp-art .ca-tile.is-dim { stroke: rgba(243, 243, 243, 0.18); }
  .cp-art .ca-rule { stroke: rgba(243, 243, 243, 0.08); stroke-width: 1; }
  .cp-art .ca-h { font-size: 12px; font-weight: 700; fill: rgba(243, 243, 243, 0.9); }
  .cp-art .ca-t { font-size: 10.5px; fill: rgba(243, 243, 243, 0.7); }
  .cp-art .ca-n { font-size: 10px; font-weight: 600; fill: rgba(243, 243, 243, 0.8); }
  .cp-art .ca-ch { font-family: var(--mono); font-size: 9.5px; fill: rgba(243, 243, 243, 0.75); }
  .cp-art .ca-k { font-family: var(--mono); font-size: 9px; letter-spacing: 0.04em; fill: rgba(243, 243, 243, 0.7); }
  .cp-art .ca-m { font-family: var(--mono); font-size: 7.5px; letter-spacing: 0.12em;
    fill: rgba(243, 243, 243, 0.45); transition: fill 0.25s ease; }
  .cp-art .ca-pill { fill: none; stroke: rgba(243, 243, 243, 0.3); transition: stroke 0.25s ease; }
  .cp-art .ca-ic { fill: none; stroke: rgba(243, 243, 243, 0.7); stroke-width: 1.5;
    stroke-linecap: round; stroke-linejoin: round; transition: stroke 0.25s ease; }
  .cp-art .ca-ic * { vector-effect: non-scaling-stroke; }
  .cp-art .ca-ic.is-dim { stroke: rgba(243, 243, 243, 0.3); }
  .cp-art .ca-logo { fill: rgba(243, 243, 243, 0.75); transition: fill 0.25s ease; }
  .cp-art .ca-link { fill: none; stroke: rgba(243, 243, 243, 0.3); stroke-width: 1.2;
    stroke-dasharray: 4 4; transition: stroke 0.25s ease; }
  .cp-art .ca-link.is-out { stroke: rgba(243, 243, 243, 0.2); }
  .cp-art .ca-trk { fill: rgba(243, 243, 243, 0.1); stroke: rgba(243, 243, 243, 0.35);
    transition: fill 0.3s ease, stroke 0.3s ease; transition-delay: calc(var(--i, 0) * 90ms); }
  
  .cp-art .ca-knob { fill: rgba(243, 243, 243, 0.75);
    transition: fill 0.3s ease, transform 0.35s cubic-bezier(0.3, 0.7, 0.4, 1);
    transition-delay: calc(var(--i, 0) * 90ms); }
  .cp-art .ca-zone { fill: rgba(243, 243, 243, 0.02); stroke: rgba(243, 243, 243, 0.35);
    stroke-width: 1.2; stroke-dasharray: 5 5; transition: stroke 0.25s ease; }
  .cp-art .ca-ok { fill: var(--ramp-4); stroke: rgba(243, 243, 243, 0.45);
    transition: fill 0.25s ease, stroke 0.25s ease; }
  .cp-art .ca-no { fill: var(--ramp-4); stroke: rgba(243, 243, 243, 0.55); stroke-width: 1.4;
    transition: stroke 0.25s ease; }
  .cp-art .ca-no-x { fill: none; stroke: rgba(243, 243, 243, 0.55); stroke-width: 1.4;
    stroke-linecap: round; transition: stroke 0.25s ease; }
  .cp-art .ca-coin { fill: var(--ramp-4); stroke: rgba(243, 243, 243, 0.5); stroke-width: 1.2;
    transition: fill 0.25s ease, stroke 0.25s ease; }
  .cp-art .ca-coin-t { font-size: 11px; font-weight: 700; fill: rgba(243, 243, 243, 0.8);
    transition: fill 0.25s ease; }
  .cp-art .ca-bar { fill: rgba(243, 243, 243, 0.14); }
  .cp-art .ca-av { fill: var(--btn2-bg); stroke: rgba(243, 243, 243, 0.3);
    transition: fill 0.25s ease, stroke 0.25s ease; }
  .cp-art .ca-av-t { font-size: 9px; font-weight: 700; fill: rgba(243, 243, 243, 0.8); }
  .cp-art .ca-dot { fill: rgba(243, 243, 243, 0.45); }
  .cp-get .sh-ag-card:hover .ca-trk { fill: var(--yellow); stroke: var(--yellow); }
  .cp-get .sh-ag-card:hover .ca-knob { fill: #FFFFFF; transform: translateX(14px); }
  .cp-get .sh-ag-card:hover :is(.ca-pill, .ca-zone, .ca-no, .ca-no-x, .ca-tile.ca-acc) { stroke: var(--yellow); }
  .cp-get .sh-ag-card:hover :is(.ca-ic.ca-acc, .ca-ok-ic) { stroke: var(--accent-text); }
  .cp-get .sh-ag-card:hover .ca-acc-t { fill: var(--accent-text); }
  .cp-get .sh-ag-card:hover .ca-ok { fill: #2A1C16; stroke: var(--yellow); }
  .cp-get .sh-ag-card:hover .ca-link.is-live { stroke: var(--yellow); animation: ca-march 0.8s linear infinite; }
  .cp-get .sh-ag-card:hover .ca-link.is-bill { stroke: var(--yellow); animation: ca-march 0.8s linear infinite reverse; }
  .cp-get .sh-ag-card:hover .ca-coin { fill: #2A1C16; stroke: var(--yellow); }
  .cp-get .sh-ag-card:hover .ca-coin-t { fill: var(--accent-text); }
  .cp-get .sh-ag-card:hover .ca-logo.ca-acc-f { fill: var(--accent-text); }
  .cp-get .sh-ag-card:hover .ca-av.ca-eng { fill: #2A1C16; stroke: var(--yellow); }
  .cp-get .sh-ag-card:hover .ca-dot { fill: var(--accent-text); animation: ca-bob 1s ease-in-out infinite;
    animation-delay: calc(var(--i, 0) * 0.15s); }
  @keyframes ca-march { to { stroke-dashoffset: -16; } }
  
  .cp-art :is(.ca-ok, .ca-ok-ic, .ca-no, .ca-no-x) { transform-box: fill-box; transform-origin: center; }
  .cp-get .sh-ag-card:hover .cp-art :is(.ca-ok, .ca-ok-ic) { animation: cp-pop 0.6s cubic-bezier(0.3, 1.6, 0.4, 1) calc(0.1s + var(--i, 0) * 0.08s) both; }
  .cp-get .sh-ag-card:hover .cp-art :is(.ca-no, .ca-no-x) { animation: cp-shake 0.55s ease-in-out 0.15s both; }
  @keyframes cp-pop { 0% { transform: scale(1); } 45% { transform: scale(1.3); } 100% { transform: scale(1); } }
  @keyframes cp-shake { 0%, 100% { transform: translateX(0); } 20% { transform: translateX(-3px); }
    40% { transform: translateX(3px); } 60% { transform: translateX(-2px); } 80% { transform: translateX(2px); } }
  @media (prefers-reduced-motion: reduce) {
    .cp-get .sh-ag-card:hover .cp-art :is(.ca-ok, .ca-ok-ic, .ca-no, .ca-no-x) { animation: none; } }

  @keyframes ca-bob { 0%, 60%, 100% { transform: translateY(0); } 30% { transform: translateY(-3px); } }
  
  .cp-page .cp-qf { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 64px;
    width: min(1040px, calc(100% - 80px)); max-width: none; margin: 0 auto; align-items: start; }
  .cp-page .cp-qf-head { text-align: center; max-width: none; margin: 0; }
  .cp-page .cp-qf .cp-q { grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 0; margin-top: 48px; }
  .cp-page .cp-qf .cp-q-note { max-width: none; margin-top: 24px; font-size: 14px; }
  .cp-page .cp-qf .cp-faq { max-width: none; }
  @media (max-width: 860px) {
    .cp-page .cp-qf { grid-template-columns: minmax(0, 1fr); gap: 80px 0; width: min(560px, calc(100% - 32px)); } }
  @media (max-width: 720px) { .cp-page .cp-qf .cp-q { padding: 0; } }

  
  @media (min-width: 761px) and (max-width: 1099px) {
    #main-content .cp-blurb-sec .cp-blurb { max-width: min(1000px, calc(100% - 64px)); } }
  
  @media (max-width: 700px) {
    .cp-page .cp-qf { width: 100%; gap: 64px 0; } }
  
  @media (max-width: 700px) {
    .p2-hero { padding-left: 0; padding-right: 0; }
    .p2-hero-inner { padding-left: 20px; padding-right: 20px; } }
  
  @media (hover: none) and (max-width: 1000px) {
    .cp-get .sh-ag-card.is-in .ca-trk { fill: var(--yellow); stroke: var(--yellow); }
    .cp-get .sh-ag-card.is-in .ca-knob { fill: #FFFFFF; transform: translateX(14px); }
    .cp-get .sh-ag-card.is-in :is(.ca-pill, .ca-zone, .ca-no, .ca-no-x, .ca-tile.ca-acc) { stroke: var(--yellow); }
    .cp-get .sh-ag-card.is-in :is(.ca-ic.ca-acc, .ca-ok-ic) { stroke: var(--accent-text); }
    .cp-get .sh-ag-card.is-in .ca-acc-t { fill: var(--accent-text); }
    .cp-get .sh-ag-card.is-in .ca-ok { fill: #2A1C16; stroke: var(--yellow); }
    .cp-get .sh-ag-card.is-in .ca-link.is-live { stroke: var(--yellow); animation: ca-march 0.8s linear infinite; }
    .cp-get .sh-ag-card.is-in .ca-link.is-bill { stroke: var(--yellow); animation: ca-march 0.8s linear infinite reverse; }
    .cp-get .sh-ag-card.is-in .ca-coin { fill: #2A1C16; stroke: var(--yellow); }
    .cp-get .sh-ag-card.is-in .ca-coin-t { fill: var(--accent-text); }
    .cp-get .sh-ag-card.is-in .ca-logo.ca-acc-f { fill: var(--accent-text); }
    .cp-get .sh-ag-card.is-in .ca-av.ca-eng { fill: #2A1C16; stroke: var(--yellow); }
    .cp-get .sh-ag-card.is-in .ca-dot { fill: var(--accent-text); animation: ca-bob 1s ease-in-out infinite;
      animation-delay: calc(var(--i, 0) * 0.15s); } }
  
</style>
<style id="kg-dark">
  
  
  :root {
    --ramp-1:  #0B100F;
    --ramp-2:  #0B100F;   
    --ramp-3:  #191E1D;
    --ramp-4:  #191E1D;
    --ramp-5:  #3A3F3E;
    --ramp-6:  #858886;   
    --ramp-7:  #959490;   
    --ramp-8:  #C4C5C6;
    --ramp-9:  #DEDDDD;
    --ramp-10: #F3F3F3;   
    --ramp-11: #FFFFFF;
    --panel:   #191E1D;
    --panel-2: #1C1F1E;
    --ink-rgb: 243, 243, 243;
    
    --yellow:      #D05121;   
    --yellow-lt:   #DDCBB6;   
    --mint:        #DDCBB6;
    --teal:        #DDCBB6;   
    --accent-text: #DC6A3F;   
    --ink-deep:    #0B100F;   
    --accent:      var(--yellow);
    --accent-ink:  var(--ink-deep);  
    
    --btn-bg: #F0EAE9; --btn-ink: #0B100F; --btn-bg-hover: #FFFFFF;
    --btn2-bg: #202526; --btn2-ink: #F3F3F3; --btn2-bg-hover: #2A2F30;
  }

  
  .announce-bar { background: var(--ramp-4); color: var(--ramp-10);
    --ink-rgb: 243, 243, 243; border-bottom: 1px solid rgba(243, 243, 243, 0.10); }
  .announce-bar .announce-msg strong { color: var(--accent-text); }

  
  nav .btn-primary, .btn-primary, .p2-btn-primary {
    background: var(--btn-bg); color: var(--btn-ink); border-color: var(--btn-bg); }
  
  nav .btn-primary:hover, nav .btn-primary:focus-visible,
  .btn-primary:hover, .btn-primary:focus-visible,
  .p2-btn-primary:hover, .p2-btn-primary:focus-visible,
  .p2-btn-ghost:hover, .p2-btn-ghost:focus-visible,
  .os-cta-btn:hover, .os-cta-btn:focus-visible,
  .ks-btn:hover, .ks-btn:focus-visible,
  .tier-cta:hover, .tier-cta:focus-visible,
  .kg-calc-cta:hover, .kg-calc-cta:focus-visible,
  .contact-cta:hover, .contact-cta:focus-visible {
    background: var(--yellow); color: #FFFFFF; border-color: var(--yellow); }
  .p2-btn-ghost { background: var(--btn2-bg); color: var(--btn2-ink); border-color: var(--btn2-bg); }

  

  
  nav .nav-login { padding: 7px 9px; border-radius: 8px; border: 1px solid transparent;
    text-decoration: none; transition: background 0.16s, border-color 0.16s, color 0.16s; }
  nav .nav-login:hover, nav .nav-login:focus-visible {
    background: var(--ramp-4); border-color: transparent; color: var(--light);
    text-decoration: none; }
  
  nav .nav-links > a:hover, nav .nav-links > a.active,
  nav .nav-mega:hover > .nav-dropdown-trigger,
  nav .nav-mega:focus-within > .nav-dropdown-trigger,
  nav .nav-links > a:focus-visible, nav .nav-dropdown-trigger:focus-visible {
    background: var(--ramp-4); border-color: transparent; }

  
  .footer-link:hover, .mega-foot-cta:hover, .p2-dir-item:hover strong {
    text-decoration-color: rgba(var(--ink-rgb), 0.5); text-decoration-thickness: 1px; }
  .footer-link:hover { color: var(--ramp-10); }

  
  .p2-flow-svg stop[stop-color^="rgba"] { stop-color: var(--hud-line); }
  .p2-flow-svg stop[stop-color="#D05121"] { stop-color: var(--yellow); }
  .p2-flow-link .p2-flow-dots .p2-dot-balls path { stroke: var(--ramp-11); }
  
  .p2-stack-item.is-lead { border-left-color: transparent; }
  .p2-code { border-color: var(--hud-hair); }
  
  .announce-close { color: var(--text-sec); }
  .announce-close:hover { color: var(--ramp-10); }
  .nav-mega .nav-dropdown { box-shadow: none; }
  .nav-mega .mega-card, .nav-mega .mega-card-accent { border-color: transparent; }
  .nav-mega .mega-card-accent > svg { color: var(--ink); }
  .nav-mega .mega-card:hover { border-color: transparent; background: var(--panel-2); }
  
  .mobile-nav-cta { background: var(--btn-bg); color: var(--btn-ink) !important;
    border: 1px solid var(--btn-bg); border-bottom: 1px solid var(--btn-bg) !important;
    border-radius: 999px; box-shadow: none; }
  .mobile-nav-cta:hover, .mobile-nav-cta:focus-visible { background: var(--yellow);
    color: #FFFFFF !important; border-color: var(--yellow);
    border-bottom-color: var(--yellow) !important; }
  
  a.kg-skip-link { background: var(--btn-bg); color: var(--btn-ink); }

  
  :is(#main-content, main) :is(em, i, cite, dfn, address, .rt-badge-main,
    .os-invariants-note, .os-juice-stat strong) { font-style: normal; }

  
  #company-dropdown .mega-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  
  #resources-dropdown .mega-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  
  @media (min-width: 1101px) {
    nav #resources-dropdown .nav-dropdown.nav-mega-panel { width: 900px; }
    #resources-dropdown .mega-cols { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); }
    #resources-dropdown .mega-col:nth-child(2) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 6px; align-content: start; }
    #resources-dropdown .mega-col:nth-child(2) > .mega-col-label { grid-column: 1 / -1; }
  }
  
  #company-dropdown .nav-dropdown, #resources-dropdown .nav-dropdown {
    width: auto; max-width: min(calc(100vw - var(--gutter) * 2), 900px); }
  #company-dropdown .mega-col, #resources-dropdown .mega-col { padding: 18px 20px 22px; }

  
  .announce-bar { padding: 6px calc(var(--gutter) + 26px); font-size: 11px; }
  .announce-close { width: 22px; height: 22px; }
  .announce-close svg { width: 12px; height: 12px; }
  @media (max-width: 520px) {
    .announce-bar { font-size: 10px; padding: 6px 34px; gap: 4px 8px; }
  }
  nav .nav-inner { height: 54px; }
  nav .nav-links, nav .nav-dropdown-trigger, nav .nav-login { font-size: 13px; }
  nav .nav-login { padding: 6px 8px; }
  nav .nav-divider { height: 17px; }
  nav .btn-primary { font-size: 12.5px; padding: 6px 12px; text-transform: none; letter-spacing: 0.01em; font-weight: 600; }
  .nav-mega .nav-dropdown { top: calc(var(--banner-h, 0px) + 54px); }
  html.kg-banner-gone .nav-mega .nav-dropdown { top: 54px; }
  .nav-mobile-menu { top: calc(var(--banner-h, 0px) + 62px); }
  html.kg-banner-gone .nav-mobile-menu { top: 62px; }

  
  html:not(:has(.announce-bar)) { --banner-h: 0px; }
  
  @media (min-width: 761px) {
    nav .nav-inner { width: 100%; max-width: none; box-sizing: border-box; margin-left: 0; margin-right: 0;
      padding-left: calc(max(var(--frame-inset), (100% - var(--frame-max)) / 2) + 24px);
      padding-right: calc(max(var(--frame-inset), (100% - var(--frame-max)) / 2) + 24px); }
  }
  
  @media (min-width: 1490px) {
    nav .nav-inner { padding-left: calc((100% - var(--frame-max)) / 2 - 127px);
      padding-right: calc((100% - var(--frame-max)) / 2 - 127px); }
  }
  
  @media (min-width: 1321px) {
    nav .nav-inner { grid-template-columns: minmax(max-content, 1fr) auto minmax(max-content, 1fr); }
  }
  
  @media (min-width: 761px) and (max-width: 1100px) {
    .nav-hamburger { display: flex !important; }
    .nav-links, .nav-divider, .nav-login { display: none !important; }
  }

  
  .p2-node.is-active .p2-node-icon, .p2-node.is-active .p2-node-title,
  .p2-node.is-active .p2-node-agent,
  .p2-pipe-group.is-active .p2-mini-name,
  .p2-pipe-group.is-active .p2-mini-role { color: var(--accent-text); }
  .p2-node.is-active { background: rgba(208, 81, 33, 0.16); }
  .p2-pipe-group.is-active .p2-pipe-mini { background: rgba(208, 81, 33, 0.12); }

  
  .p2-flow-link .p2-flow-dots .p2-dot-rims path { stroke: transparent; }

  
  body > footer, main ~ footer { background: var(--ground); }
  .p2-outro { background: var(--ground); }
  .p2-outro-mark { color: var(--ground); }

  
  :root { --mint: var(--ramp-4); }
  .p2-badge { background: var(--ramp-4); color: var(--ramp-10);
    border-color: rgba(var(--ink-rgb), 0.18); }
  .p2-tab[aria-selected="true"] { background: var(--ramp-4); color: var(--ramp-10);
    border-bottom-color: var(--yellow); }

  
  .p2-hero {
    --ink: #FFFFFF; --light: #FFFFFF; --text: #FFFFFF;
    --text-sec: #FFFFFF; --text-tri: #FFFFFF;
    --hud-line: rgba(255, 255, 255, 0.55); --hud-hair: rgba(255, 255, 255, 0.26);
    color: #FFFFFF; }
  .p2-plate, .p2-plate h2, .p2-plate p { color: #FFFFFF; }
  
  :is(#main-content, main) .p2-hero-plate {
    background: var(--ground); inset: 0; border-radius: 0; outline: none; }
  :is(#main-content, main) .p2-hero::after { content: ""; position: absolute; left: 0;
    right: 0; bottom: 0; height: 1px; background: var(--hud-hair); z-index: 1; }
  :is(#main-content, main) .p2-plate {
    background: var(--ground); border-radius: 0; margin-left: 0; margin-right: 0;
    border-top: 1px solid rgba(var(--ink-rgb), 0.13); border-bottom: 0; }
  
  :is(#main-content, main) .p2-final { padding-bottom: 0; }
  
  .p2-hero .p2-btn-primary, .p2-plate .p2-btn-primary {
    background: #FFFFFF; color: var(--ink-deep); border-color: #FFFFFF; }
  .p2-hero .p2-btn-primary:hover, .p2-plate .p2-btn-primary:hover,
  .p2-hero .p2-btn-primary:focus-visible, .p2-plate .p2-btn-primary:focus-visible,
  .p2-hero .p2-btn-ghost:hover, .p2-plate .p2-btn-ghost:hover,
  .p2-hero .p2-btn-ghost:focus-visible, .p2-plate .p2-btn-ghost:focus-visible {
    
    background: var(--yellow); color: #FFFFFF; border-color: var(--yellow); }
  .p2-hero .p2-btn-ghost, .p2-plate .p2-btn-ghost {
    background: transparent; color: #FFFFFF; border-color: rgba(255, 255, 255, 0.62); }

  
  .p2-proof, .p2-proof .p2-stat { background: var(--ramp-4); }
  .p2-proof {
    --text: var(--ramp-10); --ink: var(--ramp-10); --light: var(--ramp-10);
    --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --ink-rgb: 243, 243, 243; --hud-hair: rgba(243, 243, 243, 0.12);
    border-color: rgba(243, 243, 243, 0.12); color: var(--ramp-10); }
  .p2-proof .p2-stats { background: rgba(243, 243, 243, 0.12); }
  .p2-proof .p2-stat { border-top-color: var(--yellow); }

  
  .footer-col-title, .p2-pane .c { color: var(--text-tri); }

  
  ::selection { background: #519CBB; color: var(--ink-deep); }
  
  nav .btn-primary .nav-cta-scrolled { display: none; }
  nav.is-condensed .btn-primary .nav-cta-top { display: none; }
  nav.is-condensed .btn-primary .nav-cta-scrolled { display: inline; }
  
  
  html.kg-nav-cta-fade nav .btn-primary {
    display: inline-grid !important; align-items: center; justify-items: center; text-align: center;
    white-space: nowrap; overflow: hidden;
    
    grid-template-columns: minmax(0, 1fr);
    transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease,
      width 0.26s cubic-bezier(0.2, 0.7, 0.2, 1); }
  html.kg-nav-cta-fade nav .btn-primary > span,
  html.kg-nav-cta-fade nav.is-condensed .btn-primary > span {
    grid-area: 1 / 1; display: inline; transition: opacity 0.22s ease; }
  html.kg-nav-cta-fade nav .btn-primary .nav-cta-scrolled { opacity: 0; }
  
  @media (max-width: 760px) { html.kg-nav-cta-fade nav .btn-primary { display: none !important; } }
  html.kg-nav-cta-fade nav.is-condensed .btn-primary .nav-cta-top { opacity: 0; }
  html.kg-nav-cta-fade nav.is-condensed .btn-primary .nav-cta-scrolled { opacity: 1; }

  
  nav.is-condensed.is-over-hero .btn-primary {
    background: var(--btn-bg); color: var(--btn-ink); border-color: var(--btn-bg); }
  nav.is-condensed.is-over-hero .btn-primary:hover,
  nav.is-condensed.is-over-hero .btn-primary:focus-visible {
    background: var(--yellow); color: #FFFFFF; border-color: var(--yellow); }

  
  .nav-mega .mega-item > svg { transition: color 0.16s ease; }
  .nav-mega .mega-item:hover > svg, .nav-mega .mega-item:focus-visible > svg {
    color: var(--accent-text); }

  
  .nav-mega-morph {
    position: fixed; z-index: 199; pointer-events: none;
    background: var(--panel); border: 1px solid var(--hud-line); border-radius: 12px;
    opacity: 0; transform: translateY(-6px);
    transition: width 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
      height 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
      left 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
      top 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
      opacity 0.18s ease, transform 0.18s ease;
  }
  .nav-mega-morph.is-open { opacity: 1; transform: translateY(0); }
  html.kg-nav-morph .nav-mega .nav-dropdown {
    background: transparent; border-color: transparent; }
  @media (prefers-reduced-motion: reduce) {
    .nav-mega-morph { transition: opacity 0.12s ease; }
  }

  
  @keyframes kg-hero-in {
    0%   { opacity: 0; filter: blur(18px); transform: translateY(12px); }
    65%  { opacity: 1; filter: blur(3px); }
    100% { opacity: 1; filter: blur(0); transform: translateY(0); }
  }
  @keyframes kg-hero-fade { from { opacity: 0; } to { opacity: 1; } }
  @media (prefers-reduced-motion: no-preference) {
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > *,
    html:not(.kg-embed) #hero > .kg-demo-frame {
      animation: kg-hero-in 0.6s cubic-bezier(0.2, 0.7, 0.2, 1) backwards; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(2) { animation-delay: 0.07s; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(3) { animation-delay: 0.14s; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(4) { animation-delay: 0.2s; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(5) { animation-delay: 0.27s; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(6) { animation-delay: 0.34s; }
    html:not(.kg-embed) :is(.p2-hero .p2-hero-inner, #hero .hero-content) > :nth-child(n+7) { animation-delay: 0.4s; }
    html:not(.kg-embed) #hero > .kg-demo-frame { animation-delay: 0.34s; }
    html:not(.kg-embed) :is(.p2-hero, #hero) .p2-hero-canvas {
      animation: kg-hero-fade 0.4s ease-out backwards; }
    
    html:not(.kg-embed) #hero.fade-in { opacity: 1; transform: none; transition: none; }
  }
  
  html :is(#main-content, main) :is(details, .faq-item, .p2-proof,
    .p2-table-wrap, .rt-frame, .p2-code, .about-investor-logo, .p2-demo, .contact-card,
    .kg-shot, .kgx-pipe, .kgx-pipe-cell, .kgx-spec-wrap, .kg-calc, .kg-calc-col, .p2-panel,
    .cp-wq-note, .legal-table-wrap, .about-founder-grid, .p2-proof-callout, .doc-table-wrap,
    .doc-contact, .sh-arch-diagram, .sh-noaddon-callout, .kgx-panel, .os-code-frame,
    .os-juice-cta, .matrix-wrap),
  html :is(#main-content, main) .legal-container table,
  html :is(#main-content, main) blockquote {
    border-color: transparent !important; }
  
  .p2-pipe-mini { border-color: transparent; }
  
  @media (max-width: 1099px) { .p2-pipe-mini { border-color: var(--light); } }
  
  :root { --frame-pad: 0px; }
  
  main#main-content::after, main.p2-main::after, main.cf-dark::after { box-sizing: border-box; }
  
  :is(#main-content, main) .p2-pipe-cells > .p2-cell:has(.p2-pipe-chart),
  :is(#main-content, main) .kgx-pipe { background: var(--ramp-4); }
  
  html main .legal-container {
    width: min(calc(100% - (var(--frame-inset) + var(--frame-pad)) * 2), 760px);
    max-width: none; margin-left: auto; margin-right: auto; }
  
  main .legal-container > .legal-updated { margin: 56px 0 0; padding-top: 20px;
    border-top: 1px solid var(--hud-hair); font-size: 14px; color: var(--ramp-7); }
  
  :is(#main-content, main) .p2-hero .p2-badge:not(a) { display: none; }
  :is(#main-content, main) .p2-hero h1 {
    font-size: clamp(34px, 4vw, 50px); line-height: 1.06; letter-spacing: -0.03em;
    
    max-width: min(100%, 1040px); text-wrap: balance; }
  @media (max-width: 600px) { :is(#main-content, main) .p2-hero h1 { font-size: 28px; line-height: 1.1; } }
  :is(#main-content, main) .p2-hero .p2-hero-sub { font-size: 17px; color: var(--ramp-7); }
  
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) { display: block; max-width: 820px; margin-left: auto; margin-right: auto;
    border: 0 !important; background: none; padding: 0; gap: 0; }
  html :is(#main-content, main) :is(.cp-faq-col, .kgx-faq-item) { display: block; border: 0 !important; padding: 0;
    margin: 0; background: none; min-height: 0; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) details { margin: 0; padding: 0; background: none !important; box-shadow: none;
    border-radius: 0; border: 0 !important; border-bottom: 1px solid var(--hud-hair) !important; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) summary { list-style: none; display: flex; align-items: center;
    justify-content: space-between; gap: 28px; padding: 26px 0; margin: 0; cursor: pointer;
    background: none; border: 0; font-family: var(--sans); font-size: 18px; font-weight: 500;
    line-height: 1.4; letter-spacing: -0.01em; text-transform: none; color: var(--text); }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) summary::-webkit-details-marker { display: none; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) summary::before { content: none !important; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) summary::after { content: "" !important; position: static; flex: none;
    width: 9px; height: 9px; margin: 0 5px 5px 0; border: 0; color: var(--text-tri);
    border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    background: none !important; transform: rotate(45deg);
    transition: transform 0.25s ease, color 0.2s ease, margin 0.25s ease; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) summary:hover::after { color: var(--text); }
html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) details[open] > summary::after { transform: rotate(-135deg); margin: 5px 5px 0 0; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) :is(.faq-a, .cp-faq-a, .cmp-faq-body) { margin: 0; padding: 0 48px 28px 0;
    background: none; border: 0; font-size: 16px; line-height: 1.65; color: var(--text-sec);
    max-width: none; }
  html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq) :is(.faq-a, .cp-faq-a) p { font-size: 16px; line-height: 1.65; color: var(--text-sec); }
  
  html :is(#main-content, main) .p2-head:has(+ :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq)), html :is(#main-content, main) .faq-bill-col > .p2-head { text-align: center; max-width: 820px;
    margin-left: auto; margin-right: auto; }
  html :is(#main-content, main) :is(.p2-head:has(+ :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq)), .faq-bill-col > .p2-head) > * { margin-left: auto; margin-right: auto; }
  html :is(#main-content, main) .p2-head:has(+ :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq)) .p2-eyebrow { display: none; }
  html :is(#main-content, main) .p2-cells-title:has(+ .kgx-faq) { border: 0 !important; padding: 0; margin: 0 auto 40px;
    font-size: clamp(28px, 3.5vw, 46px); letter-spacing: -0.03em; line-height: 1.08; }
  html :is(#main-content, main) .p2-cells-title:has(+ .kgx-faq)::before, html :is(#main-content, main) .p2-cells-title:has(+ .kgx-faq)::after { content: none; }
  
  :is(#main-content, main) .p2-hero + .p2-section:is(:has(> .p2-cells-title:first-child),
    :has(> .p2-wrap:first-child > .p2-cells-title:first-child)) { padding-top: 0 !important; }
  :is(#main-content, main) .p2-hero + .p2-section > .p2-cells-title:first-child,
  :is(#main-content, main) .p2-hero + .p2-section > .p2-wrap:first-child > .p2-cells-title:first-child {
    border-top-color: transparent !important; }
  
  .nav-mega .mega-card .mega-card-stars { display: flex; align-items: center; gap: 7px;
    margin-top: 14px; font-family: var(--mono); font-size: 11px; font-weight: 600;
    letter-spacing: 0.06em; color: var(--ramp-10); }
  .nav-mega .mega-card .mega-card-stars svg { width: 12px; height: 12px; margin: 0;
    fill: var(--accent-text); stroke: none; display: inline-block; }
  
  :is(#main-content, main) :is(.sh-blurb, .cp-blurb, .os-display-blurb, .p2-proof-lede) { font-family: var(--sans); font-size: clamp(24px, 3vw, 38px); font-weight: 500;
    line-height: 1.22; letter-spacing: -0.02em; text-align: center; max-width: 1000px;
    margin-left: auto; margin-right: auto; color: var(--text); }
  :is(#main-content, main) :is(.sh-blurb, .cp-blurb, .os-display-blurb, .p2-proof-lede) :is(span, em, strong) { font-weight: 500; font-style: normal; }
  :is(#main-content, main) :is(.sh-blurb-bright, .cp-blurb-bright, .os-display-blurb-bright) { color: var(--text); }
  :is(#main-content, main) :is(.sh-blurb-dim, .cp-blurb-dim, .os-display-blurb-dim), :is(#main-content, main) .p2-proof-lede em { color: var(--text-tri); }
  @media (max-width: 720px) { :is(#main-content, main) :is(.sh-blurb, .cp-blurb, .os-display-blurb, .p2-proof-lede) { font-size: clamp(21px, 5.4vw, 26px); } }
  
  nav .nav-logo { transition: color 0.2s ease; }
  nav .nav-logo:hover, nav .nav-logo:focus-visible { color: var(--yellow) !important; }
  
  .nav-mega .mega-card-accent { overflow: hidden; }
  .nav-mega .mega-card .mega-card-art-wrap { display: block; height: 124px; margin: -14px -15px 16px;
    background: var(--ground) radial-gradient(circle, rgba(var(--ink-rgb), 0.07) 1px, transparent 1.4px) center / 14px 14px;
    border-bottom: 1px solid var(--hud-hair); }
  .nav-mega .mega-card .mega-card-art-wrap { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; }
  
  .nav-mega .mega-card .mega-card-art { display: block; width: auto; height: auto; max-width: none; }
  
  nav .nav-dropdown-trigger .nav-chev { transition: transform 0.2s ease, opacity 0.16s ease; }
  nav .nav-mega:hover .nav-dropdown-trigger .nav-chev,
  nav .nav-mega:focus-within .nav-dropdown-trigger .nav-chev,
  nav .nav-dropdown-trigger[aria-expanded="true"] .nav-chev { transform: rotate(180deg); }
  
  .nav-mega .mega-item:hover, .nav-mega .mega-item:focus-visible,
  .nav-mega .mega-card:hover, .nav-mega .mega-card:focus-visible {
    background: var(--btn2-bg); border-color: transparent; }
  
  .nav-mega .mega-highlights .mega-card-art-wrap { display: block; position: relative; }
  .nav-mega .mega-card .sh-iso { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; }
  .sh-iso .shc > path { fill: #0B100F; stroke: rgba(243, 243, 243, 0.45); stroke-width: 0.8;
    stroke-linejoin: round; transition: fill 0.5s ease, stroke 0.5s ease; }
  .sh-iso .r0t{--f:#F0D678} .sh-iso .r0l{--f:#ECC94B} .sh-iso .r0r{--f:#A58C34} .sh-iso .r1t{--f:#F1C672} .sh-iso .r1l{--f:#EDB443} .sh-iso .r1r{--f:#A57D2E} .sh-iso .r2t{--f:#F3B76C} .sh-iso .r2l{--f:#EF9F3C} .sh-iso .r2r{--f:#A76F2A} .sh-iso .r3t{--f:#F0A769} .sh-iso .r3l{--f:#EB8A38} .sh-iso .r3r{--f:#A46027} .sh-iso .r4t{--f:#E79666} .sh-iso .r4l{--f:#E07434} .sh-iso .r4r{--f:#9C5124}
  
  .nav-mega .mega-card:hover .sh-iso .shc > path, .nav-mega .mega-card:focus-visible .sh-iso .shc > path {
    fill: var(--f); stroke: #0B100F; transition-delay: calc(var(--k) * 8ms); }
  .sh-iso .shw { fill: none; stroke: rgba(243, 243, 243, 0.22); stroke-width: 1; stroke-dasharray: 5 5;
    transition: stroke 0.25s ease; }
  .sh-iso .shb-face { fill: #0B100F; transition: fill 0.25s ease; }
  .sh-iso .shb-edge { fill: none; stroke: rgba(243, 243, 243, 0.45); stroke-width: 1;
    stroke-linejoin: round; transition: stroke 0.25s ease; }
  .sh-iso .shb-icon { fill: none; stroke: rgba(243, 243, 243, 0.75); stroke-width: 1.2;
    vector-effect: non-scaling-stroke; stroke-linecap: round; stroke-linejoin: round; transition: stroke 0.25s ease; }
  .sh-iso .shb-icon * { vector-effect: non-scaling-stroke; }
  .nav-mega .mega-card:hover .sh-iso .shw { stroke: var(--yellow); animation: shw-march 0.85s linear infinite; }
  .nav-mega .mega-card:hover .sh-iso .shb-face { fill: #2A1C16; }
  .nav-mega .mega-card:hover .sh-iso .shb-edge { stroke: var(--yellow); }
  .nav-mega .mega-card:hover .sh-iso .shb-icon { stroke: var(--accent-text); }
  @keyframes shw-march { to { stroke-dashoffset: -10; } }
  @media (prefers-reduced-motion: reduce) {
    .nav-mega .mega-card:hover .sh-iso .shw { animation: none; } }
  
  .nav-mega .mega-highlights { display: flex; flex-direction: column; padding: 16px; }
  .nav-mega .mega-highlights .mega-card { flex: 1 1 auto; display: flex; flex-direction: column;
    margin: 0; height: 100%; }
  .nav-mega .mega-highlights .mega-card-art-wrap { flex: 1 1 auto; min-height: 124px; height: auto; }
  
  @media (max-width: 760px), (pointer: coarse) {
    footer .footer-link { display: inline-block; padding: 5px 0; margin: -2px 0; }
    footer a[aria-label] { display: inline-flex; align-items: center; justify-content: center;
      padding: 8px; margin: -8px; } }
  
  @media (max-width: 1000px) {
    html nav.is-condensed { background: rgba(11, 16, 15, 0.94);
      -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
      border-bottom: 1px solid var(--hud-hair); } }
  
  @media (min-width: 761px) and (max-width: 1100px) {
    :is(#main-content, main) :is(.sh-blurb, .cp-blurb, .os-display-blurb, .p2-proof-lede, .kgx-blurb) {
      max-width: min(1000px, calc(100% - 80px)); margin-left: auto; margin-right: auto; }
    html :is(#main-content, main) :is(.faq-group, .bill-doc-list, .cp-faq, .kgx-faq):not(:is(.faq-bill-col, .cp-qf-col) *) {
      max-width: min(820px, calc(100% - 80px)); }
    html :is(#main-content, main) .faq-bill-grid { width: min(1040px, calc(100% - 80px));
      margin-left: auto; margin-right: auto; }
    html main .legal-container { width: min(760px, calc(100% - (var(--frame-inset) + var(--frame-pad)) * 2 - 64px)); } }
  
  @media (max-width: 640px) {
    body > footer .footer-bottom { flex-direction: column; gap: 12px; } }
  
  @media (max-width: 760px) {
    body { --frame-inset: var(--gutter); --frame-pad: 0px; }
    html main#main-content::after, html main.p2-main::after,
    html main.cf-dark::after { display: block; } }
  @media (max-width: 600px) {
    :root { --gutter: 16px; } }
  
  html:has(.nav-mobile-menu.open) body > main,
  html:has(.nav-mobile-menu.open) body > main#main-content {
    position: relative; z-index: 60; }
  
  @media (max-width: 600px) {
    body > footer { padding-top: 26px; padding-bottom: 14px; }
    body > footer .footer-inner { display: block; column-count: 3; column-gap: 14px; }
    body > footer .footer-brand { column-span: all; display: flex; flex-wrap: wrap;
      align-items: baseline; gap: 2px 10px; margin: 0 0 20px; }
    body > footer .footer-logo { font-size: 19px; }
    body > footer .footer-brand p { margin: 0; max-width: none; font-size: 12px; line-height: 1.4; }
    body > footer .footer-col { break-inside: avoid; margin: 0 0 16px; }
    body > footer .footer-col-title { margin-bottom: 5px; font-size: 9.5px; letter-spacing: 0.14em; }
    body > footer .footer-products-grid, body > footer .footer-products-grid > div { display: block; }
    body > footer .footer-link { display: block; font-size: 12px; line-height: 1.3;
      padding: 4px 0; margin: 0; }
    body > footer .footer-link-platform { margin-top: 8px; padding-top: 8px; }
    body > footer .footer-bottom { margin-top: 4px; padding-top: 12px; gap: 8px; }
    body > footer .footer-bottom p, body > footer .footer-copy { font-size: 11.5px; }
    body > footer .footer-socials { gap: 14px; } }
  

  
  
  main.cf-dark, main.cf-dark > .hero-wrap, main.cf-dark > .nav-mobile-menu,
  main.cf-dark ~ footer, body > footer, .cf-zone, .band-dark {
    --bg: var(--ground); --bg-alt: var(--panel); --paper: var(--panel);
    --white: var(--ramp-11); --ink: var(--text);
    --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair); --accent: var(--yellow);
  }
  main.cf-dark, main.cf-dark ~ footer, body > footer { background: var(--ground); }
  
  main.cf-dark::before { content: none; }
  main.cf-dark > .hero-wrap, main.cf-dark > .hero-wrap::before { background: var(--ground); }

  
  :root { --st-orange: var(--yellow); }

  
  :is(#main-content, main) :is(h1, h2, h3, .os-section-title) em {
    font-style: normal; font-weight: inherit; color: var(--text-tri);
    text-decoration: none; }

  
  :is(#main-content, main) :is(.rt-btn, .btn-primary, .btn-primary-lg, .os-cta-btn,
    .pricing-cta-btn, .tier-cta, .cp-cta, .integ-cta-link, .community-cta, .product-cta-btn) {
    border-radius: 999px; border-width: 1px; box-shadow: none; transform: none;
    font-family: var(--sans); font-weight: 600; text-transform: none;
    letter-spacing: 0; transition: background 0.2s, color 0.2s, border-color 0.2s; }
  :is(#main-content, main) :is(.rt-btn, .os-cta-btn, .pricing-cta-btn) { font-size: 15px; }
  :is(#main-content, main) :is(.rt-btn-primary, .btn-primary, .btn-primary-lg,
    .os-cta-btn.primary, .pricing-cta-btn.primary, .cp-cta, .integ-cta-link,
    .community-cta, .product-cta-btn) {
    background: var(--btn-bg); color: var(--btn-ink); border-color: var(--btn-bg); }
  :is(#main-content, main) :is(.rt-btn-primary, .btn-primary, .btn-primary-lg,
    .os-cta-btn.primary, .pricing-cta-btn.primary, .cp-cta, .integ-cta-link,
    .community-cta, .product-cta-btn):hover {
    background: var(--yellow); color: #FFFFFF; border-color: var(--yellow);
    box-shadow: none; transform: none; }
  :is(#main-content, main) :is(.rt-btn:not(.rt-btn-primary), .os-cta-btn:not(.primary),
    .pricing-cta-btn:not(.primary), .tier-cta) {
    background: var(--btn2-bg); color: var(--btn2-ink); border-color: var(--btn2-bg); }
  :is(#main-content, main) :is(.rt-btn:not(.rt-btn-primary), .os-cta-btn:not(.primary),
    .pricing-cta-btn:not(.primary), .tier-cta):hover {
    background: var(--yellow); color: #FFFFFF; border-color: var(--yellow);
    box-shadow: none; transform: none; }

  
  :is(#main-content, main) .rt-frame { border: 1px solid var(--hud-line); border-radius: 10px;
    background: var(--panel); box-shadow: none; overflow: hidden; }
  :is(#main-content, main) .rt-frame-bar { background: var(--ground);
    border-bottom: 1px solid var(--hud-hair); }
  :is(#main-content, main) .rt-frame-lights i { background: var(--ramp-5); border-color: transparent; }
  :is(#main-content, main) .rt-frame-rec::before { background: var(--yellow); border-color: transparent; }

  
  :is(#main-content, main) .rt-eyebrow { font-size: 11px; font-weight: 600;
    letter-spacing: 0.24em; color: var(--text-tri); }
  :is(#main-content, main) .rt-eyebrow::before { content: none; }

  
  :is(#main-content, main) :is(.hero-kana, .rt-barcode, .rt-barcode-num) { display: none; }

  
  :root { color-scheme: dark; }
  :is(#main-content, main) input[type="range"] { accent-color: var(--yellow); }

  
  :is(#main-content, main) .os-code-block {
    --bg: var(--panel); --bg-alt: var(--panel-2); --white: var(--ramp-11); --ink: var(--text);
    --text: var(--ramp-10); --text-sec: var(--ramp-7); --text-tri: var(--ramp-6);
    --border: var(--hud-line); --border-lt: var(--hud-hair);
    background: var(--panel); color: var(--text); }

  
  :is(#main-content, main) :is(.kgx-spec thead th:nth-child(2), .kg-calc-col-kg) {
    background: var(--yellow); border-color: var(--yellow);
    --bg: var(--ink-deep); color: var(--ink-deep); }

  
  :is(#main-content, main) .about-investor-logo-naked img.about-investor-inverted {
    filter: grayscale(1) invert(1); mix-blend-mode: screen; }
  :is(#main-content, main) .about-investor-logo-naked img.about-investor-on-black {
    filter: grayscale(1); mix-blend-mode: screen; }
  
</style>
</head>

<body>
<a class="kg-skip-link" href="#main-content">Skip to main content</a>

<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5V39ZK9V"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>



<script>
(function () {
  var bar = document.getElementById('announce-bar');
  if (!bar) return;
  var root = document.documentElement;
  var KEY = 'kg-announce-dismissed';

  function close() {
    bar.remove();
    root.style.setProperty('--banner-h', '0px');
    root.classList.add('kg-banner-gone');
  }

  /* Runs inline, before the rest of the document parses, so a bar the reader
     already dismissed never gets a frame on screen. */
  var seen = false;
  try { seen = localStorage.getItem(KEY) === '1'; } catch (e) {}
  if (seen) { close(); return; }

  function setH() { root.style.setProperty('--banner-h', bar.offsetHeight + 'px'); }
  setH();
  window.addEventListener('resize', setH, { passive: true });
  window.addEventListener('load', setH);
  if (document.fonts && document.fonts.ready) document.fonts.ready.then(setH);

  bar.querySelector('.announce-close').addEventListener('click', function () {
    try { localStorage.setItem(KEY, '1'); } catch (e) {}
    close();
  });

  /* The bar scrolls away with the page; flag when it has so the fixed chrome
     can close the gap it was holding open. */
  function onScroll() {
    root.classList.toggle('kg-banner-gone', window.scrollY > bar.offsetHeight);
  }
  onScroll();
  window.addEventListener('scroll', onScroll, { passive: true });
  window.addEventListener('resize', onScroll, { passive: true });
})();

/* The outro's only remaining job is measuring where the wordmark's ink starts,
   so the gradient can begin exactly there. The reveal itself is pure layout --
   a pinned panel behind an opaque page -- and needs no scroll handler. */
(function () {
  var outro = document.getElementById('p2-outro');
  if (!outro) return;
  var mark = outro.querySelector('.p2-outro-mark');
  if (!mark) return;

  /* Geist sets its ink top 0.145em below the line box top (baseline at 0.855em
     less a 0.710em cap rise), and the line box is what getBoundingClientRect
     reports -- so the gradient would begin high by that much without it. */
  function measure() {
    var pr = outro.getBoundingClientRect();
    var mr = mark.getBoundingClientRect();
    if (!pr.height) return;
    var fs = parseFloat(getComputedStyle(mark).fontSize) || 0;
    var inkTop = (mr.top - pr.top) + 0.145 * fs;
    outro.style.setProperty('--mark-ink-top',
      Math.max(0, Math.min(100, inkTop / pr.height * 100)).toFixed(2) + '%');
  }

  measure();
  window.addEventListener('resize', measure, { passive: true });
  window.addEventListener('load', measure);
  if (document.fonts && document.fonts.ready) document.fonts.ready.then(measure);
})();
</script>

<nav id="main-nav">
  <div class="nav-inner">
    <div class="nav-left">
      <a href="index.html" class="nav-logo">Keygraph</a>
    </div>
    <div class="nav-links">
      <div class="nav-dropdown-wrap nav-mega" id="platform-dropdown">
        <button class="nav-dropdown-trigger" aria-haspopup="true" aria-expanded="false">
          Platform
          <svg class="nav-chev" viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M5 7.5 10 12.5 15 7.5" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
        <div class="nav-dropdown nav-mega-panel">
          <div class="mega-cols">
          <div class="mega-col">
            <div class="mega-col-label">Pentesting</div>
            <a class="mega-item" href="agentic-whitebox-pentester.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
              <span><span class="mega-item-name">Whitebox Pentester</span><span class="mega-item-desc">Reads your code, then exploits the app</span></span>
            </a>
            <a class="mega-item" href="agentic-blackbox-pentester.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a15 15 0 0 1 0 18a15 15 0 0 1 0-18z"/></svg>
              <span><span class="mega-item-name">Blackbox Pentester</span><span class="mega-item-desc">Attacks your app from the outside</span></span>
            </a>
            <a class="mega-item" href="business-logic-testing.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2.5"/><circle cx="6" cy="18" r="2.5"/><circle cx="18" cy="12" r="2.5"/><path d="M8.5 6H13a2.5 2.5 0 0 1 2.5 2.5v1M8.5 18H13a2.5 2.5 0 0 0 2.5-2.5v-1"/></svg>
              <span><span class="mega-item-name">Business Logic Testing</span><span class="mega-item-desc">Proves where your app logic breaks</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Code analysis</div>
            <a class="mega-item" href="agentic-sast.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><circle cx="11" cy="14" r="2.6"/><path d="M13 16l2.4 2.4"/></svg>
              <span><span class="mega-item-name">Agentic SAST</span><span class="mega-item-desc">Data-flow analysis, validated by agents</span></span>
            </a>
            <a class="mega-item" href="sca.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 16V8l-9-5-9 5v8l9 5 9-5z"/><path d="M3.3 7.5 12 12.5l8.7-5M12 12.5V21"/></svg>
              <span><span class="mega-item-name">SCA</span><span class="mega-item-desc">Only the CVEs your code can reach</span></span>
            </a>
            <a class="mega-item" href="secrets-scanning.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="8" cy="14" r="4"/><path d="M11 11.5 20 3M17 6l2.2 2.2M14.5 8.5l2.2 2.2"/></svg>
              <span><span class="mega-item-name">Secrets Scanning</span><span class="mega-item-desc">Leaked keys, verified across history</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Findings</div>
            <a class="mega-item" href="code-remediation.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="6" cy="6" r="2.5"/><circle cx="6" cy="18" r="2.5"/><circle cx="18" cy="18" r="2.5"/><path d="M6 8.5v7M18 15.5V11a3 3 0 0 0-3-3h-4M13 5.5 10.5 8 13 10.5"/></svg>
              <span><span class="mega-item-name">Code Remediation</span><span class="mega-item-desc">Verified fixes as reviewable PRs</span></span>
            </a>
            <a class="mega-item" href="reporting-and-analytics.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 21h18"/><rect x="4" y="12" width="4" height="7"/><rect x="10" y="7" width="4" height="12"/><rect x="16" y="3" width="4" height="16"/></svg>
              <span><span class="mega-item-name">Reporting &amp; Analytics</span><span class="mega-item-desc">Deduped findings, dashboards, Jira sync</span></span>
            </a>
            <a class="mega-item" href="attestation.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="9" r="6"/><path d="m8.4 14-1.4 8 5-3 5 3-1.4-8"/></svg>
              <span><span class="mega-item-name">Attestation</span><span class="mega-item-desc">Signed pentest reports for audits</span></span>
            </a>
          </div>
          <div class="mega-col mega-highlights">
            <a class="mega-card mega-card-accent" href="open-source.html">
              <span class="mega-card-art-wrap"><svg class="mega-card-art sh-iso" viewBox="0 0 353 135" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><path class="shw" d="M262 30L98.8 70.8"/><path class="shw" d="M318 48L162.8 86.8"/><path class="shw" d="M36 92L109.8 73.6"/><path class="shw" d="M92 110L173.8 89.6"/><g class="shb"><polygon class="shb-face" points="262,10 286,16 286,30 262,36 238,30 238,16"/><path class="shb-edge" d="M262,10L286,16L286,30L262,36L238,30L238,16ZM238,16L262,22L286,16M262,22L262,36"/><ellipse class="shb-edge" cx="262" cy="16" rx="4.8" ry="1.2"/><g class="shb-icon" transform="translate(250 26) skewY(14.036) scale(0.42) translate(-12 -12)"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></g></g><g class="shb"><polygon class="shb-face" points="318,28 342,34 342,48 318,54 294,48 294,34"/><path class="shb-edge" d="M318,28L342,34L342,48L318,54L294,48L294,34ZM294,34L318,40L342,34M318,40L318,54"/><ellipse class="shb-edge" cx="318" cy="34" rx="4.8" ry="1.2"/><g class="shb-icon" transform="translate(306 44) skewY(14.036) scale(0.42) translate(-12 -12)"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></g></g><g class="shc" style="--k:3"><path class="r4r" d="M46.4 50l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M37.2 47.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M42.8 46.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:2"><path class="r2r" d="M46.4 31.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M37.2 29.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M42.8 28.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:1"><path class="r1r" d="M46.4 22.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M37.2 20.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M42.8 19l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:0"><path class="r0r" d="M46.4 13.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M37.2 11.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M42.8 9.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:6"><path class="r4r" d="M55.5 52.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M46.4 50l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M51.9 48.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:5"><path class="r2r" d="M55.5 34.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M46.4 31.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M51.9 30.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:4"><path class="r0r" d="M55.5 15.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M46.4 13.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M51.9 12.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:10"><path class="r4r" d="M64.5 54.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M55.5 52.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M61 50.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:9"><path class="r3r" d="M64.5 45.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M55.5 43.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M61 41.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:8"><path class="r2r" d="M64.5 36.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M55.5 34.1l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M61 32.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:7"><path class="r0r" d="M64.5 18.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M55.5 15.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M61 14.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:15"><path class="r4r" d="M82.8 59.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M73.7 56.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M79.2 55.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:14"><path class="r3r" d="M82.8 50l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M73.7 47.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M79.2 46.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:13"><path class="r2r" d="M82.8 40.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M73.7 38.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M79.2 37.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:12"><path class="r1r" d="M82.8 31.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M73.7 29.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M79.2 28.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:11"><path class="r0r" d="M82.8 22.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M73.7 20.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M79.2 19l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:16"><path class="r2r" d="M91.8 43.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M82.8 40.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M88.2 39.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:21"><path class="r4r" d="M100.9 63.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M91.8 61.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M97.3 60l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:20"><path class="r3r" d="M100.9 54.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M91.8 52.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M97.3 50.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:19"><path class="r2r" d="M100.9 45.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M91.8 43.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M97.3 41.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:18"><path class="r1r" d="M100.9 36.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M91.8 34.1l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M97.3 32.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:17"><path class="r0r" d="M100.9 27.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M91.8 25l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M97.3 23.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:25"><path class="r4r" d="M119.1 68.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M110 65.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M115.5 64.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:24"><path class="r3r" d="M119.1 59.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M110 56.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M115.5 55.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:23"><path class="r2r" d="M119.1 50l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M110 47.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M115.5 46.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:22"><path class="r1r" d="M119.1 40.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M110 38.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M115.5 37.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:27"><path class="r2r" d="M128.2 52.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M119.1 50l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M124.6 48.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:26"><path class="r0r" d="M128.2 34.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M119.1 31.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M124.6 30.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:31"><path class="r4r" d="M137.3 72.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M128.2 70.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M133.8 69.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:30"><path class="r3r" d="M137.3 63.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M128.2 61.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M133.8 60l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:29"><path class="r2r" d="M137.3 54.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M128.2 52.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M133.8 50.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:28"><path class="r1r" d="M137.3 45.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M128.2 43.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M133.8 41.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:36"><path class="r4r" d="M155.6 77.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M146.4 75l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M151.9 73.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:35"><path class="r3r" d="M155.6 68.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M146.4 65.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M151.9 64.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:34"><path class="r2r" d="M155.6 59.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M146.4 56.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M151.9 55.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:33"><path class="r1r" d="M155.6 50l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M146.4 47.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M151.9 46.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:32"><path class="r0r" d="M155.6 40.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M146.4 38.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M151.9 37.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:37"><path class="r1r" d="M164.6 52.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M155.6 50l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M161.1 48.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:38"><path class="r2r" d="M173.8 63.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M164.6 61.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M170.1 60l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:43"><path class="r4r" d="M182.8 84.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M173.8 81.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M179.2 80.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:42"><path class="r3r" d="M182.8 75l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M173.8 72.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M179.2 71.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:41"><path class="r2r" d="M182.8 65.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M173.8 63.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M179.2 62.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:40"><path class="r1r" d="M182.8 56.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M173.8 54.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M179.2 53.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:39"><path class="r0r" d="M182.8 47.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M173.8 45.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M179.2 44.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:48"><path class="r4r" d="M201 88.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M191.9 86.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M197.4 85l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:47"><path class="r3r" d="M201 79.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M191.9 77.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M197.4 75.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:46"><path class="r2r" d="M201 70.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M191.9 68.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M197.4 66.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:45"><path class="r1r" d="M201 61.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M191.9 59.1l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M197.4 57.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:44"><path class="r0r" d="M201 52.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M191.9 50l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M197.4 48.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:49"><path class="r1r" d="M210.2 63.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M201 61.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M206.5 60l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:50"><path class="r2r" d="M219.2 75l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M210.2 72.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M215.7 71.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:55"><path class="r4r" d="M228.3 95.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M219.2 93.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M224.8 91.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:54"><path class="r3r" d="M228.3 86.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M219.2 84.1l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M224.8 82.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:53"><path class="r2r" d="M228.3 77.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M219.2 75l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M224.8 73.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:52"><path class="r1r" d="M228.3 68.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M219.2 65.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M224.8 64.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:51"><path class="r0r" d="M228.3 59.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M219.2 56.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M224.8 55.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:60"><path class="r4r" d="M246.5 100l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M237.4 97.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M242.9 96.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:59"><path class="r3r" d="M246.5 90.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M237.4 88.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M242.9 87.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:58"><path class="r2r" d="M246.5 81.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M237.4 79.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M242.9 78.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:57"><path class="r1r" d="M246.5 72.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M237.4 70.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M242.9 69.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:56"><path class="r0r" d="M246.5 63.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M237.4 61.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M242.9 60l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:62"><path class="r4r" d="M255.6 102.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M246.5 100l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M252 98.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:61"><path class="r0r" d="M255.6 65.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M246.5 63.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M252 62.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:67"><path class="r4r" d="M264.8 104.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M255.6 102.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M261.1 100.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:66"><path class="r3r" d="M264.8 95.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M255.6 93.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M261.1 91.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:65"><path class="r2r" d="M264.8 86.4l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M255.6 84.1l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M261.1 82.7l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:64"><path class="r1r" d="M264.8 77.3l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M255.6 75l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M261.1 73.6l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:63"><path class="r0r" d="M264.8 68.2l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M255.6 65.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M261.1 64.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:72"><path class="r4r" d="M282.9 109.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M273.9 106.9l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M279.4 105.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:71"><path class="r3r" d="M282.9 100l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M273.9 97.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M279.4 96.4l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:70"><path class="r2r" d="M282.9 90.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M273.9 88.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M279.4 87.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:69"><path class="r1r" d="M282.9 81.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M273.9 79.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M279.4 78.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:68"><path class="r0r" d="M282.9 72.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M273.9 70.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M279.4 69.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:73"><path class="r1r" d="M292 84.1l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M282.9 81.8l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M288.4 80.5l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:74"><path class="r2r" d="M301.1 95.5l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M292 93.2l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M297.5 91.8l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:79"><path class="r4r" d="M310.2 116l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r4l" d="M301.1 113.7l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r4t" d="M306.6 112.3l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:78"><path class="r3r" d="M310.2 106.9l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r3l" d="M301.1 104.6l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r3t" d="M306.6 103.2l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:77"><path class="r2r" d="M310.2 97.8l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r2l" d="M301.1 95.5l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r2t" d="M306.6 94.1l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:76"><path class="r1r" d="M310.2 88.7l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r1l" d="M301.1 86.4l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r1t" d="M306.6 85l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shc" style="--k:75"><path class="r0r" d="M310.2 79.6l5.5 -1.4l0 9.1l-5.5 1.4z"/><path class="r0l" d="M301.1 77.3l9.1 2.3l0 9.1l-9.1 -2.3z"/><path class="r0t" d="M306.6 75.9l9.1 2.3l-5.5 1.4l-9.1 -2.3z"/></g><g class="shb"><polygon class="shb-face" points="36,72 60,78 60,92 36,98 12,92 12,78"/><path class="shb-edge" d="M36,72L60,78L60,92L36,98L12,92L12,78ZM12,78L36,84L60,78M36,84L36,98"/><ellipse class="shb-edge" cx="36" cy="78" rx="4.8" ry="1.2"/><g class="shb-icon" transform="translate(24 88) skewY(14.036) scale(0.42) translate(-12 -12)"><polyline points="4 17 10 11 4 5"/><line x1="12" x2="20" y1="19" y2="19"/></g></g><g class="shb"><polygon class="shb-face" points="92,90 116,96 116,110 92,116 68,110 68,96"/><path class="shb-edge" d="M92,90L116,96L116,110L92,116L68,110L68,96ZM68,96L92,102L116,96M92,102L92,116"/><ellipse class="shb-edge" cx="92" cy="96" rx="4.8" ry="1.2"/><g class="shb-icon" transform="translate(80 106) skewY(14.036) scale(0.42) translate(-12 -12)"><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M9 7.13v-1a3 3 0 1 1 6 0v1"/><path d="M6 13H2"/><path d="M22 13h-4"/></g></g></svg></span>
              <strong>Shannon</strong>
              <span>The open-source whitebox AI pentester.</span>
              <span class="mega-card-stars"><svg viewBox="0 0 24 24" aria-hidden="true"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>48k+ stars on GitHub</span>
            </a>
          </div>
          </div>
        </div>
      </div>
      <div class="nav-dropdown-wrap nav-mega" id="resources-dropdown">
        <button class="nav-dropdown-trigger" aria-haspopup="true" aria-expanded="false">
          Resources
          <svg class="nav-chev" viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M5 7.5 10 12.5 15 7.5" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
        <div class="nav-dropdown nav-mega-panel">
          <div class="mega-cols">
          <div class="mega-col">
            <div class="mega-col-label">Documentation</div>
            <a class="mega-item" href="/docs/">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 4.5A2.5 2.5 0 0 1 6.5 2H20v18H6.5A2.5 2.5 0 0 0 4 22z"/><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/></svg>
              <span><span class="mega-item-name">Shannon Docs</span><span class="mega-item-desc">Install, configure, and run</span></span>
            </a>
            <a class="mega-item" href="/blog/">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 5h13v15H5a1 1 0 0 1-1-1z"/><path d="M17 9h3v9a2 2 0 0 1-3 1.7"/><path d="M7 9h7M7 13h7M7 16h4"/></svg>
              <span><span class="mega-item-name">Blog</span><span class="mega-item-desc">Engineering and security writing</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Comparisons</div>
            <a class="mega-item" href="keygraph-vs-github-advanced-security.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="7" height="16" rx="1"/><rect x="14" y="4" width="7" height="16" rx="1"/><path d="M12 8v8"/></svg>
              <span><span class="mega-item-name">vs GitHub Advanced Security</span><span class="mega-item-desc">Proven exploits instead of alerts</span></span>
            </a>
            <a class="mega-item" href="keygraph-vs-semgrep.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="7" height="16" rx="1"/><rect x="14" y="4" width="7" height="16" rx="1"/><path d="M12 8v8"/></svg>
              <span><span class="mega-item-name">vs Semgrep</span><span class="mega-item-desc">Exploits instead of pattern rules</span></span>
            </a>
            <a class="mega-item" href="keygraph-vs-xbow.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="7" height="16" rx="1"/><rect x="14" y="4" width="7" height="16" rx="1"/><path d="M12 8v8"/></svg>
              <span><span class="mega-item-name">vs XBOW</span><span class="mega-item-desc">A pentest that also closes the loop</span></span>
            </a>
            <a class="mega-item" href="shannon-benchmark.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 20h18"/><rect x="5" y="11" width="3" height="6" rx="0.5"/><rect x="10.5" y="6" width="3" height="11" rx="0.5"/><rect x="16" y="9" width="3" height="8" rx="0.5"/></svg>
              <span><span class="mega-item-name">Shannon benchmark</span><span class="mega-item-desc">Shannon 3.0 against Aikido and XBOW</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Connect</div>
            <a class="mega-item" href="integrations.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 2v6M15 2v6"/><path d="M6 8h12v4a6 6 0 0 1-12 0z"/><path d="M12 18v4"/></svg>
              <span><span class="mega-item-name">Integrations</span><span class="mega-item-desc">Source control, SSO, ticketing, and AI</span></span>
            </a>
            <a class="mega-item" href="community-program.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M16 20v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="3.2"/><path d="M17 4.2a3.2 3.2 0 0 1 0 6M22 20v-2a4 4 0 0 0-3-3.8"/></svg>
              <span><span class="mega-item-name">Community Program</span><span class="mega-item-desc">Keygraph Pro for nonprofits and pre-Series-A startups</span></span>
            </a>
          </div>
          </div>
        </div>
      </div>
      <div class="nav-dropdown-wrap nav-mega" id="company-dropdown">
        <button class="nav-dropdown-trigger active" aria-haspopup="true" aria-expanded="false">
          Company
          <svg class="nav-chev" viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M5 7.5 10 12.5 15 7.5" stroke="currentColor" stroke-width="1.667" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
        <div class="nav-dropdown nav-mega-panel">
          <div class="mega-cols">
          <div class="mega-col">
            <div class="mega-col-label">Company</div>
            <a class="mega-item" href="about.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M16 20v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="3.2"/><path d="M17 4.2a3.2 3.2 0 0 1 0 6"/></svg>
              <span><span class="mega-item-name">About Us</span><span class="mega-item-desc">The team behind Keygraph and Shannon</span></span>
            </a>
            <a class="mega-item" href="contact.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 4 12 13 2 4"/></svg>
              <span><span class="mega-item-name">Contact</span><span class="mega-item-desc">Sales, support, and technical demos</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Trust</div>
            <a class="mega-item" href="code-security-posture.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 3v6c0 4.6-3.2 7.9-8 9-4.8-1.1-8-4.4-8-9V6z"/><path d="M9 12l2 2 4-4"/></svg>
              <span><span class="mega-item-name">Code Security Posture</span><span class="mega-item-desc">How the platform handles your code</span></span>
            </a>
            <a class="mega-item" href="subprocessors.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>
              <span><span class="mega-item-name">Subprocessors</span><span class="mega-item-desc">Who processes your data</span></span>
            </a>
          </div>
          <div class="mega-col">
            <div class="mega-col-label">Legal</div>
            <a class="mega-item" href="terms.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><path d="M8 13h8M8 17h5"/></svg>
              <span><span class="mega-item-name">Terms of Service</span><span class="mega-item-desc">The terms for using Keygraph</span></span>
            </a>
            <a class="mega-item" href="privacy.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
              <span><span class="mega-item-name">Privacy Policy</span><span class="mega-item-desc">How we collect and use personal data</span></span>
            </a>
            <a class="mega-item" href="dpa.html">
              <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h5"/><polyline points="14 2 14 8 20 8"/><path d="M17 13l4 1.5v3c0 2.3-1.6 4-4 4.5-2.4-.5-4-2.2-4-4.5v-3z"/></svg>
              <span><span class="mega-item-name">DPA</span><span class="mega-item-desc">Our data processing terms</span></span>
            </a>
          </div>
          </div>
        </div>
      </div>
      <a href="pricing.html" data-page="pricing">Pricing</a>
      <a href="enterprise.html" data-page="enterprise">Enterprise</a>
    </div>
    <div class="nav-right">
      <a href="https://login.keygraph.app/login" class="nav-login">Login</a>
      <a href="https://cal.com/team/keygraph/keygraph-technical-demo" class="btn-primary" style="display:inline-block;text-decoration:none"><span class="nav-cta-top">Schedule a Technical Demo</span><span class="nav-cta-scrolled">Contact Sales</span></a>
      <button class="nav-hamburger" id="nav-hamburger" aria-label="Open menu">
        <span></span><span></span><span></span>
      </button>
    </div>
  </div>
</nav>
<main id="main-content" tabindex="-1" class="cf-dark">
<div class="nav-mobile-menu" id="nav-mobile-menu">
  <div class="nav-mobile-section-label">Products</div>
  <a href="agentic-whitebox-pentester.html">Whitebox Pentester</a>
  <a href="agentic-blackbox-pentester.html">Blackbox Pentester</a>
  <a href="business-logic-testing.html">Business Logic</a>
  <a href="agentic-sast.html">Agentic SAST</a>
  <a href="sca.html">SCA</a>
  <a href="secrets-scanning.html">Secrets Scanning</a>
  <div class="nav-mobile-section-label">Open Source</div>
  <a href="open-source.html">Shannon</a>
  <div class="nav-mobile-section-label">Findings</div>
  <a href="code-remediation.html">Code Remediation</a>
  <a href="reporting-and-analytics.html">Reporting &amp; Analytics</a>
  <div class="nav-mobile-section-label">Company</div>
  <a href="enterprise.html">Enterprise</a>
  <a href="pricing.html">Pricing</a>
  <a href="contact.html">Contact</a>
  <a href="https://login.keygraph.app/login">Login</a>
  <a href="https://cal.com/team/keygraph/keygraph-technical-demo" class="mobile-nav-cta">Schedule a Technical Demo</a>
</div>

<section class="p2-hero">
  <div class="p2-hero-plate" aria-hidden="true"></div>
  <div class="p2-wrap p2-hero-inner">
    <h1>Offense is scaling.<br>Access to defense <em>should too.</em></h1>
    <p class="p2-hero-sub">Community Program participants run the full platform, every module included, at $0 in cloud service fees; you pay only for your own AI provider usage. (Paid Pro starts at $50 per Active Developer per month.)</p>
    <div class="p2-cta-row">
      <a class="p2-btn p2-btn-primary" href="https://docs.google.com/forms/d/e/1FAIpQLSeQs4HV97_0p3L4gZnHCAdBLnd2eqrbTnZPhbSuhdLqSQLygQ/viewform">Apply to the Community Program</a>
    </div>
  </div>
</section>

<div class="cp-page">

<section class="p2-section cp-blurb-sec">
<div class="p2-wrap">
<p class="cp-blurb">
  <span class="cp-blurb-bright">Continuous, proof-based security testing should be available to every team.</span>
  <span class="cp-blurb-dim"> We started with Shannon, the open-source whitebox AI pentester.</span>
  <span class="cp-blurb-dim"> The Community Program is the next step: our managed platform, free for nonprofits and early-stage startups.</span>
</p>
</div>
</section>

<section class="p2-section cp-qf-sec">
<div class="p2-wrap">
<div class="cp-qf">
<div class="cp-qf-col">
<div class="p2-head cp-qf-head">
<h2 class="p2-h2">Who Qualifies</h2>
</div>
<div class="cp-q">
  <div class="cp-q-box">
    <div class="cp-q-head">
      <span class="cp-q-chip"><svg class="cp-q-ic" viewBox="0 0 24 24" aria-hidden="true"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"/><path d="M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"/><path d="m18 15-2-2"/><path d="m15 18-2-2"/></svg></span>
      <h3>U.S.-based 501(c)(3) nonprofits</h3>
      <p>Registered 501(c)(3) organizations in the United States.</p>
    </div>
    <div class="cp-q-benefit"><p class="cp-q-free">100% free Keygraph Pro</p><p>For as long as you qualify. No cap on Active Developers.</p></div>
  </div>
  <div class="cp-q-box">
    <div class="cp-q-head">
      <span class="cp-q-chip"><svg class="cp-q-ic" viewBox="0 0 24 24" aria-hidden="true"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg></span>
      <h3>Seed and pre-Series-A startups</h3>
      <p>With 20 or fewer Active Developers.</p>
    </div>
    <div class="cp-q-benefit"><p class="cp-q-free">100% free Keygraph Pro</p><p>Until you graduate from the program.</p></div>
  </div>
</div>
<p class="cp-q-note">Individual developers are not eligible for the Community Program, but <a href="open-source.html">Shannon OSS</a> is free forever, self-hosted, for anyone.</p>
</div>
<div class="cp-qf-col">
<div class="p2-head cp-qf-head">
<h2 class="p2-h2">FAQ</h2>
</div>
<div class="cp-faq">
<div class="cp-faq-col">
<details>
<summary>What about non-U.S. nonprofits?</summary>
<div class="cp-faq-a"><p>The Nonprofit track is limited to U.S.-based 501(c)(3) organizations, so non-U.S. nonprofits are not eligible for it. <a href="open-source.html">Shannon OSS</a> is free forever, self-hosted, for anyone, and paid Keygraph Pro is available worldwide.</p></div>
</details>
<details>
<summary>How Active Developers are measured</summary>
<div class="cp-faq-a"><p>As defined in the Keygraph Terms of Service. We confirm the count with you during onboarding.</p></div>
</details>
<details>
<summary>How long does free access last?</summary>
<div class="cp-faq-a"><p>Free access renews monthly, with a quick annual eligibility re-certification. Your Order Form states your enrollment terms.</p></div>
</details>
<details>
<summary>What if we need self-hosted or air-gapped?</summary>
<div class="cp-faq-a"><p>The program is cloud-hosted only. For self-hosted, use <a href="open-source.html">Shannon OSS</a> (free) or the <a href="enterprise.html">Enterprise plan</a>.</p></div>
</details>
<details>
<summary>EU data residency</summary>
<div class="cp-faq-a"><p>Available. Request it when we follow up on your application.</p></div>
</details>
</div>
<div class="cp-faq-col">
<details>
<summary>What counts as a Graduation Event</summary>
<div class="cp-faq-a"><p>Your free access runs until you graduate: closing a Series A or later round, raising more than US $10 million in total outside funding, being acquired, or growing past 20 Active Developers. The Order Form has the precise definition.</p></div>
</details>
<details>
<summary>The 90-day Conversion Window</summary>
<div class="cp-faq-a"><p>After a Graduation Event you have 90 days to convert to a paid plan, with free access continuing in the meantime. Your team keeps working; nothing migrates.</p></div>
</details>
<details>
<summary>Conversion pricing</summary>
<div class="cp-faq-a"><p>You convert at our then-current published <a href="pricing.html">pricing</a>, based on your actual Active Developer count and enabled modules.</p></div>
</details>
</div>

</div>
</div>
</section>

<section class="p2-section">
<div class="p2-wrap">
<div class="sh-ag cp-get">
  <div class="sh-ag-intro">
    <h2 class="p2-h2">What You Get</h2>
    <p class="p2-sub">The full Pro plan with all generally available Pro modules: the agentic pentester, SAST, secrets detection, SCA and dependency scanning with reachability analysis, remediation workflows that end in reviewable pull requests, and the unified findings dashboard. Pentest findings are validated with a working proof of concept before they are filed.</p>
  </div>
  <article class="sh-ag-card">
    <div class="sh-ag-art"><svg class="cp-art" viewBox="0 0 400 210" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><rect class="ca-win" x="78" y="28" width="244" height="154" rx="10"/><text class="ca-h" x="96" y="51">Keygraph Pro</text><rect class="ca-pill" x="232" y="39" width="74" height="17" rx="8.5"/><text class="ca-m ca-acc-t" x="269" y="50.5" text-anchor="middle">ALL MODULES</text><line class="ca-rule" x1="78" x2="322" y1="64" y2="64"/><text class="ca-t" x="96" y="84.8">Agentic pentester</text><rect class="ca-trk" style="--i:0" x="276" y="74" width="28" height="14" rx="7"/><circle class="ca-knob" style="--i:0" cx="283" cy="81" r="4.6"/><line class="ca-rule" x1="96" x2="306" y1="91.5" y2="91.5"/><text class="ca-t" x="96" y="105.8">SAST</text><rect class="ca-trk" style="--i:1" x="276" y="95" width="28" height="14" rx="7"/><circle class="ca-knob" style="--i:1" cx="283" cy="102" r="4.6"/><line class="ca-rule" x1="96" x2="306" y1="112.5" y2="112.5"/><text class="ca-t" x="96" y="126.8">Secrets detection</text><rect class="ca-trk" style="--i:2" x="276" y="116" width="28" height="14" rx="7"/><circle class="ca-knob" style="--i:2" cx="283" cy="123" r="4.6"/><line class="ca-rule" x1="96" x2="306" y1="133.5" y2="133.5"/><text class="ca-t" x="96" y="147.8">Remediation PRs</text><rect class="ca-trk" style="--i:3" x="276" y="137" width="28" height="14" rx="7"/><circle class="ca-knob" style="--i:3" cx="283" cy="144" r="4.6"/><line class="ca-rule" x1="78" x2="322" y1="156" y2="156"/><g class="ca-ic ca-acc" transform="translate(96 162) scale(0.541667)"><path d="M12 12c-2-2.67-4-4-6-4a4 4 0 1 0 0 8c2 0 4-1.33 6-4Zm0 0c2 2.67 4 4 6 4a4 4 0 0 0 0-8c-2 0-4 1.33-6 4Z"/></g><text class="ca-m" x="115" y="171.5">FOR AS LONG AS YOU PARTICIPATE</text></svg></div>
    <div class="sh-ag-copy">
      <h3>Not a trial</h3>
      <p>You get the same managed Pro platform paying customers run, all modules enabled, for as long as you participate.</p>
    </div>
  </article>
  <article class="sh-ag-card">
    <div class="sh-ag-art"><svg class="cp-art" viewBox="0 0 400 210" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><rect class="ca-zone" x="36" y="30" width="206" height="150" rx="12"/><text class="ca-m" x="52" y="50">YOUR ORGANIZATION</text><line class="ca-link" x1="78" x2="78" y1="102" y2="128"/><rect class="ca-tile" x="52" y="62" width="52" height="40" rx="6"/><g class="ca-ic" transform="translate(69 73) scale(0.75)"><line x1="6" x2="6" y1="3" y2="15"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><path d="M18 9a9 9 0 0 1-9 9"/></g><circle class="ca-ok" cx="102" cy="63" r="7"/><g class="ca-ic ca-ok-ic" transform="translate(97.5 58.5) scale(0.375)"><path d="M20 6 9 17l-5-5"/></g><line class="ca-link" x1="138" x2="138" y1="102" y2="128"/><rect class="ca-tile" x="112" y="62" width="52" height="40" rx="6"/><g class="ca-ic" transform="translate(129 73) scale(0.75)"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></g><circle class="ca-ok" cx="162" cy="63" r="7"/><g class="ca-ic ca-ok-ic" transform="translate(157.5 58.5) scale(0.375)"><path d="M20 6 9 17l-5-5"/></g><line class="ca-link" x1="198" x2="198" y1="102" y2="128"/><rect class="ca-tile" x="172" y="62" width="52" height="40" rx="6"/><g class="ca-ic" transform="translate(189 73) scale(0.75)"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"/><rect width="20" height="8" x="2" y="14" rx="2" ry="2"/><line x1="6" x2="6.01" y1="6" y2="6"/><line x1="6" x2="6.01" y1="18" y2="18"/></g><circle class="ca-ok" cx="222" cy="63" r="7"/><g class="ca-ic ca-ok-ic" transform="translate(217.5 58.5) scale(0.375)"><path d="M20 6 9 17l-5-5"/></g><rect class="ca-tile" x="52" y="128" width="172" height="34" rx="6"/><g class="ca-ic ca-acc" transform="translate(64 137) scale(0.666667)"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></g><text class="ca-t" x="87" y="149">Keygraph, internal AppSec</text><text class="ca-m" x="323" y="38" text-anchor="middle">THIRD PARTIES</text><rect class="ca-tile is-dim" x="298" y="46" width="50" height="34" rx="6"/><g class="ca-ic is-dim" transform="translate(314 55) scale(0.666667)"><path d="M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z"/><path d="M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2"/><path d="M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2"/><path d="M10 6h4"/><path d="M10 10h4"/><path d="M10 14h4"/><path d="M10 18h4"/></g><rect class="ca-tile is-dim" x="298" y="90" width="50" height="34" rx="6"/><g class="ca-ic is-dim" transform="translate(314 99) scale(0.666667)"><path d="M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z"/><path d="M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2"/><path d="M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2"/><path d="M10 6h4"/><path d="M10 10h4"/><path d="M10 14h4"/><path d="M10 18h4"/></g><rect class="ca-tile is-dim" x="298" y="134" width="50" height="34" rx="6"/><g class="ca-ic is-dim" transform="translate(314 143) scale(0.666667)"><path d="M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z"/><path d="M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2"/><path d="M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2"/><path d="M10 6h4"/><path d="M10 10h4"/><path d="M10 14h4"/><path d="M10 18h4"/></g><path class="ca-link is-out" d="M242 105 H290"/><path class="ca-ic is-dim" d="M285 100.5 L291 105 L285 109.5"/><circle class="ca-no" cx="266" cy="105" r="11"/><path class="ca-no-x" d="M258.2 97.2 L273.8 112.8"/></svg></div>
    <div class="sh-ag-copy">
      <h3>Internal use only</h3>
      <p>The program authorizes your own internal application-security use. Operating Keygraph as a managed security service or reselling access is not permitted except as the governing agreement expressly allows.</p>
    </div>
  </article>
  <article class="sh-ag-card">
    <div class="sh-ag-art"><svg class="cp-art" viewBox="0 0 400 210" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><path class="ca-link is-live" d="M146 89 H178"/><path class="ca-link is-live" d="M252 89 H268 M268 73 V107 M268 73 H284 M268 107 H284"/><path class="ca-link is-bill" d="M322 132 V156 H92 V118"/><rect class="ca-tile ca-acc" x="34" y="62" width="112" height="56" rx="8"/><text class="ca-m" x="47" y="80">YOUR API KEY</text><g class="ca-ic ca-acc" transform="translate(46 90) scale(0.666667)"><path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"/><circle cx="16.5" cy="7.5" r=".5"/></g><text class="ca-k" x="68" y="102">sk-&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;4f2a</text><rect class="ca-tile" x="178" y="70" width="74" height="38" rx="8"/><text class="ca-h" x="215" y="93.5" text-anchor="middle">Keygraph</text><rect class="ca-tile" x="284" y="58" width="32" height="32" rx="7"/><g class="ca-logo" transform="translate(292 66) scale(0.666667)"><path d="M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z"/></g><rect class="ca-tile" x="322" y="58" width="32" height="32" rx="7"/><g class="ca-logo" transform="translate(330 66) scale(0.666667)"><path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"/></g><rect class="ca-tile" x="284" y="94" width="32" height="32" rx="7"/><g class="ca-logo" transform="translate(292 102) scale(0.666667)"><path d="M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z"/></g><rect class="ca-tile" x="322" y="94" width="32" height="32" rx="7"/><g class="ca-logo" transform="translate(330 102) scale(0.666667)"><path d="M13.05 15.513h3.08c.214 0 .389.177.389.394v1.82a1.704 1.704 0 011.296 1.661c0 .943-.755 1.708-1.685 1.708-.931 0-1.686-.765-1.686-1.708 0-.807.554-1.484 1.297-1.662v-1.425h-2.69v4.663a.395.395 0 01-.188.338l-2.69 1.641a.385.385 0 01-.405-.002l-4.926-3.086a.395.395 0 01-.185-.336V16.3L2.196 14.87A.395.395 0 012 14.555L2 14.528V9.406c0-.14.073-.27.192-.34l2.465-1.462V4.448c0-.129.062-.249.165-.322l.021-.014L9.77 1.058a.385.385 0 01.407 0l2.69 1.675a.395.395 0 01.185.336V7.6h3.856V5.683a1.704 1.704 0 01-1.296-1.662c0-.943.755-1.708 1.685-1.708.931 0 1.685.765 1.685 1.708 0 .807-.553 1.484-1.296 1.662v2.311a.391.391 0 01-.389.394h-4.245v1.806h6.624a1.69 1.69 0 011.64-1.313c.93 0 1.685.764 1.685 1.707 0 .943-.754 1.708-1.685 1.708a1.69 1.69 0 01-1.64-1.314H13.05v1.937h4.953l.915 1.18a1.66 1.66 0 01.84-.227c.931 0 1.685.764 1.685 1.707 0 .943-.754 1.708-1.685 1.708-.93 0-1.685-.765-1.685-1.708 0-.346.102-.668.276-.937l-.724-.935H13.05v1.806zM9.973 1.856L7.93 3.122V6.09h-.778V3.604L5.435 4.669v2.945l2.11 1.36L9.712 7.61V5.334h.778V7.83c0 .136-.07.263-.184.335L7.963 9.638v2.081l1.422 1.009-.446.646-1.406-.998-1.53 1.005-.423-.66 1.605-1.055v-1.99L5.038 8.29l-2.26 1.34v1.676l1.972-1.189.398.677-2.37 1.429V14.3l2.166 1.258 2.27-1.368.397.677-2.176 1.311V19.3l1.876 1.175 2.365-1.426.398.678-2.017 1.216 1.918 1.201 2.298-1.403v-5.78l-4.758 2.893-.4-.675 5.158-3.136V3.289L9.972 1.856zM16.13 18.47a.913.913 0 00-.908.92c0 .507.406.918.908.918a.913.913 0 00.907-.919.913.913 0 00-.907-.92zm3.63-3.81a.913.913 0 00-.908.92c0 .508.406.92.907.92a.913.913 0 00.908-.92.913.913 0 00-.908-.92zm1.555-4.99a.913.913 0 00-.908.92c0 .507.407.918.908.918a.913.913 0 00.907-.919.913.913 0 00-.907-.92zM17.296 3.1a.913.913 0 00-.907.92c0 .508.406.92.907.92a.913.913 0 00.908-.92.913.913 0 00-.908-.92z"/></g><circle class="ca-coin" cx="207" cy="156" r="10"/><text class="ca-coin-t" x="207" y="160" text-anchor="middle">$</text><text class="ca-m" x="207" y="184" text-anchor="middle">BILLED DIRECTLY BY YOUR PROVIDER</text></svg></div>
    <div class="sh-ag-copy">
      <h3>Bring Your Own AI Key</h3>
      <p>The Keygraph platform runs on <strong>BYOK</strong> (bring your own key): you connect your own AI provider key and pay your provider directly for inference usage.</p>
    </div>
  </article>
  <article class="sh-ag-card">
    <div class="sh-ag-art"><svg class="cp-art" viewBox="0 0 400 210" preserveAspectRatio="xMidYMid meet" aria-hidden="true"><rect class="ca-win" x="70" y="26" width="260" height="158" rx="10"/><g class="ca-logo ca-acc-f" transform="translate(86 36) scale(0.666667)"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></g><text class="ca-ch" x="110" y="48"># support</text><text class="ca-m" x="314" y="47.5" text-anchor="end">KEYGRAPH COMMUNITY</text><line class="ca-rule" x1="70" x2="330" y1="60" y2="60"/><circle class="ca-av" cx="94" cy="80" r="9"/><text class="ca-n" x="110" y="77">You</text><rect class="ca-bar" x="110" y="83" width="150" height="5" rx="2.5"/><rect class="ca-bar" x="110" y="92" width="104" height="5" rx="2.5"/><circle class="ca-av ca-eng" cx="94" cy="121" r="9"/><text class="ca-av-t" x="94" y="124.5" text-anchor="middle">K</text><text class="ca-n" x="110" y="118">Keygraph engineer</text><rect class="ca-pill" x="205" y="109.5" width="32" height="12" rx="6"/><text class="ca-m ca-acc-t" x="221" y="118" text-anchor="middle" style="font-size:6.5px">TEAM</text><rect class="ca-bar" x="110" y="124" width="172" height="5" rx="2.5"/><rect class="ca-bar" x="110" y="133" width="126" height="5" rx="2.5"/><line class="ca-rule" x1="86" x2="314" y1="150" y2="150"/><circle class="ca-dot" style="--i:0" cx="96" cy="166" r="2.2"/><circle class="ca-dot" style="--i:1" cx="104" cy="166" r="2.2"/><circle class="ca-dot" style="--i:2" cx="112" cy="166" r="2.2"/><text class="ca-m" x="122" y="168.5">ENGINEERS REPLY DAILY</text></svg></div>
    <div class="sh-ag-copy">
      <h3>Community Support</h3>
      <p>Support runs through the Keygraph community, where Keygraph engineers read and respond daily. <a href="https://discord.gg/keygraph-community">Join the community Discord</a>.</p>
      <p>While the program is free there's no SLA or uptime commitment; dedicated email and Slack support are paid-plan features.</p>
    </div>
  </article>
</div>
</div>
</section>

</div>

<section class="p2-final">
  <div class="p2-wrap">
    <div class="p2-plate">
      <h2>Access to defense <em>starts here.</em></h2>
      <p>If you run a nonprofit or an early-stage startup, the full platform is free while you qualify.</p>
      <div class="p2-cta-row">
        <a class="p2-btn p2-btn-primary" href="https://docs.google.com/forms/d/e/1FAIpQLSeQs4HV97_0p3L4gZnHCAdBLnd2eqrbTnZPhbSuhdLqSQLygQ/viewform">Apply to the Community Program</a>
      </div>
    </div>
  </div>
</section>

</main>
<footer>
  <div class="footer-inner">
    <div class="footer-brand">
      <a href="index.html" class="nav-logo footer-logo">Keygraph</a>
      <p>Continuous Agentic Pentesting</p>
    </div>
        <div class="footer-col footer-col-products">
      <div class="footer-col-title">Platform</div>
      <div class="footer-products-grid">
        <div>
          <a href="agentic-whitebox-pentester.html" class="footer-link">Whitebox Pentester</a>
          <a href="agentic-blackbox-pentester.html" class="footer-link">Blackbox Pentester</a>
          <a href="business-logic-testing.html" class="footer-link">Business Logic</a>
          <a href="agentic-sast.html" class="footer-link">Agentic SAST</a>
          <a href="sca.html" class="footer-link">SCA</a>
        </div>
        <div>
          <a href="secrets-scanning.html" class="footer-link">Secrets Scanning</a>
          <a href="code-remediation.html" class="footer-link">Code Remediation</a>
          <a href="reporting-and-analytics.html" class="footer-link">Reporting &amp; Analytics</a>
          <a href="open-source.html" class="footer-link">Shannon</a>
        </div>
      </div>
    </div>
    <div class="footer-col">
      <div class="footer-col-title">Resources</div>
      <a href="/docs/" class="footer-link">Shannon Docs</a>
      <a href="/blog/" class="footer-link">Blog</a>
      <a href="integrations.html" class="footer-link">Integrations</a>
      <a href="keygraph-vs-github-advanced-security.html" class="footer-link">vs GitHub Advanced Security</a>
      <a href="keygraph-vs-semgrep.html" class="footer-link">vs Semgrep</a>
      <a href="keygraph-vs-xbow.html" class="footer-link">vs XBOW</a>
      <a href="shannon-benchmark.html" class="footer-link">Shannon benchmark</a>
    </div>
    <div class="footer-col">
      <div class="footer-col-title">Plans &amp; Services</div>
      <a href="pricing.html" class="footer-link">Pricing</a>
      <a href="enterprise.html" class="footer-link">Enterprise</a>
      <a href="attestation.html" class="footer-link">Attestation</a>
      <a href="community-program.html" class="footer-link">Community Program</a>
    </div>
    <div class="footer-col">
      <div class="footer-col-title">Company</div>
      <a href="about.html" class="footer-link">About Us</a>
      <a href="contact.html" class="footer-link">Contact</a>
      <a href="terms.html" class="footer-link">Terms of Service</a>
      <a href="privacy.html" class="footer-link">Privacy Policy</a>
      <a href="dpa.html" class="footer-link">DPA</a>
      <a href="subprocessors.html" class="footer-link">Subprocessors</a>
      <a href="code-security-posture.html" class="footer-link">Code Security Posture</a>
    </div>
  </div>
  <div class="footer-bottom">
    <span>&copy; 2026 Keygraph Inc. All rights reserved.</span>
      <div class="footer-socials">
      <a href="https://www.linkedin.com/company/keygraph/" aria-label="LinkedIn">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg>
      </a>
      <a href="mailto:support@keygraph.io" aria-label="Email">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M22 4L12 13L2 4"/></svg>
      </a>
      <a href="https://github.com/KeygraphHQ/shannon" aria-label="GitHub">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"/></svg>
      </a>
      <a href="https://www.youtube.com/@KeygraphHQ" aria-label="YouTube">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19.13c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.46z"/><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"/></svg>
      </a>
    </div>
  </div>
</footer>


<div class="p2-outro-spacer" aria-hidden="true"></div>
<section class="p2-outro" id="p2-outro" aria-hidden="true">
  <div class="p2-outro-ink"></div>
  <span class="p2-outro-mark">Keygraph</span>
</section>

<script>
window.addEventListener("scroll", () => {
  document.getElementById("main-nav").classList.toggle("scrolled", window.scrollY > 50);
});
window.addEventListener("load", () => { window.scrollTo(0, 0); });
</script>


<script>
/* Condense the header once the page has scrolled past the bar itself: the
   links and login fade out and the bar's own chrome goes transparent, leaving
   the wordmark and the CTA fixed to the top. */
(function () {
  var nav = document.getElementById('main-nav');
  if (!nav) return;
  var logo = nav.querySelector('.nav-logo');
  var plate = document.querySelector('.p2-hero-plate');
  function onScroll() {
    nav.classList.toggle('is-condensed', window.scrollY > nav.offsetHeight + 8);
    /* Whether the wordmark is currently overlapping the hero plate. Measured
       from the two boxes rather than a scroll threshold, so it stays correct
       as the plate's height changes with the viewport. */
    if (logo && plate) {
      var l = logo.getBoundingClientRect(), p = plate.getBoundingClientRect();
      nav.classList.toggle('is-over-hero', l.bottom > p.top && l.top < p.bottom);
    }
  }
  onScroll();
  window.addEventListener('scroll', onScroll, { passive: true });
  window.addEventListener('resize', onScroll, { passive: true });
})();

/* Outro fade. Progress is measured from the panel's own position rather than a
   page-scroll threshold, so it behaves the same however tall the page above it
   ends up being. */
(function () {
  var outro = document.getElementById('p2-outro');
  if (!outro) return;
  var mark = outro.querySelector('.p2-outro-mark');
  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)');
  var queued = false;

  /* Where the letterforms actually start, as a percentage of the panel. Geist
     sets its ink top 0.145em below the line box top (baseline at 0.855em less
     a 0.710em cap rise), and the line box is what getBoundingClientRect
     reports -- so the gradient would begin high by that much without it. */
  function measure() {
    if (!mark) return;
    var pr = outro.getBoundingClientRect();
    var mr = mark.getBoundingClientRect();
    if (!pr.height) return;
    var fs = parseFloat(getComputedStyle(mark).fontSize) || 0;
    var inkTop = (mr.top - pr.top) + 0.145 * fs;
    outro.style.setProperty('--mark-ink-top',
      Math.max(0, Math.min(100, inkTop / pr.height * 100)).toFixed(2) + '%');
  }
  function apply() {
    queued = false;
    if (reduce.matches) return;
    var r = outro.getBoundingClientRect();
    /* 0 while the panel's top is still a full viewport away, 1 by the time it
       has risen through 70% of the viewport. */
    var span = window.innerHeight * 0.7;
    var p = 1 - (r.top - window.innerHeight * 0.3) / span;
    outro.style.setProperty('--outro', Math.max(0, Math.min(1, p)).toFixed(3));
  }
  function onScroll() {
    if (queued) return;
    queued = true;
    requestAnimationFrame(apply);
  }
  measure();
  apply();
  window.addEventListener('scroll', onScroll, { passive: true });
  window.addEventListener('resize', function () { measure(); onScroll(); }, { passive: true });
  window.addEventListener('load', measure);
  if (document.fonts && document.fonts.ready) document.fonts.ready.then(measure);
})();

// Mobile nav hamburger
(function() {
  var hamburger = document.getElementById('nav-hamburger');
  var menu = document.getElementById('nav-mobile-menu');
  if (hamburger && menu) {
    hamburger.addEventListener('click', function(e) {
      e.stopPropagation();
      hamburger.classList.toggle('open');
      menu.classList.toggle('open');
    });
    document.addEventListener('click', function(e) {
      if (!hamburger.contains(e.target) && !menu.contains(e.target)) {
        hamburger.classList.remove('open');
        menu.classList.remove('open');
      }
    });
  }
})();

/* What You Get drawings on touch screens: no hover there, so each card plays
   its hover state while its drawing is mostly on screen, and resets once it
   has left, so it plays again on the way back. The .is-in styles only apply
   under (hover: none) and (max-width: 1000px), in PAGE-WB. */
(function () {
  if (!('IntersectionObserver' in window)) return;
  var arts = document.querySelectorAll('.cp-get .sh-ag-card .sh-ag-art');
  if (!arts.length) return;
  var io = new IntersectionObserver(function (entries) {
    entries.forEach(function (e) {
      var card = e.target.closest('.sh-ag-card');
      if (e.intersectionRatio >= 0.6) card.classList.add('is-in');
      else if (!e.isIntersecting) card.classList.remove('is-in');
    });
  }, { threshold: [0, 0.6] });
  arts.forEach(function (a) { io.observe(a); });
})();
</script>
<script defer src="public/plate-field.js"></script>
<script defer src="public/lattice-crosses.js"></script>
<script defer src="public/nav-morph.js"></script>
<script defer src="/public/plain-chat.js?v=6"></script>
<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"b19c53e784cc40d2bdee6b6b412b14cd","r":1,"spa":2}' crossorigin="anonymous"></script>
</body>
</html>
