Org-publish, by default, only processes org files. If you want to include CSS files, images, and other non-org content, you need to process them as attachments.
So, for example, this is what I have: (setq org-publish-project-alist '(("website-orgfiles" :base-directory "$HOME/website_src/" :publishing-directory "$HOME/website_publish/" :recursive t :headline-levels 6 :sections-numbers nil :html-head-include-default-style nil :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"/website_style.css\" />) ("website-images" :base-directory "$HOME/website_src/images/" :publishing-directory "$HOME/website_publish/images/" :recursive t :base-extension "png\\|jpg\\|gif" :publishing-function org-publish-attachment) ("website-css" :base-directory "$HOME/website_src/css/" :publishing-directory "$HOME/website_publish/" :base-extension "css" :publishing-function org-publish-attachment) ("website" :components ("website-orgfiles" "website-images" "website-css")))) In other words, I break up my website project into separate subprojects for CSS, images, and org-files, and include them as components of the main website project. -- Rohit