       ctx.restore()
 
   _css_text: () ->
-    console.log('css not implemented')
+    for i in [0...@text.length]
+      if @label_div[i] == null
+        @label_div[i] = $("<div>")
+          .html(@text[i])
+          .addClass('label')
+          .css({
+            'position': 'absolute'
+            'top': "#{@sy[i] + @mget('y_offset')}px"
+            'left': "#{@sx[i] + @mget('x_offset')}px"
+            # 'background-color': 'rgba(255, 255, 255, 0)'
+            'font-size': '9pt'
+            'font-family': 'sans-serif'
+            })
+
+        overlays = @plot_view.$el.find('div.bk-canvas-events')
+        @label_div[i].appendTo(overlays)
+
+      else
+        @label_div[i]
+          .html(@text[i])
+          .css({
+            'position': 'absolute'
+            'top': "#{@sy[i] + @mget('y_offset')}px"
+            'left': "#{@sx[i] + @mget('x_offset')}px"
+            # 'background-color': 'rgba(255, 255, 255, 0)'
+            'font-size': '9pt'
+            'font-family': 'sans-serif'
+            })
 
 class Label extends Annotation.Model
   default_view: LabelView
 
   type: 'LabelAnnotation'
 
+  coords: [ ['x', 'y'] ]
   mixins: ['text']
 
   props: ->
     return _.extend {}, super(), {
-      x:            [ p.NumberSpec                      ]
       x_units:      [ p.SpatialUnits, 'data'            ]
-      y:            [ p.NumberSpec                      ]
       y_units:      [ p.SpatialUnits, 'data'            ]
       text:         [ p.StringSpec,   { field :"text" } ]
       angle:        [ p.AngleSpec,    0                 ]

_ = require "underscore"

Annotation = require "./annotation"
Renderer = require "../renderers/renderer"

class LabelView extends Renderer.View
  initialize: (options) ->
    super(options)
    @set_data(@mget('source'))
    @label_div = (null for i in @text)

  bind_bokeh_events: () ->
    if @mget('render_mode') == 'css'
