@font-face{
  font-family:"Space Grotesk";
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url("../fonts/space-grotesk-latin-400-700.woff2") format("woff2");
}
@font-face{
  font-family:"JetBrains Mono";
  font-style:normal;
  font-weight:400 500;
  font-display:swap;
  src:url("../fonts/jetbrains-mono-latin-400-500.woff2") format("woff2");
}
:root{
  --navy:#0b1437; --blue:#2b5cff; --cyan:#18b4e9; --ink:#0f1729;
  --muted:#5b6478; --line:#e6e9f2; --bg:#ffffff; --soft:#f6f8fc;
  --max:1120px;
}
*{box-sizing:border-box}
html,body{margin:0;overflow-x:hidden}
img{max-width:100%}
body{font:16px/1.6 "Space Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
.portal-page{font-family:"Space Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.portal-page button,.portal-page input,.portal-page select{font-family:inherit}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.pad{padding:64px 0}
.site-header{position:sticky;top:0;background:rgba(255,255,255,.92);backdrop-filter:saturate(1.4) blur(6px);border-bottom:1px solid var(--line);z-index:10}
.nav{display:flex;align-items:center;gap:24px;height:64px}
.brand{display:flex;align-items:center}
.menu{display:flex;gap:22px;margin-left:auto}
.menu a{color:var(--ink);font-weight:500;font-size:14px}
.menu a.is-active{color:var(--blue)}
.btn{display:inline-block;padding:9px 18px;border-radius:8px;font-family:inherit;font-weight:600}
.btn-portal{padding:6px 14px;background:var(--navy);color:#fff;font-size:14px;font-weight:500;line-height:1.4}
.btn-portal:hover{background:#23336f;text-decoration:none}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:#1c47e0;text-decoration:none}
.hero{position:relative;isolation:isolate;overflow:hidden;background:#fff;padding:96px 0 72px;border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;inset:0;width:100%;max-width:var(--max);margin:0 auto;background-image:linear-gradient(90deg,#fff 0%,#fff 32%,rgba(255,255,255,.96) 42%,rgba(255,255,255,.54) 56%,rgba(255,255,255,.08) 72%,rgba(255,255,255,.68) 94%,#fff 100%),linear-gradient(180deg,rgba(255,255,255,.06) 0%,rgba(255,255,255,0) 14%,rgba(255,255,255,0) 82%,rgba(255,255,255,.18) 88%,#fff 100%),url("../img/hero-defensive-intelligence.png");background-position:center,center,right center;background-size:100% 100%,100% 100%,auto 112%;background-repeat:no-repeat;z-index:0;pointer-events:none}
.hero>.wrap{position:relative;z-index:1}
.hero h1{font-size:44px;line-height:1.15;letter-spacing:-.02em;margin:0 0 16px;overflow-wrap:break-word}
.hero p.lead{font-size:15px;color:var(--muted);max-width:none;margin:0 0 28px;white-space:nowrap}
.grid{display:grid;gap:20px}
.grid.cols-4{grid-template-columns:repeat(4,1fr)}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-2{grid-template-columns:repeat(2,1fr)}
.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px}
.card h3{margin:.2em 0 .4em;font-size:18px}
.card p{color:var(--muted);margin:0}
.eyebrow{color:var(--blue);font-family:"JetBrains Mono",monospace;font-weight:500;letter-spacing:.08em;text-transform:uppercase;font-size:12px}
.pipeline{display:flex;flex-wrap:wrap;gap:10px;align-items:center;color:var(--muted)}
.pipeline .step{background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-weight:600;color:var(--ink)}
.section-title{font-size:30px;letter-spacing:-.01em;margin:0 0 8px;overflow-wrap:break-word}
.blog-hero{padding:76px 0 60px;background:linear-gradient(135deg,#fff 0%,var(--soft) 62%,#eef4ff 100%);border-bottom:1px solid var(--line)}
.blog-hero h1{font-size:42px;line-height:1.15;letter-spacing:-.02em;margin:0 0 14px}
.blog-hero .lead{max-width:700px;color:var(--muted);font-size:17px;margin:0}
.blog-feature{display:grid;grid-template-columns:220px 1fr;overflow:hidden;background:var(--navy);color:#fff;border-radius:18px;margin-bottom:56px}
.blog-feature-mark{min-height:320px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(145deg,var(--blue),#15349f);color:#fff}
.blog-feature-mark span{font-size:13px;font-weight:700;letter-spacing:.12em;opacity:.8}
.blog-feature-mark strong{font-size:34px;line-height:.95;letter-spacing:-.04em}
.blog-feature-copy{padding:42px 46px;align-self:center}
.blog-feature-copy h2{font-size:30px;line-height:1.2;letter-spacing:-.02em;margin:16px 0 14px;max-width:680px}
.blog-feature-copy p{color:#c7ccdd;max-width:720px;margin:0}
.blog-feature .chip{color:#e7ebff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
.blog-meta{display:flex;gap:10px 16px;align-items:center;flex-wrap:wrap;color:var(--muted);font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}
.blog-feature .blog-meta{color:#aeb8d5}
.blog-meta span:first-child{color:var(--blue)}
.blog-feature .blog-meta span:first-child{color:#78d5ff}
.blog-section-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:22px}
.blog-section-head>p{color:var(--muted);max-width:360px;margin:0 0 6px}
.blog-card{display:flex;flex-direction:column;min-height:280px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.blog-card:hover{transform:translateY(-3px);border-color:#cfd8f4;box-shadow:0 14px 30px rgba(11,20,55,.07)}
.blog-card h3{font-size:21px;line-height:1.3;margin:24px 0 12px}
.blog-card p{flex:1}
.blog-read-time{display:block;margin-top:24px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500}
.blog-cta{display:flex;align-items:center;justify-content:space-between;gap:32px}
.blog-cta p{color:var(--muted);margin:4px 0 0}
.site-footer{background:var(--navy);color:#c7ccdd;padding:48px 0;margin-top:64px}
.footer-logo{display:block;width:160px;height:auto;margin-bottom:16px}
.site-footer p{margin:6px 0}
.site-footer .fine{color:#8b93ad;font-size:13px;white-space:nowrap}
.site-footer .copyright{color:#7b839b;font-family:"JetBrains Mono",monospace;font-size:12px;margin-top:16px;border-top:1px solid rgba(255,255,255,.08);padding-top:16px}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px}
table.data{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
table.data th,table.data td{white-space:nowrap}
table.data th,table.data td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);font-size:14px}
table.data th{background:var(--soft);color:var(--muted);font-weight:600}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500;background:var(--soft);border:1px solid var(--line)}
.badge.l1{color:#0a7d4b} .badge.l2{color:#8a5a00} .badge.l3{color:#9b1c31}
/* Delivery-status pill (Available / Logic Fallback / Not Feasible / ...) with a colored dot */
.status{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500;border:1px solid var(--line);background:#fff}
.status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.ds-available{color:#0a7d4b}.ds-logic{color:#1c6fb0}.ds-na{color:#5b6478}
.ds-nf{color:#9b1c31}.ds-dev{color:#8a5a00}.ds-restricted{color:#6d28d9}.ds-none{color:#98a1b3}
/* Native-rule format chips */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{display:inline-block;padding:3px 10px;border-radius:6px;font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500;background:var(--soft);border:1px solid var(--line);color:var(--ink)}
/* Detection/Prevention delivery lane card */
.lane{border:1px solid var(--line);border-radius:14px;padding:20px;background:#fff}
.lane .lane-sub{color:var(--muted);font-size:14px;margin:2px 0 14px}
.lane .row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.lane .row .name{font-weight:600;font-size:14px}
/* Structured-record anatomy list */
.anatomy{list-style:none;padding:0;margin:18px 0 0}
.anatomy li{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
.anatomy .k{font-weight:600;min-width:200px}
.anatomy .v{color:var(--muted)}
.locked{opacity:.75}
.locked .name{color:var(--muted)}
@media(max-width:560px){.anatomy li{flex-direction:column;gap:2px}.anatomy .k{min-width:0}}
/* Portal sub-nav sign-out */
.portal-signout{display:flex;align-items:center}
/* Explorer filter form */
.filters{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end;margin:24px 0 8px;padding:20px;background:var(--soft);border:1px solid var(--line);border-radius:14px}
.filters .field{margin:0;min-width:140px}
.filters .field-grow{flex:1 1 240px}
.filters .field-actions{display:flex;gap:8px}
.filters select,.filters input{width:100%;padding:9px 11px;border:1px solid #cfd6e6;border-radius:9px;font-family:inherit;font-size:14px;background:#fff}
.filters .field-actions .btn{padding:9px 16px}
.is-disabled{opacity:.45;pointer-events:none}
/* Pagination */
.pager{display:flex;align-items:center;gap:16px;margin-top:22px}
.pager-info{color:var(--muted);font-size:14px}
/* Package-detail tabs (progressive enhancement; panels stack without JS) */
.tabs .tablist{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:24px 0 20px;overflow-x:auto}
.tabs .tablist [data-tab]{appearance:none;background:none;border:0;border-bottom:2px solid transparent;padding:10px 16px;font:inherit;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap}
.tabs .tablist [data-tab].is-active{color:var(--ink);border-bottom-color:var(--blue)}
.tabs .panel + .panel{margin-top:32px}
.js-tabs .panel + .panel{margin-top:0}
.panel h3{margin:0 0 4px}
pre.code{background:#0f1729;color:#e7ebf5;border-radius:10px;padding:16px;overflow-x:auto;font-family:"JetBrains Mono",monospace;font-size:13px;line-height:1.5;margin:8px 0 0;white-space:pre}
.component{border-top:1px solid var(--line);padding:16px 0}
.component:first-child{border-top:0}
.component .chead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.component .cmeta{color:var(--muted);font-size:13px;margin:2px 0 0}
.authbox{max-width:420px;margin:56px auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:32px}
.authbox h1{font-size:24px;margin:0 0 6px}
.portal-page .card{padding-block:20px}
.portal-page .lane{padding-block:16px}
.portal-page .filters{padding-block:16px}
.portal-page .authbox{margin-block:44px;padding-block:26px}
.portal-page .cmeta,.portal-page .pager-info,.portal-page .portal-tag{font-family:"JetBrains Mono",monospace;font-weight:400}
.contact-page{padding:48px 0;background:linear-gradient(180deg,#fff 0%,#f8faff 100%)}
.contact-layout{display:grid;grid-template-columns:minmax(0,.95fr) minmax(400px,1fr);gap:52px;align-items:start}
.contact-intro{padding:20px 0;max-width:450px}
.contact-intro h1{font-size:28px;line-height:1.18;letter-spacing:-.025em;margin:6px 0 14px;white-space:nowrap}
.contact-lead{color:var(--muted);font-size:15px;margin:0}
.contact-points{margin-top:28px;border-top:1px solid var(--line)}
.contact-point{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.contact-point>span{color:var(--blue);font-size:12px;font-weight:700;letter-spacing:.08em}
.contact-point strong{font-size:15px}
.contact-point p{color:var(--muted);font-size:13px;margin:2px 0 0}
.contact-form-panel{width:100%;max-width:500px;min-width:0;margin-top:28px;justify-self:end}
.contact-form-panel>.notice,.contact-form-panel>.error{margin:0 0 12px}
.contact-form{padding:26px;border-color:#dce2f0;box-shadow:0 14px 38px rgba(11,20,55,.07)}
.contact-form-head{padding-bottom:14px;margin-bottom:3px;border-bottom:1px solid var(--line)}
.contact-form-head h2{font-size:21px;margin:0 0 2px}
.contact-form-head p{color:var(--muted);font-size:13px;margin:0}
.contact-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.contact-form .field{margin:10px 0}
.field{margin:14px 0}
.field label{display:block;font-weight:600;font-size:14px;margin-bottom:6px}
.field input,.field select{width:100%;padding:9px 11px;border:1px solid #cfd6e6;border-radius:8px;font:inherit;font-size:14px;color:var(--ink);background:#fff}
.field input:focus,.field select:focus{outline:3px solid rgba(43,92,255,.13);border-color:var(--blue)}
.field select{cursor:pointer}
.contact-submit{width:100%;margin-top:8px;appearance:none;border:0;box-shadow:none;cursor:pointer;font:inherit;transition:background .2s ease,transform .2s ease}
.contact-submit:hover{transform:translateY(-1px)}
.contact-submit:focus-visible{outline:3px solid rgba(43,92,255,.25);outline-offset:2px}
.notice{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:10px 12px;border-radius:9px;font-size:14px}
.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;padding:10px 12px;border-radius:9px;font-size:14px}
.hint{color:var(--muted);font-size:13px;margin-top:10px}
.stat{display:flex;flex-direction:column;gap:2px}
.stat .n{font-size:30px;font-weight:700}
.stat .l{color:var(--muted);font-size:13px}
/* Utility classes (kept in CSS so the strict CSP style-src 'self' — no inline styles — holds) */
.band{background:var(--soft);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.soft{background:var(--soft)}
.center{text-align:center}
.mx-auto{margin:0 auto}
.w-full{width:100%}
.form-narrow{max-width:560px}
.notice-ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}
.btn-outline{border:1px solid var(--line)}
.portal-tag{margin-left:auto;color:var(--muted);font-size:14px}
.dash-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.my-24{margin:24px 0}
.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-22{margin-top:22px}.mt-24{margin-top:24px}
.mt-28{margin-top:28px}.mt-32{margin-top:32px}.mt-36{margin-top:36px}.mt-40{margin-top:40px}
@media(max-width:860px){
  .grid.cols-4,.grid.cols-3{grid-template-columns:1fr 1fr}
  .hero::before{background-position:center,center,right center;background-size:100% 100%,100% 100%,auto 110%}
  .hero p.lead{max-width:640px;white-space:normal}
  .contact-layout{grid-template-columns:1fr;gap:28px}
  .contact-intro{padding:0;max-width:680px}
  .contact-form-panel{margin-top:0;justify-self:start}
  .blog-feature{grid-template-columns:160px 1fr}
  .blog-feature-mark{min-height:350px;padding:22px}
  .blog-feature-mark strong{font-size:28px}
  .blog-feature-copy{padding:32px}
  .nav{flex-wrap:wrap;height:auto;padding:10px 0;gap:8px 16px}
  .brand{order:1}
  .btn-portal,.portal-signout{order:2;margin-left:auto}
  .menu{order:3;flex-basis:100%;margin-left:0;gap:14px 18px;flex-wrap:wrap}
}
@media(max-width:560px){
  .grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}
  .blog-hero{padding:52px 0 44px}
  .blog-hero h1{font-size:31px}
  .blog-feature{grid-template-columns:1fr}
  .blog-feature-mark{min-height:150px}
  .blog-feature-copy{padding:28px 24px}
  .blog-feature-copy h2{font-size:25px}
  .blog-section-head,.blog-cta{align-items:flex-start;flex-direction:column}
  .contact-intro h1{font-size:27px;white-space:normal}
  .contact-form{padding:24px 20px}
  .contact-field-grid{grid-template-columns:1fr;gap:0}
  .site-footer .fine{white-space:normal}
  .hero{padding:56px 0 48px}
  .hero::before{opacity:.4;background-position:center,center,calc(100% + 24px) center;background-size:100% 100%,100% 100%,auto 106%}
  .hero h1{font-size:30px}
  .hero h1 br{display:none}
  .hero p.lead{font-size:16px}
  .pad{padding:48px 0}
}
