Commit 14a94bac by chrisndodge

Merge pull request #954 from MITx/feature/cale/fixing-tests

Feature/cale/fixing tests
parents a6c8d90a 28023021
[submodule "askbot"]
path = askbot
url = git@github.com:MITx/askbot-devel.git
Subproject commit e56ae380846f7c6cdaeacfc58880fab103540491
......@@ -36,7 +36,6 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
from xmodule.x_module import ModuleSystem
from xmodule.error_module import ErrorDescriptor
from xmodule.errortracker import exc_info_to_str
from github_sync import export_to_github
from static_replace import replace_urls
from external_auth.views import ssl_login_shortcut
......@@ -110,8 +109,14 @@ def index(request):
"""
courses = modulestore().get_items(['i4x', None, None, 'course', None])
# filter out courses that we don't have access to
courses = filter(lambda course: has_access(request.user, course.location) and course.location.course != 'templates' and course.location.org!='' and course.location.course!='' and course.location.name!='', courses)
# filter out courses that we don't have access too
def course_filter(course):
return (has_access(request.user, course.location)
and course.location.course != 'templates'
and course.location.org != ''
and course.location.course != ''
and course.location.name != '')
courses = filter(course_filter, courses)
return render_to_response('index.html', {
'new_course_template' : Location('i4x', 'edx', 'templates', 'course', 'Empty'),
......
import logging
import os
from django.conf import settings
from fs.osfs import OSFS
from git import Repo, PushInfo
from xmodule.modulestore.xml_importer import import_from_xml
from xmodule.modulestore.django import modulestore
from collections import namedtuple
from .exceptions import GithubSyncError, InvalidRepo
log = logging.getLogger(__name__)
RepoSettings = namedtuple('RepoSettings', 'path branch origin')
def sync_all_with_github():
"""
Sync all defined repositories from github
"""
for repo_name in settings.REPOS:
sync_with_github(load_repo_settings(repo_name))
def sync_with_github(repo_settings):
"""
Sync specified repository from github
repo_settings: A RepoSettings defining which repo to sync
"""
revision, course = import_from_github(repo_settings)
export_to_github(course, "Changes from cms import of revision %s" % revision, "CMS <cms@edx.org>")
def setup_repo(repo_settings):
"""
Reset the local github repo specified by repo_settings
repo_settings (RepoSettings): The settings for the repo to reset
"""
course_dir = repo_settings.path
repo_path = settings.GITHUB_REPO_ROOT / course_dir
if not os.path.isdir(repo_path):
Repo.clone_from(repo_settings.origin, repo_path)
git_repo = Repo(repo_path)
origin = git_repo.remotes.origin
origin.fetch()
# Do a hard reset to the remote branch so that we have a clean import
git_repo.git.checkout(repo_settings.branch)
return git_repo
def load_repo_settings(course_dir):
"""
Returns the repo_settings for the course stored in course_dir
"""
if course_dir not in settings.REPOS:
raise InvalidRepo(course_dir)
return RepoSettings(course_dir, **settings.REPOS[course_dir])
def import_from_github(repo_settings):
"""
Imports data into the modulestore based on the XML stored on github
"""
course_dir = repo_settings.path
git_repo = setup_repo(repo_settings)
git_repo.head.reset('origin/%s' % repo_settings.branch, index=True, working_tree=True)
module_store = import_from_xml(modulestore(),
settings.GITHUB_REPO_ROOT, course_dirs=[course_dir])
return git_repo.head.commit.hexsha, module_store.courses[course_dir]
def export_to_github(course, commit_message, author_str=None):
'''
Commit any changes to the specified course with given commit message,
and push to github (if MITX_FEATURES['GITHUB_PUSH'] is True).
If author_str is specified, uses it in the commit.
'''
course_dir = course.metadata.get('data_dir', course.location.course)
try:
repo_settings = load_repo_settings(course_dir)
except InvalidRepo:
log.warning("Invalid repo {0}, not exporting data to xml".format(course_dir))
return
git_repo = setup_repo(repo_settings)
fs = OSFS(git_repo.working_dir)
xml = course.export_to_xml(fs)
with fs.open('course.xml', 'w') as course_xml:
course_xml.write(xml)
if git_repo.is_dirty():
git_repo.git.add(A=True)
if author_str is not None:
git_repo.git.commit(m=commit_message, author=author_str)
else:
git_repo.git.commit(m=commit_message)
origin = git_repo.remotes.origin
if settings.MITX_FEATURES['GITHUB_PUSH']:
push_infos = origin.push()
if len(push_infos) > 1:
log.error('Unexpectedly pushed multiple heads: {infos}'.format(
infos="\n".join(str(info.summary) for info in push_infos)
))
if push_infos[0].flags & PushInfo.ERROR:
log.error('Failed push: flags={p.flags}, local_ref={p.local_ref}, '
'remote_ref_string={p.remote_ref_string}, '
'remote_ref={p.remote_ref}, old_commit={p.old_commit}, '
'summary={p.summary})'.format(p=push_infos[0]))
raise GithubSyncError('Failed to push: {info}'.format(
info=str(push_infos[0].summary)
))
class GithubSyncError(Exception):
pass
class InvalidRepo(Exception):
pass
###
### Script for syncing CMS with defined github repos
###
from django.core.management.base import NoArgsCommand
from github_sync import sync_all_with_github
class Command(NoArgsCommand):
help = \
'''Sync the CMS with the defined github repos'''
def handle_noargs(self, **options):
sync_all_with_github()
from django.test import TestCase
from path import path
import shutil
from github_sync import (
import_from_github, export_to_github, load_repo_settings,
sync_all_with_github, sync_with_github
)
from git import Repo
from django.conf import settings
from xmodule.modulestore.django import modulestore
from xmodule.modulestore import Location
from override_settings import override_settings
from github_sync.exceptions import GithubSyncError
from mock import patch, Mock
REPO_DIR = settings.GITHUB_REPO_ROOT / 'local_repo'
WORKING_DIR = path(settings.TEST_ROOT)
REMOTE_DIR = WORKING_DIR / 'remote_repo'
@override_settings(REPOS={
'local_repo': {
'origin': REMOTE_DIR,
'branch': 'master',
}
})
class GithubSyncTestCase(TestCase):
def cleanup(self):
shutil.rmtree(REPO_DIR, ignore_errors=True)
shutil.rmtree(REMOTE_DIR, ignore_errors=True)
modulestore().collection.drop()
def setUp(self):
# make sure there's no stale data lying around
self.cleanup()
shutil.copytree('common/test/data/toy', REMOTE_DIR)
remote = Repo.init(REMOTE_DIR)
remote.git.add(A=True)
remote.git.commit(m='Initial commit')
remote.git.config("receive.denyCurrentBranch", "ignore")
self.import_revision, self.import_course = import_from_github(load_repo_settings('local_repo'))
def tearDown(self):
self.cleanup()
def test_initialize_repo(self):
"""
Test that importing from github will create a repo if the repo doesn't already exist
"""
self.assertEquals(1, len(Repo(REPO_DIR).head.reference.log()))
def test_import_contents(self):
"""
Test that the import loads the correct course into the modulestore
"""
self.assertEquals('Toy Course', self.import_course.metadata['display_name'])
self.assertIn(
Location('i4x://edX/toy/chapter/Overview'),
[child.location for child in self.import_course.get_children()])
self.assertEquals(2, len(self.import_course.get_children()))
@patch('github_sync.sync_with_github')
def test_sync_all_with_github(self, sync_with_github):
sync_all_with_github()
sync_with_github.assert_called_with(load_repo_settings('local_repo'))
def test_sync_with_github(self):
with patch('github_sync.import_from_github', Mock(return_value=(Mock(), Mock()))) as import_from_github:
with patch('github_sync.export_to_github') as export_to_github:
settings = load_repo_settings('local_repo')
sync_with_github(settings)
import_from_github.assert_called_with(settings)
export_to_github.assert_called
@override_settings(MITX_FEATURES={'GITHUB_PUSH': False})
def test_export_no_pash(self):
"""
Test that with the GITHUB_PUSH feature disabled, no content is pushed to the remote
"""
export_to_github(self.import_course, 'Test no-push')
self.assertEquals(1, Repo(REMOTE_DIR).head.commit.count())
@override_settings(MITX_FEATURES={'GITHUB_PUSH': True})
def test_export_push(self):
"""
Test that with GITHUB_PUSH enabled, content is pushed to the remote
"""
self.import_course.metadata['display_name'] = 'Changed display name'
export_to_github(self.import_course, 'Test push')
self.assertEquals(2, Repo(REMOTE_DIR).head.commit.count())
@override_settings(MITX_FEATURES={'GITHUB_PUSH': True})
def test_export_conflict(self):
"""
Test that if there is a conflict when pushing to the remote repo, nothing is pushed and an exception is raised
"""
self.import_course.metadata['display_name'] = 'Changed display name'
remote = Repo(REMOTE_DIR)
remote.git.commit(allow_empty=True, m="Testing conflict commit")
self.assertRaises(GithubSyncError, export_to_github, self.import_course, 'Test push')
self.assertEquals(2, remote.head.reference.commit.count())
self.assertEquals("Testing conflict commit\n", remote.head.reference.commit.message)
import json
from django.test.client import Client
from django.test import TestCase
from mock import patch
from override_settings import override_settings
from github_sync import load_repo_settings
@override_settings(REPOS={'repo': {'branch': 'branch', 'origin': 'origin'}})
class PostReceiveTestCase(TestCase):
def setUp(self):
self.client = Client()
@patch('github_sync.views.import_from_github')
def test_non_branch(self, import_from_github):
self.client.post('/github_service_hook', {'payload': json.dumps({
'ref': 'refs/tags/foo'})
})
self.assertFalse(import_from_github.called)
@patch('github_sync.views.import_from_github')
def test_non_watched_repo(self, import_from_github):
self.client.post('/github_service_hook', {'payload': json.dumps({
'ref': 'refs/heads/branch',
'repository': {'name': 'bad_repo'}})
})
self.assertFalse(import_from_github.called)
@patch('github_sync.views.import_from_github')
def test_non_tracked_branch(self, import_from_github):
self.client.post('/github_service_hook', {'payload': json.dumps({
'ref': 'refs/heads/non_branch',
'repository': {'name': 'repo'}})
})
self.assertFalse(import_from_github.called)
@patch('github_sync.views.import_from_github')
def test_tracked_branch(self, import_from_github):
self.client.post('/github_service_hook', {'payload': json.dumps({
'ref': 'refs/heads/branch',
'repository': {'name': 'repo'}})
})
import_from_github.assert_called_with(load_repo_settings('repo'))
import logging
import json
from django.http import HttpResponse
from django.conf import settings
from django_future.csrf import csrf_exempt
from . import import_from_github, load_repo_settings
log = logging.getLogger()
@csrf_exempt
def github_post_receive(request):
"""
This view recieves post-receive requests from github whenever one of
the watched repositiories changes.
It is responsible for updating the relevant local git repo,
importing the new version of the course (if anything changed),
and then pushing back to github any changes that happened as part of the
import.
The github request format is described here: https://help.github.com/articles/post-receive-hooks
"""
payload = json.loads(request.POST['payload'])
ref = payload['ref']
if not ref.startswith('refs/heads/'):
log.info('Ignore changes to non-branch ref %s' % ref)
return HttpResponse('Ignoring non-branch')
branch_name = ref.replace('refs/heads/', '', 1)
repo_name = payload['repository']['name']
if repo_name not in settings.REPOS:
log.info('No repository matching %s found' % repo_name)
return HttpResponse('No Repo Found')
repo = load_repo_settings(repo_name)
if repo.branch != branch_name:
log.info('Ignoring changes to non-tracked branch %s in repo %s' % (branch_name, repo_name))
return HttpResponse('Ignoring non-tracked branch')
import_from_github(repo)
return HttpResponse('Push received')
......@@ -284,7 +284,6 @@ INSTALLED_APPS = (
# For CMS
'contentstore',
'auth',
'github_sync',
'student', # misleading name due to sharing with lms
# For asset pipelining
......
......@@ -22,7 +22,7 @@
.ui-icon-circle-triangle-e,
.ui-icon-circle-triangle-w {
background-image: url(/static/css/vendor/ui-lightness/images/ui-icons_ffffff_256x240.png);
background-image: url(../css/vendor/ui-lightness/images/ui-icons_ffffff_256x240.png);
}
}
}
......
......@@ -23,7 +23,6 @@ urlpatterns = ('',
url(r'^(?P<org>[^/]+)/(?P<course>[^/]+)/import/(?P<name>[^/]+)$',
'contentstore.views.import_course', name='import_course'),
url(r'^github_service_hook$', 'github_sync.views.github_post_receive'),
url(r'^preview/modx/(?P<preview_id>[^/]*)/(?P<location>.*?)/(?P<dispatch>[^/]*)$',
'contentstore.views.preview_dispatch', name='preview_dispatch'),
url(r'^(?P<org>[^/]+)/(?P<course>[^/]+)/course/(?P<coursename>[^/]+)/upload_asset$',
......
......@@ -11,19 +11,27 @@ from django.contrib.auth.models import Group
from xmodule.course_module import CourseDescriptor
from xmodule.error_module import ErrorDescriptor
from xmodule.modulestore import Location
from xmodule.timeparse import parse_time
from xmodule.x_module import XModule, XModuleDescriptor
DEBUG_ACCESS = False
log = logging.getLogger(__name__)
class CourseContextRequired(Exception):
"""
Raised when a course_context is required to determine permissions
"""
pass
def debug(*args, **kwargs):
# to avoid overly verbose output, this is off by default
if DEBUG_ACCESS:
log.debug(*args, **kwargs)
def has_access(user, obj, action):
def has_access(user, obj, action, course_context=None):
"""
Check whether a user has the access to do action on obj. Handles any magic
switching based on various settings.
......@@ -42,6 +50,10 @@ def has_access(user, obj, action):
actions depend on the obj type, but include e.g. 'enroll' for courses. See the
type-specific functions below for the known actions for that type.
course_context: A course_id specifying which course run this access is for.
Required when accessing anything other than a CourseDescriptor, 'global',
or a location with category 'course'
Returns a bool. It is up to the caller to actually deny access in a way
that makes sense in context.
"""
......@@ -51,27 +63,28 @@ def has_access(user, obj, action):
return _has_access_course_desc(user, obj, action)
if isinstance(obj, ErrorDescriptor):
return _has_access_error_desc(user, obj, action)
return _has_access_error_desc(user, obj, action, course_context)
# NOTE: any descriptor access checkers need to go above this
if isinstance(obj, XModuleDescriptor):
return _has_access_descriptor(user, obj, action)
return _has_access_descriptor(user, obj, action, course_context)
if isinstance(obj, XModule):
return _has_access_xmodule(user, obj, action)
return _has_access_xmodule(user, obj, action, course_context)
if isinstance(obj, Location):
return _has_access_location(user, obj, action)
return _has_access_location(user, obj, action, course_context)
if isinstance(obj, basestring):
return _has_access_string(user, obj, action)
return _has_access_string(user, obj, action, course_context)
# Passing an unknown object here is a coding error, so rather than
# returning a default, complain.
raise TypeError("Unknown object type in has_access(): '{0}'"
.format(type(obj)))
def get_access_group_name(obj,action):
def get_access_group_name(obj, action):
'''
Returns group name for user group which has "action" access to the given object.
......@@ -86,8 +99,8 @@ def get_access_group_name(obj,action):
raise TypeError("Unknown object type in get_access_group_name(): '{0}'"
.format(type(obj)))
# ================ Implementation helpers ================================
# ================ Implementation helpers ================================
def _has_access_course_desc(user, course, action):
"""
Check if user has access to a course descriptor.
......@@ -159,15 +172,17 @@ def _has_access_course_desc(user, course, action):
return _dispatch(checkers, action, user, course)
def _get_access_group_name_course_desc(course, action):
'''
Return name of group which gives staff access to course. Only understands action = 'staff'
'''
if not action=='staff':
if not action == 'staff':
return []
return _course_staff_group_name(course.location)
def _has_access_error_desc(user, descriptor, action):
def _has_access_error_desc(user, descriptor, action, course_context):
"""
Only staff should see error descriptors.
......@@ -176,7 +191,7 @@ def _has_access_error_desc(user, descriptor, action):
'staff' -- staff access to descriptor.
"""
def check_for_staff():
return _has_staff_access_to_descriptor(user, descriptor)
return _has_staff_access_to_descriptor(user, descriptor, course_context)
checkers = {
'load': check_for_staff,
......@@ -186,7 +201,7 @@ def _has_access_error_desc(user, descriptor, action):
return _dispatch(checkers, action, user, descriptor)
def _has_access_descriptor(user, descriptor, action):
def _has_access_descriptor(user, descriptor, action, course_context=None):
"""
Check if user has access to this descriptor.
......@@ -218,7 +233,7 @@ def _has_access_descriptor(user, descriptor, action):
debug("Allow: now > start date")
return True
# otherwise, need staff access
return _has_staff_access_to_descriptor(user, descriptor)
return _has_staff_access_to_descriptor(user, descriptor, course_context)
# No start date, so can always load.
debug("Allow: no start date")
......@@ -226,13 +241,13 @@ def _has_access_descriptor(user, descriptor, action):
checkers = {
'load': can_load,
'staff': lambda: _has_staff_access_to_descriptor(user, descriptor)
'staff': lambda: _has_staff_access_to_descriptor(user, descriptor, course_context)
}
return _dispatch(checkers, action, user, descriptor)
def _has_access_xmodule(user, xmodule, action):
def _has_access_xmodule(user, xmodule, action, course_context):
"""
Check if user has access to this xmodule.
......@@ -240,10 +255,10 @@ def _has_access_xmodule(user, xmodule, action):
- same as the valid actions for xmodule.descriptor
"""
# Delegate to the descriptor
return has_access(user, xmodule.descriptor, action)
return has_access(user, xmodule.descriptor, action, course_context)
def _has_access_location(user, location, action):
def _has_access_location(user, location, action, course_context):
"""
Check if user has access to this location.
......@@ -257,13 +272,13 @@ def _has_access_location(user, location, action):
And in general, prefer checking access on loaded items, rather than locations.
"""
checkers = {
'staff': lambda: _has_staff_access_to_location(user, location)
'staff': lambda: _has_staff_access_to_location(user, location, course_context)
}
return _dispatch(checkers, action, user, location)
def _has_access_string(user, perm, action):
def _has_access_string(user, perm, action, course_context):
"""
Check if user has certain special access, specified as string. Valid strings:
......@@ -309,13 +324,16 @@ def _dispatch(table, action, user, obj):
def _does_course_group_name_exist(name):
return len(Group.objects.filter(name = name)) > 0
return len(Group.objects.filter(name=name)) > 0
def _course_staff_group_name(location):
def _course_staff_group_name(location, course_context=None):
"""
Get the name of the staff group for a location. Right now, that's staff_COURSE.
Get the name of the staff group for a location in the context of a course run.
location: something that can passed to Location.
location: something that can passed to Location
course_context: A course_id that specifies the course run in which the location occurs.
Required if location doesn't have category 'course'
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
using course_id rather than just the course number. So first check to see if the group name exists
......@@ -325,15 +343,24 @@ def _course_staff_group_name(location):
if _does_course_group_name_exist(legacy_name):
return legacy_name
return 'staff_%s' % loc.course_id
if loc.category == 'course':
course_id = loc.course_id
else:
if course_context is None:
raise CourseContextRequired()
course_id = course_context
return 'staff_%s' % course_id
def _course_instructor_group_name(location):
def _course_instructor_group_name(location, course_context=None):
"""
Get the name of the instructor group for a location. Right now, that's instructor_COURSE.
Get the name of the instructor group for a location, in the context of a course run.
A course instructor has all staff privileges, but also can manage list of course staff (add, remove, list).
location: something that can passed to Location.
course_context: A course_id that specifies the course run in which the location occurs.
Required if location doesn't have category 'course'
cdodge: We're changing the name convention of the group to better epxress different runs of courses by
using course_id rather than just the course number. So first check to see if the group name exists
......@@ -343,7 +370,14 @@ def _course_instructor_group_name(location):
if _does_course_group_name_exist(legacy_name):
return legacy_name
return 'instructor_%s' % loc.course_id
if loc.category == 'course':
course_id = loc.course_id
else:
if course_context is None:
raise CourseContextRequired()
course_id = course_context
return 'instructor_%s' % course_id
def _has_global_staff_access(user):
......@@ -355,15 +389,15 @@ def _has_global_staff_access(user):
return False
def _has_instructor_access_to_location(user, location):
return _has_access_to_location(user, location, 'instructor')
def _has_instructor_access_to_location(user, location, course_context=None):
return _has_access_to_location(user, location, 'instructor', course_context)
def _has_staff_access_to_location(user, location):
return _has_access_to_location(user, location, 'staff')
def _has_staff_access_to_location(user, location, course_context=None):
return _has_access_to_location(user, location, 'staff', course_context)
def _has_access_to_location(user, location, access_level):
def _has_access_to_location(user, location, access_level, course_context):
'''
Returns True if the given user has access_level (= staff or
instructor) access to a location. For now this is equivalent to
......@@ -389,14 +423,14 @@ def _has_access_to_location(user, location, access_level):
user_groups = [g.name for g in user.groups.all()]
if access_level == 'staff':
staff_group = _course_staff_group_name(location)
staff_group = _course_staff_group_name(location, course_context)
if staff_group in user_groups:
debug("Allow: user in group %s", staff_group)
return True
debug("Deny: user not in group %s", staff_group)
if access_level == 'instructor' or access_level == 'staff': # instructors get staff privileges
instructor_group = _course_instructor_group_name(location)
instructor_group = _course_instructor_group_name(location, course_context)
if instructor_group in user_groups:
debug("Allow: user in group %s", instructor_group)
return True
......@@ -411,22 +445,22 @@ def _has_access_to_location(user, location, access_level):
def _has_staff_access_to_course_id(user, course_id):
"""Helper method that takes a course_id instead of a course name"""
loc = CourseDescriptor.id_to_location(course_id)
return _has_staff_access_to_location(user, loc)
return _has_staff_access_to_location(user, loc, course_id)
def _has_instructor_access_to_descriptor(user, descriptor):
def _has_instructor_access_to_descriptor(user, descriptor, course_context=None):
"""Helper method that checks whether the user has staff access to
the course of the location.
descriptor: something that has a location attribute
"""
return _has_instructor_access_to_location(user, descriptor.location)
return _has_instructor_access_to_location(user, descriptor.location, course_context)
def _has_staff_access_to_descriptor(user, descriptor):
def _has_staff_access_to_descriptor(user, descriptor, course_context=None):
"""Helper method that checks whether the user has staff access to
the course of the location.
descriptor: something that has a location attribute
"""
return _has_staff_access_to_location(user, descriptor.location)
return _has_staff_access_to_location(user, descriptor.location, course_context)
......@@ -147,7 +147,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
descriptor = modulestore().get_instance(course_id, location)
# Short circuit--if the user shouldn't have access, bail without doing any work
if not has_access(user, descriptor, 'load'):
if not has_access(user, descriptor, 'load', course_id):
return None
# Anonymized student identifier
......@@ -244,7 +244,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
# make an ErrorDescriptor -- assuming that the descriptor's system is ok
import_system = descriptor.system
if has_access(user, location, 'staff'):
if has_access(user, location, 'staff', course_id):
err_descriptor = ErrorDescriptor.from_xml(str(descriptor), import_system,
error_msg=exc_info_to_str(sys.exc_info()))
else:
......@@ -263,7 +263,7 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
module.get_html = replace_course_urls(module.get_html, course_id)
if settings.MITX_FEATURES.get('DISPLAY_HISTOGRAMS_TO_STAFF'):
if has_access(user, module, 'staff'):
if has_access(user, module, 'staff', course_id):
module.get_html = add_histogram(module.get_html, module, user)
return module
......
......@@ -77,7 +77,6 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
STATICFILES_DIRS = [
COMMON_ROOT / "static",
PROJECT_ROOT / "static",
ASKBOT_ROOT / "askbot" / "skins",
]
STATICFILES_DIRS += [
(course_dir, COMMON_TEST_DATA_ROOT / course_dir)
......
......@@ -47,16 +47,3 @@
// instructor
@import "course/instructor/instructor";
// Askbot / Discussion styles
@import "course/discussion/askbot-original";
@import "course/discussion/discussion";
@import "course/discussion/sidebar";
@import "course/discussion/questions";
@import "course/discussion/tags";
@import "course/discussion/question-view" ;
@import "course/discussion/answers";
@import "course/discussion/forms";
@import "course/discussion/form-wmd-toolbar";
@import "course/discussion/modals";
@import "course/discussion/profile";
@import "course/discussion/badges";
// original Askbot styles
// body {
// background: #fff;
// font-size: 14px;
// line-height: 150%;
// margin: 0;
// padding: 0;
// color: #000;
// font-family: arial; }
// div {
// margin: 0 auto;
// padding: 0; }
// h1, h2, h3, h4, h5, h6, ul, li, dl, dt, dd, form, img, p {
// margin: 0;
// padding: 0;
// border: none; }
// label {
// vertical-align: middle; }
// hr {
// border: none;
// border-top: 1px dashed #ccccce; }
// input, select {
// vertical-align: middle;
// font-family: trebuchet ms,"segoe ui",helvetica,tahoma,verdana,mingliu,pmingliu,arial,sans-serif;
// margin-left: 0px; }
// textarea:focus, input:focus {
// outline: none; }
// iframe {
// border: none; }
// p {
// font-size: 14px;
// line-height: 140%;
// margin-bottom: 6px; }
// a {
// color: #1b79bd;
// text-decoration: none;
// cursor: pointer; }
// h2 {
// font-size: 21px;
// padding: 3px 0 3px 5px; }
// h3 {
// font-size: 19px;
// padding: 3px 0 3px 5px; }
// ul {
// list-style: disc;
// margin-left: 20px;
// padding-left: 0px;
// margin-bottom: 1em; }
// ol {
// list-style: decimal;
// margin-left: 30px;
// margin-bottom: 1em;
// padding-left: 0px; }
// td ul {
// vertical-align: middle; }
// li input {
// margin: 3px 3px 4px 3px; }
// pre {
// font-family: consolas, monaco, liberation mono, lucida console, monospace;
// font-size: 100%;
// margin-bottom: 10px;
// background-color: #f5f5f5;
// padding-left: 5px;
// padding-top: 5px;
// padding-bottom: 20px; }
// code {
// font-family: consolas, monaco, liberation mono, lucida console, monospace;
// font-size: 100%; }
// blockquote {
// margin-bottom: 10px;
// margin-right: 15px;
// padding: 10px 0px 1px 10px;
// background-color: #f5f5f5; }
// * html {
// .clearfix, .paginator {
// height: 1;
// overflow: visible; } }
// +html {
// .clearfix, .paginator {
// min-height: 1%; } }
// .clearfix:after, .paginator:after {
// clear: both;
// content: ".";
// display: block;
// height: 0;
// visibility: hidden; }
// .badges a {
// color: #763333;
// text-decoration: underline; }
// a:hover {
// text-decoration: underline; }
.badge-context-toggle.active {
cursor: pointer;
text-decoration: underline; }
// h1 {
// font-size: 24px;
// padding: 10px 0 5px 0px; }
body.user-messages {
margin-top: 2.4em; }
// .left {
// float: left; }
// .right {
// float: right; }
// .clean {
// clear: both; }
// .center {
// margin: 0 auto;
// padding: 0; }
.notify {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
z-index: 100;
padding: 0;
text-align: center;
background-color: #f5dd69;
border-top: #fff 1px solid;
p.notification {
margin-top: 6px;
margin-bottom: 6px;
font-size: 16px;
color: #424242; } }
#closenotify {
position: absolute;
right: 5px;
top: 7px;
color: #735005;
text-decoration: none;
line-height: 18px;
background: -6px -5px url(../default/media/images/sprites.png) no-repeat;
cursor: pointer;
width: 20px;
height: 20px;
&:hover {
background: -26px -5px url(../default/media/images/sprites.png) no-repeat; } }
#header {
margin-top: 0px;
background: #16160f; }
/*.content-wrapper {
width: 960px;
margin: auto;
position: relative; }*/
#logo img {
padding: 5px 0px 5px 0px;
height: 75px;
width: auto;
float: left; }
#usertoolsnav {
height: 20px;
padding-bottom: 5px;
a {
height: 35px;
text-align: right;
margin-left: 20px;
text-decoration: underline;
color: #d0e296;
font-size: 16px;
&:first-child {
margin-left: 0; }
&#ab-responses {
margin-left: 3px; } }
.user-info, .user-micro-info {
color: #b5b593; }
a img {
vertical-align: middle;
margin-bottom: 2px; }
.user-info a {
margin: 0;
text-decoration: none; } }
#metanav {
float: right;
a {
color: #e2e2ae;
padding: 0px 0px 0px 35px;
height: 25px;
line-height: 30px;
margin: 5px 0px 0px 10px;
font-size: 18px;
font-weight: 100;
text-decoration: none;
display: block;
float: left;
&:hover {
text-decoration: underline; }
&.on {
font-weight: bold;
color: #fff;
text-decoration: none; }
&.special {
font-size: 18px;
color: #b02b2c;
font-weight: bold;
text-decoration: none;
&:hover {
text-decoration: underline; } } }
#navtags {
background: -50px -5px url(../default/media/images/sprites.png) no-repeat; }
#navusers {
background: -125px -5px url(../default/media/images/sprites.png) no-repeat; }
#navbadges {
background: -210px -5px url(../default/media/images/sprites.png) no-repeat; } }
// #header {
// &.with-logo #usertoolsnav {
// position: absolute;
// bottom: 0;
// right: 0px; }
// &.without-logo {
// #usertoolsnav {
// float: left;
// margin-top: 7px; }
// #metanav {
// margin-bottom: 7px; } } }
// #secondaryheader {
// height: 55px;
// background: #e9e9e1;
// border-bottom: #d3d3c2 1px solid;
// border-top: #fcfcfc 1px solid;
// margin-bottom: 10px;
// font-family: 'yanone kaffeesatz',sans-serif;
// #homebutton {
// border-right: #afaf9e 1px solid;
// background: -6px -36px url(../default/media/images/sprites.png) no-repeat;
// height: 55px;
// width: 43px;
// display: block;
// float: left;
// &:hover {
// background: -51px -36px url(../default/media/images/sprites.png) no-repeat; } }
// #scopewrapper {
// width: 688px;
// float: left;
// a {
// display: block;
// float: left; }
// .scope-selector {
// font-size: 21px;
// color: #5a5a4b;
// height: 55px;
// line-height: 55px;
// margin-left: 24px; }
// .on {
// background: url(../default/media/images/scopearrow.png) no-repeat center bottom; }
// .ask-message {
// font-size: 24px; } } }
#searchbar {
display: inline-block;
background-color: #fff;
width: 412px;
border: 1px solid #c9c9b5;
float: right;
height: 42px;
margin: 6px 0px 0px 15px;
.searchinput, .searchinputcancelable {
font-size: 30px;
height: 40px;
font-weight: 300;
background: #fff;
border: 0px;
color: #484848;
padding-left: 10px;
font-family: arial;
vertical-align: middle; }
.searchinput {
width: 352px; }
.searchinputcancelable {
width: 317px; }
.logoutsearch {
width: 337px; }
.searchbtn {
font-size: 10px;
color: #666;
background-color: #eee;
height: 42px;
border: #fff 1px solid;
line-height: 22px;
text-align: center;
float: right;
margin: 0px;
width: 48px;
background: -98px -36px url(../default/media/images/sprites.png) no-repeat;
cursor: pointer;
&:hover {
background: -146px -36px url(../default/media/images/sprites.png) no-repeat; } }
.cancelsearchbtn {
font-size: 30px;
color: #ce8888;
background: #fff;
height: 42px;
border: 0px;
border-left: #deded0 1px solid;
text-align: center;
width: 35px;
cursor: pointer;
&:hover {
color: #d84040; } } }
body.anon #searchbar {
width: 500px;
.searchinput {
width: 440px; }
.searchinputcancelable {
width: 405px; } }
#askbutton {
background: url(../default/media/images/bigbutton.png) repeat-x bottom;
line-height: 44px;
text-align: center;
width: 200px;
height: 42px;
font-size: 23px;
color: #4a757f;
margin-top: 7px;
float: right;
text-transform: uppercase;
border-radius: 5px;
-ms-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-khtml-border-radius: 5px;
-webkit-box-shadow: 1px 1px 2px #636363;
-moz-box-shadow: 1px 1px 2px #636363;
box-shadow: 1px 1px 2px #636363;
&:hover {
text-decoration: none;
background: url(../default/media/images/bigbutton.png) repeat-x top;
text-shadow: 0px 1px 0px #c6d9dd;
-moz-text-shadow: 0px 1px 0px #c6d9dd;
-webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
/*#contentleft {
width: 730px;
float: left;
position: relative;
padding-bottom: 10px; }
#contentright {
width: 200px;
float: right;
padding: 0 0px 10px 0px; }*/
#contentfull {
float: left;
width: 960px; }
.box {
/*background: #fff;*/
/*padding: 4px 0px 10px 0px;*/
/*width: 200px;*/
p {
margin-bottom: 4px;
&.info-box-follow-up-links {
text-align: right;
margin: 0; } }
h2 {
// padding-left: 0;
// /*background: #eceeeb;*/
// height: 30px;
// line-height: 30px;
// /*text-align: right;*/
// /*font-size: 18px !important;*/
// // font-weight: normal;
// // color: #656565;
// /*padding-right: 10px;*/
// /*margin-bottom: 10px;*/
// /*font-family: 'yanone kaffeesatz',sans-serif;*/
}
// h3 {
// /*color: #4a757f;*/
// /*font-size: 18px;*/
// text-align: left;
// font-weight: normal;
// /*font-family: 'yanone kaffeesatz',sans-serif;*/
// padding-left: 0px; }
// .contributorback {
// background: #eceeeb url(../default/media/images/contributorsback.png) no-repeat center left; }
// label {
// color: #707070;
// font-size: 15px;
// display: block;
// float: right;
// text-align: left;
// font-family: 'yanone kaffeesatz',sans-serif;
// width: 80px;
// margin-right: 18px; }
// #displaytagfiltercontrol label {
// width: 160px; }
// ul {
// margin-left: 22px; }
// li {
// list-style-type: disc;
// font-size: 13px;
// line-height: 20px;
// margin-bottom: 10px;
// color: #707070; }
// ul.tags {
// list-style: none;
// margin: 0;
// padding: 0;
// line-height: 170%;
// display: block; }
// #displaytagfiltercontrol p label {
// color: #707070;
// font-size: 15px; }
/*.inputs {
#interestingtaginput, #ignoredtaginput {
width: 153px;
padding-left: 5px;
border: #c9c9b5 1px solid;
height: 25px; }
#interestingtagadd, #ignoredtagadd {
background: url(../default/media/images/small-button-blue.png) repeat-x top;
border: 0;
color: #4a757f;
font-weight: bold;
font-size: 12px;
width: 30px;
height: 27px;
margin-top: -2px;
cursor: pointer;
border-radius: 4px;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-khtml-border-radius: 4px;
text-shadow: 0px 1px 0px #e6f6fa;
-moz-text-shadow: 0px 1px 0px #e6f6fa;
-webkit-text-shadow: 0px 1px 0px #e6f6fa;
-webkit-box-shadow: 1px 1px 2px #808080;
-moz-box-shadow: 1px 1px 2px #808080;
box-shadow: 1px 1px 2px #808080; }
#interestingtagadd:hover, #ignoredtagadd:hover {
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; } }*/
// img.gravatar {
// margin: 1px; }
// a {
// &.followed, &.follow {
// background: url(../default/media/images/medium-button.png) top repeat-x;
// height: 34px;
// line-height: 34px;
// text-align: center;
// border: 0;
// font-family: 'yanone kaffeesatz',sans-serif;
// color: #4a757f;
// font-weight: normal;
// font-size: 21px;
// margin-top: 3px;
// display: block;
// width: 120px;
// text-decoration: none;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// -webkit-box-shadow: 1px 1px 2px #636363;
// -moz-box-shadow: 1px 1px 2px #636363;
// box-shadow: 1px 1px 2px #636363;
// margin: 0 auto;
// padding: 0; }
// &.followed:hover, &.follow:hover {
// text-decoration: none;
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
// &.followed {
// div.unfollow {
// display: none; }
// &:hover div {
// display: none;
// &.unfollow {
// display: inline;
// color: #a05736; } } } }
// .favorite-number {
// padding: 5px 0 0 5px;
// font-size: 100%;
// font-family: arial;
// font-weight: bold;
// color: #777;
// text-align: center; }
// .notify-sidebar #question-subscribe-sidebar {
// margin: 7px 0 0 3px; }
}
//.statswidget p {
// color: #707070;
// font-size: 16px;
// border-bottom: #cccccc 1px solid;
// font-size: 13px;
// strong {
// float: right;
// padding-right: 10px; } }
// .questions-related {
// word-wrap: break-word;
// p {
// line-height: 20px;
// padding: 4px 0px 4px 0px;
// font-size: 16px;
// font-weight: normal;
// border-bottom: #cccccc 1px solid; }
// a {
// font-size: 13px; } }
// #tips {
// li {
// color: #707070;
// font-size: 13px;
// list-style-image: url(../default/media/images/tips.png); }
// a {
// font-size: 16px; } }
// #markdownhelp {
// li {
// color: #707070;
// font-size: 13px; }
// a {
// font-size: 16px; } }
// .tabbar {
// background-color: #eff5f6;
// height: 30px;
// margin-bottom: 3px;
// margin-top: 3px;
// float: right;
// font-family: georgia,serif;
// font-size: 16px;
// border-radius: 5px;
// -ms-border-radius: 5px;
// -moz-border-radius: 5px;
// -webkit-border-radius: 5px;
// -khtml-border-radius: 5px;
// h2 {
// float: left; } }
// .tabsa, .tabsc {
// float: right;
// position: relative;
// display: block;
// height: 20px; }
// .tabsa {
// float: right; }
// .tabsc {
// float: left; }
// .tabsa a, .tabsc a {
// border-left: 1px solid #d0e1e4;
// color: #7ea9b3;
// display: block;
// float: left;
// height: 20px;
// line-height: 20px;
// padding: 4px 7px 4px 7px;
// text-decoration: none; }
// .tabsa a.on, .tabsc a.on, .tabsa a:hover, .tabsc a:hover {
// color: #4a757f; }
// .tabsa .label, .tabsc .label {
// float: left;
// color: #646464;
// margin-top: 4px;
// margin-right: 5px; }
// .main-page .tabsa .label {
// margin-left: 8px; }
// .tabsb a {
// background: #eee;
// border: 1px solid #eee;
// color: #777;
// display: block;
// float: left;
// height: 22px;
// line-height: 28px;
// margin: 5px 0px 0 4px;
// padding: 0 11px 0 11px;
// text-decoration: none; }
// .tabsc .first {
// border: none; }
// .rss {
// float: right;
// font-size: 16px;
// color: #f57900;
// margin: 5px 0px 3px 7px;
// width: 52px;
// padding-left: 2px;
// padding-top: 3px;
// background: white url(../default/media/images/feed-icon-small.png) no-repeat center right;
// float: right;
// font-family: georgia,serif;
// font-size: 16px;
// &:hover {
// color: #f4a731 !important; } }
// #questioncount {
// font-weight: bold;
// font-size: 23px;
// color: #7ea9b3;
// width: 200px;
// float: left;
// margin-bottom: 8px;
// padding-top: 6px;
// font-family: 'yanone kaffeesatz',sans-serif; }
// #listsearchtags {
// float: left;
// margin-top: 3px;
// color: #707070;
// font-size: 16px;
// font-family: 'yanone kaffeesatz',sans-serif; }
// ul#searchtags {
// margin-left: 10px;
// float: right;
// padding-top: 2px; }
// .search-tips {
// font-size: 16px;
// line-height: 17px;
// color: #707070;
// margin: 5px 0 10px 0;
// padding: 0px;
// float: left;
// font-family: 'yanone kaffeesatz',sans-serif;
// a {
// text-decoration: underline;
// color: #1b79bd; } }
// #question-list {
// float: left;
// position: relative;
// background-color: #fff;
// padding: 0;
// width: 100%; }
// .short-summary {
// position: relative;
// filter: inherit;
// padding: 10px;
// border-bottom: 1px solid #dddbce;
// margin-bottom: 1px;
// overflow: hidden;
// width: 710px;
// float: left;
// background: url(../default/media/images/summary-background.png) repeat-x;
// h2 {
// font-size: 24px;
// font-weight: normal;
// line-height: 26px;
// padding-left: 0;
// margin-bottom: 6px;
// display: block;
// font-family: 'yanone kaffeesatz',sans-serif; }
// a {
// color: #464646; }
// .userinfo {
// text-align: right;
// line-height: 16px;
// font-family: arial;
// padding-right: 4px;
// .relativetime {
// font-size: 11px;
// clear: both;
// font-weight: normal;
// color: #555; } }
// span.anonymous {
// font-size: 11px;
// clear: both;
// font-weight: normal;
// color: #555; }
// .userinfo a {
// font-weight: bold;
// font-size: 11px; }
// .counts {
// float: right;
// margin: 4px 0 0 5px;
// font-family: 'yanone kaffeesatz',sans-serif;
// .item-count {
// padding: 0px 5px 0px 5px;
// font-size: 25px;
// font-family: 'yanone kaffeesatz',sans-serif; }
// .votes div, .views div, .answers div, .favorites div {
// margin-top: 3px;
// font-size: 14px;
// line-height: 14px;
// color: #646464; } }
// .tags {
// margin-top: 0; }
// .votes, .answers, .favorites, .views {
// text-align: center;
// margin: 0 3px;
// padding: 8px 2px 0px 2px;
// width: 51px;
// float: right;
// height: 44px;
// border: #dbdbd4 1px solid; }
// .votes {
// background: url(../default/media/images/vote-background.png) repeat-x; }
// .answers {
// background: url(../default/media/images/answers-background.png) repeat-x; }
// .views {
// background: url(../default/media/images/view-background.png) repeat-x; }
// .no-votes .item-count {
// color: #b1b5b6; }
// .some-votes .item-count {
// color: #4a757f; }
// .no-answers .item-count {
// color: #b1b5b6; }
// .some-answers .item-count {
// color: #eab243; }
// .no-views .item-count {
// color: #b1b5b6; }
// .some-views .item-count {
// color: #d33f00; }
// .accepted .item-count {
// background: url(../default/media/images/accept.png) no-repeat top right;
// display: block;
// text-align: center;
// width: 40px;
// color: #eab243; }
// .some-favorites .item-count {
// background: #338333;
// color: #d0f5a9; }
// .no-favorites .item-count {
// background: #eab243;
// color: yellow; } }
// .evenmore {
// font-size: 13px;
// color: #707070;
// padding: 15px 0px 10px 0px;
// clear: both;
// a {
// text-decoration: underline;
// color: #1b79bd; } }
.pager {
margin-top: 10px;
margin-bottom: 16px; }
.pagesize {
margin-top: 10px;
margin-bottom: 16px;
float: right; }
// .paginator {
// padding: 5px 0 10px 0;
// font-size: 13px;
// margin-bottom: 10px;
// .prev a, .next a {
// background-color: #fff;
// color: #777;
// padding: 2px 4px 3px 4px;
// &:visited {
// background-color: #fff;
// color: #777;
// padding: 2px 4px 3px 4px; } }
// a {
// color: #7ea9b3; }
// .prev {
// margin-right: .5em; }
// .next {
// margin-left: .5em; }
// .page a {
// padding: .25em;
// background-color: #fff;
// margin: 0em .25em;
// color: #ff;
// &:visited {
// padding: .25em;
// background-color: #fff;
// margin: 0em .25em;
// color: #ff; } }
// .curr {
// padding: .25em;
// background-color: #fff;
// margin: 0em .25em;
// color: #ff;
// background-color: #8ebcc7;
// color: #fff;
// font-weight: bold; }
// .next a, .prev a {
// color: #7ea9b3; }
// .page a:hover, .curr a:hover, .prev a:hover, .next a:hover {
// color: #8c8c8c;
// background-color: #e1e1e1;
// text-decoration: none; }
// .text {
// color: #777;
// padding: .3em; }
// .paginator-container-left {
// padding: 5px 0 10px 0; } }
// .tag-size-1 {
// font-size: 12px; }
// .tag-size-2 {
// font-size: 13px; }
// .tag-size-3 {
// font-size: 14px; }
// .tag-size-4 {
// font-size: 15px; }
// .tag-size-5 {
// font-size: 16px; }
// .tag-size-6 {
// font-size: 17px; }
// .tag-size-7 {
// font-size: 18px; }
// .tag-size-8 {
// font-size: 19px; }
// .tag-size-9 {
// font-size: 20px; }
// .tag-size-10 {
// font-size: 21px; }
// ul {
// &.tags {
// list-style: none;
// margin: 0;
// padding: 0;
// line-height: 170%;
// display: block;
// &.marked-tags {
// list-style: none;
// margin: 0;
// padding: 0;
// line-height: 170%;
// display: block; } }
// &#related-tags {
// list-style: none;
// margin: 0;
// padding: 0;
// line-height: 170%;
// display: block; }
// &.tags li {
// float: left;
// display: block;
// margin: 0 8px 0 0;
// padding: 0;
// height: 20px; } }
// .wildcard-tags {
// clear: both; }
// ul.tags.marked-tags li, .wildcard-tags ul.tags li {
// margin-bottom: 5px; }
// #tagselector div.inputs {
// clear: both;
// float: none;
// margin-bottom: 10px; }
// .tags-page ul.tags li {
// width: 160px;
// margin: 5px; }
// ul {
// &#ab-user-tags li {
// width: 160px;
// margin: 5px; }
// &#related-tags li {
// margin: 0 5px 8px 0;
// float: left;
// clear: left; } }
// .tag-left {
// cursor: pointer;
// display: block;
// float: left;
// height: 17px;
// margin: 0 5px 0 0;
// padding: 0;
// -webkit-box-shadow: 0px 0px 5px #d3d6d7;
// -moz-box-shadow: 0px 0px 5px #d3d6d7;
// box-shadow: 0px 0px 5px #d3d6d7; }
// .tag-right {
// background: #f3f6f6;
// border: #fff 1px solid;
// border-top: #fff 2px solid;
// outline: #cfdbdb 1px solid;
// display: block;
// float: left;
// height: 17px;
// line-height: 17px;
// font-weight: normal;
// font-size: 11px;
// padding: 0px 8px 0px 8px;
// text-decoration: none;
// text-align: center;
// white-space: nowrap;
// vertical-align: middle;
// font-family: arial;
// color: #717179; }
// .deletable-tag {
// margin-right: 3px;
// white-space: nowrap;
// border-top-right-radius: 4px;
// border-bottom-right-radius: 4px;
// -moz-border-radius-topright: 4px;
// -moz-border-radius-bottomright: 4px;
// -webkit-border-bottom-right-radius: 4px;
// -webkit-border-top-right-radius: 4px; }
// .tags {
// a.tag-right, span.tag-right {
// color: #585858;
// text-decoration: none; }
// a:hover {
// color: #1a1a1a; } }
// .users-page h1, .tags-page h1 {
// float: left; }
// .main-page h1 {
// margin-right: 5px; }
// .delete-icon {
// margin-top: -1px;
// float: left;
// height: 21px;
// width: 18px;
// display: block;
// line-height: 20px;
// text-align: center;
// background: #bbcdcd;
// cursor: default;
// color: #fff;
// border-top: #cfdbdb 1px solid;
// font-family: arial;
// border-top-right-radius: 4px;
// border-bottom-right-radius: 4px;
// -moz-border-radius-topright: 4px;
// -moz-border-radius-bottomright: 4px;
// -webkit-border-bottom-right-radius: 4px;
// -webkit-border-top-right-radius: 4px;
// text-shadow: 0px 1px 0px #7ea0a0;
// -moz-text-shadow: 0px 1px 0px #7ea0a0;
// -webkit-text-shadow: 0px 1px 0px #7ea0a0;
// &:hover {
// background: #b32f2f; } }
// .tag-number {
// font-weight: normal;
// float: left;
// font-size: 16px;
// color: #5d5d5d; }
// .badges .tag-number {
// float: none;
// display: inline;
// padding-right: 15px; }
// .section-title {
// color: #7ea9b3;
// font-family: 'yanone kaffeesatz',sans-serif;
// font-weight: bold;
// font-size: 24px; }
// #fmask {
// margin-bottom: 30px;
// width: 100%; }
// #askformbar {
// display: inline-block;
// padding: 4px 7px 5px 0px;
// margin-top: 0px;
// p {
// margin: 0 0 5px 0;
// font-size: 14px;
// color: #525252;
// line-height: 1.4; }
// .questiontitleinput {
// font-size: 24px;
// line-height: 24px;
// height: 36px;
// margin: 0px;
// padding: 0px 0 0 5px;
// border: #cce6ec 3px solid;
// width: 725px; } }
// .ask-page div#question-list, .edit-question-page div#question-list {
// float: none;
// border-bottom: #f0f0ec 1px solid;
// float: left;
// margin-bottom: 10px; }
// .ask-page div#question-list a, .edit-question-page div#question-list a {
// line-height: 30px; }
// .ask-page div#question-list h2, .edit-question-page div#question-list h2 {
// font-size: 13px;
// padding-bottom: 0;
// color: #1b79bd;
// border-top: #f0f0ec 1px solid;
// border-left: #f0f0ec 1px solid;
// height: 30px;
// line-height: 30px;
// font-weight: normal; }
// .ask-page div#question-list span, .edit-question-page div#question-list span {
// width: 28px;
// height: 26px;
// line-height: 26px;
// text-align: center;
// margin-right: 10px;
// float: left;
// display: block;
// color: #fff;
// background: #b8d0d5;
// border-radius: 3px;
// -ms-border-radius: 3px;
// -moz-border-radius: 3px;
// -webkit-border-radius: 3px;
// -khtml-border-radius: 3px; }
// .ask-page label, .edit-question-page label {
// color: #525252;
// font-size: 13px; }
// .ask-page #id_tags, .edit-question-page #id_tags {
// border: #cce6ec 3px solid;
// height: 25px;
// padding-left: 5px;
// width: 395px;
// font-size: 14px; }
// .title-desc {
// color: #707070;
// font-size: 13px; }
// #fmanswer input.submit, .ask-page input.submit, .edit-question-page input.submit {
// float: left;
// background: url(../default/media/images/medium-button.png) top repeat-x;
// height: 34px;
// border: 0;
// font-family: 'yanone kaffeesatz',sans-serif;
// color: #4a757f;
// font-weight: normal;
// font-size: 21px;
// margin-top: 3px;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// -webkit-box-shadow: 1px 1px 2px #636363;
// -moz-box-shadow: 1px 1px 2px #636363;
// box-shadow: 1px 1px 2px #636363;
// margin-right: 7px; }
// #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover {
// text-decoration: none;
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
// #editor {
// font-size: 100%;
// min-height: 200px;
// line-height: 18px;
// margin: 0;
// border-left: #cce6ec 3px solid;
// border-bottom: #cce6ec 3px solid;
// border-right: #cce6ec 3px solid;
// border-top: 0;
// padding: 10px;
// margin-bottom: 10px;
// width: 710px; }
// #id_title {
// width: 100%; }
// .wmd-preview {
// margin: 3px 0 5px 0;
// padding: 6px;
// background-color: #f5f5f5;
// min-height: 20px;
// overflow: auto;
// font-size: 13px;
// font-family: arial;
// p {
// margin-bottom: 14px;
// line-height: 1.4;
// font-size: 14px; }
// pre {
// background-color: #e7f1f8; }
// blockquote {
// background-color: #eee; }
// img {
// max-width: 600px; } }
// .preview-toggle {
// width: 100%;
// color: #b6a475;
// text-align: left;
// span:hover {
// cursor: pointer; } }
// .after-editor {
// margin-top: 15px;
// margin-bottom: 15px; }
.checkbox {
margin-left: 5px;
font-weight: normal;
cursor: help; }
// .question-options {
// margin-top: 1px;
// color: #666;
// line-height: 13px;
// margin-bottom: 5px;
// label {
// vertical-align: text-bottom; } }
// .edit-content-html {
// border-top: 1px dotted #d8d2a9;
// border-bottom: 1px dotted #d8d2a9;
// margin: 5px 0 5px 0; }
// .edit-question-page, #fmedit, .wmd-preview {
// color: #525252; }
// .edit-question-page #id_revision, #fmedit #id_revision, .wmd-preview #id_revision {
// font-size: 14px;
// margin-top: 5px;
// margin-bottom: 5px; }
// .edit-question-page #id_title, #fmedit #id_title, .wmd-preview #id_title {
// font-size: 24px;
// line-height: 24px;
// height: 36px;
// margin: 0px;
// padding: 0px 0 0 5px;
// border: #cce6ec 3px solid;
// width: 725px;
// margin-bottom: 10px; }
// .edit-question-page #id_summary, #fmedit #id_summary, .wmd-preview #id_summary {
// border: #cce6ec 3px solid;
// height: 25px;
// padding-left: 5px;
// width: 395px;
// font-size: 14px; }
// .edit-question-page .title-desc, #fmedit .title-desc, .wmd-preview .title-desc {
// margin-bottom: 10px; }
// .question-page {
// h1 {
// padding-top: 0px;
// font-family: 'yanone kaffeesatz',sans-serif;
// a {
// color: #464646;
// font-size: 30px;
// font-weight: normal;
// line-height: 1; } }
// p.rss {
// float: none;
// clear: both;
// padding: 3px 0 0 23px;
// font-size: 15px;
// width: 110px;
// background-position: center left;
// margin-left: 0px !important;
// a {
// font-family: 'yanone kaffeesatz',sans-serif;
// vertical-align: top; } }
// .question-content {
// float: right;
// width: 682px;
// margin-bottom: 10px; }
// #question-table {
// float: left;
// border-top: #f0f0f0 1px solid;
// margin: 6px 0 6px 0;
// border-spacing: 0px;
// width: 670px;
// padding-right: 10px; }
// .answer-table {
// margin: 6px 0 6px 0;
// border-spacing: 0px;
// width: 670px;
// padding-right: 10px;
// margin-top: 0px;
// border-bottom: 1px solid #d4d4d4;
// float: right;
// td {
// width: 20px;
// vertical-align: top; } }
// #question-table td {
// width: 20px;
// vertical-align: top; }
// .question-body, .answer-body {
// overflow: auto;
// margin-top: 10px;
// font-family: arial;
// color: #4b4b4b; }
// .question-body p, .answer-body p {
// margin-bottom: 14px;
// line-height: 1.4;
// font-size: 14px;
// padding: 0px 5px 5px 0px; }
// .question-body a, .answer-body a {
// color: #1b79bd; }
// .question-body li, .answer-body li {
// margin-bottom: 7px; }
// .question-body img, .answer-body img {
// max-width: 600px; }
// .post-update-info-container {
// float: right;
// width: 175px; }
// .post-update-info {
// background: white url(../default/media/images/background-user-info.png) repeat-x bottom;
// float: right;
// font-size: 9px;
// font-family: arial;
// width: 158px;
// padding: 4px;
// margin: 0px 0px 5px 5px;
// line-height: 14px;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// -webkit-box-shadow: 0px 2px 1px #bfbfbf;
// -moz-box-shadow: 0px 2px 1px #bfbfbf;
// box-shadow: 0px 2px 1px #bfbfbf;
// p {
// line-height: 13px;
// font-size: 11px;
// margin: 0 0 2px 1px;
// padding: 0; }
// a {
// color: #444; }
// .gravatar {
// float: left;
// margin-right: 4px; }
// p.tip {
// color: #444;
// line-height: 13px;
// font-size: 10px; } }
// .post-controls {
// font-size: 11px;
// line-height: 12px;
// min-width: 200px;
// padding-left: 5px;
// text-align: right;
// clear: left;
// float: right;
// margin-top: 10px;
// margin-bottom: 8px;
// a {
// color: #777;
// padding: 0px 3px 3px 22px;
// cursor: pointer;
// border: none;
// font-size: 12px;
// font-family: arial;
// text-decoration: none;
// height: 18px;
// display: block;
// float: right;
// line-height: 18px;
// margin-top: -2px;
// margin-left: 4px;
// &:hover {
// background-color: #f5f0c9;
// border-radius: 3px;
// -ms-border-radius: 3px;
// -moz-border-radius: 3px;
// -webkit-border-radius: 3px;
// -khtml-border-radius: 3px; } }
// .sep {
// color: #ccc;
// float: right;
// height: 18px;
// font-size: 18px; }
// .question-delete {
// background: url(../default/media/images/delete.png) no-repeat center left;
// padding-left: 16px; } }
// .answer-controls .question-delete {
// background: url(../default/media/images/delete.png) no-repeat center left;
// padding-left: 16px; }
// .post-controls .question-flag, .answer-controls .question-flag {
// background: url(../default/media/images/flag.png) no-repeat center left; }
// .post-controls .question-edit, .answer-controls .question-edit {
// background: url(../default/media/images/edit2.png) no-repeat center left; }
// .post-controls .question-retag, .answer-controls .question-retag {
// background: url(../default/media/images/retag.png) no-repeat center left; }
// .post-controls .question-close, .answer-controls .question-close {
// background: url(../default/media/images/close.png) no-repeat center left; }
// .post-controls .permant-link, .answer-controls .permant-link {
// background: url(../default/media/images/link.png) no-repeat center left; }
// .tabbar {
// width: 100%; }
// #questioncount {
// float: left;
// font-family: 'yanone kaffeesatz',sans-serif;
// line-height: 15px; }
// .question-img-upvote, .question-img-downvote, .answer-img-upvote, .answer-img-downvote {
// width: 25px;
// height: 20px;
// cursor: pointer; }
// .question-img-upvote, .answer-img-upvote {
// background: url(../default/media/images/vote-arrow-up-new.png) no-repeat; }
// .question-img-downvote, .answer-img-downvote {
// background: url(../default/media/images/vote-arrow-down-new.png) no-repeat; }
// .question-img-upvote {
// &:hover, &.on {
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
// .answer-img-upvote {
// &:hover, &.on {
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
// .question-img-downvote {
// &:hover, &.on {
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
// .answer-img-downvote {
// &:hover, &.on {
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
// #fmanswer_button {
// margin: 8px 0px; }
// .question-img-favorite:hover {
// background: url(../default/media/images/vote-favorite-on.png); }
// div.comments {
// padding: 0; }
// #comment-title {
// font-weight: bold;
// font-size: 23px;
// color: #7ea9b3;
// width: 200px;
// float: left;
// font-family: 'yanone kaffeesatz',sans-serif; }
// .comments {
// font-size: 12px;
// clear: both;
// div.controls {
// clear: both;
// float: left;
// width: 100%;
// margin: 3px 0 20px 5px; }
// .controls a {
// color: #988e4c;
// padding: 0 3px 2px 22px;
// font-family: arial;
// font-size: 13px;
// background: url(../default/media/images/comment.png) no-repeat center left;
// &:hover {
// background-color: #f5f0c9;
// text-decoration: none; } }
// .button {
// color: #988e4c;
// font-size: 11px;
// padding: 3px;
// cursor: pointer; }
// a {
// background-color: inherit;
// color: #1b79bd;
// padding: 0; }
// form.post-comments {
// margin: 3px 26px 0 42px;
// textarea {
// font-size: 13px;
// line-height: 1.3; } }
// textarea {
// height: 42px;
// width: 100%;
// margin: 7px 0 5px 1px;
// font-family: arial;
// outline: none;
// overflow: auto;
// font-size: 12px;
// line-height: 140%;
// padding-left: 2px;
// padding-top: 3px;
// border: #cce6ec 3px solid; }
// input {
// margin-left: 10px;
// margin-top: 1px;
// vertical-align: top;
// width: 100px; }
// button {
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border: 0;
// color: #4a757f;
// font-family: arial;
// font-size: 13px;
// width: 100px;
// font-weight: bold;
// height: 27px;
// line-height: 25px;
// margin-bottom: 5px;
// cursor: pointer;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// text-shadow: 0px 1px 0px #e6f6fa;
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-box-shadow: 1px 1px 2px #808080;
// -moz-box-shadow: 1px 1px 2px #808080;
// box-shadow: 1px 1px 2px #808080;
// &:hover {
// background: url(../default/media/images/small-button-blue.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
// .counter {
// display: inline-block;
// width: 245px;
// float: right;
// color: #b6a475 !important;
// vertical-align: top;
// font-family: arial;
// float: right;
// text-align: right; }
// .comment {
// border-bottom: 1px solid #edeeeb;
// clear: both;
// margin: 0;
// margin-top: 8px;
// padding-bottom: 4px;
// overflow: auto;
// font-family: arial;
// font-size: 11px;
// min-height: 25px;
// background: white url(../default/media/images/comment-background.png) bottom repeat-x;
// border-radius: 5px;
// -ms-border-radius: 5px;
// -moz-border-radius: 5px;
// -webkit-border-radius: 5px;
// -khtml-border-radius: 5px; }
// div.comment:hover {
// background-color: #efefef; }
// a.author {
// background-color: inherit;
// color: #1b79bd;
// padding: 0;
// &:hover {
// text-decoration: underline; } }
// span.delete-icon {
// background: url(../default/media/images/close-small.png) no-repeat;
// border: 0;
// width: 14px;
// height: 14px;
// &:hover {
// border: #bc564b 2px solid;
// border-radius: 10px;
// -ms-border-radius: 10px;
// -moz-border-radius: 10px;
// -webkit-border-radius: 10px;
// -khtml-border-radius: 10px;
// margin: -3px 0px 0px -2px; } }
// .content {
// margin-bottom: 7px; }
// .comment-votes {
// float: left;
// width: 37px;
// line-height: 130%;
// padding: 6px 5px 6px 3px; }
// .comment-body {
// line-height: 1.3;
// margin: 3px 26px 0 46px;
// padding: 5px 3px;
// color: #666;
// font-size: 13px;
// .edit {
// padding-left: 6px; }
// p {
// font-size: 13px;
// line-height: 1.3;
// margin-bottom: 3px;
// padding: 0; } }
// .comment-delete {
// float: right;
// width: 14px;
// line-height: 130%;
// padding: 8px 6px; }
// .upvote {
// margin: 0px;
// padding-right: 17px;
// padding-top: 2px;
// text-align: right;
// height: 20px;
// font-size: 13px;
// font-weight: bold;
// color: #777;
// &.upvoted {
// color: #d64000; }
// &.hover {
// background: url(../default/media/images/go-up-grey.png) no-repeat;
// background-position: right 1px; }
// &:hover {
// background: url(../default/media/images/go-up-orange.png) no-repeat;
// background-position: right 1px; } }
// .help-text {
// float: right;
// text-align: right;
// color: gray;
// margin-bottom: 0px;
// margin-top: 0px;
// line-height: 50%; } }
// #questiontools {
// font-size: 22px;
// margin-top: 11px;
// text-align: left; }
// .question-status {
// margin-top: 10px;
// margin-bottom: 15px;
// padding: 20px;
// background-color: #fef7cc;
// text-align: center;
// border: #e1c04a 1px solid;
// h3 {
// font-size: 20px;
// color: #707070;
// font-weight: normal; } }
// .vote-buttons {
// // float: left;
// // text-align: center;
// // padding-top: 2px;
// // margin: 10px 10px 0px 3px;
// img {
// cursor: pointer; } }
// .vote-number {
// font-family: 'yanone kaffeesatz',sans-serif;
// padding: 0px 0 5px 0;
// font-size: 25px;
// font-weight: bold;
// color: #777; }
// .vote-buttons .notify-sidebar {
// // text-align: left;
// // width: 120px;
// label {
// vertical-align: top; } }
// .tabbar-answer {
// margin-bottom: 15px;
// padding-left: 7px;
// width: 723px;
// margin-top: 10px; }
// .answer .vote-buttons {
// // float: left;
// }
// .accepted-answer {
// background-color: #f7fecc;
// border-bottom-color: #9bd59b;
// // .vote-buttons {
// // width: 27px;
// // margin-right: 10px;
// // margin-top: 10px; }
// }
// .answer .post-update-info a {
// color: #444444; }
// .answered {
// background: #ccc;
// color: #999; }
// .answered-accepted {
// background: #dcdcdc;
// color: #763333;
// strong {
// color: #e1e818; } }
// .answered-by-owner {
// background: #f1f1ff;
// .comments {
// .button {
// background-color: #e6ecff; }
// background-color: #e6ecff; }
// // .vote-buttons {
// // margin-right: 10px; }
// }
// .answer-img-accept:hover {
// background: url(../default/media/images/vote-accepted-on.png); }
// .answer-body {
// a {
// color: #1b79bd; }
// li {
// margin-bottom: 0.7em; } }
// #fmanswer {
// color: #707070;
// line-height: 1.2;
// margin-top: 10px;
// h2 {
// font-family: 'yanone kaffeesatz',sans-serif;
// color: #7ea9b3;
// font-size: 24px; }
// label {
// font-size: 13px; } }
// .message {
// padding: 5px;
// margin: 0px 0 10px 0; } }
// @media screen and (-webkit-min-device-pixel-ratio:0) {
// textarea {
// padding-left: 3px !important; } }
// .facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
// background: url(../default/media/images/socialsprite.png) no-repeat;
// display: block;
// text-indent: -100em;
// height: 25px;
// width: 25px;
// margin-bottom: 3px; }
// .facebook-share.icon:hover, .twitter-share.icon:hover, .linkedin-share.icon:hover, .identica-share.icon:hover {
// opacity: 0.8;
// filter: alpha(opacity = 80); }
// .facebook-share.icon {
// background-position: -26px 0px; }
// .identica-share.icon {
// background-position: -78px 0px; }
// .twitter-share.icon {
// margin-top: 10px;
// background-position: 0px 0px; }
// .linkedin-share.icon {
// background-position: -52px 0px; }
// .openid-signin, .meta, .users-page, .user-profile-edit-page {
// font-size: 13px;
// line-height: 1.3;
// color: #525252; }
// .openid-signin p, .meta p, .users-page p, .user-profile-edit-page p {
// font-size: 13px;
// color: #707070;
// line-height: 1.3;
// font-family: arial;
// color: #525252;
// margin-bottom: 12px; }
// .openid-signin h2, .meta h2, .users-page h2, .user-profile-edit-page h2 {
// color: #525252;
// padding-left: 0px;
// font-size: 16px; }
// .openid-signin form, .meta form, .users-page form, .user-profile-edit-page form, .user-profile-page form {
// margin-bottom: 15px; }
// .openid-signin input[type="text"], .meta input[type="text"], .users-page input[type="text"], .user-profile-edit-page input[type="text"], .user-profile-page input[type="text"], .openid-signin input[type="password"], .meta input[type="password"], .users-page input[type="password"], .user-profile-edit-page input[type="password"], .user-profile-page input[type="password"], .openid-signin select, .meta select, .users-page select, .user-profile-edit-page select, .user-profile-page select {
// border: #cce6ec 3px solid;
// height: 25px;
// padding-left: 5px;
// width: 395px;
// font-size: 14px; }
// .openid-signin select, .meta select, .users-page select, .user-profile-edit-page select, .user-profile-page select {
// width: 405px;
// height: 30px; }
// .openid-signin textarea, .meta textarea, .users-page textarea, .user-profile-edit-page textarea, .user-profile-page textarea {
// border: #cce6ec 3px solid;
// padding-left: 5px;
// padding-top: 5px;
// width: 395px;
// font-size: 14px; }
// .openid-signin input.submit, .meta input.submit, .users-page input.submit, .user-profile-edit-page input.submit, .user-profile-page input.submit {
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border: 0;
// color: #4a757f;
// font-weight: bold;
// font-size: 13px;
// font-family: arial;
// height: 26px;
// margin: 5px 0px;
// width: 100px;
// cursor: pointer;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// text-shadow: 0px 1px 0px #e6f6fa;
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-box-shadow: 1px 1px 2px #808080;
// -moz-box-shadow: 1px 1px 2px #808080;
// box-shadow: 1px 1px 2px #808080; }
// .openid-signin input.submit:hover, .meta input.submit:hover, .users-page input.submit:hover, .user-profile-edit-page input.submit:hover, .user-profile-page input.submit:hover {
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
// text-decoration: none; }
.openid-signin .cancel, .meta .cancel, .users-page .cancel, .user-profile-edit-page .cancel, .user-profile-page .cancel {
background: url(../default/media/images/small-button-cancel.png) repeat-x top !important;
color: #525252 !important; }
.openid-signin .cancel:hover, .meta .cancel:hover, .users-page .cancel:hover, .user-profile-edit-page .cancel:hover, .user-profile-page .cancel:hover {
background: url(../default/media/images/small-button-cancel.png) repeat-x bottom !important; }
#email-input-fs, #local_login_buttons, #password-fs, #openid-fs {
margin-top: 10px; }
#email-input-fs #id_email, #local_login_buttons #id_email, #password-fs #id_email, #openid-fs #id_email, #email-input-fs #id_username, #local_login_buttons #id_username, #password-fs #id_username, #openid-fs #id_username, #email-input-fs #id_password, #local_login_buttons #id_password, #password-fs #id_password, #openid-fs #id_password {
font-size: 12px;
line-height: 20px;
height: 20px;
margin: 0px;
padding: 0px 0 0 5px;
border: #cce6ec 3px solid;
width: 200px; }
#email-input-fs .submit-b, #local_login_buttons .submit-b, #password-fs .submit-b, #openid-fs .submit-b {
background: url(../default/media/images/small-button-blue.png) repeat-x top;
border: 0;
color: #4a757f;
font-weight: bold;
font-size: 13px;
font-family: arial;
height: 24px;
margin-top: -2px;
padding-left: 10px;
padding-right: 10px;
cursor: pointer;
border-radius: 4px;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-khtml-border-radius: 4px;
text-shadow: 0px 1px 0px #e6f6fa;
-moz-text-shadow: 0px 1px 0px #e6f6fa;
-webkit-text-shadow: 0px 1px 0px #e6f6fa;
-webkit-box-shadow: 1px 1px 2px #808080;
-moz-box-shadow: 1px 1px 2px #808080;
box-shadow: 1px 1px 2px #808080; }
#email-input-fs .submit-b:hover, #local_login_buttons .submit-b:hover, #password-fs .submit-b:hover, #openid-fs .submit-b:hover {
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; }
.openid-input {
background: url(../default/media/images/openid.gif) no-repeat;
padding-left: 15px;
cursor: pointer; }
.openid-login-input {
background-position: center left;
background: url(../default/media/images/openid.gif) no-repeat 0% 50%;
padding: 5px 5px 5px 15px;
cursor: pointer;
font-family: trebuchet ms;
font-weight: 300;
font-size: 150%;
width: 500px; }
.openid-login-submit {
height: 40px;
width: 80px;
line-height: 40px;
cursor: pointer;
border: 1px solid #777;
font-weight: bold;
font-size: 120%; }
.tabbar-user {
width: 375px; }
// .user {
// padding: 5px;
// line-height: 140%;
// width: 166px;
// border: #eee 1px solid;
// margin-bottom: 5px;
// border-radius: 3px;
// -ms-border-radius: 3px;
// -moz-border-radius: 3px;
// -webkit-border-radius: 3px;
// -khtml-border-radius: 3px;
// .user-micro-info {
// color: #525252; }
// ul {
// margin: 0;
// list-style-type: none; }
// .thumb {
// clear: both;
// float: left;
// margin-right: 4px;
// display: inline; } }
// .tabbar-tags {
// width: 270px;
// margin-bottom: 15px; }
// a {
// &.medal {
// font-size: 17px;
// line-height: 250%;
// margin-right: 5px;
// color: #333;
// text-decoration: none;
// background: url(../default/media/images/medala.gif) no-repeat;
// border-left: 1px solid #eee;
// border-top: 1px solid #eee;
// border-bottom: 1px solid #ccc;
// border-right: 1px solid #ccc;
// padding: 4px 12px 4px 6px; }
// &:hover.medal {
// color: #333;
// text-decoration: none;
// background: url(../default/media/images/medala_on.gif) no-repeat;
// border-left: 1px solid #e7e296;
// border-top: 1px solid #e7e296;
// border-bottom: 1px solid #d1ca3d;
// border-right: 1px solid #d1ca3d; } }
#award-list .user {
float: left;
margin: 5px; }
.tabbar-profile {
width: 100%;
margin-bottom: 15px;
float: left; }
// .user-profile-page {
// font-size: 13px;
// color: #525252;
// p {
// font-size: 13px;
// line-height: 1.3;
// color: #525252; }
// .avatar img {
// border: #eee 1px solid;
// padding: 5px; }
// h2 {
// padding: 10px 0px 10px 0px;
// font-family: 'yanone kaffeesatz',sans-serif; } }
.user-details {
font-size: 13px;
h3 {
font-size: 16px; } }
.user-about {
background-color: #eeeeee;
height: 200px;
line-height: 20px;
overflow: auto;
padding: 10px;
width: 90%;
p {
font-size: 13px; } }
// .follow-toggle, .submit {
// border: 0 !important;
// color: #4a757f;
// font-weight: bold;
// font-size: 12px;
// height: 26px;
// line-height: 26px;
// margin-top: -2px;
// font-size: 15px;
// cursor: pointer;
// font-family: 'yanone kaffeesatz',sans-serif;
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// text-shadow: 0px 1px 0px #e6f6fa;
// -moz-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-text-shadow: 0px 1px 0px #e6f6fa;
// -webkit-box-shadow: 1px 1px 2px #808080;
// -moz-box-shadow: 1px 1px 2px #808080;
// box-shadow: 1px 1px 2px #808080; }
// .follow-toggle:hover, .submit:hover {
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
// text-decoration: none !important; }
// .follow-toggle {
// .follow {
// font-color: #000;
// font-style: normal; }
// .unfollow {
// div.unfollow-red {
// display: none; }
// &:hover div {
// &.unfollow-red {
// display: inline;
// color: #fff;
// font-weight: bold;
// color: #a05736; }
// &.unfollow-green {
// display: none; } } } }
.count {
font-family: 'yanone kaffeesatz',sans-serif;
font-size: 200%;
font-weight: 700;
color: #777777; }
.scorenumber {
font-family: 'yanone kaffeesatz',sans-serif;
font-size: 35px;
font-weight: 800;
color: #777;
line-height: 40px;
margin-top: 3px; }
.vote-count {
font-family: arial;
font-size: 160%;
font-weight: 700;
color: #777; }
// .answer-summary {
// display: block;
// clear: both;
// padding: 3px; }
.answer-votes {
background-color: #eeeeee;
color: #555555;
float: left;
font-family: arial;
font-size: 15px;
font-weight: bold;
height: 17px;
padding: 2px 4px 5px;
text-align: center;
text-decoration: none;
width: 20px;
margin-right: 10px;
border-radius: 4px;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-khtml-border-radius: 4px; }
.karma-summary {
padding: 5px;
font-size: 13px;
h3 {
text-align: center;
font-weight: bold;
padding: 5px; } }
.karma-diagram {
width: 477px;
height: 300px;
float: left;
margin-right: 10px; }
.karma-details {
float: right;
width: 450px;
height: 250px;
overflow-y: auto;
word-wrap: break-word;
p {
margin-bottom: 10px; } }
.karma-gained {
font-weight: bold;
background: #eee;
width: 25px;
margin-right: 5px;
color: green;
padding: 3px;
display: block;
float: left;
text-align: center;
border-radius: 3px;
-ms-border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
-khtml-border-radius: 3px; }
.karma-lost {
font-weight: bold;
background: #eee;
width: 25px;
color: red;
padding: 3px;
display: block;
margin-right: 5px;
float: left;
text-align: center;
border-radius: 3px;
-ms-border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
-khtml-border-radius: 3px; }
.submit-row {
margin-bottom: 10px; }
.revision {
margin: 10px 0 10px 0;
font-size: 13px;
color: #525252;
p {
font-size: 13px;
line-height: 1.3;
color: #525252; }
h3 {
font-family: 'yanone kaffeesatz',sans-serif;
font-size: 21px;
padding-left: 0px; }
.header {
background-color: #f5f5f5;
padding: 5px;
cursor: pointer; }
.author {
background-color: #e9f3f5; }
.summary {
padding: 5px 0 10px 0;
span {
background-color: #fde785;
padding: 6px;
border-radius: 4px;
-ms-border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-khtml-border-radius: 4px;
display: inline;
-webkit-box-shadow: 1px 1px 4px #cfb852;
-moz-box-shadow: 1px 1px 4px #cfb852;
box-shadow: 1px 1px 4px #cfb852; } }
.answerbody {
padding: 10px 0 5px 10px; }
.revision-mark {
width: 150px;
text-align: left;
display: inline-block;
font-size: 11px;
overflow: hidden;
.gravatar {
float: left;
margin-right: 4px;
padding-top: 5px; } }
.revision-number {
font-size: 300%;
font-weight: bold;
font-family: sans-serif; } }
// del {
// color: #c34719;
// .post-tag {
// color: #c34719; } }
ins {
.post-tag, p {
background-color: #e6f0a2; }
background-color: #e6f0a2; }
// .vote-notification {
// z-index: 1;
// cursor: pointer;
// display: none;
// position: absolute;
// font-family: arial;
// font-size: 14px;
// font-weight: normal;
// color: white;
// background-color: #8e0000;
// text-align: center;
// padding-bottom: 10px;
// -webkit-box-shadow: 0px 2px 4px #370000;
// -moz-box-shadow: 0px 2px 4px #370000;
// box-shadow: 0px 2px 4px #370000;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// h3 {
// background: url(../default/media/images/notification.png) repeat-x top;
// padding: 10px 10px 10px 10px;
// font-size: 13px;
// margin-bottom: 5px;
// border-top: #8e0000 1px solid;
// color: #fff;
// font-weight: normal;
// border-top-right-radius: 4px;
// border-top-left-radius: 4px;
// -moz-border-radius-topright: 4px;
// -moz-border-radius-topleft: 4px;
// -webkit-border-top-left-radius: 4px;
// -webkit-border-top-right-radius: 4px; }
// a {
// color: #fb7321;
// text-decoration: underline;
// font-weight: bold; } }
// #ground {
// width: 100%;
// clear: both;
// border-top: 1px solid #000;
// padding: 6px 0 0 0;
// background: #16160f;
// font-size: 16px;
// font-family: 'yanone kaffeesatz',sans-serif;
// p {
// margin-bottom: 0; } }
.footer-links {
color: #eee;
text-align: left;
width: 500px;
float: left;
a {
color: #e7e8a8; } }
.powered-link {
width: 500px;
float: left;
text-align: left;
a {
color: #8ebcc7; } }
.copyright {
color: #616161;
width: 450px;
float: right;
text-align: right;
a {
color: #8ebcc7; }
img.license-logo {
margin: 6px 0px 20px 10px;
float: right; } }
.notify-me {
float: left; }
span {
&.text-counter {
margin-right: 20px; }
// &.form-error {
// color: #990000;
// font-weight: normal;
// margin-left: 5px; }
}
p.form-item {
margin: 0px; }
// .deleted {
// background: #f4e7e7 none repeat scroll 0 0; }
.form-row {
line-height: 25px; }
table {
&.form-as-table {
margin-top: 5px;
ul {
list-style-type: none;
display: inline; }
li {
display: inline; }
td {
text-align: right; }
th {
text-align: left;
font-weight: normal; } }
&.ab-subscr-form, &.ab-tag-filter-form {
width: 45em; } }
.submit-row {
line-height: 30px;
padding-top: 10px;
display: block;
clear: both; }
.errors {
line-height: 20px;
color: red; }
.error {
color: darkred;
margin: 0;
font-size: 10px; }
label.retag-error {
color: darkred;
padding-left: 5px;
font-size: 10px; }
.fieldset {
border: none;
margin-top: 10px;
padding: 10px; }
// span.form-error {
// color: #990000;
// font-size: 90%;
// font-weight: normal;
// margin-left: 5px; }
.favorites-empty {
width: 32px;
height: 45px;
float: left; }
.user-info-table {
margin-bottom: 10px;
border-spacing: 0; }
.user-stats-table .narrow {
width: 660px; }
.narrow .summary h3 {
padding: 0px;
margin: 0px; }
.relativetime {
font-weight: bold;
text-decoration: none; }
// .narrow .tags {
// float: left; }
.user-action-1 {
font-weight: bold;
color: #333; }
.user-action-2 {
font-weight: bold;
color: #ccc; }
.user-action-3, .user-action-4 {
color: #333; }
.user-action-5, .user-action-6 {
color: darkred; }
.user-action-7 {
color: #333; }
.user-action-8 {
padding: 3px;
font-weight: bold;
background-color: #ccc;
color: #763333; }
.revision-summary {
background-color: #fffe9b;
padding: 2px; }
.question-title-link a {
font-weight: bold;
color: #0077cc; }
.answer-title-link a {
color: #333; }
.post-type-1 a, .post-type-3 a, .post-type-5 a {
font-weight: bold; }
.post-type-2 a, .post-type-4 a, .post-type-6 a, .post-type-8 a {
color: #333; }
.hilite, .hilite1 {
background-color: #ff0; }
.hilite2 {
background-color: #f0f; }
.hilite3 {
background-color: #0ff; }
// .gold, .badge1 {
// color: #ffcc00; }
// .silver, .badge2 {
// color: #cccccc; }
// .bronze, .badge3 {
// color: #cc9933; }
.score {
font-weight: 800;
color: #333; }
a {
&.comment {
background: #eee;
color: #993300;
padding: 5px; }
&.offensive {
color: #999; } }
.message {
h1 {
padding-top: 0px;
font-size: 15px; }
p {
margin-bottom: 0px; } }
p.space-above {
margin-top: 10px; }
.warning {
color: red; }
button::-moz-focus-inner {
padding: 0;
border: none; }
// .submit {
// cursor: pointer;
// background-color: #d4d0c8;
// height: 30px;
// border: 1px solid #777777;
// font-weight: bold;
// font-size: 120%;
// &:hover {
// text-decoration: underline; }
// &.small {
// margin-right: 5px;
// height: 20px;
// font-weight: normal;
// font-size: 12px;
// padding: 1px 5px;
// &:hover {
// text-decoration: none; } } }
.question-page a.submit {
display: -moz-inline-stack;
display: inline-block;
line-height: 30px;
padding: 0 5px;
*display: inline; }
.noscript {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
z-index: 100;
padding: 5px 0;
text-align: center;
font-family: sans-serif;
font-size: 120%;
font-weight: bold;
color: #ffffff;
background-color: #ae0000; }
.big {
font-size: 14px; }
.strong {
font-weight: bold; }
.orange {
color: #d64000;
font-weight: bold; }
.grey {
color: #808080; }
.about div {
padding: 10px 5px 10px 5px;
border-top: 1px dashed #aaaaaa; }
.highlight {
background-color: #fff8c6; }
.nomargin {
margin: 0; }
.margin-bottom {
margin-bottom: 10px; }
.margin-top {
margin-top: 10px; }
.inline-block {
display: inline-block; }
.action-status {
margin: 0;
border: none;
text-align: center;
line-height: 10px;
font-size: 12px;
padding: 0;
span {
padding: 3px 5px 3px 5px;
background-color: #fff380;
font-weight: normal;
-moz-border-radius: 5px;
-khtml-border-radius: 5px;
-webkit-border-radius: 5px; } }
.list-table td {
vertical-align: top; }
table.form-as-table {
.errorlist {
display: block;
margin: 0;
padding: 0 0 0 5px;
text-align: left;
font-size: 10px;
color: darkred; }
input {
display: inline;
margin-left: 4px; }
th {
vertical-align: bottom;
padding-bottom: 4px; } }
.form-row-vertical {
margin-top: 8px;
display: block;
label {
margin-bottom: 3px;
display: block; } }
.text-align-right {
text-align: center; }
ul.form-horizontal-rows {
list-style: none;
margin: 0;
li {
position: relative;
height: 40px; }
label {
display: inline-block; }
ul.errorlist {
list-style: none;
color: darkred;
font-size: 10px;
line-height: 10px;
position: absolute;
top: 2px;
left: 180px;
text-align: left;
margin: 0;
li {
height: 10px; } }
label {
position: absolute;
left: 0px;
bottom: 6px;
margin: 0px;
line-height: 12px;
font-size: 12px; }
li input {
position: absolute;
bottom: 0px;
left: 180px;
margin: 0px; } }
.narrow .summary {
float: left; }
.user-profile-tool-links {
font-weight: bold;
vertical-align: top; }
// ul {
// &.post-tags {
// margin-left: 3px;
// li {
// margin-top: 4px;
// margin-bottom: 3px; } }
// &.post-retag {
// margin-bottom: 0px;
// margin-left: 5px; } }
// #question-controls .tags {
// margin: 0 0 3px 0; }
// #tagselector {
// padding-bottom: 2px;
// margin-bottom: 0; }
// #related-tags {
// padding-left: 3px; }
#hideignoredtagscontrol {
margin: 5px 0 0 0;
label {
font-size: 12px;
color: #666; } }
#hideignoredtagscb {
margin: 0 2px 0 1px; }
#recaptcha_widget_div {
width: 318px;
float: left;
clear: both; }
p.signup_p {
margin: 20px 0px 0px 0px; }
.simple-subscribe-options ul {
list-style: none;
list-style-position: outside;
margin: 0; }
.wmd-preview {
a {
color: #1b79bd; }
li {
margin-bottom: 7px;
font-size: 14px; } }
// .search-result-summary {
// font-weight: bold;
// font-size: 18px;
// line-height: 22px;
// margin: 0px 0px 0px 0px;
// padding: 2px 0 0 0;
// float: left; }
.faq-rep-item {
text-align: right;
padding-right: 5px; }
.user-info-table .gravatar {
margin: 0; }
#responses {
clear: both;
line-height: 18px;
margin-bottom: 15px;
div.face {
float: left;
text-align: center;
width: 54px;
padding: 3px;
overflow: hidden; } }
.response-parent {
margin-top: 18px;
strong {
font-size: 20px; } }
.re {
min-height: 57px;
clear: both;
margin-top: 10px; }
#responses input {
float: left; }
#re_tools {
margin-bottom: 10px; }
#re_sections {
margin-bottom: 6px;
.on {
font-weight: bold; } }
.avatar-page {
ul {
list-style: none; }
li {
display: inline; } }
// .user-profile-page {
// .avatar p {
// margin-bottom: 0px; }
// .tabbar a#stats {
// margin-left: 0; }
// img.gravatar {
// margin: 2px 0 3px 0; }
// h3 {
// padding: 0;
// margin-top: -3px; } }
.userlist {
font-size: 13px; }
img.flag {
border: 1px solid #eee;
vertical-align: text-top; }
.main-page img.flag {
vertical-align: text-bottom; }
a.edit {
padding-left: 3px;
color: #145bff; }
.str {
color: #080; }
.kwd {
color: #008; }
.com {
color: #800; }
.typ {
color: #606; }
.lit {
color: #066; }
.pun {
color: #660; }
.pln {
color: #000; }
// .tag {
// color: #008; }
.atn {
color: #606; }
.atv {
color: #080; }
.dec {
color: #606; }
pre.prettyprint {
clear: both;
padding: 3px;
border: 0px solid #888; }
// @media print {
// .str {
// color: #060; }
// .kwd {
// color: #006;
// font-weight: bold; }
// .com {
// color: #600;
// font-style: italic; }
// .typ {
// color: #404;
// font-weight: bold; }
// .lit {
// color: #044; }
// .pun {
// color: #440; }
// .pln {
// color: #000; }
// .tag {
// color: #006;
// font-weight: bold; }
// .atn {
// color: #404; }
// .atv {
// color: #060; } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment