/* ============================================================
   device-intelligence page — section styles (v5)
   Built on styles.css tokens. Hero styles live inline in the
   page <head> and are NOT touched here. Namespaced per section.
   ============================================================ */

:root {
  /* Semantic risk colors — functional status, harmonized w/ indigo */
  --ok:        #1E8A5B;
  --ok-soft:   rgba(30,138,91,0.08);
  --ok-mid:    rgba(30,138,91,0.24);
  --warn:      #B0740F;
  --warn-soft: rgba(176,116,15,0.09);
  --warn-mid:  rgba(176,116,15,0.26);
  --danger:    #C43F2D;
  --danger-soft: rgba(196,63,45,0.07);
  --danger-mid:  rgba(196,63,45,0.24);
}

/* ── Shared section scaffold ─────────────────────────────── */
.di-section {
  padding: clamp(64px, 9vh, 104px) 0;
  border-bottom: 1px solid var(--hairline);
  background: var(--bg);
}
.di-section.alt { background: var(--bg-subtle); }

.di-sec-head { max-width: 700px; margin-bottom: clamp(36px, 5vh, 56px); }
.di-sec-head.center { margin-left: auto; margin-right: auto; text-align: center; }
.di-sec-head.center .eyebrow { justify-content: center; }
.di-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--accent); display: inline-block; }
.di-sec-h2 {
  font-family: var(--font-sans);
  font-size: clamp(30px, 3.6vw, 44px);
  font-weight: var(--weight-semibold);
  line-height: 1.06; letter-spacing: -0.028em;
  color: var(--text-strong); margin-bottom: var(--sp-4);
}
.di-sec-h2 .mute { color: var(--g8); }
.di-sec-lead {
  font-size: var(--text-md); line-height: 1.6;
  color: var(--g9); max-width: 60ch;
}

/* ── Shared detail strip (signals → result) ──────────────── */
.di-detail { display: flex; flex-direction: column; gap: var(--sp-3); }
.di-chips { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.di-chip {
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.02em; color: var(--g8);
  padding: 4px 9px; border: 1px solid var(--hairline-strong);
  border-radius: var(--r-sm); background: var(--bg); white-space: nowrap;
}
.di-arrow { font-family: var(--font-mono); font-size: 12px; color: var(--g6); }
.di-result {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.04em; color: var(--accent); font-weight: 600;
}
.di-result-dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.di-result.warn { color: var(--warn); }
.di-result.danger { color: var(--danger); }

/* ════════════════════════════════════════════════════════════
   2 · FOUR JOBS — feature ledger
   ════════════════════════════════════════════════════════════ */
.jobs-rows { border-top: 1px solid var(--hairline-strong); }
.jobs-row {
  display: grid;
  grid-template-columns: 220px 1fr 300px;
  gap: var(--sp-12);
  padding: var(--sp-10) 0;
  border-bottom: 1px solid var(--hairline);
  align-items: start;
}
.jobs-lead { display: flex; flex-direction: column; gap: var(--sp-3); }
.jobs-num {
  font-family: var(--font-mono); font-size: 12px;
  letter-spacing: 0.10em; color: var(--g6); font-weight: 500;
}
.jobs-ico {
  width: 40px; height: 40px; border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--accent-soft); color: var(--accent);
  border: 1px solid var(--accent-mid);
}
.jobs-ico svg { width: 20px; height: 20px; }
.jobs-key {
  font-family: var(--font-sans); font-size: 19px; font-weight: 600;
  letter-spacing: -0.012em; color: var(--text-strong);
}
.jobs-body { max-width: 52ch; }
.jobs-h {
  font-family: var(--font-sans); font-size: 22px; font-weight: 600;
  letter-spacing: -0.016em; line-height: 1.25; color: var(--text-strong);
  margin-bottom: var(--sp-3);
}
.jobs-d { font-size: 15px; line-height: 1.62; color: var(--g9); }
.jobs-aside { display: flex; justify-content: flex-start; padding-top: 4px; }

@media (max-width: 920px) {
  .jobs-row { grid-template-columns: 1fr; gap: var(--sp-5); }
  .jobs-lead { flex-direction: row; align-items: center; }
  .jobs-aside { padding-top: var(--sp-2); }
}

/* ════════════════════════════════════════════════════════════
   3 · THE GAP — what auth sees vs misses
   ════════════════════════════════════════════════════════════ */
