/* LBOS circuit board (js/circuit-board.js + js/lbos-chip.js). Shared by lbos.app/links/ and the Leads Hub LBOS hub. */
.cb-board { position: relative; width: 100%; overflow: hidden; isolation: isolate; contain: layout paint;
  background:
    radial-gradient(ellipse 60% 45% at 50% 50%, rgba(214,170,72,.12), transparent 70%),
    linear-gradient(180deg, #0d0b10, #08070b 60%, #0b0a0e);
  border: 1px solid #2a2416; border-radius: 22px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), inset 0 0 60px rgba(0,0,0,.6), 0 30px 80px -30px rgba(214,170,72,.25); }
.cb-board canvas { position: absolute; inset: 0; display: block; }
.cb-fx { z-index: 2; pointer-events: none; }
.cb-chip { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.cb-nodes { position: absolute; inset: 0; z-index: 4; }

.lbos-chip { filter: drop-shadow(0 0 18px rgba(214,170,72,.28)); transition: filter .3s; }
.lbos-chip .lc-glow { animation: lcBreathe 3.2s ease-in-out infinite; }
.lbos-chip.lc-ping { animation: lcPing .45s ease-out; }
@keyframes lcBreathe { 0%, 100% { opacity: .12; } 50% { opacity: .42; } }
@keyframes lcPing { 0% { filter: drop-shadow(0 0 30px rgba(255,243,201,.75)); } 100% { filter: drop-shadow(0 0 18px rgba(214,170,72,.28)); } }

.cb-node { --c: #d6aa48; position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  padding: 6px 6px 7px; text-align: center; text-decoration: none; color: #f3ead8; border-radius: 12px;
  background: linear-gradient(180deg, #17141c, #0e0c11);
  border: 1px solid color-mix(in srgb, var(--c) 55%, #2a2416);
  box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 10px 26px -12px #000, 0 0 22px -10px var(--c);
  opacity: 0; transform: scale(.9); transition: opacity .5s ease, transform .5s cubic-bezier(.2,1.4,.4,1), box-shadow .25s, border-color .25s;
  -webkit-tap-highlight-color: transparent; }
.cb-node.on { opacity: 1; transform: none; }
/* chip legs on the node */
.cb-node::before, .cb-node::after { content: ""; position: absolute; left: 14%; right: 14%; height: 4px;
  background: repeating-linear-gradient(90deg, color-mix(in srgb, var(--c) 70%, #fff3c9) 0 3px, transparent 3px 9px); opacity: .55; }
.cb-node::before { top: -5px; } .cb-node::after { bottom: -5px; }
.cb-node:hover, .cb-node:focus-visible { border-color: var(--c); box-shadow: 0 0 0 1px var(--c), 0 0 30px -4px var(--c); color: #fff; }
.cb-node:active { transform: scale(.96); }
.cb-node.hit { animation: cbHit .5s ease-out; }
@keyframes cbHit { 0% { box-shadow: 0 0 0 1px var(--c), 0 0 34px 0 var(--c); } 100% { box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 10px 26px -12px #000, 0 0 22px -10px var(--c); } }
.cb-logo { flex: 1 1 auto; min-height: 0; width: 100%; display: flex; align-items: center; justify-content: center; }
.cb-logo img { max-width: 82%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
.cb-node.light .cb-logo img { background: #fff; border-radius: 6px; padding: 3px 5px; }
.cb-name { font: 600 11px/1.15 Archivo, "Segoe UI", system-ui, sans-serif; letter-spacing: .02em; max-width: 100%; }
.cb-kind { display: none; font: 500 9px/1.1 Inter, "Segoe UI", system-ui, sans-serif; color: #a39a86; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 700px) { .cb-name { font-size: 13px; } .cb-kind { display: block; font-size: 10.5px; } }
@media (prefers-reduced-motion: reduce) {
  .cb-node { transition: none; } .cb-node.hit, .lbos-chip.lc-ping { animation: none; } .lbos-chip .lc-glow { animation: none; opacity: .3; }
}
