.lv-election {
  --lv-follower: #555;
  --lv-candidate: #b8791f;
  --lv-candidate-fill: rgba(184, 121, 31, 0.14);
  --lv-leader: #6266e0;
  --lv-leader-fill: rgba(98, 102, 224, 0.14);
  --lv-grant: #2f9e5f;
  --lv-deny: #c0392b;
  --lv-muted: #8c8c8c;
  --lv-border: #e3e3e8;
  --lv-surface: #fff;

  display: block;
  margin: 1.5em 0;
}
.lv-election__stage {
  background: var(--lv-surface);
  border: 1px solid var(--lv-border);
  border-radius: 12px;
  padding: 8px;
  max-width: 30rem;
  margin: 0 auto;
}
.lv-election__stage svg {
  display: block;
  width: 100%;
  height: auto;
}
.lv-election .lv-edge {
  stroke: var(--lv-candidate);
  stroke-width: 1.5;
  opacity: 0.5;
}
.lv-election .lv-node-circle {
  stroke-width: 2;
  transition: fill 0.25s ease, stroke 0.25s ease;
}
.lv-election .lv-follower .lv-node-circle {
  fill: var(--lv-surface);
  stroke: var(--lv-follower);
}
.lv-election .lv-candidate .lv-node-circle {
  fill: var(--lv-candidate-fill);
  stroke: var(--lv-candidate);
}
.lv-election .lv-leader .lv-node-circle {
  fill: var(--lv-leader-fill);
  stroke: var(--lv-leader);
}
.lv-election .lv-node-label {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px;
  text-anchor: middle;
  dominant-baseline: central;
  fill: currentColor;
}
.lv-election .lv-node-info {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  text-anchor: middle;
  fill: var(--lv-muted);
}
.lv-election .lv-follower .lv-node-info {
  fill: var(--lv-muted);
}
.lv-election .lv-candidate .lv-node-info {
  fill: var(--lv-candidate);
  font-weight: 600;
}
.lv-election .lv-leader .lv-node-info {
  fill: var(--lv-leader);
  font-weight: 600;
}
.lv-election .lv-countdown-ring {
  fill: none;
  stroke: var(--lv-follower);
  stroke-width: 3;
  opacity: 0.35;
}
.lv-election .lv-msg-dot {
  opacity: 0;
}
.lv-election .lv-vote-request {
  fill: var(--lv-candidate);
}
.lv-election .lv-vote-grant {
  fill: var(--lv-grant);
}
.lv-election .lv-vote-deny {
  fill: var(--lv-deny);
}
.lv-election__controls {
  max-width: 30rem;
  margin: 10px auto 0;
  display: flex;
  align-items: center;
  gap: 12px;
}
.lv-election__log {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.85em;
  color: var(--lv-muted);
  min-height: 1.4em;
}
.lv-election__restart {
  font: inherit;
  font-size: 0.85em;
  padding: 5px 12px;
  border-radius: 8px;
  border: 1px solid var(--lv-border);
  background: var(--lv-surface);
  color: inherit;
  cursor: pointer;
}
.lv-election__restart:hover {
  background: var(--lv-candidate);
  border-color: var(--lv-candidate);
  color: #fff;
}
