/* dbcve.org — design system. Hand-rolled, no build step. */

/* self-hosted fonts (OFL) — no external dependency */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('/assets/fonts/inter-400.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('/assets/fonts/inter-500.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url('/assets/fonts/inter-600.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 500; font-display: swap; src: url('/assets/fonts/space-grotesk-500.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 600; font-display: swap; src: url('/assets/fonts/space-grotesk-600.woff2') format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 700; font-display: swap; src: url('/assets/fonts/space-grotesk-700.woff2') format('woff2'); }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('/assets/fonts/jetbrains-mono-400.woff2') format('woff2'); }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/assets/fonts/jetbrains-mono-500.woff2') format('woff2'); }

:root{
  /* ================= "Situation Room" design tokens =================
     Dual-mode. LIGHT is the default (a clean daytime status console).
     Discipline: neutrals stay calm; SATURATED COLOUR MEANS SEVERITY.
     Legacy names (--panel/--text/--accent/...) are kept as ALIASES so
     the whole stylesheet recolours without a full rewrite. ========= */
  --bg:#eef1f4; --bg-2:#e4e9ed; --bg-hero:#e9edf1;
  --chrome:#ffffff;                 /* the header. Raised, clean, distinct from the document. */
  --grid:rgba(12,20,24,.035);       /* the field the document sits on. Texture, not pattern. */
  --surface:#ffffff; --surface-2:#f4f6f9; --surface-3:#eaeef2;
  --border:#d7dde3; --border-2:#c3ccd4; --border-strong:#aab5be;
  --ink:#0c1418; --ink-2:#46525c; --ink-3:#73808b;

  --signal:#0c8f81;        /* teal accents / glyphs (brand "signal") */
  --signal-2:#0a776b;      /* AA-safe teal for text, links, fills on white */
  --signal-ink:#ffffff;    /* text on a teal fill */
  --signal-weak:rgba(12,143,129,.10);
  --signal-line:rgba(12,143,129,.28);

  /* severity = the only saturated colour; it always means something */
  --sev-critical:#d81a48; --sev-high:#d1560a; --sev-medium:#9a6b12; --sev-low:#0f7a45;
  --kev:#d81a48;

  --shadow-sm:0 1px 2px rgba(13,22,28,.05);
  --shadow:0 1px 2px rgba(13,22,28,.05), 0 10px 30px rgba(13,22,28,.07);
  --shadow-lg:0 1px 2px rgba(13,22,28,.06), 0 26px 60px rgba(13,22,28,.12);
  --grid-line:rgba(12,20,26,.05);
  --scan:rgba(12,143,129,.16);

  /* legacy aliases -> new palette */
  --panel:var(--surface); --panel-2:var(--surface-2); --panel-3:var(--surface-3);
  --text:var(--ink); --muted:var(--ink-2); --faint:var(--ink-3);
  --accent:var(--signal); --accent-2:#12b3a1; --accent-ink:var(--signal-ink);

  --font-display:'Space Grotesk',system-ui,-apple-system,Segoe UI,sans-serif;
  --sans:'Inter',system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --wrap:1440px; --radius:10px; --radius-lg:16px;
}

/* DARK - the night-ops console */
[data-theme="dark"]{
  --bg:#0f1317;                     /* was #0a0c0e — black-on-black with a hairline. Lifted. */
  --bg-2:#0d1013; --bg-hero:#0b0e11;
  --chrome:#080a0c;                 /* the header now sits DEEPER than the page, not level with it. */
  --grid:rgba(255,255,255,.028);
  --surface:#171d22; --surface-2:#1c2329; --surface-3:#232b32;
  --border:#272f37; --border-2:#353f48; --border-strong:#424d57;
  --ink:#e9edf0; --ink-2:#a3afb8; --ink-3:#6a7883;

  --signal:#2dd4bf; --signal-2:#2dd4bf; --signal-ink:#04231f;
  --signal-weak:rgba(45,212,191,.12); --signal-line:rgba(45,212,191,.30);

  --sev-critical:#fb5473; --sev-high:#fb923c; --sev-medium:#efc84c; --sev-low:#4ade80;
  --kev:#fb5473;

  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 2px 8px rgba(0,0,0,.4), 0 18px 44px rgba(0,0,0,.5);
  --shadow-lg:0 2px 8px rgba(0,0,0,.5), 0 30px 70px rgba(0,0,0,.6);
  --grid-line:rgba(255,255,255,.04);
  --scan:rgba(45,212,191,.22);

  --panel:var(--surface); --panel-2:var(--surface-2); --panel-3:var(--surface-3);
  --text:var(--ink); --muted:var(--ink-2); --faint:var(--ink-3);
  --accent:var(--signal); --accent-2:#5eead4; --accent-ink:var(--signal-ink);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 24px; }
.main { padding-top: 8px; padding-bottom: 64px; }

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.015em; color: var(--text); }
h1 { font-size: 1.9rem; line-height: 1.15; margin: 0 0 12px; }
h2 { font-size: 1.35rem; margin: 0 0 12px; }
h3 { font-size: 1.05rem; margin: 0 0 8px; }

code, pre, .mono { font-family: var(--mono); }
code { background: var(--panel-2); padding: 1px 6px; border-radius: 6px; font-size: 0.9em; }

.muted { color: var(--muted); }
.small { font-size: 0.86rem; }
.kicker { text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.74rem; font-family: var(--mono); color: var(--accent); }

/* =========================== header =========================== */
.site-header {
  position: sticky; top: 0; z-index: 40;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter: saturate(140%) blur(12px);
}
.header-inner { display: flex; align-items: center; gap: 18px; height: 64px; }
.brand { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-display); font-weight: 700; font-size: 1.12rem; color: var(--text); letter-spacing: -0.02em; }
.brand:hover { text-decoration: none; }
.brand .brand-mark { color: var(--accent); font-size: 1.1rem; }
.brand .dot { color: var(--accent); }

.site-nav { display: flex; align-items: center; gap: 18px; margin-left: auto; }
.nav-links { display: flex; align-items: center; gap: 2px; }
.nav-links > a, .dd-toggle { color: var(--muted); font-size: 0.92rem; font-weight: 500; font-family: var(--sans); padding: 8px 12px; border-radius: 9px; transition: color .15s ease, background .15s ease; cursor: pointer; background: none; border: 0; display: inline-flex; align-items: center; gap: 5px; }
.nav-links > a:hover, .nav-dd:hover .dd-toggle, .nav-dd:focus-within .dd-toggle { color: var(--text); text-decoration: none; background: var(--surface-2); }

.nav-dd { position: relative; }
.dd-caret { transition: transform .15s ease; opacity: .7; }
.nav-dd:hover .dd-caret, .nav-dd:focus-within .dd-caret { transform: rotate(180deg); }
.dd-menu { position: absolute; top: calc(100% + 8px); left: 0; min-width: 210px; background: var(--panel-2); border: 1px solid var(--border-2); border-radius: 14px; padding: 6px; box-shadow: 0 24px 60px rgba(0,0,0,.55); opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .15s ease, transform .15s ease, visibility .15s; z-index: 60; }
.nav-dd:hover .dd-menu, .nav-dd:focus-within .dd-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.dd-menu a { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 9px 12px; border-radius: 9px; color: var(--text); font-size: 0.88rem; }
.dd-menu a:hover { background: var(--panel-3); text-decoration: none; }
.dd-menu .soon { font-size: 0.62rem; font-weight: 700; color: var(--faint); border: 1px solid var(--border-2); border-radius: 999px; padding: 2px 8px; text-transform: uppercase; letter-spacing: .05em; }

.nav-actions { display: flex; align-items: center; gap: 14px; padding-left: 6px; border-left: 1px solid var(--border); }

.site-search { position: relative; display: flex; align-items: center; gap: 8px; background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: 7px 14px; width: 210px; }
.site-search:focus-within { border-color: var(--border-2); }
.site-search .hs-icon { width: 16px; height: 16px; color: var(--faint); flex: none; }
.site-search input { flex: 1; min-width: 0; background: none; border: 0; outline: none; color: var(--text); font-size: 0.86rem; font-family: var(--sans); }
.site-search input::placeholder { color: var(--faint); }

.btn-google { display: inline-flex; align-items: center; gap: 9px; background: #fff; color: #1f2328; border: 1px solid transparent; border-radius: 999px; padding: 8px 16px; font-weight: 600; font-size: 0.9rem; white-space: nowrap; transition: background .15s ease, box-shadow .15s ease; }
.btn-google:hover { text-decoration: none; background: #eef1f5; color: #1f2328; box-shadow: 0 6px 18px rgba(0,0,0,.3); }
.btn-google .g-logo { width: 16px; height: 16px; flex: none; }

.user-chip { display: inline-flex; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--text); }
.user-chip .avatar { width: 26px; height: 26px; border-radius: 50%; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #fff; font-size: 0.72rem; font-weight: 700; display: grid; place-items: center; }
.user-chip .rep { color: var(--muted); font-family: var(--mono); font-size: 0.78rem; }
.signout { color: var(--muted); font-size: 0.85rem; }
.signout:hover { color: var(--text); text-decoration: none; }

.nav-toggle { display: none; margin-left: auto; width: 40px; height: 40px; background: none; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; flex-direction: column; gap: 4px; align-items: center; justify-content: center; }
.nav-toggle span { width: 18px; height: 2px; background: var(--text); border-radius: 2px; transition: transform .2s ease, opacity .2s ease; }
.nav-toggle.is-open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; }
.nav-toggle.is-open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* =========================== buttons =========================== */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer;
  background: var(--accent); color: var(--accent-ink); border: 1px solid transparent; border-radius: var(--radius);
  padding: 10px 18px; font-weight: 600; font-size: 0.92rem; font-family: var(--sans); white-space: nowrap; transition: filter .15s ease, transform .1s ease; }
.btn:hover { filter: brightness(1.08); text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn.block { display: flex; width: 100%; }
.btn-lg { padding: 13px 24px; font-size: 1rem; }
.btn-outline { background: transparent; color: var(--text); border: 1px solid var(--border-2); }
.btn-outline:hover { background: var(--panel); border-color: var(--accent); filter: none; }
.btn-sm { cursor: pointer; background: var(--panel-2); color: var(--text); border: 1px solid var(--border); border-radius: 8px; padding: 4px 10px; font-size: 0.8rem; }
.btn-sm:hover { filter: brightness(1.15); }
.btn-sm.danger { border-color: rgba(255,93,108,0.5); color: var(--sev-critical); }

/* =========================== hero =========================== */
.hero-v3 { position: relative; overflow: hidden; padding: 88px 0 72px; }
.hero-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.hero-grid { position: absolute; inset: 0;
  background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 48px 48px;
  -webkit-mask-image: radial-gradient(125% 100% at 26% 0%, #000 26%, transparent 74%);
  mask-image: radial-gradient(125% 100% at 26% 0%, #000 26%, transparent 74%);
}
.hero-orb { position: absolute; border-radius: 50%; filter: blur(100px); opacity: .55; }
.orb-a { width: 560px; height: 560px; left: -140px; top: -200px; background: radial-gradient(circle, rgba(91,155,255,.6), transparent 62%); animation: drift 22s ease-in-out infinite; }
.orb-b { width: 500px; height: 500px; right: -120px; top: -100px; background: radial-gradient(circle, rgba(138,124,255,.5), transparent 62%); animation: drift 27s ease-in-out infinite reverse; }

.hero-inner { position: relative; z-index: 1; display: grid; grid-template-columns: 1.12fr 0.88fr; gap: 52px; align-items: center; }

.hero-badge { display: inline-flex; align-items: center; gap: 8px; font-size: 0.8rem; color: var(--text); background: rgba(255,255,255,.04); border: 1px solid var(--border); border-radius: 999px; padding: 6px 14px; margin-bottom: 24px; }
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); animation: pulse 2.2s infinite; }
.live-dot.green { background: var(--sev-low); animation: pulse-g 2.2s infinite; }

.hero-h1 { font-family: var(--font-display); font-size: clamp(2.3rem, 5vw, 3.6rem); line-height: 1.04; letter-spacing: -0.03em; margin: 0 0 20px; font-weight: 700; }
.hero-h1 .grad { background: linear-gradient(100deg, #5b9bff 0%, #7f88ff 45%, #b98cff 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hero-sub { color: var(--muted); font-size: 1.12rem; line-height: 1.62; max-width: 540px; margin: 0 0 28px; }

.hero-search { display: flex; align-items: center; max-width: 560px; gap: 4px; background: rgba(18,21,29,.75); border: 1px solid var(--border-2); border-radius: 12px; padding: 6px 6px 6px 16px; box-shadow: 0 12px 44px rgba(0,0,0,.4); }
.hero-search:focus-within { border-color: var(--accent); box-shadow: 0 12px 48px rgba(91,155,255,.22); }
.hero-search .hs-icon { width: 20px; height: 20px; color: var(--faint); flex: none; }
.hero-search input { flex: 1; min-width: 0; background: none; border: 0; outline: none; color: var(--text); font-family: var(--mono); font-size: 0.94rem; padding: 12px; }
.hero-search input::placeholder { color: var(--faint); }

.hero-ctas { display: flex; gap: 12px; margin: 24px 0 26px; flex-wrap: wrap; }
.hero-trust { list-style: none; display: flex; flex-wrap: wrap; gap: 10px 22px; padding: 0; margin: 0; }
.hero-trust li { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.86rem; }
.hero-trust .chk { width: 16px; height: 16px; flex: none; border-radius: 50%; background: rgba(100,217,138,.15); position: relative; }
.hero-trust .chk::after { content: ""; position: absolute; left: 5px; top: 3px; width: 4px; height: 7px; border: solid var(--sev-low); border-width: 0 2px 2px 0; transform: rotate(45deg); }

.hero-stage { position: relative; min-height: 300px; display: grid; place-items: center; }
.stage-glow { position: absolute; width: 340px; height: 340px; background: radial-gradient(circle, rgba(91,155,255,.28), transparent 65%); filter: blur(30px); z-index: 0; }
.stage-card { width: 100%; max-width: 370px; }
.stage-card.ghost { position: absolute; top: 30px; width: 88%; height: 210px; background: rgba(255,255,255,.02); border: 1px solid var(--border); border-radius: 16px; transform: rotate(-3deg); z-index: 1; }
.stage-card.live { position: relative; z-index: 2; display: block; text-decoration: none; color: var(--text); border-radius: 16px;
  background: linear-gradient(160deg, rgba(23,27,37,.95), rgba(16,19,26,.95));
  border: 1px solid rgba(120,150,190,.3); padding: 22px;
  box-shadow: 0 34px 80px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter: blur(12px); animation: floaty 6s ease-in-out infinite; transition: opacity .25s ease, transform .25s ease, border-color .2s ease; }
.stage-card.live:hover { text-decoration: none; border-color: var(--accent); }
.stage-card.live.swapping { opacity: .2; transform: translateY(8px); }
.sc-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.sc-id { font-family: var(--mono); font-weight: 700; font-size: 1.05rem; }
.sc-tags { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; min-height: 22px; }
.sc-chip { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: 2px 8px; border-radius: 6px; background: rgba(91,155,255,.14); color: var(--accent); border: 1px solid rgba(91,155,255,.3); }
.sc-summary { color: var(--muted); font-size: 0.9rem; line-height: 1.55; margin: 0 0 18px; min-height: 70px; }
.sc-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 14px; border-top: 1px solid var(--border); }
.sc-status { display: flex; align-items: center; gap: 7px; font-size: 0.82rem; color: var(--sev-low); }
.sc-view { font-size: 0.85rem; color: var(--accent); font-weight: 600; }

@keyframes floaty { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes drift { 0%,100% { transform: translate(0,0); } 50% { transform: translate(28px,18px); } }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(91,155,255,.5); } 70% { box-shadow: 0 0 0 8px rgba(91,155,255,0); } 100% { box-shadow: 0 0 0 0 rgba(91,155,255,0); } }
@keyframes pulse-g { 0% { box-shadow: 0 0 0 0 rgba(100,217,138,.5); } 70% { box-shadow: 0 0 0 8px rgba(100,217,138,0); } 100% { box-shadow: 0 0 0 0 rgba(100,217,138,0); } }

/* =========================== section intros =========================== */
.section-intro { max-width: 640px; margin: 0 0 28px; }
.section-intro h2 { font-size: clamp(1.5rem, 3vw, 2rem); margin: 10px 0 10px; }
.section-intro p { color: var(--muted); font-size: 1.02rem; margin: 0; }
.block { margin: 0 0 56px; }

/* =========================== features =========================== */
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.feature { border: 1px solid var(--border); border-radius: 14px; background: var(--panel); padding: 22px; transition: border-color .15s ease, transform .15s ease; }
.feature:hover { border-color: var(--border-2); transform: translateY(-2px); }
.feature .fi { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 10px; background: var(--panel-2); color: var(--accent); margin-bottom: 14px; }
.feature .fi svg { width: 22px; height: 22px; }
.feature h3 { margin: 0 0 6px; }
.feature p { color: var(--muted); font-size: 0.92rem; margin: 0; line-height: 1.55; }

/* =========================== who are you (intent) =========================== */
.intent { margin: 0 0 56px; }
.intent-carousel { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.intent-card { display: flex; flex-direction: column; gap: 8px; border: 1px solid var(--border); border-radius: 16px; padding: 22px;
  background: linear-gradient(180deg, var(--panel-2), var(--panel)); color: var(--text); text-decoration: none; transition: transform .12s ease, border-color .12s ease; }
.intent-card:hover { text-decoration: none; transform: translateY(-3px); border-color: var(--accent); }
.intent-card .ic { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 11px; background: var(--bg-2); color: var(--accent); margin-bottom: 4px; }
.intent-card .ic svg { width: 24px; height: 24px; }
.intent-card h3 { font-size: 1.08rem; margin: 0; }
.intent-card p { color: var(--muted); font-size: 0.9rem; margin: 0; flex: 1; line-height: 1.5; }
.intent-card .go { color: var(--accent); font-weight: 600; font-size: 0.9rem; margin-top: 6px; }
.intent-card.c-work .ic { color: var(--sev-low); }
.intent-card.c-learn .ic { color: var(--sev-high); }
.intent-card.c-other .ic { color: var(--accent-2); }

/* =========================== how it works =========================== */
.how { margin: 0 0 56px; }
.how-steps { list-style: none; padding: 0; margin: 20px 0 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.how-steps li { display: flex; gap: 14px; align-items: flex-start; }
.how-steps .step-n { flex: none; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--bg-2); border: 1px solid var(--border-2); font-family: var(--mono); font-weight: 700; color: var(--accent); }
.how-steps strong { display: block; margin-bottom: 3px; font-family: var(--font-display); }
.how-steps p { margin: 0; font-size: 0.9rem; color: var(--muted); }

/* =========================== CTA band =========================== */
.cta-band { position: relative; overflow: hidden; border: 1px solid var(--border-2); border-radius: 20px; padding: 44px; margin: 0 0 56px; background: linear-gradient(135deg, var(--panel-2), var(--panel)); }
.cta-band::before { content: ""; position: absolute; width: 380px; height: 380px; right: -80px; top: -160px; background: radial-gradient(circle, rgba(138,124,255,.28), transparent 62%); filter: blur(50px); pointer-events: none; }
.cta-inner { position: relative; z-index: 1; max-width: 640px; }
.cta-inner h2 { font-size: clamp(1.6rem, 3.5vw, 2.2rem); margin: 0 0 10px; }
.cta-inner p { color: var(--muted); font-size: 1.05rem; margin: 0 0 22px; }
.cta-actions { display: flex; gap: 12px; flex-wrap: wrap; }

/* =========================== CVE list / table =========================== */
.section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.cve-list { margin-bottom: 40px; }
.table-scroll { overflow-x: auto; }
.cve-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.cve-table th, .cve-table td { text-align: left; padding: 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
.cve-table th { color: var(--muted); font-weight: 600; font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.04em; }
.cve-table tbody tr:hover { background: var(--panel); }
.c-id a { font-family: var(--mono); font-weight: 600; }
.c-desc { color: var(--muted); max-width: 520px; }
.c-date { white-space: nowrap; }
.empty-state { border: 1px dashed var(--border-2); border-radius: 14px; padding: 30px; text-align: center; color: var(--muted); background: var(--panel); }

/* severity + badges */
.sev { font-family: var(--mono); font-size: 0.78rem; font-weight: 700; padding: 2px 8px; border-radius: 6px; white-space: nowrap; color: #08090d; }
.sev-critical { background: var(--sev-critical); }
.sev-high { background: var(--sev-high); }
.sev-medium { background: var(--sev-medium); }
.sev-low { background: var(--sev-low); }
.sev-na { background: var(--border-2); color: var(--muted); }
.sev .v { font-weight: 500; opacity: 0.8; }
.badge { display: inline-block; font-size: 0.7rem; font-weight: 700; padding: 2px 7px; border-radius: 6px; text-transform: uppercase; letter-spacing: 0.03em; }
.badge.kev { background: rgba(255,93,108,0.14); color: var(--kev); border: 1px solid rgba(255,93,108,0.4); }
.badge.verified { background: rgba(100,217,138,0.14); color: var(--sev-low); border: 1px solid rgba(100,217,138,0.4); }

/* =========================== CVE detail =========================== */
.cve-head { border-bottom: 1px solid var(--border); padding-bottom: 16px; margin: 8px 0 6px; }
.cve-head h1 { font-family: var(--mono); }
.cve-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.cve-body { display: grid; grid-template-columns: 1fr 300px; gap: 36px; margin-top: 8px; }
.cve-main section { margin-bottom: 8px; }
.refs ul { padding-left: 18px; }
.refs li { margin: 6px 0; word-break: break-word; }
.cve-aside .hire-card { position: sticky; top: 88px; border: 1px solid var(--border-2); border-radius: 14px; background: linear-gradient(180deg, var(--panel-2), var(--panel)); padding: 20px; }
.hire-card p { color: var(--muted); font-size: 0.88rem; }
.hire-card .btn { margin: 8px 0; }

/* =========================== community =========================== */
.signin-prompt { border: 1px dashed var(--border-2); border-radius: 12px; padding: 18px; margin: 12px 0 20px; }
.signin-prompt p { margin-top: 0; }
.comment-form { display: flex; flex-direction: column; gap: 10px; margin: 12px 0 22px; }
.comment-form textarea { background: var(--panel); color: var(--text); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; font-family: var(--mono); font-size: 0.86rem; resize: vertical; outline: none; width: 100%; }
.comment-form textarea:focus { border-color: var(--accent); }
.comment-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.visually-label { display: flex; flex-direction: column; gap: 6px; }
.thread { display: flex; flex-direction: column; gap: 12px; }
.post { display: grid; grid-template-columns: 44px 1fr; gap: 12px; border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; background: var(--panel); }
.post-vote { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.post-vote .vote { background: none; border: 0; cursor: pointer; color: var(--muted); font-size: 1rem; line-height: 1; padding: 2px 4px; border-radius: 6px; }
.post-vote .vote:hover { color: var(--text); background: var(--panel-2); }
.post-vote .vote.up.on { color: var(--sev-low); }
.post-vote .vote.down.on { color: var(--sev-critical); }
.post-vote .vote.static { cursor: default; }
.post-vote .score { font-family: var(--mono); font-weight: 700; font-size: 0.85rem; }
.post-content { min-width: 0; }
.post-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 0.8rem; color: var(--muted); margin-bottom: 4px; }
.post-meta .author { color: var(--text); font-weight: 600; }
.post-meta .votes { color: var(--accent); font-family: var(--mono); }
.post-body { font-size: 0.92rem; word-wrap: break-word; overflow-wrap: anywhere; }
.post-body p { margin: 6px 0; }
.post-body pre { background: var(--bg-2); border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; }
.post-body code { background: var(--bg-2); }
.post-body pre code { background: none; padding: 0; }
.post.tier-verified { border-color: rgba(100,217,138,0.45); }
.post.tier-dim { opacity: 0.72; }
.post.tier-dim .post-body { display: block; overflow: visible; }
.post.tier-flagged { opacity: 0.85; }
.flagged-wrap summary { color: var(--muted); cursor: pointer; font-size: 0.85rem; }
.flagged-wrap .post-body { margin-top: 8px; }
.inline-flash { display: inline-block; margin-left: 10px; color: var(--sev-high); font-size: 0.82rem; }

/* =========================== forms =========================== */
.big-search { display: flex; max-width: 560px; margin: 18px 0 0; }
.big-search input { flex: 1; background: var(--panel); color: var(--text); border: 1px solid var(--border); border-radius: 10px 0 0 10px; border-right: 0; padding: 12px 14px; font-family: var(--mono); font-size: 0.95rem; outline: none; }
.big-search input:focus { border-color: var(--accent); }
.big-search .btn { border-radius: 0 10px 10px 0; }
.search-page h1 { margin-bottom: 8px; }
.results { list-style: none; padding: 0; margin: 16px 0; }
.results li { padding: 12px 0; border-bottom: 1px solid var(--border); display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.results .r-id { font-family: var(--mono); font-weight: 600; }
.results .r-desc { color: var(--muted); flex: 1 1 100%; font-size: 0.9rem; }

.search-suggest { position: absolute; top: calc(100% + 8px); left: 0; right: 0; list-style: none; margin: 0; padding: 6px; background: var(--panel-2); border: 1px solid var(--border-2); border-radius: 12px; box-shadow: 0 18px 44px rgba(0,0,0,.5); z-index: 50; min-width: 260px; }
.search-suggest li { margin: 0; }
.search-suggest a { display: block; padding: 8px 10px; border-radius: 8px; color: var(--text); font-family: var(--mono); font-size: 0.84rem; }
.search-suggest a:hover { background: var(--panel-3); text-decoration: none; }
.search-suggest .sg-desc { display: block; color: var(--muted); font-family: var(--sans); font-size: 0.8rem; margin-top: 2px; }

.stack-form { max-width: 560px; display: flex; flex-direction: column; gap: 14px; margin-top: 12px; }
.stack-form label { display: flex; flex-direction: column; gap: 6px; font-size: 0.9rem; color: var(--muted); }
.stack-form input, .stack-form textarea, .stack-form select { background: var(--panel); color: var(--text); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; font-family: var(--sans); font-size: 0.95rem; outline: none; }
.stack-form input:focus, .stack-form textarea:focus, .stack-form select:focus { border-color: var(--accent); }
.stack-form textarea { font-family: var(--mono); font-size: 0.86rem; resize: vertical; }
.stack-form .btn { align-self: flex-start; margin-top: 4px; }
.re { color: var(--muted); }
.lede { color: var(--muted); font-size: 1.05rem; max-width: 640px; }
.notice { border-radius: 12px; padding: 12px 16px; margin: 14px 0; border: 1px solid var(--border-2); }
.notice.ok { background: rgba(100,217,138,0.10); border-color: rgba(100,217,138,0.35); }
.notice.err { background: rgba(255,93,108,0.10); border-color: rgba(255,93,108,0.35); }
.btn.google { display: inline-flex; align-items: center; gap: 9px; background: #fff; color: #1f2328; border: 0; }
.btn.google:hover { background: #f1f3f6; filter: none; }

/* =========================== insights =========================== */
.insights-head { padding: 10px 0 6px; border-bottom: 1px solid var(--border); margin-bottom: 24px; }
.insights-head .lede { max-width: 620px; }
.insight-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; }
.insight-item { display: block; border: 1px solid var(--border); border-radius: 14px; padding: 20px 22px; background: var(--panel); color: var(--text); text-decoration: none; transition: border-color .12s ease, transform .12s ease; }
.insight-item:hover { text-decoration: none; border-color: var(--accent); transform: translateY(-2px); }
.insight-item h2 { font-size: 1.2rem; margin: 0 0 6px; }
.insight-item .summary { color: var(--muted); font-size: 0.92rem; margin: 0 0 8px; }
.insight-item .byline { margin: 0; }

.article { max-width: 720px; margin: 0 auto; }
.article-head { border-bottom: 1px solid var(--border); padding-bottom: 16px; margin-bottom: 8px; }
.article-head h1 { font-size: clamp(1.7rem, 3.5vw, 2.3rem); line-height: 1.15; margin: 8px 0; }
.article-head .byline { margin: 0; }
.prose { font-size: 1.04rem; line-height: 1.75; }
.prose h2 { font-size: 1.35rem; margin: 1.8em 0 0.5em; }
.prose h3 { font-size: 1.1rem; margin: 1.5em 0 0.4em; }
.prose p { margin: 0.9em 0; }
.prose ul, .prose ol { padding-left: 1.4em; margin: 0.9em 0; }
.prose li { margin: 0.4em 0; }
.prose a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.prose strong { color: var(--text); font-weight: 600; }
.prose em { color: var(--muted); }
.prose code { background: var(--bg-2); }
.prose pre { background: var(--bg-2); border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; overflow-x: auto; margin: 1.2em 0; }
.prose pre code { background: none; padding: 0; }
.prose blockquote { border-left: 3px solid var(--border-2); margin: 1.2em 0; padding: 4px 0 4px 16px; color: var(--muted); }
.article-foot { display: flex; flex-wrap: wrap; gap: 8px; margin: 28px 0; padding-top: 16px; border-top: 1px solid var(--border); }
.tag { font-family: var(--mono); font-size: 0.76rem; color: var(--muted); background: var(--panel-2); border: 1px solid var(--border); border-radius: 6px; padding: 3px 9px; }
.article-cta { border: 1px solid var(--border-2); border-radius: 14px; background: linear-gradient(180deg, var(--panel-2), var(--panel)); padding: 20px; margin-top: 28px; }
.article-cta h3 { margin: 0 0 8px; }
.article-cta p { margin: 0 0 12px; font-size: 0.92rem; }

.notfound h1 { font-family: var(--mono); font-size: 3rem; }

/* =========================== footer =========================== */
.site-footer { border-top: 1px solid var(--border); margin-top: 56px; padding: 48px 0 32px; background: var(--bg-2); }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 36px; padding-bottom: 32px; border-bottom: 1px solid var(--border); }
.footer-brand .brand { margin-bottom: 12px; }
.footer-brand p { color: var(--muted); font-size: 0.9rem; max-width: 320px; margin: 0; }
.footer-col h4 { font-family: var(--font-display); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--faint); margin: 0 0 14px; }
.footer-col a { display: block; color: var(--muted); font-size: 0.9rem; margin: 8px 0; }
.footer-col a:hover { color: var(--text); text-decoration: none; }
.footer-bottom { padding-top: 24px; }
.footer-bottom p { max-width: 820px; margin: 0; }

/* =========================== admin =========================== */
.admin-header { border-bottom: 1px solid var(--border); background: var(--bg-2); padding: 12px 0; margin-bottom: 22px; }
.admin-bar { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.admin-brand { font-family: var(--font-display); }
.admin-brand span { color: var(--accent); }
.admin-nav { display: flex; gap: 16px; margin-left: auto; flex-wrap: wrap; }
.admin-nav a { color: var(--muted); font-size: 0.9rem; }
.admin-nav a:hover { color: var(--text); text-decoration: none; }
.admin-main { padding-bottom: 60px; }
.admin h1 { font-size: 1.35rem; }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; margin: 18px 0; }
.stat { border: 1px solid var(--border); border-radius: 12px; background: var(--panel); padding: 14px 16px; display: flex; flex-direction: column; gap: 2px; }
.stat.warn { border-color: rgba(255,159,67,0.5); }
.stat .n { font-family: var(--mono); font-size: 1.7rem; font-weight: 700; }
.stat .l { font-size: 0.9rem; }
.stat .s { font-size: 0.78rem; }
.admin-table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.admin-table th, .admin-table td { text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.admin-table th { color: var(--muted); font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.04em; }
.admin-table tbody tr:hover { background: var(--panel); }
.admin-table .nowrap { white-space: nowrap; }
.admin-table .wrap-cell { max-width: 380px; }
.admin-table .s { font-size: 0.76rem; }
.admin-table .row-hidden { opacity: 0.5; }
.inline-form { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.inline-form select { background: var(--panel); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 4px 6px; font-size: 0.82rem; }
.pill { display: inline-block; font-size: 0.7rem; font-weight: 700; padding: 2px 7px; border-radius: 5px; }
.pill.ok { background: rgba(100,217,138,0.15); color: var(--sev-low); }
.pill.bad { background: rgba(255,93,108,0.15); color: var(--sev-critical); }
.pill.urgent { background: rgba(255,159,67,0.15); color: var(--sev-high); }

/* =========================== responsive =========================== */
@media (max-width: 940px) {
  .nav-toggle { display: flex; }
  .site-nav {
    position: absolute; top: 64px; left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--bg-2); border-bottom: 1px solid var(--border);
    padding: 8px 24px 18px; margin: 0;
    max-height: 0; overflow: hidden; opacity: 0; pointer-events: none;
    transition: max-height .28s ease, opacity .2s ease;
  }
  .site-nav.open { max-height: 680px; opacity: 1; pointer-events: auto; overflow-y: auto; }
  .nav-links, .nav-actions { flex-direction: column; align-items: stretch; gap: 0; width: 100%; padding: 0; border: 0; }
  .nav-links > a, .dd-toggle { width: 100%; justify-content: space-between; padding: 12px 4px; border-radius: 0; border-bottom: 1px solid var(--border); }
  .nav-dd { width: 100%; }
  .dd-caret { display: none; }
  .dd-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; background: none; padding: 0 0 0 14px; min-width: 0; }
  .dd-menu a { padding: 11px 4px; border-radius: 0; border-bottom: 1px solid var(--border); }
  .nav-actions { margin-top: 12px; gap: 12px; }
  .site-search { width: 100%; }
  .btn-google, .user-chip, .signout { align-self: flex-start; }
  .hero-inner { grid-template-columns: 1fr; gap: 30px; }
  .hero-stage { order: -1; min-height: 230px; }
  .feature-grid { grid-template-columns: 1fr 1fr; }
  .how-steps { grid-template-columns: none; gap: 14px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 26px; }
  .cve-body { grid-template-columns: 1fr; }
  .cve-aside .hire-card { position: static; }
}
@media (max-width: 620px) {
  .intent-carousel { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 80%; overflow-x: auto; scroll-snap-type: x mandatory; margin: 0 -24px; padding: 4px 24px 12px; }
  .intent-card { scroll-snap-align: start; }
  .feature-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .cta-band { padding: 28px; }
}
@media (prefers-reduced-motion: reduce) { .stage-card.live, .hero-orb, .live-dot, .live-dot.green { animation: none; } }

/* =========================== full-bleed bands (home v3) =========================== */
.band { padding: 68px 0; }
.band-lift { padding: 68px 0; background: var(--bg-2); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.band .section-intro, .band-lift .section-intro { margin-bottom: 30px; }

/* hero float accents */
.hero-float { position: absolute; z-index: 3; background: linear-gradient(160deg, rgba(23,27,37,.96), rgba(16,19,26,.96)); border: 1px solid rgba(120,150,190,.28); border-radius: 12px; padding: 9px 13px; box-shadow: 0 20px 50px rgba(0,0,0,.5); backdrop-filter: blur(10px); display: flex; align-items: center; gap: 8px; font-size: 0.8rem; white-space: nowrap; }
.hero-float.f-top { top: 2px; right: -8px; animation: floaty 6.5s ease-in-out infinite; }
.hero-float.f-bot { bottom: 6px; left: -16px; animation: floaty 7.8s ease-in-out infinite reverse; }
.fdot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.fdot.crit { background: var(--sev-critical); }
.fdot.ok { background: var(--sev-low); }

/* stats band */
.stats-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.stat-big { text-align: center; padding: 6px 16px; }
.stat-big + .stat-big { border-left: 1px solid var(--border); }
.stat-big .n { display: block; font-family: var(--font-display); font-weight: 700; font-size: clamp(2rem, 4vw, 2.9rem); line-height: 1; background: linear-gradient(120deg, var(--accent), var(--accent-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.stat-big .l { display: block; color: var(--muted); font-size: 0.92rem; margin-top: 10px; }

/* bento features */
.bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(150px, auto); gap: 16px; }
.bento-tile { border: 1px solid var(--border); border-radius: 16px; background: var(--panel); padding: 22px; display: flex; flex-direction: column; gap: 10px; transition: border-color .15s ease, transform .15s ease; }
.bento-tile:hover { border-color: var(--accent); transform: translateY(-2px); }
.bento-tile.span2 { grid-column: span 2; }
.bento-tile.tall { grid-row: span 2; }
.bento-tile .fi { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; background: var(--panel-2); color: var(--accent); }
.bento-tile .fi svg { width: 22px; height: 22px; }
.bento-tile h3 { margin: 0; }
.bento-tile p { color: var(--muted); font-size: 0.92rem; margin: 0; line-height: 1.55; }
.bento-tile.spot { background: linear-gradient(160deg, var(--panel-2), var(--panel)); }
.spot-demo { margin-top: auto; border: 1px solid var(--border-2); border-radius: 10px; background: var(--bg-2); padding: 12px 14px; }
.spot-demo .sd-id { font-family: var(--mono); font-size: 0.8rem; color: var(--accent); font-weight: 600; }
.spot-demo .sd-txt { color: var(--muted); font-size: 0.85rem; margin-top: 6px; line-height: 1.5; }

/* stepper */
.stepper { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 26px; }
.step .num { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-family: var(--font-display); font-weight: 700; font-size: 1.1rem; color: var(--accent-ink); background: linear-gradient(135deg, var(--accent), var(--accent-2)); margin-bottom: 14px; }
.step h3 { margin: 0 0 6px; }
.step p { color: var(--muted); font-size: 0.92rem; margin: 0; }

/* full-bleed CTA */
.cta-full { position: relative; overflow: hidden; padding: 76px 0; background: linear-gradient(120deg, #0f1420, #0b0e17); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.cta-full::before { content: ""; position: absolute; width: 700px; height: 700px; right: -160px; top: -300px; background: radial-gradient(circle, rgba(138,124,255,.3), transparent 60%); filter: blur(70px); pointer-events: none; }
.cta-full::after { content: ""; position: absolute; width: 560px; height: 560px; left: -180px; bottom: -340px; background: radial-gradient(circle, rgba(91,155,255,.2), transparent 60%); filter: blur(70px); pointer-events: none; }
.cta-full .cta-inner { position: relative; z-index: 1; max-width: 680px; }
.cta-full h2 { font-size: clamp(1.9rem, 4vw, 2.7rem); margin: 0 0 12px; }
.cta-full p { color: var(--muted); font-size: 1.08rem; margin: 0 0 24px; }
.cta-actions { display: flex; gap: 12px; flex-wrap: wrap; }

@media (max-width: 940px) {
  .bento { grid-template-columns: 1fr 1fr; }
  .bento-tile.span2 { grid-column: span 2; }
  .bento-tile.tall { grid-row: auto; }
  .stepper { grid-template-columns: none; gap: 16px; }
}
@media (max-width: 620px) {
  .stats-row { grid-template-columns: none; gap: 24px; }
  .stat-big + .stat-big { border-left: 0; border-top: 1px solid var(--border); padding-top: 20px; }
  .bento { grid-template-columns: 1fr; }
  .bento-tile.span2 { grid-column: auto; }
}

/* =========================== clean feature grid (replaces bento) =========================== */
.feat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.feat { position: relative; border: 1px solid var(--border); border-radius: 16px; background: var(--panel); padding: 24px; overflow: hidden; transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease; }
.feat:hover { transform: translateY(-3px); border-color: var(--border-2); box-shadow: 0 22px 50px rgba(0,0,0,.35); }
.feat::after { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--accent), var(--accent-2)); opacity: 0; transition: opacity .15s ease; }
.feat:hover::after { opacity: 1; }
.feat .fi { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 12px; margin-bottom: 16px; }
.feat .fi svg { width: 22px; height: 22px; }
.feat h3 { margin: 0 0 8px; }
.feat p { color: var(--muted); font-size: 0.92rem; line-height: 1.55; margin: 0; }
.feat.t-blue .fi   { background: rgba(91,155,255,.14);  color: var(--accent); }
.feat.t-violet .fi { background: rgba(138,124,255,.14); color: var(--accent-2); }
.feat.t-green .fi  { background: rgba(100,217,138,.14); color: var(--sev-low); }
.feat.t-amber .fi  { background: rgba(255,159,67,.14);  color: var(--sev-high); }
@media (max-width: 940px) { .feat-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .feat-grid { grid-template-columns: 1fr; } }

/* =========================== contractor recruitment /apply =========================== */
.apply-hero { padding: 44px 0 32px; border-bottom: 1px solid var(--border); margin-bottom: 44px; text-align: center; }
.apply-hero h1 { font-size: clamp(2rem, 4.6vw, 3.1rem); line-height: 1.07; margin: 14px auto 16px; max-width: 800px; }
.apply-hero .lede { max-width: 700px; margin: 0 auto 26px; }
.apply-hero-cta { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-bottom: 24px; }
.apply-hero .hero-trust { justify-content: center; }

.apply-block { margin: 0 0 56px; }
.stepper-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 860px) { .stepper-4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .stepper-4 { grid-template-columns: 1fr; } }

.look-for { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; max-width: 740px; }
.look-for li { display: flex; gap: 12px; align-items: flex-start; color: var(--text); font-size: 0.98rem; line-height: 1.5; }
.look-for .lf-i { flex: none; width: 24px; height: 24px; border-radius: 7px; background: rgba(100,217,138,.14); color: var(--sev-low); display: grid; place-items: center; font-size: 0.78rem; font-weight: 700; margin-top: 1px; }

.faq { max-width: 760px; display: flex; flex-direction: column; gap: 10px; }
.faq details { border: 1px solid var(--border); border-radius: 12px; background: var(--panel); overflow: hidden; }
.faq summary { cursor: pointer; padding: 15px 46px 15px 18px; font-weight: 600; color: var(--text); list-style: none; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 18px; top: 50%; transform: translateY(-50%); color: var(--muted); font-size: 1.25rem; line-height: 1; }
.faq details[open] summary::after { content: "\2212"; }
.faq details[open] summary { border-bottom: 1px solid var(--border); }
.faq details p { margin: 0; padding: 14px 18px; color: var(--muted); font-size: 0.92rem; line-height: 1.55; }

/* sign-in gate + status */
.signin-gate, .apply-status { text-align: center; max-width: 560px; margin: 0 auto; border-radius: 18px; padding: 42px 32px; }
.signin-gate { border: 1px solid var(--border-2); background: linear-gradient(180deg, var(--panel-2), var(--panel)); }
.sg-icon { width: 56px; height: 56px; margin: 0 auto 18px; display: grid; place-items: center; border-radius: 14px; background: var(--bg-2); color: var(--accent); }
.sg-icon svg { width: 27px; height: 27px; }
.signin-gate h3 { font-size: 1.4rem; margin: 0 0 10px; }
.signin-gate p { margin: 0 auto 22px; max-width: 450px; }
.btn-google-lg { padding: 12px 22px; font-size: 0.98rem; }

.apply-status { border: 1px solid rgba(100,217,138,.4); background: linear-gradient(180deg, rgba(100,217,138,.06), var(--panel)); }
.as-icon { width: 54px; height: 54px; margin: 0 auto 16px; border-radius: 50%; background: rgba(100,217,138,.16); color: var(--sev-low); display: grid; place-items: center; font-size: 1.5rem; }
.apply-status h3 { font-size: 1.4rem; margin: 0 0 10px; }
.as-meta { display: flex; gap: 22px; justify-content: center; flex-wrap: wrap; margin-top: 16px; font-size: 0.88rem; color: var(--muted); }
.as-meta strong { color: var(--text); }

/* wizard */
.wizard { max-width: 720px; margin-top: 6px; }
.wz-head { margin-bottom: 24px; }
.wz-progress { height: 6px; background: var(--panel-2); border-radius: 999px; overflow: hidden; }
.wz-bar { display: block; height: 100%; width: 16.6%; background: linear-gradient(90deg, var(--accent), var(--accent-2)); border-radius: 999px; transition: width .3s ease; }
.wz-label { margin-top: 10px; font-size: 0.82rem; color: var(--muted); font-family: var(--mono); }
.wz-label .wz-step-title { color: var(--text); }
.wz-step { border: 0; margin: 0; padding: 0; min-inline-size: 0; }
.wz-step > h3 { font-size: 1.25rem; margin: 0 0 18px; }
.step-intro { margin: -8px 0 18px; font-size: 0.92rem; }
.wz-nav { display: flex; gap: 12px; margin-top: 26px; }
.wz-nav .wz-back { margin-right: auto; }
.wizard:not(.js-on) .wz-progress, .wizard:not(.js-on) .wz-label,
.wizard:not(.js-on) .wz-back, .wizard:not(.js-on) .wz-next { display: none; }
.wizard:not(.js-on) .wz-step { margin-bottom: 34px; padding-bottom: 26px; border-bottom: 1px solid var(--border); }
.wizard.js-on .wz-step { display: none; }
.wizard.js-on .wz-step.active { display: block; animation: wzfade .25s ease; }
@keyframes wzfade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* form fields */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.grid-2 .col-2 { grid-column: 1 / -1; }
@media (max-width: 620px) { .grid-2 { grid-template-columns: 1fr; } }
.wizard label, .block-label { display: flex; flex-direction: column; gap: 6px; font-size: 0.86rem; color: var(--muted); font-weight: 500; }
.block-label { margin-top: 16px; }
.wizard input[type=text], .wizard input[type=url], .wizard input[type=email],
.wizard select, .wizard textarea {
  width: 100%; background: var(--panel); color: var(--text); border: 1px solid var(--border);
  border-radius: 10px; padding: 11px 13px; font-family: var(--sans); font-size: 0.95rem; outline: none;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.wizard textarea { resize: vertical; line-height: 1.5; }
.wizard input:focus, .wizard select:focus, .wizard textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(91,155,255,.16); }
.wizard input[readonly] { background: var(--bg-2); color: var(--muted); cursor: default; }
.mono-area { font-family: var(--mono); font-size: 0.86rem; }
.invalid { border-color: var(--sev-critical) !important; box-shadow: 0 0 0 3px rgba(255,90,90,.14) !important; }
.hint, .opt { font-size: 0.74rem; color: var(--faint); font-weight: 400; }
.req-star { color: var(--sev-critical); }
.fg-error { color: var(--sev-critical); font-size: 0.8rem; margin-top: 8px; }

/* specialisation chips */
.field-group { margin: 20px 0; }
.fg-label { display: block; font-size: 0.86rem; color: var(--muted); font-weight: 500; margin-bottom: 10px; }
.chip-checks { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-check { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--border); border-radius: 999px; padding: 8px 14px; cursor: pointer; font-size: 0.85rem; color: var(--text); background: var(--panel); transition: border-color .12s ease, background .12s ease; }
.chip-check input { accent-color: var(--accent); margin: 0; }
.chip-check:hover { border-color: var(--border-2); }
.chip-check:has(input:checked) { border-color: var(--accent); background: rgba(91,155,255,.1); }

/* quiz */
.quiz { display: flex; flex-direction: column; gap: 16px; }
.quiz-q { border: 1px solid var(--border); border-radius: 14px; padding: 16px 18px; background: var(--panel); }
.qq-text { font-weight: 600; margin: 0 0 12px; color: var(--text); display: flex; gap: 10px; align-items: baseline; font-size: 0.95rem; }
.qq-n { flex: none; width: 24px; height: 24px; border-radius: 7px; background: var(--panel-2); color: var(--accent); font-family: var(--mono); font-size: 0.78rem; display: grid; place-items: center; }
.qq-opts { display: flex; flex-direction: column; gap: 8px; }
.qq-opt { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; font-size: 0.9rem; color: var(--muted); transition: border-color .12s ease, color .12s ease, background .12s ease; }
.qq-opt:hover { border-color: var(--border-2); color: var(--text); }
.qq-opt input { margin-top: 2px; accent-color: var(--accent); flex: none; }
.qq-opt:has(input:checked) { border-color: var(--accent); background: rgba(91,155,255,.08); color: var(--text); }

/* assessment code */
.assess-code-wrap { border: 1px solid var(--border-2); border-radius: 12px; overflow: hidden; margin: 4px 0 18px; }
.acw-head { background: var(--bg-2); border-bottom: 1px solid var(--border); padding: 8px 14px; font-family: var(--mono); font-size: 0.74rem; color: var(--muted); }
.acw-lang { color: var(--accent); font-weight: 600; }
.assess-code { margin: 0; padding: 16px 18px; background: #0a0c11; overflow-x: auto; }
.assess-code code { font-family: var(--mono); font-size: 0.85rem; color: #e8ecf2; background: none; padding: 0; white-space: pre; }

/* admin: application detail rows */
.apps-table .app-detail-row td { padding-top: 0; border-top: 0; }
.app-more summary { cursor: pointer; color: var(--accent); font-size: 0.82rem; padding: 4px 0; }
.app-more[open] summary { margin-bottom: 10px; }
.admin-detail { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; }
.admin-detail .k { display: block; font-size: 0.68rem; text-transform: uppercase; letter-spacing: .05em; color: var(--faint); margin-bottom: 3px; }
.ad-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 20px; font-size: 0.84rem; color: var(--text); margin-bottom: 12px; }
@media (max-width: 720px) { .ad-grid { grid-template-columns: 1fr 1fr; } }
.ad-block { font-size: 0.86rem; color: var(--text); margin: 0 0 12px; line-height: 1.5; }
.admin-code { background: #0a0c11; border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; overflow-x: auto; font-family: var(--mono); font-size: 0.82rem; color: #e8ecf2; white-space: pre; margin: 4px 0 12px; }

/* ============ CVE detail: tech chip, priority grade, NVD panels ============ */
.tech-chip { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.tech-logo { flex: none; width: 38px; height: 38px; border-radius: 10px; background: #f4f6f9; display: grid; place-items: center; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); }
.tech-logo.sm { width: 34px; height: 34px; border-radius: 9px; }
.tech-logo .tl-img { width: 23px; height: 23px; display: block; }
.tech-logo svg { width: 20px; height: 20px; color: #39414f; }
.tech-txt { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.tech-txt b { font-size: 0.98rem; color: var(--text); }
.tech-txt small { font-size: 0.78rem; color: var(--muted); }

.priority-band { display: flex; align-items: center; gap: 18px; margin-top: 14px; padding: 14px 18px; border: 1px solid var(--border-2); border-left: 4px solid var(--accent); border-radius: 14px; background: linear-gradient(180deg, var(--panel-2), var(--panel)); }
.pb-score { display: flex; align-items: baseline; gap: 2px; flex: none; }
.pb-num { font-family: var(--font-display); font-size: 2.4rem; font-weight: 700; line-height: 1; color: var(--text); }
.pb-max { font-size: 0.85rem; color: var(--faint); }
.pb-body { min-width: 0; }
.pb-label { font-size: 0.9rem; color: var(--muted); margin-bottom: 8px; }
.pb-label strong { color: var(--text); }
.pb-factors { display: flex; flex-wrap: wrap; gap: 6px; }
.fchip { font-size: 0.72rem; font-weight: 600; padding: 2px 9px; border-radius: 999px; border: 1px solid var(--border-2); color: var(--muted); }
.fchip.f-danger { background: rgba(255,93,108,.12); color: #ffb3ba; border-color: rgba(255,93,108,.35); }
.fchip.f-warn { background: rgba(255,159,67,.12); color: #ffcf9e; border-color: rgba(255,159,67,.32); }
.fchip.f-good { background: rgba(100,217,138,.12); color: #9fe6b8; border-color: rgba(100,217,138,.32); }
.priority-band.grade-critical { border-left-color: var(--sev-critical); }
.priority-band.grade-critical .pb-num { color: var(--sev-critical); }
.priority-band.grade-high { border-left-color: var(--sev-high); }
.priority-band.grade-high .pb-num { color: var(--sev-high); }
.priority-band.grade-medium { border-left-color: var(--sev-medium); }
.priority-band.grade-medium .pb-num { color: var(--sev-medium); }
.priority-band.grade-low { border-left-color: var(--sev-low); }
.priority-band.grade-low .pb-num { color: var(--sev-low); }

.tech-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.tech-card { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 11px; background: var(--panel); }
.tc-txt { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.tc-txt b { font-size: 0.9rem; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-txt small { font-size: 0.74rem; color: var(--faint); }

.cwe-list { display: flex; flex-wrap: wrap; gap: 8px; }
.cwe-chip { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border: 1px solid var(--border-2); border-radius: 9px; background: var(--panel-2); text-decoration: none; }
.cwe-chip:hover { border-color: var(--accent); }
.cwe-id { font-family: var(--mono); font-size: 0.8rem; font-weight: 700; color: var(--accent); }
.cwe-name { font-size: 0.84rem; color: var(--text); }

.vector-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin: 0; }
.vec-cell { padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); }
.vec-cell dt { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint); margin: 0 0 3px; }
.vec-cell dd { margin: 0; font-size: 0.92rem; font-weight: 600; color: var(--text); }
.vec-raw { margin-top: 10px; word-break: break-all; }

.ref-list { list-style: none; padding: 0; margin: 0; }
.ref-list li { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 9px 0; border-bottom: 1px solid var(--border); }
.ref-list li:last-child { border-bottom: none; }
.ref-list a { color: var(--accent); font-size: 0.9rem; word-break: break-all; }
.ref-tag { font-size: 0.68rem; font-weight: 600; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--border-2); color: var(--muted); }
.ref-tag.ref-patch { background: rgba(100,217,138,.12); color: #9fe6b8; border-color: rgba(100,217,138,.3); }
.ref-tag.ref-exploit { background: rgba(255,93,108,.12); color: #ffb3ba; border-color: rgba(255,93,108,.3); }
.ref-tag.ref-vendor { background: rgba(91,155,255,.12); color: #a9c8ff; border-color: rgba(91,155,255,.3); }

.cve-aside .facts-card { border: 1px solid var(--border); border-radius: 14px; background: var(--panel); padding: 16px 18px; margin-bottom: 16px; }
.facts-card h3 { font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--faint); margin: 0 0 10px; }
.facts { margin: 0; display: flex; flex-direction: column; gap: 9px; }
.facts > div { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; }
.facts dt { font-size: 0.82rem; color: var(--muted); margin: 0; }
.facts dd { margin: 0; font-size: 0.85rem; font-weight: 600; color: var(--text); text-align: right; }
.dot-sev { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.grade-tone-critical { color: var(--sev-critical) !important; }
.grade-tone-high { color: var(--sev-high) !important; }
.grade-tone-medium { color: var(--sev-medium) !important; }
.grade-tone-low { color: var(--sev-low) !important; }

@media (max-width: 640px) {
  .priority-band { flex-wrap: wrap; gap: 12px; }
  .pb-num { font-size: 2rem; }
}

/* ============ enrichment status: developing / mitigation ============ */
.badge.dev { background: rgba(255,159,67,.14); color: var(--sev-high); border: 1px solid rgba(255,159,67,.4); }
.dev-note { border: 1px solid rgba(255,159,67,.3); border-left: 3px solid var(--sev-high); background: rgba(255,159,67,.07); border-radius: 10px; padding: 12px 14px; color: var(--muted); font-size: 0.92rem; line-height: 1.55; }
.dev-note strong { color: var(--sev-high); }
.mitig { margin-top: 10px; padding: 11px 14px; border: 1px solid var(--border); border-left: 3px solid var(--sev-low); border-radius: 10px; background: var(--panel); color: var(--text); font-size: 0.92rem; line-height: 1.55; }
.mitig-k { display: inline-block; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--sev-low); margin-right: 8px; vertical-align: 1px; }

/* ============ operations console ============ */
.admin-nav a.on { color: var(--text); font-weight: 600; }
.stat .l { font-size: 0.82rem; color: var(--muted); }
.stat .s { font-size: 0.74rem; }
.con-sec { margin: 0 0 30px; }
.con-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--border); padding-bottom: 8px; margin-bottom: 4px; }
.con-head h2 { margin: 0; font-size: 1.05rem; }
.con-head a { font-size: 0.85rem; }
.funnel { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.fn-step { border: 1px solid var(--border); border-radius: 9px; background: var(--panel); padding: 8px 14px; font-size: 0.85rem; color: var(--muted); }
.fn-step b { color: var(--text); font-family: var(--mono); font-size: 1.05rem; margin-right: 6px; }
.fn-arrow { color: var(--faint); }
.bars { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.bar-row { display: flex; align-items: center; gap: 12px; font-size: 0.85rem; }
.bar-d { width: 52px; color: var(--muted); font-family: var(--mono); flex: none; }
.bar-fill { color: var(--accent); font-family: var(--mono); letter-spacing: -2px; overflow: hidden; }
.bar-c { color: var(--text); font-family: var(--mono); flex: none; }
.sev-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.con-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.con-tbl { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 0.88rem; }
.con-tbl th { text-align: left; color: var(--faint); font-weight: 600; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; padding: 6px 10px; border-bottom: 1px solid var(--border); }
.con-tbl td { padding: 7px 10px; border-bottom: 1px solid var(--border); }
.con-tbl tr:last-child td { border-bottom: none; }
@media (max-width: 760px) { .con-cols { grid-template-columns: 1fr; } }

/* ---- oversight approval queue ---- */
.btn-sm.go { border-color: rgba(100,217,138,0.5); color: var(--sev-low); }
.btn-sm.go:hover { background: rgba(100,217,138,0.12); }
.row-pending td { background: rgba(255,159,67,0.05); }

/* ---- remediation quote teaser (CVE hire-card) ---- */
.quote-teaser { border: 1px solid var(--border-2); border-radius: 10px; background: var(--panel-2); padding: 10px 12px; margin: 4px 0 10px; }
.qt-row { display: flex; justify-content: space-between; gap: 12px; font-size: 0.85rem; padding: 3px 0; color: var(--muted); }
.qt-row b { color: var(--text); font-weight: 600; }
.qt-price { border-top: 1px solid var(--border); margin-top: 4px; padding-top: 7px; }
.qt-price b { color: var(--accent); }

/* ---- invoices ---- */
.inv-actions { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.inv-controls { display: flex; gap: 10px; align-items: center; }
.invoice { max-width: 720px; border: 1px solid var(--border); border-radius: 14px; background: var(--panel); padding: 28px 32px; }
.inv-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; border-bottom: 1px solid var(--border); padding-bottom: 16px; margin-bottom: 18px; }
.inv-brand { font-family: var(--font-display); font-size: 1.4rem; font-weight: 700; color: var(--text); }
.inv-meta { text-align: right; }
.inv-num { font-family: var(--mono); font-size: 1.05rem; color: var(--text); margin-bottom: 6px; }
.inv-parties { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 20px; }
.inv-parties .k { display: block; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint); margin-bottom: 2px; }
.inv-lines { width: 100%; border-collapse: collapse; }
.inv-lines th { text-align: left; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint); padding: 8px 10px; border-bottom: 1px solid var(--border); }
.inv-lines th:nth-child(n+2), .inv-lines td:nth-child(n+2) { text-align: right; }
.inv-lines td { padding: 9px 10px; border-bottom: 1px solid var(--border); color: var(--text); }
.inv-total-l { text-align: right; font-weight: 600; padding-top: 14px; }
.inv-total { text-align: right; font-family: var(--mono); font-size: 1.15rem; font-weight: 700; color: var(--accent); padding-top: 14px; }
.inv-foot { margin-top: 18px; }
@media print {
  .admin-header, .inv-actions { display: none !important; }
  body.admin { background: #fff; }
  .invoice { color: #111; background: #fff; border: none; max-width: none; padding: 0; }
  .invoice .muted, .invoice .inv-parties .k { color: #555 !important; }
  .inv-brand, .inv-num, .inv-lines td, .inv-total { color: #111 !important; }
  .inv-lines th { color: #333 !important; border-color: #ccc; }
  .inv-lines td { border-color: #e5e5e5; }
}

/* ---- ops panel ---- */
.ops-cmd { font-family: var(--mono); font-size: 0.82rem; background: var(--panel-2); border: 1px solid var(--border); border-radius: 6px; padding: 1px 7px; color: var(--text); white-space: nowrap; }
.ops-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.ops-facts > div { display: block; }
.ops-facts dt { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint); }
.ops-facts dd { margin: 2px 0 0; font-size: 0.9rem; color: var(--text); font-family: var(--mono); }

/* ---- AI-authored notes (clearly labelled) ---- */
.badge.ai, .badge.desk { background: rgba(138,124,255,.14); color: var(--accent-2); border: 1px solid rgba(138,124,255,.36); }
.author-title { font-size: 0.8rem; margin: 0 2px; }
.post.is-ai { border-left: 2px solid rgba(138,124,255,.4); }
.post.is-ai .author { color: var(--accent-2); }

/* ---- browse / filters ---- */
.browse { padding-top: 28px; }
.browse .section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--panel); margin-bottom: 14px; }
.filter-bar .fb-q { flex: 1 1 200px; min-width: 160px; }
.filter-bar input[type=search], .filter-bar select { background: var(--panel-2); border: 1px solid var(--border-2); border-radius: 8px; color: var(--text); padding: 8px 10px; font-size: 0.88rem; }
.filter-bar select { cursor: pointer; }
.kev-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 0.85rem; color: var(--muted); white-space: nowrap; }
.fb-clear { font-size: 0.85rem; color: var(--muted); }
.vendor-facet { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-bottom: 16px; }
.vf-label { font-size: 0.8rem; color: var(--faint); margin-right: 2px; }
.vf-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border: 1px solid var(--border-2); border-radius: 999px; background: var(--panel); font-size: 0.82rem; color: var(--muted); text-decoration: none; }
.vf-chip:hover, .vf-chip.on { border-color: var(--accent); color: var(--text); }
.vf-c { font-family: var(--mono); font-size: 0.72rem; color: var(--faint); }
.browse-table .c-tech { white-space: nowrap; }
.tech-mini { display: inline-flex; align-items: center; gap: 7px; font-size: 0.85rem; color: var(--text); }
.tm-logo { width: 22px; height: 22px; border-radius: 6px; background: #f4f6f9; display: inline-grid; place-items: center; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); }
.tm-logo img { width: 15px; height: 15px; display: block; }
.quick-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.quick-chips a { padding: 4px 12px; border: 1px solid var(--border-2); border-radius: 999px; background: var(--panel); font-size: 0.82rem; color: var(--muted); text-decoration: none; }
.quick-chips a:hover { border-color: var(--accent); color: var(--text); }
.pager { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 20px; }
.pg-btn { padding: 7px 16px; border: 1px solid var(--border-2); border-radius: 9px; background: var(--panel); color: var(--text); text-decoration: none; font-size: 0.88rem; }
.pg-btn:hover { border-color: var(--accent); }
.pg-btn.disabled { color: var(--faint); opacity: .5; pointer-events: none; }
.pg-info { font-size: 0.85rem; color: var(--muted); }

/* ---- related CVEs (detail aside) ---- */
.related-card { border: 1px solid var(--border); border-radius: 12px; background: var(--panel); padding: 16px 18px; margin-top: 16px; }
.related-card h3 { margin: 0 0 10px; font-size: 0.95rem; }
.related-list { list-style: none; margin: 0 0 10px; padding: 0; }
.related-list li { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size: 0.85rem; border-bottom: 1px solid var(--border); }
.related-list li:last-child { border-bottom: none; }
.related-list a { display: inline-flex; align-items: center; gap: 7px; font-family: var(--mono); color: var(--text); text-decoration: none; }
.related-list a:hover { color: var(--accent); }
.related-list .badge.kev { margin-left: auto; }
.rc-all { font-size: 0.82rem; color: var(--muted); text-decoration: none; }
.rc-all:hover { color: var(--accent); }


/* Display / body / mono faces are self-hosted in /assets/fonts/ (Inter,
   Space Grotesk, JetBrains Mono). */

/* ---- global: smooth theme flip ---- */
body{transition:background .3s ease,color .3s ease}

/* ---- global: new brand lockup (header + footer) ---- */
.brand-mark{width:30px;height:30px;flex:none;display:block}
.brand-word{font-family:var(--font-display);font-weight:700;font-size:1.18rem;letter-spacing:-.03em;color:var(--ink)}
.brand-word .tld{color:var(--signal)}

/* ---- global: theme toggle button ---- */
.icon-btn{width:38px;height:38px;flex:none;display:grid;place-items:center;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:9px;color:var(--ink-2);transition:color .15s ease,border-color .15s ease}
.icon-btn:hover{color:var(--ink);border-color:var(--border-2)}
.icon-btn svg{width:17px;height:17px}
.icon-btn .moon{display:none}
[data-theme="dark"] .icon-btn .sun{display:none}
[data-theme="dark"] .icon-btn .moon{display:block}

/* ---- global: ghost button (part of the new system) ---- */
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--border-2)}
.btn-ghost:hover{background:var(--surface-2);border-color:var(--border-strong);filter:none}

/* ============================================================
   "Situation Room" homepage (Phase 1). Everything below is scoped
   to .sr-home so pages not yet migrated keep their current styling.
   ============================================================ */
.sr-home .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-home .faint{color:var(--ink-3)}

/* status ribbon */
.sr-home .statusbar{border-bottom:1px solid var(--border);background:var(--bg-2)}
.sr-home .statusbar .wrap{display:flex;align-items:center;gap:18px;height:34px;font-family:var(--mono);font-size:.72rem;color:var(--ink-3);overflow:hidden;white-space:nowrap}
.sr-home .statusbar b{color:var(--ink-2);font-weight:500}
.sr-home .st-live{display:inline-flex;align-items:center;gap:7px;color:var(--sev-low)}
.sr-home .st-dot{width:7px;height:7px;border-radius:50%;background:var(--sev-low);box-shadow:0 0 0 0 var(--sev-low);animation:sr-beat 2.4s infinite}
.sr-home .st-sep{color:var(--border-2)}
.sr-home .st-scroll{margin-left:auto;color:var(--ink-3)}

/* hero */
.sr-home .hero{position:relative;overflow:hidden;background:var(--bg-hero);border-bottom:1px solid var(--border)}
.sr-home .hero::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:52px 52px;-webkit-mask-image:radial-gradient(120% 90% at 78% -10%,#000 30%,transparent 72%);mask-image:radial-gradient(120% 90% at 78% -10%,#000 30%,transparent 72%)}
.sr-home .hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;padding:70px 0 74px}
.sr-home .hero-badge{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:.74rem;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 13px;margin-bottom:22px}
.sr-home .hero-badge .st-dot{background:var(--signal);box-shadow:none}
.sr-home .hero h1{font-size:clamp(2.4rem,5vw,3.7rem);line-height:1.02;font-weight:800;letter-spacing:-.035em;margin:0 0 20px}
.sr-home .hero h1 .fix{color:var(--signal);position:relative;white-space:nowrap}
.sr-home .hero h1 .fix::after{content:"";position:absolute;left:0;right:0;bottom:.06em;height:.09em;background:var(--signal);border-radius:2px;opacity:.5}
.sr-home .hero-sub{color:var(--ink-2);font-size:1.14rem;line-height:1.6;max-width:560px;margin:0 0 26px}
.sr-home .hero-search{display:flex;align-items:center;gap:6px;max-width:560px;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;padding:6px 6px 6px 16px;box-shadow:var(--shadow)}
.sr-home .hero-search:focus-within{border-color:var(--signal);box-shadow:0 0 0 4px var(--signal-weak)}
.sr-home .hero-search svg{width:19px;height:19px;color:var(--ink-3);flex:none}
.sr-home .hero-search input{flex:1;min-width:0;border:0;outline:none;background:none;color:var(--ink);font-family:var(--mono);font-size:.95rem;padding:11px 8px}
.sr-home .hero-search input::placeholder{color:var(--ink-3)}
.sr-home .hero-doors{display:flex;gap:12px;margin:22px 0 24px;flex-wrap:wrap}
.sr-home .hero-trust{list-style:none;display:flex;flex-wrap:wrap;gap:9px 20px;padding:0;margin:0}
.sr-home .hero-trust li{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:.85rem}
.sr-home .tick{width:15px;height:15px;flex:none;border-radius:50%;background:var(--signal-weak);position:relative}
.sr-home .tick::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid var(--signal-2);border-width:0 2px 2px 0;transform:rotate(45deg)}

/* signature: live threat board */
.sr-home .board{position:relative;border:1px solid var(--border-2);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-lg);overflow:hidden}
.sr-home .board-top{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-2)}
.sr-home .board-dots{display:flex;gap:6px}
.sr-home .board-dots i{width:10px;height:10px;border-radius:50%;background:var(--border-2)}
.sr-home .board-title{font-family:var(--mono);font-size:.76rem;color:var(--ink-2)}
.sr-home .board-live{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.7rem;color:var(--sev-low)}
.sr-home .board-scan{position:absolute;left:0;right:0;top:0;height:64px;pointer-events:none;z-index:2;background:linear-gradient(180deg,var(--scan),transparent);opacity:.9;animation:sr-scan 6.5s cubic-bezier(.4,0,.6,1) infinite}
.sr-home .feed{list-style:none;margin:0;padding:6px}
.sr-home .feed li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px;border-radius:10px;transition:background .15s ease}
.sr-home .feed li:hover{background:var(--surface-2)}
.sr-home .feed li+li{border-top:1px solid var(--border)}
.sr-home .feed .sevdot{width:9px;height:9px;border-radius:50%;flex:none}
.sr-home .feed .fid{min-width:0}
.sr-home .feed .fid .cid{font-family:var(--mono);font-weight:700;font-size:.88rem;color:var(--ink);display:flex;align-items:center;gap:8px}
.sr-home .feed .fid .cid a{color:var(--ink)}
.sr-home .feed .fid .cid a:hover{color:var(--signal-2);text-decoration:none}
.sr-home .feed .fid .meta{font-size:.76rem;color:var(--ink-3);margin-top:2px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-home .feed .fright{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.sr-home .feed .ago{font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}
.sr-home .board-foot{padding:11px 16px;border-top:1px solid var(--border);background:var(--surface-2);font-family:var(--mono);font-size:.74rem;display:flex;justify-content:space-between}
.sr-home .board-foot a{color:var(--signal-2)}

/* severity chips + KEV (scoped) */
.sr-home .sev{font-family:var(--mono);font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:5px;white-space:nowrap;border:1px solid transparent}
.sr-home .sev-critical{background:color-mix(in srgb,var(--sev-critical) 15%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
.sr-home .sev-high{background:color-mix(in srgb,var(--sev-high) 15%,transparent);color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 35%,transparent)}
.sr-home .sev-medium{background:color-mix(in srgb,var(--sev-medium) 16%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 36%,transparent)}
.sr-home .sev-low{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 35%,transparent)}
.sr-home .dot-crit{background:var(--sev-critical)} .sr-home .dot-high{background:var(--sev-high)} .sr-home .dot-med{background:var(--sev-medium)} .sr-home .dot-low{background:var(--sev-low)}
.sr-home .kev{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--kev);background:color-mix(in srgb,var(--kev) 13%,transparent);border:1px solid color-mix(in srgb,var(--kev) 38%,transparent);padding:1px 7px;border-radius:999px}
.sr-home .kev .kd{width:6px;height:6px;border-radius:50%;background:var(--kev);animation:sr-beat 1.6s infinite}

/* section scaffolding */
.sr-home .section{padding:64px 0}
.sr-home .section-alt{padding:64px 0;background:var(--bg-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sr-home .section-head{display:block;max-width:640px;margin:0 0 34px}
.sr-home .section-head h2{font-size:clamp(1.6rem,3.2vw,2.15rem);font-weight:700;margin:11px 0 10px;line-height:1.12;color:var(--ink)}
.sr-home .section-head p{color:var(--ink-2);font-size:1.04rem;margin:0}

/* trust strip */
.sr-home .trustrip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.sr-home .trustrip .cell{background:var(--surface);padding:20px 22px}
.sr-home .trustrip .n{font-family:var(--font-display);font-weight:800;font-size:1.7rem;color:var(--ink);letter-spacing:-.02em}
.sr-home .trustrip .n .u{color:var(--signal)}
.sr-home .trustrip .l{color:var(--ink-2);font-size:.86rem;margin-top:4px}

/* two paths */
.sr-home .paths{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.sr-home .path{position:relative;border:1px solid var(--border-2);border-radius:18px;background:var(--surface);padding:30px;box-shadow:var(--shadow);overflow:hidden;transition:transform .15s ease,border-color .15s ease}
.sr-home .path:hover{transform:translateY(-3px);text-decoration:none}
.sr-home .path::before{content:"";position:absolute;top:0;left:0;right:0;height:3px}
.sr-home .path.defend::before{background:linear-gradient(90deg,var(--sev-critical),var(--sev-high))}
.sr-home .path.supply::before{background:linear-gradient(90deg,var(--signal),var(--signal-2))}
.sr-home .path .ptag{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.14em}
.sr-home .path.defend .ptag{color:var(--sev-critical)} .sr-home .path.supply .ptag{color:var(--signal-2)}
.sr-home .path h3{font-size:1.45rem;font-weight:700;margin:12px 0 10px;color:var(--ink)}
.sr-home .path>p{color:var(--ink-2);font-size:.98rem;margin:0 0 18px}
.sr-home .path ul{list-style:none;padding:0;margin:0 0 22px;display:flex;flex-direction:column;gap:10px}
.sr-home .path li{display:flex;gap:10px;align-items:flex-start;color:var(--ink);font-size:.92rem}
.sr-home .path li svg{width:17px;height:17px;flex:none;margin-top:2px}
.sr-home .path.defend li svg{color:var(--sev-high)} .sr-home .path.supply li svg{color:var(--signal-2)}

/* record anatomy */
.sr-home .feats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sr-home .feat{position:relative;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:24px;overflow:hidden;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.sr-home .feat:hover{transform:translateY(-3px);border-color:var(--border-2);box-shadow:var(--shadow)}
.sr-home .feat .fi{width:42px;height:42px;display:grid;place-items:center;border-radius:11px;margin-bottom:15px;background:var(--signal-weak);color:var(--signal-2)}
.sr-home .feat .fi svg{width:21px;height:21px}
.sr-home .feat h3{font-size:1.06rem;font-weight:700;margin:0 0 7px;color:var(--ink)}
.sr-home .feat p{color:var(--ink-2);font-size:.91rem;line-height:1.55;margin:0}
.sr-home .feat .fnote{margin-top:12px;font-family:var(--mono);font-size:.74rem;color:var(--ink-3)}
.sr-home .feat.hot .fi{background:color-mix(in srgb,var(--sev-critical) 12%,transparent);color:var(--sev-critical)}
.sr-home .feat.grade .fi{background:color-mix(in srgb,var(--sev-high) 13%,transparent);color:var(--sev-high)}
.sr-home .pmeter{display:flex;align-items:baseline;gap:6px;margin-top:12px}
.sr-home .pmeter .pn{font-family:var(--font-display);font-weight:800;font-size:2rem;color:var(--sev-high);line-height:1}
.sr-home .pmeter .px{font-family:var(--mono);font-size:.78rem;color:var(--ink-3)}
.sr-home .ptrack{margin-top:8px;height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.sr-home .pfill{height:100%;width:87%;border-radius:999px;background:linear-gradient(90deg,var(--sev-medium),var(--sev-high),var(--sev-critical))}

/* how it works */
.sr-home .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.sr-home .step{position:relative;padding-top:8px}
.sr-home .step .sn{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:1.15rem;color:var(--signal-ink);background:var(--signal-2);margin-bottom:14px}
.sr-home .step h3{font-size:1.1rem;font-weight:700;margin:0 0 7px;color:var(--ink)}
.sr-home .step p{color:var(--ink-2);font-size:.92rem;margin:0}
.sr-home .steps.arrowed .step:not(:last-child)::after{content:"";position:absolute;top:22px;right:-14px;width:12px;height:12px;border-top:2px solid var(--border-2);border-right:2px solid var(--border-2);transform:rotate(45deg)}

/* latest table */
.sr-home .tbl-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.sr-home .chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.sr-home .chips a{padding:5px 13px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface);font-family:var(--mono);font-size:.76rem;color:var(--ink-2)}
.sr-home .chips a:hover{border-color:var(--signal);color:var(--ink);text-decoration:none}
.sr-home .tablewrap{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}
.sr-home table.cve{width:100%;border-collapse:collapse;font-size:.9rem}
.sr-home table.cve th{text-align:left;padding:12px 16px;font-family:var(--mono);font-weight:500;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);background:var(--surface-2);border-bottom:1px solid var(--border)}
.sr-home table.cve td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle}
.sr-home table.cve tr:last-child td{border-bottom:0}
.sr-home table.cve tbody tr:hover{background:var(--surface-2)}
.sr-home table.cve .cid{font-family:var(--mono);font-weight:700;display:inline-flex;align-items:center;gap:8px}
.sr-home table.cve .cid a{color:var(--ink)} .sr-home table.cve .cid a:hover{color:var(--signal-2)}
.sr-home table.cve .desc{color:var(--ink-2);max-width:520px}
.sr-home table.cve .date{font-family:var(--mono);color:var(--ink-3);font-size:.8rem;white-space:nowrap}
.sr-home .empty-state{border:1px dashed var(--border-2);border-radius:14px;background:var(--surface);padding:34px;text-align:center;color:var(--ink-2)}

/* insights */
.sr-home .ins-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sr-home .ins{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:22px;color:var(--ink);transition:transform .15s ease,border-color .15s ease}
.sr-home .ins:hover{transform:translateY(-3px);border-color:var(--signal);text-decoration:none}
.sr-home .ins .tag{font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--signal-2)}
.sr-home .ins h3{font-size:1.08rem;font-weight:700;margin:12px 0 8px;line-height:1.25;color:var(--ink)}
.sr-home .ins p{color:var(--ink-2);font-size:.88rem;margin:0 0 14px;flex:1}
.sr-home .ins .by{font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}

/* CTA */
.sr-home .cta{position:relative;overflow:hidden;border-radius:20px;border:1px solid var(--border-2);background:var(--surface);box-shadow:var(--shadow);padding:46px}
.sr-home .cta::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(90% 140% at 88% 0%,#000,transparent 70%);mask-image:radial-gradient(90% 140% at 88% 0%,#000,transparent 70%)}
.sr-home .cta-in{position:relative;z-index:1;max-width:680px}
.sr-home .cta h2{font-size:clamp(1.7rem,3.6vw,2.4rem);font-weight:800;letter-spacing:-.03em;margin:0 0 12px;color:var(--ink)}
.sr-home .cta p{color:var(--ink-2);font-size:1.06rem;margin:0 0 22px}
.sr-home .cta-actions{display:flex;gap:12px;flex-wrap:wrap}

/* motion */
@keyframes sr-beat{0%{box-shadow:0 0 0 0 currentColor}70%{box-shadow:0 0 0 6px transparent}100%{box-shadow:0 0 0 0 transparent}}
@keyframes sr-scan{0%{transform:translateY(-70px);opacity:0}12%{opacity:.9}88%{opacity:.9}100%{transform:translateY(520px);opacity:0}}
@media (prefers-reduced-motion:reduce){
  .sr-home .board-scan{display:none}
  .sr-home .st-dot,.sr-home .kev .kd,.sr-home .hero-badge .st-dot{animation:none}
}

/* responsive */
@media (max-width:960px){
  .sr-home .hero-inner{grid-template-columns:1fr;gap:34px;padding:52px 0 56px}
  .sr-home .board{order:-1}
  .sr-home .feats{grid-template-columns:1fr 1fr}
  .sr-home .ins-grid{grid-template-columns:1fr}
}
@media (max-width:820px){
  .sr-home .trustrip{grid-template-columns:1fr 1fr}
  .sr-home .paths{grid-template-columns:1fr}
  .sr-home .steps{grid-template-columns:1fr;gap:16px}
  .sr-home .steps.arrowed .step:not(:last-child)::after{display:none}
}
@media (max-width:560px){
  .sr-home .feats{grid-template-columns:1fr}
  .sr-home .trustrip{grid-template-columns:1fr}
  .sr-home .cta{padding:30px}
  .sr-home .st-scroll{display:none}
  .sr-home table.cve .desc{display:none}
}


/* ============================================================
   "Situation Room" CVE detail page (Phase 2). Scoped to .sr-cve.
   Tokens + sr-beat keyframe are already defined globally (Phase 0/1).
   ============================================================ */
.sr-cve{padding:6px 0 8px}

/* breadcrumb */
.sr-cve .cve-crumb{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.76rem;color:var(--ink-3);margin:4px 0 18px}
.sr-cve .cve-crumb a{color:var(--ink-2)}
.sr-cve .cve-crumb a:hover{color:var(--signal-2);text-decoration:none}
.sr-cve .cve-crumb .cur{color:var(--ink)}

/* KEV banner */
.sr-cve .kev-banner{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;margin:0 0 22px;background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 34%,transparent)}
.sr-cve .kev-banner svg{width:20px;height:20px;color:var(--kev);flex:none;margin-top:1px}
.sr-cve .kev-banner div{font-size:.92rem;color:var(--ink-2);line-height:1.5}
.sr-cve .kev-banner b{color:var(--kev)}

/* header */
.sr-cve .cve-hero{margin:0 0 22px}
.sr-cve .tech-chip{display:inline-flex;align-items:center;gap:11px;margin-bottom:14px}
.sr-cve .tech-txt{display:flex;flex-direction:column;line-height:1.25}
.sr-cve .tech-txt b{color:var(--ink);font-size:.95rem}
.sr-cve .tech-txt small{color:var(--ink-3);font-size:.78rem}
.sr-cve .cve-id{font-family:var(--mono);font-weight:700;font-size:clamp(1.6rem,3.4vw,2.6rem);letter-spacing:-.02em;color:var(--ink);margin:0 0 12px;white-space:nowrap}
.sr-cve .cve-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px}

/* logo tile (shared by header chip + affected-tech cards) */
.sr-cve .tech-logo{width:34px;height:34px;flex:none;border-radius:9px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;color:var(--ink-2)}
.sr-cve .tech-logo svg{width:19px;height:19px}
.sr-cve .tech-logo .tl-img{border-radius:5px;display:block}
.sr-cve .tech-logo.sm{width:30px;height:30px;border-radius:8px}
.sr-cve .tech-logo.sm svg{width:17px;height:17px}

/* severity chip + KEV pill (scoped) */
.sr-cve .sev{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.74rem;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap;border:1px solid transparent}
.sr-cve .sev-critical{background:color-mix(in srgb,var(--sev-critical) 15%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
.sr-cve .sev-high{background:color-mix(in srgb,var(--sev-high) 15%,transparent);color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 35%,transparent)}
.sr-cve .sev-medium{background:color-mix(in srgb,var(--sev-medium) 16%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 36%,transparent)}
.sr-cve .sev-low{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 35%,transparent)}
.sr-cve .sev .v{font-family:var(--mono);font-weight:600;font-size:.62rem;opacity:.85;letter-spacing:.02em}
.sr-cve .badge{font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 9px;border-radius:999px;border:1px solid var(--border-2);color:var(--ink-2)}
.sr-cve .badge.dev{color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 38%,transparent);background:color-mix(in srgb,var(--sev-high) 12%,transparent)}
.sr-cve .kev{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--kev);background:color-mix(in srgb,var(--kev) 13%,transparent);border:1px solid color-mix(in srgb,var(--kev) 38%,transparent);padding:1px 7px;border-radius:999px}
.sr-cve .kev .kd{width:6px;height:6px;border-radius:50%;background:var(--kev);animation:sr-beat 1.6s infinite}
.sr-cve .kev.sm{font-size:.6rem;padding:1px 6px;letter-spacing:.03em}

/* priority meter */
.sr-cve .pri{display:flex;gap:22px;align-items:center;padding:22px 24px;border-radius:16px;background:var(--surface);border:1px solid var(--border-2);box-shadow:var(--shadow);margin:0 0 30px;--g:var(--sev-high)}
.sr-cve .pri.grade-critical{--g:var(--sev-critical)}
.sr-cve .pri.grade-high{--g:var(--sev-high)}
.sr-cve .pri.grade-medium{--g:var(--sev-medium)}
.sr-cve .pri.grade-low{--g:var(--sev-low)}
.sr-cve .pri-score{display:flex;align-items:baseline;gap:2px;flex:none}
.sr-cve .pri-num{font-family:var(--font-display);font-weight:800;font-size:3.2rem;line-height:1;color:var(--g)}
.sr-cve .pri-max{font-family:var(--mono);font-size:.9rem;color:var(--ink-3)}
.sr-cve .pri-main{flex:1;min-width:0}
.sr-cve .pri-label{font-size:.95rem;color:var(--ink-2);margin-bottom:9px}
.sr-cve .pri-label strong{color:var(--ink)}
.sr-cve .pri-track{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.sr-cve .pri-fill{display:block;height:100%;border-radius:999px;background:var(--g)}
.sr-cve .pri-factors{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.sr-cve .fchip{font-family:var(--mono);font-size:.7rem;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid transparent}
.sr-cve .fchip.f-danger{color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 12%,transparent);border-color:color-mix(in srgb,var(--sev-critical) 34%,transparent)}
.sr-cve .fchip.f-warn{color:var(--sev-high);background:color-mix(in srgb,var(--sev-high) 12%,transparent);border-color:color-mix(in srgb,var(--sev-high) 32%,transparent)}
.sr-cve .fchip.f-good{color:var(--signal-2);background:var(--signal-weak);border-color:color-mix(in srgb,var(--signal) 32%,transparent)}

/* body grid */
.sr-cve .cve-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:34px;align-items:start}
.sr-cve .cve-main{min-width:0}
.sr-cve .cve-side{display:flex;flex-direction:column;gap:16px}

/* sections */
.sr-cve .sec{margin:0 0 30px}
.sr-cve .sec>h2{font-size:1.12rem;font-weight:700;color:var(--ink);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.sr-cve .sec p{color:var(--ink-2);margin:0 0 12px;line-height:1.62}
.sr-cve .sec p:last-child{margin-bottom:0}
.sr-cve .sec .note{font-size:.82rem}

/* mitigation + callouts */
.sr-cve .mitig{display:flex;flex-direction:column;gap:5px;padding:14px 16px;border-radius:10px;background:var(--signal-weak);border-left:3px solid var(--signal);margin:0 0 12px}
.sr-cve .mitig-k{font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--signal-2);font-weight:700}
.sr-cve .mitig-t{color:var(--ink);font-size:.92rem;line-height:1.55}
.sr-cve .callout{padding:14px 16px;border-radius:10px;font-size:.9rem;color:var(--ink-2);line-height:1.55}
.sr-cve .dev-note{background:color-mix(in srgb,var(--sev-medium) 10%,transparent);border:1px solid color-mix(in srgb,var(--sev-medium) 30%,transparent)}
.sr-cve .dev-note strong{color:var(--sev-high)}

/* affected technology */
.sr-cve .tech-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.sr-cve .tech-card{display:flex;align-items:center;gap:11px;padding:12px 14px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}
.sr-cve .tc-txt{display:flex;flex-direction:column;min-width:0}
.sr-cve .tc-txt b{color:var(--ink);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-cve .tc-txt small{color:var(--ink-3);font-size:.76rem}

/* weakness */
.sr-cve .cwe-list{display:flex;flex-wrap:wrap;gap:10px}
.sr-cve .cwe-chip{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface);color:var(--ink)}
.sr-cve .cwe-chip:hover{border-color:var(--signal);text-decoration:none}
.sr-cve .cwe-id{font-family:var(--mono);font-weight:700;font-size:.8rem;color:var(--signal-2)}
.sr-cve .cwe-name{font-size:.85rem;color:var(--ink-2)}

/* CVSS breakdown */
.sr-cve .vector-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin:0 0 12px}
.sr-cve .vec-cell{background:var(--surface);padding:12px 14px}
.sr-cve .vec-cell dt{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:0 0 3px}
.sr-cve .vec-cell dd{margin:0;color:var(--ink);font-size:.92rem;font-weight:600}
.sr-cve .vec-raw{font-size:.8rem;color:var(--ink-3);word-break:break-all;margin:0}

/* references */
.sr-cve .ref-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sr-cve .ref-list li{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);min-height:44px}
.sr-cve .ref-list li a{flex:1 1 auto;min-width:0;color:var(--ink);font-family:var(--mono);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-cve .ref-list li a:hover{color:var(--signal-2)}
.sr-cve .ref-list li.ref-primary{border-color:var(--border-2);background:var(--surface-2)}
.sr-cve .ref-ic{width:26px;height:26px;flex:none;border-radius:7px;display:grid;place-items:center}
.sr-cve .ref-ic svg{width:15px;height:15px}
.sr-cve .ref-ic.ref-patch{color:var(--signal-2);background:var(--signal-weak)}
.sr-cve .ref-ic.ref-exploit{color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 12%,transparent)}
.sr-cve .ref-tag{font-family:var(--mono);font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:999px;border:1px solid var(--border-2);color:var(--ink-3);white-space:nowrap}
.sr-cve .ref-tag.ref-patch{color:var(--signal-2);border-color:color-mix(in srgb,var(--signal) 34%,transparent);background:var(--signal-weak)}
.sr-cve .ref-tag.ref-exploit{color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 34%,transparent);background:color-mix(in srgb,var(--sev-critical) 10%,transparent)}
.sr-cve .ref-tag.ref-vendor{color:var(--ink-2)}

/* aside cards */
.sr-cve .side-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}
.sr-cve .side-card h3{font-size:1rem;font-weight:700;color:var(--ink);margin:0 0 14px}
.sr-cve .facts{display:flex;flex-direction:column}
.sr-cve .facts>div{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid var(--border)}
.sr-cve .facts>div:first-child{border-top:0}
.sr-cve .facts dt{color:var(--ink-3);font-size:.82rem}
.sr-cve .facts dd{margin:0;color:var(--ink);font-size:.86rem;text-align:right;display:flex;align-items:center;gap:7px}
.sr-cve .dot-sev{width:9px;height:9px;border-radius:50%;flex:none;background:var(--ink-3)}
.sr-cve .dot-sev.sev-critical{background:var(--sev-critical)}
.sr-cve .dot-sev.sev-high{background:var(--sev-high)}
.sr-cve .dot-sev.sev-medium{background:var(--sev-medium)}
.sr-cve .dot-sev.sev-low{background:var(--sev-low)}
.sr-cve .grade-tone-critical{color:var(--sev-critical)}
.sr-cve .grade-tone-high{color:var(--sev-high)}
.sr-cve .grade-tone-medium{color:var(--sev-medium)}
.sr-cve .grade-tone-low{color:var(--sev-low)}

/* hire / remediation CTA card */
.sr-cve .hire-card{position:relative;overflow:hidden;border-color:var(--border-2);padding-top:22px}
.sr-cve .hire-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--signal),var(--signal-2))}
.sr-cve .hc-eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;font-size:.64rem;font-weight:700;color:var(--signal-2);display:block;margin-bottom:6px}
.sr-cve .hire-card h3{margin:0 0 12px}
.sr-cve .hc-lead{color:var(--ink-2);font-size:.9rem;margin:0 0 4px}
.sr-cve .quote-teaser{display:flex;flex-direction:column;margin:4px 0 12px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.sr-cve .qt-row{display:flex;justify-content:space-between;gap:12px;padding:10px 13px;font-size:.86rem;color:var(--ink-2);border-top:1px solid var(--border)}
.sr-cve .qt-row:first-child{border-top:0}
.sr-cve .qt-row b{color:var(--ink)}
.sr-cve .qt-price{background:var(--signal-weak)}
.sr-cve .qt-price b{color:var(--signal-2)}
.sr-cve .hire-card .btn{margin:4px 0 10px}
.sr-cve .hire-card p.small{font-size:.78rem;margin:0}

/* related */
.sr-cve .related-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column}
.sr-cve .related-list li{display:flex;align-items:center;gap:9px;padding:9px 0;border-top:1px solid var(--border)}
.sr-cve .related-list li:first-child{border-top:0}
.sr-cve .related-list li a{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-family:var(--mono);font-size:.82rem}
.sr-cve .related-list li a:hover{color:var(--signal-2)}
.sr-cve .rc-all{font-family:var(--mono);font-size:.8rem;color:var(--signal-2)}

/* motion + responsive */
@media (prefers-reduced-motion:reduce){ .sr-cve .kev .kd{animation:none} }
@media (max-width:960px){
  .sr-cve .cve-grid{grid-template-columns:1fr;gap:26px}
  .sr-cve .cve-side{order:-1}
}
@media (max-width:560px){
  .sr-cve .pri{flex-direction:column;align-items:flex-start;gap:14px}
  .sr-cve .pri-num{font-size:2.6rem}
}


/* ============================================================
   "Situation Room" browse + search (Phase 3).
   Shared row primitives under .sr-list; browse-only chrome under
   .sr-browse; search tweaks under .sr-search. Tokens are global.
   ============================================================ */
.sr-list{padding:6px 0 8px}
.sr-list .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-list .faint{color:var(--ink-3)}

/* page heads */
.sr-browse .b-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:2px 0 22px}
.sr-browse .b-head h1,.sr-search .s-head h1{font-size:clamp(1.5rem,3vw,2rem);font-weight:700;margin:6px 0 0;color:var(--ink)}
.sr-browse .b-count{font-family:var(--mono);font-size:.8rem;color:var(--ink-3);white-space:nowrap}
.sr-browse .b-count b{color:var(--ink-2)}
.sr-search .s-head{margin:2px 0 18px}

/* severity chip + KEV pill (scoped, shared) */
.sr-list .sev{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.72rem;font-weight:700;padding:3px 8px;border-radius:6px;white-space:nowrap;border:1px solid transparent}
.sr-list .sev-critical{background:color-mix(in srgb,var(--sev-critical) 15%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
.sr-list .sev-high{background:color-mix(in srgb,var(--sev-high) 15%,transparent);color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 35%,transparent)}
.sr-list .sev-medium{background:color-mix(in srgb,var(--sev-medium) 16%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 36%,transparent)}
.sr-list .sev-low{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 35%,transparent)}
.sr-list .sev-na{background:var(--surface-2);color:var(--ink-3);border-color:var(--border)}
.sr-list .kev{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--kev);background:color-mix(in srgb,var(--kev) 13%,transparent);border:1px solid color-mix(in srgb,var(--kev) 38%,transparent);padding:1px 6px;border-radius:999px}
.sr-list .kev .kd{width:5px;height:5px;border-radius:50%;background:var(--kev);animation:sr-beat 1.6s infinite}

/* result rows (shared) */
.sr-list .res-list{display:flex;flex-direction:column;gap:10px}
.sr-list .res-row{display:grid;grid-template-columns:104px minmax(0,1fr) 158px 104px;gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.sr-list .res-row:hover{border-color:var(--border-2);box-shadow:var(--shadow);transform:translateY(-1px);text-decoration:none}
.sr-list .rr-sev{display:flex}
.sr-list .rr-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.sr-list .rr-id{font-family:var(--mono);font-weight:700;font-size:.9rem;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sr-list .rr-desc{color:var(--ink-2);font-size:.86rem;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sr-list .rr-tech{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.78rem;color:var(--ink-2);min-width:0}
.sr-list .rr-tech .tm-logo{width:20px;height:20px;flex:none;border-radius:5px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;overflow:hidden}
.sr-list .rr-tech .tm-logo img{display:block;border-radius:3px}
.sr-list .rr-date{font-family:var(--mono);font-size:.76rem;color:var(--ink-3);white-space:nowrap;text-align:right}

/* empty state (shared) */
.sr-list .empty-state{border:1px dashed var(--border-2);border-radius:14px;background:var(--surface);padding:34px;text-align:center;color:var(--ink-2)}
.sr-list .empty-state a{color:var(--signal-2)}

/* ---- browse layout + filters rail ---- */
.sr-browse .layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:28px;align-items:start}
.sr-browse .filters{position:sticky;top:82px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px}
.sr-browse .fgroup{margin-bottom:15px}
.sr-browse .flabel{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:.66rem;font-weight:600;color:var(--ink-3);margin-bottom:6px}
.sr-browse .fq-wrap{position:relative;display:flex;align-items:center}
.sr-browse .fq-wrap svg{position:absolute;left:12px;width:15px;height:15px;color:var(--ink-3);pointer-events:none}
.sr-browse .fq{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:9px 12px 9px 34px;color:var(--ink);font-family:var(--mono);font-size:.84rem}
.sr-browse .fq::placeholder{color:var(--ink-3)}
.sr-browse .fq:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-browse select{appearance:none;-webkit-appearance:none;width:100%;background-color:var(--surface-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a95a0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:14px;border:1px solid var(--border);border-radius:9px;padding:9px 34px 9px 12px;color:var(--ink);font-family:var(--sans);font-size:.88rem;cursor:pointer}
.sr-browse select:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-browse .kev-toggle{display:flex;align-items:center;gap:9px;margin:4px 0 16px;color:var(--ink);font-size:.86rem;cursor:pointer}
.sr-browse .kev-toggle input{width:16px;height:16px;accent-color:var(--signal);cursor:pointer;flex:none}
.sr-browse .factions{display:flex;flex-direction:column;align-items:center;gap:10px}
.sr-browse .fb-clear{font-family:var(--mono);font-size:.76rem;color:var(--ink-3)}
.sr-browse .fb-clear:hover{color:var(--signal-2)}

/* vendor facet chips */
.sr-browse .vendor-facet{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 18px}
.sr-browse .vf-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;color:var(--ink-3);margin-right:2px}
.sr-browse .vf-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface);font-family:var(--mono);font-size:.76rem;color:var(--ink-2)}
.sr-browse .vf-chip:hover{border-color:var(--signal);color:var(--ink);text-decoration:none}
.sr-browse .vf-chip.on{border-color:var(--signal);background:var(--signal-weak);color:var(--signal-2)}
.sr-browse .vf-c{font-size:.7rem;color:var(--ink-3);background:var(--surface-2);border-radius:999px;padding:0 6px}
.sr-browse .vf-chip.on .vf-c{color:var(--signal-2)}

/* pager */
.sr-browse .pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:24px}
.sr-browse .pg-btn{font-family:var(--sans);font-size:.86rem;font-weight:600;padding:8px 16px;border:1px solid var(--border-2);border-radius:9px;background:var(--surface);color:var(--ink)}
.sr-browse .pg-btn:hover{border-color:var(--signal);color:var(--signal-2);text-decoration:none}
.sr-browse .pg-btn.disabled{color:var(--ink-3);border-color:var(--border);pointer-events:none;opacity:.6}
.sr-browse .pg-info{font-family:var(--mono);font-size:.8rem;color:var(--ink-3)}

/* ---- search page ---- */
.sr-search .big-search{display:flex;align-items:center;gap:6px;max-width:640px;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;padding:6px 6px 6px 16px;box-shadow:var(--shadow);margin:0 0 18px}
.sr-search .big-search:focus-within{border-color:var(--signal);box-shadow:0 0 0 4px var(--signal-weak)}
.sr-search .big-search svg{width:18px;height:18px;color:var(--ink-3);flex:none}
.sr-search .big-search input{flex:1;min-width:0;border:0;outline:none;background:none;color:var(--ink);font-family:var(--mono);font-size:.95rem;padding:11px 8px}
.sr-search .big-search input::placeholder{color:var(--ink-3)}
.sr-search .s-hint,.sr-search .s-count{font-size:.9rem}
.sr-search .s-count b{color:var(--ink)}
.sr-search .res-row{grid-template-columns:104px minmax(0,1fr)}

/* ---- responsive ---- */
@media (prefers-reduced-motion:reduce){ .sr-list .kev .kd{animation:none} }
@media (max-width:900px){
  .sr-browse .layout{grid-template-columns:1fr;gap:20px}
  .sr-browse .filters{position:static}
}
@media (max-width:720px){
  .sr-list .res-row{grid-template-columns:auto minmax(0,1fr)}
  .sr-list .rr-tech,.sr-list .rr-date{display:none}
}


/* ============================================================
   "Situation Room" funnels (Phase 4): apply wizard (.sr-apply) +
   consultation lead form (.sr-form). Wizard markup/JS hooks are
   unchanged — this is a scoped reskin. Tokens are global.
   ============================================================ */

/* ---- shared form fields (both scopes) ---- */
.sr-apply input[type="text"],.sr-apply input[type="email"],.sr-apply input[type="url"],.sr-apply textarea,.sr-apply select,
.sr-form input[type="email"],.sr-form input[type="text"],.sr-form textarea,.sr-form select{
  width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;
  padding:10px 12px;color:var(--ink);font-family:var(--sans);font-size:.92rem}
.sr-apply input:focus,.sr-apply textarea:focus,.sr-apply select:focus,
.sr-form input:focus,.sr-form textarea:focus,.sr-form select:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-apply textarea,.sr-form textarea{resize:vertical;min-height:92px;line-height:1.5}
.sr-apply input::placeholder,.sr-apply textarea::placeholder,.sr-form input::placeholder,.sr-form textarea::placeholder{color:var(--ink-3)}
.sr-apply select,.sr-form select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a95a0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:14px;padding-right:34px;cursor:pointer}
.sr-apply input[readonly]{background:var(--surface-3);color:var(--ink-2);cursor:not-allowed}

/* ================= CONSULTATION LEAD FORM (.sr-form) ================= */
.sr-form{padding:6px 0 8px}
.sr-form .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-form .f-head{margin:2px 0 16px}
.sr-form .f-head h1{font-size:clamp(1.5rem,3vw,2rem);font-weight:700;margin:6px 0 0;color:var(--ink)}
.sr-form .form-wrap{max-width:560px}
.sr-form .f-lead{color:var(--ink-2);font-size:.98rem;line-height:1.6;margin:0 0 18px}
.sr-form .form-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:560px}
.sr-form .fld{margin-bottom:16px}
.sr-form .fld label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.sr-form .re-chip{display:inline-block;font-family:var(--mono);font-size:.8rem;color:var(--signal-2);background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 30%,transparent);border-radius:999px;padding:5px 12px;margin-bottom:16px}
.sr-form .re-chip strong{color:var(--signal-2)}
.sr-form .form-note.err{background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 32%,transparent);border-radius:10px;padding:12px 14px;margin-bottom:16px;color:var(--kev);font-size:.88rem}
.sr-form .form-card .btn{margin-top:4px}
.sr-form .f-fine{font-size:.78rem;color:var(--ink-3);margin:10px 0 0}
.sr-form .success{text-align:center;max-width:520px}
.sr-form .sc-icon{width:52px;height:52px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;color:var(--signal-ink);background:var(--signal-2)}
.sr-form .sc-icon svg{width:26px;height:26px}
.sr-form .success h2{font-size:1.3rem;margin:0 0 10px;color:var(--ink)}
.sr-form .success p{color:var(--ink-2);margin:0 0 18px}

/* ================= APPLY / ROSTER (.sr-apply) ================= */
.sr-apply .kicker{font-weight:500}

/* hero */
.sr-apply .apply-hero{padding:32px 0 10px}
.sr-apply .apply-hero h1{font-size:clamp(2rem,4.5vw,3rem);font-weight:800;letter-spacing:-.03em;margin:12px 0 16px;color:var(--ink)}
.sr-apply .lede{color:var(--ink-2);font-size:1.12rem;line-height:1.6;max-width:640px;margin:0 0 24px}
.sr-apply .apply-hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 22px}
.sr-apply .hero-trust{list-style:none;display:flex;flex-wrap:wrap;gap:9px 20px;padding:0;margin:0}
.sr-apply .hero-trust li{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:.85rem}
.sr-apply .chk{width:15px;height:15px;flex:none;border-radius:50%;background:var(--signal-weak);position:relative}
.sr-apply .chk::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid var(--signal-2);border-width:0 2px 2px 0;transform:rotate(45deg)}

/* marketing blocks */
.sr-apply .apply-block{padding:44px 0;border-top:1px solid var(--border)}
.sr-apply .section-intro{max-width:640px;margin:0 0 26px}
.sr-apply .section-intro h2{font-size:clamp(1.5rem,3vw,2rem);font-weight:700;margin:8px 0 8px;color:var(--ink)}
.sr-apply .section-intro p{color:var(--ink-2);margin:0}
.sr-apply .feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sr-apply .feat{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:22px}
.sr-apply .feat .fi{width:42px;height:42px;display:grid;place-items:center;border-radius:11px;margin-bottom:14px;background:var(--signal-weak);color:var(--signal-2)}
.sr-apply .feat .fi svg{width:21px;height:21px}
.sr-apply .feat h3{font-size:1.02rem;font-weight:700;margin:0 0 6px;color:var(--ink)}
.sr-apply .feat p{color:var(--ink-2);font-size:.9rem;line-height:1.55;margin:0}
.sr-apply .stepper{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.sr-apply .step{position:relative}
.sr-apply .step .num{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;color:var(--signal-ink);background:var(--signal-2);margin-bottom:12px}
.sr-apply .step h3{font-size:1rem;font-weight:700;margin:0 0 6px;color:var(--ink)}
.sr-apply .step p{color:var(--ink-2);font-size:.88rem;margin:0}
.sr-apply .look-for{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;max-width:760px}
.sr-apply .look-for li{display:flex;gap:11px;align-items:flex-start;color:var(--ink);font-size:.95rem}
.sr-apply .lf-i{color:var(--signal-2);font-weight:800;flex:none}
.sr-apply .faq{display:flex;flex-direction:column;gap:10px;max-width:760px}
.sr-apply .faq details{border:1px solid var(--border);border-radius:11px;background:var(--surface);padding:0 16px}
.sr-apply .faq summary{cursor:pointer;padding:14px 0;font-weight:600;color:var(--ink);list-style:none}
.sr-apply .faq summary::-webkit-details-marker{display:none}
.sr-apply .faq details[open] summary{border-bottom:1px solid var(--border)}
.sr-apply .faq details p{color:var(--ink-2);font-size:.9rem;padding:12px 0;margin:0}

/* notices + gate + status */
.sr-apply .notice{border-radius:11px;padding:14px 16px;margin:0 0 18px;font-size:.9rem;color:var(--ink-2)}
.sr-apply .notice.err{background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 32%,transparent);color:var(--ink)}
.sr-apply .notice.err strong{color:var(--kev)}
.sr-apply .notice.err ul{margin:8px 0 0;padding-left:18px}
.sr-apply .notice.ok{background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 32%,transparent)}
.sr-apply .signin-gate,.sr-apply .apply-status{text-align:center;max-width:540px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px 28px}
.sr-apply .sg-icon{width:52px;height:52px;margin:0 auto 16px;border-radius:14px;display:grid;place-items:center;background:var(--signal-weak);color:var(--signal-2)}
.sr-apply .sg-icon svg{width:26px;height:26px}
.sr-apply .signin-gate h3,.sr-apply .apply-status h3{font-size:1.25rem;margin:0 0 10px;color:var(--ink)}
.sr-apply .signin-gate p{color:var(--ink-2);font-size:.92rem;margin:0 0 20px}
.sr-apply .btn-google-lg{padding:12px 22px;font-size:.95rem}
.sr-apply .as-icon{width:52px;height:52px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;font-size:1.4rem;color:var(--signal-ink);background:var(--signal-2)}
.sr-apply .apply-status p{color:var(--ink-2);margin:0}
.sr-apply .as-meta{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:16px;font-family:var(--mono);font-size:.82rem;color:var(--ink-3)}
.sr-apply .as-meta strong{color:var(--ink-2)}

/* wizard */
.sr-apply .wizard{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:820px}
.sr-apply .wz-head{margin-bottom:22px}
.sr-apply .wz-progress{height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden;margin-bottom:10px}
.sr-apply .wz-bar{display:block;height:100%;width:16.66%;border-radius:999px;background:linear-gradient(90deg,var(--signal),var(--signal-2));transition:width .3s ease}
.sr-apply .wz-label{font-family:var(--mono);font-size:.8rem;color:var(--ink-3)}
.sr-apply .wz-step-now{color:var(--signal-2);font-weight:700}
.sr-apply .wz-step-title{color:var(--ink-2)}
.sr-apply .wz-step{border:0;padding:0;margin:0;min-width:0}
.sr-apply .wizard.js-on .wz-step{display:none}
.sr-apply .wizard.js-on .wz-step.active{display:block}
.sr-apply .wz-step h3{font-size:1.15rem;font-weight:700;margin:0 0 16px;color:var(--ink)}
.sr-apply .step-intro{color:var(--ink-2);font-size:.9rem;margin:-8px 0 16px}
.sr-apply .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
.sr-apply .grid-2 .col-2{grid-column:1 / -1}
.sr-apply label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2)}
.sr-apply .grid-2>label{margin-bottom:0}
.sr-apply .block-label{display:block;margin-bottom:16px}
.sr-apply label>input,.sr-apply label>select,.sr-apply label>textarea{margin-top:6px}
.sr-apply .req-star{color:var(--sev-critical);font-weight:700}
.sr-apply .opt{color:var(--ink-3);font-weight:400;font-size:.9em}
.sr-apply .hint{display:block;font-size:.72rem;color:var(--ink-3);margin-top:5px;font-weight:400}
.sr-apply .field-group{margin-bottom:16px}
.sr-apply .fg-label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2);margin-bottom:10px}
.sr-apply .chip-checks{display:flex;flex-wrap:wrap;gap:9px}
.sr-apply .chip-check{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border:1px solid var(--border-2);border-radius:999px;cursor:pointer;font-size:.84rem;font-weight:500;color:var(--ink);background:var(--surface)}
.sr-apply .chip-check input{width:15px;height:15px;accent-color:var(--signal);flex:none}
.sr-apply .chip-check:has(input:checked){border-color:var(--signal);background:var(--signal-weak);color:var(--signal-2)}
.sr-apply .fg-error{color:var(--sev-critical);font-size:.8rem;margin-top:8px}
.sr-apply .quiz{display:flex;flex-direction:column;gap:18px}
.sr-apply .qq-text{font-size:.95rem;color:var(--ink);margin:0 0 10px;display:flex;gap:9px;align-items:baseline}
.sr-apply .qq-n{width:22px;height:22px;flex:none;border-radius:6px;background:var(--surface-3);color:var(--ink-2);font-family:var(--mono);font-size:.76rem;font-weight:700;display:inline-grid;place-items:center}
.sr-apply .qq-opts{display:flex;flex-direction:column;gap:8px;padding-left:31px}
.sr-apply .qq-opt{display:flex;align-items:center;gap:10px;padding:10px 13px;border:1px solid var(--border);border-radius:9px;cursor:pointer;font-size:.88rem;color:var(--ink);background:var(--surface)}
.sr-apply .qq-opt input{accent-color:var(--signal);flex:none}
.sr-apply .qq-opt:has(input:checked){border-color:var(--signal);background:var(--signal-weak)}
.sr-apply .assess-code-wrap{border:1px solid var(--border);border-radius:11px;overflow:hidden;margin-bottom:16px;background:var(--surface-3)}
.sr-apply .acw-head{padding:9px 14px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:.76rem;color:var(--ink-3);background:var(--surface-2)}
.sr-apply .acw-lang{color:var(--signal-2);font-weight:700}
.sr-apply .assess-code{margin:0;padding:14px 16px;overflow:auto;font-family:var(--mono);font-size:.82rem;line-height:1.55;color:var(--ink)}
.sr-apply .assess-code code{background:none;padding:0;color:inherit;font-size:inherit}
.sr-apply .mono-area{font-family:var(--mono);font-size:.85rem}
.sr-apply .wz-review{font-size:.88rem;color:var(--ink-2)}
.sr-apply .wz-review p{margin:0}
.sr-apply .wz-nav{display:flex;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border);justify-content:flex-end}
.sr-apply .wz-back{margin-right:auto}
.sr-apply .invalid{border-color:var(--sev-critical) !important;box-shadow:0 0 0 3px color-mix(in srgb,var(--sev-critical) 18%,transparent) !important}

/* responsive */
@media (max-width:820px){
  .sr-apply .feat-grid{grid-template-columns:1fr 1fr}
  .sr-apply .stepper{grid-template-columns:1fr 1fr;gap:18px}
}
@media (max-width:560px){
  .sr-apply .feat-grid,.sr-apply .stepper,.sr-apply .grid-2{grid-template-columns:1fr}
  .sr-apply .apply-hero-cta .btn{width:100%}
}


/* ---- CSP-safe helpers (no inline styles) ---- */
/* priority-meter fill widths in 5% steps (used by .sr-cve .pri-fill) */
.pw-0{width:0%}.pw-5{width:5%}.pw-10{width:10%}.pw-15{width:15%}.pw-20{width:20%}.pw-25{width:25%}.pw-30{width:30%}.pw-35{width:35%}.pw-40{width:40%}.pw-45{width:45%}.pw-50{width:50%}.pw-55{width:55%}.pw-60{width:60%}.pw-65{width:65%}.pw-70{width:70%}.pw-75{width:75%}.pw-80{width:80%}.pw-85{width:85%}.pw-90{width:90%}.pw-95{width:95%}.pw-100{width:100%}
/* home 'Latest CVEs' header (replaces former inline styles) */
.sr-home .tbl-head .section-head{margin-bottom:0}
.sr-home .tbl-head .section-head h2{margin-bottom:0}
.sr-home .tbl-head > a{font-size:.82rem}


/* ============================================================
   "Situation Room" insights (Phase 5): index (.sr-insights) +
   article (.sr-article) with a full .prose layer for the rendered
   Markdown. Tokens are global; nothing here leaks to other pages.
   ============================================================ */
.sr-insights,.sr-article{padding:6px 0 8px}
.sr-insights .eyebrow,.sr-article .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}

/* ---- index ---- */
.sr-insights .ins-head{max-width:720px;margin:8px 0 30px}
.sr-insights .ins-head h1{font-size:clamp(1.9rem,4vw,2.6rem);font-weight:800;letter-spacing:-.03em;margin:10px 0 12px;color:var(--ink)}
.sr-insights .ins-head .lede{color:var(--ink-2);font-size:1.1rem;line-height:1.6;margin:0}
.sr-insights .empty-state{border:1px dashed var(--border-2);border-radius:14px;background:var(--surface);padding:34px;text-align:center;color:var(--ink-2);max-width:820px}
.sr-insights .ins-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:14px;max-width:820px}
.sr-insights .ins-card{display:block;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:22px 24px;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.sr-insights .ins-card:hover{border-color:var(--border-2);box-shadow:var(--shadow);transform:translateY(-2px);text-decoration:none}
.sr-insights .ic-tag{display:inline-block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:.66rem;font-weight:700;color:var(--signal-2)}
.sr-insights .ins-card h2{font-size:1.3rem;font-weight:700;margin:8px 0 8px;color:var(--ink);letter-spacing:-.01em}
.sr-insights .ic-sum{color:var(--ink-2);font-size:.96rem;line-height:1.55;margin:0 0 14px}
.sr-insights .ic-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sr-insights .ic-by{font-family:var(--mono);font-size:.78rem;color:var(--ink-3)}
.sr-insights .ic-more{font-family:var(--mono);font-size:.8rem;color:var(--signal-2);font-weight:600}

/* ---- article ---- */
.sr-article{max-width:760px;margin-left:auto;margin-right:auto}
.sr-article .art-crumb{font-family:var(--mono);font-size:.78rem;margin:4px 0 18px}
.sr-article .art-crumb a{color:var(--ink-2)}
.sr-article .art-crumb a:hover{color:var(--signal-2);text-decoration:none}
.sr-article .art-head{margin:0 0 28px;padding-bottom:24px;border-bottom:1px solid var(--border)}
.sr-article .art-head h1{font-size:clamp(1.9rem,4.2vw,2.8rem);font-weight:800;letter-spacing:-.03em;line-height:1.08;margin:10px 0 14px;color:var(--ink)}
.sr-article .art-by{font-family:var(--mono);font-size:.82rem;color:var(--ink-3);margin:0}

/* ---- prose (rendered Markdown) ---- */
.sr-article .prose{color:var(--ink-2);font-size:1.02rem;line-height:1.75}
.sr-article .prose > *:first-child{margin-top:0}
.sr-article .prose h2{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--ink);letter-spacing:-.02em;line-height:1.2;margin:2.2em 0 .7em}
.sr-article .prose h3{font-family:var(--font-display);font-size:1.2rem;font-weight:700;color:var(--ink);margin:1.8em 0 .6em}
.sr-article .prose h4{font-size:1.05rem;font-weight:700;color:var(--ink);margin:1.6em 0 .5em}
.sr-article .prose p{margin:0 0 1.15em}
.sr-article .prose a{color:var(--signal-2);text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,var(--signal) 40%,transparent)}
.sr-article .prose a:hover{text-decoration-color:var(--signal)}
.sr-article .prose strong{color:var(--ink);font-weight:700}
.sr-article .prose ul,.sr-article .prose ol{margin:0 0 1.15em;padding-left:1.5em}
.sr-article .prose li{margin:.4em 0}
.sr-article .prose li::marker{color:var(--ink-3)}
.sr-article .prose blockquote{margin:1.5em 0;padding:.5em 1.1em;border-left:3px solid var(--signal);background:var(--signal-weak);border-radius:0 8px 8px 0;color:var(--ink-2)}
.sr-article .prose blockquote p:last-child{margin-bottom:0}
.sr-article .prose code{font-family:var(--mono);font-size:.88em;background:var(--surface-2);border:1px solid var(--border);padding:.1em .4em;border-radius:5px;color:var(--ink)}
.sr-article .prose pre{margin:1.5em 0;padding:16px 18px;background:var(--surface-3);border:1px solid var(--border);border-radius:12px;overflow-x:auto;line-height:1.55}
.sr-article .prose pre code{background:none;border:0;padding:0;font-size:.85rem;color:var(--ink)}
.sr-article .prose hr{border:0;border-top:1px solid var(--border);margin:2.4em 0}
.sr-article .prose img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--border);margin:1.2em 0}
.sr-article .prose table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.92rem}
.sr-article .prose th,.sr-article .prose td{border:1px solid var(--border);padding:8px 12px;text-align:left}
.sr-article .prose th{background:var(--surface-2);color:var(--ink);font-weight:600}

/* ---- tags + CTA ---- */
.sr-article .art-tags{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 0;padding-top:24px;border-top:1px solid var(--border)}
.sr-article .art-tags .tag{font-family:var(--mono);font-size:.72rem;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:4px 11px}
.sr-article .art-cta{position:relative;overflow:hidden;margin:32px 0 0;border:1px solid var(--border-2);border-radius:16px;background:var(--surface);padding:26px;padding-top:28px}
.sr-article .art-cta::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--signal),var(--signal-2))}
.sr-article .art-cta h3{font-size:1.15rem;font-weight:700;color:var(--ink);margin:0 0 8px}
.sr-article .art-cta p{color:var(--ink-2);font-size:.95rem;line-height:1.6;margin:0 0 16px}


/* ============================================================
   "Situation Room" operator console (Phase 6). The console runs
   DARK (data-theme="dark" on its own <html>); the base admin CSS is
   token-based, so this block refines the look to match the rest of
   the site. Everything is scoped to body.console. Invoice printing
   is handled by the existing @media print block.
   ============================================================ */
body.console .admin-header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid var(--border)}
body.console .admin-bar{display:flex;align-items:center;gap:22px;min-height:60px}
body.console .admin-brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);font-family:var(--font-display);font-weight:700;font-size:1.05rem;letter-spacing:-.02em}
body.console .admin-brand:hover{text-decoration:none}
body.console .admin-brand .brand-mark{width:26px;height:26px;flex:none;display:block}
body.console .admin-brand .tld{color:var(--signal)}
body.console .admin-brand .ab-tag{font-family:var(--mono);font-weight:600;font-size:.6rem;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-3);border:1px solid var(--border-2);border-radius:999px;padding:2px 8px}
body.console .admin-nav{display:flex;align-items:center;gap:2px;margin-left:auto;flex-wrap:wrap}
body.console .admin-nav a{font-family:var(--sans);font-size:.86rem;font-weight:500;color:var(--ink-2);padding:7px 11px;border-radius:8px;transition:color .15s ease,background .15s ease}
body.console .admin-nav a:hover{color:var(--ink);background:var(--surface-2);text-decoration:none}
body.console .admin-nav a.on{color:var(--signal-2);background:var(--signal-weak);font-weight:600}
body.console .admin-nav .ab-site{margin-left:6px;color:var(--ink-3)}
body.console .admin-main{padding-top:22px;padding-bottom:56px}
body.console h1{font-family:var(--font-display);font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:var(--ink);margin:0 0 18px}
body.console a{color:var(--signal-2)}
body.console .muted{color:var(--ink-2)}

/* stat cards */
body.console .stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
body.console .stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:2px}
body.console .stat .n{font-family:var(--font-display);font-weight:800;font-size:1.7rem;line-height:1.1;color:var(--ink);letter-spacing:-.02em}
body.console .stat .l{font-size:.82rem;color:var(--ink-2);font-weight:500}
body.console .stat .s{font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}
body.console .stat.warn{border-color:color-mix(in srgb,var(--sev-high) 40%,transparent);background:color-mix(in srgb,var(--sev-high) 8%,transparent)}
body.console .stat.warn .n{color:var(--sev-high)}

/* sections */
body.console .con-sec{margin:0 0 30px}
body.console .con-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border);padding-bottom:9px;margin-bottom:14px}
body.console .con-head h2{margin:0;font-size:1.08rem;font-weight:700;color:var(--ink)}
body.console .con-head a{font-family:var(--mono);font-size:.8rem;color:var(--signal-2)}
body.console .con-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}

/* funnel */
body.console .funnel{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:16px}
body.console .fn-step{border:1px solid var(--border);border-radius:9px;background:var(--surface);padding:8px 14px;font-size:.85rem;color:var(--ink-2)}
body.console .fn-step b{color:var(--ink);font-family:var(--font-display);font-weight:800;font-size:1.05rem;margin-right:6px}
body.console .fn-arrow{color:var(--ink-3)}

/* ingest bars + severity chips */
body.console .bars{display:flex;flex-direction:column;gap:6px;margin-top:12px}
body.console .bar-row{display:flex;align-items:center;gap:12px;font-size:.85rem}
body.console .bar-d{width:52px;color:var(--ink-3);font-family:var(--mono);flex:none}
body.console .bar-fill{color:var(--signal);font-family:var(--mono);letter-spacing:-2px;overflow:hidden}
body.console .bar-c{color:var(--ink);font-family:var(--mono);flex:none}
body.console .sev-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
body.console .sev{font-family:var(--mono);font-size:.76rem;font-weight:700;padding:4px 10px;border-radius:6px;border:1px solid transparent}
body.console .sev-critical{background:color-mix(in srgb,var(--sev-critical) 15%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
body.console .sev-high{background:color-mix(in srgb,var(--sev-high) 15%,transparent);color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 35%,transparent)}
body.console .sev-medium{background:color-mix(in srgb,var(--sev-medium) 16%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 36%,transparent)}
body.console .sev-low{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 35%,transparent)}

/* tables */
body.console .table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
body.console .admin-table,body.console .apps-table{width:100%;border-collapse:collapse;font-size:.86rem}
body.console .admin-table th,body.console .apps-table th{text-align:left;font-family:var(--mono);font-weight:500;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:11px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap}
body.console .admin-table td,body.console .apps-table td{padding:11px 12px;border-bottom:1px solid var(--border);color:var(--ink-2);vertical-align:top}
body.console .admin-table tr:last-child td,body.console .apps-table tr:last-child td{border-bottom:0}
body.console .admin-table tbody tr:hover,body.console .apps-table tbody tr:hover{background:var(--surface-2)}
body.console .admin-table a,body.console .apps-table a,body.console .con-tbl a{color:var(--signal-2);font-family:var(--mono)}
body.console .admin-table b{color:var(--ink)}
body.console .nowrap{white-space:nowrap}
body.console .wrap-cell{max-width:280px;white-space:normal}
body.console .con-tbl{width:100%;border-collapse:collapse;margin-top:6px;font-size:.86rem}
body.console .con-tbl th{text-align:left;color:var(--ink-3);font-family:var(--mono);font-weight:500;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;padding:7px 10px;border-bottom:1px solid var(--border)}
body.console .con-tbl td{padding:8px 10px;border-bottom:1px solid var(--border);color:var(--ink-2)}
body.console .con-tbl tr:last-child td{border-bottom:0}
body.console .row-pending td{background:color-mix(in srgb,var(--sev-high) 6%,transparent)}
body.console .row-hidden td{opacity:.55}

/* pills */
body.console .pill{display:inline-flex;align-items:center;font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 9px;border-radius:999px;border:1px solid var(--border-2);color:var(--ink-2);background:var(--surface-2);white-space:nowrap}
body.console .pill.urgent{color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 38%,transparent);background:color-mix(in srgb,var(--sev-high) 12%,transparent)}
body.console .pill.ok{color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 38%,transparent);background:color-mix(in srgb,var(--sev-low) 12%,transparent)}
body.console .pill.bad{color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 38%,transparent);background:color-mix(in srgb,var(--sev-critical) 12%,transparent)}

/* small buttons + inline forms */
body.console .btn-sm{cursor:pointer;font-family:var(--sans);font-weight:600;font-size:.78rem;padding:5px 12px;border-radius:8px;border:1px solid var(--border-2);background:var(--surface-2);color:var(--ink);transition:border-color .15s ease,background .15s ease,color .15s ease}
body.console .btn-sm:hover{border-color:var(--signal);color:var(--signal-2)}
body.console .btn-sm.go{border-color:color-mix(in srgb,var(--sev-low) 50%,transparent);color:var(--sev-low)}
body.console .btn-sm.go:hover{background:color-mix(in srgb,var(--sev-low) 12%,transparent);color:var(--sev-low)}
body.console .btn-sm.danger{border-color:color-mix(in srgb,var(--sev-critical) 50%,transparent);color:var(--sev-critical)}
body.console .btn-sm.danger:hover{background:color-mix(in srgb,var(--sev-critical) 12%,transparent);color:var(--sev-critical)}
body.console .inline-form{display:inline-flex;align-items:center;gap:6px;margin:0}
body.console .inline-form select{appearance:none;-webkit-appearance:none;background-color:var(--surface-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a95a0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:12px;border:1px solid var(--border);border-radius:8px;padding:5px 26px 5px 9px;color:var(--ink);font-family:var(--sans);font-size:.8rem;cursor:pointer}
body.console .inline-form select:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}

/* ops */
body.console .ops-cmd{font-family:var(--mono);font-size:.8rem;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:2px 7px;color:var(--ink);white-space:nowrap}
body.console code{font-family:var(--mono);font-size:.85em;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:1px 6px;color:var(--ink)}
body.console .admin-code{background:var(--surface-3);border:1px solid var(--border);border-radius:10px;padding:14px 16px;overflow-x:auto;font-family:var(--mono);font-size:.8rem;color:var(--ink);white-space:pre;margin:4px 0 12px;line-height:1.55}
body.console .facts,body.console .ops-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:6px 0 12px}
body.console .facts > div,body.console .ops-facts > div{display:block;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 13px}
body.console .facts dt,body.console .ops-facts dt{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
body.console .facts dd,body.console .ops-facts dd{margin:3px 0 0;font-size:.9rem;color:var(--ink);font-family:var(--mono)}

/* detail blocks */
body.console .admin-detail{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:12px}
body.console .admin-detail .k{display:block;font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:3px}
body.console .ad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 20px;font-size:.84rem;color:var(--ink-2);margin-bottom:12px}
body.console .ad-block{font-size:.86rem;color:var(--ink-2);margin:0 0 12px;line-height:1.5}
body.console .app-more,body.console .go{font-family:var(--mono);font-size:.8rem;color:var(--signal-2);cursor:pointer}

/* invoice (screen: dark card; print -> white via existing @media print) */
body.console .inv-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}
body.console .inv-controls{display:flex;gap:10px;align-items:center}
body.console .invoice{max-width:720px;border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:28px 32px}
body.console .inv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:1px solid var(--border);padding-bottom:16px;margin-bottom:18px}
body.console .inv-brand{font-family:var(--font-display);font-size:1.4rem;font-weight:700;color:var(--ink)}
body.console .inv-meta{text-align:right}
body.console .inv-num{font-family:var(--mono);font-size:1.05rem;color:var(--ink);margin-bottom:6px}
body.console .inv-parties{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}
body.console .inv-parties .k{display:block;font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:2px}
body.console .inv-lines{width:100%;border-collapse:collapse}
body.console .inv-lines th{text-align:left;font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:8px 10px;border-bottom:1px solid var(--border)}
body.console .inv-lines th:nth-child(n+2),body.console .inv-lines td:nth-child(n+2){text-align:right}
body.console .inv-lines td{padding:9px 10px;border-bottom:1px solid var(--border);color:var(--ink-2)}
body.console .inv-total-l{text-align:right;font-weight:600;color:var(--ink);padding-top:14px}
body.console .inv-total{text-align:right;font-family:var(--mono);font-size:1.15rem;font-weight:700;color:var(--signal-2);padding-top:14px}
body.console .inv-foot{margin-top:18px}

/* responsive */
@media (max-width:760px){ body.console .con-cols{grid-template-columns:1fr} }
@media (max-width:640px){
  body.console .admin-bar{min-height:0;flex-direction:column;align-items:flex-start;gap:10px;padding-top:12px;padding-bottom:12px}
  body.console .admin-nav{margin-left:0}
  body.console .stat-grid{grid-template-columns:1fr 1fr}
}


/* ============================================================
   Pricing page (.sr-pricing). Live estimate is driven by
   /assets/js/pricing.js; all widths use flex ratios (no inline
   styles) to stay CSP-clean. Tokens are global.
   ============================================================ */
.sr-pricing{padding:6px 0 8px}
.sr-pricing [hidden]{display:none !important}
.sr-pricing .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-pricing .section-head{display:block;max-width:660px;margin:0 0 26px}
.sr-pricing .section-head h2{font-size:clamp(1.5rem,3vw,2.05rem);font-weight:700;margin:10px 0 8px;color:var(--ink)}
.sr-pricing .section-head p{color:var(--ink-2);font-size:1.02rem;line-height:1.6;margin:0}

/* constant indicator dock */
.sr-pricing .price-dock{position:sticky;top:64px;z-index:30;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(150%) blur(12px);border-bottom:1px solid var(--border)}
.sr-pricing .pd-inner{display:flex;align-items:center;gap:16px;height:46px}
.sr-pricing .pd-where{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.78rem;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-pricing .pd-dot{width:7px;height:7px;border-radius:50%;background:var(--signal);flex:none;animation:sr-beat 2.4s infinite}
.sr-pricing .pd-range{margin-left:auto;font-family:var(--mono);font-size:.82rem;color:var(--ink-2);white-space:nowrap}
.sr-pricing .pd-range b{color:var(--ink);font-weight:700}
.sr-pricing .pd-cta{flex:none}

/* hero + spectrum */
.sr-pricing .pr-hero{padding:30px 0 12px}
.sr-pricing .pr-hero h1{font-size:clamp(2rem,4.6vw,3rem);font-weight:800;letter-spacing:-.035em;margin:12px 0 14px;color:var(--ink)}
.sr-pricing .lede{color:var(--ink-2);font-size:1.14rem;line-height:1.6;max-width:640px;margin:0 0 30px}
.sr-pricing .spectrum{border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:22px 24px;box-shadow:var(--shadow-sm)}
.sr-pricing .sp-bar{height:8px;border-radius:999px;background:linear-gradient(90deg,var(--signal),var(--sev-medium),var(--sev-high),var(--sev-critical));margin-bottom:18px}
.sr-pricing .sp-tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.sr-pricing .sp-tier{display:flex;flex-direction:column;gap:3px;position:relative;padding-left:14px}
.sr-pricing .sp-tier::before{content:"";position:absolute;left:0;top:4px;width:8px;height:8px;border-radius:50%}
.sr-pricing .sp-tier:nth-child(1)::before{background:var(--signal)}
.sr-pricing .sp-tier:nth-child(2)::before{background:var(--sev-medium)}
.sr-pricing .sp-tier:nth-child(3)::before{background:var(--sev-high)}
.sr-pricing .sp-tier:nth-child(4)::before{background:var(--sev-critical)}
.sr-pricing .sp-price{font-family:var(--font-display);font-weight:800;font-size:1.5rem;color:var(--ink);letter-spacing:-.02em;line-height:1.1}
.sr-pricing .sp-name{font-size:.9rem;font-weight:600;color:var(--ink)}
.sr-pricing .sp-desc{font-size:.82rem;color:var(--ink-3);line-height:1.5}
.sr-pricing .sp-foot{margin:14px 0 0}

/* estimator */
.sr-pricing .pr-est{padding:44px 0}
.sr-pricing .est-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
.sr-pricing .est-form{display:flex;flex-direction:column;gap:22px}
.sr-pricing .pg{border:0;margin:0;padding:0;min-width:0}
.sr-pricing .pg legend{padding:0;font-size:1rem;font-weight:700;color:var(--ink);margin-bottom:12px}
.sr-pricing .opt-note{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:.62rem;font-weight:600;color:var(--ink-3);margin-left:6px}
.sr-pricing .opt{display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border:1px solid var(--border);border-radius:11px;background:var(--surface);cursor:pointer;margin-bottom:9px;transition:border-color .15s ease,background .15s ease}
.sr-pricing .opt:hover{border-color:var(--border-2)}
.sr-pricing .opt:has(input:checked){border-color:var(--signal);background:var(--signal-weak)}
.sr-pricing .opt input{margin:2px 0 0;width:16px;height:16px;accent-color:var(--signal);flex:none;cursor:pointer}
.sr-pricing .opt-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-pricing .opt-b b{font-size:.92rem;font-weight:600;color:var(--ink)}
.sr-pricing .opt-b small{font-size:.8rem;color:var(--ink-3);line-height:1.45}

/* live price card */
.sr-pricing .price-card{position:sticky;top:122px;border:1px solid var(--border-2);border-radius:16px;background:var(--surface);box-shadow:var(--shadow);padding:22px}
.sr-pricing .pc-eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:.64rem;font-weight:700;color:var(--signal-2)}
.sr-pricing .pc-total{font-family:var(--font-display);font-weight:800;font-size:1.7rem;letter-spacing:-.02em;color:var(--ink);margin:6px 0 2px;line-height:1.15}
.sr-pricing .pc-effort{font-family:var(--mono);font-size:.78rem;color:var(--ink-3);margin-bottom:16px}
.sr-pricing .pc-effort span{color:var(--ink-2)}
.sr-pricing .pc-lines{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:11px;overflow:hidden;margin-bottom:16px}
.sr-pricing .pc-line{display:flex;justify-content:space-between;gap:12px;padding:10px 13px;font-size:.85rem;color:var(--ink-2);border-top:1px solid var(--border)}
.sr-pricing .pc-line:first-child{border-top:0}
.sr-pricing .pc-line b{color:var(--ink);font-weight:600;font-family:var(--mono);font-size:.82rem}
.sr-pricing .pc-grand{background:var(--signal-weak)}
.sr-pricing .pc-grand span{color:var(--ink);font-weight:600}
.sr-pricing .pc-grand b{color:var(--signal-2)}
.sr-pricing .pc-cta{margin-bottom:10px}
.sr-pricing .pc-note{font-size:.76rem;color:var(--ink-3);line-height:1.5;margin:0}

/* middleman / fee */
.sr-pricing .pr-fee{padding:44px 0;background:var(--bg-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sr-pricing .fee-split{border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:24px;margin:0 0 20px}
.sr-pricing .fee-bar{display:flex;height:15px;border-radius:999px;overflow:hidden;margin-bottom:18px}
.sr-pricing .fee-spec{flex:19;background:var(--signal)}
.sr-pricing .fee-plat{flex:1;background:var(--sev-high)}
.sr-pricing .fee-legend{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.sr-pricing .fl-item{display:flex;gap:11px;align-items:flex-start}
.sr-pricing .fl-key{width:14px;height:14px;border-radius:4px;flex:none;margin-top:3px}
.sr-pricing .fl-key.fl-spec{background:var(--signal)}
.sr-pricing .fl-key.fl-plat{background:var(--sev-high)}
.sr-pricing .fl-item b{display:block;font-size:.92rem;color:var(--ink);margin-bottom:3px}
.sr-pricing .fl-item small{font-size:.84rem;color:var(--ink-2);line-height:1.5}
.sr-pricing .fee-covers{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.sr-pricing .fc{display:flex;gap:11px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}
.sr-pricing .fc-i{width:22px;height:22px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--signal-weak);color:var(--signal-2);font-size:.8rem;font-weight:800;margin-top:1px}
.sr-pricing .fc b{display:block;font-size:.95rem;color:var(--ink);margin-bottom:3px}
.sr-pricing .fc small{font-size:.84rem;color:var(--ink-2);line-height:1.5}

/* faq */
.sr-pricing .pr-faq{padding:44px 0}
.sr-pricing .faq{display:flex;flex-direction:column;gap:10px;max-width:780px}
.sr-pricing .faq details{border:1px solid var(--border);border-radius:11px;background:var(--surface);padding:0 16px}
.sr-pricing .faq summary{cursor:pointer;padding:15px 0;font-weight:600;color:var(--ink);list-style:none}
.sr-pricing .faq summary::-webkit-details-marker{display:none}
.sr-pricing .faq details[open] summary{border-bottom:1px solid var(--border)}
.sr-pricing .faq details p{color:var(--ink-2);font-size:.92rem;line-height:1.6;padding:13px 0;margin:0}

/* cta */
.sr-pricing .pr-cta{padding:12px 0 8px}
.sr-pricing .cta{position:relative;overflow:hidden;border-radius:20px;border:1px solid var(--border-2);background:var(--surface);box-shadow:var(--shadow);padding:44px}
.sr-pricing .cta::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(90% 140% at 88% 0%,#000,transparent 70%);mask-image:radial-gradient(90% 140% at 88% 0%,#000,transparent 70%)}
.sr-pricing .cta-in{position:relative;z-index:1;max-width:640px}
.sr-pricing .cta h2{font-size:clamp(1.7rem,3.6vw,2.3rem);font-weight:800;letter-spacing:-.03em;margin:0 0 12px;color:var(--ink)}
.sr-pricing .cta p{color:var(--ink-2);font-size:1.04rem;line-height:1.6;margin:0 0 22px}
.sr-pricing .cta-actions{display:flex;gap:12px;flex-wrap:wrap}

/* responsive */
@media (max-width:900px){
  .sr-pricing .est-grid{grid-template-columns:1fr;gap:22px}
  .sr-pricing .price-card{position:static}
  .sr-pricing .sp-tiers{grid-template-columns:1fr 1fr;gap:18px}
}
@media (max-width:620px){
  .sr-pricing .sp-tiers,.sr-pricing .fee-legend,.sr-pricing .fee-covers{grid-template-columns:1fr}
  .sr-pricing .pd-cta{display:none}
  .sr-pricing .cta{padding:28px}
}


/* ============================================================
   Consultation / lead page (.sr-consult): header + dynamic form
   (branch fields revealed by /assets/js/consult.js) + reassurance
   panel. Tokens are global; scoped so nothing leaks.
   ============================================================ */
.sr-consult{padding:6px 0 8px}
.sr-consult [hidden]{display:none !important}
.sr-consult .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}

/* fields (shared within this scope) */
.sr-consult input[type="text"],.sr-consult input[type="email"],.sr-consult textarea,.sr-consult select{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;color:var(--ink);font-family:var(--sans);font-size:.92rem}
.sr-consult input:focus,.sr-consult textarea:focus,.sr-consult select:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-consult textarea{resize:vertical;min-height:88px;line-height:1.5}
.sr-consult input::placeholder,.sr-consult textarea::placeholder{color:var(--ink-3)}
.sr-consult select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a95a0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:14px;padding-right:34px;cursor:pointer}

/* header */
.sr-consult .cs-hero{padding:30px 0 8px}
.sr-consult .cs-hero h1{font-size:clamp(2rem,4.4vw,2.9rem);font-weight:800;letter-spacing:-.035em;margin:12px 0 14px;color:var(--ink)}
.sr-consult .lede{color:var(--ink-2);font-size:1.12rem;line-height:1.6;max-width:660px;margin:0 0 20px}
.sr-consult .cs-trust{list-style:none;display:flex;flex-wrap:wrap;gap:9px 20px;padding:0;margin:0 0 8px}
.sr-consult .cs-trust li{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:.85rem}
.sr-consult .tick{width:15px;height:15px;flex:none;border-radius:50%;background:var(--signal-weak);position:relative}
.sr-consult .tick::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid var(--signal-2);border-width:0 2px 2px 0;transform:rotate(45deg)}

/* body layout */
.sr-consult .cs-body{padding:24px 0 8px}
.sr-consult .cs-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.sr-consult .form-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px}
.sr-consult .fld{margin-bottom:16px}
.sr-consult .fld > label,.sr-consult .fld-label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.sr-consult .fld .opt{color:var(--ink-3);font-weight:400}
.sr-consult .re-chip{display:inline-block;font-family:var(--mono);font-size:.8rem;color:var(--signal-2);background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 30%,transparent);border-radius:999px;padding:5px 12px;margin-bottom:16px}
.sr-consult .re-chip strong{color:var(--signal-2)}

/* intent selector */
.sr-consult .intent-opts{display:flex;flex-direction:column;gap:9px}
.sr-consult .iopt{display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border:1px solid var(--border);border-radius:11px;background:var(--surface-2);cursor:pointer;transition:border-color .15s ease,background .15s ease}
.sr-consult .iopt:hover{border-color:var(--border-2)}
.sr-consult .iopt:has(input:checked){border-color:var(--signal);background:var(--signal-weak)}
.sr-consult .iopt input{margin:2px 0 0;width:16px;height:16px;accent-color:var(--signal);flex:none;cursor:pointer}
.sr-consult .iopt-b{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-consult .iopt-b b{font-size:.92rem;font-weight:600;color:var(--ink)}
.sr-consult .iopt-b small{font-size:.8rem;color:var(--ink-3);line-height:1.45}

/* branches + two-up row */
.sr-consult .branch{border:0;padding:0;margin:0;min-width:0}
.sr-consult .cs-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}

.sr-consult .form-note.err{background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 32%,transparent);border-radius:10px;padding:12px 14px;margin-bottom:16px;color:var(--kev);font-size:.88rem}
.sr-consult .btn-block{margin-top:4px}
.sr-consult .f-fine{font-size:.78rem;color:var(--ink-3);margin:10px 0 0}

/* reassurance panel */
.sr-consult .cs-side{position:sticky;top:82px;display:flex;flex-direction:column;gap:14px}
.sr-consult .side-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}
.sr-consult .sc-eyebrow{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:.64rem;font-weight:700;color:var(--signal-2);margin-bottom:14px}
.sr-consult .cs-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.sr-consult .cs-steps li{display:flex;gap:11px;align-items:flex-start}
.sr-consult .cs-n{width:24px;height:24px;flex:none;border-radius:7px;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:.8rem;color:var(--signal-ink);background:var(--signal-2)}
.sr-consult .cs-steps b{display:block;font-size:.9rem;color:var(--ink)}
.sr-consult .cs-steps small{font-size:.8rem;color:var(--ink-3);line-height:1.45}
.sr-consult .cs-quiet p{margin:0;font-size:.86rem;color:var(--ink-2);line-height:1.55}
.sr-consult .cs-quiet a{color:var(--signal-2)}

/* success */
.sr-consult .success{max-width:560px;text-align:center}
.sr-consult .sc-icon{width:52px;height:52px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;color:var(--signal-ink);background:var(--signal-2)}
.sr-consult .sc-icon svg{width:26px;height:26px}
.sr-consult .success h2{font-size:1.3rem;margin:0 0 10px;color:var(--ink)}
.sr-consult .success p{color:var(--ink-2);line-height:1.6;margin:0 0 18px}

/* responsive */
@media (max-width:900px){
  .sr-consult .cs-grid{grid-template-columns:1fr;gap:20px}
  .sr-consult .cs-side{position:static;order:-1}
}
@media (max-width:560px){
  .sr-consult .cs-two{grid-template-columns:1fr}
}

/* consultation: CVE summary card (shown when arriving from a CVE page) */
.sr-consult .cve-card .cc-id{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-weight:700;font-size:1rem;margin-bottom:8px}
.sr-consult .cve-card .cc-id a{color:var(--ink)}
.sr-consult .cve-card .cc-id a:hover{color:var(--signal-2);text-decoration:none}
.sr-consult .cc-meta{margin-bottom:10px}
.sr-consult .cc-desc{font-size:.86rem;color:var(--ink-2);line-height:1.55;margin:0 0 14px}
.sr-consult .cc-quote{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:10px}
.sr-consult .ccq-row{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;font-size:.84rem;color:var(--ink-2);border-top:1px solid var(--border)}
.sr-consult .ccq-row:first-child{border-top:0}
.sr-consult .ccq-row b{color:var(--ink);font-weight:600}
.sr-consult .ccq-price{background:var(--signal-weak)}
.sr-consult .ccq-price b{color:var(--signal-2)}
.sr-consult .cc-note{font-size:.76rem;color:var(--ink-3);line-height:1.5;margin:0}
/* severity chip + KEV pill within the consultation scope */
.sr-consult .sev{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap;border:1px solid transparent}
.sr-consult .sev-critical{background:color-mix(in srgb,var(--sev-critical) 15%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
.sr-consult .sev-high{background:color-mix(in srgb,var(--sev-high) 15%,transparent);color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 35%,transparent)}
.sr-consult .sev-medium{background:color-mix(in srgb,var(--sev-medium) 16%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 36%,transparent)}
.sr-consult .sev-low{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 35%,transparent)}
.sr-consult .sev-na{background:var(--surface-2);color:var(--ink-3);border-color:var(--border)}
.sr-consult .kev{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--kev);background:color-mix(in srgb,var(--kev) 13%,transparent);border:1px solid color-mix(in srgb,var(--kev) 38%,transparent);padding:1px 6px;border-radius:999px}
.sr-consult .kev .kd{width:5px;height:5px;border-radius:50%;background:var(--kev);animation:sr-beat 1.6s infinite}

/* consultation header: animated ECG signal strip + live chip (transactional feel) */
.sr-consult .cs-hero{position:relative;overflow:hidden}
.sr-consult .cs-signal{position:relative;height:38px;margin-bottom:20px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.sr-consult .cs-ecg{display:block;width:100%;height:100%;overflow:visible}
.sr-consult .ecg-base{fill:none;stroke:color-mix(in srgb,var(--signal) 24%,transparent);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.sr-consult .ecg-pulse{fill:none;stroke:var(--signal-2);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:32 968;stroke-dashoffset:1000;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--signal) 70%,transparent));animation:cs-ecg 3.4s linear infinite}
@keyframes cs-ecg{from{stroke-dashoffset:1000}to{stroke-dashoffset:0}}
.sr-consult .cs-live{display:inline-flex;align-items:center;gap:8px;background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 26%,transparent);border-radius:999px;padding:5px 12px 5px 11px}
.sr-consult .cs-live .lv-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--signal-2);animation:cs-ping 2.2s ease-out infinite}
@keyframes cs-ping{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--signal) 55%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion:reduce){
  .sr-consult .ecg-pulse{animation:none;stroke-dasharray:none;opacity:.55}
  .sr-consult .cs-live .lv-dot{animation:none}
}

/* primary nav CTA ("Get a fix") — reuses .btn colours, sized for the header */
.nav-cta{font-size:.85rem;padding:8px 14px;white-space:nowrap}
@media (max-width:820px){ .nav-cta{width:100%;justify-content:center} }


/* header refinements: wider layout has room for the nav; keep labels on one
   line, group and tidy the account area, and make reputation a real pill */
.nav-links > a{white-space:nowrap}
.user-chip{white-space:nowrap;margin-left:2px;padding-left:12px;border-left:1px solid var(--border)}
.user-chip .uc-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-chip .rep{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:.74rem;font-weight:600;color:var(--signal-2);background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 26%,transparent);border-radius:999px;padding:2px 8px 2px 6px;line-height:1}
.user-chip .rep .rep-i{width:11px;height:11px;flex:none}
.signout{white-space:nowrap}
@media (max-width:820px){ .user-chip{border-left:0;padding-left:0;margin-left:0} }


/* ============================================================
   Mission page (.sr-mission) — the story / "about" page.
   Editorial rhythm: left hero, centered story column + pull-quote,
   full-width pillar/belief grids, alternating bands. Tokens global.
   ============================================================ */
.sr-mission .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}

/* hero */
.sr-mission .ms-hero{position:relative;overflow:hidden;padding:52px 0 40px;border-bottom:1px solid var(--border)}
.sr-mission .ms-hero::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:46px 46px;-webkit-mask-image:radial-gradient(120% 130% at 15% 0%,#000,transparent 62%);mask-image:radial-gradient(120% 130% at 15% 0%,#000,transparent 62%);opacity:.7}
.sr-mission .ms-hero-in{position:relative;z-index:1;max-width:760px}
.sr-mission .ms-hero h1{font-size:clamp(2.2rem,5.4vw,3.6rem);font-weight:800;letter-spacing:-.04em;line-height:1.04;margin:14px 0 16px;color:var(--ink)}
.sr-mission .lede{color:var(--ink-2);font-size:1.2rem;line-height:1.6;margin:0}
.sr-mission .ms-hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}

/* generic section + heading */
.sr-mission .ms-section{padding:52px 0}
.sr-mission .ms-head{max-width:780px;margin:0 auto 30px;text-align:center}
.sr-mission .ms-head h2{font-size:clamp(1.6rem,3.4vw,2.35rem);font-weight:800;letter-spacing:-.03em;line-height:1.14;margin:12px 0 10px;color:var(--ink)}
.sr-mission .ms-head p{color:var(--ink-2);font-size:1.05rem;line-height:1.55;margin:0}

/* readable story column */
.sr-mission .ms-prose{max-width:720px;margin:0 auto}
.sr-mission .ms-prose p{color:var(--ink-2);font-size:1.08rem;line-height:1.75;margin:0 0 1.2em}
.sr-mission .ms-prose p:last-child{margin-bottom:0}

/* pull quote */
.sr-mission .ms-quote{max-width:820px;margin:36px auto 0;text-align:center;font-family:var(--font-display);font-weight:600;font-size:clamp(1.3rem,2.6vw,1.7rem);line-height:1.35;letter-spacing:-.02em;color:var(--ink);border:0;padding:24px 20px 0;position:relative}
.sr-mission .ms-quote::before{content:"";display:block;width:40px;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--signal),var(--signal-2));margin:0 auto 20px}

/* alt-background band */
.sr-mission .ms-band{padding:52px 0;background:var(--bg-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sr-mission .ms-two{max-width:940px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:26px}
.sr-mission .ms-two p{color:var(--ink-2);font-size:1.02rem;line-height:1.7;margin:0}

/* pillars */
.sr-mission .ms-pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;max-width:1080px;margin:0 auto}
.sr-mission .ms-pillar{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:26px 24px}
.sr-mission .mp-i{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--signal-weak);color:var(--signal-2);margin-bottom:16px}
.sr-mission .mp-i svg{width:23px;height:23px}
.sr-mission .ms-pillar h3{font-size:1.12rem;font-weight:700;color:var(--ink);margin:0 0 8px;letter-spacing:-.01em}
.sr-mission .ms-pillar p{color:var(--ink-2);font-size:.95rem;line-height:1.6;margin:0}

/* beliefs */
.sr-mission .ms-beliefs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:1080px;margin:0 auto}
.sr-mission .ms-belief{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px;border-left:3px solid var(--signal)}
.sr-mission .ms-belief h3{font-size:1rem;font-weight:700;color:var(--ink);margin:0 0 7px}
.sr-mission .ms-belief p{color:var(--ink-2);font-size:.92rem;line-height:1.58;margin:0}

/* cta */
.sr-mission .ms-cta{position:relative;overflow:hidden;border-radius:20px;border:1px solid var(--border-2);background:var(--surface);box-shadow:var(--shadow);padding:48px;text-align:center}
.sr-mission .ms-cta::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(90% 130% at 50% 0%,#000,transparent 72%);mask-image:radial-gradient(90% 130% at 50% 0%,#000,transparent 72%)}
.sr-mission .ms-cta-in{position:relative;z-index:1;max-width:640px;margin:0 auto}
.sr-mission .ms-cta h2{font-size:clamp(1.7rem,3.6vw,2.3rem);font-weight:800;letter-spacing:-.03em;margin:0 0 12px;color:var(--ink)}
.sr-mission .ms-cta p{color:var(--ink-2);font-size:1.05rem;line-height:1.6;margin:0 0 22px}
.sr-mission .ms-cta-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}

/* responsive */
@media (max-width:820px){
  .sr-mission .ms-pillars,.sr-mission .ms-beliefs{grid-template-columns:1fr 1fr}
  .sr-mission .ms-two{grid-template-columns:1fr;gap:16px}
}
@media (max-width:560px){
  .sr-mission .ms-pillars,.sr-mission .ms-beliefs{grid-template-columns:1fr}
  .sr-mission .ms-cta{padding:30px}
}


/* ============================================================
   Support hub (.sr-support). Customer/contractor switch is pure
   CSS (radio + :has), with an @supports fallback that shows both
   panels where :has isn't available. FAQs use native <details>.
   No JS; CSP-clean.
   ============================================================ */
.sr-support{padding:6px 0 8px}
.sr-support .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}

/* hero */
.sr-support .su-hero{padding:34px 0 10px}
.sr-support .su-hero h1{font-size:clamp(2rem,4.4vw,2.9rem);font-weight:800;letter-spacing:-.035em;margin:12px 0 14px;color:var(--ink)}
.sr-support .lede{color:var(--ink-2);font-size:1.14rem;line-height:1.6;max-width:660px;margin:0}

.sr-support .su-body{padding:26px 0 8px}

/* audience switch */
.sr-support .su-radio{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.sr-support .su-switch{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:28px}
.sr-support .su-tab{display:flex;align-items:center;gap:13px;padding:16px 18px;border:1px solid var(--border);border-radius:14px;background:var(--surface);cursor:pointer;transition:border-color .15s ease,background .15s ease}
.sr-support .su-tab:hover{border-color:var(--border-2)}
.sr-support .st-i{width:40px;height:40px;flex:none;border-radius:11px;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-2);transition:background .15s ease,color .15s ease}
.sr-support .st-i svg{width:21px;height:21px}
.sr-support .st-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-support .st-t b{font-size:1rem;font-weight:700;color:var(--ink)}
.sr-support .st-t small{font-size:.82rem;color:var(--ink-3)}

/* panels visible by default (fallback where :has() is unsupported) */
.sr-support .su-panel{display:block;margin-bottom:8px}

@supports selector(:has(*)){
  .sr-support .su-panel{display:none}
  .sr-support .su-tabs:has(#aud-customer:checked) .su-panel[data-aud="customer"]{display:block}
  .sr-support .su-tabs:has(#aud-contractor:checked) .su-panel[data-aud="contractor"]{display:block}
  .sr-support .su-tabs:has(#aud-customer:checked) .su-tab[for="aud-customer"],
  .sr-support .su-tabs:has(#aud-contractor:checked) .su-tab[for="aud-contractor"]{border-color:var(--signal);background:var(--signal-weak)}
  .sr-support .su-tabs:has(#aud-customer:checked) .su-tab[for="aud-customer"] .st-i,
  .sr-support .su-tabs:has(#aud-contractor:checked) .su-tab[for="aud-contractor"] .st-i{background:var(--signal-2);color:var(--signal-ink)}
}

/* quick actions */
.sr-support .su-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:30px}
.sr-support .su-action{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid var(--border);border-radius:12px;background:var(--surface);transition:border-color .15s ease,transform .15s ease}
.sr-support .su-action:hover{border-color:var(--signal);transform:translateY(-2px);text-decoration:none}
.sr-support .su-action b{font-size:.98rem;font-weight:700;color:var(--ink)}
.sr-support .su-action b::after{content:" →";color:var(--signal-2)}
.sr-support .su-action small{font-size:.84rem;color:var(--ink-3);line-height:1.5}

/* faq */
.sr-support .su-faq-h{font-size:1.15rem;font-weight:700;color:var(--ink);margin:0 0 14px}
.sr-support .su-faq{display:flex;flex-direction:column;gap:8px}
.sr-support .su-faq details{border:1px solid var(--border);border-radius:11px;background:var(--surface);padding:0 16px}
.sr-support .su-faq summary{cursor:pointer;padding:15px 0;font-weight:600;color:var(--ink);list-style:none}
.sr-support .su-faq summary::-webkit-details-marker{display:none}
.sr-support .su-faq details[open] summary{border-bottom:1px solid var(--border)}
.sr-support .su-faq details p{color:var(--ink-2);font-size:.92rem;line-height:1.6;padding:13px 0;margin:0}
.sr-support .su-faq a{color:var(--signal-2)}

/* general contact */
.sr-support .su-contact{margin-top:44px;padding-top:36px;border-top:1px solid var(--border)}
.sr-support .su-head{max-width:640px;margin:0 0 22px}
.sr-support .su-head h2{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:800;letter-spacing:-.02em;margin:10px 0 8px;color:var(--ink)}
.sr-support .su-head p{color:var(--ink-2);font-size:1rem;line-height:1.55;margin:0}
.sr-support .su-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:820px}
.sr-support .su-card{display:flex;flex-direction:column;gap:4px;padding:20px 22px;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:border-color .15s ease}
.sr-support .su-card:hover{border-color:var(--signal);text-decoration:none}
.sr-support .su-card b{font-size:1rem;color:var(--ink)}
.sr-support .sc-mail{font-family:var(--mono);font-size:.9rem;color:var(--signal-2)}
.sr-support .su-card small{font-size:.84rem;color:var(--ink-3);line-height:1.5;margin-top:2px}

/* responsive */
@media (max-width:760px){
  .sr-support .su-actions{grid-template-columns:1fr}
  .sr-support .su-switch,.sr-support .su-contact-grid{grid-template-columns:1fr}
}


/* ============================================================
   Security & disclosure page (.sr-security) + the Support contact
   form. Both submit through the lead system (no mailto). Tokens
   global; scoped so nothing leaks.
   ============================================================ */
.sr-security{padding:6px 0 8px}
.sr-security .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-security .fld{margin-bottom:16px}
.sr-security .fld label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.sr-security input[type="text"],.sr-security input[type="email"],.sr-security textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;color:var(--ink);font-family:var(--sans);font-size:.92rem}
.sr-security input:focus,.sr-security textarea:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-security textarea{resize:vertical;min-height:120px;line-height:1.5}
.sr-security input::placeholder,.sr-security textarea::placeholder{color:var(--ink-3)}
.sr-security .form-note.err{background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 32%,transparent);border-radius:10px;padding:12px 14px;margin-bottom:16px;color:var(--kev);font-size:.88rem}
.sr-security .f-fine{font-size:.78rem;color:var(--ink-3);line-height:1.5;margin:10px 0 0}

/* hero */
.sr-security .se-hero{padding:34px 0 10px}
.sr-security .se-hero h1{font-size:clamp(1.9rem,4vw,2.7rem);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin:12px 0 14px;color:var(--ink)}
.sr-security .lede{color:var(--ink-2);font-size:1.14rem;line-height:1.6;max-width:680px;margin:0}

/* section + heading + prose */
.sr-security .se-section{padding:40px 0}
.sr-security .se-head{max-width:820px;margin:0 0 22px}
.sr-security .se-head h2{font-size:clamp(1.5rem,3vw,2.05rem);font-weight:800;letter-spacing:-.02em;margin:10px 0 8px;color:var(--ink)}
.sr-security .se-head p{color:var(--ink-2);font-size:1.02rem;line-height:1.55;margin:0}
.sr-security .se-prose{max-width:820px}
.sr-security .se-prose p{color:var(--ink-2);font-size:1.05rem;line-height:1.72;margin:0 0 1.1em}
.sr-security .se-prose p:last-child{margin-bottom:0}

/* policy band */
.sr-security .se-band{padding:44px 0;background:var(--bg-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sr-security .se-promises{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:960px}
.sr-security .se-promise{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px;border-left:3px solid var(--signal)}
.sr-security .se-promise h3{font-size:1.02rem;font-weight:700;color:var(--ink);margin:0 0 7px}
.sr-security .se-promise p{color:var(--ink-2);font-size:.92rem;line-height:1.58;margin:0}

/* report: form + side */
.sr-security .se-report{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.sr-security .se-form{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px}
.sr-security .se-report-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:82px}
.sr-security .side-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}
.sr-security .sc-eyebrow{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:.64rem;font-weight:700;color:var(--signal-2);margin-bottom:12px}
.sr-security .se-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.sr-security .se-list li{position:relative;padding-left:20px;font-size:.9rem;color:var(--ink-2);line-height:1.45}
.sr-security .se-list li::before{content:"";position:absolute;left:2px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--signal-2)}
.sr-security .se-quiet p{margin:0;font-size:.86rem;color:var(--ink-2);line-height:1.55}
.sr-security .se-quiet a{color:var(--signal-2)}
.sr-security .se-sent{background:var(--surface);border:1px solid var(--border-2);border-radius:16px;padding:30px;text-align:center}
.sr-security .ss-icon{width:48px;height:48px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;color:var(--signal-ink);background:var(--signal-2)}
.sr-security .ss-icon svg{width:24px;height:24px}
.sr-security .se-sent h3{font-size:1.2rem;margin:0 0 8px;color:var(--ink)}
.sr-security .se-sent p{color:var(--ink-2);line-height:1.6;margin:0}
@media (max-width:820px){
  .sr-security .se-promises{grid-template-columns:1fr}
  .sr-security .se-report{grid-template-columns:1fr;gap:20px}
  .sr-security .se-report-side{position:static;order:-1}
}

/* ---- Support: contact form + security link card ---- */
.sr-support .su-form{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px}
.sr-support .su-form .fld{margin-bottom:14px}
.sr-support .su-form label{display:block;font-size:.82rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.sr-support .su-form input[type="email"],.sr-support .su-form textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;color:var(--ink);font-family:var(--sans);font-size:.92rem}
.sr-support .su-form input:focus,.sr-support .su-form textarea:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.sr-support .su-form textarea{resize:vertical;min-height:96px;line-height:1.5}
.sr-support .su-form input::placeholder,.sr-support .su-form textarea::placeholder{color:var(--ink-3)}
.sr-support .form-note.err{background:color-mix(in srgb,var(--kev) 10%,transparent);border:1px solid color-mix(in srgb,var(--kev) 32%,transparent);border-radius:10px;padding:11px 13px;margin-bottom:14px;color:var(--kev);font-size:.86rem}
.sr-support .su-sent{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}
.sr-support .su-sent .ss-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--signal-ink);background:var(--signal-2);margin-bottom:8px}
.sr-support .su-sent .ss-icon svg{width:21px;height:21px}
.sr-support .su-sent b{font-size:1rem;color:var(--ink)}
.sr-support .su-sent small{font-size:.86rem;color:var(--ink-2);line-height:1.5}
.sr-support .su-report{justify-content:flex-start}
.sr-support .su-report .sc-link{margin-top:4px;font-family:var(--mono);font-size:.82rem;font-weight:600;color:var(--signal-2)}

/* security page: report-via-support CTA (form removed; reporting goes via support) */
.sr-security .se-report-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}

/* CVE detail: CWE-class explainer (fills the technical-summary gap on un-enriched CVEs) */
.sr-cve .cwe-explainer{border:1px solid var(--border);border-left:3px solid var(--signal);background:var(--signal-weak);border-radius:12px;padding:16px 18px}
.sr-cve .cwe-explainer .ce-k{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;font-weight:700;color:var(--signal-2);margin-bottom:9px}
.sr-cve .cwe-explainer > p{color:var(--ink-2);font-size:.98rem;line-height:1.65;margin:0}
.sr-cve .cwe-explainer .ce-foot{margin-top:12px;font-size:.82rem;line-height:1.5}
.sr-cve .cwe-explainer .ce-foot a{color:var(--signal-2);font-weight:600}

/* ============================================================
   Phase 2 — CVE priority meter: animated, severity-coloured,
   pulses when actively exploited; plus the threat-signals strip.
   All CSS keyframes (CSP-safe), with a reduced-motion fallback.
   ============================================================ */
.sr-cve .pri{position:relative;overflow:hidden}
.sr-cve .pri::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(130% 130% at 0% 50%,color-mix(in srgb,var(--g) 12%,transparent),transparent 58%)}
.sr-cve .pri-score,.sr-cve .pri-main{position:relative;z-index:1}
.sr-cve .pri-num{text-shadow:0 0 22px color-mix(in srgb,var(--g) 32%,transparent)}
.sr-cve .pri-fill{position:relative;background:linear-gradient(90deg,color-mix(in srgb,var(--g) 50%,transparent),var(--g));transform-origin:left;animation:pri-grow .9s cubic-bezier(.2,.85,.25,1) both}
@keyframes pri-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* actively exploited (on CISA KEV): a highlight sweeps the bar + the card breathes red */
.sr-cve .pri.is-kev .pri-fill::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,#fff 55%,transparent),transparent);background-size:45% 100%;background-repeat:no-repeat;animation:pri-sweep 2.4s linear .9s infinite}
@keyframes pri-sweep{0%{background-position:-60% 0}100%{background-position:160% 0}}
.sr-cve .pri.is-kev{animation:pri-kev 2.8s ease-in-out infinite}
@keyframes pri-kev{0%,100%{box-shadow:var(--shadow)}50%{box-shadow:var(--shadow),0 0 24px color-mix(in srgb,var(--kev) 24%,transparent)}}

/* threat-signals strip (replaces the plain factor chips) */
.sr-cve .threat-signals{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.sr-cve .ts-tile{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.72rem;font-weight:600;padding:6px 11px;border-radius:8px;border:1px solid transparent;white-space:nowrap;line-height:1}
.sr-cve .ts-tile svg{width:14px;height:14px;flex:none}
.sr-cve .ts-danger{color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 13%,transparent);border-color:color-mix(in srgb,var(--sev-critical) 35%,transparent)}
.sr-cve .ts-warn{color:var(--sev-high);background:color-mix(in srgb,var(--sev-high) 12%,transparent);border-color:color-mix(in srgb,var(--sev-high) 30%,transparent)}
.sr-cve .ts-good{color:var(--signal-2);background:var(--signal-weak);border-color:color-mix(in srgb,var(--signal) 32%,transparent)}
.sr-cve .ts-age{color:var(--ink-2);background:var(--surface-2);border-color:var(--border)}

@media (prefers-reduced-motion:reduce){
  .sr-cve .pri-fill{animation:none}
  .sr-cve .pri.is-kev{animation:none}
  .sr-cve .pri.is-kev .pri-fill::after{animation:none;display:none}
}

/* ============================================================
   Phase 3 — contextual remediation card, "what's involved"
   preview, and the scroll-following nudge. Nudge toggling is done
   by /assets/js/cve.js; entrance is a CSS keyframe (CSP-safe).
   ============================================================ */
.sr-cve .hire-card .hc-lead{color:var(--ink-2);font-size:.92rem;line-height:1.55;margin:0 0 14px}
.sr-cve .hire-urgent{border-color:color-mix(in srgb,var(--kev) 42%,transparent);box-shadow:var(--shadow),0 0 0 1px color-mix(in srgb,var(--kev) 18%,transparent)}
.sr-cve .hire-urgent .hc-eyebrow{color:var(--sev-critical)}
.sr-cve .hc-involves{margin:14px 0 6px}
.sr-cve .hci-k{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.62rem;font-weight:700;color:var(--ink-3);margin-bottom:8px}
.sr-cve .hci-lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.sr-cve .hci-lines li{display:flex;justify-content:space-between;gap:10px;font-size:.82rem;color:var(--ink-2)}
.sr-cve .hci-lines li b{color:var(--ink);font-family:var(--mono);font-size:.8rem}
.sr-cve .hci-steps{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px}
.sr-cve .hci-steps li{font-size:.82rem;color:var(--ink-2);line-height:1.4}
.sr-cve .hci-steps li::marker{color:var(--signal-2);font-size:.72rem}

/* scroll-following nudge */
.cve-nudge{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:50;max-width:calc(100% - 24px);animation:cn-in .35s ease both}
.cve-nudge[hidden]{display:none}
@keyframes cn-in{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
.cve-nudge .cn-inner{display:flex;align-items:center;gap:16px;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:saturate(150%) blur(12px);border:1px solid var(--border-2);border-radius:14px;box-shadow:0 12px 34px rgba(0,0,0,.42);padding:9px 9px 9px 16px}
.cve-nudge .cn-info{display:flex;align-items:center;gap:10px;min-width:0}
.cve-nudge .cn-id{font-family:var(--mono);font-weight:700;font-size:.82rem;color:var(--ink)}
.cve-nudge .cn-kev{font-family:var(--mono);font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 14%,transparent);border:1px solid color-mix(in srgb,var(--sev-critical) 36%,transparent);border-radius:999px;padding:2px 8px;white-space:nowrap}
.cve-nudge .cn-price{font-size:.84rem;color:var(--ink-2);white-space:nowrap}
.cve-nudge .cn-price b{color:var(--ink);font-family:var(--mono)}
.cve-nudge .cn-cta{flex:none;font-size:.84rem;padding:9px 16px;white-space:nowrap}
@media (max-width:560px){
  .cve-nudge{left:12px;right:12px;bottom:12px;transform:none;max-width:none}
  .cve-nudge .cn-inner{justify-content:space-between}
  .cve-nudge .cn-price{display:none}
  @keyframes cn-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
}
@media (prefers-reduced-motion:reduce){.cve-nudge{animation:none}}

/* ============================================================
   Phase 4 — Browse into 2026: severity colour + KEV lift on rows,
   an in-list "Fix from $X" upsell on hover, logo'd tech chips, and
   a live "exploited in the wild" threat-feed strip.
   ============================================================ */
/* row severity accent + KEV elevation */
.sr-browse .res-row{--rs:var(--border-2);position:relative;box-shadow:inset 3px 0 0 var(--rs)}
.sr-browse .res-row.rs-critical{--rs:var(--sev-critical)}
.sr-browse .res-row.rs-high{--rs:var(--sev-high)}
.sr-browse .res-row.rs-medium{--rs:var(--sev-medium)}
.sr-browse .res-row.rs-low{--rs:var(--sev-low)}
.sr-browse .res-row:hover{box-shadow:inset 3px 0 0 var(--rs),var(--shadow)}
.sr-browse .res-row.rs-kev{background:color-mix(in srgb,var(--sev-critical) 5%,var(--surface));border-color:color-mix(in srgb,var(--sev-critical) 24%,transparent)}

/* in-list upsell: reveal a priced hook on hover (part of the row link) */
.sr-browse .rr-date{transition:opacity .15s ease}
.sr-browse .rr-fix{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.74rem;font-weight:600;color:var(--signal-2);background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 32%,transparent);border-radius:999px;padding:5px 11px;opacity:0;pointer-events:none;transition:opacity .15s ease;white-space:nowrap}
.sr-browse .res-row:hover .rr-fix{opacity:1}
.sr-browse .res-row:hover .rr-date{opacity:0}

/* logo'd tech chips */
.sr-browse .vf-logo{width:14px;height:14px;flex:none;border-radius:3px;display:block}

/* threat-feed strip */
.sr-browse .threat-feed{border:1px solid color-mix(in srgb,var(--sev-critical) 24%,transparent);border-radius:14px;background:color-mix(in srgb,var(--sev-critical) 5%,var(--surface));padding:14px 16px;margin:0 0 18px}
.sr-browse .tf-head{display:flex;align-items:center;gap:9px;margin-bottom:12px;flex-wrap:wrap}
.sr-browse .tf-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--sev-critical);color:var(--sev-critical);animation:sr-beat 1.8s infinite}
.sr-browse .tf-k{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;font-size:.68rem;font-weight:700;color:var(--sev-critical)}
.sr-browse .tf-sub{font-size:.78rem;color:var(--ink-3)}
.sr-browse .tf-track{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}
.sr-browse .tf-card{flex:none;width:186px;display:flex;flex-direction:column;gap:6px;padding:11px 13px;border:1px solid var(--border);border-radius:11px;background:var(--surface);transition:border-color .15s ease,transform .15s ease}
.sr-browse .tf-card:hover{border-color:color-mix(in srgb,var(--sev-critical) 50%,transparent);transform:translateY(-2px);text-decoration:none}
.sr-browse .tf-card .sev{align-self:flex-start}
.sr-browse .tf-id{font-family:var(--mono);font-weight:700;font-size:.82rem;color:var(--ink)}
.sr-browse .tf-prod{font-size:.76rem;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media (max-width:640px){ .sr-browse .rr-fix{display:none} }
@media (prefers-reduced-motion:reduce){ .sr-browse .tf-dot{animation:none} }

/* ============================================================
   Practitioner-notes explainer + posting rules, a clearer
   sign-in prompt, and per-item reference icons.
   ============================================================ */
.sr-cve .community-head{margin-bottom:16px}
.sr-cve .ch-sub{color:var(--ink-2);font-size:.92rem;line-height:1.55;margin:6px 0 0;max-width:72ch}
.sr-cve .notes-guide{display:grid;grid-template-columns:1.15fr 1fr;gap:22px}
.sr-cve .ni-k{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.09em;font-size:.64rem;font-weight:700;color:var(--ink-3);margin-bottom:9px}
.sr-cve .ni-about p{color:var(--ink-2);font-size:.9rem;line-height:1.6;margin:0}
.sr-cve .ni-rules{border-left:1px solid var(--border);padding-left:22px}
.sr-cve .ni-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.sr-cve .ni-list li{display:flex;align-items:flex-start;gap:9px;font-size:.86rem;line-height:1.4;color:var(--ink-2)}
.sr-cve .ni-list svg{width:15px;height:15px;flex:none;margin-top:2px}
.sr-cve .ni-do svg{color:var(--sev-low)}
.sr-cve .ni-dont svg{color:var(--sev-critical)}
@media (max-width:720px){.sr-cve .notes-guide{grid-template-columns:1fr;gap:16px}.sr-cve .ni-rules{border-left:0;border-top:1px solid var(--border);padding-left:0;padding-top:16px}}

/* clearer sign-in prompt: text block + button */
/* icon | text | button, as a 3-column GRID.
   Flexbox was wrapping the button onto its own row the moment the copy got long
   (flex-wrap has to put it somewhere). A grid track cannot wrap — the button is
   structurally locked to the same row as the text, vertically centred with it. */
/* ---- CVE sign-in prompt: TWO PANELS, side by side ----
   The CTA is a sibling (.sp-upsell), not a child of .sp-body. That is the whole fix — the old
   markup nested the button inside the text block, so it could only ever stack underneath. */
.sr-cve .signin-prompt{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);align-items:stretch;gap:0;border:1px solid var(--border);border-radius:14px;padding:0;margin:0 0 20px;overflow:hidden;background:var(--surface)}
.sr-cve .signin-prompt .sp-ask{display:flex;gap:14px;align-items:flex-start;padding:20px 22px;min-width:0}
.sr-cve .signin-prompt .sp-icon{flex:none;width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--signal-weak);color:var(--signal)}
.sr-cve .signin-prompt .sp-icon svg{width:21px;height:21px}
.sr-cve .signin-prompt .sp-body{min-width:0}
.sr-cve .signin-prompt .sp-body b{display:block;color:var(--ink);font-family:var(--font-display);font-size:1.02rem;margin-bottom:5px;line-height:1.3}
.sr-cve .signin-prompt .sp-body p{margin:0 0 10px;font-size:.88rem;line-height:1.55;max-width:none;color:var(--ink-2)}
.sr-cve .signin-prompt .sp-examples{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.sr-cve .signin-prompt .sp-examples li{position:relative;padding-left:15px;font-size:.83rem;line-height:1.5;color:var(--ink-3)}
.sr-cve .signin-prompt .sp-examples li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--signal);opacity:.55}

/* the dressed-up upsell panel on the right */
.sr-cve .signin-prompt .sp-upsell{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:20px 22px;border-left:1px solid var(--border);background:linear-gradient(165deg,color-mix(in srgb,var(--signal) 11%,transparent),transparent 72%),var(--surface-2)}
.sr-cve .signin-prompt .sp-kicker{font-family:var(--mono);font-size:.63rem;letter-spacing:.12em;text-transform:uppercase;color:var(--signal);font-weight:700}
.sr-cve .signin-prompt .sp-upsell-title{display:block;color:var(--ink);font-family:var(--font-display);font-size:.97rem;line-height:1.3}
.sr-cve .signin-prompt .sp-perks{list-style:none;margin:2px 0 4px;padding:0;display:flex;flex-direction:column;gap:7px;width:100%}
.sr-cve .signin-prompt .sp-perks li{display:flex;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.45;color:var(--ink-2)}
.sr-cve .signin-prompt .sp-perks svg{flex:none;width:13px;height:13px;margin-top:3px;color:var(--signal)}
.sr-cve .signin-prompt .sp-note{font-size:.72rem;line-height:1.45;color:var(--ink-3)}
.sr-cve .signin-prompt .btn-google{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:100%;height:40px;padding:0 18px;border-radius:999px;font-weight:600;font-size:.88rem;white-space:nowrap;background:var(--surface);color:var(--ink);border:1px solid var(--border-2);transition:background .15s ease,border-color .15s ease}
.sr-cve .signin-prompt .btn-google:hover{background:var(--surface-3);color:var(--ink);border-color:var(--border-strong);text-decoration:none;box-shadow:none}
.sr-cve .signin-prompt .btn-google .g-logo{width:16px;height:16px;flex:none}

/* below 820px there is no room for two panels — stack, and the divider becomes horizontal */
@media (max-width:820px){
  .sr-cve .signin-prompt{grid-template-columns:1fr}
  .sr-cve .signin-prompt .sp-upsell{border-left:0;border-top:1px solid var(--border)}
}

/* reference kind icons (patch/exploit already defined above) */
.sr-cve .ref-ic.ref-vendor{color:#a9c8ff;background:rgba(91,155,255,.12)}
.sr-cve .ref-ic.ref-advisory{color:var(--sev-high);background:color-mix(in srgb,var(--sev-high) 12%,transparent)}
.sr-cve .ref-ic.ref-doc{color:var(--ink-2);background:var(--surface-3)}
.sr-cve .ref-ic.ref-release{color:var(--signal-2);background:var(--signal-weak)}
.sr-cve .ref-ic.ref-issue{color:var(--sev-high);background:color-mix(in srgb,var(--sev-high) 10%,transparent)}
.sr-cve .ref-ic.ref-mail{color:var(--ink-2);background:var(--surface-3)}
.sr-cve .ref-ic.ref-vdb{color:var(--ink-2);background:var(--surface-3)}
.sr-cve .ref-ic.ref-link{color:var(--ink-3);background:var(--surface-3)}

/* ============================================================
   Practitioner notes — tabbed module (CSS-only, CSP-safe),
   polished empty state, composer, and note cards.
   ============================================================ */
.sr-cve .notes-tabs{position:relative;border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow:hidden}
.sr-cve .nt-radio{position:absolute;width:1px;height:1px;opacity:0}
.sr-cve .nt-strip{display:flex;gap:4px;padding:7px 8px 0;background:var(--surface-2);border-bottom:1px solid var(--border)}
.sr-cve .nt-tab{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;margin-bottom:-1px;font-size:.88rem;font-weight:600;color:var(--ink-3);cursor:pointer;border:1px solid transparent;border-bottom:none;border-radius:9px 9px 0 0;user-select:none}
.sr-cve .nt-tab:hover{color:var(--ink-2)}
.sr-cve .nt-count{font-family:var(--mono);font-size:.7rem;font-weight:700;color:var(--ink-3);background:var(--surface-3);border-radius:999px;padding:1px 8px;min-width:20px;text-align:center;line-height:1.5}
.sr-cve .nt-body{padding:20px 22px}
.sr-cve .nt-panel{display:none}
#nt-notes:checked ~ .nt-body .nt-p-notes,
#nt-guide:checked ~ .nt-body .nt-p-guide{display:block}
#nt-notes:checked ~ .nt-strip .nt-tab[for="nt-notes"],
#nt-guide:checked ~ .nt-strip .nt-tab[for="nt-guide"]{color:var(--ink);background:var(--surface);border-color:var(--border)}
#nt-notes:checked ~ .nt-strip .nt-tab[for="nt-notes"] .nt-count{color:var(--signal-2);background:var(--signal-weak)}
#nt-notes:focus-visible ~ .nt-strip .nt-tab[for="nt-notes"],
#nt-guide:focus-visible ~ .nt-strip .nt-tab[for="nt-guide"]{box-shadow:inset 0 0 0 2px var(--signal)}

/* polished empty state */
.sr-cve .notes-empty{text-align:center;padding:28px 20px;border:1px dashed var(--border);border-radius:12px;background:var(--surface-2)}
.sr-cve .ne-ic{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:13px;background:var(--surface-3);color:var(--ink-3);margin-bottom:11px}
.sr-cve .ne-ic svg{width:22px;height:22px}
.sr-cve .notes-empty h3{margin:0 0 6px;font-size:1.02rem;color:var(--ink)}
.sr-cve .notes-empty p{margin:0 auto;max-width:48ch;color:var(--ink-2);font-size:.88rem;line-height:1.55}

/* composer + note cards, tuned to the dark system */
.sr-cve .comment-form{margin:0 0 18px}
.sr-cve .comment-form textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;color:var(--ink);font-family:var(--mono);font-size:.86rem}
.sr-cve .comment-form textarea:focus{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak);outline:none}
.sr-cve .thread{margin-top:2px}
.sr-cve .post{border:1px solid var(--border);border-radius:12px;padding:13px 15px;background:var(--surface-2)}
.sr-cve .post-body{font-size:.9rem;color:var(--ink-2);line-height:1.6}
.sr-cve .post-meta .author{color:var(--ink)}
.sr-cve .post-vote .score{color:var(--ink)}
.sr-cve .signin-prompt{margin:0 0 18px}

/* ============================================================
   Header polish — aligned sizing, dividers, thinner wordmark,
   mode tweaks; plus the CVE remediation CTA (in-page band +
   prominent sidebar button with icon).
   ============================================================ */
.brand-word{font-weight:500}
.site-search{height:38px;padding:0 14px;background:var(--surface-2)}
.site-search:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.nav-cta{height:38px;padding:0 17px;border-radius:999px;display:inline-flex;align-items:center;gap:7px;font-size:.86rem;font-weight:600}
.nav-cta .cta-i{width:15px;height:15px;flex:none}
.nav-div{width:1px;height:22px;background:var(--border);flex:none}
@media (max-width:940px){.nav-div{display:none}}

/* sidebar remediation button (CTA up top, with wrench) */
.sr-cve .hc-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin:2px 0 14px}
.sr-cve .hc-cta .cta-i{width:16px;height:16px;flex:none}
.sr-cve .hire-card .quote-teaser{margin-bottom:2px}

/* in-page remediation banner (mid-article, so a priced CTA is always near) */
.sr-cve .cve-cta-band{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:18px 22px;border:1px solid var(--border-2);border-radius:14px;background:linear-gradient(120deg,var(--surface-2),var(--surface));margin:8px 0 30px}
.sr-cve .cve-cta-band.is-kev{border-color:color-mix(in srgb,var(--kev) 34%,transparent);background:linear-gradient(120deg,color-mix(in srgb,var(--kev) 8%,var(--surface)),var(--surface))}
.sr-cve .ccb-txt{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.sr-cve .ccb-txt b{font-family:var(--font-display);font-weight:600;font-size:1.02rem;color:var(--ink)}
.sr-cve .ccb-txt span{font-size:.88rem;color:var(--ink-2);line-height:1.5}
.sr-cve .ccb-cta{flex:none;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.sr-cve .ccb-cta .cta-i{width:16px;height:16px;flex:none}
@media (max-width:560px){.sr-cve .cve-cta-band{flex-direction:column;align-items:stretch}.sr-cve .ccb-cta{justify-content:center}}

/* header sign-in: adapts to light/dark and a touch smaller (was a big white pill) */
.nav-actions .btn-google{height:38px;padding:0 13px;gap:8px;font-size:.84rem;font-weight:600;background:var(--surface);color:var(--ink);border:1px solid var(--border)}
.nav-actions .btn-google:hover{background:var(--surface-2);color:var(--ink);border-color:var(--border-2);box-shadow:none}
.nav-actions .btn-google .g-logo{width:15px;height:15px}
@media (max-width:940px){ .nav-actions .btn-google{height:auto;padding:10px 14px} }

/* browse threat-feed: hide the unstyled horizontal scrollbar (scrolling still works) */
.sr-browse .tf-track{scrollbar-width:none;-ms-overflow-style:none;padding-bottom:0}
.sr-browse .tf-track::-webkit-scrollbar{display:none}

/* ============================================================
   Browse rework — card/compact views, constant prices, a view
   toggle, and a more usable filter (severity pills + KEV switch).
   ============================================================ */
/* header row + view toggle */
.sr-browse .b-head-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:flex-end}
.sr-browse .view-toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:3px}
.sr-browse .vt-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:8px;font-size:.8rem;font-weight:600;color:var(--ink-3);white-space:nowrap}
.sr-browse .vt-btn svg{width:15px;height:15px}
.sr-browse .vt-btn:hover{color:var(--ink-2);text-decoration:none}
.sr-browse .vt-btn.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.25)}
@media (max-width:520px){.sr-browse .vt-btn span{display:none}.sr-browse .vt-btn{padding:7px 9px}}

/* card grid — ~3 across on desktop, equal height per row */
.sr-browse .res-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:stretch}
.sr-browse .cve-card{--rs:var(--border-2);display:flex;flex-direction:column;gap:10px;height:100%;padding:15px 16px;border:1px solid var(--border);border-left:3px solid var(--rs);border-radius:13px;background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.sr-browse .cve-card:hover{border-color:var(--border-2);box-shadow:var(--shadow);transform:translateY(-2px);text-decoration:none}
.sr-browse .cve-card.rs-critical{--rs:var(--sev-critical)}
.sr-browse .cve-card.rs-high{--rs:var(--sev-high)}
.sr-browse .cve-card.rs-medium{--rs:var(--sev-medium)}
.sr-browse .cve-card.rs-low{--rs:var(--sev-low)}
.sr-browse .cve-card.rs-kev{background:color-mix(in srgb,var(--sev-critical) 5%,var(--surface));border-color:color-mix(in srgb,var(--sev-critical) 22%,transparent)}
.sr-browse .cc-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sr-browse .cc-tech{display:inline-flex;align-items:center;gap:8px;min-width:0}
.sr-browse .cc-tech .tm-logo{width:26px;height:26px;flex:none;border-radius:7px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;overflow:hidden}
.sr-browse .cc-tech .tm-logo img{display:block;border-radius:4px}
.sr-browse .cc-tech .tm-generic{color:var(--ink-3)}
.sr-browse .cc-tech .tm-generic svg{width:15px;height:15px}
.sr-browse .cc-prod{font-family:var(--mono);font-size:.78rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-browse .cc-id{font-family:var(--mono);font-weight:700;font-size:.92rem;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sr-browse .cc-desc{flex:1;margin:0;font-size:.85rem;line-height:1.5;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sr-browse .cc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--border)}
.sr-browse .cc-price{font-family:var(--mono);font-size:.8rem;color:var(--ink-2)}
.sr-browse .cc-price b{color:var(--signal-2);font-weight:700}
.sr-browse .cc-date{font-family:var(--mono);font-size:.74rem;color:var(--ink-3);white-space:nowrap}

/* compact rows — constant price in a stacked meta column */
.sr-browse .res-row{grid-template-columns:100px minmax(0,1fr) 146px 132px}
.sr-browse .rr-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right}
.sr-browse .rr-price{font-family:var(--mono);font-size:.76rem;color:var(--ink-2);white-space:nowrap}
.sr-browse .rr-price b{color:var(--signal-2);font-weight:700}
.sr-browse .rr-meta .rr-date{font-family:var(--mono);font-size:.72rem;color:var(--ink-3)}
.sr-browse .res-row:hover .rr-date{opacity:1}
@media (max-width:940px){.sr-browse .res-row{grid-template-columns:auto minmax(0,1fr)}.sr-browse .rr-tech,.sr-browse .rr-meta{display:none}}

/* filter panel — header, severity pills, KEV switch */
.sr-browse .filters-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.sr-browse .fh-title{font-family:var(--font-display);font-weight:600;font-size:.98rem;color:var(--ink);display:inline-flex;align-items:center;gap:8px}
.sr-browse .fh-count{font-family:var(--mono);font-size:.7rem;font-weight:700;color:var(--signal-ink);background:var(--signal);border-radius:999px;min-width:19px;height:19px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.sr-browse .fh-clear{font-family:var(--mono);font-size:.74rem;color:var(--ink-3)}
.sr-browse .fh-clear:hover{color:var(--signal-2)}
.sr-browse .sev-pills{display:flex;flex-wrap:wrap;gap:6px}
.sr-browse .sev-pill{position:relative;display:inline-flex;align-items:center;font-size:.78rem;font-weight:600;padding:5px 11px;border-radius:999px;border:1px solid var(--border);color:var(--ink-2);cursor:pointer;background:var(--surface-2);user-select:none}
.sr-browse .sev-pill input{position:absolute;opacity:0;width:0;height:0}
.sr-browse .sev-pill:hover{border-color:var(--border-2);color:var(--ink)}
.sr-browse .sev-pill.on{color:var(--ink)}
.sr-browse .sev-pill.sp-any.on{border-color:var(--signal);background:var(--signal-weak);color:var(--signal-2)}
.sr-browse .sev-pill.sp-critical.on{border-color:color-mix(in srgb,var(--sev-critical) 45%,transparent);background:color-mix(in srgb,var(--sev-critical) 14%,transparent);color:var(--sev-critical)}
.sr-browse .sev-pill.sp-high.on{border-color:color-mix(in srgb,var(--sev-high) 45%,transparent);background:color-mix(in srgb,var(--sev-high) 14%,transparent);color:var(--sev-high)}
.sr-browse .sev-pill.sp-medium.on{border-color:color-mix(in srgb,var(--sev-medium) 45%,transparent);background:color-mix(in srgb,var(--sev-medium) 14%,transparent);color:var(--sev-medium)}
.sr-browse .sev-pill.sp-low.on{border-color:color-mix(in srgb,var(--sev-low) 45%,transparent);background:color-mix(in srgb,var(--sev-low) 14%,transparent);color:var(--sev-low)}
.sr-browse .sev-pill:has(input:focus-visible){outline:2px solid var(--signal);outline-offset:2px}
.sr-browse .kev-switch{display:flex;align-items:center;gap:10px;margin:4px 0 16px;cursor:pointer;font-size:.86rem;color:var(--ink)}
.sr-browse .kev-switch input{position:absolute;opacity:0;width:0;height:0}
.sr-browse .ks-track{flex:none;width:38px;height:22px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border);position:relative;transition:background .15s ease,border-color .15s ease}
.sr-browse .ks-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--ink-3);transition:transform .15s ease,background .15s ease}
.sr-browse .kev-switch input:checked + .ks-track{background:var(--signal);border-color:var(--signal)}
.sr-browse .kev-switch input:checked + .ks-track .ks-thumb{transform:translateX(16px);background:var(--signal-ink)}
.sr-browse .kev-switch input:focus-visible + .ks-track{outline:2px solid var(--signal);outline-offset:2px}

/* browse: with JS live-filtering, swap the Apply button for a hint */
.sr-browse .f-live-hint{display:none}
.sr-browse .filters.js-live .factions .btn{display:none}
.sr-browse .filters.js-live .f-live-hint{display:block;margin:0;font-size:.78rem;color:var(--ink-3);text-align:center}

/* ============================================================
   Latest — the week's highest-severity CVEs (reuses .sr-browse
   card styling; adds ranking, freshness flags, urgency premium).
   ============================================================ */
.sr-latest .lt-head{max-width:760px;margin:0 0 26px}
.sr-latest .lt-head h1{margin:8px 0 12px}
.sr-latest .lt-lede{color:var(--ink-2);font-size:1rem;line-height:1.6;margin:0 0 12px}
.sr-latest .lt-price-note strong{color:var(--ink)}
.sr-latest .lt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;list-style:none;margin:0;padding:0}
.sr-latest .lt-grid > li{display:flex;min-width:0}
.sr-latest .lt-card{width:100%}
.sr-latest .lt-rank{font-family:var(--mono);font-weight:700;font-size:.82rem;color:var(--signal-2);margin-right:2px}
.sr-latest .lt-flags{display:flex;flex-wrap:wrap;gap:6px}
.sr-latest .lt-flag{font-family:var(--mono);font-size:.68rem;font-weight:600;padding:3px 8px;border-radius:6px;border:1px solid var(--border);color:var(--ink-3);background:var(--surface-2)}
.sr-latest .lt-nofix{color:var(--sev-high);border-color:color-mix(in srgb,var(--sev-high) 34%,transparent);background:color-mix(in srgb,var(--sev-high) 11%,transparent)}
.sr-latest .cc-prem{font-family:var(--mono);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 13%,transparent);border-radius:5px;padding:2px 6px;margin-left:4px;vertical-align:middle}
.sr-latest .lt-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;margin-top:26px;padding:22px;border:1px solid var(--border);border-radius:14px;background:var(--surface);text-align:center}
.sr-latest .lt-cta p{margin:0;color:var(--ink-2);font-size:.95rem}

/* CVE detail: fresh-CVE pricing note */
.sr-cve .hc-fresh{margin:12px 0 0;font-size:.82rem;line-height:1.5;color:var(--sev-high);border-left:2px solid color-mix(in srgb,var(--sev-high) 45%,transparent);padding-left:10px}

/* ============================================================
   /api docs page
   ============================================================ */
.sr-api{max-width:920px}
.sr-api .api-head{margin:0 0 30px}
.sr-api .api-head h1{margin:8px 0 12px}
.sr-api .api-lede{color:var(--ink-2);font-size:1.02rem;line-height:1.6;max-width:70ch}
.sr-api .api-sec{margin:0 0 34px}
.sr-api .api-sec h2{margin:0 0 8px}
.sr-api .api-note{color:var(--ink-2);font-size:.92rem;line-height:1.55;margin:0 0 16px;max-width:72ch}
.sr-api .api-note code,.sr-api .api-lede code{font-family:var(--mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:1px 6px}
.sr-api .api-ep{border:1px solid var(--border);border-left:3px solid var(--signal);border-radius:11px;background:var(--surface);padding:14px 16px;margin:0 0 10px}
.sr-api .ae-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sr-api .ae-m{font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.05em;color:var(--signal-ink);background:var(--signal);border-radius:5px;padding:2px 8px}
.sr-api .ae-p{font-family:var(--mono);font-size:.92rem;font-weight:600;color:var(--ink)}
.sr-api .ae-d{margin:9px 0 8px;color:var(--ink-2);font-size:.9rem;line-height:1.5}
.sr-api .ae-x{font-family:var(--mono);font-size:.8rem;color:var(--signal-2);word-break:break-all}
.sr-api .api-code{background:var(--surface-2);border:1px solid var(--border);border-radius:11px;padding:14px 16px;overflow-x:auto;font-family:var(--mono);font-size:.82rem;line-height:1.6;color:var(--ink-2)}
.sr-api .api-code code{font-family:inherit}

/* ============================================================
   /contributions — latest practitioner notes across all CVEs
   ============================================================ */
.sr-contrib{max-width:820px}
.sr-contrib .ct-head{margin:0 0 24px}
.sr-contrib .ct-head h1{margin:8px 0 12px}
.sr-contrib .ct-lede{color:var(--ink-2);font-size:1rem;line-height:1.6;max-width:70ch}
.sr-contrib .ct-feed{display:flex;flex-direction:column;gap:12px}
.sr-contrib .ct-item{--rs:var(--border-2);display:block;padding:15px 17px;border:1px solid var(--border);border-left:3px solid var(--rs);border-radius:12px;background:var(--surface);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.sr-contrib .ct-item:hover{border-color:var(--border-2);box-shadow:var(--shadow);transform:translateY(-1px);text-decoration:none}
.sr-contrib .ct-item.rs-critical{--rs:var(--sev-critical)}
.sr-contrib .ct-item.rs-high{--rs:var(--sev-high)}
.sr-contrib .ct-item.rs-medium{--rs:var(--sev-medium)}
.sr-contrib .ct-item.rs-low{--rs:var(--sev-low)}
.sr-contrib .ct-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}
.sr-contrib .ct-author{font-weight:600;font-size:.9rem;color:var(--ink);display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.sr-contrib .ct-role{font-family:var(--mono);font-size:.7rem;font-weight:600;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:1px 7px}
.sr-contrib .ct-ai{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.04em;color:var(--signal-2);background:var(--signal-weak);border:1px solid color-mix(in srgb,var(--signal) 30%,transparent);border-radius:5px;padding:1px 7px}
.sr-contrib .ct-time{font-family:var(--mono);font-size:.74rem;color:var(--ink-3);white-space:nowrap;flex:none}
.sr-contrib .ct-preview{margin:0 0 12px;color:var(--ink-2);font-size:.92rem;line-height:1.55}
.sr-contrib .ct-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sr-contrib .ct-cve{display:inline-flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.sr-contrib .ct-cve .tm-logo{width:22px;height:22px;flex:none;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;overflow:hidden}
.sr-contrib .ct-id{font-family:var(--mono);font-weight:700;font-size:.82rem;color:var(--ink)}
.sr-contrib .ct-prod{font-family:var(--mono);font-size:.76rem;color:var(--ink-3)}
.sr-contrib .ct-votes{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:.78rem;font-weight:600;color:var(--ink-2);flex:none}
.sr-contrib .ct-votes svg{color:var(--signal-2)}
.sr-contrib .ct-foot{margin-top:22px;color:var(--ink-3);font-size:.86rem;line-height:1.5}
.sr-contrib .ct-foot a{color:var(--signal-2)}

/* threaded practitioner notes — indented replies */
.sr-cve .thread{display:flex;flex-direction:column;gap:14px}
.sr-cve .post-replies{margin:0 0 0 20px;padding-left:16px;border-left:2px solid var(--border-2);display:flex;flex-direction:column;gap:12px}
.sr-cve .post.is-reply{background:var(--surface)}
@media (max-width:560px){.sr-cve .post-replies{margin-left:10px;padding-left:11px}}

/* light syntax tint for code blocks in practitioner notes */
.post-body pre .tk-c{color:var(--ink-3);font-style:italic}
.post-body pre .tk-s{color:var(--sev-low)}
.post-body pre .tk-n{color:var(--signal-2)}

/* KEV remediation due-date + ransomware indicators */
.kev-banner .kev-due{font-weight:600}
.kev-banner .kev-ransom{display:inline-block;margin-left:.4rem;padding:.06rem .4rem;border-radius:5px;background:rgba(251,84,115,.16);color:var(--sev-critical);font-size:.82em;font-weight:700;letter-spacing:.02em;text-transform:uppercase;vertical-align:middle}
.facts .fact-due{color:var(--sev-high);font-weight:600}
.facts .fact-ransom{color:var(--sev-critical);font-weight:600}

/* EPSS badge on browse cards/rows */
.epss-badge{display:inline-block;margin-left:.4rem;padding:.02rem .34rem;border-radius:5px;background:rgba(239,200,76,.15);color:var(--sev-medium);font-size:.72em;font-weight:700;letter-spacing:.02em;vertical-align:middle;white-space:nowrap}

/* affected-version ranges on the CVE page */
.tech-card .tc-head{display:flex;align-items:center;gap:.5rem}
.tc-ver{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.55rem;padding-top:.5rem;border-top:1px solid var(--border)}
.tc-ver .tc-verk{font-size:.72rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;font-weight:600;margin-right:.1rem}
.tc-ver .verpill{font-family:var(--mono);font-size:.75rem;padding:.1rem .4rem;border-radius:5px;background:var(--surface-3);border:1px solid var(--border-2);color:var(--ink)}

/* "Am I affected?" trace-step checklist */
.aff-intro{color:var(--ink-2);margin:.2rem 0 1rem}
.affchecks{list-style:none;counter-reset:aff;padding:0;margin:0;display:flex;flex-direction:column;gap:.7rem}
.affstep{counter-increment:aff;position:relative;padding:.8rem .9rem .8rem 2.7rem;background:var(--surface-2);border:1px solid var(--border);border-radius:10px}
.affstep::before{content:counter(aff);position:absolute;left:.85rem;top:.8rem;width:1.4rem;height:1.4rem;border-radius:50%;background:var(--signal);color:var(--signal-ink);font-family:var(--mono);font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.affstep .as-check{font-weight:600;color:var(--ink)}
.affstep .as-how{color:var(--ink-2);margin-top:.25rem;font-size:.94rem}
.affstep .as-if{margin-top:.4rem;font-size:.9rem;color:var(--ink-2)}
.affstep .as-if .as-if-k{display:inline-block;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;font-weight:700;color:var(--sev-high);margin-right:.35rem}
.aff-verdict{margin:1rem 0 .3rem;padding:.7rem .9rem;background:var(--signal-weak);border-left:3px solid var(--signal);border-radius:6px;color:var(--ink);font-weight:500}
.aff-note{color:var(--ink-3);font-size:.82rem;margin-top:.5rem}

/* oversight: affected-checks generate form */
.aff-form{display:flex;gap:.5rem;align-items:center;margin-top:.6rem}
.aff-form .aff-in{flex:0 1 260px;padding:.5rem .7rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);color:var(--ink);font-family:var(--mono)}
.aff-ok{color:var(--sev-low);font-weight:600}
.aff-err{color:var(--sev-critical);font-weight:600}

/* interactive "check your environment" widget */
.aff-widget{margin-top:1.4rem;padding:1rem;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.aff-w-title{margin:0 0 .3rem;font-size:1rem}
.aff-w-lead{color:var(--ink-2);font-size:.9rem;margin:0 0 .6rem}
.aff-env{width:100%;box-sizing:border-box;padding:.6rem .7rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);color:var(--ink);font-family:var(--mono);font-size:.85rem;resize:vertical}
.aff-w-row{display:flex;align-items:center;gap:.7rem;margin-top:.6rem;flex-wrap:wrap}
.aff-w-hint{color:var(--ink-3);font-size:.78rem}
.aff-verdict-box{margin-top:.8rem;padding:.8rem .9rem;border-radius:10px;border:1px solid var(--border);background:var(--surface-2)}
.aff-verdict-box.loading{color:var(--ink-3)}
.aff-verdict-box .avb-head{font-weight:700;font-size:1rem}
.aff-verdict-box .avb-conf{font-size:.74rem;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em}
.aff-verdict-box .avb-reason{margin:.35rem 0 0;color:var(--ink);font-size:.92rem}
.aff-verdict-box .avb-need{margin:.4rem 0 0;color:var(--ink-2);font-size:.88rem}
.aff-verdict-box.is-affected{border-color:var(--sev-critical);background:rgba(251,84,115,.08)}
.aff-verdict-box.is-affected .avb-head{color:var(--sev-critical)}
.aff-verdict-box.is-clear{border-color:var(--sev-low);background:rgba(74,222,128,.08)}
.aff-verdict-box.is-clear .avb-head{color:var(--sev-low)}
.aff-verdict-box.is-unclear{border-color:var(--sev-medium);background:rgba(239,200,76,.08)}
.aff-verdict-box.is-unclear .avb-head{color:var(--sev-medium)}
.aff-verdict-box.is-error .avb-head{color:var(--ink-2)}

/* ============ dependency scanner (/scan) ============ */
.sr-scan .scan-hero{position:relative;overflow:hidden;padding:3rem 0 3.4rem}
/* faint situation-room grid behind the hero, faded at the edges */
.sr-scan .scan-hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:radial-gradient(125% 85% at 50% 0,#000 42%,transparent 80%);mask-image:radial-gradient(125% 85% at 50% 0,#000 42%,transparent 80%);pointer-events:none}
.scan-in{position:relative;max-width:1000px}
.sr-scan .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;font-size:.7rem;font-weight:500;color:var(--signal-2)}
.sr-scan .scan-head h1{font-family:var(--font-display);font-size:clamp(1.9rem,4.4vw,2.9rem);line-height:1.05;letter-spacing:-.01em;margin:.5rem 0}
.scan-in .lede{color:var(--ink-2);font-size:1.06rem;line-height:1.5;max-width:620px;margin:0}

/* supported ecosystems — the subject's own vocabulary, stated plainly */
.scan-ecos{display:flex;flex-wrap:wrap;gap:.4rem;margin:1.1rem 0 0}
.scan-eco{font-family:var(--mono);font-size:.72rem;font-weight:600;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.18rem .5rem}

/* the console: the scanner presented as a piece of equipment */
.scan-console{position:relative;margin-top:1.8rem;background:var(--surface);border:1px solid var(--border-2);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}
.scan-console::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--signal),transparent);opacity:.7}

.scan-seg{display:flex;gap:.25rem;padding:.5rem;background:var(--surface-2);border-bottom:1px solid var(--border)}
.scan-seg-btn{display:inline-flex;align-items:center;gap:.4rem;font:inherit;font-size:.85rem;font-weight:600;color:var(--ink-2);background:transparent;border:1px solid transparent;border-radius:8px;padding:.4rem .85rem;cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.scan-seg-btn:hover{color:var(--ink)}
.scan-seg-btn[aria-selected="true"]{background:var(--surface);color:var(--signal-2);border-color:var(--border-2)}
.scan-seg-btn:focus-visible{outline:2px solid var(--signal);outline-offset:2px}

.scan-bay{padding:1.1rem}
.scan-panel[hidden]{display:none}

/* drop target — a targeting bay with a live scanline (the page's signature) */
.scan-drop{position:relative;overflow:hidden;padding:2.4rem 1.2rem;text-align:center;border:1.5px dashed var(--border-strong);border-radius:12px;background:var(--surface-2);transition:border-color .15s,background .15s;cursor:pointer}
.scan-drop:hover{border-color:var(--signal-line)}
.scan-drop.drag{border-color:var(--signal);border-style:solid;background:var(--signal-weak)}
/* two corner reticle ticks (opposite corners) frame the bay */
.scan-drop::before,.scan-drop::after{content:"";position:absolute;width:16px;height:16px;pointer-events:none}
.scan-drop::before{top:9px;left:9px;border-top:2px solid var(--signal-line);border-left:2px solid var(--signal-line);border-top-left-radius:4px}
.scan-drop::after{bottom:9px;right:9px;border-bottom:2px solid var(--signal-line);border-right:2px solid var(--signal-line);border-bottom-right-radius:4px}
/* the scanline */
.scan-scan{position:absolute;left:0;right:0;top:0;height:2px;z-index:0;background:linear-gradient(90deg,transparent,var(--scan),transparent);box-shadow:0 0 12px 1px var(--scan);opacity:.55;animation:scanSweep 3.6s ease-in-out infinite;pointer-events:none}
.scan-drop.scanning .scan-scan{opacity:.9;animation-duration:1.05s}
@keyframes scanSweep{0%{top:0}50%{top:calc(100% - 2px)}100%{top:0}}
.scan-drop-body{position:relative;z-index:1}
.scan-ico{width:30px;height:30px;color:var(--signal);opacity:.9;margin-bottom:.4rem}
.scan-drop-main{margin:0;font-weight:600;font-size:1rem;color:var(--ink)}
.scan-browse{background:none;border:none;color:var(--signal-2);font:inherit;font-weight:700;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}
.scan-browse:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:3px}
.scan-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.scan-drop-sub{margin:.5rem 0 0;font-size:.76rem;color:var(--ink-3);font-family:var(--mono)}
.scan-fname{margin:.7rem 0 0;display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--signal-2);font-weight:600;font-family:var(--mono);background:var(--signal-weak);border:1px solid var(--signal-line);border-radius:6px;padding:.2rem .55rem}
.scan-fname::before{content:"\2713";font-weight:800}

.scan-text{width:100%;box-sizing:border-box;padding:.8rem .9rem;min-height:170px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-2);color:var(--ink);font-family:var(--mono);font-size:.82rem;line-height:1.5;resize:vertical}
.scan-text:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-weak)}
.scan-text::placeholder{color:var(--ink-3)}

.scan-launch{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:1rem 1.1rem;border-top:1px solid var(--border);background:var(--surface-2)}
.scan-launch .btn{min-width:210px}
.scan-note{color:var(--ink-3);font-size:.8rem}
.scan-tip{margin:1.1rem 0 0;color:var(--ink-3);font-size:.85rem}
.scan-tip code{font-family:var(--mono);font-size:.82em;background:var(--surface-3);padding:.05rem .3rem;border-radius:4px}

@media (prefers-reduced-motion:reduce){
  .scan-scan{animation:none;top:50%;opacity:.4}
}

/* ---- result readout ---- */
.scan-result{margin-top:1.8rem}
.scan-result.loading,.scan-result.err{padding:1rem 1.1rem;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.scan-loading{color:var(--ink-2);margin:0;font-family:var(--mono);font-size:.88rem}
.scan-loading::before{content:"";display:inline-block;width:.7rem;height:.7rem;margin-right:.5rem;border-radius:50%;background:var(--signal);animation:scanPulse 1s ease-in-out infinite;vertical-align:middle}
@keyframes scanPulse{0%,100%{opacity:.3}50%{opacity:1}}
.scan-err{color:var(--sev-critical);margin:0;font-weight:600}

.scan-sum{padding:1.2rem 1.3rem;border-radius:12px;border:1px solid var(--border);background:var(--surface)}
.scan-sum.has-vulns{border-color:var(--sev-high);background:rgba(251,146,60,.07)}
.scan-sum.clean{border-color:var(--sev-low);background:rgba(74,222,128,.07)}
.scan-sum-h{font-family:var(--font-display);font-size:1.2rem;font-weight:600;color:var(--ink);line-height:1.2}
.scan-sum.clean .scan-sum-h{color:var(--sev-low)}
.scan-sum.has-vulns .scan-sum-h{color:var(--sev-high)}
.scan-pills{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}
.scan-pill{font-size:.76rem;font-weight:700;padding:.14rem .55rem;border-radius:20px;text-transform:uppercase;letter-spacing:.02em}
.scan-pill.sev-critical{background:rgba(251,84,115,.16);color:var(--sev-critical)}
.scan-pill.sev-high{background:rgba(251,146,60,.16);color:var(--sev-high)}
.scan-pill.sev-medium{background:rgba(239,200,76,.16);color:var(--sev-medium)}
.scan-pill.sev-low{background:rgba(74,222,128,.16);color:var(--sev-low)}
.scan-meta{margin-top:.7rem;font-size:.8rem;color:var(--ink-3);font-family:var(--mono)}

.scan-cta{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:.9rem;padding:1rem 1.2rem;border-radius:10px;background:var(--signal-weak);border:1px solid var(--signal)}
.scan-cta span{color:var(--ink);font-weight:500}

.scan-pkg{margin-top:.8rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}
.sp-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem}
.sp-eco{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-3);background:var(--surface-3);padding:.1rem .4rem;border-radius:5px;font-family:var(--mono)}
.sp-name{font-family:var(--mono);font-weight:700;color:var(--ink)}
.sp-vuln{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.4rem 0;border-top:1px solid var(--border)}
.sp-sev{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;padding:.08rem .38rem;border-radius:5px;min-width:58px;text-align:center}
.sp-sev.sev-critical{background:rgba(251,84,115,.16);color:var(--sev-critical)}
.sp-sev.sev-high{background:rgba(251,146,60,.16);color:var(--sev-high)}
.sp-sev.sev-medium{background:rgba(239,200,76,.16);color:var(--sev-medium)}
.sp-sev.sev-low{background:rgba(74,222,128,.16);color:var(--sev-low)}
.sp-sev.sev-unknown{background:var(--surface-3);color:var(--ink-3)}
.sp-ref{font-family:var(--mono);font-weight:600;color:var(--signal-2);text-decoration:none}
.sp-ref:hover{text-decoration:underline}
.sp-fix{font-size:.78rem;color:var(--sev-low);font-family:var(--mono)}
.sp-sum{font-size:.85rem;color:var(--ink-2);flex:1 1 100%}
.scan-trunc{margin:.7rem 0 0;font-size:.82rem;color:var(--sev-medium)}
.sp-upgrade{margin:-.1rem 0 .5rem;font-size:.82rem;color:var(--sev-low);font-weight:600}
.sp-upgrade::before{content:"\2192 ";color:var(--sev-low)}
.sp-kev{font-size:.66rem;font-weight:800;letter-spacing:.03em;padding:.08rem .34rem;border-radius:5px;background:rgba(251,84,115,.18);color:var(--sev-critical)}
.sp-epss{font-size:.7rem;font-weight:700;padding:.06rem .34rem;border-radius:5px;background:rgba(239,200,76,.14);color:var(--sev-medium);font-family:var(--mono)}

/* ============ watchlist ============ */
.cve-watch{display:flex;flex-direction:column;gap:.5rem;padding:.9rem}
.watch-btn{width:100%;padding:.55rem .7rem;border:1px solid var(--signal);border-radius:9px;background:var(--signal-weak);color:var(--signal);font:inherit;font-weight:600;font-size:.9rem;cursor:pointer;transition:background .12s,color .12s;display:flex;align-items:center;justify-content:center;gap:.4rem}
.watch-btn::before{content:"\2606";font-size:1.05em}
.watch-btn:hover{background:var(--signal);color:var(--signal-ink)}
.watch-btn.watching{background:var(--signal);color:var(--signal-ink);border-color:var(--signal)}
.watch-btn.watching::before{content:"\2605"}
.watch-btn:disabled{opacity:.6;cursor:default}

.sr-watch .watch-in{max-width:760px;padding:2rem 0 3rem}
.watch-add{display:flex;gap:.5rem;margin:1.4rem 0 1.8rem;flex-wrap:wrap}
.watch-kind{padding:.55rem .6rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);color:var(--ink);font:inherit}
.watch-val{flex:1 1 260px;padding:.55rem .7rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);color:var(--ink);font:inherit}
.watch-sec{margin-top:1.4rem}
.watch-sec h2{font-size:1rem;margin:0 0 .5rem;color:var(--ink-2)}
.watch-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}
.watch-item{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;background:var(--surface-2);border:1px solid var(--border);border-radius:9px}
.watch-item .watch-name{font-weight:600;color:var(--ink)}
.watch-item .watch-name.mono{font-family:var(--mono);color:var(--signal);text-decoration:none}
.watch-item .watch-browse{font-size:.82rem;color:var(--signal);text-decoration:none}
.watch-item .watch-browse:hover{text-decoration:underline}
.watch-rm{margin-left:auto}
.watch-rm-btn{background:none;border:none;color:var(--ink-3);font:inherit;font-size:.85rem;cursor:pointer;padding:.2rem .3rem}
.watch-rm-btn:hover{color:var(--sev-critical)}

/* RSS links on the watchlist */
.watch-rss{font-size:.72rem;font-weight:700;letter-spacing:.03em;color:var(--sev-high);text-decoration:none;border:1px solid var(--sev-high);border-radius:4px;padding:.02rem .3rem}
.watch-rss:hover{background:rgba(251,146,60,.12)}

/* watchlist notification settings */
.watch-notif{padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}
.notif-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.4rem}
.notif-check{display:flex;align-items:center;gap:.5rem;color:var(--ink);font-size:.92rem}
.notif-label{color:var(--ink-2);font-size:.85rem;margin-top:.4rem}
.notif-url{padding:.5rem .7rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);color:var(--ink);font-family:var(--mono);font-size:.82rem}
.notif-actions{margin-top:.4rem}
.notif-test{margin-top:.5rem}
.notif-test-btn{background:none;border:1px solid var(--border-2);border-radius:8px;color:var(--ink-2);font:inherit;font-size:.84rem;padding:.35rem .7rem;cursor:pointer}
.notif-test-btn:hover{border-color:var(--signal);color:var(--signal)}

/* ---- hire-card polish: distinct CTA / estimate / breakdown / explanation zones ---- */
.sr-cve .hire-card{padding:22px 20px 20px}
.sr-cve .hire-card h3{margin:0 0 15px;line-height:1.32;font-size:1.12rem}
.sr-cve .hc-cta{margin:2px 0 18px}
.sr-cve .hc-cta.btn{height:44px;font-size:.95rem;font-weight:600}
/* estimate box: the headline numbers */
.sr-cve .quote-teaser{margin:0 0 16px;border-color:var(--border-2)}
.sr-cve .qt-row{padding:11px 14px}
.sr-cve .qt-price{padding:13px 14px}
.sr-cve .qt-price span{color:var(--ink-2)}
.sr-cve .qt-price b{font-size:1.06rem;font-weight:700;color:var(--signal-2)}
/* breakdown: a subordinate divided list under the estimate */
.sr-cve .hc-involves{margin:0 0 18px;padding:0}
.sr-cve .hci-k{margin-bottom:6px}
.sr-cve .hci-lines li{padding:6px 0;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.sr-cve .hci-lines li:first-child{border-top:0}
/* explanation: separated from the estimate by a full-width divider */
.sr-cve .hire-card .hc-lead{margin:0;padding-top:16px;border-top:1px solid var(--border);color:var(--ink-2);font-size:.9rem;line-height:1.58}
.sr-cve .hire-card p.small{margin:12px 0 0;line-height:1.5}

/* ============ dependency scanner — hero, capabilities, CLI upsell ============ */
/* Two-column lead: explanatory copy + a terminal that mirrors real scan output. */
.sr-scan .scan-lead{display:grid;grid-template-columns:1.02fr .98fr;gap:2.6rem;align-items:center;margin-bottom:2rem}
.sr-scan .scan-copy .lede{margin-top:.6rem}
.sr-scan .scan-copy .scan-ecos{margin-top:1.15rem}
.scan-lead-cta{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.5rem}

/* the terminal — always dark for authenticity, tuned to the night-ops palette */
.scan-term{border:1px solid #1e252b;border-radius:14px;overflow:hidden;background:#0b0e11;box-shadow:0 2px 8px rgba(0,0,0,.35),0 24px 60px rgba(0,0,0,.35);font-family:var(--mono);font-size:.79rem;line-height:1.62}
.scan-term .st-bar{display:flex;align-items:center;gap:7px;padding:.55rem .8rem;background:#14181d;border-bottom:1px solid #1e252b}
.scan-term .st-dot{width:11px;height:11px;border-radius:50%;background:#3a444d}
.scan-term .st-dot.st-r{background:#ff5f56}.scan-term .st-dot.st-y{background:#ffbd2e}.scan-term .st-dot.st-g{background:#27c93f}
.scan-term .st-title{margin-left:6px;color:#7d8b95;font-size:.72rem;letter-spacing:.02em}
.scan-term .st-body{padding:.9rem 1rem 1.05rem;color:#cdd6dd}
.scan-term .st-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scan-term .st-prompt{color:#2dd4bf;font-weight:700;margin-right:.1rem}
.scan-term .st-file{margin-top:.5rem;color:#e9edf0;font-weight:600}
.scan-term .st-muted{color:#6a7883;font-weight:400}
.scan-term .st-warn{color:#fb923c}
.scan-term .st-pkg{margin-top:.5rem;color:#e9edf0;padding-left:1.1rem}
.scan-term .st-vuln{padding-left:1.1rem}
.scan-term .st-sev{display:inline-block;min-width:4.4em;font-weight:700}
.scan-term .st-high{color:#fb923c}.scan-term .st-med{color:#efc84c}.scan-term .st-low{color:#4ade80}.scan-term .st-crit{color:#fb5473}
.scan-term .st-fix{color:#4ade80}
.scan-term .st-sum{color:#8a97a1;padding-left:5.5rem}

/* keep the interactive tool and its results in a focused column under the wide hero */
/* the console was capped at 800px while the copy above it runs to 1000px — it read as
   inset and misaligned. It is the main event on this page; let it fill the column. */
.sr-scan .scan-console{max-width:none;margin-left:0;margin-right:0;width:100%}
/* the result was capped at 800px while the console above it now runs full width — it read
   as a narrower, misaligned block hanging under a wider one */
.sr-scan .scan-result{max-width:none;margin-left:0;margin-right:0;width:100%}


/* section heading shared by the caps + CLI bands */
.sr-scan .scan-h2{font-family:var(--font-display);font-size:1.5rem;line-height:1.15;letter-spacing:-.01em;margin:0 0 1.1rem}

/* capabilities — what it checks / how it helps */
.scan-caps{margin-top:3.2rem}
.scan-cap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:1rem}
.scan-cap{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:1.15rem 1.2rem}
.scan-cap-ic{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:9px;background:var(--signal-weak);color:var(--signal);border:1px solid var(--signal-line);margin-bottom:.7rem}
.scan-cap-ic svg{width:19px;height:19px}
.scan-cap h3{font-size:1rem;font-weight:700;margin:0 0 .35rem;color:var(--ink)}
.scan-cap p{margin:0;font-size:.88rem;line-height:1.55;color:var(--ink-2)}
.scan-cap p code{font-family:var(--mono);font-size:.85em;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:.02rem .3rem}

/* open-source CLI upsell band */
.scan-cli{margin-top:1.4rem;display:grid;grid-template-columns:1.1fr .9fr;gap:2rem;align-items:center;padding:1.8rem;border:1px solid var(--border-2);border-radius:var(--radius-lg);background:var(--surface);position:relative;overflow:hidden}
.scan-cli::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(var(--signal),transparent)}
.scan-cli-lede{margin:0 0 .9rem;color:var(--ink-2);font-size:.95rem;line-height:1.55}
.scan-cli-pts{list-style:none;margin:0 0 1.2rem;padding:0;display:flex;flex-direction:column;gap:.4rem}
.scan-cli-pts li{position:relative;padding-left:1.5rem;font-size:.88rem;color:var(--ink-2);line-height:1.4}
.scan-cli-pts li::before{content:"";position:absolute;left:0;top:.3rem;width:12px;height:12px;border-radius:50%;background:var(--signal-weak);border:1.5px solid var(--signal)}
.scan-cli-cta{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.scan-cli-note{color:var(--ink-3);font-size:.8rem}
.scan-cli-code{background:#0b0e11;border:1px solid #1e252b;border-radius:12px;padding:.9rem 1rem;overflow-x:auto}
.scan-cli-code pre{margin:0}
.scan-cli-code code{font-family:var(--mono);font-size:.8rem;line-height:1.7;color:#cdd6dd;white-space:pre}
.scan-cli-code .st-muted{color:#6a7883}

@media (max-width:860px){
  .sr-scan .scan-lead{grid-template-columns:1fr;gap:1.6rem}
  .scan-cli{grid-template-columns:1fr;gap:1.4rem}
}

/* ============ CWE weakness animations (/cve/{id} hero) ============ */
/* Pure SVG + CSS. Base styles are the settled state; keyframes create the motion,
   so under prefers-reduced-motion every scene degrades to a clean static picture. */
.cwe-anim{flex:0 0 320px;max-width:320px}
.cwe-anim svg{width:100%;height:auto;display:block;overflow:visible}
.cwe-anim text{font-family:var(--sans)}
.cwe-anim .a-code{font-family:var(--mono);font-size:13px}
.cwe-anim .a-tag{font-family:var(--mono);font-size:10px;letter-spacing:.02em}
.cwe-anim .a-box{fill:var(--surface-2);stroke:var(--border-2);stroke-width:1.5}
.cwe-anim .a-term{fill:var(--surface-3);stroke:var(--border-2);stroke-width:1.5}
.cwe-anim .a-termline{stroke:var(--border);stroke-width:1.5}
.cwe-anim .a-line{stroke:var(--border-2);stroke-width:1.5;fill:none}
.cwe-anim .a-wire{stroke:var(--ink-3);stroke-width:1.5;fill:none}
.cwe-anim .a-bound{stroke:var(--sev-high);stroke-width:1.5;stroke-dasharray:4 4}
.cwe-anim .a-accent{stroke:var(--signal);stroke-width:1.6;fill:none}
.cwe-anim .a-accent-f{fill:var(--signal)}
.cwe-anim .a-danger{stroke:var(--sev-critical);stroke-width:1.6;fill:none}
.cwe-anim .a-danger-f{fill:var(--sev-critical)}
.cwe-anim .a-muted-f{fill:var(--ink-3)}
.cwe-anim .a-muted-t{fill:var(--ink-3)}
.cwe-anim .a-ink-t{fill:var(--ink-2)}
.cwe-anim .a-accent-t{fill:var(--signal-2)}
.cwe-anim .a-danger-t{fill:var(--sev-critical)}
.cwe-anim .a-flow{stroke-dasharray:6 6;animation:cweFlow 1.1s linear infinite}
@keyframes cweFlow{to{stroke-dashoffset:-12}}

/* sqli — payload reaches the database, records leak back */
.cwe-anim .qa-pay{animation:qaPay 3s ease-in-out infinite}
@keyframes qaPay{0%{transform:translateX(0);opacity:0}8%{opacity:1}40%{transform:translateX(68px);opacity:1}47%{opacity:0}100%{transform:translateX(68px);opacity:0}}
.cwe-anim .qa-row{animation:qaRow 3s ease-in-out infinite}
.cwe-anim .qa-row1{animation-delay:1.2s}.cwe-anim .qa-row2{animation-delay:1.4s}.cwe-anim .qa-row3{animation-delay:1.6s}
@keyframes qaRow{0%{opacity:0;transform:translateX(-14px)}18%{opacity:1;transform:translateX(0)}80%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(6px)}}

/* xss — script smuggled through input, then fires in the page */
.cwe-anim .xs-tag,.cwe-anim .xs-tagt{animation:xsTag 3.2s ease-in-out infinite}
@keyframes xsTag{0%{transform:translate(0,0);opacity:0}10%{opacity:1}45%{transform:translate(92px,22px);opacity:1}55%{opacity:0}100%{opacity:0}}
.cwe-anim .xs-spark{transform-box:fill-box;transform-origin:center;animation:xsSpark 3.2s ease-in-out infinite}
@keyframes xsSpark{0%,50%{opacity:0;transform:scale(.5)}64%{opacity:1;transform:scale(1)}82%{opacity:.8}100%{opacity:0;transform:scale(1.15)}}

/* path — ../ climbs out of the webroot to a protected file */
.cwe-anim .pt-dots{animation:ptStep 3s ease-in-out infinite}
.cwe-anim .pt-d1{animation-delay:0s}.cwe-anim .pt-d2{animation-delay:.45s}.cwe-anim .pt-d3{animation-delay:.9s}
@keyframes ptStep{0%{opacity:.12}12%{opacity:1}42%{opacity:1}58%{opacity:.12}100%{opacity:.12}}
.cwe-anim .pt-lock{animation:ptLock 3s ease-in-out infinite}
@keyframes ptLock{0%,48%{opacity:.35}62%{opacity:1}86%{opacity:1}100%{opacity:.35}}

/* cmdi — appended command runs on the server */
.cwe-anim .cm-cursor{animation:cmCur 1s steps(1) infinite}
@keyframes cmCur{0%,49%{opacity:1}50%,100%{opacity:0}}
.cwe-anim .cm-inj{animation:cmInj 3.2s ease-in-out infinite}
@keyframes cmInj{0%,18%{opacity:0}28%{opacity:1}100%{opacity:1}}
.cwe-anim .cm-out{animation:cmOut 3.2s ease-in-out infinite}
.cwe-anim .cm-out2{animation-delay:.25s}
@keyframes cmOut{0%,45%{opacity:0;transform:translateY(-3px)}58%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}

/* ssrf — outward request redirected to an internal service */
.cwe-anim .sf-ghost{stroke:var(--ink-3);stroke-width:1.4;stroke-dasharray:3 4;opacity:.5}
.cwe-anim .sf-req{animation:cweFlow 1.1s linear infinite,sfPulse 3s ease-in-out infinite}
@keyframes sfPulse{0%,100%{opacity:.55}50%{opacity:1}}

/* mitm — packets between client and server, copied by a listener */
.cwe-anim .mm-pk{animation:mmPk 3s linear infinite}
.cwe-anim .mm-b{animation:mmPkB 3s linear infinite;animation-delay:1.5s}
@keyframes mmPk{0%{transform:translateX(0);opacity:0}8%{opacity:1}88%{transform:translateX(150px);opacity:1}100%{transform:translateX(150px);opacity:0}}
@keyframes mmPkB{0%{transform:translateX(150px);opacity:0}8%{opacity:1}88%{transform:translateX(0);opacity:1}100%{transform:translateX(0);opacity:0}}
.cwe-anim .mm-tap{animation:mmTap 3s ease-in-out infinite}
@keyframes mmTap{0%,44%{opacity:0;transform:translateY(0)}56%{opacity:1;transform:translateY(0)}82%{opacity:1;transform:translateY(50px)}100%{opacity:0;transform:translateY(50px)}}

/* generic — a probe testing a defended boundary, a crack forming */
.cwe-anim .gn-crack{stroke-dasharray:120;animation:gnCrack 3.4s ease-in-out infinite}
@keyframes gnCrack{0%{stroke-dashoffset:120;opacity:.25}42%{stroke-dashoffset:0;opacity:1}78%{opacity:1}100%{stroke-dashoffset:0;opacity:.25}}
.cwe-anim .gn-probe{transform-box:fill-box;transform-origin:center;animation:gnProbe 3.4s ease-in-out infinite}
@keyframes gnProbe{0%,100%{opacity:.3;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}

/* place the scene to the right of the hero content */
.sr-cve .cve-hero{display:flex;align-items:center;gap:2.4rem;justify-content:space-between;flex-wrap:wrap}
.sr-cve .cve-hero-main{flex:1 1 340px;min-width:min(340px,100%)}

@media (max-width:760px){
  .cwe-anim{flex-basis:100%;max-width:380px}
}
@media (prefers-reduced-motion:reduce){
  .cwe-anim *{animation:none!important}
}

/* ============ CVE detail — paired sections, relocated weakness, tools, tidy refs ============ */
/* Affected products + CVSS breakdown as a deliberate two-column pair. auto-fit means a
   single present section spans the full width; both present split it. Stacks on mobile. */
.sr-cve .cve-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:20px;margin:0 0 30px;align-items:start}
.sr-cve .cve-pair .sec{margin:0}
.sr-cve .cve-pair .sec>h2{margin-bottom:12px}
/* inside the narrower columns, let the inner grids breathe as 1–2 cols */
.sr-cve .cve-pair .tech-grid{grid-template-columns:1fr;gap:10px}
.sr-cve .cve-pair .vector-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}

/* right-aligned, neatly-wrapping tag group on reference rows */
.sr-cve .ref-tags{margin-left:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;flex:0 0 auto;max-width:55%}

/* weakness, rehoused compactly in the "At a glance" aside */
.sr-cve .facts .fact-weak{display:block}
.sr-cve .facts .fact-weak dt{margin-bottom:6px}
.sr-cve .fact-cwes{display:flex;flex-wrap:wrap;gap:6px}
.sr-cve .fact-cwe{display:inline-flex;align-items:baseline;gap:6px;max-width:100%;padding:3px 9px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-2);text-decoration:none;line-height:1.3}
.sr-cve .fact-cwe:hover{border-color:var(--signal)}
.sr-cve .fact-cwe .fc-id{font-family:var(--mono);font-size:.72rem;font-weight:700;color:var(--signal-2);flex:none}
.sr-cve .fact-cwe .fc-name{font-size:.76rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* tools section — the open-source scanner */
.sr-cve .sec-tools .tool-card{display:flex;align-items:center;gap:16px;padding:16px 18px;border:1px solid var(--border-2);border-radius:var(--radius-lg);background:var(--surface);position:relative;overflow:hidden}
.sr-cve .sec-tools .tool-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(var(--signal),transparent)}
.sr-cve .sec-tools .tool-ic{flex:none;width:42px;height:42px;display:grid;place-items:center;border-radius:11px;background:var(--signal-weak);border:1px solid var(--signal-line);color:var(--signal)}
.sr-cve .sec-tools .tool-ic svg{width:22px;height:22px}
.sr-cve .sec-tools .tool-txt{flex:1 1 auto;min-width:0}
.sr-cve .sec-tools .tool-txt b{display:block;color:var(--ink);font-size:.98rem;margin-bottom:3px}
.sr-cve .sec-tools .tool-txt p{margin:0;color:var(--ink-2);font-size:.88rem;line-height:1.5}
.sr-cve .sec-tools .tool-cta{flex:none;display:flex;flex-direction:column;gap:8px;align-items:stretch}
.sr-cve .sec-tools .tool-cta .btn{white-space:nowrap;justify-content:center}

@media (max-width:640px){
  .sr-cve .sec-tools .tool-card{flex-direction:column;align-items:flex-start}
  .sr-cve .sec-tools .tool-cta{flex-direction:row;width:100%}
  .sr-cve .ref-tags{max-width:none}
}

/* ============ CVE detail — Remediation block (fix classification, Phase 2) ============ */
.sr-cve .sec-rem .rem-card{position:relative;overflow:hidden;border:1px solid var(--border-2);border-radius:var(--radius-lg);background:var(--surface);padding:18px 20px 18px 22px}
.sr-cve .sec-rem .rem-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--signal)}
.sr-cve .rem-mitigation .rem-card::before{background:var(--sev-medium)}
.sr-cve .rem-unknown .rem-card::before{background:var(--sev-critical)}
.sr-cve .rem-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.sr-cve .rem-badge{font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 10px;border-radius:999px;background:var(--signal-weak);color:var(--signal-2);border:1px solid var(--signal-line);white-space:nowrap}
.sr-cve .rem-mitigation .rem-badge{background:color-mix(in srgb,var(--sev-medium) 12%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 34%,transparent)}
.sr-cve .rem-unknown .rem-badge{background:color-mix(in srgb,var(--sev-critical) 12%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 34%,transparent)}
.sr-cve .rem-headline{font-family:var(--font-display);font-size:1.12rem;font-weight:600;color:var(--ink);line-height:1.2}
.sr-cve .rem-detail{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.sr-cve .rem-detail .rem-k{flex:none;font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);min-width:104px;padding-top:2px}
.sr-cve .rem-detail p{margin:0;color:var(--ink-2);font-size:.9rem;line-height:1.55;flex:1 1 240px}
.sr-cve .rem-detail a{color:var(--signal-2);font-family:var(--mono);font-size:.85rem;word-break:break-all}
.sr-cve .rem-pills{display:flex;flex-wrap:wrap;gap:6px}
.sr-cve .verpill.fixpill{color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 34%,transparent);background:color-mix(in srgb,var(--sev-low) 12%,transparent)}
.sr-cve .rem-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.sr-cve .rem-cta-line{color:var(--ink-2);font-size:.9rem;line-height:1.5;flex:1 1 260px}
.sr-cve .rem-btn{flex:none;white-space:nowrap}
@media (max-width:640px){ .sr-cve .rem-cta .rem-btn{width:100%;justify-content:center} }

/* Phase 3 — AI remediation sub-block inside the Remediation card */
.sr-cve .rem-ai{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}
.sr-cve .rem-ai-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.sr-cve .rem-ai-title{font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2)}
.sr-cve .conf-chip{font-family:var(--mono);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 9px;border-radius:999px;border:1px solid var(--border-2);color:var(--ink-3);white-space:nowrap}
.sr-cve .conf-chip.conf-high{color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 34%,transparent);background:color-mix(in srgb,var(--sev-low) 12%,transparent)}
.sr-cve .conf-chip.conf-moderate{color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 34%,transparent);background:color-mix(in srgb,var(--sev-medium) 12%,transparent)}
.sr-cve .conf-chip.conf-low{color:var(--ink-3);border-color:var(--border-2);background:var(--surface-2)}
.sr-cve .rem-ai-path{margin:0 0 12px;color:var(--ink);font-size:.92rem;font-weight:600}
.sr-cve .rem-steps{margin:0;padding:0;list-style:none;counter-reset:remstep}
.sr-cve .rem-steps li{position:relative;counter-increment:remstep;padding:0 0 11px 34px;color:var(--ink-2);font-size:.9rem;line-height:1.55}
.sr-cve .rem-steps li:last-child{padding-bottom:0}
.sr-cve .rem-steps li::before{content:counter(remstep);position:absolute;left:0;top:-1px;width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:var(--signal-weak);color:var(--signal-2);border:1px solid var(--signal-line);font-family:var(--mono);font-size:.72rem;font-weight:700}
.sr-cve .rem-ai-caveat{margin-top:12px;padding:9px 12px;border-radius:9px;background:color-mix(in srgb,var(--sev-medium) 9%,transparent);border:1px solid color-mix(in srgb,var(--sev-medium) 26%,transparent);color:var(--ink-2);font-size:.86rem;line-height:1.5}
.sr-cve .rem-ai-caveat-k{font-family:var(--mono);font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sev-medium);margin-right:6px}
.sr-cve .rem-ai-note{margin:12px 0 0;color:var(--ink-3);font-size:.78rem;line-height:1.45;font-style:italic}

/* ============ Phase 4 — "solution needed" demand block (CVE page) ============ */
.sr-cve .rem-needed{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}
.sr-cve .rn-demand{display:inline-flex;align-items:baseline;gap:8px;margin-bottom:11px;padding:5px 12px;border-radius:999px;background:color-mix(in srgb,var(--sev-critical) 10%,transparent);border:1px solid color-mix(in srgb,var(--sev-critical) 26%,transparent)}
.sr-cve .rn-demand b{font-family:var(--mono);font-size:1rem;font-weight:700;color:var(--sev-critical)}
.sr-cve .rn-demand span{font-size:.82rem;color:var(--ink-2)}
.sr-cve .rn-lead{margin:0 0 12px;color:var(--ink-2);font-size:.92rem;line-height:1.55}
.sr-cve .rn-form{display:flex;gap:10px;flex-wrap:wrap}
.sr-cve .rn-email{flex:1 1 260px;min-width:0;padding:10px 12px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-2);color:var(--ink);font-size:.9rem;font-family:inherit}
.sr-cve .rn-email::placeholder{color:var(--ink-3)}
.sr-cve .rn-email:focus{outline:none;border-color:var(--signal)}
.sr-cve .rn-btn{flex:none;white-space:nowrap}
.sr-cve .rn-alt{margin:12px 0 0;color:var(--ink-3);font-size:.82rem;line-height:1.5}
.sr-cve .rn-alt a{color:var(--signal-2)}
.sr-cve .rn-done{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:.9rem;line-height:1.5}
.sr-cve .rn-done svg{flex:none;color:var(--sev-low)}
.sr-cve .rn-done a{color:var(--signal-2)}
@media (max-width:640px){ .sr-cve .rn-btn{width:100%;justify-content:center} }

/* ============ Phase 4 — solutions-needed board ============ */
.sr-solneed{max-width:920px}
.sr-solneed .sn-head{margin-bottom:26px}
.sr-solneed .sn-head h1{margin:.3rem 0 .5rem}
.sr-solneed .sn-lede{color:var(--ink-2);font-size:1rem;line-height:1.6;max-width:70ch}
.sr-solneed .sn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.sr-solneed .sn-item{margin:0}
.sr-solneed .sn-link{display:flex;align-items:center;gap:16px;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--surface);text-decoration:none;transition:border-color .12s,background .12s}
.sr-solneed .sn-link:hover{border-color:var(--border-2);background:var(--surface-2)}
.sr-solneed .sn-demand{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:64px;padding:6px 0;border-radius:10px;background:color-mix(in srgb,var(--sev-critical) 10%,transparent);border:1px solid color-mix(in srgb,var(--sev-critical) 24%,transparent)}
.sr-solneed .sn-demand b{font-family:var(--mono);font-size:1.25rem;font-weight:700;color:var(--sev-critical);line-height:1}
.sr-solneed .sn-demand small{font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-top:3px}
.sr-solneed .sn-main{flex:1 1 auto;min-width:0}
.sr-solneed .sn-id{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.95rem;font-weight:700;color:var(--ink);margin-bottom:3px}
.sr-solneed .sn-kev{font-family:var(--mono);font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--sev-critical) 14%,transparent);color:var(--sev-critical);border:1px solid color-mix(in srgb,var(--sev-critical) 30%,transparent)}
.sr-solneed .sn-desc{color:var(--ink-2);font-size:.88rem;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sr-solneed .sn-sev{flex:none;font-family:var(--mono);font-size:.72rem;font-weight:600;padding:4px 10px;border-radius:8px;white-space:nowrap}
.sr-solneed .sn-sev.sev-critical{background:color-mix(in srgb,var(--sev-critical) 14%,transparent);color:var(--sev-critical)}
.sr-solneed .sn-sev.sev-high{background:color-mix(in srgb,var(--sev-high) 14%,transparent);color:var(--sev-high)}
.sr-solneed .sn-sev.sev-medium{background:color-mix(in srgb,var(--sev-medium) 14%,transparent);color:var(--sev-medium)}
.sr-solneed .sn-sev.sev-low{background:color-mix(in srgb,var(--sev-low) 14%,transparent);color:var(--sev-low)}
.sr-solneed .sn-sev.sev-na{background:var(--surface-3);color:var(--ink-3)}
.sr-solneed .sn-foot{margin-top:22px;color:var(--ink-3);font-size:.88rem}
.sr-solneed .sn-foot a{color:var(--signal-2)}
@media (max-width:560px){ .sr-solneed .sn-link{flex-wrap:wrap} }

/* ============ CVE page tweaks: affected-verdict spacing + version-pill alignment ============ */
/* .sr-cve .sec p (margin:0 0 12px) was overriding .aff-verdict's top margin — restore the gap. */
.sr-cve .sec .aff-verdict{margin-top:1.15rem}
/* Affected-products cards are a flex row: keep the product label left and align the
   version pills flush right (consistent across cards), and drop the stacked-row divider. */
.sr-cve .tech-card .tc-head{min-width:0}
.sr-cve .tc-ver{margin-left:auto;flex:0 0 auto;margin-top:0;padding-top:0;border-top:none;justify-content:flex-end}

/* ============ Relevance step 3 — archived (dormant) CVE framing ============ */
.sr-cve .cve-archived-banner{display:flex;align-items:flex-start;gap:12px;margin:0 0 22px;padding:13px 16px;border:1px solid var(--border-2);border-radius:12px;background:var(--surface-2);color:var(--ink-2)}
.sr-cve .cve-archived-banner svg{flex:none;margin-top:1px;color:var(--ink-3)}
.sr-cve .cve-archived-banner b{color:var(--ink)}
.sr-cve .cve-archived-banner div{font-size:.9rem;line-height:1.55}
.sr-cve .rem-archived .rem-card::before{background:var(--ink-3)}
.sr-cve .rem-archived .rem-badge{background:var(--surface-3);color:var(--ink-2);border-color:var(--border-2)}
.sr-cve .rem-arch-note{margin:12px 0 0;color:var(--ink-2);font-size:.92rem;line-height:1.6}
.sr-cve .rem-arch-note a{color:var(--signal-2)}

/* ============ Affected-products pills: wrap long multi-range lists ============ */
/* Put the version ranges on their own full-width row under the product so long lists
   (e.g. Drupal's 6 ranges) wrap instead of overflowing to the right. Pills never break. */
.sr-cve .tech-card{flex-direction:column;align-items:stretch;gap:0}
.sr-cve .tc-ver{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--border);flex:0 1 auto;flex-wrap:wrap;justify-content:flex-start}
.sr-cve .tc-ver .verpill{white-space:nowrap}

/* ============ Hire-card polish ============ */
/* Keep the price on one line (was wrapping and leaning the row left), box the
   "what's involved" list for definition, and tidy the vertical rhythm. */
.sr-cve .qt-row{align-items:baseline}
.sr-cve .qt-price b{white-space:nowrap;font-size:1rem}
.sr-cve .hc-involves{margin:2px 0 16px;padding:11px 14px;border:1px solid var(--border);border-radius:10px}
.sr-cve .hci-lines li:first-child{border-top:0;padding-top:0}
.sr-cve .hci-lines li:last-child{padding-bottom:0}
.sr-cve .hire-card h3{line-height:1.3}

/* ============ Header: watchlist count icon ============ */
.wl-nav{position:relative}
.wl-nav svg{width:19px;height:19px}
.wl-nav.has-items{color:var(--signal-2)}
.wl-nav-count{position:absolute;top:-4px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--signal);color:#04141a;font-size:.6rem;font-weight:800;line-height:16px;text-align:center;font-family:var(--mono)}

/* ============ Watchlist page — live feed (left) + manage (right) ============ */
.sr-watch .wl-head{max-width:760px;margin:0 0 26px}
.sr-watch .wl-head h1{margin:.3rem 0 .5rem}
.sr-watch .wl-head .lede{color:var(--ink-2);font-size:1rem;line-height:1.6}
.sr-watch .wl-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px;align-items:start}
@media(max-width:860px){.sr-watch .wl-grid{grid-template-columns:1fr}}

.sr-watch .wl-main-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.sr-watch .wl-main-head h2{margin:0;font-size:1.1rem}
.sr-watch .wl-sub{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);white-space:nowrap}
.sr-watch .wl-feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sr-watch .wl-fitem{margin:0}
.sr-watch .wl-flink{display:flex;align-items:center;gap:13px;padding:11px 14px;border:1px solid var(--border);border-radius:11px;background:var(--surface);text-decoration:none;transition:border-color .12s,background .12s}
.sr-watch .wl-flink:hover{border-color:var(--border-2);background:var(--surface-2)}
.sr-watch .wl-fsev{flex:none;width:46px;height:46px;display:grid;place-items:center;border-radius:9px;font-family:var(--mono);font-weight:700;font-size:.92rem}
.sr-watch .wl-fsev.sev-critical{background:color-mix(in srgb,var(--sev-critical) 14%,transparent);color:var(--sev-critical)}
.sr-watch .wl-fsev.sev-high{background:color-mix(in srgb,var(--sev-high) 14%,transparent);color:var(--sev-high)}
.sr-watch .wl-fsev.sev-medium{background:color-mix(in srgb,var(--sev-medium) 14%,transparent);color:var(--sev-medium)}
.sr-watch .wl-fsev.sev-low{background:color-mix(in srgb,var(--sev-low) 14%,transparent);color:var(--sev-low)}
.sr-watch .wl-fsev.sev-na{background:var(--surface-3);color:var(--ink-3);font-size:.72rem}
.sr-watch .wl-fmain{flex:1 1 auto;min-width:0}
.sr-watch .wl-ftop{display:flex;align-items:center;gap:8px;margin-bottom:3px}
.sr-watch .wl-fid{font-family:var(--mono);font-size:.85rem;font-weight:700;color:var(--ink)}
.sr-watch .wl-fkev{font-family:var(--mono);font-size:.56rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:1px 5px;border-radius:4px;background:color-mix(in srgb,var(--sev-critical) 14%,transparent);color:var(--sev-critical)}
.sr-watch .wl-fctx{font-size:.74rem;color:var(--ink-3);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}
.sr-watch .wl-fdesc{display:block;color:var(--ink-2);font-size:.86rem;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-watch .wl-fdate{flex:none;font-size:.74rem;color:var(--ink-3);font-family:var(--mono);white-space:nowrap}
.sr-watch .wl-feed-empty{padding:26px 22px;border:1px dashed var(--border-2);border-radius:12px;color:var(--ink-3);font-size:.92rem;text-align:center}

.sr-watch .wl-side{display:flex;flex-direction:column;gap:16px}
.sr-watch .wl-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:16px}
.sr-watch .wl-card h3{margin:0 0 12px;font-size:.95rem}
.sr-watch .watch-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sr-watch .watch-add .watch-kind,.sr-watch .watch-add .watch-val{padding:9px 11px;border:1px solid var(--border-2);border-radius:9px;background:var(--surface-2);color:var(--ink);font-size:.9rem;font-family:inherit}
.sr-watch .watch-add .watch-val{flex:1 1 130px;min-width:0}
.sr-watch .watch-add .btn{flex:0 0 auto}

.sr-watch .wl-mgroup{margin-top:14px}
.sr-watch .wl-mgroup:first-child{margin-top:0}
.sr-watch .wl-mk{display:block;font-family:var(--mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:6px}
.sr-watch .wl-mlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.sr-watch .wl-mitem{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;background:var(--surface-2)}
.sr-watch .wl-mname{color:var(--ink);font-size:.85rem;text-decoration:none;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-watch a.wl-mname:hover{color:var(--signal-2)}
.sr-watch .wl-mrss{font-family:var(--mono);font-size:.58rem;font-weight:700;color:var(--ink-3);text-decoration:none;padding:1px 5px;border:1px solid var(--border-2);border-radius:4px;flex:none}
.sr-watch .wl-mrss:hover{color:var(--signal-2);border-color:var(--signal)}
.sr-watch .wl-mrm{margin:0;flex:none}
.sr-watch .wl-mrm-btn{border:none;background:none;color:var(--ink-3);font-size:1.15rem;line-height:1;cursor:pointer;padding:0 2px}
.sr-watch .wl-mrm-btn:hover{color:var(--sev-critical)}

.sr-watch .wl-empty{max-width:520px;margin:14px auto 0;text-align:center;padding:38px 28px;border:1px dashed var(--border-2);border-radius:16px;background:var(--surface)}
.sr-watch .wl-empty svg{color:var(--ink-3);margin-bottom:10px}
.sr-watch .wl-empty h2{margin:0 0 8px;font-size:1.15rem}
.sr-watch .wl-empty p{color:var(--ink-2);font-size:.95rem;line-height:1.6;margin:0 0 18px}
.sr-watch .wl-empty-add{justify-content:center}

.sr-watch .watch-notif .notif-check{display:flex;align-items:center;gap:8px;font-size:.86rem;color:var(--ink-2);margin-bottom:12px}
.sr-watch .watch-notif .notif-label{display:block;font-size:.78rem;color:var(--ink-3);margin-bottom:6px}
.sr-watch .watch-notif .notif-url{width:100%;padding:9px 11px;border:1px solid var(--border-2);border-radius:9px;background:var(--surface-2);color:var(--ink);font-size:.85rem;font-family:inherit;box-sizing:border-box}
.sr-watch .watch-notif .notif-actions{margin-top:10px}
.sr-watch .watch-notif .notif-test{margin-top:10px}
.sr-watch .watch-notif .notif-test-btn{background:none;border:1px solid var(--border-2);border-radius:8px;padding:7px 12px;color:var(--ink-2);font-size:.82rem;cursor:pointer}
.sr-watch .watch-notif .notif-test-btn:hover{border-color:var(--signal)}
.sr-watch .aff-ok{color:var(--sev-low);font-size:.85rem;margin:0 0 8px}
.sr-watch .aff-err{color:var(--sev-critical);font-size:.85rem;margin:0 0 8px}

/* ============ Watchlist feed — recency grouping, summary, NEW markers ============ */
.sr-watch .wl-summary{margin:0 0 16px;font-size:.9rem;color:var(--ink-2);line-height:1.5}
.sr-watch .wl-sum-new{color:var(--signal-2);font-weight:700}
.sr-watch .wl-sum-kev{color:var(--sev-critical);font-weight:700}
.sr-watch .wl-bucket{list-style:none;margin:18px 0 9px;font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);display:flex;align-items:center;gap:10px}
.sr-watch .wl-bucket:first-child{margin-top:0}
.sr-watch .wl-bucket::after{content:"";flex:1;height:1px;background:var(--border)}
.sr-watch .wl-bucket-new{color:var(--signal-2)}
.sr-watch .wl-fnew{font-family:var(--mono);font-size:.54rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:1px 5px;border-radius:4px;background:var(--signal);color:#04141a}
.sr-watch .wl-flink.is-new{border-color:color-mix(in srgb,var(--signal) 40%,var(--border))}
.sr-watch .wl-mnew{flex:none;font-family:var(--mono);font-size:.6rem;font-weight:700;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--signal) 15%,transparent);color:var(--signal-2);white-space:nowrap}

/* ============ Weakness glossary (/weaknesses) ============ */
.sr-weak .wk-head{max-width:820px;margin:0 0 22px}
.sr-weak .wk-head h1{margin:.3rem 0 .5rem}
.sr-weak .wk-lede{color:var(--ink-2);font-size:1rem;line-height:1.6}
.sr-weak .wk-stats{display:flex;flex-wrap:wrap;gap:20px;margin-top:16px}
.sr-weak .wk-stats span{font-size:.86rem;color:var(--ink-3)}
.sr-weak .wk-stats b{color:var(--ink);font-family:var(--mono);font-size:1.05rem;margin-right:4px}

.sr-weak .wk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px;position:sticky;top:64px;z-index:5;padding:8px 0;background:var(--bg)}
.sr-weak .wk-sort{display:inline-flex;gap:4px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.sr-weak .wk-sort-btn{border:none;background:none;color:var(--ink-3);font-size:.82rem;font-weight:600;padding:6px 12px;border-radius:7px;cursor:pointer}
.sr-weak .wk-sort-btn.is-on{background:var(--surface-3);color:var(--ink)}
.sr-weak .wk-sort-btn:hover:not(.is-on){color:var(--ink-2)}
.sr-weak .wk-compare-bar{display:inline-flex;align-items:center;gap:12px}
.sr-weak .wk-cmp-count{font-size:.82rem;color:var(--ink-2);font-family:var(--mono)}
.sr-weak .wk-cmp-open{padding:7px 16px;font-size:.85rem}
.sr-weak .wk-cmp-open:disabled{opacity:.5;cursor:not-allowed}
.sr-weak .wk-cmp-clear{border:none;background:none;color:var(--ink-3);font-size:.82rem;cursor:pointer;text-decoration:underline}
.sr-weak .wk-cmp-clear:hover{color:var(--ink-2)}

.sr-weak .wk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.sr-weak .wk-card{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:17px 18px;display:flex;flex-direction:column}
.sr-weak .wk-card:hover{border-color:var(--border-2)}
.sr-weak .wk-card-top{display:flex;align-items:flex-start;gap:11px;margin-bottom:12px}
.sr-weak .wk-pick{flex:none;cursor:pointer;margin-top:2px}
.sr-weak .wk-pick input{position:absolute;opacity:0;width:0;height:0}
.sr-weak .wk-pick span{display:block;width:18px;height:18px;border:1.5px solid var(--border-2);border-radius:5px;transition:all .12s}
.sr-weak .wk-pick input:checked + span{background:var(--signal);border-color:var(--signal);box-shadow:inset 0 0 0 3px var(--surface)}
.sr-weak .wk-pick:hover span{border-color:var(--signal)}
.sr-weak .wk-titles{flex:1 1 auto;min-width:0}
.sr-weak .wk-titles h2{margin:0;font-size:1rem;line-height:1.25}
.sr-weak .wk-cwe{font-size:.72rem;color:var(--ink-3);text-decoration:none}
.sr-weak .wk-cwe:hover{color:var(--signal-2)}
.sr-weak .wk-trend{flex:none;font-family:var(--mono);font-size:.66rem;font-weight:700;padding:2px 7px;border-radius:6px;background:color-mix(in srgb,var(--signal) 15%,transparent);color:var(--signal-2);white-space:nowrap}
.sr-weak .wk-spark-wrap{display:flex;align-items:center;gap:10px;margin-bottom:12px;color:color-mix(in srgb,var(--signal) 62%,var(--ink-3))}
.sr-weak .wk-spark{width:128px;height:30px;flex:none}
.sr-weak .wk-spark-cap{font-family:var(--mono);font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.sr-weak .wk-body{margin:0 0 14px;color:var(--ink-2);font-size:.86rem;line-height:1.55;flex:1 1 auto}
.sr-weak .wk-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px solid var(--border)}
.sr-weak .wk-counts{font-size:.8rem;color:var(--ink-3)}
.sr-weak .wk-counts b{color:var(--ink);font-family:var(--mono)}
.sr-weak .wk-view{font-size:.82rem;font-weight:600;color:var(--signal-2);text-decoration:none;white-space:nowrap}
.sr-weak .wk-view:hover{text-decoration:underline}
@media(max-width:560px){.sr-weak .wk-grid{grid-template-columns:1fr}.sr-weak .wk-toolbar{top:56px}}

/* Compare modal (rendered outside .sr-weak) */
.wk-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(5,8,12,.66);backdrop-filter:blur(3px)}
.wk-modal[hidden]{display:none}
.wk-modal-box{width:100%;max-width:740px;background:var(--surface);border:1px solid var(--border-2);border-radius:16px;padding:20px 22px;box-shadow:0 24px 60px rgba(0,0,0,.4)}
.wk-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.wk-modal-head h2{margin:0;font-size:1.1rem}
.wk-modal-close{border:none;background:none;color:var(--ink-3);font-size:1.5rem;line-height:1;cursor:pointer;padding:0 4px}
.wk-modal-close:hover{color:var(--ink)}
.wk-chart{width:100%}
.wk-chart-svg{width:100%;height:auto;display:block}
.wk-grid-line{stroke:var(--border);stroke-width:1}
.wk-axis-t{fill:var(--ink-3);font-size:9px;font-family:var(--mono)}
.wk-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px}
.wk-leg{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--ink-2)}
.wk-leg-sw{flex:none}
.wk-modal-note{margin:12px 0 0;color:var(--ink-3);font-size:.78rem}

/* Active weakness (CWE) filter chip on browse */
.active-cwe{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;padding:10px 14px;border:1px solid color-mix(in srgb,var(--signal) 30%,var(--border));border-radius:10px;background:color-mix(in srgb,var(--signal) 8%,transparent)}
.active-cwe .ac-k{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}
.active-cwe .ac-v{font-weight:600;color:var(--ink);font-size:.92rem;display:inline-flex;align-items:center;gap:8px}
.active-cwe .ac-cwe{font-family:var(--mono);font-size:.68rem;font-weight:600;color:var(--signal-2);padding:1px 6px;border:1px solid color-mix(in srgb,var(--signal) 30%,transparent);border-radius:5px}
.active-cwe .ac-x{margin-left:auto;font-size:.8rem;color:var(--ink-3);text-decoration:none;font-family:var(--mono)}
.active-cwe .ac-x:hover{color:var(--sev-critical)}

/* ============ Hot board (/hot) ============ */
/* CVE-page "In the news" block */
.cve-news .news-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 12px;font-size:.85rem;color:var(--ink-3)}
.cve-news .news-trending{font-family:var(--mono);font-size:.64rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:5px;background:color-mix(in srgb,var(--sev-high) 16%,transparent);color:var(--sev-high)}
.cve-news .news-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.cve-news .news-list li{display:flex;flex-direction:column;gap:2px;padding-left:14px;position:relative}
.cve-news .news-list li.is-recent::before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:var(--sev-high)}
.cve-news .news-list li:not(.is-recent)::before{content:"";position:absolute;left:2px;top:8px;width:4px;height:4px;border-radius:50%;background:var(--border-2)}
.cve-news .news-list a{color:var(--ink);text-decoration:none;font-size:.92rem;line-height:1.4}
.cve-news .news-list a:hover{color:var(--signal-2);text-decoration:underline}
.cve-news .nl-meta{font-family:var(--mono);font-size:.7rem;color:var(--ink-3)}
.cve-news .news-note{margin:12px 0 0;font-size:.75rem;color:var(--ink-3)}

/* Watchlist "trending" strip */
.wl-hot{margin:0 0 20px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--sev-high) 26%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--sev-high) 6%,transparent)}
.wl-hot-head{font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2);margin-bottom:11px}
.wl-hot-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.wl-hot-item{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.wl-hot-id{font-weight:700;font-size:.9rem;color:var(--ink);text-decoration:none}
.wl-hot-id:hover{color:var(--signal-2)}
.wl-hot-m{font-size:.8rem;color:var(--ink-3)}
.wl-hot-m b{color:var(--ink);font-family:var(--mono)}
.wl-hot-hl{flex:1 1 200px;min-width:0;font-size:.82rem;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-hot-spark{flex:none;width:58px;color:var(--sev-high)}

/* ---- /hot : story board ---- */
.hot-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--sev-critical);margin-right:7px;vertical-align:middle;animation:hotpulse 2s infinite}
@keyframes hotpulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--sev-critical) 55%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
.sr-hot .hot-head{max-width:840px;margin:0 0 24px}
.sr-hot .hot-head h1{margin:.3rem 0 .5rem}
.sr-hot .hot-lede{color:var(--ink-2);font-size:1rem;line-height:1.6}

/* stats strip */
.sr-hot .hot-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.sr-hot .hs-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:3px}
.sr-hot .hs-n{font-family:var(--mono);font-size:1.65rem;font-weight:700;color:var(--ink);line-height:1}
.sr-hot .hs-n.hs-kev{color:var(--sev-critical)}
.sr-hot .hs-n.hs-sm{font-size:1.1rem;padding-top:6px}
.sr-hot .hs-l{font-size:.75rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}

/* editorial digest */
.sr-hot .hot-digest{border:1px solid color-mix(in srgb,var(--signal) 28%,var(--border));border-radius:14px;background:color-mix(in srgb,var(--signal) 6%,transparent);padding:16px 18px;margin-bottom:22px}
.sr-hot .hd-head{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.sr-hot .hd-tag{font-family:var(--mono);font-size:.64rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--signal-2);padding:3px 8px;border:1px solid color-mix(in srgb,var(--signal) 32%,transparent);border-radius:6px}
.sr-hot .hd-when{font-size:.72rem;color:var(--ink-3);font-family:var(--mono)}
.sr-hot .hd-body{margin:0;color:var(--ink);font-size:.95rem;line-height:1.62}

/* stories */
.sr-hot .hot-stories{display:flex;flex-direction:column;gap:14px}
.sr-hot .hot-story{display:flex;gap:14px;border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:17px 18px}
.sr-hot .hot-story:hover{border-color:var(--border-2)}
.sr-hot .hot-story.is-hero{border-color:color-mix(in srgb,var(--sev-critical) 34%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--sev-critical) 5%,transparent),transparent 55%),var(--surface);padding:22px 22px}
.sr-hot .hs-rank{flex:none;width:26px;font-family:var(--mono);font-size:1.05rem;font-weight:700;color:var(--ink-3);text-align:right;padding-top:4px}
.sr-hot .is-hero .hs-rank{font-size:1.4rem;color:var(--sev-critical)}
.sr-hot .hs-body{flex:1 1 auto;min-width:0}

.sr-hot .hs-top{display:flex;align-items:flex-start;gap:12px}
.sr-hot .hs-logo{flex:none;width:28px;height:28px;border-radius:7px;object-fit:contain;background:var(--surface-3);padding:3px;margin-top:2px}
.sr-hot .hs-logo-ph{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:.85rem;color:var(--ink-3);padding:0}
.sr-hot .hs-titles{flex:1 1 auto;min-width:0}
.sr-hot .hs-angle{margin:0 0 6px;font-size:1.05rem;line-height:1.3}
.sr-hot .is-hero .hs-angle{font-size:1.28rem}
.sr-hot .hs-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sr-hot .hs-prod{font-size:.85rem;color:var(--ink-2)}
.sr-hot .hot-kev{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:5px;background:color-mix(in srgb,var(--sev-critical) 16%,transparent);color:var(--sev-critical);white-space:nowrap}
.sr-hot .hs-chart{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.cov-chart{display:block;color:var(--signal-2)}
.cc-fill{fill:color-mix(in srgb,var(--signal) 16%,transparent)}
.cc-line{stroke:var(--signal-2);stroke-width:1.8;stroke-linejoin:round}
.hot-delta{font-family:var(--mono);font-size:.72rem;font-weight:700}
.hot-delta.up{color:var(--sev-high)}
.hot-delta.down{color:var(--ink-3)}

.sr-hot .hs-why{margin:11px 0 0;color:var(--ink-2);font-size:.9rem;line-height:1.55;padding-left:11px;border-left:2px solid color-mix(in srgb,var(--signal) 40%,transparent)}

.sr-hot .hs-cves{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}
.sr-hot .hs-cve{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:600;color:var(--ink-2);text-decoration:none;padding:3px 9px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2)}
.sr-hot .hs-cve:hover{color:var(--signal-2);border-color:var(--signal)}
.sr-hot .hc-dot{width:5px;height:5px;border-radius:50%;background:var(--sev-critical);display:inline-block}

.sr-hot .hs-coverage{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:13px;padding-top:12px;border-top:1px solid var(--border)}
.sr-hot .hs-outlets{display:flex;flex-wrap:wrap;gap:5px}
.outlet-chip{font-size:.7rem;font-weight:600;color:var(--ink-2);padding:3px 8px;border:1px solid var(--border-2);border-radius:20px;white-space:nowrap}
.outlet-chip.om{color:var(--ink-3);border-style:dashed}
.sr-hot .hs-when{display:flex;align-items:center;gap:9px;flex:0 1 auto}
.cov-timeline{width:100px;height:12px;flex:none}
.ct-axis{stroke:var(--border-2);stroke-width:.6}
.ct-new{fill:var(--sev-critical)}
.ct-warm{fill:var(--sev-high)}
.ct-old{fill:var(--ink-3);opacity:.55}
.sr-hot .hs-span{font-size:.72rem;color:var(--ink-3);font-family:var(--mono);white-space:nowrap}

.sr-hot .hs-heads{list-style:none;margin:13px 0 0;padding:0;display:flex;flex-direction:column;gap:7px}
.sr-hot .hs-heads li{display:flex;flex-direction:column;gap:2px;padding-left:13px;position:relative}
.sr-hot .hs-heads li::before{content:"";position:absolute;left:1px;top:7px;width:5px;height:5px;border-radius:50%;background:var(--border-2)}
.sr-hot .hs-heads li.is-recent::before{background:var(--sev-high);width:6px;height:6px;left:0}
.sr-hot .hs-heads a{color:var(--ink);text-decoration:none;font-size:.88rem;line-height:1.4}
.sr-hot .hs-heads a:hover{color:var(--signal-2);text-decoration:underline}
.sr-hot .hh-meta{font-family:var(--mono);font-size:.68rem;color:var(--ink-3)}

.sr-hot .hot-foot{margin-top:22px;color:var(--ink-3);font-size:.78rem;line-height:1.6;max-width:820px}
@media(max-width:640px){
  .sr-hot .hs-top{flex-wrap:wrap}
  .sr-hot .hs-chart{width:100%;align-items:flex-start;margin-top:8px}
  .sr-hot .hs-coverage{flex-direction:column;align-items:flex-start;gap:10px}
}

/* ============ Fix availability (OSV-style: answer it everywhere) ============ */
.fixb{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;padding:3px 8px;border-radius:6px;white-space:nowrap;line-height:1.3;border:1px solid transparent}
.fixb-i{width:12px;height:12px;flex:none}
.fixb-fixed{background:color-mix(in srgb,var(--sev-low) 15%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 30%,transparent)}
.fixb-patch{background:color-mix(in srgb,var(--sev-low) 12%,transparent);color:var(--sev-low);border-color:color-mix(in srgb,var(--sev-low) 26%,transparent)}
.fixb-mitigation{background:color-mix(in srgb,var(--sev-medium) 14%,transparent);color:var(--sev-medium);border-color:color-mix(in srgb,var(--sev-medium) 28%,transparent)}
.fixb-none,.fixb-unknown{background:color-mix(in srgb,var(--sev-critical) 12%,transparent);color:var(--sev-critical);border-color:color-mix(in srgb,var(--sev-critical) 26%,transparent)}
.fixb-sm{font-size:.66rem;padding:2px 6px;gap:4px}
.fixb-sm .fixb-i{width:10px;height:10px}
.fixb-lg{font-size:.8rem;padding:6px 11px;gap:7px}
.fixb-lg .fixb-i{width:15px;height:15px}

/* row / card placement */
.rr-fix{flex:0 0 auto;display:flex;align-items:center}
.cc-fix{margin:0 0 10px}
.lt-flags .fixb{margin-right:2px}
.wl-ffix{flex:0 0 auto;display:flex;align-items:center;margin-right:8px}
.related-list .fixb{margin-left:auto}
.sr-hot .hs-cve .fixb{margin-left:4px;border:none;padding:1px 4px;background:none}
table.cve td .fixb{white-space:nowrap}

/* the answer bar on the CVE page */
.fix-answer{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 20px;padding:14px 16px;border-radius:12px;border:1px solid var(--border)}
.fix-answer.fa-fixed,.fix-answer.fa-patch{border-color:color-mix(in srgb,var(--sev-low) 34%,transparent);background:color-mix(in srgb,var(--sev-low) 7%,transparent)}
.fix-answer.fa-mitigation{border-color:color-mix(in srgb,var(--sev-medium) 34%,transparent);background:color-mix(in srgb,var(--sev-medium) 7%,transparent)}
.fix-answer.fa-none{border-color:color-mix(in srgb,var(--sev-critical) 34%,transparent);background:color-mix(in srgb,var(--sev-critical) 7%,transparent)}
.fix-answer .fa-icon{flex:none}
.fix-answer .fa-body{flex:1 1 260px;min-width:0;font-size:.95rem;line-height:1.5;color:var(--ink)}
.fix-answer .fa-detail{color:var(--ink-2);margin-left:5px}
.fix-answer .fa-ver{font-weight:700;color:var(--ink);padding:1px 6px;border-radius:5px;background:var(--surface-3)}
.fix-answer .fa-cta{flex:none;font-size:.82rem;font-weight:600;color:var(--signal-2);text-decoration:none;white-space:nowrap}
.fix-answer .fa-cta:hover{text-decoration:underline}
@media(max-width:560px){.fix-answer{align-items:flex-start}.fix-answer .fa-cta{margin-left:0}}

/* Anchor targets clear the sticky header when jumped to */
.sr-cve .sec-rem, .sr-cve .cve-news, .sr-cve #remediation{scroll-margin-top:84px}
/* fix-answer sits full-width above the priority meter (NOT inside the flex hero, which
   would make it a third flex child and push the CWE animation onto its own row) */
.sr-cve .fix-answer{width:100%}

/* ---- CWE animations, batch 2 ---- */

/* overflow — cells fill, then two spill past the end of the buffer */
.cwe-anim .ov-b{transform-box:fill-box;transform-origin:left center;animation:ovFill 3.6s ease-in-out infinite}
.cwe-anim .ov-b1{animation-delay:0s}.cwe-anim .ov-b2{animation-delay:.18s}.cwe-anim .ov-b3{animation-delay:.36s}
.cwe-anim .ov-b4{animation-delay:.54s}.cwe-anim .ov-b5{animation-delay:.72s}
.cwe-anim .ov-b6{animation-delay:.9s}.cwe-anim .ov-b7{animation-delay:1.08s}
@keyframes ovFill{0%{opacity:0;transform:scaleX(0)}12%{opacity:1;transform:scaleX(1)}78%{opacity:1;transform:scaleX(1)}92%{opacity:0}100%{opacity:0}}
.cwe-anim .ov-warn{animation:ovWarn 3.6s ease-in-out infinite}
@keyframes ovWarn{0%,28%{opacity:0}38%{opacity:1}78%{opacity:1}92%{opacity:0}100%{opacity:0}}

/* uaf — object freed, slot reclaimed by the attacker, stale pointer still used */
.cwe-anim .uf-live{animation:ufLive 4.4s ease-in-out infinite}
@keyframes ufLive{0%{opacity:1}22%{opacity:1}30%{opacity:0}100%{opacity:0}}
.cwe-anim .uf-freed{animation:ufFreed 4.4s ease-in-out infinite}
@keyframes ufFreed{0%,24%{opacity:0}32%{opacity:1}52%{opacity:1}60%{opacity:0}100%{opacity:0}}
.cwe-anim .uf-evil{animation:ufEvil 4.4s ease-in-out infinite}
@keyframes ufEvil{0%,56%{opacity:0}66%{opacity:1}92%{opacity:1}100%{opacity:0}}
.cwe-anim .uf-ptr{animation:ufPtr 4.4s ease-in-out infinite}
@keyframes ufPtr{0%,24%{opacity:.9}32%{opacity:.35}56%{opacity:.35}66%{opacity:1}100%{opacity:1}}

/* intover — counter wraps, allocation shrinks, copy overruns it */
.cwe-anim .io-max{animation:ioMax 3.6s ease-in-out infinite}
@keyframes ioMax{0%{opacity:1}26%{opacity:1}32%{opacity:0}100%{opacity:0}}
.cwe-anim .io-wrap{animation:ioWrap 3.6s ease-in-out infinite}
@keyframes ioWrap{0%,28%{opacity:0}36%{opacity:1}100%{opacity:1}}
.cwe-anim .io-big{animation:ioMax 3.6s ease-in-out infinite}
.cwe-anim .io-tiny{animation:ioWrap 3.6s ease-in-out infinite}
.cwe-anim .io-sp{transform-box:fill-box;transform-origin:left center;animation:ioSp 3.6s ease-in-out infinite}
.cwe-anim .io-s1{animation-delay:1.5s}.cwe-anim .io-s2{animation-delay:1.66s}
.cwe-anim .io-s3{animation-delay:1.82s}.cwe-anim .io-s4{animation-delay:1.98s}
@keyframes ioSp{0%{opacity:0;transform:scaleX(0)}8%{opacity:1;transform:scaleX(1)}80%{opacity:1}94%{opacity:0}100%{opacity:0}}

/* csrf — forged request rides the victim's cookie to the bank */
.cwe-anim .cs-req{animation:csReq 3.4s ease-in-out infinite}
@keyframes csReq{0%{transform:translateX(0);opacity:0}14%{opacity:1}56%{transform:translateX(58px);opacity:1}64%{opacity:0}100%{transform:translateX(58px);opacity:0}}
.cwe-anim .cs-cook{animation:csCook 3.4s ease-in-out infinite}
@keyframes csCook{0%,100%{opacity:.45}30%{opacity:1}60%{opacity:1}}
.cwe-anim .cs-act{animation:csAct 3.4s ease-in-out infinite}
@keyframes csAct{0%,58%{opacity:0}70%{opacity:1}92%{opacity:1}100%{opacity:0}}

/* upload — disguised file lands in the webroot, then executes */
.cwe-anim .up-file{animation:upFile 3.8s ease-in-out infinite}
@keyframes upFile{0%{transform:translateX(0);opacity:0}10%{opacity:1}40%{transform:translateX(84px);opacity:1}46%{opacity:0}100%{transform:translateX(84px);opacity:0}}
.cwe-anim .up-landed{transform-box:fill-box;transform-origin:left center;animation:upLanded 3.8s ease-in-out infinite}
@keyframes upLanded{0%,40%{opacity:0;transform:scaleX(0)}52%{opacity:1;transform:scaleX(1)}100%{opacity:1;transform:scaleX(1)}}
.cwe-anim .up-shell{animation:upShell 3.8s ease-in-out infinite}
@keyframes upShell{0%,58%{opacity:0}72%{opacity:1}94%{opacity:1}100%{opacity:0}}

/* deser — blob unpacks into a live object whose magic method fires */
.cwe-anim .ds-obj{animation:dsObj 3.6s ease-in-out infinite}
@keyframes dsObj{0%,24%{opacity:0}38%{opacity:1}100%{opacity:1}}
.cwe-anim .ds-fire{animation:dsFire 3.6s ease-in-out infinite}
@keyframes dsFire{0%,52%{opacity:0}66%{opacity:1}92%{opacity:1}100%{opacity:0}}

/* xxe — entity pulls a local file back into the response */
.cwe-anim .xx-pull{animation:xxPull 3.8s ease-in-out infinite}
@keyframes xxPull{0%{opacity:.3}20%{opacity:1}50%{opacity:1}100%{opacity:.3}}
.cwe-anim .xx-back{animation:xxBack 3.8s ease-in-out infinite}
@keyframes xxBack{0%,34%{opacity:0}48%{opacity:1}100%{opacity:1}}
.cwe-anim .xx-leak{animation:xxLeak 3.8s ease-in-out infinite}
@keyframes xxLeak{0%,52%{opacity:0}66%{opacity:1}94%{opacity:1}100%{opacity:0}}

/* redirect — the expected hop is replaced by an attacker destination */
.cwe-anim .rd-dot{animation:rdDot 3.4s ease-in-out infinite}
@keyframes rdDot{0%{transform:translate(0,0);opacity:0}12%{opacity:1}55%{transform:translate(56px,66px);opacity:1}66%{opacity:0}100%{opacity:0}}
.cwe-anim .rd-good{animation:rdGood 3.4s ease-in-out infinite}
@keyframes rdGood{0%,100%{opacity:.5}40%{opacity:.12}}
.cwe-anim .rd-bad{animation:rdBad 3.4s ease-in-out infinite}
@keyframes rdBad{0%,22%{opacity:0}40%{opacity:1}92%{opacity:1}100%{opacity:0}}

/* authbypass — the gate is there, the check never runs */
.cwe-anim .ab-req{animation:abReq 3.4s ease-in-out infinite}
@keyframes abReq{0%{transform:translateX(0);opacity:0}10%{opacity:1}70%{transform:translateX(154px);opacity:1}80%{opacity:0}100%{opacity:0}}
.cwe-anim .ab-lock{animation:abLock 3.4s ease-in-out infinite}
@keyframes abLock{0%,30%{opacity:.85}45%{opacity:.12}100%{opacity:.12}}
.cwe-anim .ab-gate{animation:abGate 3.4s ease-in-out infinite}
@keyframes abGate{0%,30%{opacity:.85}45%{opacity:.15}100%{opacity:.15}}
.cwe-anim .ab-miss{animation:abMiss 3.4s ease-in-out infinite}
@keyframes abMiss{0%,38%{opacity:0}50%{opacity:1}100%{opacity:1}}
.cwe-anim .ab-in{animation:abIn 3.4s ease-in-out infinite}
@keyframes abIn{0%,66%{opacity:0}78%{opacity:1}94%{opacity:1}100%{opacity:0}}

/* idor — swap the identifier, get someone else's record */
.cwe-anim .id-mine{animation:idMine 3.8s ease-in-out infinite}
@keyframes idMine{0%{opacity:1}30%{opacity:1}38%{opacity:0}100%{opacity:0}}
.cwe-anim .id-theirs{animation:idTheirs 3.8s ease-in-out infinite}
@keyframes idTheirs{0%,34%{opacity:0}44%{opacity:1}100%{opacity:1}}
.cwe-anim .id-card{animation:idCard 3.8s ease-in-out infinite}
@keyframes idCard{0%,100%{opacity:1}36%{opacity:.5}44%{opacity:1}}

/* secrets — the credential sitting in committed source */
.cwe-anim .sc-key{animation:scKey 3s ease-in-out infinite}
@keyframes scKey{0%,100%{opacity:.6}50%{opacity:1}}
.cwe-anim .sc-hl{animation:scHl 3s ease-in-out infinite}
@keyframes scHl{0%,100%{opacity:.15}50%{opacity:.85}}
.cwe-anim .sc-note{animation:scNote 3s ease-in-out infinite}
@keyframes scNote{0%,30%{opacity:0}50%{opacity:1}90%{opacity:1}100%{opacity:0}}

/* dos — requests pile in, the resource meter pins, the service stops */
.cwe-anim .do-r{animation:doR 2.6s linear infinite}
.cwe-anim .do-r1{animation-delay:0s}.cwe-anim .do-r2{animation-delay:.45s}
.cwe-anim .do-r3{animation-delay:.9s}.cwe-anim .do-r4{animation-delay:1.35s}
@keyframes doR{0%{transform:translateX(0);opacity:0}10%{opacity:1}85%{transform:translateX(152px);opacity:1}100%{transform:translateX(152px);opacity:0}}
.cwe-anim .do-fill{transform-box:fill-box;transform-origin:left center;animation:doFill 3.8s ease-in-out infinite}
@keyframes doFill{0%{transform:scaleX(.06)}70%{transform:scaleX(1)}100%{transform:scaleX(1)}}
.cwe-anim .do-dead{animation:doDead 3.8s ease-in-out infinite}
@keyframes doDead{0%,62%{opacity:0}76%{opacity:1}94%{opacity:1}100%{opacity:0}}

@media (prefers-reduced-motion:reduce){
  .cwe-anim *{animation:none !important}
  .cwe-anim .uf-freed,.cwe-anim .uf-evil,.cwe-anim .io-wrap,.cwe-anim .io-tiny,
  .cwe-anim .id-theirs,.cwe-anim .ab-miss{opacity:0}
}

.sr-cve .signin-prompt .btn-google:hover{transform:translateY(-1px)}
/* Only below this width does the button get its own row — and then it spans the full
   card deliberately, rather than dangling right as a wrapped flex item. */
@media (max-width:620px){
  .sr-cve .signin-prompt{grid-template-columns:auto minmax(0,1fr);row-gap:14px}
  .sr-cve .signin-prompt .btn-google{grid-column:1 / -1;width:100%}
}

/* ---- pipeline velocity + ETA (oversight overview) ---- */
.velo{margin-top:16px;border:1px solid var(--border);border-radius:12px;padding:16px 18px;background:var(--surface)}
.velo-slow{border-color:color-mix(in srgb,var(--sev-high) 34%,var(--border));background:color-mix(in srgb,var(--sev-high) 5%,transparent)}
.velo-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}
.velo-stat{display:flex;flex-direction:column;gap:2px}
.velo-stat .vn{font-family:var(--mono);font-size:1.5rem;font-weight:700;color:var(--ink);line-height:1.1}
.velo-stat.velo-eta .vn{color:var(--sev-high)}
.velo-stat .vl{font-size:.76rem;color:var(--ink-2);font-weight:600}
.velo-stat .vs{font-size:.7rem}
.velo-note{margin:14px 0 0;padding-top:13px;border-top:1px solid var(--border);font-size:.82rem;line-height:1.6;color:var(--ink-2)}

/* ---- section heading info affordance ----
   Pure CSS. A real <button> so it focuses on keyboard AND tap; :focus-within opens it. */
.sr-cve .secinfo{position:relative;display:inline-flex;vertical-align:middle;margin-left:7px}
.sr-cve .si-btn{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;padding:0;border:0;border-radius:50%;background:none;color:var(--ink-3);cursor:pointer;transition:color .15s ease}
.sr-cve .si-btn svg{width:15px;height:15px}
.sr-cve .si-btn:hover,.sr-cve .si-btn:focus-visible{color:var(--signal)}
.sr-cve .si-pop{position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(3px);width:270px;padding:11px 13px;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-3);color:var(--ink-2);font-family:var(--sans);font-size:.79rem;font-weight:400;line-height:1.5;letter-spacing:0;text-transform:none;box-shadow:0 10px 30px rgba(0,0,0,.28);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s ease,transform .16s ease;z-index:20}
.sr-cve .si-pop b{display:block;color:var(--ink);margin-bottom:3px;font-size:.79rem}
.sr-cve .secinfo:hover .si-pop,.sr-cve .secinfo:focus-within .si-pop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media (max-width:640px){.sr-cve .si-pop{width:min(250px,72vw);left:auto;right:-8px;transform:translateY(3px)}
  .sr-cve .secinfo:hover .si-pop,.sr-cve .secinfo:focus-within .si-pop{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.sr-cve .si-pop{transition:none}}

/* ---- the engagement card: the quote IS the upsell ----
   Anchored by the vendor's own mark, because a CVE is never abstract — it is Drupal's problem
   or Cisco's, and the reader already knows which. The gradient is the same device as the
   sign-in panel, which is the one that landed. */
.sr-cve .eng{margin-top:16px;border:1px solid var(--border-2);border-radius:14px;padding:18px 20px;background:linear-gradient(158deg,color-mix(in srgb,var(--signal) 13%,transparent),transparent 68%),var(--surface-2)}
.sr-cve .eng-kev{border-color:color-mix(in srgb,var(--sev-critical) 42%,var(--border-2));background:linear-gradient(158deg,color-mix(in srgb,var(--sev-critical) 13%,transparent),transparent 68%),var(--surface-2)}
.sr-cve .eng-head{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.sr-cve .eng-logo{flex:none;width:36px;height:36px;border-radius:9px;background:#fff;padding:5px;object-fit:contain}
.sr-cve .eng-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-cve .eng-title b{color:var(--ink);font-family:var(--font-display);font-size:1.02rem;line-height:1.25}
.sr-cve .eng-title small{color:var(--ink-3);font-size:.78rem;line-height:1.3}
.sr-cve .eng-kev .eng-title small{color:var(--sev-critical)}
.sr-cve .eng-lines{list-style:none;margin:13px 0 0;padding:0;display:flex;flex-direction:column;gap:1px}
.sr-cve .eng-lines li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0}
.sr-cve .eng-lines .el-k{color:var(--ink-2);font-size:.86rem}
.sr-cve .eng-lines .el-h{font-family:var(--mono);font-size:.84rem;color:var(--ink);white-space:nowrap}
.sr-cve .eng-total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:11px;padding-top:13px;border-top:1px solid var(--border)}
.sr-cve .eng-total .et-k{color:var(--ink-2);font-size:.86rem}
.sr-cve .eng-total .et-v{font-family:var(--mono);font-weight:700;font-size:1.42rem;color:var(--ink);letter-spacing:-.01em;white-space:nowrap}
.sr-cve .eng-btn{display:block;width:100%;margin-top:15px;text-align:center}
.sr-cve .eng-note{margin:10px 0 0;font-size:.74rem;line-height:1.5;color:var(--ink-3)}

/* ---- sidebar hire-card, aligned to the engagement card's language ----
   Brand mark anchors it; value lands before the ask; the itemised breakdown lives ONCE,
   in the Remediation section, and this links down to it. */
.sr-cve .hire-card{background:linear-gradient(158deg,color-mix(in srgb,var(--signal) 12%,transparent),transparent 66%),var(--surface-2)}
.sr-cve .hire-card.hire-urgent{background:linear-gradient(158deg,color-mix(in srgb,var(--sev-critical) 13%,transparent),transparent 66%),var(--surface-2);border-color:color-mix(in srgb,var(--sev-critical) 40%,var(--border))}
.sr-cve .hc-brand{display:flex;align-items:center;gap:10px;margin:12px 0 0;padding-bottom:13px;border-bottom:1px solid var(--border)}
.sr-cve .hc-logo{flex:none;width:32px;height:32px;border-radius:8px;background:#fff;padding:4px;object-fit:contain}
.sr-cve .hc-brand-txt{display:flex;flex-direction:column;gap:1px;min-width:0}
.sr-cve .hc-brand-txt b{color:var(--ink);font-family:var(--font-display);font-size:.94rem;line-height:1.25}
.sr-cve .hc-brand-txt small{color:var(--ink-3);font-family:var(--mono);font-size:.74rem}
.sr-cve .hc-price{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:13px 0 14px}
.sr-cve .hc-price .hcp-k{color:var(--ink-2);font-size:.82rem}
.sr-cve .hc-price .hcp-v{font-family:var(--mono);font-weight:700;font-size:1.18rem;color:var(--ink);white-space:nowrap}
.sr-cve .hc-break{display:block;margin-top:9px;text-align:center;font-size:.78rem;color:var(--ink-3)}
.sr-cve .hc-break:hover{color:var(--signal)}

/* ---- sticky nudge: same brand device, compact ---- */
.cve-nudge .cn-logo{flex:none;width:26px;height:26px;border-radius:6px;background:#fff;padding:3px;object-fit:contain}
.cve-nudge .cn-price b{font-family:var(--mono);color:var(--ink)}
@media (max-width:640px){ .cve-nudge .cn-logo{display:none} }

/* ---- PROVENANCE: the page's organising idea ----
   Four kinds of claim used to look identical: the vendor's unedited words, our machine's
   analysis, values computed from the vector, and notes from strangers. For a security reader
   that distinction IS the content. Quiet by design — the engagement card is where the boldness
   is spent; this just has to be legible and never lie. */
.sr-cve .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 12px}
.sr-cve .sec-head h2{margin:0}
.sr-cve .sec-src{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.67rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;padding-bottom:2px}
.sr-cve .ss-dot{flex:none;width:5px;height:5px;border-radius:50%;background:currentColor}
.sr-cve .src-analysis{color:var(--signal)}
.sr-cve .src-press{color:var(--signal-2)}
.sr-cve .src-community{color:var(--ink-2)}
.sr-cve .src-source .ss-dot,.sr-cve .src-computed .ss-dot{opacity:.6}

/* The official description is a CITATION, not our prose. It should read as quoted material —
   the reader must never mistake NVD's words for ours, or ours for NVD's. */
.sr-cve .sq-body{margin:0;padding:2px 0 2px 16px;border-left:2px solid var(--border-2);color:var(--ink-2);font-size:.95rem;line-height:1.68}

/* Our analysis reads as editorial: full measure, full ink, no rule. The visual difference from
   the citation above is the point. */
.sr-cve .sec-analysis > p{color:var(--ink);font-size:.97rem;line-height:1.7}

@media (max-width:560px){
  .sr-cve .sec-head{gap:6px}
  .sr-cve .sec-src{font-size:.62rem}
}

/* ---- "No vendor fix exists" — the site's most-seen remediation state (~84% of CVEs) ----
   Also its sharpest differentiator. Every other CVE database tells you a flaw exists; none of
   them tell you nobody is coming. Said plainly, the offer stops being a pitch. */
.sr-cve .rem-needed{margin-top:16px;border:1px solid color-mix(in srgb,var(--sev-high) 34%,var(--border-2));border-radius:14px;padding:18px 20px;background:linear-gradient(158deg,color-mix(in srgb,var(--sev-high) 11%,transparent),transparent 66%),var(--surface-2)}
.sr-cve .rn-verdict{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.sr-cve .rn-logo{flex:none;width:34px;height:34px;border-radius:9px;background:#fff;padding:5px;object-fit:contain}
.sr-cve .rn-vtxt{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-cve .rn-vtxt b{color:var(--ink);font-family:var(--font-display);font-size:1.06rem;line-height:1.25}
.sr-cve .rn-vtxt small{color:var(--sev-high);font-size:.8rem;line-height:1.35}
.sr-cve .rn-conseq{margin:14px 0 0;color:var(--ink-2);font-size:.92rem;line-height:1.65}

/* real data — the fix_requests table. Social proof only works if it is true. */
.sr-cve .rn-demand{display:inline-flex;align-items:baseline;gap:8px;margin-top:14px;padding:7px 13px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface)}
.sr-cve .rn-demand .rn-count{font-family:var(--mono);font-weight:700;font-size:1rem;color:var(--ink)}
.sr-cve .rn-demand span{font-size:.82rem;color:var(--ink-2)}
.sr-cve .rn-demand[hidden]{display:none}

/* two paths, side by side: free (add your voice) and paid (can't wait). No hierarchy tricks —
   the reader picks based on urgency, which is the only thing that actually differs. */
.sr-cve .rn-paths{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:17px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}
.sr-cve .rn-path{display:flex;flex-direction:column;gap:8px;padding:16px 17px}
.sr-cve .rn-path-paid{border-left:1px solid var(--border);background:linear-gradient(160deg,color-mix(in srgb,var(--signal) 9%,transparent),transparent 70%)}
.sr-cve .rnp-k{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.sr-cve .rn-path-paid .rnp-k{color:var(--signal)}
.sr-cve .rnp-p{margin:0;font-size:.83rem;line-height:1.55;color:var(--ink-2);flex:1}
.sr-cve .rn-form{display:flex;flex-direction:column;gap:8px;margin:2px 0 0}
.sr-cve .rn-email{width:100%;padding:9px 12px;border:1px solid var(--border-2);border-radius:9px;background:var(--surface-2);color:var(--ink);font-family:var(--sans);font-size:.85rem}
.sr-cve .rn-email:focus{outline:2px solid var(--signal);outline-offset:1px;border-color:transparent}
.sr-cve .rn-btn,.sr-cve .rn-scope{width:100%;justify-content:center;font-size:.85rem}
.sr-cve .rn-alt{margin:13px 0 0;font-size:.79rem;color:var(--ink-3)}
.sr-cve .rn-done{display:flex;align-items:center;gap:9px;margin-top:14px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--signal) 40%,var(--border));border-radius:10px;background:var(--surface);color:var(--ink-2);font-size:.86rem}
.sr-cve .rn-done svg{flex:none;color:var(--signal)}
@media (max-width:640px){
  .sr-cve .rn-paths{grid-template-columns:1fr}
  .sr-cve .rn-path-paid{border-left:0;border-top:1px solid var(--border)}
}

/* ---- DATA IS NOT A CARD ----
   Rounded boxes signal "click me". The CVSS vector and the affected-version list are neither
   clickable nor decorative — they are a spec sheet. Cards stay for the things you act on
   (engagement, sign-in, the two no-fix paths); everything you merely READ gets hairlines. */

/* CVSS: label left, value right, one row each. "User Interaction" can no longer wrap and drag
   its whole grid row taller than the others. */
.sr-cve .vector-spec{margin:0;display:flex;flex-direction:column}
.sr-cve .vs-row{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:9px 0;border-bottom:1px solid var(--border)}
.sr-cve .vs-row:last-of-type{border-bottom:0}
.sr-cve .vs-row dt{margin:0;font-family:var(--mono);font-size:.69rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.sr-cve .vs-row dd{margin:0;color:var(--ink);font-size:.9rem;font-weight:600;text-align:right;white-space:nowrap}
.sr-cve .sec-cvss .vec-raw{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-2);font-family:var(--mono);font-size:.76rem;color:var(--ink-3);word-break:break-all}

/* Affected products: keep the vendor mark, lose the box. Hairline rows. */
.sr-cve .sec-affected .tech-grid{display:flex;flex-direction:column;gap:0}
.sr-cve .sec-affected .tech-card{border:0;border-radius:0;background:none;padding:11px 0;border-bottom:1px solid var(--border)}
.sr-cve .sec-affected .tech-card:last-child{border-bottom:0}



/* ---- one text-box treatment, everywhere ----
   Three inputs on this page had three different borders, radii and focus rings. They are the
   same object doing the same job — type here — so they get the same clothes. */
.sr-cve .aff-env,
.sr-cve .rn-email,
.sr-cve .comment-form textarea{
  width:100%;box-sizing:border-box;
  padding:11px 13px;
  border:1px solid var(--border-2);border-radius:10px;
  background:var(--surface);color:var(--ink);
  font-family:var(--sans);font-size:.88rem;line-height:1.55;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.sr-cve .aff-env{font-family:var(--mono);font-size:.83rem;resize:vertical;min-height:76px}
.sr-cve .aff-env::placeholder,
.sr-cve .rn-email::placeholder,
.sr-cve .comment-form textarea::placeholder{color:var(--ink-3)}
.sr-cve .aff-env:focus,
.sr-cve .rn-email:focus,
.sr-cve .comment-form textarea:focus{
  outline:none;border-color:var(--signal);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--signal) 18%,transparent);
}

/* the environment widget: a real tool, so it keeps its card — but a quiet one */
.sr-cve .aff-widget{margin-top:20px;padding:16px 17px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}
.sr-cve .aff-w-title{margin:0 0 4px;font-family:var(--font-display);font-size:.97rem;color:var(--ink);line-height:1.25}
.sr-cve .aff-w-lead{margin:0 0 11px;font-size:.83rem;line-height:1.55;color:var(--ink-2)}
.sr-cve .aff-w-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:11px}
.sr-cve .aff-check-btn{flex:none;font-size:.85rem}
.sr-cve .aff-w-hint{font-size:.74rem;line-height:1.45;color:var(--ink-3);flex:1 1 200px;min-width:0}

/* affected products: more air. The rows were packed tight against each other. */
.sr-cve .sec-affected .tech-card{padding:15px 0}
.sr-cve .sec-affected .tc-txt b{font-size:.95rem}
.sr-cve .sec-affected .verpill{padding:3px 8px;font-size:.78rem}
.sr-cve .sec-affected .tc-ver{gap:.4rem}

/* every section heading is the same size. The collapsed panel had drifted smaller. */


/* ===================================================================
   SECTION HEADINGS — this is a security advisory, not a blog post.
   Every element on this page with authority is already mono: the CVE
   id, the version ranges, the CVSS score, the hours, the price. The
   headings were the only thing speaking a different language, which is
   exactly why they read as bolted on.
   Mono, uppercase, tracked, on a rule — the register of an advisory.
   The tick carries the provenance colour, so the heading itself tells
   you whether what follows is the vendor's word or ours.
   =================================================================== */
.sr-cve .sec-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin:0 0 16px;padding-bottom:9px;
  border-bottom:1px solid var(--border);
}
.sr-cve .sec-head h2{
  display:flex;align-items:center;
  margin:0;
  font-family:var(--mono);font-weight:500;font-size:.8rem;
  letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink);
  line-height:1.3;
}
.sr-cve .sec-head h2::before{
  content:"";flex:none;
  width:3px;height:13px;margin-right:11px;border-radius:1px;
  background:var(--ink-3);
}
/* the tick encodes provenance — same system as the source marker */
.sr-cve .sec-analysis .sec-head h2::before,
.sr-cve .sec-rem .sec-head h2::before,
.sr-cve .sec-checks .sec-head h2::before{background:var(--signal)}
.sr-cve .sec-quote .sec-head h2::before{background:var(--ink-3)}

/* the source label sits on the rule, right-aligned. No border of its own. */
.sr-cve .sec-head .sec-src{padding-bottom:0}
.sr-cve .sec-head .secinfo{margin-left:8px}

/* ---- Mitigation: it was two inline spans fused into "MitigationUpgrade..." ----
   It is the single most actionable line in the whole section. Give it a block of its own. */
.sr-cve .mitig{
  display:block;margin-top:14px;padding:13px 15px;
  border:1px solid color-mix(in srgb,var(--sev-low) 32%,var(--border));
  border-left:3px solid var(--sev-low);
  border-radius:0 10px 10px 0;
  background:color-mix(in srgb,var(--sev-low) 7%,transparent);
}
.sr-cve .mitig-k{
  display:block;margin:0 0 5px;
  font-family:var(--mono);font-size:.66rem;font-weight:700;
  letter-spacing:.11em;text-transform:uppercase;
  color:var(--sev-low);
}
.sr-cve .mitig-t{display:block;color:var(--ink);font-size:.92rem;line-height:1.6}

/* the disclaimer is a footnote, not body copy */
.sr-cve .sec-analysis .note{
  margin-top:14px;padding-top:11px;border-top:1px solid var(--border);
  font-size:.76rem;line-height:1.5;color:var(--ink-3);
}
@media (max-width:560px){
  .sr-cve .sec-head{gap:8px}
  .sr-cve .sec-head h2{font-size:.74rem;letter-spacing:.1em}
}

/* ===================================================================
   FINISH THE TYPE SYSTEM ON THE CVE PAGE
   Two voices, each with a job:
     MONO  — identifiers, numbers, structure, section headings.
             Anything the reader would copy, quote, or compare.
     INTER — prose and statements. Anything the reader just reads.
   Space Grotesk was a third voice doing neither, so it goes.
   =================================================================== */

/* The priority number is a NUMBER. Every other number on this page is mono; this one was the
   sole holdout, at Space Grotesk 800. */
.sr-cve .pri-num{font-family:var(--mono);font-weight:500;letter-spacing:-.02em}

/* Card titles are statements you read — "Fix this in Drupal", "No vendor fix exists". Prose,
   so Inter, at the heaviest real weight we have (600). No faux bold. */
.sr-cve .signin-prompt .sp-body b,
.sr-cve .signin-prompt .sp-upsell-title,
.sr-cve .ccb-txt b,
.sr-cve .rem-headline,
.sr-cve .eng-title b,
.sr-cve .hc-brand-txt b,
.sr-cve .rn-vtxt b,
.sr-cve .aff-w-title,
.sr-cve .side-card h3{font-family:var(--sans);font-weight:600;letter-spacing:-.012em}

/* ===================================================================
   ONE CTA VOICE
   Six buttons, six treatments, none of which looked like they belonged
   to this page. The headings are mono / uppercase / tracked — the
   advisory register. The buttons now answer them.
   The wrench is gone: a wrench says "here, do it yourself". A bolt on an
   exploited CVE says "someone is coming, and fast".
   =================================================================== */
.sr-cve .cta{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--mono);font-weight:500;
  font-size:.75rem;letter-spacing:.11em;text-transform:uppercase;
  padding:11px 18px;border-radius:10px;
  white-space:nowrap;
  transition:transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.sr-cve .cta .cta-ic{flex:none;width:15px;height:15px;transition:transform .16s ease}
.sr-cve .cta:hover{text-decoration:none;transform:translateY(-1px)}
.sr-cve .cta:hover .cta-ic{transform:translateX(2px)}
.sr-cve .cta:active{transform:translateY(0)}

/* quiet variant — Watch, Request a fix: real actions, but not the sale */
.sr-cve .cta-quiet{
  background:var(--surface);color:var(--ink);
  border:1px solid var(--border-2);
}
.sr-cve .cta-quiet:hover{background:var(--surface-3);border-color:var(--border-strong);color:var(--ink)}
.sr-cve .watch-btn.cta{width:100%;padding:10px 14px;font-size:.71rem}
.sr-cve .watch-btn.cta:hover .cta-ic{transform:none}
.sr-cve .watch-btn.cta.watching{background:var(--signal-weak);border-color:var(--signal);color:var(--signal)}

/* ---- the nudge bar: full width, edge to edge ---- */
.cve-nudge{
  position:fixed;left:0;right:0;bottom:0;
  transform:none;max-width:none;width:100%;
  z-index:50;
  border-top:1px solid var(--border);
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  animation:cn-up .3s ease both;
}
@keyframes cn-up{from{transform:translateY(100%)}to{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.cve-nudge{animation:none}}
.cve-nudge .cn-inner{
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  max-width:1180px;margin:0 auto;
  padding:12px 24px;
  background:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;
}
.cve-nudge .cn-info{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}
.cve-nudge .cn-cta{flex:none}
@media (max-width:720px){
  .cve-nudge .cn-inner{padding:10px 14px;gap:12px}
  .cve-nudge .cn-price{display:none}
  .cve-nudge .cn-cta{padding:10px 14px;font-size:.69rem;letter-spacing:.08em}
}

/* ===================================================================
   SURFACE HIERARCHY + FIELD
   The page had one plane: header, body and cards all sat at the same
   depth, separated only by hairlines. Hence "flat".
   Three planes now, and they mean something:
       CHROME    the header — fixed furniture. Recedes.
       DOCUMENT  the page — what you came to read.
       SURFACE   cards — things you act on. Raised.
   The field is a fine dot grid, not a gradient: engineering paper, the
   register this page already speaks. At ~3% it reads as texture, never
   as pattern, and it does not compete with dense type.
   =================================================================== */
body{
  background-color:var(--bg);
  background-image:radial-gradient(circle at 1px 1px, var(--grid) 1px, transparent 0);
  background-size:24px 24px;
  background-position:-1px -1px;
}

/* the header is its own plane now, not a tinted copy of the page */
.site-header{
  background:color-mix(in srgb, var(--chrome) 88%, transparent);
  border-bottom:1px solid var(--border);
}

/* cards keep their own solid fill, so the field never shows through and muddies text */
.side-card,.eng,.rem-needed,.signin-prompt,.aff-widget,.tool-card,.rem-card,.hire-card,
.facts-card,.related-card,.cve-watch,.callout,.notice{background-color:var(--surface)}
.sr-cve .eng,.sr-cve .rem-needed,.sr-cve .aff-widget,.sr-cve .hire-card{background-color:var(--surface-2)}

/* the dot field is decoration: never let it print, and never let it fight reduced-transparency */
@media print{ body{background-image:none} }

/* ---- the action bar now leads with the VERDICT, not the price ----
   "21 hrs · $3,680" is an invoice. "CRITICAL 9.8 · No vendor fix · $3,680" is a reason. */
.cve-nudge .cn-mark{flex:none;width:10px;height:10px;border-radius:50%;background:var(--sev-na)}
.cve-nudge .cn-mark.sev-critical{background:var(--sev-critical)}
.cve-nudge .cn-mark.sev-high{background:var(--sev-high)}
.cve-nudge .cn-mark.sev-medium{background:var(--sev-medium)}
.cve-nudge .cn-mark.sev-low{background:var(--sev-low)}
.cve-nudge .cn-sev{
  font-family:var(--mono);font-size:.74rem;font-weight:500;
  padding:2px 8px;border-radius:6px;white-space:nowrap;
  color:var(--sev-na);border:1px solid currentColor;
}
.cve-nudge .cn-sev.sev-critical{color:var(--sev-critical)}
.cve-nudge .cn-sev.sev-high{color:var(--sev-high)}
.cve-nudge .cn-sev.sev-medium{color:var(--sev-medium)}
.cve-nudge .cn-sev.sev-low{color:var(--sev-low)}
.cve-nudge .cn-nofix{
  font-family:var(--mono);font-size:.68rem;letter-spacing:.07em;text-transform:uppercase;
  padding:3px 9px;border-radius:999px;white-space:nowrap;
  color:var(--sev-high);
  background:color-mix(in srgb,var(--sev-high) 13%,transparent);
  border:1px solid color-mix(in srgb,var(--sev-high) 34%,transparent);
}
.cve-nudge .cn-price{display:inline-flex;align-items:baseline;gap:7px;font-size:.82rem;color:var(--ink-3);white-space:nowrap}
.cve-nudge .cn-hrs{font-family:var(--mono);font-size:.75rem}
.cve-nudge .cn-price b{font-family:var(--mono);font-weight:500;font-size:.95rem;color:var(--ink)}
@media (max-width:820px){ .cve-nudge .cn-sev,.cve-nudge .cn-hrs{display:none} }

/* nav CTA + tool buttons inherit .cta, but they live outside .sr-cve — scope-free base */
.cta{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--mono);font-weight:500;font-size:.75rem;letter-spacing:.11em;text-transform:uppercase;white-space:nowrap;transition:transform .14s ease,background .14s ease}
.cta .cta-ic{flex:none;width:15px;height:15px;transition:transform .16s ease}
.cta:hover{text-decoration:none;transform:translateY(-1px)}
.cta:hover .cta-ic{transform:translateX(2px)}
.cta-quiet{background:var(--surface);color:var(--ink);border:1px solid var(--border-2)}
.cta-quiet:hover{background:var(--surface-3);border-color:var(--border-strong);color:var(--ink)}
.nav-cta.cta{height:38px;padding:0 17px;border-radius:999px;font-size:.71rem}
.nav-cta.cta:hover .cta-ic{transform:translateX(2px)}
.tool-cta{display:flex;gap:10px;flex-wrap:wrap}
.tool-cta .cta{padding:10px 16px;border-radius:10px}
.tool-cta .cta:first-child .cta-ic{transform:none}
.tool-cta .cta:first-child:hover .cta-ic{transform:none}

/* ===================================================================
   MISSION
   One number carries this page: most vulnerabilities never get fixed.
   So there is exactly one animated moment — the field resolving from
   nothing into the real split. Everything else stays still. Scattered
   effects would dilute the only thing worth looking at.
   =================================================================== */
.sr-mission .ms-hero{padding:64px 0 48px}
.sr-mission .ms-hero-in{max-width:860px}
.sr-mission .ms-h1{
  font-family:var(--sans);font-weight:600;letter-spacing:-.025em;
  font-size:clamp(1.7rem,4.2vw,2.7rem);line-height:1.2;
  color:var(--ink);margin:14px 0 18px;
}
.sr-mission .ms-h1-num{font-family:var(--mono);color:var(--signal)}
.sr-mission .ms-h1-dim{color:var(--ink-3)}
.sr-mission .ms-lede{max-width:660px;font-size:1.02rem;line-height:1.7;color:var(--ink-2);margin:0 0 34px}
.sr-mission .ms-lede b{font-family:var(--mono);font-weight:500;color:var(--ink)}

/* ---- the field: 500 dots, one per ~600 CVEs. Lit = a vendor fix exists. ---- */
.sr-mission .fieldwrap{margin:0 0 34px}
.sr-mission .field{
  display:grid;grid-template-columns:repeat(50,1fr);gap:5px;
  padding:20px;border:1px solid var(--border);border-radius:14px;
  background:var(--surface);
}
.sr-mission .fd{
  aspect-ratio:1;border-radius:50%;
  background:var(--border-2);
  opacity:0;
  animation:fd-in .5s ease forwards;
}
.sr-mission .fd-on{background:var(--signal);box-shadow:0 0 7px color-mix(in srgb,var(--signal) 55%,transparent)}
@keyframes fd-in{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
/* the stagger — CSP forbids inline styles, so the delay rides on a class */
.sr-mission .dl0{animation-delay:.00s}   .sr-mission .dl1{animation-delay:.04s}
.sr-mission .dl2{animation-delay:.08s}   .sr-mission .dl3{animation-delay:.12s}
.sr-mission .dl4{animation-delay:.16s}   .sr-mission .dl5{animation-delay:.20s}
.sr-mission .dl6{animation-delay:.24s}   .sr-mission .dl7{animation-delay:.28s}
.sr-mission .dl8{animation-delay:.32s}   .sr-mission .dl9{animation-delay:.36s}
.sr-mission .dl10{animation-delay:.40s}  .sr-mission .dl11{animation-delay:.44s}
.sr-mission .dl12{animation-delay:.48s}  .sr-mission .dl13{animation-delay:.52s}
.sr-mission .dl14{animation-delay:.56s}  .sr-mission .dl15{animation-delay:.60s}
.sr-mission .dl16{animation-delay:.64s}  .sr-mission .dl17{animation-delay:.68s}
.sr-mission .dl18{animation-delay:.72s}  .sr-mission .dl19{animation-delay:.76s}
.sr-mission .dl20{animation-delay:.80s}  .sr-mission .dl21{animation-delay:.84s}
.sr-mission .dl22{animation-delay:.88s}  .sr-mission .dl23{animation-delay:.92s}
/* the lit ones arrive last, so the eye lands on how few there are */
.sr-mission .fd-on{animation-delay:1.05s;animation-duration:.6s}

.sr-mission .field-key{display:flex;gap:22px;flex-wrap:wrap;margin-top:14px}
.sr-mission .fk{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.75rem;color:var(--ink-3)}
.sr-mission .fk-d{width:9px;height:9px;border-radius:50%;background:var(--border-2);flex:none}
.sr-mission .fk-on{background:var(--signal)}

.sr-mission .ms-cta{display:flex;gap:12px;flex-wrap:wrap}
.sr-mission .ms-cta .cta{padding:13px 22px;border-radius:11px}

.sr-mission .ms-sec{max-width:760px;padding:44px 0;border-top:1px solid var(--border)}
.sr-mission .ms-h2{font-family:var(--sans);font-weight:600;letter-spacing:-.02em;font-size:clamp(1.25rem,2.6vw,1.7rem);line-height:1.3;color:var(--ink);margin:12px 0 18px}
.sr-mission .ms-sec p{font-size:.98rem;line-height:1.75;color:var(--ink-2);margin:0 0 16px}
.sr-mission .ms-sec p b{font-family:var(--mono);font-weight:500;color:var(--ink)}
.sr-mission .ms-quote{
  margin:26px 0 0;padding:0 0 0 20px;border-left:2px solid var(--signal);
  font-size:1.05rem;line-height:1.65;color:var(--ink);
}
.sr-mission .ms-split{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:8px}
.sr-mission .ms-col{display:flex;flex-direction:column;gap:8px}
.sr-mission .ms-k{font-family:var(--mono);font-size:.68rem;letter-spacing:.11em;text-transform:uppercase;color:var(--signal);font-weight:700}
.sr-mission .ms-close{text-align:left}
.sr-mission .ms-close .ms-h2{max-width:600px}

@media (max-width:820px){
  .sr-mission .field{grid-template-columns:repeat(25,1fr);gap:4px;padding:14px}
  .sr-mission .ms-split{grid-template-columns:1fr;gap:26px}
  .sr-mission .ms-hero{padding:40px 0 32px}
}
@media (prefers-reduced-motion:reduce){
  .sr-mission .fd{animation:none;opacity:1}
}

/* ===================================================================
   SUPPORT — brought into line with the rest of the site.
   Was: six questions in one 820px column, left-aligned, ~60% of the
   viewport, everything else empty. For a page asking a stranger to
   hand over a vulnerability and a few thousand dollars, six answers is
   not a support page — it is a shrug.
   Now: 16 customer questions, grouped by what a person is actually
   worried about, across the full width.
   =================================================================== */
.sr-support .faq-cols{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:28px;
  align-items:start;
}
.sr-support .faq-group{display:flex;flex-direction:column;gap:12px;min-width:0}

/* group headings speak the site's language: mono, tracked, on a rule */
.sr-support .fg-h{
  display:flex;align-items:center;
  margin:0;padding-bottom:9px;
  border-bottom:1px solid var(--border);
  font-family:var(--mono);font-weight:500;font-size:.74rem;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ink);
}
.sr-support .fg-h::before{
  content:"";flex:none;width:3px;height:12px;margin-right:10px;
  border-radius:1px;background:var(--signal);
}

/* the questions themselves — flat, hairline-separated. Not a stack of rounded cards. */
.sr-support .su-faq details{
  border:0;border-radius:0;background:none;
  border-bottom:1px solid var(--border);
}
.sr-support .su-faq details:last-child{border-bottom:0}
.sr-support .su-faq summary{
  position:relative;cursor:pointer;list-style:none;
  padding:13px 34px 13px 0;
  font-size:.92rem;font-weight:500;line-height:1.5;color:var(--ink);
  transition:color .14s ease;
}
.sr-support .su-faq summary::-webkit-details-marker{display:none}
.sr-support .su-faq summary::marker{content:""}
.sr-support .su-faq summary:hover{color:var(--signal)}
.sr-support .su-faq summary:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:4px}
.sr-support .su-faq summary::after{
  content:"";position:absolute;right:6px;top:50%;
  width:8px;height:8px;margin-top:-5px;
  border-right:1.6px solid var(--ink-3);border-bottom:1.6px solid var(--ink-3);
  transform:rotate(45deg);
  transition:transform .18s ease,border-color .14s ease;
}
.sr-support .su-faq details[open] summary::after{transform:rotate(-135deg);margin-top:-2px;border-color:var(--signal)}
.sr-support .su-faq details[open] summary{color:var(--signal);border-bottom:0}
.sr-support .su-faq details p{
  margin:0;padding:0 34px 15px 0;
  font-size:.88rem;line-height:1.65;color:var(--ink-2);
}
.sr-support .su-faq details p a{color:var(--signal)}
.sr-support .su-faq-h{
  font-family:var(--sans);font-weight:600;letter-spacing:-.02em;
  font-size:1.35rem;color:var(--ink);margin:32px 0 22px;
}
@media (prefers-reduced-motion:reduce){
  .sr-support .su-faq summary::after{transition:none}
}
@media (max-width:640px){
  .sr-support .faq-cols{gap:22px}
}

/* EPSS bar widths — CSP blocks inline style, so width rides on a class */
.sr-cve .gw-1{width:1%}.sr-cve .gw-2{width:2%}.sr-cve .gw-3{width:3%}.sr-cve .gw-4{width:4%}.sr-cve .gw-5{width:5%}.sr-cve .gw-6{width:6%}.sr-cve .gw-7{width:7%}.sr-cve .gw-8{width:8%}.sr-cve .gw-9{width:9%}.sr-cve .gw-10{width:10%}
.sr-cve .gw-11{width:11%}.sr-cve .gw-12{width:12%}.sr-cve .gw-13{width:13%}.sr-cve .gw-14{width:14%}.sr-cve .gw-15{width:15%}.sr-cve .gw-16{width:16%}.sr-cve .gw-17{width:17%}.sr-cve .gw-18{width:18%}.sr-cve .gw-19{width:19%}.sr-cve .gw-20{width:20%}
.sr-cve .gw-21{width:21%}.sr-cve .gw-22{width:22%}.sr-cve .gw-23{width:23%}.sr-cve .gw-24{width:24%}.sr-cve .gw-25{width:25%}.sr-cve .gw-26{width:26%}.sr-cve .gw-27{width:27%}.sr-cve .gw-28{width:28%}.sr-cve .gw-29{width:29%}.sr-cve .gw-30{width:30%}
.sr-cve .gw-31{width:31%}.sr-cve .gw-32{width:32%}.sr-cve .gw-33{width:33%}.sr-cve .gw-34{width:34%}.sr-cve .gw-35{width:35%}.sr-cve .gw-36{width:36%}.sr-cve .gw-37{width:37%}.sr-cve .gw-38{width:38%}.sr-cve .gw-39{width:39%}.sr-cve .gw-40{width:40%}
.sr-cve .gw-41{width:41%}.sr-cve .gw-42{width:42%}.sr-cve .gw-43{width:43%}.sr-cve .gw-44{width:44%}.sr-cve .gw-45{width:45%}.sr-cve .gw-46{width:46%}.sr-cve .gw-47{width:47%}.sr-cve .gw-48{width:48%}.sr-cve .gw-49{width:49%}.sr-cve .gw-50{width:50%}
.sr-cve .gw-51{width:51%}.sr-cve .gw-52{width:52%}.sr-cve .gw-53{width:53%}.sr-cve .gw-54{width:54%}.sr-cve .gw-55{width:55%}.sr-cve .gw-56{width:56%}.sr-cve .gw-57{width:57%}.sr-cve .gw-58{width:58%}.sr-cve .gw-59{width:59%}.sr-cve .gw-60{width:60%}
.sr-cve .gw-61{width:61%}.sr-cve .gw-62{width:62%}.sr-cve .gw-63{width:63%}.sr-cve .gw-64{width:64%}.sr-cve .gw-65{width:65%}.sr-cve .gw-66{width:66%}.sr-cve .gw-67{width:67%}.sr-cve .gw-68{width:68%}.sr-cve .gw-69{width:69%}.sr-cve .gw-70{width:70%}
.sr-cve .gw-71{width:71%}.sr-cve .gw-72{width:72%}.sr-cve .gw-73{width:73%}.sr-cve .gw-74{width:74%}.sr-cve .gw-75{width:75%}.sr-cve .gw-76{width:76%}.sr-cve .gw-77{width:77%}.sr-cve .gw-78{width:78%}.sr-cve .gw-79{width:79%}.sr-cve .gw-80{width:80%}
.sr-cve .gw-81{width:81%}.sr-cve .gw-82{width:82%}.sr-cve .gw-83{width:83%}.sr-cve .gw-84{width:84%}.sr-cve .gw-85{width:85%}.sr-cve .gw-86{width:86%}.sr-cve .gw-87{width:87%}.sr-cve .gw-88{width:88%}.sr-cve .gw-89{width:89%}.sr-cve .gw-90{width:90%}
.sr-cve .gw-91{width:91%}.sr-cve .gw-92{width:92%}.sr-cve .gw-93{width:93%}.sr-cve .gw-94{width:94%}.sr-cve .gw-95{width:95%}.sr-cve .gw-96{width:96%}.sr-cve .gw-97{width:97%}.sr-cve .gw-98{width:98%}.sr-cve .gw-99{width:99%}.sr-cve .gw-100{width:100%}


/* ===================================================================
   SIDEBAR — two cards that were field dumps.
   "At a glance" listed ten label/value rows in which "Exploited" — the
   most consequential fact on the page — carried exactly as much weight
   as "Published". A card called At a glance should answer, at a glance:
   how bad is this, and is anybody coming?
   =================================================================== */
.sr-cve .glance-verdict{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}
.sr-cve .gv{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border-radius:10px;border:1px solid var(--border)}
.sr-cve .gv svg{flex:none;width:16px;height:16px;margin-top:1px}
.sr-cve .gv-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.sr-cve .gv-t b{font-size:.87rem;line-height:1.3;color:var(--ink)}
.sr-cve .gv-t small{font-size:.74rem;line-height:1.4;color:var(--ink-3)}

.sr-cve .gv-alarm{border-color:color-mix(in srgb,var(--sev-critical) 38%,transparent);background:color-mix(in srgb,var(--sev-critical) 10%,transparent)}
.sr-cve .gv-alarm svg{color:var(--sev-critical)}
.sr-cve .gv-alarm .gv-t b{color:var(--sev-critical)}
.sr-cve .gv-warn{border-color:color-mix(in srgb,var(--sev-high) 34%,transparent);background:color-mix(in srgb,var(--sev-high) 8%,transparent)}
.sr-cve .gv-warn svg{color:var(--sev-high)}
.sr-cve .gv-warn .gv-t b{color:var(--sev-high)}
.sr-cve .gv-ok{border-color:color-mix(in srgb,var(--sev-low) 34%,transparent);background:color-mix(in srgb,var(--sev-low) 8%,transparent)}
.sr-cve .gv-ok svg{color:var(--sev-low)}
.sr-cve .gv-ok .gv-t b{color:var(--sev-low)}

/* the two numbers that are actually comparable across CVEs */
.sr-cve .glance-meters{display:flex;flex-direction:column;gap:12px;padding:13px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.sr-cve .gm{display:flex;flex-direction:column;gap:5px}
.sr-cve .gm-k{font-family:var(--mono);font-size:.65rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.sr-cve .gm-sub{letter-spacing:.04em;text-transform:none;opacity:.75}
.sr-cve .gm-v{font-family:var(--mono);font-size:1.1rem;font-weight:500;color:var(--ink);line-height:1}
.sr-cve .gm-v small{font-size:.72rem;font-weight:400;color:var(--ink-3);margin-left:4px}
.sr-cve .gm-v.sev-critical{color:var(--sev-critical)} .sr-cve .gm-v.sev-high{color:var(--sev-high)}
.sr-cve .gm-v.sev-medium{color:var(--sev-medium)}    .sr-cve .gm-v.sev-low{color:var(--sev-low)}
.sr-cve .gm-bar{display:block;height:4px;border-radius:2px;background:var(--surface-3);overflow:hidden}
.sr-cve .gm-fill{display:block;height:100%;border-radius:2px;background:var(--signal)}

/* reference data drops to a quiet spec list — it is lookup, not verdict */
.sr-cve .glance-ref{margin:13px 0 0;display:flex;flex-direction:column;gap:0}
.sr-cve .glance-ref > div{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:7px 0}
.sr-cve .glance-ref dt{font-family:var(--mono);font-size:.66rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:0;white-space:nowrap}
.sr-cve .glance-ref dd{margin:0;font-size:.83rem;color:var(--ink-2);text-align:right;min-width:0}
.sr-cve .glance-ref .rw-yes{color:var(--sev-critical)}

/* ---- More in <vendor> ---- */
.sr-cve .rel-roll{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:1px;margin:0 0 12px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.sr-cve .rr-stat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;background:var(--surface);text-decoration:none;transition:background .14s ease}
.sr-cve .rr-stat:hover{background:var(--surface-3);text-decoration:none}
.sr-cve .rr-stat b{font-family:var(--mono);font-size:1.02rem;font-weight:500;color:var(--ink);line-height:1}
.sr-cve .rr-stat span{font-family:var(--mono);font-size:.6rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);text-align:center}
.sr-cve .rr-nofix b{color:var(--sev-high)}
.sr-cve .rr-kev b{color:var(--sev-critical)}

.sr-cve .related-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.sr-cve .rl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.sr-cve .rl-row:last-child{border-bottom:0}
.sr-cve .rl-id{display:flex;align-items:center;gap:8px;min-width:0;text-decoration:none}
.sr-cve .rl-id:hover .rl-cve{color:var(--signal)}
.sr-cve .rl-cve{font-family:var(--mono);font-size:.79rem;color:var(--ink-2);white-space:nowrap;transition:color .14s ease}
.sr-cve .rl-meta{display:flex;align-items:center;gap:6px;flex:none}
.sr-cve .rl-kev{font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;padding:2px 5px;border-radius:4px;color:var(--sev-critical);background:color-mix(in srgb,var(--sev-critical) 14%,transparent)}
.sr-cve .rl-nofix{font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;padding:2px 5px;border-radius:4px;color:var(--sev-high);background:color-mix(in srgb,var(--sev-high) 12%,transparent)}
.sr-cve .rl-score{font-family:var(--mono);font-size:.78rem;font-weight:500;min-width:26px;text-align:right}
.sr-cve .rl-score.sev-critical{color:var(--sev-critical)} .sr-cve .rl-score.sev-high{color:var(--sev-high)}
.sr-cve .rl-score.sev-medium{color:var(--sev-medium)}    .sr-cve .rl-score.sev-low{color:var(--sev-low)}
.sr-cve .rel-all{display:block;margin-top:11px;padding-top:11px;border-top:1px solid var(--border);font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--signal);text-decoration:none}
.sr-cve .rel-all:hover{text-decoration:underline}

/* the discussion is a real signal on the board — it shows the community layer is alive,
   and it is the one thing on a hot row you cannot get from a news feed */
.hs-cve .hc-notes{
  display:inline-flex;align-items:center;gap:3px;margin-left:6px;
  font-family:var(--mono);font-size:.62rem;color:var(--ink-3);
  vertical-align:middle;
}
.hs-cve .hc-notes svg{width:10px;height:10px;flex:none}
.hs-cve:hover .hc-notes{color:var(--signal)}

/* ===================================================================
   SECURITY & DISCLOSURE
   Was a narrow left column of prose. A researcher arriving here has
   four questions and wants them answered above the fold: where do I
   send it, what may I test, what will you ignore, and when will you
   reply? So the page answers those before it philosophises.
   =================================================================== */
.sr-security .se-hero{padding:60px 0 44px}
.sr-security .se-hero-in{max-width:880px}
.sr-security .se-h1{
  font-family:var(--sans);font-weight:600;letter-spacing:-.025em;
  font-size:clamp(1.6rem,3.9vw,2.5rem);line-height:1.22;
  color:var(--ink);margin:14px 0 18px;
}
.sr-security .se-h1-dim{color:var(--signal)}
.sr-security .se-lede{max-width:640px;font-size:1.02rem;line-height:1.7;color:var(--ink-2);margin:0 0 28px}

/* the three ways in — the first thing a reporter looks for */
.sr-security .se-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin:0 0 26px}
.sr-security .se-q{display:flex;flex-direction:column;gap:3px;padding:14px 16px;background:var(--surface);text-decoration:none;transition:background .14s ease}
.sr-security .se-q:hover{background:var(--surface-3);text-decoration:none}
.sr-security .seq-k{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.sr-security .seq-v{font-size:.88rem;color:var(--ink)}
.sr-security .se-q:hover .seq-v{color:var(--signal)}

/* a real SLA. "We'll respond promptly" is not a commitment; 24h / 5d / 90d is. */
.sr-security .se-sla{display:flex;gap:0;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:20px}
.sr-security .sla{flex:1 1 160px;display:flex;flex-direction:column;gap:4px;padding-right:22px}
.sr-security .sla b{font-family:var(--mono);font-weight:500;font-size:1.5rem;color:var(--signal);line-height:1}
.sr-security .sla span{font-size:.82rem;line-height:1.45;color:var(--ink-3)}

/* the hazard unique to this site: a public comment box on every CVE page */
.sr-security .se-warn{
  display:flex;align-items:flex-start;gap:12px;
  margin:8px 0 44px;padding:15px 17px;
  border:1px solid color-mix(in srgb,var(--sev-high) 38%,transparent);
  border-left:3px solid var(--sev-high);
  border-radius:0 12px 12px 0;
  background:color-mix(in srgb,var(--sev-high) 8%,transparent);
}
.sr-security .se-warn svg{flex:none;width:18px;height:18px;color:var(--sev-high);margin-top:1px}
.sr-security .se-warn-t{font-size:.9rem;line-height:1.6;color:var(--ink-2)}
.sr-security .se-warn-t b{display:block;color:var(--sev-high);margin-bottom:3px;font-size:.93rem}

.sr-security .se-scope{display:grid;grid-template-columns:1fr 1fr;gap:38px;padding-bottom:44px}
.sr-security .se-h2{
  display:flex;align-items:center;margin:0 0 15px;padding-bottom:9px;
  border-bottom:1px solid var(--border);
  font-family:var(--mono);font-weight:500;font-size:.76rem;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ink);
}
.sr-security .se-h2::before{content:"";flex:none;width:3px;height:12px;margin-right:10px;border-radius:1px;background:var(--signal)}
.sr-security .se-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.sr-security .se-list li{position:relative;padding:9px 0 9px 22px;border-bottom:1px solid var(--border);font-size:.89rem;line-height:1.55;color:var(--ink-2)}
.sr-security .se-list li:last-child{border-bottom:0}
.sr-security .se-list li b{color:var(--ink);font-weight:600}
.sr-security .se-list li a{color:var(--signal)}
.sr-security .se-list li::before{position:absolute;left:0;top:9px;font-family:var(--mono);font-size:.9rem;line-height:1.55}
.sr-security .se-in li::before{content:"+";color:var(--sev-low)}
.sr-security .se-out li::before{content:"\2212";color:var(--ink-3)}

.sr-security .se-policy{padding-bottom:44px}
.sr-security .se-deal{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:26px}
.sr-security .sd{display:flex;flex-direction:column;gap:7px}
.sr-security .sd-k{font-family:var(--mono);font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--signal);font-weight:700}
.sr-security .sd p{margin:0;font-size:.89rem;line-height:1.62;color:var(--ink-2)}

@media (max-width:760px){
  .sr-security .se-scope{grid-template-columns:1fr;gap:28px}
  .sr-security .se-hero{padding:38px 0 30px}
  .sr-security .sla{flex:1 1 100%;padding-right:0;padding-bottom:12px}
}

/* ===================================================================
   HEADER NAV
   The "CVEs" link is gone — the logo already goes there, and a nav that
   repeats the logo wastes its most valuable slot.
   The real fault was that the nav had no active state: six identical
   links on every page. It could tell you where you could go but never
   where you were. Fixed, and that is what makes it read as designed —
   not more ornament, but the thing actually doing its job.
   The links stay quiet Inter on purpose. The CTA beside them is mono /
   uppercase; if the nav shouted too, the CTA would stop standing out.
   =================================================================== */
.nav-links{display:flex;align-items:center;gap:1px}
.nav-links > a,.dd-toggle{
  position:relative;
  display:inline-flex;align-items:center;gap:5px;
  font-family:var(--sans);font-size:.89rem;font-weight:500;
  color:var(--ink-3);
  padding:9px 13px;border-radius:9px;
  white-space:nowrap;
  transition:color .14s ease, background .14s ease;
}
.nav-links > a:hover,.nav-dd:hover .dd-toggle,.nav-dd:focus-within .dd-toggle{
  color:var(--ink);background:var(--surface-2);text-decoration:none;
}
.nav-links > a:focus-visible,.dd-toggle:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}

/* where you are — a signal rule, echoing the tick on every section heading */
.nav-links > a[aria-current="page"],
.nav-dd.dd-active .dd-toggle{color:var(--ink);font-weight:600}
.nav-links > a[aria-current="page"]::after,
.nav-dd.dd-active .dd-toggle::after{
  content:"";position:absolute;left:13px;right:13px;bottom:3px;
  height:2px;border-radius:1px;background:var(--signal);
}
.nav-dd.dd-active .dd-toggle::after{right:26px}

/* the open item inside the dropdown */
.dd-menu a[aria-current="page"]{color:var(--signal);font-weight:600}

@media (max-width:820px){
  .nav-links > a[aria-current="page"]::after,
  .nav-dd.dd-active .dd-toggle::after{
    left:0;right:auto;top:12px;bottom:12px;width:2px;height:auto;
  }
  .nav-links > a[aria-current="page"]{padding-left:12px}
}

/* ===================================================================
   NO-FIX BLOCK — three real bugs, all mine.
   1. .rn-email carried `flex:1 1 260px` from when this form was a ROW
      (input beside button). I switched .rn-form to a COLUMN and left it,
      so flex-grow:1 became grow-VERTICALLY. The email box ate the card.
   2. .rn-done set display:flex, which overrides the [hidden] attribute —
      the "Logged, we prioritise by demand" success message was showing
      on every page load, before anyone had clicked anything.
   3. The two columns are grid items, so they stretch to equal height.
      With nothing set to absorb the slack, the input took it.
   =================================================================== */

/* 1 — the input must never grow. It is one line of text. */
.sr-cve .rn-email{
  flex:none !important;
  width:100%;box-sizing:border-box;
  height:auto;min-height:0;
  padding:11px 13px;
}

/* 2 — [hidden] must win. Both of these set display, so both must opt out. */
.sr-cve .rn-done[hidden],
.sr-cve .rn-demand[hidden],
.sr-cve .rem-needed [hidden]{display:none !important}

/* 3 — the paragraph absorbs the height difference, not the form. */
.sr-cve .rn-paths{align-items:stretch}
.sr-cve .rn-path{display:flex;flex-direction:column;gap:9px;padding:16px 17px}
.sr-cve .rnp-p{flex:1 1 auto;margin:0}
.sr-cve .rn-form{display:flex;flex-direction:column;gap:9px;margin:0;flex:none}
.sr-cve .rn-path .cta{width:100%;flex:none}
.sr-cve .rn-scope{margin-top:auto}
.sr-cve .rn-as{font-size:.73rem;line-height:1.4;color:var(--ink-3);text-align:center}
.sr-cve .rn-as .mono{color:var(--ink-2)}

/* scan page CTAs join the site voice; GitHub gets GitHub's own mark, and leaves in a new tab
   because it is a different destination, not a page of ours */
.sr-scan .scan-actions{display:flex;gap:11px;flex-wrap:wrap}

/* ---- filled CTA: state the colour, never inherit it ----
   The scan buttons vanished because `.scan-cta` was ALREADY a layout container on that page,
   with `.scan-cta span{color:var(--ink)}` — so my label span was painted near-white (#e9edf0)
   on the bright teal .btn fill (#2dd4bf). Two lessons, both applied:
     - my buttons are .scan-btn now, not .scan-cta. Do not reuse a name that exists.
     - a filled CTA declares its own ink, so no ambient rule can ever wash it out again. */
.btn.cta,
.btn.cta .cta-t,
.btn.cta .cta-ic{color:var(--accent-ink)}
.btn.cta .cta-ic{stroke:currentColor}
.btn.cta:hover,
.btn.cta:hover .cta-t{color:var(--accent-ink)}

/* the quiet variant keeps its own ink and must not be dragged along by the rule above */
.btn.cta.cta-quiet,
.btn.cta.cta-quiet .cta-t,
.btn.cta.cta-quiet .cta-ic{color:var(--ink)}
.btn.cta.cta-quiet:hover,
.btn.cta.cta-quiet:hover .cta-t{color:var(--ink)}

.sr-scan .scan-btn{padding:12px 20px;border-radius:11px;font-size:.78rem}
.sr-scan .scan-btn .cta-ic{width:16px;height:16px}

/* the tip sat at the console's old 800px while everything around it runs full width */
.sr-scan .scan-tip{max-width:none;width:100%;margin-top:14px}

/* ---- light theme: the filled CTA sits on an AA-safe teal ----
   The site already defines --signal-2 and its own comment calls it "AA-safe teal for fills on
   white" — but .btn uses --accent (= --signal), which gives white-on-teal at 4.0:1, under the
   4.5:1 AA floor. Scoped to .btn.cta so this does not silently restyle every button on the
   site; the wider fix is a --accent decision, not mine to make unilaterally. */
[data-theme="light"] .btn.cta:not(.cta-quiet){background:var(--signal-2)}   /* 5.4:1 — passes */
[data-theme="light"] .btn.cta:not(.cta-quiet):hover{background:#096d62}     /* 6.2:1 */

/* the result summary fills its container too, or the cap just moves down a level */
.sr-scan .scan-result .scan-sum{width:100%;box-sizing:border-box}

/* ===================================================================
   AGENT DISCUSSION block on the CVE page — the published summary from
   agents.dbcve.org, read-only. Sits atop practitioner notes: the agent
   discussion is the seed, human notes grow under it.
   =================================================================== */
.sr-cve .agent-disc{border:1px solid var(--signal-line);border-radius:14px;background:linear-gradient(180deg,var(--signal-weak),transparent);padding:18px 20px;margin-bottom:22px}
.sr-cve .agent-disc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.sr-cve .ad-badge{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;font-weight:500;color:var(--signal)}
.sr-cve .ad-badge-ic{width:16px;height:16px}
.sr-cve .ad-count{font-family:var(--mono);font-size:.74rem;color:var(--ink-3)}
.sr-cve .ad-summary{margin:0 0 14px;font-size:.98rem;line-height:1.6;color:var(--ink)}
.sr-cve .ad-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--signal-line)}
.sr-cve .ad-link{font-size:.88rem;font-weight:500;color:var(--signal);text-decoration:none;white-space:nowrap}
.sr-cve .ad-link:hover{text-decoration:underline}
.sr-cve .ad-note{font-size:.76rem;color:var(--ink-3);line-height:1.4}
@media (max-width:560px){
  .sr-cve .ad-foot{flex-direction:column;align-items:flex-start;gap:8px}
}

/* ===================================================================
   MOBILE HORIZONTAL-OVERFLOW GUARD
   Stops the page scrolling sideways on narrow screens. The layout is
   sound at every breakpoint; this catches any single element that
   escapes its container (long unbroken strings, wide flex children,
   tables) without altering the desktop layout. Appended last so it
   wins on equal specificity, but every rule here is scoped so it can
   only PREVENT overflow, never change a working layout.
   =================================================================== */

/* 1. Global guard — clip stray horizontal overflow at the root. `clip`
      (not `hidden`) avoids creating a scroll container, so sticky/fixed
      positioning elsewhere keeps working. Applies at all widths; it only
      bites when something would have overflowed anyway. */
html, body { overflow-x: clip; max-width: 100%; }

/* 2. The homepage status bar: a flex row whose inline items + right-pushed
      label can exceed a narrow viewport. Let it hide the overflow tail on
      small screens rather than widen the page. */
@media (max-width: 560px) {
  .sr-home .statusbar .wrap { gap: 10px; }
  .sr-home .st-scroll { display: none; }   /* the "source: NVD…" tail — non-essential on mobile */
}

/* 3. Long unbroken strings (CVE ids, URLs, tokens, code) are the classic
      cause of a single wide element. Allow them to wrap on small screens
      instead of forcing width. Scoped to text-ish containers only. */
@media (max-width: 560px) {
  .sr-home .feed .fid,
  .sr-home .feed .meta,
  .sr-home code,
  .sr-home pre { overflow-wrap: anywhere; word-break: break-word; }
}

/* 4. Any table on the homepage: never let it force page width — let it
      scroll within its own wrapper instead. */
@media (max-width: 720px) {
  .sr-home .tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .sr-home table { min-width: 0; }
}

/* 5. Media never overflows its column. */
.sr-home img,
.sr-home svg,
.sr-home video { max-width: 100%; height: auto; }

/* ===================================================================
   SEARCH RESULTS — stack cards vertically on mobile
   The search .res-row is a 2-column grid (severity badge | content).
   The existing ≤720px rule kept it two-column (auto | 1fr), so the
   badge stayed BESIDE the content and never collapsed. On narrow
   screens, drop to a single column so the badge sits ABOVE the
   content and rows read top-to-bottom. Scoped to .sr-search so the
   browse page (its own layout) is unaffected.
   =================================================================== */
@media (max-width: 640px) {
  .sr-search .res-row {
    grid-template-columns: 1fr;   /* single column — everything stacks */
    gap: 8px;
  }
  /* the severity badge sits on its own line, sized to its content
     instead of stretching the full width */
  .sr-search .rr-sev { justify-content: flex-start; }
  .sr-search .rr-sev .sev { display: inline-flex; }
}

/* ===================================================================
   BROWSE CARD VIEW — single column on mobile
   .res-cards uses repeat(auto-fill, minmax(300px,1fr)). On a phone the
   300px floor still lets two cramped columns fit and wrap, so cards
   never stack vertically. Below 640px, force one column so each card
   is full-width and rows read top-to-bottom. Scoped to .sr-browse.
   =================================================================== */
@media (max-width: 640px) {
  .sr-browse .res-cards {
    grid-template-columns: 1fr;   /* one full-width column — cards stack vertically */
  }
}

/* ===================================================================
   ROOT-CAUSE CONTAINMENT — flex/grid min-width:auto overflow
   Symptom: on mobile, cards/pills/text on every page extend past the
   screen edge (dragged out of view), even with no scrollbar.
   Cause: flex & grid items default to min-width:auto, so they refuse
   to shrink below their content's intrinsic width. A horizontal scroll
   rail (.tf-track, 186px cards) inside .wrap forces its ancestors —
   and therefore .wrap — wider than the viewport, dragging ALL sibling
   content off-screen. `overflow-x:clip` only hid the scrollbar; this
   actually CONTAINS the width so content wraps within the screen.
   =================================================================== */

/* 1. Let the page wrapper and its section descendants shrink to fit the
      viewport instead of being dragged wide by intrinsic content width. */
.wrap { min-width: 0; }
.wrap > * { min-width: 0; }

/* 2. The threat/KEV feed contains a horizontal scroll rail. Let the feed
      block shrink to viewport width; the rail (.tf-track) then scrolls
      WITHIN it rather than forcing the whole page wide. */
.sr-browse .threat-feed { min-width: 0; max-width: 100%; }
.sr-browse .tf-track {
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;   /* momentum scroll on iOS */
  scrollbar-width: thin;
}

/* 3. Wrapping pill/chip rows (Top technology, facets) must actually wrap
      within the container. They already declare flex-wrap; ensure they
      can't be dragged wide and that individual chips don't force width. */
.sr-browse .vendor-facet { min-width: 0; max-width: 100%; }
.sr-browse .vf-chip { max-width: 100%; }

/* 4. Any grid/flex row of cards: children shrink, content wraps. This is
      the general guard so this class of bug can't recur page to page. */
.res-cards, .res-list, .factions, .filters, .b-head { min-width: 0; }
.res-cards > *, .res-list > * { min-width: 0; max-width: 100%; }

/* 5. Long text/ids never force width — wrap instead. */
.sr-browse .cc-desc,
.sr-browse .cc-prod,
.sr-browse .rr-desc,
.sr-browse .tf-prod { overflow-wrap: anywhere; }

/* ===================================================================
   THE ACTUAL FIX — .results is the grid item that won't shrink
   .layout is grid: 248px | minmax(0,1fr). Track 2 can shrink, but the
   grid ITEM placed in it (.results) defaults to min-width:auto and
   refuses to shrink below its content's intrinsic width. Its content
   is .threat-feed > .tf-track — a flex row of 186px cards ~1575px wide.
   So .results balloons to 1575px, forcing the track, the grid, and the
   whole page wide. min-width:0 on the TRACK is not enough; the grid
   ITEM needs it. This is the real cause of the page stretching.
   =================================================================== */
.sr-browse .results {
  min-width: 0;      /* let the grid item shrink to its track instead of its content */
  max-width: 100%;
  overflow: hidden;  /* belt-and-braces: contain any child that still tries to exceed */
}

/* the horizontal rail: its scroll must stay INSIDE .results, never push it wider */
.sr-browse .threat-feed { min-width: 0; max-width: 100%; overflow: hidden; }
.sr-browse .tf-track {
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;                     /* the rail scrolls sideways within its box */
  -webkit-overflow-scrolling: touch;
}
.sr-browse .tf-card { flex: 0 0 auto; } /* cards keep their width but inside the scroller */

/* ===================================================================
   SIDE GUTTER FIX — .sr-list zeroed the horizontal padding
   .sr-list sets `padding: 6px 0 8px` (0 left/right), which overrides
   .wrap's `padding: 0 24px` because it's later in the file with equal
   specificity. Result: browse & search content sits flush against the
   screen edge. Restore the horizontal gutter while keeping .sr-list's
   intended top/bottom padding.
   =================================================================== */
.sr-list.wrap,
.sr-browse.wrap,
.sr-search.wrap {
  padding-left: 24px;
  padding-right: 24px;
}

/* tighten the gutter a touch on small screens so content still has room */
@media (max-width: 640px) {
  .sr-list.wrap,
  .sr-browse.wrap,
  .sr-search.wrap {
    padding-left: 16px;
    padding-right: 16px;
  }
  /* and give the homepage's wrapped sections the same comfortable mobile gutter */
  .sr-home .wrap {
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* ============================================================
   /agents — AI agent analysis explainer (main site, LIGHT theme)
   Uses site tokens: --bg --ink --signal --surface --mono --sans --border
   ============================================================ */
.sr-agents-x .eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;
  font-size:.72rem;color:var(--signal-2);font-weight:600}

/* hero */
.sr-agents-x .agx-hero{display:grid;grid-template-columns:1.08fr .92fr;gap:56px;align-items:center;
  max-width:1160px;margin:0 auto;padding:64px 32px 56px}
.agx-h1{font-family:var(--font-display,var(--sans));font-weight:700;letter-spacing:-.025em;
  line-height:1.08;font-size:clamp(2rem,4.4vw,3.15rem);color:var(--ink);margin:14px 0 20px}
.agx-lede{font-size:1.08rem;line-height:1.62;color:var(--ink-2);max-width:52ch;margin:0 0 26px}
.agx-lede em,.agx-why-item em{font-style:italic;color:var(--ink);font-weight:500}
.agx-cta-row{display:flex;gap:13px;flex-wrap:wrap;align-items:center}
.agx-btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;
  font-size:.95rem;padding:12px 22px;border-radius:8px;text-decoration:none;transition:.16s;border:1px solid transparent;cursor:pointer}
.agx-btn-primary{background:var(--signal-2);color:var(--signal-ink)}
.agx-btn-primary:hover{background:var(--signal);transform:translateY(-1px);box-shadow:0 8px 20px -8px var(--signal-line)}
.agx-btn-ghost{background:transparent;color:var(--ink);border-color:var(--border-strong)}
.agx-btn-ghost:hover{background:var(--surface-2);border-color:var(--signal-2)}
.agx-btn-lg{padding:15px 30px;font-size:1.02rem}

/* the dark "terminal" flow card on the light hero */
.agx-flowcard{background:#0c1016;border:1px solid #222833;border-radius:12px;overflow:hidden;
  box-shadow:0 26px 64px -22px rgba(12,20,24,.5);min-height:320px;display:flex;flex-direction:column}
.agx-flowcard-bar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:#141922;border-bottom:1px solid #232a34}
.agx-fdot{width:11px;height:11px;border-radius:50%;background:#39404b}
.agx-fdot:nth-child(1){background:#e0625e}.agx-fdot:nth-child(2){background:#e0b23e}.agx-fdot:nth-child(3){background:#5bb85b}
.agx-flowcard-title{margin-left:8px;font-size:.74rem;color:#6b7482}
.agx-flowcard-body{margin:0;padding:20px 22px;font-size:.85rem;line-height:1.85;color:#c4cdd8;
  white-space:pre-wrap;word-break:break-word;flex:1}
.agx-t-who{color:#7dd3fc;font-weight:600}
.agx-t-warden{color:#c4b5fd;font-weight:600}
.agx-t-act{color:#86efac}
.agx-t-act2{color:#cbd5e1}
.agx-t-cve{color:#fbbf24;font-weight:600}
.agx-t-quote{color:#7a8494;font-style:italic}
.agx-t-ok{color:#86efac;font-weight:600}
.agx-t-no{color:#fca5a5;font-weight:600}
.agx-t-score{color:#5eead4;font-weight:700}
.agx-t-dim{color:#6b7482}
.agx-t-link{color:#5eead4;text-decoration:underline}
.agx-t-caret{color:#5eead4;animation:agx-blink 1s steps(2) infinite}
@keyframes agx-blink{0%,50%{opacity:1}50.01%,100%{opacity:0}}

/* why section */
.agx-why{background:var(--surface-2);border-top:1px solid var(--border)}
.agx-why-in,.agx-process-in,.agx-supp-in,.agx-final-in{max-width:1000px;margin:0 auto;padding:56px 32px}
.agx-h2{font-family:var(--font-display,var(--sans));font-weight:700;letter-spacing:-.02em;
  font-size:1.75rem;color:var(--ink);margin:10px 0 30px}
.agx-why-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 40px}
.agx-why-item h3{font-family:var(--sans);font-weight:650;font-size:1.08rem;color:var(--ink);margin:0 0 8px}
.agx-why-item p{font-size:.96rem;line-height:1.6;color:var(--ink-2);margin:0}

/* process steps */
.agx-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.agx-step{display:flex;gap:22px;padding:24px 0;border-top:1px solid var(--border)}
.agx-step:first-child{border-top:none}
.agx-step-n{flex-shrink:0;font-size:1.3rem;font-weight:700;color:var(--signal-2);
  width:44px;line-height:1.2}
.agx-step-c h3{font-family:var(--sans);font-weight:650;font-size:1.15rem;color:var(--ink);margin:0 0 8px}
.agx-step-c p{font-size:.98rem;line-height:1.62;color:var(--ink-2);margin:0;max-width:64ch}
.agx-step-c em{font-style:italic;color:var(--ink)}

/* supplements band */
.agx-supp{background:#0c1016;color:#e6edf4}
.agx-supp .agx-h2{color:#ffffff}
.agx-supp-lede{font-size:1.06rem;line-height:1.68;color:#c9d2dc;max-width:70ch;margin:0}

/* final CTA */
.agx-final{border-top:1px solid var(--border);text-align:center}
.agx-final-in{padding-top:60px;padding-bottom:72px}
.agx-final-h{font-family:var(--font-display,var(--sans));font-weight:700;letter-spacing:-.02em;
  font-size:clamp(1.7rem,3.6vw,2.4rem);color:var(--ink);margin:0 0 12px}
.agx-final-p{font-size:1.04rem;color:var(--ink-2);margin:0 0 26px}

/* responsive */
@media (max-width:840px){
  .sr-agents-x .agx-hero{grid-template-columns:1fr;gap:36px;padding:44px 20px}
  .agx-why-grid{grid-template-columns:1fr;gap:22px}
  .agx-step{gap:14px}
  .agx-step-n{width:34px;font-size:1.1rem}
}
@media (prefers-reduced-motion:reduce){.agx-t-caret{animation:none}}

/* CVE-page agent block: score, contributors, and the "run your own agent" upsell */
.sr-cve .ad-meta{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap}
.sr-cve .ad-score{font-family:var(--mono);font-size:.74rem;font-weight:600;color:var(--signal-2);
  background:var(--signal-weak);padding:2px 8px;border-radius:5px}
.sr-cve .ad-when{font-family:var(--mono);font-size:.74rem;color:var(--ink-3)}
.sr-cve .ad-contribs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.sr-cve .ad-contribs-label{font-size:.78rem;color:var(--ink-3);margin-right:2px}
.sr-cve .ad-contrib{font-size:.76rem;color:var(--ink-2);background:var(--surface-2);
  border:1px solid var(--border);padding:2px 8px;border-radius:20px}
.sr-cve .ad-upsell{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;
  border:1px solid var(--signal-line);border-radius:10px;background:var(--signal-weak);
  text-decoration:none;transition:.16s}
.sr-cve .ad-upsell:hover{background:color-mix(in srgb,var(--signal) 14%,transparent);border-color:var(--signal-2)}
.sr-cve .ad-upsell-ic{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;background:var(--signal-2);color:var(--signal-ink)}
.sr-cve .ad-upsell-ic svg{width:17px;height:17px}
.sr-cve .ad-upsell-txt{flex:1;font-size:.86rem;line-height:1.45;color:var(--ink-2)}
.sr-cve .ad-upsell-txt b{color:var(--ink);font-weight:650}
.sr-cve .ad-upsell-go{flex-shrink:0;font-family:var(--mono);font-size:.78rem;font-weight:600;color:var(--signal-2);white-space:nowrap}
@media (max-width:640px){
  .sr-cve .ad-upsell{flex-wrap:wrap}
  .sr-cve .ad-upsell-go{width:100%;text-align:right}
}

/* contributor chips link to agent profiles */
.sr-cve a.ad-contrib{text-decoration:none;transition:.14s}
.sr-cve a.ad-contrib:hover{border-color:var(--signal-2);color:var(--signal-2);background:var(--signal-weak)}
