  /* No login flash on refresh: if a saved token exists, hide the auth screen and show
     the app shell from the very first paint (before the big script runs). showAuthView()
     clears .has-token so an invalid/expired token still falls back to the login screen. */
  html.has-token #authView{display:none!important}
  html.has-token #appView{display:block!important}
  :root {
    --bg:#0A0B0D; --bg-2:#101113; --surface:#141518; --surface-2:#1A1C20; --surface-3:#202329;
    /* hairlines carry a faint warm cast so borders belong to the gold/parchment family, not clinical white */
    --border:rgba(236,226,214,0.10); --border-faint:rgba(236,226,214,0.055); --border-strong:rgba(236,226,214,0.19);
    --text:#EDEEF2; --text-2:#B4B8C0; --text-3:#9CA1AB; --text-4:#8A8E95;  /* all >=4.5:1 on bg/surface/surface-2 */
    --text-1:var(--text);  /* alias: some rules use --text-1 for primary text */
    --accent:#C9A87C; --accent-strong:#E0C79C; --accent-dim:rgba(201,168,124,0.10);
    --accent-ink:#C9A87C; --accent-soft:var(--accent-dim);  /* gold as TEXT (accent stays the fill colour; ink darkens in light theme for AA) */
    /* primary-button + subtle-fill tokens (flip in light theme) */
    --btn-bg:#fff; --btn-fg:#0A0B0D; --btn-hover:rgba(255,255,255,0.88);
    --fill-1:rgba(255,255,255,0.03); --fill-2:rgba(255,255,255,0.07);
    /* deep inset surfaces — code/console/req-resp blocks (flip in light theme) */
    --ink:#07090d; --ink-2:#010409;
    --crit:#E06C60; --high:#D98A5B; --med:#CBB26A; --low:#8FA9B8; --info:#8A8F99; --ok:#7FB08A;
    --font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    --font-serif:"Newsreader",Georgia,"Times New Roman",serif;
    --font-mono:"Geist Mono",ui-monospace,"JetBrains Mono",SFMono-Regular,Menlo,monospace;
    --radius:4px; --radius-lg:9px; --radius-xl:14px; --ease:cubic-bezier(0.32,0.72,0,1);
    /* spacing rhythm */
    --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-7:32px; --sp-8:44px;
    /* elevation — a lit-from-above hairline plus soft, low shadows so panels read as physical surfaces */
    --hair-top:inset 0 1px 0 rgba(255,255,255,0.035);
    --shadow-1:0 1px 2px rgba(0,0,0,0.28), 0 6px 16px -10px rgba(0,0,0,0.55);
    --shadow-2:0 2px 6px rgba(0,0,0,0.34), 0 18px 44px -18px rgba(0,0,0,0.62);
    --shadow-pop:0 10px 28px rgba(0,0,0,0.5), 0 44px 84px -24px rgba(0,0,0,0.82);
  }

  /* ── Light theme ─────────────────────────────────────────────────────────
     Opt-in via <html data-theme="light"> (set by the account-menu toggle and the
     early inline script in index.html). Same Planck brand — warm gold accent on a
     parchment ground — only the color tokens flip; fonts/spacing/radius are shared.
     Higher specificity than :root, so these win where set. */
  html[data-theme="light"] {
    --bg:#EFEBE2; --bg-2:#E7E2D6; --surface:#FBFAF5; --surface-2:#F4F1E9; --surface-3:#ECE7DB;
    --border:rgba(58,48,34,0.14); --border-faint:rgba(58,48,34,0.075); --border-strong:rgba(58,48,34,0.24);
    --text:#211E17; --text-2:#3F3A30; --text-3:#595548; --text-4:#676157;  /* >=4.5:1 on every parchment surface */
    --accent:#9A7B45; --accent-strong:#7C5F30; --accent-dim:rgba(154,123,69,0.12); --accent-ink:#755D34;
    --btn-bg:#241F17; --btn-fg:#F6F2EA; --btn-hover:#3A3226;
    --fill-1:rgba(0,0,0,0.035); --fill-2:rgba(0,0,0,0.075);
    --ink:#EEEAE0; --ink-2:#E6E0D4;
    --crit:#AE3D34; --high:#905324; --med:#755E1D; --low:#45687B; --info:#595548; --ok:#396E4C;  /* AA as text on parchment */
    --hair-top:inset 0 1px 0 rgba(255,255,255,0.65);
    --shadow-1:0 1px 2px rgba(52,44,32,0.07), 0 6px 16px -10px rgba(52,44,32,0.16);
    --shadow-2:0 2px 6px rgba(52,44,32,0.09), 0 18px 44px -18px rgba(52,44,32,0.20);
    --shadow-pop:0 10px 28px rgba(52,44,32,0.16), 0 44px 84px -24px rgba(52,44,32,0.28);
  }
  html[data-theme="light"] ::selection { background:rgba(154,123,69,0.24); color:#211E17; }
  html[data-theme="light"] { scrollbar-color:rgba(58,48,34,0.28) transparent; }
  html[data-theme="light"] *::-webkit-scrollbar-thumb { background:rgba(58,48,34,0.20); border:3px solid transparent; background-clip:padding-box; }
  html[data-theme="light"] *::-webkit-scrollbar-thumb:hover { background:rgba(58,48,34,0.34); background-clip:padding-box; }
  /* atmospheric wash: warm parchment glow from the top, a whisper of cool from the upper-right */
  html[data-theme="light"] body::before {
    background:radial-gradient(1200px 620px at 50% -12%, rgba(154,123,69,0.07), transparent 60%),
               radial-gradient(1000px 560px at 100% -6%, rgba(78,116,136,0.04), transparent 55%); }
  /* the left sidebar has a hardcoded dark gradient; give light theme a parchment one so
     the OPERATOR wordmark + nav (now dark token text) read against it */
  html[data-theme="light"] .sidebar { background:linear-gradient(180deg, #F4F0E8, #EAE5DA 78%); }
  * { box-sizing:border-box; }
  ::selection { background:rgba(201,168,124,0.24); color:var(--text); }
  :focus-visible { outline:2px solid rgba(201,168,124,0.7); outline-offset:3px; border-radius:3px; }
  @media (prefers-reduced-motion: reduce){
    *, *::before, *::after { animation-duration:0.001ms !important; animation-iteration-count:1 !important;
      transition-duration:0.001ms !important; scroll-behavior:auto !important; }
  }
  /* refined thin scrollbars — the OS default breaks the dark, premium feel */
  html { scrollbar-color:rgba(236,226,214,0.16) transparent; scrollbar-width:thin; }
  *::-webkit-scrollbar { width:11px; height:11px; }
  *::-webkit-scrollbar-track { background:transparent; }
  *::-webkit-scrollbar-thumb { background:rgba(236,226,214,0.10); border-radius:100px; border:3px solid transparent; background-clip:padding-box; }
  *::-webkit-scrollbar-thumb:hover { background:rgba(236,226,214,0.22); background-clip:padding-box; }
  body { margin:0; background:var(--bg); color:var(--text-2);
    font-family:var(--font-body); font-size:14px; line-height:1.6; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
  /* atmospheric depth — a whisper of warm light from the top, cool from the upper-right. Subtle, fixed, behind everything. */
  body::before { content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
    background:radial-gradient(1200px 620px at 50% -12%, rgba(201,168,124,0.055), transparent 60%),
               radial-gradient(1000px 560px at 100% -6%, rgba(143,169,184,0.028), transparent 55%); }
  h1,h2,h3 { color:var(--text); }
  .muted { color:var(--text-3); }
  .accent { color:var(--accent-ink); }
  .flex { display:flex; gap:10px; align-items:center; }
  .hidden { display:none !important; }

  /* buttons */
  input, select, button, textarea { font-family:inherit; font-size:14px; }
  button { cursor:pointer; height:40px; padding:0 20px; border:1px solid transparent;
    border-radius:999px; background:var(--btn-bg); color:var(--btn-fg); font-weight:600; font-size:13px;
    transition:transform .18s var(--ease), background .18s var(--ease), border-color .18s var(--ease); }
  button:hover { background:var(--btn-hover); transform:translateY(-1px); }
  button:active:not(:disabled) { transform:translateY(0); transition-duration:.05s; }
  /* Accessibility: honor OS reduced-motion globally (specific animations already guarded above) */
  button.secondary { background:var(--fill-1); color:var(--text); border-color:var(--border); }
  button.secondary:hover { color:var(--text); border-color:var(--border-strong); background:var(--fill-2); }
  button.small { height:32px; padding:0 14px; font-size:12px; }
  button:disabled { opacity:.4; cursor:not-allowed; transform:none; }
  input, select, textarea { width:100%; padding:11px 13px; background:var(--surface-2);
    border:1px solid var(--border); border-radius:var(--radius); color:var(--text); margin-bottom:12px;
    font-family:var(--font-body); font-size:14px;
    transition:border-color .18s var(--ease), box-shadow .18s var(--ease); }
  textarea { resize:vertical; line-height:1.55; }
  input::placeholder, textarea::placeholder { color:var(--text-4); }
  input:focus, select:focus, textarea:focus { outline:none; border-color:rgba(201,168,124,0.5); box-shadow:0 0 0 3px rgba(201,168,124,0.12); }
  input[type=checkbox], input[type=radio] { width:auto; margin-bottom:0; accent-color:var(--accent); }
  code { font-family:var(--font-mono); background:var(--surface-2); padding:2px 6px; border-radius:var(--radius);
    font-size:12px; color:var(--text-2); word-break:break-all; }

  /* eyebrow */
  .eyebrow { font-family:var(--font-mono); font-size:11px; text-transform:uppercase;
    letter-spacing:0.22em; color:var(--accent-ink); font-weight:400; }
  .serif-title { font-family:var(--font-serif); font-weight:400; letter-spacing:-0.01em; color:var(--text); }

  /* ===== AUTH (cinematic split login) ===== */
  .auth-split { position:relative; display:grid; grid-template-columns:1.05fr 0.95fr; min-height:100vh; min-height:100dvh; }

  /* ---- left: full-bleed painting + live console ---- */
  .auth-bg { position:absolute; inset:0; z-index:0; overflow:hidden; }
  .auth-brand { position:relative; z-index:2; display:flex; flex-direction:column;
    justify-content:center; padding:44px 48px 56px; }
  .auth-media { position:absolute; inset:0; z-index:0;
    background-image:url("/assets/img/hero-shark.webp"); background-size:cover; background-position:center 44%;
    filter:brightness(0.80) saturate(1.05); transform:scale(1.03); }
  .auth-veil { position:absolute; inset:0; z-index:1; pointer-events:none;
    background:radial-gradient(66% 60% at 48% 42%, rgba(0,0,0,0.22) 0%, rgba(0,0,0,0.08) 55%, transparent 100%); }
  .auth-scrim { position:absolute; inset:0; z-index:1; pointer-events:none;
    background:
      linear-gradient(90deg, transparent 0%, transparent 44%, rgba(10,11,13,0.34) 66%, rgba(10,11,13,0.66) 100%),
      linear-gradient(180deg, rgba(10,11,13,0.44) 0%, rgba(10,11,13,0.10) 24%, rgba(10,11,13,0.30) 58%, rgba(10,11,13,0.92) 100%); }
  .auth-logo, .auth-hero { position:relative; z-index:2; }
  .auth-brand > .auth-logo { position:absolute; top:44px; left:48px; }

  .auth-logo { display:flex; align-items:center; gap:12px; }
  .auth-logo svg { filter:drop-shadow(0 2px 12px rgba(0,0,0,0.6)); }
  .auth-logo .pk { font-family:var(--font-serif); font-size:16px; letter-spacing:.2em; color:var(--text); display:block; line-height:1; }
  .auth-logo .sub { font-family:var(--font-mono); font-size:9px; letter-spacing:.28em; color:rgba(237,238,242,0.62); text-transform:uppercase; display:block; margin-top:5px; }

  .auth-hero { max-width:34ch; }
  .auth-hero .eyebrow { display:block; margin-bottom:16px; color:var(--accent-strong); text-shadow:0 2px 24px rgba(0,0,0,0.6); }
  .auth-hero h1 { font-family:var(--font-serif); font-weight:400; color:var(--text);
    font-size:clamp(2.2rem,3.2vw,3.25rem); line-height:1.08; letter-spacing:-0.014em; margin:0;
    text-shadow:0 2px 40px rgba(0,0,0,0.65); }
  .auth-hero p { color:rgba(237,238,242,0.82); font-size:15px; line-height:1.62; max-width:42ch; margin:18px 0 0;
    text-shadow:0 1px 20px rgba(0,0,0,0.5); }

  /* ---- right: form ---- */
  .auth-form { position:relative; z-index:2; display:flex; align-items:center; justify-content:center; padding:48px 44px; }
  .auth-card { width:100%; max-width:404px; padding:36px 34px;
    background:linear-gradient(180deg, rgba(18,20,25,0.60), rgba(10,11,14,0.66));
    -webkit-backdrop-filter:blur(22px) saturate(1.15); backdrop-filter:blur(22px) saturate(1.15);
    border:1px solid var(--border-strong); border-radius:18px;
    box-shadow:0 1px 0 rgba(255,255,255,0.05) inset, 0 40px 100px -30px rgba(0,0,0,0.85), 0 16px 44px -22px rgba(0,0,0,0.7); }
  .auth-card .kicker { font-family:var(--font-mono); font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--accent-ink); }
  .cf-turnstile { margin:6px 0 14px; }
  .au-or { display:flex; align-items:center; text-align:center; color:var(--text-4); font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; margin:18px 0 14px; }
  .au-or::before, .au-or::after { content:""; flex:1; height:1px; background:var(--border); }
  .au-or span { padding:0 12px; }
  .au-google { display:flex; justify-content:center; }
  .au-google + .au-google { margin-top:10px; }
  .ms-btn { display:flex; align-items:center; justify-content:center; gap:10px;
    width:336px; height:40px; background:#2F2F2F; border:1px solid #8C8C8C; border-radius:4px;
    color:#fff; font-family:"Segoe UI",Roboto,var(--font-body); font-size:14px; font-weight:500;
    cursor:pointer; transition:background .15s var(--ease); }
  .ms-btn:hover { background:#3c3c3c; transform:none; }
  .ms-btn svg { flex-shrink:0; }
  .omodal { position:fixed; inset:0; z-index:300; display:none; align-items:center; justify-content:center; background:rgba(6,7,9,0.72); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); padding:24px; }
  .omodal.open { display:flex; }
  .omodal-card { width:100%; max-width:400px; background:linear-gradient(180deg,var(--surface-2),var(--surface)); border:1px solid var(--border); border-radius:var(--radius-xl); padding:30px 32px 24px; box-shadow:0 30px 90px rgba(0,0,0,.62); }
  .omodal-eyebrow { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:12px; }
  .omodal-title { font-family:var(--font-serif); font-weight:400; font-size:21px; color:var(--text); margin-bottom:8px; }
  .omodal-sub { color:var(--text-3); font-size:13px; line-height:1.5; margin-bottom:18px; }
  .omodal input { width:100%; background:var(--surface); border:1px solid var(--border); color:var(--text); border-radius:var(--radius); padding:11px 13px; font-size:14px; }
  .omodal input:focus { outline:none; border-color:var(--accent); }
  .omodal-actions { display:flex; justify-content:flex-end; gap:6px; margin-top:20px; }
  .omodal-cancel { font-family:var(--font-mono); font-size:12px; background:transparent; border:none; color:var(--text-4); padding:9px 16px; cursor:pointer; }
  .omodal-cancel:hover { color:var(--text-2); }
  .omodal-ok { font-family:var(--font-mono); font-size:12px; background:transparent; border:1px solid var(--accent); color:var(--accent-ink); padding:9px 20px; border-radius:var(--radius); cursor:pointer; }
  .omodal-ok:hover { background:var(--accent); color:var(--bg); }
  .auth-card h2 { font-family:var(--font-serif); font-weight:400; color:var(--text); font-size:1.62rem; letter-spacing:-0.01em; margin:10px 0 5px; line-height:1.15; }
  .auth-card .sub2 { color:var(--text-3); font-size:13px; margin:0 0 24px; }
  .auth-tabs { display:inline-flex; padding:3px; gap:2px; background:var(--surface-2); border:1px solid var(--border); border-radius:9999px; margin-bottom:20px; }
  .auth-tabs button { height:32px; padding:0 18px; border:none; border-radius:9999px; background:transparent; color:var(--text-3);
    font-family:var(--font-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; transition:.18s var(--ease); }
  .auth-tabs button:hover { color:var(--text); background:transparent; transform:none; }
  .auth-tabs button.active { background:var(--btn-bg); color:var(--btn-fg); }
  .auth-field { margin-bottom:13px; }
  .auth-field label { display:block; font-family:var(--font-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); margin-bottom:6px; }
  .auth-form input { height:46px; padding:0 14px; background:var(--fill-1); border-color:var(--border); }
  .auth-form input:focus { background:var(--fill-2); }
  .auth-submit { width:100%; height:46px; margin-top:6px; font-weight:500; }
  .auth-fine { margin-top:22px; font-size:12px; color:var(--text-4); line-height:1.6; }
  .auth-fine a { color:var(--text-3); text-decoration:none; border-bottom:1px solid var(--border); }
  .auth-fine a:hover { color:var(--accent-ink); border-color:var(--accent); }
  #au_mobilelogo { display:none; }
  @media (max-width:960px){
    .auth-split { grid-template-columns:1fr; }
    .auth-brand { display:none; }
    .auth-form { min-height:100vh; min-height:100dvh; padding:34px 20px; align-items:center; }
    .auth-card { max-width:440px; }
    #au_mobilelogo { display:flex !important; margin-bottom:22px; }
  }

  /* ===== Responsive app shell (off-canvas sidebar) — desktop density preserved ===== */
  .mtopbar { display:none; }
  .nav-backdrop { display:none; }
  @media (max-width:960px){
    .sidebar { position:fixed; left:0; top:0; height:100dvh; z-index:120;
      transform:translateX(-100%); transition:transform .26s var(--ease); box-shadow:var(--shadow-2); will-change:transform; }
    .app-shell.nav-open .sidebar { transform:translateX(0); }
    .nav-backdrop { position:fixed; inset:0; z-index:110; background:rgba(5,6,8,0.6); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
      opacity:0; pointer-events:none; transition:opacity .22s var(--ease); }
    .app-shell.nav-open .nav-backdrop { display:block; opacity:1; pointer-events:auto; }
    .appbar { display:none; }
    .mtopbar { display:flex; align-items:center; gap:12px; position:sticky; top:0; z-index:60;
      height:52px; padding:0 16px; background:var(--surface); background:color-mix(in srgb, var(--bg) 86%, transparent);
      -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); border-bottom:1px solid var(--border); }
    .mtb-burger, .mtb-search, .mtb-new { display:flex; align-items:center; justify-content:center; width:36px; height:36px;
      background:transparent; border:1px solid var(--border); border-radius:var(--radius); color:var(--text-2); cursor:pointer; }
    .mtb-burger:hover, .mtb-search:hover, .mtb-new:hover { border-color:var(--border-strong); color:var(--text); }
    .mtb-burger svg, .mtb-search svg, .mtb-new svg { width:18px; height:18px; }
    .mtb-brand { flex:1; font-family:var(--font-serif); font-size:17px; color:var(--text); letter-spacing:.01em; }
    .view { padding:20px 18px 56px; }
    .topbar { padding:6px 0 16px; }
    #view-detail { padding-left:0 !important; }
  }
  @media (max-width:520px){
    .view { padding:16px 13px 48px; }
    .topbar { flex-wrap:wrap; align-items:flex-start; }
  }

  /* ===== APP SHELL ===== */

  .app-shell { display:flex; min-height:100vh; min-height:100dvh; }
  .sidebar { width:236px; flex:0 0 236px; border-right:1px solid var(--border-strong);
    background:linear-gradient(180deg, #16171B, #0E0F12 78%); display:flex; flex-direction:column; position:sticky; top:0; height:100vh; height:100dvh; }
  :root{--owl-img:url('/assets/owl.webp')}
  .logomark { display:inline-block; flex:0 0 auto; background:var(--owl-img) no-repeat center/contain; }
  .wm { display:flex; flex-direction:column; align-items:center; gap:7px; }
  /* negative right margin cancels the trailing letter-spacing so the box hugs the
     visible glyphs — then align-items:center lines the two labels up on their glyphs */
  .wm-name { font-family:var(--font-serif); font-weight:500; font-size:20px; letter-spacing:.14em; text-transform:uppercase; color:var(--text); line-height:1; margin-right:-.14em; white-space:nowrap; }
  .wm-div { width:1px; height:25px; background:rgba(236,226,214,0.18); flex:0 0 auto; }
  .wm-sub { font-family:var(--font-mono); font-size:8.5px; font-weight:500; letter-spacing:.11em; text-transform:uppercase; color:var(--accent-strong); line-height:1; white-space:nowrap; margin-right:-.11em; }
  .sidebar .brand { display:flex; align-items:center; gap:12px; height:80px; flex:0 0 auto; padding:0 22px; border-bottom:1px solid var(--border); box-sizing:border-box; }
  .sidebar .brand .pk { font-family:var(--font-serif); font-size:16px; letter-spacing:0.22em; color:var(--text); line-height:1; display:block; }
  .sidebar .brand .sub { font-family:var(--font-mono); font-size:9px; letter-spacing:0.3em; color:var(--accent-ink); opacity:.75; text-transform:uppercase; display:block; margin-top:5px; }
  .nav { padding:14px 12px; display:flex; flex-direction:column; gap:3px; flex:1 1 auto; min-height:0; overflow-y:auto; }
  .nav-item { position:relative; display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:var(--radius);
    color:var(--text-2); cursor:pointer; font-weight:500; font-size:14px; transition:background .15s var(--ease), color .15s var(--ease); }
  .nav-item svg { width:16px; height:16px; flex:0 0 auto; color:var(--text-3); transition:color .15s var(--ease); }
  .nav-item:hover { background:color-mix(in srgb,var(--text) 4%,transparent); color:var(--text); }
  .nav-item:hover svg { color:var(--text-2); }
  .nav-item.active { background:rgba(201,168,124,0.10); color:var(--accent-strong); }
  .nav-item.active svg { color:var(--accent-ink); }
  .nav-item.active::before { content:""; position:absolute; left:4px; top:50%; transform:translateY(-50%); width:2px; height:16px; background:var(--accent); border-radius:2px; box-shadow:0 0 9px -1px var(--accent); }
  .nav-group-label { font-family:var(--font-mono); font-size:9px; letter-spacing:0.26em; text-transform:uppercase;
    color:var(--text-3); padding:17px 12px 7px; font-weight:400; }
  .nav-group-label:first-child { padding-top:4px; }
  .nav-item .cnt { margin-left:auto; font-family:var(--font-mono); font-size:10px; color:var(--text-3);
    background:color-mix(in srgb,var(--text) 5%,transparent); border-radius:100px; padding:1px 7px; }
  .nav-item.active .cnt { color:var(--accent-ink); background:rgba(201,168,124,0.16); }
  .nav-foot { padding:16px; border-top:1px solid var(--border); font-size:12px; }

  /* overview dashboard */
  .ov-head { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:22px; }
  /* ===== Overview redesign v2 — bento + depth (namespaced ovx-*) ===== */
  #view-overview{
    --ovx-hi:inset 0 1px 0 rgba(255,255,255,0.06);
    --ovx-elev1:0 1px 2px rgba(0,0,0,0.40), 0 12px 26px -14px rgba(0,0,0,0.65), var(--ovx-hi);
    --ovx-elev2:0 2px 4px rgba(0,0,0,0.45), 0 30px 60px -22px rgba(0,0,0,0.78), var(--ovx-hi);
    --ovx-well:inset 0 1px 3px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(0,0,0,0.25);
    background-image:radial-gradient(900px 500px at 84% -8%, rgba(201,168,124,0.06), transparent 55%),
      linear-gradient(rgba(236,226,214,0.016) 1px, transparent 1px),
      linear-gradient(90deg, rgba(236,226,214,0.016) 1px, transparent 1px);
    background-size:100% 100%,46px 46px,46px 46px;
  }
  .ovx-live{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;color:var(--text-3);letter-spacing:.05em;background:var(--surface);border:1px solid var(--border);border-radius:100px;padding:6px 13px;box-shadow:var(--shadow-1)}
  .ovx-livedot{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px 1px rgba(127,176,138,.55);animation:ovxpulse 1.8s var(--ease) infinite}
  @keyframes ovxpulse{50%{opacity:.35}}
  .ovx-num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  #view-overview{container:ovx / inline-size}
  #ovx-root{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:stretch}
  .ovx-card{position:relative;background:linear-gradient(180deg,rgba(255,255,255,0.022),rgba(255,255,255,0) 42%),var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--ovx-elev1);padding:20px 22px;display:flex;flex-direction:column;overflow:hidden}
  .ovx-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.015)}
  .ovx-clabel{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--text-4)}
  .ovx-chead{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}
  .ovx-chead .r{font-family:var(--font-mono);font-size:11px;color:var(--text-4)}
  .ovx-hero{grid-column:span 5;--risk:var(--crit)} .ovx-expo{grid-column:span 7}
  .ovx-k{grid-column:span 3;padding:18px 20px} .ovx-mitre{grid-column:span 4} .ovx-owasp{grid-column:span 4}
  .ovx-veri{grid-column:span 4} .ovx-eng{grid-column:span 6} .ovx-latest{grid-column:span 6}
  /* restack on the ACTUAL available width (sidebar + dock eat space, so a viewport
     media query fires far too late on laptops). @container measures #view-overview's
     own content box — the real room #ovx-root has. */
  @container ovx (max-width:1060px){.ovx-mitre,.ovx-owasp{grid-column:span 6}.ovx-veri{grid-column:span 12}}
  @container ovx (max-width:820px){.ovx-hero,.ovx-expo{grid-column:span 12}.ovx-k{grid-column:span 6}.ovx-mitre,.ovx-owasp,.ovx-veri{grid-column:span 12}.ovx-eng,.ovx-latest{grid-column:span 12}}
  /* legacy viewport fallback for engines without container queries */
  @supports not (container-type:inline-size){@media(max-width:1240px){.ovx-mitre,.ovx-owasp{grid-column:span 6}.ovx-veri{grid-column:span 12}}@media(max-width:1080px){.ovx-hero,.ovx-expo{grid-column:span 12}.ovx-k{grid-column:span 6}.ovx-mitre,.ovx-owasp,.ovx-veri{grid-column:span 12}.ovx-eng,.ovx-latest{grid-column:span 12}}}
  /* hero */
  .ovx-hero::before{content:"";position:absolute;width:280px;height:280px;left:-70px;top:-90px;border-radius:50%;background:radial-gradient(circle, color-mix(in srgb,var(--risk) 26%, transparent), transparent 68%);filter:blur(8px);pointer-events:none}
  .ovx-heroin{display:flex;align-items:center;gap:24px;position:relative;z-index:1;height:100%}
  .ovx-gauge{position:relative;width:132px;height:132px;flex:0 0 auto;filter:drop-shadow(0 0 14px color-mix(in srgb,var(--risk) 40%,transparent))}
  .ovx-gauge svg{transform:rotate(-90deg)}
  .ovx-gwell{position:absolute;inset:14px;border-radius:50%;box-shadow:var(--ovx-well);background:var(--bg-2)}
  .ovx-gval{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2}
  .ovx-gnum{font-family:var(--font-serif);font-size:2.7rem;line-height:1;color:var(--text)}
  .ovx-gmax{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;color:var(--text-4);margin-top:2px;text-transform:uppercase}
  .ovx-heror{flex:1;min-width:0}
  .ovx-verdict{display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--risk);border:1px solid color-mix(in srgb,var(--risk) 40%,transparent);border-radius:100px;padding:3px 10px;margin-bottom:12px;background:color-mix(in srgb,var(--risk) 8%,transparent)}
  .ovx-htitle{font-family:var(--font-serif);font-size:1.35rem;line-height:1.3;color:var(--text);text-wrap:balance}
  .ovx-hmini{display:flex;gap:22px;margin-top:16px;padding-top:15px;border-top:1px solid var(--border-faint)}
  .ovx-hmini .v{font-family:var(--font-serif);font-size:1.35rem;line-height:1} .ovx-hmini .v.ok{color:var(--ok)} .ovx-hmini .v.crit{color:var(--crit)}
  .ovx-hmini .l{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-4);margin-top:4px}
  /* exposure donut */
  .ovx-expoin{display:flex;align-items:center;gap:28px;height:100%}
  .ovx-donut{position:relative;width:140px;height:140px;flex:0 0 auto}
  .ovx-donut svg{transform:rotate(-90deg)}
  .ovx-donutc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .ovx-donutc .n{font-family:var(--font-serif);font-size:2rem;line-height:1;color:var(--text)}
  .ovx-donutc .l{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-4);margin-top:3px}
  .ovx-exleg{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
  .ovx-exrow{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--border-faint)}
  .ovx-exrow:last-child{border-bottom:none}
  .ovx-exrow .sw{width:9px;height:9px;border-radius:3px;flex:0 0 auto;box-shadow:0 0 8px -1px currentColor}
  .ovx-exrow .kk{flex:1;text-transform:capitalize;color:var(--text-2);font-size:13px}
  .ovx-exrow .nn{font-family:var(--font-mono);color:var(--text);font-size:13px}
  .ovx-exrow .pp{font-family:var(--font-mono);color:var(--text-4);font-size:11px;width:40px;text-align:right}
  /* kpi */
  .ovx-ktop{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
  .ovx-kico{width:32px;height:32px;border-radius:9px;background:var(--surface-2);border:1px solid var(--border-faint);display:flex;align-items:center;justify-content:center;color:var(--accent-ink);box-shadow:var(--ovx-hi)}
  .ovx-kico svg{width:15px;height:15px}
  .ovx-knum{font-family:var(--font-serif);font-size:2.05rem;line-height:1}
  .ovx-ksub{font-size:12px;color:var(--text-4);margin-top:10px;display:flex;align-items:center;gap:8px;min-height:16px}
  .ovx-micro{display:flex;height:5px;flex:1;border-radius:100px;overflow:hidden;background:var(--bg-2);box-shadow:var(--ovx-well)}
  .ovx-micro span{display:block;height:100%}
  /* bars */
  .ovx-bar{margin-bottom:14px} .ovx-bar:last-child{margin-bottom:0}
  .ovx-bart{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:7px}
  .ovx-barn{font-size:13px;color:var(--text-2)} .ovx-barn .id{font-family:var(--font-mono);font-size:10px;color:var(--text-4);margin-right:7px}
  .ovx-barv{font-family:var(--font-mono);font-size:12px;color:var(--text)}
  .ovx-track{height:7px;background:var(--bg-2);border-radius:100px;overflow:hidden;box-shadow:var(--ovx-well)}
  .ovx-track span{display:block;height:100%;border-radius:100px;box-shadow:0 0 8px -1px currentColor;transition:width .7s var(--ease)}
  /* owasp */
  .ovx-owasp{container:owcard / inline-size}
  .ovx-owg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;flex:1;align-content:start}
  .ovx-owfoot{font-size:11px;line-height:1.4;color:var(--text-4);margin-top:10px}
  /* when the card itself is too narrow for two readable columns, drop to one so the
     full label ("Security Misconfiguration") fits on one line — no ellipsis, no mid-word break */
  @container owcard (max-width:430px){.ovx-owg{grid-template-columns:1fr}}
  .ovx-ow{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--border-faint);border-radius:var(--radius-lg);background:var(--bg-2);box-shadow:var(--ovx-well);opacity:.45;transition:.2s var(--ease)}
  .ovx-ow.on{opacity:1;background:var(--surface-2);box-shadow:var(--ovx-hi);border-color:rgba(201,168,124,.28)}
  .ovx-ow .id{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text-4);width:24px;flex:0 0 auto} .ovx-ow.on .id{color:var(--accent-strong)}
  .ovx-ow .nm{font-size:11px;color:var(--text-4);flex:1;min-width:0;line-height:1.2;white-space:normal;overflow-wrap:normal;word-break:normal} .ovx-ow.on .nm{color:var(--text-2)}
  .ovx-ow .n{font-family:var(--font-mono);font-size:11px;color:var(--accent-ink);background:var(--accent-dim);border-radius:100px;padding:1px 6px;min-width:20px;text-align:center}
  /* verification donut */
  .ovx-veriin{display:flex;align-items:center;gap:22px;height:100%}
  .ovx-vdonut{position:relative;width:118px;height:118px;flex:0 0 auto} .ovx-vdonut svg{transform:rotate(-90deg)}
  .ovx-vdc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .ovx-vdc .n{font-family:var(--font-serif);font-size:1.7rem;line-height:1;color:var(--ok)}
  .ovx-vdc .l{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);margin-top:3px}
  .ovx-vleg{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px}
  .ovx-vl{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--text-3)}
  .ovx-vl .sw{width:8px;height:8px;border-radius:2px;flex:0 0 auto} .ovx-vl b{margin-left:auto;font-family:var(--font-mono);color:var(--text)}
  /* activity */
  .ovx-engitem{padding:13px 14px;border:1px solid var(--border-faint);border-radius:var(--radius-lg);background:var(--bg-2);box-shadow:var(--ovx-well);margin-bottom:10px;cursor:pointer;transition:.15s var(--ease)}
  .ovx-engitem:last-child{margin-bottom:0} .ovx-engitem:hover{border-color:var(--border-strong)}
  .ovx-engt{display:flex;align-items:center;gap:10px;margin-bottom:9px}
  .ovx-st{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;border:1px solid rgba(201,168,124,.35);border-radius:100px;padding:2px 8px;color:var(--accent-ink);background:var(--accent-dim)}
  .ovx-engm{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--text-4)}
  .ovx-engp{height:5px;background:var(--surface-3);border-radius:100px;overflow:hidden;margin-bottom:8px}
  .ovx-engp span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-strong));border-radius:100px;box-shadow:0 0 8px -1px var(--accent)}
  .ovx-engx{font-size:12px;color:var(--text-3)}
  .ovx-lf{display:flex;gap:11px;align-items:flex-start;padding:11px 2px;border-bottom:1px solid var(--border-faint);cursor:pointer}
  .ovx-lf:last-child{border-bottom:none} .ovx-lf:hover .ovx-lt{color:var(--accent-ink)}
  .ovx-ldotf{width:8px;height:8px;border-radius:50%;margin-top:5px;flex:0 0 auto;box-shadow:0 0 8px -1px currentColor}
  .ovx-lt{font-size:13px;color:var(--text);line-height:1.4} .ovx-lh{font-family:var(--font-mono);font-size:10px;color:var(--text-4);margin-top:3px;word-break:break-all}
  .ovx-lsev{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;margin-left:auto;flex:0 0 auto;padding-top:2px}
  .statgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px; margin-bottom:20px; }
  /* overview — compliance / MITRE detail */
  .ov-detail { display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:18px; margin-top:18px; align-items:start; }
  .ovbar { margin-bottom:11px; }
  .ovbar-top { display:flex; justify-content:space-between; gap:10px; font-size:13px; color:var(--text-2); margin-bottom:5px; }
  .ovbar-top .n { font-family:var(--font-mono); color:var(--text); }
  .ovbar-track { height:5px; background:var(--surface-2); border-radius:3px; overflow:hidden; }
  .ovbar-track span { display:block; height:100%; border-radius:3px; transition:width .5s var(--ease); }
  .ovchips { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  .ovchip { background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 14px; }
  .ovchip b { font-family:var(--font-mono); font-size:22px; display:block; line-height:1; }
  .ovchip span { font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.08em; font-family:var(--font-mono); }
  .ovchip.ok b { color:var(--ok); } .ovchip.med b { color:var(--med); } .ovchip.warn b { color:var(--high); } .ovchip.mut b { color:var(--text-3); }
  .ov-sub { font-family:var(--font-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); margin-bottom:8px; }
  .ovtags { display:flex; flex-wrap:wrap; gap:6px; }
  .ovtag { font-family:var(--font-mono); font-size:11px; color:var(--text-2); border:1px solid var(--border); border-radius:999px; padding:3px 6px 3px 9px; display:inline-flex; align-items:center; gap:6px; }
  .ovtag i { font-style:normal; color:var(--accent-ink); background:var(--accent-dim); border-radius:999px; padding:0 6px; font-size:10px; }
  .statcard { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); padding:19px 21px; box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .15s var(--ease), transform .15s var(--ease); }
  .statcard:hover { border-color:var(--border-strong); transform:translateY(-1px); }
  .statcard .sc-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
  .statcard .sc-label { font-family:var(--font-mono); font-size:10px; letter-spacing:0.2em; text-transform:uppercase; color:var(--text-3); }
  .statcard .sc-ico { color:var(--accent-ink); opacity:.8; }
  .statcard .sc-ico svg { width:17px; height:17px; }
  .statcard .sc-num { font-family:var(--font-serif); font-size:2.1rem; color:var(--text); line-height:1; letter-spacing:-0.02em; }
  .statcard .sc-sub { font-size:12px; color:var(--text-4); margin-top:8px; }
  .statcard.risk { display:flex; align-items:center; gap:16px; }
  /* ---- Operator Console ---- */
  .oc-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(288px,1fr)); gap:14px; }
  .oc-card { position:relative; display:flex; align-items:center; gap:14px; padding:16px 18px; border-radius:var(--radius-xl);
    background:linear-gradient(180deg, rgba(22,23,27,0.72), rgba(15,16,19,0.72)); border:1px solid var(--border);
    cursor:pointer; overflow:hidden; transition:transform .16s var(--ease), border-color .18s var(--ease), box-shadow .18s var(--ease); }
  .oc-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
    background:linear-gradient(180deg,var(--accent),var(--accent-strong)); opacity:.55; transition:.18s var(--ease); }
  .oc-card:hover { transform:translateY(-2px); border-color:var(--border-strong); box-shadow:0 20px 46px -28px rgba(0,0,0,0.85); }
  .oc-card:hover::before { opacity:1; width:4px; }
  .oc-av { flex:0 0 auto; width:44px; height:44px; border-radius:13px; display:grid; place-items:center;
    font-family:var(--font-serif); font-size:20px; color:var(--accent-strong); text-transform:uppercase;
    background:radial-gradient(120% 120% at 30% 18%, rgba(201,168,124,0.24), rgba(201,168,124,0.05));
    border:1px solid rgba(201,168,124,0.32); box-shadow:0 0 22px -6px rgba(201,168,124,0.35) inset; }
  .oc-name { font-size:14px; color:var(--text); font-weight:500; letter-spacing:-0.01em; }
  .oc-meta { display:flex; gap:6px; margin-top:7px; flex-wrap:wrap; }
  .oc-chip { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.08em;
    padding:2px 9px; border-radius:100px; border:1px solid var(--border); color:var(--text-3); }
  .oc-chip b { color:var(--accent-strong); font-weight:600; }
  .oc-go { margin-left:auto; flex:0 0 auto; color:var(--text-4); font-size:18px; transition:.16s var(--ease); }
  .oc-card:hover .oc-go { color:var(--accent-strong); transform:translateX(3px); }
  .risk-ring { position:relative; width:66px; height:66px; flex:0 0 auto; }
  .risk-ring .rv { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    font-family:var(--font-serif); font-size:1.2rem; color:var(--text); }

  .ov-cols { display:grid; grid-template-columns:1.6fr 1fr; gap:18px; align-items:start; }
  @media(max-width:1100px){ .ov-cols{ grid-template-columns:1fr; } }
  .sevrow { margin-bottom:14px; }
  .sevrow .sr-top { display:flex; justify-content:space-between; font-size:13px; margin-bottom:6px; }
  .sevrow .sr-top .n { font-family:var(--font-mono); color:var(--text); }
  .sevtrack { height:6px; background:var(--surface-2); border-radius:100px; overflow:hidden; }
  .sevtrack > span { display:block; height:100%; border-radius:100px; }
  .lf-row { display:flex; align-items:flex-start; gap:11px; padding:11px 2px; border-bottom:1px solid var(--border-faint); cursor:pointer; }
  .lf-row:last-child { border-bottom:none; }
  .lf-row:hover .lf-title { color:var(--accent-ink); }
  .lf-dot { width:7px; height:7px; border-radius:50%; margin-top:6px; flex:0 0 auto; }
  .lf-title { color:var(--text); font-size:13px; line-height:1.4; }
  .lf-meta { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:3px; word-break:break-all; }
  .lf-ago { margin-left:auto; font-size:11px; color:var(--text-4); white-space:nowrap; flex:0 0 auto; }
  .ovscan { background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); padding:14px 16px; margin-bottom:10px; cursor:pointer; box-shadow:var(--hair-top); transition:border-color .15s var(--ease), transform .15s var(--ease); }
  .ovscan:hover { border-color:var(--border-strong); transform:translateY(-1px); }
  .ovscan .os-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:9px; }
  .ovscan .os-prog { height:5px; background:var(--bg); border-radius:100px; overflow:hidden; }
  .ovscan .os-prog > span { display:block; height:100%; background:var(--accent); border-radius:100px; }

  /* ===== Findings — elevated ===== */
  .fx-filters { margin:12px 0 22px; }
  .fx-chiprow { display:flex; gap:7px; flex-wrap:wrap; align-items:center; }
  .fx-chiprow + .fx-chiprow { margin-top:9px; }
  .fx-tlabel { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); margin-right:4px; }
  .fx-chip { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.09em; color:var(--text-3); background:transparent; border:1px solid var(--border); border-radius:100px; padding:6px 13px; cursor:pointer; transition:.16s var(--ease); }
  .fx-chip:hover { border-color:var(--border-strong); color:var(--text-2); }
  .fx-chip.active { color:var(--text); border-color:var(--accent); background:rgba(201,168,124,0.10); }
  .fx-chip .dot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
  .fx-chip .c { color:var(--text-4); font-size:10px; }
  .fx-chip.active .c { color:var(--accent-ink); }
  .fx-chip.st.active { color:var(--stc); border-color:var(--stc); background:color-mix(in srgb,var(--text) 4.5%,transparent); }
  .fx-chip.st.active .c { color:var(--stc); }
  .fx-chip.st:hover { border-color:var(--stc); }
  .fx-hostchip { color:var(--accent-ink); border-color:var(--accent); background:rgba(201,168,124,0.10); }
  /* target group card */
  .fx-group { margin-bottom:16px; border:1px solid var(--border); border-radius:var(--radius-xl); background:var(--surface); overflow:hidden; box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .16s var(--ease); }
  .fx-group:hover { border-color:var(--border-strong); }
  .fx-ghead { display:flex; align-items:center; gap:14px; padding:15px 18px; cursor:pointer; border-left:2px solid var(--sev,var(--border-strong)); transition:background .16s var(--ease); }
  .fx-ghead:hover { background:var(--surface-2); }
  .fx-gcaret { color:var(--text-4); font-size:9px; flex:0 0 auto; transition:transform .18s var(--ease); }
  .fx-gcaret.open { transform:rotate(90deg); }
  .fx-gname { font-family:var(--font-mono); font-size:14px; letter-spacing:.01em; color:var(--text); word-break:break-all; }
  .fx-gcount { font-family:var(--font-mono); font-size:9px; letter-spacing:.13em; text-transform:uppercase; color:var(--text-4); flex:0 0 auto; }
  .fx-meter { margin-left:auto; display:flex; align-items:center; gap:16px; flex:0 0 auto; }
  .fx-distlbl { display:flex; gap:11px; }
  .fx-distlbl b { font-family:var(--font-mono); font-size:11px; font-weight:600; }
  .fx-distlbl b i { color:var(--text-4); font-style:normal; font-weight:400; margin-left:3px; }
  .fx-dist { display:flex; height:5px; width:172px; border-radius:100px; overflow:hidden; background:var(--bg); box-shadow:inset 0 0 0 1px var(--border-faint); }
  .fx-dist > span { display:block; height:100%; }
  /* finding rows — severity risk-rail */
  .fx-list-body { border-top:1px solid var(--border-faint); }
  .fx-row { display:flex; align-items:center; gap:16px; padding:15px 18px 15px 17px; border-bottom:1px solid var(--border-faint); cursor:pointer; position:relative; transition:background .14s var(--ease); }
  .fx-row::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sev,var(--border-strong)); opacity:.8; transition:.14s var(--ease); }
  .fx-row:last-child { border-bottom:none; }
  .fx-row:hover { background:var(--surface-2); }
  .fx-row:hover::before { opacity:1; width:4px; }
  .fx-sev { flex:0 0 84px; display:flex; align-items:center; gap:8px; }
  .fx-sev .sd { width:8px; height:8px; border-radius:50%; background:var(--sev); flex:0 0 auto; box-shadow:0 0 8px -1px var(--sev); }
  .fx-sev .sl { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.11em; color:var(--sev); }
  .fx-main { flex:1; min-width:0; }
  .fx-t { color:var(--text); font-size:14px; line-height:1.45; }
  .fx-row:hover .fx-t { color:var(--accent-strong); }
  .fx-h { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:4px; word-break:break-all; }
  .fx-time { font-family:var(--font-mono); font-size:11px; color:var(--text-4); flex:0 0 auto; white-space:nowrap; text-align:right; }
  .fx-vf { color:var(--ok); font-family:var(--font-mono); font-size:10px; }
  .fx-rmeta { display:flex; align-items:center; gap:12px; flex:0 0 auto; }
  .fx-st { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.1em; padding:3px 8px; border-radius:100px; color:var(--stc); border:1px solid var(--stc); background:color-mix(in srgb,var(--text) 2%,transparent); white-space:nowrap; }
  .fx-row.resolved { opacity:.5; }
  .fx-row.resolved:hover { opacity:.85; }
  .fx-row.resolved .fx-t { text-decoration:line-through; text-decoration-color:var(--text-4); }
  .fx-row.resolved::before { opacity:.3; }
  .fx-searchrow { margin-top:11px; }
  .fx-search { width:300px; max-width:100%; font-family:var(--font-mono); font-size:12px; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:100px; padding:8px 15px; transition:border-color .16s var(--ease); }
  .fx-search::placeholder { color:var(--text-4); }
  .fx-search:focus { outline:none; border-color:var(--accent); }

  /* ── Findings filter toolbar (modern) ─────────────────────────────── */
  .fxf { display:flex; flex-direction:column; gap:14px; margin:14px 0 20px; padding:15px 18px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-1), var(--hair-top); }
  .fxf-top { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
  .fxf-search { position:relative; flex:1; min-width:230px; display:flex; align-items:center; }
  .fxf-search .ic { position:absolute; left:15px; top:50%; transform:translateY(-50%); width:15px; height:15px; color:var(--text-4); pointer-events:none; }
  .fxf-search input { width:100%; height:38px; margin:0; box-sizing:border-box; font-family:inherit; font-size:14px; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:100px; padding:0 40px; transition:border-color .16s var(--ease), box-shadow .16s var(--ease); }
  .fxf-search input::placeholder { color:var(--text-4); }
  .fxf-search input:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(201,168,124,0.13); }
  .fxf-clear { position:absolute; right:8px; top:50%; transform:translateY(-50%); width:24px; height:24px; display:none; align-items:center; justify-content:center; border:none; background:var(--surface-2); color:var(--text-3); border-radius:50%; cursor:pointer; font-size:12px; line-height:1; }
  .fxf-clear:hover { color:var(--text); background:var(--surface-3); }
  .fxf-search.has-val .fxf-clear { display:flex; }
  .fxf-meta { display:flex; align-items:center; gap:14px; flex:0 0 auto; }
  .fxf-count { font-family:var(--font-mono); font-size:11px; color:var(--text-3); letter-spacing:.02em; white-space:nowrap; }
  .fxf-count b { color:var(--text); font-variant-numeric:tabular-nums; }
  .fxf-reset { font-family:var(--font-mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-4); background:none; border:none; cursor:pointer; padding:0; transition:color .15s; }
  .fxf-reset:hover { color:var(--accent-ink); }
  .fxf-reset[hidden] { display:none; }
  .fxf-clearbtn { margin-left:auto; font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); padding:8px 13px; cursor:pointer; transition:.14s var(--ease); flex:0 0 auto; }
  .fxf-clearbtn:hover { color:var(--crit); border-color:rgba(224,108,96,.45); background:rgba(224,108,96,.08); transform:none; }
  .fxf-row { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
  .fxf-grp { display:flex; align-items:center; gap:10px; }
  .fxf-lbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); }
  .fxf-seg { display:inline-flex; align-items:center; height:38px; box-sizing:border-box; background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:3px; gap:2px; box-shadow:var(--ovx-well); }
  .fxf-seg button { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:11px; letter-spacing:.03em; text-transform:capitalize; color:var(--text-3); background:transparent; border:none; border-radius:7px; padding:5px 11px; cursor:pointer; transition:.14s var(--ease); }
  .fxf-seg button:hover { color:var(--text); background:color-mix(in srgb,var(--text) 4.5%,transparent); }
  .fxf-seg button.on { color:var(--text); background:var(--surface-2); box-shadow:var(--ovx-hi); }
  .fxf-seg button .dot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
  .fxf-seg button .c { color:var(--text-4); font-size:10px; font-variant-numeric:tabular-nums; }
  .fxf-seg button.on .c { color:var(--accent-ink); }
  .fxf-select { font-family:var(--font-mono); font-size:11px; color:var(--text-2); background:var(--bg-2); border:1px solid var(--border); border-radius:8px; height:38px; margin:0; box-sizing:border-box; padding:0 30px 0 12px; cursor:pointer; appearance:none; -webkit-appearance:none; transition:border-color .15s var(--ease);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b8f98' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; }
  .fxf-select:hover { border-color:var(--border-strong); }
  .fxf-select:focus { outline:none; border-color:var(--accent); }
  .fxf-tag { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:11px; color:var(--accent-ink); border:1px solid var(--accent); background:rgba(201,168,124,0.10); border-radius:100px; padding:6px 13px; cursor:pointer; transition:.15s var(--ease); }
  .fxf-tag:hover { background:rgba(201,168,124,0.18); }

  /* ── Findings workspace: assets rail · list · AI panel ─────────────── */
  .fxw { display:grid; grid-template-columns:212px minmax(0,1fr) 336px; gap:16px; align-items:start; }
  .fxw-main { min-width:0; }
  .fxw-assets, .fxw-ai { position:sticky; top:96px; max-height:calc(100vh - 118px); max-height:calc(100dvh - 118px); overflow:auto; }
  .fxw-assets { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); padding:8px; box-shadow:var(--shadow-1), var(--hair-top); }
  .fxa-h { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); padding:8px 10px 7px; }
  .fxa-item { display:flex; align-items:center; gap:9px; width:100%; text-align:left; background:transparent; border:none; border-radius:9px; padding:9px 10px; cursor:pointer; color:var(--text-3); transition:.14s var(--ease); }
  .fxa-item:hover { background:var(--surface-2); color:var(--text); }
  .fxa-item.on { background:var(--surface-2); color:var(--text); box-shadow:var(--ovx-hi); }
  .fxa-dot { width:8px; height:8px; border-radius:50%; flex:0 0 auto; box-shadow:0 0 7px -1px currentColor; }
  .fxa-name { flex:1; min-width:0; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .fxa-n { font-family:var(--font-mono); font-size:11px; color:var(--text-4); font-variant-numeric:tabular-nums; }
  .fxa-item.on .fxa-n { color:var(--accent-ink); }
  /* domain → subdomain tree */
  .fxa-caret { background:none; border:none; color:var(--text-4); cursor:pointer; width:20px; height:20px; flex:0 0 auto; padding:0; display:flex; align-items:center; justify-content:center; border-radius:6px; transition:transform .18s var(--ease), background .14s var(--ease), color .14s var(--ease); }
  .fxa-caret svg { width:13px; height:13px; }
  .fxa-caret:hover { color:var(--text); background:var(--surface-2); }
  .fxa-target.open > .fxa-root .fxa-caret { transform:rotate(90deg); }
  .fxa-root .fxa-name { cursor:pointer; }
  .fxa-root:hover .fxa-name { color:var(--text); }
  .fxa-subn { font-family:var(--font-mono); font-size:9px; color:var(--text-4); opacity:.75; white-space:nowrap; }
  .fxa-item.on .fxa-subn { color:var(--accent-ink); }
  .fxa-subs { padding:2px 0 6px; }
  .fxa-sub { display:flex; align-items:center; gap:8px; width:100%; text-align:left; background:none; border:none; border-radius:8px; padding:6px 10px 6px 30px; cursor:pointer; color:var(--text-2); transition:.14s var(--ease); }
  .fxa-sub:hover { background:var(--surface-2); color:var(--text); }
  .fxa-sub .fxa-subname { color:var(--text-2); }
  .fxa-sub:hover .fxa-subname, .fxa-sub.on .fxa-subname { color:inherit; }
  .fxa-sub.on { color:var(--accent-ink); background:var(--accent-dim); }
  .fxa-subname { flex:1; min-width:0; font-family:var(--font-mono); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .fxa-submore { font-family:var(--font-mono); font-size:10px; color:var(--text-4); padding:6px 10px 2px 32px; }
  /* findings pager */
  .fx-pager { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:16px 18px; flex-wrap:wrap; border-top:1px solid var(--border-faint); }
  .fx-pginfo { font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
  .fx-pgn { display:flex; align-items:center; gap:5px; }
  .fx-pgb { min-width:30px; height:30px; padding:0 9px; font-family:var(--font-mono); font-size:12px; color:var(--text-3); background:var(--surface-2); border:1px solid var(--border); border-radius:8px; cursor:pointer; transition:.14s var(--ease); }
  .fx-pgb:hover:not(:disabled) { border-color:var(--border-strong); color:var(--text); }
  .fx-pgb.cur { background:var(--accent); border-color:var(--accent); color:#0a0a0a; }
  .fx-pgb:disabled { opacity:.4; cursor:default; }
  .fx-pgel { color:var(--text-4); padding:0 3px; font-family:var(--font-mono); }

  /* ── Manual findings — modern list + authoring form ─────────────────── */
  .mff-listhead { display:flex; align-items:center; gap:10px; margin:2px 0 12px; }
  .mff-listhead .l { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); }
  .mff-listhead .n { font-family:var(--font-mono); font-size:10px; color:var(--text-4); background:var(--surface-2); border:1px solid var(--border-faint); border-radius:100px; padding:1px 9px; }
  .mff-list { display:flex; flex-direction:column; gap:8px; }
  .mff-item { display:flex; align-items:center; gap:14px; padding:13px 16px 13px 17px; border:1px solid var(--border-faint); border-radius:var(--radius-lg); background:var(--surface); cursor:pointer; position:relative; overflow:hidden; transition:border-color .15s var(--ease), background .15s var(--ease); }
  .mff-item::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sev,var(--border-strong)); opacity:.85; }
  .mff-item:hover { border-color:var(--border-strong); background:var(--surface-2); }
  .mff-sevlbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--sev,var(--text-4)); flex:0 0 56px; }
  .mff-imain { flex:1; min-width:0; }
  .mff-ititle { font-size:14px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mff-imeta { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mff-status { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; padding:3px 9px; border-radius:100px; border:1px solid transparent; flex:0 0 auto; }
  .mff-status.draft { color:var(--text-4); border-color:var(--border); background:var(--surface-2); }
  .mff-status.live { color:var(--ok); border-color:color-mix(in srgb,var(--ok) 40%,transparent); background:color-mix(in srgb,var(--ok) 10%,transparent); }
  .mff-empty { padding:44px 20px; text-align:center; color:var(--text-4); font-size:13px; border:1px dashed var(--border); border-radius:var(--radius-lg); }
  .mff-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-1), var(--hair-top); overflow:hidden; margin-top:18px; }
  .mff-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:20px 22px; border-bottom:1px solid var(--border-faint); }
  .mff-htitle { font-family:var(--font-serif); font-size:1.3rem; color:var(--text); line-height:1.2; }
  .mff-heye { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:6px; }
  .mff-actions { display:flex; align-items:center; gap:8px; flex:0 0 auto; }
  .mff-sec { padding:20px 22px; border-bottom:1px solid var(--border-faint); }
  .mff-seclbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:16px; display:flex; align-items:center; gap:12px; }
  .mff-seclbl::after { content:""; flex:1; height:1px; background:var(--border-faint); }
  .mff-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:14px; }
  .mff-f { display:flex; flex-direction:column; gap:7px; min-width:0; }
  .mff-lbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); }
  .mff-lbl .rq { color:var(--crit); margin-left:2px; }
  .mff-lbl .hint { text-transform:none; letter-spacing:0; color:var(--text-4); opacity:.8; }
  .mff-in, .mff-ta, .mff-sel { width:100%; margin:0; font-family:inherit; font-size:14px; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:10px 13px; transition:border-color .15s var(--ease), box-shadow .15s var(--ease); box-sizing:border-box; }
  .mff-in:focus, .mff-ta:focus, .mff-sel:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(201,168,124,.12); }
  .mff-in::placeholder, .mff-ta::placeholder { color:var(--text-4); }
  .mff-ta { resize:vertical; line-height:1.5; }
  .mff-ta.mono { font-family:var(--font-mono); font-size:12px; line-height:1.55; }
  .mff-sevseg { display:inline-flex; background:var(--bg-2); border:1px solid var(--border); border-radius:10px; padding:3px; gap:2px; box-shadow:var(--ovx-well); align-self:flex-start; }
  .mff-sevseg button { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono); font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--text-3); background:transparent; border:none; border-radius:7px; padding:6px 11px; cursor:pointer; transition:.14s var(--ease); }
  .mff-sevseg button:hover { color:var(--text); background:color-mix(in srgb,var(--text) 4%,transparent); }
  .mff-sevseg button .dot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
  .mff-sevseg button.on { color:var(--text); background:var(--surface-2); box-shadow:var(--ovx-hi); }
  .mff-drop { display:flex; align-items:center; gap:14px; padding:14px 16px; border:1px dashed var(--border-strong); border-radius:12px; background:var(--bg-2); }
  .mff-drop .ic { width:36px; height:36px; border-radius:10px; background:var(--surface-2); border:1px solid var(--border-faint); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); flex:0 0 auto; }
  .mff-drop .ic svg { width:17px; height:17px; }
  .mff-drop input[type=file] { font-size:12px; color:var(--text-3); }
  .mff-foot { display:flex; align-items:center; gap:10px; padding:18px 22px; background:var(--bg-2); }
  .mff-foot .sp { margin-left:auto; }
  @media (max-width:720px){ .mff-grid > .mff-f { grid-column:1 / -1 !important; } }
  .fxw-ai { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-1), var(--hair-top); display:flex; flex-direction:column; }
  .fxai-empty { padding:44px 24px; text-align:center; color:var(--text-4); }
  .fxai-eico { width:42px; height:42px; margin:0 auto 14px; border-radius:12px; background:var(--surface-2); border:1px solid var(--border-faint); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); }
  .fxai-eico svg { width:19px; height:19px; }
  .fxai-etitle { font-family:var(--font-serif); font-size:1.05rem; color:var(--text-2); margin-bottom:7px; }
  .fxai-etext { font-size:13px; line-height:1.55; max-width:230px; margin:0 auto; }
  .fxai-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:15px 16px 0; }
  .fxai-sev { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--sev,var(--text-4)); }
  .fxai-sev .d { width:8px; height:8px; border-radius:2px; background:currentColor; box-shadow:0 0 8px -1px currentColor; }
  .fxai-open { font-family:var(--font-mono); font-size:10px; letter-spacing:.04em; color:var(--text-4); background:none; border:none; cursor:pointer; white-space:nowrap; }
  .fxai-open:hover { color:var(--accent-ink); }
  .fxai-title { font-family:var(--font-serif); font-size:1.1rem; line-height:1.3; color:var(--text); padding:9px 16px 0; }
  .fxai-host { font-family:var(--font-mono); font-size:11px; color:var(--text-4); padding:5px 16px 0; word-break:break-all; }
  .fxai-facts { display:flex; flex-wrap:wrap; gap:8px; padding:14px 16px; border-bottom:1px solid var(--border-faint); }
  .fxai-facts > div { flex:1; min-width:70px; background:var(--bg-2); border:1px solid var(--border-faint); border-radius:8px; padding:8px 10px; }
  .fxai-facts span { display:block; font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); }
  .fxai-facts b { display:block; margin-top:3px; font-size:12px; color:var(--text-2); text-transform:capitalize; white-space:normal; overflow-wrap:anywhere; line-height:1.35; }
  .fxai-chat { flex:1; overflow:auto; padding:14px 16px; min-height:130px; display:flex; flex-direction:column; gap:12px; }
  .fxai-suggest { display:flex; flex-wrap:wrap; gap:6px; padding:0 16px 12px; }
  .fxai-suggest button { font-family:var(--font-mono); font-size:11px; color:var(--text-3); background:var(--surface-2); border:1px solid var(--border); border-radius:100px; padding:5px 11px; cursor:pointer; transition:.14s var(--ease); }
  .fxai-suggest button:hover { border-color:var(--accent); color:var(--text); }
  .fxai-in { display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--border-faint); }
  .fxai-in input { flex:1; min-width:0; font-family:inherit; font-size:13px; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:100px; padding:9px 14px; }
  .fxai-in input:focus { outline:none; border-color:var(--accent); }
  .fxai-in button { flex:0 0 auto; font-family:var(--font-mono); font-size:11px; color:#0a0a0a; background:var(--accent); border:none; border-radius:100px; padding:9px 16px; cursor:pointer; transition:.14s var(--ease); }
  .fxai-in button:hover { background:var(--accent-strong); }
  .fx-row.selrow { background:var(--surface-2); box-shadow:inset 3px 0 0 var(--sev,var(--accent)); }
  @media (max-width:1200px){ .fxw { grid-template-columns:1fr; } .fxw-assets, .fxw-ai { position:static; max-height:none; overflow:visible; } }

  /* ── Findings — rule-cluster rows + affected-host expansion ─────────── */
  .fx-row.cluster { cursor:pointer; }
  .fx-conf { width:9px; height:9px; flex:0 0 auto; border-radius:2px; transform:rotate(45deg); margin-right:1px; }
  .fx-conf.exploited { background:var(--accent); box-shadow:0 0 7px -1px var(--accent); }
  .fx-conf.potential { background:transparent; border:1.5px solid var(--accent); }
  .fx-conf.unconfirmed { background:var(--border-strong); }
  .fx-cat { font-family:var(--font-mono); font-size:9px; letter-spacing:.06em; color:var(--text-4); background:var(--bg-2); border:1px solid var(--border-faint); border-radius:4px; padding:1px 6px; margin-left:6px; vertical-align:middle; }
  .fx-scope { display:flex; align-items:center; gap:9px; margin-top:6px; flex-wrap:wrap; }
  .fx-scount { display:inline-flex; align-items:center; gap:4px; height:auto; font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-strong); background:var(--accent-dim); border:1px solid rgba(201,168,124,.4); border-radius:100px; padding:3px 8px; cursor:pointer; line-height:1; white-space:nowrap; }
  .fx-scount:hover { border-color:var(--accent); }
  .fx-scount b { font-family:var(--font-mono); font-size:9px; color:var(--accent-strong); font-variant-numeric:tabular-nums; letter-spacing:.1em; }
  .intg-ta { min-height:64px; resize:vertical; line-height:1.5; font-family:var(--font-mono); font-size:12px; }
  .fx-hchips { display:inline-flex; gap:4px; }
  .fx-hchip { font-family:var(--font-mono); font-size:10px; color:var(--text-3); background:var(--bg-2); border:1px solid var(--border-faint); border-radius:4px; padding:1px 7px; }
  .fx-hmore { font-family:var(--font-mono); font-size:10px; color:var(--text-4); }
  .fx-prog { font-family:var(--font-mono); font-size:10px; color:var(--ok); margin-left:auto; display:inline-flex; align-items:center; gap:6px; }
  .fx-prog .bar { width:42px; height:4px; border-radius:2px; background:var(--surface-3); overflow:hidden; }
  .fx-prog .bar i { display:block; height:100%; background:var(--ok); }
  .fx-hosts { background:var(--bg); border-top:1px solid var(--border-faint); }
  .fx-hrow { display:flex; align-items:center; gap:12px; padding:8px 16px 8px 52px; cursor:pointer; border-left:2px solid transparent; }
  .fx-hrow:hover { background:var(--surface-2); border-left-color:var(--sev,var(--accent)); }
  .fx-hrow.selrow { background:var(--surface-2); border-left-color:var(--sev,var(--accent)); }
  .fx-hcheck { width:15px; height:15px; border-radius:4px; border:1px solid var(--border-strong); flex:0 0 auto; transition:.14s var(--ease); }
  .fx-hcheck.on { background:var(--accent); border-color:var(--accent); box-shadow:inset 0 0 0 2px var(--bg); }
  .fx-hhost { font-family:var(--font-mono); font-size:12px; color:var(--text-2); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .fx-hstatus { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--stc,var(--text-4)); border:1px solid var(--stc,var(--border)); border-radius:100px; padding:1px 8px; opacity:.9; }
  .fx-hval { font-family:var(--font-mono); font-size:10px; color:var(--accent-ink); }
  .fx-hval.pot { color:var(--text-4); }
  .fx-hmoreall { font-family:var(--font-mono); font-size:11px; color:var(--text-4); padding:8px 16px 8px 52px; }
  .fxai-hosts { border-bottom:1px solid var(--border-faint); padding:12px 16px; max-height:190px; overflow:auto; }
  .fxai-hlbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); margin-bottom:8px; }
  .fxai-hrow { display:flex; align-items:center; gap:8px; padding:5px 0; cursor:pointer; }
  .fxai-hrow:hover .fxai-hh { color:var(--accent-ink); }
  .fxai-hh { flex:1; min-width:0; font-family:var(--font-mono); font-size:11px; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .fxai-hs { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.08em; color:var(--stc,var(--text-4)); }
  .fx-empty { padding:70px 20px; text-align:center; color:var(--text-3); font-size:14px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
  /* bulk triage */
  .fx-check { flex:0 0 auto; width:15px; height:15px; border-radius:4px; border:1.5px solid var(--border-strong); background:var(--bg); cursor:pointer; position:relative; transition:.14s var(--ease); }
  .fx-check:hover { border-color:var(--accent); }
  .fx-check.on { background:var(--accent); border-color:var(--accent); }
  .fx-check.on::after { content:""; position:absolute; left:4px; top:1px; width:4px; height:8px; border:solid var(--bg); border-width:0 2px 2px 0; transform:rotate(43deg); }
  .fx-ghead .fx-check { margin-left:-2px; }
  /* row checkboxes stay quiet until hover / selection — less resting noise */
  .fx-list-body .fx-check, .fx-hrow .fx-hcheck { opacity:0; transition:opacity .14s var(--ease); }
  .fx-row:hover .fx-check, .fx-hrow:hover .fx-hcheck, .fx-check.on, .fx-hcheck.on, .fx-row.sel .fx-check, .fx-row.selrow .fx-check { opacity:1; }
  .fx-row.sel { background:rgba(201,168,124,0.055); }
  .fx-row.sel::before { opacity:1; width:4px; }

  /* ── Findings workspace polish: give the list real width, tidy every row ── */
  /* the AI panel only takes space once a finding is selected — the list breathes */
  #view-findings .fxw-main { container-type:inline-size; }
  .fxw { grid-template-columns:224px minmax(0,1fr); }
  .fxw:not(.sel) .fxw-ai { display:none; }
  .fxw.sel { grid-template-columns:224px minmax(0,1fr) 356px; }
  /* header: the target name must never break vertically */
  .fx-gname { white-space:nowrap; word-break:normal; overflow:hidden; text-overflow:ellipsis; min-width:0; flex:0 1 auto; }
  .fx-ghead { min-width:0; }
  .fx-meter { min-width:0; flex:0 1 auto; }
  .fx-distlbl { flex:0 0 auto; }
  @container (max-width:620px){ .fx-distlbl { display:none; } }
  /* rows: clamp verbose AI titles to two lines, keep the category compact */
  .fx-t { display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .fx-cat { max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:inline-block; vertical-align:bottom; }
  /* AI panel close affordance */
  .fxai-close { flex:0 0 auto; width:24px; height:24px; display:flex; align-items:center; justify-content:center; border:none; background:var(--surface-2); color:var(--text-3); border-radius:50%; cursor:pointer; font-size:12px; }
  .fxai-close:hover { color:var(--text); background:var(--surface-3); }
  /* second meta line: category + host, quiet and single-line */
  .fx-h { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .fx-cat2 { font-family:var(--font-mono); color:var(--text-4); }
  .fx-hsep { color:var(--border-strong); margin:0 7px; }
  .fx-t { font-size:15px; line-height:1.4; letter-spacing:-.005em; }
  .fx-bulkbar { display:flex; align-items:center; gap:18px; margin-bottom:16px; padding:12px 18px; border:1px solid var(--accent); border-radius:var(--radius-lg); background:rgba(201,168,124,0.07); box-shadow:0 0 0 1px rgba(201,168,124,0.05), 0 8px 24px -12px rgba(0,0,0,0.5); position:sticky; top:10px; z-index:5; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  .fx-bulkn { font-family:var(--font-mono); font-size:12px; letter-spacing:.06em; color:var(--accent-strong); font-weight:600; white-space:nowrap; }
  .fx-bulkacts { display:flex; align-items:center; gap:8px; margin-left:auto; flex-wrap:wrap; }
  .fx-bulklbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); margin-right:2px; }
  .fx-bulkbtn { font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--stc,var(--text-2)); background:transparent; border:1px solid var(--stc,var(--border)); border-radius:100px; padding:6px 13px; cursor:pointer; transition:.15s var(--ease); }
  .fx-bulkbtn:hover { background:color-mix(in srgb, var(--stc,var(--accent)) 14%, transparent); }
  .fx-bulkbtn.ghost { color:var(--text-4); border-color:var(--border); letter-spacing:.05em; }
  .fx-bulkbtn.ghost:hover { color:var(--text-2); border-color:var(--border-strong); background:transparent; }

  /* attack-surface tree */
  .as-node { border:1px solid var(--border); border-radius:var(--radius-lg); margin-bottom:10px; background:var(--surface); overflow:hidden; }
  .as-head { display:flex; align-items:center; gap:12px; padding:15px 18px; cursor:pointer; }
  .as-head:hover { background:var(--surface-2); }
  .as-caret { color:var(--text-4); font-size:10px; transition:transform .18s var(--ease); flex:0 0 auto; }
  .as-node.open > .as-head .as-caret { transform:rotate(90deg); }
  .as-fqdn { font-family:var(--font-mono); font-size:14px; color:var(--text); }
  .as-sub { font-size:12px; color:var(--text-4); margin-top:2px; }
  .as-badges { margin-left:auto; display:flex; gap:14px; align-items:center; font-size:12px; color:var(--text-3); }
  .as-badges b { color:var(--text); font-family:var(--font-mono); }
  .as-body { display:none; border-top:1px solid var(--border-faint); padding:6px 12px 12px; }
  .as-node.open > .as-body { display:block; }
  .as-sec { display:flex; align-items:center; gap:12px; font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); padding:16px 6px 10px; }
  .as-sec::after { content:""; flex:1; height:1px; background:var(--border-faint); }
  .as-sevdot { width:8px; height:8px; border-radius:50%; flex:0 0 auto; box-shadow:0 0 0 3px rgba(255,255,255,0.03); }
  .as-host { border:1px solid var(--border-faint); border-radius:var(--radius); margin:0 0 8px; background:var(--surface-2); overflow:hidden; }
  .as-host-head { display:flex; align-items:center; gap:10px; padding:11px 14px; cursor:pointer; }
  .as-host-head:hover { background:color-mix(in srgb,var(--text) 3%,transparent); }
  .as-host .h { font-family:var(--font-mono); font-size:13px; color:var(--text); }
  .as-chip { font-family:var(--font-mono); font-size:10px; padding:2px 7px; border:1px solid var(--border); border-radius:100px; color:var(--text-3); }
  .as-chip.up { color:var(--ok); border-color:rgba(127,176,138,.4); }
  .as-host-meta { margin-left:auto; display:flex; gap:12px; font-size:11px; color:var(--text-4); align-items:center; }
  .as-host-meta b { color:var(--text-2); font-family:var(--font-mono); }
  .as-eps { display:none; border-top:1px solid var(--border-faint); padding:8px 14px; max-height:340px; overflow:auto; }
  .as-host.open .as-eps { display:block; }
  .as-host.open .as-caret { transform:rotate(90deg); }
  .as-ep { font-family:var(--font-mono); font-size:12px; color:var(--text-3); padding:4px 0; border-bottom:1px solid var(--border-faint); word-break:break-all; }
  .as-ep:last-child { border-bottom:none; }
  .as-ep .m { color:var(--accent-ink); }
  .as-scan { display:flex; align-items:center; gap:12px; padding:9px 12px; border:1px solid var(--border-faint); border-radius:var(--radius); margin-bottom:6px; background:var(--surface-2); cursor:pointer; font-size:12px; }
  .as-scan:hover { border-color:var(--border-strong); }
  .as-scan .id { font-family:var(--font-mono); color:var(--text-2); }
  .as-scan .sp { margin-left:auto; color:var(--text-4); font-size:11px; }
  .as-techchip { font-family:var(--font-mono); font-size:10px; color:var(--text-3); background:var(--bg); border:1px solid var(--border-faint); border-radius:3px; padding:1px 6px; margin:0 4px 4px 0; display:inline-block; }

  /* attack-surface asset cards */
  .asx-summary { display:flex; gap:10px; flex-wrap:wrap; margin:0 0 18px; }
  .asx-summary > div { flex:1; min-width:120px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:14px 16px; position:relative; overflow:hidden; }
  .asx-summary > div::after { content:""; position:absolute; left:0; top:0; bottom:0; width:2px; background:var(--accent); opacity:.5; }
  .asx-summary b { display:block; font-family:var(--font-serif); font-size:1.7rem; color:var(--text); line-height:1; letter-spacing:-0.02em; }
  .asx-summary span { display:block; margin-top:6px; font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); }
  .asx-summary .crit b { color:var(--crit); } .asx-summary .crit::after { background:var(--crit); opacity:.7; }
  #surface-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; }
  .asx-card { position:relative; display:flex; flex-direction:column; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); padding:18px 20px 16px; cursor:pointer; overflow:hidden;
    transition:border-color .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease); }
  .asx-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sev,var(--border-strong)); opacity:.85; }
  .asx-card:hover { border-color:var(--accent); transform:translateY(-2px); box-shadow:0 14px 34px rgba(0,0,0,.34); }
  .asx-card .card-top { display:flex; align-items:center; gap:14px; }
  .asx-card .globe { width:40px; height:40px; border-radius:11px; background:radial-gradient(circle at 30% 25%, rgba(201,168,124,0.16), var(--surface-2)); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); flex:0 0 auto; }
  .asx-card .fq { font-family:var(--font-mono); font-size:15px; color:var(--text); word-break:break-all; }
  .asx-card:hover .fq { color:var(--accent-strong); }
  .asx-card .mt { font-size:12px; color:var(--text-4); margin-top:3px; }
  .asx-card .go { margin-left:auto; flex:0 0 auto; color:var(--text-4); opacity:0; transform:translateX(-4px); transition:.18s var(--ease); }
  .asx-card:hover .go { opacity:1; transform:translateX(0); color:var(--accent-ink); }
  .asx-card .nums { display:flex; gap:8px; margin-top:16px; padding-top:14px; border-top:1px solid var(--border-faint); }
  .asx-card .nums div { flex:1; }
  .asx-card .nums div b { display:block; font-family:var(--font-serif); font-size:1.5rem; color:var(--text); line-height:1; letter-spacing:-0.02em; }
  .asx-card .nums div span { display:block; margin-top:5px; font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--text-4); }

  /* ── Attack-Surface HOME — Overview-grade summary + asset cards (sfx) ───── */
  .sfx-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:16px; margin:0 0 18px; }
  .sfx-ktile { padding:18px 20px; }
  .sfx-ktop { display:flex; align-items:center; justify-content:space-between; margin-bottom:13px; }
  .sfx-kico { width:32px; height:32px; border-radius:9px; background:var(--surface-2); border:1px solid var(--border-faint); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); box-shadow:var(--ovx-hi); }
  .sfx-kico svg { width:15px; height:15px; }
  .sfx-knum { font-family:var(--font-serif); font-size:2.05rem; line-height:1; color:var(--text); }
  .sfx-klabel { font-family:var(--font-mono); font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); margin-top:9px; }

  #surface-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:16px; }
  .sfx-card { position:relative; display:flex; flex-direction:column; overflow:hidden; cursor:pointer; padding:0;
    transition:border-color .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease); }
  .sfx-card:hover { border-color:var(--border-strong); transform:translateY(-2px); box-shadow:0 16px 40px rgba(0,0,0,.42); }
  .sfx-card:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
  .sfx-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sev,var(--border-strong)); opacity:.9; z-index:2; }
  .sfx-cbody { padding:18px 20px 16px; display:flex; flex-direction:column; flex:1; }
  .sfx-crow { display:flex; align-items:center; gap:13px; }
  .sfx-globe { width:38px; height:38px; border-radius:10px; background:radial-gradient(circle at 30% 25%, rgba(201,168,124,.18), var(--surface-2)); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); flex:0 0 auto; }
  .sfx-globe svg { width:19px; height:19px; }
  .sfx-cid { min-width:0; flex:1; }
  .sfx-fq { font-family:var(--font-serif); font-size:1.12rem; color:var(--text); line-height:1.15; word-break:break-all; }
  .sfx-card:hover .sfx-fq { color:var(--accent-strong); }
  .sfx-cmeta { display:flex; align-items:center; gap:8px; margin-top:6px; }
  .sfx-pill { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; padding:2px 8px; border-radius:100px; border:1px solid transparent; line-height:1.6; }
  .sfx-pill.verified { color:var(--ok); border-color:color-mix(in srgb,var(--ok) 40%,transparent); background:color-mix(in srgb,var(--ok) 10%,transparent); }
  .sfx-pill.failed { color:var(--crit); border-color:color-mix(in srgb,var(--crit) 40%,transparent); background:color-mix(in srgb,var(--crit) 9%,transparent); }
  .sfx-pill.pending, .sfx-pill.unverified { color:var(--text-4); border-color:var(--border); background:var(--surface-2); }
  .sfx-scans { font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
  .sfx-go { margin-left:auto; flex:0 0 auto; color:var(--text-4); opacity:0; transform:translateX(-4px); transition:.18s var(--ease); }
  .sfx-go svg { width:18px; height:18px; }
  .sfx-card:hover .sfx-go { opacity:1; transform:translateX(0); color:var(--accent-ink); }
  .sfx-sevbar { display:flex; height:5px; border-radius:100px; overflow:hidden; background:var(--bg-2); box-shadow:var(--ovx-well); margin-top:16px; }
  .sfx-sevbar span { display:block; height:100%; }
  .sfx-sevbar.empty { opacity:.5; }
  .sfx-metrics { display:flex; gap:8px; margin-top:16px; padding-top:15px; border-top:1px solid var(--border-faint); }
  .sfx-metric { flex:1; min-width:0; }
  .sfx-metric b { display:block; font-family:var(--font-serif); font-size:1.4rem; color:var(--text); line-height:1; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
  .sfx-metric span { display:block; margin-top:6px; font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); }
  .sfx-foot { display:flex; align-items:center; gap:10px; margin-top:14px; padding-top:12px; border-top:1px solid var(--border-faint); font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
  .sfx-sevchip { display:inline-flex; align-items:center; gap:6px; color:var(--sev,var(--text-4)); text-transform:capitalize; }
  .sfx-sevdot { width:7px; height:7px; border-radius:2px; background:currentColor; box-shadow:0 0 7px currentColor; flex:0 0 auto; }
  .sfx-foot .sp { margin-left:auto; }

  /* ── Attack-surface explorer (B): tree-table workhorse + compact Surface Dial ── */
  .asx-bar2 { display:flex; align-items:center; gap:16px; margin-bottom:14px; }
  .asx-filter2 { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:16px; padding:10px 14px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); }
  .asx-flbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); }
  .asx-fchip { font-family:var(--font-mono); font-size:11px; color:var(--text-3); background:var(--bg-2); border:1px solid var(--border); border-radius:100px; padding:5px 12px; cursor:pointer; transition:.14s var(--ease); display:inline-flex; align-items:center; gap:6px; }
  .asx-fchip:hover { color:var(--text); border-color:var(--border-strong); }
  .asx-fchip.on { color:var(--accent-ink); border-color:var(--accent); background:var(--accent-dim); }
  .asx-fchip .dot { width:7px; height:7px; border-radius:50%; }
  .asx-fsearch { flex:1; min-width:150px; background:var(--bg); border:1px solid var(--border); border-radius:100px; padding:8px 14px; color:var(--text); font-size:13px; margin:0; }
  .asx-fsearch:focus { outline:none; border-color:var(--accent); }
  .asx-fcount { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-left:auto; white-space:nowrap; }
  .asx-fcount b { color:var(--text); }
  .asx-workspace { display:grid; grid-template-columns:minmax(0,1fr) 384px; gap:16px; align-items:start; }
  .asx-main { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); overflow:hidden; box-shadow:var(--shadow-1), var(--hair-top); }
  .asx-aside { position:sticky; top:92px; display:flex; flex-direction:column; gap:14px; }
  .asx-dial { position:relative; background:radial-gradient(circle at 50% 46%,rgba(201,168,124,0.055),transparent 62%),var(--bg); border:1px solid var(--border); border-radius:var(--radius-xl); height:384px; overflow:hidden; }
  .asx-dial #asx-svg { width:100%; height:100%; display:block; cursor:grab; }
  .asx-dial #asx-svg.grabbing { cursor:grabbing; }
  .asx-dial #asx-svg text { font-family:var(--font-mono); pointer-events:none; user-select:none; }
  .asx-legend2 { position:absolute; left:0; right:0; bottom:0; display:flex; justify-content:center; gap:11px; flex-wrap:wrap; padding:7px; font-family:var(--font-mono); font-size:9px; color:var(--text-4); background:linear-gradient(transparent,var(--bg) 65%); }
  .asx-legend2 i { display:inline-block; width:6px; height:6px; border-radius:50%; margin-right:4px; vertical-align:middle; }
  .asx-legend2 i.hollow { background:transparent!important; border:1.5px solid currentColor; }
  .asx-panel2 { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-1); }
  #asx-svg .asx-ring { fill:none; stroke:var(--accent); stroke-width:1; opacity:.26; }
  #asx-svg .asx-tick { stroke:var(--accent); stroke-width:.6; opacity:.1; }
  #asx-svg .asx-ringlbl { font-size:7.5px; letter-spacing:.22em; fill:var(--accent-strong); opacity:.8; paint-order:stroke; stroke:var(--bg); stroke-width:3px; }
  #asx-svg .asx-wedge { stroke:var(--accent); stroke-width:1; opacity:.11; }
  #asx-svg .asx-wedgelbl { font-size:8.5px; letter-spacing:.06em; fill:var(--accent-strong); opacity:.82; }
  #asx-svg .node-dot { cursor:pointer; }
  #asx-svg .node.sel .node-dot { stroke:var(--accent-strong)!important; stroke-width:2.5!important; }
  #asx-svg .asx-handline { stroke:url(#asx-hand-grad); stroke-width:2.5; stroke-linecap:round; }
  @media (prefers-reduced-motion: no-preference){ #asx-hand.live { animation:asxsweep 3.4s var(--ease) infinite alternate; transform-origin:var(--asx-cx) var(--asx-cy); } }
  @keyframes asxsweep { from{ transform:rotate(-7deg);} to{ transform:rotate(7deg);} }
  /* tree-table (att) */
  .att-head { display:flex; align-items:center; gap:10px; padding:13px 16px 11px; font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); border-bottom:1px solid var(--border-faint); }
  .att-head .sp { margin-left:auto; }
  .att-scroll { height:calc(100vh - 320px); height:calc(100dvh - 320px); min-height:440px; overflow-y:auto; position:relative; }
  .att-spacer { position:relative; width:100%; }
  .att-row { position:absolute; left:0; right:0; height:42px; display:flex; align-items:center; gap:10px; padding:0 16px; box-sizing:border-box; border-bottom:1px solid var(--border-faint); }
  .att-grp { background:var(--surface-2); cursor:pointer; }
  .att-grp:hover { background:var(--surface-3); }
  .att-caret { width:12px; color:var(--text-4); font-size:9px; flex:0 0 auto; transition:transform .14s var(--ease); }
  .att-caret.open { transform:rotate(90deg); }
  .att-gname { font-family:var(--font-mono); font-size:13px; color:var(--text); flex:0 0 auto; }
  .att-sev { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--c,var(--text-4)); border:1px solid var(--c,var(--border)); border-radius:100px; padding:1px 8px; flex:0 0 auto; }
  .att-gmeta { font-family:var(--font-mono); font-size:10px; color:var(--text-4); flex:0 0 auto; }
  .att-bar { display:inline-flex; width:74px; height:5px; border-radius:100px; overflow:hidden; background:var(--bg-2); margin-left:auto; flex:0 0 auto; }
  .att-bar span { display:block; height:100%; }
  .att-host { cursor:pointer; padding-left:32px; }
  .att-host:hover { background:var(--surface-2); }
  .att-host.sel { background:var(--accent-dim); box-shadow:inset 3px 0 0 var(--accent); }
  .att-livedot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
  .att-hname { font-family:var(--font-mono); font-size:12px; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:0 1 auto; min-width:80px; }
  .att-host:hover .att-hname { color:var(--text); }
  .att-http { font-family:var(--font-mono); font-size:10px; color:var(--text-4); width:26px; flex:0 0 auto; }
  .att-cov { font-family:var(--font-mono); font-size:9px; letter-spacing:.05em; color:var(--c); border:1px solid var(--c); opacity:.85; border-radius:3px; padding:0 5px; flex:0 0 auto; }
  .att-scan { font-family:var(--font-mono); font-size:9px; color:var(--text-4); flex:0 0 auto; }
  .att-scan.on { color:var(--accent-ink); }
  .att-ports { font-family:var(--font-mono); font-size:11px; color:var(--text-3); flex:0 0 auto; }
  .att-ports.danger { color:var(--high); }
  .att-tech { font-family:var(--font-mono); font-size:9px; color:var(--text-4); background:var(--bg-2); border:1px solid var(--border-faint); border-radius:3px; padding:0 5px; flex:0 0 auto; }
  .att-eps { font-family:var(--font-mono); font-size:10px; color:var(--text-4); flex:0 0 auto; }
  .att-hsev { font-family:var(--font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--c); border:1px solid var(--c); border-radius:100px; padding:1px 8px; margin-left:auto; flex:0 0 auto; }
  .att-empty { padding:44px 20px; text-align:center; color:var(--text-4); font-size:13px; }

  /* ── ASM dashboard shell (KPI band + chart row) ── */
  #asx-dashboard { margin-bottom:16px; display:flex; flex-direction:column; gap:16px; }
  .asx-kpiband { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:16px; }
  .asx-kpi { padding:16px 18px; }
  .asx-klabel { font-family:var(--font-mono); font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); }
  .asx-knum { font-family:var(--font-serif); font-size:2rem; line-height:1; margin-top:10px; color:var(--text); }
  .asx-ksub { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:8px; }
  .asx-chartrow { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:16px; align-items:stretch; }
  .asx-dcard { padding:18px 20px; display:flex; flex-direction:column; }
  .asx-gaugewrap, .asx-donutwrap { position:relative; display:flex; align-items:center; justify-content:center; margin:6px auto 0; }
  .asx-gaugewrap svg { transform:rotate(0deg); }
  .asx-gaugec, .asx-donutc { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
  .asx-gnum { font-family:var(--font-serif); font-size:2.4rem; line-height:1; }
  .asx-gmax { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; color:var(--text-4); margin-top:3px; }
  .asx-donutc .n { font-family:var(--font-serif); font-size:1.7rem; line-height:1; color:var(--text); }
  .asx-donutc .l { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-4); margin-top:2px; }
  .asx-posture { text-align:center; font-family:var(--font-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; margin-top:12px; }
  .asx-sevleg { display:flex; flex-direction:column; gap:2px; margin-top:12px; }
  .asx-sevrow { display:flex; align-items:center; gap:9px; width:100%; text-align:left; background:none; border:none; padding:5px 6px; border-radius:7px; cursor:pointer; font-family:var(--font-mono); font-size:12px; color:var(--text-3); text-transform:capitalize; transition:.14s var(--ease); }
  .asx-sevrow:hover { background:var(--surface-2); color:var(--text); }
  .asx-sevrow .sw { width:9px; height:9px; border-radius:2px; flex:0 0 auto; }
  .asx-sevrow b { margin-left:auto; color:var(--text); }
  .asx-covlist { display:flex; flex-direction:column; gap:8px; margin-top:8px; flex:1; }
  .asx-covrow { display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:none; border:none; padding:3px 2px; cursor:pointer; font-family:var(--font-mono); font-size:11px; color:var(--text-3); text-transform:capitalize; }
  .asx-covrow:hover { color:var(--text); }
  .asx-covlbl { width:58px; flex:0 0 auto; }
  .asx-covtrack { flex:1; height:6px; background:var(--bg-2); border-radius:100px; overflow:hidden; box-shadow:var(--ovx-well); }
  .asx-covtrack i { display:block; height:100%; border-radius:100px; }
  .asx-covrow b { color:var(--text); width:34px; text-align:right; flex:0 0 auto; }
  .asx-scanning { font-family:var(--font-mono); font-size:10px; color:var(--accent-ink); margin-top:12px; }
  .asx-topcard .asx-toplist { display:flex; flex-direction:column; gap:2px; margin-top:6px; }
  .asx-toprow { display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:none; border:none; padding:6px 6px; border-radius:7px; cursor:pointer; transition:.14s var(--ease); }
  .asx-toprow:hover { background:var(--surface-2); }
  .asx-tsev { width:7px; height:7px; border-radius:50%; flex:0 0 auto; box-shadow:0 0 7px -1px currentColor; }
  .asx-thost { flex:1; min-width:0; font-family:var(--font-mono); font-size:12px; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .asx-toprow:hover .asx-thost { color:var(--accent-strong); }
  .asx-tf { font-family:var(--font-mono); font-size:11px; color:var(--crit); flex:0 0 auto; }

  /* ══ THE PROVING TABLE — premium ASM dashboard ══ */
  .pt-mono { font-family:var(--font-mono); }
  .pt-lbl { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); }
  /* cards match the Overview ovx-card treatment exactly (radius-xl, top-sheen gradient, inset hairline) */
  .pt-card { position:relative; background:linear-gradient(180deg,rgba(255,255,255,0.022),rgba(255,255,255,0) 42%),var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--ovx-elev1); overflow:hidden; }
  .pt-card::after { content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; box-shadow:inset 0 0 0 1px rgba(255,255,255,0.015); }
  .pt-pad { padding:20px 22px; }
  .pt-hd { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:16px; }
  .pt-hd h3 { font-family:var(--font-mono); font-weight:400; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); }
  .pt-hd .pt-lbl { margin-left:auto; font-size:11px; letter-spacing:normal; text-transform:none; color:var(--text-4); }
  .pt-row { display:grid; gap:16px; }
  .pt-hero { grid-template-columns:5fr 7fr; }
  .pt-proof { grid-template-columns:5fr 7fr; }
  .pt-evid { grid-template-columns:8fr 4fr; }
  .pt-act { grid-template-columns:7fr 5fr; }
  .pt-row > * { min-width:0; }   /* prevent wide flex children (attack-path graph) from blowing out fr columns */
  #pt-killchain .panel { margin-top:0; }
  #pt-killchain .apgraph { overflow-x:auto; max-width:100%; }
  @media(max-width:1000px){ .pt-hero,.pt-proof,.pt-evid,.pt-act{ grid-template-columns:1fr; } }
  /* command strip */
  .pt-cmd { display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:10px 16px; background:linear-gradient(180deg,rgba(26,28,32,.7),rgba(20,21,24,.6)); border:1px solid var(--border-faint); border-radius:var(--radius-lg); }
  .pt-crumb { display:flex; align-items:center; gap:9px; font-family:var(--font-mono); font-size:12px; color:var(--text-2); }
  .pt-crumb .root { color:var(--text); font-size:13px; }
  .pt-crumb .sep { color:var(--text-4); }
  .pt-scanpick { font-family:var(--font-mono); font-size:11px; color:var(--text-2); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:5px 10px; }
  .pt-pulse { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:10px; color:var(--text-3); letter-spacing:.05em; padding:5px 11px; border:1px solid var(--border); border-radius:100px; background:var(--surface); }
  .pt-pulse .dot { width:7px; height:7px; border-radius:50%; background:var(--ok); animation:ptpz 2s infinite; }
  @keyframes ptpz { 0%{box-shadow:0 0 0 0 rgba(127,176,138,.5)} 70%{box-shadow:0 0 0 7px rgba(127,176,138,0)} 100%{box-shadow:0 0 0 0 rgba(127,176,138,0)} }
  .pt-contract { margin-left:auto; display:flex; align-items:center; gap:9px; font-family:var(--font-mono); font-size:11px; color:var(--text-3); }
  .pt-contract b { color:var(--accent-strong); font-weight:500; }
  .pt-contract .burin { color:var(--accent-ink); }
  /* posture dial */
  .pt-dial { display:flex; flex-direction:column; align-items:center; justify-content:center; padding:18px 18px 16px; }
  .pt-dial::before { content:""; position:absolute; width:300px; height:300px; left:50%; top:-96px; transform:translateX(-50%); border-radius:50%; background:radial-gradient(circle, color-mix(in srgb, var(--risk,var(--accent)) 20%, transparent), transparent 64%); filter:blur(12px); pointer-events:none; z-index:0; }
  .pt-dialwrap, .pt-dialband, .pt-dialcap { position:relative; z-index:1; }
  .pt-dialwrap { position:relative; width:188px; height:188px; }
  .pt-dialc { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
  .pt-dialnum { font-family:var(--font-serif); font-size:50px; line-height:.9; color:var(--text); letter-spacing:-.02em; }
  .pt-dialden { font-family:var(--font-mono); font-size:12px; color:var(--text-4); margin-top:2px; }
  .pt-dialband { font-family:var(--font-mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; margin-top:14px; }
  .pt-dialcap { margin-top:11px; text-align:center; font-family:var(--font-mono); font-size:10px; color:var(--text-3); max-width:290px; line-height:1.5; }
  .pt-dialcap a { color:var(--accent-ink); text-decoration:none; border-bottom:1px dotted var(--accent); cursor:pointer; }
  /* kpi rail */
  .pt-kpis { display:grid; grid-template-columns:repeat(5,1fr); grid-template-rows:1fr; height:100%; gap:1px; background:var(--border-faint); border:1px solid var(--border); border-radius:var(--radius-xl); overflow:hidden; }
  @media(max-width:1000px){ .pt-kpis{ grid-template-columns:repeat(2,1fr); } }
  .pt-kpi { background:var(--surface); padding:18px 16px; display:flex; flex-direction:column; justify-content:flex-start; gap:11px; }
  .pt-kpi .pt-lbl { min-height:2.3em; line-height:1.35; }
  .pt-kbot { margin-top:auto; display:flex; flex-direction:column; gap:9px; padding-top:10px; }
  .pt-kpi .v { font-family:var(--font-serif); font-size:31px; line-height:1; color:var(--text); }
  .pt-kpi .v.proven { color:var(--accent-strong); }
  .pt-kpi .v.hot { color:var(--crit); }
  .pt-kpi .sub { font-family:var(--font-mono); font-size:10px; color:var(--text-3); }
  .pt-kpi .provtag { display:inline-flex; align-items:center; gap:5px; font-family:var(--font-mono); font-size:9px; letter-spacing:.04em; color:var(--accent-ink); }
  .pt-micro { height:5px; border-radius:100px; background:var(--bg-2); overflow:hidden; display:flex; box-shadow:var(--ovx-well); }
  .pt-micro i { height:100%; display:block; }
  /* proof matrix */
  .pt-pm { display:grid; grid-template-columns:82px repeat(5,1fr); gap:5px; }
  .pt-pm .cnr { display:flex; align-items:flex-end; justify-content:flex-end; padding:0 8px 4px 0; }
  .pt-pm .xh { display:flex; align-items:flex-end; justify-content:center; padding-bottom:4px; }
  .pt-pm .xh span { font-family:var(--font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; }
  .pt-pm .yh { display:flex; flex-direction:column; align-items:flex-end; justify-content:center; padding-right:9px; font-family:var(--font-mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); text-align:right; line-height:1.25; }
  .pt-pm .yh.proven { color:var(--accent-strong); }
  .pt-cell { position:relative; height:52px; border-radius:var(--radius); border:1px solid var(--border-faint); background:var(--surface); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:.14s var(--ease); }
  .pt-cell:hover { border-color:var(--border-strong); transform:translateY(-1px); }
  .pt-cell .c { font-family:var(--font-mono); font-size:15px; color:var(--text-2); font-variant-numeric:tabular-nums; }
  .pt-cell.empty { cursor:default; }
  .pt-cell.empty .c { color:var(--text-4); opacity:.5; }
  .pt-cell.empty:hover { transform:none; border-color:var(--border-faint); }
  .pt-cell.proven { border-color:rgba(201,168,124,.45); }
  .pt-cell.proven .c { color:var(--text); }
  .pt-cell.pot { border-color:rgba(203,178,106,.4); border-style:dashed; }
  .pt-cell.pot .c { color:var(--med); }
  .pt-pm .yh.pot { color:var(--med); }
  .pt-cell .burin { position:absolute; top:4px; right:5px; font-size:10px; color:var(--accent-strong); }
  .pt-pmcap { margin-top:12px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; font-family:var(--font-mono); font-size:10px; color:var(--text-3); }
  .pt-pmcap .sw { width:11px; height:11px; border-radius:2px; border:1px solid var(--border); display:inline-block; vertical-align:-1px; margin-right:5px; }
  /* attack grid */
  .pt-att { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
  @media(max-width:640px){ .pt-att{ grid-template-columns:repeat(2,1fr); } }
  .pt-att .th { font-family:var(--font-mono); font-size:10px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-3); padding-bottom:8px; border-bottom:1px solid var(--border-faint); margin-bottom:9px; display:flex; justify-content:space-between; align-items:baseline; }
  .pt-att .th .b { color:var(--accent-ink); font-size:10px; }
  .pt-tq { position:relative; padding:9px 10px; border-radius:var(--radius); border:1px solid var(--border-faint); background:var(--surface); margin-bottom:7px; cursor:pointer; transition:.14s var(--ease); }
  .pt-tq:hover { border-color:var(--border-strong); }
  .pt-tq .id { font-family:var(--font-mono); font-size:10px; color:var(--accent-ink); }
  .pt-tq .nm { font-family:var(--font-serif); font-size:12px; color:var(--text-2); line-height:1.25; margin-top:2px; }
  .pt-tq .n { position:absolute; top:8px; right:9px; font-family:var(--font-mono); font-size:11px; color:var(--text); font-variant-numeric:tabular-nums; }
  .pt-tq.clean { opacity:.45; cursor:default; }
  .pt-tq.clean .n { color:var(--text-4); }
  .pt-tq .vb { position:absolute; bottom:8px; right:9px; font-size:9px; color:var(--accent-strong); }
  .pt-attfoot { margin-top:12px; padding-top:11px; border-top:1px solid var(--border-faint); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; }
  .pt-toggle { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:10px; color:var(--text-3); border:1px solid var(--border); border-radius:100px; padding:5px 11px; cursor:pointer; }
  .pt-toggle .sw { width:22px; height:12px; border-radius:100px; background:var(--surface-3); position:relative; transition:.15s; }
  .pt-toggle .sw::after { content:""; position:absolute; top:1px; left:1px; width:10px; height:10px; border-radius:50%; background:var(--text-4); transition:.15s var(--ease); }
  .pt-toggle.on .sw { background:var(--accent-dim); }
  .pt-toggle.on .sw::after { left:11px; background:var(--accent); }
  .pt-oos { font-family:var(--font-mono); font-size:10px; color:var(--text-4); display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
  .pt-oos .gray { display:inline-block; padding:2px 7px; border-radius:3px; background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--text) 3%,transparent),color-mix(in srgb,var(--text) 3%,transparent) 3px,transparent 3px,transparent 6px); border:1px solid var(--border-faint); color:var(--text-4); }
  /* compliance rail */
  .pt-cmp { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; align-items:start; }
  @media(max-width:820px){ .pt-cmp{ grid-template-columns:1fr; } }
  .pt-cmpc { border:1px solid var(--border-faint); border-radius:var(--radius); padding:12px 13px; background:var(--surface); }
  .pt-cmpc .top { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:9px; }
  .pt-cmpc .fw { font-family:var(--font-serif); font-size:14px; color:var(--text); }
  .pt-cmpc .den { font-family:var(--font-mono); font-size:10px; color:var(--text-4); }
  .pt-ctiles { display:flex; flex-wrap:wrap; gap:5px; }
  .pt-ct { font-family:var(--font-mono); font-size:10px; padding:4px 7px; border-radius:3px; border:1px solid var(--border-faint); color:var(--text-4); background:var(--surface-2); cursor:default; }
  .pt-ct.gap { color:var(--text); border-color:rgba(224,108,96,.5); background:rgba(224,108,96,.10); cursor:pointer; }
  .pt-ct.gap.proven { border-color:rgba(201,168,124,.55); background:var(--accent-dim); color:var(--accent-strong); }
  .pt-ct.oos { opacity:.45; background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--text) 2%,transparent),color-mix(in srgb,var(--text) 2%,transparent) 3px,transparent 3px,transparent 6px); }
  .pt-tbar { height:4px; border-radius:100px; background:var(--bg-2); margin-top:10px; overflow:hidden; box-shadow:var(--ovx-well); }
  .pt-tbar i { display:block; height:100%; background:var(--accent); opacity:.55; }
  .pt-cmpc .tn { font-family:var(--font-mono); font-size:9px; color:var(--text-4); margin-top:5px; }
  /* leverage queue */
  .pt-lv { display:flex; flex-direction:column; gap:11px; }
  .pt-lvc { border:1px solid var(--border-faint); border-radius:var(--radius-lg); padding:13px 15px; background:var(--surface); position:relative; }
  .pt-lvc:hover { border-color:var(--border-strong); }
  .pt-lvc .rank { position:absolute; top:14px; left:15px; font-family:var(--font-mono); font-size:10px; color:var(--text-4); }
  .pt-lvc .h { display:flex; align-items:baseline; gap:10px; margin-bottom:5px; padding-left:26px; }
  .pt-lvc .ht { font-family:var(--font-serif); font-size:15px; color:var(--text); }
  .pt-lvc .hp { margin-left:auto; font-family:var(--font-mono); font-size:10px; color:var(--accent-ink); white-space:nowrap; }
  .pt-lvc .payoff { font-family:var(--font-mono); font-size:11px; color:var(--text-3); padding-left:26px; margin-bottom:10px; line-height:1.5; }
  .pt-lvc .payoff b { color:var(--accent-strong); font-weight:500; }
  .pt-lvbar { height:7px; border-radius:100px; background:var(--bg-2); overflow:hidden; box-shadow:var(--ovx-well); margin-left:26px; }
  .pt-lvbar i { display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--accent-strong)); }
  .pt-lvc .foot { display:flex; align-items:center; gap:9px; margin-top:9px; padding-left:26px; }
  .pt-chip { font-family:var(--font-mono); font-size:9px; padding:3px 8px; border-radius:100px; border:1px solid var(--border); color:var(--text-3); }
  .pt-chip.pv { color:var(--accent-strong); border-color:rgba(201,168,124,.35); background:var(--accent-dim); }
  .pt-review { margin-left:auto; font-family:var(--font-mono); font-size:10px; color:var(--accent-ink); border:1px solid var(--accent); border-radius:var(--radius); padding:4px 10px; cursor:pointer; background:none; }
  .pt-review:hover { background:var(--accent); color:var(--bg); }
  /* exposure leaderboard */
  .pt-lb { display:flex; flex-direction:column; }
  .pt-lbr { display:grid; grid-template-columns:20px 1fr auto; gap:11px; align-items:center; padding:10px 6px; border-bottom:1px solid var(--border-faint); cursor:pointer; }
  .pt-lbr:hover { background:color-mix(in srgb,var(--text) 2%,transparent); }
  .pt-lbr .rk { font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
  .pt-lbr .hn { font-family:var(--font-mono); font-size:13px; color:var(--text-2); display:flex; align-items:center; gap:7px; min-width:0; }
  .pt-lbr .hn .name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .pt-star { background:none; border:none; color:var(--text-4); font-size:14px; cursor:pointer; padding:0; line-height:1; flex:0 0 auto; height:auto; border-radius:4px; }
  .pt-star:hover { background:transparent; transform:none; color:var(--accent-ink); }
  .pt-star.on { color:var(--accent-ink); }
  .pt-comp { display:flex; height:6px; border-radius:100px; overflow:hidden; margin-top:5px; box-shadow:var(--ovx-well); max-width:220px; background:var(--bg-2); }
  .pt-comp i { height:100%; display:block; }
  .pt-lbr .sc { font-family:var(--font-mono); font-size:14px; color:var(--text); font-variant-numeric:tabular-nums; }
  .pt-tier { font-family:var(--font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; padding:2px 7px; border-radius:100px; }
  .pt-tier.set { background:var(--accent); color:var(--bg); }
  .pt-tier.dv { border:1px solid var(--border); color:var(--text-4); }
  .pt-lbfoot { font-family:var(--font-mono); font-size:10px; color:var(--text-4); margin-top:10px; padding-top:9px; border-top:1px solid var(--border-faint); line-height:1.5; }
  /* verdict chip in inventory + empty/skeleton */
  .att-vchip { font-family:var(--font-mono); font-size:9px; letter-spacing:.03em; padding:2px 6px; border-radius:100px; flex:0 0 auto; }
  .att-vchip.exp { color:var(--accent-strong); background:var(--accent-dim); border:1px solid rgba(201,168,124,.35); }
  .pt-empty { font-family:var(--font-mono); font-size:11px; color:var(--text-4); padding:10px 2px; line-height:1.6; }
  .pt-sk { border-radius:var(--radius); background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%); background-size:200% 100%; animation:ptsk 1.3s infinite; }
  @keyframes ptsk { 0%{background-position:200% 0} 100%{background-position:-200% 0} }
  @media(prefers-reduced-motion:reduce){ .pt-pulse .dot,.pt-sk{ animation:none; } }
  /* ── Proving Table drawer (evidence / drill-down) ── */
  .ptd-head { padding:20px 20px 15px; border-bottom:1px solid var(--border-faint); background:var(--surface); }
  /* NOT position:sticky — Safari renders a sticky element blank inside a flex/overflow modal; the header is
     already the top flex:0 row (the body scrolls), and no backdrop-filter (which paints over the close-X in Safari). */
  .ptd-eyebrow { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); }
  .ptd-title { font-family:var(--font-serif); font-weight:400; font-size:19px; color:var(--text); margin-top:8px; line-height:1.2; padding-right:22px; }
  .ptd-sub { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:7px; letter-spacing:.02em; }
  .ptd-body { padding:12px 14px 26px; }
  .ptd-row { display:grid; grid-template-columns:1fr auto; gap:11px; align-items:center; padding:11px 12px 11px 14px; border:1px solid var(--border-faint); border-radius:var(--radius-lg); background:var(--surface-2); margin-bottom:7px; cursor:pointer; transition:.14s var(--ease); position:relative; overflow:hidden; }
  .ptd-row:hover { border-color:var(--border-strong); background:var(--surface-3); transform:translateX(-2px); }
  .ptd-row::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--rail,var(--info)); }
  .ptd-main { min-width:0; }
  .ptd-t { font-family:var(--font-serif); font-size:14px; color:var(--text); line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .ptd-h { font-family:var(--font-mono); font-size:10px; color:var(--text-4); margin-top:4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .ptd-v { display:flex; flex-direction:column; align-items:flex-end; gap:6px; flex:0 0 auto; }
  .ptd-vchip { font-family:var(--font-mono); font-size:9px; letter-spacing:.03em; padding:2px 8px; border-radius:100px; white-space:nowrap; }
  .ptd-vchip.exp { color:var(--accent-strong); background:var(--accent-dim); border:1px solid rgba(201,168,124,.35); }
  .ptd-vchip.pot { color:var(--med); border:1px dashed rgba(203,178,106,.45); }
  .ptd-vchip.un { color:var(--text-4); border:1px solid var(--border-faint); }
  .ptd-sev { font-family:var(--font-mono); font-size:9px; letter-spacing:.06em; text-transform:uppercase; }
  .ptd-empty { font-family:var(--font-mono); font-size:12px; color:var(--text-4); padding:30px 16px; text-align:center; line-height:1.7; }
  .ptd-sec { font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); margin:18px 6px 10px; }
  .ptd-wf { padding:2px 6px 8px; }
  .ptd-wfrow { display:flex; align-items:center; justify-content:space-between; padding:10px 4px; border-bottom:1px solid var(--border-faint); font-family:var(--font-mono); font-size:12px; color:var(--text-3); }
  .ptd-wfrow b { color:var(--text); font-variant-numeric:tabular-nums; font-weight:500; }
  .ptd-wfrow.pv { color:var(--accent-ink); } .ptd-wfrow.pv b { color:var(--accent-strong); }
  .ptd-wfrow.tot { border-bottom:none; margin-top:6px; padding-top:13px; border-top:1px solid var(--border); }
  .ptd-wfrow.tot span { color:var(--text); } .ptd-wfrow.tot b { color:var(--accent-strong); font-size:15px; }
  /* ── centered modal (host detail + drill-downs), blurred backdrop ── */
  .asx-mw { position:fixed; inset:0; z-index:220; display:none; align-items:center; justify-content:center; padding:44px 20px;
    background:rgba(6,7,9,.6); backdrop-filter:blur(9px) saturate(.9); -webkit-backdrop-filter:blur(9px) saturate(.9); }
  .asx-mw.open { display:flex; animation:asxmwf .16s var(--ease); }
  @keyframes asxmwf { from{opacity:0} to{opacity:1} }
  .asx-mc { position:relative; width:100%; max-width:640px; overflow:hidden;
    background:linear-gradient(180deg,color-mix(in srgb,var(--text) 2.2%,transparent),rgba(255,255,255,0) 42%),var(--surface);
    border:1px solid var(--border-strong); border-radius:var(--radius-xl); box-shadow:var(--shadow-pop); animation:asxmz .2s var(--ease); }
  .asx-mc.wide { max-width:900px; }
  .asx-mcontent { display:flex; flex-direction:column; max-height:88vh; overflow:hidden; }   /* real flex box (NOT display:contents — Safari drops sticky headers inside it); persistent X stays its sibling */
  @keyframes asxmz { from{opacity:0;transform:translateY(12px) scale(.99)} to{opacity:1;transform:none} }
  @media(prefers-reduced-motion:reduce){ .asx-mw.open,.asx-mc{ animation:none; } }
  .asx-mx { position:absolute; top:15px; right:15px; z-index:12; width:30px; height:30px; border-radius:8px; padding:0;
    background:var(--surface-2); border:1px solid var(--border); color:var(--text-2); font-size:17px; line-height:1; cursor:pointer;
    display:flex; align-items:center; justify-content:center; transition:background .14s var(--ease), color .14s var(--ease), border-color .14s var(--ease);
    transform:translateZ(0); -webkit-transform:translateZ(0); isolation:isolate; }   /* own compositing layer — stays above Safari backdrop-filter siblings */
  .asx-mx:hover { color:var(--text); border-color:var(--border-strong); background:var(--surface-3); transform:translateZ(0); }
  .asx-mcontent > * { flex-shrink:0; }   /* headers/KPI bands never shrink (was clipping the drawer subtitle in the flex column) */
  .asx-mbody { overflow-y:auto; min-height:0; flex:1 1 auto; }
  /* host modal */
  .asx-hmhead { padding:22px 24px 16px; border-bottom:1px solid var(--border-faint); }
  .asx-hmeye { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); }
  .asx-hmtitle { font-family:var(--font-serif); font-size:22px; color:var(--text); margin-top:8px; line-height:1.15; word-break:break-all; padding-right:26px; }
  .asx-hmsub { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-family:var(--font-mono); font-size:11px; color:var(--text-3); margin-top:9px; }
  .asx-hmsub .p-dot { width:7px; height:7px; border-radius:50%; }
  .asx-hmkpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:1px; margin:16px 24px; background:var(--border-faint); border:1px solid var(--border-faint); border-radius:var(--radius-lg); overflow:hidden; }
  .asx-hmk { background:var(--surface); padding:14px 16px; }
  .asx-hmk b { font-family:var(--font-serif); font-size:22px; color:var(--text); display:block; line-height:1; }
  .asx-hmk span { font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); display:block; margin-top:7px; }
  .asx-hmsec { font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); margin:18px 24px 10px; display:flex; align-items:baseline; justify-content:space-between; }
  .asx-hmsec .cnt { color:var(--text-3); letter-spacing:.02em; }
  .asx-hmpad { padding:0 24px; }
  .asx-epsearch { position:relative; margin:0 24px 10px; }
  .asx-epsearch input { width:100%; height:38px; padding:0 13px 0 34px; background:var(--surface-2); border:1px solid var(--border);
    border-radius:var(--radius); color:var(--text); font-family:var(--font-mono); font-size:12px; margin:0; }
  .asx-epsearch input:focus { outline:none; border-color:var(--accent); }
  .asx-epsearch svg { position:absolute; left:12px; top:11px; width:15px; height:15px; color:var(--text-4); }
  .asx-eplist { max-height:340px; overflow-y:auto; margin:0 24px 20px; border:1px solid var(--border-faint); border-radius:var(--radius); background:var(--bg-2); }
  .asx-eprow { font-family:var(--font-mono); font-size:12px; color:var(--text-2); padding:8px 12px; border-bottom:1px solid var(--border-faint); word-break:break-all; }
  .asx-eprow:last-child { border-bottom:none; }
  .asx-eprow:hover { background:var(--surface-2); color:var(--text); }
  .asx-eprow mark { background:rgba(201,168,124,.28); color:var(--accent-strong); border-radius:2px; padding:0 1px; }
  .asx-hmfind { display:flex; align-items:center; gap:10px; width:calc(100% - 48px); margin:0 24px 6px; padding:12px 14px; border-radius:var(--radius-lg);
    border:1px solid var(--border-faint); background:var(--surface-2); color:var(--text-2); cursor:pointer; font-family:var(--font-mono); font-size:13px; transition:.14s var(--ease); }
  .asx-hmfind:hover { border-color:var(--border-strong); color:var(--text); background:var(--surface-3); transform:none; }
  .asx-hmfind .arr { margin-left:auto; color:var(--accent-ink); font-size:11px; }
  /* ATT&CK full matrix mode */
  .pt-attfull { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(134px,1fr); gap:9px; overflow-x:auto; padding:6px 2px 10px; }
  .pt-atcol { min-width:120px; }
  .pt-atcol .th { font-family:var(--font-mono); font-size:9px; letter-spacing:.04em; text-transform:uppercase; padding-bottom:8px; border-bottom:1px solid var(--border); margin-bottom:9px; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .pt-atcol:not(.oos) .th { color:var(--accent-strong); border-bottom-color:rgba(201,168,124,.35); }
  .pt-atcol.oos .th { color:var(--text-4); }
  .pt-atcell { padding:8px 9px; border-radius:var(--radius); border:1px solid var(--border-faint); background:var(--surface); margin-bottom:6px; position:relative; }
  .pt-atcell.oos { background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--text) 2.5%,transparent),color-mix(in srgb,var(--text) 2.5%,transparent) 3px,transparent 3px,transparent 6px); opacity:.6; min-height:74px; display:flex; align-items:center; }
  .pt-atcell.hit { cursor:pointer; border-color:rgba(201,168,124,.4); background:var(--accent-dim); }
  .pt-atcell.hit:hover { border-color:var(--accent); }
  .pt-atcell.hit .n { color:var(--accent-strong); }
  .pt-atcell.hit .nm { color:var(--text); }
  .pt-atcell .id { font-family:var(--font-mono); font-size:9px; color:var(--accent-ink); }
  .pt-atcell.oos .id { color:var(--text-4); }
  .pt-atcell .nm { font-size:11px; color:var(--text-2); line-height:1.25; margin-top:3px; }
  .pt-atcell .n { position:absolute; top:7px; right:8px; font-family:var(--font-mono); font-size:10px; color:var(--text); }
  .pt-atcell .vb { position:absolute; bottom:6px; right:8px; font-size:9px; color:var(--accent-strong); }
  .pt-att-scope { font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:11px; }
  .pt-oosband { margin-top:15px; padding-top:14px; border-top:1px solid var(--border-faint); }
  .pt-oosband-h { font-family:var(--font-mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); margin-bottom:10px; }
  .pt-oosband-h span { color:var(--text-4); letter-spacing:.02em; text-transform:none; }
  .pt-oosgrid { display:flex; flex-wrap:wrap; gap:6px; }
  .pt-oostac { font-family:var(--font-mono); font-size:10px; color:var(--text-4); padding:5px 11px; border-radius:4px; border:1px solid var(--border-faint); background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--text) 2.8%,transparent),color-mix(in srgb,var(--text) 2.8%,transparent) 3px,transparent 3px,transparent 6px); }
  /* inventory pager */
  .att-pager { display:flex; align-items:center; justify-content:space-between; padding:11px 16px; border-top:1px solid var(--border-faint); font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
  .att-pgn { display:flex; gap:4px; }
  .att-pgb { min-width:26px; height:26px; padding:0 7px; border:1px solid var(--border); border-radius:var(--radius); background:transparent; color:var(--text-3); font-family:var(--font-mono); font-size:11px; cursor:pointer; }
  .att-pgb:hover:not(:disabled){ color:var(--text); border-color:var(--border-strong); background:var(--surface-2); transform:none; }
  .att-pgb.cur { background:var(--accent-dim); color:var(--accent-strong); border-color:rgba(201,168,124,.4); }
  .att-pgb:disabled { opacity:.35; cursor:default; }
  /* host dossier drawer */
  .asx-drawer { position:fixed; top:0; right:0; bottom:0; width:404px; max-width:92vw; z-index:130; background:var(--surface); border-left:1px solid var(--border-strong); box-shadow:-24px 0 70px rgba(0,0,0,.55); overflow-y:auto; transform:translateX(0); transition:transform .24s var(--ease); }
  .asx-drawer.hidden { display:block!important; transform:translateX(100%); pointer-events:none; }
  .asx-drawer h3 { font-family:var(--font-serif); font-size:1.2rem; }
  .asx-drawer .close-x.px { position:absolute; top:14px; right:16px; z-index:6; }

  /* attack-surface explorer */
  .asx-bar { display:flex; align-items:center; gap:16px; margin-bottom:14px; }
  .asx-title { font-family:var(--font-mono); font-size:15px; color:var(--text); }
  .asx-toggle { margin-left:auto; display:flex; border:1px solid var(--border); border-radius:100px; overflow:hidden; }
  .asx-toggle button { background:transparent; border:none; color:var(--text-3); padding:6px 16px; font-size:12px; cursor:pointer; font-family:var(--font-mono); letter-spacing:.06em; }
  .asx-toggle button.active { background:var(--accent); color:#0a0a0a; }
  .asx-stage { position:relative; height:calc(100vh - 150px); height:calc(100dvh - 150px); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden;
    background:
      radial-gradient(circle at 50% 44%, rgba(201,168,124,0.06), transparent 46%),
      linear-gradient(color-mix(in srgb,var(--text) 1.8%,transparent) 1px, transparent 1px) 0 0/34px 34px,
      linear-gradient(90deg, color-mix(in srgb,var(--text) 1.8%,transparent) 1px, transparent 1px) 0 0/34px 34px,
      var(--bg); }
  #asx-svg { width:100%; height:100%; display:block; cursor:grab; }
  #asx-svg.grabbing { cursor:grabbing; }
  #asx-svg text { font-family:var(--font-mono); pointer-events:none; user-select:none; }
  #asx-svg .lnk { fill:none; stroke:var(--border-strong); stroke-width:1; opacity:.16; }
  #asx-svg .lnk.faint { opacity:.12; stroke-dasharray:3 4; }
  #asx-svg .lnk.s-critical { stroke:var(--crit); opacity:.24; }
  #asx-svg .lnk.s-high { stroke:var(--high); opacity:.18; }
  #asx-svg .lnk.s-medium { stroke:var(--med); opacity:.13; }
  #asx-svg .lnk.s-low { stroke:var(--low); opacity:.10; }
  #asx-svg .band { fill:none; opacity:.045; }
  #asx-svg .orbit { fill:none; stroke-width:1; stroke-dasharray:2 6; opacity:.22; }
  #asx-svg .orbitlbl { font-size:9px; letter-spacing:.22em; text-transform:uppercase; font-weight:500; opacity:.9; paint-order:stroke; stroke:var(--bg); stroke-width:3.5px; }
  #asx-svg .node.clean-sum .node-dot { stroke:var(--border-strong); stroke-width:1.5; stroke-dasharray:2 2; cursor:pointer; }
  #asx-svg .node.clean-sum:hover .node-dot { stroke:var(--accent); }
  .asx-density { position:absolute; left:14px; top:14px; display:flex; border:1px solid var(--border); border-radius:100px; overflow:hidden; background:rgba(10,11,13,.72); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  .asx-density button { border:none; background:transparent; color:var(--text-3); font-family:var(--font-mono); font-size:11px; letter-spacing:.03em; padding:6px 13px; cursor:pointer; transition:.15s var(--ease); }
  .asx-density button:hover { color:var(--text); }
  .asx-density button.active { color:var(--accent-ink); background:rgba(201,168,124,0.1); }
  .asx-density button + button { border-left:1px solid var(--border-faint); }
  #asx-svg .node-dot { cursor:pointer; transition:stroke-width .12s, filter .12s; }
  #asx-svg .node-dot:hover { stroke:#fff; stroke-width:2; }
  #asx-svg .node.sel .node-dot { stroke:#fff; stroke-width:2.5; }
  #asx-svg .pulse { pointer-events:none; transform-box:fill-box; transform-origin:center; animation:asxPulse 2.6s ease-out infinite; }
  @keyframes asxPulse { 0%{ transform:scale(1); opacity:.5; } 70%{ transform:scale(2.6); opacity:0; } 100%{ opacity:0; } }
  /* map label tiers — readable at scale: a few labels by default, more on zoom / hover */
  #asx-svg .node text { display:none; paint-order:stroke; stroke:var(--bg); stroke-width:3px; stroke-linejoin:round; }
  #asx-svg .node[data-lbl="always"] text { display:block; }
  #asx-svg.zl2 .node[data-lbl="zoom2"] text { display:block; }
  #asx-svg.zl3 .node[data-lbl="zoom2"] text, #asx-svg.zl3 .node[data-lbl="zoom3"] text { display:block; }
  #asx-svg .node:hover text { display:block; }
  #asx-svg .node:hover .node-dot { stroke:#fff; stroke-width:2; }
  .asx-legend { position:absolute; left:14px; bottom:14px; display:flex; gap:14px; background:rgba(10,11,13,.72); border:1px solid var(--border); border-radius:100px; padding:7px 15px; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  .asx-legend span { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-3); font-family:var(--font-mono); text-transform:capitalize; }
  .asx-legend i { width:9px; height:9px; border-radius:50%; display:inline-block; }
  .asx-hint { position:absolute; right:16px; top:14px; font-size:11px; color:var(--text-4); font-family:var(--font-mono); }
  .asx-zoom { position:absolute; right:16px; bottom:14px; display:flex; flex-direction:column; background:rgba(10,11,13,.72); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  .asx-zoom button { height:32px; width:32px; padding:0; border:none; border-radius:0; background:transparent; color:var(--text-2); font-size:15px; font-weight:400; }
  .asx-zoom button:hover { background:color-mix(in srgb,var(--text) 7%,transparent); color:var(--accent-ink); transform:none; }
  .asx-zoom button + button { border-top:1px solid var(--border-faint); }
  .asx-panel { position:absolute; right:14px; top:14px; bottom:14px; width:340px; max-width:46%; background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg); padding:18px; overflow:auto; box-shadow:-14px 0 40px rgba(0,0,0,.4); }
  .asx-panel .px { position:absolute; right:12px; top:12px; }
  .asx-panel h3 { font-family:var(--font-mono); font-size:14px; color:var(--text); margin:0 34px 4px 0; word-break:break-all; }
  .asx-panel .p-sub { font-size:12px; color:var(--text-4); margin-bottom:14px; }
  .asx-panel .p-sec { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); margin:16px 0 8px; }
  .asx-panel .p-ep { font-family:var(--font-mono); font-size:11px; color:var(--text-3); padding:4px 0; border-bottom:1px solid var(--border-faint); word-break:break-all; }
  .asx-kpis { display:flex; gap:10px; }
  .asx-kpis > div { flex:1; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); padding:10px; text-align:center; }
  .asx-kpis b { display:block; font-family:var(--font-serif); font-size:1.4rem; color:var(--text); line-height:1; }
  .asx-kpis span { font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--text-4); }
  .asx-panel .p-empty { font-size:12px; color:var(--text-4); line-height:1.5; }
  .asx-panel .p-tech { display:flex; flex-wrap:wrap; gap:5px; }
  .asx-panel .p-findbtn { display:flex; align-items:center; gap:8px; width:100%; text-align:left; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); color:var(--text-2); font-family:var(--font-mono); font-size:12px; padding:10px 12px; cursor:pointer; transition:.15s var(--ease); }
  .asx-panel .p-findbtn:hover { border-color:var(--accent); color:var(--accent-ink); }
  .asx-panel .p-findbtn .arr { margin-left:auto; color:var(--accent-ink); }

  /* operator (AI chat) */
  .op-wrap { display:flex; flex-direction:column; height:calc(100vh - 80px); height:calc(100dvh - 80px); max-width:860px; margin:0 auto; padding:0 24px 12px; }
  .op-top { display:flex; align-items:center; justify-content:space-between; padding:20px 0 14px; }
  .op-msgs { flex:1 1 auto; overflow-y:auto; display:flex; flex-direction:column; gap:20px; padding:8px 0 20px; }
  .op-empty { margin:auto; text-align:center; color:var(--text-3); max-width:460px; }
  .op-empty .serif-title { font-size:1.5rem; margin-bottom:10px; }
  .op-suggest { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:20px; }
  .op-suggest button { background:var(--surface-2); border:1px solid var(--border); color:var(--text-2);
    border-radius:100px; padding:8px 14px; font-size:13px; cursor:pointer; }
  .op-suggest button:hover { border-color:var(--accent); color:var(--accent-ink); }
  .op-msg { display:flex; gap:13px; }
  .op-msg .av { flex:0 0 26px; width:26px; height:26px; border-radius:6px; display:flex; align-items:center;
    justify-content:center; font-family:var(--font-mono); font-size:10px; font-weight:600; margin-top:1px; }
  .op-msg.user .av { background:var(--surface-2); color:var(--text-2); border:1px solid var(--border); }
  .op-msg.assistant .av { background:rgba(201,168,124,0.12); color:var(--accent-ink); border:1px solid rgba(201,168,124,0.3); }
  .op-msg .body { min-width:0; flex:1; color:var(--text-1); font-size:14px; line-height:1.65; padding-top:2px; }
  .op-msg.user .body { color:var(--text); }
  .op-msg .body p { margin:0 0 10px; } .op-msg .body p:last-child { margin-bottom:0; }
  .op-msg .body pre { background:var(--ink); border:1px solid var(--border); border-radius:var(--radius);
    padding:12px 14px; overflow-x:auto; font-family:var(--font-mono); font-size:12px; margin:10px 0; }
  .op-msg .body code { font-family:var(--font-mono); font-size:12px; }
  .op-msg .body ul, .op-msg .body ol { margin:8px 0; padding-left:22px; } .op-msg .body li { margin:3px 0; }
  .op-msg .body h3 { font-size:15px; font-weight:600; color:var(--text); margin:16px 0 7px; line-height:1.3; }
  .op-msg .body h4 { font-size:13.5px; font-weight:600; color:var(--text); margin:13px 0 6px; line-height:1.3; }
  .op-msg .body h3:first-child, .op-msg .body h4:first-child { margin-top:0; }
  .op-msg .body a { color:var(--accent-ink); text-decoration:underline; text-underline-offset:2px; overflow-wrap:anywhere; }
  .op-msg .body i, .op-msg .body em { font-style:italic; }
  .op-msg .body strong, .op-msg .body b { font-weight:600; color:var(--text); }
  .op-msg.pending .body { color:var(--text-3); }
  /* --- GPT-style thinking / typing indicator --- */
  .op-msg.assistant:last-child { animation:opMsgIn .32s var(--ease) both; }
  @keyframes opMsgIn { from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
  .op-msg.pending .av { position:relative; animation:opAvPulse 1.6s ease-in-out infinite; }
  @keyframes opAvPulse { 0%,100%{ box-shadow:0 0 0 0 rgba(201,168,124,0.30); } 50%{ box-shadow:0 0 0 6px rgba(201,168,124,0); } }
  .op-typing { display:inline-flex; align-items:center; gap:9px; padding-top:2px; }
  .op-typing .dots { display:inline-flex; align-items:center; gap:5px; }
  .op-typing .dots i { width:6px; height:6px; border-radius:50%; background:var(--accent); opacity:.4; animation:opDot 1.25s infinite ease-in-out; }
  .op-typing .dots i:nth-child(2){ animation-delay:.16s; }
  .op-typing .dots i:nth-child(3){ animation-delay:.32s; }
  @keyframes opDot { 0%,80%,100%{ transform:translateY(0); opacity:.35; } 40%{ transform:translateY(-5px); opacity:1; } }
  .op-typing .lbl { font-family:var(--font-mono); font-size:11px; letter-spacing:.05em;
    background:linear-gradient(90deg,var(--text-4) 0%,var(--accent-strong) 50%,var(--text-4) 100%); background-size:200% 100%;
    -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent;
    animation:opShimmer 1.8s linear infinite; }
  @keyframes opShimmer { 0%{ background-position:200% 0; } 100%{ background-position:-200% 0; } }
  .op-inbar { flex:0 0 auto; display:flex; gap:10px; align-items:flex-end; padding:12px; margin-bottom:18px;
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); }
  .op-inbar textarea { flex:1; background:transparent; border:none; color:var(--text); font-family:inherit;
    font-size:14px; resize:none; max-height:200px; margin:0; padding:6px 4px; line-height:1.5; }
  .op-inbar textarea:focus { outline:none; }
  .op-inbar button { background:var(--accent); color:#0a0a0a; border:none; border-radius:var(--radius);
    padding:9px 20px; font-weight:600; font-size:13px; cursor:pointer; flex:0 0 auto; }
  .op-inbar button:disabled { opacity:.5; cursor:default; }

  /* new scan */
  .ns-wrap { max-width:720px; margin:8px auto 0; }
  /* scan-type chooser */
  .ns-chooser { max-width:560px; margin:14px auto 0; display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
  .ns-typecard { position:relative; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl);
    padding:20px 18px 18px; cursor:pointer; transition:transform .16s var(--ease), border-color .16s var(--ease), box-shadow .16s var(--ease);
    display:flex; flex-direction:column; gap:9px; min-height:170px; box-shadow:var(--hair-top); }
  .ns-typecard:hover { transform:translateY(-3px); border-color:var(--accent); box-shadow:var(--shadow-2); }
  .ns-typecard.active { border-color:var(--accent); }
  .ns-typecard.active::after { content:""; position:absolute; inset:0; border-radius:var(--radius-xl); box-shadow:inset 0 0 0 1px var(--accent-dim); pointer-events:none; }
  .ns-typecard.soon { opacity:.72; }
  .ns-tc-ic { width:40px; height:40px; border-radius:11px; background:var(--surface-2); border:1px solid var(--border-faint);
    display:flex; align-items:center; justify-content:center; color:var(--accent-ink); }
  .ns-tc-ic svg { width:21px; height:21px; }
  .ns-tc-name { font-family:var(--font-serif); font-size:18px; color:var(--text); display:flex; align-items:center; gap:8px; }
  .ns-tc-desc { font-size:13px; color:var(--text-3); line-height:1.5; margin-top:auto; }
  .ns-soon { font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--med);
    border:1px solid rgba(203,178,106,.4); border-radius:999px; padding:1px 6px; }
  .ns-back { background:transparent; border:none; color:var(--text-3); font-size:13px; height:auto; padding:0; margin:0 0 14px; cursor:pointer; }
  .ns-back:hover { color:var(--accent-ink); transform:none; background:transparent; }
  .ns-scope { background:var(--surface-2); border:1px solid var(--border-faint); border-radius:var(--radius); padding:10px 12px; margin-bottom:8px; }
  .ns-hint { font-size:12px; margin:6px 0 0; }
  .opt { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; color:var(--text-4); text-transform:uppercase; border:1px solid var(--border); border-radius:100px; padding:2px 7px; margin-left:6px; }
  .ns-tiers { display:flex; flex-direction:column; gap:8px; }
  .ns-tier { border:1px solid var(--border); border-radius:var(--radius-lg); padding:13px 15px; cursor:pointer; transition:.15s var(--ease); }
  .ns-tier:hover { border-color:var(--border-strong); }
  .ns-tier.active { border-color:var(--accent); background:rgba(201,168,124,0.06); }
  .ns-tier .t-name { color:var(--text); font-size:14px; font-weight:500; margin-bottom:3px; }
  .ns-tier.active .t-name { color:var(--accent-ink); }
  .ns-tier .t-desc { font-size:12px; color:var(--text-3); }
  .t-tag { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-ink); border:1px solid rgba(201,168,124,0.35); border-radius:100px; padding:1px 6px; margin-left:6px; }
  .ns-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
  .ns-chips button { background:var(--surface-2); border:1px solid var(--border); color:var(--text-2);
    border-radius:100px; padding:6px 12px; font-size:12px; cursor:pointer; transition:.15s; }
  .ns-chips button:hover { border-color:var(--accent); color:var(--accent-ink); }
  .ns-pills { display:flex; flex-direction:column; gap:7px; }
  .ns-pill { border:1px solid var(--border); border-radius:var(--radius); padding:10px 13px; cursor:pointer; display:flex; align-items:baseline; gap:8px; transition:.15s var(--ease); }
  .ns-pill:hover { border-color:var(--border-strong); }
  .ns-pill.active { border-color:var(--accent); background:rgba(201,168,124,0.06); }
  .ns-pill b { color:var(--text); font-size:13px; font-weight:500; } .ns-pill.active b { color:var(--accent-ink); }
  .ns-pill span { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-left:auto; }
  .ns-launch { width:100%; background:var(--accent); color:#0a0a0a; border:none; border-radius:var(--radius-lg);
    padding:14px; font-weight:600; font-size:14px; cursor:pointer; margin-top:4px; letter-spacing:.01em; }
  .ns-launch:hover { background:var(--accent-strong); }
  /* API scan wizard */
  .apw-steps { display:flex; gap:8px; margin:10px 0 16px; flex-wrap:wrap; }
  .apw-step { display:flex; align-items:center; gap:7px; font-size:12px; color:var(--text-4); }
  .apw-step .n { width:20px; height:20px; border-radius:50%; border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-family:var(--font-mono); font-size:10px; }
  .apw-step.done { color:var(--text-2); } .apw-step.done .n { border-color:var(--accent); color:var(--accent-ink); }
  .apw-step.cur { color:var(--text); } .apw-step.cur .n { background:var(--accent); border-color:var(--accent); color:#0a0a0a; }
  .apw-step .sep { width:14px; height:1px; background:var(--border); }
  .apw-nav { display:flex; justify-content:space-between; gap:10px; margin-top:14px; }
  .apw-textarea, .apw-input { width:100%; padding:9px 11px; border-radius:var(--radius); border:1px solid var(--border); background:var(--bg-2); color:var(--text); font-size:13px; font-family:inherit; }
  /* pin inputs AND selects to one height so a <select> and an <input> in the same row match
     (native select metrics render taller than an input otherwise, esp. on Safari) */
  .apw-input { height:40px; box-sizing:border-box; line-height:1.2; }
  select.apw-input { padding-right:32px; }
  .apw-textarea { min-height:90px; font-family:var(--font-mono); font-size:12px; }
  .apw-oprow { display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid var(--border); border-radius:var(--radius); margin-bottom:6px; cursor:pointer; }
  .apw-oprow:hover { border-color:var(--border-strong); }
  .apw-oprow.excl { opacity:.5; }
  .apw-meth { font-family:var(--font-mono); font-size:10px; font-weight:700; padding:2px 7px; border-radius:5px; min-width:52px; text-align:center; }
  .apw-meth.GET{ background:rgba(96,165,120,.16); color:var(--ok); } .apw-meth.POST{ background:rgba(201,168,124,.16); color:var(--accent-ink); }
  .apw-meth.PUT,.apw-meth.PATCH{ background:rgba(224,168,96,.16); color:var(--med); } .apw-meth.DELETE{ background:rgba(224,108,96,.16); color:var(--crit); }
  .apw-oppath { font-family:var(--font-mono); font-size:12px; color:var(--text-2); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .apw-opbadge { font-size:10px; color:var(--text-4); font-family:var(--font-mono); }
  .apw-rolerow { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
  /* API auth wizard — identity cards (premium) */
  .apw-idhint { display:flex; gap:11px; align-items:flex-start; padding:11px 13px; border:1px solid var(--border); border-left:2px solid var(--accent-strong); border-radius:var(--radius); background:var(--accent-dim); margin:2px 0 12px; }
  .apw-idhint svg { width:17px; height:17px; color:var(--accent-strong); flex:0 0 auto; margin-top:1px; }
  .apw-idhint .t { font-size:13px; color:var(--text-2); line-height:1.55; }
  .apw-idhint b { color:var(--text); font-weight:600; }
  .apw-xacct { display:flex; align-items:center; gap:9px; margin:0 0 14px; padding:0 2px; font-size:12px; font-family:var(--font-mono); letter-spacing:.01em; }
  .apw-xacct .dot { width:7px; height:7px; border-radius:50%; background:var(--text-4); box-shadow:0 0 0 3px rgba(255,255,255,.03); flex:0 0 auto; }
  .apw-xacct .lbl { color:var(--text-4); }
  .apw-xacct.armed .dot { background:var(--ok); box-shadow:0 0 0 3px rgba(96,165,120,.14); }
  .apw-xacct.armed .lbl { color:var(--text-2); }
  .apw-idcard { display:flex; gap:13px; border:1px solid var(--border); border-radius:var(--radius-lg); padding:13px 14px; margin-bottom:10px; background:var(--surface); box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .16s var(--ease); }
  .apw-idcard:hover { border-color:var(--border-strong); }
  .apw-idcard.ok { border-color:rgba(96,165,120,.38); }
  .apw-idcard.bad { border-color:rgba(224,108,96,.36); }
  .apw-idav { position:relative; flex:0 0 auto; width:40px; height:40px; border-radius:11px; display:grid; place-items:center; background:var(--accent-dim); border:1px solid rgba(201,168,124,.34); color:var(--accent-strong); font-family:var(--font-mono); font-weight:700; font-size:15px; text-transform:uppercase; }
  .apw-idav .st { position:absolute; right:-3px; bottom:-3px; width:12px; height:12px; border-radius:50%; border:2px solid var(--surface); background:var(--text-4); }
  .apw-idav .st.ok { background:var(--ok); } .apw-idav .st.bad { background:var(--crit); }
  .apw-idav .st.testing { background:var(--med); animation:apwPulse 1s infinite; }
  @keyframes apwPulse { 0%,100%{opacity:1} 50%{opacity:.35} }
  .apw-idbody { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:9px; }
  .apw-idtop { display:flex; align-items:center; gap:8px; }
  .apw-idname { flex:0 1 168px; min-width:80px; width:auto; background:transparent; border:none; border-bottom:1px solid var(--border); border-radius:0; padding:4px 2px; font-size:14px; font-weight:600; color:var(--text); }
  .apw-idname:focus { outline:none; border-bottom-color:var(--accent-strong); }
  .apw-idtop .sp { flex:1 1 auto; }
  .apw-seg2 { display:inline-flex; padding:2px; gap:2px; border:1px solid var(--border); border-radius:8px; background:var(--bg-2); flex:0 0 auto; }
  .apw-seg2 button { padding:5px 13px; height:auto; font-size:12px; font-weight:600; background:transparent; color:var(--text-3); border:none; border-radius:6px; cursor:pointer; font-family:inherit; transition:.14s var(--ease); }
  .apw-seg2 button:hover { background:color-mix(in srgb,var(--text) 5%,transparent); color:var(--text-2); }
  .apw-seg2 button.on, .apw-seg2 button.on:hover { background:var(--accent-strong); color:#1a140c; }
  .apw-imini { height:auto; padding:6px 12px; font-size:11px; font-weight:600; border-radius:7px; background:var(--accent-dim); color:var(--accent-strong); border:1px solid rgba(201,168,124,.3); transition:.14s var(--ease); flex:0 0 auto; }
  .apw-imini:hover { background:rgba(201,168,124,.2); border-color:rgba(201,168,124,.5); color:var(--accent-strong); }
  .apw-ix { height:auto; width:30px; padding:0; font-size:13px; line-height:1; color:var(--text-4); background:transparent; border:1px solid var(--border); border-radius:7px; flex:0 0 auto; transition:.14s var(--ease); }
  .apw-ix:hover { color:var(--crit); border-color:rgba(224,108,96,.4); background:rgba(224,108,96,.08); }
  .apw-cred { display:flex; gap:8px; }
  .apw-cred .apw-input { flex:1; }
  .apw-idfoot { display:flex; align-items:center; gap:12px; }
  .apw-owns { flex:1 1 auto; display:flex; align-items:center; gap:7px; min-width:0; padding:0 2px; }
  .apw-owns svg { width:12px; height:12px; color:var(--text-4); flex:0 0 auto; }
  .apw-owns input { flex:1; width:auto; min-width:0; height:auto; background:transparent; border:none; color:var(--text-3); font-size:12px; padding:2px 0; }
  .apw-owns input:focus { outline:none; color:var(--text-2); }
  .apw-owns input::placeholder { color:var(--text-4); }
  .apw-tres { display:inline-flex; align-items:center; gap:6px; align-self:flex-start; padding:4px 11px; border-radius:100px; font-size:11px; font-family:var(--font-mono); }
  .apw-tres.ok { color:var(--ok); background:rgba(96,165,120,.12); border:1px solid rgba(96,165,120,.3); }
  .apw-tres.bad { color:var(--crit); background:rgba(224,108,96,.1); border:1px solid rgba(224,108,96,.3); }
  .apw-tres.testing { color:var(--med); background:rgba(224,168,96,.1); border:1px solid rgba(224,168,96,.3); }
  .apw-addid { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; height:auto; padding:11px; border:1px dashed var(--border-strong); border-radius:var(--radius-lg); background:transparent; color:var(--text-3); font-size:13px; font-weight:600; cursor:pointer; transition:.15s var(--ease); }
  .apw-addid:hover { border-color:var(--accent-strong); color:var(--accent-strong); background:var(--accent-dim); }
  .apw-addid svg { width:15px; height:15px; }
  .apw-idfields { display:flex; gap:8px; }
  .apw-idfields .apw-input { flex:1; }
  .apw-loginrecipe { border:1px solid var(--border); border-left:2px solid var(--accent-strong); border-radius:var(--radius-lg); padding:13px 14px; margin-top:14px; background:var(--accent-dim); }
  /* API wizard — target step */
  .apw-sub { font-size:13px; color:var(--text-3); margin:0 0 16px; line-height:1.55; max-width:62ch; }
  .apw-fgrid { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px; }
  @media(max-width:640px){ .apw-fgrid { grid-template-columns:1fr; } }
  .apw-field { display:flex; flex-direction:column; gap:7px; min-width:0; }
  .apw-flabel { display:flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.14em; color:var(--text-4); }
  .apw-flabel svg { width:14px; height:14px; color:var(--accent-strong); flex:0 0 auto; }
  .apw-mono { font-family:var(--font-mono); font-size:13px; }
  .apw-scope { display:flex; align-items:center; gap:9px; padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg-2); margin-bottom:14px; overflow:hidden; }
  .apw-scope:empty { display:none; }
  .apw-scope-ic { width:17px; height:17px; border-radius:50%; display:grid; place-items:center; font-size:10px; font-weight:700; flex:0 0 auto; background:color-mix(in srgb,var(--text) 5%,transparent); color:var(--text-3); }
  .apw-scope-lbl { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--text-4); flex:0 0 auto; }
  .apw-scope code { color:var(--text); font-family:var(--font-mono); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
  .apw-scope.ok { border-color:rgba(96,165,120,.34); background:rgba(96,165,120,.05); }
  .apw-scope.ok .apw-scope-ic { background:rgba(96,165,120,.16); color:var(--ok); }
  .apw-scope.warn { border-color:rgba(224,168,96,.42); background:rgba(224,168,96,.05); }
  .apw-scope.warn .apw-scope-ic { background:rgba(224,168,96,.18); color:var(--med); }
  .apw-scope.warn .apw-scope-lbl { color:var(--med); }
  /* API wizard — spec step */
  .apw-drop { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; padding:26px 16px; border:1.5px dashed var(--border-strong); border-radius:var(--radius-lg); background:color-mix(in srgb,var(--text) 1.2%,transparent); cursor:pointer; transition:.16s var(--ease); text-align:center; }
  .apw-drop:hover { border-color:var(--accent-strong); background:var(--accent-dim); }
  .apw-drop-ic { width:38px; height:38px; border-radius:11px; display:grid; place-items:center; background:var(--accent-dim); border:1px solid rgba(201,168,124,.3); color:var(--accent-strong); margin-bottom:3px; }
  .apw-drop-ic svg { width:19px; height:19px; }
  .apw-drop-t { font-size:13px; font-weight:600; color:var(--text-2); }
  .apw-drop-s { font-family:var(--font-mono); font-size:11px; letter-spacing:.04em; color:var(--text-4); }
  .apw-or { display:flex; align-items:center; gap:12px; margin:14px 0; color:var(--text-4); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; }
  .apw-or::before, .apw-or::after { content:''; flex:1; height:1px; background:var(--border); }
  .apw-specta { min-height:120px; font-family:var(--font-mono); font-size:12px; margin-top:7px; }
  .apw-loaded { display:flex; align-items:center; gap:12px; padding:13px 14px; border:1px solid rgba(96,165,120,.34); border-radius:var(--radius-lg); background:rgba(96,165,120,.05); }
  .apw-loaded-ic { width:38px; height:38px; border-radius:11px; display:grid; place-items:center; background:rgba(96,165,120,.14); color:var(--ok); flex:0 0 auto; }
  .apw-loaded-ic svg { width:19px; height:19px; }
  .apw-loaded-body { flex:1 1 auto; min-width:0; }
  .apw-loaded-name { font-size:14px; font-weight:600; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .apw-loaded-sub { font-size:11px; color:var(--ok); font-family:var(--font-mono); margin-top:2px; }
  /* Audit log */
  .aud-list { display:flex; flex-direction:column; border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; background:var(--surface); box-shadow:var(--shadow-1), var(--hair-top); }
  .aud-row { display:flex; align-items:center; gap:14px; padding:12px 16px; border-bottom:1px solid var(--border-faint); transition:background .14s var(--ease); }
  .aud-row:last-child { border-bottom:none; }
  .aud-row:hover { background:color-mix(in srgb,var(--text) 2%,transparent); }
  .aud-actor { flex:0 0 auto; min-width:66px; text-align:center; font-family:var(--font-mono); font-size:10px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; padding:3px 9px; border-radius:6px; border:1px solid transparent; }
  .aud-actor.eng { color:var(--accent-strong); background:var(--accent-dim); border-color:rgba(201,168,124,.3); }
  .aud-actor.usr { color:var(--low); background:rgba(90,150,230,.1); border-color:rgba(90,150,230,.28); }
  .aud-actor.sys { color:var(--text-3); background:color-mix(in srgb,var(--text) 4%,transparent); border-color:var(--border); }
  .aud-main { flex:1 1 auto; min-width:0; }
  .aud-act { font-family:var(--font-mono); font-size:13px; color:var(--text); }
  .aud-det { font-size:12px; color:var(--text-3); margin-top:2px; font-family:var(--font-mono); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .aud-link { flex:0 0 auto; color:var(--text-4); font-size:13px; }
  .aud-row:hover .aud-link { color:var(--accent-strong); }
  .aud-time { flex:0 0 auto; font-family:var(--font-mono); font-size:11px; color:var(--text-4); min-width:56px; text-align:right; }
  /* Operator Console — member rows: fixed-width controls so role/actions align in columns
     across every row (a missing "Reset 2FA" left holes that shifted each row differently) */
  .oc-macts { display:flex; gap:7px; align-items:center; flex:0 0 auto; }
  .oc-macts select.oc-msel { width:104px; height:34px; margin:0; padding:0 26px 0 11px; font-size:12px; }
  .oc-macts .oc-mbtn { width:92px; height:34px; margin:0; padding:0; display:inline-flex; align-items:center; justify-content:center; font-size:12px; flex:0 0 auto; }
  .oc-macts .oc-mph { background:transparent; border:none; pointer-events:none; }
  @media(max-width:760px){ .oc-macts { flex-wrap:wrap; justify-content:flex-end; } }
  /* Org detail — Members: a real table (header + aligned columns) instead of a flex
     row per member, so email/status/2FA/role/actions actually line up as columns. */
  .mtbl { border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; }
  .mtbl-row { display:grid; grid-template-columns:2fr 1fr 0.6fr 0.9fr auto; gap:12px; align-items:center;
    padding:12px 16px; border-bottom:1px solid var(--border-faint); }
  .mtbl-row:last-child { border-bottom:none; }
  .mtbl-row.mtbl-head { padding:9px 16px; font-family:var(--font-mono); font-size:11px; text-transform:uppercase;
    letter-spacing:.1em; color:var(--text-4); background:var(--surface-2); }
  .mtbl-c { min-width:0; font-size:13px; color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mtbl-email { color:var(--text); font-weight:500; }
  .mtbl-acts { display:flex; gap:7px; justify-content:flex-end; white-space:normal; }
  @media(max-width:720px){
    .mtbl-row { grid-template-columns:1fr; gap:6px; }
    .mtbl-row.mtbl-head { display:none; }
    .mtbl-c { white-space:normal; }
    .mtbl-acts { justify-content:flex-start; flex-wrap:wrap; }
  }
  .apw-radio { display:flex; align-items:flex-start; gap:9px; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius); margin-bottom:8px; cursor:pointer; }
  .apw-radio.on { border-color:var(--accent); background:rgba(201,168,124,.05); }
  /* keep the radio/checkbox fixed and let the text column take the rest and WRAP inside
     the box (min-width:0 defeats flexbox's default min-content floor that let long
     descriptions spill past the right border). */
  /* width:auto here is load-bearing — the global `input{width:100%}` reset (line ~74)
     otherwise makes the radio eat the whole flex row, collapsing the text column to 0
     so it wraps one char per line and spills outside the box. Force it explicitly with
     high specificity so no cascade/order surprise can bring width:100% back. */
  .apw-radio > input { flex:0 0 auto; width:auto; min-width:0; margin:0; }
  .apw-radio > div { flex:1 1 auto; min-width:0; }
  .apw-radio .rt { font-size:13px; color:var(--text); overflow-wrap:break-word; } .apw-radio .rd { font-size:12px; color:var(--text-3); margin-top:2px; overflow-wrap:break-word; }
  /* Settings — TOP tab bar + content. The app already has a LEFT nav, so the
     section nav sits on top as tabs (a second left rail would double up). */
  .set-wrap { max-width:840px; margin-top:6px; }
  .set-nav { display:flex; flex-direction:row; gap:2px; border-bottom:1px solid var(--border); margin-bottom:24px; overflow-x:auto; scrollbar-width:none; }
  .set-nav::-webkit-scrollbar { display:none; }
  .set-navitem { display:flex; align-items:center; gap:8px; padding:10px 14px 11px; color:var(--text-3); cursor:pointer; font-size:14px; white-space:nowrap; border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .14s var(--ease), border-color .14s var(--ease); }
  .set-navitem svg { width:15px; height:15px; color:var(--text-4); flex:0 0 auto; transition:color .14s var(--ease); }
  .set-navitem:hover { color:var(--text); }
  .set-navitem:hover svg { color:var(--text-2); }
  .set-navitem.on { color:var(--accent-strong); border-bottom-color:var(--accent); }
  .set-navitem.on svg { color:var(--accent-ink); }
  .set-sec { display:none; }
  .set-sec.on { display:block; animation:setFadeIn .22s var(--ease); }
  .set-sechead { margin:2px 0 16px; }
  .set-sechead h1 { font-family:var(--font-serif); font-size:22px; color:var(--text); margin:0; font-weight:500; }
  .set-sechead p { font-size:13px; color:var(--text-3); margin:5px 0 0; max-width:580px; line-height:1.5; }
  .set-idcard { display:flex; align-items:center; gap:14px; }
  .set-idav { width:46px; height:46px; border-radius:50%; background:var(--accent); color:#0a0a0a; display:flex; align-items:center; justify-content:center; font-size:19px; font-weight:600; flex:0 0 auto; }
  .set-idmeta .e { font-size:14px; color:var(--text); word-break:break-all; }
  .set-idmeta .r { font-size:11px; color:var(--text-3); font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.09em; margin-top:3px; }
  @keyframes setFadeIn { from{ opacity:0; transform:translateY(5px); } to{ opacity:1; transform:none; } }
  /* Recent sign-ins table */
  .lh-table { display:flex; flex-direction:column; }
  .lh-row { display:grid; grid-template-columns:22px 1fr auto auto; align-items:center; gap:12px; padding:9px 2px; border-top:1px solid var(--border-faint); font-size:13px; }
  .lh-row:first-child { border-top:none; }
  .lh-st { color:var(--ok); font-size:13px; text-align:center; }
  .lh-row.fail .lh-st { color:var(--crit); }
  .lh-row.fail { opacity:.72; }
  .lh-dev { color:var(--text); display:flex; align-items:center; gap:8px; min-width:0; }
  .lh-method { font-family:var(--font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-4); border:1px solid var(--border); border-radius:5px; padding:1px 6px; }
  .lh-ip { font-family:var(--font-mono); font-size:12px; color:var(--text-2); }
  .lh-when { font-size:12px; color:var(--text-3); white-space:nowrap; }
  @media(max-width:640px){ .lh-row{ grid-template-columns:20px 1fr; } .lh-ip,.lh-when{ grid-column:2; font-size:11px; } }
  /* Integrations gallery */
  .intg-cat { margin-bottom:26px; }
  .intg-cat-h { font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-4); margin:0 0 12px; }
  .intg-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(248px,1fr)); gap:14px; align-items:stretch; }
  .intg-card2 { position:relative; background:linear-gradient(180deg,rgba(255,255,255,0.022),rgba(255,255,255,0) 42%),var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--ovx-elev1); padding:18px; display:flex; flex-direction:column; gap:12px; transition:border-color .14s var(--ease); }
  .intg-card2:hover { border-color:var(--border-strong); }
  .intg-card2.on { border-color:rgba(201,168,124,.35); box-shadow:0 0 0 1px rgba(201,168,124,.12), var(--ovx-elev1); }
  #sd_status { display:inline-flex; align-items:center; flex-wrap:wrap; gap:8px; }
  @media(max-width:640px){ #sd_title{ font-size:1.2rem!important; } }
  .intg-card2-top { display:flex; align-items:center; gap:10px; }
  .intg-ic { width:40px; height:40px; border-radius:11px; background:var(--accent-dim); border:1px solid rgba(201,168,124,.22); display:flex; align-items:center; justify-content:center; color:var(--accent-strong); flex:0 0 auto; box-shadow:var(--ovx-hi); }
  .intg-ic svg { width:22px; height:22px; }
  .intg-name { font-size:14px; color:var(--text); font-weight:500; }
  .intg-cap { font-family:var(--font-mono); font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-4); margin-top:2px; }
  .intg-badge { font-family:var(--font-mono); font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); border:1px solid var(--border); border-radius:999px; padding:2px 8px; white-space:nowrap; }
  .intg-badge.ok { color:var(--ok); border-color:var(--ok); }
  .intg-desc { font-size:13px; color:var(--text-3); line-height:1.5; flex:1; }
  .intg-mform .flbl { margin-top:14px; }
  .intg-mform .flbl:first-child { margin-top:0; }
  .intg-mactions { display:flex; gap:9px; margin-top:20px; flex-wrap:wrap; }
  .intg-mresult { margin-top:12px; font-family:var(--font-mono); font-size:12px; min-height:16px; }
  .intg-testing { color:var(--text-3); }
  .intg-ok { color:var(--ok); }
  .intg-err { color:var(--crit); }
  .intg-form { border-top:1px solid var(--border-faint); padding-top:12px; margin-top:2px; }
  .intg-form.hidden { display:none; }
  .intg-form input { margin-bottom:4px; }
  .flbl { display:block; font-family:var(--font-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-3); margin:4px 0 6px; }

  /* attack path */
  .apimpact { background:rgba(224,108,96,0.09); border-left:2px solid var(--crit); padding:8px 12px; border-radius:0 var(--radius) var(--radius) 0; margin:0 0 12px; color:var(--text); font-size:13px; }
  .apath { margin:0; padding-left:20px; color:var(--text-2); }
  .apath li { margin:9px 0; font-size:14px; }
  .apath b { color:var(--high); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.1em; margin-right:8px; }
  /* interactive attack-path graph */
  .apgraph { display:flex; align-items:stretch; gap:0; overflow-x:auto; padding:4px 2px 12px; scrollbar-width:thin; }
  .apnode { position:relative; flex:0 0 auto; width:212px; background:var(--surface); border:1px solid var(--border);
    border-top:2px solid var(--pc); border-radius:var(--radius-lg); padding:12px 13px 14px; cursor:pointer; transition:transform .16s var(--ease), border-color .16s var(--ease), box-shadow .16s var(--ease); }
  .apnode:hover, .apnode:focus-visible { border-color:var(--pc); transform:translateY(-2px); box-shadow:var(--shadow-1); outline:none; }
  .apnode.impact { background:linear-gradient(180deg, rgba(224,108,96,0.09), var(--surface)); }
  .apn-top { display:flex; align-items:center; gap:8px; margin-bottom:9px; }
  .apn-idx { width:21px; height:21px; border-radius:6px; background:var(--pc); color:#0A0B0D; font-family:var(--font-mono);
    font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
  .apn-mitre { font-family:var(--font-mono); font-size:9px; letter-spacing:.02em; color:var(--pc); border:1px solid currentColor;
    border-radius:999px; padding:2px 7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .apn-stage { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.13em; color:var(--pc); margin-bottom:5px; }
  .apn-title { font-size:13px; color:var(--text); line-height:1.42; }
  .apn-detail { font-size:12px; color:var(--text-3); margin-top:0; line-height:1.55; max-height:0; overflow:hidden; opacity:0; transition:max-height .22s var(--ease), opacity .22s var(--ease), margin-top .22s var(--ease); }
  .apnode.open .apn-detail { max-height:240px; opacity:1; margin-top:9px; }
  .apn-arrow { flex:0 0 auto; align-self:center; color:var(--text-4); font-size:17px; padding:0 11px; user-select:none; }
  @media(max-width:760px){ .apgraph{ flex-direction:column; } .apnode{ width:100%; } .apn-arrow{ transform:rotate(90deg); padding:7px 0; } }
  /* MITRE ATT&CK coverage strip under the attack-path graph */
  .apmitre { margin-top:14px; padding-top:13px; border-top:1px solid var(--border); }
  .apmitre-h { font-family:var(--font-mono); font-size:10px; letter-spacing:0.13em; text-transform:uppercase; color:var(--pc,var(--accent)); margin-bottom:9px; }
  .apmitre-sub { color:var(--text-4); letter-spacing:0.02em; margin-left:6px; }
  .apmitre-chips { display:flex; flex-wrap:wrap; gap:7px; }
  .apmitre-chip { font-family:var(--font-mono); font-size:10px; letter-spacing:0.02em; color:var(--pc); text-decoration:none;
    border:1px solid currentColor; border-radius:999px; padding:4px 10px; white-space:nowrap; transition:background .15s var(--ease); }
  .apmitre-chip:hover { background:color-mix(in srgb, var(--pc) 14%, transparent); }

  /* finding retest / status controls */
  .fbar { display:flex; align-items:center; gap:8px; margin-top:14px; padding-top:12px; border-top:1px solid var(--border-faint); flex-wrap:wrap; }
  .fbar select { width:auto; margin:0; padding:6px 10px; font-size:12px; }
  .fbar .rt { background:color-mix(in srgb,var(--text) 4%,transparent); border:1px solid var(--border); color:var(--text-2); border-radius:var(--radius); padding:6px 13px; font-size:12px; cursor:pointer; }
  .fbar .rt:hover { border-color:var(--accent); color:var(--accent-ink); }
  .fbar .rtres { font-size:12px; font-family:var(--font-mono); }
  .fstat { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.12em; padding:2px 8px; border-radius:100px; border:1px solid var(--border); color:var(--text-3); }
  .fstat.fixed,.fstat.verified { color:var(--ok); border-color:rgba(127,176,138,.4); }
  .fstat.regressed { color:var(--crit); border-color:rgba(224,108,96,.4); }
  .newbadge { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; color:var(--accent-ink); border:1px solid rgba(201,168,124,.5); border-radius:100px; padding:1px 7px; }
  .diffbar { display:flex; gap:16px; align-items:center; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); padding:9px 14px; margin-bottom:12px; font-size:13px; }
  .diffbar .up { color:var(--accent-ink); font-family:var(--font-mono); } .diffbar .dn { color:var(--ok); font-family:var(--font-mono); }
  /* Verdict chips + exports bar + manual-review badge (proof surfacing) */
  .vchip { display:inline-flex; align-items:center; gap:5px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.04em; padding:2px 7px; border-radius:999px; border:1px solid transparent; white-space:nowrap; }
  .vchip .vchip-mv { font-size:9px; opacity:0.8; padding-left:5px; border-left:1px solid currentColor; }
  .vchip-exploited { color:var(--ok); border-color:rgba(111,191,139,0.5); background:rgba(111,191,139,0.08); }
  .vchip-potential { color:var(--med); border-color:rgba(203,178,106,0.5); background:rgba(203,178,106,0.07); }
  .vchip-fp { color:var(--text-3); border-color:var(--border); }
  .mrev-badge { display:inline-block; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.04em; padding:2px 6px; border-radius:999px; border:1px solid rgba(203,178,106,0.45); color:var(--med); }
  /* confidence signaling (research: binary solid=high vs hatched=uncertain) */
  .vchip-exploited { background:rgba(111,191,139,0.14); } /* solid = proven / high confidence */
  .vchip-potential { background:repeating-linear-gradient(45deg, rgba(203,178,106,0.14) 0 5px, rgba(203,178,106,0.02) 5px 10px); } /* hatched = unverified / low confidence */
  .mrev-badge { background:repeating-linear-gradient(45deg, rgba(203,178,106,0.14) 0 5px, rgba(203,178,106,0.02) 5px 10px); }
  .vchip-exploited::before { content:""; }
  .exportbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); padding:8px 12px; margin-bottom:12px; }
  .exportbar-lbl { font-family:var(--font-mono); font-size:10px; letter-spacing:0.12em; text-transform:uppercase; color:var(--text-4); margin-right:2px; }
  /* Findings-page action surface (deliverables brought up to nav level) */
  .fx-actions { margin:0 0 4px; display:flex; flex-direction:column; gap:6px; }
  .fx-actions:empty { display:none; }
  .fx-actions-hint { color:var(--text-3); font-size:13px; padding:6px 2px 2px; }
  .fx-actions-target { font-family:var(--font-mono); font-size:10px; letter-spacing:0.1em; text-transform:uppercase; color:var(--text-3); }
  #fx-attackpath { margin:0 0 8px; }
  #fx-attackpath:empty { display:none; }
  .fxap-bar { display:flex; align-items:center; gap:12px; width:100%; padding:12px 16px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); cursor:pointer; height:auto; box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .15s var(--ease); }
  .fxap-bar:hover { border-color:var(--border-strong); }
  .fxap-eyebrow { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; color:var(--accent-strong); flex:0 0 auto; }
  .fxap-sub { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:var(--text-4); }
  .fxap-show { margin-left:auto; font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--text-3); flex:0 0 auto; }
  .fxap-bar:hover .fxap-show { color:var(--accent-strong); }
  .fxap-collapse-row { display:flex; justify-content:center; padding:2px 0 0; }
  .fxap-collapse { height:auto; padding:6px 14px; margin-top:8px; background:var(--accent-dim); color:var(--accent-strong); border:1px solid rgba(201,168,124,.3); border-radius:7px; font-size:11px; font-weight:600; letter-spacing:.02em; }
  .fxap-collapse:hover { background:rgba(201,168,124,.2); border-color:rgba(201,168,124,.5); }
  /* Attack Path / Reports sidebar destinations */
  .ap-pick { appearance:none; -webkit-appearance:none; background:var(--surface-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A8F99' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 12px center; background-size:14px; color:var(--text); border:1px solid var(--border); border-radius:var(--radius-lg); padding:10px 36px 10px 14px; font-family:var(--font-mono); font-size:13px; max-width:340px; cursor:pointer; box-shadow:var(--shadow-1); transition:border-color .14s var(--ease); }
  .ap-pick:hover { border-color:var(--border-strong); }
  .ap-pick:focus { outline:none; border-color:var(--accent); }
  .ap-pick option { background:var(--surface); color:var(--text); }
  /* custom themed dropdown (Attack Path scan picker) */
  .apd { position:relative; width:100%; max-width:380px; }
  .apd-trigger { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; height:auto; padding:11px 14px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); color:var(--text); font-family:var(--font-mono); font-size:13px; font-weight:400; letter-spacing:.01em; cursor:pointer; box-shadow:var(--shadow-1); transition:border-color .14s var(--ease), background-color .14s var(--ease); }
  .apd-trigger:hover { border-color:var(--border-strong); background:var(--surface-3); transform:none; }
  .apd.open .apd-trigger { border-color:var(--accent); background:var(--surface-3); }
  .apd-cur { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; text-align:left; }
  .apd-cur .apd-eb { color:var(--text-4); margin-right:8px; }
  .apd-chev { width:15px; height:15px; color:var(--text-3); flex:0 0 auto; transition:transform .2s var(--ease), color .14s var(--ease); }
  .apd.open .apd-chev { transform:rotate(180deg); color:var(--accent-ink); }
  .apd-menu { position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:70; display:none; max-height:min(360px,60vh); overflow-y:auto; background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg); box-shadow:var(--shadow-pop); padding:5px; }
  .apd.open .apd-menu { display:block; animation:apdIn .15s var(--ease); }
  @keyframes apdIn { from{opacity:0; transform:translateY(-5px)} to{opacity:1; transform:none} }
  @media(prefers-reduced-motion:reduce){ .apd.open .apd-menu{ animation:none; } }
  .apd-item { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 12px; border-radius:var(--radius); font-family:var(--font-mono); font-size:12px; color:var(--text-2); cursor:pointer; transition:background .12s var(--ease), color .12s var(--ease); }
  .apd-item .apd-d { color:var(--text-4); font-size:11px; flex:0 0 auto; }
  .apd-item:hover { background:var(--surface-2); color:var(--text); }
  .apd-item.sel { color:var(--accent-strong); background:var(--accent-dim); }
  .apd-item.sel .apd-d { color:var(--accent-ink); }
  .apd-item .apd-nm { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .apd-empty { padding:10px 12px; font-family:var(--font-mono); font-size:12px; color:var(--text-4); }
  .apd-pt { width:240px; max-width:240px; flex:0 0 auto; }
  .apd-flt { width:auto; display:inline-flex; vertical-align:middle; }
  .apd-flt .apd-trigger { padding:8px 12px; font-size:11px; box-shadow:none; background:var(--surface); gap:9px; }
  .apd-flt .apd-eb { text-transform:uppercase; letter-spacing:.12em; font-size:9px; color:var(--text-4); }
  .apd-flt .apd-cur { text-transform:capitalize; }
  .apd-flt .apd-chev { width:13px; height:13px; }
  .apd-flt .apd-menu { min-width:160px; left:0; right:auto; }
  .apd-flt .apd-item { text-transform:capitalize; }
  .rep-row { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 14px; margin-bottom:10px; }
  .rep-row .exportbar { margin-bottom:0; }
  .rep-meta { min-width:200px; }
  .rep-target { font-size:14px; color:var(--text); font-weight:600; }
  .rep-sub { font-size:12px; color:var(--text-3); font-family:var(--font-mono); margin-top:3px; }
  .rep-st { text-transform:uppercase; letter-spacing:0.06em; }
  .flash-focus { outline:2px solid var(--accent); outline-offset:2px; border-radius:var(--radius); transition:outline-color .3s var(--ease); }
  .fwchip { display:inline-block; font-family:var(--font-mono); font-size:9px; letter-spacing:0.03em; padding:2px 6px; border-radius:999px; border:1px solid var(--border); color:var(--text-3); }
  .intg-card { border:1px solid var(--border); border-radius:var(--radius); padding:14px 16px; margin-bottom:12px; }
  .intg-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; font-family:var(--font-serif); font-size:15px; }
  .intg-on { font-family:var(--font-mono); font-size:10px; color:var(--ok); border:1px solid rgba(111,191,139,0.4); border-radius:999px; padding:1px 8px; }
  .intg-off { font-family:var(--font-mono); font-size:10px; color:var(--text-4); border:1px solid var(--border); border-radius:999px; padding:1px 8px; }
  .ca-tabs { display:flex; gap:6px; margin:4px 0 12px; }
  .ca-tabs button { font-family:var(--font-mono); font-size:11px; padding:6px 12px; border-radius:var(--radius); border:1px solid var(--border); background:transparent; color:var(--text-3); cursor:pointer; }
  .ca-tabs button.active { border-color:var(--accent); color:var(--accent-ink); background:var(--accent-soft,rgba(201,168,124,0.1)); }
  .ca-finding { border-bottom:1px solid var(--border); padding:12px 2px; }
  .ca-finding:last-child { border-bottom:none; }
  .ca-fh { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
  .ca-ftitle { font-weight:500; }
  .ca-loc { font-family:var(--font-mono); font-size:11px; color:var(--text-3); }
  .ca-eng { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:0.05em; color:var(--text-4); border:1px solid var(--border); border-radius:999px; padding:1px 7px; margin-left:auto; }
  .ca-desc { color:var(--text-2); font-size:14px; margin:8px 0 0; }
  .ca-code { background:var(--surface-2); border:1px solid var(--border); border-radius:6px; padding:9px 11px; font-family:var(--font-mono); font-size:12px; white-space:pre-wrap; word-break:break-word; overflow-x:auto; margin:8px 0 0; max-height:220px; }
  .ca-rem { margin-top:8px; font-size:13px; color:var(--text-2); border-left:3px solid var(--ok); padding-left:10px; }

  /* repeater */
  .rep-overlay { position:fixed; inset:0; z-index:120; background:rgba(0,0,0,.6); display:flex; align-items:center; justify-content:center; padding:24px; }
  .rep-panel { background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg); width:min(1240px,96vw); height:min(860px,93vh); display:flex; flex-direction:column; box-shadow:0 30px 80px rgba(0,0,0,.6); overflow:hidden; }
  .rep-head { display:flex; align-items:center; gap:12px; padding:14px 18px; border-bottom:1px solid var(--border); }
  .rep-sub { font-size:12px; color:var(--text-3); }
  /* multi-step evidence chain selector (only shown for a finding with >1 captured request) */
  .rep-stepbar { display:flex; align-items:center; gap:8px; padding:12px 18px 0; }
  .rep-stepsel { width:auto; min-width:140px; margin:0; height:auto; padding:6px 26px 6px 10px; font-size:12px; font-family:var(--font-mono); color:var(--accent-strong); }
  /* command bar */
  .rep-bar { display:flex; gap:8px; align-items:center; padding:12px 18px 10px; }
  .rep-method { width:112px; margin:0; flex:0 0 auto; font-family:var(--font-mono); font-size:12px; font-weight:600; letter-spacing:.04em; color:var(--accent-strong); }
  .rep-url { flex:1; margin:0; font-family:var(--font-mono); font-size:13px; }
  .rep-sendbtn { flex:0 0 auto; height:auto; padding:9px 20px; background:var(--accent-strong); color:#1a140c; font-weight:700; font-size:12px; letter-spacing:.03em; border:1px solid var(--accent-strong); border-radius:8px; white-space:nowrap; }
  .rep-sendbtn:hover { background:var(--accent); border-color:var(--accent); }
  .rep-sendbtn:disabled { opacity:.55; cursor:default; }
  /* action row */
  .rep-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:0 18px 12px; border-bottom:1px solid var(--border); }
  .rep-ua { display:flex; align-items:center; gap:7px; }
  .rep-actlbl { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.14em; color:var(--text-4); }
  .rep-uasel { width:auto; min-width:120px; margin:0; height:auto; padding:6px 26px 6px 10px; font-size:12px; }
  .rep-chip { height:auto; padding:6px 11px; background:var(--accent-dim); color:var(--accent-strong); border:1px solid rgba(201,168,124,.34); border-radius:7px; font-size:11px; font-weight:600; letter-spacing:.01em; white-space:nowrap; transition:.15s var(--ease); }
  .rep-chip:hover { background:rgba(201,168,124,.22); border-color:rgba(201,168,124,.5); color:var(--accent-strong); }
  .rep-chip.sm { padding:4px 9px; font-size:10px; }
  .rep-chip.on { background:var(--accent-strong); color:#1a140c; border-color:var(--accent-strong); }
  .rep-toggle { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-3); cursor:pointer; margin-left:auto; user-select:none; }
  .rep-toggle input { width:auto; margin:0; accent-color:var(--accent-strong); }
  /* body split */
  .rep-body { flex:1; display:grid; grid-template-columns:1fr 1fr; gap:0; min-height:0; }
  @media(max-width:820px){ .rep-body{ grid-template-columns:1fr; } }
  .rep-req { padding:14px 18px; display:flex; flex-direction:column; border-right:1px solid var(--border); min-height:0; overflow:hidden; }
  .rep-res { padding:14px 18px; display:flex; flex-direction:column; min-height:0; }
  .rep-panelh { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; color:var(--text-4); margin-bottom:10px; }
  .rep-ta { font-family:var(--font-mono); font-size:12px; line-height:1.55; resize:none; margin:0; }
  #rep_headers.rep-ta { flex:0 0 auto; height:34%; min-height:120px; margin-bottom:10px; }
  .rep-bodyta { flex:1 1 auto; min-height:80px; }
  .rep-req .flbl { margin-bottom:5px; }
  /* status pill + meta */
  .rep-statuspill { font-family:var(--font-mono); font-size:11px; font-weight:700; letter-spacing:.02em; padding:2px 9px; border-radius:100px; border:1px solid transparent; }
  .rep-statuspill.s2 { color:var(--ok); background:rgba(90,200,120,.12); border-color:rgba(90,200,120,.34); }
  .rep-statuspill.s3 { color:var(--low); background:rgba(90,150,230,.12); border-color:rgba(90,150,230,.34); }
  .rep-statuspill.s4 { color:var(--accent-strong); background:var(--accent-dim); border-color:rgba(201,168,124,.4); }
  .rep-statuspill.s5 { color:var(--crit); background:rgba(229,104,111,.12); border-color:rgba(229,104,111,.34); }
  .rep-statuspill.serr { color:var(--crit); background:rgba(229,104,111,.12); border-color:rgba(229,104,111,.34); }
  .rep-meta { font-family:var(--font-mono); font-size:11px; letter-spacing:0; text-transform:none; color:var(--text-3); }
  .rep-resact { margin-left:auto; display:flex; align-items:center; gap:6px; }
  .rep-search { width:150px; margin:0; height:auto; padding:5px 10px; font-size:11px; }
  .rep-out { flex:1; margin:0; overflow:auto; min-height:0; background:var(--ink); border:1px solid var(--border); border-radius:8px; padding:12px 14px; font-family:var(--font-mono); font-size:12px; line-height:1.55; color:var(--text-2); white-space:pre-wrap; word-break:break-word; }
  .rep-out mark.rep-hl { background:rgba(201,168,124,.42); color:var(--text); border-radius:2px; }
  /* history */
  .rep-hist { display:flex; align-items:center; gap:7px; padding:9px 18px; border-top:1px solid var(--border); overflow-x:auto; min-height:40px; }
  .rep-hist:empty::before { content:'History — sent requests appear here'; font-size:11px; color:var(--text-4); font-family:var(--font-mono); letter-spacing:.04em; }
  .rep-histchip { flex:0 0 auto; display:flex; align-items:center; gap:6px; padding:4px 10px; background:var(--surface-2,color-mix(in srgb,var(--text) 3%,transparent)); border:1px solid var(--border); border-radius:7px; font-family:var(--font-mono); font-size:11px; color:var(--text-3); cursor:pointer; transition:.15s var(--ease); }
  .rep-histchip:hover { border-color:var(--border-strong); color:var(--text); }
  .rep-histchip.active { border-color:var(--accent-strong); background:var(--accent-dim); }
  .rep-histchip .hc-code { font-weight:700; }
  .rep-histchip .hc-code.s2 { color:var(--ok); } .rep-histchip .hc-code.s3 { color:var(--low); }
  .rep-histchip .hc-code.s4 { color:var(--accent-strong); } .rep-histchip .hc-code.s5,.rep-histchip .hc-code.serr { color:var(--crit); }
  /* ===== Re-test modal (animated) ===== */
  .rt-overlay { position:fixed; inset:0; z-index:130; background:rgba(4,6,10,.66); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
    display:flex; align-items:center; justify-content:center; padding:24px; animation:rtFade .18s var(--ease); }
  .rt-overlay.hidden { display:none; }
  .rt-panel { background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg);
    width:min(1100px,96vw); max-height:92vh; display:flex; flex-direction:column; overflow:hidden;
    box-shadow:0 30px 90px rgba(0,0,0,.6); animation:rtPop .22s var(--ease); }
  @keyframes rtFade { from{opacity:0} to{opacity:1} }
  @keyframes rtPop { from{opacity:0; transform:translateY(10px) scale(.985)} to{opacity:1; transform:none} }
  .rt-head { display:flex; align-items:center; gap:14px; padding:15px 18px; border-bottom:1px solid var(--border); }
  .rt-head-l { display:flex; align-items:baseline; gap:12px; min-width:0; }
  .rt-eyebrow { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; color:var(--accent-ink); flex:0 0 auto; }
  .rt-title { font-size:14px; color:var(--text); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rt-head-r { margin-left:auto; display:flex; align-items:center; gap:14px; flex:0 0 auto; }
  .rt-timer { font-family:var(--font-mono); font-size:12px; color:var(--text-3); min-width:42px; text-align:right; }
  .rt-stepper { display:flex; align-items:center; padding:15px 24px; border-bottom:1px solid var(--border); background:color-mix(in srgb,var(--text) 1.2%,transparent); }
  .rt-step { display:flex; align-items:center; gap:9px; flex:0 0 auto; }
  .rt-dot { width:24px; height:24px; border-radius:50%; display:grid; place-items:center; font-family:var(--font-mono); font-size:11px; font-weight:600;
    border:1.5px solid var(--border-strong); color:var(--text-4); background:var(--surface); transition:.3s var(--ease); }
  .rt-lbl { font-size:12px; color:var(--text-4); transition:.3s var(--ease); white-space:nowrap; }
  .rt-conn { flex:1 1 auto; height:1.5px; min-width:22px; margin:0 12px; background:var(--border); position:relative; overflow:hidden; }
  .rt-conn::after { content:''; position:absolute; inset:0; width:0; background:var(--accent); transition:width .5s var(--ease); }
  .rt-conn.fill::after { width:100%; }
  .rt-step.rt-active .rt-dot { border-color:var(--accent); color:var(--accent-ink); animation:rtPulse 1.1s var(--ease) infinite; }
  .rt-step.rt-active .rt-lbl { color:var(--text); }
  .rt-step.rt-done .rt-dot { border-color:var(--ok); color:var(--ok); background:color-mix(in srgb, var(--ok) 12%, transparent); }
  .rt-step.rt-done .rt-lbl { color:var(--text-2); }
  .rt-step.rt-fail .rt-dot { border-color:var(--crit); color:var(--crit); }
  .rt-step.rt-fail .rt-lbl { color:var(--crit); }
  @keyframes rtPulse { 0%,100%{ box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);} 50%{ box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 3%,transparent);} }
  .rt-body { display:grid; grid-template-columns:1fr 1fr; min-height:0; flex:1 1 auto; overflow:hidden; }
  @media(max-width:820px){ .rt-body{ grid-template-columns:1fr; } }
  .rt-col { display:flex; flex-direction:column; min-height:0; min-width:0; padding:16px 18px; }
  .rt-col:first-child { border-right:1px solid var(--border); }
  .rt-col .hb, .rt-col .httpblock { min-width:0; max-width:100%; }
  .rt-col-h { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:10px;
    font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.14em; color:var(--accent-ink); }
  .rt-col-h .rt-meta { color:var(--text-4); letter-spacing:.03em; text-transform:none; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rt-scroll { overflow:auto; min-height:130px; flex:1 1 auto; }
  .rt-scroll.rt-sending { position:relative; }
  .rt-scroll.rt-sending::before { content:''; position:absolute; left:0; right:0; top:0; height:2px; z-index:2;
    background:linear-gradient(90deg,transparent,var(--accent),transparent); animation:rtBeam 1.15s linear infinite; }
  @keyframes rtBeam { 0%{ transform:translateX(-100%);} 100%{ transform:translateX(100%);} }
  .rt-in { animation:rtSlideIn .35s var(--ease); }
  @keyframes rtSlideIn { from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }
  .rt-waiting { display:flex; align-items:center; gap:10px; color:var(--text-3); font-size:13px; padding:16px 2px; }
  .rt-waiting.err { color:var(--crit); }
  .rt-spin { width:16px; height:16px; border:2px solid var(--border-strong); border-top-color:var(--accent); border-radius:50%; animation:rtSpin .8s linear infinite; flex:0 0 auto; }
  @keyframes rtSpin { to{ transform:rotate(360deg);} }
  .rt-step-blk { margin-bottom:12px; }
  .rt-step-blk:last-child { margin-bottom:0; }
  .rt-step-lbl { font-family:var(--font-mono); font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.14em; color:var(--accent-ink); margin-bottom:6px; opacity:.85; }
  /* Scan-requests settings */
  .scanreq-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px 18px; }
  @media(max-width:700px){ .scanreq-grid{ grid-template-columns:1fr; } }
  .scanreq-hrow { display:flex; gap:8px; margin-bottom:8px; align-items:center; }
  .scanreq-hrow .hk { flex:0 0 34%; margin:0; font-family:var(--font-mono); font-size:13px; }
  .scanreq-hrow .hv { flex:1; margin:0; font-family:var(--font-mono); font-size:13px; }
  .scanreq-hx { flex:0 0 auto; width:30px; height:30px; border:1px solid var(--border); border-radius:var(--radius); background:transparent; color:var(--text-3); cursor:pointer; font-size:17px; line-height:1; transition:.15s var(--ease); }
  .scanreq-hx:hover { color:var(--crit); border-color:var(--crit); }
  .rt-verdict { max-height:0; opacity:0; overflow:hidden; transition:.35s var(--ease); }
  .rt-verdict.show { max-height:280px; opacity:1; padding:16px 20px; display:flex; align-items:center; gap:16px; border-top:1px solid var(--border); }
  .rt-verdict.ok { background:color-mix(in srgb,var(--ok) 8%,transparent); }
  .rt-verdict.crit { background:color-mix(in srgb,var(--crit) 8%,transparent); }
  .rt-verdict.warn { background:color-mix(in srgb,var(--med) 9%,transparent); }
  .rt-vic { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; font-size:19px; font-weight:700; flex:0 0 auto; animation:rtStamp .42s var(--ease); }
  .rt-verdict.ok .rt-vic { color:var(--ok); border:2px solid var(--ok); }
  .rt-verdict.crit .rt-vic { color:var(--crit); border:2px solid var(--crit); }
  .rt-verdict.warn .rt-vic { color:var(--med); border:2px solid var(--med); }
  @keyframes rtStamp { 0%{ transform:scale(.4); opacity:0;} 60%{ transform:scale(1.12);} 100%{ transform:scale(1); opacity:1;} }
  .rt-vtx { flex:1 1 auto; min-width:0; }
  .rt-vhead { font-size:14px; font-weight:600; color:var(--text); }
  .rt-vexp { font-size:13px; color:var(--text-2); line-height:1.5; margin-top:3px; }
  .rt-vact { flex:0 0 auto; }
  .main { flex:1; min-width:0; }
  .topbar { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; padding:10px 0 20px; }
  .topbar .serif-title { font-size:1.7rem; }
  .view { padding:24px 44px 64px; max-width:1600px; margin:0 auto; }
  /* ---- desktop top app bar ---- */
  .appbar { position:sticky; top:0; z-index:65; background:color-mix(in srgb, var(--bg) 84%, transparent); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-bottom:1px solid var(--border); }
  .appbar-in { max-width:1600px; margin:0 auto; height:80px; padding:0 44px; display:flex; align-items:center; gap:18px; }
  .ab-search { display:flex; align-items:center; gap:10px; height:38px; min-width:280px; max-width:420px; flex:0 1 420px; padding:0 14px; background:var(--surface); border:1px solid var(--border); border-radius:100px; color:var(--text-3); font-family:var(--font-body); font-size:13px; cursor:text; transition:border-color .16s var(--ease), color .16s var(--ease); }
  .ab-search:hover { background:var(--surface); border-color:var(--border-strong); color:var(--text-2); transform:none; }
  .ab-search svg { width:16px; height:16px; flex:0 0 auto; }
  .ab-search span { flex:1 1 auto; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ab-search kbd { font-family:var(--font-mono); font-size:10px; color:var(--text-4); border:1px solid var(--border); border-radius:5px; padding:2px 6px; background:var(--bg); }
  .ab-right { margin-left:auto; display:flex; align-items:center; gap:14px; }
  .ab-link { font-family:var(--font-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); text-decoration:none; transition:color .16s var(--ease); }
  .ab-link:hover { color:var(--accent-strong); }
  .ab-new { display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 16px; white-space:nowrap; flex:none; border:1px solid transparent; border-radius:100px; background:var(--accent); color:#0A0B0D; font-family:var(--font-body); font-weight:600; font-size:13px; cursor:pointer; transition:filter .16s var(--ease); }
  .ab-new:hover { background:var(--accent); filter:brightness(1.08); transform:none; }
  .ab-new svg { width:16px; height:16px; }
  .ab-acct { position:relative; }
  .ab-acct-btn { display:inline-flex; align-items:center; gap:9px; height:44px; padding:3px 10px 3px 3px; background:transparent; border:1px solid transparent; border-radius:100px; color:var(--text); cursor:pointer; transition:background .16s var(--ease), border-color .16s var(--ease); }
  .ab-acct-btn:hover { background:var(--surface); border-color:var(--border); transform:none; }
  .ab-av { width:32px; height:32px; border-radius:50%; flex:0 0 auto; display:flex; align-items:center; justify-content:center; background:linear-gradient(150deg, var(--accent-strong), var(--accent)); color:#0A0B0D; font-family:var(--font-serif); font-weight:600; font-size:15px; line-height:1; }
  .ab-email { max-width:180px; font-size:13px; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ab-caret { width:15px; height:15px; color:var(--text-4); transition:transform .18s var(--ease); }
  .ab-acct.open .ab-caret { transform:rotate(180deg); }
  .ab-menu { position:absolute; top:calc(100% + 8px); right:0; min-width:232px; background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg); box-shadow:0 24px 60px rgba(0,0,0,.5); padding:7px; opacity:0; transform:translateY(-6px); pointer-events:none; transition:opacity .16s var(--ease), transform .16s var(--ease); z-index:90; }
  .ab-acct.open .ab-menu { opacity:1; transform:translateY(0); pointer-events:auto; }
  .ab-menu-head { padding:9px 11px 11px; border-bottom:1px solid var(--border); margin-bottom:6px; }
  .ab-menu-email { font-size:13px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ab-menu-role { font-family:var(--font-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-ink); margin-top:4px; }
  .ab-menu-item { display:block; width:100%; height:auto; text-align:left; padding:9px 11px; background:transparent; border:0; border-radius:var(--radius); color:var(--text-2); font-family:var(--font-body); font-weight:400; font-size:13px; cursor:pointer; }
  .ab-menu-item:hover { background:var(--bg); color:var(--text); transform:none; }
  .ab-menu-item.danger:hover { background:var(--bg); color:var(--crit); transform:none; }
  .ab-menu-sep { height:1px; background:var(--border); margin:6px 4px; }

  /* panels / cards */
  .panel { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); padding:24px; margin-bottom:20px; box-shadow:var(--shadow-1), var(--hair-top); }
  .panel h2 { font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:0.22em; color:var(--accent-ink); margin:0 0 16px; font-weight:400; }
  .row { display:flex; gap:20px; flex-wrap:wrap; }
  .col { flex:1; min-width:320px; }

  /* domain / list cards */
  .dcard { display:flex; align-items:center; justify-content:space-between; gap:14px;
    background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
    padding:17px 19px; margin-bottom:10px; box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .15s var(--ease), transform .15s var(--ease); }
  .dcard:hover { border-color:var(--border-strong); transform:translateY(-1px); }
  .dcard .fqdn { font-family:var(--font-mono); font-size:14px; color:var(--text); }
  .dcard .meta { font-size:12px; color:var(--text-4); margin-top:3px; }
  .dcard-del { width:32px; height:32px; padding:0; display:inline-flex; align-items:center; justify-content:center; background:transparent; border:1px solid var(--border); border-radius:var(--radius); color:var(--text-4); cursor:pointer; transition:.14s var(--ease); }
  .dcard-del svg { width:15px; height:15px; }
  .dcard-del:hover { color:var(--crit); border-color:rgba(224,108,96,.5); background:rgba(224,108,96,.08); }
  .dz-del { background:var(--crit); color:#fff; border:1px solid var(--crit); }
  .dz-del:hover { background:#c85a4f; color:#fff; }
  .dz-del:disabled { opacity:.6; cursor:default; }
  /* ── Manage assets table ── */
  .ma-stats { display:flex; gap:10px; flex-wrap:wrap; margin:2px 0 16px; }
  .ma-stat { display:flex; align-items:baseline; gap:9px; padding:10px 15px; border:1px solid var(--border-faint); border-radius:var(--radius-lg); background:var(--surface); }
  .ma-stat b { font-family:var(--font-serif); font-size:21px; line-height:1; color:var(--text); }
  .ma-stat span { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); }
  .ma-stat.ok b { color:var(--ok); } .ma-stat.warn b { color:var(--med); } .ma-stat.bad b { color:var(--crit); }
  .ma-toolbar { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
  .ma-search { position:relative; flex:1; max-width:340px; }
  .ma-search input { width:100%; height:38px; padding:0 12px 0 34px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); color:var(--text); font-family:var(--font-mono); font-size:12px; margin:0; }
  .ma-search input:focus { outline:none; border-color:var(--accent); }
  .ma-search svg { position:absolute; left:12px; top:11px; width:15px; height:15px; color:var(--text-4); pointer-events:none; }
  .ma-count { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-left:auto; }
  .ma-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
  .ma-table { min-width:760px; }
  .ma-head, .ma-row { display:grid; grid-template-columns:2.4fr 1fr 1.2fr .7fr .8fr 1fr 26px; gap:14px; align-items:center; padding:13px 18px; }
  .ma-head { font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); border-bottom:1px solid var(--border); background:var(--surface-2); }
  .ma-row { border-bottom:1px solid var(--border-faint); transition:background .14s var(--ease); }
  .ma-row:last-child { border-bottom:none; }
  .ma-row:hover { background:color-mix(in srgb,var(--text) 2%,transparent); }
  .ma-asset { display:flex; align-items:center; gap:12px; min-width:0; }
  .ma-globe { width:36px; height:36px; border-radius:9px; background:var(--surface-2); border:1px solid var(--border-faint); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); flex:0 0 auto; box-shadow:var(--ovx-hi); }
  .ma-globe svg { width:17px; height:17px; }
  .ma-idc { min-width:0; }
  .ma-fq { font-family:var(--font-mono); font-size:13px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; cursor:pointer; }
  .ma-fq:hover { color:var(--accent-strong); }
  .ma-sub2 { font-family:var(--font-mono); font-size:10px; color:var(--text-4); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .ma-cell { font-family:var(--font-mono); font-size:12px; color:var(--text-2); font-variant-numeric:tabular-nums; }
  .ma-cell.dim { color:var(--text-4); }
  .ma-verif { font-family:var(--font-mono); font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.04em; }
  .ma-acts { display:flex; gap:7px; justify-content:flex-end; }
  .ma-act { width:30px; height:30px; padding:0; display:inline-flex; align-items:center; justify-content:center; background:transparent; border:1px solid var(--border); border-radius:var(--radius); color:var(--text-3); cursor:pointer; transition:.14s var(--ease); }
  .ma-act svg { width:15px; height:15px; }
  .ma-act:hover { color:var(--text); border-color:var(--border-strong); background:color-mix(in srgb,var(--text) 5%,transparent); }
  .ma-act.scan:hover { color:var(--accent-strong); border-color:var(--accent); }
  .ma-act.del:hover { color:var(--crit); border-color:rgba(224,108,96,.5); background:rgba(224,108,96,.08); }
  .ma-empty { padding:40px 20px; text-align:center; font-family:var(--font-mono); font-size:12px; color:var(--text-4); }
  @media(max-width:720px){ .ma-search{ max-width:none; } }
  .ma-row.clk { cursor:pointer; }
  .ma-chev { color:var(--text-4); display:flex; justify-content:flex-end; }
  .ma-chev svg { width:16px; height:16px; }
  .ma-row.clk:hover .ma-chev { color:var(--accent-ink); }
  /* per-asset action popup */
  .aap-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--border-faint); border-top:1px solid var(--border-faint); border-bottom:1px solid var(--border-faint); }
  .aap-stat { background:var(--surface); padding:16px 20px; }
  .aap-stat b { font-family:var(--font-serif); font-size:23px; line-height:1; color:var(--text); display:block; }
  .aap-stat span { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); margin-top:7px; display:block; }
  .aap-acts { padding:18px 24px 22px; display:flex; flex-direction:column; gap:9px; }
  .aap-act { display:flex; align-items:center; gap:12px; width:100%; height:auto; padding:13px 16px; border-radius:var(--radius-lg); background:var(--surface-2); border:1px solid var(--border); color:var(--text-2); font-family:var(--font-mono); font-size:13px; font-weight:400; letter-spacing:.01em; cursor:pointer; transition:.14s var(--ease); justify-content:flex-start; }
  .aap-act svg { width:17px; height:17px; flex:0 0 auto; }
  .aap-act:hover { background:var(--surface-3); border-color:var(--border-strong); color:var(--text); transform:none; }
  .aap-act .aad { margin-left:auto; font-size:10px; color:var(--text-4); }
  .aap-act.primary { border-color:rgba(201,168,124,.4); color:var(--accent-strong); }
  .aap-act.primary:hover { background:var(--accent-dim); border-color:var(--accent); color:var(--accent-strong); }
  .aap-act.danger { color:var(--crit); border-color:rgba(224,108,96,.32); }
  .aap-act.danger:hover { background:rgba(224,108,96,.10); border-color:var(--crit); color:var(--crit); }
  /* ── Reports (premium report cards) ── */
  .rp-list { display:flex; flex-direction:column; gap:12px; }
  .rp-card { position:relative; background:linear-gradient(180deg,rgba(255,255,255,0.022),rgba(255,255,255,0) 42%),var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--ovx-elev1); padding:18px 20px; transition:border-color .14s var(--ease); }
  .rp-card:hover { border-color:var(--border-strong); }
  .rp-top { display:flex; align-items:center; gap:14px; }
  .rp-globe { width:38px; height:38px; border-radius:10px; background:var(--surface-2); border:1px solid var(--border-faint); display:flex; align-items:center; justify-content:center; color:var(--accent-ink); flex:0 0 auto; box-shadow:var(--ovx-hi); }
  .rp-globe svg { width:18px; height:18px; }
  .rp-id { min-width:0; flex:1; }
  .rp-target { font-family:var(--font-serif); font-size:16px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .rp-sub { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:3px; text-transform:uppercase; letter-spacing:.04em; }
  .rp-right { display:flex; align-items:center; gap:14px; flex:0 0 auto; }
  .rp-date { font-family:var(--font-mono); font-size:11px; color:var(--text-3); white-space:nowrap; }
  .rp-actbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:15px; padding-top:14px; border-top:1px solid var(--border-faint); }
  .rp-actlbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); }
  .rp-chip { display:inline-flex; align-items:center; gap:6px; height:31px; padding:0 13px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); color:var(--text-2); font-family:var(--font-mono); font-size:11px; font-weight:400; cursor:pointer; transition:.14s var(--ease); }
  .rp-chip:hover { border-color:var(--border-strong); color:var(--text); background:var(--surface-3); transform:none; }
  .rp-chip.pri { border-color:rgba(201,168,124,.35); color:var(--accent-strong); }
  .rp-chip.pri:hover { background:var(--accent-dim); border-color:var(--accent); color:var(--accent-strong); }
  .rp-sep { width:1px; height:20px; background:var(--border-faint); margin:0 6px; }
  .rp-notready { display:inline-flex; align-items:center; gap:8px; font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:15px; padding-top:14px; border-top:1px solid var(--border-faint); width:100%; }
  .rp-notready .dot { width:6px; height:6px; border-radius:50%; background:var(--med); box-shadow:0 0 8px -1px var(--med); }
  .rp-partial { font-family:var(--font-mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--med); }
  .rp-empty { padding:44px 20px; text-align:center; font-family:var(--font-mono); font-size:12px; color:var(--text-4); line-height:1.7; }

  .list-item { padding:12px 14px; border:1px solid var(--border); border-radius:var(--radius-lg);
    margin-bottom:8px; background:var(--surface-2); cursor:pointer; transition:border-color .18s var(--ease); }
  .list-item:hover { border-color:var(--border-strong); }
  .list-item b { color:var(--text); font-weight:500; }
  /* recent scans */
  .rs-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:14px; flex-wrap:wrap; }
  .rs-filters { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  .rs-chip { font-family:var(--font-mono); font-size:11px; color:var(--text-4); background:transparent; border:1px solid var(--border); border-radius:100px; height:34px; box-sizing:border-box; padding:0 13px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; transition:.15s var(--ease); }
  .rs-chip:hover { color:var(--text-2); border-color:var(--border-strong); }
  .rs-chip.active { color:var(--accent-strong); border-color:rgba(201,168,124,0.4); background:rgba(201,168,124,0.08); }
  .rs-chipn { font-size:10px; color:var(--text-4); background:var(--bg); border-radius:100px; padding:1px 6px; transition:.15s var(--ease); }
  .rs-chip.active .rs-chipn { color:var(--accent-strong); background:rgba(201,168,124,0.14); }
  .rs-tools { display:flex; align-items:center; gap:10px; }
  .rs-searchwrap { position:relative; display:flex; align-items:center; }
  .rs-searchic { position:absolute; left:11px; width:14px; height:14px; color:var(--text-4); pointer-events:none; }
  .rs-search { font-family:var(--font-mono); font-size:12px; color:var(--text); background:var(--surface-2); border:1px solid var(--border); border-radius:100px; height:34px; box-sizing:border-box; margin:0; padding:0 14px 0 32px; width:200px; outline:none; transition:.15s var(--ease); }
  .rs-search:focus { border-color:rgba(201,168,124,0.4); background:var(--surface); }
  .rs-search::placeholder { color:var(--text-4); }
  .rs-count { font-family:var(--font-mono); font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); }
  .rs-delall { font-family:var(--font-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-4); background:transparent; border:1px solid var(--border); border-radius:100px; height:34px; box-sizing:border-box; display:inline-flex; align-items:center; padding:0 14px; cursor:pointer; transition:.15s var(--ease); }
  .rs-delall:hover { color:var(--crit); border-color:rgba(224,108,96,0.45); }
  .rs-empty { padding:70px 20px; text-align:center; color:var(--text-3); font-size:14px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
  .rs-empty a { color:var(--accent-ink); cursor:pointer; }
  .scancard { border:1px solid var(--border); border-left:2px solid var(--srail); border-radius:var(--radius-lg); margin-bottom:10px; background:var(--surface); cursor:pointer; box-shadow:var(--shadow-1), var(--hair-top); transition:border-color .18s var(--ease), background .18s var(--ease), transform .18s var(--ease); }
  .scancard:hover { border-color:var(--border-strong); background:var(--surface-2); transform:translateY(-1px); }
  .sc-main { padding:14px 17px; }
  .sc-top { display:flex; align-items:center; gap:11px; }
  .sc-lamp { width:7px; height:7px; border-radius:50%; background:var(--srail); flex:0 0 auto; box-shadow:0 0 8px -1px var(--srail); }
  .scancard.live .sc-lamp { animation:lampPulse 1.6s ease-in-out infinite; }
  @keyframes lampPulse { 0%,100%{opacity:1} 50%{opacity:.3} }
  .sc-title { color:var(--text); font-size:15px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; flex:0 1 auto; }
  .sc-sub { font-family:var(--font-mono); font-size:11px; color:var(--text-4); white-space:nowrap; flex:0 0 auto; }
  .sc-spacer { flex:1 1 auto; }
  .sc-ai { font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; color:var(--accent-ink); border:1px solid rgba(201,168,124,0.28); background:rgba(201,168,124,0.08); border-radius:100px; padding:2px 8px; flex:0 0 auto; }
  .sc-top .status { flex:0 0 auto; }
  .sc-meta { font-family:var(--font-mono); font-size:11px; color:var(--text-4); flex:0 1 auto; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .sc-find { font-family:var(--font-mono); font-size:11px; color:var(--text-2); flex:0 0 auto; white-space:nowrap; }
  .sc-find em { font-style:normal; color:var(--text-4); font-size:10px; margin-left:3px; }
  .scancard .del-x { flex:0 0 auto; opacity:0; transition:opacity .15s var(--ease); }
  .scancard:hover .del-x, .scancard .del-x:focus { opacity:1; }
  .rs-prog { margin-top:11px; padding-left:18px; }
  .rs-progbar { height:3px; border-radius:100px; background:var(--bg); overflow:hidden; box-shadow:inset 0 0 0 1px var(--border-faint); }
  .rs-progbar > span { display:block; height:100%; width:34%; background:var(--accent); border-radius:100px; }
  .rs-progbar.live > span { animation:progSlide 1.6s ease-in-out infinite; }
  @keyframes progSlide { 0%{transform:translateX(-110%)} 100%{transform:translateX(330%)} }
  .rs-progtxt { font-family:var(--font-mono); font-size:11px; color:var(--text-3); margin-top:6px; }
  @media (prefers-reduced-motion: reduce){ .scancard.live .sc-lamp, .rs-progbar.live>span{ animation:none; } .rs-progbar.live>span{ width:100%; opacity:.5; } }

  /* badges & status */
  .badge, .status { display:inline-block; font-family:var(--font-mono); font-size:10px; text-transform:uppercase;
    letter-spacing:0.12em; padding:3px 9px; border-radius:999px; border:1px solid var(--border); color:var(--text-3); background:transparent; }
  .sev-critical { color:var(--crit); border-color:color-mix(in srgb,var(--crit) 40%,transparent); }
  .sev-high { color:var(--high); border-color:color-mix(in srgb,var(--high) 40%,transparent); }
  .sev-medium { color:var(--med); border-color:color-mix(in srgb,var(--med) 40%,transparent); }
  .sev-low { color:var(--low); border-color:color-mix(in srgb,var(--low) 40%,transparent); }
  .sev-info { color:var(--info); border-color:var(--border); }
  .st-verified,.st-completed { color:var(--ok); border-color:rgba(127,176,138,0.4); }
  .st-created,.st-scoping,.st-awaiting_approval,.st-running,.st-paused,.st-pending { color:var(--accent-ink); border-color:rgba(201,168,124,0.35); }
  .st-failed,.st-stopped { color:var(--crit); border-color:rgba(224,108,96,0.4); }
  /* live agent-state chip (phase intelligence) */
  .astate { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-size:10px;
    letter-spacing:0.14em; text-transform:uppercase; padding:4px 11px; border-radius:999px; border:1px solid var(--border);
    color:var(--text-2); margin-right:9px; vertical-align:middle; }
  .astate .as-dot { width:6px; height:6px; border-radius:50%; background:currentColor; flex:0 0 auto; }
  .astate.as-live { color:var(--accent-strong); border-color:rgba(201,168,124,0.42); background:rgba(201,168,124,0.06); }
  .astate.as-exploit { color:var(--high); border-color:rgba(217,138,91,0.45); background:rgba(217,138,91,0.06); }
  .astate.as-done { color:var(--ok); border-color:rgba(127,176,138,0.42); }
  .astate.as-fail { color:var(--crit); border-color:rgba(224,108,96,0.42); }
  .astate.as-wait { color:var(--accent-ink); border-color:rgba(201,168,124,0.35); }
  .astate.as-idle { color:var(--text-3); }
  .astate.pulse .as-dot { animation:aspulse 1.5s var(--ease) infinite; }
  @keyframes aspulse { 0%,100%{ box-shadow:0 0 0 0 currentColor; opacity:1; } 55%{ box-shadow:0 0 0 4px transparent; opacity:.45; } }
  @media (prefers-reduced-motion: reduce){ .astate.pulse .as-dot{ animation:none; } }
  .ai-pill { display:inline-block; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.12em;
    padding:3px 9px; border-radius:999px; color:var(--accent-ink); background:rgba(201,168,124,0.09); border:1px solid rgba(201,168,124,0.22); }

  table { width:100%; border-collapse:collapse; font-size:13px; }
  th, td { text-align:left; padding:10px; border-bottom:1px solid var(--border-faint); vertical-align:top; }
  th { color:var(--text-4); font-family:var(--font-mono); font-weight:400; font-size:10px; text-transform:uppercase; letter-spacing:0.14em; }

  /* risk hero — the verdict at a glance */
  .riskhero { display:flex; gap:0; align-items:stretch; position:relative; overflow:hidden;
    background:var(--surface); border:1px solid var(--border); border-left:3px solid var(--risk);
    border-radius:var(--radius-xl); padding:22px 26px; margin-bottom:20px; box-shadow:var(--shadow-1), var(--hair-top); }
  .riskhero::before { content:""; position:absolute; inset:0; pointer-events:none;
    background:radial-gradient(680px 220px at 0% 0%, color-mix(in srgb, var(--risk) 12%, transparent), transparent 68%); }
  .rh-left { flex:0 0 auto; display:flex; flex-direction:column; justify-content:center; padding-right:26px; margin-right:26px; border-right:1px solid var(--border-faint); position:relative; z-index:1; }
  .rh-eyebrow, .rh-verdict-lbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--text-4); }
  .rh-rating { font-family:var(--font-serif); font-size:39px; line-height:.95; color:var(--risk); text-transform:capitalize; letter-spacing:-0.01em; margin-top:9px; }
  .rh-count { font-family:var(--font-mono); font-size:12px; color:var(--text-3); margin-top:13px; white-space:nowrap; }
  .rh-count b { color:var(--text); font-size:14px; }
  .rh-right { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; position:relative; z-index:1; }
  .rh-verdict-lbl { color:var(--risk); margin-bottom:7px; }
  .rh-verdict { font-family:var(--font-serif); font-size:18px; line-height:1.45; color:var(--text); margin-bottom:16px; }
  .rh-rail { display:flex; height:6px; border-radius:100px; overflow:hidden; background:var(--bg); box-shadow:inset 0 0 0 1px var(--border-faint); margin-bottom:11px; }
  .rh-rail > span { display:block; height:100%; }
  .rh-legend { display:flex; gap:18px; flex-wrap:wrap; }
  .rh-leg { display:inline-flex; align-items:center; gap:6px; background:transparent; border:none; padding:0; cursor:pointer; font-family:var(--font-mono); font-size:11px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-4); transition:color .15s var(--ease); height:auto; }
  .rh-leg:hover { color:var(--text-2); transform:none; background:transparent; }
  .rh-legdot { width:8px; height:8px; border-radius:50%; background:var(--c); flex:0 0 auto; }
  .rh-leg b { color:var(--c); font-weight:600; font-size:12px; }
  @media(max-width:760px){ .riskhero{ flex-direction:column; } .rh-left{ border-right:none; border-bottom:1px solid var(--border-faint); margin:0 0 16px; padding:0 0 16px; flex-direction:row; align-items:baseline; gap:16px; } }

  /* KPI */
  .kpi { margin-bottom:16px; }
  .kpi-boxes { display:flex; gap:12px; flex-wrap:wrap; }
  .kpi-boxes > div { background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); padding:13px 19px; text-align:center; min-width:80px; box-shadow:var(--hair-top); }
  .kpi-boxes b { font-family:var(--font-serif); font-size:25px; font-weight:400; display:block; line-height:1.1; }
  .kpi-boxes b:not([class]) { color:var(--text); }
  .kpi-boxes span { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:0.14em; }
  .kpi-rail { display:flex; height:5px; margin-top:12px; border-radius:100px; overflow:hidden; background:var(--bg); box-shadow:inset 0 0 0 1px var(--border-faint); }
  .kpi-rail > span { display:block; height:100%; }

  /* attack-surface tree */
  .surface-summary { display:flex; gap:18px; flex-wrap:wrap; margin:6px 0 14px; font-family:var(--font-mono);
    font-size:10px; text-transform:uppercase; letter-spacing:0.14em; color:var(--text-4); align-items:center; }
  .surface-summary b { color:var(--text); font-size:12px; }
  .surface-tools { display:flex; gap:8px; margin-bottom:10px; }
  .surface-tools button { height:28px; padding:0 12px; font-size:11px; }
  .tree { font-family:var(--font-mono); font-size:13px; }
  .asset-row { display:flex; align-items:center; gap:10px; padding:7px 8px; border-radius:var(--radius); }
  .asset-row:hover { background:color-mix(in srgb,var(--text) 2.5%,transparent); }
  .asset-row input[type=checkbox] { margin:0; }
  .tprefix { color:var(--text-4); white-space:pre; }
  .adot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; }
  .adot.live { background:var(--ok); box-shadow:0 0 6px rgba(127,176,138,0.5); }
  .adot.dead { background:var(--text-4); }
  .ahost { color:var(--text); } .ahost.dead { color:var(--text-4); }
  .acode { font-size:10px; letter-spacing:0.06em; }
  .acode.c2 { color:var(--ok); } .acode.c3 { color:var(--accent-ink); } .acode.c4 { color:var(--med); } .acode.c5 { color:var(--crit); }
  .chip { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.08em;
    padding:2px 7px; border:1px solid var(--border); border-radius:999px; color:var(--text-3); white-space:nowrap; }
  .chip.tech { color:var(--accent-ink); border-color:rgba(201,168,124,0.25); }
  .pt-table th { text-align:left; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--text-3); padding:6px 10px; border-bottom:1px solid var(--border); white-space:nowrap; }
  .pt-table td { padding:9px 10px; border-bottom:1px solid var(--border-faint); vertical-align:top; color:var(--text-2); }
  .pt-table tbody tr:hover { background:color-mix(in srgb,var(--text) 2%,transparent); }
  .pt-spin { width:26px; height:26px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; }
  .pt-feed { margin-top:4px; max-height:340px; overflow-y:auto; border-top:1px solid var(--border); padding-top:10px; font-family:var(--font-mono); font-size:12px; }
  .pt-ev { display:flex; gap:8px; padding:3px 0; color:var(--text-2); line-height:1.5; }
  .pt-ev-k { color:var(--text-4); flex:0 0 12px; text-align:center; }
  .pt-ev.phase { color:var(--accent-ink); }
  .pt-ev.host .pt-ev-k { color:var(--ok); }
  .pt-ev.err { color:var(--crit); }
  .p-ports { display:flex; flex-wrap:wrap; gap:6px; }
  .p-port { font-family:var(--font-mono); font-size:11px; color:var(--text); background:color-mix(in srgb,var(--text) 4%,transparent); border:1px solid var(--border); border-radius:4px; padding:3px 8px; }
  .p-port b { font-weight:600; } .p-port i { color:var(--text-4); font-style:normal; margin-left:4px; } .p-port em { color:var(--text-4); font-style:normal; margin-left:5px; font-size:10px; }
  .p-port.danger { color:var(--crit); border-color:rgba(224,108,96,0.4); } .p-port.warn { color:var(--high); border-color:rgba(217,138,91,0.4); }
  .p-dot { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:7px; vertical-align:middle; flex:0 0 auto; }
  .p-ttl { color:var(--text-4); }
  .as-techchip em { color:var(--text-4); font-style:normal; margin-left:4px; font-size:10px; }
  .as-tsec { font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); margin:10px 0 6px; }
  /* ---- domain dossier (sheet) ---- */
  .asx-panel.sheet { left:14px; right:14px; top:14px; bottom:14px; width:auto; max-width:none; background:var(--bg-2); box-shadow:0 24px 60px rgba(0,0,0,.55); padding:26px 32px; overflow:auto; }
  .pd-hero { border-bottom:1px solid var(--border); padding-bottom:20px; margin-bottom:20px; }
  .pd-fqdn { font-family:var(--font-serif); font-weight:400; font-size:clamp(1.6rem,2.6vw,2.1rem); color:var(--text); margin:8px 0 12px; letter-spacing:-0.01em; }
  .pd-risk { display:inline-flex; align-items:center; font-family:var(--font-mono); font-size:12px; color:var(--text-2); margin-bottom:14px; }
  .pd-covstrip { font-family:var(--font-mono); font-size:11px; color:var(--text-3); margin-top:12px; }
  .pd-alert { font-family:var(--font-mono); font-size:12px; color:var(--high); margin-top:10px; }
  .pd-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; margin-bottom:16px; }
  .pd-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; }
  .pd-full { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; margin-bottom:14px; }
  .pd-sevrow { display:flex; align-items:center; gap:10px; padding:6px 0; cursor:pointer; }
  .pd-sevrow:hover .pd-sevname { filter:brightness(1.2); }
  .pd-sevname { font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; width:64px; flex:0 0 auto; }
  .pd-sevtrack { flex:1; height:6px; background:color-mix(in srgb,var(--text) 5%,transparent); border-radius:3px; overflow:hidden; } .pd-sevtrack span { display:block; height:100%; }
  .pd-sevrow b { font-family:var(--font-mono); font-size:12px; color:var(--text); min-width:26px; text-align:right; } .pd-sevrow em { font-family:var(--font-mono); font-size:10px; color:var(--text-4); font-style:normal; min-width:54px; text-align:right; }
  .pd-host { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 11px; border-left:3px solid var(--sev,var(--border)); background:var(--surface-2); border-radius:var(--radius); margin-bottom:6px; cursor:pointer; transition:.15s var(--ease); }
  .pd-host:hover { background:var(--surface-3); }
  .pd-hn { font-family:var(--font-mono); font-size:12px; color:var(--text); word-break:break-all; }
  .pd-hmeta { display:flex; gap:10px; flex:0 0 auto; } .pd-hmeta i { font-family:var(--font-mono); font-size:11px; color:var(--text-3); font-style:normal; }
  .pd-sechead { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
  .pd-copyall { font-family:var(--font-mono); font-size:11px; background:transparent; border:1px solid var(--border); color:var(--text-3); border-radius:var(--radius); padding:5px 12px; cursor:pointer; transition:.15s var(--ease); }
  .pd-copyall:hover { border-color:var(--accent); color:var(--accent-ink); }
  .pd-note { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-top:10px; }
  .pd-ephost { border-bottom:1px solid var(--border-faint); }
  .pd-ephead { display:flex; align-items:center; gap:8px; padding:9px 2px; cursor:pointer; font-family:var(--font-mono); font-size:12px; color:var(--text-2); }
  .pd-ephead .as-caret { transition:.15s; font-size:9px; color:var(--text-4); } .pd-ephost.open .pd-ephead .as-caret { transform:rotate(90deg); }
  .pd-ephead .h { color:var(--text); } .pd-ephead em { margin-left:auto; color:var(--text-4); font-style:normal; }
  .pd-epbody { display:none; padding:0 0 10px 18px; } .pd-ephost.open .pd-epbody { display:block; }
  .p-ep.muted { color:var(--text-4); }
  .p-port i { color:var(--text-4); font-style:normal; margin-left:3px; }
  .chip.own { color:var(--text-4); }
  .atitle { color:var(--text-4); font-family:var(--font-body); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-left:auto; max-width:220px; }
  /* expandable host nodes (live scan mode) */
  .hnode { border:1px solid var(--border); border-radius:var(--radius-lg); margin-bottom:8px; background:var(--surface-2); overflow:hidden; }
  .hnode-head { display:flex; align-items:center; gap:10px; padding:10px 12px; cursor:pointer; transition:background .15s var(--ease); }
  .hnode-head:hover { background:color-mix(in srgb,var(--text) 2.5%,transparent); }
  .caret { color:var(--text-4); width:10px; transition:transform .15s var(--ease); display:inline-block; }
  .hnode.open .caret { transform:rotate(90deg); }
  .hdetail { font-family:var(--font-mono); font-size:10px; color:var(--text-4); margin-left:8px; }
  .sevcounts { display:flex; gap:5px; margin-left:auto; }

  /* attack-surface inventory */
  .inv { margin-top:2px; }
  .inv-head { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:14px; }
  .inv-title { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); }
  .inv-filters { display:flex; gap:6px; flex-wrap:wrap; }
  .inv-chip { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--text-3); background:transparent; border:1px solid var(--border); border-radius:100px; padding:5px 11px; cursor:pointer; transition:.15s var(--ease); }
  .inv-chip:hover { border-color:var(--border-strong); color:var(--text-2); }
  .inv-chip.active { color:var(--text); border-color:var(--accent); background:var(--accent-dim); }
  .inv-chip .c { color:var(--text-4); margin-left:6px; }
  .inv-chip.active .c { color:var(--accent-ink); }
  .inv-foot { font-family:var(--font-mono); font-size:11px; color:var(--text-4); padding:12px 4px 2px; text-align:center; }
  .inv-foot a { color:var(--accent-ink); cursor:pointer; }
  .hnode .sst { font-size:10px; flex:0 0 auto; width:14px; text-align:center; }
  .hnode .sst.done { color:var(--ok); } .hnode .sst.pending { color:var(--text-4); }

  /* ===== live scan cockpit ===== */
  .cockpit { margin-bottom:8px; }
  /* stage pipeline */
  .stages { display:flex; align-items:center; gap:5px 0; margin:6px 0 22px; flex-wrap:wrap; }
  .stage { display:flex; align-items:center; gap:9px; }
  .stage .sdot { width:10px; height:10px; border-radius:50%; border:1.5px solid var(--border-strong); flex:0 0 auto; }
  .stage .slabel { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.16em; color:var(--text-4); }
  .stage.done .sdot { background:var(--accent); border-color:var(--accent); }
  .stage.done .slabel { color:var(--text-3); }
  .stage.active .sdot { background:var(--accent-strong); border-color:var(--accent-strong); box-shadow:0 0 0 4px rgba(201,168,124,0.16); animation:pulseRing 1.6s var(--ease) infinite; }
  .stage.active .slabel { color:var(--accent-strong); }
  .stages .sbar { flex:0 0 auto; width:34px; height:1px; background:var(--border); margin:0 10px; }
  .stages .sbar.done { background:rgba(201,168,124,0.4); }
  @keyframes pulseRing { 0%{box-shadow:0 0 0 0 rgba(201,168,124,0.28)} 70%{box-shadow:0 0 0 7px rgba(201,168,124,0)} 100%{box-shadow:0 0 0 0 rgba(201,168,124,0)} }

  /* metric readout — one segmented instrument, not a grid of nested cards.
     inset-shadow dividers (not gap) so trailing empty cells on a wrapped row blend away. */
  .metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(104px,1fr)); margin-bottom:20px;
    background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-1), var(--hair-top); }
  .metric { position:relative; background:var(--surface-2); padding:15px 18px; overflow:hidden; box-shadow:inset 1px 0 0 0 var(--border-faint), inset 0 1px 0 0 var(--border-faint); transition:background .15s var(--ease); }
  .metric::after { content:""; position:absolute; left:0; top:0; height:2px; width:0; background:linear-gradient(90deg,var(--accent),transparent); transition:width .4s var(--ease); }
  .metric.pulse::after { width:100%; }
  .metric .mnum { font-family:var(--font-serif); font-size:29px; line-height:1; color:var(--text); font-weight:400; }
  .metric .mlabel { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:0.15em; color:var(--text-4); margin-top:8px; }
  .metric.pulse .mnum { color:var(--accent-strong); transition:color .1s; }
  .metric.hot .mnum { color:var(--high); }
  .metric.clickable { cursor:pointer; }
  .metric.clickable:hover { background:rgba(201,168,124,0.06); }
  .metric.clickable::before { content:"→"; position:absolute; top:13px; right:15px; color:var(--text-4); font-size:12px; opacity:0; transition:opacity .15s var(--ease), transform .15s var(--ease); transform:translateX(-3px); }
  .metric.clickable:hover::before { opacity:1; transform:translateX(0); }

  /* current activity ticker */
  .nowline { display:flex; align-items:flex-start; gap:11px; padding:12px 15px; background:var(--surface-2); border:1px solid var(--border);
    border-radius:var(--radius-lg); margin-bottom:16px; font-family:var(--font-mono); font-size:12px; color:var(--text-2); }
  .nowline .nl-msg { flex:1 1 auto; min-width:0; overflow-wrap:anywhere; }
  .nowline .spin { width:12px; height:12px; border-radius:50%; border:1.6px solid rgba(201,168,124,0.25); border-top-color:var(--accent); animation:spin .7s linear infinite; flex:0 0 auto; }
  .nowline .nk { font-size:9px; text-transform:uppercase; letter-spacing:0.16em; color:var(--accent-ink); }
  @keyframes spin { to { transform:rotate(360deg); } }
  .elapsed { font-family:var(--font-mono); font-size:12px; color:var(--text-4); }

  /* scope selection */
  .scope-bar { display:flex; align-items:center; justify-content:space-between; margin:6px 0 14px; flex-wrap:wrap; gap:10px; }
  .scope-count { font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.12em; color:var(--text-4); }
  .scope-count b { color:var(--text); font-size:14px; }
  .scope-row { display:flex; align-items:center; gap:11px; padding:11px 14px; border:1px solid var(--border);
    border-left:2px solid transparent; border-radius:var(--radius-lg); margin-bottom:6px; background:var(--surface-2);
    cursor:pointer; transition:border-color .15s var(--ease), background .15s var(--ease); }
  .scope-row:hover { border-color:var(--border-strong); }
  .scope-row.sel { border-left-color:var(--accent); background:rgba(201,168,124,0.05); }
  .sbox { width:17px; height:17px; border-radius:5px; border:1.5px solid var(--text-4); flex:0 0 auto; position:relative; transition:.15s var(--ease); }
  .sbox.on { background:var(--accent); border-color:var(--accent); }
  .sbox.on::after { content:"✓"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#0A0B0D; font-size:11px; font-weight:700; }
  .recon-live { display:flex; align-items:center; gap:10px; padding:16px; margin-top:6px; font-family:var(--font-mono);
    font-size:12px; color:var(--text-3); background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); }
  .sevcount { font-family:var(--font-mono); font-size:10px; padding:2px 7px; border-radius:999px; border:1px solid var(--border); }
  .hnode-body { padding:0 12px 10px 32px; display:none; }
  .hnode.open .hnode-body { display:block; }
  .frow { display:flex; gap:10px; align-items:baseline; padding:7px 0; border-top:1px solid var(--border-faint); }
  .frow .ftitle { color:var(--text); font-size:13px; }
  .frow .ffix { color:var(--text-4); font-size:12px; display:block; margin-top:2px; }
  .frow-none { color:var(--text-4); font-size:12px; padding:8px 0; font-style:italic; }
  .live-banner { display:flex; align-items:center; gap:10px; font-family:var(--font-mono); font-size:11px;
    color:var(--accent-ink); margin-bottom:12px; letter-spacing:0.08em; }

  /* console */
  .console { background:var(--ink); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 14px;
    max-height:380px; overflow:auto; font-family:var(--font-mono); font-size:12px; }
  .ev { padding:4px 0; border-bottom:1px solid color-mix(in srgb,var(--text) 4%,transparent); display:flex; gap:10px; align-items:baseline; color:var(--text-2); flex-wrap:wrap; }
  .ev .k { flex:0 0 56px; font-size:9px; text-transform:uppercase; letter-spacing:0.16em; }
  .ev .msg { flex:1; min-width:0; overflow-wrap:anywhere; } .ev .det { color:var(--text-4); }
  .ev.kind-phase { color:var(--text); } .ev.kind-phase .k { color:var(--accent-strong); }
  .ev-compact .ev-cx { color:var(--accent-ink); font-family:var(--font-mono); font-weight:600; }
  .ev.kind-tool .k { color:var(--low); }
  .ev.kind-host .k { color:var(--accent-ink); } .ev.kind-host { color:var(--text); }
  .ev.kind-endpoint .k { color:var(--low); } .ev.kind-endpoint { color:var(--text-2); }
  .ev.kind-attack .k { color:var(--crit); } .ev.kind-attack { color:var(--high); }
  .ev.kind-agent .k { color:#8FA9B8; } .ev.kind-agent { color:var(--text-3); }
  .ev.kind-ai .k { color:var(--accent-ink); } .ev.kind-ai { color:var(--accent-strong); }
  .ev.kind-finding .k { color:var(--high); }
  .ev.kind-test .k { color:var(--accent-ink); } .ev.kind-test { color:var(--text); }
  .ev.kind-test .msg { font-weight:500; }
  .ev.kind-error .k { color:var(--crit); } .ev.kind-error { color:var(--crit); }
  .ev.kind-info .k { color:var(--text-4); }
  /* raw per-request traffic — dim, and hidden in the default "Activity" view */
  .ev.kind-req .k { color:var(--text-4); } .ev.kind-req { color:var(--text-4); opacity:.8; }
  .dock-body.mode-activity .ev.kind-req { display:none; }
  /* agent → operator consent prompt card */
  .ev.kind-question { display:block; padding:0; margin:8px 14px; }
  .opq { border:1px solid var(--accent); border-radius:var(--radius); background:rgba(201,168,124,0.07); padding:12px 14px; box-shadow:0 0 0 1px rgba(201,168,124,0.08); }
  .ev.kind-question.answered .opq { border-color:var(--border); background:transparent; box-shadow:none; }
  .opq-head { display:flex; align-items:center; gap:9px; margin-bottom:8px; }
  .opq-risk { font-family:var(--font-mono); font-size:9px; letter-spacing:.14em; text-transform:uppercase; padding:2px 8px; border-radius:100px; border:1px solid currentColor; }
  .opq-risk.r-medium { color:var(--med); } .opq-risk.r-high { color:var(--high); } .opq-risk.r-critical { color:var(--crit); }
  .opq-tag { font-family:var(--font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-strong); }
  .opq-text { color:var(--text); font-size:13px; line-height:1.5; margin-bottom:11px; }
  .opq-actions { display:flex; flex-wrap:wrap; gap:8px; }
  .opq-actions button { font-family:var(--font-mono); font-size:12px; border-radius:8px; padding:6px 16px; cursor:pointer; border:1px solid var(--border); background:var(--surface-2); color:var(--text-2); transition:.15s var(--ease); }
  .opq-actions button:hover:not(:disabled) { border-color:var(--accent); color:var(--text); }
  .opq-actions button:disabled { opacity:.4; cursor:default; }
  .opq-actions .opq-approve { border-color:var(--ok); color:var(--ok); } .opq-actions .opq-approve:hover:not(:disabled) { background:var(--ok); color:var(--bg); }
  .opq-actions .opq-deny { border-color:var(--crit); color:var(--crit); } .opq-actions .opq-deny:hover:not(:disabled) { background:var(--crit); color:var(--bg); }
  .opq-done { font-family:var(--font-mono); font-size:12px; color:var(--ok); }
  .ev.expandable .msg { cursor:pointer; } .ev.expandable .msg::after { content:" ▸"; color:var(--accent-ink); }
  .ev .content { flex-basis:100%; margin:7px 0 4px; background:var(--ink-2); border:1px solid var(--border); border-radius:var(--radius);
    padding:10px; white-space:pre-wrap; word-break:break-word; max-height:300px; overflow:auto; color:var(--text-3); font-size:11px; line-height:1.5; }
  .blink { animation:blink 1.2s steps(2,start) infinite; color:var(--accent-ink); }
  @keyframes blink { 50% { opacity:.3; } }
  ol { padding-left:18px; } ol li::marker { color:var(--accent-ink); }

  /* result tabs + findings detail view */
  .rtabs { display:flex; gap:0; margin:20px 0 14px; border-bottom:1px solid var(--border); }
  .rtabs button { height:36px; background:none; border:0; border-bottom:2px solid transparent; border-radius:0;
    color:var(--text-3); padding:0 2px; margin-right:20px; font-weight:500; font-size:14px; }
  .rtabs button:hover { color:var(--text); transform:none; background:none; }
  .rtabs button.active { color:var(--text); border-bottom-color:var(--accent); }
  .rtabs .rtab-n { display:inline-block; margin-left:6px; padding:0 6px; min-width:16px; font-size:11px; font-weight:600;
    line-height:16px; text-align:center; color:var(--accent-strong); background:rgba(201,168,124,0.12);
    border:1px solid rgba(201,168,124,0.25); border-radius:9px; vertical-align:middle; }
  /* persistent status band (running scans) — pipeline + now-line stay put across tab switches */
  .statusband { margin:18px 0 2px; }
  .statusband .cockpit { margin-bottom:0; }
  /* standard tab-panel header — one shared scaffold. The active tab already names the view,
     so the header carries only a one-line description (left) + a summary count (right). */
  .vhead { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; padding-bottom:13px; margin-bottom:16px; border-bottom:1px solid var(--border); }
  .vhead-desc { flex:1 1 220px; min-width:0; font-family:var(--font-mono); font-size:12px; color:var(--text-3); line-height:1.4; }
  .vhead-sum { flex:0 0 auto; margin-left:auto; font-family:var(--font-mono); font-size:12px; color:var(--text-3); white-space:nowrap; }
  .vhead-sum b { color:var(--accent-strong); font-weight:600; }
  .filterbar { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
  .fchip { font-family:var(--font-mono); font-size:11px; padding:5px 12px; border-radius:999px; border:1px solid var(--border);
    color:var(--text-3); background:transparent; cursor:pointer; height:auto; font-weight:400; }
  .fchip:hover { transform:none; background:color-mix(in srgb,var(--text) 3%,transparent); color:var(--text); }
  .fchip.active { border-color:var(--border-strong); color:var(--text); background:color-mix(in srgb,var(--text) 5%,transparent); }
  .fchip .n { color:var(--text-4); margin-left:6px; }
  .filterbar input { width:220px; margin:0; height:32px; padding:6px 11px; }
  .sevgroup-h { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.16em; margin:16px 0 7px; }
  /* per-host count chip split out of a "… (N)" finding title so one issue isn't 6 titles */
  .fcnt { display:inline-block; margin-left:8px; font-family:var(--font-mono); font-size:10px; line-height:1.5; color:var(--text-3); background:var(--surface-3); border:1px solid var(--border); border-radius:100px; padding:0 7px; vertical-align:middle; flex:0 0 auto; }
  .fitem { border:1px solid var(--border); border-radius:var(--radius-lg); margin-bottom:7px; background:var(--surface-2); overflow:hidden; }
  .fitem-head { display:flex; align-items:center; gap:11px; padding:12px 14px; cursor:pointer; }
  .fitem-head:hover { background:color-mix(in srgb,var(--text) 2.5%,transparent); }
  .fitem-title { color:var(--text); font-size:14px; }
  .fitem-host { font-family:var(--font-mono); font-size:11px; color:var(--text-4); margin-left:auto; white-space:nowrap; }
  .fitem-st { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.1em; padding:3px 8px; border-radius:100px; color:var(--stc); border:1px solid var(--stc); background:color-mix(in srgb,var(--text) 2%,transparent); white-space:nowrap; flex:0 0 auto; }
  .fitem.fresolved > .fitem-head { opacity:.55; }
  .fitem.fresolved > .fitem-head .fitem-title { text-decoration:line-through; text-decoration-color:var(--text-4); }
  .fbar-status { margin-left:auto; display:flex; align-items:center; gap:8px; }
  .fbar-stlabel { font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); }
  .fitem-caret { color:var(--text-4); font-size:10px; transition:transform .15s var(--ease); }
  .fitem.open .fitem-caret { transform:rotate(90deg); }
  .fitem-body { display:none; padding:2px 14px 15px; border-top:1px solid var(--border-faint); }
  .fitem.open .fitem-body { display:block; }
  .fitem.flash { animation:fitemFlash 1.6s var(--ease); }
  @keyframes fitemFlash { 0%{ box-shadow:0 0 0 2px var(--accent); border-color:var(--accent); } 100%{ box-shadow:0 0 0 0 transparent; } }
  .fdesc { color:var(--text-2); font-size:13px; margin:13px 0; line-height:1.55; }
  .fmeta { display:flex; gap:20px; flex-wrap:wrap; font-size:13px; color:var(--text-2); margin-bottom:12px; }
  .fmeta b { color:var(--accent-ink); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.14em; display:block; margin-bottom:4px; font-weight:400; }
  .fmeta-chips { display:inline-flex; gap:7px; flex-wrap:wrap; align-items:center; margin-top:2px; }
  .reqres { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  @media(max-width:860px){ .reqres{ grid-template-columns:1fr; } }
  .httpblock { background:var(--ink); border:1px solid var(--border); border-left:2px solid var(--border-strong); border-radius:var(--radius); padding:11px 13px 12px;
    font-family:var(--font-mono); font-size:12px; line-height:1.6; white-space:pre-wrap; word-break:break-word;
    max-height:300px; overflow:auto; color:var(--text-2); box-shadow:inset 0 1px 0 rgba(255,255,255,0.035); }
  /* colored left rule so request vs response reads at a glance (response = status color) */
  .httpblock.hb-k-request { border-left-color:var(--accent); }
  .httpblock.hb-k-response { border-left-color:var(--text-4); }
  .httpblock.hb-c2 { border-left-color:var(--ok); } .httpblock.hb-c3 { border-left-color:var(--low); }
  .httpblock.hb-c4 { border-left-color:var(--high); } .httpblock.hb-c5 { border-left-color:var(--crit); }
  .httpblock .lbl { color:var(--accent-ink); font-size:10px; text-transform:uppercase; letter-spacing:.16em; display:block; margin-bottom:7px; }
  .lbl2 { color:var(--accent-ink); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; display:block; margin-bottom:8px; }
  /* request/response block with copy button */
  .hb { min-width:0; }
  .hb-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; }
  .hb-head .lbl { color:var(--accent-ink); font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; }
  .hb-copy { height:22px; padding:0 11px; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.08em; background:color-mix(in srgb,var(--text) 3%,transparent); color:var(--text-3); border:1px solid var(--border); border-radius:var(--radius); cursor:pointer; flex:0 0 auto; transition:.15s var(--ease); }
  .hb-copy:hover { color:var(--accent-ink); border-color:var(--accent); }
  .hb-copy.ok { color:var(--ok); border-color:var(--ok); }
  .hb-mask.on { color:var(--high); border-color:var(--high); }
  .h-val.h-masked { color:var(--text-4); font-style:italic; letter-spacing:.04em; }
  .hb-head { justify-content:flex-start; }
  .hb-spacer { flex:1 1 auto; }
  .hb-head .h-tag { font-family:var(--font-mono); font-size:9px; font-weight:600; letter-spacing:.09em; padding:2px 8px; border-radius:100px; border:1px solid currentColor; line-height:1.4; }
  .hb-head .h-tag.method { color:var(--accent-ink); }
  .hb-head .h-tag.c2 { color:var(--ok); } .hb-head .h-tag.c3 { color:var(--low); }
  .hb-head .h-tag.c4 { color:var(--high); } .hb-head .h-tag.c5 { color:var(--crit); } .hb-head .h-tag.cx { color:var(--text-3); }
  /* HTTP syntax highlighting */
  .httpfmt { color:var(--text-2); }
  .httpfmt .h-method { color:var(--accent-strong); font-weight:600; }
  .httpfmt .h-path { color:var(--text); word-break:break-all; }
  .httpfmt .h-ver { color:var(--text-4); }
  .httpfmt .h-name { color:var(--text-3); }
  .httpfmt .h-val { color:var(--text); }
  .httpfmt .h-code { font-weight:600; }
  .httpfmt .h-code.c2 { color:var(--ok); } .httpfmt .h-code.c3 { color:var(--low); }
  .httpfmt .h-code.c4 { color:var(--high); } .httpfmt .h-code.c5 { color:var(--crit); } .httpfmt .h-code.cx { color:var(--text-2); }
  .httpfmt .h-sep { display:block; color:var(--text-4); border-top:1px dashed var(--border); margin:9px 0; padding-top:9px; font-style:italic; opacity:.75; }
  /* multi-step PoC chain — one card per request/response exchange */
  .proofchain { display:flex; flex-direction:column; gap:12px; }
  .proofstep { position:relative; border:1px solid var(--border); border-radius:var(--radius); padding:12px 13px 13px; background:color-mix(in srgb,var(--text) 1.2%,transparent); }
  .proofstep::before { content:""; position:absolute; left:0; top:12px; bottom:12px; width:2px; border-radius:2px; background:var(--accent); opacity:.6; }
  .proofstep-h { display:flex; align-items:baseline; gap:7px; margin-bottom:10px; }
  .proofstep-n { font-family:var(--font-mono); font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.14em; color:var(--accent-ink); }
  .proofstep-of { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--text-4); }
  .proofcontrol { margin-top:12px; border:1px dashed var(--border-strong); border-radius:var(--radius); padding:12px 13px 13px; background:color-mix(in srgb,var(--text) 1.2%,transparent); }
  .proofcontrol-h { display:flex; align-items:baseline; gap:8px; margin-bottom:10px; font-family:var(--font-mono); font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.14em; color:var(--text-3); }
  .proofcontrol-sub { font-family:var(--font-mono); font-size:10px; text-transform:none; letter-spacing:0; color:var(--text-4); font-weight:400; }
  .sd-tier { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.13em; color:var(--text-4); border:1px solid var(--border); border-radius:100px; padding:3px 10px; margin-right:2px; }
  /* scan-detail: give the content a little more left breathing room */
  #view-detail { padding-left:60px; }
  @media(max-width:1100px){ #view-detail { padding-left:40px; } }

  /* references */
  .frefs { margin-top:14px; }
  .frefs a { display:inline-block; font-size:12px; color:var(--text-2); border:1px solid var(--border);
    border-radius:100px; padding:4px 11px; margin:0 6px 6px 0; text-decoration:none; transition:.15s; }
  .frefs a:hover { border-color:var(--accent); color:var(--accent-ink); }

  /* per-finding AI chat */
  .fchat { margin-top:16px; border-top:1px solid var(--border); padding-top:14px; }
  .chatmsgs { max-height:280px; overflow:auto; margin-bottom:10px; display:flex; flex-direction:column; gap:8px; }
  .chatempty { color:var(--text-3); font-size:12px; font-style:italic; }
  .cmsg { font-size:13px; line-height:1.55; }
  .cmsg b { display:block; font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.14em; margin-bottom:3px; }
  .cmsg.user { color:var(--text-1); } .cmsg.user b { color:var(--text-3); }
  .cmsg.assistant { color:var(--text-2); background:var(--surface-2); border:1px solid var(--border);
    border-radius:var(--radius); padding:9px 12px; } .cmsg.assistant b { color:var(--accent-ink); }
  .cmsg.pending { opacity:.6; }
  .chatin { display:flex; gap:8px; }
  .chatin input { flex:1; background:var(--ink); border:1px solid var(--border); border-radius:var(--radius);
    padding:9px 12px; color:var(--text-1); font-size:13px; font-family:inherit; }
  .chatin input:focus { outline:none; border-color:var(--accent); }
  .chatin button { background:var(--accent); color:#0a0a0a; border:none; border-radius:var(--radius);
    padding:0 18px; font-weight:600; font-size:13px; cursor:pointer; }
  .chatin button:hover { opacity:.9; }

  /* AI attack plan vectors */
  .vec { border:1px solid var(--border); border-left:2px solid var(--accent); border-radius:var(--radius-lg);
    padding:14px 16px; margin-bottom:8px; background:var(--surface-2); }
  .vec-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .vec .vtech { font-family:var(--font-mono); color:var(--accent-ink); font-size:12px; text-transform:uppercase; letter-spacing:.1em; }
  .vec .vtarget { font-family:var(--font-mono); font-size:12px; color:var(--text-2); word-break:break-all; margin-top:8px; }
  .vec .vrat { color:var(--text-2); font-size:13px; margin-top:8px; line-height:1.5; }
  .vec .vtest { font-family:var(--font-mono); font-size:11px; color:var(--text-3); background:var(--ink);
    border:1px solid var(--border); border-radius:var(--radius); padding:9px 11px; margin-top:9px; white-space:pre-wrap; word-break:break-word; }
  .prio { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.12em; padding:2px 8px; border-radius:999px; border:1px solid var(--border); }
  .prio-high { color:var(--crit); border-color:rgba(224,108,96,.4); }
  .prio-medium { color:var(--med); border-color:rgba(203,178,106,.4); }
  .prio-low { color:var(--low); border-color:rgba(143,169,184,.4); }
  /* surface tables */
  .surf-h { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.16em; color:var(--accent-ink); margin:16px 0 8px; }
  .ep-row { font-family:var(--font-mono); font-size:12px; color:var(--text-2); padding:5px 0; border-bottom:1px solid var(--border-faint); word-break:break-all; }
  .ep-row .m { color:var(--accent-ink); margin-right:8px; }
  .hist-code { font-family:var(--font-mono); }
  .hist-code.c2{color:var(--ok)} .hist-code.c3{color:var(--accent-ink)} .hist-code.c4{color:var(--med)} .hist-code.c5{color:var(--crit)}

  /* VS Code-style docked engine console */
  .dock { position:fixed; left:236px; right:0; bottom:0; z-index:50; background:var(--ink);
    border-top:1px solid var(--border-strong); display:flex; flex-direction:column;
    max-height:55vh; box-shadow:0 -24px 60px rgba(0,0,0,0.55); }
  .dock.collapsed { max-height:38px !important; height:38px !important; }
  .dock.resized { max-height:none; }
  .dock.resized .dock-body { flex:1 1 auto; max-height:none; min-height:0; }
  .dock-resize { position:absolute; top:-3px; left:0; right:0; height:8px; cursor:ns-resize; z-index:3; }
  .dock-resize::after { content:""; position:absolute; top:3px; left:50%; transform:translateX(-50%); width:36px; height:2px; border-radius:2px; background:var(--border-strong); opacity:0; transition:opacity .15s; }
  .dock-resize:hover::after { opacity:1; }
  /* right-docked mode: floats like a card, inset from the edges */
  .dock.right { left:auto; top:96px; right:16px; bottom:16px; width:34vw; height:auto; max-height:none;
    border:1px solid var(--border-strong); border-radius:var(--radius-lg); overflow:hidden;
    box-shadow:0 24px 60px rgba(0,0,0,0.55); }
  .dock.right .dock-body { flex:1 1 auto; max-height:none; }
  .dock.right .dock-chevron { display:none; }
  .dock.right .dock-resize { top:0; bottom:0; left:-3px; right:auto; width:8px; height:auto; cursor:ew-resize; }
  .dock.right .dock-resize::after { top:50%; left:3px; transform:translateY(-50%); width:2px; height:40px; }
  @media(max-width:900px){ .dock.right { width:100vw; } }
  .dock-head { height:38px; flex:0 0 38px; display:flex; align-items:center; justify-content:space-between;
    padding:0 16px; cursor:pointer; border-bottom:1px solid var(--border); background:var(--bg-2); }
  .dock-head:hover { background:var(--surface-3); }
  .dock-title { font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.14em;
    color:var(--text-2); display:flex; align-items:center; gap:9px; min-width:0; flex:1 1 auto; }
  .dock-titletext { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
  #sd_ev_count { flex:0 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .term-ico { color:var(--accent-ink); font-weight:700; letter-spacing:-1px; flex:0 0 auto; }
  .dock-head { gap:12px; }
  .dock-actions { display:flex; align-items:center; gap:10px; flex:0 0 auto; }
  .dock-status { max-width:170px; }
  .dock-status span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .dock-hint { font-family:var(--font-mono); font-size:10px; color:var(--text-4); }
  .dock-status { font-family:var(--font-mono); font-size:11px; color:var(--accent-strong); display:flex; align-items:center; gap:8px; letter-spacing:.04em; }
  .mini-spin { width:11px; height:11px; border-radius:50%; border:1.6px solid rgba(201,168,124,0.25); border-top-color:var(--accent); animation:spin .7s linear infinite; }
  .dock-progress { position:absolute; top:0; left:0; right:0; height:2px; background:color-mix(in srgb,var(--text) 5%,transparent); overflow:hidden; }
  .dock-progress-fill { height:100%; width:0; background:linear-gradient(90deg,var(--accent),var(--accent-strong)); transition:width .5s var(--ease); }
  .dock-progress.indet .dock-progress-fill { width:35% !important; animation:indet 1.4s var(--ease) infinite; }
  @keyframes indet { 0%{transform:translateX(-120%)} 100%{transform:translateX(340%)} }
  .dock-btn { height:24px; padding:0 11px; font-size:11px; background:color-mix(in srgb,var(--text) 3%,transparent); color:var(--text-3); border:1px solid var(--border); }
  .dock-btn:hover { color:var(--text); transform:none; background:color-mix(in srgb,var(--text) 6%,transparent); }
  .dock-chevron { color:var(--text-3); font-size:11px; transition:transform .2s var(--ease); }
  .dock.collapsed .dock-chevron { transform:rotate(180deg); }
  .dock-body { flex:0 1 auto; min-height:56px; max-height:calc(55vh - 40px); overflow:auto;
    padding:10px 16px; font-family:var(--font-mono); font-size:12px; }
  .dock.collapsed .dock-body { display:none; }
  @media(max-width:720px){ .dock { left:0; } }

  /* toast */
  .toast { position:fixed; bottom:22px; right:22px; background:var(--surface); border:1px solid var(--border-strong);
    padding:13px 17px; border-radius:var(--radius-lg); max-width:360px; box-shadow:0 30px 70px rgba(0,0,0,0.6); color:var(--text); font-size:13px; z-index:100; }
  .toast.err { border-color:rgba(224,108,96,0.5); }

  /* modal wizard */
  /* ⌘K command palette (palette-neutral: reuses existing tokens) */
  .cmdk-trigger { display:flex; align-items:center; gap:8px; width:calc(100% - 0px); margin:0 0 14px; padding:8px 11px;
    background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); color:var(--text-3);
    font-family:var(--font-body); font-size:13px; cursor:pointer; transition:border-color .15s var(--ease), color .15s var(--ease); box-shadow:var(--hair-top); }
  .cmdk-trigger:hover { border-color:var(--border-strong); color:var(--text-2); }
  .cmdk-trigger svg { width:14px; height:14px; flex:0 0 auto; color:var(--text-4); }
  .cmdk-trigger span { flex:1; text-align:left; }
  .cmdk-trigger kbd { font-family:var(--font-mono); font-size:10px; color:var(--text-4); background:var(--bg-2);
    border:1px solid var(--border); border-radius:4px; padding:1px 5px; }
  #cmdk.hidden { display:none; }
  .cmdk-ov { position:fixed; inset:0; z-index:200; background:rgba(5,6,8,0.66); -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px);
    display:flex; align-items:flex-start; justify-content:center; padding-top:12vh; animation:cmdkfade .12s var(--ease); }
  @keyframes cmdkfade { from{opacity:0} to{opacity:1} }
  .cmdk-box { width:min(640px,92vw); background:var(--surface); border:1px solid var(--border-strong);
    border-radius:var(--radius-xl); box-shadow:var(--shadow-pop); overflow:hidden; animation:cmdkrise .16s var(--ease); }
  @keyframes cmdkrise { from{transform:translateY(-8px);opacity:0} to{transform:translateY(0);opacity:1} }
  .cmdk-inp { display:flex; align-items:center; gap:11px; padding:15px 17px; border-bottom:1px solid var(--border); }
  .cmdk-inp svg { width:17px; height:17px; color:var(--text-4); flex:0 0 auto; }
  .cmdk-inp input { flex:1; background:transparent; border:none; outline:none; color:var(--text); font-family:var(--font-body);
    font-size:16px; letter-spacing:-0.01em; }
  .cmdk-inp input::placeholder { color:var(--text-4); }
  .cmdk-esc { font-family:var(--font-mono); font-size:10px; color:var(--text-4); border:1px solid var(--border); border-radius:4px; padding:2px 6px; }
  .cmdk-list { max-height:min(52vh,440px); overflow-y:auto; padding:6px; }
  .cmdk-row { display:flex; align-items:center; gap:12px; padding:9px 12px; border-radius:var(--radius-lg); cursor:pointer; }
  .cmdk-row.sel { background:var(--accent-dim); }
  .cmdk-ic { font-family:var(--font-mono); font-size:12px; color:var(--text-4); width:16px; text-align:center; flex:0 0 auto; }
  .cmdk-row.sel .cmdk-ic { color:var(--accent-ink); }
  .cmdk-t { flex:1; color:var(--text); font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cmdk-s { font-family:var(--font-mono); font-size:11px; color:var(--text-4); text-transform:uppercase; letter-spacing:0.05em; flex:0 0 auto; }
  .cmdk-empty { padding:26px; text-align:center; color:var(--text-4); font-size:13px; }
  .cmdk-foot { display:flex; gap:18px; padding:9px 15px; border-top:1px solid var(--border); background:var(--bg-2); }
  .cmdk-foot span { font-size:11px; color:var(--text-4); } .cmdk-foot b { font-family:var(--font-mono); color:var(--text-3); font-weight:400; }
  /* ⌘K palette — refined visual pass (overrides above) */
  .cmdk-ov { padding-top:11vh; background:rgba(4,5,7,0.55); }
  .cmdk-box { width:min(600px,94vw); border:1px solid var(--border-strong); border-radius:16px;
    box-shadow:0 24px 70px -18px rgba(0,0,0,0.8), 0 2px 8px rgba(0,0,0,0.5), var(--hair-top); }
  .cmdk-inp { padding:17px 18px; gap:13px; }
  .cmdk-inp svg { width:18px; height:18px; color:var(--text-3); }
  .cmdk-inp input { font-size:16px; letter-spacing:-0.01em; }
  .cmdk-esc { font-size:10px; letter-spacing:.08em; color:var(--text-4); padding:3px 7px; }
  .cmdk-list { max-height:min(58vh,460px); padding:8px 8px 10px; }
  .cmdk-sec { font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase;
    color:var(--text-4); padding:12px 12px 6px; }
  .cmdk-list .cmdk-sec:first-child { padding-top:6px; }
  .cmdk-row { position:relative; gap:13px; padding:9px 12px 9px 11px; border-radius:10px; }
  .cmdk-row.sel { background:var(--accent-dim); }
  .cmdk-row.sel::before { content:""; position:absolute; left:3px; top:8px; bottom:8px; width:2px;
    border-radius:2px; background:var(--accent); box-shadow:0 0 8px -1px var(--accent); }
  .cmdk-ic { width:30px; height:30px; display:flex; align-items:center; justify-content:center; border-radius:8px;
    background:var(--surface-2); border:1px solid var(--border-faint); color:var(--text-3); flex:0 0 auto; }
  .cmdk-ic svg { width:15px; height:15px; }
  .cmdk-row.sel .cmdk-ic { color:var(--accent-strong); border-color:rgba(201,168,124,0.3); background:rgba(201,168,124,0.08); }
  .cmdk-ic.ic-action { color:var(--ok); } .cmdk-row.sel .cmdk-ic.ic-action { color:var(--ok); }
  .cmdk-t { font-size:14px; color:var(--text); }
  .cmdk-row.sel .cmdk-t { color:var(--text); }
  .cmdk-s { font-size:10px; color:var(--text-4); letter-spacing:.06em; }
  .cmdk-go { font-family:var(--font-mono); font-size:12px; color:var(--accent-ink); opacity:0; width:14px; text-align:center; flex:0 0 auto; }
  .cmdk-row.sel .cmdk-go { opacity:.9; }
  .cmdk-empty { display:flex; flex-direction:column; align-items:center; gap:10px; padding:38px 26px; color:var(--text-4); font-size:14px; }
  .cmdk-empty-ic { font-size:26px; opacity:.5; }
  .cmdk-foot { padding:10px 16px; }
  .cmdk-t mark { background:transparent; color:var(--accent-strong); font-weight:600; }
  .modal-overlay { position:fixed; inset:0; background:rgba(5,6,8,0.72); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center; z-index:80; padding:20px; }
  .modal { background:var(--surface); border:1px solid var(--border-strong); border-radius:12px;
    width:100%; max-width:560px; padding:28px; box-shadow:0 40px 90px rgba(0,0,0,0.7); max-height:90vh; overflow:auto; }
  .modal h3 { font-family:var(--font-serif); font-weight:400; font-size:1.5rem; color:var(--text); margin:6px 0 4px; }
  .modal .close-x { float:right; height:30px; width:30px; padding:0; border-radius:8px; background:color-mix(in srgb,var(--text) 3%,transparent);
    border:1px solid var(--border); color:var(--text-2); font-size:16px; }
  .modal.modal-sm { max-width:432px; padding:24px 26px; }
  .modal.modal-sm h3 { font-size:1.28rem; margin:2px 0 0; }
  .btn-danger { background:rgba(224,108,96,0.12); border:1px solid rgba(224,108,96,0.42); color:#eaa39b; }
  .btn-danger:hover { background:rgba(224,108,96,0.2); border-color:rgba(224,108,96,0.6); color:#f4c4bd; transform:none; }
  .steps { display:flex; gap:8px; margin:16px 0 20px; }
  .step-dot { flex:1; height:3px; border-radius:2px; background:var(--border); }
  .step-dot.on { background:var(--accent); }
  .auth-wrap { max-width:404px; margin:0 auto; min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; justify-content:center; padding:40px 20px; }
  .auth-foot { text-align:center; font-family:var(--font-mono); font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); margin:20px 0 0; }
  .method-card { display:flex; gap:12px; align-items:flex-start; padding:14px; border:1px solid var(--border);
    border-radius:var(--radius-lg); margin-bottom:10px; cursor:pointer; transition:border-color .15s var(--ease), background .15s var(--ease); }
  .method-card:hover { border-color:var(--border-strong); }
  .method-card.sel { border-color:rgba(201,168,124,0.6); background:rgba(201,168,124,0.06); }
  .method-card .mc-radio { width:16px; height:16px; border-radius:50%; border:2px solid var(--text-4); flex:0 0 auto; margin-top:2px; }
  .method-card.sel .mc-radio { border-color:var(--accent); background:radial-gradient(circle at center, var(--accent) 40%, transparent 46%); }
  .method-card .mc-title { color:var(--text); font-weight:500; }
  .method-card .mc-desc { color:var(--text-4); font-size:12px; margin-top:2px; }
  .instr-box { background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px; margin:14px 0; }
  .instr-row { margin-bottom:12px; } .instr-row:last-child { margin-bottom:0; }
  .instr-label { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.16em; color:var(--accent-ink); margin-bottom:5px; }
  .copy-field { display:flex; gap:8px; align-items:center; }
  .copy-field code { flex:1; padding:8px 10px; }
  /* --- live scan-progress tree --- */
  .scanhead { font-family:var(--font-mono); font-size:11px; color:var(--text-3); letter-spacing:0.04em; margin:6px 2px 10px; }
  .scanhead b { color:var(--accent-ink); }
  .scanning-lbl { color:var(--accent-ink); display:inline-flex; align-items:center; gap:5px; }
  .sst { display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; margin-right:2px; font-size:11px; flex:0 0 auto; }
  .sst.done { color:#5FB98A; } .sst.pending { color:var(--text-4); } .sst.scanning { }
  .hnode.st-scanning > .hnode-head { background:rgba(201,168,124,0.06); }
  .hnode.st-pending > .hnode-head { opacity:0.6; }
  .tree-loading { padding:9px 14px; color:var(--text-4); font-size:13px; display:flex; align-items:center; gap:7px; }
  .tsec { margin:2px 0 6px; }
  .tsec-h { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:0.14em; color:var(--accent-ink); margin:8px 0 4px 12px; }
  .tsec-h b { color:var(--text-3); margin-left:6px; }
  .titem { display:flex; align-items:center; gap:8px; padding:2px 14px 2px 20px; font-family:var(--font-mono); font-size:12px; color:var(--text-2); border-left:1px solid var(--border); margin-left:16px; }
  .titem:hover { background:var(--surface-2); }
  .tcode { flex:0 0 auto; width:30px; font-size:11px; font-weight:600; }
  .tcode.c2{color:#5FB98A}.tcode.c3{color:#6AA0D8}.tcode.c4{color:#CBB26A}.tcode.c5{color:var(--crit)}
  .tpath { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .tpath.ep { color:var(--text-3); }
  .tparams { display:flex; flex-wrap:wrap; gap:5px; padding:2px 14px 4px 20px; margin-left:16px; border-left:1px solid var(--border); }
  .tparam { font-family:var(--font-mono); font-size:11px; color:var(--accent-ink); background:rgba(201,168,124,0.08); border:1px solid rgba(201,168,124,0.2); border-radius:5px; padding:1px 7px; }
  .tmore { padding:3px 14px 3px 20px; margin-left:16px; font-size:11px; color:var(--text-4); border-left:1px solid var(--border); }
  .dock:not(.collapsed) #sd_activity, .dock:not(.collapsed) #sd_chat { flex:1 1 0; min-height:0; max-height:none; }
  /* console tabs: keep the human Chat thread separate from the telemetry Activity feed */
  .dock-tabs { display:flex; gap:2px; padding:0 12px; border-bottom:1px solid var(--border); flex:0 0 auto; }
  .dock.collapsed .dock-tabs { display:none; }
  .dock-tabs button { height:32px; background:none; border:0; border-bottom:2px solid transparent; border-radius:0; color:var(--text-4); padding:0 12px; font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
  .dock-tabs button:hover { color:var(--text-2); }
  .dock-tabs button.active { color:var(--text); border-bottom-color:var(--accent); }
  .dtab-badge { min-width:16px; height:16px; padding:0 5px; border-radius:8px; background:var(--accent); color:var(--bg); font-size:10px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; }
  .dtab-badge.q { background:var(--high); animation:qpulse 1.3s ease infinite; }
  @keyframes qpulse { 0%,100%{opacity:1} 50%{opacity:.55} }
  #sd_chat { padding:8px 0; }
  #sd_chat:empty::before { content:"Your conversation with the operator appears here — ask about progress, steer the agent, or answer its permission requests. Telemetry stays in the Activity tab."; display:block; padding:16px 18px; color:var(--text-4); font-size:12px; line-height:1.6; }
  .del-x { background:none; border:none; color:var(--text-4); cursor:pointer; font-size:13px; padding:2px 7px; border-radius:5px; line-height:1; }
  .del-x:hover { color:var(--crit); background:rgba(224,108,108,0.1); }
  /* --- operator console input (steering + chat) --- */
  .op-input { flex:0 0 auto; display:flex; gap:8px; padding:8px 12px; border-top:1px solid var(--border-strong); background:var(--bg-2); }
  .op-input input { flex:1; min-width:0; background:var(--ink-2); border:1px solid var(--border); color:var(--text); border-radius:8px; padding:8px 11px; font-size:13px; font-family:var(--font-mono); }
  .op-input input:focus { outline:none; border-color:var(--accent); }
  .op-input button { flex:0 0 auto; background:var(--accent); color:#0a0a0a; border:none; border-radius:8px; padding:0 16px; font-size:12px; font-weight:600; cursor:pointer; }
  .op-input button:hover { background:var(--accent-strong); }
  /* operator chat history (threads) */
  .op-topbtns { display:flex; gap:8px; align-items:center; }
  .op-hist-wrap { position:relative; }
  .op-hist { position:absolute; right:0; top:calc(100% + 6px); width:264px; max-height:min(60vh,380px); overflow:auto; background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-lg); box-shadow:0 20px 50px rgba(0,0,0,.5); z-index:60; padding:6px; }
  .op-hrow { display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:var(--radius); cursor:pointer; }
  .op-hrow:hover { background:var(--surface-2); }
  .op-hrow.cur { background:rgba(201,168,124,0.1); }
  .op-hname { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; color:var(--text-2); }
  .op-hdel { flex:0 0 auto; background:none; border:none; color:var(--text-4); font-size:15px; line-height:1; cursor:pointer; padding:0 4px; }
  .op-hdel:hover { color:var(--crit); }
  .op-hempty { padding:16px; text-align:center; color:var(--text-4); font-size:12px; }
  .dock.collapsed .op-input { display:none; }
  .ev.kind-you .k, .ev.kind-operator .k { color:var(--accent-ink); font-weight:600; }
  .ev.kind-steer .k { color:#5FB98A; } .ev.kind-assistant .k { color:#6AA0D8; }
  .ev.kind-assistant .msg, .ev.kind-steer .msg { color:var(--text-2); white-space:pre-wrap; }
  /* first-class steering strip */
  .op-steer-head { display:flex; align-items:center; gap:8px; padding:9px 12px 0; }
  .op-steer-lbl { font-family:var(--font-mono); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-4); }
  /* pending-consent banner (agent is blocked, waiting for your decision) */
  .op-pending { display:flex; align-items:center; gap:8px; padding:8px 12px; background:rgba(224,108,108,0.12); border-top:1px solid var(--high); cursor:pointer; font-family:var(--font-mono); font-size:12px; color:var(--text); }
  .op-pending:hover { background:rgba(224,108,108,0.18); }
  .op-pending .opp-dot { width:8px; height:8px; border-radius:50%; background:var(--high); flex:0 0 auto; animation:qpulse 1.3s ease infinite; }
  .op-pending .opp-lbl { color:var(--high); font-weight:600; text-transform:uppercase; letter-spacing:.08em; font-size:10px; flex:0 0 auto; }
  .op-pending .opp-text { color:var(--text-2); flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .op-pending .opp-go { color:var(--accent-ink); flex:0 0 auto; }
  .op-pending[hidden] { display:none; }
  .op-live { display:inline-flex; align-items:center; gap:6px; margin-left:auto; font-family:var(--font-mono); font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-strong); }
  .op-live[hidden] { display:none; }
  .op-live-dot { width:6px; height:6px; border-radius:50%; background:var(--accent-strong); animation:aspulse 1.5s var(--ease) infinite; }
  .op-chips { display:flex; gap:6px; flex-wrap:wrap; padding:8px 12px 2px; }
  .op-chips button { background:var(--surface-2); border:1px solid var(--border); color:var(--text-3); font-family:var(--font-mono); font-size:10px; letter-spacing:.02em; padding:4px 10px; height:auto; border-radius:999px; cursor:pointer; transition:border-color .15s var(--ease), color .15s var(--ease); }
  .op-chips button:hover { border-color:var(--accent); color:var(--accent-ink); transform:none; background:var(--surface-2); }

/* --- Extended signup form: optional-label tag, password strength meter, terms --- */
.lbl-opt { font-family:var(--font-mono); font-size:10px; letter-spacing:.04em; text-transform:uppercase;
           color:var(--text-3); border:1px solid var(--border); border-radius:999px; padding:1px 6px; margin-left:6px; vertical-align:middle; }
.pw-meter { height:4px; border-radius:999px; background:var(--surface-2); overflow:hidden; margin:-6px 0 6px; }
.pw-bar { display:block; height:100%; width:0; border-radius:999px; transition:width .25s var(--ease), background-color .25s var(--ease); }
.pw-bar.s1 { width:25%;  background:#E5484D; }
.pw-bar.s2 { width:50%;  background:#F5A623; }
.pw-bar.s3 { width:75%;  background:#E2C044; }
.pw-bar.s4 { width:100%; background:#46A758; }
.pw-hint { font-family:var(--font-mono); font-size:11px; letter-spacing:.02em; color:var(--text-3); min-height:14px; margin:-2px 0 10px; }
.terms-row { display:flex; align-items:flex-start; gap:9px; margin:4px 0 14px; cursor:pointer;
             font-size:13px; line-height:1.5; color:var(--text-3); }
.terms-row input[type=checkbox] { margin-top:2px; width:15px; height:15px; accent-color:var(--accent); flex:0 0 auto; cursor:pointer; }
.terms-row a { color:#C9A87C; text-decoration:none; }
.terms-row a:hover { text-decoration:underline; }

/* --- Signup: true two-column grid form, wider card, internal scroll --- */
.auth-card { max-height:calc(100vh - 48px); max-height:calc(100dvh - 48px); overflow-y:auto; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
.auth-card::-webkit-scrollbar { width:8px; }
.auth-card::-webkit-scrollbar-thumb { background:var(--border); border-radius:8px; }

/* Signup mode: widen the card and lay the fields out in two columns. */
.auth-card.signup { max-width:544px; }
.auth-card.signup #mainForm { display:grid; grid-template-columns:1fr 1fr; column-gap:16px; row-gap:0; align-items:start; }
/* let the toggled wrappers' children participate directly in the form grid */
.auth-card.signup #signupFields, .auth-card.signup #signupExtra { display:contents; }
.auth-card.signup #mainForm .auth-field { margin-bottom:13px; min-width:0; }
.auth-card.signup #mainForm input { height:44px; }
/* full-width rows inside the grid (meter, terms, captcha, submit, 2FA, forgot link) */
.su-span { grid-column:1 / -1; }
.auth-card.signup .pw-wrap { margin:-4px 0 9px; }
.auth-card.signup .pw-meter { margin:0 0 6px; }
.auth-card.signup .pw-hint { margin:0 0 2px; }
.auth-card.signup .terms-row { margin:2px 0 14px; }

@media (max-width:560px){
  .auth-card.signup { max-width:100%; }
  .auth-card.signup #mainForm { grid-template-columns:1fr; }  /* collapse to one column on small screens */
}

/* ===== Demo scan (free tier) ===== */
.ns-democard { border-color:rgba(201,168,124,0.4); background:linear-gradient(180deg,rgba(201,168,124,0.08),transparent); }
.ns-democard:hover { border-color:var(--accent); }
.ns-free { margin-left:8px; font-family:var(--font-mono); font-size:9px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--accent-ink); border:1px solid rgba(201,168,124,0.4); border-radius:999px; padding:1px 7px; vertical-align:middle; }
.ns-typecard.ns-locked { opacity:.5; }
.ns-typecard.ns-locked::after { content:"upgrade"; position:absolute; top:12px; right:12px; font-family:var(--font-mono);
  font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-4); }
.ns-typecard { position:relative; }

#ns-demo .demo-hd { max-width:640px; }
.demo-sub { color:var(--text-3); font-size:14px; line-height:1.6; margin:12px 0 0; }
.demo-sub b { color:var(--text-2); }
.demo-form { display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap; margin:26px 0 8px; max-width:640px; }
.demo-back { margin-top:16px; }
.demo-back a { color:var(--accent-ink); text-decoration:none; font-size:13px; }

/* demo report */
.demo-hero { display:grid; grid-template-columns:minmax(200px,260px) 1fr; gap:24px; align-items:center;
  background:linear-gradient(180deg,rgba(201,168,124,0.07),var(--surface)); border:1px solid rgba(201,168,124,0.28);
  border-radius:16px; padding:28px 30px; }
.demo-eyebrow { font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); }
.demo-hero-n { font-family:var(--font-serif); font-size:64px; line-height:1; color:var(--text); margin:8px 0 4px; }
.demo-hero-lbl { color:var(--text-3); font-size:13px; line-height:1.4; max-width:200px; }
.demo-up-h { font-family:var(--font-serif); font-size:20px; color:var(--text); margin-bottom:8px; line-height:1.25; }
.demo-up-b { color:var(--text-3); font-size:14px; line-height:1.6; margin-bottom:16px; }
.demo-cta { }
.demo-catbar { display:flex; flex-wrap:wrap; gap:8px; margin:20px 0 6px; }
.demo-catpill { font-family:var(--font-mono); font-size:11px; color:var(--text-3); background:var(--surface-2);
  border:1px solid var(--border); border-radius:999px; padding:5px 12px; }
.demo-catpill b { color:var(--accent-ink); margin-left:2px; }
.demo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; margin-top:14px; }
.demo-card { background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:16px 18px; position:relative; }
.demo-card-top { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.dsev { font-family:var(--font-mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; padding:2px 8px;
  border-radius:999px; color:#0A0B0D; font-weight:600; }
.dsev.sev-critical { background:var(--crit); } .dsev.sev-high { background:var(--high); }
.dsev.sev-medium { background:var(--med); } .dsev.sev-low { background:var(--low); }
.demo-cat { font-family:var(--font-mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); }
.demo-lock { margin-left:auto; font-family:var(--font-mono); font-size:10px; color:var(--text-4); letter-spacing:.04em; }
.demo-card-title { font-size:15px; color:var(--text); font-weight:500; line-height:1.35; margin-bottom:6px; }
.demo-card-target { font-family:var(--font-mono); font-size:12px; color:var(--accent-ink); margin-bottom:8px; word-break:break-all; }
.demo-card-hyp { font-size:13px; color:var(--text-3); line-height:1.55; }
.demo-card-impact { margin-top:10px; font-size:12px; color:var(--text-2); line-height:1.5;
  border-top:1px solid var(--border-faint); padding-top:9px; }
.demo-card-impact span { font-family:var(--font-mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-4); display:block; margin-bottom:3px; }
.demo-foot { display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  margin-top:26px; padding:22px 26px; background:linear-gradient(180deg,rgba(201,168,124,0.06),var(--surface));
  border:1px solid rgba(201,168,124,0.28); border-radius:14px; }
.demo-foot-t { font-family:var(--font-serif); font-size:17px; color:var(--text); }
@media (max-width:640px){ .demo-hero{ grid-template-columns:1fr; } }

/* ===== Public "Request a quote" page ===== */
#quoteView{ position:fixed; inset:0; z-index:200; overflow-y:auto; background:var(--bg);
  background-image:radial-gradient(1100px 500px at 80% -10%, rgba(201,168,124,0.07), transparent 60%); }
.q-wrap{ max-width:920px; margin:0 auto; padding:26px 24px 90px; }
.q-head{ display:flex; align-items:center; justify-content:space-between; padding:6px 0 24px; }
.q-brand{ font-family:var(--font-mono); font-size:13px; letter-spacing:.42em; color:var(--text); font-weight:600; }
.q-brand .q-dot{ color:var(--accent-ink); }
.q-brand-sub{ color:var(--text-4); }
.q-close{ font-size:13px; color:var(--accent-ink); text-decoration:none; }
.q-hero{ max-width:640px; margin:8px 0 34px; }
.q-title{ font-family:var(--font-serif); font-weight:500; font-size:2.4rem; line-height:1.08; letter-spacing:-0.015em;
  color:var(--text); margin:14px 0 12px; text-wrap:balance; }
.q-sub{ color:var(--text-3); font-size:15px; line-height:1.62; margin:0; }
.q-form{ display:flex; flex-direction:column; gap:18px; }
.q-sec{ background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:24px 26px; }
.q-sec-h{ display:flex; align-items:center; gap:12px; font-family:var(--font-serif); font-size:1.12rem; color:var(--text); margin-bottom:18px; }
.q-sec-n{ font-family:var(--font-mono); font-size:11px; letter-spacing:.1em; color:var(--accent-ink);
  border:1px solid rgba(201,168,124,0.35); border-radius:6px; padding:3px 8px; }
.q-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px 18px; }
.q-field{ display:flex; flex-direction:column; gap:7px; min-width:0; }
.q-lbl{ font-family:var(--font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); }
.q-hint{ font-size:12px; color:var(--text-4); }
.q-block{ display:flex; flex-direction:column; gap:9px; }
.q-form input, .q-form select, .q-form textarea{ width:100%; height:44px; padding:0 13px; background:color-mix(in srgb,var(--text) 4.5%,transparent);
  border:1px solid var(--border); color:var(--text); border-radius:var(--radius-lg); font-size:14px; }
.q-form textarea{ height:auto; padding:12px 13px; line-height:1.5; resize:vertical; }
.q-form input:focus, .q-form select:focus, .q-form textarea:focus{ outline:none; border-color:var(--accent); background:color-mix(in srgb,var(--text) 6%,transparent); }
.q-checks{ display:flex; flex-wrap:wrap; gap:8px; }
.q-chk{ display:inline-flex; align-items:center; gap:8px; padding:8px 13px; border:1px solid var(--border);
  border-radius:999px; background:var(--surface-2); cursor:pointer; font-size:13px; color:var(--text-2); transition:.15s var(--ease); }
.q-chk:hover{ border-color:var(--accent); }
.q-chk input{ width:15px; height:15px; accent-color:var(--accent); }
.q-chk:has(input:checked){ border-color:var(--accent); color:var(--text); background:var(--accent-dim); }
.q-cond{ transition:opacity .2s var(--ease); }
.q-estimate{ display:flex; align-items:center; gap:22px; flex-wrap:wrap; margin-top:4px;
  background:linear-gradient(180deg,rgba(201,168,124,0.08),var(--surface)); border:1px solid rgba(201,168,124,0.3);
  border-radius:16px; padding:22px 26px; }
.q-est-lbl{ font-family:var(--font-mono); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:6px; }
.q-est-val{ font-family:var(--font-serif); font-size:2rem; color:var(--text); line-height:1; font-variant-numeric:tabular-nums; }
.q-est-note{ flex:1; min-width:220px; color:var(--text-3); font-size:13px; line-height:1.55; }
.q-est-note b{ color:var(--text-2); }
.q-actions{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-top:6px; }
.q-submit{ height:48px; padding:0 30px; font-size:15px; }
.q-fine{ color:var(--text-4); font-size:13px; }
.q-thanks{ text-align:center; max-width:560px; margin:60px auto; }
.q-thanks-ic{ width:60px; height:60px; margin:0 auto 20px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:28px; color:var(--bg); background:var(--accent); }
.auth-quote-link{ margin-top:12px; font-size:13px; color:var(--text-4); }
.auth-quote-link a{ color:var(--accent-ink); text-decoration:none; }
@media (max-width:560px){ .q-title{ font-size:1.9rem; } .q-sec{ padding:20px 18px; } }

/* ===== Demo scan wizard (mirrors API wizard) ===== */
.dw-seg3{ display:inline-flex; gap:2px; background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:3px; }
.dw-seg3 button{ height:36px; padding:0 18px; border:none; background:transparent; color:var(--text-3);
  font-family:var(--font-mono); font-size:12px; letter-spacing:.04em; border-radius:8px; cursor:pointer; transition:.15s var(--ease); }
.dw-seg3 button.on{ background:var(--btn-bg); color:var(--btn-fg); }
.dw-roles{ display:flex; flex-direction:column; gap:8px; }
.dw-role{ display:flex; gap:8px; align-items:center; }
.dw-role .apw-input{ margin:0; }
.dw-review{ border:1px solid var(--border); border-radius:12px; overflow:hidden; margin:6px 0 6px; }
.dw-rev-row{ display:flex; gap:16px; padding:11px 16px; border-bottom:1px solid var(--border-faint); }
.dw-rev-row:last-child{ border-bottom:none; }
.dw-rev-row .k{ flex:0 0 120px; font-family:var(--font-mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-4); padding-top:2px; }
.dw-rev-row .v{ color:var(--text); font-size:14px; line-height:1.5; }
.q-chk.on{ border-color:var(--accent); color:var(--text); background:var(--accent-dim); }

/* demo wizard: host hint */
.apw-fhint{ display:block; margin-top:7px; font-size:12px; color:var(--text-4); line-height:1.5; }
.dw-hosthint{ margin-top:8px; font-size:13px; font-family:var(--font-mono); }
.dw-hosthint.ok{ color:var(--ok); }
.dw-hosthint.bad{ color:var(--high); }

/* ===== Quote wizard (two-pane: live price + steps) ===== */
.qz-shell{ max-width:1060px; margin:0 auto; padding:26px 24px 90px; }
.qz-layout{ display:grid; grid-template-columns:308px 1fr; gap:30px; align-items:start; margin-top:20px; }
.qz-price{ position:sticky; top:24px; background:linear-gradient(180deg,rgba(201,168,124,0.09),var(--surface));
  border:1px solid rgba(201,168,124,0.28); border-radius:18px; padding:26px 24px; }
.qz-price-eyebrow{ font-family:var(--font-mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-ink); }
.qz-price-row{ display:flex; align-items:flex-start; gap:3px; margin-top:10px; color:var(--text); }
.qz-cur{ font-family:var(--font-serif); font-size:26px; line-height:1; margin-top:8px; color:var(--accent-strong); }
.qz-price-val{ font-family:var(--font-serif); font-size:58px; line-height:.95; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.qz-price-per{ font-family:var(--font-mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--text-4); margin-top:4px; }
.qz-price-sub{ color:var(--text-3); font-size:13px; margin-top:14px; line-height:1.5; }
.qz-steps{ display:flex; flex-direction:column; gap:2px; margin:22px 0; border-top:1px solid var(--border); padding-top:18px; }
.qz-step{ display:flex; align-items:center; gap:11px; font-size:13px; color:var(--text-4); padding:6px 0; }
.qz-step .d{ width:8px; height:8px; border-radius:50%; border:1px solid var(--text-4); flex:0 0 auto; }
.qz-step.cur{ color:var(--text); } .qz-step.cur .d{ background:var(--accent); border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-dim); }
.qz-step.done{ color:var(--text-3); } .qz-step.done .d{ background:var(--accent); border-color:var(--accent); }
.qz-price-note{ font-size:12px; color:var(--text-4); line-height:1.55; }
.qz-price-note b{ color:var(--text-3); }
.qz-main{ min-width:0; }
.qz-card{ background:var(--surface); border:1px solid var(--border); border-radius:18px; padding:30px 32px; }
.qz-h{ font-family:var(--font-serif); font-weight:500; font-size:1.7rem; line-height:1.12; color:var(--text); letter-spacing:-.01em; margin-bottom:8px; text-wrap:balance; }
.qz-p{ color:var(--text-3); font-size:14px; line-height:1.6; margin:0 0 22px; max-width:56ch; }
.qz-field{ display:flex; flex-direction:column; gap:7px; margin-bottom:16px; }
.qz-lbl{ font-family:var(--font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-4); }
.qz-hint{ font-size:12px; color:var(--text-4); }
.qz-grid2{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.qz-main input, .qz-main select, .qz-main textarea{ width:100%; height:46px; padding:0 14px; background:color-mix(in srgb,var(--text) 4.5%,transparent);
  border:1px solid var(--border); color:var(--text); border-radius:var(--radius-lg); font-size:14px; }
.qz-main textarea{ height:auto; padding:12px 14px; line-height:1.5; resize:vertical; }
.qz-main input:focus, .qz-main select:focus, .qz-main textarea:focus{ outline:none; border-color:var(--accent); background:color-mix(in srgb,var(--text) 6%,transparent); }
.qz-api{ border:1px solid var(--border); border-radius:14px; padding:20px 20px 8px; margin-bottom:16px; background:var(--bg-2); }
.qz-api-hd{ font-family:var(--font-mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:14px; }
.qz-seg{ display:inline-flex; gap:2px; background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:3px; }
.qz-seg button{ height:36px; padding:0 16px; border:none; background:transparent; color:var(--text-3); font-family:var(--font-mono);
  font-size:12px; border-radius:8px; cursor:pointer; transition:.15s var(--ease); }
.qz-seg button.on{ background:var(--btn-bg); color:var(--btn-fg); }
.qz-nav{ display:flex; align-items:center; justify-content:space-between; margin-top:22px; }
.qz-next{ height:46px; padding:0 26px; }
.qz-review{ border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-top:6px; }
.qz-rev-row{ display:flex; justify-content:space-between; gap:16px; padding:11px 16px; border-bottom:1px solid var(--border-faint); font-size:14px; color:var(--text-3); }
.qz-rev-row b{ color:var(--text); }
.qz-rev-row:last-child{ border-bottom:none; }
.qz-rev-row.total{ background:var(--accent-dim); } .qz-rev-row.total b{ color:var(--accent-strong); font-family:var(--font-serif); font-size:16px; }
@media (max-width:820px){ .qz-layout{ grid-template-columns:1fr; } .qz-price{ position:static; } .qz-grid2{ grid-template-columns:1fr; } }

/* ===== Public pricing page ===== */
#pricingView{ position:fixed; inset:0; z-index:200; overflow-y:auto; background:var(--bg);
  background-image:radial-gradient(1200px 560px at 50% -12%, rgba(201,168,124,0.08), transparent 62%); }
.pp-shell{ max-width:1080px; margin:0 auto; padding:26px 24px 90px; }
.pp-hero{ text-align:center; max-width:660px; margin:24px auto 40px; }
.pp-title{ font-family:var(--font-serif); font-weight:500; font-size:2.7rem; line-height:1.06; letter-spacing:-.02em; color:var(--text); margin:14px 0 14px; text-wrap:balance; }
.pp-sub{ color:var(--text-3); font-size:16px; line-height:1.62; margin:0; }
.pp-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; align-items:start; }
.pp-card{ position:relative; background:var(--surface); border:1px solid var(--border); border-radius:18px; padding:30px 26px; display:flex; flex-direction:column; }
.pp-pop{ border-color:rgba(201,168,124,0.5); background:linear-gradient(180deg,rgba(201,168,124,0.08),var(--surface));
  box-shadow:0 30px 80px -40px rgba(0,0,0,.9); }
.pp-badge{ position:absolute; top:-11px; left:50%; transform:translateX(-50%); background:var(--accent); color:#0A0B0D;
  font-family:var(--font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; padding:4px 12px; border-radius:999px; }
.pp-name{ font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent-ink); }
.pp-price{ display:flex; align-items:baseline; gap:6px; margin:14px 0 4px; flex-wrap:wrap; }
.pp-from{ font-family:var(--font-mono); font-size:12px; color:var(--text-4); }
.pp-amt{ font-family:var(--font-serif); font-size:46px; line-height:1; color:var(--text); letter-spacing:-.02em; }
.pp-per{ font-family:var(--font-mono); font-size:12px; color:var(--text-4); }
.pp-tag{ color:var(--text-3); font-size:14px; line-height:1.5; margin:6px 0 20px; min-height:40px; }
.pp-cta{ width:100%; height:46px; margin-bottom:22px; }
.pp-feats{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; }
.pp-feats li{ display:flex; gap:10px; align-items:flex-start; font-size:14px; color:var(--text-2); line-height:1.5; }
.pp-ck{ width:16px; height:16px; flex:0 0 16px; color:var(--accent-ink); margin-top:2px; }
.pp-note{ margin-top:30px; background:var(--bg-2); border:1px solid var(--border); border-radius:14px; padding:20px 24px;
  color:var(--text-3); font-size:13px; line-height:1.6; text-align:center; }
.pp-note b{ color:var(--text-2); } .pp-note a{ color:var(--accent-ink); text-decoration:none; }
@media (max-width:860px){ .pp-grid{ grid-template-columns:1fr; max-width:440px; margin:0 auto; } .pp-title{ font-size:2rem; } .pp-tag{ min-height:0; } }

  /* ===================== Onboarding / product tour ===================== */
  .ob-ov{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:24px;
    background:radial-gradient(1100px 640px at 50% -12%, rgba(201,168,124,0.12), transparent 60%), rgba(6,7,9,0.86);
    -webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);animation:obFade .38s var(--ease) both}
  @keyframes obFade{from{opacity:0}to{opacity:1}}
  .ob-ov.closing{animation:obFadeOut .3s var(--ease) both}
  @keyframes obFadeOut{to{opacity:0}}
  .ob-card{position:relative;width:min(960px,96vw);height:min(600px,90vh);display:flex;flex-direction:column;
    background:linear-gradient(180deg,color-mix(in srgb,var(--text) 2.5%,transparent),rgba(255,255,255,0) 42%),var(--surface);
    border:1px solid var(--border-strong);border-radius:var(--radius-xl);overflow:hidden;
    box-shadow:var(--shadow-pop),var(--hair-top);animation:obPop .5s var(--ease) both}
  @keyframes obPop{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
  .ob-skip{position:absolute;top:14px;right:14px;z-index:8;height:30px;padding:0 13px;font-size:12px;font-weight:500;
    background:color-mix(in srgb,var(--text) 5%,transparent);color:var(--text-3);border:1px solid var(--border);border-radius:100px}
  .ob-skip:hover{color:var(--text);background:color-mix(in srgb,var(--text) 9%,transparent);transform:none}
  .ob-body{flex:1 1 auto;min-height:0;position:relative}
  .ob-step{position:absolute;inset:0;display:none;grid-template-columns:1.02fr .98fr}
  .ob-step.active{display:grid}
  .ob-vis{position:relative;overflow:hidden;border-right:1px solid var(--border);
    display:flex;align-items:center;justify-content:center;
    background:radial-gradient(560px 420px at 32% 24%, rgba(201,168,124,0.09), transparent 62%),linear-gradient(158deg,var(--surface-2),var(--bg-2))}
  .ob-vis::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(rgba(236,226,214,0.018) 1px,transparent 1px),linear-gradient(90deg,rgba(236,226,214,0.018) 1px,transparent 1px);
    background-size:34px 34px;-webkit-mask-image:radial-gradient(circle at 40% 40%,#000,transparent 75%);mask-image:radial-gradient(circle at 40% 40%,#000,transparent 75%)}
  .ob-copy{padding:46px 44px 30px;display:flex;flex-direction:column;justify-content:center;min-width:0}
  .ob-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:14px}
  .ob-h{font-family:var(--font-serif);font-weight:500;font-size:29px;line-height:1.12;color:var(--text);margin:0 0 12px;letter-spacing:-.01em}
  .ob-h .g{color:var(--accent-strong)}
  .ob-p{font-size:14px;line-height:1.65;color:var(--text-2);margin:0 0 6px;max-width:42ch}
  .ob-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
  .ob-list li{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--text-2);line-height:1.45}
  .ob-list li b{color:var(--text);font-weight:600}
  .ob-num{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:var(--font-mono);font-size:11px;color:var(--accent-strong);background:rgba(201,168,124,0.12);border:1px solid rgba(201,168,124,0.32);margin-top:1px}
  .ob-chk{flex:0 0 auto;color:var(--accent-ink);margin-top:2px}
  .ob-chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}
  .ob-chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text);padding:7px 13px;border-radius:100px;
    background:color-mix(in srgb,var(--text) 3.5%,transparent);border:1px solid var(--border)}
  .ob-chip i{width:6px;height:6px;border-radius:50%;background:var(--sev,var(--accent));box-shadow:0 0 8px 0 var(--sev,var(--accent))}
  .ob-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
  .ob-cta button{height:44px}
  .ob-ghost{background:transparent;color:var(--text-2);border:1px solid var(--border);font-weight:500}
  .ob-ghost:hover{color:var(--text);background:color-mix(in srgb,var(--text) 5%,transparent);border-color:var(--border-strong)}
  /* footer: progress + nav */
  .ob-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;
    padding:16px 24px;border-top:1px solid var(--border);background:var(--bg-2)}
  .ob-dots{display:flex;gap:8px}
  .ob-dot{width:7px;height:7px;border-radius:50%;background:var(--border-strong);cursor:pointer;transition:all .3s var(--ease)}
  .ob-dot.on{background:var(--accent);box-shadow:0 0 9px -1px var(--accent);width:22px;border-radius:100px}
  .ob-nav{display:flex;gap:10px}
  .ob-nav button{height:36px}
  /* entrance stagger when a step becomes active */
  .ob-step.active .ob-copy>*{opacity:0;animation:obUp .55s var(--ease) forwards}
  .ob-step.active .ob-copy>*:nth-child(1){animation-delay:.06s}
  .ob-step.active .ob-copy>*:nth-child(2){animation-delay:.13s}
  .ob-step.active .ob-copy>*:nth-child(3){animation-delay:.20s}
  .ob-step.active .ob-copy>*:nth-child(4){animation-delay:.27s}
  .ob-step.active .ob-copy>*:nth-child(5){animation-delay:.34s}
  .ob-step.active .ob-list li{opacity:0;animation:obUp .5s var(--ease) forwards}
  .ob-step.active .ob-list li:nth-child(1){animation-delay:.28s}
  .ob-step.active .ob-list li:nth-child(2){animation-delay:.40s}
  .ob-step.active .ob-list li:nth-child(3){animation-delay:.52s}
  .ob-step.active .ob-list li:nth-child(4){animation-delay:.64s}
  .ob-step.active .ob-list li:nth-child(5){animation-delay:.76s}
  .ob-step.active .ob-chip{opacity:0;animation:obPopIn .5s var(--ease) forwards}
  .ob-step.active .ob-chip:nth-child(1){animation-delay:.30s}
  .ob-step.active .ob-chip:nth-child(2){animation-delay:.38s}
  .ob-step.active .ob-chip:nth-child(3){animation-delay:.46s}
  .ob-step.active .ob-chip:nth-child(4){animation-delay:.54s}
  .ob-step.active .ob-chip:nth-child(5){animation-delay:.62s}
  .ob-step.active .ob-chip:nth-child(6){animation-delay:.70s}
  @keyframes obUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  @keyframes obPopIn{from{opacity:0;transform:translateY(8px) scale(.94)}to{opacity:1;transform:none}}

  /* --- Visual 1: radar sweep with owl --- */
  .ob-radar{position:relative;width:230px;height:230px}
  .ob-radar .ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(201,168,124,0.22)}
  .ob-radar .ring.r2{inset:34px;border-color:rgba(201,168,124,0.16)}
  .ob-radar .ring.r3{inset:70px;border-color:rgba(201,168,124,0.12)}
  .ob-radar .sweep{position:absolute;inset:0;border-radius:50%;
    background:conic-gradient(from 0deg, rgba(201,168,124,0.34), transparent 62%);
    -webkit-mask:radial-gradient(circle,transparent 22px,#000 24px);mask:radial-gradient(circle,transparent 22px,#000 24px);
    animation:obSpin 3.4s linear infinite}
  @keyframes obSpin{to{transform:rotate(360deg)}}
  .ob-radar .core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:60px;height:60px;border-radius:50%;
    background:var(--owl-img) no-repeat center/70%,radial-gradient(circle,rgba(201,168,124,0.25),rgba(201,168,124,0.06));
    border:1px solid rgba(201,168,124,0.4);box-shadow:0 0 26px -4px rgba(201,168,124,0.5)}
  .ob-radar .blip{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--crit);box-shadow:0 0 10px 1px var(--crit);opacity:0}
  .ob-radar .blip.b1{left:66%;top:30%;animation:obBlip 3.4s linear infinite .3s}
  .ob-radar .blip.b2{left:32%;top:64%;background:var(--high);box-shadow:0 0 10px 1px var(--high);animation:obBlip 3.4s linear infinite 1.5s}
  .ob-radar .blip.b3{left:60%;top:70%;background:var(--med);box-shadow:0 0 10px 1px var(--med);animation:obBlip 3.4s linear infinite 2.4s}
  @keyframes obBlip{0%,12%{opacity:0;transform:scale(.4)}18%{opacity:1;transform:scale(1)}55%{opacity:.9}100%{opacity:0;transform:scale(.6)}}

  /* --- Visual 2: pipeline scan → reason → confirm --- */
  .ob-pipe{display:flex;align-items:center;gap:0;width:78%}
  .ob-pnode{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;position:relative}
  .ob-pdot{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--accent-strong);
    background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1);animation:obNode 3s var(--ease) infinite}
  .ob-pnode:nth-child(3) .ob-pdot{animation-delay:1s}
  .ob-pnode:nth-child(5) .ob-pdot{animation-delay:2s}
  @keyframes obNode{0%,66%,100%{border-color:var(--border);box-shadow:var(--shadow-1)}18%,40%{border-color:var(--accent);box-shadow:0 0 0 1px rgba(201,168,124,0.4),0 0 22px -4px rgba(201,168,124,0.55)}}
  .ob-plbl{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase}
  .ob-pconn{flex:0 0 34px;height:2px;position:relative;background:var(--border);overflow:hidden}
  .ob-pconn::after{content:"";position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:obFlow 3s linear infinite}
  .ob-pconn.d2::after{animation-delay:1s}
  @keyframes obFlow{from{transform:translateX(-120%)}to{transform:translateX(320%)}}

  /* --- Visual 3: spec doc being scanned --- */
  .ob-spec{position:relative;width:210px;height:250px;border-radius:12px;border:1px solid var(--border-strong);overflow:hidden;
    background:linear-gradient(180deg,var(--surface),var(--surface-2));box-shadow:var(--shadow-2)}
  .ob-spec .bar{height:9px;border-radius:100px;background:rgba(236,226,214,0.10);margin:0 18px 11px}
  .ob-spec .bar:first-child{margin-top:26px;width:52%;background:rgba(201,168,124,0.3)}
  .ob-spec .bar.s{width:82%}.ob-spec .bar.m{width:66%}.ob-spec .bar.l{width:90%}
  .ob-spec .scanline{position:absolute;left:0;right:0;height:34px;top:-34px;
    background:linear-gradient(180deg,transparent,rgba(201,168,124,0.20),transparent);
    border-top:1px solid rgba(201,168,124,0.6);animation:obScan 2.6s var(--ease) infinite}
  @keyframes obScan{0%{top:-34px}70%,100%{top:250px}}
  .ob-spec .lock{position:absolute;right:14px;bottom:14px;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;
    color:#0A0B0D;background:var(--accent);box-shadow:0 0 20px -3px rgba(201,168,124,0.6);animation:obPopBadge 2.6s var(--ease) infinite}
  @keyframes obPopBadge{0%,60%{transform:scale(0);opacity:0}72%{transform:scale(1.15);opacity:1}80%,100%{transform:scale(1);opacity:1}}

  /* --- Visual 4: coverage grid lighting up --- */
  .ob-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:220px}
  .ob-cell{aspect-ratio:1;border-radius:9px;background:var(--surface);border:1px solid var(--border);
    display:flex;align-items:center;justify-content:center;color:var(--text-4);animation:obCell 3.6s var(--ease) infinite}
  .ob-cell svg{width:18px;height:18px}
  .ob-cell:nth-child(1){animation-delay:.0s}.ob-cell:nth-child(2){animation-delay:.25s}
  .ob-cell:nth-child(3){animation-delay:.5s}.ob-cell:nth-child(4){animation-delay:.75s}
  .ob-cell:nth-child(5){animation-delay:1.0s}.ob-cell:nth-child(6){animation-delay:1.25s}
  .ob-cell:nth-child(7){animation-delay:1.5s}.ob-cell:nth-child(8){animation-delay:1.75s}
  .ob-cell:nth-child(9){animation-delay:2.0s}.ob-cell:nth-child(10){animation-delay:2.25s}
  .ob-cell:nth-child(11){animation-delay:2.5s}.ob-cell:nth-child(12){animation-delay:2.75s}
  @keyframes obCell{0%,80%,100%{border-color:var(--border);color:var(--text-4);background:var(--surface)}
    12%,30%{border-color:var(--accent);color:var(--accent-strong);background:rgba(201,168,124,0.10);box-shadow:0 0 16px -6px rgba(201,168,124,0.6)}}

  /* --- Visual 5: launch / confirmed shield --- */
  .ob-launch{position:relative;width:170px;height:170px;display:flex;align-items:center;justify-content:center}
  .ob-launch .halo{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,rgba(201,168,124,0.22),transparent 66%);animation:obBreathe 2.8s var(--ease) infinite}
  @keyframes obBreathe{50%{transform:scale(1.12);opacity:.7}}
  .ob-launch .disc{width:96px;height:96px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#0A0B0D;
    background:linear-gradient(145deg,var(--accent-strong),var(--accent));box-shadow:0 0 34px -6px rgba(201,168,124,0.7),var(--hair-top)}
  .ob-launch .disc svg{width:42px;height:42px}
  .ob-spark{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--accent-strong);opacity:0}
  .ob-spark.k1{top:8%;left:50%;animation:obSpark 2.6s var(--ease) infinite .1s}
  .ob-spark.k2{top:50%;left:92%;animation:obSpark 2.6s var(--ease) infinite .5s}
  .ob-spark.k3{top:88%;left:44%;animation:obSpark 2.6s var(--ease) infinite .9s}
  .ob-spark.k4{top:40%;left:6%;animation:obSpark 2.6s var(--ease) infinite 1.3s}
  @keyframes obSpark{0%{opacity:0;transform:scale(.2)}40%{opacity:1;transform:scale(1.3)}100%{opacity:0;transform:scale(.4)}}

  @media (max-width:760px){
    .ob-card{height:min(90vh,720px)}
    .ob-step{grid-template-columns:1fr;grid-template-rows:150px 1fr}
    .ob-vis{border-right:none;border-bottom:1px solid var(--border)}
    .ob-copy{padding:26px 24px 20px;overflow-y:auto}
    .ob-h{font-size:23px}
    .ob-radar{width:118px;height:118px}.ob-radar .ring.r2{inset:20px}.ob-radar .ring.r3{inset:40px}.ob-radar .core{width:38px;height:38px}
    .ob-spec{width:120px;height:150px}.ob-grid4{width:150px}.ob-launch{width:110px;height:110px}.ob-launch .disc{width:66px;height:66px}
    .ob-pipe{width:94%}.ob-pdot{width:40px;height:40px}
  }

  /* ===================== Attack-Surface API spec analyzer ===================== */
  .sapi-form{margin-bottom:18px}
  .sapi-formhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
  .sapi-or{display:flex;align-items:center;gap:12px;margin:12px 0;color:var(--text-4);font-size:11px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase}
  .sapi-or::before,.sapi-or::after{content:"";flex:1;height:1px;background:var(--border)}
  .sapi-row{display:flex;gap:14px;flex-wrap:wrap}
  .sapi-role{display:flex;gap:8px;align-items:center;margin-bottom:8px}
  .sapi-role .apw-input{flex:1;min-width:0}
  /* results */
  .sapi-head{margin-bottom:14px}
  .sapi-headtop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
  .sapi-base2{font-size:12px;color:var(--text-3);margin-top:4px}
  .sapi-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:100px;background:color-mix(in srgb,var(--text) 5%,transparent);color:var(--text-3);border:1px solid var(--border);vertical-align:middle;margin-left:6px}
  .sapi-badge.ai{background:rgba(201,168,124,.12);color:var(--accent-strong);border-color:rgba(201,168,124,.32)}
  .sapi-stats{display:flex;align-items:center;gap:26px;margin-top:16px;flex-wrap:wrap}
  .sapi-stat{display:flex;flex-direction:column;line-height:1.1}
  .sapi-stat b{font-size:26px;color:var(--text);font-variant-numeric:tabular-nums}
  .sapi-stat span{font-size:11px;color:var(--text-3);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;margin-top:3px}
  .sapi-sevrow{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
  .sapi-sevpill{font-family:var(--font-mono);font-size:11px;padding:5px 11px;border-radius:100px;background:var(--bg-2);border:1px solid var(--border);color:var(--text-2)}
  .sapi-sevpill b{color:var(--text)}
  .sapi-sevpill.sev-critical{border-color:color-mix(in srgb,var(--crit) 55%,transparent)} .sapi-sevpill.sev-critical b{color:var(--crit)}
  .sapi-sevpill.sev-high{border-color:color-mix(in srgb,var(--high) 55%,transparent)} .sapi-sevpill.sev-high b{color:var(--high)}
  .sapi-sevpill.sev-medium{border-color:color-mix(in srgb,var(--med) 55%,transparent)} .sapi-sevpill.sev-medium b{color:var(--med)}
  .sapi-sevpill.sev-low{border-color:color-mix(in srgb,var(--low) 55%,transparent)} .sapi-sevpill.sev-low b{color:var(--low)}
  .sapi-eplist{display:flex;flex-direction:column;gap:9px}
  .sapi-ep{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden;position:relative}
  .sapi-ep::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sev,var(--border-strong))}
  .sapi-ep.sev-l-critical{--sev:var(--crit)} .sapi-ep.sev-l-high{--sev:var(--high)} .sapi-ep.sev-l-medium{--sev:var(--med)} .sapi-ep.sev-l-low{--sev:var(--low)}
  .sapi-ep-h{display:flex;align-items:center;gap:12px;padding:12px 16px 12px 18px;cursor:pointer;user-select:none}
  .sapi-ep-h:hover{background:color-mix(in srgb,var(--text) 2%,transparent)}
  .sapi-m{flex:0 0 auto;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.04em;padding:3px 8px;border-radius:5px;background:color-mix(in srgb,var(--text) 6%,transparent);color:var(--text-2);min-width:52px;text-align:center}
  .sapi-m.m-get{color:var(--low);background:color-mix(in srgb,var(--low) 16%,transparent)}
  .sapi-m.m-post{color:var(--ok);background:color-mix(in srgb,var(--ok) 16%,transparent)}
  .sapi-m.m-put,.sapi-m.m-patch{color:var(--high);background:color-mix(in srgb,var(--high) 16%,transparent)}
  .sapi-m.m-delete{color:var(--crit);background:color-mix(in srgb,var(--crit) 16%,transparent)}
  .sapi-path{font-size:13px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
  .sapi-summ{font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}
  .sapi-count{flex:0 0 auto;margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--accent-strong);background:rgba(201,168,124,.14);border:1px solid rgba(201,168,124,.28);border-radius:100px;padding:1px 9px}
  .sapi-caret{flex:0 0 auto;color:var(--text-4);font-size:11px;transition:transform .2s var(--ease)}
  .sapi-ep.open .sapi-caret{transform:rotate(180deg)}
  .sapi-ep-body{display:none;padding:2px 16px 14px 18px;flex-direction:column;gap:10px}
  .sapi-ep.open .sapi-ep-body{display:flex}
  .sapi-issue{border-top:1px solid var(--border-faint);padding-top:10px}
  .sapi-issue-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
  .sapi-cat{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
  .sapi-ititle{font-size:14px;color:var(--text);font-weight:600}
  .sapi-why{font-size:13px;color:var(--text-2);line-height:1.55;margin-top:6px}
  .sapi-impact{font-size:13px;color:var(--text-3);line-height:1.5;margin-top:5px}
  .sapi-impact span{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-4);margin-right:6px}
  .sapi-loading{display:flex;align-items:center;gap:12px;color:var(--text-2);font-size:14px}
  .sapi-empty{color:var(--text-3);font-size:14px}
  @media (max-width:640px){ .sapi-summ{display:none} .sapi-stats{gap:18px} .sapi-sevrow{margin-left:0;width:100%} }

  /* ===== Attack-Surface analyzer — progressive form + brighter text ===== */
  .sapi-lead{color:var(--text-2);font-size:13px;line-height:1.55;margin:6px 0 0;max-width:60ch}
  /* stepped, reveal-as-you-go form */
  .sapi-step{border-top:1px solid var(--border);margin-top:18px;padding-top:18px}
  .sapi-step:first-of-type{border-top:none;margin-top:14px;padding-top:0}
  .sapi-step.locked{display:none}
  .sapi-step.revealing{animation:sapiReveal .42s var(--ease) both}
  @keyframes sapiReveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  .sapi-stephead{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
  .sapi-stepn{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--accent-strong);
    background:rgba(201,168,124,0.12);border:1px solid rgba(201,168,124,0.34)}
  .sapi-steptitle{color:var(--text);font-size:15px;font-weight:600;line-height:1.2}
  .sapi-steptitle .opt{margin-left:6px}
  .sapi-stepsub{color:var(--text-2);font-size:13px;line-height:1.5;margin-top:4px;max-width:64ch}
  .sapi-stepbody{padding-left:38px}
  @media (max-width:560px){ .sapi-stepbody{padding-left:0} }
  .sapi-addbtn{margin-top:10px}
  .sapi-note{margin-top:10px;font-size:12px;color:var(--text-2);background:rgba(201,168,124,0.06);
    border:1px solid var(--border);border-radius:var(--radius);padding:8px 11px}
  .sapi-note b{color:var(--text)}
  /* account row: role (free text) + username + password */
  .sapi-role{display:flex;gap:8px;align-items:center;margin-bottom:8px}
  .sapi-role .apw-input{flex:1 1 0;min-width:0}
  .sapi-role .sapi-role-name{flex:0 0 30%;min-width:130px}
  .sapi-ixph{width:30px;flex:0 0 30px}
  .apw-ix{flex:0 0 30px;width:30px;height:30px;border-radius:7px;padding:0;background:color-mix(in srgb,var(--text) 4%,transparent);
    color:var(--text-3);border:1px solid var(--border);font-size:13px}
  .apw-ix:hover{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 45%,transparent);background:rgba(224,108,96,0.08);transform:none}
  .sapi-run-row{margin-top:22px;display:flex;justify-content:flex-end}
  .sapi-run-row.locked{display:none}
  #sapi-run{width:auto;padding:13px 26px;margin:0}
  /* brighten reading text (was too grey) */
  .sapi-form .apw-flabel span{color:var(--text);font-weight:500}
  .sapi-form .apw-flabel .opt{color:var(--text-3);font-weight:400}
  .sapi-form .apw-input,.sapi-form .apw-textarea{color:var(--text)}
  .sapi-form .apw-input::placeholder,.sapi-form .apw-textarea::placeholder{color:var(--text-4)}
  .sapi-why{color:var(--text)!important}
  .sapi-summ{color:var(--text-2)!important}
  .sapi-impact{color:var(--text-2)!important}
  .sapi-cat{color:var(--text-2)!important}
  /* empty-state CTA (no assets → guide into the analyzer) */
  .sapi-empty-cta{max-width:560px;margin:8px auto 0;text-align:center;padding:34px 26px;
    border:1px solid var(--border);border-radius:var(--radius-xl);background:
    radial-gradient(600px 300px at 50% -20%, rgba(201,168,124,0.07), transparent 60%),var(--surface)}
  .sapi-empty-ic{width:56px;height:56px;margin:0 auto 16px;border-radius:14px;display:flex;align-items:center;justify-content:center;
    color:var(--accent-strong);background:rgba(201,168,124,0.12);border:1px solid rgba(201,168,124,0.3)}
  .sapi-empty-ic svg{width:26px;height:26px}
  .sapi-empty-h{color:var(--text);font-family:var(--font-serif);font-size:21px;font-weight:500;margin-bottom:10px}
  .sapi-empty-p{color:var(--text-2);font-size:14px;line-height:1.6;margin:0 auto 20px;max-width:44ch}
  .sapi-empty-cta button{padding:12px 24px}
  .sapi-empty-alt{color:var(--text-3);font-size:13px;margin-top:16px}

  /* ===================== API analysis: cards on the surface ===================== */
  .sapi-cardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-bottom:22px}
  .sapi-card{position:relative;border:1px solid var(--border);border-radius:var(--radius-xl);background:
    linear-gradient(180deg,rgba(255,255,255,0.02),transparent 45%),var(--surface);box-shadow:var(--shadow-1);
    padding:16px 16px 14px;cursor:pointer;transition:transform .16s var(--ease),border-color .16s var(--ease),box-shadow .16s var(--ease);overflow:hidden}
  .sapi-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sev,var(--border-strong))}
  .sapi-card:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-2)}
  .sapi-card-top{display:flex;align-items:flex-start;gap:10px}
  .sapi-card-ic{flex:0 0 auto;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--accent-strong);background:rgba(201,168,124,0.12);border:1px solid rgba(201,168,124,0.28)}
  .sapi-card-id{flex:1 1 auto;min-width:0}
  .sapi-card-t{color:var(--text);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sapi-card-b{color:var(--text-3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
  .sapi-card-x{flex:0 0 auto;width:24px;height:24px;padding:0;border-radius:6px;background:transparent;color:var(--text-4);border:none;font-size:15px}
  .sapi-card-x:hover{color:var(--crit);background:rgba(224,108,96,0.10);transform:none}
  .sapi-card-metrics{display:flex;gap:22px;margin:14px 0 10px}
  .sapi-card-metrics b{color:var(--text);font-size:20px;font-variant-numeric:tabular-nums}
  .sapi-card-metrics span{display:block;color:var(--text-3);font-size:10px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;margin-top:2px}
  .sapi-card-bar{display:flex;height:5px;border-radius:100px;overflow:hidden;background:color-mix(in srgb,var(--text) 5%,transparent);gap:1px}
  .sapi-card-bar.empty{background:color-mix(in srgb,var(--text) 4%,transparent)}
  .sapi-card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:11px;font-size:12px;color:var(--text-3)}
  .sapi-card-sev{display:inline-flex;align-items:center;gap:6px;text-transform:capitalize;color:var(--text-2)}
  .sapi-card-sev i{width:7px;height:7px;border-radius:50%;background:var(--sev,var(--accent));box-shadow:0 0 8px 0 var(--sev,var(--accent))}
  .sapi-addcard{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;
    border:1px dashed var(--border-strong);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--text) 1.5%,transparent);
    padding:20px;cursor:pointer;min-height:140px;transition:.16s var(--ease)}
  .sapi-addcard:hover{border-color:var(--accent);background:rgba(201,168,124,0.05)}
  .sapi-addplus{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--accent-strong);background:rgba(201,168,124,0.12);border:1px solid rgba(201,168,124,0.3)}
  .sapi-addt{color:var(--text);font-weight:600;font-size:14px}
  .sapi-addsub{color:var(--text-3);font-size:12px}

  /* ===================== API analysis WIZARD ===================== */
  .wz-card{position:relative;width:min(720px,96vw);height:min(640px,92vh);display:flex;flex-direction:column;
    background:linear-gradient(180deg,color-mix(in srgb,var(--text) 2.2%,transparent),transparent 42%),var(--surface);
    border:1px solid var(--border-strong);border-radius:var(--radius-xl);overflow:hidden;
    box-shadow:var(--shadow-pop),var(--hair-top);animation:obPop .45s var(--ease) both}
  .wz-head{flex:0 0 auto;padding:22px 26px 16px;border-bottom:1px solid var(--border)}
  .wz-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:14px}
  .wz-dots{display:flex;align-items:center;gap:0}
  .wz-dot{display:flex;align-items:center;gap:7px;color:var(--text-4);cursor:default}
  .wz-dot .wz-dn{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;
    background:var(--surface-2);border:1px solid var(--border);color:var(--text-4)}
  .wz-dot .wz-dl{font-size:12px;font-weight:500}
  .wz-dot.on{color:var(--text)}
  .wz-dot.on .wz-dn{background:rgba(201,168,124,0.14);border-color:var(--accent);color:var(--accent-strong)}
  .wz-dot.done{color:var(--text-2);cursor:pointer}
  .wz-dot.done .wz-dn{background:rgba(201,168,124,0.10);border-color:rgba(201,168,124,0.4);color:var(--accent-ink)}
  .wz-dsep{flex:1 1 auto;height:1px;background:var(--border);margin:0 8px;min-width:8px}
  .wz-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:24px 26px}
  .wz-step{display:none}
  .wz-step.on{display:block}
  .wz-step.anim{animation:wzIn .4s var(--ease) both}
  @keyframes wzIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
  .wz-title{color:var(--text);font-family:var(--font-serif);font-size:22px;font-weight:500;margin-bottom:6px}
  .wz-title .opt{font-family:var(--font-body)}
  .wz-sub{color:var(--text-2);font-size:13px;line-height:1.55;margin-bottom:18px;max-width:60ch}
  .wz-row{display:flex;gap:14px;flex-wrap:wrap}
  .wz-msg{margin-top:12px;font-size:13px;min-height:18px}
  .wz-msg.loading{color:var(--text-2)}
  .wz-msg.ok{color:var(--ok)} .wz-msg.ok b{color:var(--text)}
  .wz-msg.bad{color:var(--crit)}
  .wz-testrow{display:flex;flex-direction:column;gap:12px;margin-top:6px}
  .wz-testresult{font-size:13px;line-height:1.5;min-height:18px}
  .wz-testresult.loading{color:var(--text-2)}
  .wz-testresult.ok{color:var(--ok)}
  .wz-testresult.bad{color:var(--crit)}
  .wz-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 26px;border-top:1px solid var(--border);background:var(--bg-2)}
  .wz-foot #wz-next{padding:11px 22px;height:auto}
  /* live console */
  .wz-console{background:var(--ink);border:1px solid var(--border);border-radius:var(--radius-lg);
    font-family:var(--font-mono);font-size:13px;line-height:1.7;color:var(--text-2);
    padding:16px 18px;height:280px;overflow-y:auto;white-space:pre-wrap}
  .wz-line{opacity:0;animation:wzLineIn .3s var(--ease) forwards}
  @keyframes wzLineIn{to{opacity:1}}
  .wz-line.cmd{color:var(--text)} .wz-line.cmd .c{color:var(--accent-strong)}
  .wz-line.ok{color:var(--ok)} .wz-line.ok b{color:var(--text)}
  .wz-line.b{color:var(--crit)} .wz-line.muted{color:var(--text-4)}
  .wz-line b{color:var(--text)} .wz-line .g{color:var(--ok)} .wz-line .b{color:var(--crit)}
  .wz-progress{margin-top:14px;height:6px;border-radius:100px;background:color-mix(in srgb,var(--text) 6%,transparent);overflow:hidden}
  .wz-progbar{height:100%;width:0;border-radius:100px;background:linear-gradient(90deg,var(--accent),var(--accent-strong));
    box-shadow:0 0 12px -2px var(--accent);transition:width .6s var(--ease)}

  /* ===================== modern results viewer ===================== */
  .sr-ov{position:fixed;inset:0;z-index:480;display:flex;align-items:stretch;justify-content:center;
    background:rgba(6,7,9,0.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:obFade .32s var(--ease) both;padding:0}
  .sr-ov.closing{animation:obFadeOut .25s var(--ease) both}
  .sr-card{width:min(1080px,100vw);margin:0 auto;background:var(--bg);border-left:1px solid var(--border);border-right:1px solid var(--border);
    display:flex;flex-direction:column;overflow:hidden;animation:srIn .4s var(--ease) both}
  @keyframes srIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .sr-body{flex:1 1 auto;min-height:0;overflow-y:auto}
  .sr-loading{padding:60px;text-align:center;color:var(--text-2);display:flex;gap:12px;align-items:center;justify-content:center}
  .sr-head{position:sticky;top:0;z-index:2;padding:26px 32px 18px;background:
    radial-gradient(700px 260px at 20% -30%, rgba(201,168,124,0.08), transparent 60%),var(--bg-2);
    border-bottom:1px solid var(--border)}
  .sr-close{position:absolute;top:16px;right:18px;width:34px;height:34px;border-radius:9px;padding:0;font-size:18px;
    background:color-mix(in srgb,var(--text) 5%,transparent);color:var(--text-2);border:1px solid var(--border)}
  .sr-close:hover{color:var(--text);background:color-mix(in srgb,var(--text) 10%,transparent);transform:none}
  .sr-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink)}
  .sr-title{color:var(--text);font-family:var(--font-serif);font-size:26px;font-weight:500;margin-top:6px}
  .sr-base{color:var(--text-3);font-size:13px;margin-top:4px}
  .sr-statrow{display:flex;gap:30px;margin-top:16px}
  .sr-stat b{color:var(--text);font-size:24px;font-variant-numeric:tabular-nums}
  .sr-stat span{display:block;color:var(--text-3);font-size:11px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;margin-top:2px}
  .sr-filters{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
  .sr-fpill{height:auto;padding:6px 13px;border-radius:100px;font-size:12px;font-weight:500;font-family:var(--font-mono);
    background:var(--surface);color:var(--text-2);border:1px solid var(--border)}
  .sr-fpill:hover{color:var(--text);border-color:var(--border-strong);transform:none;background:var(--surface-2)}
  .sr-fpill b{color:var(--text)}
  .sr-fpill.on{border-color:var(--accent);color:var(--text);background:rgba(201,168,124,0.10)}
  .sr-fpill.sev-critical.on{border-color:var(--crit)} .sr-fpill.sev-high.on{border-color:var(--high)}
  .sr-fpill.sev-medium.on{border-color:var(--med)} .sr-fpill.sev-low.on{border-color:var(--low)}
  .sr-searchbox{margin-top:14px;width:100%;max-width:360px;height:38px;padding:0 13px;border-radius:var(--radius);
    border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}
  .sr-list{display:flex;flex-direction:column;gap:9px;padding:20px 32px 40px}
  .sr-empty{padding:40px;text-align:center;color:var(--text-3)}
  @media (max-width:640px){ .sr-head{padding:20px 18px 14px} .sr-list{padding:16px 18px 32px} .sr-statrow{gap:20px} }

  /* wizard step 1: URL + "Paste it" button side by side */
  .wz-specrow{display:flex;gap:10px;align-items:stretch}
  .wz-specrow #wz-url{flex:1 1 auto;min-width:0}
  .wz-pastebtn{flex:0 0 auto;height:40px;white-space:nowrap}
  .wz-inlinehint{font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;color:var(--ok);text-transform:none;font-weight:400;margin-left:8px}

  /* modern inline loader (spec "reading…") */
  .wz-loader{display:inline-flex;gap:4px;vertical-align:middle;margin-right:4px}
  .wz-loader i{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:wzDot 1s var(--ease) infinite}
  .wz-loader i:nth-child(2){animation-delay:.15s} .wz-loader i:nth-child(3){animation-delay:.3s}
  @keyframes wzDot{0%,80%,100%{opacity:.25;transform:scale(.7)}40%{opacity:1;transform:scale(1)}}
  /* run-in-background row on the analyze step */
  .wz-bgrow{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;flex-wrap:wrap}
  .wz-bgnote{color:var(--text-3);font-size:12px;flex:1 1 auto;min-width:180px}
  .wz-bgrow button{flex:0 0 auto}
  /* running / failed analysis cards */
  .sapi-card.running,.sapi-card.failed{cursor:default}
  .sapi-card.running:hover,.sapi-card.failed:hover{transform:none}
  .sapi-card-ic.bad{color:var(--crit);background:rgba(224,108,96,0.12);border-color:rgba(224,108,96,0.32)}
  .sapi-card-runbar{height:5px;border-radius:100px;background:color-mix(in srgb,var(--text) 6%,transparent);overflow:hidden;margin:14px 0 10px;position:relative}
  .sapi-card-runbar span{position:absolute;top:0;bottom:0;width:38%;border-radius:100px;
    background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:sapiRun 1.3s var(--ease) infinite}
  @keyframes sapiRun{from{left:-40%}to{left:100%}}

  .sapi-openhint{font-size:10px;color:var(--accent-ink);opacity:.85;margin-left:4px}

  /* ===== API analysis rendered INTO the surface explorer ===== */
  .asx-apibar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
    padding:12px 16px;margin-bottom:14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}
  .asx-apicrumb{font-size:13px;color:var(--text);font-weight:500}
  .asx-apicrumb span{color:var(--text-3);font-weight:400}
  .asx-apinote{font-family:var(--font-mono);font-size:11px;color:var(--text-3)}
  .asx-apinote b{color:var(--text-2)}
  /* risk category grid (mirrors ATT&CK coverage) */
  .asx-catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:14px}
  .asx-catcell{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-2);padding:15px 16px}
  .asx-catn{font-size:22px;color:var(--text);font-variant-numeric:tabular-nums;line-height:1}
  .asx-catl{font-size:12px;color:var(--text-2);margin-top:6px}
  /* fix-first list */
  .asx-fixlist{display:flex;flex-direction:column;gap:2px;margin-top:12px}
  .asx-fix{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:var(--radius);cursor:pointer;transition:background .12s var(--ease)}
  .asx-fix:hover{background:color-mix(in srgb,var(--text) 3%,transparent)}
  .asx-fixpath{flex:1 1 auto;min-width:0;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .asx-fixn{flex:0 0 auto;font-family:var(--font-mono);font-size:11px;color:var(--text-3)}
  .asx-fix .dsev{flex:0 0 auto}
  /* endpoint list header + cards inside the surface card (needs its own padding) */
  .asx-apiwrap{padding:22px 24px 26px}
  .asx-ephead{margin-bottom:18px}
  .asx-eptitle{font-family:var(--font-serif);font-size:19px;font-weight:500;color:var(--text);line-height:1.2}
  .asx-epsub{font-size:13px;color:var(--text-2);margin-top:6px;line-height:1.5}
  .asx-eptools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
  .asx-eptools .sr-filters{margin:0;display:flex;gap:8px;flex-wrap:wrap}
  .asx-eptools .sr-searchbox{margin:0;flex:1 1 auto;min-width:200px;max-width:340px}
  @media(max-width:560px){ .asx-apiwrap{padding:18px 16px 20px} }

  /* ===== potential-vulnerability cards + detail drawer (surface) ===== */
  .pv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
  .pv-card{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);background:
    linear-gradient(180deg,color-mix(in srgb,var(--text) 2%,transparent),transparent 46%),var(--surface);
    padding:17px 19px 15px;cursor:pointer;overflow:hidden;transition:transform .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease)}
  .pv-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sev,var(--border-strong))}
  .pv-card.sev-l-critical{--sev:var(--crit)} .pv-card.sev-l-high{--sev:var(--high)} .pv-card.sev-l-medium{--sev:var(--med)} .pv-card.sev-l-low{--sev:var(--low)}
  .pv-card:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-2)}
  .pv-top{display:flex;align-items:center;gap:9px;margin-bottom:9px}
  .pv-cat{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
  .pv-title{color:var(--text);font-weight:600;font-size:14px;line-height:1.3;margin-bottom:10px}
  .pv-ep{display:flex;align-items:center;gap:8px;margin-bottom:9px;min-width:0}
  .pv-path{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .pv-why{font-size:13px;color:var(--text-2);line-height:1.5;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:11px}
  .pv-foot{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase}
  .pv-foot>span:first-child{color:var(--text-4)}
  .pv-go{color:var(--accent-ink)}
  /* detail drawer content */
  .pvd{padding:6px 4px 20px}
  .pvd-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:14px}
  .pvd-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
  .pvd-cat{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}
  .pvd-title{color:var(--text);font-family:var(--font-serif);font-size:21px;font-weight:500;line-height:1.25;margin-bottom:16px}
  .pvd-epbox{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-2);margin-bottom:6px}
  .pvd-path{font-size:14px;color:var(--text);flex:1 1 auto;min-width:0;word-break:break-all}
  .pvd-auth{font-family:var(--font-mono);font-size:11px;color:var(--text-3)}
  .pvd-summary{font-size:13px;color:var(--text-3);margin:8px 2px 0}
  .pvd-sec{margin-top:20px}
  .pvd-lbl{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-4);margin-bottom:9px}
  .pvd-body{font-size:14px;color:var(--text);line-height:1.6}
  .pvd-note{margin-top:22px;font-size:12px;color:var(--text-3);background:rgba(201,168,124,0.06);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}
  .pv-vars{width:100%;border-collapse:collapse;font-size:13px}
  .pv-vars th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);font-weight:400;padding:0 10px 7px 0;border-bottom:1px solid var(--border)}
  .pv-vars td{padding:8px 10px 8px 0;border-bottom:1px solid var(--border-faint);color:var(--text);vertical-align:middle}
  .v-in{font-family:var(--font-mono);font-size:10px;padding:2px 7px;border-radius:5px;background:color-mix(in srgb,var(--text) 5%,transparent);color:var(--text-2);text-transform:lowercase}
  .v-in.v-path{color:var(--high);background:color-mix(in srgb,var(--high) 15%,transparent)}
  .v-in.v-query{color:var(--low);background:color-mix(in srgb,var(--low) 15%,transparent)}
  .v-in.v-body{color:var(--ok);background:color-mix(in srgb,var(--ok) 15%,transparent)}
  .v-req{font-family:var(--font-mono);font-size:10px;color:var(--crit)}

  /* potential-vuln detail rendered inside the centered asxModal popup */
  .pvd-modal{padding:30px 34px 28px;overflow-y:auto;min-height:0}
  @media(max-width:560px){ .pvd-modal{padding:24px 20px 22px} }

/* ── Accessibility layer ─────────────────────────────────────────────────── */
/* Visible focus on every form control (many rules above set outline:none and rely on a faint border change). */
input:focus-visible, select:focus-visible, textarea:focus-visible,
[contenteditable="true"]:focus-visible { outline:2px solid var(--accent-ink); outline-offset:1px; box-shadow:0 0 0 3px var(--accent-dim); }
[role="button"]:focus-visible, button:focus-visible, a:focus-visible, summary:focus-visible { outline:2px solid var(--accent-ink); outline-offset:2px; }
html[data-theme="light"] :focus-visible { outline-color:var(--accent-ink); }
[role="button"][tabindex]:not(button):not(a) { cursor:pointer; }
/* Touch screens: 44px minimum hit area (WCAG 2.5.5 / Apple HIG) for the small controls. */
@media (pointer:coarse){
  button, .small, .set-navitem, .surface-tools button { min-height:44px; }
  .close-x, .modal .close-x, .apw-ix { min-height:44px; min-width:44px; }
  .close-x, .apw-ix, .modal .close-x { display:inline-flex; align-items:center; justify-content:center; }
  input[type="checkbox"], input[type="radio"] { min-width:22px; min-height:22px; }
}

/* The auth screen is always dark (full-bleed photo). Pin the dark token set so a stored light-theme
   preference doesn't render dark text on the dark hero/panel. */
html[data-theme="light"] #authView {
  --bg:#0A0B0D; --bg-2:#101113; --surface:#141518; --surface-2:#1A1C20; --surface-3:#202329;
  --border:rgba(236,226,214,0.10); --border-faint:rgba(236,226,214,0.055); --border-strong:rgba(236,226,214,0.19);
  --text:#EDEEF2; --text-2:#B4B8C0; --text-3:#9CA1AB; --text-4:#8A8E95;
  --accent:#C9A87C; --accent-strong:#E0C79C; --accent-dim:rgba(201,168,124,0.10); --accent-ink:#C9A87C;
  --btn-bg:#fff; --btn-fg:#0A0B0D; --btn-hover:rgba(255,255,255,0.88);
  --fill-1:rgba(255,255,255,0.03); --fill-2:rgba(255,255,255,0.07);
  --crit:#E06C60; --high:#D98A5B; --med:#CBB26A; --low:#8FA9B8; --info:#8A8F99; --ok:#7FB08A;
  --ink:#07090d; --ink-2:#010409; color-scheme:dark;
}

/* ── Navigation: real links, actionable badges, section sub-nav ──────────── */
a.nav-item { text-decoration:none; }
.nav-item.hidden, .nav-group-label.hidden { display:none !important; }
.nav-item .cnt:empty { display:none; }
/* badges mean "needs attention", not totals */
.nav-item .cnt.attn { color:var(--crit); background:color-mix(in srgb,var(--crit) 14%,transparent); }
.nav-item .cnt.live { color:var(--accent-ink); background:var(--accent-dim); }
.nav-item.active .cnt.attn { color:var(--crit); background:color-mix(in srgb,var(--crit) 18%,transparent); }
.mtb-new { margin-right:6px; }
.subnav { display:flex; gap:4px; align-items:center; padding:10px 32px 0; margin:0 0 -2px; border-bottom:1px solid var(--border); }
.subnav a { position:relative; padding:9px 14px 11px; font-size:13px; font-weight:500; color:var(--text-3); text-decoration:none; border-radius:var(--radius) var(--radius) 0 0; transition:color .15s var(--ease), background .15s var(--ease); }
.subnav a:hover { color:var(--text); background:color-mix(in srgb,var(--text) 4%,transparent); }
.subnav a[aria-current="page"] { color:var(--accent-ink); }
.subnav a[aria-current="page"]::after { content:""; position:absolute; left:10px; right:10px; bottom:-1px; height:2px; background:var(--accent); border-radius:2px; }
.subnav.hidden { display:none; }
/* the subnav takes ~44px; keep full-height stages from forcing page scroll */
body.has-subnav .asx-stage { height:calc(100vh - 194px); height:calc(100dvh - 194px); }
body.has-subnav .att-scroll { height:calc(100vh - 364px); height:calc(100dvh - 364px); }
@media (max-width:960px){ .subnav { padding:8px 16px 0; overflow-x:auto; } }

/* Mobile drawer: the base .sidebar rule (position:sticky, flex:0 0 236px) is declared AFTER the earlier
   max-width:960px block, so it silently won and the off-canvas sidebar still reserved 236px of layout. */
@media (max-width:960px){
  .app-shell .sidebar { position:fixed; left:0; top:0; height:100dvh; flex:0 0 auto; z-index:120; }
  .app-shell .main { width:100%; min-width:0; }
}

/* Mobile top-bar icon buttons: the global button padding squeezed the 18px SVG to 0px wide (invisible icons). */
.mtb-burger, .mtb-search, .mtb-new { padding:0; flex:0 0 auto; }
.mtb-burger svg, .mtb-search svg, .mtb-new svg { flex:0 0 18px; }

/* ===== Vulnerabilities ===== */
/* severity tabs: the filter and the summary in one row */
.vr-tabs { display:flex; flex-wrap:wrap; align-items:flex-end; gap:0 4px; margin:2px 0 18px; border-bottom:1px solid var(--border); }
.vr-tab { display:inline-flex; align-items:center; gap:8px; padding:10px 14px 11px; margin-bottom:-1px; background:none; border:0; border-bottom:2px solid transparent; border-radius:0;
  color:var(--text-3); font-size:13.5px; font-weight:400; cursor:pointer; }
.vr-tab:hover { color:var(--text); background:none; transform:none; }
.vr-tab.on { color:var(--text); border-bottom-color:var(--accent); font-weight:500; }
.vr-tab:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; border-radius:6px; }
.vr-tab .d { width:8px; height:8px; border-radius:50%; background:var(--c); }
.vr-tab .n { font-variant-numeric:tabular-nums; color:var(--text-3); font-size:12.5px; } .vr-tab.on .n { color:var(--text-2); }
.vr-tabs .vr-flag { margin-left:auto; align-self:center; padding:0 2px 8px; font-size:13px; color:var(--crit); }

.vr-filters { display:flex; gap:10px; flex-wrap:wrap; margin:0 0 22px; }
.vr-filters input { flex:1 1 280px; width:auto; } .vr-filters select { flex:0 0 160px; width:auto; }

.vr-wrap { display:grid; grid-template-columns:200px minmax(0,1fr); gap:28px; align-items:start; }
/* targets: a quiet list, nothing but name and count */
.vr-rail { position:sticky; top:14px; max-height:calc(100vh - 40px); overflow-y:auto; display:flex; flex-direction:column; gap:1px; }
.vr-rtitle { font-size:12px; color:var(--text-3); padding:0 10px 8px; }
.vr-ri { display:flex; align-items:center; gap:8px; width:100%; text-align:left; padding:7px 10px; background:none; border:0; border-radius:7px; color:var(--text-2); font-size:13px; font-weight:400; cursor:pointer; }
.vr-ri:hover { background:var(--fill-1); color:var(--text); transform:none; }
.vr-ri.on { background:var(--fill-2); color:var(--text); font-weight:500; }
.vr-ri:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.vr-rn { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vr-rc { flex:none; font-size:12px; color:var(--text-4); font-variant-numeric:tabular-nums; } .vr-ri.on .vr-rc { color:var(--text-3); }
.vr-rd { flex:none; width:6px; height:6px; border-radius:50%; background:var(--crit); }

/* table: fixed columns so every row lines up with its header */
.vr-th, .vr-row { display:grid; grid-template-columns:96px minmax(0,1fr) 112px 60px; align-items:center; gap:0 16px; padding:0 12px; }
.vr-th { padding-top:0; padding-bottom:10px; font-size:12px; color:var(--text-3); border-bottom:1px solid var(--border); }
.vr-th span:last-child, .vr-c-date { text-align:right; }
.vr-row { padding-top:13px; padding-bottom:13px; border-bottom:1px solid var(--border-faint); cursor:pointer; }
.vr-row:hover, .vr-row:focus-visible { background:var(--fill-1); outline:none; }
.vr-row:focus-visible { box-shadow:inset 0 0 0 2px var(--accent); }
.vr-row.closed { opacity:.55; } .vr-row.closed .vr-t { text-decoration:line-through; text-decoration-color:var(--text-4); }
.vr-c-sev { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:500; text-transform:capitalize; color:var(--c); }
.vr-c-sev::before { content:''; width:8px; height:8px; border-radius:50%; background:var(--c); flex:none; }
.vr-t { font-size:14.5px; font-weight:500; line-height:1.4; color:var(--text); overflow-wrap:anywhere; }
.vr-m { display:flex; flex-wrap:wrap; gap:1px 16px; margin-top:3px; font-size:12.5px; color:var(--text-3); }
.vr-m .host { font-family:var(--font-mono); font-size:12px; color:var(--text-2); } .vr-m .od { color:var(--crit); }
.vr-c-st { display:inline-flex; align-items:center; gap:7px; font-size:13px; color:var(--text-2); }
.vr-c-st::before { content:''; width:7px; height:7px; border-radius:50%; background:var(--sc,var(--text-4)); flex:none; }
.vr-st-open { --sc:var(--high); } .vr-st-regressed { --sc:var(--crit); } .vr-st-in_progress { --sc:var(--low); }
.vr-st-resolved, .vr-st-mitigated, .vr-st-fixed, .vr-st-verified { --sc:var(--ok); }
.vr-c-date { font-size:12.5px; color:var(--text-3); white-space:nowrap; font-variant-numeric:tabular-nums; }
.vr-tag { color:var(--accent-ink); }

.vr-pager { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:16px 0 4px; padding:0 12px; font-size:13px; color:var(--text-3); }
.vr-pager > div { display:flex; align-items:center; gap:12px; } .vr-pn { color:var(--text-2); font-variant-numeric:tabular-nums; }
.vr-pager button:disabled { opacity:.35; cursor:default; }
.vr-empty { padding:56px 16px; text-align:center; } .vr-empty-t { font-family:var(--font-serif,'Newsreader',serif); font-size:1.5rem; margin-bottom:6px; }

/* add / edit form */
.vr-form { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; max-height:88vh; overflow:hidden; }
.vr-fbody { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; padding:6px 24px 22px; display:flex; flex-direction:column; gap:12px; }
.vr-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; } .vr-grid.vr-g2 { grid-template-columns:repeat(2,1fr); }
.vr-fbody textarea { resize:vertical; min-height:64px; }
.vr-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; } .vr-del { margin-left:auto; }

@media (max-width:900px){
  .vr-wrap { grid-template-columns:1fr; gap:16px; }
  .vr-rail { position:static; max-height:none; flex-direction:row; flex-wrap:wrap; gap:6px; }
  .vr-rtitle { width:100%; padding-left:0; } .vr-ri { width:auto; max-width:100%; border:1px solid var(--border); }
}
@media (max-width:640px){
  .vr-tabs { flex-wrap:nowrap; overflow-x:auto; } .vr-tab { flex:none; } .vr-tabs .vr-flag { display:none; }
  .vr-th { display:none; }
  .vr-row { grid-template-columns:minmax(0,1fr) auto; gap:5px 12px; padding-left:4px; padding-right:4px; }
  .vr-c-sev { grid-column:1; } .vr-c-st { grid-column:2; grid-row:1; } .vr-main { grid-column:1/-1; } .vr-c-date { grid-column:1/-1; text-align:left; }
  .vr-filters select { flex:1 1 140px; }
  .vr-grid, .vr-grid.vr-g2 { grid-template-columns:1fr; }
}

/* ===== Exposure: External Attack Surface Command Center =====
   IA: page title -> horizontal scope tabs (not a persistent side column) ->
   full-width operational summary -> compact "what changed" + exposure overview ->
   toolbar -> full-width, sortable, sticky-header asset table. ===== */

/* Every custom control on this page is a <button> for keyboard/a11y reasons, but the
   global `button` rule (height:40px, padding:0 20px, font-weight:600, pill radius,
   hover lift + white fill) is built for CTA buttons. Left alone it squeezes multi-line
   content (tabs, metrics) into 40px so text spills onto the next row, and turns inline
   text links ("details", "show hosts") into 40px-tall pills. Reset it once, here, before
   the specific rules below (same specificity, so source order lets them override). */
.ex-stab, .ex-addtab, .ex-m, .ex-sec-m, .ex-reachleg button, .ex-infra-legend button, .ex-qc,
.ex-th button.sortable, .ex-change-sum button.exp, .ex-clearall, .ex-showgone, .ex-afchip button, .ex-more-menu button,
.ex-viewtoggle button, .ex-mcard-h, .ex-mdot, .ex-mhost {
  height:auto; padding:0; border:0; border-radius:0; background:none; font-weight:400; line-height:1.35; text-align:left; transform:none; }
.ex-stab:hover, .ex-addtab:hover, .ex-m:hover, .ex-sec-m:hover, .ex-reachleg button:hover, .ex-infra-legend button:hover,
.ex-th button.sortable:hover, .ex-change-sum button.exp:hover, .ex-clearall:hover, .ex-afchip button:hover,
.ex-viewtoggle button:hover, .ex-mcard-h:hover, .ex-mhost:hover { transform:none; }
.ex-change-sum button.exp, .ex-clearall, .ex-afchip button { min-height:0; }   /* inline text links: never a 44px touch block mid-sentence */
@media (pointer:coarse){ .ex-mdot { min-height:0; min-width:0; } }   /* keep risk dots dot-sized on touch; the card header is the 44px target */

.ex-hint { font-size:12.5px; color:var(--text-3); cursor:help; border-bottom:1px dotted var(--border-strong); padding-bottom:1px; }

/* scope tabs: horizontal, so a single scope never reserves a tall empty column */
.ex-scopetabs { display:flex; align-items:stretch; gap:6px; flex-wrap:wrap; margin:4px 0 20px; border-bottom:1px solid var(--border); padding-bottom:0; }
.ex-stab { display:flex; flex-direction:column; gap:3px; padding:9px 16px 11px; background:none; border:0; border-bottom:2px solid transparent; border-radius:0; text-align:left; cursor:pointer; min-width:150px; }
.ex-stab:hover { background:var(--fill-1); transform:none; }
.ex-stab.on { border-bottom-color:var(--accent); background:none; }
.ex-stab-top { display:flex; align-items:center; gap:7px; }
.ex-stab-dot { width:6px; height:6px; border-radius:50%; background:var(--border-strong); flex:none; }
.ex-stab.on .ex-stab-dot { background:var(--accent-ink); }
.ex-stab-dot.live { background:var(--ok); animation:exPulse 1.4s ease-in-out infinite; }
.ex-stab-name { font-size:13.5px; font-weight:500; color:var(--text-2); }
.ex-stab.on .ex-stab-name { color:var(--text); }
.ex-stab-sub { font-size:11.5px; color:var(--text-4); }
.ex-stab-sub.live { color:var(--accent-ink); }
.ex-addtab { align-self:center; padding:9px 14px; background:none; border:0; color:var(--text-3); font-size:13px; cursor:pointer; }
.ex-addtab:hover { color:var(--accent-ink); background:none; transform:none; }

/* scope header: name small (tabs already establish identity), last-run context,
   Re-run is the primary action for an existing scope — not competing white buttons */
.ex-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:4px; }
.ex-headtitle { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.ex-title { font-size:1.15rem; font-weight:500; color:var(--text); }
.ex-lastrun { font-size:12.5px; color:var(--text-3); }
.ex-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:9px; }
.ex-chip { font-size:12px; color:var(--text-2); background:var(--fill-1); border:1px solid var(--border); border-radius:100px; padding:4px 11px; }
.ex-chip i { font-style:normal; color:var(--text-4); }
.ex-headbtns { display:flex; gap:8px; flex:none; }
.ex-more { position:relative; }
.ex-more-menu { position:absolute; top:calc(100% + 6px); right:0; background:var(--surface); border:1px solid var(--border-strong); border-radius:10px;
  box-shadow:var(--shadow-pop,0 8px 24px rgba(0,0,0,.3)); padding:5px; min-width:160px; z-index:20; display:none; }
.ex-more-menu.open { display:block; }
.ex-more-menu button { display:block; width:100%; text-align:left; padding:8px 11px; background:none; border:0; border-radius:7px; color:var(--text-2); font-size:13px; cursor:pointer; }
.ex-more-menu button:hover { background:var(--fill-1); color:var(--text); transform:none; }
.ex-more-menu button.danger { color:var(--crit); }
.ex-note { font-size:13px; color:var(--text-3); line-height:1.6; background:var(--fill-1); border-radius:10px; padding:11px 15px; margin:12px 0 0; }

/* primary / secondary operational summary — grouped by data type (inventory vs
   reachability vs certificate hygiene), not one run-on line */
.ex-summary { margin:16px 0 18px; }
/* summary now lives inside the Exposure overview card — tighten it for the narrower
   column and separate it from the distribution bars below */
.ex-panel .ex-summary { margin:0 0 16px; padding:0 8px 16px; border-bottom:1px solid var(--border); }
.ex-panel .ex-summary-primary { gap:22px; padding-bottom:12px; }
.ex-panel .ex-m b { font-size:1.7rem; }
.ex-panel .ex-summary-since { margin:0 0 12px; }
.ex-panel .ex-summary-groups { flex-direction:column; align-items:flex-start; gap:8px; }
.ex-panel .ex-sgroup + .ex-sgroup { padding-left:0; border-left:0; }
.ex-summary-primary { display:flex; align-items:baseline; gap:40px; flex-wrap:wrap; padding-bottom:14px; }
.ex-m { background:none; border:0; padding:0; text-align:left; cursor:pointer; display:flex; flex-direction:column; border-radius:8px;
  border-bottom:2px solid transparent; padding-bottom:4px; }
.ex-m:hover { transform:none; background:none; } .ex-m:hover b { color:var(--text); }
.ex-m b { font-family:var(--font-serif,'Newsreader',serif); font-size:2.1rem; font-weight:400; line-height:1; font-variant-numeric:tabular-nums; color:var(--text-2); transition:color .12s; }
.ex-m span { font-size:12px; color:var(--text-3); margin-top:6px; }
.ex-m b { color:var(--text); }
.ex-m.attn b { color:var(--crit); }
.ex-m.on { border-bottom-color:var(--accent); } .ex-m.on span { color:var(--text); }
.ex-summary-since { font-size:12px; color:var(--text-3); margin:2px 0 14px; }
.ex-summary-groups { display:flex; flex-wrap:wrap; gap:0 32px; padding-top:14px; border-top:1px solid var(--border); }
.ex-sgroup { display:flex; align-items:center; flex-wrap:wrap; gap:6px 14px; padding:4px 0; min-width:0; }
.ex-sgroup + .ex-sgroup { border-left:1px solid var(--border-faint); padding-left:32px; }
.ex-sg-label { font-size:11px; color:var(--text-4); }
.ex-sec-m { background:none; border:0; padding:2px 0; color:var(--text-3); font-size:13px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
.ex-sec-m:hover { color:var(--text); transform:none; background:none; }
.ex-sec-m .dd { width:6px; height:6px; border-radius:50%; background:var(--c,var(--text-4)); }
.ex-sec-m.on { color:var(--text); text-decoration:underline; text-underline-offset:3px; }
.ex-sec-m b { color:var(--text-2); font-weight:500; font-variant-numeric:tabular-nums; }
.ex-sec-static { font-size:13px; color:var(--text-3); } .ex-sec-static b { color:var(--text-2); font-weight:500; font-variant-numeric:tabular-nums; }

/* reachability: ONE compact bar, ONE legend line underneath — no repeated counts */
.ex-reachviz { margin:4px 0 22px; max-width:560px; }
.ex-reachviz-h { font-size:12px; color:var(--text-3); margin-bottom:9px; }
.ex-reachbar { display:flex; width:100%; height:7px; border-radius:5px; overflow:hidden; background:var(--fill-2); }
.ex-reachbar i { display:block; height:100%; cursor:pointer; }
.ex-reachbar i:hover { filter:brightness(1.25); }
.ex-reachbar .b-live { background:var(--ok); } .ex-reachbar .b-restricted { background:var(--med); } .ex-reachbar .b-down { background:var(--border-strong); }
.ex-reachleg { display:flex; gap:18px; margin-top:9px; flex-wrap:wrap; }
.ex-reachleg button { background:none; border:0; padding:0; display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--text-3); cursor:pointer; }
.ex-reachleg button:hover, .ex-reachleg button.on { color:var(--text); transform:none; background:none; }
.ex-reachleg .dd { width:6px; height:6px; border-radius:50%; background:var(--c); }

/* what changed: capped height with its own scroll, so it never pushes the table
   out of the first viewport; events grouped and summarized, not raw-dumped */
/* What changed + Exposure overview, side by side; they align at the top and keep
   their natural (different) heights. The change feed is capped to 3-4 events so the
   height gap between the two stays small. */
.ex-cols { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:16px; align-items:stretch; margin-bottom:20px; }
.ex-cols .ex-panel { display:flex; flex-direction:column; }   /* equal outer height; change feed sits at top, any slack is bottom padding */
.ex-cols .ex-panel { margin-bottom:0; }
.ex-panel { border:1px solid var(--border); border-radius:12px; padding:16px 10px; background:var(--fill-1); margin-bottom:20px; }
.ex-panel-h { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px; padding:0 8px; }
#ex-infra { padding:0 8px; }   /* row/band text lines up with the panel heading */
.ex-panel-h h3 { font-size:13px; font-weight:500; color:var(--text-2); margin:0; text-transform:none; }
.ex-panel-h a { font-size:12px; color:var(--text-3); cursor:pointer; }
.ex-panel-h a:hover { color:var(--accent-ink); }
.ex-changes-scroll { }
.ex-change { display:flex; gap:11px; padding:10px 8px; border-radius:7px; border-bottom:1px solid var(--border-faint); cursor:pointer; }   /* fixed geometry: hover only recolours, never shifts layout */
.ex-change:last-child { border-bottom:0; }
.ex-change:hover { background:var(--fill-2); }
.ex-change-tag { flex:none; width:76px; box-sizing:border-box; text-align:center; font-size:9.5px; font-weight:600; letter-spacing:.05em; padding:3px 6px; border-radius:4px; height:fit-content; margin-top:1px; }
.ex-change-tag.new { color:var(--accent-ink); background:var(--accent-dim,color-mix(in srgb, var(--accent) 15%, transparent)); }
.ex-change-tag.changed { color:var(--high); background:color-mix(in srgb, var(--high) 15%, transparent); }
.ex-change-tag.attention { color:var(--crit); background:color-mix(in srgb, var(--crit) 18%, transparent); }
.ex-change-tag.resolved { color:var(--text-3); background:var(--fill-2); }
.ex-change-body { min-width:0; flex:1; }
.ex-change-host { display:flex; align-items:center; flex-wrap:wrap; gap:4px 7px; font-size:13px; font-weight:500; color:var(--text); }
.ex-change-host span.hn { overflow-wrap:break-word; min-width:0; }
.ex-change-sub { font-size:9.5px; color:var(--text-4); border:1px solid var(--border); border-radius:4px; padding:1px 6px; flex:none; }
.ex-change-sum { font-size:12.5px; color:var(--text-3); margin-top:2px; line-height:1.45; }
.ex-change-sum button.exp { background:none; border:0; padding:0; color:var(--accent-ink); font-size:11.5px; cursor:pointer; margin-left:4px; }
.ex-change-when { flex:none; font-size:11px; color:var(--text-4); white-space:nowrap; margin-top:2px; }
.ex-change-empty, .ex-change-group-empty { font-size:13px; color:var(--text-3); padding:8px 0; }
.ex-change-groupcount { font-size:11px; color:var(--text-4); margin:2px 0 6px; }

/* exposure overview: a compact, proportional distribution — not mismatched boxes.
   Two bands (edge/CDN, cloud provider) so different taxonomies aren't flattened
   into one row of lookalike tiles. */
.ex-infra-band { margin-bottom:12px; } .ex-infra-band:last-child { margin-bottom:0; }
.ex-infra-band-h { font-size:11px; color:var(--text-4); margin-bottom:7px; }
.ex-infra-bar { display:flex; width:100%; height:22px; border-radius:6px; overflow:hidden; background:var(--fill-2); }
.ex-infra-seg { display:flex; align-items:center; justify-content:center; cursor:pointer; border-right:1px solid var(--bg); font-size:10.5px; color:var(--text); white-space:nowrap; overflow:hidden; }
.ex-infra-seg:last-child { border-right:0; }
.ex-infra-seg:hover, .ex-infra-seg.on { filter:brightness(1.2); }
.ex-infra-legend { display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:8px; }
.ex-infra-legend button { background:none; border:0; padding:0; display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--text-3); cursor:pointer; }
.ex-infra-legend button:hover, .ex-infra-legend button.on { color:var(--text); transform:none; background:none; }
.ex-infra-legend .dd { width:7px; height:7px; border-radius:2px; background:var(--c); }
.ex-infra-empty { font-size:13px; color:var(--text-3); padding:6px 0; }

/* toolbar: compact search + quick-filter chips + popover + active-filter chips */
.ex-toolbar { position:relative; margin-bottom:10px; }
.ex-filters { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
/* every control in this row shares one height so tops/bottoms line up (was 37/40/32/40 ragged) */
.ex-filters input, .ex-viewtoggle, .ex-qc, .ex-filters-btn { height:38px; box-sizing:border-box; }
.ex-filters input { margin:0; border-radius:100px; background:var(--surface); padding:0 16px; }   /* match the app-bar search bar's soft pill shape */
.ex-filters input { flex:0 1 420px; width:auto; min-width:220px; }
.ex-quickchips { display:flex; gap:6px; flex-wrap:wrap; }
.ex-qc { display:inline-flex; align-items:center; font-size:12px; padding:0 14px; border-radius:100px; background:var(--fill-1); border:1px solid var(--border); color:var(--text-3); cursor:pointer; }
.ex-qc:hover { color:var(--text); background:var(--fill-2); transform:none; }
.ex-qc.on { color:var(--text); border-color:var(--border-strong); background:var(--fill-2); }
.ex-filters-btn { flex:none; margin-left:auto; }
.ex-quickchips { align-items:center; }
.ex-filters-pop { position:absolute; top:calc(100% + 8px); right:0; width:260px; background:var(--surface); border:1px solid var(--border-strong); border-radius:12px;
  box-shadow:var(--shadow-pop,0 10px 28px rgba(0,0,0,.32)); padding:16px; z-index:20; display:none; }
.ex-filters-pop.open { display:block; }
.ex-fpop-group { margin-bottom:14px; } .ex-fpop-group:last-child { margin-bottom:0; }
.ex-fpop-h { font-size:11px; color:var(--text-3); margin-bottom:8px; }
.ex-fpop-opt { display:flex; align-items:center; gap:9px; padding:4px 0; font-size:13px; color:var(--text-2); cursor:pointer; }
.ex-fpop-opt input { width:auto; margin:0; }
.ex-activefilters { display:flex; flex-wrap:wrap; gap:7px; align-items:center; margin:10px 0 0; }
.ex-afchip { display:inline-flex; align-items:center; gap:7px; font-size:12px; color:var(--text-2); background:var(--fill-1); border:1px solid var(--border-strong); border-radius:100px; padding:4px 7px 4px 12px; }
.ex-afchip button { background:none; border:0; padding:0 2px; color:var(--text-4); cursor:pointer; font-size:13px; line-height:1; }
.ex-afchip button:hover { color:var(--crit); background:none; transform:none; }
.ex-clearall { font-size:12px; color:var(--text-3); background:none; border:0; cursor:pointer; padding:4px 2px; text-decoration:underline; text-underline-offset:3px; }
.ex-clearall:hover { color:var(--text); background:none; transform:none; }
.ex-resultcount { font-size:12.5px; color:var(--text-3); margin:10px 2px 0; }

/* host table: full width now, sticky header (offset below the app bar), sortable */
.ex-th, .ex-row { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 88px 84px minmax(0,1.15fr) minmax(0,1fr) 84px; align-items:center; gap:0 16px; padding:0 4px; }
.ex-th { padding:14px 4px 10px; font-size:11.5px; color:var(--text-3); border-bottom:1px solid var(--border); position:sticky; top:80px; background:var(--bg); z-index:2; }
.ex-th span:last-child { text-align:right; }
.ex-th button.sortable { background:none; border:0; padding:0; color:inherit; font-size:inherit; display:inline-flex; align-items:center; gap:4px; cursor:pointer; }
.ex-th button.sortable:hover { color:var(--text); background:none; transform:none; }
.ex-th button.sortable .arr { font-size:9px; opacity:.4; }
.ex-th button.sortable.on .arr { opacity:1; color:var(--accent-ink); }
.ex-row { padding:13px 4px; border-bottom:1px solid var(--border-faint); cursor:pointer; position:relative; }
.ex-row:hover, .ex-row:focus-visible { background:var(--fill-1); outline:none; }
.ex-row:hover .ex-chevron { opacity:1; transform:translateX(2px); }
.ex-row.gone { opacity:.45; }
.ex-c-host { display:flex; align-items:center; gap:8px; min-width:0; flex-wrap:wrap; row-gap:3px; }
.ex-hn { font-size:13.5px; font-weight:500; color:var(--text); overflow-wrap:break-word; max-width:100%; }   /* never ellipsis a hostname — the cut-off tail is the domain, the part that matters */
.ex-cdn, .ex-gone { font-size:10.5px; color:var(--text-4); border:1px solid var(--border); border-radius:100px; padding:1px 8px; flex:none; white-space:nowrap; }
.ex-c-ip { display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 6px; min-width:0; }
.ex-c-ip b { flex:none; font-family:var(--font-mono); font-size:12.5px; color:var(--text-2); font-weight:400; white-space:nowrap; }   /* the IP never shrinks; the +N / shared badges wrap below it instead */
.ex-shared { flex:none; font-size:10.5px; color:var(--text-4); white-space:nowrap; cursor:help; }
.ex-dash { color:var(--text-4); cursor:help; }

/* reachability pill (tier) vs response (raw HTTP code) — two distinct columns */
.ex-pill { display:inline-flex; align-items:center; font-size:11.5px; font-weight:500; padding:3px 10px; border-radius:100px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.ex-pill.reach-live { color:var(--ok); background:color-mix(in srgb, var(--ok) 15%, transparent); }
.ex-pill.reach-restricted { color:var(--med); background:color-mix(in srgb, var(--med) 15%, transparent); }
.ex-pill.reach-down { color:var(--text-3); background:var(--fill-1); }
.ex-pill.risk-critical { color:#fff; background:var(--crit); font-weight:600; }
.ex-pill.risk-high { color:var(--high); background:color-mix(in srgb, var(--high) 18%, transparent); }
.ex-pill.risk-medium { color:var(--med); background:color-mix(in srgb, var(--med) 15%, transparent); }
.ex-pill.risk-low { color:var(--text-3); background:var(--fill-1); }
.ex-c-resp { font-family:var(--font-mono); font-size:12px; color:var(--text-3); }

/* NEW / CHANGED tags on a host name */
.ex-tag { font-size:9.5px; font-weight:600; letter-spacing:.04em; padding:2px 7px; border-radius:4px; flex:none; }
.ex-tag.new { color:var(--accent-ink); background:var(--accent-dim,color-mix(in srgb, var(--accent) 15%, transparent)); }
.ex-tag.changed { color:var(--high); background:color-mix(in srgb, var(--high) 15%, transparent); }
.ex-tag.cert { color:var(--med); background:color-mix(in srgb, var(--med) 15%, transparent); font-weight:500; letter-spacing:0; }

.ex-c-risk { display:flex; flex-direction:column; gap:3px; align-items:flex-start; min-width:0; }
.ex-signals { font-size:11.5px; color:var(--text-3); cursor:help; max-width:100%; line-height:1.35; }

.ex-techchip { display:inline-block; flex:0 1 auto; min-width:0; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11.5px; color:var(--text-2); background:var(--fill-1); border:1px solid var(--border); border-radius:5px; padding:2px 8px; }
.ex-techchip.more { flex:none; color:var(--accent-ink); background:none; border-style:dashed; cursor:pointer; }
.ex-c-tech { display:flex; align-items:center; flex-wrap:wrap; gap:4px 5px; min-width:0; font-size:12.5px; color:var(--text-3); }   /* wrap whole chips rather than squeezing each to an unreadable 'H…' */
.ex-c-seen { text-align:right; font-size:12px; color:var(--text-3); white-space:nowrap; }
.ex-chevron { display:inline-block; margin-left:6px; opacity:0; transition:opacity .12s, transform .12s; color:var(--text-4); }

.ex-pager { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin:16px 4px 4px; font-size:13px; color:var(--text-3); }
.ex-pager > div { display:flex; align-items:center; gap:12px; } .ex-pn { color:var(--text-2); font-variant-numeric:tabular-nums; }
.ex-pager button:disabled { opacity:.35; cursor:default; }
.ex-pager select { width:auto; padding:4px 8px; font-size:12.5px; }
.ex-empty { padding:56px 16px; text-align:center; } .ex-empty-t { font-family:var(--font-serif,'Newsreader',serif); font-size:1.5rem; margin-bottom:6px; }
.ex-showgone { font-size:12.5px; color:var(--text-3); background:none; border:1px dashed var(--border-strong); border-radius:100px; padding:6px 13px; cursor:pointer; margin:10px 0 0; }
.ex-showgone:hover { color:var(--text); background:var(--fill-1); transform:none; }

/* host detail: slide-over drawer from the right edge */
.ex-preview { min-height:0; } .ex-preview .ex-chips { margin:4px 0 8px; }
.ex-err { font-size:12.5px; color:var(--crit); margin-top:3px; }
.ex-drawer { position:fixed; inset:0; z-index:230; pointer-events:none; display:flex; align-items:center; justify-content:center; padding:24px; }
.ex-drawer-scrim { position:absolute; inset:0; background:rgba(6,7,9,.55); backdrop-filter:blur(3px); opacity:0; transition:opacity .22s var(--ease,ease); }
.ex-drawer-panel { position:relative; width:min(560px,100%); max-height:min(86vh,880px); background:var(--surface); border:1px solid var(--border-strong); border-radius:16px; overflow:hidden;
  box-shadow:var(--shadow-pop,0 24px 64px rgba(0,0,0,.45)); display:flex; flex-direction:column; opacity:0; transform:translateY(10px) scale(.985); transition:opacity .2s var(--ease,ease), transform .22s var(--ease,cubic-bezier(.2,.8,.2,1)); }
.ex-drawer.open { pointer-events:auto; }
.ex-drawer.open .ex-drawer-scrim { opacity:1; }
.ex-drawer.open .ex-drawer-panel { opacity:1; transform:translateY(0) scale(1); }
.ex-drawer-head { display:flex; align-items:baseline; gap:12px; padding:20px 22px 16px; border-bottom:1px solid var(--border); flex:none; }
.ex-drawer-title { font-family:var(--font-serif,'Newsreader',serif); font-size:1.25rem; font-weight:400; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.ex-drawer-head .close-x { margin-left:auto; flex:none; }
.ex-drawer-body { flex:1 1 auto; min-height:0; overflow-y:auto; padding:20px 22px 32px; display:flex; flex-direction:column; gap:20px; }
@media (prefers-reduced-motion:reduce){ .ex-drawer-scrim, .ex-drawer-panel { transition:none; } }

.ex-dr-top { display:flex; flex-direction:column; gap:12px; padding-bottom:4px; border-bottom:1px solid var(--border); }
.ex-dr-ips { font-family:var(--font-mono); font-size:12.5px; color:var(--text-3); }
.ex-dr-badges { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.ex-reasons { margin:0; padding-left:18px; font-size:12.5px; color:var(--text-3); line-height:1.7; }
.ex-dr-actions { display:flex; gap:8px; flex-wrap:wrap; margin:4px 0 2px; }

.ex-sec { } .ex-sech { font-size:12px; color:var(--text-3); margin-bottom:9px; }
.ex-prow { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--border-faint); font-size:13px; }
.ex-prow b { font-family:var(--font-mono); font-weight:500; min-width:42px; }
.ex-prow span { color:var(--text-3); flex:1; }
.ex-prow.risky b { color:var(--high); }
.ex-risktag { font-size:11px; color:var(--crit); border:1px solid currentColor; border-radius:100px; padding:1px 9px; flex:none !important; }
.ex-cert { padding:11px 0; border-bottom:1px solid var(--border-faint); }
.ex-cert-h { display:flex; align-items:center; gap:10px; margin-bottom:5px; flex-wrap:wrap; }
.ex-cert-h b { font-family:var(--font-mono); }
.ex-cert-proto { font-family:var(--font-mono); font-size:11px; color:var(--text-4); }
.ex-cert-b { font-size:13px; color:var(--text-2); line-height:1.65; }
.ex-countdown { font-size:11.5px; color:var(--text-3); font-variant-numeric:tabular-nums; }
.ex-countdown.warn { color:var(--med); } .ex-countdown.bad { color:var(--crit); }

.ex-meta { display:flex; flex-direction:column; gap:7px; }
.ex-meta-row { display:flex; align-items:baseline; justify-content:space-between; font-size:12.5px; }
.ex-meta-row span { color:var(--text-3); }
.ex-meta-row b { font-family:var(--font-mono); color:var(--text-2); font-weight:400; font-variant-numeric:tabular-nums; }
.ex-hist-row { display:flex; gap:10px; align-items:flex-start; padding:8px 0; border-bottom:1px solid var(--border-faint); }
.ex-hist-row:last-child { border-bottom:0; }
.ex-hist-sum { font-size:12.5px; color:var(--text-2); line-height:1.5; }
.ex-hist-when { font-size:11px; color:var(--text-4); margin-top:2px; }

/* scope form: separate Targets / Exclusions fields over the same scope-language parser */
.ex-form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.ex-formhelp { font-size:12px; color:var(--text-3); margin-top:6px; line-height:1.6; }
.ex-formhelp code { font-family:var(--font-mono); font-size:11px; background:var(--fill-1); padding:1px 5px; border-radius:4px; }
.ex-formex { font-size:11.5px; color:var(--text-4); margin-top:4px; }

/* view toggle (Table | Map) — a segmented control that leads the toolbar */
.ex-viewtoggle { display:inline-flex; gap:2px; padding:3px; background:var(--fill-1); border:1px solid var(--border); border-radius:10px; flex:none; }
.ex-viewtoggle button { display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:7px; color:var(--text-3); font-size:12.5px; font-weight:450; cursor:pointer; }
.ex-viewtoggle button:hover { color:var(--text); }
.ex-viewtoggle button.on { background:var(--surface); color:var(--text); box-shadow:0 1px 2px rgba(0,0,0,.25); }
.ex-viewtoggle button svg { width:15px; height:15px; }

/* Map view: IP-cluster "infrastructure map" */
.ex-maplegend { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin:0 0 14px; font-size:12px; color:var(--text-4); }
.ex-mleg { display:inline-flex; align-items:center; gap:6px; }
.ex-mleg i { width:8px; height:8px; border-radius:50%; background:var(--c); display:inline-block; margin:0 1px 0 8px; }
.ex-map { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:14px; align-items:start; grid-auto-flow:dense; }
.ex-mcard { border:1px solid var(--border); border-left:3px solid var(--rail); border-radius:11px; background:var(--fill-1); overflow:hidden; transition:border-color .15s; }
.ex-mcard:hover { border-color:var(--border-strong); border-left-color:var(--rail); }
.ex-mcard.lg { grid-column:span 2; } .ex-mcard.xl { grid-column:span 3; }
.ex-mcard.open { grid-column:1 / -1; }
.ex-mcard-h { display:block; width:100%; text-align:left; padding:13px 15px 11px; cursor:pointer; }
.ex-mcard-h:hover { background:var(--fill-2); }
.ex-mip { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.ex-mip .mono { font-family:var(--font-mono); font-size:13px; color:var(--text); font-weight:500; }
.ex-mbadge { font-size:10px; font-weight:600; letter-spacing:.03em; padding:2px 7px; border-radius:4px; }
.ex-mbadge.r-critical { color:#fff; background:var(--crit); }
.ex-mbadge.r-high { color:var(--high); background:color-mix(in srgb, var(--high) 18%, transparent); }
.ex-mbadge.r-medium { color:var(--med); background:color-mix(in srgb, var(--med) 16%, transparent); }
.ex-mbadge.r-low { color:var(--text-3); background:var(--fill-2); }
.ex-msub { margin-top:4px; font-size:12px; color:var(--text-3); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ex-mshared { font-size:10px; color:var(--accent-ink); border:1px solid color-mix(in srgb, var(--accent) 35%, transparent); border-radius:4px; padding:1px 6px; }
.ex-mdots { display:flex; flex-wrap:wrap; gap:4px; padding:4px 15px 15px; }
.ex-mdot { width:11px; height:11px; border-radius:50%; background:var(--c); opacity:.9; cursor:pointer; padding:0; flex:none; transition:transform .1s; }
.ex-mdot:hover { transform:scale(1.5); opacity:1; outline:2px solid var(--c); outline-offset:1px; }
.ex-mdot.r-none { background:none; border:1px solid var(--border-strong); }
.ex-mhosts { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:4px; padding:4px 12px 14px; }
.ex-mhost { display:flex; align-items:center; gap:9px; padding:7px 10px; border-radius:7px; cursor:pointer; text-align:left; }
.ex-mhost:hover { background:var(--fill-2); }
.ex-mhdot { width:8px; height:8px; border-radius:50%; background:var(--c); flex:none; }
.ex-mhn { flex:1; min-width:0; font-size:13px; color:var(--text); overflow-wrap:break-word; }
.ex-mhost .ex-pill { flex:none; }

@media (max-width:1100px){
  .ex-mcard.xl { grid-column:span 2; }
  /* drop the raw Response column (reachability already summarizes it) — header and
     cells must hide the SAME column or every value shifts under the wrong heading */
  .ex-th, .ex-row { grid-template-columns:minmax(0,1.4fr) minmax(0,.9fr) 84px minmax(0,1.1fr) minmax(0,.9fr) 76px; }
  .ex-th span:nth-child(4), .ex-row .ex-c-resp { display:none; }
}
@media (max-width:900px){
  .ex-summary-primary { gap:24px; } .ex-m b { font-size:1.7rem; }
  .ex-summary-groups { gap:16px 24px; } .ex-sgroup + .ex-sgroup { padding-left:0; border-left:0; }
  .ex-form-row { grid-template-columns:1fr; }
  .ex-cols { grid-template-columns:1fr; }   /* stack again when there isn't room for two readable columns */
}
@media (max-width:640px){
  .ex-scopetabs { overflow-x:auto; flex-wrap:nowrap; } .ex-stab { flex:none; min-width:120px; }
  .ex-map { grid-template-columns:1fr; }
  .ex-mcard.lg, .ex-mcard.xl { grid-column:span 1; }
  .ex-mhosts { grid-template-columns:1fr; }
  .ex-viewtoggle { align-self:flex-start; }
  .ex-th { display:none; }
  .ex-row { grid-template-columns:minmax(0,1fr) auto; row-gap:6px; padding:14px 4px; }
  .ex-c-ip, .ex-c-tech, .ex-c-seen, .ex-c-risk { grid-column:1/-1; text-align:left; }
  .ex-c-ip::before { content:'IP '; color:var(--text-4); font-family:var(--font-mono); font-size:10px; }
  .ex-c-resp::before { content:'HTTP '; color:var(--text-4); }
  .ex-row .ex-c-resp { display:block; }   /* re-shown on phones, where each row is a labelled card */
  .ex-c-tech::before { content:'Tech: '; color:var(--text-4); }
  .ex-c-seen::before { content:'Last seen: '; color:var(--text-4); }
  .ex-filters { flex-direction:column; align-items:stretch; min-width:0; }
  .ex-filters input { flex:none; width:100%; }
  .ex-filters-btn { margin-left:0; }
  .ex-drawer { padding:12px; }
  .ex-drawer-panel { width:100%; max-height:92vh; }
}

/* Manual-finding detail page (reuses .fp-* layout from the scan finding page) */
.vp-tier { font-size:11px; color:var(--accent-ink); border:1px solid color-mix(in srgb, var(--accent) 35%, transparent); border-radius:100px; padding:2px 10px; }
.fp-steps { font-family:var(--font-mono); font-size:12.5px; line-height:1.6; color:var(--text-2); background:var(--fill-1); border:1px solid var(--border); border-radius:8px; padding:12px 14px; white-space:pre-wrap; overflow-wrap:anywhere; margin:0; }
.vp-meta { display:flex; flex-direction:column; gap:9px; }
.vp-meta-row { display:flex; align-items:baseline; justify-content:space-between; gap:16px; font-size:13px; border-bottom:1px solid var(--border-faint); padding-bottom:9px; }
.vp-meta-row:last-child { border-bottom:0; padding-bottom:0; }
.vp-meta-row span { color:var(--text-3); }
.vp-meta-row b { color:var(--text-2); font-weight:500; }

/* Exposure-sourced finding chips (list tag + detail hero chip) */
.vr-tag-exp { color:var(--info,#6ea8fe); }
.vp-tier-exp { color:var(--info,#6ea8fe); border-color:color-mix(in srgb, var(--info,#6ea8fe) 35%, transparent); }

/* Exposure auto-scan cadence pill in the scope head */
.ex-cadence { display:inline-flex; align-items:center; gap:4px; margin-left:10px; font-size:11px; color:var(--accent-ink); border:1px solid color-mix(in srgb, var(--accent) 30%, transparent); border-radius:100px; padding:1px 9px; white-space:nowrap; }

/* ===== New-scan wizard (type → assets → review) ===== */
.nsw-lead { font-size:15px; color:var(--text-2); margin:4px 0 14px; }
.nsw-typegrid { margin-top:0; }
.nsw-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:2px 0 14px; }
.nsw-head h2 { margin:0; font-size:17px; }
.nsw-sub { font-size:12.5px; color:var(--text-3); font-family:var(--font-mono); }
.nsw-toolbar { display:flex; gap:9px; align-items:center; margin-bottom:12px; flex-wrap:wrap; }
.nsw-search { flex:1; min-width:220px; height:38px; box-sizing:border-box; margin:0; padding:0 14px; border-radius:100px; border:1px solid var(--border); background:var(--surface); color:var(--text); font-size:13px; }
.nsw-search:focus { outline:none; border-color:var(--accent); }
.nsw-assetlist { display:flex; flex-direction:column; gap:7px; max-height:440px; overflow-y:auto; padding:2px; border:1px solid var(--border); border-radius:var(--radius-lg); padding:8px; background:var(--surface); }
.nsw-asset { display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:12px; align-items:center; padding:10px 12px; border:1px solid var(--border); border-radius:9px; cursor:pointer; background:var(--bg-2,transparent); transition:border-color .12s var(--ease), background .12s var(--ease); }
.nsw-asset:hover { border-color:var(--border-strong); }
.nsw-asset.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 7%, transparent); }
.nsw-asset input { grid-row:1 / span 2; margin:0; width:16px; height:16px; accent-color:var(--accent); }
.nsw-asset-main { display:flex; align-items:center; gap:9px; flex-wrap:wrap; min-width:0; }
.nsw-asset-host { font-size:13.5px; font-weight:600; color:var(--text); overflow-wrap:anywhere; }
.nsw-asset-meta { grid-column:2; font-size:11.5px; color:var(--text-4); font-family:var(--font-mono); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nsw-risk { font-size:9.5px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; padding:2px 7px; border-radius:100px; }
.nsw-risk-critical { color:var(--crit); background:color-mix(in srgb, var(--crit) 16%, transparent); }
.nsw-risk-high { color:var(--high); background:color-mix(in srgb, var(--high) 16%, transparent); }
.nsw-risk-medium { color:var(--med); background:color-mix(in srgb, var(--med) 16%, transparent); }
.nsw-risk-low { color:var(--low,var(--text-3)); background:var(--fill-2); }
.nsw-cdn { font-size:9.5px; color:var(--text-4); border:1px solid var(--border); border-radius:100px; padding:1px 7px; }
.nsw-empty { padding:26px 16px; text-align:center; color:var(--text-3); font-size:13px; }
.nsw-manual { display:flex; gap:9px; align-items:center; margin-top:12px; }
.nsw-review { display:flex; flex-direction:column; gap:12px; border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; background:var(--surface); }
.nsw-rev-row { display:flex; align-items:center; gap:16px; }
.nsw-rev-row .flbl { flex:0 0 96px; }
.nsw-rev-val { font-size:14px; color:var(--text); font-weight:500; }

/* New-scan wizard — name step card */
.nsw-namecard { border:1px solid var(--border); border-radius:var(--radius-lg); padding:20px 22px; background:var(--surface); max-width:560px; }
.nsw-namecard input { width:100%; height:42px; box-sizing:border-box; margin:6px 0 0; padding:0 14px; border-radius:10px; border:1px solid var(--border); background:var(--bg-2,var(--surface-2)); color:var(--text); font-size:14px; }
.nsw-namecard input:focus { outline:none; border-color:var(--accent); }

/* New-scan wizard — test-type selector (horizontal option rows) */
.nsw-opts { display:flex; flex-direction:column; gap:12px; max-width:720px; }
.nsw-opt { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--border); border-left:3px solid transparent; border-radius:var(--radius-xl);
  padding:18px 20px; cursor:pointer; transition:border-color .15s var(--ease), background .15s var(--ease), transform .12s var(--ease); height:auto; }
.nsw-opt:hover { border-color:var(--border-strong); border-left-color:var(--accent); background:var(--surface-2); transform:translateX(2px); }
.nsw-opt.on { border-color:var(--accent); border-left-color:var(--accent); background:color-mix(in srgb, var(--accent) 6%, var(--surface)); }
.nsw-opt-ic { width:46px; height:46px; flex:none; border-radius:13px; display:inline-flex; align-items:center; justify-content:center;
  color:var(--accent-ink); background:color-mix(in srgb, var(--accent) 12%, transparent); border:1px solid color-mix(in srgb, var(--accent) 24%, transparent); }
.nsw-opt-ic svg { width:23px; height:23px; }
.nsw-opt-main { display:flex; flex-direction:column; gap:5px; min-width:0; }
.nsw-opt-top { display:flex; align-items:center; gap:10px; }
.nsw-opt-name { font-family:var(--font-serif); font-size:19px; color:var(--text); line-height:1.1; }
.nsw-opt-tag-flag { font-size:10px; font-family:var(--font-mono); letter-spacing:.04em; text-transform:uppercase; color:var(--accent-ink);
  border:1px solid color-mix(in srgb, var(--accent) 32%, transparent); border-radius:100px; padding:2px 9px; }
.nsw-opt-desc { font-size:13px; color:var(--text-3); line-height:1.5; }
.nsw-opt-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.nsw-opt-tag { font-size:11px; color:var(--text-4); background:var(--fill-1,var(--surface-2)); border:1px solid var(--border-faint); border-radius:6px; padding:2px 8px; }
.nsw-opt-go { color:var(--text-4); display:inline-flex; transition:color .15s var(--ease), transform .15s var(--ease); }
.nsw-opt:hover .nsw-opt-go, .nsw-opt.on .nsw-opt-go { color:var(--accent-ink); transform:translateX(3px); }
.nsw-opt-go svg { width:20px; height:20px; }
@media(max-width:620px){ .nsw-opt { grid-template-columns:auto 1fr; } .nsw-opt-go { display:none; } }

/* New-scan wizard — Exposure scope picker (shown when assets span >1 scope) */
.nsw-scopebar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 14px; padding:12px 14px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
.nsw-scopelbl { font-size:12px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.14em; color:var(--accent-strong); flex:none; }
.nsw-scopechips { display:flex; gap:8px; flex-wrap:wrap; }
.nsw-scopechip { display:inline-flex; align-items:center; gap:7px; height:auto; padding:7px 13px; border:1px solid var(--border); border-radius:100px; background:var(--surface-2); color:var(--text-2); font-size:13px; font-weight:500; cursor:pointer; transition:border-color .12s var(--ease), color .12s var(--ease), background .12s var(--ease); }
.nsw-scopechip:hover { border-color:var(--border-strong); color:var(--text); }
.nsw-scopechip.on { border-color:var(--accent); color:var(--accent-ink); background:color-mix(in srgb, var(--accent) 10%, transparent); }
.nsw-scopechip .n { font-size:11px; color:var(--text-4); background:var(--fill-1,var(--bg-2)); border-radius:100px; padding:1px 7px; }
.nsw-scopechip.on .n { color:var(--accent-ink); background:color-mix(in srgb, var(--accent) 18%, transparent); }

/* ===== Exposure live scan — terminal-style console popup ===== */
.ex-runph { display:flex; align-items:flex-start; gap:14px; margin:18px 2px; padding:22px 24px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
.ex-runph-dot { width:10px; height:10px; border-radius:50%; background:var(--accent); margin-top:4px; flex:none; box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 60%,transparent); animation:exrunpulse 1.6s ease-out infinite; }
.ex-runph-t { font-family:var(--font-serif); font-size:17px; color:var(--text); }
@keyframes exrunpulse { 0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)} 70%{box-shadow:0 0 0 9px transparent} 100%{box-shadow:0 0 0 0 transparent} }

.exrun { display:flex; flex-direction:column; gap:14px; min-width:min(760px, 86vw); padding:22px 24px 20px; }
.exrun-head { display:flex; align-items:center; gap:10px; }
.exrun-livedot { width:9px; height:9px; border-radius:50%; background:#4ade80; box-shadow:0 0 8px #4ade80; flex:none; animation:exrunpulse 1.5s ease-out infinite; }
.exrun-livedot.off { background:var(--text-4); box-shadow:none; animation:none; }
.exrun-title { font-family:var(--font-serif); font-size:18px; color:var(--text); }
.exrun-sub { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.18em; color:var(--accent-strong); }
.exrun-steps { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.exrun-step { display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--text-4); font-family:var(--font-mono); }
.exrun-step .n { width:17px; height:17px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:9.5px; border:1px solid var(--border); color:var(--text-4); }
.exrun-step.cur { color:var(--accent-ink); } .exrun-step.cur .n { border-color:var(--accent); color:var(--accent-ink); background:color-mix(in srgb,var(--accent) 14%,transparent); }
.exrun-step.done { color:var(--text-2); } .exrun-step.done .n { border-color:#4ade80; color:#4ade80; }
.exrun-sep { width:14px; height:1px; background:var(--border); flex:none; }
.exrun-kpi { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.exrun-kpi-c { border:1px solid var(--border); border-radius:10px; padding:10px 12px; background:var(--surface-2); }
.exrun-kpi-c b { display:block; font-family:var(--font-serif); font-size:22px; color:var(--text); line-height:1; }
.exrun-kpi-c span { font-size:10.5px; color:var(--text-3); font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.1em; }
.exrun-term { height:min(340px, 42vh); overflow-y:auto; background:#0b0d10; border:1px solid var(--border-strong); border-radius:10px; padding:12px 14px; font-family:var(--font-mono); font-size:12.5px; line-height:1.7; color:#cbd3dc; }
.exrun-line { white-space:pre-wrap; overflow-wrap:anywhere; }
.exl-ph { color:#e0b670; } .exrun-line.ph { color:#aeb6c0; }
.exl-plus { color:#4ade80; } .exl-port { color:#6ea8fe; } .exl-warn { color:#f0a860; } .exl-ok { color:#4ade80; } .exl-dim { color:#6b7480; }
.exl-new { color:#e0b670; } .exl-chg { color:#f0a860; }
.exl-tag { font-size:9px; padding:1px 6px; border-radius:100px; } .exl-tag.new { color:#e0b670; border:1px solid #e0b67066; } .exl-tag.chg { color:#f0a860; border:1px solid #f0a86066; }
.exl-risk { font-size:9px; color:#f87171; border:1px solid #f8717166; border-radius:100px; padding:1px 6px; }
.exrun-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.exrun-done-badge { font-size:13px; color:#4ade80; font-weight:600; }
.exrun-done-badge.fail { color:#f87171; }

.exrun-caretline { line-height:1.7; }
.exrun-caret { color:#4ade80; }
.exrun-foot { padding-top:2px; }
.exrun-line.log { color:#8b94a0; }
@keyframes exblink { 50% { opacity:0; } }
.exrun-caret.blink { animation:exblink 1.05s step-end infinite; }

/* ===== Mandatory 2FA enrolment wall ===== */
.mfa-wall { position:fixed; inset:0; z-index:600; display:flex; align-items:center; justify-content:center; padding:24px;
  background:var(--bg); padding-top:calc(24px + env(safe-area-inset-top,0px)); overflow-y:auto; }
.mfa-card { width:100%; max-width:460px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl);
  padding:34px 34px 30px; box-shadow:0 30px 90px rgba(0,0,0,.45); position:relative; }
.mfa-eyebrow { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.22em; color:var(--accent-strong); margin-bottom:12px; }
.mfa-title { font-family:var(--font-serif); font-size:24px; color:var(--text); margin:0 0 10px; line-height:1.15; }
.mfa-lead { font-size:14px; color:var(--text-2); line-height:1.6; margin:0 0 22px; }
.mfa-methods { display:flex; flex-direction:column; gap:12px; }
.mfa-method { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:15px; width:100%; text-align:left;
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px 18px; cursor:pointer; height:auto;
  transition:border-color .14s var(--ease), background .14s var(--ease), transform .12s var(--ease); }
.mfa-method:hover { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 7%, var(--surface-2)); transform:translateX(2px); }
.mfa-m-ic { width:40px; height:40px; flex:none; border-radius:11px; display:inline-flex; align-items:center; justify-content:center;
  color:var(--accent-ink); background:color-mix(in srgb, var(--accent) 13%, transparent); border:1px solid color-mix(in srgb, var(--accent) 26%, transparent); }
.mfa-m-ic svg { width:21px; height:21px; }
.mfa-m-body { display:flex; flex-direction:column; gap:4px; min-width:0; }
.mfa-m-name { font-size:15px; font-weight:600; color:var(--text); display:flex; align-items:center; gap:8px; }
.mfa-rec { font-size:9.5px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.06em; color:var(--accent-ink);
  border:1px solid color-mix(in srgb, var(--accent) 32%, transparent); border-radius:100px; padding:1px 8px; }
.mfa-m-desc { font-size:12.5px; color:var(--text-3); line-height:1.5; }
.mfa-m-go { color:var(--text-4); font-size:18px; }
.mfa-method:hover .mfa-m-go { color:var(--accent-ink); }
.mfa-signout { display:block; margin:22px auto 0; background:none; border:0; color:var(--text-4); font-size:13px; cursor:pointer; height:auto; padding:4px; }
.mfa-signout:hover { color:var(--text-2); background:none; transform:none; }
.mfa-back { background:none; border:0; color:var(--text-3); font-size:13px; cursor:pointer; padding:0; margin:0 0 14px; height:auto; }
.mfa-back:hover { color:var(--accent-ink); background:none; transform:none; }
.mfa-qr { display:block; width:188px; height:188px; margin:0 auto 14px; border-radius:12px; background:#fff; padding:8px; box-sizing:content-box; }
.mfa-secret { font-family:var(--font-mono); font-size:13px; letter-spacing:.14em; color:var(--text-2); text-align:center; background:var(--surface-2);
  border:1px solid var(--border); border-radius:8px; padding:9px 12px; margin:0 0 16px; overflow-wrap:anywhere; -webkit-user-select:all; user-select:all; }
.mfa-input { width:100%; box-sizing:border-box; height:48px; text-align:center; font-family:var(--font-mono); font-size:22px; letter-spacing:.2em;
  background:var(--bg-2,var(--surface-2)); border:1px solid var(--border); border-radius:10px; color:var(--text); margin:0 0 16px; }
.mfa-input:focus { outline:none; border-color:var(--accent); }
.mfa-primary { width:100%; height:46px; font-size:15px; }
.mfa-link { display:block; margin:12px auto 0; background:none; border:0; color:var(--accent-ink); font-size:13px; cursor:pointer; height:auto; }
.mfa-link:hover { background:none; transform:none; text-decoration:underline; }
.mfa-backup { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin:0 0 20px; }
.mfa-backup code { font-family:var(--font-mono); font-size:14px; letter-spacing:.08em; color:var(--text); text-align:center;
  background:var(--surface-2); border:1px solid var(--border); border-radius:7px; padding:9px 6px; -webkit-user-select:all; user-select:all; }
@media(max-width:480px){ .mfa-card{ padding:26px 20px 22px; } .mfa-backup{ grid-template-columns:1fr; } }

/* 2FA backup codes — download / copy actions */
.mfa-backup-actions { display:flex; gap:10px; justify-content:center; margin:0 0 20px; }
.mfa-backup-actions button { display:inline-flex; align-items:center; gap:6px; }
.mfa-backup-actions .bic { width:15px; height:15px; }
