.andromeda-api-graph {
  --andromeda-api-graph-fullscreen-fg: #10242d;

  display: grid;
}

[data-md-color-scheme="default"] .andromeda-api-graph {
  --andromeda-api-graph-fullscreen-fg: #ffffff;
}

.andromeda-api-graph:fullscreen {
  width: 100vw;
  height: 100vh;
  padding: clamp(0.75rem, 2vw, 1.25rem);
  box-sizing: border-box;
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--md-default-bg-color);
}

.md-main:has(.andromeda-api-graph) .md-main__inner.md-grid {
  max-width: none;
}

.md-main:has(.andromeda-api-graph) .md-content {
  max-width: none;
}

.md-main:has(.andromeda-api-graph) .md-content__inner {
  margin-inline: clamp(0.75rem, 2vw, 2rem);
}

.andromeda-api-graph__toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  padding: 0.45rem 0.5rem;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-bottom: 0;
  border-radius: 0.2rem 0.2rem 0 0;
  background: var(--md-code-bg-color);
}

.andromeda-api-graph__toolbar > p {
  display: contents;
}

.andromeda-api-graph__search-label {
  margin-inline: 0.15rem 0.2rem;
  font-weight: 700;
}

.andromeda-api-graph__toolbar .md-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  min-height: 2rem;
  padding-block: 0;
}

.andromeda-api-graph__toolbar [data-andromeda-api-graph-fullscreen] {
  border-color: var(--md-accent-fg-color);
  color: var(--andromeda-api-graph-fullscreen-fg);
  background-color: var(--md-accent-fg-color);
}

.andromeda-api-graph__toolbar [data-andromeda-api-graph-fullscreen]:hover,
.andromeda-api-graph__toolbar [data-andromeda-api-graph-fullscreen]:focus {
  border-color: var(--md-accent-fg-color);
  color: var(--andromeda-api-graph-fullscreen-fg);
  background-color: var(--md-accent-fg-color);
}

.andromeda-api-graph__association-toggle {
  display: inline-flex;
  gap: 0.3rem;
  align-items: center;
  min-height: 2rem;
  padding-inline: 0.2rem;
  font-weight: 700;
  cursor: pointer;
}

.andromeda-api-graph__association-toggle input {
  width: 0.72rem;
  height: 0.72rem;
  margin: 0;
}

.andromeda-api-graph__selector {
  position: relative;
  margin-left: auto;
}

.andromeda-api-graph__selector-button {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 6.75rem;
  height: 2rem;
  padding: 0 1.65rem 0 1rem;
}

.andromeda-api-graph__selector-button::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0.75rem;
  display: block;
  width: 0.45em;
  height: 0.45em;
  border: solid currentcolor;
  border-width: 0 0.12em 0.12em 0;
  transform: translateY(-65%) rotate(45deg);
}

.andromeda-api-graph__selector-button[aria-expanded="true"]::after {
  transform: translateY(-35%) rotate(225deg);
}

.andromeda-api-graph__selector-panel {
  position: absolute;
  top: calc(100% + 0.3rem);
  right: 0;
  z-index: 5;
  width: min(24rem, 78vw);
  max-height: min(24rem, 60vh);
  padding: 0.35rem;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 0.2rem;
  overflow: auto;
  background: var(--md-default-bg-color);
  box-shadow: var(--md-shadow-z2);
}

.andromeda-api-graph__selector-class + .andromeda-api-graph__selector-class {
  margin-top: 0.04rem;
}

.andromeda-api-graph__selector-class-header {
  display: flex;
  align-items: center;
}

.andromeda-api-graph__selector-row {
  display: flex;
  gap: 0.3rem;
  align-items: center;
  width: 100%;
  min-height: 1.15rem;
  padding: 0.04rem 0.12rem;
  border-radius: 0.15rem;
  font-size: 0.68rem;
  line-height: 1.15;
  cursor: pointer;
}

.andromeda-api-graph__selector-row:hover,
.andromeda-api-graph__selector-row:focus-within {
  background: var(--md-default-fg-color--lightest);
}

.andromeda-api-graph__selector-row input {
  width: 0.72rem;
  height: 0.72rem;
  margin: 0;
}

.andromeda-api-graph__selector-class-label {
  flex: 1 1 auto;
  font-weight: 700;
}

.andromeda-api-graph__selector-class-toggle {
  position: relative;
  width: 1.1rem;
  height: 1.1rem;
  border-radius: 0.15rem;
  cursor: pointer;
}

.andromeda-api-graph__selector-class-toggle:hover,
.andromeda-api-graph__selector-class-toggle:focus {
  background: var(--md-default-fg-color--lightest);
}

.andromeda-api-graph__selector-class-toggle::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.4em;
  height: 0.4em;
  border: solid currentcolor;
  border-width: 0 0.11em 0.11em 0;
  transform: translate(-60%, -50%) rotate(-45deg);
}

