/*body {
  font: 300 36px "Helvetica Neue";
  height: 640px;
  margin: 80px 160px 80px 160px;
  overflow: hidden;
  position: relative;
  width: 960px;
}

a:link, a:visited {
  color: #777;
  text-decoration: none;
}

a:hover {
  color: #666;
}

blockquote {
  margin: 0;
}

blockquote:before {
  content: "“";
  position: absolute;
  left: -.4em;
}

blockquote:after {
  content: "”";
  position: absolute;
}

body > ul {
  margin: 0;
  padding: 0;
}

h1 {
  font-size: 64px;
}

h1, h2, h3 {
  font-weight: inherit;
  margin: 0;
}

h2, h3 {
  text-align: right;
  font-size: inherit;
  position: absolute;
  bottom: 0;
  right: 0;
}

h2 {
  font-size: 24px;
  position: absolute;
}

h3 {
  bottom: -20px;
  font-size: 18px;
}*/

.invert {
  background: #1f1f1f;
  color: #dcdccc;
}

.invert h2, .invert h3 {
  color: #7f9f7f;
}

.string, .regexp {
  color: #f39;
}

.keyword {
  color: #00c;
}

.comment {
  color: #777;
  font-style: oblique;
}

.number {
  color: #369;
}

.class, .special {
  color: #1181B8;
}

body > svg {
  position: absolute;
  top: -80px;
  left: -160px;
}


path.arc {
  cursor: default;
  fill: #fff;
}

.node {
  font-size: 10px;
}

.node text {
  fill-opacity: 0;
  transition: fill-opacity 0.3s ease;
}

.node:hover text {
  fill-opacity: 1;
  fill: #2d3748;
}

.node.source text,
.node.target text {
  fill-opacity: 1;
  fill: #2d3748;
}

.link {
  fill: none;
  stroke: #1f77b4;
  stroke-opacity: .1;
  pointer-events: stroke;
  stroke-width: 3px;
  cursor: pointer;
  transition: stroke-opacity 0.3s ease, stroke-width 0.3s ease;
}

.link.source, .link.target {
  stroke: #1f77b4;
  stroke-opacity: 1;
  stroke-width: 3px;
  animation: pulse 1.5s ease-in-out infinite;
  filter: drop-shadow(0 0 8px rgba(31, 119, 180, 0.8)) brightness(1.3);
}

@keyframes pulse {
  0%, 100% {
    stroke-opacity: 1;
  }
  50% {
    stroke-opacity: 0.5;
  }
}

.connection-dot {
  fill: #1f77b4;
  fill-opacity: 0.5;
  stroke: none;
}

.node.target {
  fill: #1f77b4 !important;
}

.node.source {
  fill: #1f77b4;
}