.gap-stats {
  display: flex; flex-wrap: wrap; gap: var(--sp-8);
  margin-bottom: var(--sp-10);
}
.gap-stat { display: flex; flex-direction: column; gap: 2px; }
.gap-stat-num {
  font-family: var(--font-sans); font-size: clamp(30px, 3.4vw, 40px);
  font-weight: 700; letter-spacing: -0.032em; color: var(--text-strong); line-height: 1;
}
.gap-stat-num .acc { color: var(--danger); }
.gap-stat-lbl { font-size: 13px; color: var(--g8); line-height: 1.4; max-width: 28ch; }
.gap-stat-src { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; color: var(--g6); text-transform: uppercase; margin-top: 2px; }

.gap-table {
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md); overflow: hidden; background: var(--bg);
}
.gap-thead {
  display: grid; grid-template-columns: 1fr 1fr;
}
.gap-th {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-4) var(--sp-6);
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.10em; text-transform: uppercase; font-weight: 600;
  background: var(--bg-subtle); border-bottom: 1px solid var(--hairline-strong);
}
.gap-th.sees { color: var(--g8); }
.gap-th.miss { color: var(--danger); background: var(--danger-soft); border-left: 1px solid var(--hairline-strong); }
.gap-th svg { width: 14px; height: 14px; }
.gap-row { display: grid; grid-template-columns: 1fr 1fr; }
.gap-cell {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-6);
  border-top: 1px solid var(--hairline);
  font-size: 14.5px; color: var(--text); line-height: 1.4;
}
.gap-cell.miss {
  background: var(--danger-soft); color: var(--text-strong);
  border-left: 1px solid var(--hairline-strong); font-weight: 500;
}
.gap-ico { flex-shrink: 0; width: 18px; height: 18px; display: grid; place-items: center; }
.gap-ico.ok { color: var(--ok); }
.gap-ico.miss { color: var(--danger); }
.gap-ico svg { width: 16px; height: 16px; }

@media (max-width: 760px) {
  .gap-thead, .gap-row { grid-template-columns: 1fr; }
  .gap-th.miss, .gap-cell.miss { border-left: none; }
}

/* ════════════════════════════════════════════════════════════
   4 · SIGNAL STACK — categories
   ════════════════════════════════════════════════════════════ */
.sig-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-5);
}
.sig-cat {
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md);
  padding: var(--sp-6);
  background: var(--bg);
  display: flex; flex-direction: column; gap: var(--sp-4);
}
.sig-cat.feature {
  border-color: var(--accent-mid);
  box-shadow: 0 0 0 1px var(--accent-mid), 0 8px 28px -16px var(--accent-glow);
}
.sig-cat-head { display: flex; align-items: center; gap: var(--sp-3); }
.sig-cat-ico {
  width: 36px; height: 36px; border-radius: var(--r-sm);
  display: grid; place-items: center; flex-shrink: 0;
  background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-mid);
}
.sig-cat-ico svg { width: 18px; height: 18px; }
.sig-cat-name {
  font-family: var(--font-sans); font-size: 16px; font-weight: 600;
  letter-spacing: -0.01em; color: var(--text-strong);
}
.sig-cat-tag {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--accent); font-weight: 600;
  padding: 3px 7px; border: 1px solid var(--accent-mid); border-radius: var(--r-pill);
  margin-left: auto;
}
.sig-list { display: flex; flex-direction: column; }
.sig-item {
  display: grid; grid-template-columns: 1fr auto;
  align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) 0;
  border-top: 1px dashed var(--hairline);
}
.sig-item:first-child { border-top: none; }
.sig-name { font-size: 13.5px; color: var(--text); letter-spacing: -0.005em; }
.sig-plat { display: flex; gap: 4px; }
.sig-tag {
  font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.04em;
  padding: 2px 6px; border-radius: var(--r-xs);
  background: var(--s2); color: var(--g8); font-weight: 500;
}
.sig-tag.on { background: var(--ok-soft); color: var(--ok); }
.sig-foot {
  font-family: var(--font-mono); font-size: 11px; color: var(--g7);
  letter-spacing: 0.04em; margin-top: var(--sp-6);
  display: flex; align-items: center; gap: var(--sp-2);
}

