diff --git a/.gitignore b/.gitignore index 488c33550..1b9862181 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,6 @@ push*.dat # Vagrant files .vagrant + +#postgres +logfile diff --git a/.travis.yml b/.travis.yml index 3a255982b..6c95c7d8e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,10 @@ language: ruby rvm: 1.9.2 +before_install: + - "export DISPLAY=:99.0" + - "sh -e /etc/init.d/xvfb start" + before_script: - "psql -c 'create database cmu_education_test;' -U postgres >/dev/null" - cp config/amazon_s3.default.yml config/amazon_s3.yml @@ -24,9 +28,14 @@ env: notifications: email: recipients: - - todd.sedano@sv.cmu.edu - - rofaida.abdelaal@sv.cmu.edu + - emilia.torino@west.cmu.edu + - mia.manalastas@sv.cmu.edu + - ira.jain@sv.cmu.edu + - david.lee@sv.cmu.edu + - isil.demir@sv.cmu.edu + #- todd.sedano@sv.cmu.edu + #- rofaida.abdelaal@sv.cmu.edu # on_success: [always|never|change] # default: change # on_failure: [always|never|change] # default: always - on_success: change + on_success: always on_failure: always diff --git a/Gemfile b/Gemfile index 3ed1d5117..65de57217 100644 --- a/Gemfile +++ b/Gemfile @@ -93,6 +93,9 @@ group :development, :test do # gem 'autotest-growl' if RUBY_PLATFORM =~ /darwin/ # gem 'test-unit' #, '1.2.3' #Downgrading so that autotest, rspec will work + +# Team Turing: add this for static code analysis + gem 'rails_best_practices' end diff --git a/Gemfile.lock b/Gemfile.lock index 345f150f3..c50335267 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -52,6 +52,7 @@ GEM addressable (2.3.4) archive-tar-minitar (0.5.2) arel (2.0.10) + awesome_print (1.2.0) aws-sdk (1.8.5) json (~> 1.4) nokogiri (>= 1.4.4) @@ -74,6 +75,9 @@ GEM mime-types (~> 1.16) orm_adapter (~> 0.0.5) cocaine (0.2.0) + code_analyzer (0.4.3) + sexp_processor + colored (1.2) columnize (0.3.6) daemons (1.1.9) delayed_job (2.1.4) @@ -182,6 +186,15 @@ GEM activesupport (= 3.0.20) bundler (~> 1.0) railties (= 3.0.20) + rails_best_practices (1.14.4) + activesupport + awesome_print + code_analyzer (>= 0.4.3) + colored + erubis + i18n + require_all + ruby-progressbar railties (3.0.20) actionpack (= 3.0.20) activesupport (= 3.0.20) @@ -192,6 +205,7 @@ GEM rdoc (3.12.2) json (~> 1.4) recaptcha (0.3.5) + require_all (1.3.1) rest-client (1.6.7) mime-types (>= 1.16) rmagick (2.13.2) @@ -221,6 +235,7 @@ GEM ruby-openid (2.2.3) ruby-openid-apps-discovery (1.2.0) ruby-openid (>= 2.1.7) + ruby-progressbar (1.2.0) ruby_core_source (0.1.5) archive-tar-minitar (>= 0.5.2) rubyzip (0.9.9) @@ -231,6 +246,7 @@ GEM rubyzip websocket (~> 1.0.4) sequel (3.20.0) + sexp_processor (4.4.0) shoulda (3.4.0) shoulda-context (~> 1.0, >= 1.0.1) shoulda-matchers (~> 1.0, >= 1.4.1) @@ -299,6 +315,7 @@ DEPENDENCIES pg rack-google_analytics rails (= 3.0.20) + rails_best_practices rake (= 0.8.7) rdoc recaptcha diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index 7a02eafd9..cbef17328 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -16,6 +16,7 @@ def index end def grading_queue_for_course + @course = Course.find(params[:course_id]) if @course.grading_rule.nil? @@ -26,12 +27,39 @@ def grading_queue_for_course flash.now[:error] = I18n.t(:default_grading_rule_for_course) end - if (current_user.is_admin? || @course.faculty.include?(current_user)) + # Retrieving assignments names for the course to be able to filter by deliverable name later on. + @assignments = Assignment.where(:course_id => @course.id).all.sort_by(&:task_number) + + if current_user.is_admin? + @deliverables = Deliverable.where(:course_id => @course.id).all + + elsif @course.faculty.include?(current_user) + + # Get all deliverables for this team/student + @deliverables = Deliverable.get_deliverables(params[:course_id], current_user.id, {:is_my_team => 1}) + + # Select all that are ungraded or drafted + @deliverables = @deliverables.select { |deliverable| deliverable.get_grade_status == :ungraded || + deliverable.get_grade_status == :drafted } + + # Sort by task number + @deliverables = @deliverables.sort { |a, b| a.assignment.task_number <=> b.assignment.task_number } + else has_permissions_or_redirect(:admin, root_path) end + + end + + # Beg Team Turing + def get_deliverables + @deliverables = filter_deliverables(params[:course_id], params[:filter_options]) + respond_to do |format| + format.js + end end + # End Team Turing #temporary for mel def team_index_for_course @@ -96,8 +124,13 @@ def show end respond_to do |format| - format.html # show.html.erb - format.xml { render :xml => @deliverable } + if (current_user.is_admin? || @course.faculty.include?(current_user)) + format.html { render layout: false } + else + format.html # show.html.erb + format.xml { render :xml => @deliverable } + end + end end @@ -279,20 +312,32 @@ def update_feedback is_student_visible=false end - flash[:error] = @deliverable.update_grade(params, is_student_visible) + # Beg chg Turing Ira + flash[:error] = @deliverable.update_grade(params, is_student_visible, current_user.id) + # End chg Turing Ira + # Begin Add Team Turing + other_email = nil + if params[:send_copy_to_myself] == "1" + other_email = current_user.email + end + # End Add Team Turing if @deliverable.update_feedback_and_notes(params[:deliverable]) - if is_student_visible==true - @deliverable.send_deliverable_feedback_email(url_for(@deliverable)) + if is_student_visible == true + @deliverable.send_deliverable_feedback_email(url_for(@deliverable), other_email) end else flash[:error] << 'Unable to save feedback' end + #Obtain current selected filters to update the queue accordingly + @selected_filter_options = JSON.parse(params[:deliverable][:current_filter_options]) + @deliverables = filter_deliverables(@deliverable.course_id, @selected_filter_options) + respond_to do |format| if flash[:error].blank? flash[:error] = nil flash[:notice] = 'Feedback successfully saved.' - format.html {redirect_to(course_deliverables_path(@deliverable.course))} + format.js else flash[:error] = flash[:error].join("
") format.html { redirect_to(@deliverable) } @@ -313,4 +358,53 @@ def get_assignments_for_student end end + + # Beg Team Turing + private + def filter_deliverables (course_id, filter_options) + @course = Course.find_by_id(course_id) + + # Prepare filter options according to what users select on the page + options = {} + if filter_options[:search_box] != "" + options[:search_string] = filter_options[:search_box] + end + + if filter_options['is_my_teams'] == 'yes' + options[:is_my_team] = 1 + else + options[:is_my_team] = 0 + end + + + # Filter in the model by course, professor, my teams and search input + @deliverables = [] + @faculty_deliverables = Deliverable.get_deliverables(course_id, current_user.id, options) + + # Filter once again according to the selected grading options. If no filter options are selected, + # display every deliverable + @selected_options = [] + filter_options.collect do |filter_option| + @selected_options << filter_option[0].to_sym if filter_option[1] == "1" + end + if @selected_options.size == 0 + @deliverables = @faculty_deliverables + else + @selected_options.each do |option| + @deliverables.concat(@faculty_deliverables.select { |deliverable| deliverable.get_grade_status == option }) + end + end + + # Filter by assignment names in drop down menu + unless filter_options["assignment_id"] == '-1' + @deliverables = @deliverables.select{ |deliverable| deliverable.assignment_id == filter_options[ + "assignment_id"].to_i } + end + + # Sort by task number, ascending + @deliverables = @deliverables.sort { |a, b| a.assignment.task_number <=> b.assignment.task_number } + end + # End Team Turing + end + diff --git a/app/controllers/grades_controller.rb b/app/controllers/grades_controller.rb index 3d6e8c2bc..17f5a5867 100644 --- a/app/controllers/grades_controller.rb +++ b/app/controllers/grades_controller.rb @@ -74,19 +74,36 @@ def student_deliverables_and_grades_for_course def post_drafted_and_send #and send email grades = params["grades"] - Grade.mail_drafted_grade(@course.id, request.host_with_port ) + # Begin Add Team Turing + other_email = nil + if params[:send_copy_to_myself] == "1" + other_email = current_user.email + end + Grade.mail_drafted_grade(@course.id, request.host_with_port, other_email) + # End Add Team Turing + #Grade.mail_drafted_grade(@course.id, request.host_with_port ) # Delete Team Turing render :json => ({"message"=>"true"}) end def save grades = params["grades"] - Grade.give_grades(grades) + #Beg add Turing + #Grade.give_grades(grades) + Grade.give_grades(grades,current_user.id) + # End add Turing render :json => ({"message"=>"true"}) end def send_final_grade grades = params["grades"] - Grade.mail_final_grade(@course.id, request.host_with_port) + # Begin Add Team Turing + other_email = nil + if params[:send_copy_to_myself] == "1" + other_email = current_user.email + end + Grade.mail_final_grade(@course.id, request.host_with_port, other_email) + # End Add Team Turing + #Grade.mail_final_grade(@course.id, request.host_with_port) # Delete Team Turing render :json => ({"message"=>"true"}) end diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index d209a7b1b..9fa87988c 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -57,6 +57,93 @@ class Deliverable < ActiveRecord::Base after_save :inaccurate_course_and_assignment_check + # Begin Team Turing + def self.get_deliverables(course_id, faculty_id, options) + + sql_template = "SELECT d.id FROM deliverables d LEFT JOIN teams t ON d.team_id = t.id LEFT JOIN team_assignments ta ON t.id = ta.team_id LEFT JOIN users u1 ON d.creator_id = u1.id LEFT JOIN users u2 ON ta.user_id = u2.id" + + where_clause_course = " WHERE d.course_id = ?" + + where_clause_team_deliverable = " AND d.team_id IS NOT NULL AND t.primary_faculty_id = ?" + + where_clause_individual_deliverable = " AND d.team_id IS NULL AND d.creator_id IN (SELECT inner_ta.user_id FROM teams inner_t, team_assignments inner_ta WHERE inner_t.id = inner_ta.team_id AND inner_t.primary_faculty_id = ?)" + + where_clause_search = " AND (u1.first_name ILIKE ? OR u1.last_name ILIKE ? OR u1.human_name ILIKE ? OR u1.email ILIKE ? OR u1.webiso_account ILIKE ? OR u2.first_name ILIKE ? OR u2.last_name ILIKE ? OR u2.human_name ILIKE ? OR u2.email ILIKE ? OR u2.webiso_account ILIKE ? OR t.name ILIKE ?)" + + queue = [] + + # 1. Are there teams in this course? If there are, and the "filter by teams is on", filter by teams + # 2. If there are no teams in the course, and if this deliverable is an individual deliverable, + # show deliverables for individuals who are in the faculty's teams only. + # 3. Otherwise, show every deliverable + + course_has_teams = Team.where(:course_id => course_id).any? + + has_search_string = !options[:search_string].nil? + selected_my_team = (options[:is_my_team] == 1) + + if has_search_string + search_string = options[:search_string] + end + + if !course_has_teams + + if has_search_string + sql = sql_template + where_clause_course + where_clause_search + deliverable_ids = Deliverable.find_by_sql([sql, course_id, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string]).uniq + else + sql = sql_template + where_clause_course + deliverable_ids = Deliverable.find_by_sql([sql, course_id]).uniq + end + + elsif selected_my_team + + if has_search_string + sql = sql_template + where_clause_course + where_clause_team_deliverable + where_clause_search + team_deliverable_ids = Deliverable.find_by_sql([sql, course_id, faculty_id, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string]).uniq + + sql = sql_template + where_clause_course + where_clause_individual_deliverable + where_clause_search + individual_deliverable_ids = Deliverable.find_by_sql([sql, course_id, faculty_id, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string]).uniq + else + sql = sql_template + where_clause_course + where_clause_team_deliverable + team_deliverable_ids = Deliverable.find_by_sql([sql, course_id, faculty_id]).uniq + + sql = sql_template + where_clause_course + where_clause_individual_deliverable + individual_deliverable_ids = Deliverable.find_by_sql([sql, course_id, faculty_id]).uniq + end + + deliverable_ids = [] + + team_deliverable_ids.each do |team_deliverable_id| + deliverable_ids << team_deliverable_id + end + + individual_deliverable_ids.each do |individual_deliverable_id| + deliverable_ids << individual_deliverable_id + end + + else + + if has_search_string + sql = sql_template + where_clause_course + where_clause_search + deliverable_ids = Deliverable.find_by_sql([sql, course_id, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string, search_string]).uniq + else + sql = sql_template + where_clause_course + deliverable_ids = Deliverable.find_by_sql([sql, course_id]).uniq + end + + end + + deliverables = [] + + deliverable_ids.each do |deliverable_id| + deliverables << Deliverable.find(deliverable_id) + end + + return deliverables + + end + # End Team Turing # To get the owner of the deliverable def unique_course_task_owner? @@ -167,7 +254,8 @@ def send_deliverable_upload_email(url) end # To send the feedback to the each student along with the score received respectively. - def send_feedback_to_student(member_id, member_email, url) + #def send_feedback_to_student(member_id, member_email, url) # Delete Team Turing + def send_feedback_to_student(member_id, member_email, url, other_email=nil) # Add Team Turing feedback = "Feedback has been submitted for " if !self.assignment.task_number.nil? and self.assignment.task_number != "" and !self.assignment.name.nil? and self.assignment.name !="" feedback += "#{self.assignment.name} (#{self.assignment.task_number}) of " @@ -189,8 +277,8 @@ def send_feedback_to_student(member_id, member_email, url) feedback += self.assignment.formatted_maximum_score feedback += "\n" end - options = {:to => member_email, + :cc => other_email, # Added Team Turing :subject => "Feedback for " + self.course.name, :message => feedback, :url_label => "View this deliverable", @@ -199,16 +287,31 @@ def send_feedback_to_student(member_id, member_email, url) GenericMailer.email(options).deliver end + # Begin Delete Team Turing + ## To send the feedback in the email back to the students. + #def send_deliverable_feedback_email(url) + # if self.is_team_deliverable? + # self.team.members.each do |member| + # send_feedback_to_student(member.id, member.email, url) + # end + # else + # send_feedback_to_student(self.creator_id, self.creator.email, url) + # end + #end + # End Delete Team Turing + + # Begin Add Team Turing # To send the feedback in the email back to the students. - def send_deliverable_feedback_email(url) + def send_deliverable_feedback_email(url, other_email=nil) if self.is_team_deliverable? self.team.members.each do |member| - send_feedback_to_student(member.id, member.email, url) + send_feedback_to_student(member.id, member.email, url, other_email) end else - send_feedback_to_student(self.creator_id, self.creator.email, url) + send_feedback_to_student(self.creator_id, self.creator.email, url, other_email) end end + # End Add Team Turing # To check if the current user can change/edit the deliverable def editable?(current_user) @@ -246,7 +349,7 @@ def is_visible_to_student? end # To update the feedback and the private notes by faculty - def update_feedback_and_notes (params) + def update_feedback_and_notes(params) self.feedback_comment = params[:feedback_comment] self.private_note = params[:private_note] unless params[:feedback].blank? @@ -259,18 +362,28 @@ def update_feedback_and_notes (params) end # To update the grade received by the student - def update_grade (params, is_student_visible) + # Beg chg Turing Ira + # def update_grade (params, is_student_visible + def update_grade(params, is_student_visible, current_user_id) + # End chg Turing Ira error_msg = [] if self.assignment.is_team_deliverable? self.team.members.each do |user| score = params[:"#{user.id}"] - if Grade.give_grade(self.course_id, self.assignment.id, user.id, score, is_student_visible)==false + # Beg chg Turing Ira + #if Grade.give_grade(self.course_id, self.assignment.id, user.id, score, is_student_visible)==false + if Grade.give_grade(self.course_id, self.assignment.id, user.id, score, is_student_visible, current_user_id)==false + # End chg Turing Ira error_msg << "Grade given to " + user.human_name + " is invalid!" end end else score = params[:"#{self.creator_id}"] - unless Grade.give_grade(self.course_id, self.assignment.id, self.creator_id, score, is_student_visible) + # Beg chg Turing Ira + #unless Grade.give_grade(self.course_id, self.assignment.id, self.creator_id, score, is_student_visible) + unless Grade.give_grade(self.course_id, self.assignment.id, self.creator_id, score, is_student_visible, current_user_id) + # End chg Turing Ira + error_msg << "Grade given to " + self.creator.human_name + " is invalid!" end end @@ -299,7 +412,7 @@ def get_grade_status if self.is_team_deliverable? return :ungraded if self.team.nil? self.team.members.each do |member| - status = self.get_status_for_every_individual (member.id) + status = self.get_status_for_every_individual(member.id) if status != :graded return status end @@ -312,7 +425,7 @@ def get_grade_status #Todo: rename get_status_for_every_individual to status_for_every_individual # To get the status of deliverable by student for is it graded or not. - def get_status_for_every_individual (student_id) + def get_status_for_every_individual(student_id) return :unknonwn if self.assignment.nil? #(guard for old deliverables) grade = Grade.get_grade(self.course.id, self.assignment.id, student_id) if grade.nil? @@ -334,4 +447,26 @@ def inaccurate_course_and_assignment_check end end end + + #Beg add Turing Ira + + def get_graded_by + if self.is_team_deliverable? + return self.last_graded_by_for_every_individual(self.team.members[0].id) + else + return self.last_graded_by_for_every_individual(self.creator_id) + end + end + + def last_graded_by_for_every_individual(student_id) + return :unknonwn if self.assignment.nil? #(guard for old deliverables) + grade = Grade.get_grade(self.course.id, self.assignment.id, student_id) + if grade.nil? + return nil + else + return User.find_by_id(grade.last_graded_by) unless grade.last_graded_by.nil? + end + end + + #End add Turing Ira end diff --git a/app/models/grade.rb b/app/models/grade.rb index 68a09e26c..9d839ccdf 100644 --- a/app/models/grade.rb +++ b/app/models/grade.rb @@ -76,7 +76,11 @@ def self.get_final_grade(course_id, student_id) # To returns a specific grade for one assignment of given course_id, student_id and assignment_id. This function is # useful for controller to test whether the score is exists or not. - def self.give_grade(course_id, assignment_id, student_id, score, is_student_visible=nil) + + # Beg Chg Turing Ira + #def self.give_grade(course_id, assignment_id, student_id, score, is_student_visible=nil) + def self.give_grade(course_id, assignment_id, student_id, score, is_student_visible = nil, last_graded_by = nil) + # End Chg Turing Ira if assignment_id > 0 if Assignment.find(assignment_id).nil? return false @@ -89,8 +93,12 @@ def self.give_grade(course_id, assignment_id, student_id, score, is_student_visi if course.registered_students_or_on_teams.include?(student) grade = Grade.get_grade(course_id, assignment_id, student_id) if grade.nil? + # Beg Chg Turing Ira + # grade = Grade.new({:course_id => course_id, :assignment_id => assignment_id, :student_id => student_id, + # :score => score, :is_student_visible => is_student_visible}) grade = Grade.new({:course_id => course_id, :assignment_id => assignment_id, :student_id => student_id, - :score => score, :is_student_visible => is_student_visible}) + :score => score, :is_student_visible => is_student_visible, :last_graded_by => last_graded_by}) + # End Chg Turing Ira end if course.grading_rule.validate_score(score) @@ -98,6 +106,13 @@ def self.give_grade(course_id, assignment_id, student_id, score, is_student_visi unless is_student_visible.nil? grade.is_student_visible = is_student_visible end + # Beg Add Turing Ira + unless last_graded_by.nil? + if grade.last_graded_by.nil? + grade.last_graded_by = last_graded_by + end + end + # End Add Turing Ira grading_result = grade.save else grading_result = false @@ -107,33 +122,37 @@ def self.give_grade(course_id, assignment_id, student_id, score, is_student_visi end # To assign grades for to multiple students. - def self.give_grades(grades) + # Beg Chg Turing + #def self.give_grades(grades) + def self.give_grades(grades,last_graded_by= nil) + #End Chg Turing grades.each do |grade_entry| # FIXME: error handling for update failure - self.give_grade(grade_entry[:course_id], grade_entry[:assignment_id], grade_entry[:student_id], grade_entry[:score], grade_entry[:is_student_visible]) + # self.give_grade(grade_entry[:course_id], grade_entry[:assignment_id], grade_entry[:student_id], grade_entry[:score], grade_entry[:is_student_visible]) + self.give_grade(grade_entry[:course_id], grade_entry[:assignment_id], grade_entry[:student_id], grade_entry[:score], grade_entry[:is_student_visible],last_graded_by) end end # To notify students about the grade that were drafted by professor till now. - def self.mail_drafted_grade(course_id, hostname) + def self.mail_drafted_grade(course_id, hostname, other_email=nil) draft_grades = Grade.find_all_by_is_student_visible_and_course_id(false, course_id) draft_grades.each do |grade| grade.is_student_visible = true grade.save unless (grade.score.blank?) - grade.send_feedback_to_student(hostname) + grade.send_feedback_to_student(hostname, other_email) end end end # To send the final grade mail to students - def self.mail_final_grade(course_id, hostname) + def self.mail_final_grade(course_id, hostname, other_email=nil) final_grades = Grade.find_all_by_course_id_and_assignment_id(course_id, -1) final_grades.each do |grade| unless (grade.score.blank?) grade.is_student_visible = true grade.save - grade.send_feedback_to_student(hostname) + grade.send_feedback_to_student(hostname, other_email) end end end @@ -228,7 +247,8 @@ def make_feedback_for_final_grade end # To send the feedback to the student. - def send_feedback_to_student(hostname) + #def send_feedback_to_student(hostname) # Delete Team Turing + def send_feedback_to_student(hostname, other_email=nil) # Add Team Turing if assignment_id > 0 feedback = make_feedback_for_one_assignment else @@ -236,6 +256,7 @@ def send_feedback_to_student(hostname) end url = hostname + "/courses/#{self.course.id}/student_grades" options = {:to => self.student.email, + :cc => other_email, # Added Team Turing :subject => "Grade for " + self.course.name, :message => feedback, :url_label => "Click here to view grade", diff --git a/app/views/deliverables/_deliverable_listing_professor.html.erb b/app/views/deliverables/_deliverable_listing_professor.html.erb index 12f702951..808f549a8 100644 --- a/app/views/deliverables/_deliverable_listing_professor.html.erb +++ b/app/views/deliverables/_deliverable_listing_professor.html.erb @@ -1,75 +1,82 @@ + + +
<% reset_cycle %> <% customised_name= nomenclature_assignment_or_deliverable %> - - - - <% unless skip_course_column %> - - <% end %> - <% if customised_name=="Deliverable" %> - - <% end %> - - - - - - - - - - <% deliverables.each do |deliverable| %> - - <% unless skip_course_column %> - <% if deliverable.course %> - - <% else %> - - <% end %> - <% end %> - - <% if customised_name=="Deliverable" %> - <% if deliverable.assignment.nil? %> - - <% else %> - - <% end %> - <% end %> - - <% latest_attachment = deliverable.attachment_versions.first %> - <% unless latest_attachment.attachment_file_name.nil? %> - - <% else %> - - <% end %> - - +<% if deliverables.empty? %> +

Hurray, nothing to do here!







+<% end %> +<% deliverables.each do |deliverable| %> +
+
+
+
+ <%= image_tag("/images/show_deliverable_detail.png", :size => '28x28', :style => 'margin-left: -6px', :alt => 'View details', :id => 'toggle_img') %> +
- <% if deliverable.get_grade_status==:graded %> -
- <%else%> - - <%end%> +
+ <% latest_version = deliverable.attachment_versions.first %> +

+ Task <%= deliverable.assignment.task_number %>: + + <%= (deliverable.is_team_deliverable ? 'Team ' : '') %><%= deliverable.owner_name %> + +

+

+ <%= deliverable.assignment.name %> + <% unless latest_version.attachment_file_name.nil? %> + <%= link_to image_tag("/images/download_deliverable.png", :size => '16x16', :alt => 'Download'), latest_version.attachment.url %> + <% end %> +

+ +
- - - <% end %> -
CourseTask NumberOwnerLatest <%=nomenclature_assignment_or_deliverable%>GradedActions
<%= h deliverable.course.name %>  <%= h deliverable.assignment.task_number %><%= "Team " if deliverable.is_team_deliverable? %><%= deliverable.owner_name %><%= deliverable.assignment_name%> (<%= link_to "download", latest_attachment.attachment.url %>)<%= deliverable.assignment_name %> - - <% if deliverable.get_grade_status==:graded %> - Yes - <% elsif deliverable.get_grade_status==:drafted %> - No (Draft) - <% elsif deliverable.get_grade_status==:ungraded %> - No - <% end %> - <%= link_to 'Review Grade', deliverable %><%= link_to 'Give Grade', deliverable %>
+
+ <% if deliverable.get_grade_status == :graded %> + <%= image_tag("/images/deliverables_graded.png", :alt => 'Graded', :size => '54x54', :class => 'pull-right') %> + <% elsif deliverable.get_grade_status == :drafted %> + <%= image_tag("/images/deliverables_drafted.png", :alt => 'Drafted', :size => '54x54', :class => 'pull-right') %> + <% elsif deliverable.get_grade_status == :ungraded %> + <%= image_tag("/images/deliverables_ungraded.png", :alt => 'Ungraded', :size => '54x54', :class => 'pull-right') %> + <% end %> +
+
+ + + +<% end %> + \ No newline at end of file diff --git a/app/views/deliverables/_edit_student_feedback.html.erb b/app/views/deliverables/_edit_student_feedback.html.erb old mode 100644 new mode 100755 index 7d6fdd277..f79008557 --- a/app/views/deliverables/_edit_student_feedback.html.erb +++ b/app/views/deliverables/_edit_student_feedback.html.erb @@ -19,101 +19,146 @@ }); }); }); - - -<% content_for :title, "Provide Feedback" %> - -

