Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

* init project.

  • Loading branch information...
commit 94805f53641892494424543ece09dd8076c8f70a 0 parents
vicalloy authored
5 .gitignore
... ... @@ -0,0 +1,5 @@
  1 +*.pyc
  2 +*.swp
  3 +*.sqlite
  4 +env/
  5 +ref/
14 deploy/dj_scaffold.wsgi
... ... @@ -0,0 +1,14 @@
  1 +import os
  2 +import site
  3 +from dj_scaffold.env import add_site_dir
  4 +
  5 +HERE = os.path.dirname(__file__)
  6 +ROOT_PATH = os.path.abspath(os.path.join(HERE, '../'))
  7 +
  8 +ALLDIRS = [os.path.join(ROOT_PATH, 'env/lib/python2.7/site-packages'), os.path.join(ROOT_PATH, 'sites')]
  9 +add_site_dir(ALLDIRS)
  10 +
  11 +os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  12 +
  13 +import django.core.handlers.wsgi
  14 +application = django.core.handlers.wsgi.WSGIHandler()
0  docs/empty
No changes.
0  readme.rst
Source Rendered
No changes.
5 requirements.txt
... ... @@ -0,0 +1,5 @@
  1 +Django>=1.3
  2 +south
  3 +dj-scaffold
  4 +django-devserver
  5 +django-debug-toolbar
33 scripts/create_env.py
... ... @@ -0,0 +1,33 @@
  1 +#!/usr/bin/env python
  2 +# -*- coding: UTF-8 -*-
  3 +import os
  4 +
  5 +from helper import run
  6 +
  7 +here = os.path.dirname(os.path.abspath(__file__))
  8 +root = os.path.join(here, "../")
  9 +tools_folder = os.path.join(root, "tools/")
  10 +env = os.path.join(root, "env/")
  11 +
  12 +pip = os.path.join(env, "Scripts/pip.exe")
  13 +if os.name == 'posix':
  14 + pip = os.path.join(env, "bin/pip")
  15 +
  16 +python = "python"
  17 +try:
  18 + import config
  19 + python = getattr(config, "python", python)
  20 +except:
  21 + pass
  22 +
  23 +def do_pip():
  24 + print '== do_pip =='
  25 + requirements = os.path.join(root, 'requirements.txt')
  26 + run("%s install -r %s" % (pip, requirements))
  27 +
  28 +if __name__ == '__main__':
  29 + virtualenv_py = os.path.join(tools_folder, "virtualenv.py")
  30 + print '== create env =='
  31 + if not os.path.exists(env):
  32 + run('%s %s %s' % (python, virtualenv_py, env))
  33 + do_pip()
4 scripts/env.bat
... ... @@ -0,0 +1,4 @@
  1 +@echo off
  2 +@call %~dp0..\env\Scripts\activate.bat
  3 +@set mg=python.exe %~dp0..\sites\manage.py
  4 +@cmd
5 scripts/env.rc
... ... @@ -0,0 +1,5 @@
  1 +SCRIPT=$(readlink -f ${PWD}/${BASH_SOURCE})
  2 +TOP_PATH=`dirname $SCRIPT`
  3 +TOP_PATH="$TOP_PATH/.."
  4 +source $TOP_PATH/env/bin/activate
  5 +export mg="$TOP_PATH/env/bin/python $TOP_PATH/sites/manage.py"
20 scripts/helper.py
... ... @@ -0,0 +1,20 @@
  1 +#!/usr/bin/env python
  2 +# -*- coding: UTF-8 -*-
  3 +import os, zipfile, subprocess
  4 +
  5 +def unzip(zip_file, obj_folder):
  6 + z = zipfile.ZipFile(zip_file, 'r')
  7 + for f in z.namelist():
  8 + new_filename = os.path.join(obj_folder, f)
  9 + if not os.path.exists(os.path.dirname(new_filename)):
  10 + os.makedirs(os.path.dirname(new_filename))
  11 + if new_filename[-1:][0] not in ('\\', '/'):
  12 + file(new_filename, 'wb').write(z.read(f))
  13 +
  14 +def run(target, **args):
  15 + process = subprocess.Popen(target, shell=True, **args)
  16 + (stdoutput,erroutput) = process.communicate()
  17 + return stdoutput
  18 +
  19 +if __name__ == '__main__':
  20 + print run('dir')
0  sites/__init__.py
No changes.
19 sites/manage.py
... ... @@ -0,0 +1,19 @@
  1 +#!/usr/bin/env python
  2 +from django.core.management import execute_manager
  3 +import imp
  4 +import os, sys
  5 +
  6 +HERE = os.path.dirname(os.path.abspath(__file__))
  7 +sys.path.insert(0, os.path.join(HERE, '../requirement'))
  8 +
  9 +try:
  10 + imp.find_module('settings') # Assumed to be in the same directory.
  11 +except ImportError:
  12 + import sys
  13 + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
  14 + sys.exit(1)
  15 +
  16 +import settings
  17 +
  18 +if __name__ == "__main__":
  19 + execute_manager(settings)
