 svg.append("path").classed("left-goal", true)
 svg.append("path").classed("right-goal", true)
 svg.append("text").classed("time-left", true)
+  .attr("lengthAdjust", "spacingAndGlyphs")
 svg.append("text").classed("team-name", true)
   .classed("left-name", true)
   .attr("text-anchor", "start")
-  .attr("alignment-baseline", "hanging")
+  .attr("lengthAdjust", "spacingAndGlyphs")
 svg.append("text").classed("team-name", true)
   .classed("right-name", true)
   .attr("text-anchor", "end")
-  .attr("alignment-baseline", "hanging")
+  .attr("lengthAdjust", "spacingAndGlyphs")
 
 # draw default sized field
 drawField(default_geometry_field)

      not d.timestamp? or timestamp - d.timestamp > max_screen_time or d.timestamp > timestamp
    .remove()

drawReferee = (referee, is_blue_left) ->
  #d3.select("#time_left").datum(referee).html((d) -> ticks_to_time(d.stage_time_left))
  svg.select(".time-left").datum(referee.stage_time_left)
    .text(ticks_to_time)

  [left, right] = if is_blue_left then [referee.blue, referee.yellow] else [referee.yellow, referee.blue]

  svg.select(".left-name").datum(left)
    .text((d) -> d.name)

  svg.select(".right-name").datum(right)
    .text((d) -> d.name)

  persistTip("#{stg2txt(referee.stage)}: #{cmd2txt(referee.command)}")
  window.referee = referee


  f.select(".field-line")
    .transition()
    .duration(transitionDuration)
    .attr("d", field_path)

  f.select(".left-goal")
    .classed("blue", is_blue_left)
    .classed("yellow", not is_blue_left)
    .transition()
    .duration(transitionDuration)
    .attr("d", left_goal_path)

  f.select(".right-goal")
    .classed("blue", not is_blue_left)
    .classed("yellow", is_blue_left)
    .transition()
    .duration(transitionDuration)
    .attr("d", right_goal_path)

  sp = 25

  f.select(".time-left")
    .transition()
    .duration(transitionDuration)
    .attr("x", 2)
    .attr("y", (f) -> -f.field_width / 2 - sp)

  f.select(".left-name")
    .transition()
    .duration(transitionDuration)
    .attr("x", (f) -> -f.field_length / 2 + sp)
    .attr("y", (f) -> -f.field_width / 2 + sp + vPxPerLetter)

  f.select(".right-name")
    .transition()
    .duration(transitionDuration)
    .attr("x", (f) -> f.field_length / 2 - sp)
    .attr("y", (f) -> -f.field_width / 2 + sp + vPxPerLetter)

# in miliseconds
max_screen_time = 100