.andromeda-api-graph__selector-class-toggle[aria-expanded="true"]::before {
  transform: translate(-50%, -60%) rotate(45deg);
}

.andromeda-api-graph__selector-functions {
  margin-left: 0.95rem;
}

.andromeda-api-graph__search-field {
  position: relative;
  display: flex;
  flex: 1 1 17rem;
  min-width: 14rem;
  max-width: 28rem;
}

.andromeda-api-graph__search {
  width: 100%;
  min-height: 2rem;
  padding: 0 2rem 0 0.65rem;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 0.2rem;
  color: var(--md-default-fg-color);
  background-color: var(--md-code-bg-color);
  font: inherit;
  appearance: none;
}

.andromeda-api-graph__search::placeholder {
  color: var(--md-default-fg-color--light);
}

.andromeda-api-graph__search:focus {
  border-color: var(--md-accent-fg-color);
  box-shadow: 0 0 0 0.1rem var(--md-accent-fg-color--transparent);
}

.andromeda-api-graph__search-clear {
  position: absolute;
  top: 50%;
  right: 0.35rem;
  display: grid;
  width: 1.35rem;
  height: 1.35rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  place-items: center;
  color: var(--md-default-fg-color--light);
  background: transparent;
  font: inherit;
  line-height: 1;
  transform: translateY(-50%);
  cursor: pointer;
}

.andromeda-api-graph__search-clear:hover,
.andromeda-api-graph__search-clear:focus {
  color: var(--md-default-fg-color);
  background-color: var(--md-default-fg-color--lightest);
}

.andromeda-api-graph__status {
  padding-inline: 0.4rem;
  color: var(--andromeda-muted, #9db2bb);
  font-size: 0.72rem;
  white-space: nowrap;
}

.andromeda-api-graph__canvas {
  height: 74vh;
  border: 1px solid rgba(103, 217, 239, 0.22);
  border-radius: 0 0 8px 8px;
  overflow: hidden;
  background: var(--andromeda-graph-canvas-bg);
}

.andromeda-api-graph:fullscreen .andromeda-api-graph__canvas {
  height: auto;
  min-height: 0;
}

.andromeda-api-graph__canvas > .andromeda-api-graph__svg {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  cursor: grab;
}

.andromeda-api-graph__canvas > .andromeda-api-graph__svg:active {
  cursor: grabbing;
}

.andromeda-api-graph__edge {
  fill: none;
  stroke-width: 1.35;
  opacity: 0.72;
}

.andromeda-api-graph__edge-hit {
  fill: none;
  stroke: transparent;
  stroke-width: 16;
  pointer-events: stroke;
  vector-effect: non-scaling-stroke;
}

.andromeda-api-graph__edge.edge-kind-UnrealExecuteCall,
.andromeda-api-graph__edge.edge-kind-UnrealExecuteImplementation {
  stroke-dasharray: 7 5;
}

.andromeda-api-graph__edge.edge-kind-CppSourceCall {
  stroke-dasharray: 9 3;
}

.andromeda-api-graph__edge.edge-kind-CppCallbackBinding {
  stroke-dasharray: 4 3 1 3;
}

.andromeda-api-graph__edge.edge-kind-CppVirtualDispatch {
  stroke-dasharray: 12 4;
}

.andromeda-api-graph__edge.edge-kind-UnrealDelegateBinding {
  stroke-dasharray: 2 5;
}

.andromeda-api-graph__edge.is-muted,
.andromeda-api-graph__node.is-muted {
  opacity: 0.15;
}

.andromeda-api-graph__edge.is-active {
  opacity: 1;
  stroke-width: 2.5;
}

.andromeda-api-graph__class-group {
  pointer-events: auto;
}

.andromeda-api-graph__class-group rect {
  fill-opacity: 0.11;
  stroke-opacity: 0.55;
  stroke-width: 1.4;
}

.andromeda-api-graph__class-group text {
  fill: var(--md-default-fg-color);
  font: 700 12px "Segoe UI", sans-serif;
}

.andromeda-api-graph__class-group.is-active rect {
  fill-opacity: 0.18;
  stroke-opacity: 0.9;
  stroke-width: 2;
}

.andromeda-api-graph__class-group.is-muted {
  opacity: 0.18;
}

.andromeda-api-graph__node {
  cursor: pointer;
}

.andromeda-api-graph__node rect {
  stroke: #1f2937;
  stroke-width: 1.1;
}

.andromeda-api-graph__node text {
  fill: #10242d;
  font: 700 10px "Segoe UI", sans-serif;
  pointer-events: none;
}

.andromeda-api-graph__node.is-active rect,
.andromeda-api-graph__node.is-selected rect {
  stroke: var(--andromeda-amber, #f3b653);
  stroke-width: 2.4;
}

.andromeda-api-graph__error {
  color: var(--andromeda-red, #ff6b57);
}

.andromeda-api-graph__loading {
  padding: 1rem;
}
