  /* ── shared panel chrome ── */
  .iv-panel { width: 100%; height: auto; display: block; overflow: visible; }
  .iv-panel line, .iv-panel path, .iv-panel rect, .iv-panel circle, .iv-panel ellipse { vector-effect: non-scaling-stroke; }
  .iv-frame { fill: rgba(13,13,15,0.72); stroke: var(--gold-line); stroke-width: 1; }
  .iv-head-rule { stroke: var(--border, rgba(232,230,225,0.10)); stroke-width: 1; }
  .iv-label {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 11px; letter-spacing: 0.16em; fill: var(--gold);
  }
  .iv-live { fill: var(--signal, #3ddc84); }
  @media (prefers-reduced-motion: no-preference) {
    .iv-live { animation: ivLive 2.2s ease-in-out infinite; }
    @keyframes ivLive { 0%,100% { opacity: .55; } 50% { opacity: 1; } }
  }
  .iv-grid line { stroke: rgba(232,230,225,0.045); stroke-width: 1; }
  .iv-tick { stroke: var(--gold-line); stroke-width: 1; }
  .iv-readout {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 10.5px; letter-spacing: 0.08em; fill: var(--text-muted);
    font-variant-numeric: tabular-nums;
  }
  .iv-readout tspan.hi { fill: var(--gold); }
  .iv-chip-bg { fill: var(--gold-dim); stroke: var(--gold-line); stroke-width: 1; }
  .iv-chip-tx {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 11px; letter-spacing: 0.06em; fill: var(--gold);
    font-variant-numeric: tabular-nums;
  }
  .iv-node-tx {
    font-family: var(--font-mono, 'JetBrains Mono', monospace);
    font-size: 9px; letter-spacing: 0.12em; fill: var(--text-muted);
  }

  /* ── QSD ── */
  .iv-axis { stroke: rgba(232,230,225,0.14); stroke-width: 1; }
  .iv-qsd-up rect { fill: rgba(61,220,132,0.16); stroke: var(--signal); stroke-width: 1.5; }
  .iv-qsd-up line { stroke: var(--signal); stroke-width: 1.5; }
  .iv-qsd-dn rect { fill: rgba(var(--gold-rgb),0.16); stroke: var(--gold); stroke-width: 1.5; }
  .iv-qsd-dn line { stroke: var(--gold); stroke-width: 1.5; }
  .iv-qsd-sig { fill: none; stroke-width: 2; stroke-linecap: round; }
  .iv-qsd-glow { stroke: var(--gold-bright); opacity: .35; stroke-width: 5; filter: blur(3px); }
  .iv-qsd-band { fill: rgba(var(--gold-rgb),0.055); }
  .iv-qsd-fc { fill: none; stroke: var(--gold-bright); stroke-width: 1.6; stroke-dasharray: 5 6; opacity: .8; }
  .iv-qsd-dot { fill: var(--gold); }
  .iv-qsd-halo { fill: none; stroke: var(--gold); stroke-width: 1.2; opacity: 0; }
  .iv-scan { stroke: var(--gold); stroke-width: 1; opacity: 0; }

  /* ── IBS ── */
  .iv-ibs-edge { stroke: var(--gold-line); stroke-width: 1.2; stroke-dasharray: 4 7; fill: none; }
  .iv-ibs-node { fill: var(--surface-3, #16161a); stroke: rgba(232,230,225,0.22); stroke-width: 1; }
  .iv-ibs-hub  { fill: var(--surface-2, #111114); stroke: var(--gold); stroke-width: 1.4; }
  .iv-ibs-hub-tx { font-family: var(--font-mono, monospace); font-size: 11px; letter-spacing: .18em; fill: var(--gold); }
  .iv-ibs-ring { fill: none; stroke: var(--gold-line); stroke-width: 1; }
  .iv-ibs-pkt { fill: var(--gold-bright); }

  /* ── FPA ── */
  .iv-fpa-ring { fill: none; stroke: rgba(232,230,225,0.13); stroke-width: 1.4; }
  .iv-fpa-arc { fill: none; stroke-width: 4; stroke-linecap: round; }
  .iv-fpa-tick { stroke: rgba(232,230,225,0.30); stroke-width: 1.6; }
  .iv-fpa-tick.on { stroke: var(--gold); }
  .iv-fpa-core { fill: var(--gold); }
  .iv-fpa-core-halo { fill: none; stroke: var(--gold); stroke-width: 1.2; opacity: 0; }
  .iv-fpa-mark { fill: var(--gold-bright); stroke: none; }
  .iv-fpa-wave { fill: none; stroke: var(--gold); stroke-width: 1.6; stroke-linecap: round; stroke-dasharray: 7 9; opacity: .85; }
  .iv-fpa-wave2 { fill: none; stroke: rgba(var(--gold-rgb),0.28); stroke-width: 1.2; stroke-dasharray: 4 10; }

  /* ── CAA ── */
  .iv-caa-line { stroke: var(--gold-line); stroke-width: 1.3; fill: none; }
  .iv-caa-core { fill: var(--surface-2, #111114); stroke: var(--gold); stroke-width: 1.6; }
  .iv-caa-orbit { fill: none; stroke: rgba(var(--gold-rgb),0.35); stroke-width: 1; stroke-dasharray: 3 6; }
  .iv-caa-odot { fill: var(--gold-bright); }
  .iv-caa-tool { fill: var(--surface-3, #16161a); stroke: rgba(232,230,225,0.22); stroke-width: 1; }
  .iv-caa-chk-c { fill: none; stroke: var(--signal); stroke-width: 1.4; }
  .iv-caa-chk-m { fill: none; stroke: var(--signal); stroke-width: 1.6; stroke-linecap: round; }
  .iv-caa-out { fill: var(--gold-dim); stroke: var(--gold); stroke-width: 1.3; }
  .iv-caa-out-tx { font-family: var(--font-mono, monospace); font-size: 10px; letter-spacing: .14em; fill: var(--gold); }
  .iv-caa-cmd { font-family: var(--font-mono, monospace); font-size: 11px; letter-spacing: .04em; fill: var(--text-muted); }
  .iv-caa-cursor { fill: var(--gold); }
  .iv-caa-pkt { fill: var(--gold-bright); }