@media (max-width: 980px) { .sig-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .sig-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════
   5 · SOCIAL-ENGINEERING CHAIN — spotlight
   ════════════════════════════════════════════════════════════ */
.soc-grid {
  display: grid; grid-template-columns: 1fr 1.05fr;
  gap: clamp(40px, 5vw, 80px); align-items: center;
}
.soc-tag {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.10em;
  text-transform: uppercase; color: var(--danger); font-weight: 600;
  padding: 5px 11px; border: 1px solid var(--danger-mid);
  background: var(--danger-soft); border-radius: var(--r-pill);
  margin-bottom: var(--sp-5);
}
.soc-tag svg { width: 13px; height: 13px; }
.soc-list { margin-top: var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-3); }
.soc-point { display: flex; gap: var(--sp-3); align-items: flex-start; }
.soc-point-ico { color: var(--danger); flex-shrink: 0; margin-top: 2px; }
.soc-point-ico svg { width: 17px; height: 17px; }
.soc-point b { color: var(--text-strong); font-weight: 600; }
.soc-point span { color: var(--g9); font-size: 14.5px; line-height: 1.5; }

/* Alert card */
.soc-card {
  background: var(--bg); border: 1px solid var(--hairline-strong);
  border-radius: var(--r-md); overflow: hidden;
  box-shadow: 0 12px 40px -18px rgba(196,63,45,0.28);
}
.soc-card-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--sp-4) var(--sp-5);
  background: var(--danger-soft); border-bottom: 1px solid var(--danger-mid);
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em;
  text-transform: uppercase; font-weight: 600; color: var(--danger);
}
.soc-card-head .live { display: inline-flex; align-items: center; gap: 6px; }
.soc-card-head .live .dot {
  width: 6px; height: 6px; border-radius: 50%; background: var(--danger);
  animation: di-pulse 1.4s infinite;
}
.soc-sig {
  display: grid; grid-template-columns: 28px 1fr auto;
  align-items: center; gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--hairline);
}
.soc-sig-ico {
  width: 28px; height: 28px; border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--danger-soft); color: var(--danger); border: 1px solid var(--danger-mid);
}
.soc-sig-ico svg { width: 15px; height: 15px; }
.soc-sig-name { font-size: 14.5px; font-weight: 600; color: var(--text-strong); letter-spacing: -0.008em; }
.soc-sig-sub { font-family: var(--font-mono); font-size: 11px; color: var(--g8); }
.soc-sig-flag {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--danger); font-weight: 600;
}
.soc-verdict {
  display: flex; align-items: center; gap: var(--sp-4);
  padding: var(--sp-5);
  background: var(--danger); color: #fff;
}
.soc-verdict-word {
  font-family: var(--font-sans); font-size: 22px; font-weight: 700;
  letter-spacing: -0.01em; flex-shrink: 0;
}
.soc-verdict-msg { font-size: 13px; line-height: 1.45; opacity: 0.92; }

@media (max-width: 900px) { .soc-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════
   6 · RULES ENGINE
   ════════════════════════════════════════════════════════════ */
.rules-actions {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-4); margin-bottom: var(--sp-10);
}
.rule-action {
  border: 1px solid var(--hairline-strong); border-radius: var(--r-md);
  padding: var(--sp-5); background: var(--bg);
  display: flex; flex-direction: column; gap: var(--sp-2);
}
.rule-action-badge {
  align-self: flex-start;
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.10em;
  text-transform: uppercase; font-weight: 600;
  padding: 4px 9px; border-radius: var(--r-pill);
}
.rule-action-badge.allow   { color: var(--ok);     background: var(--ok-soft);     border: 1px solid var(--ok-mid); }
.rule-action-badge.warn    { color: var(--warn);   background: var(--warn-soft);   border: 1px solid var(--warn-mid); }
.rule-action-badge.restrict{ color: var(--warn);   background: var(--warn-soft);   border: 1px solid var(--warn-mid); }
.rule-action-badge.block   { color: var(--danger); background: var(--danger-soft); border: 1px solid var(--danger-mid); }
.rule-action-desc { font-size: 13px; line-height: 1.5; color: var(--g9); }

.rules-list {
  border: 1px solid var(--hairline-strong); border-radius: var(--r-md);
  overflow: hidden; background: var(--bg);
}
.rules-list-head {
  padding: var(--sp-3) var(--sp-6);
  background: var(--bg-subtle); border-bottom: 1px solid var(--hairline-strong);
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--g7); font-weight: 600;
  display: flex; align-items: center; gap: var(--sp-2);
}
.rule-row {
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: var(--sp-4);
  padding: var(--sp-4) var(--sp-6);
  border-top: 1px solid var(--hairline);
}
.rule-row:first-of-type { border-top: none; }
.rule-cond {
  font-family: var(--font-mono); font-size: 12.5px; color: var(--text);
  display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
}
.rule-cond .kw { color: var(--g7); }
.rule-cond .sig { color: var(--text-strong); font-weight: 500; }
.rule-cond .op { color: var(--accent); }
.rule-msg { font-size: 13px; color: var(--g8); font-style: italic; line-height: 1.4; }
.rule-badge {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em;
  text-transform: uppercase; font-weight: 600; white-space: nowrap;
  padding: 4px 10px; border-radius: var(--r-pill);
}
.rule-badge.allow  { color: var(--ok);     background: var(--ok-soft);     border: 1px solid var(--ok-mid); }
.rule-badge.warn   { color: var(--warn);   background: var(--warn-soft);   border: 1px solid var(--warn-mid); }
.rule-badge.block  { color: var(--danger); background: var(--danger-soft); border: 1px solid var(--danger-mid); }

@media (max-width: 900px) { .rules-actions { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px) {
  .rule-row { grid-template-columns: 1fr; gap: var(--sp-2); }
  .rule-msg { order: 3; }
}

/* ════════════════════════════════════════════════════════════
   7 · IDENTITY & LINKING — device↔account graph
   ════════════════════════════════════════════════════════════ */
.lnk-grid {
  display: grid; grid-template-columns: 1.05fr 1fr;
  gap: clamp(40px, 5vw, 80px); align-items: center;
}
.lnk-graph {
  position: relative; background: var(--bg);
  border: 1px solid var(--hairline-strong); border-radius: var(--r-md);
  padding: var(--sp-8); min-height: 360px;
  display: grid; place-items: center;
}
.lnk-graph-head {
  position: absolute; top: var(--sp-4); left: var(--sp-5);
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--g7); font-weight: 600;
}
.lnk-graph-flag {
  position: absolute; top: var(--sp-4); right: var(--sp-5);
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--danger); font-weight: 600;
  display: inline-flex; align-items: center; gap: 6px;
}
.lnk-graph svg { width: 100%; height: auto; max-width: 420px; overflow: visible; }
.lnk-node-device {
  fill: var(--accent); stroke: none;
}
.lnk-node-acct { fill: var(--bg); stroke: var(--hairline-strong); stroke-width: 1.5; }
.lnk-node-acct.bad { stroke: var(--danger); fill: var(--danger-soft); }
.lnk-edge { stroke: var(--hairline-strong); stroke-width: 1.5; }
.lnk-edge.bad { stroke: var(--danger); stroke-width: 1.5; stroke-dasharray: 4 3; }
.lnk-node-lbl { font-family: var(--font-mono); font-size: 10px; fill: var(--g8); }
.lnk-node-lbl.dev { fill: #fff; font-weight: 600; }

.lnk-caps { display: flex; flex-direction: column; gap: var(--sp-2); }
.lnk-cap {
  display: grid; grid-template-columns: 36px 1fr; gap: var(--sp-4);
  align-items: flex-start;
  padding: var(--sp-4) 0; border-top: 1px solid var(--hairline);
}
.lnk-cap:first-child { border-top: none; }
.lnk-cap-ico {
  width: 36px; height: 36px; border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-mid);
}
.lnk-cap-ico svg { width: 18px; height: 18px; }
.lnk-cap-h { font-size: 15px; font-weight: 600; color: var(--text-strong); letter-spacing: -0.01em; margin-bottom: 2px; }
.lnk-cap-d { font-size: 13.5px; line-height: 1.5; color: var(--g9); }

@media (max-width: 900px) { .lnk-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════
   8 · USE CASES — industry tabs + fraud types
   ════════════════════════════════════════════════════════════ */
.uc-fraud {
  display: flex; flex-wrap: wrap; gap: var(--sp-2);
  margin-bottom: var(--sp-10);
}
.uc-fraud-chip {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.02em;
  color: var(--g9); padding: 7px 13px;
  border: 1px solid var(--hairline-strong); border-radius: var(--r-pill); background: var(--bg);
}
.uc-fraud-chip svg { width: 13px; height: 13px; color: var(--danger); }

.uc {
  display: grid; grid-template-columns: 280px 1fr;
  gap: var(--sp-8); align-items: stretch;
}
.uc-tabs { display: flex; flex-direction: column; gap: var(--sp-2); }
.uc-tab {
  display: flex; align-items: center; gap: var(--sp-3);
  text-align: left; padding: var(--sp-4) var(--sp-5);
  border: 1px solid var(--hairline); border-radius: var(--r-md);
  background: var(--bg); cursor: pointer;
  transition: all var(--duration-base) var(--ease);
}
.uc-tab:hover { border-color: var(--hairline-strong); background: var(--s1); }
.uc-tab.is-active {
  border-color: var(--accent-mid); background: var(--accent-soft);
  box-shadow: inset 3px 0 0 var(--accent);
}
.uc-tab-ico { width: 20px; height: 20px; color: var(--g7); flex-shrink: 0; }
.uc-tab.is-active .uc-tab-ico { color: var(--accent); }
.uc-tab-name { font-family: var(--font-sans); font-size: 15px; font-weight: 600; letter-spacing: -0.01em; color: var(--text-strong); }
.uc-tab-sub { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--g7); margin-left: auto; }

.uc-panel {
  border: 1px solid var(--hairline-strong); border-radius: var(--r-md);
  padding: clamp(28px, 3vw, 44px); background: var(--bg-subtle);
}
.uc-panel-h { font-family: var(--font-sans); font-size: 24px; font-weight: 600; letter-spacing: -0.018em; color: var(--text-strong); margin-bottom: var(--sp-2); }
.uc-panel-care { font-size: 14px; color: var(--g8); margin-bottom: var(--sp-6); line-height: 1.5; }
.uc-panel-care b { color: var(--danger); font-weight: 600; }
.uc-helps { display: flex; flex-direction: column; gap: var(--sp-3); }
.uc-help {
  display: grid; grid-template-columns: 20px 1fr; gap: var(--sp-3);
  align-items: flex-start; font-size: 14.5px; line-height: 1.55; color: var(--g10);
}
.uc-help-ico { color: var(--accent); margin-top: 3px; }
.uc-help-ico svg { width: 15px; height: 15px; }

@media (max-width: 820px) { .uc { grid-template-columns: 1fr; } .uc-tabs { flex-direction: row; flex-wrap: wrap; } .uc-tab { flex: 1 1 40%; } }

/* ════════════════════════════════════════════════════════════
   9 · WHY DIFFERENT — wedge grid
   ════════════════════════════════════════════════════════════ */
.wd-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-5);
}
.wd-card {
  border: 1px solid var(--hairline-strong); border-radius: var(--r-md);
  padding: var(--sp-6); background: var(--bg);
  display: flex; flex-direction: column; gap: var(--sp-3);
}
.wd-ico {
  width: 38px; height: 38px; border-radius: var(--r-sm);
  display: grid; place-items: center;
  background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-mid);
}
.wd-ico svg { width: 19px; height: 19px; }
.wd-h { font-family: var(--font-sans); font-size: 16px; font-weight: 600; letter-spacing: -0.01em; color: var(--text-strong); }
.wd-d { font-size: 13.5px; line-height: 1.55; color: var(--g9); }

@media (max-width: 900px) { .wd-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .wd-grid { grid-template-columns: 1fr; } }

/* ════════════════════════════════════════════════════════════
   10 · INTEGRATION — same SDK + payload
   ════════════════════════════════════════════════════════════ */
.intg-grid {
  display: grid; grid-template-columns: 1fr 1.1fr;
  gap: clamp(40px, 5vw, 72px); align-items: center;
  /* prevent grid children from overflowing on mobile */
  min-width: 0;
}
.intg-grid > * { min-width: 0; overflow: hidden; }
.intg-points { margin-top: var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-4); }
.intg-point { display: flex; gap: var(--sp-3); align-items: flex-start; }
.intg-point-ico { color: var(--accent); flex-shrink: 0; margin-top: 2px; }
.intg-point-ico svg { width: 17px; height: 17px; }
.intg-point b { color: var(--text-strong); font-weight: 600; }
.intg-point span { color: var(--g9); font-size: 14.5px; line-height: 1.5; }

.code {
  background: #0F0F12; border: 1px solid #26262C; border-radius: var(--r-md);
  overflow: hidden; box-shadow: var(--shadow-lg); min-width: 0;
}
.code-head {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-5);
  border-bottom: 1px solid #26262C; background: #17171B;
}
.code-dot { width: 10px; height: 10px; border-radius: 50%; background: #3A3A42; }
.code-title { font-family: var(--font-mono); font-size: 11px; color: #8A8A95; letter-spacing: 0.04em; margin-left: var(--sp-2); }
.code pre {
  margin: 0; padding: var(--sp-6);
  font-family: var(--font-mono); font-size: 12.5px; line-height: 1.7;
  color: #C8C8D0; overflow-x: auto; -webkit-overflow-scrolling: touch;
}
@media (max-width: 600px) {
  .code pre { font-size: 11px; padding: var(--sp-4); }
}
.code .k { color: #9DA8FF; }      /* keys */
.code .s { color: #7FD6A0; }      /* strings */
.code .n { color: #E0A878; }      /* numbers */
.code .c { color: #6A6A75; }      /* comments */
.code .p { color: #6A6A75; }      /* punctuation */

@media (max-width: 900px) { .intg-grid { grid-template-columns: 1fr; } }



/* ── Migrated from device-intelligence.html inline <style> (build/extract-page-css.js) ── */
  /* ── Device Intelligence hero — Variation B (Device passport) ──
     Built on v5 tokens. Local-only classes namespaced with `di-` */
  .di-hero {
    padding: clamp(72px, 10vh, 112px) 0 clamp(48px, 8vh, 80px);
    background: var(--bg);
    border-bottom: 1px solid var(--hairline);
    position: relative;
    overflow: hidden;
  }
  .di-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 50% 40% at 80% 20%, rgba(79,70,229,0.05) 0%, transparent 70%);
    pointer-events: none;
  }
  .di-hero-inner {
    position: relative; z-index: 1;
    display: grid;
    grid-template-columns: 1fr 1.05fr;
    gap: clamp(48px, 5vw, 88px);
    align-items: center;
  }
  .di-hero-left { display: flex; flex-direction: column; align-items: flex-start; }
  .di-hero-left .eyebrow { margin-bottom: var(--sp-6); }
  .di-h1 {
    font-family: var(--font-sans);
    font-size: clamp(40px, 5.4vw, 64px);
    font-weight: var(--weight-semibold);
    line-height: 1.02;
    letter-spacing: -0.034em;
    color: var(--text-strong);
    margin-bottom: var(--sp-5);
  }
  .di-h1 .mute { color: var(--g8); display: block; }
  .di-lead {
    font-size: var(--text-md);
    line-height: 1.65;
    color: var(--g9);
    max-width: 52ch;
    margin-bottom: var(--sp-8);
  }
  .di-actions { display: flex; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-6); }
  .di-meta {
    display: flex; gap: var(--sp-4); flex-wrap: wrap;
    font-family: var(--font-mono); font-size: 11px;
    color: var(--g7); letter-spacing: 0.05em;
  }
  .di-meta .sep { color: var(--g6); }

  /* ── Right side: device passport card ── */
  .di-hero-right {
    display: flex;
    justify-content: flex-end;
    width: 100%;
  }
  .di-pass {
    width: 100%;
    max-width: 560px;
    background: var(--bg);
    border: 1px solid var(--hairline);
    border-radius: var(--r-md);
    box-shadow: 0 8px 32px -12px rgba(14,14,12,0.10);
    overflow: hidden;
  }

  /* Head — mono bar */
  .di-pass-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: var(--sp-4) var(--sp-5);
    border-bottom: 1px solid var(--hairline);
    background: var(--bg-subtle);
    font-family: var(--font-mono); font-size: 11px;
    letter-spacing: 0.08em; text-transform: uppercase;
    font-weight: 600;
  }
  .di-pass-head .l { color: var(--g8); }
  .di-pass-head .l b {
    color: var(--text-strong); font-weight: 600;
    letter-spacing: 0.04em; margin-left: 4px;
  }
  .di-pass-head .r {
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--accent);
  }
  .di-pass-head .r .ping {
    width: 6px; height: 6px; border-radius: 50%;
    background: var(--accent);
    animation: di-pulse 1.6s infinite;
  }
  @keyframes di-pulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }

  /* Identity block — name + fingerprint */
  .di-pass-id {
    padding: var(--sp-6) var(--sp-6) var(--sp-5);
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: var(--sp-4);
    align-items: center;
  }
  .di-pass-avatar {
    width: 56px; height: 56px;
    border-radius: var(--r-md);
    background: var(--accent);
    color: #FFF;
    display: grid; place-items: center;
  }
  .di-pass-avatar svg { width: 26px; height: 26px; }
  .di-pass-id-text { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
  .di-pass-name {
    font-family: var(--font-sans); font-size: 18px;
    font-weight: 600; letter-spacing: -0.014em;
    color: var(--text-strong); line-height: 1.2;
  }
  .di-pass-fp {
    font-family: var(--font-mono); font-size: 11.5px;
    color: var(--g8); letter-spacing: 0;
    display: flex; align-items: center; gap: 6px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .di-pass-fp .k { color: var(--g7); }
  .di-pass-fp .v { color: var(--text-strong); font-weight: 500; }

  /* Stats row — 3 facets */
  .di-pass-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border-top: 1px solid var(--hairline);
  }
  .di-pass-stat {
    padding: var(--sp-5) var(--sp-6);
    display: flex; flex-direction: column; gap: 4px;
    border-right: 1px solid var(--hairline);
  }
  .di-pass-stat:last-child { border-right: 0; }
  .di-pass-stat-lbl {
    font-family: var(--font-mono); font-size: 10px;
    color: var(--g7); letter-spacing: 0.10em;
    text-transform: uppercase; font-weight: 600;
  }
  .di-pass-stat-num {
    font-family: var(--font-sans);
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -0.028em;
    color: var(--text-strong);
    line-height: 1;
  }
  .di-pass-stat-num.acc { color: var(--accent); }
  .di-pass-stat-num .of {
    font-size: 14px; font-weight: 500;
    color: var(--g7); letter-spacing: -0.014em;
    margin-left: 2px;
  }
  .di-pass-stat-sub {
    font-family: var(--font-mono); font-size: 10.5px;
    color: var(--g8); letter-spacing: 0.02em;
    margin-top: 2px;
  }

  /* Jobs block — what this device intelligence layer is doing */
  .di-pass-jobs {
    border-top: 1px solid var(--hairline);
    padding: var(--sp-5) var(--sp-6) var(--sp-4);
  }
  .di-pass-jobs-lbl {
    font-family: var(--font-mono); font-size: 10px;
    color: var(--g7); letter-spacing: 0.10em;
    text-transform: uppercase; font-weight: 600;
    margin-bottom: var(--sp-3);
  }
  .di-pass-job-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-2);
  }
  .di-pass-job {
    display: grid;
    grid-template-columns: 16px 1fr;
    gap: var(--sp-2);
    align-items: center;
    padding: var(--sp-2) 0;
    font-family: var(--font-mono);
    font-size: 11.5px;
    color: var(--g9);
    letter-spacing: 0;
  }
  .di-pass-job .tick {
    width: 14px; height: 14px;
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent);
    border: 1px solid var(--accent-mid);
    display: grid; place-items: center;
    flex-shrink: 0;
  }
  .di-pass-job .tick svg { width: 8px; height: 8px; }
  .di-pass-job .k { color: var(--g8); }
  .di-pass-job .k b {
    color: var(--text-strong); font-weight: 600;
    margin-right: 4px;
  }

  /* Foot — live last-seen line */
  .di-pass-foot {
    display: flex; justify-content: space-between; align-items: center;
    padding: var(--sp-4) var(--sp-6);
    border-top: 1px solid var(--hairline);
    background: var(--bg-subtle);
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--g7);
    letter-spacing: 0.05em;
  }
  .di-pass-foot .r {
    color: var(--accent);
    display: inline-flex; align-items: center; gap: 6px;
    font-weight: 600;
  }
  .di-pass-foot .r .dot {
    width: 5px; height: 5px; border-radius: 50%;
    background: var(--accent);
    animation: di-pulse 1.6s infinite;
  }

  @media (max-width: 1040px) {
    .di-hero-inner { grid-template-columns: 1fr; }
    .di-hero-right { justify-content: flex-start; }
    .di-pass { max-width: 100%; }
  }
  @media (max-width: 520px) {
    .di-pass-stats { grid-template-columns: 1fr; }
    .di-pass-stat { border-right: 0; border-bottom: 1px solid var(--hairline); }
    .di-pass-stat:last-child { border-bottom: 0; }
    .di-pass-job-grid { grid-template-columns: 1fr; }
    .di-pass-stat-num { font-size: 26px; }
  }

