/* Nulvex staging preview (WEB-04). Nulvex palette and tone; layout rhythm, type scale and polish after Apple product pages.
   Below 1024 px all content is centered (standing rule). 1024 px and up use the composed layouts. */

/* Self-hosted brand font (Manrope, SIL OFL 1.1), first in the stack on every device, as on the earlier nulvex.com.
   The file is expected at assets/fonts/Manrope-latin-wght.woff2. If it is absent the stack falls back cleanly. */
@font-face{font-family:"Manrope";src:url("fonts/Manrope-latin-wght.woff2") format("woff2");font-weight:200 800;font-style:normal;font-display:swap}
:root{
  --bg:#080f16; --bg-2:#0b141c; --panel:#101a23; --panel-2:#14222d;
  --text:#f0f4f3; --muted:#a1b0b9; --dim:#7d8f9a; --line:#26343d;
  --accent:#69cce3; --accent-2:#a9e6f3; --accent-ink:#081a21;
  --paper:#eff2ee; --paper-text:#13212a;
  --success:#94d7b0; --warn:#e3bb76; --crit:#ff6b6b; --high:#ff9f5a; --med:#ffd24d;
  --font:Manrope,"Instrument Sans",Aptos,"Segoe UI",Arial,sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  --r-sm:12px; --r:22px; --r-lg:28px; --pill:999px;
  --max:1180px; --gut:16px;
  --ease:cubic-bezier(.25,.1,.25,1);
  color-scheme:dark;
}
@media(min-width:768px){:root{--gut:32px}}
@media(min-width:1440px){:root{--max:1240px}}

/* Base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:72px}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--font);letter-spacing:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
img,svg{max-width:100%;height:auto;vertical-align:middle}
a{color:inherit;text-decoration:none}
p a,li a,dd a,td a,.prose a,.article-body a,small a,address a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
p a:hover,li a:hover,dd a:hover,td a:hover{text-decoration-thickness:2px}
h1,h2,h3,h4{margin:0;color:var(--text);text-wrap:balance;overflow-wrap:break-word}
p,ul,ol,dl,dd,figure,pre,blockquote{margin:0}
p,li,dd,summary{overflow-wrap:break-word}
p{color:var(--muted)}
p+p{margin-top:16px}
strong{font-weight:650;color:var(--text)}
code,pre,.mono{font-family:var(--mono)}
code{font-size:.88em}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
button{cursor:pointer}
::selection{background:#69cce355;color:#fff}
:focus{outline:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;left:16px;top:-80px;z-index:1000;padding:12px 18px;border-radius:var(--pill);background:var(--accent);color:var(--accent-ink);font-weight:600}
.skip:focus{top:12px}
main{display:block}
main:focus{outline:none}
.container{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto}

/* Global navigation: thin, translucent, centered links */
.gn{position:relative;z-index:120;background:rgba(8,15,22,.82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.07)}
.gn-bar{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto;min-height:56px;display:flex;align-items:center;gap:24px}
.gn-logo{display:inline-flex;align-items:center;min-height:44px;flex-shrink:0}
.gn-logo img{width:104px;height:auto}
.gn-links{flex:1;display:flex;justify-content:center;align-items:center;gap:4px}
.gn-links a,.gn-svc{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font-size:13px;font-weight:500;color:#c6d1d5;background:none;border:0;border-radius:8px;letter-spacing:0;transition:color .2s}
.gn-links a:hover,.gn-svc:hover,.gn-links [aria-current=page],.gn-svc[aria-expanded=true]{color:#fff}
.gn-links [aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent)}
.gn-svc::after{content:"";width:6px;height:6px;margin-left:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);transition:transform .2s}
.gn-svc[aria-expanded=true]::after{transform:translateY(1px) rotate(-135deg)}
.gn-cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:var(--pill);background:var(--accent);color:var(--accent-ink);font-size:13px;font-weight:650;letter-spacing:0;flex-shrink:0}
.gn-cta:hover{background:var(--accent-2)}
.gn-menu{display:none;width:44px;height:44px;margin-left:auto;border:0;border-radius:10px;background:none;position:relative;flex-shrink:0}
.gn-menu span{position:absolute;left:12px;right:12px;height:1.5px;background:#e9f0f1;border-radius:2px;transition:transform .25s var(--ease),top .25s var(--ease)}
.gn-menu span:first-child{top:17px}.gn-menu span:last-child{top:26px}
.gn-menu[aria-expanded=true] span:first-child{top:21px;transform:rotate(45deg)}
.gn-menu[aria-expanded=true] span:last-child{top:21px;transform:rotate(-45deg)}
.gn-panel{position:absolute;left:0;right:0;top:100%;background:rgba(8,15,22,.97);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-bottom:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,.45);animation:drop .28s var(--ease)}
@keyframes drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.gn-panel-in{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;padding:36px 0 44px}
.gn-group h2{font:600 12px/1.4 var(--font);letter-spacing:.02em;color:var(--dim);margin-bottom:12px}
.gn-group ul{list-style:none;padding:0;margin:0}
.gn-group li a{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 0;font-size:15px;color:#dfe7e9}
.gn-group li a strong{font-size:22px;font-weight:650;letter-spacing:-.02em}
.gn-group li a small{font-size:12px;color:var(--dim)}
.gn-group li a:hover,.gn-group li a:hover strong{color:var(--accent)}
.gn-group a[aria-current=page],.gn-group a[aria-current=page] strong{color:var(--accent)}
.gn-short{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:16px}
.gn-short a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--accent)}
.gn-short a::after,.text-link::after{content:"";width:6px;height:6px;margin-left:8px;border:solid currentColor;border-width:1.5px 1.5px 0 0;transform:rotate(45deg)}
.gn-sig{margin-top:18px;font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.gn-mobile-only{display:none}
html.menu-open{overflow:hidden}

/* Local navigation (sticky page bar with one action) */
.ln{position:sticky;top:0;z-index:110;background:rgba(8,15,22,.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.08)}
.ln-in{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.ln-title{min-width:0;overflow-wrap:break-word;font-size:21px;font-weight:650;letter-spacing:-.02em;line-height:1.2;padding:6px 0}
.ln-cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:var(--pill);background:var(--accent);color:var(--accent-ink);font-size:14px;font-weight:650;letter-spacing:0;text-align:center;flex-shrink:0;line-height:1.2}
.ln-cta:hover{background:var(--accent-2)}

/* Breadcrumb: Home / Section / Page */
.crumbs{width:min(var(--max),calc(100% - 2*var(--gut)));margin:0 auto;padding-top:20px;position:relative;z-index:2}
.article-shell .crumbs,.cvelib-container .crumbs{width:auto;padding-top:0;margin-bottom:28px}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:2px 0;font-size:14px;color:var(--dim)}
.crumbs li{display:inline-flex;align-items:center}
.crumbs li+li::before{content:"/";margin:0 10px;color:#4c5f6a}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted)}
.crumbs a:hover{color:var(--accent)}
.crumbs [aria-current]{color:var(--text)}

/* Type scale */
h1{font-size:clamp(35px,5.5vw,49px);line-height:1.035;font-weight:560;letter-spacing:-.045em}
h2{font-size:clamp(30px,4.4vw,38px);line-height:1.1;font-weight:560;letter-spacing:-.045em}
h3{font-size:23px;line-height:1.1;font-weight:560;letter-spacing:-.045em}
h4{font-size:20px;line-height:1.1;font-weight:560;letter-spacing:-.045em}
.lede{font-size:clamp(19px,1.7vw,22px);line-height:1.45;color:var(--muted);max-width:720px;margin-top:20px}
.accent{color:var(--accent)}
h1 .accent,h2 .accent{background:linear-gradient(100deg,var(--accent) 10%,var(--accent-2) 60%,#e3f7fb);-webkit-background-clip:text;background-clip:text;color:transparent}
.eyebrow{display:flex;align-items:center;gap:10px;font:600 12px/1.5 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:18px}
.eyebrow::before{content:"";width:7px;height:7px;background:currentColor;flex-shrink:0}
.label,.cvelib-mini-label{font:600 11px/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.small,small{font-size:14px}
.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:var(--pill);border:1px solid var(--line);font:600 12px/1.4 var(--mono);letter-spacing:.06em;color:var(--muted);margin-bottom:18px}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.badge-cyan{color:var(--accent);border-color:rgba(105,204,227,.35);background:rgba(105,204,227,.07)}

/* Buttons and links */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 24px;border-radius:var(--pill);background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.2;text-align:center;max-width:100%;transition:background .2s,border-color .2s,color .2s,transform .2s}
.btn:hover{background:var(--accent-2);border-color:var(--accent-2)}
.btn-outline{background:transparent;color:var(--text);border-color:rgba(240,244,243,.32)}
.btn-outline:hover{background:rgba(240,244,243,.08);border-color:var(--text)}
.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:32px}
.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:17px;font-weight:500;color:var(--accent)}
.text-link:hover{text-decoration:underline;text-underline-offset:4px}