0  sites/media/empty
No changes.
6 sites/settings/__init__.py
... ... @@ -0,0 +1,6 @@
  1 +SETTINGS = 'dev'
  2 +try:
  3 + from pre import SETTINGS
  4 +except:
  5 + pass
  6 +exec 'from %s import *' % SETTINGS
153 sites/settings/base.py
... ... @@ -0,0 +1,153 @@
  1 +# Django settings for simple_todo_site project.
  2 +import os
  3 +HERE = os.path.dirname(os.path.abspath(__file__))
  4 +HERE = os.path.join(HERE, '../')
  5 +
  6 +DEBUG = True
  7 +TEMPLATE_DEBUG = DEBUG
  8 +
  9 +ADMINS = (
  10 + # ('Your Name', 'your_email@example.com'),
  11 +)
  12 +
  13 +MANAGERS = ADMINS
  14 +
  15 +DATABASES = {
  16 + 'default': {
  17 + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
  18 + 'NAME': os.path.join(HERE, 'db.sqlite'), # Or path to database file if using sqlite3.
  19 + 'USER': '', # Not used with sqlite3.
  20 + 'PASSWORD': '', # Not used with sqlite3.
  21 + 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
  22 + 'PORT': '', # Set to empty string for default. Not used with sqlite3.
  23 + }
  24 +}
  25 +
  26 +# Local time zone for this installation. Choices can be found here:
  27 +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
  28 +# although not all choices may be available on all operating systems.
  29 +# On Unix systems, a value of None will cause Django to use the same
  30 +# timezone as the operating system.
  31 +# If running in a Windows environment this must be set to the same as your
  32 +# system time zone.
  33 +TIME_ZONE = 'America/Chicago'
  34 +
  35 +# Language code for this installation. All choices can be found here:
  36 +# http://www.i18nguy.com/unicode/language-identifiers.html
  37 +LANGUAGE_CODE = 'en-us'
  38 +
  39 +SITE_ID = 1
  40 +
  41 +# If you set this to False, Django will make some optimizations so as not
  42 +# to load the internationalization machinery.
  43 +USE_I18N = True
  44 +
  45 +# If you set this to False, Django will not format dates, numbers and
  46 +# calendars according to the current locale
  47 +USE_L10N = True
  48 +
  49 +# Absolute filesystem path to the directory that will hold user-uploaded files.
  50 +# Example: "/home/media/media.lawrence.com/media/"
  51 +MEDIA_ROOT = os.path.join(HERE, 'media')
  52 +
  53 +# URL that handles the media served from MEDIA_ROOT. Make sure to use a
  54 +# trailing slash.
  55 +# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
  56 +MEDIA_URL = '/media/'
  57 +
  58 +# Absolute path to the directory static files should be collected to.
  59 +# Don't put anything in this directory yourself; store your static files
  60 +# in apps' "static/" subdirectories and in STATICFILES_DIRS.
  61 +# Example: "/home/media/media.lawrence.com/static/"
  62 +STATIC_ROOT = os.path.join(HERE, 'collectedstatic')
  63 +
  64 +# URL prefix for static files.
  65 +# Example: "http://media.lawrence.com/static/"
  66 +STATIC_URL = '/static/'
  67 +
  68 +# URL prefix for admin static files -- CSS, JavaScript and images.
  69 +# Make sure to use a trailing slash.
  70 +# Examples: "http://foo.com/static/admin/", "/static/admin/".
  71 +ADMIN_MEDIA_PREFIX = '/static/admin/'
  72 +
  73 +# Additional locations of static files
  74 +STATICFILES_DIRS = (
  75 + os.path.join(HERE, 'static/'),
  76 + # Put strings here, like "/home/html/static" or "C:/www/django/static".
  77 + # Always use forward slashes, even on Windows.
  78 + # Don't forget to use absolute paths, not relative paths.
  79 +)
  80 +
  81 +# List of finder classes that know how to find static files in
  82 +# various locations.
  83 +STATICFILES_FINDERS = (
  84 + 'django.contrib.staticfiles.finders.FileSystemFinder',
  85 + 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  86 +# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
  87 +)
  88 +
  89 +# Make this unique, and don't share it with anybody.
  90 +SECRET_KEY = 'su^7w5_fckn&#$^bf479qctxm1m@^k$(-30yckq9%h4+$hy+l$'
  91 +
  92 +# List of callables that know how to import templates from various sources.
  93 +TEMPLATE_LOADERS = (
  94 + 'django.template.loaders.filesystem.Loader',
  95 + 'django.template.loaders.app_directories.Loader',
  96 +# 'django.template.loaders.eggs.Loader',
  97 +)
  98 +
  99 +MIDDLEWARE_CLASSES = (
  100 + 'django.middleware.common.CommonMiddleware',
  101 + 'django.contrib.sessions.middleware.SessionMiddleware',
  102 + 'django.middleware.csrf.CsrfViewMiddleware',
  103 + 'django.contrib.auth.middleware.AuthenticationMiddleware',
  104 + 'django.contrib.messages.middleware.MessageMiddleware',
  105 +)
  106 +
  107 +ROOT_URLCONF = 'urls'
  108 +
  109 +TEMPLATE_DIRS = (
  110 + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
  111 + # Always use forward slashes, even on Windows.
  112 + # Don't forget to use absolute paths, not relative paths.
  113 + os.path.join(HERE, 'templates'),
  114 +)
  115 +
  116 +INSTALLED_APPS = (
  117 + 'django.contrib.auth',
  118 + 'django.contrib.contenttypes',
  119 + 'django.contrib.sessions',
  120 + 'django.contrib.sites',
  121 + 'django.contrib.messages',
  122 + 'django.contrib.staticfiles',
  123 + # Uncomment the next line to enable the admin:
  124 + 'django.contrib.admin',
  125 + # Uncomment the next line to enable admin documentation:
  126 + 'django.contrib.admindocs',
  127 +
  128 + 'dj_scaffold',
  129 + 'south',
  130 +)
  131 +
  132 +# A sample logging configuration. The only tangible logging
  133 +# performed by this configuration is to send an email to
  134 +# the site admins on every HTTP 500 error.
  135 +# See http://docs.djangoproject.com/en/dev/topics/logging for
  136 +# more details on how to customize your logging configuration.
  137 +LOGGING = {
  138 + 'version': 1,
  139 + 'disable_existing_loggers': False,
  140 + 'handlers': {
  141 + 'mail_admins': {
  142 + 'level': 'ERROR',
  143 + 'class': 'django.utils.log.AdminEmailHandler'
  144 + }
  145 + },
  146 + 'loggers': {
  147 + 'django.request': {
  148 + 'handlers': ['mail_admins'],
  149 + 'level': 'ERROR',
  150 + 'propagate': True,
  151 + },
  152 + }
  153 +}