<%= @course.display_for_course_page %>

-<%= render :partial=>"layouts/grade_book_sub_menu" %> - -<% if @deliverable.is_team_deliverable? %> -

Grade Team <%= nomenclature_assignment_or_deliverable %>: <%= @deliverable.assignment.name %>

-<% else %> -

Grade Individual <%= nomenclature_assignment_or_deliverable %>: <%= @deliverable.assignment.name %>

-<% end %> + var update_filter_options = function() { + var current_filter_options = { + "ungraded": ($('#filter_options_ungraded').is(':checked') ? '1' : ''), + "graded" : ($('#filter_options_graded').is(':checked') ? '1' : ''), + "drafted": ($('#filter_options_drafted').is(':checked') ? '1' : ''), + "is_my_teams" : ($('#filter_options_is_my_teams_yes').is(':checked') ? 'yes' : ''), + "assignment_id" : $("#filter_options_assignment_id").val() + } + $("#deliverable_current_filter_options").val(''); + $("#deliverable_current_filter_options").val(JSON.stringify(current_filter_options)); + }; + + // Team Turing Begin + var toggle_slide = function() { + $('.deliverable_detail').slideUp(); + }; + + // Team Turing End + -<%= form_for @deliverable, :html => {:multipart => true}, :url => {:action => :update_feedback, :id => @deliverable} do |f| %> - <%# render 'shared/error_messages', object: f.object %> -
- <% if grade_type_points_or_weights == "Percentage" %> -

- <%= "Weight: #{@deliverable.assignment.weight}%" %> -

- <% end %> -

- <% if @deliverable.current_attachment.blank? %> - Deliverable: None - <% else %> - Deliverable: <%= link_to @deliverable.current_attachment.attachment_file_name, @deliverable.current_attachment.attachment.url %> - <% end %> -

-

- <%= f.label :feedback, "Feedback file to upload" %> - <%= f.file_field :feedback %> -

-

- <%= f.label :feedback_comment, "Feedback Comments" %> - (<%= link_to 'View History and Feedback', @deliverable %>) -
- <%= f.text_area :feedback_comment, :size => "70x10" %> -

+ +
+
+
+
+

Grades

+
+ + + <%= form_for @deliverable, :remote => true, :html => {:multipart => true}, :url => {:action => :update_feedback, :id => @deliverable} do |f| %> + +
+ +
+
+ <% if grade_type_points_or_weights == "Percentage" %> +

+ <%= "Weight: #{@deliverable.assignment.weight}%" %> +

+ <% end %> +
+
+ +
+
+

+ <% if @deliverable.is_team_deliverable? %> + Team Score: <%= text_field_tag "team_grade", '', :size => 4, :onchange => "apply_team_grade_to_individuals();", :title => "The 'team score' is not saved in the database. This is a convenience so that you can enter the team grade once, and it is immediately applied to each member of the team. You can then set each individual's grade" %> / <%= display_maximum_score %> + <% end %> +

+
+
+ <% graded_by = @deliverable.get_graded_by %> +

Graded by: + <% unless graded_by.nil? %> + <%= link_to graded_by.human_name, person_path(graded_by.twiki_name), :target=> '_blank'%> + <% end %> +

+
+
- <% if @deliverable.get_grade_status == :drafted %> -
- This is draft feedback -
- <% end %> - - <% if @deliverable.is_team_deliverable? %> - Team Score: <%= text_field_tag "team_grade", '', :size => 4, :onchange => "apply_team_grade_to_individuals();", :title => "The 'team score' is not saved in the database. This is a convenience so that you can enter the team grade once, and it is immediately applied to each member of the team. You can then set each individual's grade" %> / <%= display_maximum_score %> - <%# submit_tag 'Apply grade to everyone', :type => 'button', :id => "apply_team_grade" %> - - <% end %> +
-
- <% if @deliverable.is_team_deliverable? %> + <% if @deliverable.is_team_deliverable? %> <% for member in @deliverable.team.members %> - <% grade_obj = Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, member.id)%> - <%= render :partial => "fetch_picture_and_grade", :locals => {:grade_obj => grade_obj, :member => member, :deliverable_type => "team"} %> + <% grade_obj = Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, member.id)%> + <%= render :partial => "fetch_picture_and_grade", :locals => {:grade_obj => grade_obj, :member => member, :deliverable_type => "team"} %> <% end %> - <% else %> - <% grade_obj = Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, @deliverable.creator_id)%> - <%= render :partial => "fetch_picture_and_grade", :locals => {:grade_obj => grade_obj, :member => @deliverable.creator, :deliverable_type => "individual"} %> - <% end %> -
- - -
- -
- <%= professor_image %> - Only faculty can see this information - -

- Professor's Notes -

- -

- <%= f.text_area :private_note, :size => "90x10" %> -

-
- -


- - - + <% else %> + <% grade_obj = Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, @deliverable.creator_id)%> + <%= render :partial => "fetch_picture_and_grade", :locals => {:grade_obj => grade_obj, :member => @deliverable.creator, :deliverable_type => "individual"} %> + <% end %> -

-

- <%= f.submit "Save and Email" , :name=>"submit"%> - <%= f.submit "Save as Draft" , :name=>"draft" %> - <%= link_to "Back to Pending List", course_deliverables_path(@deliverable.course) %> -
-

- <% end %> +
+ + + +
+ +
+
+

Feedback

+
+
+ + <% if @deliverable.get_grade_status == :drafted %> +
+
+
+ This is a draft feedback +
+
+
+ <% end %> - -
-
+
+
+

+ <%= f.label :feedback, "Upload feedback file" %> + <%= f.file_field :feedback %> +

+
+
+
+
+
+ <%= f.label :feedback_comment, "Feedback Comments" %> + <%= link_to 'View History and Feedback', @deliverable %> +
+ <%= f.text_area :feedback_comment, :size => "85x10" %> +
+
+
+
+
+
+

<%= professor_image %> Professor's Notes + Only faculty can see this information

+

+ <%= f.text_area :private_note, :size => "80x10" %> +

+
+
+
+ +
+
+ <%= f.submit "Save as Draft", :name => "draft", :class => "btn btn-default", :onclick => "update_filter_options();" %> +
+
+
+
+
+ <%= f.submit "Finalize and Email", :name => "submit", :class => "btn btn-primary btn-lg", :style => "color: white; font-size: 14px;", :onclick => "toggle_slide(); update_filter_options();" %> + <%= check_box_tag(:send_copy_to_myself, value ="1", checked=false) %> + <%= label_tag(:send_copy_to_myself, "Send a copy to myself") %> +
+
+ <%= f.hidden_field :current_filter_options, { value: '' } %> + <% end %> +
diff --git a/app/views/deliverables/_fetch_picture_and_grade.html.erb b/app/views/deliverables/_fetch_picture_and_grade.html.erb index 418147373..1de559407 100644 --- a/app/views/deliverables/_fetch_picture_and_grade.html.erb +++ b/app/views/deliverables/_fetch_picture_and_grade.html.erb @@ -1,20 +1,15 @@ - -
- -
- <%= fields_for :grade do |grade| %> - Grade <%= grade.text_field :_for_student ,:name=>member.id,:value => ((grade_obj.nil?)?"":grade_obj.score),:size=> "3", :tabindex=>member.id%> - <%# if deliverable_type == "individual" %> - - /<%= display_maximum_score %> - - <%# end %> - <% end %> -
-
- - <%= image_tag(member.image_uri, :border => 0, :alt => member.human_name+" image") %> -
-
<%= member.human_name %>
- +
+
+ + <%= image_tag(member.image_uri, :border => 0, :alt => member.human_name+" image", :style => "width: 175px") %> + +
+

<%= member.human_name %>

+

+ <%= fields_for :grade do |grade| %> + <%= grade.text_field :_for_student ,:name => member.id,:value => ((grade_obj.nil?)? "" : grade_obj.score), :size=> "3", :tabindex => member.id %> / <%= display_maximum_score %> + <% end %> +

+
+
diff --git a/app/views/deliverables/_view_feedback_by_professor.html.erb b/app/views/deliverables/_view_feedback_by_professor.html.erb index 68d5839ab..3c489d879 100644 --- a/app/views/deliverables/_view_feedback_by_professor.html.erb +++ b/app/views/deliverables/_view_feedback_by_professor.html.erb @@ -12,6 +12,14 @@ <% grade_obj = Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, current_user.id)%> <% if grade_obj.try(:is_student_visible) || false %>

Score received: <%= Grade.get_grade(@deliverable.course.id, @deliverable.assignment_id, current_user.id).try(:score) %>

+ +

<% graded_by = @deliverable.get_graded_by %> + Graded by : + <% unless graded_by.nil? %> + <%= graded_by.human_name %> + <% end %> +

+ <% end %> Comments:
diff --git a/app/views/deliverables/filter_deliverables.js.erb b/app/views/deliverables/filter_deliverables.js.erb new file mode 100644 index 000000000..e56d06b71 --- /dev/null +++ b/app/views/deliverables/filter_deliverables.js.erb @@ -0,0 +1,2 @@ +$("#grading_queue").detach(); +$("#deliverables").append($("<%= escape_javascript(render partial: 'deliverable_listing_professor', :locals => {:deliverables => @deliverables, :skip_course_column => true}) %>")) \ No newline at end of file diff --git a/app/views/deliverables/get_deliverables.js.erb b/app/views/deliverables/get_deliverables.js.erb new file mode 100644 index 000000000..e56d06b71 --- /dev/null +++ b/app/views/deliverables/get_deliverables.js.erb @@ -0,0 +1,2 @@ +$("#grading_queue").detach(); +$("#deliverables").append($("<%= escape_javascript(render partial: 'deliverable_listing_professor', :locals => {:deliverables => @deliverables, :skip_course_column => true}) %>")) \ No newline at end of file diff --git a/app/views/deliverables/grading_queue_for_course.html.erb b/app/views/deliverables/grading_queue_for_course.html.erb index fd14e8797..38ff129e7 100644 --- a/app/views/deliverables/grading_queue_for_course.html.erb +++ b/app/views/deliverables/grading_queue_for_course.html.erb @@ -1,95 +1,167 @@

<%= @course.display_for_course_page %>

<%= render :partial=>"layouts/grade_book_sub_menu" %> -

Submitted <%= nomenclature_assignment_or_deliverable%>s

-
- <%= image_tag("/images/professor.jpg", :size => "50x50", :border => "0", :alt => "Only faculty can see this information", :title => "Faculty Role") %> - Note: we will be improving this screen during the Spring 2013 semester by integrating in new student code. -
+
+ + - - - -

Search

- - -
- - <%= image_tag("/images/tablesorter/cross.png", :width => "16", :height => "16", :id => "filterClearOne", :title => 'Click to clear filter.', :alt => 'Clear Filter Image') %>
- Search by: - - -

- Filter by <%= nomenclature_assignment_or_deliverable %> status: -     -     -
+ }); + + var filter_graded = function() { + $('#filter_options_graded').prop('checked', !$('#filter_options_graded').is(':checked')); // if checked, uncheck it and vice versa + $('#filter_options_new').submit(); + }; + var filter_ungraded = function() { + $('#filter_options_ungraded').prop('checked', !$('#filter_options_ungraded').is(':checked')); // if checked, uncheck it and vice versa + $('#filter_options_new').submit(); + }; + var filter_drafted = function() { + $('#filter_options_drafted').prop('checked', !$('#filter_options_drafted').is(':checked')); // if checked, uncheck it and vice versa + $('#filter_options_new').submit(); + }; + var filter_by_my_teams = function() { + $('#filter_options_is_my_teams_yes').prop('checked', !$('#filter_options_is_my_teams_yes').is(':checked')); + $('#filter_options_new').submit(); + }; + + var search_deliverable = function() { + $('#filter_options_new').submit() + } + + $('#search_box').keyup(function(){ + console.log('Search'); + $('#filter_options_new').submit(); + }); + + + + + +
+ + + + + <%= form_for @filter_options, :as => :filter_options, :url => {:action => "get_deliverables", :id => params[:id]}, :remote => true do |f| %> + + +
+ <%= f.text_field :search_box, { :id => "search_box", :class => "form-control", :placeholder => "Search for student, team, Andrew ID..." } %>
+ + +
+ +
+ +
+ +
+ + + + + <%= f.hidden_field :assignment_id, { value: '-1' } %> + +
+ + +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ <% end %> + + +
+ +
+ + +
+ <%= render :partial => "deliverable_listing_professor", :locals => {:deliverables => @deliverables, :skip_course_column => true} %> +
- <%= render :partial => "deliverable_listing_professor", :locals => {:deliverables => @deliverables, :skip_course_column => true} %> -
+
diff --git a/app/views/deliverables/show.html.erb b/app/views/deliverables/show.html.erb old mode 100644 new mode 100755 index 539da114c..49d1264d7 --- a/app/views/deliverables/show.html.erb +++ b/app/views/deliverables/show.html.erb @@ -1,73 +1,104 @@ -<% if @deliverable.course %> - <% title = "#{ nomenclature_assignment_or_deliverable } for " + @deliverable.course.name + " (" + @deliverable.assignment_name + ")" %> -<% else %> - <% title = "Deliverable for " + "(missing) course" + " (" + @deliverable.assignment_name + ")" %> -<% end %> -<% content_for :title, title %> -

<%= title %>

- - - -

- <% if @deliverable.is_team_deliverable? %> - Team <%= nomenclature_assignment_or_deliverable%> for Team <%= @deliverable.team.name -%> - <% else %> - Individual <%= nomenclature_assignment_or_deliverable %> for <%= @deliverable.creator.human_name -%> - <% end %> + + + + + <% if current_user.is_student %> + + <% if @deliverable.course %> + <% title = "#{ nomenclature_assignment_or_deliverable } for " + @deliverable.course.name + " (" + @deliverable.assignment_name + ")" %> + <% else %> + <% title = "Deliverable for " + "(missing) course" + " (" + @deliverable.assignment_name + ")" %> + <% end %> + <% content_for :title, title %> +

<%= title %>

+

+ <% if @deliverable.is_team_deliverable? %> + Team <%= nomenclature_assignment_or_deliverable%> for Team <%= @deliverable.team.name -%> + <% else %> + Individual <%= nomenclature_assignment_or_deliverable %> for <%= @deliverable.creator.human_name -%> + <% end %> +

+ +<%# if current_user.is_student %> + (<%= link_to 'Edit', edit_deliverable_path(@deliverable) %>) <% end %> -

- - -

Attachment Version History

- - - - - - - - <% if current_user.is_student %> - > - +
Submission Date<%= nomenclature_assignment_or_deliverable %> FileComments
- <% if current_user.is_student %> - (<%= link_to 'Upload New Version', edit_deliverable_path(@deliverable) %>) + + +
+ +
+ +
+
+

History

+
+
+
+
+ + + + <% if current_user.is_student %> + + + + + <% end %> + + <% @deliverable.attachment_versions.each_with_index do |version, index| %> + + + + <% end %> - - - - <% end %> - <% @deliverable.attachment_versions.each_with_index do |version, index| %> - > - - - - - - - <% end %> -
+ <% if current_user.is_student %> + <%= link_to 'Upload New Version', edit_deliverable_path(@deliverable) %> + <% end %> +  
+ <% if index == 0 %> + <%= display_timestamp(version.submission_date, :class => "latest") -%> + <% else %> + <%= display_timestamp(version.submission_date) -%> + <% end %> + <%if !@deliverable.assignment_due_date.nil? && version.submission_date > @deliverable.assignment_due_date %> + <%= distance_of_time_in_words(version.submission_date, @deliverable.assignment_due_date)%> late! + <%end%> +
+ <%= h version.comment -%> +
+ <% unless version.attachment_file_name.nil? %> + <%= link_to('Download', version.attachment.url, :class => 'btn btn-xs btn-primary') %> + <% end %> +
 
- <% if index == 0 %> - <%= display_timestamp(version.submission_date, :class => "latest") -%> - <% else %> - <%= display_timestamp(version.submission_date) -%> - <% end %> - <%if !@deliverable.assignment_due_date.nil? && version.submission_date > @deliverable.assignment_due_date %> - (<%= distance_of_time_in_words(version.submission_date, @deliverable.assignment_due_date)%> Late!) - <%end%> - - <% unless version.attachment_file_name.nil? %> - <%= link_to version.attachment_file_name, version.attachment.url %> - <% end %> - - <%= h version.comment -%> -
- -
-
-
+
+
+
+ + + <% if current_user.is_admin? || @course.faculty.include?(current_user) %> <%= render :partial => "edit_student_feedback", :locals => {:button_name => "Submit"} %> @@ -83,3 +114,10 @@ + + + + + + + diff --git a/app/views/deliverables/update_feedback.js.erb b/app/views/deliverables/update_feedback.js.erb new file mode 100644 index 000000000..257957d68 --- /dev/null +++ b/app/views/deliverables/update_feedback.js.erb @@ -0,0 +1,2 @@ +$("#grading_queue").detach(); +$("#deliverables").append($("<%= escape_javascript(render partial: 'deliverables/deliverable_listing_professor', :locals => {:deliverables => @deliverables, :skip_course_column => true}) %>")) \ No newline at end of file diff --git a/app/views/grades/index.html.erb b/app/views/grades/index.html.erb index 4ba2ece9a..854b91b12 100644 --- a/app/views/grades/index.html.erb +++ b/app/views/grades/index.html.erb @@ -109,12 +109,25 @@ } function post_drafted_and_send() { - post_grades('<%=post_drafted_and_send_path(@course)%>'); + // Begin Add Team Turing + if (!confirm("Do you want to finalize draft grades and send to students?")) return; + if (document.getElementById("send_copy_to_myself").checked == true) + post_grades('<%=post_drafted_and_send_path(@course, :send_copy_to_myself => 1)%>'); + else + post_grades('<%=post_drafted_and_send_path(@course, :send_copy_to_myself => 0)%>'); + // End Add Team Turing +// post_grades('<%#=post_drafted_and_send_path(@course)%>'); // Delete Team Turing } function send_final_grade() { if (!confirm("Do you want to send all final letter grades (including draft grades) to students?")) return; - post_grades('<%=send_final_grade_path(@course)%>'); + // Begin Add Team Turing + if (document.getElementById("send_copy_to_myself").checked == true) + post_grades('<%=send_final_grade_path(@course, :send_copy_to_myself => 1)%>'); + else + post_grades('<%=send_final_grade_path(@course, :send_copy_to_myself => 0)%>'); + // End Add Team Turing +// post_grades('<%#=send_final_grade_path(@course)%>'); // Delete Team Turing } function save() { @@ -166,7 +179,7 @@ -
+
/> @@ -202,32 +215,60 @@ <%= render :partial => "grade_spreadsheet", :locals => {:hide_draft_grades => false, :assignments => @assignments, :course => @course, :grades => @grades, :team_assignment => @team_assignment} %> - - - - <%= link_to image_tag("/images/ajax-loader.gif", :class => "loading", :alt => "Loading" ,:hidden=>"true", :id=>"loading") %> - - - - - -
-
+
-
Please save changes
+ +
-
-

Import Grade Book

- <%= form_for :import, :url=>{:controller=>"grades", :action=>"import"}, :html => { :multipart => true } do |f| %> - <%= f.file_field :spreadsheet -%> - <%= submit_tag 'Import' %> - <% end %> -
-
-

Export Grade Book

- <%= form_for :export, :url=>{:controller=>"grades", :action=>"export"} do |f| %> - <%= submit_tag 'Export' %> - <% end %> -
+
Please save changes
+ +
+
+ + <%= link_to image_tag("/images/ajax-loader.gif", :class => "loading", :alt => "Loading", :hidden => true, :id => "loading") %> +
+
+ +
+ +
+
+ Send a copy to myself +
+
+ +
+
+ +
+ +
+ +
+ +
+
+
+

Import Grade Book

+ <%= form_for :import, :url=>{:controller=>"grades", :action=>"import"}, :html => { :multipart => true } do |f| %> + <%= f.file_field :spreadsheet -%>
+ <%= submit_tag 'Import', class: "btn btn-default" %> + <% end %> +
+
+
+ +
+
+
+

Export Grade Book

+ <%= form_for :export, :url=>{:controller=>"grades", :action=>"export"} do |f| %> + <%= submit_tag 'Export', class: "btn btn-default" %> + <% end %> +
+
+
+ +
diff --git a/app/views/layouts/cmu_sv.html.erb b/app/views/layouts/cmu_sv.html.erb index 4153ab1f2..a7a112b1e 100644 --- a/app/views/layouts/cmu_sv.html.erb +++ b/app/views/layouts/cmu_sv.html.erb @@ -32,6 +32,13 @@ <%= (title = yield :title) ? title : 'Silicon Valley Campus - Carnegie Mellon University' %> <%= yield :javascript %> <%= yield :head %> + + + <%#= stylesheet_link_tag "/stylesheets/bootstrap.min.css", :media => "screen", :rel => "stylesheet" %> + <%= stylesheet_link_tag "/stylesheets/tw-bs.css", :media => "screen", :rel => "stylesheet" %> + <%= javascript_include_tag 'bootstrap.min.js' %> + + diff --git a/config/environments/test.rb b/config/environments/test.rb index f0800d60a..3e859e7c6 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -32,6 +32,8 @@ # Print deprecation notices to the stderr config.active_support.deprecation = :stderr + + config.time_zone = "UTC" # This next line was left over from rails2 code, do we still need it? # config.gem 'rspec-rails', :version => '>= 1.3.2', :lib => false unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails')) diff --git a/config/routes.rb b/config/routes.rb index 323fd3f64..db31d9c2d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -151,6 +151,9 @@ match 'courses/:course_id/team_formation_tool' => 'courses#team_formation_tool', :as => :team_formation_tool match 'courses/:course_id/student_grades' => 'grades#student_deliverables_and_grades_for_course', :as => :course_student_grades match 'courses/:course_id/deliverables' => 'deliverables#grading_queue_for_course', :as => :course_deliverables + match 'courses/:course_id/get_deliverables' => 'deliverables#get_deliverables', :as => :get_deliverables + match 'courses/:course_id/filter_deliverables' => 'deliverables#filter_deliverables', :as => :filter_deliverables + match 'courses/:course_id/update_feedback' => 'deliverables#update_feedback', :as => :update_feedback match 'courses/:course_id/presentations' => 'presentations#index_for_course', :as => :course_presentations diff --git a/db/migrate/20131102015649_add_last_graded_by_to_grades.rb b/db/migrate/20131102015649_add_last_graded_by_to_grades.rb new file mode 100644 index 000000000..d1e31cb33 --- /dev/null +++ b/db/migrate/20131102015649_add_last_graded_by_to_grades.rb @@ -0,0 +1,9 @@ +class AddLastGradedByToGrades < ActiveRecord::Migration + def self.up + add_column :grades, :last_graded_by, :integer + end + + def self.down + remove_column :grades, :last_graded_by + end +end diff --git a/db/schema.rb b/db/schema.rb index 299e0009b..295fdcf9f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130918084505) do +ActiveRecord::Schema.define(:version => 20131102015649) do create_table "assignments", :force => true do |t| t.string "name" @@ -141,6 +141,7 @@ add_index "deliverables", ["assignment_id"], :name => "index_deliverables_on_assignment_id" add_index "deliverables", ["course_id"], :name => "index_deliverables_on_course_id" add_index "deliverables", ["creator_id"], :name => "index_deliverables_on_creator_id" + add_index "deliverables", ["team_id", "course_id", "assignment_id"], :name => "deliverables_team_id_course_id_assignment_id_idx" add_index "deliverables", ["team_id"], :name => "index_deliverables_on_team_id" create_table "effort_log_line_items", :force => true do |t| @@ -184,6 +185,7 @@ end add_index "faculty_assignments", ["course_id", "user_id"], :name => "index_faculty_assignments_on_course_id_and_person_id", :unique => true + add_index "faculty_assignments", ["course_id"], :name => "faculty_assignments_course_id_idx" create_table "grades", :force => true do |t| t.integer "course_id" @@ -193,9 +195,11 @@ t.datetime "created_at" t.datetime "updated_at" t.boolean "is_student_visible" + t.integer "last_graded_by" end add_index "grades", ["assignment_id"], :name => "index_grades_on_assignment_id" + add_index "grades", ["course_id", "assignment_id", "student_id"], :name => "grades_course_id_assignment_id_student_id_idx" add_index "grades", ["course_id"], :name => "index_grades_on_course_id" add_index "grades", ["student_id"], :name => "index_grades_on_student_id" diff --git a/logfile b/logfile new file mode 100644 index 000000000..70cf896e0 --- /dev/null +++ b/logfile @@ -0,0 +1,95 @@ +LOG: database system was shut down at 2013-10-02 15:19:32 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +FATAL: database "mariaemiliatorino" does not exist +ERROR: role "metorino" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER metorino ENCODING 'UTF8'; + +LOG: received fast shutdown request +LOG: aborting any active transactions +LOG: autovacuum launcher shutting down +LOG: shutting down +LOG: database system is shut down +LOG: database system was shut down at 2013-10-02 16:02:46 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +ERROR: role "metorino" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER metorino ENCODING 'UTF8'; + +ERROR: role "metorino" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER metorino ENCODING 'UTF8'; + +LOG: received fast shutdown request +LOG: aborting any active transactions +LOG: autovacuum launcher shutting down +LOG: shutting down +LOG: database system is shut down +LOG: database system was shut down at 2013-10-02 16:06:57 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +ERROR: role "metorino" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER metorino ENCODING 'UTF8'; + +FATAL: role "postgres" does not exist +FATAL: database "du" does not exist +ERROR: role "metorino" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER metorino ENCODING 'UTF8'; + +ERROR: role "Emi" does not exist +STATEMENT: CREATE DATABASE cmu_education OWNER "Emi" ENCODING 'UTF8'; + +FATAL: role "root" does not exist +FATAL: role "root" does not exist +FATAL: role "postgres" does not exist +FATAL: database "cmu_education_test" does not exist +LOG: autovacuum launcher shutting down +LOG: received smart shutdown request +LOG: shutting down +LOG: database system is shut down +LOG: database system was shut down at 2013-10-02 17:16:07 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +FATAL: database "cmu_education_test" does not exist +FATAL: terminating connection due to administrator command +LOG: autovacuum launcher shutting down +LOG: received smart shutdown request +LOG: shutting down +LOG: database system is shut down +LOG: database system was shut down at 2013-10-03 10:00:58 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +FATAL: database "cmu_education_test" does not exist +LOG: automatic vacuum of table "cmu_education_test.public.users": could not (re)acquire exclusive lock for truncate scan +LOG: database system was interrupted; last known up at 2013-10-03 10:08:16 PDT +LOG: database system was not properly shut down; automatic recovery in progress +LOG: record with zero length at 0/293B450 +LOG: redo is not required +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +FATAL: lock file "postmaster.pid" already exists +HINT: Is another postmaster (PID 1422) running in data directory "/usr/local/var/postgres"? +ERROR: column "SeverusSnape" does not exist at character 31 +STATEMENT: update users set twiki_name = "SeverusSnape" where id=29 +ERROR: column "SeverusSnape" does not exist at character 31 +STATEMENT: update users set twiki_name = "SeverusSnape" where id=29 +LOG: received smart shutdown request +LOG: autovacuum launcher shutting down +LOG: shutting down +LOG: database system is shut down +LOG: database system was shut down at 2013-10-16 05:51:07 PDT +LOG: database system is ready to accept connections +LOG: autovacuum launcher started +FATAL: lock file "postmaster.pid" already exists +HINT: Is another postmaster (PID 1288) running in data directory "/usr/local/var/postgres"? +LOG: automatic vacuum of table "cmu_education_test.public.registrations": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.user_versions": could not (re)acquire exclusive lock for truncate scan +FATAL: database "cmu_education_test" does not exist +LOG: automatic vacuum of table "cmu_education_test.public.courses": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.registrations": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.users": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.delayed_jobs": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.registrations": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.teams": could not (re)acquire exclusive lock for truncate scan +LOG: automatic vacuum of table "cmu_education_test.public.users": could not (re)acquire exclusive lock for truncate scan +FATAL: database "cmu_education_test" does not exist +FATAL: database "cmu_education_test" does not exist diff --git a/public/cmu_sv_standard_v4/screen.css b/public/cmu_sv_standard_v4/screen.css index 7d278d4ef..62d47c812 100644 --- a/public/cmu_sv_standard_v4/screen.css +++ b/public/cmu_sv_standard_v4/screen.css @@ -132,9 +132,11 @@ h1#titleHead { text-transform:uppercase; color:#ffffff; padding:8px 0px 5px 9px; - position:relative; + position:relative; margin-left:244px; width:739px; + box-sizing: content-box; /* Team Turing: Overriding Bootstraps box-sizing: border-box set via universal selector */ + -moz-box-sizing: content-box; } #topnav ul { display:inline-block; @@ -227,6 +229,8 @@ h1#titleHead { overflow:hidden; padding:10px 10px 1px 11px; margin: 0px 8px -10px 0px; + box-sizing: content-box; /* Team Turing: Overriding Bootstraps box-sizing: border-box set via universal selector */ + -moz-box-sizing: content-box; } #logo img { padding-bottom:10px; diff --git a/public/images/ajax-loader2.gif b/public/images/ajax-loader2.gif new file mode 100644 index 000000000..80e02021e Binary files /dev/null and b/public/images/ajax-loader2.gif differ diff --git a/public/images/deliverables_drafted.png b/public/images/deliverables_drafted.png new file mode 100755 index 000000000..d8ad596a0 Binary files /dev/null and b/public/images/deliverables_drafted.png differ diff --git a/public/images/deliverables_graded.png b/public/images/deliverables_graded.png new file mode 100755 index 000000000..fe9f59f43 Binary files /dev/null and b/public/images/deliverables_graded.png differ diff --git a/public/images/deliverables_ungraded.png b/public/images/deliverables_ungraded.png new file mode 100755 index 000000000..80667138f Binary files /dev/null and b/public/images/deliverables_ungraded.png differ diff --git a/public/images/download_deliverable.png b/public/images/download_deliverable.png new file mode 100644 index 000000000..56da0e61f Binary files /dev/null and b/public/images/download_deliverable.png differ diff --git a/public/images/hide_deliverable_detail.png b/public/images/hide_deliverable_detail.png new file mode 100644 index 000000000..3b137f3b7 Binary files /dev/null and b/public/images/hide_deliverable_detail.png differ diff --git a/public/images/show_deliverable_detail.png b/public/images/show_deliverable_detail.png new file mode 100644 index 000000000..05a27220a Binary files /dev/null and b/public/images/show_deliverable_detail.png differ diff --git a/public/javascripts/bootstrap.min.js b/public/javascripts/bootstrap.min.js new file mode 100755 index 000000000..1765631f4 --- /dev/null +++ b/public/javascripts/bootstrap.min.js @@ -0,0 +1,6 @@ +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file diff --git a/public/javascripts/collapse.js b/public/javascripts/collapse.js new file mode 100755 index 000000000..92cc0bc76 --- /dev/null +++ b/public/javascripts/collapse.js @@ -0,0 +1,179 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); diff --git a/public/javascripts/transition.js b/public/javascripts/transition.js new file mode 100755 index 000000000..e8f318beb --- /dev/null +++ b/public/javascripts/transition.js @@ -0,0 +1,56 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(window.jQuery); diff --git a/public/stylesheets/bootstrap.min.css b/public/stylesheets/bootstrap.min.css new file mode 100755 index 000000000..a553c4f5e --- /dev/null +++ b/public/stylesheets/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/public/stylesheets/tw-bs.css b/public/stylesheets/tw-bs.css new file mode 100644 index 000000000..b37011e11 --- /dev/null +++ b/public/stylesheets/tw-bs.css @@ -0,0 +1,5851 @@ +.tw-bs { + /*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + /*! normalize.css v2.1.0 | MIT License | git.io/normalize */ +} +.tw-bs article, +.tw-bs aside, +.tw-bs details, +.tw-bs figcaption, +.tw-bs figure, +.tw-bs footer, +.tw-bs header, +.tw-bs hgroup, +.tw-bs main, +.tw-bs nav, +.tw-bs section, +.tw-bs summary { + display: block; +} +.tw-bs audio, +.tw-bs canvas, +.tw-bs video { + display: inline-block; +} +.tw-bs audio:not([controls]) { + display: none; + height: 0; +} +.tw-bs [hidden] { + display: none; +} +.tw-bs html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +.tw-bs body { + margin: 0; +} +.tw-bs a:focus { + outline: thin dotted; +} +.tw-bs a:active, +.tw-bs a:hover { + outline: 0; +} +.tw-bs h1 { + font-size: 2em; + margin: 0.67em 0; +} +.tw-bs abbr[title] { + border-bottom: 1px dotted; +} +.tw-bs b, +.tw-bs strong { + font-weight: bold; +} +.tw-bs dfn { + font-style: italic; +} +.tw-bs hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +.tw-bs mark { + background: #ff0; + color: #000; +} +.tw-bs code, +.tw-bs kbd, +.tw-bs pre, +.tw-bs samp { + font-family: monospace, serif; + font-size: 1em; +} +.tw-bs pre { + white-space: pre-wrap; +} +.tw-bs q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +.tw-bs small { + font-size: 80%; +} +.tw-bs sub, +.tw-bs sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +.tw-bs sup { + top: -0.5em; +} +.tw-bs sub { + bottom: -0.25em; +} +.tw-bs img { + border: 0; +} +.tw-bs svg:not(:root) { + overflow: hidden; +} +.tw-bs figure { + margin: 0; +} +.tw-bs fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +.tw-bs legend { + border: 0; + padding: 0; +} +.tw-bs button, +.tw-bs input, +.tw-bs select, +.tw-bs textarea { + font-family: inherit; + font-size: 100%; + margin: 0; +} +.tw-bs button, +.tw-bs input { + line-height: normal; +} +.tw-bs button, +.tw-bs select { + text-transform: none; +} +.tw-bs button, +.tw-bs html input[type="button"], +.tw-bs input[type="reset"], +.tw-bs input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +.tw-bs button[disabled], +.tw-bs html input[disabled] { + cursor: default; +} +.tw-bs input[type="checkbox"], +.tw-bs input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +.tw-bs input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +.tw-bs input[type="search"]::-webkit-search-cancel-button, +.tw-bs input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +.tw-bs button::-moz-focus-inner, +.tw-bs input::-moz-focus-inner { + border: 0; + padding: 0; +} +.tw-bs textarea { + overflow: auto; + vertical-align: top; +} +.tw-bs table { + border-collapse: collapse; + border-spacing: 0; +} +@media print { + .tw-bs * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + .tw-bs a, + .tw-bs a:visited { + text-decoration: underline; + } + .tw-bs a[href]:after { + content: " (" attr(href) ")"; + } + .tw-bs abbr[title]:after { + content: " (" attr(title) ")"; + } + .tw-bs .ir a:after, + .tw-bs a[href^="javascript:"]:after, + .tw-bs a[href^="#"]:after { + content: ""; + } + .tw-bs pre, + .tw-bs blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + .tw-bs thead { + display: table-header-group; + } + .tw-bs tr, + .tw-bs img { + page-break-inside: avoid; + } + .tw-bs img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + .tw-bs p, + .tw-bs h2, + .tw-bs h3 { + orphans: 3; + widows: 3; + } + .tw-bs h2, + .tw-bs h3 { + page-break-after: avoid; + } + .tw-bs .navbar { + display: none; + } + .tw-bs .table td, + .tw-bs .table th { + background-color: #fff !important; + } + .tw-bs .btn > .caret, + .tw-bs .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .tw-bs .label { + border: 1px solid #000; + } + .tw-bs .table { + border-collapse: collapse !important; + } + .tw-bs .table-bordered th, + .tw-bs .table-bordered td { + border: 1px solid #ddd !important; + } +} +.tw-bs *, +.tw-bs *:before, +.tw-bs *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.tw-bs html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.tw-bs body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} +.tw-bs input, +.tw-bs button, +.tw-bs select, +.tw-bs textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +.tw-bs button, +.tw-bs input, +.tw-bs select[multiple], +.tw-bs textarea { + background-image: none; +} +.tw-bs a { + color: #428bca; + text-decoration: none; +} +.tw-bs a:hover, +.tw-bs a:focus { + color: #2a6496; + text-decoration: underline; +} +.tw-bs a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.tw-bs img { + vertical-align: middle; +} +.tw-bs .img-responsive { + display: block; + max-width: 100%; + height: auto; +} +.tw-bs .img-rounded { + border-radius: 6px; +} +.tw-bs .img-thumbnail { + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.tw-bs .img-circle { + border-radius: 50%; +} +.tw-bs hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.tw-bs .sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} +.tw-bs p { + margin: 0 0 10px; +} +.tw-bs .lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} +@media (min-width: 768px) { + .tw-bs .lead { + font-size: 21px; + } +} +.tw-bs small { + font-size: 85%; +} +.tw-bs cite { + font-style: normal; +} +.tw-bs .text-muted { + color: #999999; +} +.tw-bs .text-primary { + color: #428bca; +} +.tw-bs .text-warning { + color: #c09853; +} +.tw-bs .text-danger { + color: #b94a48; +} +.tw-bs .text-success { + color: #468847; +} +.tw-bs .text-info { + color: #3a87ad; +} +.tw-bs .text-left { + text-align: left; +} +.tw-bs .text-right { + text-align: right; +} +.tw-bs .text-center { + text-align: center; +} +.tw-bs h1, +.tw-bs h2, +.tw-bs h3, +.tw-bs h4, +.tw-bs h5, +.tw-bs h6, +.tw-bs .h1, +.tw-bs .h2, +.tw-bs .h3, +.tw-bs .h4, +.tw-bs .h5, +.tw-bs .h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} +.tw-bs h1 small, +.tw-bs h2 small, +.tw-bs h3 small, +.tw-bs h4 small, +.tw-bs h5 small, +.tw-bs h6 small, +.tw-bs .h1 small, +.tw-bs .h2 small, +.tw-bs .h3 small, +.tw-bs .h4 small, +.tw-bs .h5 small, +.tw-bs .h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} +.tw-bs h1, +.tw-bs h2, +.tw-bs h3 { + margin-top: 20px; + margin-bottom: 10px; +} +.tw-bs h4, +.tw-bs h5, +.tw-bs h6 { + margin-top: 10px; + margin-bottom: 10px; +} +.tw-bs h1, +.tw-bs .h1 { + font-size: 36px; +} +.tw-bs h2, +.tw-bs .h2 { + font-size: 30px; +} +.tw-bs h3, +.tw-bs .h3 { + font-size: 24px; +} +.tw-bs h4, +.tw-bs .h4 { + font-size: 18px; +} +.tw-bs h5, +.tw-bs .h5 { + font-size: 14px; +} +.tw-bs h6, +.tw-bs .h6 { + font-size: 12px; +} +.tw-bs h1 small, +.tw-bs .h1 small { + font-size: 24px; +} +.tw-bs h2 small, +.tw-bs .h2 small { + font-size: 18px; +} +.tw-bs h3 small, +.tw-bs .h3 small, +.tw-bs h4 small, +.tw-bs .h4 small { + font-size: 14px; +} +.tw-bs .page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +.tw-bs ul, +.tw-bs ol { + margin-top: 0; + margin-bottom: 10px; +} +.tw-bs ul ul, +.tw-bs ol ul, +.tw-bs ul ol, +.tw-bs ol ol { + margin-bottom: 0; +} +.tw-bs .list-unstyled { + padding-left: 0; + list-style: none; +} +.tw-bs .list-inline { + padding-left: 0; + list-style: none; +} +.tw-bs .list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +.tw-bs dl { + margin-bottom: 20px; +} +.tw-bs dt, +.tw-bs dd { + line-height: 1.428571429; +} +.tw-bs dt { + font-weight: bold; +} +.tw-bs dd { + margin-left: 0; +} +@media (min-width: 768px) { + .tw-bs .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .tw-bs .dl-horizontal dd { + margin-left: 180px; + } + .tw-bs .dl-horizontal dd:before, + .tw-bs .dl-horizontal dd:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ + } + .tw-bs .dl-horizontal dd:after { + clear: both; + } + .tw-bs .dl-horizontal dd:before, + .tw-bs .dl-horizontal dd:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ + } + .tw-bs .dl-horizontal dd:after { + clear: both; + } +} +.tw-bs abbr[title], +.tw-bs abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +.tw-bs abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} +.tw-bs blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +.tw-bs blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} +.tw-bs blockquote p:last-child { + margin-bottom: 0; +} +.tw-bs blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} +.tw-bs blockquote small:before { + content: '\2014 \00A0'; +} +.tw-bs blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} +.tw-bs blockquote.pull-right p, +.tw-bs blockquote.pull-right small { + text-align: right; +} +.tw-bs blockquote.pull-right small:before { + content: ''; +} +.tw-bs blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +.tw-bs q:before, +.tw-bs q:after, +.tw-bs blockquote:before, +.tw-bs blockquote:after { + content: ""; +} +.tw-bs address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} +.tw-bs code, +.tw-bs pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} +.tw-bs code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + white-space: nowrap; + border-radius: 4px; +} +.tw-bs pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} +.tw-bs pre.prettyprint { + margin-bottom: 20px; +} +.tw-bs pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} +.tw-bs .pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.tw-bs .container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.tw-bs .container:before, +.tw-bs .container:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .container:after { + clear: both; +} +.tw-bs .container:before, +.tw-bs .container:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .container:after { + clear: both; +} +.tw-bs .row { + margin-left: -15px; + margin-right: -15px; +} +.tw-bs .row:before, +.tw-bs .row:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .row:after { + clear: both; +} +.tw-bs .row:before, +.tw-bs .row:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .row:after { + clear: both; +} +.tw-bs .col-xs-1, +.tw-bs .col-xs-2, +.tw-bs .col-xs-3, +.tw-bs .col-xs-4, +.tw-bs .col-xs-5, +.tw-bs .col-xs-6, +.tw-bs .col-xs-7, +.tw-bs .col-xs-8, +.tw-bs .col-xs-9, +.tw-bs .col-xs-10, +.tw-bs .col-xs-11, +.tw-bs .col-xs-12, +.tw-bs .col-sm-1, +.tw-bs .col-sm-2, +.tw-bs .col-sm-3, +.tw-bs .col-sm-4, +.tw-bs .col-sm-5, +.tw-bs .col-sm-6, +.tw-bs .col-sm-7, +.tw-bs .col-sm-8, +.tw-bs .col-sm-9, +.tw-bs .col-sm-10, +.tw-bs .col-sm-11, +.tw-bs .col-sm-12, +.tw-bs .col-md-1, +.tw-bs .col-md-2, +.tw-bs .col-md-3, +.tw-bs .col-md-4, +.tw-bs .col-md-5, +.tw-bs .col-md-6, +.tw-bs .col-md-7, +.tw-bs .col-md-8, +.tw-bs .col-md-9, +.tw-bs .col-md-10, +.tw-bs .col-md-11, +.tw-bs .col-md-12, +.tw-bs .col-lg-1, +.tw-bs .col-lg-2, +.tw-bs .col-lg-3, +.tw-bs .col-lg-4, +.tw-bs .col-lg-5, +.tw-bs .col-lg-6, +.tw-bs .col-lg-7, +.tw-bs .col-lg-8, +.tw-bs .col-lg-9, +.tw-bs .col-lg-10, +.tw-bs .col-lg-11, +.tw-bs .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.tw-bs .col-xs-1, +.tw-bs .col-xs-2, +.tw-bs .col-xs-3, +.tw-bs .col-xs-4, +.tw-bs .col-xs-5, +.tw-bs .col-xs-6, +.tw-bs .col-xs-7, +.tw-bs .col-xs-8, +.tw-bs .col-xs-9, +.tw-bs .col-xs-10, +.tw-bs .col-xs-11 { + float: left; +} +.tw-bs .col-xs-1 { + width: 8.333333333333332%; +} +.tw-bs .col-xs-2 { + width: 16.666666666666664%; +} +.tw-bs .col-xs-3 { + width: 25%; +} +.tw-bs .col-xs-4 { + width: 33.33333333333333%; +} +.tw-bs .col-xs-5 { + width: 41.66666666666667%; +} +.tw-bs .col-xs-6 { + width: 50%; +} +.tw-bs .col-xs-7 { + width: 58.333333333333336%; +} +.tw-bs .col-xs-8 { + width: 66.66666666666666%; +} +.tw-bs .col-xs-9 { + width: 75%; +} +.tw-bs .col-xs-10 { + width: 83.33333333333334%; +} +.tw-bs .col-xs-11 { + width: 91.66666666666666%; +} +.tw-bs .col-xs-12 { + width: 100%; +} +@media (min-width: 768px) { + .tw-bs .container { + max-width: 750px; + } + .tw-bs .col-sm-1, + .tw-bs .col-sm-2, + .tw-bs .col-sm-3, + .tw-bs .col-sm-4, + .tw-bs .col-sm-5, + .tw-bs .col-sm-6, + .tw-bs .col-sm-7, + .tw-bs .col-sm-8, + .tw-bs .col-sm-9, + .tw-bs .col-sm-10, + .tw-bs .col-sm-11 { + float: left; + } + .tw-bs .col-sm-1 { + width: 8.333333333333332%; + } + .tw-bs .col-sm-2 { + width: 16.666666666666664%; + } + .tw-bs .col-sm-3 { + width: 25%; + } + .tw-bs .col-sm-4 { + width: 33.33333333333333%; + } + .tw-bs .col-sm-5 { + width: 41.66666666666667%; + } + .tw-bs .col-sm-6 { + width: 50%; + } + .tw-bs .col-sm-7 { + width: 58.333333333333336%; + } + .tw-bs .col-sm-8 { + width: 66.66666666666666%; + } + .tw-bs .col-sm-9 { + width: 75%; + } + .tw-bs .col-sm-10 { + width: 83.33333333333334%; + } + .tw-bs .col-sm-11 { + width: 91.66666666666666%; + } + .tw-bs .col-sm-12 { + width: 100%; + } + .tw-bs .col-sm-push-1 { + left: 8.333333333333332%; + } + .tw-bs .col-sm-push-2 { + left: 16.666666666666664%; + } + .tw-bs .col-sm-push-3 { + left: 25%; + } + .tw-bs .col-sm-push-4 { + left: 33.33333333333333%; + } + .tw-bs .col-sm-push-5 { + left: 41.66666666666667%; + } + .tw-bs .col-sm-push-6 { + left: 50%; + } + .tw-bs .col-sm-push-7 { + left: 58.333333333333336%; + } + .tw-bs .col-sm-push-8 { + left: 66.66666666666666%; + } + .tw-bs .col-sm-push-9 { + left: 75%; + } + .tw-bs .col-sm-push-10 { + left: 83.33333333333334%; + } + .tw-bs .col-sm-push-11 { + left: 91.66666666666666%; + } + .tw-bs .col-sm-pull-1 { + right: 8.333333333333332%; + } + .tw-bs .col-sm-pull-2 { + right: 16.666666666666664%; + } + .tw-bs .col-sm-pull-3 { + right: 25%; + } + .tw-bs .col-sm-pull-4 { + right: 33.33333333333333%; + } + .tw-bs .col-sm-pull-5 { + right: 41.66666666666667%; + } + .tw-bs .col-sm-pull-6 { + right: 50%; + } + .tw-bs .col-sm-pull-7 { + right: 58.333333333333336%; + } + .tw-bs .col-sm-pull-8 { + right: 66.66666666666666%; + } + .tw-bs .col-sm-pull-9 { + right: 75%; + } + .tw-bs .col-sm-pull-10 { + right: 83.33333333333334%; + } + .tw-bs .col-sm-pull-11 { + right: 91.66666666666666%; + } + .tw-bs .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .tw-bs .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .tw-bs .col-sm-offset-3 { + margin-left: 25%; + } + .tw-bs .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .tw-bs .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .tw-bs .col-sm-offset-6 { + margin-left: 50%; + } + .tw-bs .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .tw-bs .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .tw-bs .col-sm-offset-9 { + margin-left: 75%; + } + .tw-bs .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .tw-bs .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} +@media (min-width: 992px) { + .tw-bs .container { + max-width: 970px; + } + .tw-bs .col-md-1, + .tw-bs .col-md-2, + .tw-bs .col-md-3, + .tw-bs .col-md-4, + .tw-bs .col-md-5, + .tw-bs .col-md-6, + .tw-bs .col-md-7, + .tw-bs .col-md-8, + .tw-bs .col-md-9, + .tw-bs .col-md-10, + .tw-bs .col-md-11 { + float: left; + } + .tw-bs .col-md-1 { + width: 8.333333333333332%; + } + .tw-bs .col-md-2 { + width: 16.666666666666664%; + } + .tw-bs .col-md-3 { + width: 25%; + } + .tw-bs .col-md-4 { + width: 33.33333333333333%; + } + .tw-bs .col-md-5 { + width: 41.66666666666667%; + } + .tw-bs .col-md-6 { + width: 50%; + } + .tw-bs .col-md-7 { + width: 58.333333333333336%; + } + .tw-bs .col-md-8 { + width: 66.66666666666666%; + } + .tw-bs .col-md-9 { + width: 75%; + } + .tw-bs .col-md-10 { + width: 83.33333333333334%; + } + .tw-bs .col-md-11 { + width: 91.66666666666666%; + } + .tw-bs .col-md-12 { + width: 100%; + } + .tw-bs .col-md-push-0 { + left: auto; + } + .tw-bs .col-md-push-1 { + left: 8.333333333333332%; + } + .tw-bs .col-md-push-2 { + left: 16.666666666666664%; + } + .tw-bs .col-md-push-3 { + left: 25%; + } + .tw-bs .col-md-push-4 { + left: 33.33333333333333%; + } + .tw-bs .col-md-push-5 { + left: 41.66666666666667%; + } + .tw-bs .col-md-push-6 { + left: 50%; + } + .tw-bs .col-md-push-7 { + left: 58.333333333333336%; + } + .tw-bs .col-md-push-8 { + left: 66.66666666666666%; + } + .tw-bs .col-md-push-9 { + left: 75%; + } + .tw-bs .col-md-push-10 { + left: 83.33333333333334%; + } + .tw-bs .col-md-push-11 { + left: 91.66666666666666%; + } + .tw-bs .col-md-pull-0 { + right: auto; + } + .tw-bs .col-md-pull-1 { + right: 8.333333333333332%; + } + .tw-bs .col-md-pull-2 { + right: 16.666666666666664%; + } + .tw-bs .col-md-pull-3 { + right: 25%; + } + .tw-bs .col-md-pull-4 { + right: 33.33333333333333%; + } + .tw-bs .col-md-pull-5 { + right: 41.66666666666667%; + } + .tw-bs .col-md-pull-6 { + right: 50%; + } + .tw-bs .col-md-pull-7 { + right: 58.333333333333336%; + } + .tw-bs .col-md-pull-8 { + right: 66.66666666666666%; + } + .tw-bs .col-md-pull-9 { + right: 75%; + } + .tw-bs .col-md-pull-10 { + right: 83.33333333333334%; + } + .tw-bs .col-md-pull-11 { + right: 91.66666666666666%; + } + .tw-bs .col-md-offset-0 { + margin-left: 0; + } + .tw-bs .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .tw-bs .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .tw-bs .col-md-offset-3 { + margin-left: 25%; + } + .tw-bs .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .tw-bs .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .tw-bs .col-md-offset-6 { + margin-left: 50%; + } + .tw-bs .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .tw-bs .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .tw-bs .col-md-offset-9 { + margin-left: 75%; + } + .tw-bs .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .tw-bs .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} +@media (min-width: 1200px) { + .tw-bs .container { + max-width: 1170px; + } + .tw-bs .col-lg-1, + .tw-bs .col-lg-2, + .tw-bs .col-lg-3, + .tw-bs .col-lg-4, + .tw-bs .col-lg-5, + .tw-bs .col-lg-6, + .tw-bs .col-lg-7, + .tw-bs .col-lg-8, + .tw-bs .col-lg-9, + .tw-bs .col-lg-10, + .tw-bs .col-lg-11 { + float: left; + } + .tw-bs .col-lg-1 { + width: 8.333333333333332%; + } + .tw-bs .col-lg-2 { + width: 16.666666666666664%; + } + .tw-bs .col-lg-3 { + width: 25%; + } + .tw-bs .col-lg-4 { + width: 33.33333333333333%; + } + .tw-bs .col-lg-5 { + width: 41.66666666666667%; + } + .tw-bs .col-lg-6 { + width: 50%; + } + .tw-bs .col-lg-7 { + width: 58.333333333333336%; + } + .tw-bs .col-lg-8 { + width: 66.66666666666666%; + } + .tw-bs .col-lg-9 { + width: 75%; + } + .tw-bs .col-lg-10 { + width: 83.33333333333334%; + } + .tw-bs .col-lg-11 { + width: 91.66666666666666%; + } + .tw-bs .col-lg-12 { + width: 100%; + } + .tw-bs .col-lg-push-0 { + left: auto; + } + .tw-bs .col-lg-push-1 { + left: 8.333333333333332%; + } + .tw-bs .col-lg-push-2 { + left: 16.666666666666664%; + } + .tw-bs .col-lg-push-3 { + left: 25%; + } + .tw-bs .col-lg-push-4 { + left: 33.33333333333333%; + } + .tw-bs .col-lg-push-5 { + left: 41.66666666666667%; + } + .tw-bs .col-lg-push-6 { + left: 50%; + } + .tw-bs .col-lg-push-7 { + left: 58.333333333333336%; + } + .tw-bs .col-lg-push-8 { + left: 66.66666666666666%; + } + .tw-bs .col-lg-push-9 { + left: 75%; + } + .tw-bs .col-lg-push-10 { + left: 83.33333333333334%; + } + .tw-bs .col-lg-push-11 { + left: 91.66666666666666%; + } + .tw-bs .col-lg-pull-0 { + right: auto; + } + .tw-bs .col-lg-pull-1 { + right: 8.333333333333332%; + } + .tw-bs .col-lg-pull-2 { + right: 16.666666666666664%; + } + .tw-bs .col-lg-pull-3 { + right: 25%; + } + .tw-bs .col-lg-pull-4 { + right: 33.33333333333333%; + } + .tw-bs .col-lg-pull-5 { + right: 41.66666666666667%; + } + .tw-bs .col-lg-pull-6 { + right: 50%; + } + .tw-bs .col-lg-pull-7 { + right: 58.333333333333336%; + } + .tw-bs .col-lg-pull-8 { + right: 66.66666666666666%; + } + .tw-bs .col-lg-pull-9 { + right: 75%; + } + .tw-bs .col-lg-pull-10 { + right: 83.33333333333334%; + } + .tw-bs .col-lg-pull-11 { + right: 91.66666666666666%; + } + .tw-bs .col-lg-offset-0 { + margin-left: 0; + } + .tw-bs .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .tw-bs .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .tw-bs .col-lg-offset-3 { + margin-left: 25%; + } + .tw-bs .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .tw-bs .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .tw-bs .col-lg-offset-6 { + margin-left: 50%; + } + .tw-bs .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .tw-bs .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .tw-bs .col-lg-offset-9 { + margin-left: 75%; + } + .tw-bs .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .tw-bs .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} +.tw-bs table { + max-width: 100%; + background-color: transparent; +} +.tw-bs th { + text-align: left; +} +.tw-bs .table { + width: 100%; + margin-bottom: 20px; +} +.tw-bs .table thead > tr > th, +.tw-bs .table tbody > tr > th, +.tw-bs .table tfoot > tr > th, +.tw-bs .table thead > tr > td, +.tw-bs .table tbody > tr > td, +.tw-bs .table tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.tw-bs .table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.tw-bs .table caption + thead tr:first-child th, +.tw-bs .table colgroup + thead tr:first-child th, +.tw-bs .table thead:first-child tr:first-child th, +.tw-bs .table caption + thead tr:first-child td, +.tw-bs .table colgroup + thead tr:first-child td, +.tw-bs .table thead:first-child tr:first-child td { + border-top: 0; +} +.tw-bs .table tbody + tbody { + border-top: 2px solid #dddddd; +} +.tw-bs .table .table { + background-color: #ffffff; +} +.tw-bs .table-condensed thead > tr > th, +.tw-bs .table-condensed tbody > tr > th, +.tw-bs .table-condensed tfoot > tr > th, +.tw-bs .table-condensed thead > tr > td, +.tw-bs .table-condensed tbody > tr > td, +.tw-bs .table-condensed tfoot > tr > td { + padding: 5px; +} +.tw-bs .table-bordered { + border: 1px solid #dddddd; +} +.tw-bs .table-bordered > thead > tr > th, +.tw-bs .table-bordered > tbody > tr > th, +.tw-bs .table-bordered > tfoot > tr > th, +.tw-bs .table-bordered > thead > tr > td, +.tw-bs .table-bordered > tbody > tr > td, +.tw-bs .table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.tw-bs .table-bordered > thead > tr > th, +.tw-bs .table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.tw-bs .table-striped > tbody > tr:nth-child(odd) > td, +.tw-bs .table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.tw-bs .table-hover > tbody > tr:hover > td, +.tw-bs .table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +.tw-bs table col[class*="col-"] { + float: none; + display: table-column; +} +.tw-bs table td[class*="col-"], +.tw-bs table th[class*="col-"] { + float: none; + display: table-cell; +} +.tw-bs .table > thead > tr > td.active, +.tw-bs .table > tbody > tr > td.active, +.tw-bs .table > tfoot > tr > td.active, +.tw-bs .table > thead > tr > th.active, +.tw-bs .table > tbody > tr > th.active, +.tw-bs .table > tfoot > tr > th.active, +.tw-bs .table > thead > tr.active > td, +.tw-bs .table > tbody > tr.active > td, +.tw-bs .table > tfoot > tr.active > td, +.tw-bs .table > thead > tr.active > th, +.tw-bs .table > tbody > tr.active > th, +.tw-bs .table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.tw-bs .table > thead > tr > td.success, +.tw-bs .table > tbody > tr > td.success, +.tw-bs .table > tfoot > tr > td.success, +.tw-bs .table > thead > tr > th.success, +.tw-bs .table > tbody > tr > th.success, +.tw-bs .table > tfoot > tr > th.success, +.tw-bs .table > thead > tr.success > td, +.tw-bs .table > tbody > tr.success > td, +.tw-bs .table > tfoot > tr.success > td, +.tw-bs .table > thead > tr.success > th, +.tw-bs .table > tbody > tr.success > th, +.tw-bs .table > tfoot > tr.success > th { + background-color: #dff0d8; + border-color: #d6e9c6; +} +.tw-bs .table-hover > tbody > tr > td.success:hover, +.tw-bs .table-hover > tbody > tr > th.success:hover, +.tw-bs .table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} +.tw-bs .table > thead > tr > td.danger, +.tw-bs .table > tbody > tr > td.danger, +.tw-bs .table > tfoot > tr > td.danger, +.tw-bs .table > thead > tr > th.danger, +.tw-bs .table > tbody > tr > th.danger, +.tw-bs .table > tfoot > tr > th.danger, +.tw-bs .table > thead > tr.danger > td, +.tw-bs .table > tbody > tr.danger > td, +.tw-bs .table > tfoot > tr.danger > td, +.tw-bs .table > thead > tr.danger > th, +.tw-bs .table > tbody > tr.danger > th, +.tw-bs .table > tfoot > tr.danger > th { + background-color: #f2dede; + border-color: #eed3d7; +} +.tw-bs .table-hover > tbody > tr > td.danger:hover, +.tw-bs .table-hover > tbody > tr > th.danger:hover, +.tw-bs .table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} +.tw-bs .table > thead > tr > td.warning, +.tw-bs .table > tbody > tr > td.warning, +.tw-bs .table > tfoot > tr > td.warning, +.tw-bs .table > thead > tr > th.warning, +.tw-bs .table > tbody > tr > th.warning, +.tw-bs .table > tfoot > tr > th.warning, +.tw-bs .table > thead > tr.warning > td, +.tw-bs .table > tbody > tr.warning > td, +.tw-bs .table > tfoot > tr.warning > td, +.tw-bs .table > thead > tr.warning > th, +.tw-bs .table > tbody > tr.warning > th, +.tw-bs .table > tfoot > tr.warning > th { + background-color: #fcf8e3; + border-color: #fbeed5; +} +.tw-bs .table-hover > tbody > tr > td.warning:hover, +.tw-bs .table-hover > tbody > tr > th.warning:hover, +.tw-bs .table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} +@media (max-width: 768px) { + .tw-bs .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + overflow-x: scroll; + border: 1px solid #dddddd; + } + .tw-bs .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .tw-bs .table-responsive > .table > thead > tr > th, + .tw-bs .table-responsive > .table > tbody > tr > th, + .tw-bs .table-responsive > .table > tfoot > tr > th, + .tw-bs .table-responsive > .table > thead > tr > td, + .tw-bs .table-responsive > .table > tbody > tr > td, + .tw-bs .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .tw-bs .table-responsive > .table-bordered { + border: 0; + } + .tw-bs .table-responsive > .table-bordered > thead > tr > th:first-child, + .tw-bs .table-responsive > .table-bordered > tbody > tr > th:first-child, + .tw-bs .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .tw-bs .table-responsive > .table-bordered > thead > tr > td:first-child, + .tw-bs .table-responsive > .table-bordered > tbody > tr > td:first-child, + .tw-bs .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .tw-bs .table-responsive > .table-bordered > thead > tr > th:last-child, + .tw-bs .table-responsive > .table-bordered > tbody > tr > th:last-child, + .tw-bs .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .tw-bs .table-responsive > .table-bordered > thead > tr > td:last-child, + .tw-bs .table-responsive > .table-bordered > tbody > tr > td:last-child, + .tw-bs .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .tw-bs .table-responsive > .table-bordered > thead > tr:last-child > th, + .tw-bs .table-responsive > .table-bordered > tbody > tr:last-child > th, + .tw-bs .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .tw-bs .table-responsive > .table-bordered > thead > tr:last-child > td, + .tw-bs .table-responsive > .table-bordered > tbody > tr:last-child > td, + .tw-bs .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +.tw-bs fieldset { + padding: 0; + margin: 0; + border: 0; +} +.tw-bs legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +.tw-bs label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} +.tw-bs input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.tw-bs input[type="radio"], +.tw-bs input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +.tw-bs input[type="file"] { + display: block; +} +.tw-bs select[multiple], +.tw-bs select[size] { + height: auto; +} +.tw-bs select optgroup { + font-size: inherit; + font-style: inherit; + font-family: inherit; +} +.tw-bs input[type="file"]:focus, +.tw-bs input[type="radio"]:focus, +.tw-bs input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.tw-bs input[type="number"]::-webkit-outer-spin-button, +.tw-bs input[type="number"]::-webkit-inner-spin-button { + height: auto; +} +.tw-bs .form-control:-moz-placeholder { + color: #999999; +} +.tw-bs .form-control::-moz-placeholder { + color: #999999; +} +.tw-bs .form-control:-ms-input-placeholder { + color: #999999; +} +.tw-bs .form-control::-webkit-input-placeholder { + color: #999999; +} +.tw-bs .form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.tw-bs .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.tw-bs .form-control[disabled], +.tw-bs .form-control[readonly], +fieldset[disabled] .tw-bs .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} +textarea.tw-bs .form-control { + height: auto; +} +.tw-bs .form-group { + margin-bottom: 15px; +} +.tw-bs .radio, +.tw-bs .checkbox { + display: block; + min-height: 20px; + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + vertical-align: middle; +} +.tw-bs .radio label, +.tw-bs .checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.tw-bs .radio input[type="radio"], +.tw-bs .radio-inline input[type="radio"], +.tw-bs .checkbox input[type="checkbox"], +.tw-bs .checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.tw-bs .radio + .radio, +.tw-bs .checkbox + .checkbox { + margin-top: -5px; +} +.tw-bs .radio-inline, +.tw-bs .checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.tw-bs .radio-inline + .radio-inline, +.tw-bs .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +.tw-bs input[type="radio"][disabled], +.tw-bs input[type="checkbox"][disabled], +.tw-bs .radio[disabled], +.tw-bs .radio-inline[disabled], +.tw-bs .checkbox[disabled], +.tw-bs .checkbox-inline[disabled], +fieldset[disabled] .tw-bs input[type="radio"], +fieldset[disabled] .tw-bs input[type="checkbox"], +fieldset[disabled] .tw-bs .radio, +fieldset[disabled] .tw-bs .radio-inline, +fieldset[disabled] .tw-bs .checkbox, +fieldset[disabled] .tw-bs .checkbox-inline { + cursor: not-allowed; +} +.tw-bs .input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.tw-bs .input-sm { + height: 30px; + line-height: 30px; +} +textarea.tw-bs .input-sm { + height: auto; +} +.tw-bs .input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.tw-bs .input-lg { + height: 45px; + line-height: 45px; +} +textarea.tw-bs .input-lg { + height: auto; +} +.tw-bs .has-warning .help-block, +.tw-bs .has-warning .control-label { + color: #c09853; +} +.tw-bs .has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.tw-bs .has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} +.tw-bs .has-warning .input-group-addon { + color: #c09853; + border-color: #c09853; + background-color: #fcf8e3; +} +.tw-bs .has-error .help-block, +.tw-bs .has-error .control-label { + color: #b94a48; +} +.tw-bs .has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.tw-bs .has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} +.tw-bs .has-error .input-group-addon { + color: #b94a48; + border-color: #b94a48; + background-color: #f2dede; +} +.tw-bs .has-success .help-block, +.tw-bs .has-success .control-label { + color: #468847; +} +.tw-bs .has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.tw-bs .has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} +.tw-bs .has-success .input-group-addon { + color: #468847; + border-color: #468847; + background-color: #dff0d8; +} +.tw-bs .form-control-static { + margin-bottom: 0; + padding-top: 7px; +} +.tw-bs .help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .tw-bs .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .tw-bs .form-inline .form-control { + display: inline-block; + } + .tw-bs .form-inline .radio, + .tw-bs .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + } + .tw-bs .form-inline .radio input[type="radio"], + .tw-bs .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} +.tw-bs .form-horizontal .control-label, +.tw-bs .form-horizontal .radio, +.tw-bs .form-horizontal .checkbox, +.tw-bs .form-horizontal .radio-inline, +.tw-bs .form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; +} +.tw-bs .form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +.tw-bs .form-horizontal .form-group:before, +.tw-bs .form-horizontal .form-group:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .form-horizontal .form-group:after { + clear: both; +} +.tw-bs .form-horizontal .form-group:before, +.tw-bs .form-horizontal .form-group:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .form-horizontal .form-group:after { + clear: both; +} +@media (min-width: 768px) { + .tw-bs .form-horizontal .control-label { + text-align: right; + } +} +.tw-bs .btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} +.tw-bs .btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.tw-bs .btn:hover, +.tw-bs .btn:focus { + color: #333333; + text-decoration: none; +} +.tw-bs .btn:active, +.tw-bs .btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.tw-bs .btn.disabled, +.tw-bs .btn[disabled], +fieldset[disabled] .tw-bs .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.tw-bs .btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} +.tw-bs .btn-default:hover, +.tw-bs .btn-default:focus, +.tw-bs .btn-default:active, +.tw-bs .btn-default.active, +.open .dropdown-toggle.tw-bs .btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} +.tw-bs .btn-default:active, +.tw-bs .btn-default.active, +.open .dropdown-toggle.tw-bs .btn-default { + background-image: none; +} +.tw-bs .btn-default.disabled, +.tw-bs .btn-default[disabled], +fieldset[disabled] .tw-bs .btn-default, +.tw-bs .btn-default.disabled:hover, +.tw-bs .btn-default[disabled]:hover, +fieldset[disabled] .tw-bs .btn-default:hover, +.tw-bs .btn-default.disabled:focus, +.tw-bs .btn-default[disabled]:focus, +fieldset[disabled] .tw-bs .btn-default:focus, +.tw-bs .btn-default.disabled:active, +.tw-bs .btn-default[disabled]:active, +fieldset[disabled] .tw-bs .btn-default:active, +.tw-bs .btn-default.disabled.active, +.tw-bs .btn-default[disabled].active, +fieldset[disabled] .tw-bs .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} +.tw-bs .btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} +.tw-bs .btn-primary:hover, +.tw-bs .btn-primary:focus, +.tw-bs .btn-primary:active, +.tw-bs .btn-primary.active, +.open .dropdown-toggle.tw-bs .btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} +.tw-bs .btn-primary:active, +.tw-bs .btn-primary.active, +.open .dropdown-toggle.tw-bs .btn-primary { + background-image: none; +} +.tw-bs .btn-primary.disabled, +.tw-bs .btn-primary[disabled], +fieldset[disabled] .tw-bs .btn-primary, +.tw-bs .btn-primary.disabled:hover, +.tw-bs .btn-primary[disabled]:hover, +fieldset[disabled] .tw-bs .btn-primary:hover, +.tw-bs .btn-primary.disabled:focus, +.tw-bs .btn-primary[disabled]:focus, +fieldset[disabled] .tw-bs .btn-primary:focus, +.tw-bs .btn-primary.disabled:active, +.tw-bs .btn-primary[disabled]:active, +fieldset[disabled] .tw-bs .btn-primary:active, +.tw-bs .btn-primary.disabled.active, +.tw-bs .btn-primary[disabled].active, +fieldset[disabled] .tw-bs .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} +.tw-bs .btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} +.tw-bs .btn-warning:hover, +.tw-bs .btn-warning:focus, +.tw-bs .btn-warning:active, +.tw-bs .btn-warning.active, +.open .dropdown-toggle.tw-bs .btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} +.tw-bs .btn-warning:active, +.tw-bs .btn-warning.active, +.open .dropdown-toggle.tw-bs .btn-warning { + background-image: none; +} +.tw-bs .btn-warning.disabled, +.tw-bs .btn-warning[disabled], +fieldset[disabled] .tw-bs .btn-warning, +.tw-bs .btn-warning.disabled:hover, +.tw-bs .btn-warning[disabled]:hover, +fieldset[disabled] .tw-bs .btn-warning:hover, +.tw-bs .btn-warning.disabled:focus, +.tw-bs .btn-warning[disabled]:focus, +fieldset[disabled] .tw-bs .btn-warning:focus, +.tw-bs .btn-warning.disabled:active, +.tw-bs .btn-warning[disabled]:active, +fieldset[disabled] .tw-bs .btn-warning:active, +.tw-bs .btn-warning.disabled.active, +.tw-bs .btn-warning[disabled].active, +fieldset[disabled] .tw-bs .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.tw-bs .btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} +.tw-bs .btn-danger:hover, +.tw-bs .btn-danger:focus, +.tw-bs .btn-danger:active, +.tw-bs .btn-danger.active, +.open .dropdown-toggle.tw-bs .btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} +.tw-bs .btn-danger:active, +.tw-bs .btn-danger.active, +.open .dropdown-toggle.tw-bs .btn-danger { + background-image: none; +} +.tw-bs .btn-danger.disabled, +.tw-bs .btn-danger[disabled], +fieldset[disabled] .tw-bs .btn-danger, +.tw-bs .btn-danger.disabled:hover, +.tw-bs .btn-danger[disabled]:hover, +fieldset[disabled] .tw-bs .btn-danger:hover, +.tw-bs .btn-danger.disabled:focus, +.tw-bs .btn-danger[disabled]:focus, +fieldset[disabled] .tw-bs .btn-danger:focus, +.tw-bs .btn-danger.disabled:active, +.tw-bs .btn-danger[disabled]:active, +fieldset[disabled] .tw-bs .btn-danger:active, +.tw-bs .btn-danger.disabled.active, +.tw-bs .btn-danger[disabled].active, +fieldset[disabled] .tw-bs .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.tw-bs .btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.tw-bs .btn-success:hover, +.tw-bs .btn-success:focus, +.tw-bs .btn-success:active, +.tw-bs .btn-success.active, +.open .dropdown-toggle.tw-bs .btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} +.tw-bs .btn-success:active, +.tw-bs .btn-success.active, +.open .dropdown-toggle.tw-bs .btn-success { + background-image: none; +} +.tw-bs .btn-success.disabled, +.tw-bs .btn-success[disabled], +fieldset[disabled] .tw-bs .btn-success, +.tw-bs .btn-success.disabled:hover, +.tw-bs .btn-success[disabled]:hover, +fieldset[disabled] .tw-bs .btn-success:hover, +.tw-bs .btn-success.disabled:focus, +.tw-bs .btn-success[disabled]:focus, +fieldset[disabled] .tw-bs .btn-success:focus, +.tw-bs .btn-success.disabled:active, +.tw-bs .btn-success[disabled]:active, +fieldset[disabled] .tw-bs .btn-success:active, +.tw-bs .btn-success.disabled.active, +.tw-bs .btn-success[disabled].active, +fieldset[disabled] .tw-bs .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.tw-bs .btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} +.tw-bs .btn-info:hover, +.tw-bs .btn-info:focus, +.tw-bs .btn-info:active, +.tw-bs .btn-info.active, +.open .dropdown-toggle.tw-bs .btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} +.tw-bs .btn-info:active, +.tw-bs .btn-info.active, +.open .dropdown-toggle.tw-bs .btn-info { + background-image: none; +} +.tw-bs .btn-info.disabled, +.tw-bs .btn-info[disabled], +fieldset[disabled] .tw-bs .btn-info, +.tw-bs .btn-info.disabled:hover, +.tw-bs .btn-info[disabled]:hover, +fieldset[disabled] .tw-bs .btn-info:hover, +.tw-bs .btn-info.disabled:focus, +.tw-bs .btn-info[disabled]:focus, +fieldset[disabled] .tw-bs .btn-info:focus, +.tw-bs .btn-info.disabled:active, +.tw-bs .btn-info[disabled]:active, +fieldset[disabled] .tw-bs .btn-info:active, +.tw-bs .btn-info.disabled.active, +.tw-bs .btn-info[disabled].active, +fieldset[disabled] .tw-bs .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.tw-bs .btn-link { + color: #428bca; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.tw-bs .btn-link, +.tw-bs .btn-link:active, +.tw-bs .btn-link[disabled], +fieldset[disabled] .tw-bs .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.tw-bs .btn-link, +.tw-bs .btn-link:hover, +.tw-bs .btn-link:focus, +.tw-bs .btn-link:active { + border-color: transparent; +} +.tw-bs .btn-link:hover, +.tw-bs .btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} +.tw-bs .btn-link[disabled]:hover, +fieldset[disabled] .tw-bs .btn-link:hover, +.tw-bs .btn-link[disabled]:focus, +fieldset[disabled] .tw-bs .btn-link:focus { + color: #999999; + text-decoration: none; +} +.tw-bs .btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.tw-bs .btn-sm, +.tw-bs .btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.tw-bs .btn-xs { + padding: 1px 5px; +} +.tw-bs .btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} +.tw-bs .btn-block + .btn-block { + margin-top: 5px; +} +.tw-bs input[type="submit"].btn-block, +.tw-bs input[type="reset"].btn-block, +.tw-bs input[type="button"].btn-block { + width: 100%; +} +.tw-bs .fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.tw-bs .fade.in { + opacity: 1; +} +.tw-bs .collapse { + display: none; +} +.tw-bs .collapse.in { + display: block; +} +.tw-bs .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); +} +.tw-bs .glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} +.tw-bs .glyphicon-asterisk:before { + content: "\2a"; +} +.tw-bs .glyphicon-plus:before { + content: "\2b"; +} +.tw-bs .glyphicon-euro:before { + content: "\20ac"; +} +.tw-bs .glyphicon-minus:before { + content: "\2212"; +} +.tw-bs .glyphicon-cloud:before { + content: "\2601"; +} +.tw-bs .glyphicon-envelope:before { + content: "\2709"; +} +.tw-bs .glyphicon-pencil:before { + content: "\270f"; +} +.tw-bs .glyphicon-glass:before { + content: "\e001"; +} +.tw-bs .glyphicon-music:before { + content: "\e002"; +} +.tw-bs .glyphicon-search:before { + content: "\e003"; +} +.tw-bs .glyphicon-heart:before { + content: "\e005"; +} +.tw-bs .glyphicon-star:before { + content: "\e006"; +} +.tw-bs .glyphicon-star-empty:before { + content: "\e007"; +} +.tw-bs .glyphicon-user:before { + content: "\e008"; +} +.tw-bs .glyphicon-film:before { + content: "\e009"; +} +.tw-bs .glyphicon-th-large:before { + content: "\e010"; +} +.tw-bs .glyphicon-th:before { + content: "\e011"; +} +.tw-bs .glyphicon-th-list:before { + content: "\e012"; +} +.tw-bs .glyphicon-ok:before { + content: "\e013"; +} +.tw-bs .glyphicon-remove:before { + content: "\e014"; +} +.tw-bs .glyphicon-zoom-in:before { + content: "\e015"; +} +.tw-bs .glyphicon-zoom-out:before { + content: "\e016"; +} +.tw-bs .glyphicon-off:before { + content: "\e017"; +} +.tw-bs .glyphicon-signal:before { + content: "\e018"; +} +.tw-bs .glyphicon-cog:before { + content: "\e019"; +} +.tw-bs .glyphicon-trash:before { + content: "\e020"; +} +.tw-bs .glyphicon-home:before { + content: "\e021"; +} +.tw-bs .glyphicon-file:before { + content: "\e022"; +} +.tw-bs .glyphicon-time:before { + content: "\e023"; +} +.tw-bs .glyphicon-road:before { + content: "\e024"; +} +.tw-bs .glyphicon-download-alt:before { + content: "\e025"; +} +.tw-bs .glyphicon-download:before { + content: "\e026"; +} +.tw-bs .glyphicon-upload:before { + content: "\e027"; +} +.tw-bs .glyphicon-inbox:before { + content: "\e028"; +} +.tw-bs .glyphicon-play-circle:before { + content: "\e029"; +} +.tw-bs .glyphicon-repeat:before { + content: "\e030"; +} +.tw-bs .glyphicon-refresh:before { + content: "\e031"; +} +.tw-bs .glyphicon-list-alt:before { + content: "\e032"; +} +.tw-bs .glyphicon-flag:before { + content: "\e034"; +} +.tw-bs .glyphicon-headphones:before { + content: "\e035"; +} +.tw-bs .glyphicon-volume-off:before { + content: "\e036"; +} +.tw-bs .glyphicon-volume-down:before { + content: "\e037"; +} +.tw-bs .glyphicon-volume-up:before { + content: "\e038"; +} +.tw-bs .glyphicon-qrcode:before { + content: "\e039"; +} +.tw-bs .glyphicon-barcode:before { + content: "\e040"; +} +.tw-bs .glyphicon-tag:before { + content: "\e041"; +} +.tw-bs .glyphicon-tags:before { + content: "\e042"; +} +.tw-bs .glyphicon-book:before { + content: "\e043"; +} +.tw-bs .glyphicon-print:before { + content: "\e045"; +} +.tw-bs .glyphicon-font:before { + content: "\e047"; +} +.tw-bs .glyphicon-bold:before { + content: "\e048"; +} +.tw-bs .glyphicon-italic:before { + content: "\e049"; +} +.tw-bs .glyphicon-text-height:before { + content: "\e050"; +} +.tw-bs .glyphicon-text-width:before { + content: "\e051"; +} +.tw-bs .glyphicon-align-left:before { + content: "\e052"; +} +.tw-bs .glyphicon-align-center:before { + content: "\e053"; +} +.tw-bs .glyphicon-align-right:before { + content: "\e054"; +} +.tw-bs .glyphicon-align-justify:before { + content: "\e055"; +} +.tw-bs .glyphicon-list:before { + content: "\e056"; +} +.tw-bs .glyphicon-indent-left:before { + content: "\e057"; +} +.tw-bs .glyphicon-indent-right:before { + content: "\e058"; +} +.tw-bs .glyphicon-facetime-video:before { + content: "\e059"; +} +.tw-bs .glyphicon-picture:before { + content: "\e060"; +} +.tw-bs .glyphicon-map-marker:before { + content: "\e062"; +} +.tw-bs .glyphicon-adjust:before { + content: "\e063"; +} +.tw-bs .glyphicon-tint:before { + content: "\e064"; +} +.tw-bs .glyphicon-edit:before { + content: "\e065"; +} +.tw-bs .glyphicon-share:before { + content: "\e066"; +} +.tw-bs .glyphicon-check:before { + content: "\e067"; +} +.tw-bs .glyphicon-move:before { + content: "\e068"; +} +.tw-bs .glyphicon-step-backward:before { + content: "\e069"; +} +.tw-bs .glyphicon-fast-backward:before { + content: "\e070"; +} +.tw-bs .glyphicon-backward:before { + content: "\e071"; +} +.tw-bs .glyphicon-play:before { + content: "\e072"; +} +.tw-bs .glyphicon-pause:before { + content: "\e073"; +} +.tw-bs .glyphicon-stop:before { + content: "\e074"; +} +.tw-bs .glyphicon-forward:before { + content: "\e075"; +} +.tw-bs .glyphicon-fast-forward:before { + content: "\e076"; +} +.tw-bs .glyphicon-step-forward:before { + content: "\e077"; +} +.tw-bs .glyphicon-eject:before { + content: "\e078"; +} +.tw-bs .glyphicon-chevron-left:before { + content: "\e079"; +} +.tw-bs .glyphicon-chevron-right:before { + content: "\e080"; +} +.tw-bs .glyphicon-plus-sign:before { + content: "\e081"; +} +.tw-bs .glyphicon-minus-sign:before { + content: "\e082"; +} +.tw-bs .glyphicon-remove-sign:before { + content: "\e083"; +} +.tw-bs .glyphicon-ok-sign:before { + content: "\e084"; +} +.tw-bs .glyphicon-question-sign:before { + content: "\e085"; +} +.tw-bs .glyphicon-info-sign:before { + content: "\e086"; +} +.tw-bs .glyphicon-screenshot:before { + content: "\e087"; +} +.tw-bs .glyphicon-remove-circle:before { + content: "\e088"; +} +.tw-bs .glyphicon-ok-circle:before { + content: "\e089"; +} +.tw-bs .glyphicon-ban-circle:before { + content: "\e090"; +} +.tw-bs .glyphicon-arrow-left:before { + content: "\e091"; +} +.tw-bs .glyphicon-arrow-right:before { + content: "\e092"; +} +.tw-bs .glyphicon-arrow-up:before { + content: "\e093"; +} +.tw-bs .glyphicon-arrow-down:before { + content: "\e094"; +} +.tw-bs .glyphicon-share-alt:before { + content: "\e095"; +} +.tw-bs .glyphicon-resize-full:before { + content: "\e096"; +} +.tw-bs .glyphicon-resize-small:before { + content: "\e097"; +} +.tw-bs .glyphicon-exclamation-sign:before { + content: "\e101"; +} +.tw-bs .glyphicon-gift:before { + content: "\e102"; +} +.tw-bs .glyphicon-leaf:before { + content: "\e103"; +} +.tw-bs .glyphicon-eye-open:before { + content: "\e105"; +} +.tw-bs .glyphicon-eye-close:before { + content: "\e106"; +} +.tw-bs .glyphicon-warning-sign:before { + content: "\e107"; +} +.tw-bs .glyphicon-plane:before { + content: "\e108"; +} +.tw-bs .glyphicon-random:before { + content: "\e110"; +} +.tw-bs .glyphicon-comment:before { + content: "\e111"; +} +.tw-bs .glyphicon-magnet:before { + content: "\e112"; +} +.tw-bs .glyphicon-chevron-up:before { + content: "\e113"; +} +.tw-bs .glyphicon-chevron-down:before { + content: "\e114"; +} +.tw-bs .glyphicon-retweet:before { + content: "\e115"; +} +.tw-bs .glyphicon-shopping-cart:before { + content: "\e116"; +} +.tw-bs .glyphicon-folder-close:before { + content: "\e117"; +} +.tw-bs .glyphicon-folder-open:before { + content: "\e118"; +} +.tw-bs .glyphicon-resize-vertical:before { + content: "\e119"; +} +.tw-bs .glyphicon-resize-horizontal:before { + content: "\e120"; +} +.tw-bs .glyphicon-hdd:before { + content: "\e121"; +} +.tw-bs .glyphicon-bullhorn:before { + content: "\e122"; +} +.tw-bs .glyphicon-certificate:before { + content: "\e124"; +} +.tw-bs .glyphicon-thumbs-up:before { + content: "\e125"; +} +.tw-bs .glyphicon-thumbs-down:before { + content: "\e126"; +} +.tw-bs .glyphicon-hand-right:before { + content: "\e127"; +} +.tw-bs .glyphicon-hand-left:before { + content: "\e128"; +} +.tw-bs .glyphicon-hand-up:before { + content: "\e129"; +} +.tw-bs .glyphicon-hand-down:before { + content: "\e130"; +} +.tw-bs .glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.tw-bs .glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.tw-bs .glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.tw-bs .glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.tw-bs .glyphicon-globe:before { + content: "\e135"; +} +.tw-bs .glyphicon-tasks:before { + content: "\e137"; +} +.tw-bs .glyphicon-filter:before { + content: "\e138"; +} +.tw-bs .glyphicon-fullscreen:before { + content: "\e140"; +} +.tw-bs .glyphicon-dashboard:before { + content: "\e141"; +} +.tw-bs .glyphicon-heart-empty:before { + content: "\e143"; +} +.tw-bs .glyphicon-link:before { + content: "\e144"; +} +.tw-bs .glyphicon-phone:before { + content: "\e145"; +} +.tw-bs .glyphicon-usd:before { + content: "\e148"; +} +.tw-bs .glyphicon-gbp:before { + content: "\e149"; +} +.tw-bs .glyphicon-sort:before { + content: "\e150"; +} +.tw-bs .glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.tw-bs .glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.tw-bs .glyphicon-sort-by-order:before { + content: "\e153"; +} +.tw-bs .glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.tw-bs .glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.tw-bs .glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.tw-bs .glyphicon-unchecked:before { + content: "\e157"; +} +.tw-bs .glyphicon-expand:before { + content: "\e158"; +} +.tw-bs .glyphicon-collapse-down:before { + content: "\e159"; +} +.tw-bs .glyphicon-collapse-up:before { + content: "\e160"; +} +.tw-bs .glyphicon-log-in:before { + content: "\e161"; +} +.tw-bs .glyphicon-flash:before { + content: "\e162"; +} +.tw-bs .glyphicon-log-out:before { + content: "\e163"; +} +.tw-bs .glyphicon-new-window:before { + content: "\e164"; +} +.tw-bs .glyphicon-record:before { + content: "\e165"; +} +.tw-bs .glyphicon-save:before { + content: "\e166"; +} +.tw-bs .glyphicon-open:before { + content: "\e167"; +} +.tw-bs .glyphicon-saved:before { + content: "\e168"; +} +.tw-bs .glyphicon-import:before { + content: "\e169"; +} +.tw-bs .glyphicon-export:before { + content: "\e170"; +} +.tw-bs .glyphicon-send:before { + content: "\e171"; +} +.tw-bs .glyphicon-floppy-disk:before { + content: "\e172"; +} +.tw-bs .glyphicon-floppy-saved:before { + content: "\e173"; +} +.tw-bs .glyphicon-floppy-remove:before { + content: "\e174"; +} +.tw-bs .glyphicon-floppy-save:before { + content: "\e175"; +} +.tw-bs .glyphicon-floppy-open:before { + content: "\e176"; +} +.tw-bs .glyphicon-credit-card:before { + content: "\e177"; +} +.tw-bs .glyphicon-transfer:before { + content: "\e178"; +} +.tw-bs .glyphicon-cutlery:before { + content: "\e179"; +} +.tw-bs .glyphicon-header:before { + content: "\e180"; +} +.tw-bs .glyphicon-compressed:before { + content: "\e181"; +} +.tw-bs .glyphicon-earphone:before { + content: "\e182"; +} +.tw-bs .glyphicon-phone-alt:before { + content: "\e183"; +} +.tw-bs .glyphicon-tower:before { + content: "\e184"; +} +.tw-bs .glyphicon-stats:before { + content: "\e185"; +} +.tw-bs .glyphicon-sd-video:before { + content: "\e186"; +} +.tw-bs .glyphicon-hd-video:before { + content: "\e187"; +} +.tw-bs .glyphicon-subtitles:before { + content: "\e188"; +} +.tw-bs .glyphicon-sound-stereo:before { + content: "\e189"; +} +.tw-bs .glyphicon-sound-dolby:before { + content: "\e190"; +} +.tw-bs .glyphicon-sound-5-1:before { + content: "\e191"; +} +.tw-bs .glyphicon-sound-6-1:before { + content: "\e192"; +} +.tw-bs .glyphicon-sound-7-1:before { + content: "\e193"; +} +.tw-bs .glyphicon-copyright-mark:before { + content: "\e194"; +} +.tw-bs .glyphicon-registration-mark:before { + content: "\e195"; +} +.tw-bs .glyphicon-cloud-download:before { + content: "\e197"; +} +.tw-bs .glyphicon-cloud-upload:before { + content: "\e198"; +} +.tw-bs .glyphicon-tree-conifer:before { + content: "\e199"; +} +.tw-bs .glyphicon-tree-deciduous:before { + content: "\e200"; +} +.tw-bs .glyphicon-briefcase:before { + content: "\1f4bc"; +} +.tw-bs .glyphicon-calendar:before { + content: "\1f4c5"; +} +.tw-bs .glyphicon-pushpin:before { + content: "\1f4cc"; +} +.tw-bs .glyphicon-paperclip:before { + content: "\1f4ce"; +} +.tw-bs .glyphicon-camera:before { + content: "\1f4f7"; +} +.tw-bs .glyphicon-lock:before { + content: "\1f512"; +} +.tw-bs .glyphicon-bell:before { + content: "\1f514"; +} +.tw-bs .glyphicon-bookmark:before { + content: "\1f516"; +} +.tw-bs .glyphicon-fire:before { + content: "\1f525"; +} +.tw-bs .glyphicon-wrench:before { + content: "\1f527"; +} +.tw-bs .caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + border-bottom: 0 dotted; + content: ""; +} +.tw-bs .dropdown { + position: relative; +} +.tw-bs .dropdown-toggle:focus { + outline: 0; +} +.tw-bs .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.tw-bs .dropdown-menu.pull-right { + right: 0; + left: auto; +} +.tw-bs .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.tw-bs .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} +.tw-bs .dropdown-menu > li > a:hover, +.tw-bs .dropdown-menu > li > a:focus { + text-decoration: none; + color: #ffffff; + background-color: #428bca; +} +.tw-bs .dropdown-menu > .active > a, +.tw-bs .dropdown-menu > .active > a:hover, +.tw-bs .dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #428bca; +} +.tw-bs .dropdown-menu > .disabled > a, +.tw-bs .dropdown-menu > .disabled > a:hover, +.tw-bs .dropdown-menu > .disabled > a:focus { + color: #999999; +} +.tw-bs .dropdown-menu > .disabled > a:hover, +.tw-bs .dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.tw-bs .open > .dropdown-menu { + display: block; +} +.tw-bs .open > a { + outline: 0; +} +.tw-bs .dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} +.tw-bs .dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.tw-bs .pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.tw-bs .dropup .caret, +.tw-bs .navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} +.tw-bs .dropup .dropdown-menu, +.tw-bs .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .tw-bs .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} +.btn-default .tw-bs .caret { + border-top-color: #333333; +} +.btn-primary .tw-bs .caret, +.btn-success .tw-bs .caret, +.btn-warning .tw-bs .caret, +.btn-danger .tw-bs .caret, +.btn-info .tw-bs .caret { + border-top-color: #fff; +} +.tw-bs .dropup .btn-default .caret { + border-bottom-color: #333333; +} +.tw-bs .dropup .btn-primary .caret, +.tw-bs .dropup .btn-success .caret, +.tw-bs .dropup .btn-warning .caret, +.tw-bs .dropup .btn-danger .caret, +.tw-bs .dropup .btn-info .caret { + border-bottom-color: #fff; +} +.tw-bs .btn-group, +.tw-bs .btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.tw-bs .btn-group > .btn, +.tw-bs .btn-group-vertical > .btn { + position: relative; + float: left; +} +.tw-bs .btn-group > .btn:hover, +.tw-bs .btn-group-vertical > .btn:hover, +.tw-bs .btn-group > .btn:focus, +.tw-bs .btn-group-vertical > .btn:focus, +.tw-bs .btn-group > .btn:active, +.tw-bs .btn-group-vertical > .btn:active, +.tw-bs .btn-group > .btn.active, +.tw-bs .btn-group-vertical > .btn.active { + z-index: 2; +} +.tw-bs .btn-group > .btn:focus, +.tw-bs .btn-group-vertical > .btn:focus { + outline: none; +} +.tw-bs .btn-group .btn + .btn, +.tw-bs .btn-group .btn + .btn-group, +.tw-bs .btn-group .btn-group + .btn, +.tw-bs .btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.tw-bs .btn-toolbar:before, +.tw-bs .btn-toolbar:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .btn-toolbar:after { + clear: both; +} +.tw-bs .btn-toolbar:before, +.tw-bs .btn-toolbar:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .btn-toolbar:after { + clear: both; +} +.tw-bs .btn-toolbar .btn-group { + float: left; +} +.tw-bs .btn-toolbar > .btn + .btn, +.tw-bs .btn-toolbar > .btn-group + .btn, +.tw-bs .btn-toolbar > .btn + .btn-group, +.tw-bs .btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} +.tw-bs .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.tw-bs .btn-group > .btn:first-child { + margin-left: 0; +} +.tw-bs .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.tw-bs .btn-group > .btn:last-child:not(:first-child), +.tw-bs .btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .btn-group > .btn-group { + float: left; +} +.tw-bs .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.tw-bs .btn-group > .btn-group:first-child > .btn:last-child, +.tw-bs .btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.tw-bs .btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .btn-group .dropdown-toggle:active, +.tw-bs .btn-group.open .dropdown-toggle { + outline: 0; +} +.tw-bs .btn-group-xs > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + padding: 1px 5px; +} +.tw-bs .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.tw-bs .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.tw-bs .btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.tw-bs .btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.tw-bs .btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.tw-bs .btn .caret { + margin-left: 0; +} +.tw-bs .btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.tw-bs .dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.tw-bs .btn-group-vertical > .btn, +.tw-bs .btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.tw-bs .btn-group-vertical > .btn-group:before, +.tw-bs .btn-group-vertical > .btn-group:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .btn-group-vertical > .btn-group:after { + clear: both; +} +.tw-bs .btn-group-vertical > .btn-group:before, +.tw-bs .btn-group-vertical > .btn-group:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .btn-group-vertical > .btn-group:after { + clear: both; +} +.tw-bs .btn-group-vertical > .btn-group > .btn { + float: none; +} +.tw-bs .btn-group-vertical > .btn + .btn, +.tw-bs .btn-group-vertical > .btn + .btn-group, +.tw-bs .btn-group-vertical > .btn-group + .btn, +.tw-bs .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.tw-bs .btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.tw-bs .btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.tw-bs .btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.tw-bs .btn-group-vertical > .btn-group:first-child > .btn:last-child, +.tw-bs .btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.tw-bs .btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.tw-bs .btn-group-justified .btn { + float: none; + display: table-cell; + width: 1%; +} +.tw-bs [data-toggle="buttons"] > .btn > input[type="radio"], +.tw-bs [data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} +.tw-bs .input-group { + position: relative; + display: table; + border-collapse: separate; +} +.tw-bs .input-group.col { + float: none; + padding-left: 0; + padding-right: 0; +} +.tw-bs .input-group .form-control { + width: 100%; + margin-bottom: 0; +} +.tw-bs .input-group-lg > .form-control, +.tw-bs .input-group-lg > .input-group-addon, +.tw-bs .input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.tw-bs .input-group-lg > .form-control, +select.tw-bs .input-group-lg > .input-group-addon, +select.tw-bs .input-group-lg > .input-group-btn > .btn { + height: 45px; + line-height: 45px; +} +textarea.tw-bs .input-group-lg > .form-control, +textarea.tw-bs .input-group-lg > .input-group-addon, +textarea.tw-bs .input-group-lg > .input-group-btn > .btn { + height: auto; +} +.tw-bs .input-group-sm > .form-control, +.tw-bs .input-group-sm > .input-group-addon, +.tw-bs .input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.tw-bs .input-group-sm > .form-control, +select.tw-bs .input-group-sm > .input-group-addon, +select.tw-bs .input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.tw-bs .input-group-sm > .form-control, +textarea.tw-bs .input-group-sm > .input-group-addon, +textarea.tw-bs .input-group-sm > .input-group-btn > .btn { + height: auto; +} +.tw-bs .input-group-addon, +.tw-bs .input-group-btn, +.tw-bs .input-group .form-control { + display: table-cell; +} +.tw-bs .input-group-addon:not(:first-child):not(:last-child), +.tw-bs .input-group-btn:not(:first-child):not(:last-child), +.tw-bs .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.tw-bs .input-group-addon, +.tw-bs .input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.tw-bs .input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} +.tw-bs .input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.tw-bs .input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.tw-bs .input-group-addon input[type="radio"], +.tw-bs .input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.tw-bs .input-group .form-control:first-child, +.tw-bs .input-group-addon:first-child, +.tw-bs .input-group-btn:first-child > .btn, +.tw-bs .input-group-btn:first-child > .dropdown-toggle, +.tw-bs .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.tw-bs .input-group-addon:first-child { + border-right: 0; +} +.tw-bs .input-group .form-control:last-child, +.tw-bs .input-group-addon:last-child, +.tw-bs .input-group-btn:last-child > .btn, +.tw-bs .input-group-btn:last-child > .dropdown-toggle, +.tw-bs .input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .input-group-addon:last-child { + border-left: 0; +} +.tw-bs .input-group-btn { + position: relative; + white-space: nowrap; +} +.tw-bs .input-group-btn > .btn { + position: relative; +} +.tw-bs .input-group-btn > .btn + .btn { + margin-left: -4px; +} +.tw-bs .input-group-btn > .btn:hover, +.tw-bs .input-group-btn > .btn:active { + z-index: 2; +} +.tw-bs .nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.tw-bs .nav:before, +.tw-bs .nav:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .nav:after { + clear: both; +} +.tw-bs .nav:before, +.tw-bs .nav:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .nav:after { + clear: both; +} +.tw-bs .nav > li { + position: relative; + display: block; +} +.tw-bs .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.tw-bs .nav > li > a:hover, +.tw-bs .nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.tw-bs .nav > li.disabled > a { + color: #999999; +} +.tw-bs .nav > li.disabled > a:hover, +.tw-bs .nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.tw-bs .nav .open > a, +.tw-bs .nav .open > a:hover, +.tw-bs .nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} +.tw-bs .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.tw-bs .nav > li > a > img { + max-width: none; +} +.tw-bs .nav-tabs { + border-bottom: 1px solid #dddddd; +} +.tw-bs .nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.tw-bs .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.tw-bs .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.tw-bs .nav-tabs > li.active > a, +.tw-bs .nav-tabs > li.active > a:hover, +.tw-bs .nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.tw-bs .nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.tw-bs .nav-tabs.nav-justified > li { + float: none; +} +.tw-bs .nav-tabs.nav-justified > li > a { + text-align: center; +} +@media (min-width: 768px) { + .tw-bs .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} +.tw-bs .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + margin-right: 0; +} +.tw-bs .nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} +.tw-bs .nav-pills > li { + float: left; +} +.tw-bs .nav-pills > li > a { + border-radius: 5px; +} +.tw-bs .nav-pills > li + li { + margin-left: 2px; +} +.tw-bs .nav-pills > li.active > a, +.tw-bs .nav-pills > li.active > a:hover, +.tw-bs .nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} +.tw-bs .nav-stacked > li { + float: none; +} +.tw-bs .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.tw-bs .nav-justified { + width: 100%; +} +.tw-bs .nav-justified > li { + float: none; +} +.tw-bs .nav-justified > li > a { + text-align: center; +} +@media (min-width: 768px) { + .tw-bs .nav-justified > li { + display: table-cell; + width: 1%; + } +} +.tw-bs .nav-tabs-justified { + border-bottom: 0; +} +.tw-bs .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + margin-right: 0; +} +.tw-bs .nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} +.tw-bs .tabbable:before, +.tw-bs .tabbable:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .tabbable:after { + clear: both; +} +.tw-bs .tabbable:before, +.tw-bs .tabbable:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .tabbable:after { + clear: both; +} +.tw-bs .tab-content > .tab-pane, +.tw-bs .pill-content > .pill-pane { + display: none; +} +.tw-bs .tab-content > .active, +.tw-bs .pill-content > .active { + display: block; +} +.tw-bs .nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} +.tw-bs .nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} +.tw-bs .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +.tw-bs .navbar:before, +.tw-bs .navbar:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar:after { + clear: both; +} +.tw-bs .navbar:before, +.tw-bs .navbar:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar:after { + clear: both; +} +@media (min-width: 768px) { + .tw-bs .navbar { + border-radius: 4px; + } +} +.tw-bs .navbar-header:before, +.tw-bs .navbar-header:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar-header:after { + clear: both; +} +.tw-bs .navbar-header:before, +.tw-bs .navbar-header:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar-header:after { + clear: both; +} +@media (min-width: 768px) { + .tw-bs .navbar-header { + float: left; + } +} +.tw-bs .navbar-collapse { + max-height: 340px; + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.tw-bs .navbar-collapse:before, +.tw-bs .navbar-collapse:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar-collapse:after { + clear: both; +} +.tw-bs .navbar-collapse:before, +.tw-bs .navbar-collapse:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .navbar-collapse:after { + clear: both; +} +.tw-bs .navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .tw-bs .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .tw-bs .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .tw-bs .navbar-collapse.in { + overflow-y: visible; + } + .tw-bs .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .tw-bs .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .tw-bs .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} +.tw-bs .container > .navbar-header, +.tw-bs .container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .tw-bs .container > .navbar-header, + .tw-bs .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.tw-bs .navbar-static-top { + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .tw-bs .navbar-static-top { + border-radius: 0; + } +} +.tw-bs .navbar-fixed-top, +.tw-bs .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .tw-bs .navbar-fixed-top, + .tw-bs .navbar-fixed-bottom { + border-radius: 0; + } +} +.tw-bs .navbar-fixed-top { + z-index: 1030; + top: 0; +} +.tw-bs .navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} +.tw-bs .navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.tw-bs .navbar-brand:hover, +.tw-bs .navbar-brand:focus { + text-decoration: none; +} +@media (min-width: 768px) { + .navbar > .container .tw-bs .navbar-brand { + margin-left: -15px; + } +} +.tw-bs .navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; +} +.tw-bs .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.tw-bs .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .tw-bs .navbar-toggle { + display: none; + } +} +.tw-bs .navbar-nav { + margin: 7.5px -15px; +} +.tw-bs .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .tw-bs .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .tw-bs .navbar-nav .open .dropdown-menu > li > a, + .tw-bs .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .tw-bs .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .tw-bs .navbar-nav .open .dropdown-menu > li > a:hover, + .tw-bs .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .tw-bs .navbar-nav { + float: left; + margin: 0; + } + .tw-bs .navbar-nav > li { + float: left; + } + .tw-bs .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +@media (min-width: 768px) { + .tw-bs .navbar-left { + float: left !important; + } + .tw-bs .navbar-right { + float: right !important; + } +} +.tw-bs .navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@media (min-width: 768px) { + .tw-bs .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .tw-bs .navbar-form .form-control { + display: inline-block; + } + .tw-bs .navbar-form .radio, + .tw-bs .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + } + .tw-bs .navbar-form .radio input[type="radio"], + .tw-bs .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} +@media (max-width: 767px) { + .tw-bs .navbar-form .form-group { + margin-bottom: 5px; + } +} +@media (min-width: 768px) { + .tw-bs .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.tw-bs .navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.tw-bs .navbar-nav.pull-right > li > .dropdown-menu, +.tw-bs .navbar-nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} +.tw-bs .navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.tw-bs .navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .tw-bs .navbar-text { + margin-left: 15px; + margin-right: 15px; + } +} +.tw-bs .navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.tw-bs .navbar-default .navbar-brand { + color: #777777; +} +.tw-bs .navbar-default .navbar-brand:hover, +.tw-bs .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.tw-bs .navbar-default .navbar-text { + color: #777777; +} +.tw-bs .navbar-default .navbar-nav > li > a { + color: #777777; +} +.tw-bs .navbar-default .navbar-nav > li > a:hover, +.tw-bs .navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} +.tw-bs .navbar-default .navbar-nav > .active > a, +.tw-bs .navbar-default .navbar-nav > .active > a:hover, +.tw-bs .navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} +.tw-bs .navbar-default .navbar-nav > .disabled > a, +.tw-bs .navbar-default .navbar-nav > .disabled > a:hover, +.tw-bs .navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.tw-bs .navbar-default .navbar-toggle { + border-color: #dddddd; +} +.tw-bs .navbar-default .navbar-toggle:hover, +.tw-bs .navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} +.tw-bs .navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} +.tw-bs .navbar-default .navbar-collapse, +.tw-bs .navbar-default .navbar-form { + border-color: #e6e6e6; +} +.tw-bs .navbar-default .navbar-nav > .dropdown > a:hover .caret, +.tw-bs .navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} +.tw-bs .navbar-default .navbar-nav > .open > a, +.tw-bs .navbar-default .navbar-nav > .open > a:hover, +.tw-bs .navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555555; +} +.tw-bs .navbar-default .navbar-nav > .open > a .caret, +.tw-bs .navbar-default .navbar-nav > .open > a:hover .caret, +.tw-bs .navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.tw-bs .navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} +@media (max-width: 767px) { + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .tw-bs .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.tw-bs .navbar-default .navbar-link { + color: #777777; +} +.tw-bs .navbar-default .navbar-link:hover { + color: #333333; +} +.tw-bs .navbar-inverse { + background-color: #222222; + border-color: #080808; +} +.tw-bs .navbar-inverse .navbar-brand { + color: #999999; +} +.tw-bs .navbar-inverse .navbar-brand:hover, +.tw-bs .navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.tw-bs .navbar-inverse .navbar-text { + color: #999999; +} +.tw-bs .navbar-inverse .navbar-nav > li > a { + color: #999999; +} +.tw-bs .navbar-inverse .navbar-nav > li > a:hover, +.tw-bs .navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.tw-bs .navbar-inverse .navbar-nav > .active > a, +.tw-bs .navbar-inverse .navbar-nav > .active > a:hover, +.tw-bs .navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} +.tw-bs .navbar-inverse .navbar-nav > .disabled > a, +.tw-bs .navbar-inverse .navbar-nav > .disabled > a:hover, +.tw-bs .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.tw-bs .navbar-inverse .navbar-toggle { + border-color: #333333; +} +.tw-bs .navbar-inverse .navbar-toggle:hover, +.tw-bs .navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} +.tw-bs .navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.tw-bs .navbar-inverse .navbar-collapse, +.tw-bs .navbar-inverse .navbar-form { + border-color: #101010; +} +.tw-bs .navbar-inverse .navbar-nav > .open > a, +.tw-bs .navbar-inverse .navbar-nav > .open > a:hover, +.tw-bs .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #080808; + color: #ffffff; +} +.tw-bs .navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.tw-bs .navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} +.tw-bs .navbar-inverse .navbar-nav > .open > a .caret, +.tw-bs .navbar-inverse .navbar-nav > .open > a:hover .caret, +.tw-bs .navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +@media (max-width: 767px) { + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .tw-bs .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} +.tw-bs .navbar-inverse .navbar-link { + color: #999999; +} +.tw-bs .navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.tw-bs .breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.tw-bs .breadcrumb > li { + display: inline-block; +} +.tw-bs .breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.tw-bs .breadcrumb > .active { + color: #999999; +} +.tw-bs .pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.tw-bs .pagination > li { + display: inline; +} +.tw-bs .pagination > li > a, +.tw-bs .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.tw-bs .pagination > li:first-child > a, +.tw-bs .pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.tw-bs .pagination > li:last-child > a, +.tw-bs .pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.tw-bs .pagination > li > a:hover, +.tw-bs .pagination > li > span:hover, +.tw-bs .pagination > li > a:focus, +.tw-bs .pagination > li > span:focus { + background-color: #eeeeee; +} +.tw-bs .pagination > .active > a, +.tw-bs .pagination > .active > span, +.tw-bs .pagination > .active > a:hover, +.tw-bs .pagination > .active > span:hover, +.tw-bs .pagination > .active > a:focus, +.tw-bs .pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; + cursor: default; +} +.tw-bs .pagination > .disabled > span, +.tw-bs .pagination > .disabled > a, +.tw-bs .pagination > .disabled > a:hover, +.tw-bs .pagination > .disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.tw-bs .pagination-lg > li > a, +.tw-bs .pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.tw-bs .pagination-lg > li:first-child > a, +.tw-bs .pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.tw-bs .pagination-lg > li:last-child > a, +.tw-bs .pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.tw-bs .pagination-sm > li > a, +.tw-bs .pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.tw-bs .pagination-sm > li:first-child > a, +.tw-bs .pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.tw-bs .pagination-sm > li:last-child > a, +.tw-bs .pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.tw-bs .pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.tw-bs .pager:before, +.tw-bs .pager:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .pager:after { + clear: both; +} +.tw-bs .pager:before, +.tw-bs .pager:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .pager:after { + clear: both; +} +.tw-bs .pager li { + display: inline; +} +.tw-bs .pager li > a, +.tw-bs .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.tw-bs .pager li > a:hover, +.tw-bs .pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.tw-bs .pager .next > a, +.tw-bs .pager .next > span { + float: right; +} +.tw-bs .pager .previous > a, +.tw-bs .pager .previous > span { + float: left; +} +.tw-bs .pager .disabled > a, +.tw-bs .pager .disabled > a:hover, +.tw-bs .pager .disabled > a:focus, +.tw-bs .pager .disabled > span { + color: #999999; + background-color: #ffffff; + cursor: not-allowed; +} +.tw-bs .label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +.tw-bs .label[href]:hover, +.tw-bs .label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.tw-bs .label:empty { + display: none; +} +.tw-bs .label-default { + background-color: #999999; +} +.tw-bs .label-default[href]:hover, +.tw-bs .label-default[href]:focus { + background-color: #808080; +} +.tw-bs .label-primary { + background-color: #428bca; +} +.tw-bs .label-primary[href]:hover, +.tw-bs .label-primary[href]:focus { + background-color: #3071a9; +} +.tw-bs .label-success { + background-color: #5cb85c; +} +.tw-bs .label-success[href]:hover, +.tw-bs .label-success[href]:focus { + background-color: #449d44; +} +.tw-bs .label-info { + background-color: #5bc0de; +} +.tw-bs .label-info[href]:hover, +.tw-bs .label-info[href]:focus { + background-color: #31b0d5; +} +.tw-bs .label-warning { + background-color: #f0ad4e; +} +.tw-bs .label-warning[href]:hover, +.tw-bs .label-warning[href]:focus { + background-color: #ec971f; +} +.tw-bs .label-danger { + background-color: #d9534f; +} +.tw-bs .label-danger[href]:hover, +.tw-bs .label-danger[href]:focus { + background-color: #c9302c; +} +.tw-bs .badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #999999; + border-radius: 10px; +} +.tw-bs .badge:empty { + display: none; +} +.tw-bs a.badge:hover, +.tw-bs a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.tw-bs .btn .badge { + position: relative; + top: -1px; +} +.tw-bs a.list-group-item.active > .badge, +.tw-bs .nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} +.tw-bs .nav-pills > li > a > .badge { + margin-left: 3px; +} +.tw-bs .jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} +.tw-bs .jumbotron h1 { + line-height: 1; + color: inherit; +} +.tw-bs .jumbotron p { + line-height: 1.4; +} +.container .tw-bs .jumbotron { + border-radius: 6px; +} +@media screen and (min-width: 768px) { + .tw-bs .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .tw-bs .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .tw-bs .jumbotron h1 { + font-size: 63px; + } +} +.tw-bs .thumbnail { + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; + display: block; +} +.tw-bs .thumbnail > img { + display: block; + max-width: 100%; + height: auto; +} +.tw-bs a.thumbnail:hover, +.tw-bs a.thumbnail:focus { + border-color: #428bca; +} +.tw-bs .thumbnail > img { + margin-left: auto; + margin-right: auto; +} +.tw-bs .thumbnail .caption { + padding: 9px; + color: #333333; +} +.tw-bs .alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.tw-bs .alert h4 { + margin-top: 0; + color: inherit; +} +.tw-bs .alert .alert-link { + font-weight: bold; +} +.tw-bs .alert > p, +.tw-bs .alert > ul { + margin-bottom: 0; +} +.tw-bs .alert > p + p { + margin-top: 5px; +} +.tw-bs .alert-dismissable { + padding-right: 35px; +} +.tw-bs .alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.tw-bs .alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} +.tw-bs .alert-success hr { + border-top-color: #c9e2b3; +} +.tw-bs .alert-success .alert-link { + color: #356635; +} +.tw-bs .alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} +.tw-bs .alert-info hr { + border-top-color: #a6e1ec; +} +.tw-bs .alert-info .alert-link { + color: #2d6987; +} +.tw-bs .alert-warning { + background-color: #fcf8e3; + border-color: #fbeed5; + color: #c09853; +} +.tw-bs .alert-warning hr { + border-top-color: #f8e5be; +} +.tw-bs .alert-warning .alert-link { + color: #a47e3c; +} +.tw-bs .alert-danger { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.tw-bs .alert-danger hr { + border-top-color: #e6c1c7; +} +.tw-bs .alert-danger .alert-link { + color: #953b39; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.tw-bs .progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.tw-bs .progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.tw-bs .progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.tw-bs .progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.tw-bs .progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .tw-bs .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.tw-bs .progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .tw-bs .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.tw-bs .progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .tw-bs .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.tw-bs .progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .tw-bs .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.tw-bs .media, +.tw-bs .media-body { + overflow: hidden; + zoom: 1; +} +.tw-bs .media, +.tw-bs .media .media { + margin-top: 15px; +} +.tw-bs .media:first-child { + margin-top: 0; +} +.tw-bs .media-object { + display: block; +} +.tw-bs .media-heading { + margin: 0 0 5px; +} +.tw-bs .media > .pull-left { + margin-right: 10px; +} +.tw-bs .media > .pull-right { + margin-left: 10px; +} +.tw-bs .media-list { + padding-left: 0; + list-style: none; +} +.tw-bs .list-group { + margin-bottom: 20px; + padding-left: 0; +} +.tw-bs .list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.tw-bs .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.tw-bs .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.tw-bs .list-group-item > .badge { + float: right; +} +.tw-bs .list-group-item > .badge + .badge { + margin-right: 5px; +} +a.tw-bs .list-group-item { + color: #555555; +} +a.tw-bs .list-group-item .list-group-item-heading { + color: #333333; +} +a.tw-bs .list-group-item:hover, +a.tw-bs .list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} +.tw-bs .list-group-item.active, +.tw-bs .list-group-item.active:hover, +.tw-bs .list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} +.tw-bs .list-group-item.active .list-group-item-heading, +.tw-bs .list-group-item.active:hover .list-group-item-heading, +.tw-bs .list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +.tw-bs .list-group-item.active .list-group-item-text, +.tw-bs .list-group-item.active:hover .list-group-item-text, +.tw-bs .list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} +.tw-bs .list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.tw-bs .list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.tw-bs .panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.tw-bs .panel-body { + padding: 15px; +} +.tw-bs .panel-body:before, +.tw-bs .panel-body:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .panel-body:after { + clear: both; +} +.tw-bs .panel-body:before, +.tw-bs .panel-body:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .panel-body:after { + clear: both; +} +.tw-bs .panel > .list-group { + margin-bottom: 0; +} +.tw-bs .panel > .list-group .list-group-item { + border-width: 1px 0; +} +.tw-bs .panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.tw-bs .panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} +.tw-bs .panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.tw-bs .panel > .table { + margin-bottom: 0; +} +.tw-bs .panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} +.tw-bs .panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.tw-bs .panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} +.tw-bs .panel-title > a { + color: inherit; +} +.tw-bs .panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.tw-bs .panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + overflow: hidden; +} +.tw-bs .panel-group .panel + .panel { + margin-top: 5px; +} +.tw-bs .panel-group .panel-heading { + border-bottom: 0; +} +.tw-bs .panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} +.tw-bs .panel-group .panel-footer { + border-top: 0; +} +.tw-bs .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.tw-bs .panel-default { + border-color: #dddddd; +} +.tw-bs .panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.tw-bs .panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} +.tw-bs .panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} +.tw-bs .panel-primary { + border-color: #428bca; +} +.tw-bs .panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} +.tw-bs .panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} +.tw-bs .panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} +.tw-bs .panel-success { + border-color: #d6e9c6; +} +.tw-bs .panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.tw-bs .panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} +.tw-bs .panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} +.tw-bs .panel-warning { + border-color: #fbeed5; +} +.tw-bs .panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} +.tw-bs .panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} +.tw-bs .panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} +.tw-bs .panel-danger { + border-color: #eed3d7; +} +.tw-bs .panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} +.tw-bs .panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} +.tw-bs .panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} +.tw-bs .panel-info { + border-color: #bce8f1; +} +.tw-bs .panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} +.tw-bs .panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} +.tw-bs .panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} +.tw-bs .well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.tw-bs .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.tw-bs .well-lg { + padding: 24px; + border-radius: 6px; +} +.tw-bs .well-sm { + padding: 9px; + border-radius: 3px; +} +.tw-bs .close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.tw-bs .close:hover, +.tw-bs .close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.tw-bs .close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.tw-bs .modal-open { + overflow: hidden; +} +body.tw-bs .modal-open, +.tw-bs .modal-open .navbar-fixed-top, +.tw-bs .modal-open .navbar-fixed-bottom { + margin-right: 15px; +} +.tw-bs .modal { + display: none; + overflow: auto; + overflow-y: scroll; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; +} +.tw-bs .modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.tw-bs .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +.tw-bs .modal-dialog { + margin-left: auto; + margin-right: auto; + width: auto; + padding: 10px; + z-index: 1050; +} +.tw-bs .modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: none; +} +.tw-bs .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} +.tw-bs .modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.tw-bs .modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.tw-bs .modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.428571429px; +} +.tw-bs .modal-header .close { + margin-top: -2px; +} +.tw-bs .modal-title { + margin: 0; + line-height: 1.428571429; +} +.tw-bs .modal-body { + position: relative; + padding: 20px; +} +.tw-bs .modal-footer { + margin-top: 15px; + padding: 19px 20px 20px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.tw-bs .modal-footer:before, +.tw-bs .modal-footer:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .modal-footer:after { + clear: both; +} +.tw-bs .modal-footer:before, +.tw-bs .modal-footer:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .modal-footer:after { + clear: both; +} +.tw-bs .modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.tw-bs .modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.tw-bs .modal-footer .btn-block + .btn-block { + margin-left: 0; +} +@media screen and (min-width: 768px) { + .tw-bs .modal-dialog { + left: 50%; + right: auto; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .tw-bs .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} +.tw-bs .tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tw-bs .tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tw-bs .tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tw-bs .tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tw-bs .tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tw-bs .tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tw-bs .tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} +.tw-bs .tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tw-bs .tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tw-bs .tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tw-bs .tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tw-bs .tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tw-bs .tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tw-bs .tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tw-bs .tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tw-bs .tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tw-bs .popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.tw-bs .popover.top { + margin-top: -10px; +} +.tw-bs .popover.right { + margin-left: 10px; +} +.tw-bs .popover.bottom { + margin-top: 10px; +} +.tw-bs .popover.left { + margin-left: -10px; +} +.tw-bs .popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.tw-bs .popover-content { + padding: 9px 14px; +} +.tw-bs .popover .arrow, +.tw-bs .popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tw-bs .popover .arrow { + border-width: 11px; +} +.tw-bs .popover .arrow:after { + border-width: 10px; + content: ""; +} +.tw-bs .popover.top .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.tw-bs .popover.top .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.tw-bs .popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.tw-bs .popover.right .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.tw-bs .popover.bottom .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.tw-bs .popover.bottom .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.tw-bs .popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.tw-bs .popover.left .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.tw-bs .carousel { + position: relative; +} +.tw-bs .carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.tw-bs .carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.tw-bs .carousel-inner > .item > img, +.tw-bs .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + line-height: 1; +} +.tw-bs .carousel-inner > .active, +.tw-bs .carousel-inner > .next, +.tw-bs .carousel-inner > .prev { + display: block; +} +.tw-bs .carousel-inner > .active { + left: 0; +} +.tw-bs .carousel-inner > .next, +.tw-bs .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.tw-bs .carousel-inner > .next { + left: 100%; +} +.tw-bs .carousel-inner > .prev { + left: -100%; +} +.tw-bs .carousel-inner > .next.left, +.tw-bs .carousel-inner > .prev.right { + left: 0; +} +.tw-bs .carousel-inner > .active.left { + left: -100%; +} +.tw-bs .carousel-inner > .active.right { + left: 100%; +} +.tw-bs .carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.tw-bs .carousel-control.left { + background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.tw-bs .carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-gradient(linear, 0% top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.tw-bs .carousel-control:hover, +.tw-bs .carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.tw-bs .carousel-control .icon-prev, +.tw-bs .carousel-control .icon-next, +.tw-bs .carousel-control .glyphicon-chevron-left, +.tw-bs .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} +.tw-bs .carousel-control .icon-prev, +.tw-bs .carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} +.tw-bs .carousel-control .icon-prev:before { + content: '\2039'; +} +.tw-bs .carousel-control .icon-next:before { + content: '\203a'; +} +.tw-bs .carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.tw-bs .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; +} +.tw-bs .carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.tw-bs .carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.tw-bs .carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .tw-bs .carousel-control .icon-prev, + .tw-bs .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .tw-bs .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .tw-bs .carousel-indicators { + bottom: 20px; + } +} +.tw-bs .clearfix:before, +.tw-bs .clearfix:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ +} +.tw-bs .clearfix:after { + clear: both; +} +.tw-bs .pull-right { + float: right !important; +} +.tw-bs .pull-left { + float: left !important; +} +.tw-bs .hide { + display: none !important; +} +.tw-bs .show { + display: block !important; +} +.tw-bs .invisible { + visibility: hidden; +} +.tw-bs .text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.tw-bs .affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} +.tw-bs .hidden { + display: none !important; + visibility: hidden !important; +} +.tw-bs .visible-xs { + display: none !important; +} +tr.tw-bs .visible-xs { + display: none !important; +} +th.tw-bs .visible-xs, +td.tw-bs .visible-xs { + display: none !important; +} +@media (max-width: 767px) { + .tw-bs .visible-xs { + display: block !important; + } + tr.tw-bs .visible-xs { + display: table-row !important; + } + th.tw-bs .visible-xs, + td.tw-bs .visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .visible-xs.visible-sm { + display: block !important; + } + tr.tw-bs .visible-xs.visible-sm { + display: table-row !important; + } + th.tw-bs .visible-xs.visible-sm, + td.tw-bs .visible-xs.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .visible-xs.visible-md { + display: block !important; + } + tr.tw-bs .visible-xs.visible-md { + display: table-row !important; + } + th.tw-bs .visible-xs.visible-md, + td.tw-bs .visible-xs.visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .tw-bs .visible-xs.visible-lg { + display: block !important; + } + tr.tw-bs .visible-xs.visible-lg { + display: table-row !important; + } + th.tw-bs .visible-xs.visible-lg, + td.tw-bs .visible-xs.visible-lg { + display: table-cell !important; + } +} +.tw-bs .visible-sm { + display: none !important; +} +tr.tw-bs .visible-sm { + display: none !important; +} +th.tw-bs .visible-sm, +td.tw-bs .visible-sm { + display: none !important; +} +@media (max-width: 767px) { + .tw-bs .visible-sm.visible-xs { + display: block !important; + } + tr.tw-bs .visible-sm.visible-xs { + display: table-row !important; + } + th.tw-bs .visible-sm.visible-xs, + td.tw-bs .visible-sm.visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .visible-sm { + display: block !important; + } + tr.tw-bs .visible-sm { + display: table-row !important; + } + th.tw-bs .visible-sm, + td.tw-bs .visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .visible-sm.visible-md { + display: block !important; + } + tr.tw-bs .visible-sm.visible-md { + display: table-row !important; + } + th.tw-bs .visible-sm.visible-md, + td.tw-bs .visible-sm.visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .tw-bs .visible-sm.visible-lg { + display: block !important; + } + tr.tw-bs .visible-sm.visible-lg { + display: table-row !important; + } + th.tw-bs .visible-sm.visible-lg, + td.tw-bs .visible-sm.visible-lg { + display: table-cell !important; + } +} +.tw-bs .visible-md { + display: none !important; +} +tr.tw-bs .visible-md { + display: none !important; +} +th.tw-bs .visible-md, +td.tw-bs .visible-md { + display: none !important; +} +@media (max-width: 767px) { + .tw-bs .visible-md.visible-xs { + display: block !important; + } + tr.tw-bs .visible-md.visible-xs { + display: table-row !important; + } + th.tw-bs .visible-md.visible-xs, + td.tw-bs .visible-md.visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .visible-md.visible-sm { + display: block !important; + } + tr.tw-bs .visible-md.visible-sm { + display: table-row !important; + } + th.tw-bs .visible-md.visible-sm, + td.tw-bs .visible-md.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .visible-md { + display: block !important; + } + tr.tw-bs .visible-md { + display: table-row !important; + } + th.tw-bs .visible-md, + td.tw-bs .visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .tw-bs .visible-md.visible-lg { + display: block !important; + } + tr.tw-bs .visible-md.visible-lg { + display: table-row !important; + } + th.tw-bs .visible-md.visible-lg, + td.tw-bs .visible-md.visible-lg { + display: table-cell !important; + } +} +.tw-bs .visible-lg { + display: none !important; +} +tr.tw-bs .visible-lg { + display: none !important; +} +th.tw-bs .visible-lg, +td.tw-bs .visible-lg { + display: none !important; +} +@media (max-width: 767px) { + .tw-bs .visible-lg.visible-xs { + display: block !important; + } + tr.tw-bs .visible-lg.visible-xs { + display: table-row !important; + } + th.tw-bs .visible-lg.visible-xs, + td.tw-bs .visible-lg.visible-xs { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .visible-lg.visible-sm { + display: block !important; + } + tr.tw-bs .visible-lg.visible-sm { + display: table-row !important; + } + th.tw-bs .visible-lg.visible-sm, + td.tw-bs .visible-lg.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .visible-lg.visible-md { + display: block !important; + } + tr.tw-bs .visible-lg.visible-md { + display: table-row !important; + } + th.tw-bs .visible-lg.visible-md, + td.tw-bs .visible-lg.visible-md { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .tw-bs .visible-lg { + display: block !important; + } + tr.tw-bs .visible-lg { + display: table-row !important; + } + th.tw-bs .visible-lg, + td.tw-bs .visible-lg { + display: table-cell !important; + } +} +.tw-bs .hidden-xs { + display: block !important; +} +tr.tw-bs .hidden-xs { + display: table-row !important; +} +th.tw-bs .hidden-xs, +td.tw-bs .hidden-xs { + display: table-cell !important; +} +@media (max-width: 767px) { + .tw-bs .hidden-xs { + display: none !important; + } + tr.tw-bs .hidden-xs { + display: none !important; + } + th.tw-bs .hidden-xs, + td.tw-bs .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .hidden-xs.hidden-sm { + display: none !important; + } + tr.tw-bs .hidden-xs.hidden-sm { + display: none !important; + } + th.tw-bs .hidden-xs.hidden-sm, + td.tw-bs .hidden-xs.hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .hidden-xs.hidden-md { + display: none !important; + } + tr.tw-bs .hidden-xs.hidden-md { + display: none !important; + } + th.tw-bs .hidden-xs.hidden-md, + td.tw-bs .hidden-xs.hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .tw-bs .hidden-xs.hidden-lg { + display: none !important; + } + tr.tw-bs .hidden-xs.hidden-lg { + display: none !important; + } + th.tw-bs .hidden-xs.hidden-lg, + td.tw-bs .hidden-xs.hidden-lg { + display: none !important; + } +} +.tw-bs .hidden-sm { + display: block !important; +} +tr.tw-bs .hidden-sm { + display: table-row !important; +} +th.tw-bs .hidden-sm, +td.tw-bs .hidden-sm { + display: table-cell !important; +} +@media (max-width: 767px) { + .tw-bs .hidden-sm.hidden-xs { + display: none !important; + } + tr.tw-bs .hidden-sm.hidden-xs { + display: none !important; + } + th.tw-bs .hidden-sm.hidden-xs, + td.tw-bs .hidden-sm.hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .hidden-sm { + display: none !important; + } + tr.tw-bs .hidden-sm { + display: none !important; + } + th.tw-bs .hidden-sm, + td.tw-bs .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .hidden-sm.hidden-md { + display: none !important; + } + tr.tw-bs .hidden-sm.hidden-md { + display: none !important; + } + th.tw-bs .hidden-sm.hidden-md, + td.tw-bs .hidden-sm.hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .tw-bs .hidden-sm.hidden-lg { + display: none !important; + } + tr.tw-bs .hidden-sm.hidden-lg { + display: none !important; + } + th.tw-bs .hidden-sm.hidden-lg, + td.tw-bs .hidden-sm.hidden-lg { + display: none !important; + } +} +.tw-bs .hidden-md { + display: block !important; +} +tr.tw-bs .hidden-md { + display: table-row !important; +} +th.tw-bs .hidden-md, +td.tw-bs .hidden-md { + display: table-cell !important; +} +@media (max-width: 767px) { + .tw-bs .hidden-md.hidden-xs { + display: none !important; + } + tr.tw-bs .hidden-md.hidden-xs { + display: none !important; + } + th.tw-bs .hidden-md.hidden-xs, + td.tw-bs .hidden-md.hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .hidden-md.hidden-sm { + display: none !important; + } + tr.tw-bs .hidden-md.hidden-sm { + display: none !important; + } + th.tw-bs .hidden-md.hidden-sm, + td.tw-bs .hidden-md.hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .hidden-md { + display: none !important; + } + tr.tw-bs .hidden-md { + display: none !important; + } + th.tw-bs .hidden-md, + td.tw-bs .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .tw-bs .hidden-md.hidden-lg { + display: none !important; + } + tr.tw-bs .hidden-md.hidden-lg { + display: none !important; + } + th.tw-bs .hidden-md.hidden-lg, + td.tw-bs .hidden-md.hidden-lg { + display: none !important; + } +} +.tw-bs .hidden-lg { + display: block !important; +} +tr.tw-bs .hidden-lg { + display: table-row !important; +} +th.tw-bs .hidden-lg, +td.tw-bs .hidden-lg { + display: table-cell !important; +} +@media (max-width: 767px) { + .tw-bs .hidden-lg.hidden-xs { + display: none !important; + } + tr.tw-bs .hidden-lg.hidden-xs { + display: none !important; + } + th.tw-bs .hidden-lg.hidden-xs, + td.tw-bs .hidden-lg.hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .tw-bs .hidden-lg.hidden-sm { + display: none !important; + } + tr.tw-bs .hidden-lg.hidden-sm { + display: none !important; + } + th.tw-bs .hidden-lg.hidden-sm, + td.tw-bs .hidden-lg.hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .tw-bs .hidden-lg.hidden-md { + display: none !important; + } + tr.tw-bs .hidden-lg.hidden-md { + display: none !important; + } + th.tw-bs .hidden-lg.hidden-md, + td.tw-bs .hidden-lg.hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .tw-bs .hidden-lg { + display: none !important; + } + tr.tw-bs .hidden-lg { + display: none !important; + } + th.tw-bs .hidden-lg, + td.tw-bs .hidden-lg { + display: none !important; + } +} +.tw-bs .visible-print { + display: none !important; +} +tr.tw-bs .visible-print { + display: none !important; +} +th.tw-bs .visible-print, +td.tw-bs .visible-print { + display: none !important; +} +@media print { + .tw-bs .visible-print { + display: block !important; + } + tr.tw-bs .visible-print { + display: table-row !important; + } + th.tw-bs .visible-print, + td.tw-bs .visible-print { + display: table-cell !important; + } + .tw-bs .hidden-print { + display: none !important; + } + tr.tw-bs .hidden-print { + display: none !important; + } + th.tw-bs .hidden-print, + td.tw-bs .hidden-print { + display: none !important; + } +} diff --git a/spec/controllers/deliverables_controller_spec.rb b/spec/controllers/deliverables_controller_spec.rb index 727d33c5f..2fa811a04 100644 --- a/spec/controllers/deliverables_controller_spec.rb +++ b/spec/controllers/deliverables_controller_spec.rb @@ -3,164 +3,320 @@ describe DeliverablesController do - before do - @admin_andy = FactoryGirl.create(:admin_andy) - @faculty_frank = FactoryGirl.create(:faculty_frank_user) - @faculty_fagan = FactoryGirl.create(:faculty_fagan) - @student_sam = FactoryGirl.create(:student_sam) - @student_sally = FactoryGirl.create(:student_sally) - end + before do + @admin_andy = FactoryGirl.create(:admin_andy) + @faculty_frank = FactoryGirl.create(:faculty_frank_user) + @faculty_fagan = FactoryGirl.create(:faculty_fagan) + @student_sam = FactoryGirl.create(:student_sam) + @student_sally = FactoryGirl.create(:student_sally) + + + end + + describe "GET index for course" do + + ## beg add Team turing + before(:each) do + @course = FactoryGirl.create(:fse, faculty: [@faculty_frank]) + + @assignment_ungraded = FactoryGirl.create(:assignment_1,:course => @course, :name => "Assignment Ungraded", + :task_number => 1) + @assignment_drafted = FactoryGirl.create(:assignment_1,:course => @course, :name => "Assignment Drafted", + :task_number => 3) + @assignment_graded = FactoryGirl.create(:assignment_1,:course => @course, :name => "Assignment Graded", + :task_number => 2) + + @turing_grade_graded = FactoryGirl.create(:grade_visible, :course => @course, :student =>@student_sam, + :assignment => @assignment_graded) + @turing_grade_drafted = FactoryGirl.create(:grade_invisible, :course => @course, :student => @student_sam, + :assignment => @assignment_drafted) + @turing_grade_ungraded = nil + + + @test_grade_ungraded = FactoryGirl.create(:grade_invisible_turing, :course => @course, + :student => @student_sally, :assignment => @assignment_graded) + + @team_turing = FactoryGirl.create(:team_turing, :course=>@course) + @team_test = FactoryGirl.create(:team_test, :course=>@course) + + @team_turing.members = [@student_sam] + @team_test.members = [@student_sally] + + @deliverable_turing_ungraded = FactoryGirl.create(:team_turing_deliverable_1,:course => @course, + :team => @team_turing,:assignment => @assignment_ungraded, :creator => @student_sam) + @deliverable_turing_drafted = FactoryGirl.create(:team_turing_deliverable_1,:course => @course, + :team => @team_turing,:assignment => @assignment_drafted, :creator => @student_sam) + @deliverable_turing_graded = FactoryGirl.create(:team_turing_deliverable_1,:course => @course, + :team => @team_turing,:assignment => @assignment_graded, :creator => @student_sam) + @deliverable_test_ungraded = FactoryGirl.create(:team_test_deliverable_1,:course => @course, + :team => @team_test,:assignment => @assignment_ungraded) + + @da_turing_ungraded = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_turing_ungraded, + :submitter => @student_sam) + @da_turing_drafted = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_turing_drafted, + :submitter => @student_sam) + @da_turing_graded = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_turing_graded, + :submitter => @student_sam) + @da_test_ungraded = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_test_ungraded, + :submitter => @student_sam) + + @course.stub(:grading_rule).and_return(true) + @course.stub_chain(:grading_rule, :default_values?).and_return(true) + Course.stub(:find).and_return(@course) - describe "GET index for course" do - before(:each) do - @course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 42) - @deliverable = stub_model(Deliverable, :course_id => @course.id) - Deliverable.stub_chain(:where, :all).and_return([@deliverable, @deliverable]) + end - @course.stub(:grading_rule).and_return(true) - @course.stub_chain(:grading_rule, :default_values?).and_return(true) - Course.stub(:find).and_return(@course) + context "as the faculty owner of the course" do + before do + Deliverable.stub(:grading_queue_display).and_return([@deliverable_turing_ungraded, @deliverable_turing_drafted, + @deliverable_turing_graded]) + login(@faculty_frank) end - context "as the faculty owner of the course" do + it 'shows the assignments names for my course only' do + get :grading_queue_for_course, :course_id => @course.id , :faculty_id =>@faculty_frank.id + @expected_assignments = assigns(:assignments) - before do - login(@faculty_frank) - end + @expected_assignments.should have(3).items + @expected_assignments[0].should == @assignment_ungraded + @expected_assignments[1].should == @assignment_graded + @expected_assignments[2].should == @assignment_drafted - it 'assigns @deliverables' do - get :grading_queue_for_course, :course_id => @course.id - assigns(:deliverables).should == [@deliverable, @deliverable] - end end - context "as an admin" do + #default behavior + it 'shows ungraded deliverables of only my teams both, team and individual deliverables' do + get :grading_queue_for_course, :course_id => @course.id , :faculty_id =>@faculty_frank.id + @expected_deliverable = assigns(:deliverables) - before do - login(@admin_andy) - end + @expected_deliverable.should have(2).items + @expected_deliverable[0].should == @deliverable_turing_ungraded + @expected_deliverable[1].should == @deliverable_turing_drafted + end - it 'assigns @deliverables' do - get :grading_queue_for_course, :course_id => @course.id - assigns(:deliverables).should == [@deliverable, @deliverable] - end + #default behavior + it 'shows the deliverables that matches the selected deliverable name' do + get :get_deliverables, :filter_options => {:graded => "1", :ungraded => "1", :drafted => "1", + :assignment_id => @assignment_ungraded.id.to_s, :is_my_teams => 'yes', :search_box => ""}, + :course_id => @course.id + + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should have(1).items + @expected_deliverable[0].should == @deliverable_turing_ungraded end - context "as any other user" do - before do - login(@faculty_fagan) - get :grading_queue_for_course, :course_id => @course.id - end + it 'shows graded deliverables if graded buttons is clicked' do + get :get_deliverables, :filter_options => {:graded => "1", :assignment_id => "-1", + :is_my_teams => 'yes', :search_box => ""}, :course_id => @course.id - it_should_behave_like "permission denied" + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should have(1).items + @expected_deliverable[0].should == @deliverable_turing_graded end - end + it 'shows graded and ungraded deliverables of only my teams if graded and ungraded buttons are clicked' do + get :get_deliverables, :filter_options => {:graded => "1", :ungraded => "1", :assignment_id => "-1", + :is_my_teams => 'yes', :search_box => ""}, :course_id => @course.id + + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should have(2).items + @expected_deliverable[1].should == @deliverable_turing_graded + @expected_deliverable[0].should == @deliverable_turing_ungraded - describe "GET my_deliverables" do - before(:each) do - @course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 42) - @past_course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 41) - @deliverable = stub_model(Deliverable, :course_id => @course.id, :owner_id => @student_sam.id) - @current_assignment = stub_model(Assignment, :course_id => @course.id) - @past_assignment = stub_model(Assignment, :course_id => @past_course.id) - Deliverable.stub(:find_current_by_user).and_return([@deliverable, @deliverable]) - Deliverable.stub(:find_past_by_user).and_return([@deliverable, @deliverable]) - Assignment.stub(:list_assignments_for_student).with(@student_sam.id , :current).and_return([@current_assignment]) - Assignment.stub(:list_assignments_for_student).with(@student_sam.id , :past).and_return([@past_assignment]) - Course.stub(:find).and_return(@course) - User.any_instance.stub(:registered_for_these_courses_during_current_semester).and_return([@course]) - User.any_instance.stub(:registered_for_these_courses_during_past_semesters).and_return([@past_course]) end - context "as the owner of the deliverable" do - before do - login(@student_sam) - end + it 'shows all deliverables of only my teams is clicked' do + get :get_deliverables, :filter_options => {:assignment_id => "-1", :is_my_teams => 'yes', :search_box => ""}, + :course_id => @course.id + + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should have(3).items + @expected_deliverable[1].should == @deliverable_turing_graded + @expected_deliverable[0].should == @deliverable_turing_ungraded + @expected_deliverable[2].should == @deliverable_turing_drafted - it 'assigns deliverables' do - get :my_deliverables, :id => @student_sam.id - #assigns(:current_deliverables).should == [@deliverable, @deliverable] - #assigns(:past_deliverables).should == [@deliverable, @deliverable] - assigns(:current_courses).should == [@course] - assigns(:past_courses).should == [@past_course] - assigns(:current_assignments).should == [@current_assignment] - assigns(:past_assignments).should == [@past_assignment] - end end - context "as an faculty" do + + context "search function is enabled" do before do - login(@faculty_frank) + + @team_member = FactoryGirl.create(:team_member) + + @team_ruby_racer = FactoryGirl.create(:team_ruby_racer, :course=>@course) + + @team_ruby_racer.members = [@team_member] + + @ruby_racer_grade_graded = FactoryGirl.create(:grade_visible, :course => @course, :student =>@team_member, + :assignment => @assignment_graded) + @ruby_racer_grade_drafted = FactoryGirl.create(:grade_invisible, :course => @course, + :student => @team_member, :assignment => @assignment_drafted) + @ruby_racer_grade_ungraded = nil + + @deliverable_ruby_racer_ungraded = FactoryGirl.create(:team_ruby_racer_deliverable_1,:course => @course, + :team => @team_ruby_racer,:assignment => @assignment_ungraded, :creator => @team_member) + @deliverable_ruby_racer_drafted = FactoryGirl.create(:team_ruby_racer_deliverable_1,:course => @course, + :team => @team_ruby_racer,:assignment => @assignment_drafted, :creator => @team_member) + @deliverable_ruby_racer_graded = FactoryGirl.create(:team_ruby_racer_deliverable_1,:course => @course, + :team => @team_ruby_racer,:assignment => @assignment_graded, :creator => @team_member) + + @da_ruby_racer_ungraded = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_ruby_racer_ungraded, + :submitter => @team_member) + @da_ruby_racer_drafted = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_ruby_racer_drafted, + :submitter => @team_member) + @da_ruby_racer_graded = FactoryGirl.create(:attachment_1, :deliverable => @deliverable_ruby_racer_graded, + :submitter => @team_member) + end - it 'assigns @deliverables' do - get :my_deliverables, :id => @student_sam.id - assigns(:current_deliverables).should == [@deliverable, @deliverable] - assigns(:past_deliverables).should == [@deliverable, @deliverable] + + it 'shows all deliverables of only my teams and search box is entered' do + get :get_deliverables, :filter_options => {:assignment_id => "-1", :is_my_teams => 'yes', + :search_box => "Member"}, :course_id => @course.id + + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should have(3).items + @expected_deliverable[0].should == @deliverable_ruby_racer_ungraded + @expected_deliverable[1].should == @deliverable_ruby_racer_graded + @expected_deliverable[2].should == @deliverable_ruby_racer_drafted + end end + ## end add Team turing - context "as any other student" do - before do - login(@student_sally) - get :my_deliverables, :id => @student_sam.id - end + end + + + context "as an admin" do + before do + login(@admin_andy) + end + + it 'assigns @deliverables' do + get :grading_queue_for_course, :course_id => @course.id + @expected_deliverable = assigns(:deliverables) + @expected_deliverable.should == [@deliverable_test_ungraded, @deliverable_turing_graded, + @deliverable_turing_drafted, @deliverable_turing_ungraded] - it_should_behave_like "permission denied for person deliverable" end end + context "as any other user" do + before do + login(@faculty_fagan) + get :grading_queue_for_course, :course_id => @course.id + end - describe "GET show" do - before(:each) do - @course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 42) - @current_assignment = mock_model(Assignment, :course_id => @course.id, :is_team_deliverable => true) - @deliverable = stub_model(Deliverable, :course_id => @course.id, :owner_id => @student_sam.id, :assignment=>@current_assignment) - @team = stub_model(Team) - Deliverable.stub(:find).and_return(@deliverable) - @deliverable.stub(:team).and_return(@team) + it_should_behave_like "permission denied" + end + end + + + describe "GET my_deliverables" do + before(:each) do + @course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 42) + @past_course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 41) + @deliverable = stub_model(Deliverable, :course_id => @course.id, :owner_id => @student_sam.id) + @current_assignment = stub_model(Assignment, :course_id => @course.id) + @past_assignment = stub_model(Assignment, :course_id => @past_course.id) + Deliverable.stub(:find_current_by_user).and_return([@deliverable, @deliverable]) + Deliverable.stub(:find_past_by_user).and_return([@deliverable, @deliverable]) + Assignment.stub(:list_assignments_for_student).with(@student_sam.id , :current).and_return([@current_assignment]) + Assignment.stub(:list_assignments_for_student).with(@student_sam.id , :past).and_return([@past_assignment]) + Course.stub(:find).and_return(@course) + User.any_instance.stub(:registered_for_these_courses_during_current_semester).and_return([@course]) + User.any_instance.stub(:registered_for_these_courses_during_past_semesters).and_return([@past_course]) + end - @course.stub(:grading_rule).and_return(true) - @course.stub_chain(:grading_rule, :default_values?).and_return(true) - Course.stub(:find).and_return(@course) + context "as the owner of the deliverable" do + before do + login(@student_sam) end - context "for a team deliverable" do + it 'assigns deliverables' do + get :my_deliverables, :id => @student_sam.id + #assigns(:current_deliverables).should == [@deliverable, @deliverable] + #assigns(:past_deliverables).should == [@deliverable, @deliverable] + assigns(:current_courses).should == [@course] + assigns(:past_courses).should == [@past_course] + assigns(:current_assignments).should == [@current_assignment] + assigns(:past_assignments).should == [@past_assignment] + end + end - it 'the owner can see it' do - login(@student_sam) - @team.stub(:is_user_on_team?).and_return(true) - get :show, :id => @deliverable.id - assigns(:deliverable).should == @deliverable - end + context "as an faculty" do - it "someone else on the team can see it" do - login(@student_sam) - @team.stub(:is_user_on_team?).and_return(true) - get :show, :id => @deliverable.id - assigns(:deliverable).should == @deliverable - end + before do + login(@faculty_frank) + end - it "any faculty can see it" do - login(@faculty_frank) + it 'assigns @deliverables' do + get :my_deliverables, :id => @student_sam.id + assigns(:current_deliverables).should == [@deliverable, @deliverable] + assigns(:past_deliverables).should == [@deliverable, @deliverable] + end + end + + context "as any other student" do + before do + login(@student_sally) + get :my_deliverables, :id => @student_sam.id + end + + it_should_behave_like "permission denied for person deliverable" + end + end + + + describe "GET show" do + before(:each) do + @course = mock_model(Course, :faculty => [@faculty_frank], :course_id => 42) + @current_assignment = mock_model(Assignment, :course_id => @course.id, :is_team_deliverable => true) + @deliverable = stub_model(Deliverable, :course_id => @course.id, :owner_id => @student_sam.id, :assignment=>@current_assignment) + @team = stub_model(Team) + Deliverable.stub(:find).and_return(@deliverable) + @deliverable.stub(:team).and_return(@team) + + @course.stub(:grading_rule).and_return(true) + @course.stub_chain(:grading_rule, :default_values?).and_return(true) + Course.stub(:find).and_return(@course) + end + + context "for a team deliverable" do + + it 'the owner can see it' do + login(@student_sam) + @team.stub(:is_user_on_team?).and_return(true) + get :show, :id => @deliverable.id + assigns(:deliverable).should == @deliverable + end + + it "someone else on the team can see it" do + login(@student_sam) + @team.stub(:is_user_on_team?).and_return(true) + get :show, :id => @deliverable.id + assigns(:deliverable).should == @deliverable + end + + it "any faculty can see it" do + login(@faculty_frank) + @team.stub(:is_user_on_team?).and_return(false) + get :show, :id => @deliverable.id + assigns(:deliverable).should == @deliverable + end + + context "no other student can see it" do + before do @team.stub(:is_user_on_team?).and_return(false) + login(@student_sally) get :show, :id => @deliverable.id - assigns(:deliverable).should == @deliverable end - context "no other student can see it" do - before do - @team.stub(:is_user_on_team?).and_return(false) - login(@student_sally) - get :show, :id => @deliverable.id - end - - it_should_behave_like "permission denied for person deliverable" - end + it_should_behave_like "permission denied for person deliverable" end end + end # describe "GET edit" do diff --git a/spec/factories/assignments.rb b/spec/factories/assignments.rb index 0bcaf45b9..2c51a2cf5 100644 --- a/spec/factories/assignments.rb +++ b/spec/factories/assignments.rb @@ -26,4 +26,29 @@ sequence(:maximum_score) {|i| i*3} sequence(:assignment_order) {|i| i} end + + ## beg add turing + + factory :assignment_1, :parent=>:assignment do + is_team_deliverable true + association :course, :factory => :fse + name "Assignment 1" + task_number 1 + end + + factory :assignment_2, :parent=>:assignment do + is_team_deliverable true + association :course, :factory => :fse + name "Assignment 2" + task_number 2 + end + + factory :assignment_3, :parent=>:assignment do + is_team_deliverable false + association :course, :factory => :fse + name "Assignment 3" + task_number 3 + end + + ## end add turing end diff --git a/spec/factories/deliverable_attachments.rb b/spec/factories/deliverable_attachments.rb new file mode 100644 index 000000000..b35ad9486 --- /dev/null +++ b/spec/factories/deliverable_attachments.rb @@ -0,0 +1,14 @@ +FactoryGirl.define do + + ## beg add turing + + factory :attachment_1, :parent => :deliverable_attachment do + submitter_id 1 + deliverable_id 1 + submission_date DateTime.now + association :deliverable, :factory => :team_deliverable + association :submitter, :factory => :student_john_user + end + + ## end add turing +end \ No newline at end of file diff --git a/spec/factories/deliverables.rb b/spec/factories/deliverables.rb index d6c37bb82..28bdf9deb 100644 --- a/spec/factories/deliverables.rb +++ b/spec/factories/deliverables.rb @@ -10,9 +10,52 @@ team_id nil end + factory :turing_individual_deliverable, :parent => :deliverable do + team_id nil + association :creator, :factory => :student_john_user + association :course, :factory => :fse + end + factory :team_deliverable_simple, :class => Deliverable do private_note "My private notes" end + ## beg add turing + factory :team_turing_deliverable_1, :parent => :deliverable do + association :assignment, :factory => :assignment + association :team, :factory => :team_turing + association :course, :factory => :fse + private_note "My first deliverable" + end + + factory :team_turing_deliverable_2, :parent => :deliverable do + association :assignment, :factory => :assignment + association :team, :factory => :team_turing + association :course, :factory => :fse + private_note "My second deliverable" + end + + factory :team_test_deliverable_1, :parent => :deliverable do + association :assignment, :factory => :assignment + association :team, :factory => :team_test + association :course, :factory => :fse + association :creator, :factory => :student_Test_user + private_note "Test team first deliverable" + end + + factory :test_individual_deliverable, :parent => :deliverable do + team_id nil + association :creator, :factory => :student_sally_user + association :course, :factory => :fse + end + + factory :team_ruby_racer_deliverable_1, :parent => :deliverable do + association :assignment, :factory => :assignment + association :team, :factory => :team_ruby_racer + association :course, :factory => :fse + private_note "Ruby Racer's first deliverable" + end + + ## end add turing end diff --git a/spec/factories/grades.rb b/spec/factories/grades.rb index d5be7d05b..2434bd963 100644 --- a/spec/factories/grades.rb +++ b/spec/factories/grades.rb @@ -16,6 +16,11 @@ is_student_visible false end + factory :grade_invisible_turing, :parent=>:grade do + is_student_visible false + score nil + end + factory :grade_points, :parent=>:grade do course_id 1 student_id 999 @@ -30,4 +35,13 @@ assignment end + # Beg add Turing Ira + factory :last_graded_visible, :parent=>:grade do + course_id 1 + student_id 999 + assignment_id 1 + is_student_visible true + last_graded_by 46 + end + # End add Turing Ira end diff --git a/spec/factories/team_assignment.rb b/spec/factories/team_assignment.rb new file mode 100644 index 000000000..75aa9a4ee --- /dev/null +++ b/spec/factories/team_assignment.rb @@ -0,0 +1,20 @@ +#Beg Team Turing +FactoryGirl.define do + + factory :team_turing_assignment, class: TeamAssignment do + association :team, :factory => :team_turing + association :user, :factory => :student_sam_user + end + + factory :team_test_assignment, class: TeamAssignment do + association :team, :factory => :team_test + association :user, :factory => :student_john_user + end + + factory :team_ruby_racer_assignment, class: TeamAssignment do + association :team, :factory => :team_ruby_racer + association :user, :factory => :student_sally_user + end + +end +#End Team Turing \ No newline at end of file diff --git a/spec/factories/teams.rb b/spec/factories/teams.rb index f87e6bc66..1bd26e4d0 100644 --- a/spec/factories/teams.rb +++ b/spec/factories/teams.rb @@ -22,4 +22,41 @@ association :course, :factory => :course end + ## beg add turing + factory :team_turing, class: Team do + name "Turing" + email "turing@sv.cmu.edu" + primary_faculty_id 46 + updating_email false + tigris_space "http://team.turing.org/servlets/ProjectDocumentList" + twiki_space "http://info.sv.cmu.edu/twiki/bin/view/Graffiti/WebHome" + + association :course, :factory => :fse + + end + + factory :team_test, class: Team do + name "Test" + email "test@sv.cmu.edu" + primary_faculty_id 47 + updating_email false + tigris_space "http://team.test.org/servlets/ProjectDocumentList" + twiki_space "http://info.sv.cmu.edu/twiki/bin/view/Graffiti/WebHome" + + association :course, :factory => :fse + end + + factory :team_ruby_racer, class: Team do + name "Ruby Racer" + email "ruby_racer@sv.cmu.edu" + primary_faculty_id 46 + updating_email false + tigris_space "http://team.turing.org/servlets/ProjectDocumentList" + twiki_space "http://info.sv.cmu.edu/twiki/bin/view/Graffiti/WebHome" + + association :course, :factory => :fse + + end + + ## end add turing end \ No newline at end of file diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 01c5e6a49..6b79d5f06 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -122,4 +122,19 @@ track_group "Tech" end + + ## beg add turing + factory :student_Test_user, :parent => :user do + sequence(:email) {|i| "student_Test#{i}@sv.cmu.edu"} + sequence(:webiso_account) {|i| "student_Test#{i}@andrew.cmu.edu"} + sequence(:human_name) {|i| "student_Test#{i}"} + sequence(:first_name) {|i| "student_Test#{i}"} + sequence(:last_name) {|i| "student_Test#{i}"} + sequence(:twiki_name) {|i| "student_Test#{i}"} + is_student true + is_alumnus false + end + + ## end add turing + end \ No newline at end of file diff --git a/spec/lib/reminder_handler_spec.rb b/spec/lib/reminder_handler_spec.rb index 375b136d8..ac78385ec 100644 --- a/spec/lib/reminder_handler_spec.rb +++ b/spec/lib/reminder_handler_spec.rb @@ -8,11 +8,15 @@ before :each do @current_time = Time.now @user = FactoryGirl.build_stubbed(:faculty_frank_user) + # While storing to Active Record, use current_time.utc as Active record + # assumes pacific time (config/application.rb) but stores as utc + # internally. Causing the test case to fail. + # Time zone overriden in (config/environments/test.rb) @page1 = FactoryGirl.build_stubbed(:ppm, updated_by_user_id: @user.id, - updated_at: @current_time - 1.year) + updated_at: @current_time.utc - 1.year) @page2 = FactoryGirl.build_stubbed(:ppm, url: "page2", updated_by_user_id: @user.id, - updated_at: @current_time - 13.months) + updated_at: @current_time.utc - 13.months) Page.stub(:all).and_return([@page1, @page2]) @page1.stub(:updated_by).and_return(@user) @page2.stub(:updated_by).and_return(@user) @@ -43,4 +47,4 @@ end end -end \ No newline at end of file +end diff --git a/spec/models/deliverable_model_spec.rb b/spec/models/deliverable_model_spec.rb index 3b3fe4877..b6d4b48b8 100644 --- a/spec/models/deliverable_model_spec.rb +++ b/spec/models/deliverable_model_spec.rb @@ -143,18 +143,18 @@ Grade.stub(:get_grade).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.creator.id).and_return(nil) @deliverable.is_visible_to_student?.should be_false end - + it "is graded if grade is given and published" do grade = FactoryGirl.build(:grade_visible) Grade.stub(:get_grade).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.creator.id).and_return(grade) @deliverable.get_grade_status.should eq(:graded) end - + it "is ungraded if grade is not given" do Grade.stub(:get_grade).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.creator.id).and_return(nil) @deliverable.get_grade_status.should eq(:ungraded) end - + it "is drafted if grade is given but not published" do grade = FactoryGirl.build(:grade_invisible) Grade.stub(:get_grade).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.creator.id).and_return(grade) @@ -174,7 +174,7 @@ end @deliverable.get_grade_status.should eq(:graded) end - + it "is drafted if any of the member's grade is given but not published" do grade = FactoryGirl.build(:grade_invisible) @deliverable.team.members.each do | member | @@ -183,7 +183,7 @@ end @deliverable.get_grade_status.should eq(:drafted) end - + it "is ungraded if any of the member's grade is not given" do @deliverable.team.members.each do | member | Grade.stub(:get_grade).with(@deliverable.course.id, @deliverable.assignment.id, member.id).and_return(nil) @@ -191,6 +191,213 @@ @deliverable.get_grade_status.should eq(:ungraded) end end + + # Beg Team Turing + context "for a professor" do + before (:each) do + @faculty_frank = FactoryGirl.build(:faculty_frank_user) + @course_fse = FactoryGirl.create(:fse, faculty: [@faculty_frank]) + @course_ise = FactoryGirl.create(:ise, faculty: [@faculty_frank]) + @student_sam = FactoryGirl.create(:student_sam) + @student_sally = FactoryGirl.create(:student_sally) + @team_member = FactoryGirl.create(:team_member) + end + + it "Displays the professor's teams deliverables if the professor has at least one team" do + @team_turing = FactoryGirl.create(:team_turing, :course=>@course_fse) + @team_test = FactoryGirl.create(:team_test, :course=>@course_fse) + @team_assignment = FactoryGirl.create(:team_turing_assignment, :team => @team_turing, :user => @student_sam) + + @assignment_team_turing_1 = FactoryGirl.create(:assignment_1,:course => @course_fse) + @assignment_team_turing_2 = FactoryGirl.create(:assignment_1,:course => @course_fse) + @assignment_team_test_1 = FactoryGirl.create(:assignment_1,:course => @course_fse) + + + @team_turing_deliverable_1 = FactoryGirl.create(:team_turing_deliverable_1,:course => @course_fse, + :team => @team_turing,:assignment => @assignment_team_turing_1, :creator => @student_sam) + @team_turing_deliverable_2 = FactoryGirl.create(:team_turing_deliverable_1,:course => @course_fse, + :team => @team_turing,:assignment => @assignment_team_turing_2, :creator => @student_sam) + @team_test_deliverable_1 = FactoryGirl.create(:team_test_deliverable_1,:course => @course_fse, + :team => @team_test,:assignment => @assignment_team_test_1) + + @attachment_deliverable_1_turing = FactoryGirl.create(:attachment_1, :deliverable => @team_turing_deliverable_1, + :submitter => @student_sam) + @attachment_deliverable_2_turing = FactoryGirl.create(:attachment_1, :deliverable => @team_turing_deliverable_2, + :submitter => @student_sam) + @attachment_deliverable_1_test = FactoryGirl.create(:attachment_1, :deliverable => @team_test_deliverable_1, + :submitter => @student_sam) + + @options = {:is_my_team => 1} + + @expected_deliverables = Deliverable.get_deliverables(@course_fse.id, @faculty_frank.id, @options) + @expected_deliverables.should have(2).items + + @expected_deliverables[0].should == @team_turing_deliverable_2 + @expected_deliverables[1].should == @team_turing_deliverable_1 + + end + + it "Displays the professor's students individual deliverables if the professor has at least one team" do + @team_turing = FactoryGirl.create(:team_turing, :course=>@course_fse) + @team_test = FactoryGirl.create(:team_test, :course=>@course_fse) + + #Assigning the student to the team + @team_turing_assignment = FactoryGirl.create(:team_turing_assignment, :team => @team_turing, + :user => @student_sam) + @team_test_assignment = FactoryGirl.create(:team_test_assignment, :team => @team_test, :user => @student_sally) + + @assignment_team_turing_1 = FactoryGirl.create(:assignment_3,:course => @course_fse) + @assignment_team_turing_2 = FactoryGirl.create(:assignment_3,:course => @course_fse) + + @turing_individual_deliverable_1 = FactoryGirl.create(:turing_individual_deliverable,:course => @course_fse, + :assignment => @assignment_team_turing_1, :creator => @student_sam) + @turing_individual_deliverable_2 = FactoryGirl.create(:test_individual_deliverable,:course => @course_fse, + :assignment => @assignment_team_turing_2, :creator => @student_sally) + + @attachment_deliverable_1_turing = FactoryGirl.create(:attachment_1, :deliverable => + @turing_individual_deliverable_1, :submitter => @student_sam) + @attachment_deliverable_2_turing = FactoryGirl.create(:attachment_1, :deliverable => + @turing_individual_deliverable_2, :submitter => @student_sally) + + @options = {:is_my_team => 1} + + @expected_deliverables = Deliverable.get_deliverables(@course_fse.id, @faculty_frank.id, @options) + @expected_deliverables.should have(1).items + + @expected_deliverables[0].should == @turing_individual_deliverable_1 + end + + it "If a course has teams, display team deliverables as well as individual deliverables for students in the + faculty's team" do + + @team_turing = FactoryGirl.create(:team_turing, :course=>@course_fse) + @team_test = FactoryGirl.create(:team_test, :course=>@course_fse) + + @team_assignment = FactoryGirl.create(:team_turing_assignment, :team => @team_turing, :user => @student_sam) + @team_assignment = FactoryGirl.create(:team_test_assignment, :team => @team_test, :user => @student_sally) + + @assignment1 = FactoryGirl.create(:assignment_3,:course => @course_fse) + @assignment2 = FactoryGirl.create(:assignment_3,:course => @course_fse) + + # Team deliverable + @deliverable1 = FactoryGirl.create(:team_turing_deliverable_1,:course => @course_fse, :team => @team_turing,:assignment => @assignment1, :creator => @student_sam) + # Individual deliverable 1 + @deliverable2 = FactoryGirl.create(:turing_individual_deliverable,:course => @course_fse, :assignment => @assignment1, :creator => @student_sam) + # Individual deliverable 2 + @deliverable3 = FactoryGirl.create(:test_individual_deliverable,:course => @course_fse, :assignment => @assignment2, :creator => @student_sally) + + @dav1 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable1, :submitter => @student_sam) + @dav2 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable2, :submitter => @student_sam) + @dav3 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable3, :submitter => @student_sally) + + @options = {:is_my_team => 1} + @deliverables = Deliverable.get_deliverables(@course_fse.id, @faculty_frank.id, @options) + @deliverables.should have(2).items + + @deliverables[0].should == @deliverable1 + @deliverables[1].should == @deliverable2 + + end + + it "Displays all deliverables if the course does not have teams" do + + @deliverable1 = FactoryGirl.create(:turing_individual_deliverable, :course=>@course_fse) + #@deliverable2 = FactoryGirl.create(:individual_deliverable, :course=>@course_ise) + @dav3 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable1, :submitter => @student_sam) + + @options = {:is_my_team => 1} + @deliverables = Deliverable.get_deliverables(@course_fse.id, @faculty_frank.id, @options) + @deliverables.should have(1).items + @deliverables[0].should == @deliverable1 + + end + + it "If a course has teams and user enter search terms, display team deliverables as well as individual deliverables + for students in the faculty's team" do + + @team_turing = FactoryGirl.create(:team_turing, :course=>@course_fse) + @team_test = FactoryGirl.create(:team_test, :course=>@course_fse) + @team_ruby_racer = FactoryGirl.create(:team_ruby_racer, :course=>@course_fse) + + @team_assignment = FactoryGirl.create(:team_turing_assignment, :team => @team_turing, :user => @student_sam) + @team_assignment = FactoryGirl.create(:team_test_assignment, :team => @team_test, :user => @student_sally) + @team_assignment = FactoryGirl.create(:team_ruby_racer_assignment, :team => @team_ruby_racer, :user => @team_member) + + @assignment1 = FactoryGirl.create(:assignment_3,:course => @course_fse) + @assignment2 = FactoryGirl.create(:assignment_3,:course => @course_fse) + + # Team deliverable + @deliverable1 = FactoryGirl.create(:team_turing_deliverable_1,:course => @course_fse, :team => @team_turing,:assignment => @assignment1, :creator => @student_sam) + # Individual deliverable 1 + @deliverable2 = FactoryGirl.create(:turing_individual_deliverable,:course => @course_fse, :assignment => @assignment1, :creator => @student_sam) + # Individual deliverable 2 + @deliverable3 = FactoryGirl.create(:test_individual_deliverable,:course => @course_fse, :assignment => @assignment2, :creator => @student_sally) + # Team deliverable of team Ruby Racer + @deliverable4 = FactoryGirl.create(:team_ruby_racer_deliverable_1,:course => @course_fse, :team => @team_ruby_racer,:assignment => @assignment1, :creator => @team_member) + # Individual deliverable 3 + @deliverable5 = FactoryGirl.create(:test_individual_deliverable,:course => @course_fse, :assignment => @assignment2, :creator => @team_member) + + @dav1 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable1, :submitter => @student_sam) + @dav2 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable2, :submitter => @student_sam) + @dav3 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable3, :submitter => @student_sally) + @dav4 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable4, :submitter => @team_member) + @dav5 = FactoryGirl.create(:attachment_1, :deliverable => @deliverable5, :submitter => @team_member) + + @options = {:is_my_team => 1, :search_string => "Member"} + @deliverables = Deliverable.get_deliverables(@course_fse.id, @faculty_frank.id, @options) + @deliverables.should have(2).items + + @deliverables[0].should == @deliverable4 + @deliverables[1].should == @deliverable5 + + end + + end + # End Team Turing + + #Beg add Turing Ira + context " for a individual deliverable last graded by" do + before (:each) do + @faculty_frank = FactoryGirl.create(:faculty_frank_user) + @course_fse = FactoryGirl.create(:fse, faculty: [@faculty_frank]) + @student_sam = FactoryGirl.create(:student_sam) + @assignment = FactoryGirl.create(:assignment_3,:course => @course_fse) + @deliverable = FactoryGirl.create(:turing_individual_deliverable, :course=>@course_fse, :assignment => @assignment, :creator => @student_sam) + + @grade = FactoryGirl.create(:last_graded_visible,:course_id => @course_fse.id,:assignment_id=> @assignment.id,:student_id => @student_sam.id) + end + + + it " should get last graded by" do + # Get last graded by + Grade.stub(:get_graded_by).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.creator.id).and_return(@grade) + @deliverable.get_graded_by.should eq(@faculty_frank) + end + + + end + context " for a team deliverable last graded by" do + before (:each) do + @faculty_frank = FactoryGirl.create(:faculty_frank_user) + @course_fse = FactoryGirl.create(:fse, faculty: [@faculty_frank]) + + @assignment = FactoryGirl.create(:assignment_3,:course => @course_fse) + #@deliverable = FactoryGirl.create(:turing_individual_deliverable, :course=>@course_fse, :assignment => @assignment, :creator => @student_sam) + @deliverable = FactoryGirl.build(:team_deliverable,:course_id => @course_fse.id) + end + + + it " should get last graded by" do + # Get last graded by + @grade = FactoryGirl.create(:grade_invisible, :course_id =>@deliverable.course.id,:assignment_id => @deliverable.assignment.id, :last_graded_by => @faculty_frank.id, :student_id =>@deliverable.team.members[0].id) + Grade.stub(:get_graded_by).with(@deliverable.course.id, @deliverable.assignment.id, @deliverable.team.members[0].id).and_return(@grade) + @deliverable.get_graded_by.should eq(@faculty_frank) + end + + + end + + #End add Turing Ira end diff --git a/spec/models/grade_spec.rb b/spec/models/grade_spec.rb index b16cd9127..a8a31d63b 100644 --- a/spec/models/grade_spec.rb +++ b/spec/models/grade_spec.rb @@ -169,4 +169,49 @@ end end + + # Beg Add Turing Ira + + context " It should save last graded by while giving grades" do + + it "should be able to give a updated grade to a registered student" do + faculty_frank = FactoryGirl.build(:faculty_frank_user) + faculty = faculty_frank.id + score = "10" + + Grade.give_grade(@course_fse.id, @assignment_1.id, @student_sam.id, score,nil,faculty).should be_true + Grade.find_by_assignment_id_and_student_id(@assignment_1.id, @student_sam.id).last_graded_by.should eq(faculty) + end + + it "should not update faculty in last graded by when last graded by is not empty" do + faculty_frank = FactoryGirl.build(:faculty_frank_user) + faculty_fagan = FactoryGirl.build(:faculty_fagan_user) + faculty = faculty_frank.id + score = "10" + score1 = "7" + + Grade.give_grade(@course_fse.id, @assignment_1.id, @student_sam.id, score,nil,faculty).should be_true + Grade.give_grade(@course_fse.id, @assignment_1.id, @student_sam.id, score1,nil,faculty_fagan.id).should be_true + + Grade.find_by_assignment_id_and_student_id(@assignment_1.id, @student_sam.id).last_graded_by.should eq(faculty) + end + + it "should be able to update multiple grades with last graded by in grade book" do + faculty_frank = FactoryGirl.build(:faculty_frank_user) + faculty = faculty_frank.id + grades = [] + + [@assignment_1, @assignment_2].each do |assignment| + grades << {:course_id=>@course_fse.id, :assignment_id => assignment.id, :student_id=>@student_sam.id, :score => "10" } + end + + Grade.give_grades(grades,faculty) + grades.each do |grade_entry| + Grade.find_by_assignment_id_and_student_id(grade_entry[:assignment_id], grade_entry[:student_id]).last_graded_by.should eq(faculty) + end + end + + end + +# End Add Turing Ira end diff --git a/spec/requests/deliverables_spec.rb b/spec/requests/deliverables_spec.rb index fa104ea65..792a4eb37 100644 --- a/spec/requests/deliverables_spec.rb +++ b/spec/requests/deliverables_spec.rb @@ -44,13 +44,33 @@ end end + #turing + it "I can see who graded me" do + @faculty_frank = FactoryGirl.create(:faculty_frank_user) + @assignment1 = FactoryGirl.create(:assignment_team) + @grade1 = FactoryGirl.create(:last_graded_visible, :course_id => @assignment1.course.id,:assignment_id => @assignment1.id, :last_graded_by => @faculty_frank.id, :student_id =>@user.id) + @team_deliverable.course = @assignment1.course + @team_deliverable.assignment = @assignment1 + @team_deliverable.creator = @user + Assignment.stub(:list_assignments_for_student).with(@user.id, :current).and_return([@assignment1]) + Assignment.stub(:list_assignments_for_student).with(@user.id, :past).and_return([@assignment1]) + @assignment1.stub(:get_student_grade).with(@user.id).and_return(@grade1) + Grade.stub(:get_grade).and_return(@grade1) + @assignment1.stub(:maximum_score).and_return(20.0) + click_link "Resubmit" + page.should have_content("Graded by") + page.should have_content(@faculty_frank.human_name) + + end + it " I can not be able to view professor's notes" do grade = @grade.score + "/" + @assignment.maximum_score.to_s page.should have_content(grade) click_link "Resubmit" - # visit deliverable_path(@team_deliverable) + # visit deliverable_path(@team_deliverable) - page.should have_content("Attachment Version History") + # page.should have_content("Attachment Version History") + page.should have_content("History") page.should_not have_content("Professor's Notes") page.should_not have_content("My private notes") end @@ -100,23 +120,113 @@ context "As a professor" do before do - @faculty = FactoryGirl.create(:faculty_fagan) + ## beg add Team Turing + @faculty = FactoryGirl.create(:faculty_frank_user) login_with_oauth @faculty @team_deliverable.course.faculty = [@faculty] - visit deliverable_path(@team_deliverable) + @course = FactoryGirl.create(:fse) + @faculty_assignment = FactoryGirl.create(:faculty_assignment, :course_id => @course.id, + :user_id => @faculty.id) + @team_deliverable.course = @course + @student_sam = FactoryGirl.create(:student_sam) + + @team_turing = FactoryGirl.create(:team_turing, :course=>@course) + @team_turing.members = [@student_sam] + + @team_test = FactoryGirl.create(:team_test, :course=>@course) + @team_assignment = FactoryGirl.create(:team_turing_assignment, :team => @team_turing, :user => @student_sam) + + @assignment_team_turing_1 = FactoryGirl.create(:assignment_1,:course => @course) + @assignment_team_turing_2 = FactoryGirl.create(:assignment_2,:course => @course) + @assignment_team_test_1 = FactoryGirl.create(:assignment_1,:course => @course) + + @grade_assignment_team_turing_1 = FactoryGirl.create(:grade_invisible, :course => @course,:assignment => + @assignment_team_turing_1, :last_graded_by => @faculty.id, :student =>@student_sam) + + @team_turing_deliverable_1 = FactoryGirl.create(:team_turing_deliverable_1,:course => @course, :team => + @team_turing, :assignment => @assignment_team_turing_1, :attachment_versions => [], :creator => @student_sam) + @team_turing_deliverable_2 = FactoryGirl.create(:team_turing_deliverable_2,:course => @course, :team => + @team_turing,:assignment => @assignment_team_turing_2, :attachment_versions => [], :creator => @student_sam) + @team_test_deliverable_1 = FactoryGirl.create(:team_test_deliverable_1,:course => @course, :team => + @team_test,:assignment => @assignment_team_test_1, :attachment_versions => []) + + + @attachment_team_turing_deliverable_1 = FactoryGirl.create(:attachment_1, :deliverable => + @team_turing_deliverable_1, :submitter => @student_sam) + @attachment_team_turing_deliverable_2 = FactoryGirl.create(:attachment_1, :deliverable => + @team_turing_deliverable_2, :submitter => @student_sam) + @attachment_team_test_deliverable_1 = FactoryGirl.create(:attachment_1, :deliverable => + @team_test_deliverable_1, :submitter => @student_sam) + + @attachment_team_turing_deliverable_1.attachment_file_name = "Attachment 1" + @attachment_team_turing_deliverable_2.attachment_file_name = "Attachment 2" + @attachment_team_test_deliverable_1.attachment_file_name = "Attachment 3" + + @team_turing_deliverable_1.attachment_versions << @attachment_team_turing_deliverable_1 + @team_turing_deliverable_2.attachment_versions << @attachment_team_turing_deliverable_2 + @team_test_deliverable_1.attachment_versions << @attachment_team_test_deliverable_1 + + ## end add Team Turing + end after do @faculty.delete end - it "I should be able to view deliverable page" do - page.should have_content("Attachment Version History") + + ## beg add Team Turing + + it "I should be able to view only my teams deliverables", :js => true do + visit course_deliverables_path(@course) + + page.should have_content("Task 1") + page.should have_content("Task 2") + page.should_not have_content("Task 3") + + page.should have_content("Team Turing") + page.should_not have_content("Team Test") + + page.should have_link("Assignment 1") + page.should have_link("Assignment 2") + page.should_not have_link("Assignment 3") + + end + + it "I should be able see the ungraded icon as default", :js => true do + visit course_deliverables_path(@course) + + page.should have_xpath("//img[contains(@src, \"deliverables_ungraded.png\")]") + + end + + it "I should be able to click deliverable to open accordion and check content of grading page", :js => true do + visit course_deliverables_path(@course) + find("#deliverable_" + @team_turing_deliverable_1.id.to_s).click + page.should have_content("History") page.should have_content("Professor's Notes") - page.should have_content("My private notes") + page.should have_content("My first deliverable") + page.should have_content("Graded by") + page.should have_content("Send a copy to myself") + page.should have_button("Save as Draft") + page.should have_button("Finalize and Email") + end - end + it "I should be able to see who last graded in the grading page", :js => true do + visit course_deliverables_path(@course) + find("#deliverable_" + @team_turing_deliverable_1.id.to_s).click + page.should have_content("Graded by") + page.should have_link(@faculty.human_name.to_s, href: person_path(@faculty.twiki_name)) + end + + it "I should be able to see default message for last graded by in the grading page if not graded", :js => true do + visit course_deliverables_path(@course) + find("#deliverable_" + @team_turing_deliverable_2.id.to_s).click + page.should have_content("Graded by") + page.should_not have_link(@faculty.human_name.to_s, href: person_path(@faculty.twiki_name)) + end + end it "test user" do @student1 = FactoryGirl.create(:student_sam_user) @@ -142,7 +252,7 @@ login_with_oauth @professor # visit deliverable_feedback_path(Deliverable.last) #if we separate out the feedback page visit deliverable_path(Deliverable.last) - save_and_open_page + #save_and_open_page page.should have_content("Grade Team Deliverable") } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 63c02f768..44fa56b53 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -85,3 +85,21 @@ def login_with_warden(user, service = :google_apps) ## Forces all threads to share the same connection. This works on ## Capybara because it starts the web server in a thread. #ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection + + +## beg add Team Turing + +class ActiveRecord::Base + mattr_accessor :shared_connection + @@shared_connection = nil + + def self.connection + @@shared_connection || retrieve_connection + end +end + +# Forces all threads to share the same connection. This works on +# Capybara because it starts the web server in a thread. +ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection + +## end add Team Turing \ No newline at end of file diff --git a/spec_no_rails/services/grading_queue_spec.rb b/spec_no_rails/services/grading_queue_spec.rb new file mode 100644 index 000000000..e69de29bb