/* Hero tile: full-bleed dark, centered, RADAR sweep dial */
.tile-hero{position:relative;overflow:hidden;isolation:isolate;text-align:center;padding:72px 0 96px;background:radial-gradient(120% 70% at 50% 0%,rgba(105,204,227,.13),transparent 62%),var(--bg)}
.tile-hero .container{position:relative;z-index:1}
.tile-hero h1{max-width:1000px;margin-inline:auto}
.tile-hero .lede,.tile-hero p.lede{margin-inline:auto}
.tile-hero .eyebrow{display:inline-flex;margin:0 auto 24px;padding:7px 16px;border-radius:var(--pill);border:1px solid rgba(105,204,227,.32);background:rgba(105,204,227,.07);letter-spacing:.12em}
.tile-hero .eyebrow::before{width:6px;height:6px;border-radius:50%}
.tile-hero .actions,.tile-hero .hero-note,.tile-hero .security-meta{justify-content:center}
.dial{position:absolute;z-index:0;left:50%;top:-8%;width:min(1180px,150vw);aspect-ratio:1;transform:translateX(-50%);pointer-events:none;border-radius:50%;opacity:.55;
  background:
   radial-gradient(circle,transparent 0 calc(50% - 1px),rgba(105,204,227,.22) calc(50% - 1px) 50%,transparent 50%),
   repeating-radial-gradient(circle,transparent 0 calc(12.5% - 1px),rgba(105,204,227,.08) calc(12.5% - 1px) 12.5%),
   linear-gradient(transparent calc(50% - .5px),rgba(105,204,227,.07) calc(50% - .5px) calc(50% + .5px),transparent calc(50% + .5px)),
   linear-gradient(90deg,transparent calc(50% - .5px),rgba(105,204,227,.07) calc(50% - .5px) calc(50% + .5px),transparent calc(50% + .5px));
  -webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);mask:radial-gradient(circle,#000 30%,transparent 70%)}
.dial::before{content:"";position:absolute;inset:1.5%;border-radius:50%;background:repeating-conic-gradient(rgba(105,204,227,.35) 0 .25deg,transparent .25deg 3deg);-webkit-mask:radial-gradient(circle,transparent 0 calc(50% - 14px),#000 calc(50% - 13px) 50%,transparent 50%);mask:radial-gradient(circle,transparent 0 calc(50% - 14px),#000 calc(50% - 13px) 50%,transparent 50%)}
.dial::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(105,204,227,.30),rgba(105,204,227,.06) 40deg,transparent 70deg);animation:sweep 9s linear infinite}
@keyframes sweep{to{transform:rotate(1turn)}}
.dial-off::after,.hero-visual.dial-off::before{animation-play-state:paused}

/* Home hero */
.hero .hero-grid{display:block}
.hero .hero-copy{max-width:980px;margin:0 auto}
.hero h1{font-size:clamp(42px,6.8vw,52px);letter-spacing:-.045em;line-height:1.035}
.hero .hero-copy .lede{font-size:clamp(19px,1.8vw,24px)}
.hero-note{display:flex;align-items:center;gap:10px;margin-top:24px;font-size:15px;color:var(--muted)}
.hero-note::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 4px rgba(148,215,176,.15);flex-shrink:0}
.hero-visual{position:relative;margin:64px auto 0;max-width:980px;min-height:440px;border-radius:var(--r-lg);overflow:hidden;border:1px solid #23404c;background:radial-gradient(60% 60% at 50% 55%,#173444,#0b1822 62%,#08111a);text-align:left;isolation:isolate}
.hero-visual::before{content:"";position:absolute;left:50%;top:55%;width:560px;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;z-index:-1;background:repeating-radial-gradient(circle,transparent 0 calc(16.66% - 1px),rgba(105,204,227,.22) calc(16.66% - 1px) 16.66%),conic-gradient(from 0deg,rgba(105,204,227,.38),transparent 70deg);-webkit-mask:radial-gradient(circle,#000 55%,transparent 71%);mask:radial-gradient(circle,#000 55%,transparent 71%);animation:sweep2 9s linear infinite}
@keyframes sweep2{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(1turn)}}
.hero-visual::after{content:"";position:absolute;left:50%;top:55%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 8px rgba(105,204,227,.15),0 0 40px 10px rgba(105,204,227,.35)}
.visual-top{position:absolute;top:24px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:center;gap:12px;font:600 11px/1.4 var(--mono);letter-spacing:.14em;color:#9fb3bd}
.visual-top .badge{margin:0;font-size:11px;color:var(--accent);border-color:#2a4a58}
.floating-note{position:absolute;left:28px;bottom:76px;width:240px;padding:16px 18px;border-radius:16px;border:1px solid #34505b;background:rgba(17,35,45,.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.floating-note strong{display:block;font-size:17px;margin-top:6px}
.floating-note small{display:block;font-size:13px;color:#9fb3bd;margin-top:4px}
.art-caption{position:absolute;left:28px;right:28px;bottom:22px;display:flex;justify-content:space-between;gap:16px;font:500 11px/1.5 var(--mono);letter-spacing:.08em;color:#8ca1ae}

/* Service path: segmented progress line under the hero */
.path-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:-40px;position:relative;z-index:2}
.path-stop{display:block;padding:18px 4px 6px;border-top:2px solid var(--line);transition:border-color .2s}
.path-stop:first-child{border-top-color:var(--accent)}
.path-stop:hover{border-top-color:var(--accent)}
.path-stop .label{display:block;margin-bottom:6px}
.path-stop strong{display:block;font-size:21px;font-weight:650;letter-spacing:-.02em}
.path-stop p{font-size:14px;margin-top:2px}
.path-stop:hover strong{color:var(--accent)}

/* Sections */
.section{padding:120px 0}
.section-sm{padding:88px 0}
.border-top{border-top:1px solid var(--line)}
.section-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:18px;margin:0 auto 56px;max-width:900px}
.section-head .intro{max-width:880px}
.section-head .intro>.eyebrow,.section-head>div>.eyebrow{justify-content:center}
.section-head h2{margin-inline:auto}
.section-head>p{max-width:680px;font-size:19px}
.section-head .lede{margin-inline:auto}
.container>.lede{margin:0 auto 48px;text-align:center}
.paper{background:var(--paper);color:var(--paper-text);--text:#12232b;--muted:#4c5e66;--dim:#566a72;--line:#d3ddda;--panel:#ffffff;--panel-2:#e6eee9;--accent:#0f6b80;--accent-2:#0b5566;--accent-ink:#ffffff}
.paper .btn{background:#10242e;border-color:#10242e;color:#fff}
.paper .btn:hover{background:#1b3a48;border-color:#1b3a48}
.paper .btn-outline{background:transparent;color:#12232b;border-color:#a9bcbf}
.paper .btn-outline:hover{background:rgba(16,36,46,.06);border-color:#12232b}
.paper h1 .accent,.paper h2 .accent{background:none;color:var(--accent)}
.section-soft,.rh-latest,.rh-method-section{background:var(--bg-2)}

/* Two-column composition */
.split{display:grid;grid-template-columns:1fr;gap:48px;align-items:center}
.split.start{align-items:start}
.text-columns{display:grid;gap:32px}

/* Cards */
.grid-2,.grid-3,.grid-4,.steps,.pricing-cards,.rh-latest-grid,.rh-method-grid,.rh-publication-grid,.od-domains,.od-details{display:grid;gap:20px}
.scope-card,.principle,.step-card,.outcome-card,.module-card,.pricing-card,.rh-method,.rh-latest-item,.rh-publication,.nvx-method-card,.security-summary,.form-panel,.architecture-diagram,.pricing-intro,.rh-feature,.rh-disclosure,.cvelib-feature,.disclosure-strip{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:32px}
.paper .scope-card,.paper .principle,.paper .step-card,.paper .outcome-card,.paper .module-card,.paper .pricing-card,.paper .architecture-diagram{border-color:transparent;box-shadow:0 1px 2px rgba(16,36,46,.05),0 8px 28px rgba(16,36,46,.07)}
.scope-card h3,.principle h3,.step-card h3,.outcome-card h3,.module-card h3,.pricing-card h3,.rh-method h3{margin-bottom:12px}
.scope-card p,.principle p,.step-card p,.outcome-card p,.module-card p,.rh-method p{font-size:16px;line-height:1.6}
.scope-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.scope-top span,.principle .label{font:600 12px/1.4 var(--mono);letter-spacing:.08em;color:var(--dim)}
.principle .label{display:block;margin-bottom:20px}
.step-num,.rh-method-n{display:block;font-size:48px;line-height:1;font-weight:700;letter-spacing:-.04em;color:var(--accent);margin-bottom:22px;font-variant-numeric:tabular-nums}
.number-index{font-size:64px;line-height:1;font-weight:700;letter-spacing:-.05em;color:var(--accent);margin-bottom:22px}
.module-card{display:flex;flex-direction:column;transition:transform .3s var(--ease),border-color .3s}
.module-card:hover{transform:translateY(-4px);border-color:rgba(105,204,227,.55)}
.paper .module-card:hover{border-color:transparent;box-shadow:0 2px 4px rgba(16,36,46,.06),0 18px 40px rgba(16,36,46,.12)}
.module-card h3::after{content:" \203A";color:var(--accent);font-weight:500}
.module-card>p{flex:1}
.card-foot{order:-1;margin-bottom:18px;font:600 11px/1.4 var(--mono);letter-spacing:.12em;color:var(--dim);display:flex;flex-wrap:wrap;gap:8px}
.editorial-card{padding:0;overflow:hidden}
.editorial-art{height:170px;position:relative;background:radial-gradient(circle at 50% 120%,#1a3a4a,#0d1b25 70%);border-bottom:1px solid var(--line)}
.editorial-art::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(105,204,227,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(105,204,227,.09) 1px,transparent 1px);background-size:24px 24px;-webkit-mask:radial-gradient(ellipse,#000,transparent 75%);mask:radial-gradient(ellipse,#000,transparent 75%)}
.editorial-art::after{content:"";position:absolute;left:50%;top:50%;width:120px;height:120px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(105,204,227,.45);box-shadow:inset 0 0 0 22px rgba(8,15,22,.2),inset 0 0 0 23px rgba(105,204,227,.25)}
.card-content{padding:28px 30px 32px;display:flex;flex-direction:column;flex:1}
.card-content .label{margin-bottom:10px}
.card-content .card-foot{order:0;margin:20px 0 0;color:var(--accent)}

/* Service ladder */
.service-ladder{border-top:1px solid var(--line)}
.ladder-row{display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,1.3fr) 24px;gap:28px;align-items:center;padding:30px 4px;border-bottom:1px solid var(--line);transition:background .2s}
.ladder-row::after{content:"";width:9px;height:9px;border:solid var(--accent);border-width:2px 2px 0 0;transform:rotate(45deg)}
.ladder-row:hover{background:rgba(105,204,227,.04)}
.ladder-row:hover h3{color:var(--accent)}
.ladder-row .step{font:600 14px var(--mono);color:var(--dim)}
.ladder-row h3{font-size:clamp(26px,3vw,36px);letter-spacing:-.03em}
.ladder-row small{display:block;margin-top:6px;font:600 11px/1.4 var(--mono);letter-spacing:.12em;color:var(--accent);text-transform:uppercase}
.ladder-row p{font-size:16px}

/* Lists and callouts */
.deliverable-card{display:flex;align-items:center;gap:16px;padding:20px 4px;border-bottom:1px solid var(--line);font-size:18px}
.deliverable-card::before,.check-list li::before,.od-safety li::before{content:"";flex-shrink:0;width:22px;height:22px;border-radius:50%;background:rgba(105,204,227,.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m7 12.5 3.2 3.2L17 9' fill='none' stroke='%2369cce3' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat}
.paper .deliverable-card::before,.paper .check-list li::before{background-color:rgba(15,107,128,.1);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m7 12.5 3.2 3.2L17 9' fill='none' stroke='%230f6b80' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.check-list,.od-safety{list-style:none;padding:0;margin:24px 0 0}
.check-list li,.od-safety li{display:flex;align-items:flex-start;gap:12px;margin-top:12px;font-size:17px;color:var(--muted)}
.boundary{margin-top:28px;padding:22px 24px;border-radius:18px;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);font-size:16px;color:var(--muted)}
.boundary strong{display:block;margin-bottom:6px}
.security-warning{border-left-color:var(--warn)}
.pullquote{margin:40px 0;padding:8px 0 8px 28px;border-left:2px solid var(--accent);font-size:clamp(22px,2.4vw,28px);line-height:1.35;letter-spacing:-.02em;color:var(--text);font-weight:500}

/* FAQ accordion */
.faq-list{border-top:1px solid var(--line);width:100%}
.faq-list details{border-bottom:1px solid var(--line)}
.faq-list summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px;padding:18px 0;font-size:19px;font-weight:600;letter-spacing:-.015em;cursor:pointer;list-style:none}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"";flex-shrink:0;width:28px;height:28px;border-radius:50%;background:var(--panel-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 6v12M6 12h12' stroke='%2369cce3' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/16px no-repeat;transition:transform .3s var(--ease)}
.faq-list details[open] summary::after{transform:rotate(45deg)}
.faq-list details>div{padding:0 44px 24px 0;font-size:17px;line-height:1.6;color:var(--muted)}
.faq-list details>div p+p{margin-top:12px}

/* Closing call to action */
.cta-band{padding:120px 0;text-align:center;background:radial-gradient(70% 90% at 50% 100%,rgba(105,204,227,.2),transparent 70%),linear-gradient(180deg,var(--bg),#0a1a22);border-top:1px solid var(--line)}
.cta-band .container{display:flex;flex-direction:column;align-items:center;gap:32px}
.cta-band h2{font-size:clamp(36px,5.4vw,68px);max-width:900px;margin-inline:auto}
.cta-band p{font-size:19px;max-width:620px;margin:18px auto 0}

/* Sample report card */
.report-stack{position:relative;padding:24px}
.report-stack::before{content:"";position:absolute;inset:14px 48px;border-radius:var(--r);background:#16232c;border:1px solid #2b3c45;transform:rotate(-4deg)}
.report-mini{position:relative;max-width:560px;margin:0 auto;background:#f6f7f3;color:#172830;border-radius:var(--r);padding:32px;box-shadow:0 24px 70px rgba(0,0,0,.28);text-align:left;--muted:#5a6a71;--dim:#5f737c;--text:#172830}
.report-mini-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:1px solid #d4ded9;font:600 12px var(--mono);letter-spacing:.16em}
.report-mini .label{display:block;margin-top:22px}
.report-mini h3{font-size:26px;margin-top:8px;color:#172830}
.report-mini p{font-size:14px;margin:6px 0 16px}
.mini-finding{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 0;border-top:1px solid #d4ded9}
.mini-finding .num{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:#dfede7;font:600 11px var(--mono);color:#36565f}
.mini-finding strong{font-size:15px;font-weight:600;color:#172830}
.mini-finding small{font:600 10px var(--mono);letter-spacing:.06em;color:#6b5323;background:#f1e8d6;border:1px solid #dccaa6;padding:4px 7px;border-radius:6px}
.report-mini-bottom{margin-top:14px;font:600 10px var(--mono);letter-spacing:.1em;color:#5f737c}

/* Big-statement strip */
.metric-strip{display:grid;gap:16px}
.metric-strip>div{padding:32px 28px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line);text-align:center}
.metric-strip strong{display:block;font-size:clamp(24px,2.6vw,32px);font-weight:700;letter-spacing:-.03em;color:var(--accent)}
.metric-strip small{display:block;margin-top:10px;font-size:16px;color:var(--muted)}
@media(min-width:1025px){.metric-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Architecture list */
.architecture-diagram>.label{display:block;margin-bottom:8px}
.arch-tier{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}
.arch-tier:last-of-type{border-bottom:0}
.arch-tier strong{font-size:18px;font-weight:600}
.arch-tier span{font:600 11px var(--mono);letter-spacing:.1em;color:var(--accent)}
.arch-note{margin-top:16px;font-size:14px}

/* Hero aside: spec card */
.service-hero{display:block}
.service-hero>div:first-child{max-width:1000px;margin:0 auto}
.service-aside{position:relative;max-width:980px;margin:64px auto 0;padding:28px 32px;border-radius:var(--r-lg);border:1px solid #23404c;background:linear-gradient(160deg,rgba(20,34,45,.85),rgba(8,15,22,.75));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);display:grid;grid-template-columns:1fr;gap:6px;text-align:center}
.service-aside .label{color:var(--accent)}
.service-aside h3{font-size:26px}
.service-aside>p{font-size:16px}
.aside-item{display:flex;flex-direction:column;gap:4px;padding:16px 0 0;margin-top:12px;border-top:1px solid var(--line)}
.aside-item span{font:600 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.aside-item strong{font-size:18px;font-weight:600}

/* Pricing */
.currency-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:0 auto 48px;text-align:center}
.currency-bar .label{width:100%;margin-bottom:4px}
.currency-bar small{width:100%;margin-top:8px;color:var(--muted)}
.filter-tab,.rh-filter{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--pill);border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:15px;font-weight:600}
.filter-tab:hover,.rh-filter:hover{color:var(--text);border-color:var(--dim)}
.filter-tab[aria-pressed=true],.rh-filter[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.rh-filter span{font:600 12px var(--mono);opacity:.75}
.pricing-intro{display:grid;gap:24px;align-items:center;text-align:center}
.pricing-intro h2{font-size:clamp(30px,3.6vw,44px)}
.pricing-intro p{margin-top:12px}
.free-price{display:block;font-size:64px;line-height:1;font-weight:700;letter-spacing:-.05em;color:var(--accent)}
.pricing-intro .actions{justify-content:center;margin-top:20px}
.pricing-card{display:flex;flex-direction:column}
.pricing-card h3{font-size:22px}
.price-amount{margin:18px 0 4px;font-size:44px;line-height:1.05;font-weight:700;letter-spacing:-.045em;color:var(--text)}
.price-amount small{display:block;font:600 11px/1.4 var(--mono);letter-spacing:.1em;color:var(--dim);margin-top:6px}
.price-unit{font-size:14px;color:var(--accent);font-weight:600;margin-bottom:14px}
.pricing-card>p:not(.price-unit){font-size:15px;flex:1}
.pricing-card .actions{margin-top:24px}
.pricing-card .actions .btn{width:100%}
.billing-option{padding:16px 0;border-top:1px solid var(--line);margin-top:14px}
.billing-option>span{font:600 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.billing-option .price-amount{margin:8px 0 0;font-size:36px}
.billing-option p{font-size:14px}
.price-table-wrap,.security-table-wrap,.table-scroll{width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);-webkit-overflow-scrolling:touch}
.data-table,.table-scroll table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5;text-align:left}
.data-table th,.data-table td,.table-scroll th,.table-scroll td{padding:16px 18px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--muted)}
.data-table thead th,.table-scroll thead th{font:600 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);background:var(--panel-2)}
.data-table tbody th,.data-table td:first-child{color:var(--text);font-weight:600}
.data-table tr:last-child>*{border-bottom:0}
.price-table td span[data-price-currency]{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.02em}
.price-table td small{margin-left:6px;font:600 10px var(--mono);color:var(--dim)}
.nvx-price-label{display:none}

/* Forms (visual only in this preview) */
.form-layout{display:grid;gap:40px}
.form-panel{padding:32px}
.form-row{display:grid;gap:0 20px}
.field{margin-bottom:20px;text-align:left}
.field label{display:block;margin-bottom:8px;font-size:15px;font-weight:600;color:var(--text)}
.field input,.field select,.field textarea,.rh-search input,.rh-select select,.search-wrap input,.cvelib-search input,.lib-ctl select{width:100%;min-height:50px;padding:12px 16px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);color:var(--text);font-size:17px}
.paper .field input,.paper .field select,.paper .field textarea{background:#fff}
.field textarea{min-height:140px;resize:vertical}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,.rh-search input:focus-visible,.search-wrap input:focus-visible,.cvelib-search input:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.field small,.contact-use-note,.email-intro,.rp-hint{display:block;font-size:14px;color:var(--muted);margin-top:8px}
.email-intro{margin:0 0 20px}
.preview-note{margin-top:14px;padding:10px 14px;border-radius:var(--r-sm);border:1px dashed var(--warn);color:var(--warn);font-size:14px;text-align:center}
.contact-detail{padding:22px 0;border-bottom:1px solid var(--line)}
.contact-detail .label{display:block;margin-bottom:8px}
.contact-detail strong{display:block;font-size:19px;font-weight:600}
.contact-email-link{display:block;min-height:44px}
.contact-email-address{display:block;font-size:22px;font-weight:600;color:var(--accent);margin-top:4px;word-break:break-all}

/* Long-form and method pages */
.narrow{max-width:760px;margin-inline:auto}
.article-layout{max-width:860px;margin-inline:auto}
.article-body{padding-top:40px}
.tile-hero .article-body{text-align:left}
.article-body h2,.prose h2{font-size:clamp(26px,2.6vw,32px);letter-spacing:-.025em;margin:56px 0 16px;scroll-margin-top:72px}
.article-body h2:first-child,.prose h2:first-child{margin-top:0}
.article-body h3,.prose h3{font-size:21px;margin:32px 0 10px}
.article-body p,.article-body li,.prose p,.prose li{font-size:17px;line-height:1.7;color:var(--muted)}
.article-body ul,.article-body ol,.prose ul,.prose ol{padding-left:22px;margin:16px 0}
.article-body li+li,.prose li+li{margin-top:8px}
.article-body p+h2,.prose p+h2{margin-top:56px}
.nvx-method-grid{display:grid;gap:20px}
.nvx-method-card h2{margin-top:0!important;font-size:24px}
.nvx-method-next{margin-top:48px;text-align:center}
.research-meta{display:flex;flex-wrap:wrap;gap:8px 24px;padding:16px 0;margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:500 12px/1.5 var(--mono);color:var(--dim)}
.tile-hero .research-meta{justify-content:center}

/* Outcomes, readiness, approach */
.outcome-card .actions{margin-top:20px}
.readiness{display:grid;gap:12px;padding:28px 0;border-top:1px solid var(--line)}

/* Security policy */
.security-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.security-meta span{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:var(--pill);border:1px solid var(--line);font:600 12px var(--mono);color:var(--muted)}
.security-policy-grid{display:grid;gap:40px}
.security-policy{padding-top:0}
.security-literal code{padding:2px 8px;border-radius:6px;background:var(--panel-2);color:var(--text)}
.security-aside{display:grid;gap:20px;align-content:start}
.security-summary h2,.security-toc h2{font-size:19px;margin-bottom:14px}
.security-summary dl>div{display:flex;flex-direction:column;gap:2px;padding:12px 0;border-top:1px solid var(--line)}
.security-summary dt{font:600 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.security-summary dd{font-size:16px;color:var(--text);word-break:break-word}
.security-toc{padding:24px 28px;border-radius:var(--r);border:1px solid var(--line)}
.security-toc ol{padding-left:20px;margin:0}
.security-toc li{margin-top:4px}
.security-toc a{display:inline-flex;min-height:44px;align-items:center;color:var(--muted);text-decoration:none}
.security-toc a:hover{color:var(--accent)}

/* Official domains */
.od-domain{font:700 clamp(26px,3vw,34px)/1.2 var(--mono);color:var(--accent);letter-spacing:-.02em;margin-bottom:6px;word-break:break-word}
.od-domains small{display:block;color:var(--dim);margin-bottom:12px}
.od-heading{font-size:clamp(26px,3vw,34px);margin-bottom:20px}
.od-senders>div{display:flex;flex-direction:column;gap:2px;padding:14px 0;border-top:1px solid var(--line)}
.od-senders dt{font:600 16px var(--mono);color:var(--text);word-break:break-all}
.od-senders dd{font-size:15px;color:var(--muted)}
.od-steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:16px}
.od-steps li{counter-increment:s;display:flex;gap:18px;align-items:flex-start;padding:22px 24px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:17px}
.od-steps li::before{content:counter(s,decimal-leading-zero);font:700 28px/1 var(--font);letter-spacing:-.03em;color:var(--accent);flex-shrink:0}
.od-example{margin-top:24px;padding:20px 22px;border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--line);font-size:14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left}
.od-note{margin-top:16px}
.od-updated{display:block;margin-top:20px;color:var(--dim)}

/* Site map */
.sitemap-list{display:grid;gap:10px}
.sitemap-link{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:56px;padding:12px 20px;border-radius:16px;border:1px solid var(--line);background:var(--panel);font-size:16px;font-weight:500}
.sitemap-link::after{content:"";flex-shrink:0;width:7px;height:7px;border:solid var(--accent);border-width:1.5px 1.5px 0 0;transform:rotate(45deg)}
.sitemap-link:hover{border-color:var(--accent);color:var(--accent)}
.sm-group+.sm-group{margin-top:64px}
.sm-group h2{font-size:clamp(26px,3vw,34px);margin-bottom:20px}

/* Research hub */
.rh-hero-grid{display:block}
.rh-hero-copy{max-width:980px;margin:0 auto}
.rh-stat-row,.cvelib-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:780px;margin:44px auto 0}
.rh-stat-row>div,.cvelib-stats>div{padding:20px 12px;border-radius:var(--r);background:rgba(16,26,35,.8);border:1px solid var(--line);text-align:center}
.rh-stat-row strong,.cvelib-stats strong{display:block;font-size:clamp(30px,4vw,48px);line-height:1.05;font-weight:700;letter-spacing:-.04em;color:var(--accent);font-variant-numeric:tabular-nums}
.rh-stat-row span,.cvelib-stats span{display:block;margin-top:6px;font-size:14px;color:var(--muted)}
.rh-ledger{max-width:720px;margin:48px auto 0;padding:24px 28px;border-radius:var(--r-lg);border:1px solid #23404c;background:rgba(16,26,35,.85);text-align:left}
.rh-ledger-title{font-size:21px;font-weight:650;margin:6px 0 10px}
.rh-ledger-row{display:flex;gap:14px;align-items:center;min-height:56px;padding:12px 0;border-top:1px solid var(--line)}
.rh-ledger-row strong{display:block;font-size:16px}
.rh-ledger-row small{font:500 13px var(--mono);color:var(--accent)}
.rh-ledger-row:hover strong{color:var(--accent)}
.rh-ledger-dot{width:8px;height:8px;border-radius:50%;background:var(--crit);box-shadow:0 0 0 4px rgba(255,107,107,.15);flex-shrink:0}
.rh-ledger-footer{padding-top:14px;border-top:1px solid var(--line)}
.rh-ledger-footer p{font-size:14px;margin-top:6px}
.rh-feature-section{padding:96px 0}
.rh-feature{display:grid;gap:32px;padding:0;overflow:hidden}
.rh-feature-art{position:relative;padding:32px;background:radial-gradient(circle at 30% 20%,#173444,#0b1822 70%);display:grid;gap:10px;align-content:center;min-height:300px}
.rh-art-label{font:600 12px var(--mono);letter-spacing:.1em;color:#9fb3bd;margin-bottom:8px}
.rh-art-level{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-radius:14px;border:1px solid #2a4552;background:rgba(8,15,22,.55);font:600 12px var(--mono);letter-spacing:.12em;color:#c9d6db}
.rh-art-level i{font-style:normal;color:var(--accent);font-size:18px}
.rh-level-three{border-color:var(--accent);background:rgba(105,204,227,.1)}
.rh-art-link{height:14px;width:2px;margin-left:28px;background:linear-gradient(var(--accent),transparent)}
.rh-art-foot{margin-top:10px;font:600 12px var(--mono);color:var(--accent)}
.rh-feature-copy{padding:8px 32px 36px}
.rh-feature-copy h2{font-size:clamp(28px,3.4vw,42px)}
.rh-feature-copy>p{margin-top:16px}
.rh-feature-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin:18px 0 6px;font:500 13px var(--mono);color:var(--dim)}
.rh-cve-id{color:var(--accent)}
.rh-latest-item time,.rh-publication time{font:500 13px var(--mono);color:var(--dim)}
.rh-latest-item h3,.rh-publication h3{font-size:21px;margin:10px 0 14px}
.rh-latest-item h3 a:hover,.rh-publication h3 a:hover{color:var(--accent)}
.rh-pill,.cvelib-tag{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:2px 12px;border-radius:var(--pill);border:1px solid rgba(105,204,227,.35);background:rgba(105,204,227,.08);color:var(--accent);font:600 12px var(--mono);text-decoration:none}
.rh-library-link{margin-top:36px;text-align:center}
.rh-controls{display:grid;gap:16px;margin-bottom:20px}
.rh-search label,.rh-select label{display:block;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--muted)}
.rh-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px}
.rh-filters{display:flex;flex-wrap:wrap;gap:8px}
.rh-reset{min-height:44px;padding:0 16px;border:0;background:none;color:var(--accent);font-weight:600}
.rh-results-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:20px;font-size:14px;color:var(--dim)}
.rh-publication-kicker{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.rh-category{font:600 12px var(--mono);letter-spacing:.08em;color:var(--accent);text-transform:uppercase}
.rh-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.rh-tags span{padding:3px 10px;border-radius:var(--pill);background:var(--panel-2);font:500 12px var(--mono);color:var(--muted)}
.rh-card-end{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:18px;font-size:14px;color:var(--dim)}
.rh-empty{padding:40px;text-align:center;border:1px dashed var(--line);border-radius:var(--r)}
.rh-library-bottom{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;margin-top:28px;font-size:14px}
.rh-method-links{display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:center;margin-top:36px}
.rh-disclosure-section{padding:0 0 120px}
.rh-disclosure,.disclosure-strip{display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center}
.rh-disclosure h2{font-size:clamp(26px,3vw,36px)}
.rh-disclosure p{margin-top:10px}
.disclosure-strip{margin:0 auto 96px}

/* CVE analysis page */
.article-shell{display:grid;gap:48px;padding:40px 0 96px}
.article-shell>article{min-width:0}
.article-head{padding-bottom:32px;border-bottom:1px solid var(--line);margin-bottom:40px;text-align:center}
.article-head h1{font-size:clamp(34px,4.6vw,56px);letter-spacing:-.035em;margin:18px auto 0;max-width:900px}
.rp-article-meta-row,.meta-col{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}
.sev,.kev-flag,.cve-id{display:inline-flex;align-items:center;min-height:28px;padding:2px 12px;border-radius:var(--pill);font:700 12px var(--mono);letter-spacing:.06em;text-transform:uppercase}
.sev-critical{background:rgba(255,107,107,.14);color:#ff8f8f;border:1px solid rgba(255,107,107,.4)}
.kev-flag{background:rgba(227,187,118,.12);color:var(--warn);border:1px solid rgba(227,187,118,.4)}
.cve-id{color:var(--accent);border:1px solid rgba(105,204,227,.35);text-transform:none}
.summary{font-size:clamp(19px,1.8vw,22px);line-height:1.5;color:var(--muted);max-width:780px;margin:20px auto 0}
.byline{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;margin-top:22px;font-size:14px;color:var(--dim)}
.byline .who{color:var(--text);font-weight:600}
.prose{max-width:760px;margin:0 auto}
.prose .anchor{display:none}
.table-scroll{margin:24px 0}
.table-scroll td strong{color:var(--accent)}
.references{max-width:760px;margin:56px auto 0;padding-top:32px;border-top:1px solid var(--line)}
.references h2{font-size:26px;margin-bottom:16px}
.references ol{padding-left:22px}
.references li{font-size:15px;color:var(--muted);margin-top:10px;overflow-wrap:anywhere}
.article-footer{max-width:760px;margin:40px auto 0;font-size:14px}
.article-footer p{font-size:14px}
.article-aside{display:grid;gap:20px;align-content:start}
.spec,.toc{padding:24px 28px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
.spec h2,.toc h2{font-size:19px;margin-bottom:12px}
.spec dl{display:grid;grid-template-columns:auto 1fr;gap:0 16px}
.spec dt,.spec dd{padding:10px 0;border-top:1px solid var(--line)}
.spec dt{font:600 11px/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.spec dd{font-size:15px;color:var(--text);overflow-wrap:anywhere}
.spec dd.mono{font-size:12px}
.spec-score .value{font-size:28px;font-weight:700;letter-spacing:-.03em;color:var(--text)}
.spec-score .of{margin-left:8px;font:600 12px var(--mono);color:var(--dim)}
.spec-source{margin-top:4px;font-size:13px;color:var(--muted)}
.rp-affected-version{font-size:14px;line-height:1.55;color:var(--muted)}
.mini-pill{padding:3px 10px;border-radius:var(--pill);background:var(--panel-2);font:500 12px var(--mono);color:var(--muted)}
.item-tags .cve-id{min-height:24px;font-size:11px}
.references .pub{display:block;font-size:13px;color:var(--dim)}
.prose ol li,.prose ul li{padding-left:4px}
.toc ol{list-style:none;padding:0;margin:0}
.toc a{display:flex;align-items:center;min-height:44px;font-size:15px;color:var(--muted)}
.toc a:hover{color:var(--accent)}
.section-heading{text-align:center;margin-bottom:40px}
.section-heading .eyebrow{justify-content:center}
.research-list{list-style:none;padding:0;margin:0;display:grid;gap:16px}
.research-item{display:grid;gap:14px;padding:28px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
.research-item h3{font-size:21px;margin-bottom:8px}
.research-item h3 a:hover{color:var(--accent)}
.item-cat,.item-date,.item-read{font:500 13px var(--mono);color:var(--dim)}
.item-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.item-tags span,.item-tags a{padding:3px 10px;border-radius:var(--pill);background:var(--panel-2);font:500 12px var(--mono);color:var(--muted);text-decoration:none}

/* CVE Library */
.lib-hero .cvelib-stats{margin-top:40px}
.cvelib-updated{margin-top:18px;font:500 13px var(--mono);color:var(--dim)}
.cvelib-feature{max-width:860px;margin:48px auto 0;text-align:left;display:grid;gap:10px}
.cvelib-feature h2{font-size:clamp(24px,2.6vw,32px)}
.cvelib-feature .lib-feature-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px}
.cta-band .eyebrow{justify-content:center}
.lib-finder{position:sticky;top:0;z-index:50;padding:16px 0;background:rgba(8,15,22,.88);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.lib-finder .container{display:grid;gap:12px}
.cvelib-search{display:block;position:relative}
.cvelib-search input{padding-left:46px;min-height:52px;border-radius:var(--pill)}
.cvelib-search::before{content:"";position:absolute;left:18px;top:50%;width:16px;height:16px;transform:translateY(-50%);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7' fill='none' stroke='%237d8f9a' stroke-width='2'/%3E%3Cpath d='m20 20-4-4' stroke='%237d8f9a' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
.lib-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.lib-ctl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.lib-ctl label{display:block}
.lib-ctl select{min-height:44px;border-radius:var(--pill);font-size:15px;padding:8px 14px}
.lib-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:14px;color:var(--dim)}
.lib-results{padding:40px 0 24px}
.lib-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.lib-rec{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1.2fr) minmax(0,.8fr) minmax(0,.8fr) minmax(0,1.2fr);gap:16px;align-items:start;padding:20px 24px;border-radius:18px;border:1px solid var(--line);background:var(--panel)}
.lib-rec .cell small{display:block;font-size:13px;color:var(--dim);margin-top:4px}
.lib-rec .cell-label{display:none;font:600 10px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.lib-prod{font-size:18px;font-weight:650}
.lib-vendor{font-size:14px;color:var(--muted)}
.lib-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.lib-cve{font:600 13px var(--mono);color:var(--accent)}
.lib-sev{font:600 12px var(--mono);color:var(--muted)}
.cvelib-tag-kev{border-color:rgba(227,187,118,.45);background:rgba(227,187,118,.1);color:var(--warn)}
.cvelib-tag-kev::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.lib-score{font-size:22px;font-weight:700;letter-spacing:-.02em}
.lib-score span{margin-left:6px;font:600 11px var(--mono);letter-spacing:.06em}
.s-critical{color:var(--crit)}.s-high{color:var(--high)}.s-medium{color:var(--med)}.s-none{color:var(--muted);font-size:16px}
.lib-epss{font-size:18px;font-weight:650}
.lib-empty{padding:40px;text-align:center;border:1px dashed var(--line);border-radius:var(--r)}
.lib-sample{margin-top:20px;text-align:center;font-size:14px;color:var(--dim)}
.cvelib-signal-grid{display:grid;gap:20px}
.cvelib-signal-grid section{padding:32px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
.cvelib-signal-grid h3{margin:14px 0 12px}
.cvelib-signal-grid .text-link{margin-top:12px}
.lib-note{max-width:860px;margin:0 auto;text-align:center;font-size:14px}
.lib-note p{font-size:14px}

/* RADAR request (visual only) */
.hero-sub{max-width:640px;margin:16px auto 0;font-size:17px}
.rp-form-panel{max-width:720px;margin:0 auto}
.step-card .label{display:block;margin:-12px 0 8px}
.rp-form-panel h2{font-size:28px;margin-bottom:20px}
.rp-form-legal{margin-top:16px;font-size:13px;color:var(--muted)}
.rp-form-legal span{display:block}
.rp-notice{max-width:860px;margin:48px auto 0;padding:28px 32px;border-radius:var(--r);border:1px solid rgba(227,187,118,.4);background:rgba(227,187,118,.06);text-align:center}
.rp-notice h3{margin-bottom:10px}

/* Footer: breadcrumb on top, dense columns, small gray type */
.ft{background:#060c12;border-top:1px solid var(--line);font-size:13px;color:#8c9ca5}
.ft-in{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto;padding:28px 0 32px}
.ft-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:0 10px;padding-bottom:18px;border-bottom:1px solid #1d2a32}
.ft-crumbs a,.ft-crumbs span{display:inline-flex;align-items:center;min-height:44px;color:#a9b7be}
.ft-crumbs a:hover{color:var(--accent)}
.ft-crumbs .sep{color:#4d5f69;min-height:0}
.ft-crumbs [aria-current]{color:#dce5e8}
.ft-mark img{width:74px}
.ft-lead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:24px 0;border-bottom:1px solid #1d2a32}
.ft-lead p{font-size:15px;color:#a9b7be}
.ft-lead strong{color:#e8eef0}
.ft-cta{display:inline-flex;align-items:center;min-height:44px;padding:0 20px;border-radius:var(--pill);border:1px solid #2c3c46;color:#e8eef0;font-weight:600}
.ft-cta:hover{border-color:var(--accent);color:var(--accent)}
.ft-cols{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:28px;padding:32px 0;border-bottom:1px solid #1d2a32}
.ft-col h2{font-size:13px;font-weight:650;letter-spacing:0;color:#e8eef0;margin-bottom:10px}
.ft-col ul{list-style:none;margin:0;padding:0}
.ft-col li a,.ft-contact a{display:inline-flex;align-items:center;min-height:44px;color:#8c9ca5;text-decoration:none}
.ft-col li a:hover,.ft-contact a:hover{color:var(--accent);text-decoration:underline}
.ft-contact address{font-style:normal;line-height:1.7;margin:6px 0}
.ft-contact p{font-size:13px}
.ft-legal{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 24px;padding-top:20px}
.ft-legal nav{display:flex;flex-wrap:wrap;gap:0 4px}
.ft-legal nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;color:#a9b7be;border-right:1px solid #24323b}
.ft-legal nav a:last-child{border-right:0}
.ft-legal a:hover{color:var(--accent)}
.ft-top{display:inline-flex;align-items:center;min-height:44px;color:#a9b7be}

/* Reveal on scroll (JS adds .js and .in) */
.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.js .reveal.in{opacity:1;transform:none}

/* Staging banner */
.stage-flag{position:fixed;right:12px;bottom:12px;z-index:200;padding:8px 14px;border-radius:var(--pill);background:rgba(227,187,118,.95);color:#2a1d05;font:700 11px/1.2 var(--mono);letter-spacing:.08em;pointer-events:none}

/* ---------- Laptop and desktop: composed layouts (1024 px and up) ---------- */
@media(min-width:1025px){
  .tile-hero{padding:96px 0 128px}
  .split{grid-template-columns:1fr 1fr;gap:80px}
  .split>div:first-child .eyebrow{justify-content:flex-start}
  .text-columns{grid-template-columns:1fr 1fr;gap:64px}
  .grid-2,.od-domains,.od-details,.rh-publication-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-3,.steps,.rh-latest-grid,.rh-method-grid,.cvelib-signal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .grid-4,.pricing-cards{grid-template-columns:repeat(4,minmax(0,1fr))}
  .pricing-cards .pricing-card{padding:28px}
  .service-aside{grid-template-columns:1.1fr repeat(3,minmax(0,1fr));gap:0 32px;align-items:center;text-align:left;padding:28px 36px}
  .service-aside .label,.service-aside h3,.service-aside>p{grid-column:1}
  .service-aside h3{grid-row:2}
  .service-aside>p{grid-row:3}
  .service-aside .label{grid-row:1}
  .aside-item{grid-row:1/span 3;margin:0;padding:0 0 0 24px;border-top:0;border-left:1px solid var(--line)}
  .pricing-intro{grid-template-columns:1fr auto;text-align:left;padding:40px 48px}
  .pricing-intro .actions{justify-content:flex-start}
  .form-layout{grid-template-columns:.9fr 1.1fr;gap:72px;align-items:start}
  .form-row{grid-template-columns:1fr 1fr}
  .security-policy-grid{grid-template-columns:minmax(0,1fr) 340px;gap:64px}
  .security-aside{position:sticky;top:76px}
  .rh-feature{grid-template-columns:.9fr 1.1fr;align-items:center}
  .rh-feature-copy{padding:40px 48px 40px 8px}
  .rh-controls{grid-template-columns:2fr 1fr 1fr}
  .nvx-method-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .article-shell{grid-template-columns:minmax(0,1fr) 320px;gap:56px}
  .article-head,.rp-article-meta-row,.byline{text-align:left;justify-content:flex-start}
  .article-head h1,.summary{margin-left:0}
  .prose,.references,.article-footer{margin-left:0}
  .article-aside{position:sticky;top:76px}
  .research-item{grid-template-columns:200px minmax(0,1fr) 80px;align-items:start}
  .meta-col{justify-content:flex-start;flex-direction:column;align-items:flex-start}
  .rh-disclosure,.disclosure-strip{flex-direction:row;justify-content:space-between;text-align:left;padding:40px 48px}
  .lib-finder .container{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center}
  .lib-meta{grid-column:1/-1}
  .sitemap-list{grid-template-columns:repeat(3,minmax(0,1fr))}
  .readiness{grid-template-columns:1fr 1fr;gap:32px}
}
@media(min-width:1440px){
  .section{padding:144px 0}
  .tile-hero{padding:112px 0 144px}
  .hero-visual{min-height:500px}
}

/* ---------- Tablet and mobile: centered (below 1024 px) ---------- */
@media(max-width:1024px){
  .js .gn-links,.js .gn-cta{display:none}
  .js .gn-menu{display:block}
  html:not(.js) .gn-bar{flex-wrap:wrap;justify-content:center;padding-bottom:6px}
  html:not(.js) .gn-links{flex-basis:100%;flex-wrap:wrap}
  .gn-panel{position:fixed;top:57px;bottom:0;overflow-y:auto;overscroll-behavior:contain}
  .gn-panel-in{grid-template-columns:1fr;gap:28px;padding:28px 0 64px;text-align:center}
  .gn-mobile-only{display:block;order:-1}
  .gn-group li a{justify-content:center;flex-wrap:wrap;gap:2px 10px;font-size:19px;min-height:48px}
  .gn-mobile-only li a{font-size:26px;font-weight:650;letter-spacing:-.02em}
  .gn-short{justify-content:center}
  main,.ft{text-align:center}
  .eyebrow,.actions,.card-foot,.scope-top,.rh-filters,.rh-toolbar,.rh-results-meta,.rh-card-end,.rh-publication-kicker,.rh-tags,.rh-feature-meta,.rh-library-bottom,.lib-row,.lib-meta,.lib-tags,.item-tags,.security-meta,.crumbs ol,.ft-crumbs,.ft-lead,.ft-legal,.ft-legal nav,.research-meta,.arch-tier{justify-content:center}
  .arch-tier{flex-direction:column;gap:4px}
  .ln-title{font-size:17px}
  .deliverable-card,.check-list li,.od-safety li{justify-content:center;text-align:left}
  .deliverable-card{max-width:560px;margin-inline:auto}
  .check-list li,.od-safety li{max-width:560px;margin-left:auto;margin-right:auto}
  .grid-2,.grid-3,.grid-4,.steps,.pricing-cards,.rh-latest-grid,.rh-method-grid,.rh-publication-grid,.od-domains,.od-details,.cvelib-signal-grid,.nvx-method-grid{max-width:720px;margin-inline:auto}
  .grid-3,.grid-4,.pricing-cards,.rh-latest-grid,.rh-method-grid,.cvelib-signal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ladder-row{grid-template-columns:1fr;gap:8px;justify-items:center;text-align:center;padding:28px 8px}
  .ladder-row::after{transform:rotate(135deg);margin-top:6px}
  .ladder-row p{max-width:560px}
  .faq-list{max-width:760px;margin-inline:auto}
  .faq-list summary{text-align:left}
  .faq-list details>div{padding-right:0}
  .boundary{text-align:center;border-left:1px solid var(--line);border-top:3px solid var(--accent)}
  .security-warning{border-top-color:var(--warn)}
  .pullquote{border-left:0;padding:16px 0;border-top:1px solid var(--accent);border-bottom:1px solid var(--accent)}
  .tile-hero .article-body,.article-body,.prose,.references,.article-footer{text-align:center}
  .article-body ul,.article-body ol,.prose ul,.prose ol,.references ol{list-style-position:inside;padding-left:0}
  .table-scroll,.data-table,.od-example,pre,code{text-align:left}
  .split>*{max-width:760px;margin-inline:auto;width:100%}
  .path-strip{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:-24px;max-width:720px;margin-inline:auto}
  .path-stop:last-child{grid-column:1/-1}
  .hero-visual{min-height:400px}
  .report-mini{text-align:left}
  .field{text-align:center}
  .field label{text-align:center}
  .form-panel{max-width:720px;margin-inline:auto}
  .contact-detail{text-align:center}
  .security-summary dl>div,.od-senders>div{align-items:center}
  .od-steps li{flex-direction:column;align-items:center;text-align:center}
  .spec dl{grid-template-columns:1fr;text-align:center}
  .spec dt{padding-bottom:0}
  .spec dd{border-top:0;padding-top:4px}
  .toc a{justify-content:center}
  .security-toc ol,.toc ol{list-style-position:inside;padding-left:0}
  .security-toc a{justify-content:center}
  .research-item{text-align:center}
  .rh-ledger{text-align:center}
  .rh-ledger-row{justify-content:center;text-align:left}
  .rh-feature-art{justify-items:stretch}
  .rh-feature-copy{text-align:center}
  .lib-rec{grid-template-columns:repeat(2,minmax(0,1fr));text-align:center}
  .lib-rec .cell-label{display:block}
  .lib-rec .cell:first-child{grid-column:1/-1}
  .cvelib-feature{text-align:center}
  .cvelib-feature .lib-feature-foot{justify-content:center}
  .price-table thead{display:none}
  .price-table,.price-table tbody,.price-table tr,.price-table th,.price-table td{display:block;width:100%}
  .price-table tr{padding:18px 20px;border-bottom:1px solid var(--line)}
  .price-table tr:last-child{border-bottom:0}
  .price-table th,.price-table td{border:0;padding:4px 0;text-align:center}
  .price-table .nvx-price-label{display:block;font:600 10px/1.6 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-top:8px}
  .price-table-wrap{overflow:visible}
  .ft-cols{grid-template-columns:repeat(2,minmax(0,1fr));text-align:center}
  .ft-contact{grid-column:1/-1}
  .ft-col li a,.ft-contact a{min-height:44px}
}
@media(max-width:767.98px){
  .section{padding:80px 0}
  .section-sm{padding:64px 0}
  .tile-hero{padding:48px 0 72px}
  .hero-visual{min-height:380px;margin-top:44px}
  .floating-note{left:16px;right:16px;width:auto;bottom:70px}
  .visual-top,.art-caption{left:16px;right:16px;font-size:10px}
  .visual-top{flex-direction:column;align-items:flex-start}
  .art-caption{flex-direction:column;gap:2px}
  .grid-2,.grid-3,.grid-4,.steps,.pricing-cards,.rh-latest-grid,.rh-method-grid,.cvelib-signal-grid{grid-template-columns:1fr;max-width:560px}
  .scope-card,.principle,.step-card,.outcome-card,.module-card,.pricing-card,.rh-method,.rh-latest-item,.rh-publication,.nvx-method-card,.security-summary,.form-panel,.architecture-diagram,.pricing-intro,.rh-disclosure,.cvelib-feature,.disclosure-strip,.research-item{padding:26px 22px}
  .editorial-card{padding:0}
  .path-strip{grid-template-columns:1fr;max-width:420px}
  .path-stop:last-child{grid-column:auto}
  .service-aside{padding:22px 20px;margin-top:48px}
  .rh-stat-row,.cvelib-stats{grid-template-columns:1fr;max-width:340px}
  .lib-ctl{grid-template-columns:1fr}
  .lib-rec{grid-template-columns:1fr;padding:20px}
  .ln-in{min-height:52px}
  .ln-title{font-size:16px}
  .ln-cta{padding:0 14px;font-size:13px}
  .btn{width:100%;max-width:420px}
  .actions{flex-direction:column}
  .text-link{justify-content:center}
  .ft-cols{grid-template-columns:1fr}
  .ft-legal{flex-direction:column}
  .stage-flag{right:8px;bottom:8px;font-size:10px}
}

/* ================= Header v2: slim bar, services menu, mobile sheet, page sub-nav ================= */
html{scroll-padding-top:120px}
.gn{position:sticky;top:0;z-index:200;background:rgba(8,15,22,.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.08)}
html.mega-open .gn,html.menu-open .gn{background:#0a131b}
.gn-bar{min-height:60px;gap:28px}
.gn-logo img{width:108px}
.gn-links{gap:6px}
.gn-links a,.gn-svc{position:relative;min-height:40px;padding:0 14px;font-size:14.5px;font-weight:500;color:#c9d4d8;border-radius:10px;transition:color .16s,background-color .16s}
.gn-links a:hover,.gn-svc:hover{color:#fff;background:rgba(255,255,255,.06)}
.gn-links [aria-current=page]{box-shadow:none;color:#fff}
.gn-svc::after{content:none}
.gn-links a::after,.gn-links .gn-svc::after{content:none}
.gn-links a,.gn-svc{min-height:44px;border-radius:8px;transition:color .16s,box-shadow .16s}
.gn-links a:hover,.gn-svc:hover,.gn-svc[aria-expanded=true]{color:#fff;background:none;box-shadow:inset 0 -2px 0 rgba(105,204,227,.35)}
.gn-links [aria-current=page],.gn-links [aria-current=page]:hover,.gn-links .gn-svc[data-current],.gn-links .gn-svc[data-current]:hover{color:#fff;box-shadow:inset 0 -2px 0 var(--accent)}
.hd-big a[aria-current],.hd-sheet .hd-link[aria-current],.hd-sheet .hd-card[aria-current],.hd-sheet .hd-mod[aria-current],.hd-acc[data-current]{box-shadow:inset 3px 0 0 var(--accent)}
.gn-caret{display:inline-block;width:6px;height:6px;margin-left:8px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);transition:transform .16s}
.gn-svc[aria-expanded=true]{color:#fff;background:rgba(105,204,227,.1)}
.gn-svc[aria-expanded=true] .gn-caret,.hd-acc[aria-expanded=true] .gn-caret{transform:translateY(1px) rotate(-135deg)}
.gn-cta{position:relative;min-height:36px;padding:0 14px;border-radius:10px;font-size:14px;font-weight:600}
.gn-cta::after{content:"";position:absolute;left:0;right:0;top:-4px;bottom:-4px}

.hd-mega{position:absolute;left:0;right:0;top:100%;background:#0b141c;border-bottom:1px solid var(--line);border-radius:0 0 22px 22px;box-shadow:0 30px 70px rgba(0,0,0,.55);animation:hdIn .16s var(--ease)}
@keyframes hdIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes hdFade{from{opacity:0}to{opacity:1}}
.hd-mega-in{width:min(var(--max),calc(100% - 2*var(--gut)));margin-inline:auto;display:grid;grid-template-columns:1fr 1.3fr .95fr;gap:40px;padding:28px 0 32px}
.hd-h{font:600 12px/1.4 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);margin:0 0 12px;padding-left:12px}
.hd-cards,.hd-mods,.hd-links,.hd-big{list-style:none;margin:0;padding:0}
.hd-cards{display:grid;gap:4px}
.hd-cards li+li,.hd-mods li+li,.hd-links li+li,.hd-big li+li{margin-top:0}
.hd-card,.hd-mod{display:flex;align-items:center;gap:14px;min-height:56px;padding:8px 12px;border-radius:14px;color:var(--text);text-decoration:none;transition:background-color .16s}
.hd-card:hover,.hd-card:focus-visible,.hd-mod:hover,.hd-mod:focus-visible{background:rgba(105,204,227,.08)}
.hd-card:hover .hd-ico,.hd-mod:hover .hd-ico{border-color:rgba(105,204,227,.5)}
.hd-card[aria-current],.hd-mod[aria-current]{background:rgba(105,204,227,.1)}
.hd-ico{flex-shrink:0;width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:rgba(105,204,227,.08);border:1px solid rgba(105,204,227,.2);color:var(--accent);transition:border-color .16s}
.hd-ico svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.hd-ico-sm{width:32px;height:32px;border-radius:10px}
.hd-ico-sm svg{width:17px;height:17px}
.hd-txt{display:flex;flex-direction:column;min-width:0;text-align:left}
.hd-txt strong{font-size:16.5px;font-weight:600;letter-spacing:-.01em;line-height:1.25;color:var(--text)}
.hd-txt small{font-size:13px;color:var(--muted);line-height:1.35;margin-top:2px}
.hd-mod{min-height:52px;gap:12px;padding:6px 10px}
.hd-mod .hd-txt strong{font-size:15px}
.hd-mods{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px}
.hd-more{display:flex;flex-wrap:wrap;gap:0 20px;margin-top:10px;padding-left:12px}
.hd-more a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:14px;font-weight:500;color:var(--accent);text-decoration:none}
.hd-more svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s}
.hd-more a:hover svg{transform:translateX(3px)}
.hd-link{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:12px;font-size:15px;color:#dbe4e7;text-decoration:none;transition:background-color .16s,color .16s}
.hd-link:hover,.hd-link:focus-visible{background:rgba(255,255,255,.05);color:#fff}
.hd-link[aria-current]{color:var(--accent)}
.hd-feature{margin-top:16px;padding:20px;border-radius:18px;background:radial-gradient(120% 120% at 100% 0%,rgba(105,204,227,.16),transparent 60%),var(--panel);border:1px solid rgba(105,204,227,.25)}
.hd-feature-k{font:600 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.hd-feature-h{margin-top:8px;font-size:17px;font-weight:600;line-height:1.3}
.hd-feature-h a{color:var(--text);text-decoration:none}
.hd-feature-h a:hover{color:var(--accent)}
.hd-feature-p{font-size:13.5px;line-height:1.45;margin-top:6px}
.hd-feature-btn{display:inline-flex;align-items:center;min-height:40px;margin-top:14px;padding:0 14px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-size:14px;font-weight:600;text-decoration:none}
.hd-feature-btn:hover{background:var(--accent-2)}
.hd-scrim{position:fixed;inset:0;z-index:150;background:rgba(3,7,11,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:hdFade .16s var(--ease)}

.hd-burger{display:none;position:relative;width:44px;height:44px;margin-left:auto;border:0;border-radius:10px;background:none;flex-shrink:0}
.hd-burger span{position:absolute;left:12px;right:12px;height:1.5px;background:#e9f0f1;border-radius:2px;transition:transform .2s var(--ease),top .2s var(--ease)}
.hd-burger span:first-child{top:18px}
.hd-burger span:last-child{top:25px}
.hd-burger[aria-expanded=true] span:first-child{top:21.5px;transform:rotate(45deg)}
.hd-burger[aria-expanded=true] span:last-child{top:21.5px;transform:rotate(-45deg)}
.hd-sheet{position:fixed;left:0;right:0;top:56px;bottom:0;z-index:190;display:flex;flex-direction:column;background:#080f16;animation:hdIn .16s var(--ease)}
.hd-sheet-in{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px var(--gut) 24px;text-align:center}
.hd-sheet nav{max-width:560px;margin:0 auto}
.hd-acc{display:flex;align-items:center;justify-content:center;width:100%;min-height:60px;border:0;border-bottom:1px solid var(--line);background:none;font-size:24px;font-weight:650;letter-spacing:-.02em;color:var(--text)}
.hd-acc .gn-caret{width:9px;height:9px;margin-left:12px}
.hd-acc-panel{padding:12px 0;border-bottom:1px solid var(--line)}
.hd-acc-panel .hd-h,.hd-sheet .hd-h{text-align:center;padding-left:0;margin-top:16px}
.hd-acc-panel .hd-mods{grid-template-columns:1fr}
.hd-acc-panel .hd-more{justify-content:center;padding-left:0}
.hd-big a{display:flex;align-items:center;justify-content:center;min-height:60px;border-bottom:1px solid var(--line);font-size:24px;font-weight:650;letter-spacing:-.02em;color:var(--text);text-decoration:none}
.hd-big a[aria-current]{color:var(--accent)}
.hd-sheet .hd-h{margin-top:28px}
.hd-sheet .hd-link{justify-content:center;font-size:17px}
.hd-sheet-foot{padding:12px var(--gut) calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#0b141c}
.hd-sheet-cta{display:flex;align-items:center;justify-content:center;min-height:48px;max-width:560px;margin:0 auto;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-size:16px;font-weight:650;text-decoration:none}

.ln{position:fixed;top:60px;left:0;right:0;z-index:180;background:rgba(8,15,22,.88);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(255,255,255,.07);transform:translateY(-100%);opacity:0;visibility:hidden;transition:transform .22s var(--ease),opacity .22s,visibility .22s}
.ln.show{transform:none;opacity:1;visibility:visible}
html.mega-open .ln,html.menu-open .ln{opacity:0;visibility:hidden}
.ln-in{min-height:48px;gap:16px}
.ln-title{font-size:15px;font-weight:600;letter-spacing:-.01em;padding:0}
.ln-cta{min-height:44px;padding:0;border-radius:0;background:none;color:var(--accent);font-size:14px;font-weight:500}
.ln-cta::after{content:"";width:6px;height:6px;margin-left:8px;border:solid currentColor;border-width:1.5px 1.5px 0 0;transform:rotate(45deg)}
.ln-cta:hover{background:none;text-decoration:underline;text-underline-offset:4px}

.btn{min-height:44px;padding:10px 20px;border-radius:12px;font-size:15px}
.lib-finder{top:60px}
.crumbs{padding-top:18px}
.crumbs ol{font-size:13.5px}

@media(max-width:1024px){
  .gn-bar{min-height:56px}
  .js .hd-burger{display:block}
  .ln{top:56px}
  .ln-title{font-size:14.5px}
  .ln-cta{font-size:13.5px}
  .lib-finder{top:56px}
  .hd-mega,.hd-scrim{display:none!important}
}
@media(min-width:600px) and (max-width:1024px){.hd-acc-panel .hd-mods{grid-template-columns:1fr 1fr}}
@media(min-width:1025px){.hd-sheet{display:none!important}}
@media(max-width:767.98px){
  .btn{width:auto;max-width:100%}
  .actions{flex-direction:row;justify-content:center}
  .ln-title{font-size:14px}
}

/* ================= CVE Library rows v2 (labeled fields, one severity, clear actions) ================= */
.pg-library .ln{display:none}
.lib-finder{position:static;background:none;border-bottom:0;-webkit-backdrop-filter:none;backdrop-filter:none;padding:24px 0 8px}
.lib-legend{display:grid;gap:8px;margin:0 0 20px;padding:16px 20px;border-radius:16px;background:var(--panel);border:1px solid var(--line);font-size:15px}
.lib-legend div{display:flex;flex-wrap:wrap;gap:2px 8px;justify-content:center}
.lib-legend dt{font-weight:600;color:var(--text)}
.lib-legend dt::after{content:":"}
.lib-legend dd{color:var(--muted)}
.lib-head{display:none}
.lib-rec{grid-template-columns:minmax(0,1fr);gap:14px;padding:22px 24px;border-radius:18px;transition:border-color .16s,background-color .16s}
.lib-rec:hover{border-color:rgba(105,204,227,.4);background:#122029}
.lib-rec .c{min-width:0}
.lib-rec .cell-label{display:block;font:600 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.lib-rec small{display:block;font-size:14px;color:var(--dim);margin-top:2px}
.c-vuln{display:flex;flex-direction:column;gap:2px}
.lib-prod{font-size:18px;font-weight:650;color:var(--text);text-decoration:none}
.lib-prod:hover{color:var(--accent)}
.lib-vendor{font-size:15px;color:var(--muted)}
code.lib-cve{font:500 14px var(--mono);color:var(--accent);margin-top:4px}
.kev-yes{display:inline-flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:var(--warn)}
.kev-yes::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.kev-no{font-size:16px;color:var(--muted)}
.lib-score{font-size:16px;font-weight:600}
.lib-score b{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-right:4px;font-variant-numeric:tabular-nums}
.lib-epss{display:block;font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;color:var(--text)}
.fx{display:block;font-size:16px;color:var(--text)}
.fx-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--accent);text-decoration:none}
.fx-link:hover{text-decoration:underline;text-underline-offset:3px}
.lib-an{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:15px;font-weight:600;color:var(--accent);text-decoration:none}
.lib-an::after{content:"\2192";transition:transform .16s}
.lib-an:hover::after{transform:translateX(3px)}
.rh-latest-item .lib-an{margin-top:4px}
.tip-wrap{position:relative;display:inline-flex}
.tip{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);white-space:nowrap;padding:8px 12px;border-radius:10px;background:#1b2a35;border:1px solid var(--line);font-size:13px;color:var(--text);opacity:0;visibility:hidden;transition:opacity .16s;pointer-events:none;z-index:5}
.tip-wrap:hover .tip,.tip-wrap:focus-within .tip{opacity:1;visibility:visible}
@media(max-width:1024px){.c-vuln{align-items:center}}
@media(min-width:600px) and (max-width:1024px){.lib-rec{grid-template-columns:1fr 1fr}.lib-rec .c-vuln,.lib-rec .c-act{grid-column:1/-1}}
@media(min-width:1025px){
  .lib-head{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.15fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.5fr);gap:20px;position:sticky;top:60px;z-index:40;padding:12px 24px;margin-bottom:8px;background:rgba(8,15,22,.95);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);font:600 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
  .lib-rec{grid-template-columns:minmax(0,2fr) minmax(0,1.15fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.5fr);gap:20px;align-items:start}
  .lib-rec .cell-label{display:none}
  .lib-rec .c-act{grid-column:1/-1;padding-top:4px;border-top:1px solid var(--line)}
  .lib-legend{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lib-legend div{flex-direction:column;justify-content:flex-start}
}

/* ================= Proportionate prices, buttons and accent figures ================= */
.pricing-intro h2{font-size:clamp(26px,2.6vw,32px)}
.free-price{font-size:clamp(26px,2.6vw,32px);font-weight:650;letter-spacing:-.02em;line-height:1.1}
.price-note{font-size:14px;color:var(--muted);margin-top:4px}
.pricing-intro .actions{margin-top:14px}
.price-amount{font-size:30px;font-weight:650;letter-spacing:-.02em;line-height:1.1;margin-bottom:2px;font-variant-numeric:tabular-nums}
.price-amount + .price-unit,.price-amount + p,.price-amount + .price-note{margin-top:2px}
.billing-option .price-amount{font-size:26px}
.pricing-card .actions .btn{width:auto}
.pricing-card .btn::after,.pricing-intro .btn::after,.scope-card .btn-outline::after{content:"\2192"}
.btn-outline{background:rgba(240,244,243,.04)}
.rh-stat-row strong,.cvelib-stats strong{font-size:clamp(26px,3vw,34px)}
.metric-strip strong{font-size:clamp(20px,2vw,24px)}
.number-index{font-size:44px}
.step-num,.rh-method-n{font-size:36px}
@media(min-width:1025px){.pricing-intro>div:last-child{text-align:right}.pricing-intro .actions{justify-content:flex-end}}
.price-section{border-top:1px solid var(--line)}
.price-group-head{text-align:center;margin:8px 0 16px}
.price-group-head .eyebrow{justify-content:center}
.pricing-incident h3{font-size:clamp(22px,2.2vw,26px);margin-bottom:10px}
.pricing-incident .price-amount{margin-top:0}
.pricing-card .billing-option p{margin-top:2px}
.addons{margin-top:14px;padding:14px 16px;border-radius:14px;background:var(--panel-2)}
.addons-h{font:600 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:6px}
.addon{display:flex;justify-content:space-between;gap:12px;padding:6px 0;font-size:15px;color:var(--text)}
.addon+.addon{border-top:1px solid var(--line)}
.addon-p{font-weight:650;font-variant-numeric:tabular-nums}
.addon-note{font-size:13px;margin-top:6px}
.price-section .boundary+.boundary{margin-top:16px}
.price-close{justify-content:center;margin-top:32px}
@media(min-width:1025px){.pricing-cards-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:860px;margin-inline:auto}.pricing-cards-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1024px){.addon{text-align:left}}

/* ================= Forms v2 ================= */
.req-note{font-size:14px;color:var(--muted);margin:-8px 0 18px}
.req-note span,.field:has(:required) > label::after{color:var(--accent)}
.field:has(:required) > label::after{content:" *"}
.contact-use-note{margin-top:4px}
.form-panel .btn.form-submit,.rp-form .btn{display:inline-flex;width:auto;min-width:180px;margin-top:22px;opacity:1}
.form-panel .btn:disabled{opacity:.6}
.field-error{margin-top:8px;font-size:14px;color:#ff9f9f}
.field [aria-invalid=true]{border-color:#ff8f8f}
.preview-note{display:block;margin-top:18px}
.preview-note-on{border-style:solid;background:rgba(227,187,118,.08)}
@media(max-width:1024px){.form-panel .btn.form-submit,.rp-form .btn{margin-inline:auto}}

/* ================= Active incident card ================= */
.incident-card{max-width:860px;margin:32px auto 0;padding:32px;border-radius:var(--r);background:radial-gradient(120% 120% at 100% 0%,rgba(227,187,118,.10),transparent 60%),var(--panel);border:1px solid rgba(227,187,118,.35);border-left:4px solid var(--warn)}
.incident-card h2{font-size:clamp(24px,2.4vw,30px);margin-bottom:12px}
.incident-card>p{font-size:17px;line-height:1.6;color:var(--muted)}
.incident-card>p.incident-lead{font-size:clamp(19px,1.8vw,22px);font-weight:650;line-height:1.4;color:var(--text);margin-bottom:8px}
.faq-list details>div a,.boundary a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.incident-card h3{font:600 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--warn);margin-top:22px}
.incident-card .check-list{margin-top:10px}
.incident-card .check-list li{color:var(--text);font-size:16px}
.incident-card .actions{margin-top:24px}
@media(max-width:1024px){.incident-card{text-align:center;border-left:1px solid rgba(227,187,118,.35);border-top:4px solid var(--warn)}}
@media(max-width:767.98px){.incident-card{padding:24px 20px}}

/* ================= Closing call to action (shared: page bands and the global closing band) ================= */
.cta-band{position:relative;overflow:hidden;isolation:isolate;padding:112px 0;text-align:center;border-top:1px solid var(--line);background:radial-gradient(60% 80% at 50% 100%,rgba(105,204,227,.16),transparent 70%),linear-gradient(180deg,var(--bg),#0a1820)}
.cta-band::before{content:"";position:absolute;z-index:-1;left:50%;bottom:-340px;width:760px;aspect-ratio:1;transform:translateX(-50%);border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 calc(12.5% - 1px),rgba(105,204,227,.12) calc(12.5% - 1px) 12.5%);-webkit-mask:radial-gradient(circle,#000 35%,transparent 70%);mask:radial-gradient(circle,#000 35%,transparent 70%);pointer-events:none}
.cta-band .container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;text-align:center}
.cta-band h2{font-size:clamp(32px,3.6vw,44px);line-height:1.1;max-width:820px;margin-inline:auto}
.cta-band p{font-size:clamp(17px,1.4vw,19px);color:var(--muted);max-width:620px;margin:14px auto 0}
.cta-band .actions{margin-top:0;justify-content:center;align-items:center;gap:12px 24px}
.cta-band .btn{min-height:44px;padding:10px 22px;background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.cta-band .btn:hover{background:var(--accent-2);border-color:var(--accent-2)}
@media(max-width:767.98px){.cta-band{padding:64px 0}.cta-band::before{width:520px;bottom:-260px}.cta-band .actions{flex-direction:column}}

/* ================= Research stats cards ================= */
.rh-stat-row{max-width:900px}
.rh-stat-row .stat-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:22px 18px;border-radius:var(--r);background:rgba(16,26,35,.8);border:1px solid var(--line);text-align:center;color:var(--text);text-decoration:none;transition:border-color .16s,background-color .16s}
.rh-stat-row a.stat-card:hover{border-color:rgba(105,204,227,.5);background:#122029}
.rh-stat-row .stat-card strong{font-size:clamp(26px,3vw,34px);line-height:1.05;font-weight:700;letter-spacing:-.03em;color:var(--accent)}
.rh-stat-row .stat-label{font-size:15px;font-weight:600;color:var(--text);margin-top:2px}
.rh-stat-row .stat-card small{font-size:13.5px;color:var(--muted);line-height:1.4}
.rh-stat-row .stat-kicker{font:600 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.rh-stat-row .stat-name{font-family:var(--mono)}
.rh-stat-row a.stat-card small::after{content:" \2192";color:var(--accent)}
.stat-explain{max-width:640px;margin:14px auto 0;font-size:14px;color:var(--dim);text-align:center}

/* ================= Breadcrumb band v3 (slim, centered, aligned) ================= */
.crumbs{width:min(var(--max),calc(100% - 2*var(--gut)));height:48px;margin:0 auto;padding:0;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.06)}
.article-shell .crumbs{width:auto;margin:0 0 24px}
.crumbs ol{display:flex;flex-wrap:nowrap;align-items:center;width:100%;min-width:0;gap:0;margin:0;padding:0;font-size:13.5px;line-height:1;color:var(--muted)}
.crumbs li{display:flex;align-items:center;min-width:0;flex:0 100 auto}
.crumbs li:last-child{flex:0 1 auto}
.crumbs li+li::before{content:"/";flex-shrink:0;margin:0 8px;opacity:.5;color:var(--muted)}
.crumbs a,.crumbs [aria-current]{display:block;min-height:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crumbs a{padding:16px 0;margin:-16px 0;color:var(--muted);text-decoration:none}
.crumbs a:hover,.crumbs a:focus-visible{color:var(--text);text-decoration:underline;text-underline-offset:3px}
.crumbs [aria-current]{color:var(--text)}
@media(max-width:1024px){.crumbs{height:44px}}

/* Featured analysis card (library) */
.cvelib-feature .lib-feature-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.feat-meta{font-size:15px;color:var(--muted)}
.feat-meta code.lib-cve{margin:0}
.cvelib-feature .lib-an{margin-left:auto}
@media(max-width:1024px){.cvelib-feature .lib-an{margin-left:0}}

/* ================= Library toolbar v2 (12 px grid) ================= */
.lib-finder .container{display:block}
.cvelib-search input{min-height:48px;height:48px}
.lib-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px}
.lib-bar .sel{position:relative;display:block;flex:0 0 auto}
.lib-bar .sel select{-webkit-appearance:none;appearance:none;display:block;height:44px;min-height:44px;width:auto;min-width:168px;padding:0 44px 0 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:15px;line-height:1.2;cursor:pointer}
.lib-bar .sel::after{content:"";position:absolute;right:16px;top:50%;width:7px;height:7px;margin-top:-6px;border:solid var(--muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}
.lib-bar .sel select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.chip{display:inline-flex;align-items:center;justify-content:center;height:44px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:15px;font-weight:600}
.chip:hover{color:var(--text);border-color:var(--dim)}
.chip[aria-pressed=true]{background:rgba(105,204,227,.14);border-color:var(--accent);color:var(--text)}
.lib-bar .tip-wrap{flex:0 0 auto}
.lib-clear{min-height:44px;margin-left:auto;padding:0 4px;border:0;background:none;color:var(--muted);font-size:14px;text-decoration:underline;text-underline-offset:3px}
.lib-clear:hover{color:var(--text)}
.lib-finder .lib-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;margin-top:16px}
#lib-count{font-size:15px;font-weight:600;color:var(--text)}
.lib-info{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;color:var(--muted)}
.info-ico{display:inline-grid;place-items:center;flex-shrink:0;width:18px;height:18px;border-radius:50%;border:1px solid var(--dim);font:600 11px/1 var(--font);color:var(--muted)}
@media(max-width:1024px){
  .lib-bar{display:grid;grid-template-columns:1fr 1fr}
  .lib-bar .sel select,.lib-bar .chip{width:100%;min-width:0}
  .lib-bar .tip-wrap{display:flex}
  .lib-clear{grid-column:1/-1;margin:0 auto}
  .lib-finder .lib-meta{flex-direction:column;align-items:center;text-align:center}
  .lib-info{justify-content:center;text-align:left}
}

/* ================= Library sticky toolbar v3 (toolbar + column labels in one block) ================= */
html:has(.pg-library){scroll-padding-top:240px}
.lib-rec{scroll-margin-top:240px}
.lib-finder{position:sticky;top:60px;z-index:100;padding:12px 0 0;background:rgba(10,19,27,.97);-webkit-backdrop-filter:saturate(160%) blur(16px);backdrop-filter:saturate(160%) blur(16px);border-bottom:1px solid var(--line);transition:transform .22s var(--ease)}
.lib-finder .container{position:relative}
.lib-top{display:flex;align-items:center;gap:12px}
.lib-top .cvelib-search{flex:1 1 auto;min-width:0}
#lib-count{flex-shrink:0;margin:0;font-size:14px;font-weight:600;color:var(--muted)}
.lib-filters-btn{display:none;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:15px;font-weight:600;flex-shrink:0}
.lib-filters-btn[aria-expanded=true]{border-color:var(--accent)}
.badge-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700}
.lib-sheet-head,.lib-sheet-foot{display:none}
.lib-bar{margin-top:12px}
.lib-head{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.15fr) minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.5fr);gap:20px;position:static;margin:12px 0 0;padding:10px 25px;background:none;border:0;border-top:1px solid var(--line);font:500 12px/1.2 var(--font);letter-spacing:0;text-transform:none;color:var(--muted);-webkit-backdrop-filter:none;backdrop-filter:none}
.lib-head span{display:flex;align-items:center;gap:6px;white-space:nowrap;min-width:0}
.lib-head .info-ico{width:16px;height:16px;font-size:10px;text-decoration:none}
.lib-head .info-ico:hover{border-color:var(--accent);color:var(--accent)}
.lib-results{padding-top:20px}
.lib-results .lib-info{justify-content:center;margin:0 auto 16px;max-width:860px}
/* compact state (after the first screen, desktop) */
.lib-finder.compact .lib-filters-btn{display:inline-flex}
.lib-finder.compact .lib-bar{display:none}
.lib-finder.compact.filters-open .lib-bar{display:flex;position:absolute;right:0;top:56px;z-index:5;width:min(620px,100%);margin:0;padding:16px;border-radius:16px;background:#0b141c;border:1px solid var(--line);box-shadow:0 24px 60px rgba(0,0,0,.55);animation:hdIn .16s var(--ease)}
.lib-scrim{position:fixed;inset:0;z-index:299;background:rgba(3,7,11,.62)}
@media(max-width:1024px){
  html:has(.pg-library){scroll-padding-top:140px}
  .lib-rec{scroll-margin-top:140px}
  .lib-finder{top:56px;padding:10px 0;-webkit-backdrop-filter:none;backdrop-filter:none;background:#0a131b}
  .lib-finder.hide-up{transform:translateY(calc(-100% - 56px))}
  .lib-finder.filters-open{transform:none}
  .lib-top{flex-wrap:wrap}
  .lib-top .cvelib-search{flex:1 1 0}
  .cvelib-search input{height:44px;min-height:44px}
  .lib-filters-btn{display:inline-flex}
  #lib-count{width:100%;text-align:center;font-size:13.5px}
  .lib-head{display:none}
  .lib-bar,.lib-finder.compact .lib-bar{display:none}
  .lib-finder.filters-open .lib-bar,.lib-finder.compact.filters-open .lib-bar{display:grid;grid-template-columns:1fr 1fr;gap:12px;position:fixed;left:0;right:0;bottom:0;top:auto;z-index:300;width:auto;max-height:85vh;overflow-y:auto;margin:0;padding:20px var(--gut) calc(20px + env(safe-area-inset-bottom));background:#0b141c;border:0;border-top:1px solid var(--line);border-radius:22px 22px 0 0;box-shadow:0 -20px 60px rgba(0,0,0,.6);animation:hdIn .16s var(--ease)}
  .lib-sheet-head{display:block;grid-column:1/-1;margin:0 0 4px;font-size:19px;font-weight:650;color:var(--text);text-align:center}
  .lib-sheet-foot{display:grid;grid-template-columns:1fr 1fr;gap:12px;grid-column:1/-1;margin-top:8px}
  .lib-sheet-foot .btn{width:100%;max-width:none}
  .lib-bar > .lib-clear{display:none}
  .lib-results .lib-info{flex-direction:row}
}

/* Research hub search: same control styling */
.rh-select{position:relative}
.rh-select select{-webkit-appearance:none;appearance:none;height:48px;min-height:48px;padding-right:44px;cursor:pointer}
.rh-select::after{content:"";position:absolute;right:16px;bottom:20px;width:7px;height:7px;border:solid var(--muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);pointer-events:none}
.rh-search input{height:48px;min-height:48px}

/* ================= Flush sticky bars: everything sticks at the measured header height ================= */
:root{--hd-h:61px}
.ln{top:var(--hd-h);margin:0}
.lib-finder{top:var(--hd-h)}
@media(max-width:1024px){:root{--hd-h:57px}.ln{top:var(--hd-h)}.lib-finder{top:var(--hd-h)}.lib-finder.hide-up{transform:translateY(calc(-100% - var(--hd-h)))}}
.ln{background:#0a131b}

/* CVE context bar */
html:has(.pg-cve){scroll-padding-top:calc(var(--hd-h) + 72px)}
.ln-cve .ln-in{min-height:56px;gap:12px;justify-content:flex-start}
.ln-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 8px 0 0;color:var(--muted);font-size:14px;font-weight:500;text-decoration:none;flex-shrink:0}
.ln-back:hover{color:var(--text)}
.ln-chev{font-size:22px;line-height:1;margin-top:-2px}
.ln-sep{width:1px;height:20px;background:var(--line);flex-shrink:0}
.ln-cve .ln-title{display:flex;align-items:baseline;min-width:0;flex:1 1 auto;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ln-cve .ln-title code{font:600 14px var(--mono);color:var(--text)}
.ln-prod{color:var(--muted);font-weight:400;overflow:hidden;text-overflow:ellipsis}
.ln-chips{display:flex;gap:8px;flex-shrink:0}
.ln-chips .sev,.ln-chips .cvelib-tag{min-height:26px;font-size:11px}
.ln-help{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-size:14.5px;font-weight:650;text-decoration:none;flex-shrink:0;position:relative}
.ln-help::after{content:"";position:absolute;left:0;right:0;top:-2px;bottom:-2px}
.ln-help:hover{background:var(--accent-2);text-decoration:none}
.ln-help-s{display:none}
.ln-cve .ln-cta{display:none}
@media(max-width:1024px){
  .ln-cve .ln-in{min-height:52px;gap:8px;text-align:left}
  .ln-back{width:44px;justify-content:center;padding:0}
  .ln-back-t,.ln-chips,.ln-prod,.ln-sep{display:none}
  .ln-help-l{display:none}.ln-help-s{display:inline}
  .ln-help{height:40px;padding:0 14px}
}

/* CVE release table header */
.table-scroll thead th{font:500 12px/1.3 var(--font);letter-spacing:0;text-transform:none;color:var(--muted);white-space:nowrap}
.table-scroll td:first-child{white-space:nowrap;font-family:var(--mono);font-size:14px}

/* ================= Vertical rhythm (spacing scale 8, 12, 16, 24, 32, 48, 64, 96) ================= */
:root{--s1:8px;--s2:12px;--s3:16px;--s4:24px;--s5:32px;--s6:48px;--s7:64px;--s8:96px}
@media(max-width:767.98px){:root{--s2:10px;--s3:13px;--s4:20px;--s5:26px;--s6:38px;--s7:52px;--s8:76px}}
.prose > * + *,.article-body > * + *,.references > * + *,.incident-card > * + *,.faq-list details > div > * + *{margin-top:var(--s3)}
.prose > h2,.article-body > h2,.prose > p + h2,.article-body > p + h2{margin-top:var(--s6);margin-bottom:var(--s2)}
.prose > h2:first-child,.article-body > h2:first-child{margin-top:0}
.prose > h3,.article-body > h3{margin-top:var(--s5);margin-bottom:var(--s1)}
.prose > :is(.table-scroll,.price-table-wrap,.boundary,.pullquote,figure,pre,.nvx-method-grid,.nvx-method-next,.actions,.research-meta,.grid-2),.article-body > :is(.table-scroll,.price-table-wrap,.boundary,.pullquote,figure,pre,.nvx-method-grid,.nvx-method-next,.actions,.research-meta,.grid-2){margin-top:var(--s4);margin-bottom:var(--s4)}
.prose > :is(ul,ol),.article-body > :is(ul,ol){margin-top:var(--s3);margin-bottom:var(--s3)}
.prose li + li,.article-body li + li,.references li + li{margin-top:var(--s1)}
.prose > :last-child,.article-body > :last-child{margin-bottom:0}
.container > .boundary,.grid-2 + .boundary,.grid-4 + .boundary,.pricing-cards + .boundary,.lib-list + .lib-empty{margin-top:var(--s5)}
.section-head + .lede,.section-head + .grid-2,.section-head + .grid-3,.section-head + .grid-4{margin-top:0}
/* Services module filter (was unstyled) */
.filter-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s3)}
.filter-tabs{display:flex;flex-wrap:wrap;gap:var(--s1)}
.search-wrap{display:block;min-width:260px}
.search-wrap input{width:100%;height:44px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:#fff;color:#12232b;font-size:15px}
.filter-count{margin-bottom:var(--s4);font-size:14px;color:var(--dim)}
.no-results{margin-top:var(--s4);padding:var(--s5);text-align:center;border:1px dashed var(--line);border-radius:var(--r);color:var(--muted)}
@media(max-width:1024px){.filter-bar{flex-direction:column;align-items:stretch}.filter-tabs{justify-content:center}.search-wrap{min-width:0}.filter-count{text-align:center}}

/* ================= Services flyout v3 (Apple pattern: text-led) ================= */
.hd-mega{background:rgba(9,17,24,.97);-webkit-backdrop-filter:saturate(160%) blur(24px);backdrop-filter:saturate(160%) blur(24px);border-radius:0 0 18px 18px;animation:hmIn .2s var(--ease)}
@keyframes hmIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.hd-mega-in.hm{grid-template-columns:1.2fr 1.3fr .8fr;gap:56px;padding:56px 0 40px}
.hm-label{font:500 13px/1.4 var(--font);letter-spacing:0;text-transform:none;color:var(--dim);margin:0 0 18px}
.hm-list{list-style:none;margin:0;padding:0}
.hm-list li{margin:0;animation:hmItem .2s var(--ease) both;animation-delay:calc(var(--i,0) * 20ms)}
@keyframes hmItem{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.hm-list a{display:flex;text-decoration:none;color:#d6dfe2;transition:color .16s,opacity .16s,transform .16s var(--ease)}
.hm-list a:hover,.hm-list a:focus-visible{color:#fff;transform:translateX(2px)}
.hm-list:hover a:not(:hover){opacity:.6}
.hm-list a[aria-current]{color:var(--accent)}
.hm-big{align-items:baseline;gap:14px;min-height:52px;padding:6px 0}
.hm-big .hm-name{font-size:clamp(26px,2.2vw,30px);font-weight:600;letter-spacing:-.02em;line-height:1.15}
.hm-big .hm-desc{font-size:14px;color:var(--dim)}
.hm-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 28px}
.hm-mod{flex-direction:column;justify-content:center;min-height:52px;padding:4px 0}
.hm-mod .hm-name{font-size:17px;font-weight:500;line-height:1.3}
.hm-mod .hm-desc{font-size:13px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hm-small{align-items:center;min-height:40px;font-size:14px}
.hm-foot{grid-column:1/-1;margin:8px 0 0;padding-top:20px;border-top:1px solid var(--line);font-size:14px;color:var(--muted)}
.hm-foot a{color:var(--accent);text-decoration:none;font-weight:500;display:inline-flex;align-items:center;min-height:44px}
.hm-foot a:hover{text-decoration:underline;text-underline-offset:3px}
.hd-acc-panel.hm{text-align:center;padding:20px 0}
.hd-acc-panel .hm-list a{justify-content:center}
.hd-acc-panel .hm-big{flex-direction:column;align-items:center;gap:2px}
.hd-acc-panel .hm-label{margin:20px 0 8px;text-align:center}
@media(max-width:599.98px){.hd-acc-panel .hm-grid{grid-template-columns:1fr}}
.hd-acc-panel .hm-mod{align-items:center}

/* ================= Backdrops: radar = RADAR product only ================= */
.dial{width:100%;left:0;top:0;bottom:0;height:auto;aspect-ratio:auto;transform:none;border-radius:0;opacity:1;
  background:radial-gradient(60% 70% at 50% 30%,rgba(105,204,227,.12),transparent 70%),
   linear-gradient(rgba(105,204,227,.05) 1px,transparent 1px) 0 0/48px 48px,
   linear-gradient(90deg,rgba(105,204,227,.05) 1px,transparent 1px) 0 0/48px 48px;
  -webkit-mask:radial-gradient(80% 90% at 50% 30%,#000 40%,transparent 85%);mask:radial-gradient(80% 90% at 50% 30%,#000 40%,transparent 85%)}
.dial::before,.dial::after{content:none}
.hero-visual::before{animation:none;background:linear-gradient(rgba(105,204,227,.07) 1px,transparent 1px) 0 0/40px 40px,linear-gradient(90deg,rgba(105,204,227,.07) 1px,transparent 1px) 0 0/40px 40px;border-radius:0;width:100%;height:100%;left:0;top:0;transform:none;aspect-ratio:auto}
.cta-band::before{width:100%;left:0;bottom:0;top:0;aspect-ratio:auto;transform:none;border-radius:0;background:linear-gradient(rgba(105,204,227,.05) 1px,transparent 1px) 0 0/48px 48px,linear-gradient(90deg,rgba(105,204,227,.05) 1px,transparent 1px) 0 0/48px 48px;-webkit-mask:radial-gradient(70% 90% at 50% 100%,#000 30%,transparent 80%);mask:radial-gradient(70% 90% at 50% 100%,#000 30%,transparent 80%)}
/* RADAR pages keep the sweep dial */
:is(.pg-radar,.pg-radar-method,.pg-radar-request,.pg-radar-sample) .dial{left:50%;top:-8%;bottom:auto;width:min(1180px,150vw);aspect-ratio:1;transform:translateX(-50%);border-radius:50%;opacity:.55;
  background:radial-gradient(circle,transparent 0 calc(50% - 1px),rgba(105,204,227,.22) calc(50% - 1px) 50%,transparent 50%),repeating-radial-gradient(circle,transparent 0 calc(12.5% - 1px),rgba(105,204,227,.08) calc(12.5% - 1px) 12.5%);
  -webkit-mask:radial-gradient(circle,#000 30%,transparent 70%);mask:radial-gradient(circle,#000 30%,transparent 70%)}
:is(.pg-radar,.pg-radar-method,.pg-radar-request,.pg-radar-sample) .dial::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(105,204,227,.30),rgba(105,204,227,.06) 40deg,transparent 70deg);animation:sweep 9s linear infinite}

/* 404 (round 3): live illustration restored, centered, calm backdrop */
.nf{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--hd-h));min-height:calc(100svh - var(--hd-h));padding:clamp(48px,7vw,96px) 16px}
.nf-wrap{position:relative;z-index:1;width:100%;max-width:1200px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-items:center;gap:clamp(32px,5vw,56px)}
.nf-copy{width:100%;max-width:640px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center}
.nf-copy .eyebrow{margin:0 auto 18px}
.nf-copy h1{margin:0;font-size:clamp(40px,6.2vw,76px);line-height:1.04;letter-spacing:-.04em;text-wrap:balance}
.nf-copy h1 .accent{white-space:nowrap}
.nf-copy .lede{margin:20px auto 0;max-width:34ch;text-wrap:balance}
.nf-sub{margin:12px auto 0;max-width:46ch;color:var(--muted);text-wrap:pretty}
.nf-copy .actions{justify-content:center;margin-top:28px}
.nf-help{margin-top:22px;font-size:15px;color:var(--muted)}
.nf-help a{color:var(--accent)}
.nf-figure{width:100%;max-width:640px;margin:0 auto;text-align:center}
.nf-stage{position:relative;width:100%;margin:0 auto}
.nf-art{display:block;width:100%;height:auto;overflow:visible}
.nf-art text{user-select:text}
.nf-door-label{font-family:var(--font)}
.nf-caption{margin-top:6px;font:600 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.nf-interaction{margin-top:16px;display:flex;justify-content:center}
.nf-knock{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 20px;border-radius:999px;border:1px solid rgba(105,204,227,.35);background:rgba(105,204,227,.06);color:var(--text);font:600 15px var(--font);cursor:pointer;transition:background .16s,border-color .16s}
.nf-knock:hover{background:rgba(105,204,227,.12);border-color:var(--accent)}
.nf-knock:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.nf-knock svg{width:18px;height:18px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nf-speech{position:absolute;left:62%;top:34%;transform:translate(-50%,-100%);margin:0;padding:10px 16px;border-radius:14px;background:var(--text);color:#081a21;font:600 14px/1.35 var(--font);white-space:nowrap;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.nf-speech::after{content:"";position:absolute;left:50%;bottom:-7px;width:14px;height:14px;background:inherit;transform:translateX(-50%) rotate(45deg);border-radius:2px}
.nf-speech[hidden]{display:none}
/* Motion: the traveller sways gently; a knock rattles the door and makes the page hop */
.nf-traveller,.nf-door{transform-box:fill-box}
.nf-traveller{transform-origin:50% 100%;animation:nf-sway 4.8s ease-in-out infinite}
.nf-door{transform-origin:100% 50%}
.nf-knocking .nf-door{animation:nf-rattle .5s ease-in-out}
.nf-knocking .nf-traveller{animation:nf-hop .5s ease-out}
.nf-speech.nf-in{animation:nf-pop .22s ease-out}
@keyframes nf-sway{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(.6deg)}}
@keyframes nf-rattle{0%,100%{transform:none}20%{transform:translateX(-3px)}40%{transform:translateX(2px)}60%{transform:translateX(-2px)}80%{transform:translateX(1px)}}
@keyframes nf-hop{0%,100%{transform:translateY(0)}40%{transform:translateY(-9px)}}
@keyframes nf-pop{from{opacity:0;transform:translate(-50%,-90%)}to{opacity:1;transform:translate(-50%,-100%)}}
@media(min-width:1180px){
  .nf-wrap{grid-template-columns:minmax(0,1fr) minmax(560px,1.1fr);justify-items:stretch}
  .nf-copy{text-align:left;align-items:flex-start;margin:0}
  .nf-copy .eyebrow,.nf-copy .lede,.nf-sub{margin-left:0;margin-right:0}
  .nf-copy .actions{justify-content:flex-start}
  .nf-figure{max-width:none}
}
@media(max-width:767px){.nf-speech{font-size:13px;white-space:normal;width:max-content;max-width:70vw}.nf-figure{max-width:100%}}
@media(prefers-reduced-motion:reduce){.nf-traveller,.nf-knocking .nf-traveller,.nf-knocking .nf-door,.nf-speech.nf-in{animation:none!important}}
@media print{.nf-knock{display:none}}

/* Sample report and tool pages */
.report-layout{display:grid;gap:32px}
.report-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.report-nav .label{width:100%;text-align:center}
.report-nav a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--muted);text-decoration:none}
.report-nav a:hover{color:var(--accent)}
.report-nav .btn{color:var(--text)}
.report-heading{padding-bottom:28px;border-bottom:1px solid var(--line);text-align:center}
.report-heading h1{font-size:clamp(34px,4.6vw,54px);margin:16px 0 10px}
.report-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;margin-top:16px;font:600 11px/1.4 var(--mono);letter-spacing:.08em;color:var(--dim)}
.report-section{padding:40px 0;border-bottom:1px solid var(--line)}
.report-section > * + *{margin-top:var(--s3)}
.report-section > :is(.price-table-wrap,.boundary,.help-box,.finding,.check-list,.actions){margin-top:var(--s4)}
.report-section h2{font-size:clamp(26px,2.6vw,32px)}
.finding{padding:28px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
.finding + .finding{margin-top:var(--s4)}
.finding-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px}
.finding-head h3{font-size:21px}
.finding h4{font:600 11px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin:20px 0 6px}
.priority{flex-shrink:0;padding:4px 10px;border-radius:var(--pill);font:600 11px var(--mono);text-transform:uppercase;color:var(--warn);border:1px solid rgba(227,187,118,.4)}
.tech-detail{margin-top:18px;border-top:1px solid var(--line)}
.tech-detail summary{display:flex;align-items:center;min-height:44px;cursor:pointer;color:var(--accent);font-size:14px;font-weight:600}
.tech-detail pre,.code-block pre{margin-top:10px;padding:16px;border-radius:12px;background:var(--bg);border:1px solid var(--line);font:13px/1.7 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;color:var(--text)}
.help-box{padding:28px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line)}
.help-box h3{margin:6px 0 10px}
.code-block{margin:var(--s4) 0;position:relative}
.code-label{font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.prose code,.article-body code{padding:1px 6px;border-radius:6px;background:var(--panel-2);font-size:.88em;color:var(--text);overflow-wrap:anywhere}
.code-block pre code{padding:0;background:none}
@media(min-width:1025px){.report-layout{grid-template-columns:220px minmax(0,1fr);gap:56px;align-items:start}.report-nav{position:sticky;top:calc(var(--hd-h) + 72px);flex-direction:column;align-items:flex-start;gap:0;border-bottom:0}.report-nav .label{text-align:left}.report-nav .btn{margin-top:16px}.report-heading{text-align:left}.report-meta{justify-content:flex-start}}

/* ================= Round 4 (Principal's review) ================= */
/* 1. One container edge for header, menu, sub-bar and menu strip; one header-bar height variable */
:root{--wrap:min(var(--max),calc(100% - 2*var(--gut)));--hd-bar:60px;--navy:#080f16}
@media(max-width:1024px){:root{--hd-bar:56px}}
.gn-bar,.hd-mega-in,.hm-strip-in,.ln-in{width:var(--wrap);max-width:none;margin-inline:auto;box-sizing:border-box}
.gn-bar{min-height:var(--hd-bar)}

/* 2. Solid surfaces: header, Services panel, mobile sheet and sub-bar are the same navy at every scroll position */
.gn,html.mega-open .gn,html.menu-open .gn{background:var(--navy);-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1;border-bottom:1px solid rgba(255,255,255,.08)}
.hd-mega{background:var(--navy);-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1;border-radius:0;border-bottom:1px solid var(--line);box-shadow:0 24px 48px rgba(0,0,0,.45);animation:hmPanel .18s var(--ease)}
.hd-sheet,.hd-sheet-foot{background:var(--navy);-webkit-backdrop-filter:none;backdrop-filter:none}
.ln,.ln.show{background:var(--navy);-webkit-backdrop-filter:none;backdrop-filter:none}
.hd-scrim{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(3,7,11,.6)}

/* 3. Sub-bar docked inside the sticky header (site.js moves it there): always flush, no gap, nothing shows through */
.ln.ln-docked{position:absolute;top:100%;left:0;right:0;z-index:-1;margin:0;border-bottom:1px solid rgba(255,255,255,.08);transform:translateY(-8px);opacity:0;visibility:hidden;transition:transform .18s var(--ease),opacity .18s,visibility .18s}
.ln.ln-docked.show{transform:none;opacity:1;visibility:visible}
html.mega-open .ln.ln-docked,html.menu-open .ln.ln-docked{opacity:0;visibility:hidden}

/* 4. Services panel v4: 12-column grid, two-line rows, 72 px footer strip */
.hd-mega-in.hm{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;row-gap:0;padding:56px 0 48px}
.hm-col-svc{grid-column:1/6}.hm-col-mod{grid-column:6/10}.hm-col-exp{grid-column:10/13}
.hd-mega .hm-label{font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:0 0 24px}
.hd-mega .hm-list{list-style:none;margin:0;padding:0;display:grid}
.hm-col-svc .hm-list{gap:28px}
.hm-col-mod .hm-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 32px}
.hm-col-exp .hm-list{gap:12px}
.hd-mega .hm-list li{animation:hmItem .18s var(--ease) both;animation-delay:calc(var(--i,0) * 15ms)}
.hd-mega .hm-list a{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:0;min-height:0;padding:0;color:#e6edef;text-decoration:none;transition:color .16s,opacity .16s,transform .16s var(--ease)}
.hd-mega .hm-list a::before{content:"";position:absolute;left:0;right:0;top:-10px;bottom:-10px}
.hd-mega .hm-big .hm-name{font-size:28px;line-height:32px;font-weight:600;letter-spacing:-.02em}
.hd-mega .hm-big .hm-desc{font-size:15px;line-height:24px;color:var(--muted);margin:0}
.hd-mega .hm-mod .hm-name{font-size:17px;line-height:24px;font-weight:500}
.hd-mega .hm-mod .hm-desc{font-size:14px;line-height:20px;color:var(--muted);white-space:normal;overflow:visible}
.hd-mega .hm-small{flex-direction:row;align-items:center;font-size:15px;line-height:24px;color:#d6dfe2}
.hd-mega .hm-small.hm-accent{color:var(--accent)}
.hd-mega .hm-list:hover a:not(:hover){opacity:.55}
.hd-mega .hm-list a:hover,.hd-mega .hm-list a:focus-visible,.hd-mega .hm-small.hm-accent:hover{color:#fff;opacity:1;transform:translateX(2px)}
.hd-mega a:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}
.hd-mega .hm-list a[aria-current]{color:var(--accent)}
.hm-strip{border-top:1px solid var(--line)}
.hm-strip-in{height:72px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.hm-strip-l{margin:0;display:flex;align-items:center;gap:12px;font-size:15px;line-height:24px;color:var(--muted)}
.hm-strip-l a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;gap:6px;color:var(--accent);font-weight:500}
.hm-strip-l a:hover{color:#fff}
.hm-arrow{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s var(--ease)}
.hm-strip-l a:hover .hm-arrow,.hm-foot a:hover .hm-arrow{transform:translateX(2px)}
.hm-foot .hm-arrow{margin-left:6px}
@keyframes hmItem{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes hmPanel{from{opacity:0}to{opacity:1}}
/* Sheet (tablet and phone): same two-line pattern, one centered axis */
.hd-acc-panel .hm-big{flex-direction:column;align-items:center;gap:0;min-height:44px;padding:8px 0}
.hd-acc-panel .hm-big .hm-name{font-size:24px;line-height:32px;font-weight:600}
.hd-acc-panel .hm-big .hm-desc{font-size:15px;line-height:24px;color:var(--muted)}
.hd-acc-panel .hm-mod .hm-name{font-size:17px;line-height:24px}
.hd-acc-panel .hm-mod .hm-desc{font-size:14px;line-height:20px;color:var(--muted);white-space:normal}
.hd-acc-panel .hm-label{font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.hd-acc-panel .hm-foot{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 8px;min-height:72px;margin:16px 0 0;padding:0;border-top:1px solid var(--line)}
@media(prefers-reduced-motion:reduce){.hd-mega,.hd-mega .hm-list li{animation:none!important}.hd-mega .hm-list a{transition:none}}

/* 5. Closing band: one component, one centered axis, same on every page */
.cta-band.close-cta{padding:96px 16px;text-align:center}
.cta-band::before{content:none}
.close-in{max-width:720px;margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center}
.close-in h2{margin:0;max-width:none;font-size:clamp(32px,3.6vw,44px);line-height:1.1;text-wrap:balance}
.close-in p{margin:14px 0 0;max-width:none;font-size:clamp(17px,1.4vw,19px);color:var(--muted)}
.close-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px 24px;margin-top:28px}
.close-actions .text-link{display:inline-flex;align-items:center;min-height:44px;margin:0}
@media(max-width:767.98px){.cta-band.close-cta{padding:64px 16px}}

/* 6. Incident card: normal section rhythm, full content-column width */
.incident-section{padding:clamp(64px,7vw,96px) 0}
section:has(+ .incident-section){padding-bottom:0}
.incident-card{max-width:none;margin:0}
.pricing-incident + .incident-card{margin-top:var(--s5)}

/* 7. No decoration without information: grid, rings and glow dots removed (RADAR pages keep the radar) */
.dial{display:none}
:is(.pg-radar,.pg-radar-method,.pg-radar-request,.pg-radar-sample) .dial{display:block}
.hero-visual::before,.hero-visual::after,.editorial-art::before,.editorial-art::after{content:none}

/* 8. Home: the service path and its modules as one linked diagram (live names, descriptors and lines) */
.svc-map{margin:56px auto 0;max-width:980px;padding:32px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);text-align:left}
.svc-map-h,.svc-mods-h{font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:0 0 16px}
.svc-mods-h{margin-top:28px}
.svc-path{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.svc-path li{position:relative}
.svc-path li + li::before{content:"";position:absolute;left:-16px;top:38px;width:16px;height:2px;background:var(--accent);opacity:.7}
.svc-path a{display:flex;flex-direction:column;align-items:flex-start;height:100%;padding:18px 16px;border-radius:14px;border:1px solid var(--line);background:var(--bg);color:var(--text);text-decoration:none;transition:border-color .16s}
.svc-path a:hover,.svc-mods a:hover{border-color:var(--accent)}
.svc-ico{width:24px;height:24px;margin-bottom:12px;fill:none;stroke:var(--accent);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.svc-k{font:600 11px/16px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.svc-path strong{font-size:19px;line-height:28px;font-weight:650;letter-spacing:-.01em}
.svc-l{font-size:14px;line-height:20px;color:var(--muted)}
.svc-mods{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.svc-mods a{display:flex;flex-direction:column;justify-content:center;min-height:44px;height:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);color:var(--text);text-decoration:none;transition:border-color .16s}
.svc-mods strong{font-size:15px;line-height:20px;font-weight:600}
.svc-mods span{font-size:13px;line-height:18px;color:var(--muted)}
@media(max-width:1024px){
  .svc-map{max-width:640px;padding:24px 16px;text-align:center}
  .svc-path{grid-template-columns:1fr;gap:12px}
  .svc-path li + li::before{left:50%;top:-12px;width:2px;height:12px;margin-left:-1px}
  .svc-path a{align-items:center;text-align:center}
  .svc-mods{grid-template-columns:repeat(2,minmax(0,1fr))}
  .svc-mods a{align-items:center;text-align:center}
}
@media(max-width:479.98px){.svc-mods{grid-template-columns:1fr}}

/* 9. Explainer cards: one line illustration per subject (same viewBox, 1.5 px strokes, cyan and muted navy) */
.editorial-art{height:auto;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.ed-ill{display:block;width:100%;max-width:240px;height:auto;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ed-ill .n{stroke:#3e5d6b}.ed-ill .m{stroke:#62808c}.ed-ill .c{stroke:var(--accent)}.ed-ill .cf{fill:var(--accent);stroke:none}

/* 10. Research feature: facts instead of a numbered decoration */
.rh-facts{min-height:0;align-content:center}
.rh-facts dl{margin:0;display:grid;gap:16px}
.rh-facts dl > div{padding-bottom:16px;border-bottom:1px solid #2a4552}
.rh-facts dl > div:last-child{border-bottom:0;padding-bottom:0}
.rh-facts dt{font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:#9fb3bd}
.rh-facts dd{margin:4px 0 0;font-size:17px;line-height:24px;color:var(--text)}

/* 11. One width rule: blocks inside .container use the full container width at every size (no narrower floating boxes) */
@media(max-width:1024px){.grid-2,.grid-3,.grid-4,.steps,.pricing-cards,.rh-latest-grid,.rh-method-grid,.rh-publication-grid,.od-domains,.od-details,.cvelib-signal-grid,.nvx-method-grid{max-width:none}}
@media(min-width:1025px){.pricing-cards-2{max-width:none}}
.boundary{border-left:1px solid var(--line);border-top:1px solid var(--line)}
@media(max-width:1024px){.boundary{border-top:1px solid var(--line)}}

/* 12. Incident card: centered in the container, full content width, 4 px amber top accent at every size, equal padding */
.incident-card,.incident-card:is(*){border:1px solid rgba(227,187,118,.35);border-top:4px solid var(--warn);padding:32px}
@media(max-width:767.98px){.incident-card{padding:24px 16px}}

/* 13. Pricing packages: three equal cards, rows aligned across cards (subgrid), button on one baseline */
.pkg-grid{display:grid;gap:24px;grid-template-columns:minmax(0,1fr)}
.pkg{display:flex;flex-direction:column;padding:32px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);text-align:left}
.pkg h3{margin:0;font-size:21px;line-height:28px;font-weight:650}
.pkg-desc{margin:8px 0 0;font-size:15px;line-height:24px;color:var(--muted)}
.pkg-tier{display:flex;flex-direction:column;gap:0;padding:16px 0;border-top:1px solid var(--line)}
.pkg-tier:first-of-type{margin-top:24px}
.pkg-label{display:block;margin:0 0 8px;font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.pkg-price{font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.pkg-bill{font-size:14px;line-height:20px;color:var(--muted)}
.pkg-addons{margin-top:8px;padding:16px;border-radius:12px;border:1px solid var(--line);background:var(--panel-2)}
.pkg-addon{display:flex;justify-content:space-between;gap:16px;padding:8px 0;font-size:15px;line-height:24px;border-top:1px solid var(--line)}
.pkg-addon:first-of-type{border-top:0}
.pkg-addon span:last-child{font-weight:600;font-variant-numeric:tabular-nums}
.pkg-slot{min-height:0}
.pkg-act{margin-top:auto;padding-top:24px}
.pkg-act .btn{margin:0}
@media(min-width:1025px){
  .pkg-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(5,auto)}
  .pkg-tier:first-of-type{margin-top:0}
  @supports(grid-template-rows:subgrid){
    .pkg{display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:0}
    .pkg-desc{margin-bottom:24px}
    .pkg-act{align-self:end}
  }
}
@media(max-width:1024px){.pkg{text-align:center}.pkg-addon{text-align:left}.pkg-slot{display:none}}
@media(max-width:767.98px){.pkg{padding:24px 16px}}

/* Button groups: one centered group, 16 px gap, equal height. The D74 auto side margins on .btn had pushed the two
   buttons of a pair to opposite edges inside flex rows. Phones up to 600 px stack full width (max 360 px);
   from 601 px buttons sit side by side, centered, with the same minimum width. */
main .actions,.cta-band .close-actions,main .rh-card-end,main .od-actions{gap:16px}
main .actions > .btn,main .actions > a.btn,main .actions > .text-link,.close-actions > .btn{margin:0!important;flex:0 0 auto}
@media(max-width:1024px){main .actions{justify-content:center;align-items:stretch}}
@media(min-width:601px) and (max-width:1280px){
  main .actions:has(> .btn + .btn){flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:stretch}
  main .actions:has(> .btn + .btn) > .btn{width:auto;min-width:220px;max-width:none;min-height:48px;justify-content:center}
}
@media(min-width:1025px){main .split-copy .actions,main .hero-copy .actions{justify-content:flex-start}}
@media(min-width:1025px){main .tile-hero .actions,main .section-head .actions{justify-content:center}}
@media(max-width:600px){
  .tile-hero .actions,main .actions:has(> .btn + .btn){flex-direction:column;align-items:center;gap:12px}
  .tile-hero .actions .btn,main .actions:has(> .btn + .btn) > .btn{width:100%;max-width:360px;min-width:0}
}
@media(min-width:601px) and (max-width:767.98px){
  .tile-hero .actions,main .actions:has(> .btn + .btn){flex-direction:row}
  .tile-hero .actions .btn,main .actions:has(> .btn + .btn) > .btn{width:auto;max-width:none}
}
/* D75: no icon-in-circle before text (check lists, safety lists, deliverables): plain text lines */
.check-list li::before,.od-safety li::before,.deliverable-card::before{content:none!important;display:none!important}
.check-list li,.od-safety li{gap:0}

/* CVE record cards (library list) below 1024 px: centered header, four equal fact cells on shared rows
   (label, value, secondary line aligned across cells), one centered link. Desktop keeps the table row. */
@media(max-width:1024px){
  .lib-rec{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:24px 20px;text-align:center}
  .lib-rec .c-vuln{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:4px;padding-bottom:8px}
  .lib-rec .c-vuln > *{display:block;margin:0}
  .lib-rec .lib-prod{font-size:19px;line-height:26px;font-weight:650}
  .lib-rec .lib-vendor{font-size:15px;line-height:22px;color:var(--muted)}
  .lib-rec .lib-cve{font-size:14px;line-height:20px}
  .lib-rec :is(.c-kev,.c-cvss,.c-epss,.c-fix){display:grid;grid-template-rows:auto auto auto;align-content:start;justify-items:center;row-gap:4px;padding:14px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);min-width:0}
  .lib-rec .cell-label{display:block;margin:0;font:600 11px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);text-wrap:balance}
  .lib-rec :is(.kev-yes,.kev-no,.lib-score,.lib-epss,.fx){display:block;margin:0;font-size:17px;line-height:24px;font-weight:600;color:var(--text)}
  .lib-rec .lib-score b{font-weight:600}
  .lib-rec :is(.c-kev,.c-cvss,.c-epss,.c-fix) > :is(small,.fx-link){display:block;margin:0;font-size:13px;line-height:18px;color:var(--dim)}
  .lib-rec .fx-link{color:var(--accent)}
  .lib-rec .c-act{grid-column:1/-1;display:flex;justify-content:center;padding:12px 0 0;margin:0;border-top:1px solid var(--line)}
  .lib-rec .c-act .lib-an{margin:0}
}
@media(max-width:1024px){
  .lib-legend{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;text-align:center}
  .lib-legend > div{display:flex;flex-direction:column;align-items:center;gap:2px}
  .lib-legend dt,.lib-legend dd,.lib-legend b,.lib-legend span{text-align:center;margin:0}
}
/* Library toolbar + column header: ONE sticky block under the header, opaque, hairline, no scroll logic */
.lib-finder{position:sticky!important;top:var(--hd-h)!important;z-index:120;transform:none!important;margin:0;padding:12px 0 0!important;background:var(--navy)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-bottom:1px solid var(--line)}
.lib-finder .lib-head{margin:16px 0 0;padding-top:10px;padding-bottom:10px}
.lib-results{padding:16px 0 var(--sec-pad)!important}
.lib-results > .container > :first-child{margin-top:0}
.lib-bar .chip{min-height:44px;display:inline-flex;align-items:center}
.lib-bar .chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
@media(max-width:1024px){
  .lib-finder{padding:10px 0!important}
  .lib-finder .lib-top{display:flex;align-items:center;justify-content:center;gap:12px}
  .lib-finder .lib-top .cvelib-search{flex:1 1 auto;max-width:520px}
  .lib-finder #lib-count{display:none}
}
/* Library rows: no repeated link line; product name and CVE id link to the analysis; plain "Analysis" label */
.lib-cve-line{display:inline-flex;align-items:baseline;gap:10px;flex-wrap:wrap;justify-content:inherit}
.lib-rec a.lib-cve{font-family:var(--mono);color:var(--accent);text-decoration:none}
.lib-rec a.lib-prod{color:var(--text);text-decoration:none}
.lib-rec a.lib-prod:hover,.lib-rec a.lib-cve:hover{text-decoration:underline;text-underline-offset:3px}
.lib-rec a.lib-prod:focus-visible,.lib-rec a.lib-cve:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.lib-has-an{font:600 11px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
@media(min-width:1025px){.lib-rec{padding-block:16px;align-items:center}.lib-rec .c-vuln{gap:0}}
@media(max-width:1024px){.lib-cve-line{justify-content:center}}
/* Desktop: the record is one row; the four fact columns are equal width (header columns match) and the link is centered */
@media(min-width:1025px){
  .lib-head,.lib-rec{grid-template-columns:minmax(0,1.6fr) repeat(4,minmax(0,1fr))!important}
  .lib-rec .c-act{display:flex;justify-content:center;padding-top:12px}
  .lib-rec :is(.kev-yes,.kev-no,.lib-score,.lib-epss,.fx){font-size:16px;line-height:24px;font-weight:600}
}
@media(min-width:600px) and (max-width:1024px){
  .lib-rec{grid-template-columns:repeat(2,minmax(0,1fr))}
  @supports (grid-template-rows:subgrid){
    .lib-rec :is(.c-kev,.c-cvss,.c-epss,.c-fix){grid-row:span 3;grid-template-rows:subgrid}
  }
}

/* 13b. One rule for every price block (single, tiered, recurring, hourly, free): reference is the accent fee label
   of the single-price cards. Tier label 12 px muted caps; price figure 32 px; fee label 14 px accent, 2 px below */
.pricing-card .billing-option > span,.pkg .pkg-tier > .pkg-label{display:block;margin:0 0 8px;font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.pricing-card .price-amount,.pricing-card .billing-option .price-amount,.pricing-intro .price-amount,.pkg .pkg-price,.pricing-intro .free-price{display:block;margin:0;font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.pricing-card .price-unit,.pricing-card .billing-option > p,.pkg .pkg-bill,.pricing-intro .price-note{display:block;margin:2px 0 0;font-size:14px;line-height:20px;font-weight:600;color:var(--accent)}
.pricing-card .price-unit{margin-bottom:14px}

/* Secure Mail add-ons: one plain full-width row under the three package cards (no card inside a card) */
.addon-row{margin-top:24px;padding:24px 32px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);display:grid;gap:16px;align-items:center}
.addon-row-h{margin:0;font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.addon-items{display:grid;gap:16px}
.addon-item{display:flex;flex-direction:column}
.addon-name{font-size:17px;line-height:24px;font-weight:600;color:var(--text)}
.addon-price{font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.addon-bill{font-size:14px;line-height:20px;font-weight:600;color:var(--accent);margin-top:2px}
@media(min-width:768px){.addon-items{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1025px){.addon-row{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.addon-item{align-items:flex-start}}
@media(max-width:1024px){.addon-row{text-align:center}.addon-item{align-items:center}}
@media(max-width:767.98px){.addon-row{padding:24px 16px}}

/* 14. Pricing notes: one two-column facts row, no accent bars, no extra button (the shared closing band follows) */
.facts-row{display:grid;gap:24px;grid-template-columns:minmax(0,1fr)}
@media(min-width:1025px){.facts-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fact{height:100%;padding:24px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.fact h3{margin:0 0 8px;font-size:17px;line-height:24px;font-weight:650}
.fact p{margin:0;font-size:16px;line-height:24px;color:var(--muted)}
@media(max-width:1024px){.fact{text-align:center}}

/* ================= Round 4b (home review) ================= */
/* Section rhythm (one system value): every top-level section gets half the gap above and below its content,
   so two consecutive sections are 96 px apart from 1024 px, 80 px on tablets and 64 px on phones.
   The :not() pair lifts specificity above the older one- and two-class section rules. */
:root{--sec-pad:48px}
@media(max-width:1024px){:root{--sec-pad:40px}}
@media(max-width:767.98px){:root{--sec-pad:32px}}
main > section:not(.nf):not(.sec-keep),body > .cta-band.close-cta:not(.sec-keep){padding-top:var(--sec-pad);padding-bottom:var(--sec-pad)}
main > section:not(.nf):not(.sec-keep) > .container > :first-child,main > section:not(.nf):not(.sec-keep) > .container > .section-head:first-child .intro > :first-child{margin-top:0}
main > section:not(.nf):not(.sec-keep) > .container > :last-child,main > section:not(.nf):not(.sec-keep) > .container > :last-child > :last-child{margin-bottom:0}
main > section:not(.nf):not(.sec-keep) > .container > :first-child > :first-child{margin-top:0}
/* Blocks that sit in main as a bare .container (the disclosure strip) follow the same section rhythm */
main > .container:has(> .disclosure-strip){padding-block:var(--sec-pad)}
main > .container > .disclosure-strip{margin:0 auto}
/* Breadcrumb band to the first section: same half value */
main > .crumbs + section:not(.nf):not(.sec-keep){padding-top:var(--sec-pad)}

/* Section header rhythm: ONE rule for every section title block on every page and width.
   eyebrow to title 16 px, title to text 16 px, header to content 48 px; scaled down only slightly on smaller screens. */
:root{--sh-1:16px;--sh-2:16px;--sh-after:48px}
@media(max-width:1024px){:root{--sh-1:14px;--sh-2:16px;--sh-after:40px}}
@media(max-width:767.98px){:root{--sh-1:12px;--sh-2:14px;--sh-after:36px}}
.section-head,.section-heading{gap:var(--sh-2);margin:0 auto var(--sh-after)}
.section-head .intro > .eyebrow,.section-head > .eyebrow,.section-heading > .eyebrow,.split-copy > .eyebrow{margin:0 0 var(--sh-1)}
.section-head h2,.section-heading h2{margin-top:0;margin-bottom:0}
.section-head > p,.section-head .intro > p{margin:0}
.split-copy > h2 + :is(p,.lede){margin-top:var(--sh-2)}
.split-copy > :is(.check-list,.actions){margin-top:var(--sh-after)}
.principles-h + .principles,.section-head + :is(.grid-2,.grid-3,.grid-4,.principles,.service-ladder,.rh-method-grid){margin-top:0}
.principles-h{margin:var(--sh-after) 0 var(--sh-2)}
.section-head + .principles-h{margin-top:0}
.ladder-row:last-child{border-bottom:0}
.ladder-more{margin:var(--sh-after) 0 0;text-align:center}
:is(.grid-2,.grid-3,.grid-4,.rh-method-grid,.principles,.steps,.pkg-grid,.facts-row){row-gap:var(--s4)}

/* Title to subtitle: one rule for every large title and the text under it (heroes and section headers),
   gap of about half the title size so descenders never touch the line below */
:is(.tile-hero,.page-hero,.hero,.rh-hero) h1{margin-bottom:0;padding-bottom:.08em}
:is(.tile-hero,.page-hero,.hero,.rh-hero) h1 + :is(p,.lede,.summary){margin-top:clamp(18px,.5em,32px)}
:is(.tile-hero,.page-hero,.hero,.rh-hero) h1 + :is(p,.lede,.summary){margin-top:max(18px,calc(0.5 * clamp(40px,6vw,84px)))}
.section-head .intro > h2 + p,.section-head h2 + p,.split-copy > h2 + :is(p,.lede),.section-heading h2 + p{margin-top:max(16px,calc(0.5 * clamp(32px,4.6vw,56px)))}
.section-head{gap:max(var(--sh-2),calc(0.45 * clamp(32px,4.6vw,56px)))}

/* Tap targets: heading links in lists and library product links get a 44 px hit area without moving the layout */
main :is(h2,h3,h4) > a,.lib-prod{display:inline-block;padding-block:10px;margin-block:-10px}

/* Hero: no status dot (no live status exists); the RADAR line is a plain centered caption; balanced lede;
   on phones both buttons share one width */
.hero-note::before,.badge::before{content:none}
.rh-ledger-dot{display:none}
.hero-note{display:block;margin:var(--s4) auto 0;max-width:46ch;font-size:15px;line-height:1.5;color:var(--muted);text-align:center;text-wrap:balance}
.hero .hero-copy .lede{text-wrap:balance}
@media(max-width:767.98px){
  .hero .hero-copy .lede br{display:none}
  .tile-hero .actions,main .actions:has(> .btn + .btn){flex-direction:column;align-items:center;gap:12px}
  .tile-hero .actions .btn,main .actions:has(> .btn + .btn) > .btn{width:100%;max-width:360px;min-height:48px;justify-content:center;margin:0}
}
@media(min-width:1025px){.hero .hero-copy .hero-note{text-align:inherit}}

/* No decorative tilted card behind the sample report; plan rows on phones show no down chevron (they are links, not accordions) */
.report-stack::before{content:none}
.report-stack{padding:0}
@media(max-width:1024px){.ladder-row::after{transform:rotate(45deg)}.ladder-row{padding:24px 8px}}

/* Footer on phones: two columns (one long list was about 1,600 px), contact block full width */
@media(max-width:767.98px){.ft-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.ft-contact{grid-column:1/-1}.ft-col li a{min-height:40px}}

/* Home service map on phones: compact centered cards (D74: mobile and tablet fully centered) */
@media(max-width:767.98px){
  .svc-map{padding:16px 12px}
  .svc-path{gap:8px}
  .svc-path a{align-items:center;text-align:center;padding:12px 14px}
  .svc-path .svc-ico{width:20px;height:20px;margin:0 0 6px}
  .svc-path li + li::before{left:50%;margin-left:-1px;top:-8px;height:8px}
  .svc-path strong{font-size:17px;line-height:24px}
}

/* Mobile and tablet menu v4: full-height solid sheet under the header, centered, 48 px+ targets, safe areas */
html.menu-open,html.menu-open body{overflow:hidden;overscroll-behavior:none}
/* Full-viewport layer above everything, its own top bar, link area scrolls inside, CTA pinned in the safe area */
.hd-sheet{position:fixed;inset:0;top:0;right:0;bottom:0;left:0;z-index:400;width:100%;max-width:100%;height:100vh;height:100dvh;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;background:var(--navy);animation:msIn .16s var(--ease)}
.hd-sheet[hidden]{display:none!important}
.hd-sheet *{box-sizing:border-box}
.hd-sheet-top{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;min-height:calc(var(--hd-bar) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(var(--gut),env(safe-area-inset-right)) 0 max(var(--gut),env(safe-area-inset-left));border-bottom:1px solid rgba(255,255,255,.08);background:var(--navy)}
.hd-sheet-top .gn-logo img{display:block;height:auto}
.hd-close{position:relative;width:44px;height:44px;margin-right:0;border:0;border-radius:10px;background:none;color:var(--text);cursor:pointer}
.hd-close span::before,.hd-close span::after{content:"";position:absolute;left:12px;right:12px;top:21px;height:2px;border-radius:2px;background:currentColor}
.hd-close span::before{transform:rotate(45deg)}.hd-close span::after{transform:rotate(-45deg)}
.hd-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.hd-sheet-in{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;width:100%}
.hd-sheet-foot{flex:0 0 auto;width:100%}
.hd-sheet-cta{width:100%}
/* Hardened size: the layer takes the exact visible area measured by site.js (px values), with fallbacks */
.hd-sheet{left:0;right:auto;bottom:auto;top:var(--ms-top,0px);width:var(--ms-w,100%);height:var(--ms-h,100vh);max-width:none;margin:0}
.hd-sheet-foot{padding:12px 16px calc(16px + env(safe-area-inset-bottom))}
/* Same gutter as the closed header, so the logo and the Close button do not move when the menu opens */
.hd-sheet-top{padding-right:max(var(--gut),env(safe-area-inset-right));padding-left:max(var(--gut),env(safe-area-inset-left))}
.hd-sheet-in{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
/* Free security review: plain centered text, same weight as the other rows, thin divider only (no box) */
.hd-sheet .ms-feature{min-height:72px;margin:0;padding:12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none}
.hd-sheet .ms-feature-t{font:600 22px/1.2 var(--font);letter-spacing:-.01em}
.hd-sheet .ms-feature-s{text-wrap:balance}
@keyframes msIn{from{opacity:0}to{opacity:1}}
.hd-sheet-in{padding:8px max(var(--gut),env(safe-area-inset-left)) 24px max(var(--gut),env(safe-area-inset-right));text-align:center}
.ms{max-width:560px;margin:0 auto}
.ms-list,.ms-sub,.ms-more{list-style:none;margin:0;padding:0}
.ms-row,.hd-sheet .hd-acc.ms-row{display:flex;align-items:center;justify-content:center;width:100%;min-height:60px;padding:0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--text);font:600 22px/1.2 var(--font);letter-spacing:-.01em;text-decoration:none}
.ms-feature{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:88px;margin:8px 0 4px;padding:16px;border:1px solid rgba(105,204,227,.35);border-radius:14px;background:rgba(105,204,227,.06);color:var(--text);text-decoration:none;text-align:center}
.ms-feature-t{font:650 22px/28px var(--font);color:var(--accent)}
.ms-feature-s{font-size:15px;line-height:20px;color:var(--muted)}
.ms-feature:hover .ms-feature-t{color:#fff}
.ms-row[aria-current],.hd-acc.ms-row[data-current]{color:var(--accent);box-shadow:none}
.hd-sheet .hd-acc .gn-caret{width:8px;height:8px;margin-left:12px}
.hd-sheet .hd-acc-panel{padding:8px 0 24px;border-bottom:1px solid var(--line);text-align:center}
.ms-label{margin:20px 0 8px;font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.ms-item{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:52px;padding:6px 0;color:var(--text);text-decoration:none}
.ms-name{font-size:18px;line-height:24px;font-weight:600}
.ms-desc{font-size:14px;line-height:20px;color:var(--muted)}
.ms-mods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}
.ms-mods .ms-name{font-size:16px}
.ms-mods .ms-desc{font-size:13px}
.ms-item[aria-current] .ms-name{color:var(--accent)}
.ms-all{display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin-top:12px;color:var(--accent);font-size:16px;font-weight:600;text-decoration:none}
.ms-more{padding:16px 0 0}
.ms-more a{display:flex;align-items:center;justify-content:center;min-height:48px;color:var(--muted);font-size:17px;text-decoration:none}
.ms-more a:hover,.ms-item:hover .ms-name,.ms-row:hover{color:#fff}
.hd-sheet a:focus-visible,.hd-sheet button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:8px}
.hd-sheet-foot{padding:12px max(var(--gut),env(safe-area-inset-left)) calc(12px + env(safe-area-inset-bottom)) max(var(--gut),env(safe-area-inset-right));border-top:1px solid var(--line);background:var(--navy)}
.hd-sheet-cta{display:flex;align-items:center;justify-content:center;min-height:52px;max-width:560px;margin:0 auto;border-radius:12px;background:var(--accent);color:var(--accent-ink);font-size:17px;font-weight:650;text-decoration:none}
@media(max-width:359.98px){.ms-mods{grid-template-columns:1fr}}
html.menu-open .stage-flag{display:none}
.stage-flag{bottom:calc(12px + env(safe-area-inset-bottom))}
@media(prefers-reduced-motion:reduce){.hd-sheet{animation:none}}

/* D75 (standing rule): no pill badges, outlined chips or status dots anywhere. Words stay as plain text.
   Kept on purpose: buttons, filter/sort/tab controls, the sample report verdict labels (now without dots),
   CVE data labels (severity, known exploited, CVE ID) without dots, list check icons, FAQ toggles, the staging flag. */
.tile-hero .eyebrow,.badge{display:block;padding:0;border:0;border-radius:0;background:none;box-shadow:none;letter-spacing:.12em}
.tile-hero .eyebrow::before,.badge::before,.hero-note::before,.cvelib-tag-kev::before,.kev-yes::before,.priority::before{content:none;display:none}
.badge{font:600 12px/1.5 var(--mono);text-transform:uppercase;color:var(--dim)}
:is(.rh-tags,.item-tags) :is(span,a),.mini-pill,.security-meta span{padding:0;border:0;border-radius:0;background:none;min-height:0}
:is(.rh-tags,.item-tags){column-gap:16px}
.hero-note{font-size:15px;color:var(--muted)}
/* The caption under a button group reads as part of it and never crowds the next block */
.tile-hero .hero-note{margin-top:var(--s3);margin-bottom:0}
.tile-hero .hero-note + *,.tile-hero .actions + .hero-note + *{margin-top:var(--s6)!important}
.hero-grid{row-gap:var(--s6)}
.hero-grid > .report-stack{margin-top:var(--s6)}
/* Small caption lines (under buttons, footnotes, disclosure lines) never touch the next block, at any width */
:is(.hero-note,.small,.price-note,.addon-note,.stat-explain,.lib-note,.form-note,figcaption,.nf-caption) + *{margin-top:max(var(--s4),24px)}
/* CVE data labels (severity, known exploited, CVE ID): plain colored small caps separated by a middle dot, no pill */
:is(.sev,.kev-flag,.cve-id,.rh-pill,.cvelib-tag){border:0!important;background:none!important;padding:0!important;border-radius:0!important;min-height:0!important;box-shadow:none!important}
.rp-article-meta-row{column-gap:0}
.rp-article-meta-row > * + *::before{content:"\00B7";margin:0 10px;color:var(--dim)}

/* D74 (standing rule): up to 1024 px every page is fully centered. One shared rule so new components inherit it.
   Exceptions (stay left-aligned inside a centered column): long-form text in articles and legal pages (paragraphs,
   lists, tables), data tables, code blocks, and form labels and fields. */
@media(max-width:1024px){
  main,.ft,.cta-band{text-align:center}
  main :is(h1,h2,h3,h4,h5,p,.lede,.summary,.eyebrow,.label,small,figcaption,dt,dd){text-align:center;margin-inline:auto}
  main :is(.actions,.card-foot,.scope-top,.eyebrow,.hero-note,.badge-row,.chips,.rh-tags,.lib-tags,.item-tags,.research-meta,.byline,.rp-article-meta-row,.crumbs ol){justify-content:center}
  main :is(.btn,.text-link,img,svg:not(.svc-ico):not(.hm-arrow),figure,.badge,.stat-card,.report-mini,.boundary,.incident-card,.fact,.pkg,.finding,.help-box,.spec,.toc,.form-panel,.od-option,.scope-card,.module-card,.principle,.rh-method,.step-card,.outcome-card){margin-inline:auto}
  main :is(.check-list,.od-safety){display:inline-block;text-align:left;max-width:100%}
  main :is(.check-list,.od-safety) li{text-align:left;justify-content:flex-start}
  /* Stacked cards: every card in a list takes the full column width (auto side margins on grid items had made
     them shrink to their content, so cards in one stack had different widths) */
  main :is(.pkg,.pricing-card,.module-card,.scope-card,.principle,.rh-method,.step-card,.outcome-card,.stat-card,.fact,.incident-card,.boundary,.finding,.help-box,.od-option,.deliverable-card,.rh-latest-item,.research-item,.nvx-method-card,.rh-publication,.report-mini,.svc-path a,.svc-path li,.ladder-row,.form-panel){width:100%;max-width:none;box-sizing:border-box;justify-self:stretch}
  .rh-stat-row .stat-card{height:100%}
  .rh-stat-row{align-items:stretch}
  /* Components found off-axis by the measurement */
  .report-mini-top{justify-content:center;text-align:center}
  .deliverable-card{flex-direction:column;align-items:center;text-align:center}
  /* Accordions: text centered between two equal 44 px slots; the icon always sits in the right slot, same x on every row */
  .faq-list summary{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;column-gap:8px;text-align:center;padding:14px 0;min-height:64px}
  .faq-list summary::before{content:"";width:44px;height:28px}
  .faq-list summary::after{justify-self:center;width:28px;height:28px}
  .faq-list details > div{padding:0 52px 20px;text-align:center}
  @media(max-width:479.98px){.faq-list details > div{padding:0 0 20px}}
  .rh-ledger-row{justify-content:center;text-align:center}
  .rh-ledger-row > span{display:flex;flex-direction:column;align-items:center}
  /* D74 correction: no exceptions. Long text is centered in a comfortable measure; lists, accordion bodies,
     form labels and helper text are centered; code scrolls inside its own box with a centered caption.
     (Legal pages are styled by LEGAL-01 in assets/legal.css.) */
  body:not(.pg-legal) main :is(.prose,.article-body,.references,.security-policy) > :is(p,ul,ol,blockquote,h2,h3,h4){max-width:34em;margin-inline:auto;text-align:center}
  body:not(.pg-legal) main :is(.prose,.article-body,.references) :is(li,p,blockquote,dd,dt){text-align:center}
  body:not(.pg-legal) main :is(ul,ol):not(.hm-list):not(.ms-list):not(.ms-sub){list-style-position:inside;padding-left:0}
  body:not(.pg-legal) main :is(.check-list,.od-safety){display:block;text-align:center}
  body:not(.pg-legal) main :is(.check-list,.od-safety) li{justify-content:center;text-align:center}
  body:not(.pg-legal) main .faq-list details > div,body:not(.pg-legal) main .faq-list details > div *{text-align:center}
  body:not(.pg-legal) main :is(form,.form-panel) :is(label,.field-note,.form-error,legend,.req-note){text-align:center;display:block}
  body:not(.pg-legal) main :is(form,.form-panel) :is(input,select,textarea){width:100%;text-align:left}
  body:not(.pg-legal) main pre,body:not(.pg-legal) main code{text-align:left}
  body:not(.pg-legal) main :is(.code-label,figcaption,caption){text-align:center}
  /* Tables become stacked centered cards on phones and tablets (site.js copies each column name into data-label) */
  body:not(.pg-legal) main :is(.table-scroll,.price-table-wrap,.security-table-wrap){overflow:visible;border:0;background:none}
  body:not(.pg-legal) main table:not(.keep-table),body:not(.pg-legal) main table:not(.keep-table) :is(thead,tbody,tr,th,td){display:block;width:100%}
  body:not(.pg-legal) main table:not(.keep-table) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  body:not(.pg-legal) main table:not(.keep-table) tr{margin:0 0 12px;padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);text-align:center}
  body:not(.pg-legal) main table:not(.keep-table) td{padding:4px 0;border:0;text-align:center;white-space:normal}
  body:not(.pg-legal) main table:not(.keep-table) td[data-label]::before{content:attr(data-label);display:block;font:600 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
}
/* Sticky sub-bar: pure CSS, in flow under the header, always visible, never animated (no scroll logic) */
.ln,.ln.show{position:sticky!important;top:var(--hd-h)!important;left:auto;right:auto;z-index:150;transform:none!important;opacity:1!important;visibility:visible!important;transition:none!important;margin:0}
html.mega-open .ln,html.menu-open .ln{opacity:1!important;visibility:visible!important}
.pg-library .ln{display:none}
.gn{position:sticky;top:0;transform:none}
/* Anchors land below the header and the sub-bar */
/* scroll-padding on html and scroll-margin on the target add up, so only the target margin is used */
html,html:has(.pg-cve){scroll-padding-top:0}
main [id],main .prose h2[id],main h2[id],main h3[id]{scroll-margin-top:calc(var(--sticky-h,110px) + 16px)}
/* Contents lists: one active link, accent color and a 2 px marker */
.report-nav a.is-active,.toc a.is-active{color:var(--accent);box-shadow:inset 2px 0 0 var(--accent);padding-left:12px}
.report-nav a,.toc a{transition:color .12s}
@media(min-width:1025px){.report-nav{top:calc(var(--sticky-h,110px) + 24px)}.article-aside .toc{position:sticky;top:calc(var(--sticky-h,110px) + 24px)}}
@media(max-width:1024px){
  .report-nav{position:static!important;display:flex;flex-wrap:wrap;justify-content:center;text-align:center;gap:4px 16px}
  .article-aside .toc{position:static!important;text-align:center}
  .article-aside .toc ol{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;list-style:none;padding:0;margin:0}
  .report-nav a.is-active,.toc a.is-active{box-shadow:inset 0 -2px 0 var(--accent);padding-left:0}
}

/* Approach: four equal step cards inside the content container, under a centered section header */
.mini-path{list-style:none;margin:0;padding:0;display:grid;gap:24px;grid-template-columns:repeat(4,minmax(0,1fr))}
.mini-path li{display:flex}
.mini-path a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;text-align:center;min-height:160px;height:100%;padding:32px 20px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--text);text-decoration:none}
.approach-path .section-head{text-align:center;align-items:center;margin-inline:auto}
.approach-path .mini-path strong{font-size:21px;line-height:28px}
.approach-path .mini-path span:last-child{font-size:15px;line-height:22px}
.mini-path a:hover{border-color:var(--accent)}
.mini-k{font:600 11px/16px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.mini-path strong{font-size:17px;line-height:24px}
.mini-path span:last-child{font-size:14px;line-height:20px;color:var(--muted)}
@media(max-width:1024px){.mini-path{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:479.98px){.mini-path{grid-template-columns:1fr}}
/* Staging flag: plain text label, no pill; hidden on phones so it never covers content */
.stage-flag{border-radius:0;padding:4px 8px}
@media(max-width:767.98px){.stage-flag{display:none}}

/* Card grids with an incomplete last row: the last row is centered, never left-aligned (D74a).
   Two-column range (768 to 1023 px): a lone last card is centered at the same width as the others. */
@media(min-width:768px) and (max-width:1024px){
  :is(.grid-3,.grid-4,.pricing-cards,.rh-latest-grid,.rh-method-grid,.cvelib-signal-grid,.mini-path) > :last-child:nth-child(odd){grid-column:1 / -1;justify-self:center;width:calc(50% - 10px)!important;max-width:calc(50% - 10px)}
}
/* Three-column desktop grids with 4 or 5 items: last row centered on a 6-track grid */
@media(min-width:1025px){
  .grid-3:has(> :nth-child(4)),.rh-method-grid:has(> :nth-child(4)),.rh-latest-grid:has(> :nth-child(4)){grid-template-columns:repeat(6,minmax(0,1fr))}
  :is(.grid-3,.rh-method-grid,.rh-latest-grid):has(> :nth-child(4)) > *{grid-column:span 2}
  :is(.grid-3,.rh-method-grid,.rh-latest-grid) > :last-child:nth-child(3n+1){grid-column:3 / span 2}
  :is(.grid-3,.rh-method-grid,.rh-latest-grid) > :nth-last-child(2):nth-child(3n+1){grid-column:2 / span 2}
}

/* Fallback for browsers without subgrid (Safari before 16): equal minimum heights for the parts that vary */
@supports not (grid-template-rows:subgrid){
  @media(min-width:768px){
    .pricing-cards .pricing-card h3,.grid-3 > .module-card h3,.grid-4 > .module-card h3{min-height:2.6em}
    .pricing-card,.module-card,.scope-card,.step-card,.rh-method{display:flex;flex-direction:column}
    .pricing-card > p:not(.price-unit),.module-card > p,.scope-card > div:last-child,.step-card > p,.rh-method > p{flex:1 1 auto}
  }
}
.pricing-card > .actions{align-self:end;margin-top:auto;padding-top:24px}
/* Card rows: number or label, title, body and foot line up across every card in a row (subgrid), so a two-line title
   never pushes one card's body lower than its neighbors. Applies to every card grid on the site. */
@supports (grid-template-rows:subgrid){
  @media(min-width:768px){
    :is(.grid-2,.grid-3,.grid-4,.rh-method-grid,.principles,.steps,.pricing-cards,.rh-latest-grid,.cvelib-signal-grid) > :is(.rh-method,.principle,.module-card,.scope-card,.step-card,.outcome-card,.nvx-method-card,.rh-latest-item,.pricing-card):has(> :nth-child(2):last-child){display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0;align-content:start}
    :is(.grid-2,.grid-3,.grid-4,.rh-method-grid,.principles,.steps,.pricing-cards,.rh-latest-grid,.cvelib-signal-grid) > :is(.rh-method,.principle,.module-card,.scope-card,.step-card,.outcome-card,.nvx-method-card,.rh-latest-item,.pricing-card):has(> :nth-child(3):last-child){display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:0;align-content:start}
    :is(.grid-2,.grid-3,.grid-4,.rh-method-grid,.principles,.steps,.pricing-cards,.rh-latest-grid,.cvelib-signal-grid) > :is(.rh-method,.principle,.module-card,.scope-card,.step-card,.outcome-card,.nvx-method-card,.rh-latest-item,.pricing-card):has(> :nth-child(4):last-child){display:grid;grid-row:span 4;grid-template-rows:subgrid;row-gap:0;align-content:start}
    :is(.grid-2,.grid-3,.grid-4,.rh-method-grid,.principles,.steps,.pricing-cards,.rh-latest-grid,.cvelib-signal-grid) > :is(.rh-method,.principle,.module-card,.scope-card,.step-card,.outcome-card,.nvx-method-card,.rh-latest-item,.pricing-card):has(> :nth-child(5):last-child){display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:0;align-content:start}
    :is(.rh-method,.principle,.module-card,.scope-card,.step-card,.outcome-card,.nvx-method-card) h3{text-wrap:balance}
  }
}
/* Principles: one heading, cards numbered only */
.principles-h{margin:var(--s6) 0 var(--s4);font:600 12px/16px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.principles{list-style:none;margin:0;padding:0}
.principles .principle .label{margin-bottom:var(--s3)}
@media(max-width:1024px){.principles-h{text-align:center}}
/* Home modules: four featured, the rest named, one link to all */
.modules-more{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3) var(--s4);margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line)}
.modules-more p{margin:0;font-size:16px;color:var(--muted)}
.modules-more a:not(.btn){color:var(--text);text-decoration:underline;text-decoration-color:rgba(105,204,227,.5);text-underline-offset:3px}
.modules-more a:not(.btn):hover{color:var(--accent)}
@media(max-width:1024px){.modules-more{flex-direction:column;justify-content:center;text-align:center}}
/* Research stats: two number tiles (the tool tile is gone); one tile spans the row if the other has no count */
.rh-stat-row.rh-stat-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:600px}
.rh-stat-row[data-tiles="1"]{grid-template-columns:minmax(0,1fr);max-width:300px}
@media(max-width:767.98px){.rh-stat-row.rh-stat-2{grid-template-columns:1fr}}
@media(max-width:1024px){.rh-stat-row,.rh-stat-row.rh-stat-2,.cvelib-stats{max-width:none;width:100%}}
/* Footer legal row: no dividing bars between the links */
.ft-legal nav a,.ft-legal nav a:last-child{border-right:0;border-left:0}
.ft-legal nav a::before,.ft-legal nav a::after{content:none}

/* Official domains: "Check a message from Nulvex" as two options */
.od-intro{color:var(--muted);margin:-8px 0 24px}
.od-options{display:grid;gap:24px}
.od-option{padding:28px;border-radius:var(--r);border:1px solid var(--line)}
.od-opt-tag{display:block;font:600 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.od-option h3{font-size:clamp(22px,2.2vw,26px);margin:8px 0 6px}
.od-opt-sub{color:var(--muted);margin-bottom:20px}
.od-option .od-steps li{padding:18px 20px;font-size:16px}
.od-option .od-steps li::before{font-size:22px}
@media(min-width:1025px){.od-options{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}
@media(max-width:1023px){.od-intro,.od-option{text-align:center}.od-options{max-width:720px;margin-inline:auto}}
@media(max-width:767px){.od-option{padding:20px 16px}}

/* Severity chips: text label first, color second (never color alone) */
.priority{display:inline-flex;align-items:center;gap:8px;letter-spacing:.08em;line-height:1.4}
.priority::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.priority-review{color:var(--warn);border-color:rgba(227,187,118,.45);background:rgba(227,187,118,.08)}
.priority-check{color:var(--accent);border-color:rgba(105,204,227,.45);background:rgba(105,204,227,.08)}
.priority-improve{color:var(--muted);border-color:var(--line);background:transparent}

/* Print: sample report and articles print as plain documents */
@media print{
  :root{color-scheme:light}
  html,body{background:#fff!important;color:#111!important}
  .gn,.ln,.hd-sheet,.hd-mega,.hm,.skip,.ft,.cta-band,.report-nav,.disclosure-strip,.dial,.hero-visual,.article-aside .toc,.actions,.ln-back,.stage-flag{display:none!important}
  main,.container,.report-layout,.article-shell{display:block!important;max-width:none!important;padding:0!important;margin:0!important}
  .report-heading,.report-section{border-color:#ccc!important;padding:18px 0!important}
  .report-heading{text-align:left}
  h1,h2,h3,h4,p,li,td,th,dt,dd,.small,.label,.report-meta{color:#111!important}
  a{color:#111!important;text-decoration:underline}
  .finding,.help-box,.boundary,.spec{background:#fff!important;border:1px solid #bbb!important;break-inside:avoid}
  .finding-head{break-after:avoid}
  .priority{border:1px solid #111!important;background:#fff!important;color:#111!important}
  .priority::before{background:#111!important}
  .tech-detail > *{display:block!important}
  .tech-detail pre,.code-block pre{background:#f4f4f4!important;color:#111!important;border-color:#ccc!important}
  table{border-collapse:collapse}th,td{border:1px solid #ccc!important}
  .badge{border:1px solid #111!important;color:#111!important;background:#fff!important}
  .table-scroll{overflow:visible!important}
}

/* ================= Desktop audit fixes (AUDIT-desktop/RESULT.md) ================= */
/* A1 to A3: verdict labels, sample card labels and numbers are plain text (no pills, chips or circles) */
.priority,.priority-review,.priority-check,.priority-improve{padding:0!important;border:0!important;border-radius:0!important;background:none!important;min-height:0}
.priority{font:600 12px/16px var(--font)!important;letter-spacing:.08em}
.mini-finding small{padding:0!important;border:0!important;border-radius:0!important;background:none!important;font:600 12px/16px var(--font)!important;letter-spacing:.08em;color:#6b5323}
.mini-finding .num{width:auto;height:auto;border-radius:0;background:none;font:600 13px/1 var(--mono);color:#36565f}
/* A4: services filter tabs are plain text with an accent underline on the active one */
.filter-tab{min-height:44px;padding:0 4px!important;border:0!important;border-radius:0!important;background:none!important;color:var(--muted)!important;box-shadow:none}
.filter-tab:hover{color:var(--text)!important}
.filter-tab[aria-pressed=true]{color:var(--text)!important;box-shadow:inset 0 -2px 0 var(--accent)}
.filter-tabs{gap:8px 20px}
/* A5: library toggles are rectangular buttons (8 px radius), same height as the dropdowns */
.lib-bar .chip{border-radius:8px!important}
.lib-bar .sel select{border-radius:8px}
/* A6: no ring around the info marker; a plain question mark */
.info-ico{width:auto!important;height:auto!important;border:0!important;border-radius:0!important;background:none!important;font:600 13px/1 var(--font)!important;color:var(--accent)!important;text-decoration:none}
/* A8: 404 knock button is a rectangle */
.nf-knock{border-radius:8px}
/* A12 to A14: a heading is never flush with the text under it */
main :is(h2,h3,h4) + :is(p,.lede,ul,ol,dl,.summary,div:not([class])){margin-top:max(12px,0.6em)}
main :is(h1,h2,h3) + :is(p.lede,p.summary){margin-top:max(16px,0.5em)!important}
.ladder-row h3 + small,.ladder-row div > small{display:block;margin-top:8px}
.od-domains > *,.od-options > *{align-self:stretch}
.od-domains > .scope-card{display:block!important;grid-row:auto!important}
:is(.scope-top span,.arch-tier span,.aside-item span,.card-foot span,main dt,main dl dt,.spec-score .of,main dd.mono,.spec dt){font-size:13px!important}
/* Caps labels and small data text: at least 13 px everywhere */
:is(.report-mini-top span,.report-mini-bottom span,.mini-finding small,.ladder-row small,.billing-option > span,.incident-card h3,.badge,main th,.finding h4,.priority,.rh-facts dt,.rh-category,.rh-tags span,.sev,.kev-flag,.cve-id,.cvelib-tag,.cvelib-mini-label,.lib-head span,.lib-head,.item-tags span,.mini-pill,.item-cat,.item-date,.item-read,.ln-chips span){font-size:13px!important}
.scope-card h2 + *,.service-aside h3 + p,.platform-card h2 + *{margin-top:12px}
/* A15: library sticky block at most 160 px on desktop */
@media(min-width:1025px){
  .lib-finder{padding-top:8px!important}
  .lib-finder .lib-top{margin:0}
  .lib-finder .lib-bar{margin-top:8px;gap:8px}
  .lib-finder .lib-meta{margin-top:8px}
  .lib-finder .lib-head{margin-top:8px;padding-top:8px;padding-bottom:8px}
  .lib-list,.lib-head,.lib-finder .container > *{max-width:none}
}
/* A17: the article aside sticks: it no longer stretches to the article height, and scrolls itself if taller than the screen */
@media(min-width:1025px){
  .article-shell{align-items:start}
  .article-aside{position:sticky!important;top:calc(var(--sticky-h,110px) + 24px)!important;align-self:start!important;max-height:calc(100vh - var(--sticky-h,110px) - 48px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
}
/* A19: 404 content on the same container as the header; normal section spacing */
.nf-wrap{max-width:none;width:var(--wrap)}
.nf{padding-block:var(--sec-pad)}
/* A20: readable text never below 14 px; caps labels at least 13 px with letter spacing */
.ft-col h2,.ft-col li a,.ft-contact a,.ft-contact p,.ft-contact address,.ft-legal,.ft-legal a{font-size:14px!important}
.eyebrow,.label,.cell-label,.code-label,.svc-k,.mini-k,.hm-label,.ms-label,.addon-row-h,.pkg-label,.stage-flag,.lib-has-an,.od-opt-tag,.svc-map-h,.svc-mods-h,.principles-h,.addons-h,.report-meta,.rh-art-label{font-size:13px!important}
main th,main dt,main small,.lib-rec small{font-size:max(13px,0.8125rem)}
/* A21: header button and breadcrumb links reach 44 px */
.gn-cta{min-height:44px}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;justify-content:center}
/* A22: long text lines at most about 72 characters (CVE, advisory, tool, roundup, legal body), centered on tablet and phone */
.article-shell .prose > :is(p,ul,ol,blockquote),.article-head .summary{max-width:72ch}
@media(max-width:1024px){.article-shell .prose > :is(p,ul,ol,blockquote),.article-head .summary{margin-inline:auto}}
/* A25: equal card heights in a row on official domains */
.od-domains,.od-options,.od-details{align-items:stretch}
.od-domains > *,.od-options > *{height:100%}
/* A26: selects and inputs the same height on forms */
.field input,.field select,.field textarea{min-height:52px}
/* L1 and L2: large screens use more of the width; type steps up with them */
@media(min-width:1920px){:root{--max:1400px}}
@media(min-width:2560px){:root{--max:1600px}}

/* ================= Group 2: CVE sticky bar, separators ================= */
.ln-cve .ln-in{min-height:56px;gap:16px;justify-content:flex-start;align-items:center}
.ln-cve .ln-title{display:flex;align-items:center;gap:0;min-width:0;flex:1 1 auto;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden}
.ln-cve .ln-title code{font:600 15px/1 var(--mono);color:var(--text)}
.ln-cve .ln-prod{font-size:15px;font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.ln-div{display:inline-block;flex:0 0 1px;width:1px;height:20px;margin:0 12px;background:var(--line)}
.ln-facts{display:flex;align-items:center;flex:0 0 auto}
.ln-fact{display:inline-flex;align-items:baseline;gap:8px;white-space:nowrap}
.ln-fact-k{font-size:14px;font-weight:400;color:var(--muted)}
.ln-fact-v{font-size:15px;font-weight:600;color:var(--text)}
.sev-text-critical{color:#ff8a8a}.sev-text-high{color:#ffb27a}.sev-text-medium{color:#ffd96a}.sev-text-low{color:var(--success)}
.ln-cve .ln-help{height:40px;padding:0 16px;border-radius:10px;font-size:14.5px;font-weight:650}
.sep-dot{display:inline-block;margin:0 12px;color:var(--dim)}
@media(max-width:1024px){
  .ln-cve .ln-prod,.ln-cve .ln-title .ln-div{display:none}
  .ln-cve .ln-title{flex:0 1 auto}
  .ln-cve .ln-in{justify-content:space-between}
}
@media(max-width:767.98px){
  .ln-cve .ln-facts{display:none}
  .ln-cve .ln-in{min-height:52px;gap:8px}
  .ln-cve .ln-help{height:36px;padding:0 14px;font-size:14px;position:relative}
  .ln-cve .ln-help::after{content:"";position:absolute;inset:-4px 0}
  .ln-cve .ln-title code{font-size:14.5px}
}

/* Group 3: timelines (tables whose first column is Date). Full-strength text, stronger dates, one plain vertical line, no dots */
.table-scroll.tl-wrap{background:transparent;border:0;border-radius:0;overflow:visible}
.tl-table{font-size:16px}
.tl-table thead th{background:transparent;border-bottom:1px solid var(--line);padding:0 18px 12px}
.tl-table td{color:var(--text);padding:16px 18px 18px;border-bottom:1px solid var(--line)}
.tl-table td:first-child{font:600 15px/1.5 var(--font);color:var(--accent-2);white-space:nowrap;width:1%;border-left:2px solid var(--accent);padding-left:20px}
.tl-table tbody tr:last-child td{border-bottom:0}
@media (max-width:1024px){
  body:not(.pg-legal) main .table-scroll.tl-wrap{max-width:560px;margin-left:auto;margin-right:auto}
  body:not(.pg-legal) main table.tl-table tr{margin:0;padding:18px 0;border:0;border-top:1px solid var(--line);border-radius:0;background:none}
  body:not(.pg-legal) main table.tl-table tbody tr:first-child{border-top:2px solid var(--accent)}
  body:not(.pg-legal) main table.tl-table td{padding:0;border:0;color:var(--text);font-size:16px;line-height:1.5}
  body:not(.pg-legal) main table.tl-table td:first-child{border:0;padding:0 0 6px;white-space:normal;width:100%;font:600 15px/1.4 var(--font);color:var(--accent-2)}
  body:not(.pg-legal) main table.tl-table td[data-label]::before{content:none}
}
/* Group 5: breadcrumbs are never truncated. Full words, wrap to a second line when needed, one baseline for every crumb */
.crumbs{height:auto!important;min-height:48px}
.crumbs ol{flex-wrap:wrap!important;row-gap:0;line-height:1.3}
.crumbs li,.crumbs li:last-child{flex:0 0 auto!important;min-width:0;display:inline-flex;align-items:center;max-width:100%;margin:0!important;padding:0!important}
.crumbs a,.crumbs [aria-current]{display:inline-flex!important;align-items:center;min-height:44px;overflow:visible!important;text-overflow:clip!important;white-space:normal!important;overflow-wrap:anywhere;margin:0!important;padding:0!important;line-height:1.3;vertical-align:middle}
@media(max-width:1024px){
  .crumbs{min-height:44px}
  .crumbs ol{justify-content:center!important;text-align:center}
  .crumbs li+li::before{margin:0 7px}
}
/* Audit item 16: one "Let's talk" per screen. On desktop the header shows it, so the sub-bar copy to the same page is hidden; at 1024 and below the header button is hidden and the sub-bar keeps it */
@media(min-width:1025px){.ln-cta[href="/contact"]{display:none!important}}
/* Contents blocks ("In this report", "On this page"): desktop keeps the sticky column; 1024 and below show one
   compact collapsed control (48 px, centered, chevron) that opens a centered list. site.js builds .toc-toggle and .toc-body */
.toc-toggle{display:none}
.report-dl{display:none}
@media(max-width:1024px){
  main .toc-c,body.pg-legal main .toc-c{position:static!important;display:block!important;width:100%;max-width:560px;margin:0 auto 24px!important;padding:0!important;border:1px solid var(--line)!important;border-radius:var(--r-sm,12px);background:var(--panel)!important;text-align:center;box-shadow:none!important}
  main .toc-c > :is(.label,h2){display:none!important}
  main .toc-c .toc-toggle{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:46px;margin:0;padding:0 16px;border:0;background:none;color:var(--text);font:600 16px/1.2 var(--font);letter-spacing:-.01em;cursor:pointer;-webkit-tap-highlight-color:transparent}
  main .toc-c .toc-chev{flex:0 0 auto;margin:0!important;display:block;color:var(--accent);transition:transform .18s}
  main .toc-c .toc-toggle > span{margin:0!important}
  main .toc-c.is-open .toc-chev{transform:rotate(180deg)}
  main .toc-c .toc-body{display:none;padding:4px 16px 12px;border-top:1px solid var(--line)}
  main .toc-c.is-open .toc-body{display:block}
  main .toc-c .toc-body ol{display:block!important;list-style:none!important;margin:0!important;padding:0!important;counter-reset:none}
  main .toc-c .toc-body li{display:block!important;margin:0!important;padding:0!important;border:0!important}
  main .toc-c .toc-body li::before,main .toc-c .toc-body li::marker{content:none!important}
  main .toc-c .toc-body a{display:flex!important;align-items:center;justify-content:center;min-height:44px;margin:0!important;padding:6px 8px!important;font-size:15px!important;line-height:1.35!important;color:var(--muted);text-align:center;text-decoration:none;border:0!important;box-shadow:none!important;background:none}
  main .toc-c .toc-body a.is-active{color:var(--accent);font-weight:600;box-shadow:none!important;padding-left:8px!important}
  main .toc-c .toc-body a:hover{color:var(--text)}
  main .toc-c .toc-body .btn,main .toc-c .report-dl-desk{display:none!important}
  .report-layout{gap:0!important}
  .report-heading .report-dl{display:flex;width:100%;max-width:420px;margin:20px auto 0;justify-content:center}
  .article-head + .toc-c{margin-top:24px!important}
}
@media(min-width:1025px){.toc-c .toc-body{display:contents}}
/* Device audits (iPhone and iPad), round 5f */
/* D75: eyebrows are plain text, no square or dot marker anywhere */
.eyebrow::before,.eyebrow::after,.tile-hero .eyebrow::before{content:none!important;display:none!important}
.eyebrow{gap:0}
/* FAQ: plain plus, no ring */
.faq-list summary::after{background-color:transparent!important;border-radius:0!important;border:0!important;box-shadow:none!important;width:20px!important;height:20px!important;background-size:18px!important}
/* Research tiles: equal heights in every layout */
.rh-stat-row{grid-auto-rows:1fr;align-items:stretch}
.rh-stat-row > *{height:100%}
/* Callout cards: no colored top bar on phones and tablets */
@media(max-width:1024px){html body .boundary,html body.pg-legal .boundary,html body .security-warning{border:1px solid var(--line)!important}}
/* A bold phrase inside a callout sentence stays inline (site.js marks it) */
.boundary strong.inl{display:inline!important;margin:0!important}
/* Phones and tablets: centered site map rows, sample report findings, sub-bar title */
@media(max-width:1024px){
  .sitemap-link{justify-content:center;text-align:center;gap:10px}
  .finding-head{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:6px!important;text-align:center}
  .finding-head .priority{margin:0!important;align-self:center!important;order:-1}
  .finding,.finding :is(h3,h4,p){text-align:center}
  .finding .tech-detail summary{justify-content:center;text-align:center;display:flex;align-items:center;gap:8px}
  .finding .tech-detail{text-align:center}
  .finding .tech-detail pre{text-align:left}
  .ln-in:not(:has(.ln-facts)){justify-content:center!important;gap:20px}
  .ln-in:not(:has(.ln-facts)) .ln-title{text-align:center}
  /* Article lists: no bullets, items centered, numbers inline at the start of the text */
  .article-shell :is(.prose,.references) ul{list-style:none!important;padding:0!important;margin-inline:auto}
  .article-shell :is(.prose,.references) ul > li{list-style:none!important;padding:0!important;margin:0 0 12px!important}
  .article-shell :is(.prose,.references) ul > li::before{content:none!important}
  .article-shell :is(.prose,.references) ol{list-style:none!important;padding:0!important;counter-reset:nvx-li;margin-inline:auto}
  .article-shell :is(.prose,.references) ol > li{list-style:none!important;counter-increment:nvx-li;padding:0!important;margin:0 0 14px!important}
  .article-shell :is(.prose,.references) ol > li::before{content:none!important}
  .article-shell :is(.prose,.references) ol > li > .article-list-copy::before,.article-shell :is(.prose,.references) ol > li:not(:has(> .article-list-copy))::before{content:counter(nvx-li) ". "!important;display:inline!important;font-weight:650;color:var(--accent);width:auto;height:auto;background:none;border:0;margin:0;position:static}
  /* Pricing: the button row is centered in the card */
  .pricing-card .actions,.pkg-act{align-self:stretch!important;width:100%!important;margin-left:0!important;margin-right:0!important;justify-content:center!important;display:flex}
}
/* Package cards: one column rule per width. Up to 600: one column. 601 to 1279: two equal columns in every pricing
   group (a lone last card is centered at the same width). 1280 and up: the desktop layouts. Labels never wrap. */
.pricing-card .btn,.pkg .btn{white-space:nowrap}
@media(min-width:601px) and (max-width:1279px){
  .pricing-cards,.pricing-cards-2,.pricing-cards-3,.pkg-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:none!important}
  .pkg-grid{grid-template-rows:none!important;column-gap:20px!important}
  :is(.pricing-cards,.pricing-cards-2,.pricing-cards-3,.pkg-grid) > :last-child:nth-child(odd){grid-column:1 / -1;justify-self:center;width:calc(50% - 10px)!important;max-width:calc(50% - 10px)}
}
@media(max-width:600px){.pkg-grid,.pricing-cards,.pricing-cards-2{grid-template-columns:minmax(0,1fr)!important}}
/* RADAR sample card on phones and tablets: each row is a centered stack (number, title, status), caption centered */
@media(max-width:1024px){
  .report-mini{text-align:center!important}
  .mini-finding{grid-template-columns:minmax(0,1fr)!important;justify-items:center;text-align:center;gap:4px!important;row-gap:4px}
  .mini-finding strong{text-align:center}
  .report-mini-bottom{text-align:center;display:block}
  .od-example{text-align:center!important;margin-inline:auto}
}
/* Services filter tabs fit on one row on phones */
@media(max-width:600px){.filter-tabs{gap:8px 12px!important}}
@media(max-width:400px){.filter-tabs{gap:8px 8px!important}.filter-tabs .filter-tab{font-size:14px!important;padding:0 2px!important}}
/* A list that opens the second column of a split has no extra top margin */
.split > * > .check-list:first-child{margin-top:0}
/* Library: the CVE id and the "Analysis" label keep a space when the line becomes a block on phones */
@media(max-width:1024px){.lib-cve-line .lib-has-an{margin-left:10px}}
/* Text links share one style: no underline at rest */
.ladder-more .text-link{text-decoration:none}
/* The free RADAR card has the same width as one package card in the two-column range */
@media(min-width:601px) and (max-width:1024px){.pricing-intro{width:calc(50% - 10px);margin-inline:auto}}
/* Staging marker never covers text on phones, in portrait or landscape */
@media(max-height:500px),(max-width:1024px){.stage-flag{display:none!important}}
/* Hero button pairs share one width from 601 px up (the wider label sets it) */
@media(min-width:601px){
  .hero .actions,.tile-hero .actions{display:inline-grid!important;grid-auto-flow:column;grid-auto-columns:1fr;gap:12px;width:auto;max-width:100%}
  .hero .actions > .btn,.tile-hero .actions > .btn{width:100%;justify-content:center;white-space:nowrap}
}
/* Touch targets on phones and tablets: footer and legal links 14 px in 44 px rows; small labels at least 13 px */
@media(max-width:1024px){
  .ft-col li a,.ft-contact a,.ft-legal nav a,.ft-legal .ft-top{display:inline-flex!important;align-items:center;min-height:44px;font-size:14px!important}
  .ft-col li{margin:0!important}
}
.research-meta span,.security-meta span{font-size:13px!important}
:is(.prose,.article-body,li,p,td) code{font-size:max(13px,.85em)}
/* A button row that follows a card grid in a separate container keeps the section gap */
html body main .container + .container > .actions:first-child{margin-top:40px!important}
/* Two-line section titles get room for descenders on phones and tablets */
@media(max-width:1024px){main h2{line-height:1.1}}
/* Services mega menu: the Services column uses two sub-columns like Modules, so no wide empty band between them */
.hm-col-svc{grid-column:1/5}.hm-col-mod{grid-column:5/10}.hm-col-exp{grid-column:10/13}
.hm-col-svc .hm-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 32px}
/* Fact signals by text color only (D75). Dark cards: red #ff6b6b, amber #ffd24d, green #94d7b0; light surfaces use darker
   values. Each keeps at least 4.5:1 on its card background (measured). site.js adds .sig and one .sig-* class */
:root{--sig-red:#ff6b6b;--sig-amber:#ffd24d;--sig-green:#94d7b0}
.paper,.report-mini{--sig-red:#b42318;--sig-amber:#8a5a00;--sig-green:#1f7a4d}
html body .sig.sig-red,html body .lib-rec .sig.sig-red{color:var(--sig-red)!important}
html body .sig.sig-amber,html body .lib-rec .sig.sig-amber{color:var(--sig-amber)!important}
html body .sig.sig-green,html body .lib-rec .sig.sig-green{color:var(--sig-green)!important}
html body .sig.sig-muted,html body .lib-rec .sig.sig-muted{color:var(--muted)!important;font-weight:500}
.spec .sig{font-weight:650}
.spec .kev-flag.sig{font:650 16px/1.4 var(--font)!important;letter-spacing:0!important;text-transform:none!important}
/* Round 5g (second iPhone audit) */
/* One divider only: the last deliverable row has no bottom line (the next section brings its own) */
.deliverable-card:last-child{border-bottom:0;padding-bottom:0}
/* Footer: on phones every link row has the same height (a two-line label fits), so the two columns line up;
   the contact links read as links */
@media(max-width:767.98px){.ft-col li a{min-height:48px!important;line-height:1.25;padding-block:4px}}
.ft-contact a{color:var(--accent)!important;text-decoration:underline;text-underline-offset:3px}
/* Pricing incident card: plain card, no amber outline, bar or glow (D75); no single-word last line */
.incident-card{background:var(--panel)!important;border:1px solid var(--line)!important;border-left:1px solid var(--line)!important;border-top:1px solid var(--line)!important}
.incident-card p,.incident-card li{text-wrap:pretty}
/* Approach step cards on phones: height follows the text */
@media(max-width:600px){.mini-path a{min-height:0!important;padding:24px 20px!important}}
/* No single-word last lines in body text */
main p,main li{text-wrap:pretty}
/* Pricing: card buttons share one width on phones and tablets */
@media(max-width:1024px){.pricing-card .actions .btn,.pkg-act .btn,.pricing-intro .actions .btn{width:100%;max-width:300px;justify-content:center}}
/* Layout gate fixes (round 5h) */
/* 404: the door sign was 3 px text inside the drawing (illegible): hidden; caption 13 px; heading may wrap on narrow phones */
.nf-door-label{display:none}
.nf-caption{font-size:13px!important}
@media(max-width:400px){.nf-copy h1 .accent{white-space:normal}}
/* Touch targets (layout gate): standalone links, short footer links, library product names, filter tabs */
@media(max-width:1024px){
  /* the 44 px hit area is an invisible pseudo-element, so the text and the section spacing do not move */
  main a.tap-solo{position:relative;display:inline-block}
  main a.tap-solo::before{content:"";position:absolute;top:50%;height:44px;transform:translateY(-50%);left:min(0px,calc(50% - 22px));right:min(0px,calc(50% - 22px))}
  .ft-col li a{min-width:44px;justify-content:center}
  .lib-prod{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
  .filter-tab{min-width:44px;justify-content:center}
}
@media(max-width:400px){.filter-tabs{gap:8px 4px!important}}
/* Off-center rows on phones and tablets (layout gate) */
.lib-info > .info-ico{display:none!important}
@media(max-width:1024px){
  main .rh-card-end{justify-content:center!important}
  main .feat-meta{display:inline-flex;flex-wrap:wrap;justify-content:center;column-gap:12px;text-align:center}
  main .feat-meta .sep-dot{display:none}
  main .lib-an{justify-content:center;text-align:center}
}
/* Section rhythm (layout gate): content edge to content edge 64 / 80 / 96 px */
.article-shell{padding-bottom:var(--sec-pad,48px)!important}
body.pg-legal main > section.section-sm > .container.narrow:first-child,main > section.section-sm.border-top > .container.narrow:first-child{padding-top:0!important}
.hero-note > span,main a.tap-solo{display:inline-block}
/* Reduced motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}

/* ===== Typography restore (D114)
   Old nulvex.com typography on the new layout: Manrope first (self-hosted), headings 560 / -.045em / 1.1, mono captions 400.
   Generated: 94 rules (heading-like text of 18 px and up goes to weight 560; mono captions to 400). Hand rules follow. */
.gn-group li a strong{font-weight:560;letter-spacing:-.045em}
.gn-sig{font-weight:400}
.ln-title{font-weight:560}
.eyebrow{font-weight:400}
.label,.cvelib-mini-label{font-weight:400}
.badge{font-weight:400}
.visual-top{font-weight:400}
.art-caption{font-weight:400}
.path-stop strong{font-weight:560}
.scope-top span,.principle .label{font-weight:400}
.step-num,.rh-method-n{font-weight:560;letter-spacing:-.045em}
.number-index{font-weight:560;letter-spacing:-.045em}
.card-foot{font-weight:400}
.ladder-row .step{font-weight:400}
.ladder-row small{font-weight:400}
.faq-list summary{font-weight:560}
.report-mini-top{font-weight:400}
.mini-finding .num{font-weight:400}
.mini-finding small{font-weight:400}
.report-mini-bottom{font-weight:400}
.metric-strip strong{font-weight:560;letter-spacing:-.045em}
.arch-tier strong{font-weight:560}
.arch-tier span{font-weight:400}
.aside-item span{font-weight:400}
.aside-item strong{font-weight:560}
.rh-filter span{font-weight:400}
.price-amount small{font-weight:400}
.billing-option>span{font-weight:400}
.data-table thead th,.table-scroll thead th{font-weight:400}
.price-table td small{font-weight:400}
.contact-detail strong{font-weight:560}
.contact-email-address{font-weight:560;letter-spacing:-.045em}
.research-meta{font-weight:400}
.security-meta span{font-weight:400}
.security-summary dt{font-weight:400}
.od-senders dt{font-weight:400}
.od-steps li::before{font-weight:560;letter-spacing:-.045em}
.rh-stat-row strong,.cvelib-stats strong{font-weight:560;letter-spacing:-.045em}
.rh-ledger-title{font-weight:560}
.rh-ledger-row small{font-weight:400}
.rh-art-label{font-weight:400}
.rh-art-level{font-weight:400}
.rh-art-foot{font-weight:400}
.rh-feature-meta{font-weight:400}
.rh-latest-item time,.rh-publication time{font-weight:400}
.rh-pill,.cvelib-tag{font-weight:400}
.rh-category{font-weight:400}
.rh-tags span{font-weight:400}
.spec dt{font-weight:400}
.spec-score .value{font-weight:560;letter-spacing:-.045em}
.mini-pill{font-weight:400}
.item-cat,.item-date,.item-read{font-weight:400}
.item-tags span,.item-tags a{font-weight:400}
.cvelib-updated{font-weight:400}
.lib-rec .cell-label{font-weight:400}
.lib-prod{font-weight:560}
.lib-cve{font-weight:400}
.lib-score{font-weight:560;letter-spacing:-.045em}
.lib-score span{font-weight:400}
.lib-epss{font-weight:560}
.gn-mobile-only li a{font-weight:560;letter-spacing:-.045em}
.price-table .nvx-price-label{font-weight:400}
.hd-feature-k{font-weight:400}
.hd-acc{font-weight:560;letter-spacing:-.045em}
.hd-big a{font-weight:560;letter-spacing:-.045em}
code.lib-cve{font-weight:400}
.lib-score b{font-weight:560;letter-spacing:-.045em}
.lib-head{font-weight:400}
.addons-h{font-weight:400}
.incident-card>p.incident-lead{font-weight:560;letter-spacing:-.045em}
.incident-card h3{font-weight:400}
.rh-stat-row .stat-card strong{font-weight:560;letter-spacing:-.045em}
.rh-stat-row .stat-kicker{font-weight:400}
.lib-sheet-head{font-weight:560}
.ln-cve .ln-title code{font-weight:400}
.hm-big .hm-name{font-weight:560;letter-spacing:-.045em}
.nf-caption{font-weight:400}
.report-meta{font-weight:400}
.finding h4{font-weight:400}
.priority{font-weight:400}
.code-label{font-weight:400}
.hd-mega .hm-big .hm-name{font-weight:560;letter-spacing:-.045em}
.hd-acc-panel .hm-big .hm-name{font-weight:560;letter-spacing:-.045em}
.svc-k{font-weight:400}
.svc-path strong{font-weight:560}
.pkg h3{font-weight:560}
.lib-rec .lib-prod{font-weight:560}
.hd-sheet .ms-feature-t{font-weight:560;letter-spacing:-.045em}
.ms-row,.hd-sheet .hd-acc.ms-row{font-weight:560;letter-spacing:-.045em}
.ms-feature-t{font-weight:560;letter-spacing:-.045em}
.ms-name{font-weight:560}
body:not(.pg-legal) main table:not(.keep-table) td[data-label]::before{font-weight:400}
.mini-k{font-weight:400}
.od-opt-tag{font-weight:400}
/* Headings, hand rules: sizes, weights, tracking and line heights from the live nulvex.com CSS (site.css, public-release.css).
   Floors of the layout standards stay: text 14 px, labels and mono captions 13 px, form fields 16 px. */
@media(min-width:1025px){
  h1{font-size:clamp(50px,5.3vw,73px)}
  h2{font-size:clamp(40px,4.2vw,55px)}
  .hero h1{font-size:clamp(66px,6.45vw,86px)}
  .cta-band h2,.close-in h2{font-size:48px}
  .ladder-row h3{font-size:32px}
}
@media(max-width:1024px){
  .cta-band h2,.close-in h2{font-size:clamp(37px,5.2vw,48px)}
}
.cta-band h2,.close-in h2{line-height:1.1;font-weight:560;letter-spacing:-.045em}
.cta-band p,.close-in p{font-size:15px;line-height:1.7}
.ladder-row h3{font-size:clamp(25px,3.6vw,29px);line-height:1.1}
@media(min-width:1025px){.ladder-row h3{font-size:32px}}
.module-card h3{font-size:22px}
.pricing-card h3{font-size:26px;line-height:1.2}
.article-head h1,.report-heading h1{font-size:clamp(34px,3.9vw,54px);line-height:1.1;font-weight:560;letter-spacing:-.045em}
.nf-copy h1{font-size:clamp(42px,5.3vw,73px);line-height:1.035;letter-spacing:-.045em;font-weight:560}
.article-body h2,.prose h2{font-size:29px;line-height:1.15;letter-spacing:-.045em}
@media(min-width:768px){.article-body h2,.prose h2{font-size:31px}}
.article-body h3,.prose h3{font-size:22px;letter-spacing:-.04em}
.lede{font-size:16px;line-height:1.7;font-weight:400}
@media(min-width:768px){.lede{font-size:17px}}
@media(min-width:1025px){.lede{font-size:18px}.hero .hero-copy .lede{font-size:17px}}
.hero .hero-copy .lede{font-size:16px}
@media(min-width:768px){.hero .hero-copy .lede{font-size:17px}}
.section-head>p,.summary{font-size:16px;line-height:1.7}
.hero-note{font-size:14px;line-height:1.5}
.scope-card p,.principle p,.step-card p,.outcome-card p,.module-card p,.rh-method p{font-size:14px;line-height:1.75}
.check-list li,.od-safety li{font-size:14px;line-height:1.7}
.deliverable-card{font-size:15px}
.boundary{font-size:14px}
.ladder-row p,.service-aside>p,.incident-card .check-list li{font-size:14px;line-height:1.75}
.article-body p,.article-body li,.prose p,.prose li{font-size:16px;line-height:1.75}
.pg-legal .article-body dt,.pg-legal .article-body dd{font-size:16px}
.faq-list summary{font-size:16px;font-weight:520;letter-spacing:0}
.faq-list details>div{font-size:14px;line-height:1.75}
.pullquote{font-size:clamp(22px,2.2vw,25px);line-height:1.4;font-weight:500;letter-spacing:-.03em}
.eyebrow{font:400 13px/1.5 var(--mono);letter-spacing:.13em}
.label,.cvelib-mini-label{font-weight:400;letter-spacing:.12em}
.badge{font-weight:400;letter-spacing:.06em}
.btn{font-size:14px;font-weight:680;letter-spacing:.005em;line-height:1.25}
.text-link{font-size:14px;font-weight:600}
.gn-links a,.gn-svc{font-size:14px;font-weight:650;letter-spacing:0}
.gn-cta{font-size:14px;font-weight:700;letter-spacing:.005em}
.ft-col h2{font-family:var(--mono);font-weight:500;letter-spacing:.14em;text-transform:uppercase}
.data-table,.table-scroll table{font-size:14px;line-height:1.6}
.field label{font-size:14px;font-weight:600}
.pricing-card .price-amount,.pricing-intro .price-amount,.pkg .pkg-price,.price-amount{font-size:34px;line-height:1.2;font-weight:700;letter-spacing:-.035em}
.pricing-card .billing-option .price-amount,.billing-option .price-amount{font-size:31px}
.pricing-card .price-unit,.pricing-card .billing-option > p,.pkg .pkg-bill,.pricing-intro .price-note{font-size:14px;font-weight:400}
.free-price,.pricing-intro .free-price{font-size:40px;line-height:1.2;font-weight:650;letter-spacing:0}
.metric-strip strong,.rh-stat-row strong,.cvelib-stats strong,.rh-stat-row .stat-card strong,.number-index,.step-num,.rh-method-n,.sc-num{font-weight:560;letter-spacing:-.045em}

/* Labels that were set in the sans face are mono captions on the earlier site */
.gn-group h2,.hd-h,.hm-label,.hd-mega .hm-label,.hd-acc-panel .hm-label,.svc-map-h,.svc-mods-h,.rh-facts dt,.pkg-label,.addon-row-h,.ms-label,.principles-h,.pricing-card .billing-option > span,.pkg .pkg-tier > .pkg-label{font-family:var(--mono);font-weight:400}
.pricing-card .billing-option .price-amount,.billing-option .price-amount{font-size:31px;line-height:1.2;font-weight:700;letter-spacing:-.035em}
.addon-price{font-size:34px;line-height:1.2;font-weight:700;letter-spacing:-.035em}
.pricing-intro h2{font-size:38px}
/* Not typography: the 44 px tap-row rule (main a.tap-solo) turned the five approach cards on the home page into inline blocks that overflow their box. */
.svc-path a.tap-solo{display:flex}
main .ladder-more a.text-link.tap-solo{display:inline-flex}
/* Linked titles carry 10 px tap padding: their line height stays 1.2 so the tap row is 44 px or more. */
main :is(h2,h3,h4) a{line-height:1.2}
/* ===== end typography restore ===== */

/* ===== Button system (D120): one component for every button and button-like link =====
   Primary: accent gradient, inner top highlight, soft glow, navy text (#07111F), trailing arrow.
   Secondary (.btn-outline, header "Let's talk"): translucent fill, 1px hairline, white text, accent border on hover.
   Light sections (.paper): same shape in navy. Heights: 48 px, header 40 px. Radius 10 px. No pills. */
:root{--btn-r:10px;--btn-ink:#07111F;--btn-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E")}

/* shape and type, shared by primary, secondary, mobile menu button, header button */
html body .btn.btn,html body .hd-sheet-cta.hd-sheet-cta,html body .gn-cta.gn-cta,html body .chip.chip,html body .lib-filters-btn.lib-filters-btn,html body .nf-knock.nf-knock{position:relative;align-items:center;justify-content:center;gap:10px;box-sizing:border-box;min-height:48px;padding:0 22px;border-radius:var(--btn-r);font-family:var(--font);font-size:15px;font-weight:600;letter-spacing:-.01em;line-height:1.2;text-align:center;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease),transform .18s var(--ease),filter .18s var(--ease),color .18s var(--ease)}
html body .hd-sheet-cta.hd-sheet-cta{width:100%;max-width:560px;margin:0 auto}

/* PRIMARY */
html body :is(.btn:not(.btn-outline),.hd-sheet-cta){color:var(--btn-ink);border:1px solid #5ec2dc;background:linear-gradient(180deg,#7ad3e8 0%,#5ec2dc 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 6px 20px rgba(105,204,227,.22)}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta):is(:hover,:focus-visible){color:var(--btn-ink);border-color:#6fcbe2;background:linear-gradient(180deg,#8adcee 0%,#68c8e1 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.42),0 10px 26px rgba(105,204,227,.30);transform:translateY(-1px)}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta):active{transform:translateY(1px);filter:brightness(.97);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 2px 8px rgba(105,204,227,.18)}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta)::after{content:"";flex:none;width:16px;height:16px;margin:0;border:0;transform:none;background:currentColor;-webkit-mask:var(--btn-arrow) center/contain no-repeat;mask:var(--btn-arrow) center/contain no-repeat;transition:transform .18s var(--ease)}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta):is(:hover,:focus-visible)::after{transform:translateX(3px)}

/* SECONDARY and header button */
html body :is(.btn.btn-outline,.gn-cta){color:var(--text);border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.04);box-shadow:none}
html body :is(.btn.btn-outline,.gn-cta):is(:hover,:focus-visible){color:var(--text);border-color:var(--accent);background:rgba(255,255,255,.07);box-shadow:none}
html body :is(.btn.btn-outline,.gn-cta):active{transform:translateY(1px);background:rgba(255,255,255,.05)}
html body .btn.btn-outline::after{content:none}
html body .gn-cta.gn-cta{min-height:40px;padding:0 18px;flex-shrink:0}
html body .gn-cta::after{content:"";position:absolute;left:0;right:0;top:-4px;bottom:-4px;width:auto;height:auto;border:0;background:none;-webkit-mask:none;mask:none}

/* a button label is never underlined, in any state (links inside notice boxes and prose are underlined by their own rules) */
html body :is(.btn,.hd-sheet-cta,.gn-cta,.chip,.lib-filters-btn,.nf-knock),html body :is(.btn,.hd-sheet-cta,.gn-cta,.chip,.lib-filters-btn,.nf-knock):is(:hover,:focus,:focus-visible,:active,:visited){text-decoration:none}
html body :is(a.btn,a.hd-sheet-cta,a.gn-cta,a.chip,a.lib-filters-btn,a.nf-knock),html body :is(a.btn,a.hd-sheet-cta,a.gn-cta,a.chip,a.lib-filters-btn,a.nf-knock):is(:hover,:focus,:focus-visible,:active,:visited){text-decoration:none!important}

/* focus ring on every button-like control */
html body :is(.btn,.hd-sheet-cta,.gn-cta,.chip,.lib-filters-btn,.nf-knock):focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* disabled and loading: no lift, no glow */
html body :is(.btn:disabled,.btn[aria-disabled=true]){opacity:.55;cursor:not-allowed;transform:none;filter:none;box-shadow:none}
html body :is(.btn:disabled,.btn[aria-disabled=true])::after{transform:none}

/* filter controls of the library share the secondary look */
html body :is(.chip,.lib-filters-btn,.nf-knock):is(.chip,.lib-filters-btn,.nf-knock){min-height:44px;padding:0 16px;color:var(--text);border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.04)}
html body :is(.chip,.lib-filters-btn,.nf-knock):hover{border-color:var(--accent);background:rgba(255,255,255,.07)}
html body .lib-bar .chip{border-radius:var(--btn-r)!important}
html body .nf-knock{border-radius:var(--btn-r)}

/* button pairs side by side: equal width, equal height (they stack on phones) */
@media(min-width:768px){html body main .actions:has(> .btn + .btn){display:grid;grid-auto-flow:column;grid-auto-columns:1fr;align-items:stretch;justify-content:center;gap:16px;width:max-content;max-width:100%;margin-inline:auto}}
@media(min-width:1025px){html body main :is(.split-copy,.hero-copy) .actions:has(> .btn + .btn){margin-inline:0}}

/* LIGHT SECTIONS (cream bands): same shape in navy */
html body .paper .btn:not(.btn-outline){color:#fff;border:1px solid #10242e;background:linear-gradient(180deg,#1a3a49 0%,#10242e 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 6px 18px rgba(16,36,46,.20)}
html body .paper .btn:not(.btn-outline):is(:hover,:focus-visible){color:#fff;border-color:#10242e;background:linear-gradient(180deg,#234a5c 0%,#15303c 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 10px 24px rgba(16,36,46,.26)}
html body .paper .btn.btn-outline{color:#12232b;border:1px solid rgba(16,36,46,.28);background:rgba(16,36,46,.03);box-shadow:none}
html body .paper .btn.btn-outline:is(:hover,:focus-visible){color:#12232b;border-color:#0f6b80;background:rgba(16,36,46,.07)}
html body .paper :is(.btn,.chip):focus-visible{outline-color:#0f6b80}

@media(prefers-reduced-motion:reduce){html body :is(.btn,.hd-sheet-cta,.gn-cta,.chip,.lib-filters-btn,.nf-knock),html body :is(.btn,.hd-sheet-cta)::after{transition:none}html body :is(.btn,.hd-sheet-cta,.gn-cta):is(:hover,:focus-visible,:active),html body :is(.btn,.hd-sheet-cta):is(:hover,:focus-visible)::after{transform:none}}
@media print{html body :is(.btn,.hd-sheet-cta)::after{content:none}}
/* ===== end button system ===== */

/* ===== FLAT BUTTONS, VARIANT C: OUTLINE ACCENT (26 Oct 2026, work/BUTTONS-FLAT; D167, second round). Append AFTER the BUTTON SYSTEM block and the ALIGN-FIX block. =====
   Look only: no solid fill, no gradient, no glow, no shadow, no lift, no arrow slide (the arrow icon stays, so widths do not change). Hover and active only raise a faint tint.
   Size is equal to the current build: the primary gets a 1 px border and loses 1 px of padding on each side, so width and height do not move.
   Primary: 1 px cyan #69cce3 outline, transparent fill, cyan text #69cce3 (10.41 to 1 on the page). Hover: 10 percent cyan tint, text #a9e6f3. Active: 18 percent tint.
   Secondary: 1 px neutral outline #5d7280, transparent fill, text #f0f4f3. Hover: 6 percent white tint, edge #8196a3. Active: 11 percent white tint.
   Tertiary (library toggles .chip, .lib-filters-btn, footer .ft-cta): no edge, light text, 6 percent white tint on hover. No page has another tertiary button today.
   Light (.paper) sections: primary 1 px #0f6b80 outline with #0f6b80 text (5.42 to 1), secondary 1 px #66777f outline with #12232b text. Never cyan on light.
   Disabled: transparent, dark edge #26343d, dim text, no opacity, no reaction.
   Selectors repeat the specificity of the BUTTON SYSTEM block on purpose, so source order decides and no important flag is needed. */
:root{--btn-r:8px;--btn-r-sm:8px;--btn-lift:0px;--btn-slide:0px;--btn-ink:#69cce3}

/* colour-only transitions, short */
html body .btn.btn,html body .hd-sheet-cta.hd-sheet-cta,html body .gn-cta.gn-cta,html body .hd-feature-btn.hd-feature-btn,html body .chip.chip,html body .lib-filters-btn.lib-filters-btn,html body .nf-knock.nf-knock,html body .ft-cta.ft-cta{transition:background-color .12s ease,border-color .12s ease,color .12s ease}

/* PRIMARY: the 1 px border is paid for with 1 px less padding, so the box keeps its size */
html body :is(.btn:not(.btn-outline),.hd-sheet-cta){padding-inline:23px}
html body :is(.gn-cta.gn-cta,.hd-feature-btn.hd-feature-btn){padding-inline:15px}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta,.gn-cta,.hd-feature-btn){color:var(--btn-ink);border:1px solid #69cce3;background:transparent;box-shadow:none}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta,.gn-cta,.hd-feature-btn):is(:hover,:focus-visible){color:#a9e6f3;border-color:#69cce3;background:rgba(105,204,227,.1);transform:none;box-shadow:none}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta,.gn-cta,.hd-feature-btn):active{color:#a9e6f3;border-color:#69cce3;background:rgba(105,204,227,.18);transform:none;filter:none;box-shadow:none}

/* SECONDARY */
html body :is(.btn.btn-outline,.chip,.lib-filters-btn,.nf-knock,.ft-cta){color:var(--text);border:1px solid #5d7280;background:transparent;box-shadow:none}
html body :is(.btn.btn-outline,.chip,.lib-filters-btn,.nf-knock,.ft-cta):is(:hover,:focus-visible){color:var(--text);border-color:#8196a3;background:rgba(255,255,255,.06)}
html body :is(.btn.btn-outline,.chip,.lib-filters-btn,.nf-knock,.ft-cta):active{background:rgba(255,255,255,.11)}

/* TERTIARY (controls): no edge */
html body :is(.chip.chip,.lib-filters-btn.lib-filters-btn,.ft-cta.ft-cta){border-color:transparent}
html body :is(.chip.chip,.lib-filters-btn.lib-filters-btn,.ft-cta.ft-cta):is(:hover,:focus-visible){border-color:transparent;background:rgba(255,255,255,.06)}
html body :is(.chip[aria-pressed=true],.lib-filters-btn[aria-expanded=true]){border-color:#69cce3;background:rgba(105,204,227,.12)}

/* LIGHT SECTIONS (.paper) */
html body .paper .btn:not(.btn-outline){color:#0f6b80;border:1px solid #0f6b80;background:transparent;box-shadow:none}
html body .paper .btn:not(.btn-outline):is(:hover,:focus-visible){color:#0b5566;border-color:#0b5566;background:rgba(15,107,128,.1);box-shadow:none}
html body .paper .btn:not(.btn-outline):active{color:#0b5566;border-color:#0b5566;background:rgba(15,107,128,.18);box-shadow:none}
html body .paper .btn.btn-outline{color:#12232b;border:1px solid #66777f;background:transparent;box-shadow:none}
html body .paper .btn.btn-outline:is(:hover,:focus-visible){color:#12232b;border-color:#3f4f57;background:rgba(16,36,46,.06)}
html body .paper .btn.btn-outline:active{color:#12232b;background:rgba(16,36,46,.11)}

html body .paper :is(.chip.chip,.lib-filters-btn.lib-filters-btn,.ft-cta.ft-cta){color:#12232b;border-color:transparent;background:transparent}
html body .paper :is(.chip.chip,.lib-filters-btn.lib-filters-btn,.ft-cta.ft-cta):is(:hover,:focus-visible){color:#12232b;border-color:transparent;background:rgba(16,36,46,.06)}
html body .paper :is(.chip[aria-pressed=true],.lib-filters-btn[aria-expanded=true]){color:#12232b;border-color:#0f6b80;background:rgba(15,107,128,.12)}

/* DISABLED: no fill, dark edge, dim text, no opacity, no reaction */
html body .btn.btn.btn:is(:disabled,[aria-disabled=true]),html body .btn.btn.btn:is(:disabled,[aria-disabled=true]):is(:hover,:focus-visible,:active){opacity:1;cursor:not-allowed;color:#7d8f9a;background:transparent;border-color:#26343d;transform:none;filter:none;box-shadow:none}
html body .paper .btn.btn.btn:is(:disabled,[aria-disabled=true]),html body .paper .btn.btn.btn:is(:disabled,[aria-disabled=true]):is(:hover,:focus-visible,:active){color:#66777f;background:transparent;border-color:#cbd5d1}
/* ===== end FLAT BUTTONS C ===== */

/* ===== AUDIT COMPAT for flat C (27 Oct 2026, AUDIT-FLAT round 2). The audit site still carries the older button component; these lines finish flat C there. ===== */
html body :is(.btn:not(.btn-outline),.hd-sheet-cta)::after,html body :is(.btn:not(.btn-outline),.hd-sheet-cta):is(:hover,:focus-visible)::after{transform:none;transition:none}
html body .btn.btn-outline:active{transform:none}
html body .btn.btn,html body .hd-sheet-cta.hd-sheet-cta,html body .gn-cta.gn-cta{font-weight:650}
html body :is(.btn:not(.btn-outline),.hd-sheet-cta){padding-inline:22px}
html body .gn-cta.gn-cta{padding-inline:18px}
/* ===== end AUDIT COMPAT ===== */
