ponle el maldito width
(jaja es broma)
y si, ya te han dicho que uses javascript.
yo uso javascript pero con jquery, te lo recomiendo, ya que si usas su método
animate() te será muy facil lograr lo que necesitas.
Bastará con que des position fixed y valores iniciales para top y left en el css (ya lo tenes hecho 40% para left y top). Valores que reemplazas luego dentro de animate() seguramente por 0%.
Saludos.