├── .gitignore ├── examples └── docs │ ├── ico │ ├── favicon.png │ └── apple-touch-icon-144-precomposed.png │ ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff │ ├── js │ ├── ie8-responsive-file-warning.js │ ├── application.js │ ├── customizer.js │ ├── docs.min.js │ ├── filesaver.js │ └── holder.js │ └── css │ ├── pygments-manni.css │ └── docs.min.css ├── dist ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff └── js │ └── bootstrap.min.js ├── _config.yml ├── bower.json ├── less ├── theme.less ├── wells.less ├── labels.less ├── input-groups.less ├── navs.less ├── panels.less ├── type.less ├── button-groups.less ├── buttons.less ├── forms.less └── variables.less ├── package.json ├── Gruntfile.coffee ├── README.md ├── index.html └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /node_modules 3 | /bower_components 4 | /tmp -------------------------------------------------------------------------------- /examples/docs/ico/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/examples/docs/ico/favicon.png -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | exclude: 2 | - Gruntfile.coffee 3 | - bower.json 4 | - package.json 5 | - LICENSE 6 | - node_modules 7 | - bower_components 8 | - README.md -------------------------------------------------------------------------------- /examples/docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/examples/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /examples/docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/examples/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /examples/docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/examples/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /examples/docs/ico/apple-touch-icon-144-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/slider23/bootstrap-theme-github/HEAD/examples/docs/ico/apple-touch-icon-144-precomposed.png -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap-theme-github", 3 | "version": "0.2.0", 4 | "main": "dist/bootstrap.css", 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "bower_components", 9 | "test", 10 | "tests" 11 | ], 12 | "dependencies": { 13 | "bootstrap":"3.1.1" 14 | } 15 | } -------------------------------------------------------------------------------- /less/theme.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Github theme for bootstrap v3.1.1 3 | * 4 | * Copyright 2013 slider23 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * This theme was built using the Themestrap Bootstrap Theme Kit. 9 | * https://github.com/divshot/themestrap 10 | */ 11 | 12 | @import "bootstrap.less"; 13 | 14 | // Add CSS Customizations to your theme here. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bootstrap-theme-github", 3 | "version": "0.2.0", 4 | "devDependencies": { 5 | "grunt": "~0.4.1", 6 | "grunt-contrib-less": "~0.6.4", 7 | "grunt-contrib-watch": "~0.4.4", 8 | "grunt-contrib-cssmin": "~0.6.1", 9 | "grunt-contrib-copy": "~0.4.1", 10 | "grunt-text-replace": "~0.3.2", 11 | "grunt-contrib-clean": "~0.5.0", 12 | "grunt-contrib-connect": "~0.3.0", 13 | "bower": "~1.1.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /examples/docs/js/ie8-responsive-file-warning.js: -------------------------------------------------------------------------------- 1 | // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT 2 | // IT'S JUST JUNK FOR OUR DOCS! 3 | // ++++++++++++++++++++++++++++++++++++++++++ 4 | /*! 5 | * Copyright 2013 Twitter, Inc. 6 | * 7 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 8 | * details, see http://creativecommons.org/licenses/by/3.0/. 9 | */ 10 | // Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8. 11 | if (window.location.protocol == 'file:') 12 | alert("ERROR: Bootstrap's responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.") 13 | -------------------------------------------------------------------------------- /less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 15px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid darken(@well-bg, 7%); 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px 15px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /less/labels.less: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 100%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: @label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // Add hover effects, but only for links 18 | &[href] { 19 | &:hover, 20 | &:focus { 21 | color: @label-link-hover-color; 22 | text-decoration: none; 23 | cursor: pointer; 24 | } 25 | } 26 | 27 | // Empty labels collapse automatically (not available in IE8) 28 | &:empty { 29 | display: none; 30 | } 31 | 32 | // Quick fix for labels in buttons 33 | .btn & { 34 | position: relative; 35 | top: -1px; 36 | } 37 | } 38 | 39 | // Colors 40 | // Contextual variations (linked labels get darker on :hover) 41 | 42 | .label-default { 43 | .label-variant(@label-default-bg); 44 | } 45 | 46 | .label-primary { 47 | .label-variant(@label-primary-bg); 48 | } 49 | 50 | .label-success { 51 | .label-variant(@label-success-bg); 52 | } 53 | 54 | .label-info { 55 | .label-variant(@label-info-bg); 56 | } 57 | 58 | .label-warning { 59 | .label-variant(@label-warning-bg); 60 | } 61 | 62 | .label-danger { 63 | .label-variant(@label-danger-bg); 64 | } 65 | -------------------------------------------------------------------------------- /Gruntfile.coffee: -------------------------------------------------------------------------------- 1 | module.exports = (grunt) -> 2 | grunt.initConfig 3 | bowerDirectory: require('bower').config.directory 4 | less: 5 | compile: 6 | options: 7 | compress: false 8 | paths: ['less', 'tmp', '<%= bowerDirectory %>/bootstrap/less'] 9 | files: 10 | 'dist/css/bootstrap.css': ['less/theme.less'] 11 | watch: 12 | less: 13 | files: ['less/*.less'] 14 | tasks: ['copy', 'less:compile', 'clean'] 15 | options: 16 | livereload: true 17 | cssmin: 18 | files: ['dist/css/bootstrap.css'] 19 | tasks: ['cssmin:minify'] 20 | cssmin: 21 | minify: 22 | expand: true 23 | cwd: 'dist/css' 24 | src: ['*.css', '!*.min.css'] 25 | dest: 'dist/css' 26 | ext: '.min.css' 27 | connect: 28 | serve: 29 | options: 30 | port: grunt.option('port') || '8000' 31 | hostname: grunt.option('host') || 'localhost' 32 | copy: 33 | bootstrap: 34 | files: [ 35 | { expand: true, cwd: '<%= bowerDirectory %>/bootstrap/less', src: ['bootstrap.less'], dest: 'tmp/' }, 36 | { expand: true, cwd: '<%= bowerDirectory %>/bootstrap/fonts', src: ['*'], dest: 'dist/fonts' } 37 | ] 38 | clean: ['tmp'] 39 | 40 | grunt.loadNpmTasks('grunt-contrib-less') 41 | grunt.loadNpmTasks('grunt-contrib-watch') 42 | grunt.loadNpmTasks('grunt-contrib-cssmin') 43 | grunt.loadNpmTasks('grunt-contrib-copy') 44 | grunt.loadNpmTasks('grunt-text-replace') 45 | grunt.loadNpmTasks('grunt-contrib-clean') 46 | grunt.loadNpmTasks('grunt-contrib-connect') 47 | 48 | grunt.registerTask('default', ['copy', 'less', 'cssmin', 'clean']) 49 | grunt.registerTask('serve', ['connect', 'watch']) 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Github theme for Twitter Bootstrap 3 2 | 3 | No more ugly huge elements. No more big fonts. No more candy-style buttons. 4 | Only strict and perfect beauty. 5 | Demo: http://slider23.github.io/bootstrap-theme-github/ 6 | 7 | ## Installation 8 | 9 | Replace original `bootstrap.css` or `bootstrap.min.css` by `dist/css/bootstrap.css` or `dist/css/bootstrap.min.css` 10 | 11 | ## Built by Themestrap 12 | 13 | **Themestrap** is a simple starter kit for constructing Twitter Bootstrap 3+ themes. It provides the skeleton 14 | for a simple, maintainable theme that always uses code directly from Bootstrap with as little replacement as 15 | possible. 16 | 17 | ### Themestrap's Philosophy 18 | 19 | 1. A theme should be built *on top* of the framework, with as little intrusive change as possible. 20 | 2. As the framework evolves, a theme should be easily updated to the latest version. 21 | 22 | To this end, Themestrap provides you with two simple files to modify: **variables.less** 23 | and **theme.less** (both in the `less` directory). You can tweak any and all of the Bootstrap variables 24 | in **variables.less** and support any additional code or classes you'd like in **theme.less**. The compiled 25 | theme CSS includes the Bootstrap library and will automatically pick up any overrides from variables. 26 | 27 | ### Creating a Theme with Themestrap 28 | 29 | To create a theme, first start by cloning the Themestrap repository into a directory named for 30 | your theme. We recommend a `bootstrap-theme-THEME_NAME` naming scheme: 31 | 32 | git clone https://github.com/divshot/themestrap.git bootstrap-theme-THEME_NAME 33 | 34 | Next, you should open `bower.json` and change the package name from `bootstrap-theme-themestrap` 35 | to match what you want your theme to be named. Now you're ready to install dependencies using 36 | [Grunt](http://gruntjs.com) and [Bower](https://github.com/bower/bower) (you must have these 37 | installed). 38 | 39 | npm install 40 | bower install 41 | 42 | Now you're ready to go! Simply edit `less/variables.less` and `less/theme.less` to your liking. 43 | When you're ready, just run `grunt` and it will compile and minify the distribution for you. 44 | You can also run `grunt watch` to automatically compile as you work. -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |A theme for Bootstrap 3 by slider23
19 | 24 | 25 |Download the bootstrap.css or bootstrap.min.css files.
29 |Tweet 33 |
34 | 35 |A Themestrap theme. Copyright © 2013 Divshot, Inc. Some rights reserved.
36 |' + msg + '
\ 27 |\"untitled\".\
322 | However, if you check your downloads folder, just rename this \"untitled\" file\
323 | to \"bootstrap.zip\" and you should be good to go!")
324 | } else if (!window.URL && !window.webkitURL) {
325 | $('.bs-docs-section, .bs-sidebar').css('display', 'none')
326 |
327 | showCallout("Looks like your current browser doesn't support the Bootstrap Customizer. Please take a second\
328 | to upgrade to a more modern browser.", true)
329 | }
330 |
331 | parseUrl()
332 | }
333 |
--------------------------------------------------------------------------------
/less/buttons.less:
--------------------------------------------------------------------------------
1 | //
2 | // Buttons
3 | // --------------------------------------------------
4 |
5 |
6 | // Base styles
7 | // --------------------------------------------------
8 |
9 | .btn {
10 | display: inline-block;
11 | margin-bottom: 0; // For input.btn
12 | font-weight: @btn-font-weight;
13 | text-align: center;
14 | vertical-align: middle;
15 | cursor: pointer;
16 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
17 | border: 1px solid transparent;
18 | border-radius: @border-radius-base;
19 | white-space: nowrap;
20 | .user-select(none);
21 |
22 | &,
23 | &:active,
24 | &.active {
25 | &:focus {
26 | .tab-focus();
27 | }
28 | }
29 |
30 | &:hover,
31 | &:focus {
32 | color: @btn-default-color;
33 | text-decoration: none;
34 | }
35 |
36 | &:active,
37 | &.active {
38 | outline: 0;
39 | background-image: none;
40 | .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
41 | }
42 |
43 | &.disabled,
44 | &[disabled],
45 | fieldset[disabled] & {
46 | cursor: not-allowed;
47 | pointer-events: none; // Future-proof disabling of clicks
48 | .opacity(.65);
49 | .box-shadow(none);
50 | }
51 | }
52 |
53 |
54 | // Alternate buttons
55 | // --------------------------------------------------
56 |
57 | .btn-default {
58 | background-color: #eaeaea;
59 | background-image: linear-gradient(#fafafa, #eaeaea);
60 | background-image: -moz-linear-gradient(#fafafa, #eaeaea);
61 | background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
62 | background-repeat: repeat-x;
63 | border: 1px solid #ddd;
64 | border-bottom-color: #c5c5c5;
65 | color: #333;
66 |
67 | &:hover,
68 | &:focus
69 | {
70 | background-color: #dadada;
71 | background-image: linear-gradient(#eaeaea, #dadada);
72 | background-image: -moz-linear-gradient(#eaeaea, #dadada);
73 | background-image: -webkit-linear-gradient(#eaeaea, #dadada);
74 | background-repeat: repeat-x;
75 | border-color: #ccc #ccc #b5b5b5;
76 | text-decoration: none;
77 | color: #333;
78 | }
79 | &:active,
80 | &.active
81 | {
82 | background-color: #dadada;
83 | background-image: none;
84 | border-color: #b5b5b5;
85 | box-shadow: inset 0 3px 5px rgba(0,0,0,0.15);
86 | color: #333;
87 | }
88 |
89 | &.disabled,
90 | &[disabled],
91 | fieldset[disabled] & {
92 | &,
93 | &:hover,
94 | &:focus,
95 | &:active,
96 | &.active {
97 | background-color: #e5e5e5;
98 | background-image: none;
99 | border-color: #c5c5c5;
100 | box-shadow: none;
101 | color:#333;
102 | cursor: default;
103 | opacity: .5;
104 | text-shadow: 0 1px 0 rgba(255,255,255,0.9);
105 | }
106 | }
107 | }
108 | .btn-primary {
109 |
110 | background-color: #3072b3;
111 | background-image: linear-gradient(#599bcd, #3072b3);
112 | background-image: -moz-linear-gradient(#599bcd, #3072b3);
113 | background-image: -webkit-linear-gradient(#599bcd, #3072b3);
114 | background-repeat: repeat-x;
115 | border: 1px solid #2a65a0;
116 | color: #fff;
117 | text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
118 |
119 | &:hover,
120 | &:focus
121 | {
122 | background-color: #3072b3;
123 | background-image: linear-gradient(#5b97ca, #3163a5);
124 | background-image: -moz-linear-gradient(#5b97ca, #3163a5);
125 | background-image: -webkit-linear-gradient(#5b97ca, #3163a5);
126 | color: #fff;
127 | border-color: #2a65a0;
128 | }
129 | &:active,
130 | &.active
131 | {
132 | background-color: #3072b3;
133 | background-image: none;
134 | border-color: #25588c;
135 | box-shadow: inset 0 3px 5px rgba(0,0,0,0.15);
136 | }
137 |
138 | &.disabled,
139 | &[disabled],
140 | fieldset[disabled] & {
141 | &,
142 | &:hover,
143 | &:focus,
144 | &:active,
145 | &.active {
146 | background-position: 0 0;
147 | }
148 | }
149 | }
150 | // Warning appears as orange
151 | .btn-warning {
152 | background-color: #eaeaea;
153 | background-image: linear-gradient(#fafafa, #eaeaea);
154 | background-image: -moz-linear-gradient(#fafafa, #eaeaea);
155 | background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
156 | background-repeat: repeat-x;
157 | border: 1px solid #ddd;
158 | border-bottom-color: #c5c5c5;
159 | color: #f28722;
160 |
161 | &:hover,
162 | &:focus
163 | {
164 | background-color: #dadada;
165 | background-image: linear-gradient(#eaeaea, #dadada);
166 | background-image: -moz-linear-gradient(#eaeaea, #dadada);
167 | background-image: -webkit-linear-gradient(#eaeaea, #dadada);
168 | background-repeat: repeat-x;
169 | border-color: #ccc #ccc #b5b5b5;
170 | text-decoration: none;
171 | color: #bc8334;
172 | }
173 | &:active,
174 | &.active
175 | {
176 | background-color: #dadada;
177 | background-image: none;
178 | border-color: #b5b5b5;
179 | box-shadow: inset 0 3px 5px rgba(0,0,0,0.15);
180 | color: #bc8334;
181 | }
182 |
183 | &.disabled,
184 | &[disabled],
185 | fieldset[disabled] & {
186 | &,
187 | &:hover,
188 | &:focus,
189 | &:active,
190 | &.active {
191 | background-color: #e5e5e5;
192 | background-image: none;
193 | border-color: #c5c5c5;
194 | box-shadow: none;
195 | color: #bc8334;
196 | cursor: default;
197 | opacity: .5;
198 | text-shadow: 0 1px 0 rgba(255,255,255,0.9);
199 | }
200 | }
201 | }
202 | // Danger and error appear as red
203 | .btn-danger {
204 | background-color: #eaeaea;
205 | background-image: linear-gradient(#fafafa, #eaeaea);
206 | background-image: -moz-linear-gradient(#fafafa, #eaeaea);
207 | background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
208 | background-repeat: repeat-x;
209 | border: 1px solid #ddd;
210 | border-bottom-color: #c5c5c5;
211 | color: #900;
212 |
213 | &:hover,
214 | &:focus
215 | {
216 | background-color: #b33630;
217 | background-image: linear-gradient(#dc5f59, #b33630);
218 | background-image: -moz-linear-gradient(#dc5f59, #b33630);
219 | background-image: -webkit-linear-gradient(#dc5f59, #b33630);
220 | background-repeat: repeat-x;
221 | border-color: #cd504a;
222 | color: #fff;
223 | text-shadow: 0px -1px 0 rgba(0,0,0,0.3);
224 | }
225 | &:active,
226 | &.active
227 | {
228 | background-color: #b33630;
229 | background-image: none;
230 | border-color: #9f312c;
231 | color: #fff;
232 | }
233 |
234 | &.disabled,
235 | &[disabled],
236 | fieldset[disabled] & {
237 | &,
238 | &:hover,
239 | &:focus,
240 | &:active,
241 | &.active {
242 | background-color: #e1e1e1;
243 | background-image: linear-gradient(#fff, #e1e1e1);
244 | background-image: -moz-linear-gradient(#fff, #e1e1e1);
245 | background-image: -webkit-linear-gradient(#fff, #e1e1e1);
246 | background-repeat: repeat-x;
247 | border-color: #c5c5c5;
248 | color: #900;
249 | text-shadow: 0 1px 0 rgba(255,255,255,0.9);
250 | }
251 | }
252 | }
253 | // Success appears as green
254 | .btn-success {
255 | background-color: #60b044;
256 | background-image: linear-gradient(#8add6d, #60b044);
257 | background-image: -moz-linear-gradient(#8add6d, #60b044);
258 | background-image: -webkit-linear-gradient(#8add6d, #60b044);
259 | background-repeat: repeat-x;
260 | border-color: #5ca941;
261 | color: #fff;
262 | text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
263 |
264 | &:hover,
265 | &:focus
266 | {
267 | background-color: #569e3d;
268 | background-image: linear-gradient(#79d858, #569e3d);
269 | background-image: -moz-linear-gradient(#79d858, #569e3d);
270 | background-image: -webkit-linear-gradient(#79d858, #569e3d);
271 | background-repeat: repeat-x;
272 | border-color: #4a993e;
273 | color: #fff;
274 | }
275 | &:active,
276 | &.active
277 | {
278 | background-color: #569e3d;
279 | background-image: none;
280 | border-color: #418737;
281 | }
282 |
283 | &.disabled,
284 | &[disabled],
285 | fieldset[disabled] & {
286 | &,
287 | &:hover,
288 | &:focus,
289 | &:active,
290 | &.active {
291 | background-color: #60b044;
292 | background-image: linear-gradient(#8add6d, #60b044);
293 | background-image: -moz-linear-gradient(#8add6d, #60b044);
294 | background-image: -webkit-linear-gradient(#8add6d, #60b044);
295 | background-repeat: repeat-x;
296 | border-color: #74bb5a #74bb5a #509338;
297 | color: #fff;
298 | text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
299 | }
300 | }
301 | }
302 | // Info appears as blue-green
303 | .btn-info {
304 | background-color: #eaeaea;
305 | background-image: linear-gradient(#fafafa, #eaeaea);
306 | background-image: -moz-linear-gradient(#fafafa, #eaeaea);
307 | background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
308 | background-repeat: repeat-x;
309 | border: 1px solid #ddd;
310 | border-bottom-color: #c5c5c5;
311 | color: #2a567d;
312 |
313 | &:hover,
314 | &:focus
315 | {
316 | background-color: #dadada;
317 | background-image: linear-gradient(#eaeaea, #dadada);
318 | background-image: -moz-linear-gradient(#eaeaea, #dadada);
319 | background-image: -webkit-linear-gradient(#eaeaea, #dadada);
320 | background-repeat: repeat-x;
321 | border-color: #ccc #ccc #b5b5b5;
322 | text-decoration: none;
323 | color: #2a567d;
324 | }
325 | &:active,
326 | &.active
327 | {
328 | background-color: #dadada;
329 | background-image: none;
330 | border-color: #b5b5b5;
331 | box-shadow: inset 0 3px 5px rgba(0,0,0,0.15);
332 | color: #2a567d;
333 | }
334 |
335 | &.disabled,
336 | &[disabled],
337 | fieldset[disabled] & {
338 | &,
339 | &:hover,
340 | &:focus,
341 | &:active,
342 | &.active {
343 | background-color: #e5e5e5;
344 | background-image: none;
345 | border-color: #c5c5c5;
346 | box-shadow: none;
347 | color: #2a567d;
348 | cursor: default;
349 | opacity: .5;
350 | text-shadow: 0 1px 0 rgba(255,255,255,0.9);
351 | }
352 | }
353 | }
354 |
355 |
356 | // Link buttons
357 | // -------------------------
358 |
359 | // Make a button look and behave like a link
360 | .btn-link {
361 | color: @link-color;
362 | font-weight: normal;
363 | cursor: pointer;
364 | border-radius: 0;
365 |
366 | &,
367 | &:active,
368 | &[disabled],
369 | fieldset[disabled] & {
370 | background-color: transparent;
371 | .box-shadow(none);
372 | }
373 | &,
374 | &:hover,
375 | &:focus,
376 | &:active {
377 | border-color: transparent;
378 | }
379 | &:hover,
380 | &:focus {
381 | color: @link-hover-color;
382 | text-decoration: underline;
383 | background-color: transparent;
384 | }
385 | &[disabled],
386 | fieldset[disabled] & {
387 | &:hover,
388 | &:focus {
389 | color: @btn-link-disabled-color;
390 | text-decoration: none;
391 | }
392 | }
393 | }
394 |
395 |
396 | // Button Sizes
397 | // --------------------------------------------------
398 |
399 | .btn {
400 | padding: 2px 12px;
401 | margin-bottom: 0; // For input.btn
402 | font-size: @font-size-base;
403 | font-weight: @btn-font-weight;
404 | // line-height: 0.8;
405 | height: 26px;
406 | }
407 | .btn-lg {
408 | // line-height: ensure even-numbered height of button next to large input
409 | padding: 7px 15px;
410 | font-size: @font-size-base;
411 | font-weight: @btn-font-weight;
412 | line-height: @line-height-base;
413 | height: 34px;
414 | }
415 | .btn-sm{
416 | padding: 3px 12px;
417 | font-size: 11px;
418 | font-weight: @btn-font-weight;
419 | // line-height: 0.8;
420 | height: 24px;
421 | }
422 | .btn-xs {
423 | // line-height: ensure proper height of button next to small input
424 | padding: 0px 12px;
425 | vertical-align: top;
426 | font-size: 11px;
427 | font-weight: @btn-font-weight;
428 | // line-height: 0.8;
429 | height: 18px;
430 | }
431 |
432 |
433 | // Block button
434 | // --------------------------------------------------
435 |
436 | .btn-block {
437 | display: block;
438 | width: 100%;
439 | padding-left: 0;
440 | padding-right: 0;
441 | }
442 |
443 | // Vertically space out multiple block buttons
444 | .btn-block + .btn-block {
445 | margin-top: 5px;
446 | }
447 |
448 | // Specificity overrides
449 | input[type="submit"],
450 | input[type="reset"],
451 | input[type="button"] {
452 | &.btn-block {
453 | width: 100%;
454 | }
455 | }
456 |
--------------------------------------------------------------------------------
/less/forms.less:
--------------------------------------------------------------------------------
1 | //
2 | // Forms
3 | // --------------------------------------------------
4 |
5 |
6 | // Normalize non-controls
7 | //
8 | // Restyle and baseline non-control form elements.
9 |
10 | fieldset {
11 | padding: 0;
12 | margin: 0;
13 | border: 0;
14 | // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,
15 | // so we reset that to ensure it behaves more like a standard block element.
16 | // See https://github.com/twbs/bootstrap/issues/12359.
17 | min-width: 0;
18 | }
19 |
20 | legend {
21 | display: block;
22 | width: 100%;
23 | padding: 0;
24 | margin-bottom: @line-height-computed;
25 | font-size: (@font-size-base * 1.5);
26 | line-height: inherit;
27 | color: @legend-color;
28 | border: 0;
29 | border-bottom: 1px solid @legend-border-color;
30 | }
31 |
32 | label {
33 | display: inline-block;
34 | margin-bottom: 5px;
35 | font-weight: bold;
36 | }
37 |
38 |
39 | // Normalize form controls
40 | //
41 | // While most of our form styles require extra classes, some basic normalization
42 | // is required to ensure optimum display with or without those classes to better
43 | // address browser inconsistencies.
44 |
45 | // Override content-box in Normalize (* isn't specific enough)
46 | input[type="search"] {
47 | .box-sizing(border-box);
48 | }
49 |
50 | // Position radios and checkboxes better
51 | input[type="radio"],
52 | input[type="checkbox"] {
53 | margin: 4px 0 0;
54 | margin-top: 1px \9; /* IE8-9 */
55 | line-height: normal;
56 | }
57 |
58 | // Set the height of file controls to match text inputs
59 | input[type="file"] {
60 | display: block;
61 | }
62 |
63 | // Make range inputs behave like textual form controls
64 | input[type="range"] {
65 | display: block;
66 | width: 100%;
67 | }
68 |
69 | // Make multiple select elements height not fixed
70 | select[multiple],
71 | select[size] {
72 | height: auto;
73 | }
74 |
75 | // Focus for file, radio, and checkbox
76 | input[type="file"]:focus,
77 | input[type="radio"]:focus,
78 | input[type="checkbox"]:focus {
79 | .tab-focus();
80 | }
81 |
82 | // Adjust output element
83 | output {
84 | display: block;
85 | padding-top: (@padding-base-vertical + 1);
86 | font-size: @font-size-base;
87 | line-height: @line-height-base;
88 | color: @input-color;
89 | }
90 |
91 |
92 | // Common form controls
93 | //
94 | // Shared size and type resets for form controls. Apply `.form-control` to any
95 | // of the following form controls:
96 | //
97 | // select
98 | // textarea
99 | // input[type="text"]
100 | // input[type="password"]
101 | // input[type="datetime"]
102 | // input[type="datetime-local"]
103 | // input[type="date"]
104 | // input[type="month"]
105 | // input[type="time"]
106 | // input[type="week"]
107 | // input[type="number"]
108 | // input[type="email"]
109 | // input[type="url"]
110 | // input[type="search"]
111 | // input[type="tel"]
112 | // input[type="color"]
113 |
114 | .form-control {
115 | display: block;
116 | width: 100%;
117 | height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
118 | padding: @padding-base-vertical @padding-base-horizontal;
119 | font-size: @font-size-base;
120 | line-height: @line-height-base;
121 | color: @input-color;
122 | background-color: @input-bg;
123 | background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
124 | border: 1px solid @input-border;
125 | border-radius: @input-border-radius;
126 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
127 | .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
128 |
129 | // Customize the `:focus` state to imitate native WebKit styles.
130 | .form-control-focus();
131 |
132 | // Placeholder
133 | .placeholder();
134 |
135 | // Disabled and read-only inputs
136 | //
137 | // HTML5 says that controls under a fieldset > legend:first-child won't be
138 | // disabled if the fieldset is disabled. Due to implementation difficulty, we
139 | // don't honor that edge case; we style them as disabled anyway.
140 | &[disabled],
141 | &[readonly],
142 | fieldset[disabled] & {
143 | cursor: not-allowed;
144 | background-color: @input-bg-disabled;
145 | opacity: 1; // iOS fix for unreadable disabled content
146 | }
147 |
148 | // Reset height for `textarea`s
149 | textarea& {
150 | height: auto;
151 | }
152 | }
153 |
154 |
155 | // Search inputs in iOS
156 | //
157 | // This overrides the extra rounded corners on search inputs in iOS so that our
158 | // `.form-control` class can properly style them. Note that this cannot simply
159 | // be added to `.form-control` as it's not specific enough. For details, see
160 | // https://github.com/twbs/bootstrap/issues/11586.
161 |
162 | input[type="search"] {
163 | -webkit-appearance: none;
164 | }
165 |
166 |
167 | // Special styles for iOS date input
168 | //
169 | // In Mobile Safari, date inputs require a pixel line-height that matches the
170 | // given height of the input.
171 |
172 | input[type="date"] {
173 | line-height: @input-height-base;
174 | }
175 |
176 |
177 | // Form groups
178 | //
179 | // Designed to help with the organization and spacing of vertical forms. For
180 | // horizontal forms, use the predefined grid classes.
181 |
182 | .form-group {
183 | margin-bottom: 15px;
184 | }
185 |
186 |
187 | // Checkboxes and radios
188 | //
189 | // Indent the labels to position radios/checkboxes as hanging controls.
190 |
191 | .radio,
192 | .checkbox {
193 | display: block;
194 | min-height: @line-height-computed; // clear the floating input if there is no label text
195 | margin-top: 10px;
196 | margin-bottom: 10px;
197 | padding-left: 20px;
198 | label {
199 | display: inline;
200 | font-weight: normal;
201 | cursor: pointer;
202 | }
203 | }
204 | .radio input[type="radio"],
205 | .radio-inline input[type="radio"],
206 | .checkbox input[type="checkbox"],
207 | .checkbox-inline input[type="checkbox"] {
208 | float: left;
209 | margin-left: -20px;
210 | }
211 | .radio + .radio,
212 | .checkbox + .checkbox {
213 | margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
214 | }
215 |
216 | // Radios and checkboxes on same line
217 | .radio-inline,
218 | .checkbox-inline {
219 | display: inline-block;
220 | padding-left: 20px;
221 | margin-bottom: 0;
222 | vertical-align: middle;
223 | font-weight: normal;
224 | cursor: pointer;
225 | }
226 | .radio-inline + .radio-inline,
227 | .checkbox-inline + .checkbox-inline {
228 | margin-top: 0;
229 | margin-left: 10px; // space out consecutive inline controls
230 | }
231 |
232 | // Apply same disabled cursor tweak as for inputs
233 | //
234 | // Note: Neither radios nor checkboxes can be readonly.
235 | input[type="radio"],
236 | input[type="checkbox"],
237 | .radio,
238 | .radio-inline,
239 | .checkbox,
240 | .checkbox-inline {
241 | &[disabled],
242 | fieldset[disabled] & {
243 | cursor: not-allowed;
244 | }
245 | }
246 |
247 |
248 | // Form control sizing
249 | //
250 | // Build on `.form-control` with modifier classes to decrease or increase the
251 | // height and font-size of form controls.
252 |
253 | .input-sm {
254 | .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
255 | }
256 |
257 | .input-lg {
258 | .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
259 | }
260 |
261 |
262 | // Form control feedback states
263 | //
264 | // Apply contextual and semantic states to individual form controls.
265 |
266 | .has-feedback {
267 | // Enable absolute positioning
268 | position: relative;
269 |
270 | // Ensure icons don't overlap text
271 | .form-control {
272 | padding-right: (@input-height-base * 1.25);
273 | }
274 |
275 | // Feedback icon (requires .glyphicon classes)
276 | .form-control-feedback {
277 | position: absolute;
278 | top: (@line-height-computed + 5); // Height of the `label` and its margin
279 | right: 0;
280 | display: block;
281 | width: @input-height-base;
282 | height: @input-height-base;
283 | line-height: @input-height-base;
284 | text-align: center;
285 | }
286 | }
287 |
288 | // Feedback states
289 | .has-success {
290 | .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
291 | }
292 | .has-warning {
293 | .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
294 | }
295 | .has-error {
296 | .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
297 | }
298 |
299 |
300 | // Static form control text
301 | //
302 | // Apply class to a `p` element to make any string of text align with labels in
303 | // a horizontal form layout.
304 |
305 | .form-control-static {
306 | margin-bottom: 0; // Remove default margin from `p`
307 | }
308 |
309 |
310 | // Help text
311 | //
312 | // Apply to any element you wish to create light text for placement immediately
313 | // below a form control. Use for general help, formatting, or instructional text.
314 |
315 | .help-block {
316 | display: block; // account for any element using help-block
317 | margin-top: 5px;
318 | margin-bottom: 10px;
319 | color: lighten(@text-color, 25%); // lighten the text some for contrast
320 | }
321 |
322 |
323 |
324 | // Inline forms
325 | //
326 | // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
327 | // forms begin stacked on extra small (mobile) devices and then go inline when
328 | // viewports reach <768px.
329 | //
330 | // Requires wrapping inputs and labels with `.form-group` for proper display of
331 | // default HTML form controls and our custom form controls (e.g., input groups).
332 | //
333 | // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
334 |
335 | .form-inline {
336 |
337 | // Kick in the inline
338 | @media (min-width: @screen-sm-min) {
339 | // Inline-block all the things for "inline"
340 | .form-group {
341 | display: inline-block;
342 | margin-bottom: 0;
343 | vertical-align: middle;
344 | }
345 |
346 | // In navbar-form, allow folks to *not* use `.form-group`
347 | .form-control {
348 | display: inline-block;
349 | width: auto; // Prevent labels from stacking above inputs in `.form-group`
350 | vertical-align: middle;
351 | }
352 | // Input groups need that 100% width though
353 | .input-group > .form-control {
354 | width: 100%;
355 | }
356 |
357 | .control-label {
358 | margin-bottom: 0;
359 | vertical-align: middle;
360 | }
361 |
362 | // Remove default margin on radios/checkboxes that were used for stacking, and
363 | // then undo the floating of radios and checkboxes to match (which also avoids
364 | // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
365 | .radio,
366 | .checkbox {
367 | display: inline-block;
368 | margin-top: 0;
369 | margin-bottom: 0;
370 | padding-left: 0;
371 | vertical-align: middle;
372 | }
373 | .radio input[type="radio"],
374 | .checkbox input[type="checkbox"] {
375 | float: none;
376 | margin-left: 0;
377 | }
378 |
379 | // Validation states
380 | //
381 | // Reposition the icon because it's now within a grid column and columns have
382 | // `position: relative;` on them. Also accounts for the grid gutter padding.
383 | .has-feedback .form-control-feedback {
384 | top: 0;
385 | }
386 | }
387 | }
388 |
389 |
390 | // Horizontal forms
391 | //
392 | // Horizontal forms are built on grid classes and allow you to create forms with
393 | // labels on the left and inputs on the right.
394 |
395 | .form-horizontal {
396 |
397 | // Consistent vertical alignment of labels, radios, and checkboxes
398 | .control-label,
399 | .radio,
400 | .checkbox,
401 | .radio-inline,
402 | .checkbox-inline {
403 | margin-top: 0;
404 | margin-bottom: 0;
405 | padding-top: (@padding-base-vertical + 1); // Default padding plus a border
406 | }
407 | // Account for padding we're adding to ensure the alignment and of help text
408 | // and other content below items
409 | .radio,
410 | .checkbox {
411 | min-height: (@line-height-computed + (@padding-base-vertical + 1));
412 | }
413 |
414 | // Make form groups behave like rows
415 | .form-group {
416 | .make-row();
417 | }
418 |
419 | .form-control-static {
420 | padding-top: (@padding-base-vertical + 1);
421 | }
422 |
423 | // Only right align form labels here when the columns stop stacking
424 | @media (min-width: @screen-sm-min) {
425 | .control-label {
426 | text-align: right;
427 | }
428 | }
429 |
430 | // Validation states
431 | //
432 | // Reposition the icon because it's now within a grid column and columns have
433 | // `position: relative;` on them. Also accounts for the grid gutter padding.
434 | .has-feedback .form-control-feedback {
435 | top: 0;
436 | right: (@grid-gutter-width / 2);
437 | }
438 | }
439 |
--------------------------------------------------------------------------------
/examples/docs/js/docs.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | Holder - 2.3.1 - client side image placeholders
4 | (c) 2012-2014 Ivan Malopinsky / http://imsky.co
5 |
6 | Provided under the MIT License.
7 | Commercial use requires attribution.
8 |
9 | */
10 | var Holder=Holder||{};!function(a,b){function c(a,b,c){b=parseInt(b,10),a=parseInt(a,10);var d=Math.max(b,a),e=Math.min(b,a),f=1/12,g=Math.min(.75*e,.75*d*f);return{height:Math.round(Math.max(c.size,g))}}function d(a){var b=[];for(p in a)a.hasOwnProperty(p)&&b.push(p+":"+a[p]);return b.join(";")}function e(a){var b=a.ctx,d=a.dimensions,e=a.template,f=a.ratio,g=a.holder,h="literal"==g.textmode,i="exact"==g.textmode,j=c(d.width,d.height,e),k=j.height,l=d.width*f,m=d.height*f,n=e.font?e.font:"Arial,Helvetica,sans-serif";canvas.width=l,canvas.height=m,b.textAlign="center",b.textBaseline="middle",b.fillStyle=e.background,b.fillRect(0,0,l,m),b.fillStyle=e.foreground,b.font="bold "+k+"px "+n;var o=e.text?e.text:Math.floor(d.width)+"x"+Math.floor(d.height);if(h){var d=g.dimensions;o=d.width+"x"+d.height}else if(i&&g.exact_dimensions){var d=g.exact_dimensions;o=Math.floor(d.width)+"x"+Math.floor(d.height)}var p=b.measureText(o).width;return p/l>=.75&&(k=Math.floor(.75*k*(l/p))),b.font="bold "+k*f+"px "+n,b.fillText(o,l/2,m/2,l),canvas.toDataURL("image/png")}function f(a){var b=a.dimensions,d=a.template,e=a.holder,f="literal"==e.textmode,g="exact"==e.textmode,h=c(b.width,b.height,d),i=h.height,j=b.width,k=b.height,l=d.font?d.font:"Arial,Helvetica,sans-serif",m=d.text?d.text:Math.floor(b.width)+"x"+Math.floor(b.height);if(f){var b=e.dimensions;m=b.width+"x"+b.height}else if(g&&e.exact_dimensions){var b=e.exact_dimensions;m=Math.floor(b.width)+"x"+Math.floor(b.height)}var n=z({text:m,width:j,height:k,text_height:i,font:l,template:d});return"data:image/svg+xml;base64,"+btoa(n)}function g(a){return r.use_canvas&&!r.use_svg?e(a):f(a)}function h(a,b,c,d){var e=c.dimensions,f=c.theme,h=c.text?decodeURIComponent(c.text):c.text,i=e.width+"x"+e.height;f=h?o(f,{text:h}):f,f=c.font?o(f,{font:c.font}):f,b.setAttribute("data-src",d),c.theme=f,b.holder_data=c,"image"==a?(b.setAttribute("alt",h?h:f.text?f.text+" ["+i+"]":i),(r.use_fallback||!c.auto)&&(b.style.width=e.width+"px",b.style.height=e.height+"px"),r.use_fallback?b.style.backgroundColor=f.background:(b.setAttribute("src",g({ctx:w,dimensions:e,template:f,ratio:x,holder:c})),c.textmode&&"exact"==c.textmode&&(v.push(b),k(b)))):"background"==a?r.use_fallback||(b.style.backgroundImage="url("+g({ctx:w,dimensions:e,template:f,ratio:x,holder:c})+")",b.style.backgroundSize=e.width+"px "+e.height+"px"):"fluid"==a&&(b.setAttribute("alt",h?h:f.text?f.text+" ["+i+"]":i),"%"==e.height.slice(-1)?b.style.height=e.height:null!=c.auto&&c.auto||(b.style.height=e.height+"px"),"%"==e.width.slice(-1)?b.style.width=e.width:null!=c.auto&&c.auto||(b.style.width=e.width+"px"),("inline"==b.style.display||""===b.style.display||"none"==b.style.display)&&(b.style.display="block"),j(b),r.use_fallback?b.style.backgroundColor=f.background:(v.push(b),k(b)))}function i(a,b){var c={height:a.clientHeight,width:a.clientWidth};return c.height||c.width?(a.removeAttribute("data-holder-invisible"),c):(a.setAttribute("data-holder-invisible",!0),void b.call(this,a))}function j(b){if(b.holder_data){var c=i(b,a.invisible_error_fn(j));if(c){var d=b.holder_data;d.initial_dimensions=c,d.fluid_data={fluid_height:"%"==d.dimensions.height.slice(-1),fluid_width:"%"==d.dimensions.width.slice(-1),mode:null},d.fluid_data.fluid_width&&!d.fluid_data.fluid_height?(d.fluid_data.mode="width",d.fluid_data.ratio=d.initial_dimensions.width/parseFloat(d.dimensions.height)):!d.fluid_data.fluid_width&&d.fluid_data.fluid_height&&(d.fluid_data.mode="height",d.fluid_data.ratio=parseFloat(d.dimensions.width)/d.initial_dimensions.height)}}}function k(b){var c;c=null==b.nodeType?v:[b];for(var d in c)if(c.hasOwnProperty(d)){var e=c[d];if(e.holder_data){var f=e.holder_data,h=i(e,a.invisible_error_fn(k));if(h){if(f.fluid){if(f.auto)switch(f.fluid_data.mode){case"width":h.height=h.width/f.fluid_data.ratio;break;case"height":h.width=h.height*f.fluid_data.ratio}e.setAttribute("src",g({ctx:w,dimensions:h,template:f.theme,ratio:x,holder:f}))}f.textmode&&"exact"==f.textmode&&(f.exact_dimensions=h,e.setAttribute("src",g({ctx:w,dimensions:f.dimensions,template:f.theme,ratio:x,holder:f})))}}}}function l(b,c){for(var d={theme:o(y.themes.gray,{})},e=!1,f=b.length,g=0;f>g;g++){var h=b[g];a.flags.dimensions.match(h)?(e=!0,d.dimensions=a.flags.dimensions.output(h)):a.flags.fluid.match(h)?(e=!0,d.dimensions=a.flags.fluid.output(h),d.fluid=!0):a.flags.textmode.match(h)?d.textmode=a.flags.textmode.output(h):a.flags.colors.match(h)?d.theme=a.flags.colors.output(h):c.themes[h]?c.themes.hasOwnProperty(h)&&(d.theme=o(c.themes[h],{})):a.flags.font.match(h)?d.font=a.flags.font.output(h):a.flags.auto.match(h)?d.auto=!0:a.flags.text.match(h)&&(d.text=a.flags.text.output(h))}return e?d:!1}function m(a,b){var c="complete",d="readystatechange",e=!1,f=e,g=!0,h=a.document,i=h.documentElement,j=h.addEventListener?"addEventListener":"attachEvent",k=h.addEventListener?"removeEventListener":"detachEvent",l=h.addEventListener?"":"on",m=function(g){(g.type!=d||h.readyState==c)&&(("load"==g.type?a:h)[k](l+g.type,m,e),!f&&(f=!0)&&b.call(a,null))},n=function(){try{i.doScroll("left")}catch(a){return void setTimeout(n,50)}m("poll")};if(h.readyState==c)b.call(a,"lazy");else{if(h.createEventObject&&i.doScroll){try{g=!a.frameElement}catch(o){}g&&n()}h[j](l+"DOMContentLoaded",m,e),h[j](l+d,m,e),a[j](l+"load",m,e)}}function n(a,b){var a=a.match(/^(\W)?(.*)/),b=b||document,c=b["getElement"+(a[1]?"#"==a[1]?"ById":"sByClassName":"sByTagName")],d=c.call(b,a[2]),e=[];return null!==d&&(e=d.length||0===d.length?d:[d]),e}function o(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d]);return c}var q={use_svg:!1,use_canvas:!1,use_fallback:!1},r={},s=!1;canvas=document.createElement("canvas");var t=1,u=1,v=[];if(canvas.getContext)if(canvas.toDataURL("image/png").indexOf("data:image/png")<0)q.use_fallback=!0;else var w=canvas.getContext("2d");else q.use_fallback=!0;document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect&&(q.use_svg=!0,q.use_canvas=!1),q.use_fallback||(t=window.devicePixelRatio||1,u=w.webkitBackingStorePixelRatio||w.mozBackingStorePixelRatio||w.msBackingStorePixelRatio||w.oBackingStorePixelRatio||w.backingStorePixelRatio||1);var x=t/u,y={domain:"holder.js",images:"img",bgnodes:".holderjs",themes:{gray:{background:"#eee",foreground:"#aaa",size:12},social:{background:"#3a5a97",foreground:"#fff",size:12},industrial:{background:"#434A52",foreground:"#C2F200",size:12},sky:{background:"#0D8FDB",foreground:"#fff",size:12},vine:{background:"#39DBAC",foreground:"#1E292C",size:12},lava:{background:"#F8591A",foreground:"#1C2846",size:12}},stylesheet:""};a.flags={dimensions:{regex:/^(\d+)x(\d+)$/,output:function(a){var b=this.regex.exec(a);return{width:+b[1],height:+b[2]}}},fluid:{regex:/^([0-9%]+)x([0-9%]+)$/,output:function(a){var b=this.regex.exec(a);return{width:b[1],height:b[2]}}},colors:{regex:/#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,output:function(a){var b=this.regex.exec(a);return{size:y.themes.gray.size,foreground:"#"+b[2],background:"#"+b[1]}}},text:{regex:/text\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},font:{regex:/font\:(.*)/,output:function(a){return this.regex.exec(a)[1]}},auto:{regex:/^auto$/},textmode:{regex:/textmode\:(.*)/,output:function(a){return this.regex.exec(a)[1]}}};var z=function(){if(window.XMLSerializer){var a=new XMLSerializer,b="http://www.w3.org/2000/svg",c=document.createElementNS(b,"svg");c.webkitMatchesSelector&&c.setAttribute("xmlns","http://www.w3.org/2000/svg");var e=document.createElementNS(b,"rect"),f=document.createElementNS(b,"text"),g=document.createTextNode(null);return f.setAttribute("text-anchor","middle"),f.appendChild(g),c.appendChild(e),c.appendChild(f),function(b){return c.setAttribute("width",b.width),c.setAttribute("height",b.height),e.setAttribute("width",b.width),e.setAttribute("height",b.height),e.setAttribute("fill",b.template.background),f.setAttribute("x",b.width/2),f.setAttribute("y",b.height/2),g.nodeValue=b.text,f.setAttribute("style",d({fill:b.template.foreground,"font-weight":"bold","font-size":b.text_height+"px","font-family":b.font,"dominant-baseline":"central"})),a.serializeToString(c)}}}();for(var A in a.flags)a.flags.hasOwnProperty(A)&&(a.flags[A].match=function(a){return a.match(this.regex)});a.invisible_error_fn=function(){return function(a){if(a.hasAttribute("data-holder-invisible"))throw new Error("Holder: invisible placeholder")}},a.add_theme=function(b,c){return null!=b&&null!=c&&(y.themes[b]=c),a},a.add_image=function(b,c){var d=n(c);if(d.length)for(var e=0,f=d.length;f>e;e++){var g=document.createElement("img");g.setAttribute("data-src",b),d[e].appendChild(g)}return a},a.run=function(b){r=o({},q),s=!0;var c=o(y,b),d=[],e=[],f=[];for(null!=c.use_canvas&&c.use_canvas&&(r.use_canvas=!0,r.use_svg=!1),"string"==typeof c.images?e=n(c.images):window.NodeList&&c.images instanceof window.NodeList?e=c.images:window.Node&&c.images instanceof window.Node?e=[c.images]:window.HTMLCollection&&c.images instanceof window.HTMLCollection&&(e=c.images),"string"==typeof c.bgnodes?f=n(c.bgnodes):window.NodeList&&c.elements instanceof window.NodeList?f=c.bgnodes:window.Node&&c.bgnodes instanceof window.Node&&(f=[c.bgnodes]),k=0,j=e.length;j>k;k++)d.push(e[k]);var g=document.getElementById("holderjs-style");g||(g=document.createElement("style"),g.setAttribute("id","holderjs-style"),g.type="text/css",document.getElementsByTagName("head")[0].appendChild(g)),c.nocss||(g.styleSheet?g.styleSheet.cssText+=c.stylesheet:g.appendChild(document.createTextNode(c.stylesheet)));for(var i=new RegExp(c.domain+'/(.*?)"?\\)'),j=f.length,k=0;j>k;k++){var m=window.getComputedStyle(f[k],null).getPropertyValue("background-image"),p=m.match(i),t=f[k].getAttribute("data-background-src");if(p){var u=l(p[1].split("/"),c);u&&h("background",f[k],u,m)}else if(null!=t){var u=l(t.substr(t.lastIndexOf(c.domain)+c.domain.length+1).split("/"),c);u&&h("background",f[k],u,m)}}for(j=d.length,k=0;j>k;k++){var v,w;w=v=m=null;try{w=d[k].getAttribute("src"),attr_datasrc=d[k].getAttribute("data-src")}catch(x){}if(null==attr_datasrc&&w&&w.indexOf(c.domain)>=0?m=w:attr_datasrc&&attr_datasrc.indexOf(c.domain)>=0&&(m=attr_datasrc),m){var u=l(m.substr(m.lastIndexOf(c.domain)+c.domain.length+1).split("/"),c);u&&(u.fluid?h("fluid",d[k],u,m):h("image",d[k],u,m))}}return a},m(b,function(){window.addEventListener?(window.addEventListener("resize",k,!1),window.addEventListener("orientationchange",k,!1)):window.attachEvent("onresize",k),s||a.run({})}),"function"==typeof define&&define.amd&&define([],function(){return a}),function(){function a(a){this.message=a}var b="undefined"!=typeof exports?exports:this,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.prototype=Error(),a.prototype.name="InvalidCharacterError",b.btoa||(b.btoa=function(b){for(var d,e,f=0,g=c,h="";b.charAt(0|f)||(g="=",f%1);h+=g.charAt(63&d>>8-8*(f%1))){if(e=b.charCodeAt(f+=.75),e>255)throw new a("'btoa' failed");d=d<<8|e}return h}),b.atob||(b.atob=function(b){if(b=b.replace(/=+$/,""),1==b.length%4)throw new a("'atob' failed");for(var d,e,f=0,g=0,h="";e=b.charAt(g++);~e&&(d=f%4?64*d+e:e,f++%4)?h+=String.fromCharCode(255&d>>(6&-2*f)):0)e=c.indexOf(e);return h})}(),document.getElementsByClassName||(document.getElementsByClassName=function(a){var b,c,d,e=document,f=[];if(e.querySelectorAll)return e.querySelectorAll("."+a);if(e.evaluate)for(c=".//*[contains(concat(' ', @class, ' '), ' "+a+" ')]",b=e.evaluate(c,e,null,0,null);d=b.iterateNext();)f.push(d);else for(b=e.getElementsByTagName("*"),c=new RegExp("(^|\\s)"+a+"(\\s|$)"),d=0;d`, ``, and ``.
45 | @font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
46 | @font-family-base: @font-family-sans-serif;
47 |
48 | @font-size-base: 13px;
49 | @font-size-large: ceil((@font-size-base * 1.25)); // ~18px
50 | @font-size-small: ceil((@font-size-base * 0.85)); // ~12px
51 |
52 | @font-size-h1: floor((@font-size-base * 2.6)); // ~36px
53 | @font-size-h2: floor((@font-size-base * 2.15)); // ~30px
54 | @font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
55 | @font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
56 | @font-size-h5: @font-size-base;
57 | @font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
58 |
59 | //** Unit-less `line-height` for use in components like buttons.
60 | @line-height-base: 1.461538461538462; // 19/13
61 | //** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
62 | @line-height-computed: floor(@font-size-base * @line-height-base); // ~20px
63 |
64 | //** By default, this inherits from the ``.
65 | @headings-font-family: inherit;
66 | @headings-font-weight: 500;
67 | @headings-line-height: 1.1;
68 | @headings-color: inherit;
69 |
70 |
71 | //-- Iconography
72 | //
73 | //## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.
74 |
75 | @icon-font-path: "../fonts/";
76 | @icon-font-name: "glyphicons-halflings-regular";
77 | @icon-font-svg-id: "glyphicons_halflingsregular";
78 |
79 | //== Components
80 | //
81 | //## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
82 |
83 | @padding-base-vertical: 3px;
84 | @padding-base-horizontal: 8px;
85 |
86 | @padding-large-vertical: 4px;
87 | @padding-large-horizontal: 10px;
88 |
89 | @padding-small-vertical: 2px;
90 | @padding-small-horizontal: 6px;
91 |
92 | @padding-xs-vertical: 1px;
93 | @padding-xs-horizontal: 5px;
94 |
95 | @line-height-large: 1.33;
96 | @line-height-small: 1.5;
97 |
98 | @border-radius-base: 3px;
99 | @border-radius-large: 4px;
100 | @border-radius-small: 2px;
101 |
102 | //** Global color for active items (e.g., navs or dropdowns).
103 | @component-active-color: #fff;
104 | //** Global background color for active items (e.g., navs or dropdowns).
105 | @component-active-bg: @brand-primary;
106 |
107 | //** Width of the `border` for generating carets that indicator dropdowns.
108 | @caret-width-base: 4px;
109 | //** Carets increase slightly in size for larger components.
110 | @caret-width-large: 5px;
111 |
112 |
113 | //== Tables
114 | //
115 | //## Customizes the `.table` component with basic values, each used across all table variations.
116 |
117 | //** Padding for ``s and ` `s.
118 | @table-cell-padding: 5px;
119 | //** Padding for cells in `.table-condensed`.
120 | @table-condensed-cell-padding: 3px;
121 |
122 | //** Default background color used for all tables.
123 | @table-bg: transparent;
124 | //** Background color used for `.table-striped`.
125 | @table-bg-accent: #f9f9f9;
126 | //** Background color used for `.table-hover`.
127 | @table-bg-hover: #f5f5f5;
128 | @table-bg-active: @table-bg-hover;
129 |
130 | //** Border color for table and cell borders.
131 | @table-border-color: #ddd;
132 |
133 |
134 | //== Buttons
135 | //
136 | //## For each of Bootstrap's buttons, define text, background and border color.
137 |
138 | @btn-font-weight: bold;
139 |
140 | @btn-default-color: #333;
141 | @btn-default-bg: #fff;
142 | @btn-default-border: #ccc;
143 |
144 | @btn-primary-color: #fff;
145 | @btn-primary-bg: @brand-primary;
146 | @btn-primary-border: darken(@btn-primary-bg, 5%);
147 |
148 | @btn-success-color: #fff;
149 | @btn-success-bg: @brand-success;
150 | @btn-success-border: darken(@btn-success-bg, 5%);
151 |
152 | @btn-info-color: #fff;
153 | @btn-info-bg: @brand-info;
154 | @btn-info-border: darken(@btn-info-bg, 5%);
155 |
156 | @btn-warning-color: #fff;
157 | @btn-warning-bg: @brand-warning;
158 | @btn-warning-border: darken(@btn-warning-bg, 5%);
159 |
160 | @btn-danger-color: #fff;
161 | @btn-danger-bg: @brand-danger;
162 | @btn-danger-border: darken(@btn-danger-bg, 5%);
163 |
164 | @btn-link-disabled-color: @gray-light;
165 |
166 |
167 | //== Forms
168 | //
169 | //##
170 |
171 | //** `` background color
172 | @input-bg: #fff;
173 | //** `` background color
174 | @input-bg-disabled: @gray-lighter;
175 |
176 | //** Text color for ``s
177 | @input-color: @gray;
178 | //** `` border color
179 | @input-border: #ccc;
180 | //** `` border radius
181 | @input-border-radius: @border-radius-base;
182 | //** Border color for inputs on focus
183 | @input-border-focus: #66afe9;
184 |
185 | //** Placeholder text color
186 | @input-color-placeholder: @gray-light;
187 |
188 | //@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) - 0);
189 | //@input-height-large: (floor(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) - 1);
190 | //@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) - 0);
191 |
192 | //** Default `.form-control` height
193 | //@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
194 | //** Large `.form-control` height
195 | //@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
196 | //** Small `.form-control` height
197 | //@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
198 |
199 | //** Default `.form-control` height
200 | @input-height-base: 26px;
201 | //** Large `.form-control` height
202 | @input-height-large: 34px;
203 | //** Small `.form-control` height
204 | @input-height-small: 24px;
205 |
206 | @legend-color: @gray-dark;
207 | @legend-border-color: #e5e5e5;
208 |
209 | //** Background color for textual input addons
210 | @input-group-addon-bg: @gray-lighter;
211 | //** Border color for textual input addons
212 | @input-group-addon-border-color: @input-border;
213 |
214 |
215 | //== Dropdowns
216 | //
217 | //## Dropdown menu container and contents.
218 |
219 | //** Background for the dropdown menu.
220 | @dropdown-bg: #fff;
221 | //** Dropdown menu `border-color`.
222 | @dropdown-border: rgba(0,0,0,.15);
223 | //** Dropdown menu `border-color` **for IE8**.
224 | @dropdown-fallback-border: #ccc;
225 | //** Divider color for between dropdown items.
226 | @dropdown-divider-bg: #e5e5e5;
227 |
228 | //** Dropdown link text color.
229 | @dropdown-link-color: @gray-dark;
230 | //** Hover color for dropdown links.
231 | @dropdown-link-hover-color: darken(@gray-dark, 5%);
232 | //** Hover background for dropdown links.
233 | @dropdown-link-hover-bg: #f5f5f5;
234 |
235 | //** Active dropdown menu item text color.
236 | @dropdown-link-active-color: @component-active-color;
237 | //** Active dropdown menu item background color.
238 | @dropdown-link-active-bg: @component-active-bg;
239 |
240 | //** Disabled dropdown menu item background color.
241 | @dropdown-link-disabled-color: @gray-light;
242 |
243 | //** Text color for headers within dropdown menus.
244 | @dropdown-header-color: @gray-light;
245 |
246 | // Note: Deprecated @dropdown-caret-color as of v3.1.0
247 | @dropdown-caret-color: #000;
248 |
249 |
250 | //-- Z-index master list
251 | //
252 | // Warning: Avoid customizing these values. They're used for a bird's eye view
253 | // of components dependent on the z-axis and are designed to all work together.
254 | //
255 | // Note: These variables are not generated into the Customizer.
256 |
257 | @zindex-navbar: 1000;
258 | @zindex-dropdown: 1000;
259 | @zindex-popover: 1010;
260 | @zindex-tooltip: 1030;
261 | @zindex-navbar-fixed: 1030;
262 | @zindex-modal-background: 1040;
263 | @zindex-modal: 1050;
264 |
265 |
266 | //== Media queries breakpoints
267 | //
268 | //## Define the breakpoints at which your layout will change, adapting to different screen sizes.
269 |
270 | // Extra small screen / phone
271 | // Note: Deprecated @screen-xs and @screen-phone as of v3.0.1
272 | @screen-xs: 480px;
273 | @screen-xs-min: @screen-xs;
274 | @screen-phone: @screen-xs-min;
275 |
276 | // Small screen / tablet
277 | // Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1
278 | @screen-sm: 768px;
279 | @screen-sm-min: @screen-sm;
280 | @screen-tablet: @screen-sm-min;
281 |
282 | // Medium screen / desktop
283 | // Note: Deprecated @screen-md and @screen-desktop as of v3.0.1
284 | @screen-md: 992px;
285 | @screen-md-min: @screen-md;
286 | @screen-desktop: @screen-md-min;
287 |
288 | // Large screen / wide desktop
289 | // Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1
290 | @screen-lg: 1200px;
291 | @screen-lg-min: @screen-lg;
292 | @screen-lg-desktop: @screen-lg-min;
293 |
294 | // So media queries don't overlap when required, provide a maximum
295 | @screen-xs-max: (@screen-sm-min - 1);
296 | @screen-sm-max: (@screen-md-min - 1);
297 | @screen-md-max: (@screen-lg-min - 1);
298 |
299 |
300 | //== Grid system
301 | //
302 | //## Define your custom responsive grid.
303 |
304 | //** Number of columns in the grid.
305 | @grid-columns: 12;
306 | //** Padding between columns. Gets divided in half for the left and right.
307 | @grid-gutter-width: 30px;
308 | // Navbar collapse
309 | //** Point at which the navbar becomes uncollapsed.
310 | @grid-float-breakpoint: @screen-sm-min;
311 | //** Point at which the navbar begins collapsing.
312 | @grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
313 |
314 |
315 | //== Container sizes
316 | //
317 | //## Define the maximum width of `.container` for different screen sizes.
318 |
319 | // Small screen / tablet
320 | @container-tablet: ((720px + @grid-gutter-width));
321 | //** For `@screen-sm-min` and up.
322 | @container-sm: @container-tablet;
323 |
324 | // Medium screen / desktop
325 | @container-desktop: ((940px + @grid-gutter-width));
326 | //** For `@screen-md-min` and up.
327 | @container-md: @container-desktop;
328 |
329 | // Large screen / wide desktop
330 | @container-large-desktop: ((1140px + @grid-gutter-width));
331 | //** For `@screen-lg-min` and up.
332 | @container-lg: @container-large-desktop;
333 |
334 |
335 | //== Navbar
336 | //
337 | //##
338 |
339 | // Basics of a navbar
340 | @navbar-height: 50px;
341 | @navbar-margin-bottom: @line-height-computed;
342 | @navbar-border-radius: @border-radius-base;
343 | @navbar-padding-horizontal: floor((@grid-gutter-width / 2));
344 | @navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
345 | @navbar-collapse-max-height: 340px;
346 |
347 | @navbar-default-color: #777;
348 | @navbar-default-bg: #f8f8f8;
349 | @navbar-default-border: darken(@navbar-default-bg, 6.5%);
350 |
351 | // Navbar links
352 | @navbar-default-link-color: #777;
353 | @navbar-default-link-hover-color: #333;
354 | @navbar-default-link-hover-bg: transparent;
355 | @navbar-default-link-active-color: #555;
356 | @navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
357 | @navbar-default-link-disabled-color: #ccc;
358 | @navbar-default-link-disabled-bg: transparent;
359 |
360 | // Navbar brand label
361 | @navbar-default-brand-color: @navbar-default-link-color;
362 | @navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
363 | @navbar-default-brand-hover-bg: transparent;
364 |
365 | // Navbar toggle
366 | @navbar-default-toggle-hover-bg: #ddd;
367 | @navbar-default-toggle-icon-bar-bg: #888;
368 | @navbar-default-toggle-border-color: #ddd;
369 |
370 |
371 | // Inverted navbar
372 | // Reset inverted navbar basics
373 | @navbar-inverse-color: @gray-light;
374 | @navbar-inverse-bg: #222;
375 | @navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
376 |
377 | // Inverted navbar links
378 | @navbar-inverse-link-color: @gray-light;
379 | @navbar-inverse-link-hover-color: #fff;
380 | @navbar-inverse-link-hover-bg: transparent;
381 | @navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
382 | @navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
383 | @navbar-inverse-link-disabled-color: #444;
384 | @navbar-inverse-link-disabled-bg: transparent;
385 |
386 | // Inverted navbar brand label
387 | @navbar-inverse-brand-color: @navbar-inverse-link-color;
388 | @navbar-inverse-brand-hover-color: #fff;
389 | @navbar-inverse-brand-hover-bg: transparent;
390 |
391 | // Inverted navbar toggle
392 | @navbar-inverse-toggle-hover-bg: #333;
393 | @navbar-inverse-toggle-icon-bar-bg: #fff;
394 | @navbar-inverse-toggle-border-color: #333;
395 |
396 |
397 | //== Navs
398 | //
399 | //##
400 |
401 | //=== Shared nav styles
402 | @nav-link-padding: 10px 15px;
403 | @nav-link-hover-bg: @gray-lighter;
404 |
405 | @nav-disabled-link-color: @gray-light;
406 | @nav-disabled-link-hover-color: @gray-light;
407 |
408 | @nav-open-link-hover-color: #fff;
409 |
410 | //== Tabs
411 | @nav-tabs-border-color: #ddd;
412 |
413 | @nav-tabs-link-hover-border-color: @gray-lighter;
414 |
415 | @nav-tabs-active-link-hover-bg: @body-bg;
416 | @nav-tabs-active-link-hover-color: @gray;
417 | @nav-tabs-active-link-hover-border-color: #ddd;
418 |
419 | @nav-tabs-justified-link-border-color: #ddd;
420 | @nav-tabs-justified-active-link-border-color: @body-bg;
421 |
422 | //== Pills
423 | @nav-pills-border-radius: @border-radius-base;
424 | @nav-pills-active-link-hover-bg: @component-active-bg;
425 | @nav-pills-active-link-hover-color: @component-active-color;
426 |
427 |
428 | //== Pagination
429 | //
430 | //##
431 |
432 | @pagination-color: @link-color;
433 | @pagination-bg: #fff;
434 | @pagination-border: #ddd;
435 |
436 | @pagination-hover-color: @link-hover-color;
437 | @pagination-hover-bg: @gray-lighter;
438 | @pagination-hover-border: #ddd;
439 |
440 | @pagination-active-color: #fff;
441 | @pagination-active-bg: @brand-primary;
442 | @pagination-active-border: @brand-primary;
443 |
444 | @pagination-disabled-color: @gray-light;
445 | @pagination-disabled-bg: #fff;
446 | @pagination-disabled-border: #ddd;
447 |
448 |
449 | //== Pager
450 | //
451 | //##
452 |
453 | @pager-bg: @pagination-bg;
454 | @pager-border: @pagination-border;
455 | @pager-border-radius: 15px;
456 |
457 | @pager-hover-bg: @pagination-hover-bg;
458 |
459 | @pager-active-bg: @pagination-active-bg;
460 | @pager-active-color: @pagination-active-color;
461 |
462 | @pager-disabled-color: @pagination-disabled-color;
463 |
464 |
465 | //== Jumbotron
466 | //
467 | //##
468 |
469 | @jumbotron-padding: 30px;
470 | @jumbotron-color: inherit;
471 | @jumbotron-bg: @gray-lighter;
472 | @jumbotron-heading-color: inherit;
473 | @jumbotron-font-size: ceil((@font-size-base * 1.5));
474 |
475 |
476 | //== Form states and alerts
477 | //
478 | //## Define colors for form feedback states and, by default, alerts.
479 |
480 | @state-success-text: #468847;
481 | @state-success-text-bright: #02a100;
482 | @state-success-bg: #dff0d8;
483 | @state-success-border: darken(spin(@state-success-bg, -10), 5%);
484 |
485 | @state-info-text: #3a87ad;
486 | @state-info-text-bright: #3a87ad;
487 | @state-info-bg: #d9edf7;
488 | @state-info-border: darken(spin(@state-info-bg, -10), 7%);
489 |
490 | @state-warning-text: #c09853;
491 | @state-warning-text-bright: #cc7600;
492 | @state-warning-bg: #fcf8e3;
493 | @state-warning-border: darken(spin(@state-warning-bg, -10), 3%);
494 |
495 | @state-danger-text: #b94a48;
496 | @state-danger-text-bright: #da3727;
497 | @state-danger-bg: #f2dede;
498 | @state-danger-border: darken(spin(@state-danger-bg, -10), 3%);
499 |
500 |
501 | //== Tooltips
502 | //
503 | //##
504 |
505 | //** Tooltip max width
506 | @tooltip-max-width: 200px;
507 | //** Tooltip text color
508 | @tooltip-color: #fff;
509 | //** Tooltip background color
510 | @tooltip-bg: #000;
511 | @tooltip-opacity: .9;
512 |
513 | //** Tooltip arrow width
514 | @tooltip-arrow-width: 5px;
515 | //** Tooltip arrow color
516 | @tooltip-arrow-color: @tooltip-bg;
517 |
518 |
519 | //== Popovers
520 | //
521 | //##
522 |
523 | //** Popover body background color
524 | @popover-bg: #fff;
525 | //** Popover maximum width
526 | @popover-max-width: 276px;
527 | //** Popover border color
528 | @popover-border-color: rgba(0,0,0,.2);
529 | //** Popover fallback border color
530 | @popover-fallback-border-color: #ccc;
531 |
532 | //** Popover title background color
533 | @popover-title-bg: darken(@popover-bg, 3%);
534 |
535 | //** Popover arrow width
536 | @popover-arrow-width: 10px;
537 | //** Popover arrow color
538 | @popover-arrow-color: #fff;
539 |
540 | //** Popover outer arrow width
541 | @popover-arrow-outer-width: (@popover-arrow-width + 1);
542 | //** Popover outer arrow color
543 | @popover-arrow-outer-color: fadein(@popover-border-color, 5%);
544 | //** Popover outer arrow fallback color
545 | @popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
546 |
547 |
548 | //== Labels
549 | //
550 | //##
551 |
552 | //** Default label background color
553 | @label-default-bg: @gray-light;
554 | //** Primary label background color
555 | @label-primary-bg: @brand-primary;
556 | //** Success label background color
557 | @label-success-bg: @brand-success;
558 | //** Info label background color
559 | @label-info-bg: @brand-info;
560 | //** Warning label background color
561 | @label-warning-bg: @brand-warning;
562 | //** Danger label background color
563 | @label-danger-bg: @brand-danger;
564 |
565 | //** Default label text color
566 | @label-color: #fff;
567 | //** Default text color of a linked label
568 | @label-link-hover-color: #fff;
569 |
570 |
571 | //== Modals
572 | //
573 | //##
574 |
575 | //** Padding applied to the modal body
576 | @modal-inner-padding: 20px;
577 |
578 | //** Padding applied to the modal title
579 | @modal-title-padding: 15px;
580 | //** Modal title line-height
581 | @modal-title-line-height: @line-height-base;
582 |
583 | //** Background color of modal content area
584 | @modal-content-bg: #fff;
585 | //** Modal content border color
586 | @modal-content-border-color: rgba(0,0,0,.2);
587 | //** Modal content border color **for IE8**
588 | @modal-content-fallback-border-color: #999;
589 |
590 | //** Modal backdrop background color
591 | @modal-backdrop-bg: #000;
592 | //** Modal backdrop opacity
593 | @modal-backdrop-opacity: .5;
594 | //** Modal header border color
595 | @modal-header-border-color: #e5e5e5;
596 | //** Modal footer border color
597 | @modal-footer-border-color: @modal-header-border-color;
598 |
599 | @modal-lg: 900px;
600 | @modal-md: 600px;
601 | @modal-sm: 300px;
602 |
603 |
604 | //== Alerts
605 | //
606 | //## Define alert colors, border radius, and padding.
607 |
608 | @alert-padding: 15px;
609 | @alert-border-radius: @border-radius-base;
610 | @alert-link-font-weight: bold;
611 |
612 | @alert-success-bg: @state-success-bg;
613 | @alert-success-text: @state-success-text;
614 | @alert-success-border: @state-success-border;
615 |
616 | @alert-info-bg: @state-info-bg;
617 | @alert-info-text: @state-info-text;
618 | @alert-info-border: @state-info-border;
619 |
620 | @alert-warning-bg: @state-warning-bg;
621 | @alert-warning-text: @state-warning-text;
622 | @alert-warning-border: @state-warning-border;
623 |
624 | @alert-danger-bg: @state-danger-bg;
625 | @alert-danger-text: @state-danger-text;
626 | @alert-danger-border: @state-danger-border;
627 |
628 |
629 | //== Progress bars
630 | //
631 | //##
632 |
633 | //** Background color of the whole progress component
634 | @progress-bg: #f5f5f5;
635 | //** Progress bar text color
636 | @progress-bar-color: #fff;
637 |
638 | //** Default progress bar color
639 | @progress-bar-bg: @brand-primary;
640 | //** Success progress bar color
641 | @progress-bar-success-bg: @brand-success;
642 | //** Warning progress bar color
643 | @progress-bar-warning-bg: @brand-warning;
644 | //** Danger progress bar color
645 | @progress-bar-danger-bg: @brand-danger;
646 | //** Info progress bar color
647 | @progress-bar-info-bg: @brand-info;
648 |
649 |
650 | //== List group
651 | //
652 | //##
653 |
654 | //** Background color on `.list-group-item`
655 | @list-group-bg: #fff;
656 | //** `.list-group-item` border color
657 | @list-group-border: #ddd;
658 | //** List group border radius
659 | @list-group-border-radius: @border-radius-base;
660 |
661 | //** Background color of single list elements on hover
662 | @list-group-hover-bg: #f5f5f5;
663 | //** Text color of active list elements
664 | @list-group-active-color: @component-active-color;
665 | //** Background color of active list elements
666 | @list-group-active-bg: @component-active-bg;
667 | //** Border color of active list elements
668 | @list-group-active-border: @list-group-active-bg;
669 | @list-group-active-text-color: lighten(@list-group-active-bg, 40%);
670 |
671 | @list-group-link-color: #555;
672 | @list-group-link-heading-color: #333;
673 |
674 |
675 | //== Panels
676 | //
677 | //##
678 |
679 | @panel-bg: #fff;
680 | @panel-body-padding: 15px;
681 | @panel-border-radius: @border-radius-base;
682 |
683 | //** Border color for elements within panels
684 | @panel-inner-border: #ddd;
685 | @panel-footer-bg: #f5f5f5;
686 |
687 | @panel-default-text: @gray-dark;
688 | @panel-default-border: #ddd;
689 | @panel-default-heading-bg: #f5f5f5;
690 |
691 | @panel-primary-text: @gray-dark;
692 | @panel-primary-border: @brand-primary;
693 | @panel-primary-heading-bg: @brand-primary;
694 |
695 | @panel-success-text: @state-success-text;
696 | @panel-success-border: @state-success-border;
697 | @panel-success-heading-bg: @state-success-bg;
698 |
699 | @panel-info-text: @state-info-text;
700 | @panel-info-border: @state-info-border;
701 | @panel-info-heading-bg: @state-info-bg;
702 |
703 | @panel-warning-text: @state-warning-text;
704 | @panel-warning-border: @state-warning-border;
705 | @panel-warning-heading-bg: @state-warning-bg;
706 |
707 | @panel-danger-text: @state-danger-text;
708 | @panel-danger-border: @state-danger-border;
709 | @panel-danger-heading-bg: @state-danger-bg;
710 |
711 |
712 | //== Thumbnails
713 | //
714 | //##
715 |
716 | //** Padding around the thumbnail image
717 | @thumbnail-padding: 4px;
718 | //** Thumbnail background color
719 | @thumbnail-bg: @body-bg;
720 | //** Thumbnail border color
721 | @thumbnail-border: #ddd;
722 | //** Thumbnail border radius
723 | @thumbnail-border-radius: @border-radius-base;
724 |
725 | //** Custom text color for thumbnail captions
726 | @thumbnail-caption-color: @text-color;
727 | //** Padding around the thumbnail caption
728 | @thumbnail-caption-padding: 9px;
729 |
730 |
731 | //== Wells
732 | //
733 | //##
734 |
735 | @well-bg: #f5f5f5;
736 | @well-border: darken(@well-bg, 7%);
737 |
738 |
739 | //== Badges
740 | //
741 | //##
742 |
743 | @badge-color: #fff;
744 | //** Linked badge text color on hover
745 | @badge-link-hover-color: #fff;
746 | @badge-bg: @gray-light;
747 |
748 | //** Badge text color in active nav link
749 | @badge-active-color: @link-color;
750 | //** Badge background color in active nav link
751 | @badge-active-bg: #fff;
752 |
753 | @badge-font-weight: bold;
754 | @badge-line-height: 1;
755 | @badge-border-radius: 10px;
756 |
757 |
758 | //== Breadcrumbs
759 | //
760 | //##
761 |
762 | @breadcrumb-padding-vertical: 8px;
763 | @breadcrumb-padding-horizontal: 15px;
764 | //** Breadcrumb background color
765 | @breadcrumb-bg: #f5f5f5;
766 | //** Breadcrumb text color
767 | @breadcrumb-color: #ccc;
768 | //** Text color of current page in the breadcrumb
769 | @breadcrumb-active-color: @gray-light;
770 | //** Textual separator for between breadcrumb elements
771 | @breadcrumb-separator: "/";
772 |
773 |
774 | //== Carousel
775 | //
776 | //##
777 |
778 | @carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
779 |
780 | @carousel-control-color: #fff;
781 | @carousel-control-width: 15%;
782 | @carousel-control-opacity: .5;
783 | @carousel-control-font-size: 20px;
784 |
785 | @carousel-indicator-active-bg: #fff;
786 | @carousel-indicator-border-color: #fff;
787 |
788 | @carousel-caption-color: #fff;
789 |
790 |
791 | //== Close
792 | //
793 | //##
794 |
795 | @close-font-weight: bold;
796 | @close-color: #000;
797 | @close-text-shadow: 0 1px 0 #fff;
798 |
799 |
800 | //== Code
801 | //
802 | //##
803 |
804 | @code-color: #c7254e;
805 | @code-bg: #f9f2f4;
806 |
807 | @kbd-color: #fff;
808 | @kbd-bg: #333;
809 |
810 | @pre-bg: #f5f5f5;
811 | @pre-color: @gray-dark;
812 | @pre-border-color: #ccc;
813 | @pre-scrollable-max-height: 340px;
814 |
815 |
816 | //== Type
817 | //
818 | //##
819 |
820 | //** Text muted color
821 | @text-muted: @gray-light;
822 | //** Abbreviations and acronyms border color
823 | @abbr-border-color: @gray-light;
824 | //** Headings small color
825 | @headings-small-color: @gray-light;
826 | //** Blockquote small color
827 | @blockquote-small-color: @gray-light;
828 | //** Blockquote font size
829 | @blockquote-font-size: (@font-size-base * 1.25);
830 | //** Blockquote border color
831 | @blockquote-border-color: @gray-lighter;
832 | //** Page header border color
833 | @page-header-border-color: @gray-lighter;
834 |
835 |
836 | //== Miscellaneous
837 | //
838 | //##
839 |
840 | //** Horizontal line color.
841 | @hr-border: @gray-lighter;
842 |
843 | //** Horizontal offset for forms and lists.
844 | @component-offset-horizontal: 180px;
845 |
--------------------------------------------------------------------------------
/dist/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.1.1",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.1.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};c.VERSION="3.1.1",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(".item"),this.$items.index(this.$active)},c.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")}));var l=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(l)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(l)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),(h=e.attr("data-slide-to"))&&f.data("bs.carousel").to(h),c.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.1.1",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(b){return b&&b.target!=this.$element[0]?void this.$element.one(a.support.transition.end,a.proxy(g,this)):(this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,void this.$element.off(a.support.transition.end+".bs.collapse").trigger("shown.bs.collapse"))};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.on(a.support.transition.end+".bs.collapse",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(b){return b&&b.target!=this.$element[0]?void this.$element.one(a.support.transition.end,a.proxy(d,this)):(this.transitioning=0,void this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse"))};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.1.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j ').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),b.call(f,g,this),f.one("hide.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.1.1",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip(),e=this.getUID(this.type);this.setContent(),d.attr("id",e),this.$element.attr("aria-describedby",e),this.options.animation&&d.addClass("fade");var f="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,g=/\s?auto?\s?/i,h=g.test(f);h&&(f=f.replace(g,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(f).data("bs."+this.type,this),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var i=this.getPosition(),j=d[0].offsetWidth,k=d[0].offsetHeight;if(h){var l=f,m=this.$element.parent(),n=this.getPosition(m);f="bottom"==f&&i.top+i.height+k-n.scroll>n.height?"top":"top"==f&&i.top-n.scroll-k<0?"bottom":"right"==f&&i.right+j>n.width?"left":"left"==f&&i.left-jg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.1.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scrollspy",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.1.1",b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).filter(":visible").map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.1.1",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.1.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
--------------------------------------------------------------------------------