Initial commit
This commit is contained in:
commit
7c973ffedf
19
Gemfile
Normal file
19
Gemfile
Normal file
|
@ -0,0 +1,19 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
#gem "middleman", :git => 'https://github.com/middleman/middleman.git', branch: 'v3-stable'
|
||||
gem "middleman"
|
||||
|
||||
gem "middleman-minify-html"
|
||||
|
||||
gem "builder"
|
||||
|
||||
#markdown faster rendering
|
||||
gem "redcarpet"
|
||||
|
||||
gem 'nokogiri'
|
||||
|
||||
gem 'middleman-imageoptim'
|
||||
|
||||
gem 'middleman-simple-thumbnailer'
|
||||
gem "middleman-syntax"
|
||||
gem "middleman-disqus"
|
9
README.md
Normal file
9
README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Installation
|
||||
|
||||
1. Install ruby.
|
||||
2. Execute `bundle install`
|
||||
3. Execute `bundle exec middleman` to start a server on http://localhost:4567
|
||||
4. Execute `bundle exec middleman build` to build a production version
|
||||
|
||||
The Middleman configuration file is `config.rb` and template configuration can be found in `data` folder.
|
||||
The front matter can be in YAML (denoted by `---`) or JSON (`;;;`)
|
60
config.rb
Normal file
60
config.rb
Normal file
|
@ -0,0 +1,60 @@
|
|||
require "builder";
|
||||
set :markdown_engine, :redcarpet
|
||||
set :markdown, :fenced_code_blocks => true, :smartypants => true
|
||||
set :redcarpet, autolink: true
|
||||
|
||||
# Change Compass configuration
|
||||
compass_config do |config|
|
||||
config.output_style = :compact
|
||||
end
|
||||
|
||||
page "/sitemap.xml", :layout => false
|
||||
|
||||
###
|
||||
# Helpers
|
||||
###
|
||||
|
||||
# Automatic image dimensions on image_tag helper
|
||||
activate :automatic_image_sizes
|
||||
|
||||
# Reload the browser automatically whenever files change
|
||||
# configure :development do
|
||||
# activate :livereload
|
||||
# end
|
||||
|
||||
activate :disqus do |d|
|
||||
d.shortname = 'your-shortname' # Replace with your Disqus shortname.
|
||||
end
|
||||
|
||||
set :css_dir, 'stylesheets'
|
||||
|
||||
set :js_dir, 'javascripts'
|
||||
|
||||
set :images_dir, 'images'
|
||||
|
||||
activate :directory_indexes
|
||||
|
||||
activate :middleman_simple_thumbnailer
|
||||
#activate :imageoptim
|
||||
|
||||
# Build-specific configuration
|
||||
configure :build do
|
||||
# For example, change the Compass output style for deployment
|
||||
activate :minify_css
|
||||
|
||||
# Minify Javascript on build
|
||||
activate :minify_javascript
|
||||
|
||||
# Enable cache buster
|
||||
activate :asset_hash
|
||||
|
||||
activate :minify_html
|
||||
|
||||
activate :gzip
|
||||
|
||||
# Use relative URLs
|
||||
# activate :relative_assets
|
||||
|
||||
# Or use a different image path
|
||||
# set :http_prefix, "/Content/images/"
|
||||
end
|
2
data/site.yml
Normal file
2
data/site.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
title: Подземеплан
|
||||
url: http://подземеплан.рф
|
43
source/contribute.md.erb
Normal file
43
source/contribute.md.erb
Normal file
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: Чем помочь фестивалю
|
||||
---
|
||||
Всем участникам - бесплатный вход. Расписание очень гибкое, с хозяйственной частью проблем не будет.
|
||||
|
||||
### Присутствовать
|
||||
|
||||
* Нужны игротехи на секцию диалогов. Нужно будет только выдавать загрузы и следить за игроками. Там ожидается мало спорных моментов.
|
||||
|
||||
### Водить
|
||||
|
||||
* Самый простой формат для вождения - это словесные боёвки. Одна-единственная сцена, да и в той игроки дерутся. Одна игра рассчитана минут на 20. Предполагается, что вы проведёте несколько.
|
||||
* Короткие "рельсовые" данжены минут на 40. Опять же, предполагается, что за день вы возьмёте несколько партий.
|
||||
* Заявляйте собственные игры! Вы ещё успеете придумать, например, данжен на одну сессию.
|
||||
* У вас есть очень, очень интересная настольная игра (возможно, собственного сочинения), но вам не с кем сыграть? Приносите!
|
||||
|
||||
### Сочинять
|
||||
|
||||
Чтобы играть в игры, нужно чтобы кто-то придумал эти игры. Это не представляет большой проблемы, но больше игр - это хорошо, и мы всегда рады вдохновлённым людям. Что можно сочинить:
|
||||
|
||||
* Диалоги (ролёвки на двоих без мастера)
|
||||
* Короткие "рельсовые" данжены с готовыми персонажами
|
||||
* Хотелось бы мини-кабинетку на пятерых человек (правда, вам скорее всего придётся её и проводить)
|
||||
* Что-нибудь совершенно экспериментальное. Это именно тот редкий случай, когда есть место, время и большая разнообразная аудитория, готовая к экспериментам.
|
||||
|
||||
Строгих ограничений по тематике нет. Группа заранее помечена как 16+
|
||||
|
||||
### Делиться опытом
|
||||
|
||||
Нужно больше докладов на конференцию! Даже есть отдельная тема для этого. Во время конференции останавливаются все игры, чтобы не отвлекать друг друга.
|
||||
|
||||
Доклад может быть любым: личной рефлексией "Как я строил космооперу из карточек Манчкина и бумажных обрезков", рассказом об интересной находке, вопросом "Кто знает, что такое Ктулху". Есть только два ограничения: тематика и тайминг.
|
||||
|
||||
Ограничение по тематике достаточно очевидно, жёсткий тайминг - 20 минут. К сожалению, долгие выступления провоцируют такие же долгие обсуждения, что выматывает всех присутствующих, поэтому мы не сможем втиснуть их в расписание. Обсуждение строго не ограничивается, поэтому вам могут задавать вопросы ещё столько же времени.
|
||||
|
||||
### Куда обращаться
|
||||
|
||||
Если вы чувствуете, что готовы, то свяжитесь любым удобным способом:
|
||||
|
||||
* [Электронная почта](mailto:keloero@oreolek.ru)
|
||||
* [ВКонтакте](https://vk.com/the_grey)
|
||||
|
||||
Спасибо.
|
12
source/events/alex.md.erb
Normal file
12
source/events/alex.md.erb
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: Данжен — Алексей Вольхин
|
||||
---
|
||||
Мини игра до начала конференции по собственной веселой и простой системе. Как я её называю по "гусарской системе". Варианты миров: Империя ужаса, Пороховые маги, Хогвардс и ваши вкусные идеи тоже приветствуются) от 3х игроков на сессию. Возможно несколько сессий.
|
||||
|
||||
Империя ужаса — это сборный мир по циклам Глена Кука "Хроника Черного отряда" и "Империя ужаса". Мир темных магов, их борьбы и предательства. Мир кровавых ритуалов и кровополитных сражений. Мир самых страшных ночных кошмаров, воплотившихся с приходом к престолу Темного Властелина.
|
||||
|
||||
Мир Пороховых магов — это мир, где смешана магия и мушкеты. С появлением пороха - появилась новая ветка магии. Пороховая магия. Вдыхая порох, избранные многократно увеличивали свои физические данные, а также могли управлять взрывной энергией пороха. Подробнее в книгах серии "Пороховой маг".
|
||||
|
||||
Хогвардс представлять? Играем за Пожирателей смерти, после поражения в битве за Хогвардс.
|
||||
|
||||
Пожалуйста, проголосуйте, какие игры хотели бы видеть на фестивале. Проголосовать можно в комментариях или [в этой теме.](https://vk.com/topic-59385114_32299696)
|
18
source/events/conference.md.erb
Normal file
18
source/events/conference.md.erb
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
title: Конференция
|
||||
---
|
||||
|
||||
Традиционная конференция по обмену опытом.
|
||||
|
||||
Вы хотите чем-то поделиться с нами? Вас интересуют ответы на ролевые вопросы? Отлично! Приглашаем выступить на нашей конференции!
|
||||
|
||||
Тематика та же: настольные и ролевые игры.
|
||||
|
||||
* Мягкий тайминг на доклад: 10 минут.
|
||||
* Жёсткий тайминг: 20 минут.
|
||||
|
||||
Вполне возможно, что обсуждение ПОСЛЕ займет еще половину часа.
|
||||
|
||||
У нас есть проектор - поэтому вы можете приготовить свою презентацию.
|
||||
|
||||
Записаться на конференцию можно [в этой теме](https://vk.com/topic-59385114_32299650) или отправив письмо [на e-mail.](mailto:keloero@oreolek.ru)
|
7
source/events/dialogue.md.erb
Normal file
7
source/events/dialogue.md.erb
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: Диалоги
|
||||
---
|
||||
|
||||
Микро-лангедоки в формате диалогов на двоих.
|
||||
|
||||
Секцию диалогов проводят организаторы фестиваля.
|
6
source/events/fiasco.md.erb
Normal file
6
source/events/fiasco.md.erb
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Фиаско
|
||||
---
|
||||
Игра от организаторов на пять человек.
|
||||
|
||||
Пожалуйста, проголосуйте, какие игры хотели бы видеть на фестивале. Проголосовать можно в комментариях или [в этой теме.](https://vk.com/topic-59385114_32299696)
|
7
source/events/gamebox.md.erb
Normal file
7
source/events/gamebox.md.erb
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: GAMEBOX
|
||||
---
|
||||
|
||||
Секция настольных игр от магазина настольных игр "GAMEBOX"
|
||||
|
||||
Пожалуйста, проголосуйте, какие игры хотели бы видеть на фестивале. Проголосовать можно в комментариях или [в этой теме.](https://vk.com/topic-59385114_32299696)
|
22
source/events/ivan.md.erb
Normal file
22
source/events/ivan.md.erb
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Данжен — Айван Осипов
|
||||
---
|
||||
Суть: Экспериментальная(для меня, т.к. еще не водил и не играл в подобные) игра часа на 2-4
|
||||
|
||||
Количество игроков: всего 2-3 человека. Это как на одну руку, если вы черепашка-ниндзя)
|
||||
|
||||
Сведния о мире: своеобразное фэнтэзи. Пока все.
|
||||
|
||||
Требования к игрокам(по степени важности):
|
||||
|
||||
- терпимость - игра эксперементальная и с моей стороны возможно много косяков к которым я хочу снисхождения.
|
||||
- доверие - не клянчить у меня описание мира и т.п. информации, а просто поверить, что я расскажу вам все, что нужно, а если чего не рассказываю, значит это не нужно.
|
||||
- опытность - от чуть опытных новичков, до среднеуровневых игроков.
|
||||
- список неприязней - чего не любите в мирах или в вождении в целом(кто-то стимпанк не любит кто-то еще что и т.д.)
|
||||
|
||||
Последнее нужно по двум причинам:
|
||||
|
||||
1. дабы я по мог бы немного подстроить повествование под ваши предпочтения, либо
|
||||
2. сообщить вам, что подобные неприязни конфликтуют с моими замыслами слишком сильно и вам это не подходит
|
||||
|
||||
Пожалуйста, проголосуйте, какие игры хотели бы видеть на фестивале. Проголосовать можно в комментариях или [в этой теме.](https://vk.com/topic-59385114_32299696)
|
16
source/events/wargames.md.erb
Normal file
16
source/events/wargames.md.erb
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
title: Варгеймы
|
||||
---
|
||||
|
||||
Секция варгеймов от клуба ["Грань миров".](https://vk.com/wargame42ru)
|
||||
|
||||
На выбор предлагаются:
|
||||
|
||||
* Warhammer 40 000
|
||||
* Warhammer 40k Forbidden stars
|
||||
* Warmachine
|
||||
* Star Wars: X-Wing
|
||||
* Star Wars Armada
|
||||
* Star Wars Imperial Assault
|
||||
|
||||
Пожалуйста, проголосуйте за свои предпочтения в комментариях или [в этой теме.](https://vk.com/topic-59385114_32299696)
|
BIN
source/images/horizontal.jpg
Normal file
BIN
source/images/horizontal.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 MiB |
BIN
source/images/logo.png
Normal file
BIN
source/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
source/images/poster.jpg
Normal file
BIN
source/images/poster.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 716 KiB |
BIN
source/images/underplan.png
Normal file
BIN
source/images/underplan.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
92
source/index.html.erb
Normal file
92
source/index.html.erb
Normal file
|
@ -0,0 +1,92 @@
|
|||
---
|
||||
title: Подземеплан
|
||||
subtitle: Фестиваль ролевых и настольных игр
|
||||
layout: index
|
||||
---
|
||||
<div class="row bigskip-after">
|
||||
<div class="col-md-6 vertcenter">
|
||||
<h1><%= current_page.data.title %></h1>
|
||||
<p><%= image_tag 'logo.png' %></p>
|
||||
<h2><%= current_page.data.subtitle %></h2>
|
||||
<p>7 ноября, г. Кемерово</p>
|
||||
<p>ул. Карболитовская, д. 12</p>
|
||||
<%= link_to 'Что такое ролевые игры', '/whatis.html' %>
|
||||
</div>
|
||||
<div class="col-md-6 hidden-sm-down">
|
||||
<%= image_tag 'poster.jpg', :width => '100%', :class=>'img-responsive', :resize_to => '548x822', :alt => '7 ноября, 11.00, г. Кемерово, ул. Карболитовская 12б — приходите!' %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center"><a name="map">Схема проезда</a></h2>
|
||||
<p><%= image_tag 'http://placehold.it/1156x400' %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2 class="text-center"><a name="schedule">Расписание</a></h2>
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Время</th>
|
||||
<th>Стол 1</th>
|
||||
<th>Стол 2</th>
|
||||
<th>Стол 3</th>
|
||||
<th>Стол 4</th>
|
||||
<th>Стол 5</th>
|
||||
<th>Стол 6</th>
|
||||
<th>Стол 7</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">11:00</th>
|
||||
<td colspan=7>ОТКРЫТИЕ</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">11:30</th>
|
||||
<td rowspan=2><%= link_to 'Диалоги', '/events/dialogue.html' %></td>
|
||||
<td rowspan=6>Свободно</td>
|
||||
<td rowspan=6><%= link_to 'Айван Осипов', '/events/ivan.html' %></td>
|
||||
<td rowspan=6><%= link_to 'Алексей Вольхин', '/events/alex.html' %></td>
|
||||
<td rowspan=6>Свободно</td>
|
||||
<td rowspan=6><%= link_to 'Варгеймы', '/events/wargames.html' %></td>
|
||||
<td rowspan=6><%= link_to 'Игротека — GAMEBOX', '/events/gamebox.html' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">12:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">13:00</th>
|
||||
<td rowspan=2><%= link_to 'Фиаско', '/events/fiasco.html' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">14:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">15:00</th>
|
||||
<td rowspan=2>Свободно</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">16:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">17:00</th>
|
||||
<td colspan=7>ПЕРЕРЫВ</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">18:00</th>
|
||||
<td colspan=7 rowspan=3><%= link_to 'КОНФЕРЕНЦИЯ', '/events/conference.html' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">19:00</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">20:00</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
9
source/layouts/index.erb
Normal file
9
source/layouts/index.erb
Normal file
|
@ -0,0 +1,9 @@
|
|||
<%= partial "/layouts/partials/header" %>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<main>
|
||||
<%= yield %>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<%= partial "/layouts/partials/footer" %>
|
16
source/layouts/layout.erb
Normal file
16
source/layouts/layout.erb
Normal file
|
@ -0,0 +1,16 @@
|
|||
<%= partial "/layouts/partials/header" %>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<header>
|
||||
<h1><%= current_page.data.title %></h1>
|
||||
<h2><%= current_page.data.subtitle %></h2>
|
||||
</header>
|
||||
<main>
|
||||
<%= yield %>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<% if current_page.data.layout != 'index' %>
|
||||
<%= disqus %>
|
||||
<% end %>
|
||||
<%= partial "/layouts/partials/footer" %>
|
20
source/layouts/partials/_footer.erb
Normal file
20
source/layouts/partials/_footer.erb
Normal file
|
@ -0,0 +1,20 @@
|
|||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<footer>
|
||||
<% link_to 'https://vk.com/underplan' do %>
|
||||
<%= image_tag 'underplan.png', :width => 200, :resize_to => '200x100', :alt => 'Сообщество ВКонтакте', 'class' => 'pull-left' %>
|
||||
<% end %>
|
||||
<% if current_page.url != '/contribute/' %>
|
||||
<div class="pull-right">
|
||||
<p> Подробности для участников и просто тех, кто хочет помочь, описаны <%=link_to 'здесь.', '/contribute.html' %></p>
|
||||
</div>
|
||||
<% end %>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<link href='https://fonts.googleapis.com/css?family=PT+Sans|PT+Sans+Caption&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
|
||||
<script src="https://cdn.jsdelivr.net/lunr/0.5.12/lunr.min.js"></script>
|
||||
</body>
|
||||
</html>
|
29
source/layouts/partials/_header.erb
Normal file
29
source/layouts/partials/_header.erb
Normal file
|
@ -0,0 +1,29 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<%# Always force latest IE rendering engine or request Chrome Frame %>
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
|
||||
<link rel="alternate" href="/atom.xml" title="<%= data.site.title %>" type="application/atom+xml">
|
||||
<title><%= data.site.title %> - <%= current_page.data.title %></title>
|
||||
<%= stylesheet_link_tag "style" %>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-light bg-faded">
|
||||
<a class="navbar-brand" href="/"><%= data.site.title %></a>
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/#map">Схема проезда</a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/#schedule">Расписание</a>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="form-inline navbar-form pull-right">
|
||||
<input class="form-control" type="text" placeholder="Поиск">
|
||||
<button class="btn btn-success-outline" type="submit">Поиск</button>
|
||||
</form>
|
||||
</nav>
|
||||
<div class="container">
|
3
source/robots.txt
Normal file
3
source/robots.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
User-agent: *
|
||||
Disallow:
|
||||
Sitemap: /sitemap.xml
|
14
source/search.json.erb
Normal file
14
source/search.json.erb
Normal file
|
@ -0,0 +1,14 @@
|
|||
<%
|
||||
entries = []
|
||||
articles = sitemap.resources.find_all{|p| p.source_file.match(/\.(md|html)/) }
|
||||
articles.each do |article|
|
||||
if (defined? article.title)
|
||||
entry = {
|
||||
:title => article.title,
|
||||
:url => article.url,
|
||||
:content => article.body
|
||||
}
|
||||
entries << entry
|
||||
end
|
||||
end
|
||||
%><%=entries.to_json %>
|
11
source/sitemap.xml.builder
Normal file
11
source/sitemap.xml.builder
Normal file
|
@ -0,0 +1,11 @@
|
|||
xml.instruct!
|
||||
xml.urlset 'xmlns' => "http://www.sitemaps.org/schemas/sitemap/0.9" do
|
||||
sitemap.resources.select { |page| page.path =~ /\.html/ && !page.data.noindex == true }.each do |page|
|
||||
xml.url do
|
||||
xml.loc "#{data.site.url}#{page.url}"
|
||||
xml.lastmod Date.today.to_time.iso8601
|
||||
xml.changefreq page.data.changefreq || "monthly"
|
||||
xml.priority page.data.priority || "0.5"
|
||||
end
|
||||
end
|
||||
end
|
177
source/stylesheets/_buttons.scss
Normal file
177
source/stylesheets/_buttons.scss
Normal file
|
@ -0,0 +1,177 @@
|
|||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
font-weight: $btn-font-weight;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
border: $border-width solid transparent;
|
||||
@include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $line-height, $btn-border-radius);
|
||||
@include transition(all .2s ease-in-out);
|
||||
|
||||
&,
|
||||
&:active,
|
||||
&.active {
|
||||
&:focus,
|
||||
&.focus {
|
||||
@include tab-focus();
|
||||
}
|
||||
}
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
&.focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&.active {
|
||||
background-image: none;
|
||||
outline: 0;
|
||||
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&:disabled,
|
||||
fieldset[disabled] & {
|
||||
cursor: $cursor-disabled;
|
||||
opacity: .65;
|
||||
@include box-shadow(none);
|
||||
}
|
||||
}
|
||||
|
||||
// Future-proof disabling of clicks on `<a>` elements
|
||||
a.btn.disaabled,
|
||||
fieldset[disabled] a.btn {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Alternate buttons
|
||||
//
|
||||
|
||||
.btn-primary {
|
||||
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
|
||||
}
|
||||
.btn-secondary {
|
||||
@include button-variant($btn-secondary-color, $btn-secondary-bg, $btn-secondary-border);
|
||||
}
|
||||
.btn-info {
|
||||
@include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
|
||||
}
|
||||
.btn-success {
|
||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
||||
}
|
||||
.btn-warning {
|
||||
@include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
|
||||
}
|
||||
.btn-danger {
|
||||
@include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
|
||||
}
|
||||
|
||||
// Remove all backgrounds
|
||||
.btn-primary-outline {
|
||||
@include button-outline-variant($btn-primary-bg);
|
||||
}
|
||||
.btn-secondary-outline {
|
||||
@include button-outline-variant($btn-secondary-border);
|
||||
}
|
||||
.btn-info-outline {
|
||||
@include button-outline-variant($btn-info-bg);
|
||||
}
|
||||
.btn-success-outline {
|
||||
@include button-outline-variant($btn-success-bg);
|
||||
}
|
||||
.btn-warning-outline {
|
||||
@include button-outline-variant($btn-warning-bg);
|
||||
}
|
||||
.btn-danger-outline {
|
||||
@include button-outline-variant($btn-danger-bg);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Link buttons
|
||||
//
|
||||
|
||||
// Make a button look and behave like a link
|
||||
.btn-link {
|
||||
font-weight: normal;
|
||||
color: $link-color;
|
||||
border-radius: 0;
|
||||
|
||||
&,
|
||||
&:active,
|
||||
&.active,
|
||||
&:disabled,
|
||||
fieldset[disabled] & {
|
||||
background-color: transparent;
|
||||
@include box-shadow(none);
|
||||
}
|
||||
&,
|
||||
&:focus,
|
||||
&:active {
|
||||
border-color: transparent;
|
||||
}
|
||||
@include hover {
|
||||
border-color: transparent;
|
||||
}
|
||||
@include hover-focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
background-color: transparent;
|
||||
}
|
||||
&:disabled,
|
||||
fieldset[disabled] & {
|
||||
@include hover-focus {
|
||||
color: $btn-link-disabled-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Button Sizes
|
||||
//
|
||||
|
||||
.btn-lg {
|
||||
// line-height: ensure even-numbered height of button next to large input
|
||||
@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);
|
||||
}
|
||||
.btn-sm {
|
||||
// line-height: ensure proper height of button next to small input
|
||||
@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Block button
|
||||
//
|
||||
|
||||
.btn-block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
// Vertically space out multiple block buttons
|
||||
.btn-block + .btn-block {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
// Specificity overrides
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
input[type="button"] {
|
||||
&.btn-block {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
294
source/stylesheets/_card.scss
Normal file
294
source/stylesheets/_card.scss
Normal file
|
@ -0,0 +1,294 @@
|
|||
//
|
||||
// Base styles
|
||||
//
|
||||
|
||||
$card-spacer-x: 1.25rem;
|
||||
$card-spacer-y: .75rem;
|
||||
$card-border-width: .0625rem;
|
||||
$card-border-radius: .25rem;
|
||||
$card-border-color: #e5e5e5;
|
||||
$card-border-radius-inner: ($card-border-radius - $card-border-width);
|
||||
|
||||
$card-cap-bg: #f5f5f5;
|
||||
|
||||
.card {
|
||||
position: relative;
|
||||
margin-bottom: $card-spacer-y;
|
||||
border: $card-border-width solid $card-border-color;
|
||||
@include border-radius($card-border-radius);
|
||||
}
|
||||
|
||||
.card-block {
|
||||
padding: $card-spacer-x;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: $card-spacer-y;
|
||||
}
|
||||
|
||||
.card-subtitle {
|
||||
margin-top: -($card-spacer-y / 2);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.card-text:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// .card-actions {
|
||||
// padding: $card-spacer-y $card-spacer-x;
|
||||
|
||||
// .card-link + .card-link {
|
||||
// margin-left: $card-spacer-x;
|
||||
// }
|
||||
// }
|
||||
|
||||
.card-link {
|
||||
@include hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
+ .card-link {
|
||||
margin-left: $card-spacer-x;
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-rounded {
|
||||
.card {
|
||||
> .list-group:first-child {
|
||||
.list-group-item:first-child {
|
||||
border-radius: $card-border-radius $card-border-radius 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
> .list-group:last-child {
|
||||
.list-group-item:last-child {
|
||||
border-radius: 0 0 $card-border-radius $card-border-radius;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Optional textual caps
|
||||
//
|
||||
|
||||
.card-header {
|
||||
padding: $card-spacer-y $card-spacer-x;
|
||||
background-color: $card-cap-bg;
|
||||
border-bottom: $card-border-width solid $card-border-color;
|
||||
|
||||
&:first-child {
|
||||
@include border-radius($card-border-radius-inner $card-border-radius-inner 0 0);
|
||||
}
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
padding: $card-spacer-y $card-spacer-x;
|
||||
background-color: $card-cap-bg;
|
||||
border-top: $card-border-width solid $card-border-color;
|
||||
|
||||
&:last-child {
|
||||
@include border-radius(0 0 $card-border-radius-inner $card-border-radius-inner);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Background variations
|
||||
//
|
||||
|
||||
.card-primary {
|
||||
background-color: $brand-primary;
|
||||
border-color: $brand-primary;
|
||||
}
|
||||
.card-success {
|
||||
background-color: $brand-success;
|
||||
border-color: $brand-success;
|
||||
}
|
||||
.card-info {
|
||||
background-color: $brand-info;
|
||||
border-color: $brand-info;
|
||||
}
|
||||
.card-warning {
|
||||
background-color: $brand-warning;
|
||||
border-color: $brand-warning;
|
||||
}
|
||||
.card-danger {
|
||||
background-color: $brand-danger;
|
||||
border-color: $brand-danger;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Inverse text within a card for use with dark backgrounds
|
||||
//
|
||||
|
||||
.card-inverse {
|
||||
.card-header,
|
||||
.card-footer {
|
||||
border-bottom: .075rem solid rgba(255,255,255,.2);
|
||||
}
|
||||
.card-header,
|
||||
.card-footer,
|
||||
.card-title,
|
||||
.card-blockquote {
|
||||
color: #fff;
|
||||
}
|
||||
.card-link,
|
||||
.card-text,
|
||||
.card-blockquote > footer {
|
||||
color: rgba(255,255,255,.65);
|
||||
}
|
||||
.card-link {
|
||||
@include hover-focus {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Blockquote
|
||||
//
|
||||
|
||||
.card-blockquote {
|
||||
padding: 0;
|
||||
margin-bottom: 0;
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
// Card image
|
||||
.card-img {
|
||||
// margin: -1.325rem;
|
||||
@include border-radius(.25rem);
|
||||
}
|
||||
.card-img-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 1.25rem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Card image caps
|
||||
.card-img-top {
|
||||
@include border-radius(.25rem .25rem 0 0);
|
||||
}
|
||||
.card-img-bottom {
|
||||
@include border-radius(0 0 .25rem .25rem);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Card set
|
||||
//
|
||||
|
||||
@if $enable-flex {
|
||||
.card-deck {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
margin-right: -.625rem;
|
||||
margin-left: -.625rem;
|
||||
|
||||
.card {
|
||||
flex: 1 0 0;
|
||||
margin-right: .625rem;
|
||||
margin-left: .625rem;
|
||||
}
|
||||
}
|
||||
} @else {
|
||||
.card-deck {
|
||||
display: table;
|
||||
table-layout: fixed;
|
||||
border-spacing: 1.25rem 0;
|
||||
|
||||
.card {
|
||||
display: table-cell;
|
||||
width: 1%;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
.card-deck-wrapper {
|
||||
margin-right: -1.25rem;
|
||||
margin-left: -1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Card groups
|
||||
//
|
||||
|
||||
.card-group {
|
||||
@if $enable-flex {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
} @else {
|
||||
display: table;
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.card {
|
||||
@if $enable-flex {
|
||||
flex: 1 0 0;
|
||||
} @else {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
+ .card {
|
||||
margin-left: 0;
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
// Handle rounded corners
|
||||
@if $enable-rounded {
|
||||
&:first-child {
|
||||
.card-img-top {
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.card-img-bottom {
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
.card-img-top {
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.card-img-bottom {
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:first-child):not(:last-child) {
|
||||
border-radius: 0;
|
||||
|
||||
.card-img-top,
|
||||
.card-img-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Card
|
||||
//
|
||||
|
||||
.card-columns {
|
||||
column-count: 3;
|
||||
column-gap: 1.25rem;
|
||||
|
||||
.card {
|
||||
display: inline-block;
|
||||
width: 100%; // Don't let them exceed the column width
|
||||
}
|
||||
}
|
58
source/stylesheets/_code.scss
Normal file
58
source/stylesheets/_code.scss
Normal file
|
@ -0,0 +1,58 @@
|
|||
// Inline and block code styles
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: $font-family-monospace;
|
||||
}
|
||||
|
||||
// Inline code
|
||||
code {
|
||||
padding: .2rem .4rem;
|
||||
font-size: 90%;
|
||||
color: $code-color;
|
||||
background-color: $code-bg;
|
||||
@include border-radius($border-radius);
|
||||
}
|
||||
|
||||
// User input typically entered via keyboard
|
||||
kbd {
|
||||
padding: .2rem .4rem;
|
||||
font-size: 90%;
|
||||
color: $kbd-color;
|
||||
background-color: $kbd-bg;
|
||||
@include border-radius($border-radius-sm);
|
||||
@include box-shadow(inset 0 -.1rem 0 rgba(0,0,0,.25));
|
||||
|
||||
kbd {
|
||||
padding: 0;
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
@include box-shadow(none);
|
||||
}
|
||||
}
|
||||
|
||||
// Blocks of code
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
font-size: 90%;
|
||||
line-height: $line-height;
|
||||
color: $pre-color;
|
||||
|
||||
// Account for some code outputs that place code tags in pre tags
|
||||
code {
|
||||
padding: 0;
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
background-color: transparent;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Enable scrollable blocks of code
|
||||
.pre-scrollable {
|
||||
max-height: $pre-scrollable-max-height;
|
||||
overflow-y: scroll;
|
||||
}
|
125
source/stylesheets/_grid.scss
Normal file
125
source/stylesheets/_grid.scss
Normal file
|
@ -0,0 +1,125 @@
|
|||
// Container widths
|
||||
//
|
||||
// Set the container width, and override it for fixed navbars in media queries.
|
||||
|
||||
.container {
|
||||
@include make-container();
|
||||
|
||||
// For each breakpoint, define the maximum width of the container in a media query
|
||||
@each $breakpoint, $container-max-width in $container-max-widths {
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
max-width: $container-max-width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Fluid container
|
||||
//
|
||||
// Utilizes the mixin meant for fixed width containers, but without any defined
|
||||
// width for fluid, full width layouts.
|
||||
|
||||
.container-fluid {
|
||||
@include make-container();
|
||||
}
|
||||
|
||||
|
||||
// Row
|
||||
//
|
||||
// Rows contain and clear the floats of your columns.
|
||||
|
||||
.row {
|
||||
@include make-row();
|
||||
}
|
||||
|
||||
|
||||
// Columns
|
||||
//
|
||||
// Common styles for small and large grid columns
|
||||
|
||||
@include make-grid-columns();
|
||||
|
||||
|
||||
// Flex variation
|
||||
//
|
||||
// Custom styles for additional flex alignment options.
|
||||
|
||||
@if $enable-flex {
|
||||
|
||||
// Flex column reordering
|
||||
|
||||
.col-xs-first { order: -1; }
|
||||
.col-xs-last { order: 1; }
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.col-sm-first { order: -1; }
|
||||
.col-sm-last { order: 1; }
|
||||
}
|
||||
@include media-breakpoint-up(md) {
|
||||
.col-md-first { order: -1; }
|
||||
.col-md-last { order: 1; }
|
||||
}
|
||||
@include media-breakpoint-up(lg) {
|
||||
.col-lg-first { order: -1; }
|
||||
.col-lg-last { order: 1; }
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
.col-xl-first { order: -1; }
|
||||
.col-xl-last { order: 1; }
|
||||
}
|
||||
|
||||
// Alignment for every column in row
|
||||
|
||||
.row-xs-top { align-items: flex-start; }
|
||||
.row-xs-center { align-items: center; }
|
||||
.row-xs-bottom { align-items: flex-end; }
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.row-sm-top { align-items: flex-start; }
|
||||
.row-sm-center { align-items: center; }
|
||||
.row-sm-bottom { align-items: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(md) {
|
||||
.row-md-top { align-items: flex-start; }
|
||||
.row-md-center { align-items: center; }
|
||||
.row-md-bottom { align-items: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(lg) {
|
||||
.row-lg-top { align-items: flex-start; }
|
||||
.row-lg-center { align-items: center; }
|
||||
.row-lg-bottom { align-items: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
.row-xl-top { align-items: flex-start; }
|
||||
.row-xl-center { align-items: center; }
|
||||
.row-xl-bottom { align-items: flex-end; }
|
||||
}
|
||||
|
||||
// Alignment per column
|
||||
|
||||
.col-xs-top { align-self: flex-start; }
|
||||
.col-xs-center { align-self: center; }
|
||||
.col-xs-bottom { align-self: flex-end; }
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.col-sm-top { align-self: flex-start; }
|
||||
.col-sm-center { align-self: center; }
|
||||
.col-sm-bottom { align-self: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(md) {
|
||||
.col-md-top { align-self: flex-start; }
|
||||
.col-md-center { align-self: center; }
|
||||
.col-md-bottom { align-self: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(lg) {
|
||||
.col-lg-top { align-self: flex-start; }
|
||||
.col-lg-center { align-self: center; }
|
||||
.col-lg-bottom { align-self: flex-end; }
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
.col-xl-top { align-self: flex-start; }
|
||||
.col-xl-center { align-self: center; }
|
||||
.col-xl-bottom { align-self: flex-end; }
|
||||
}
|
||||
|
||||
}
|
28
source/stylesheets/_images.scss
Normal file
28
source/stylesheets/_images.scss
Normal file
|
@ -0,0 +1,28 @@
|
|||
// Responsive images (ensure images don't scale beyond their parents)
|
||||
.img-responsive {
|
||||
@include img-responsive();
|
||||
}
|
||||
|
||||
// Rounded corners
|
||||
.img-rounded {
|
||||
@include border-radius($border-radius-lg);
|
||||
}
|
||||
|
||||
// Image thumbnails
|
||||
.img-thumbnail {
|
||||
padding: $thumbnail-padding;
|
||||
line-height: $line-height;
|
||||
background-color: $thumbnail-bg;
|
||||
border: 1px solid $thumbnail-border;
|
||||
border-radius: $thumbnail-border-radius;
|
||||
transition: all .2s ease-in-out;
|
||||
@include box-shadow(0 1px 2px rgba(0,0,0,.075));
|
||||
|
||||
// Keep them at most 100% wide
|
||||
@include img-responsive(inline-block);
|
||||
}
|
||||
|
||||
// Perfect circle
|
||||
.img-circle {
|
||||
border-radius: 50%;
|
||||
}
|
60
source/stylesheets/_mixins.scss
Normal file
60
source/stylesheets/_mixins.scss
Normal file
|
@ -0,0 +1,60 @@
|
|||
// Toggles
|
||||
//
|
||||
// Used in conjunction with global variables to enable certain theme features.
|
||||
|
||||
@mixin border-radius($radius: $border-radius) {
|
||||
@if $enable-rounded {
|
||||
border-radius: $radius;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin box-shadow($shadow...) {
|
||||
@if $enable-shadows {
|
||||
box-shadow: $shadow;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin transition($transition...) {
|
||||
@if $enable-transitions {
|
||||
transition: $transition;
|
||||
}
|
||||
}
|
||||
|
||||
// Utilities
|
||||
@import "mixins/breakpoints";
|
||||
@import "mixins/hide-text";
|
||||
@import "mixins/hover";
|
||||
@import "mixins/image";
|
||||
@import "mixins/label";
|
||||
@import "mixins/reset-filter";
|
||||
@import "mixins/resize";
|
||||
@import "mixins/responsive-visibility";
|
||||
@import "mixins/screen-reader";
|
||||
@import "mixins/size";
|
||||
@import "mixins/tab-focus";
|
||||
@import "mixins/reset-text";
|
||||
@import "mixins/text-emphasis";
|
||||
@import "mixins/text-truncate";
|
||||
|
||||
// // Components
|
||||
@import "mixins/alert";
|
||||
@import "mixins/buttons";
|
||||
@import "mixins/pagination";
|
||||
@import "mixins/list-group";
|
||||
@import "mixins/nav-divider";
|
||||
@import "mixins/forms";
|
||||
@import "mixins/progress";
|
||||
@import "mixins/table-row";
|
||||
|
||||
// // Skins
|
||||
@import "mixins/background-variant";
|
||||
@import "mixins/border-radius";
|
||||
@import "mixins/gradients";
|
||||
|
||||
// // Layout
|
||||
@import "mixins/clearfix";
|
||||
@import "mixins/center-block";
|
||||
// @import "mixins/navbar-align";
|
||||
@import "mixins/grid-framework";
|
||||
@import "mixins/grid";
|
||||
@import "mixins/pulls";
|
155
source/stylesheets/_nav.scss
Normal file
155
source/stylesheets/_nav.scss
Normal file
|
@ -0,0 +1,155 @@
|
|||
// Base class
|
||||
//
|
||||
// Kickstart any navigation component with a set of style resets. Works with
|
||||
// `<nav>`s or `<ul>`s.
|
||||
|
||||
.nav {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: inline-block;
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
// Disabled state lightens text and removes hover/tab effects
|
||||
&.disabled {
|
||||
color: $nav-disabled-link-color;
|
||||
|
||||
@include plain-hover-focus {
|
||||
color: $nav-disabled-link-hover-color;
|
||||
cursor: $cursor-disabled;
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Nav inline
|
||||
|
||||
.nav-inline {
|
||||
.nav-link + .nav-link {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Tabs
|
||||
//
|
||||
|
||||
.nav-tabs {
|
||||
border-bottom: 1px solid $nav-tabs-border-color;
|
||||
@include clearfix();
|
||||
|
||||
.nav-item {
|
||||
float: left;
|
||||
// Make the list-items overlay the bottom border
|
||||
margin-bottom: -1px;
|
||||
|
||||
+ .nav-item {
|
||||
margin-left: .2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: block;
|
||||
padding: $nav-link-padding;
|
||||
border: 1px solid transparent;
|
||||
@include border-radius($border-radius $border-radius 0 0);
|
||||
|
||||
@include hover-focus {
|
||||
border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
@include plain-hover-focus {
|
||||
color: $nav-disabled-link-color;
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.nav-item.open .nav-link {
|
||||
@include plain-hover-focus {
|
||||
color: $nav-tabs-active-link-hover-color;
|
||||
background-color: $nav-tabs-active-link-hover-bg;
|
||||
border-color: $nav-tabs-active-link-hover-border-color $nav-tabs-active-link-hover-border-color transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Pills
|
||||
//
|
||||
|
||||
.nav-pills {
|
||||
.nav-item {
|
||||
float: left;
|
||||
|
||||
+ .nav-item {
|
||||
margin-left: .2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: block;
|
||||
padding: $nav-link-padding;
|
||||
@include border-radius($nav-pills-border-radius);
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.nav-item.open .nav-link {
|
||||
@include plain-hover-focus {
|
||||
color: $component-active-color;
|
||||
cursor: default;
|
||||
background-color: $component-active-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-stacked {
|
||||
.nav-item {
|
||||
display: block;
|
||||
float: none;
|
||||
|
||||
+ .nav-item {
|
||||
margin-top: .2rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Tabbable tabs
|
||||
//
|
||||
|
||||
// Hide tabbable panes to start, show them when `.active`
|
||||
.tab-content {
|
||||
> .tab-pane {
|
||||
display: none;
|
||||
}
|
||||
> .active {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Dropdowns
|
||||
//
|
||||
|
||||
.nav-tabs .dropdown-menu {
|
||||
// Make dropdown border overlap tab border
|
||||
margin-top: -1px;
|
||||
// Remove the top rounded corners here since there is a hard edge above the menu
|
||||
@include border-top-radius(0);
|
||||
}
|
226
source/stylesheets/_navbar.scss
Normal file
226
source/stylesheets/_navbar.scss
Normal file
|
@ -0,0 +1,226 @@
|
|||
// Wrapper and base class
|
||||
//
|
||||
// Provide a static navbar from which we expand to create full-width, fixed, and
|
||||
// other navbar variations.
|
||||
|
||||
.navbar {
|
||||
position: relative;
|
||||
padding: $navbar-padding-vertical $navbar-padding-horizontal;
|
||||
@include clearfix;
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
@include border-radius($navbar-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar alignment options
|
||||
//
|
||||
// Display the navbar across the entirety of the page or fixed it to the top or
|
||||
// bottom of the page.
|
||||
|
||||
// Static top (unfixed, but 100% wide) navbar
|
||||
.navbar-static-top {
|
||||
z-index: $zindex-navbar;
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
@include border-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Fix the top/bottom navbars when screen real estate supports it
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-navbar-fixed;
|
||||
margin-bottom: 0; // override .navbar defaults
|
||||
|
||||
// Undo the rounded corners
|
||||
@include media-breakpoint-up(sm) {
|
||||
@include border-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-fixed-top {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.navbar-fixed-bottom {
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.navbar-sticky-top {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: $zindex-navbar-sticky;
|
||||
width: 100%;
|
||||
|
||||
// Undo the rounded corners
|
||||
@include media-breakpoint-up(sm) {
|
||||
@include border-radius(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Brand/project name
|
||||
//
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
margin-right: 1rem;
|
||||
padding-top: .25rem;
|
||||
padding-bottom: .25rem;
|
||||
font-size: $font-size-lg;
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
> img {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.navbar-divider {
|
||||
float: left;
|
||||
width: 1px;
|
||||
padding-top: .425rem;
|
||||
padding-bottom: .425rem;
|
||||
overflow: hidden;
|
||||
margin-left: $navbar-padding-horizontal;
|
||||
margin-right: $navbar-padding-horizontal;
|
||||
|
||||
&:before {
|
||||
content: '\00a0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navbar toggle
|
||||
//
|
||||
// Custom button for toggling the `.navbar-collapse`, powered by the collapse
|
||||
// Bootstrap JavaScript plugin.
|
||||
|
||||
.navbar-toggler {
|
||||
padding: .5rem .75rem;
|
||||
font-size: $font-size-lg;
|
||||
line-height: 1;
|
||||
background: none;
|
||||
border: $border-width solid transparent;
|
||||
@include border-radius($btn-border-radius);
|
||||
|
||||
@include hover-focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Custom override for
|
||||
.navbar-toggleable {
|
||||
&-xs {
|
||||
@include media-breakpoint-up(sm) {
|
||||
display: block !important;
|
||||
}
|
||||
}
|
||||
&-sm {
|
||||
@include media-breakpoint-up(md) {
|
||||
display: block !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Navigation
|
||||
//
|
||||
// Custom navbar navigation built on the base `.nav` styles.
|
||||
|
||||
.navbar-nav {
|
||||
.nav-item {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: block;
|
||||
padding-top: .425rem;
|
||||
padding-bottom: .425rem;
|
||||
|
||||
+ .nav-link {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-item + .nav-item {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
// Dark links against a light background
|
||||
.navbar-light {
|
||||
.navbar-brand {
|
||||
color: $navbar-light-active-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-light-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.nav-link {
|
||||
color: $navbar-light-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-light-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.open > .nav-link,
|
||||
.active > .nav-link,
|
||||
.nav-link.open,
|
||||
.nav-link.active {
|
||||
@include plain-hover-focus {
|
||||
color: $navbar-light-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-divider {
|
||||
background-color: rgba(0,0,0,.075);
|
||||
}
|
||||
}
|
||||
|
||||
// White links against a dark background
|
||||
.navbar-dark {
|
||||
.navbar-brand {
|
||||
color: $navbar-dark-active-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.nav-link {
|
||||
color: $navbar-dark-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-dark-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.open > .nav-link,
|
||||
.active > .nav-link,
|
||||
.nav-link.open,
|
||||
.nav-link.active {
|
||||
@include plain-hover-focus {
|
||||
color: $navbar-dark-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-divider {
|
||||
background-color: rgba(255,255,255,.075);
|
||||
}
|
||||
}
|
428
source/stylesheets/_normalize.scss
Normal file
428
source/stylesheets/_normalize.scss
Normal file
|
@ -0,0 +1,428 @@
|
|||
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
//
|
||||
// 1. Set default font family to sans-serif.
|
||||
// 2. Prevent iOS and IE text size adjust after device orientation change,
|
||||
// without disabling user zoom.
|
||||
//
|
||||
|
||||
html {
|
||||
font-family: sans-serif; // 1
|
||||
-ms-text-size-adjust: 100%; // 2
|
||||
-webkit-text-size-adjust: 100%; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// Remove default margin.
|
||||
//
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
// HTML5 display definitions
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
// Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
// and Firefox.
|
||||
// Correct `block` display not defined for `main` in IE 11.
|
||||
//
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
//
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; // 1
|
||||
vertical-align: baseline; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// Prevent modern browsers from displaying `audio` without controls.
|
||||
// Remove excess height in iOS 5 devices.
|
||||
//
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address `[hidden]` styling not present in IE 8/9/10.
|
||||
// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
|
||||
//
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Links
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Remove the gray background color from active links in IE 10.
|
||||
//
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
//
|
||||
// Improve readability of focused elements when they are also in an
|
||||
// active/hover state.
|
||||
//
|
||||
|
||||
a {
|
||||
&:active {
|
||||
outline: 0;
|
||||
}
|
||||
&:hover {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Text-level semantics
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
//
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
//
|
||||
// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
//
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in Safari and Chrome.
|
||||
//
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
//
|
||||
// Address variable `h1` font-size and margin within `section` and `article`
|
||||
// contexts in Firefox 4+, Safari, and Chrome.
|
||||
//
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address styling not present in IE 8/9.
|
||||
//
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
//
|
||||
// Address inconsistent and variable font size in all browsers.
|
||||
//
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
//
|
||||
// Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
//
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
// Embedded content
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Remove border when inside `a` element in IE 8/9/10.
|
||||
//
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Correct overflow not hidden in IE 9/10/11.
|
||||
//
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
// Grouping content
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Address margin not present in IE 8/9 and Safari.
|
||||
//
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
//
|
||||
// Address differences between Firefox and other browsers.
|
||||
//
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Contain overflow in all browsers.
|
||||
//
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
//
|
||||
// Address odd `em`-unit font size rendering in all browsers.
|
||||
//
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
// Forms
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
// styling of `select`, unless a `border` property is set.
|
||||
//
|
||||
|
||||
//
|
||||
// 1. Correct color not being inherited.
|
||||
// Known issue: affects color of disabled elements.
|
||||
// 2. Correct font properties not being inherited.
|
||||
// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
//
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; // 1
|
||||
font: inherit; // 2
|
||||
margin: 0; // 3
|
||||
}
|
||||
|
||||
//
|
||||
// Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
//
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
//
|
||||
// Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
// All other form control elements do not inherit `text-transform` values.
|
||||
// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
// Correct `select` style inheritance in Firefox.
|
||||
//
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
// and `video` controls.
|
||||
// 2. Correct inability to style clickable `input` types in iOS.
|
||||
// 3. Improve usability and consistency of cursor style between image-type
|
||||
// `input` and others.
|
||||
//
|
||||
|
||||
button,
|
||||
html input[type="button"], // 1
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; // 2
|
||||
cursor: pointer; // 3
|
||||
}
|
||||
|
||||
//
|
||||
// Re-set default cursor for disabled elements.
|
||||
//
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
//
|
||||
// Remove inner padding and border in Firefox 4+.
|
||||
//
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
// the UA stylesheet.
|
||||
//
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
//
|
||||
// It's recommended that you don't attempt to style these elements.
|
||||
// Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
//
|
||||
// 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
// 2. Remove excess padding in IE 8/9/10.
|
||||
//
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; // 1
|
||||
padding: 0; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
// `font-size` values of the `input`, it causes the cursor style of the
|
||||
// decrement button to change from `default` to `text`.
|
||||
//
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
|
||||
//
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; // 1
|
||||
box-sizing: content-box; //2
|
||||
}
|
||||
|
||||
//
|
||||
// Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
// Safari (but not Chrome) clips the cancel button when the search input has
|
||||
// padding (and `textfield` appearance).
|
||||
//
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
//
|
||||
// Define consistent border, margin, and padding.
|
||||
//
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
//
|
||||
// 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
// 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
//
|
||||
|
||||
legend {
|
||||
border: 0; // 1
|
||||
padding: 0; // 2
|
||||
}
|
||||
|
||||
//
|
||||
// Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
//
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
//
|
||||
// Don't inherit the `font-weight` (applied by a rule above).
|
||||
// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
//
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Tables
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Remove most spacing between table cells.
|
||||
//
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
88
source/stylesheets/_print.scss
Normal file
88
source/stylesheets/_print.scss
Normal file
|
@ -0,0 +1,88 @@
|
|||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
|
||||
|
||||
// ==========================================================================
|
||||
// Print styles.
|
||||
// Inlined to avoid the additional HTTP request: h5bp.com/r
|
||||
// ==========================================================================
|
||||
|
||||
@media print {
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
text-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
pre,
|
||||
blockquote {
|
||||
border: 1px solid #999;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group; // h5bp.com/t
|
||||
}
|
||||
|
||||
tr,
|
||||
img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
|
||||
// Bootstrap specific changes start
|
||||
|
||||
// Bootstrap components
|
||||
.navbar {
|
||||
display: none;
|
||||
}
|
||||
.btn,
|
||||
.dropup > .btn {
|
||||
> .caret {
|
||||
border-top-color: #000 !important;
|
||||
}
|
||||
}
|
||||
.label {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.table {
|
||||
border-collapse: collapse !important;
|
||||
|
||||
td,
|
||||
th {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
}
|
||||
.table-bordered {
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #ddd !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Bootstrap specific changes end
|
||||
}
|
295
source/stylesheets/_reboot.scss
Normal file
295
source/stylesheets/_reboot.scss
Normal file
|
@ -0,0 +1,295 @@
|
|||
// Reboot
|
||||
//
|
||||
// Global resets to common HTML elements and more for easier usage by Bootstrap.
|
||||
// Builds on the resets of Normalize.css.
|
||||
|
||||
|
||||
// Reset the box-sizing
|
||||
//
|
||||
// Change from `box-sizing: content-box` to `border-box` so that when you add
|
||||
// `padding` or `border`s to an element, the overall declared `width` does not
|
||||
// change. For example, `width: 100px;` will always be `100px` despite the
|
||||
// `border: 10px solid red;` and `padding: 20px;`.
|
||||
//
|
||||
// Heads up! This reset may cause conflicts with some third-party widgets. For
|
||||
// recommendations on resolving such conflicts, see
|
||||
// http://getbootstrap.com/getting-started/#third-box-sizing.
|
||||
//
|
||||
// Credit: shttp://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
|
||||
// Make viewport responsive
|
||||
//
|
||||
// @viewport is needed because IE 10+ doesn't honor <meta name="viewport"> in
|
||||
// some cases. See http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/.
|
||||
// Eventually @viewport will replace <meta name="viewport">. It's been manually
|
||||
// prefixed for forward-compatibility.
|
||||
//
|
||||
// However, `device-width` is broken on IE 10 on Windows (Phone) 8,
|
||||
// (see http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ and https://github.com/twbs/bootstrap/issues/10497)
|
||||
// and the fix for that involves a snippet of JavaScript to sniff the user agent
|
||||
// and apply some conditional CSS.
|
||||
//
|
||||
// See http://getbootstrap.com/getting-started/#support-ie10-width for the relevant hack.
|
||||
|
||||
|
||||
// Wrap `@viewport` with `@at-root` for when folks do a nested import (e.g.,
|
||||
// `.class-name { @import "bootstrap"; }`).
|
||||
@at-root {
|
||||
@-moz-viewport { width: device-width; }
|
||||
@-ms-viewport { width: device-width; }
|
||||
@-o-viewport { width: device-width; }
|
||||
@-webkit-viewport { width: device-width; }
|
||||
@viewport { width: device-width; }
|
||||
}
|
||||
|
||||
//
|
||||
// Reset HTML, body, and more
|
||||
//
|
||||
|
||||
html {
|
||||
// Sets a specific default `font-size` for user with `rem` type scales.
|
||||
font-size: $font-size-root;
|
||||
// Changes the default tap highlight to be completely transparent in iOS.
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
}
|
||||
|
||||
body {
|
||||
// Make the `body` use the `font-size-root`
|
||||
font-family: $font-family-base;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height;
|
||||
// Go easy on the eyes and use something other than `#000` for text
|
||||
color: $body-color;
|
||||
// By default, `<body>` has no `background-color` so we set one as a best practice.
|
||||
background-color: $body-bg;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Typography
|
||||
//
|
||||
|
||||
// Remove top margins from headings
|
||||
//
|
||||
// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
|
||||
// margin for easier control within type scales as it avoids margin collapsing.
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
// Reset margins on paragraphs
|
||||
//
|
||||
// Similarly, the top margin on `<p>`s get reset. However, we also reset the
|
||||
// bottom margin to use `rem` units instead of `em`.
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
// Abbreviations and acronyms
|
||||
abbr[title],
|
||||
// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
|
||||
abbr[data-original-title] {
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted $abbr-border-color;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
margin-left: 0; // Undo browser default
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Links
|
||||
//
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
|
||||
@include hover-focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
@include tab-focus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Code
|
||||
//
|
||||
|
||||
pre {
|
||||
// Remove browser default top margin
|
||||
margin-top: 0;
|
||||
// Reset browser default of `1em` to use `rem`s
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Figures
|
||||
//
|
||||
|
||||
figure {
|
||||
// Normalize adds `margin` to `figure`s as browsers apply it inconsistently.
|
||||
// We reset that to create a better flow in-page.
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Images
|
||||
//
|
||||
|
||||
img {
|
||||
// By default, `<img>`s are `inline-block`. This assumes that, and vertically
|
||||
// centers them. This won't apply should you reset them to `block` level.
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
// iOS "clickable elements" fix for role="button"
|
||||
//
|
||||
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
|
||||
// for traditionally non-focusable elements with role="button"
|
||||
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
||||
// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged
|
||||
|
||||
[role="button"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Tables
|
||||
//
|
||||
|
||||
table {
|
||||
// Reset for nesting within parents with `background-color`.
|
||||
background-color: $table-bg;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: $table-cell-padding;
|
||||
padding-bottom: $table-cell-padding;
|
||||
color: $text-muted;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
|
||||
th {
|
||||
// Centered by default, but left-align-ed to match the `td`s below.
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Forms
|
||||
//
|
||||
|
||||
label {
|
||||
// Allow labels can use `margin` for spacing.
|
||||
display: inline-block;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
// Remove all `margin`s so our classes don't have to do it themselves.
|
||||
margin: 0;
|
||||
// Normalize includes `font: inherit;`, so `font-family`. `font-size`, etc are
|
||||
// properly inherited. However, `line-height` isn't addressed there. Using this
|
||||
// ensures we don't need to unnecessarily redeclare the global font stack.
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
textarea {
|
||||
// Textareas should really only resize vertically so they don't break their (horizontal) containers.
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
// Chrome and Firefox set a `min-width: min-content;` on fieldsets,
|
||||
// so we reset that to ensure it behaves more like a standard block element.
|
||||
// See https://github.com/twbs/bootstrap/issues/12359.
|
||||
min-width: 0;
|
||||
// Reset the default outline behavior of fieldsets so they don't affect page layout.
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
// Reset the entire legend element to match the `fieldset`
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: .5rem;
|
||||
font-size: 1.5rem;
|
||||
line-height: inherit;
|
||||
// border: 0;
|
||||
}
|
||||
|
||||
input[type="search"] {
|
||||
// This overrides the extra rounded corners on search inputs in iOS so that our
|
||||
// `.form-control` class can properly style them. Note that this cannot simply
|
||||
// be added to `.form-control` as it's not specific enough. For details, see
|
||||
// https://github.com/twbs/bootstrap/issues/11586.
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
// todo: needed?
|
||||
output {
|
||||
display: inline-block;
|
||||
// font-size: $font-size-base;
|
||||
// line-height: $line-height;
|
||||
// color: $input-color;
|
||||
}
|
193
source/stylesheets/_tables.scss
Normal file
193
source/stylesheets/_tables.scss
Normal file
|
@ -0,0 +1,193 @@
|
|||
//
|
||||
// Basic Bootstrap table
|
||||
//
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin-bottom: $spacer;
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: $table-cell-padding;
|
||||
line-height: $line-height;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid $table-border-color;
|
||||
}
|
||||
|
||||
thead th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 2px solid $table-border-color;
|
||||
}
|
||||
|
||||
tbody + tbody {
|
||||
border-top: 2px solid $table-border-color;
|
||||
}
|
||||
|
||||
.table {
|
||||
background-color: $body-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Condensed table w/ half padding
|
||||
//
|
||||
|
||||
.table-sm {
|
||||
th,
|
||||
td {
|
||||
padding: $table-sm-cell-padding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Bordered version
|
||||
//
|
||||
// Add borders all around the table and between all the columns.
|
||||
|
||||
.table-bordered {
|
||||
border: 1px solid $table-border-color;
|
||||
|
||||
th,
|
||||
td {
|
||||
border: 1px solid $table-border-color;
|
||||
}
|
||||
|
||||
thead {
|
||||
th,
|
||||
td {
|
||||
border-bottom-width: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Zebra-striping
|
||||
//
|
||||
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
||||
|
||||
.table-striped {
|
||||
tbody tr:nth-of-type(odd) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Hover effect
|
||||
//
|
||||
// Placed here since it has to come after the potential zebra striping
|
||||
|
||||
.table-hover {
|
||||
tbody tr {
|
||||
@include hover {
|
||||
background-color: $table-bg-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Table backgrounds
|
||||
//
|
||||
// Exact selectors below required to override `.table-striped` and prevent
|
||||
// inheritance to nested tables.
|
||||
|
||||
// Generate the contextual variants
|
||||
@include table-row-variant(active, $table-bg-active);
|
||||
@include table-row-variant(success, $state-success-bg);
|
||||
@include table-row-variant(info, $state-info-bg);
|
||||
@include table-row-variant(warning, $state-warning-bg);
|
||||
@include table-row-variant(danger, $state-danger-bg);
|
||||
|
||||
|
||||
// Responsive tables
|
||||
//
|
||||
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
|
||||
// by enabling horizontal scrolling. Only applies <768px. Everything above that
|
||||
// will display normally.
|
||||
|
||||
.table-responsive {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
|
||||
// Todo: find out if we need this still.
|
||||
//
|
||||
// border: 1px solid $table-border-color;
|
||||
// -ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
// min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
|
||||
}
|
||||
|
||||
|
||||
.thead-inverse {
|
||||
th {
|
||||
color: #fff;
|
||||
background-color: $gray-dark;
|
||||
}
|
||||
}
|
||||
.thead-default {
|
||||
th {
|
||||
color: $gray;
|
||||
background-color: $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
.table-inverse {
|
||||
color: $gray-lighter;
|
||||
background-color: $gray-dark;
|
||||
|
||||
&.table-bordered {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
th,
|
||||
td,
|
||||
thead th {
|
||||
border-color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.table-reflow {
|
||||
thead {
|
||||
float: left;
|
||||
}
|
||||
|
||||
tbody {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
border-top: 1px solid $table-border-color;
|
||||
border-left: 1px solid $table-border-color;
|
||||
|
||||
&:last-child {
|
||||
border-right: 1px solid $table-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot {
|
||||
&:last-child {
|
||||
tr:last-child {
|
||||
th,
|
||||
td {
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
float: left;
|
||||
|
||||
th,
|
||||
td {
|
||||
display: block !important;
|
||||
border: 1px solid $table-border-color;
|
||||
}
|
||||
}
|
||||
}
|
187
source/stylesheets/_type.scss
Normal file
187
source/stylesheets/_type.scss
Normal file
|
@ -0,0 +1,187 @@
|
|||
//
|
||||
// Headings
|
||||
//
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
font-family: $headings-font-family;
|
||||
font-weight: $headings-font-weight;
|
||||
line-height: $headings-line-height;
|
||||
color: $headings-color;
|
||||
}
|
||||
|
||||
h1, .h1,
|
||||
h2, .h2,
|
||||
h3, .h3 {
|
||||
margin-bottom: $headings-margin-bottom;
|
||||
}
|
||||
h4, .h4,
|
||||
h5, .h5,
|
||||
h6, .h6 {
|
||||
margin-bottom: $headings-margin-bottom;
|
||||
}
|
||||
|
||||
h1, .h1 { font-size: $font-size-h1; }
|
||||
h2, .h2 { font-size: $font-size-h2; }
|
||||
h3, .h3 { font-size: $font-size-h3; }
|
||||
h4, .h4 { font-size: $font-size-h4; }
|
||||
h5, .h5 { font-size: $font-size-h5; }
|
||||
h6, .h6 { font-size: $font-size-h6; }
|
||||
|
||||
.lead {
|
||||
font-size: $lead-font-size;
|
||||
font-weight: $lead-font-weight;
|
||||
}
|
||||
|
||||
// Type display classes
|
||||
.display-1 {
|
||||
font-size: $display1-size;
|
||||
font-weight: $display1-weight;
|
||||
}
|
||||
.display-2 {
|
||||
font-size: $display2-size;
|
||||
font-weight: $display2-weight;
|
||||
}
|
||||
.display-3 {
|
||||
font-size: $display3-size;
|
||||
font-weight: $display3-weight;
|
||||
}
|
||||
.display-4 {
|
||||
font-size: $display4-size;
|
||||
font-weight: $display4-weight;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Horizontal rules
|
||||
//
|
||||
|
||||
hr {
|
||||
margin-top: $spacer-y;
|
||||
margin-bottom: $spacer-y;
|
||||
border: 0;
|
||||
border-top: $hr-border-width solid $hr-border-color;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Emphasis
|
||||
//
|
||||
|
||||
small,
|
||||
.small {
|
||||
font-size: 80%;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
mark,
|
||||
.mark {
|
||||
padding: .2em;
|
||||
background-color: $state-warning-bg;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Lists
|
||||
//
|
||||
|
||||
// Unstyled keeps list items block level, just removes default browser padding and list-style
|
||||
.list-unstyled {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
// Inline turns list items into inline-block
|
||||
.list-inline {
|
||||
padding-left: 0;
|
||||
margin-left: -5px;
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
display: inline-block;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
// Horizontal description lists w/ grid classes
|
||||
.dl-horizontal {
|
||||
margin-right: -$grid-gutter-width;
|
||||
margin-left: -$grid-gutter-width;
|
||||
@include clearfix;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Misc
|
||||
//
|
||||
|
||||
// Builds on `abbr`
|
||||
.initialism {
|
||||
font-size: 90%;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
// Blockquotes
|
||||
.blockquote {
|
||||
padding: ($spacer / 2) $spacer;
|
||||
margin-bottom: $spacer;
|
||||
font-size: $blockquote-font-size;
|
||||
border-left: .25rem solid $blockquote-border-color;
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
display: block;
|
||||
font-size: 80%; // back to default font-size
|
||||
line-height: $line-height;
|
||||
color: $blockquote-small-color;
|
||||
|
||||
&:before {
|
||||
content: "\2014 \00A0"; // em dash, nbsp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Opposite alignment of blockquote
|
||||
.blockquote-reverse {
|
||||
padding-right: $spacer;
|
||||
padding-left: 0;
|
||||
text-align: right;
|
||||
border-right: .25rem solid $blockquote-border-color;
|
||||
border-left: 0;
|
||||
|
||||
// Account for citation
|
||||
footer {
|
||||
&:before { content: ""; }
|
||||
&:after {
|
||||
content: "\00A0 \2014"; // nbsp, em dash
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Figures
|
||||
//
|
||||
|
||||
.figure {
|
||||
// Ensures the caption's text aligns with the image.
|
||||
display: inline-block;
|
||||
|
||||
> img {
|
||||
@extend .img-responsive;
|
||||
line-height: 1;
|
||||
margin-bottom: ($spacer-y / 2);
|
||||
}
|
||||
}
|
||||
|
||||
.figure-caption {
|
||||
font-size: 90%;
|
||||
color: $gray-light;
|
||||
}
|
49
source/stylesheets/_utilities-responsive.scss
Normal file
49
source/stylesheets/_utilities-responsive.scss
Normal file
|
@ -0,0 +1,49 @@
|
|||
//
|
||||
// Mixins
|
||||
//
|
||||
|
||||
@each $bp in map-keys($grid-breakpoints) {
|
||||
.hidden-#{$bp}-up {
|
||||
@include media-breakpoint-up($bp) {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
.hidden-#{$bp}-down {
|
||||
@include media-breakpoint-down($bp) {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Print utilities
|
||||
//
|
||||
// Media queries are placed on the inside to be mixin-friendly.
|
||||
|
||||
.visible-print-block {
|
||||
display: none !important;
|
||||
|
||||
@media print {
|
||||
display: block !important;
|
||||
}
|
||||
}
|
||||
.visible-print-inline {
|
||||
display: none !important;
|
||||
|
||||
@media print {
|
||||
display: inline !important;
|
||||
}
|
||||
}
|
||||
.visible-print-inline-block {
|
||||
display: none !important;
|
||||
|
||||
@media print {
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
.hidden-print {
|
||||
@media print {
|
||||
@include responsive-invisibility(".hidden-print");
|
||||
}
|
||||
}
|
78
source/stylesheets/_utilities-spacing.scss
Normal file
78
source/stylesheets/_utilities-spacing.scss
Normal file
|
@ -0,0 +1,78 @@
|
|||
// Margin
|
||||
|
||||
.m-a-0 { margin: 0 !important; }
|
||||
.m-t-0 { margin-top: 0 !important; }
|
||||
.m-r-0 { margin-right: 0 !important; }
|
||||
.m-b-0 { margin-bottom: 0 !important; }
|
||||
.m-l-0 { margin-left: 0 !important; }
|
||||
.m-x-0 { margin-right: 0 !important; margin-left: 0 !important; }
|
||||
.m-y-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
|
||||
|
||||
.m-a { margin: $spacer !important; }
|
||||
.m-t { margin-top: $spacer-y !important; }
|
||||
.m-r { margin-right: $spacer-x !important; }
|
||||
.m-b { margin-bottom: $spacer-y !important; }
|
||||
.m-l { margin-left: $spacer-x !important; }
|
||||
.m-x { margin-right: $spacer-x !important; margin-left: $spacer-x !important; }
|
||||
.m-y { margin-top: $spacer-y !important; margin-bottom: $spacer-y !important; }
|
||||
.m-x-auto { margin-right: auto !important; margin-left: auto !important; }
|
||||
|
||||
.m-a-md { margin: ($spacer * 1.5) !important; }
|
||||
.m-t-md { margin-top: ($spacer-y * 1.5) !important; }
|
||||
.m-r-md { margin-right: ($spacer-y * 1.5) !important; }
|
||||
.m-b-md { margin-bottom: ($spacer-y * 1.5) !important; }
|
||||
.m-l-md { margin-left: ($spacer-y * 1.5) !important; }
|
||||
.m-x-md { margin-right: ($spacer-x * 1.5) !important; margin-left: ($spacer-x * 1.5) !important; }
|
||||
.m-y-md { margin-top: ($spacer-y * 1.5) !important; margin-bottom: ($spacer-y * 1.5) !important; }
|
||||
|
||||
.m-a-lg { margin: ($spacer * 3) !important; }
|
||||
.m-t-lg { margin-top: ($spacer-y * 3) !important; }
|
||||
.m-r-lg { margin-right: ($spacer-y * 3) !important; }
|
||||
.m-b-lg { margin-bottom: ($spacer-y * 3) !important; }
|
||||
.m-l-lg { margin-left: ($spacer-y * 3) !important; }
|
||||
.m-x-lg { margin-right: ($spacer-x * 3) !important; margin-left: ($spacer-x * 3) !important; }
|
||||
.m-y-lg { margin-top: ($spacer-y * 3) !important; margin-bottom: ($spacer-y * 3) !important; }
|
||||
|
||||
// Padding
|
||||
|
||||
.p-a-0 { padding: 0 !important; }
|
||||
.p-t-0 { padding-top: 0 !important; }
|
||||
.p-r-0 { padding-right: 0 !important; }
|
||||
.p-b-0 { padding-bottom: 0 !important; }
|
||||
.p-l-0 { padding-left: 0 !important; }
|
||||
.p-x-0 { padding-left: 0 !important; padding-right: 0 !important; }
|
||||
.p-y-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
|
||||
|
||||
.p-a { padding: $spacer !important; }
|
||||
.p-t { padding-top: $spacer-y !important; }
|
||||
.p-r { padding-right: $spacer-x !important; }
|
||||
.p-b { padding-bottom: $spacer-y !important; }
|
||||
.p-l { padding-left: $spacer-x !important; }
|
||||
.p-x { padding-right: $spacer-x !important; padding-left: $spacer-x !important; }
|
||||
.p-y { padding-top: $spacer-y !important; padding-bottom: $spacer-y !important; }
|
||||
|
||||
.p-a-md { padding: ($spacer * 1.5) !important; }
|
||||
.p-t-md { padding-top: ($spacer-y * 1.5) !important; }
|
||||
.p-r-md { padding-right: ($spacer-y * 1.5) !important; }
|
||||
.p-b-md { padding-bottom: ($spacer-y * 1.5) !important; }
|
||||
.p-l-md { padding-left: ($spacer-y * 1.5) !important; }
|
||||
.p-x-md { padding-right: ($spacer-x * 1.5) !important; padding-left: ($spacer-x * 1.5) !important; }
|
||||
.p-y-md { padding-top: ($spacer-y * 1.5) !important; padding-bottom: ($spacer-y * 1.5) !important; }
|
||||
|
||||
.p-a-lg { padding: ($spacer * 3) !important; }
|
||||
.p-t-lg { padding-top: ($spacer-y * 3) !important; }
|
||||
.p-r-lg { padding-right: ($spacer-y * 3) !important; }
|
||||
.p-b-lg { padding-bottom: ($spacer-y * 3) !important; }
|
||||
.p-l-lg { padding-left: ($spacer-y * 3) !important; }
|
||||
.p-x-lg { padding-right: ($spacer-x * 3) !important; padding-left: ($spacer-x * 3) !important; }
|
||||
.p-y-lg { padding-top: ($spacer-y * 3) !important; padding-bottom: ($spacer-y * 3) !important; }
|
||||
|
||||
// Positioning
|
||||
|
||||
.pos-f-t {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-navbar-fixed;
|
||||
}
|
137
source/stylesheets/_utilities.scss
Normal file
137
source/stylesheets/_utilities.scss
Normal file
|
@ -0,0 +1,137 @@
|
|||
//
|
||||
// Floats
|
||||
//
|
||||
|
||||
.clearfix {
|
||||
@include clearfix();
|
||||
}
|
||||
|
||||
.center-block {
|
||||
@include center-block();
|
||||
}
|
||||
|
||||
.pull-right {
|
||||
@include pull-right();
|
||||
}
|
||||
|
||||
.pull-left {
|
||||
@include pull-left();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Screenreaders
|
||||
//
|
||||
|
||||
.sr-only {
|
||||
@include sr-only();
|
||||
}
|
||||
|
||||
.sr-only-focusable {
|
||||
@include sr-only-focusable();
|
||||
}
|
||||
|
||||
// Always hide an element with the `hidden` HTML attribute (from PureCSS).
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.invisible {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.text-hide {
|
||||
@include text-hide();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Text
|
||||
//
|
||||
|
||||
// Alignment
|
||||
|
||||
.text-left { text-align: left; }
|
||||
.text-right { text-align: right; }
|
||||
.text-center { text-align: center; }
|
||||
.text-justify { text-align: justify; }
|
||||
.text-nowrap { white-space: nowrap; }
|
||||
.text-truncate { @include text-truncate; }
|
||||
|
||||
// Responsive alignment
|
||||
|
||||
.text-xs-left { text-align: left; }
|
||||
.text-xs-right { text-align: right; }
|
||||
.text-xs-center { text-align: center; }
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.text-sm-left { text-align: left; }
|
||||
.text-sm-right { text-align: right; }
|
||||
.text-sm-center { text-align: center; }
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
.text-md-left { text-align: left; }
|
||||
.text-md-right { text-align: right; }
|
||||
.text-md-center { text-align: center; }
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.text-lg-left { text-align: left; }
|
||||
.text-lg-right { text-align: right; }
|
||||
.text-lg-center { text-align: center; }
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.text-xl-left { text-align: left; }
|
||||
.text-xl-right { text-align: right; }
|
||||
.text-xl-center { text-align: center; }
|
||||
}
|
||||
|
||||
// Transformation
|
||||
|
||||
.text-lowercase { text-transform: lowercase; }
|
||||
.text-uppercase { text-transform: uppercase; }
|
||||
.text-capitalize { text-transform: capitalize; }
|
||||
|
||||
// Contextual colors
|
||||
|
||||
.text-muted {
|
||||
color: $text-muted;
|
||||
}
|
||||
|
||||
@include text-emphasis-variant('.text-primary', $brand-primary);
|
||||
|
||||
@include text-emphasis-variant('.text-success', $brand-success);
|
||||
|
||||
@include text-emphasis-variant('.text-info', $brand-info);
|
||||
|
||||
@include text-emphasis-variant('.text-warning', $brand-warning);
|
||||
|
||||
@include text-emphasis-variant('.text-danger', $brand-danger);
|
||||
|
||||
|
||||
// Contextual backgrounds
|
||||
// For now we'll leave these alongside the text classes until v4 when we can
|
||||
// safely shift things around (per SemVer rules).
|
||||
|
||||
// Inverse
|
||||
// Todo: redo this as a proper class
|
||||
.bg-inverse {
|
||||
color: $gray-lighter;
|
||||
background-color: $gray-dark;
|
||||
}
|
||||
|
||||
.bg-faded {
|
||||
background-color: $gray-lightest;
|
||||
}
|
||||
|
||||
@include bg-variant('.bg-primary', $brand-primary);
|
||||
|
||||
@include bg-variant('.bg-success', $brand-success);
|
||||
|
||||
@include bg-variant('.bg-info', $brand-info);
|
||||
|
||||
@include bg-variant('.bg-warning', $brand-warning);
|
||||
|
||||
@include bg-variant('.bg-danger', $brand-danger);
|
620
source/stylesheets/_variables.scss
Normal file
620
source/stylesheets/_variables.scss
Normal file
|
@ -0,0 +1,620 @@
|
|||
// Variables
|
||||
//
|
||||
// Copy settings from this file into the provided `_custom.scss` to override
|
||||
// the Bootstrap defaults without modifying key, versioned files.
|
||||
|
||||
|
||||
// Table of ontents
|
||||
//
|
||||
// Colors
|
||||
// Options
|
||||
// Spacing
|
||||
// Body
|
||||
// Links
|
||||
// Grid breakpoints
|
||||
// Grid containers
|
||||
// Grid columns
|
||||
// Fonts
|
||||
// Components
|
||||
|
||||
// General variable structure
|
||||
//
|
||||
// Variable format should follow the `$component-modifier-state-property` order.
|
||||
|
||||
|
||||
// Colors
|
||||
//
|
||||
// Grayscale and brand colors for use across Bootstrap.
|
||||
|
||||
$gray-dark: #373a3c !default;
|
||||
$gray: #55595c !default;
|
||||
$gray-light: #818a91 !default;
|
||||
$gray-lighter: #eceeef !default;
|
||||
$gray-lightest: #f7f7f9 !default;
|
||||
|
||||
$brand-primary: #0275d8 !default;
|
||||
$brand-success: #5cb85c !default;
|
||||
$brand-info: #5bc0de !default;
|
||||
$brand-warning: #f0ad4e !default;
|
||||
$brand-danger: #d9534f !default;
|
||||
|
||||
|
||||
// Options
|
||||
//
|
||||
// Quickly modify global styling by enabling or disabling optional features.
|
||||
|
||||
$enable-flex: false !default;
|
||||
$enable-rounded: true !default;
|
||||
$enable-shadows: false !default;
|
||||
$enable-gradients: false !default;
|
||||
$enable-transitions: false !default;
|
||||
$enable-hover-media-query: false !default;
|
||||
|
||||
|
||||
// Spacing
|
||||
//
|
||||
// Control the default styling of most Bootstrap elements by modifying these
|
||||
// variables. Mostly focused on spacing.
|
||||
|
||||
$spacer: 1rem !default;
|
||||
$spacer-x: $spacer !default;
|
||||
$spacer-y: $spacer !default;
|
||||
$border-width: .0625rem !default;
|
||||
|
||||
|
||||
// Body
|
||||
//
|
||||
// Settings for the `<body>` element.
|
||||
|
||||
$body-bg: #fff !default;
|
||||
$body-color: $gray-dark !default;
|
||||
|
||||
|
||||
// Links
|
||||
//
|
||||
// Style anchor elements.
|
||||
|
||||
$link-color: $brand-primary !default;
|
||||
$link-hover-color: darken($link-color, 15%) !default;
|
||||
$link-hover-decoration: underline !default;
|
||||
|
||||
|
||||
// Grid breakpoints
|
||||
//
|
||||
// Define the minimum and maximum dimensions at which your layout will change,
|
||||
// adapting to different screen sizes, for use in media queries.
|
||||
|
||||
$grid-breakpoints: (
|
||||
// Extra small screen / phone
|
||||
xs: 0,
|
||||
// Small screen / phone
|
||||
sm: 34em,
|
||||
// Medium screen / tablet
|
||||
md: 48em,
|
||||
// Large screen / desktop
|
||||
lg: 62em,
|
||||
// Extra large screen / wide desktop
|
||||
xl: 75em
|
||||
) !default;
|
||||
|
||||
|
||||
// Grid containers
|
||||
//
|
||||
// Define the maximum width of `.container` for different screen sizes.
|
||||
|
||||
$container-max-widths: (
|
||||
sm: 34rem, // 480
|
||||
md: 45rem, // 720
|
||||
lg: 60rem, // 960
|
||||
xl: 72.25rem // 1140
|
||||
) !default;
|
||||
|
||||
|
||||
// Grid columns
|
||||
//
|
||||
// Set the number of columns and specify the width of the gutters.
|
||||
|
||||
$grid-columns: 12 !default;
|
||||
$grid-gutter-width: 1.875rem !default; // 30px
|
||||
|
||||
|
||||
// Typography
|
||||
//
|
||||
// Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
|
||||
$font-family-serif: Georgia, "Times New Roman", Times, serif !default;
|
||||
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
|
||||
$font-family-base: $font-family-sans-serif !default;
|
||||
|
||||
// Pixel value used to responsively scale all typography. Applied to the `<html>` element.
|
||||
$font-size-root: 16px !default;
|
||||
|
||||
$font-size-base: 1rem !default;
|
||||
$font-size-lg: 1.25rem !default;
|
||||
$font-size-sm: .85rem !default;
|
||||
$font-size-xs: .75rem !default;
|
||||
|
||||
$font-size-h1: 2.5rem !default;
|
||||
$font-size-h2: 2rem !default;
|
||||
$font-size-h3: 1.75rem !default;
|
||||
$font-size-h4: 1.5rem !default;
|
||||
$font-size-h5: 1.25rem !default;
|
||||
$font-size-h6: 1rem !default;
|
||||
|
||||
$display1-size: 3.5rem !default;
|
||||
$display2-size: 4.5rem !default;
|
||||
$display3-size: 5.5rem !default;
|
||||
$display4-size: 6rem !default;
|
||||
|
||||
$display1-weight: 300 !default;
|
||||
$display2-weight: 300 !default;
|
||||
$display3-weight: 300 !default;
|
||||
$display4-weight: 300 !default;
|
||||
|
||||
$line-height: 1.5 !default;
|
||||
|
||||
$headings-margin-bottom: ($spacer / 2) !default;
|
||||
$headings-font-family: inherit !default;
|
||||
$headings-font-weight: 500 !default;
|
||||
$headings-line-height: 1.1 !default;
|
||||
$headings-color: inherit !default;
|
||||
|
||||
$lead-font-size: 1.25rem !default;
|
||||
$lead-font-weight: 300 !default;
|
||||
|
||||
$text-muted: $gray-light !default;
|
||||
|
||||
$abbr-border-color: $gray-light !default;
|
||||
|
||||
$blockquote-small-color: $gray-light !default;
|
||||
$blockquote-font-size: ($font-size-base * 1.25) !default;
|
||||
$blockquote-border-color: $gray-lighter !default;
|
||||
|
||||
$hr-border-color: rgba(0,0,0,.1) !default;
|
||||
$hr-border-width: $border-width;
|
||||
|
||||
|
||||
// Components
|
||||
//
|
||||
// Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
|
||||
$line-height-lg: (4/3) !default;
|
||||
$line-height-sm: 1.5 !default;
|
||||
|
||||
$border-radius: .25rem !default;
|
||||
$border-radius-lg: .3rem !default;
|
||||
$border-radius-sm: .2rem !default;
|
||||
|
||||
$component-active-color: #fff !default;
|
||||
$component-active-bg: $brand-primary !default;
|
||||
|
||||
$caret-width: .3em !default;
|
||||
$caret-width-lg: $caret-width !default;
|
||||
|
||||
|
||||
// Tables
|
||||
//
|
||||
// Customizes the `.table` component with basic values, each used across all table variations.
|
||||
|
||||
$table-cell-padding: .75rem !default;
|
||||
$table-sm-cell-padding: .3rem !default;
|
||||
|
||||
$table-bg: transparent !default;
|
||||
$table-bg-accent: #f9f9f9 !default;
|
||||
$table-bg-hover: #f5f5f5 !default;
|
||||
$table-bg-active: $table-bg-hover !default;
|
||||
|
||||
$table-border-color: $gray-lighter !default;
|
||||
|
||||
|
||||
// Buttons
|
||||
//
|
||||
// For each of Bootstrap's buttons, define text, background and border color.
|
||||
|
||||
$btn-padding-x: 1rem;
|
||||
$btn-padding-y: .375rem;
|
||||
$btn-font-weight: normal !default;
|
||||
|
||||
$btn-primary-color: #fff !default;
|
||||
$btn-primary-bg: $brand-primary !default;
|
||||
$btn-primary-border: $btn-primary-bg !default;
|
||||
|
||||
$btn-secondary-color: $gray-dark !default;
|
||||
$btn-secondary-bg: #fff !default;
|
||||
$btn-secondary-border: #ccc !default;
|
||||
|
||||
$btn-info-color: #fff !default;
|
||||
$btn-info-bg: $brand-info !default;
|
||||
$btn-info-border: $btn-info-bg !default;
|
||||
|
||||
$btn-success-color: #fff !default;
|
||||
$btn-success-bg: $brand-success !default;
|
||||
$btn-success-border: $btn-success-bg !default;
|
||||
|
||||
$btn-warning-color: #fff !default;
|
||||
$btn-warning-bg: $brand-warning !default;
|
||||
$btn-warning-border: $btn-warning-bg !default;
|
||||
|
||||
$btn-danger-color: #fff !default;
|
||||
$btn-danger-bg: $brand-danger !default;
|
||||
$btn-danger-border: $btn-danger-bg !default;
|
||||
|
||||
$btn-link-disabled-color: $gray-light !default;
|
||||
|
||||
$btn-padding-x-sm: .75rem !default;
|
||||
$btn-padding-y-sm: .25rem !default;
|
||||
|
||||
$btn-padding-x-lg: 1.25rem !default;
|
||||
$btn-padding-y-lg: .75rem !default;
|
||||
|
||||
// Allows for customizing button radius independently from global border radius
|
||||
$btn-border-radius: $border-radius;
|
||||
$btn-border-radius-lg: $border-radius-lg;
|
||||
$btn-border-radius-sm: $border-radius-sm;
|
||||
|
||||
|
||||
// Forms
|
||||
|
||||
$input-padding-x: .75rem !default;
|
||||
$input-padding-y: .375rem !default;
|
||||
|
||||
$input-bg: #fff !default;
|
||||
$input-bg-disabled: $gray-lighter !default;
|
||||
|
||||
$input-color: $gray !default;
|
||||
$input-border: #ccc !default;
|
||||
$input-box-shadow: inset 0 1px 1px rgba(0,0,0,.075) !default;
|
||||
|
||||
$input-border-radius: $border-radius !default;
|
||||
$input-border-radius-lg: $border-radius-lg !default;
|
||||
$input-border-radius-sm: $border-radius-sm !default;
|
||||
|
||||
$input-border-focus: #66afe9 !default;
|
||||
$input-box-shadow-focus: rgba(102,175,233,.6) !default;
|
||||
|
||||
$input-color-placeholder: #999 !default;
|
||||
|
||||
$input-padding-x-sm: .75rem !default;
|
||||
$input-padding-y-sm: .275rem !default;
|
||||
|
||||
$input-padding-x-lg: 1.25rem !default;
|
||||
$input-padding-y-lg: .75rem !default;
|
||||
|
||||
$input-height: (($font-size-base * $line-height) + ($input-padding-y * 2) + ($border-width * 2)) !default;
|
||||
$input-height-lg: (($font-size-lg * $line-height-lg) + ($input-padding-y-lg * 2) + ($border-width * 2)) !default;
|
||||
$input-height-sm: (($font-size-sm * $line-height-sm) + ($input-padding-y-sm * 2) + ($border-width * 2)) !default;
|
||||
|
||||
$form-group-margin-bottom: 15px;
|
||||
|
||||
$input-group-addon-bg: $gray-lighter !default;
|
||||
$input-group-addon-border-color: $input-border !default;
|
||||
|
||||
$cursor-disabled: not-allowed !default;
|
||||
|
||||
// Form validation icons
|
||||
$form-icon-success: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNoZWNrIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiM1Q0I4NUMiIGQ9Ik0yMzMuOCw2MTAuMWMtMTMuMywwLTI1LjktNi4yLTM0LTE2LjlMOTAuNSw0NDguOEM3Ni4zLDQzMCw4MCw0MDMuMyw5OC44LDM4OS4xYzE4LjgtMTQuMyw0NS41LTEwLjUsNTkuOCw4LjNsNzEuOSw5NWwyMjAuOS0yNTAuNWMxMi41LTIwLDM4LjgtMjYuMSw1OC44LTEzLjZjMjAsMTIuNCwyNi4xLDM4LjcsMTMuNiw1OC44TDI3MCw1OTBjLTcuNCwxMi0yMC4yLDE5LjQtMzQuMywyMC4xQzIzNS4xLDYxMC4xLDIzNC41LDYxMC4xLDIzMy44LDYxMC4xeiIvPjwvc3ZnPg==";
|
||||
$form-icon-warning: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9Ildhcm5pbmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjEyIDc5MiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjEyIDc5MiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZmlsbD0iI0YwQUQ0RSIgZD0iTTYwMyw2NDAuMmwtMjc4LjUtNTA5Yy0zLjgtNi42LTEwLjgtMTAuNi0xOC41LTEwLjZzLTE0LjcsNC4xLTE4LjUsMTAuNkw5LDY0MC4yYy0zLjcsNi41LTMuNiwxNC40LDAuMiwyMC44YzMuOCw2LjUsMTAuOCwxMC40LDE4LjMsMTAuNGg1NTcuMWM3LjUsMCwxNC41LTMuOSwxOC4zLTEwLjRDNjA2LjYsNjU0LjYsNjA2LjcsNjQ2LjYsNjAzLDY0MC4yeiBNMzM2LjYsNjEwLjJoLTYxLjJWNTQ5aDYxLjJWNjEwLjJ6IE0zMzYuNiw1MDMuMWgtNjEuMlYzMDQuMmg2MS4yVjUwMy4xeiIvPjwvc3ZnPg==";
|
||||
$form-icon-error: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNyb3NzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiNEOTUzNEYiIGQ9Ik00NDcsNTQ0LjRjLTE0LjQsMTQuNC0zNy42LDE0LjQtNTEuOSwwTDMwNiw0NTEuN2wtODkuMSw5Mi43Yy0xNC40LDE0LjQtMzcuNiwxNC40LTUxLjksMGMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlsOTIuNC05Ni40TDE2NSwyOTkuNmMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlzMzcuNi0xNC40LDUxLjksMGw4OS4yLDkyLjdsODkuMS05Mi43YzE0LjQtMTQuNCwzNy42LTE0LjQsNTEuOSwwYzE0LjQsMTQuNCwxNC40LDM3LjYsMCw1MS45TDM1NC43LDM5Nmw5Mi40LDk2LjRDNDYxLjQsNTA2LjgsNDYxLjQsNTMwLDQ0Nyw1NDQuNHoiLz48L3N2Zz4=";
|
||||
|
||||
|
||||
// Dropdowns
|
||||
//
|
||||
// Dropdown menu container and contents.
|
||||
|
||||
$dropdown-bg: #fff !default;
|
||||
$dropdown-border: rgba(0,0,0,.15) !default;
|
||||
$dropdown-divider-bg: #e5e5e5 !default;
|
||||
|
||||
$dropdown-link-color: $gray-dark !default;
|
||||
$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
|
||||
$dropdown-link-hover-bg: #f5f5f5 !default;
|
||||
|
||||
$dropdown-link-active-color: $component-active-color !default;
|
||||
$dropdown-link-active-bg: $component-active-bg !default;
|
||||
|
||||
$dropdown-link-disabled-color: $gray-light !default;
|
||||
|
||||
$dropdown-header-color: $gray-light !default;
|
||||
|
||||
|
||||
// Z-index master list
|
||||
//
|
||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||
// of components dependent on the z-axis and are designed to all work together.
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
|
||||
$zindex-navbar: 1000 !default;
|
||||
$zindex-dropdown: 1000 !default;
|
||||
$zindex-popover: 1060 !default;
|
||||
$zindex-tooltip: 1070 !default;
|
||||
$zindex-navbar-fixed: 1030 !default;
|
||||
$zindex-navbar-sticky: 1030 !default;
|
||||
$zindex-modal-bg: 1040 !default;
|
||||
$zindex-modal: 1050 !default;
|
||||
|
||||
|
||||
// Navbar
|
||||
|
||||
$navbar-border-radius: $border-radius !default;
|
||||
$navbar-padding-horizontal: $spacer !default;
|
||||
$navbar-padding-vertical: ($spacer / 2) !default;
|
||||
|
||||
$navbar-dark-color: rgba(255,255,255,.5);
|
||||
$navbar-dark-hover-color: rgba(255,255,255,.75);
|
||||
$navbar-dark-active-color: rgba(255,255,255,1);
|
||||
$navbar-dark-disabled-color: rgba(255,255,255,.25);
|
||||
|
||||
$navbar-light-color: rgba(0,0,0,.3);
|
||||
$navbar-light-hover-color: rgba(0,0,0,.6);
|
||||
$navbar-light-active-color: rgba(0,0,0,.8);
|
||||
$navbar-light-disabled-color: rgba(0,0,0,.15);
|
||||
|
||||
|
||||
// Navs
|
||||
|
||||
$nav-link-padding: .5em 1em !default;
|
||||
$nav-link-hover-bg: $gray-lighter !default;
|
||||
|
||||
$nav-disabled-link-color: $gray-light !default;
|
||||
$nav-disabled-link-hover-color: $gray-light !default;
|
||||
|
||||
$nav-tabs-border-color: #ddd !default;
|
||||
|
||||
$nav-tabs-link-hover-border-color: $gray-lighter !default;
|
||||
|
||||
$nav-tabs-active-link-hover-bg: $body-bg !default;
|
||||
$nav-tabs-active-link-hover-color: $gray !default;
|
||||
$nav-tabs-active-link-hover-border-color: #ddd !default;
|
||||
|
||||
$nav-tabs-justified-link-border-color: #ddd !default;
|
||||
$nav-tabs-justified-active-link-border-color: $body-bg !default;
|
||||
|
||||
$nav-pills-border-radius: $border-radius !default;
|
||||
$nav-pills-active-link-hover-bg: $component-active-bg !default;
|
||||
$nav-pills-active-link-hover-color: $component-active-color !default;
|
||||
|
||||
|
||||
// Pagination
|
||||
|
||||
$pagination-padding-x: .75rem !default;
|
||||
$pagination-padding-y: .5rem !default;
|
||||
$pagination-padding-x-sm: .75rem !default;
|
||||
$pagination-padding-y-sm: .275rem !default;
|
||||
$pagination-padding-x-lg: 1.5rem !default;
|
||||
$pagination-padding-y-lg: .75rem !default;
|
||||
|
||||
|
||||
$pagination-color: $link-color !default;
|
||||
$pagination-bg: #fff !default;
|
||||
$pagination-border: #ddd !default;
|
||||
|
||||
$pagination-hover-color: $link-hover-color !default;
|
||||
$pagination-hover-bg: $gray-lighter !default;
|
||||
$pagination-hover-border: #ddd !default;
|
||||
|
||||
$pagination-active-color: #fff !default;
|
||||
$pagination-active-bg: $brand-primary !default;
|
||||
$pagination-active-border: $brand-primary !default;
|
||||
|
||||
$pagination-disabled-color: $gray-light !default;
|
||||
$pagination-disabled-bg: #fff !default;
|
||||
$pagination-disabled-border: #ddd !default;
|
||||
|
||||
|
||||
// Pager
|
||||
|
||||
$pager-bg: $pagination-bg !default;
|
||||
$pager-border: $pagination-border !default;
|
||||
$pager-border-radius: 15px !default;
|
||||
|
||||
$pager-hover-bg: $pagination-hover-bg !default;
|
||||
|
||||
$pager-active-bg: $pagination-active-bg !default;
|
||||
$pager-active-color: $pagination-active-color !default;
|
||||
|
||||
$pager-disabled-color: $pagination-disabled-color !default;
|
||||
|
||||
|
||||
// Jumbotron
|
||||
|
||||
$jumbotron-padding: 2rem !default;
|
||||
$jumbotron-bg: $gray-lighter !default;
|
||||
|
||||
|
||||
// Form states and alerts
|
||||
//
|
||||
// Define colors for form feedback states and, by default, alerts.
|
||||
|
||||
$state-success-text: #3c763d !default;
|
||||
$state-success-bg: #dff0d8 !default;
|
||||
$state-success-border: darken($state-success-bg, 5%) !default;
|
||||
|
||||
$state-info-text: #31708f !default;
|
||||
$state-info-bg: #d9edf7 !default;
|
||||
$state-info-border: darken($state-info-bg, 7%) !default;
|
||||
|
||||
$state-warning-text: #8a6d3b !default;
|
||||
$state-warning-bg: #fcf8e3 !default;
|
||||
$state-warning-border: darken($state-warning-bg, 5%) !default;
|
||||
|
||||
$state-danger-text: #a94442 !default;
|
||||
$state-danger-bg: #f2dede !default;
|
||||
$state-danger-border: darken($state-danger-bg, 5%) !default;
|
||||
|
||||
|
||||
// Tooltips
|
||||
|
||||
$tooltip-max-width: 200px !default;
|
||||
$tooltip-color: #fff !default;
|
||||
$tooltip-bg: #000 !default;
|
||||
$tooltip-opacity: .9 !default;
|
||||
|
||||
$tooltip-arrow-width: 5px !default;
|
||||
$tooltip-arrow-color: $tooltip-bg !default;
|
||||
|
||||
|
||||
// Popovers
|
||||
|
||||
$popover-bg: #fff !default;
|
||||
$popover-max-width: 276px !default;
|
||||
$popover-border-color: rgba(0,0,0,.2) !default;
|
||||
$popover-fallback-border-color: #ccc !default;
|
||||
|
||||
$popover-title-bg: darken($popover-bg, 3%) !default;
|
||||
|
||||
$popover-arrow-width: 10px !default;
|
||||
$popover-arrow-color: $popover-bg !default;
|
||||
|
||||
$popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
|
||||
$popover-arrow-outer-color: fade-in($popover-border-color, 0.05) !default;
|
||||
$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default;
|
||||
|
||||
|
||||
// Labels
|
||||
|
||||
$label-default-bg: $gray-light !default;
|
||||
$label-primary-bg: $brand-primary !default;
|
||||
$label-success-bg: $brand-success !default;
|
||||
$label-info-bg: $brand-info !default;
|
||||
$label-warning-bg: $brand-warning !default;
|
||||
$label-danger-bg: $brand-danger !default;
|
||||
|
||||
$label-color: #fff !default;
|
||||
$label-link-hover-color: #fff !default;
|
||||
|
||||
|
||||
// Modals
|
||||
|
||||
// Padding applied to the modal body
|
||||
$modal-inner-padding: 15px !default;
|
||||
|
||||
$modal-title-padding: 15px !default;
|
||||
$modal-title-line-height: $line-height !default;
|
||||
|
||||
$modal-content-bg: #fff !default;
|
||||
$modal-content-border-color: rgba(0,0,0,.2) !default;
|
||||
|
||||
$modal-backdrop-bg: #000 !default;
|
||||
$modal-backdrop-opacity: .5 !default;
|
||||
$modal-header-border-color: #e5e5e5 !default;
|
||||
$modal-footer-border-color: $modal-header-border-color !default;
|
||||
|
||||
$modal-lg: 900px !default;
|
||||
$modal-md: 600px !default;
|
||||
$modal-sm: 300px !default;
|
||||
|
||||
|
||||
// Alerts
|
||||
//
|
||||
// Define alert colors, border radius, and padding.
|
||||
|
||||
$alert-padding: 15px !default;
|
||||
$alert-border-radius: $border-radius !default;
|
||||
$alert-link-font-weight: bold !default;
|
||||
|
||||
$alert-success-bg: $state-success-bg !default;
|
||||
$alert-success-text: $state-success-text !default;
|
||||
$alert-success-border: $state-success-border !default;
|
||||
|
||||
$alert-info-bg: $state-info-bg !default;
|
||||
$alert-info-text: $state-info-text !default;
|
||||
$alert-info-border: $state-info-border !default;
|
||||
|
||||
$alert-warning-bg: $state-warning-bg !default;
|
||||
$alert-warning-text: $state-warning-text !default;
|
||||
$alert-warning-border: $state-warning-border !default;
|
||||
|
||||
$alert-danger-bg: $state-danger-bg !default;
|
||||
$alert-danger-text: $state-danger-text !default;
|
||||
$alert-danger-border: $state-danger-border !default;
|
||||
|
||||
|
||||
// Progress bars
|
||||
|
||||
$progress-bg: #f5f5f5 !default;
|
||||
$progress-bar-color: #fff !default;
|
||||
$progress-border-radius: $border-radius !default;
|
||||
|
||||
$progress-bar-bg: $brand-primary !default;
|
||||
$progress-bar-success-bg: $brand-success !default;
|
||||
$progress-bar-warning-bg: $brand-warning !default;
|
||||
$progress-bar-danger-bg: $brand-danger !default;
|
||||
$progress-bar-info-bg: $brand-info !default;
|
||||
|
||||
|
||||
// List group
|
||||
|
||||
$list-group-bg: #fff !default;
|
||||
$list-group-border: #ddd !default;
|
||||
$list-group-border-radius: $border-radius !default;
|
||||
|
||||
$list-group-hover-bg: #f5f5f5 !default;
|
||||
$list-group-active-color: $component-active-color !default;
|
||||
$list-group-active-bg: $component-active-bg !default;
|
||||
$list-group-active-border: $list-group-active-bg !default;
|
||||
$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
|
||||
|
||||
$list-group-disabled-color: $gray-light !default;
|
||||
$list-group-disabled-bg: $gray-lighter !default;
|
||||
$list-group-disabled-text-color: $list-group-disabled-color !default;
|
||||
|
||||
$list-group-link-color: #555 !default;
|
||||
$list-group-link-hover-color: $list-group-link-color !default;
|
||||
$list-group-link-heading-color: #333 !default;
|
||||
|
||||
|
||||
// Image thumbnails
|
||||
|
||||
$thumbnail-padding: .25rem !default;
|
||||
$thumbnail-bg: $body-bg !default;
|
||||
$thumbnail-border: #ddd !default;
|
||||
$thumbnail-border-radius: $border-radius !default;
|
||||
|
||||
|
||||
// Breadcrumbs
|
||||
|
||||
$breadcrumb-padding-vertical: .75rem !default;
|
||||
$breadcrumb-padding-horizontal: 1rem !default;
|
||||
|
||||
$breadcrumb-bg: $gray-lighter !default;
|
||||
$breadcrumb-divider-color: $gray-light !default;
|
||||
$breadcrumb-active-color: $gray-light !default;
|
||||
$breadcrumb-divider: "/" !default;
|
||||
|
||||
|
||||
// Carousel
|
||||
|
||||
$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
|
||||
|
||||
$carousel-control-color: #fff !default;
|
||||
$carousel-control-width: 15% !default;
|
||||
$carousel-control-opacity: .5 !default;
|
||||
$carousel-control-font-size: 20px !default;
|
||||
|
||||
$carousel-indicator-active-bg: #fff !default;
|
||||
$carousel-indicator-border-color: #fff !default;
|
||||
|
||||
$carousel-caption-color: #fff !default;
|
||||
|
||||
|
||||
// Close
|
||||
|
||||
$close-font-weight: bold !default;
|
||||
$close-color: #000 !default;
|
||||
$close-text-shadow: 0 1px 0 #fff !default;
|
||||
|
||||
|
||||
// Code
|
||||
|
||||
$code-color: #bd4147 !default;
|
||||
$code-bg: #f7f7f9 !default;
|
||||
|
||||
$kbd-color: #fff !default;
|
||||
$kbd-bg: #333 !default;
|
||||
|
||||
$pre-bg: #f7f7f9 !default;
|
||||
$pre-color: $gray-dark !default;
|
||||
$pre-border-color: #ccc !default;
|
||||
$pre-scrollable-max-height: 340px !default;
|
14
source/stylesheets/mixins/_alert.scss
Normal file
14
source/stylesheets/mixins/_alert.scss
Normal file
|
@ -0,0 +1,14 @@
|
|||
// Alerts
|
||||
|
||||
@mixin alert-variant($background, $border, $body-color) {
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
color: $body-color;
|
||||
|
||||
hr {
|
||||
border-top-color: darken($border, 5%);
|
||||
}
|
||||
.alert-link {
|
||||
color: darken($body-color, 10%);
|
||||
}
|
||||
}
|
14
source/stylesheets/mixins/_background-variant.scss
Normal file
14
source/stylesheets/mixins/_background-variant.scss
Normal file
|
@ -0,0 +1,14 @@
|
|||
// Contextual backgrounds
|
||||
|
||||
// [converter] $parent hack
|
||||
@mixin bg-variant($parent, $color) {
|
||||
#{$parent} {
|
||||
color: #fff;
|
||||
background-color: $color;
|
||||
}
|
||||
a#{$parent} {
|
||||
@include hover-focus {
|
||||
background-color: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
21
source/stylesheets/mixins/_border-radius.scss
Normal file
21
source/stylesheets/mixins/_border-radius.scss
Normal file
|
@ -0,0 +1,21 @@
|
|||
// Single side border-radius
|
||||
|
||||
@mixin border-top-radius($radius) {
|
||||
border-top-right-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
|
||||
@mixin border-right-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-top-right-radius: $radius;
|
||||
}
|
||||
|
||||
@mixin border-bottom-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-bottom-left-radius: $radius;
|
||||
}
|
||||
|
||||
@mixin border-left-radius($radius) {
|
||||
border-bottom-left-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
76
source/stylesheets/mixins/_breakpoints.scss
Normal file
76
source/stylesheets/mixins/_breakpoints.scss
Normal file
|
@ -0,0 +1,76 @@
|
|||
// Breakpoint viewport sizes and media queries.
|
||||
//
|
||||
// Breakpoints are defined as a map of (name: minimum width), order from small to large:
|
||||
//
|
||||
// (xs: 0, sm: 34rem, md: 45rem)
|
||||
//
|
||||
// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
|
||||
|
||||
// Name of the next breakpoint, or null for the last breakpoint.
|
||||
//
|
||||
// >> breakpoint-next(sm)
|
||||
// md
|
||||
// >> breakpoint-next(sm, $breakpoints: (xs: 0, sm: 34rem, md: 45rem))
|
||||
// md
|
||||
// >> breakpoint-next(sm, $breakpoint-names: (xs sm md))
|
||||
// md
|
||||
@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
|
||||
$n: index($breakpoint-names, $name);
|
||||
@return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
|
||||
}
|
||||
|
||||
// Minimum breakpoint width. Null for the smallest (first) breakpoint.
|
||||
//
|
||||
// >> breakpoint-min(sm, (xs: 0, sm: 34rem, md: 45rem))
|
||||
// 34rem
|
||||
@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
|
||||
$min: map-get($breakpoints, $name);
|
||||
@return if($min != 0, $min, null);
|
||||
}
|
||||
|
||||
// Maximum breakpoint width. Null for the largest (last) breakpoint.
|
||||
// The maximum value is calculated as the minimum of the next one less 0.1.
|
||||
//
|
||||
// >> breakpoint-max(sm, (xs: 0, sm: 34rem, md: 45rem))
|
||||
// 44.9rem
|
||||
@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
|
||||
$next: breakpoint-next($name, $breakpoints);
|
||||
@return if($next, breakpoint-min($next, $breakpoints) - 0.1, null);
|
||||
}
|
||||
|
||||
// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
|
||||
// Makes the @content apply to the given breakpoint and wider.
|
||||
@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
|
||||
$min: breakpoint-min($name, $breakpoints);
|
||||
@if $min {
|
||||
@media (min-width: $min) {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
|
||||
// Makes the @content apply to the given breakpoint and narrower.
|
||||
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
|
||||
$max: breakpoint-max($name, $breakpoints);
|
||||
@if $max {
|
||||
@media (max-width: $max) {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
// Media between the breakpoint's minimum and maximum widths.
|
||||
// No minimum for the smallest breakpoint, and no maximum for the largest one.
|
||||
// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
|
||||
@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
|
||||
@include media-breakpoint-up($name, $breakpoints) {
|
||||
@include media-breakpoint-down($name, $breakpoints) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
}
|
92
source/stylesheets/mixins/_buttons.scss
Normal file
92
source/stylesheets/mixins/_buttons.scss
Normal file
|
@ -0,0 +1,92 @@
|
|||
// Button variants
|
||||
//
|
||||
// Easily pump out default styles, as well as :hover, :focus, :active,
|
||||
// and disabled options for all buttons
|
||||
|
||||
@mixin button-variant($color, $background, $border) {
|
||||
color: $color;
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
// $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
|
||||
// .box-shadow($shadow);
|
||||
|
||||
$active-background: darken($background, 10%);
|
||||
$active-border: darken($border, 12%);
|
||||
|
||||
&:focus,
|
||||
&.focus,
|
||||
&:active,
|
||||
&.active,
|
||||
.open > &.dropdown-toggle {
|
||||
color: $color;
|
||||
background-color: $active-background;
|
||||
border-color: $active-border;
|
||||
}
|
||||
@include hover {
|
||||
color: $color;
|
||||
background-color: $active-background;
|
||||
border-color: $active-border;
|
||||
}
|
||||
&:active,
|
||||
&.active,
|
||||
.open > &.dropdown-toggle {
|
||||
// Remove the gradient for the pressed/active state
|
||||
background-image: none;
|
||||
@include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
&.disabled,
|
||||
&:disabled,
|
||||
fieldset[disabled] & {
|
||||
&:focus,
|
||||
&.focus {
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
}
|
||||
@include hover {
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin button-outline-variant($color) {
|
||||
color: $color;
|
||||
background-image: none;
|
||||
background-color: transparent;
|
||||
border-color: $color;
|
||||
|
||||
&:focus,
|
||||
&.focus,
|
||||
&:active,
|
||||
&.active,
|
||||
.open > &.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: $color;
|
||||
border-color: $color;
|
||||
}
|
||||
@include hover {
|
||||
color: #fff;
|
||||
background-color: $color;
|
||||
border-color: $color;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&:disabled,
|
||||
fieldset[disabled] & {
|
||||
&:focus,
|
||||
&.focus {
|
||||
border-color: lighten($color, 20%);
|
||||
}
|
||||
@include hover {
|
||||
border-color: lighten($color, 20%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Button sizes
|
||||
@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
|
||||
padding: $padding-y $padding-x;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
@include border-radius($border-radius);
|
||||
}
|
7
source/stylesheets/mixins/_center-block.scss
Normal file
7
source/stylesheets/mixins/_center-block.scss
Normal file
|
@ -0,0 +1,7 @@
|
|||
// Center-align a block level element
|
||||
|
||||
@mixin center-block() {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
22
source/stylesheets/mixins/_clearfix.scss
Normal file
22
source/stylesheets/mixins/_clearfix.scss
Normal file
|
@ -0,0 +1,22 @@
|
|||
// Clearfix
|
||||
//
|
||||
// For modern browsers
|
||||
// 1. The space content is one way to avoid an Opera bug when the
|
||||
// contenteditable attribute is included anywhere else in the document.
|
||||
// Otherwise it causes space to appear at the top and bottom of elements
|
||||
// that are clearfixed.
|
||||
// 2. The use of `table` rather than `block` is only necessary if using
|
||||
// `:before` to contain the top-margins of child elements.
|
||||
//
|
||||
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
|
||||
|
||||
@mixin clearfix() {
|
||||
&:before,
|
||||
&:after {
|
||||
content: " "; // 1
|
||||
display: table; // 2
|
||||
}
|
||||
&:after {
|
||||
clear: both;
|
||||
}
|
||||
}
|
89
source/stylesheets/mixins/_forms.scss
Normal file
89
source/stylesheets/mixins/_forms.scss
Normal file
|
@ -0,0 +1,89 @@
|
|||
// Form validation states
|
||||
//
|
||||
// Used in _forms.scss to generate the form validation CSS for warnings, errors,
|
||||
// and successes.
|
||||
|
||||
@mixin form-control-validation($state, $color) {
|
||||
// Color the label and help text
|
||||
.help-block,
|
||||
.control-label,
|
||||
.radio,
|
||||
.checkbox,
|
||||
.radio-inline,
|
||||
.checkbox-inline,
|
||||
&.radio label,
|
||||
&.checkbox label,
|
||||
&.radio-inline label,
|
||||
&.checkbox-inline label {
|
||||
color: $color;
|
||||
}
|
||||
// Set the border and box shadow on specific inputs to match
|
||||
.form-control {
|
||||
border-color: $color;
|
||||
// @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
||||
|
||||
&:focus {
|
||||
// border-color: darken($border-color, 10%);
|
||||
// $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
|
||||
// @include box-shadow($shadow);
|
||||
}
|
||||
}
|
||||
|
||||
// Set validation states also for addons
|
||||
.input-group-addon {
|
||||
color: $color;
|
||||
border-color: $color;
|
||||
background-color: lighten($color, 40%);
|
||||
}
|
||||
// Optional feedback icon
|
||||
.form-control-feedback {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
// Form control focus state
|
||||
//
|
||||
// Generate a customized focus state and for any input with the specified color,
|
||||
// which defaults to the `@input-border-focus` variable.
|
||||
//
|
||||
// We highly encourage you to not customize the default value, but instead use
|
||||
// this to tweak colors on an as-needed basis. This aesthetic change is based on
|
||||
// WebKit's default styles, but applicable to a wider range of browsers. Its
|
||||
// usability and accessibility should be taken into account with any change.
|
||||
//
|
||||
// Example usage: change the default blue border and shadow to white for better
|
||||
// contrast against a dark gray background.
|
||||
@mixin form-control-focus() {
|
||||
&:focus {
|
||||
border-color: $input-border-focus;
|
||||
outline: none;
|
||||
$shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $input-box-shadow-focus;
|
||||
@include box-shadow($shadow);
|
||||
}
|
||||
}
|
||||
|
||||
// Form control sizing
|
||||
//
|
||||
// Relative text size, padding, and border-radii changes for form controls. For
|
||||
// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
|
||||
// element gets special love because it's special, and that's a fact!
|
||||
|
||||
@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
|
||||
#{$parent} {
|
||||
height: $input-height;
|
||||
padding: $padding-vertical $padding-horizontal;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
@include border-radius($border-radius);
|
||||
}
|
||||
|
||||
select#{$parent} {
|
||||
height: $input-height;
|
||||
line-height: $input-height;
|
||||
}
|
||||
|
||||
textarea#{$parent},
|
||||
select[multiple]#{$parent} {
|
||||
height: auto;
|
||||
}
|
||||
}
|
43
source/stylesheets/mixins/_gradients.scss
Normal file
43
source/stylesheets/mixins/_gradients.scss
Normal file
|
@ -0,0 +1,43 @@
|
|||
// Gradients
|
||||
|
||||
// Horizontal gradient, from left to right
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9.
|
||||
@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
||||
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9
|
||||
}
|
||||
|
||||
// Vertical gradient, from top to bottom
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9.
|
||||
@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9
|
||||
}
|
||||
|
||||
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
|
||||
background-repeat: repeat-x;
|
||||
background-image: linear-gradient($deg, $start-color, $end-color);
|
||||
}
|
||||
@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
||||
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 gets no color-stop at all for proper fallback
|
||||
}
|
||||
@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
||||
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 gets no color-stop at all for proper fallback
|
||||
}
|
||||
@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
|
||||
background-image: radial-gradient(circle, $inner-color, $outer-color);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
|
||||
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
|
||||
}
|
46
source/stylesheets/mixins/_grid-framework.scss
Normal file
46
source/stylesheets/mixins/_grid-framework.scss
Normal file
|
@ -0,0 +1,46 @@
|
|||
// Framework grid generation
|
||||
//
|
||||
// Used only by Bootstrap to generate the correct number of grid classes given
|
||||
// any value of `$grid-columns`.
|
||||
|
||||
@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
|
||||
// Common properties for all breakpoints
|
||||
%grid-column {
|
||||
position: relative;
|
||||
// Prevent columns from collapsing when empty
|
||||
min-height: 1px;
|
||||
// Inner gutter via padding
|
||||
padding-left: ($gutter / 2);
|
||||
padding-right: ($gutter / 2);
|
||||
}
|
||||
@each $breakpoint in map-keys($breakpoints) {
|
||||
@for $i from 1 through $columns {
|
||||
.col-#{$breakpoint}-#{$i} {
|
||||
@extend %grid-column;
|
||||
}
|
||||
}
|
||||
@include media-breakpoint-up($breakpoint) {
|
||||
// Work around cross-media @extend (https://github.com/sass/sass/issues/1050)
|
||||
%grid-column-float-#{$breakpoint} {
|
||||
@if $enable-flex {
|
||||
// Do nothing
|
||||
} @else {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
@for $i from 1 through $columns {
|
||||
.col-#{$breakpoint}-#{$i} {
|
||||
@extend %grid-column-float-#{$breakpoint};
|
||||
@include make-col-span($i, $columns);
|
||||
}
|
||||
}
|
||||
@each $modifier in (pull, push, offset) {
|
||||
@for $i from 0 through $columns {
|
||||
.col-#{$breakpoint}-#{$modifier}-#{$i} {
|
||||
@include make-col-modifier($modifier, $i, $columns)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
65
source/stylesheets/mixins/_grid.scss
Normal file
65
source/stylesheets/mixins/_grid.scss
Normal file
|
@ -0,0 +1,65 @@
|
|||
/// Grid system
|
||||
//
|
||||
// Generate semantic grid columns with these mixins.
|
||||
|
||||
@mixin make-container($gutter: $grid-gutter-width) {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
padding-left: ($gutter / 2);
|
||||
padding-right: ($gutter / 2);
|
||||
@include clearfix();
|
||||
}
|
||||
|
||||
@mixin make-row($gutter: $grid-gutter-width) {
|
||||
@if $enable-flex {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
} @else {
|
||||
@include clearfix();
|
||||
}
|
||||
margin-left: ($gutter / -2);
|
||||
margin-right: ($gutter / -2);
|
||||
}
|
||||
|
||||
@mixin make-col($gutter: $grid-gutter-width) {
|
||||
position: relative;
|
||||
@if $enable-flex {
|
||||
// Do nothing
|
||||
} @else {
|
||||
float: left;
|
||||
}
|
||||
min-height: 1px;
|
||||
padding-left: ($gutter / 2);
|
||||
padding-right: ($gutter / 2);
|
||||
}
|
||||
|
||||
@mixin make-col-span($size, $columns: $grid-columns) {
|
||||
@if $enable-flex {
|
||||
flex: 0 0 percentage($size / $columns);
|
||||
} @else {
|
||||
width: percentage($size / $columns);
|
||||
}
|
||||
}
|
||||
|
||||
@mixin make-col-offset($size, $columns: $grid-columns) {
|
||||
margin-left: percentage($size / $columns);
|
||||
}
|
||||
|
||||
@mixin make-col-push($size, $columns: $grid-columns) {
|
||||
left: if($size > 0, percentage($size / $columns), auto);
|
||||
}
|
||||
|
||||
@mixin make-col-pull($size, $columns: $grid-columns) {
|
||||
right: if($size > 0, percentage($size / $columns), auto);
|
||||
}
|
||||
|
||||
@mixin make-col-modifier($type, $size, $columns) {
|
||||
// Work around the lack of dynamic mixin @include support (https://github.com/sass/sass/issues/626)
|
||||
@if $type == push {
|
||||
@include make-col-push($size, $columns);
|
||||
} @else if $type == pull {
|
||||
@include make-col-pull($size, $columns);
|
||||
} @else if $type == offset {
|
||||
@include make-col-offset($size, $columns);
|
||||
}
|
||||
}
|
8
source/stylesheets/mixins/_hide-text.scss
Normal file
8
source/stylesheets/mixins/_hide-text.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
// CSS image replacement
|
||||
@mixin text-hide() {
|
||||
font: "0/0" a;
|
||||
color: transparent;
|
||||
text-shadow: none;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
59
source/stylesheets/mixins/_hover.scss
Normal file
59
source/stylesheets/mixins/_hover.scss
Normal file
|
@ -0,0 +1,59 @@
|
|||
@mixin hover {
|
||||
@if $enable-hover-media-query {
|
||||
// See Media Queries Level 4: http://drafts.csswg.org/mediaqueries/#hover
|
||||
// Currently shimmed by https://github.com/twbs/mq4-hover-shim
|
||||
@media (hover: hover) {
|
||||
&:hover { @content }
|
||||
}
|
||||
}
|
||||
@else {
|
||||
&:hover { @content }
|
||||
}
|
||||
}
|
||||
|
||||
@mixin hover-focus {
|
||||
@if $enable-hover-media-query {
|
||||
&:focus { @content }
|
||||
@include hover { @content }
|
||||
}
|
||||
@else {
|
||||
&:focus,
|
||||
&:hover {
|
||||
@content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin plain-hover-focus {
|
||||
@if $enable-hover-media-query {
|
||||
&,
|
||||
&:focus {
|
||||
@content
|
||||
}
|
||||
@include hover { @content }
|
||||
}
|
||||
@else {
|
||||
&,
|
||||
&:focus,
|
||||
&:hover {
|
||||
@content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin hover-focus-active {
|
||||
@if $enable-hover-media-query {
|
||||
&:focus,
|
||||
&:active {
|
||||
@content
|
||||
}
|
||||
@include hover { @content }
|
||||
}
|
||||
@else {
|
||||
&:focus,
|
||||
&:active,
|
||||
&:hover {
|
||||
@content
|
||||
}
|
||||
}
|
||||
}
|
33
source/stylesheets/mixins/_image.scss
Normal file
33
source/stylesheets/mixins/_image.scss
Normal file
|
@ -0,0 +1,33 @@
|
|||
// Image Mixins
|
||||
// - Responsive image
|
||||
// - Retina image
|
||||
|
||||
|
||||
// Responsive image
|
||||
//
|
||||
// Keep images from scaling beyond the width of their parents.
|
||||
|
||||
@mixin img-responsive($display: block) {
|
||||
display: $display;
|
||||
max-width: 100%; // Part 1: Set a maximum relative to the parent
|
||||
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
|
||||
}
|
||||
|
||||
|
||||
// Retina image
|
||||
//
|
||||
// Short retina mixin for setting background-image and -size.
|
||||
|
||||
@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
|
||||
background-image: url("#{file-1x}");
|
||||
|
||||
@media
|
||||
only screen and (-webkit-min-device-pixel-ratio: 2),
|
||||
only screen and ( -o-min-device-pixel-ratio: 2/1),
|
||||
only screen and ( min-device-pixel-ratio: 2),
|
||||
only screen and ( min-resolution: 192dpi),
|
||||
only screen and ( min-resolution: 2dppx) {
|
||||
background-image: url("#{file-2x}");
|
||||
background-size: $width-1x $height-1x;
|
||||
}
|
||||
}
|
11
source/stylesheets/mixins/_label.scss
Normal file
11
source/stylesheets/mixins/_label.scss
Normal file
|
@ -0,0 +1,11 @@
|
|||
// Labels
|
||||
|
||||
@mixin label-variant($color) {
|
||||
background-color: $color;
|
||||
|
||||
&[href] {
|
||||
@include hover-focus {
|
||||
background-color: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
30
source/stylesheets/mixins/_list-group.scss
Normal file
30
source/stylesheets/mixins/_list-group.scss
Normal file
|
@ -0,0 +1,30 @@
|
|||
// List Groups
|
||||
|
||||
@mixin list-group-item-variant($state, $background, $color) {
|
||||
.list-group-item-#{state} {
|
||||
color: $color;
|
||||
background-color: $background;
|
||||
}
|
||||
|
||||
a.list-group-item-#{state},
|
||||
button.list-group-item-#{state} {
|
||||
color: $color;
|
||||
|
||||
.list-group-item-heading {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
@include hover-focus {
|
||||
color: $color;
|
||||
background-color: darken($background, 5%);
|
||||
}
|
||||
|
||||
&.active {
|
||||
@include plain-hover-focus {
|
||||
color: #fff;
|
||||
background-color: $color;
|
||||
border-color: $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
10
source/stylesheets/mixins/_nav-divider.scss
Normal file
10
source/stylesheets/mixins/_nav-divider.scss
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Horizontal dividers
|
||||
//
|
||||
// Dividers (basically an hr) within dropdowns and nav lists
|
||||
|
||||
@mixin nav-divider($color: #e5e5e5) {
|
||||
height: 1px;
|
||||
margin: ($spacer-y / 2) 0;
|
||||
overflow: hidden;
|
||||
background-color: $color;
|
||||
}
|
9
source/stylesheets/mixins/_navbar-align.scss
Normal file
9
source/stylesheets/mixins/_navbar-align.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Navbar vertical align
|
||||
//
|
||||
// Vertically center elements in the navbar.
|
||||
// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
|
||||
|
||||
// @mixin navbar-vertical-align($element-height) {
|
||||
// margin-top: (($navbar-height - $element-height) / 2);
|
||||
// margin-bottom: (($navbar-height - $element-height) / 2);
|
||||
// }
|
24
source/stylesheets/mixins/_pagination.scss
Normal file
24
source/stylesheets/mixins/_pagination.scss
Normal file
|
@ -0,0 +1,24 @@
|
|||
// Pagination
|
||||
|
||||
@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
|
||||
> li {
|
||||
> a,
|
||||
> span {
|
||||
padding: $padding-vertical $padding-horizontal;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
}
|
||||
&:first-child {
|
||||
> a,
|
||||
> span {
|
||||
@include border-left-radius($border-radius);
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
> a,
|
||||
> span {
|
||||
@include border-right-radius($border-radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
17
source/stylesheets/mixins/_progress.scss
Normal file
17
source/stylesheets/mixins/_progress.scss
Normal file
|
@ -0,0 +1,17 @@
|
|||
// Progress bars
|
||||
|
||||
@mixin progress-variant($color) {
|
||||
&[value]::-webkit-progress-value {
|
||||
background-color: $color;
|
||||
}
|
||||
|
||||
&[value]::-moz-progress-bar {
|
||||
background-color: $color;
|
||||
}
|
||||
|
||||
@media screen and (min-width:0\0) {
|
||||
.progress-bar {
|
||||
background-color: $color;
|
||||
}
|
||||
}
|
||||
}
|
6
source/stylesheets/mixins/_pulls.scss
Normal file
6
source/stylesheets/mixins/_pulls.scss
Normal file
|
@ -0,0 +1,6 @@
|
|||
@mixin pull-left {
|
||||
float: left !important;
|
||||
}
|
||||
@mixin pull-right {
|
||||
float: right !important;
|
||||
}
|
8
source/stylesheets/mixins/_reset-filter.scss
Normal file
8
source/stylesheets/mixins/_reset-filter.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
// Reset filters for IE
|
||||
//
|
||||
// When you need to remove a gradient background, do not forget to use this to reset
|
||||
// the IE filter for IE9.
|
||||
|
||||
@mixin reset-filter() {
|
||||
filter: "progid:DXImageTransform.Microsoft.gradient(enabled = false)";
|
||||
}
|
18
source/stylesheets/mixins/_reset-text.scss
Normal file
18
source/stylesheets/mixins/_reset-text.scss
Normal file
|
@ -0,0 +1,18 @@
|
|||
@mixin reset-text {
|
||||
font-family: $font-family-base;
|
||||
// We deliberately do NOT reset font-size.
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
letter-spacing: normal;
|
||||
line-break: auto;
|
||||
line-height: $line-height;
|
||||
text-align: left; // Fallback for where `start` is not supported
|
||||
text-align: start;
|
||||
text-decoration: none;
|
||||
text-shadow: none;
|
||||
text-transform: none;
|
||||
white-space: normal;
|
||||
word-break: normal;
|
||||
word-spacing: normal;
|
||||
word-wrap: normal;
|
||||
}
|
6
source/stylesheets/mixins/_resize.scss
Normal file
6
source/stylesheets/mixins/_resize.scss
Normal file
|
@ -0,0 +1,6 @@
|
|||
// Resize anything
|
||||
|
||||
@mixin resizable($direction) {
|
||||
resize: $direction; // Options: horizontal, vertical, both
|
||||
overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
|
||||
}
|
21
source/stylesheets/mixins/_responsive-visibility.scss
Normal file
21
source/stylesheets/mixins/_responsive-visibility.scss
Normal file
|
@ -0,0 +1,21 @@
|
|||
// Responsive utilities
|
||||
|
||||
//
|
||||
// More easily include all the states for responsive-utilities.less.
|
||||
// [converter] $parent hack
|
||||
@mixin responsive-visibility($parent) {
|
||||
#{$parent} {
|
||||
display: block !important;
|
||||
}
|
||||
table#{$parent} { display: table !important; }
|
||||
tr#{$parent} { display: table-row !important; }
|
||||
th#{$parent},
|
||||
td#{$parent} { display: table-cell !important; }
|
||||
}
|
||||
|
||||
// [converter] $parent hack
|
||||
@mixin responsive-invisibility($parent) {
|
||||
#{$parent} {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
32
source/stylesheets/mixins/_screen-reader.scss
Normal file
32
source/stylesheets/mixins/_screen-reader.scss
Normal file
|
@ -0,0 +1,32 @@
|
|||
// Only display content to screen readers
|
||||
//
|
||||
// See: http://a11yproject.com/posts/how-to-hide-content/
|
||||
|
||||
@mixin sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0,0,0,0);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// Use in conjunction with .sr-only to only display content when it's focused.
|
||||
//
|
||||
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
|
||||
//
|
||||
// Credit: HTML5 Boilerplate
|
||||
|
||||
@mixin sr-only-focusable {
|
||||
&:active,
|
||||
&:focus {
|
||||
position: static;
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
clip: auto;
|
||||
}
|
||||
}
|
10
source/stylesheets/mixins/_size.scss
Normal file
10
source/stylesheets/mixins/_size.scss
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Sizing shortcuts
|
||||
|
||||
@mixin size($width, $height) {
|
||||
width: $width;
|
||||
height: $height;
|
||||
}
|
||||
|
||||
@mixin square($size) {
|
||||
@include size($size, $size);
|
||||
}
|
9
source/stylesheets/mixins/_tab-focus.scss
Normal file
9
source/stylesheets/mixins/_tab-focus.scss
Normal file
|
@ -0,0 +1,9 @@
|
|||
// WebKit-style focus
|
||||
|
||||
@mixin tab-focus() {
|
||||
// Default
|
||||
outline: thin dotted;
|
||||
// WebKit
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
outline-offset: -2px;
|
||||
}
|
30
source/stylesheets/mixins/_table-row.scss
Normal file
30
source/stylesheets/mixins/_table-row.scss
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Tables
|
||||
|
||||
@mixin table-row-variant($state, $background) {
|
||||
// Exact selectors below required to override `.table-striped` and prevent
|
||||
// inheritance to nested tables.
|
||||
.table-#{$state} {
|
||||
&,
|
||||
> th,
|
||||
> td {
|
||||
background-color: $background;
|
||||
}
|
||||
}
|
||||
|
||||
// Hover states for `.table-hover`
|
||||
// Note: this is not available for cells or rows within `thead` or `tfoot`.
|
||||
.table-hover {
|
||||
$hover-background: darken($background, 5%);
|
||||
|
||||
.table-#{$state} {
|
||||
@include hover {
|
||||
background-color: $hover-background;
|
||||
|
||||
> td,
|
||||
> th {
|
||||
background-color: $hover-background;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
source/stylesheets/mixins/_text-emphasis.scss
Normal file
12
source/stylesheets/mixins/_text-emphasis.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
// Typography
|
||||
|
||||
@mixin text-emphasis-variant($parent, $color) {
|
||||
#{$parent} {
|
||||
color: $color;
|
||||
}
|
||||
a#{$parent} {
|
||||
@include hover-focus {
|
||||
color: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
8
source/stylesheets/mixins/_text-truncate.scss
Normal file
8
source/stylesheets/mixins/_text-truncate.scss
Normal file
|
@ -0,0 +1,8 @@
|
|||
// Text truncate
|
||||
// Requires inline-block or block for proper styling
|
||||
|
||||
@mixin text-truncate() {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
61
source/stylesheets/style.scss
Normal file
61
source/stylesheets/style.scss
Normal file
|
@ -0,0 +1,61 @@
|
|||
$line-height: 1.5;
|
||||
$line-height-lg: 1.7;
|
||||
$line-height-sm: 1.5;
|
||||
|
||||
$headings-font-family: 'PT Sans Caption', 'PT Sans';
|
||||
$font-family-base: 'PT Sans', Arial, Verdana, sans-serif;
|
||||
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
|
||||
@import "normalize";
|
||||
@import "reboot";
|
||||
@import "print";
|
||||
@import "grid";
|
||||
@import "images";
|
||||
@import "tables";
|
||||
@import "buttons";
|
||||
|
||||
@import "nav";
|
||||
@import "navbar";
|
||||
//@import "code";
|
||||
@import "type";
|
||||
@import "card";
|
||||
|
||||
@import "utilities";
|
||||
@import "utilities-spacing";
|
||||
@import "utilities-responsive";
|
||||
|
||||
footer {
|
||||
margin: 0 2rem;
|
||||
}
|
||||
|
||||
img.pull-left {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.pull-right {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.vertcenter {
|
||||
@include media-breakpoint-up('sm') {
|
||||
padding-top: 10rem;
|
||||
line-height: 3;
|
||||
}
|
||||
text-align: center;
|
||||
h1 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
th, td {
|
||||
vertical-align: middle !important;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.bigskip-after {
|
||||
margin-bottom: 3rem;
|
||||
}
|
20
source/whatis.md.erb
Normal file
20
source/whatis.md.erb
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
title: Что такое настольная ролевая игра?
|
||||
---
|
||||
<%= image_tag 'horizontal.jpg', :class => "img-responsive pull-right", :resize_to => '650x650', :width => '650px' %>
|
||||
|
||||
Ролевая игра — это история, которую участники рассказывают в лицах. Скорее всего, вы уже знакомы с ролевыми играми: вы же играли в героев книг, фильмов или комиксов? Возможно, вы играли в ролевые компьютерные игры. Так вот, мы знаем как делать это ещё интереснее.
|
||||
|
||||
Вы можете играть во что угодно: научную фантастику, альтернативную историю, детектив и гонки на магических самолётах. Кто‑то любит мир «Бэтмена», а кто‑то — «Моя маленькая пони».
|
||||
|
||||
Вы создаёте персонажей, которые во время игры исследуют мир, обнаруживают тайны, вступают в разнообразные взаимодействия с другими персонажами, сражаются с противниками и раскрывают себя в интересных ситуациях. Вид ролевой игры определяет, как именно вы будете играть.
|
||||
|
||||
В настольных ролевых используются игральные карты, кубики, фишки, миниатюры и прочие аксессуары, но действие происходит в вашем воображении. Для этого вам понадобится партнёр, который станет ведущим — главным рассказчиком. Рассказчик создаёт историю и следит за правилами игры, по которым его история будет работать. Именно он, а не компьютер, смотрит на всё, происходящее вокруг персонажей игроков. Он реагирует на любой поворот сюжета и на действия остальных участников.
|
||||
|
||||
В ролевых играх живого действия вам больше не нужен стол, потому что вы сами входите в мир игры. Это достаточно похоже на театр импровизации: вы входите в роль и общаетесь в ней с другими игроками. Кубики и фишки обычно используют только в особых случаях, а ведущий тоже не всегда должен присутствовать рядом.
|
||||
|
||||
Любая ролевая игра — это не только приключение, но ещё и интересная история, в которой может произойти всё, что угодно, ведь вы всегда можете превратить волшебную сказку в героическую сагу или мистическую трагедию, потому что придуманные вами персонажи — это важные герои повествования. Важно, что вы «выигрываете» не тогда, когда ваш персонаж убивает последнего монстра или выигрывает миллион золотых, но когда он принимает участие в необычной и запоминающейся истории.
|
||||
|
||||
Компьютерные ролевые игры и MMORPG ведут свою историю именно от настольных ролёвок. Вы даже можете узнать пошаговые бои и элементы ролевых систем. Вы точно так же в любой момент можете закончить игру, а можете начать новое приключение с теми же персонажами даже после того, как они закончат текущую кампанию.
|
||||
|
||||
Всё достаточно просто: приходите к нам, садитесь за свободный столик и дайте волю своему воображению! Какого персонажа хотели бы сыграть именно вы?
|
Loading…
Reference in a new issue