# Dynamo Dark Theme for D2
# Import into sibling diagrams: ...@dynamo.d2
#
# Design: Muted fills, subtle borders, selective accent color.
# Color palette from design_tokens.yaml

# ---------------------------------------------------------------------------
# Theme overrides
# ---------------------------------------------------------------------------
vars: {
  d2-config: {
    theme-overrides: {
      # Neutral shades -- dark background
      N1: "#e0e0e0"
      N2: "#a0a0a0"
      N3: "#707070"
      N4: "#404040"
      N5: "#5d5d5d"
      N6: "#151515"
      N7: "#0a0a0a"

      # Base colors -- container nesting
      B1: "#0a0a0a"
      B2: "#111111"
      B3: "#181818"
      B4: "#222222"
      B5: "#5d5d5d"
      B6: "#404040"

      # Accents
      AA2: "#76b900"
      AA4: "#3d7ab5"
      AA5: "#c4a035"

      AB4: "#7a3050"
      AB5: "#2a6b55"
    }
  }
}

# ---------------------------------------------------------------------------
# Reusable classes
# ---------------------------------------------------------------------------

classes: {

  # --- Hardware components (outlined style with muted accent) ---

  gpu: {
    style: {
      opacity: 0.75
      fill: "#151515"
      stroke: "#4a8c00"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  nic: {
    style: {
      opacity: 0.75
      fill: "#2a1520"
      stroke: "#7a3050"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  cpu: {
    style: {
      opacity: 0.75
      fill: "#0f1e30"
      stroke: "#3d7ab5"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  # --- Logical components (selective accent fills) ---

  data_component: {
    style: {
      opacity: 0.75
      fill: "#2a4a10"
      stroke: "#5a9a30"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  flag_component: {
    style: {
      opacity: 0.75
      fill: "#1e1a14"
      stroke: "#7a6a45"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  # --- Depth gradient (radix tree levels, desaturated green) ---

  depth_0: {
    style: {
      opacity: 0.75
      fill: "#2a4a10"
      stroke: "#5a9a30"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  depth_1: {
    style: {
      opacity: 0.75
      fill: "#224010"
      stroke: "#4a8828"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  depth_2: {
    style: {
      opacity: 0.75
      fill: "#1a3510"
      stroke: "#3a7520"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  depth_3: {
    style: {
      opacity: 0.75
      fill: "#142a0c"
      stroke: "#2c6018"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  # --- Software / Service components ---

  service: {
    style: {
      opacity: 0.75
      fill: "#1a1428"
      stroke: "#7650a0"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  api: {
    style: {
      opacity: 0.75
      fill: "#1a1428"
      stroke: "#8060b0"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  database: {
    style: {
      opacity: 0.75
      fill: "#142025"
      stroke: "#3a7a70"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  cache: {
    style: {
      opacity: 0.75
      fill: "#142025"
      stroke: "#50a090"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  queue: {
    style: {
      opacity: 0.75
      fill: "#201810"
      stroke: "#a06040"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  event: {
    style: {
      opacity: 0.75
      fill: "#201810"
      stroke: "#c08050"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  # --- Infrastructure / Deployment ---

  container_runtime: {
    style: {
      opacity: 0.75
      fill: "#101820"
      stroke: "#4080a0"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  load_balancer: {
    style: {
      opacity: 0.75
      fill: "#1a1a10"
      stroke: "#909040"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  endpoint: {
    style: {
      opacity: 0.75
      fill: "#151515"
      stroke: "#616161"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  # --- Status / Semantic ---

  critical: {
    style: {
      opacity: 0.75
      fill: "#2a1010"
      stroke: "#b04040"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  success: {
    style: {
      opacity: 0.75
      fill: "#102010"
      stroke: "#40a040"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
      bold: true
    }
  }

  neutral: {
    style: {
      opacity: 0.75
      fill: "#1a1a1a"
      stroke: "#636363"
      stroke-width: 1
      border-radius: 0
      font-color: "#e0e0e0"
      font-size: 16
    }
  }

  # --- Containers (subtle, receding) ---

  outer_frame: {
    style: {
      fill: "#0a0a0a"
      stroke: "#5d5d5d"
      stroke-width: 1
      font-color: "#e0e0e0"
      font-size: 20
      bold: true
    }
  }

  container_l1: {
    style: {
      fill: "#111111"
      stroke: "#616161"
      stroke-width: 1
      border-radius: 0
      font-color: "#c0c0c0"
      font-size: 18
      bold: true
    }
  }

  container_l2: {
    style: {
      fill: "#181818"
      stroke: "#666666"
      stroke-width: 1
      border-radius: 0
      font-color: "#a0a0a0"
      font-size: 16
    }
  }

  container_l3: {
    style: {
      fill: "#1e1e1e"
      stroke: "#6a6a6a"
      stroke-width: 1
      border-radius: 0
      font-color: "#909090"
      font-size: 14
    }
  }

  # --- Text elements ---

  section_title: {
    shape: text
    style: {
      font-size: 20
      bold: true
      font-color: "#e0e0e0"
    }
  }

  annotation: {
    shape: text
    style: {
      font-size: 14
      font-color: "#8a8a8a"
      italic: true
    }
  }

  # --- Connection types (muted, thin) ---

  data_flow: {
    style: {
      stroke: "#c4a035"
      stroke-width: 2
      font-color: "#c4a035"
      font-size: 14
    }
  }

  control_flow: {
    style: {
      stroke: "#3d7ab5"
      stroke-width: 1
      stroke-dash: 4
      font-color: "#5a90c0"
      font-size: 14
    }
  }

  poll_flow: {
    style: {
      stroke: "#4a8c00"
      stroke-width: 1
      stroke-dash: 3
      opacity: 0.5
      font-color: "#4a8c00"
      font-size: 14
    }
  }

  nvlink: {
    style: {
      stroke: "#c4a035"
      stroke-width: 2
      font-color: "#c4a035"
      font-size: 14
    }
  }

  rdma_flow: {
    style: {
      stroke: "#7a3050"
      stroke-width: 2
      font-color: "#c06080"
      font-size: 14
    }
  }

  # --- Software / Pipeline connections ---

  api_call: {
    style: {
      stroke: "#6a4890"
      stroke-width: 1
      font-color: "#9070c0"
      font-size: 14
    }
  }

  event_flow: {
    style: {
      stroke: "#a06040"
      stroke-width: 1
      stroke-dash: 4
      font-color: "#c08050"
      font-size: 14
    }
  }

  pipeline: {
    style: {
      stroke: "#3a7a70"
      stroke-width: 2
      font-color: "#50a090"
      font-size: 14
    }
  }

  dependency: {
    style: {
      stroke: "#767676"
      stroke-width: 1
      stroke-dash: 3
      font-color: "#8a8a8a"
      font-size: 14
    }
  }

  critical_path: {
    style: {
      stroke: "#b04040"
      stroke-width: 2
      font-color: "#d06060"
      font-size: 14
    }
  }

  traversal: {
    style: {
      stroke: "#e0e0e0"
      stroke-width: 1
      stroke-dash: 2
      font-color: "#c0c0c0"
      font-size: 14
    }
  }
}