18 sites/settings/dev.py
... ... @@ -0,0 +1,18 @@
  1 +from base import *
  2 +
  3 +DEBUG = True
  4 +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
  5 +
  6 +#devserver
  7 +MIDDLEWARE_CLASSES += ('devserver.middleware.DevServerMiddleware',)
  8 +INSTALLED_APPS = ('devserver',) + INSTALLED_APPS#devserver must in first
  9 +
  10 +#debug_toolbar
  11 +INSTALLED_APPS += ('debug_toolbar',)
  12 +MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
  13 +INTERNAL_IPS = ('127.0.0.9',)
  14 +
  15 +try:
  16 + from local import *
  17 +except:
  18 + pass
0  sites/settings/local.sample
No changes.
1  sites/settings/pre.sample
... ... @@ -0,0 +1 @@
  1 +SETTINGS = 'production'
8 sites/settings/production.py
... ... @@ -0,0 +1,8 @@
  1 +from base import *
  2 +
  3 +DEBUG = False
  4 +
  5 +try:
  6 + from local import *
  7 +except:
  8 + pass
2,470 sites/static/css/bootstrap.css
... ... @@ -0,0 +1,2470 @@
  1 +/*!
  2 + * Bootstrap v1.4.0
  3 + *
  4 + * Copyright 2011 Twitter, Inc
  5 + * Licensed under the Apache License v2.0
  6 + * http://www.apache.org/licenses/LICENSE-2.0
  7 + *
  8 + * Designed and built with all the love in the world @twitter by @mdo and @fat.
  9 + * Date: Sun Dec 25 20:18:31 PST 2011
  10 + */
  11 +/* Reset.less
  12 + * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
  13 + * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
  14 +html, body {
  15 + margin: 0;
  16 + padding: 0;
  17 +}
  18 +h1,
  19 +h2,
  20 +h3,
  21 +h4,
  22 +h5,
  23 +h6,
  24 +p,
  25 +blockquote,
  26 +pre,
  27 +a,
  28 +abbr,
  29 +acronym,
  30 +address,
  31 +cite,
  32 +code,
  33 +del,
  34 +dfn,
  35 +em,
  36 +img,
  37 +q,
  38 +s,
  39 +samp,
  40 +small,
  41 +strike,
  42 +strong,
  43 +sub,
  44 +sup,
  45 +tt,
  46 +var,
  47 +dd,
  48 +dl,
  49 +dt,
  50 +li,
  51 +ol,
  52 +ul,
  53 +fieldset,
  54 +form,
  55 +label,
  56 +legend,
  57 +button,
  58 +table,
  59 +caption,
  60 +tbody,
  61 +tfoot,
  62 +thead,
  63 +tr,
  64 +th,
  65 +td {
  66 + margin: 0;
  67 + padding: 0;
  68 + border: 0;
  69 + font-weight: normal;
  70 + font-style: normal;
  71 + font-size: 100%;
  72 + line-height: 1;
  73 + font-family: inherit;
  74 +}
  75 +table {
  76 + border-collapse: collapse;
  77 + border-spacing: 0;
  78 +}
  79 +ol, ul {
  80 + list-style: none;
  81 +}
  82 +q:before,
  83 +q:after,
  84 +blockquote:before,
  85 +blockquote:after {
  86 + content: "";
  87 +}
  88 +html {
  89 + overflow-y: scroll;
  90 + font-size: 100%;
  91 + -webkit-text-size-adjust: 100%;
  92 + -ms-text-size-adjust: 100%;
  93 +}
  94 +a:focus {
  95 + outline: thin dotted;
  96 +}
  97 +a:hover, a:active {
  98 + outline: 0;
  99 +}
  100 +article,
  101 +aside,
  102 +details,
  103 +figcaption,
  104 +figure,
  105 +footer,
  106 +header,
  107 +hgroup,
  108 +nav,
  109 +section {
  110 + display: block;
  111 +}
  112 +audio, canvas, video {
  113 + display: inline-block;
  114 + *display: inline;
  115 + *zoom: 1;
  116 +}
  117 +audio:not([controls]) {
  118 + display: none;
  119 +}
  120 +sub, sup {
  121 + font-size: 75%;
  122 + line-height: 0;
  123 + position: relative;
  124 + vertical-align: baseline;
  125 +}
  126 +sup {
  127 + top: -0.5em;
  128 +}
  129 +sub {
  130 + bottom: -0.25em;
  131 +}
  132 +img {
  133 + border: 0;
  134 + -ms-interpolation-mode: bicubic;
  135 +}
  136 +button,
  137 +input,
  138 +select,
  139 +textarea {
  140 + font-size: 100%;
  141 + margin: 0;
  142 + vertical-align: baseline;
  143 + *vertical-align: middle;
  144 +}
  145 +button, input {
  146 + line-height: normal;
  147 + *overflow: visible;
  148 +}
  149 +button::-moz-focus-inner, input::-moz-focus-inner {
  150 + border: 0;
  151 + padding: 0;
  152 +}
  153 +button,
  154 +input[type="button"],
  155 +input[type="reset"],
  156 +input[type="submit"] {
  157 + cursor: pointer;
  158 + -webkit-appearance: button;
  159 +}
  160 +input[type="search"] {
  161 + -webkit-appearance: textfield;
  162 + -webkit-box-sizing: content-box;
  163 + -moz-box-sizing: content-box;
  164 + box-sizing: content-box;
  165 +}
  166 +input[type="search"]::-webkit-search-decoration {
  167 + -webkit-appearance: none;
  168 +}
  169 +textarea {
  170 + overflow: auto;
  171 + vertical-align: top;
  172 +}
  173 +/* Variables.less
  174 + * Variables to customize the look and feel of Bootstrap
  175 + * ----------------------------------------------------- */
  176 +/* Mixins.less
  177 + * Snippets of reusable CSS to develop faster and keep code readable
  178 + * ----------------------------------------------------------------- */
  179 +/*
  180 + * Scaffolding
  181 + * Basic and global styles for generating a grid system, structural layout, and page templates
  182 + * ------------------------------------------------------------------------------------------- */
  183 +body {
  184 + background-color: #ffffff;
  185 + margin: 0;
  186 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  187 + font-size: 13px;
  188 + font-weight: normal;
  189 + line-height: 18px;
  190 + color: #404040;
  191 +}
  192 +.container {
  193 + width: 940px;
  194 + margin-left: auto;
  195 + margin-right: auto;
  196 + zoom: 1;
  197 +}
  198 +.container:before, .container:after {
  199 + display: table;
  200 + content: "";
  201 + zoom: 1;
  202 +}
  203 +.container:after {
  204 + clear: both;
  205 +}
  206 +.container-fluid {
  207 + position: relative;
  208 + min-width: 940px;
  209 + padding-left: 20px;
  210 + padding-right: 20px;
  211 + zoom: 1;
  212 +}
  213 +.container-fluid:before, .container-fluid:after {
  214 + display: table;
  215 + content: "";
  216 + zoom: 1;
  217 +}
  218 +.container-fluid:after {
  219 + clear: both;
  220 +}
  221 +.container-fluid > .sidebar {
  222 + position: absolute;
  223 + top: 0;
  224 + left: 20px;
  225 + width: 220px;
  226 +}
  227 +.container-fluid > .content {
  228 + margin-left: 240px;
  229 +}
  230 +a {
  231 + color: #0069d6;
  232 + text-decoration: none;
  233 + line-height: inherit;
  234 + font-weight: inherit;
  235 +}
  236 +a:hover {
  237 + color: #00438a;
  238 + text-decoration: underline;
  239 +}
  240 +.pull-right {
  241 + float: right;
  242 +}
  243 +.pull-left {
  244 + float: left;
  245 +}
  246 +.hide {
  247 + display: none;
  248 +}
  249 +.show {
  250 + display: block;
  251 +}
  252 +.row {
  253 + zoom: 1;
  254 + margin-left: -20px;
  255 +}
  256 +.row:before, .row:after {
  257 + display: table;
  258 + content: "";
  259 + zoom: 1;
  260 +}
  261 +.row:after {
  262 + clear: both;
  263 +}
  264 +.row > [class*="span"] {
  265 + display: inline;
  266 + float: left;
  267 + margin-left: 20px;
  268 +}
  269 +.span1 {
  270 + width: 40px;
  271 +}
  272 +.span2 {
  273 + width: 100px;
  274 +}
  275 +.span3 {
  276 + width: 160px;
  277 +}
  278 +.span4 {
  279 + width: 220px;
  280 +}
  281 +.span5 {
  282 + width: 280px;
  283 +}
  284 +.span6 {
  285 + width: 340px;
  286 +}
  287 +.span7 {
  288 + width: 400px;
  289 +}
  290 +.span8 {
  291 + width: 460px;
  292 +}
  293 +.span9 {
  294 + width: 520px;
  295 +}
  296 +.span10 {
  297 + width: 580px;
  298 +}
  299 +.span11 {
  300 + width: 640px;
  301 +}
  302 +.span12 {
  303 + width: 700px;
  304 +}
  305 +.span13 {
  306 + width: 760px;
  307 +}
  308 +.span14 {
  309 + width: 820px;
  310 +}
  311 +.span15 {
  312 + width: 880px;
  313 +}
  314 +.span16 {
  315 + width: 940px;
  316 +}
  317 +.span17 {
  318 + width: 1000px;
  319 +}
  320 +.span18 {
  321 + width: 1060px;
  322 +}
  323 +.span19 {
  324 + width: 1120px;
  325 +}
  326 +.span20 {
  327 + width: 1180px;
  328 +}
  329 +.span21 {
  330 + width: 1240px;
  331 +}
  332 +.span22 {
  333 + width: 1300px;
  334 +}
  335 +.span23 {
  336 + width: 1360px;
  337 +}
  338 +.span24 {
  339 + width: 1420px;
  340 +}
  341 +.row > .offset1 {
  342 + margin-left: 80px;
  343 +}
  344 +.row > .offset2 {
  345 + margin-left: 140px;
  346 +}
  347 +.row > .offset3 {
  348 + margin-left: 200px;
  349 +}
  350 +.row > .offset4 {
  351 + margin-left: 260px;
  352 +}
  353 +.row > .offset5 {
  354 + margin-left: 320px;
  355 +}
  356 +.row > .offset6 {
  357 + margin-left: 380px;
  358 +}
  359 +.row > .offset7 {
  360 + margin-left: 440px;
  361 +}
  362 +.row > .offset8 {
  363 + margin-left: 500px;
  364 +}
  365 +.row > .offset9 {
  366 + margin-left: 560px;
  367 +}
  368 +.row > .offset10 {
  369 + margin-left: 620px;
  370 +}
  371 +.row > .offset11 {
  372 + margin-left: 680px;
  373 +}
  374 +.row > .offset12 {
  375 + margin-left: 740px;
  376 +}
  377 +.span-one-third {
  378 + width: 300px;
  379 +}
  380 +.span-two-thirds {
  381 + width: 620px;
  382 +}
  383 +.row > .offset-one-third {
  384 + margin-left: 340px;
  385 +}
  386 +.row > .offset-two-thirds {
  387 + margin-left: 660px;
  388 +}
  389 +/* Typography.less
  390 + * Headings, body text, lists, code, and more for a versatile and durable typography system
  391 + * ---------------------------------------------------------------------------------------- */
  392 +p {
  393 + font-size: 13px;
  394 + font-weight: normal;
  395 + line-height: 18px;
  396 + margin-bottom: 9px;
  397 +}
  398 +p small {
  399 + font-size: 11px;
  400 + color: #bfbfbf;
  401 +}
  402 +h1,
  403 +h2,
  404 +h3,
  405 +h4,
  406 +h5,
  407 +h6 {
  408 + font-weight: bold;
  409 + color: #404040;
  410 +}
  411 +h1 small,
  412 +h2 small,
  413 +h3 small,
  414 +h4 small,
  415 +h5 small,
  416 +h6 small {
  417 + color: #bfbfbf;
  418 +}
  419 +h1 {
  420 + margin-bottom: 18px;
  421 + font-size: 30px;
  422 + line-height: 36px;
  423 +}
  424 +h1 small {
  425 + font-size: 18px;
  426 +}
  427 +h2 {
  428 + font-size: 24px;
  429 + line-height: 36px;
  430 +}
  431 +h2 small {
  432 + font-size: 14px;
  433 +}
  434 +h3,
  435 +h4,
  436 +h5,
  437 +h6 {
  438 + line-height: 36px;
  439 +}
  440 +h3 {
  441 + font-size: 18px;
  442 +}
  443 +h3 small {
  444 + font-size: 14px;
  445 +}
  446 +h4 {
  447 + font-size: 16px;
  448 +}
  449 +h4 small {
  450 + font-size: 12px;
  451 +}
  452 +h5 {
  453 + font-size: 14px;
  454 +}
  455 +h6 {
  456 + font-size: 13px;
  457 + color: #bfbfbf;
  458 + text-transform: uppercase;
  459 +}
  460 +ul, ol {
  461 + margin: 0 0 18px 25px;
  462 +}
  463 +ul ul,
  464 +ul ol,
  465 +ol ol,
  466 +ol ul {
  467 + margin-bottom: 0;
  468 +}
  469 +ul {
  470 + list-style: disc;
  471 +}
  472 +ol {
  473 + list-style: decimal;
  474 +}
  475 +li {
  476 + line-height: 18px;
  477 + color: #808080;
  478 +}
  479 +ul.unstyled {
  480 + list-style: none;
  481 + margin-left: 0;
  482 +}
  483 +dl {
  484 + margin-bottom: 18px;
  485 +}
  486 +dl dt, dl dd {
  487 + line-height: 18px;
  488 +}
  489 +dl dt {
  490 + font-weight: bold;
  491 +}
  492 +dl dd {
  493 + margin-left: 9px;
  494 +}
  495 +hr {
  496 + margin: 20px 0 19px;
  497 + border: 0;
  498 + border-bottom: 1px solid #eee;
  499 +}
  500 +strong {
  501 + font-style: inherit;
  502 + font-weight: bold;
  503 +}
  504 +em {
  505 + font-style: italic;
  506 + font-weight: inherit;
  507 + line-height: inherit;
  508 +}
  509 +.muted {
  510 + color: #bfbfbf;
  511 +}
  512 +blockquote {
  513 + margin-bottom: 18px;
  514 + border-left: 5px solid #eee;
  515 + padding-left: 15px;
  516 +}
  517 +blockquote p {
  518 + font-size: 14px;
  519 + font-weight: 300;
  520 + line-height: 18px;
  521 + margin-bottom: 0;
  522 +}
  523 +blockquote small {
  524 + display: block;
  525 + font-size: 12px;
  526 + font-weight: 300;
  527 + line-height: 18px;
  528 + color: #bfbfbf;
  529 +}
  530 +blockquote small:before {
  531 + content: '\2014 \00A0';
  532 +}
  533 +address {
  534 + display: block;
  535 + line-height: 18px;
  536 + margin-bottom: 18px;
  537 +}
  538 +code, pre {
  539 + padding: 0 3px 2px;
  540 + font-family: Monaco, Andale Mono, Courier New, monospace;
  541 + font-size: 12px;
  542 + -webkit-border-radius: 3px;
  543 + -moz-border-radius: 3px;
  544 + border-radius: 3px;
  545 +}
  546 +code {
  547 + background-color: #fee9cc;
  548 + color: rgba(0, 0, 0, 0.75);
  549 + padding: 1px 3px;
  550 +}
  551 +pre {
  552 + background-color: #f5f5f5;
  553 + display: block;
  554 + padding: 8.5px;
  555 + margin: 0 0 18px;
  556 + line-height: 18px;
  557 + font-size: 12px;
  558 + border: 1px solid #ccc;
  559 + border: 1px solid rgba(0, 0, 0, 0.15);
  560 + -webkit-border-radius: 3px;
  561 + -moz-border-radius: 3px;
  562 + border-radius: 3px;
  563 + white-space: pre;
  564 + white-space: pre-wrap;
  565 + word-wrap: break-word;
  566 +}
  567 +/* Forms.less
  568 + * Base styles for various input types, form layouts, and states
  569 + * ------------------------------------------------------------- */
  570 +form {
  571 + margin-bottom: 18px;
  572 +}
  573 +fieldset {
  574 + margin-bottom: 18px;
  575 + padding-top: 18px;
  576 +}
  577 +fieldset legend {
  578 + display: block;
  579 + padding-left: 150px;
  580 + font-size: 19.5px;
  581 + line-height: 1;
  582 + color: #404040;
  583 + *padding: 0 0 5px 145px;
  584 + /* IE6-7 */
  585 +
  586 + *line-height: 1.5;
  587 + /* IE6-7 */
  588 +
  589 +}
  590 +form .clearfix {
  591 + margin-bottom: 18px;
  592 + zoom: 1;
  593 +}
  594 +form .clearfix:before, form .clearfix:after {
  595 + display: table;
  596 + content: "";
  597 + zoom: 1;
  598 +}
  599 +form .clearfix:after {
  600 + clear: both;
  601 +}
  602 +label,
  603 +input,
  604 +select,
  605 +textarea {
  606 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  607 + font-size: 13px;
  608 + font-weight: normal;
  609 + line-height: normal;
  610 +}
  611 +label {
  612 + padding-top: 6px;
  613 + font-size: 13px;
  614 + line-height: 18px;
  615 + float: left;
  616 + width: 130px;
  617 + text-align: right;
  618 + color: #404040;
  619 +}
  620 +form .input {
  621 + margin-left: 150px;
  622 +}
  623 +input[type=checkbox], input[type=radio] {
  624 + cursor: pointer;
  625 +}
  626 +input,
  627 +textarea,
  628 +select,
  629 +.uneditable-input {
  630 + display: inline-block;
  631 + width: 210px;
  632 + height: 18px;
  633 + padding: 4px;
  634 + font-size: 13px;
  635 + line-height: 18px;
  636 + color: #808080;
  637 + border: 1px solid #ccc;
  638 + -webkit-border-radius: 3px;
  639 + -moz-border-radius: 3px;
  640 + border-radius: 3px;
  641 +}
  642 +select {
  643 + padding: initial;
  644 +}
  645 +input[type=checkbox], input[type=radio] {
  646 + width: auto;
  647 + height: auto;
  648 + padding: 0;
  649 + margin: 3px 0;
  650 + *margin-top: 0;
  651 + /* IE6-7 */
  652 +
  653 + line-height: normal;
  654 + border: none;
  655 +}
  656 +input[type=file] {
  657 + background-color: #ffffff;
  658 + padding: initial;
  659 + border: initial;
  660 + line-height: initial;
  661 + -webkit-box-shadow: none;
  662 + -moz-box-shadow: none;
  663 + box-shadow: none;
  664 +}
  665 +input[type=button], input[type=reset], input[type=submit] {
  666 + width: auto;
  667 + height: auto;
  668 +}
  669 +select, input[type=file] {
  670 + height: 27px;
  671 + *height: auto;
  672 + line-height: 27px;
  673 + *margin-top: 4px;
  674 + /* For IE7, add top margin to align select with labels */
  675 +
  676 +}
  677 +select[multiple] {
  678 + height: inherit;
  679 + background-color: #ffffff;
  680 +}
  681 +textarea {
  682 + height: auto;
  683 +}
  684 +.uneditable-input {
  685 + background-color: #ffffff;
  686 + display: block;
  687 + border-color: #eee;
  688 + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
  689 + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
  690 + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
  691 + cursor: not-allowed;
  692 +}
  693 +:-moz-placeholder {
  694 + color: #bfbfbf;
  695 +}
  696 +::-webkit-input-placeholder {
  697 + color: #bfbfbf;
  698 +}
  699 +input, textarea {
  700 + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
  701 + -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
  702 + -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
  703 + -o-transition: border linear 0.2s, box-shadow linear 0.2s;
  704 + transition: border linear 0.2s, box-shadow linear 0.2s;
  705 + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
  706 + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
  707 + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
  708 +}
  709 +input:focus, textarea:focus {
  710 + outline: 0;
  711 + border-color: rgba(82, 168, 236, 0.8);
  712 + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
  713 + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
  714 + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
  715 +}
  716 +input[type=file]:focus, input[type=checkbox]:focus, select:focus {
  717 + -webkit-box-shadow: none;
  718 + -moz-box-shadow: none;
  719 + box-shadow: none;
  720 + outline: 1px dotted #666;
  721 +}
  722 +form .clearfix.error > label, form .clearfix.error .help-block, form .clearfix.error .help-inline {
  723 + color: #b94a48;
  724 +}
  725 +form .clearfix.error input, form .clearfix.error textarea {
  726 + color: #b94a48;
  727 + border-color: #ee5f5b;
  728 +}
  729 +form .clearfix.error input:focus, form .clearfix.error textarea:focus {
  730 + border-color: #e9322d;
  731 + -webkit-box-shadow: 0 0 6px #f8b9b7;
  732 + -moz-box-shadow: 0 0 6px #f8b9b7;
  733 + box-shadow: 0 0 6px #f8b9b7;
  734 +}
  735 +form .clearfix.error .input-prepend .add-on, form .clearfix.error .input-append .add-on {
  736 + color: #b94a48;
  737 + background-color: #fce6e6;
  738 + border-color: #b94a48;
  739 +}
  740 +form .clearfix.warning > label, form .clearfix.warning .help-block, form .clearfix.warning .help-inline {
  741 + color: #c09853;
  742 +}
  743 +form .clearfix.warning input, form .clearfix.warning textarea {
  744 + color: #c09853;
  745 + border-color: #ccae64;
  746 +}
  747 +form .clearfix.warning input:focus, form .clearfix.warning textarea:focus {
  748 + border-color: #be9a3f;
  749 + -webkit-box-shadow: 0 0 6px #e5d6b1;
  750 + -moz-box-shadow: 0 0 6px #e5d6b1;
  751 + box-shadow: 0 0 6px #e5d6b1;
  752 +}
  753 +form .clearfix.warning .input-prepend .add-on, form .clearfix.warning .input-append .add-on {
  754 + color: #c09853;
  755 + background-color: #d2b877;
  756 + border-color: #c09853;
  757 +}
  758 +form .clearfix.success > label, form .clearfix.success .help-block, form .clearfix.success .help-inline {
  759 + color: #468847;
  760 +}
  761 +form .clearfix.success input, form .clearfix.success textarea {
  762 + color: #468847;
  763 + border-color: #57a957;
  764 +}
  765 +form .clearfix.success input:focus, form .clearfix.success textarea:focus {
  766 + border-color: #458845;
  767 + -webkit-box-shadow: 0 0 6px #9acc9a;
  768 + -moz-box-shadow: 0 0 6px #9acc9a;
  769 + box-shadow: 0 0 6px #9acc9a;
  770 +}
  771 +form .clearfix.success .input-prepend .add-on, form .clearfix.success .input-append .add-on {
  772 + color: #468847;
  773 + background-color: #bcddbc;
  774 + border-color: #468847;
  775 +}
  776 +.input-mini,
  777 +input.mini,
  778 +textarea.mini,
  779 +select.mini {
  780 + width: 60px;
  781 +}
  782 +.input-small,
  783 +input.small,
  784 +textarea.small,
  785 +select.small {
  786 + width: 90px;
  787 +}
  788 +.input-medium,
  789 +input.medium,
  790 +textarea.medium,
  791 +select.medium {
  792 + width: 150px;
  793 +}
  794 +.input-large,
  795 +input.large,
  796 +textarea.large,
  797 +select.large {
  798 + width: 210px;
  799 +}
  800 +.input-xlarge,
  801 +input.xlarge,
  802 +textarea.xlarge,
  803 +select.xlarge {
  804 + width: 270px;
  805 +}
  806 +.input-xxlarge,
  807 +input.xxlarge,
  808 +textarea.xxlarge,
  809 +select.xxlarge {
  810 + width: 530px;
  811 +}
  812 +textarea.xxlarge {
  813 + overflow-y: auto;
  814 +}
  815 +input.span1, textarea.span1 {
  816 + display: inline-block;
  817 + float: none;
  818 + width: 30px;
  819 + margin-left: 0;
  820 +}
  821 +input.span2, textarea.span2 {
  822 + display: inline-block;
  823 + float: none;
  824 + width: 90px;
  825 + margin-left: 0;
  826 +}
  827 +input.span3, textarea.span3 {
  828 + display: inline-block;
  829 + float: none;
  830 + width: 150px;
  831 + margin-left: 0;
  832 +}
  833 +input.span4, textarea.span4 {
  834 + display: inline-block;
  835 + float: none;
  836 + width: 210px;
  837 + margin-left: 0;
  838 +}
  839 +input.span5, textarea.span5 {
  840 + display: inline-block;
  841 + float: none;
  842 + width: 270px;
  843 + margin-left: 0;
  844 +}
  845 +input.span6, textarea.span6 {
  846 + display: inline-block;
  847 + float: none;
  848 + width: 330px;
  849 + margin-left: 0;
  850 +}
  851 +input.span7, textarea.span7 {
  852 + display: inline-block;
  853 + float: none;
  854 + width: 390px;
  855 + margin-left: 0;
  856 +}
  857 +input.span8, textarea.span8 {
  858 + display: inline-block;
  859 + float: none;
  860 + width: 450px;
  861