BS4 Beta Update

This commit is contained in:
David Miller 2017-08-11 15:12:34 -04:00
parent c5676d6196
commit 3b833405e4
33 changed files with 8408 additions and 8684 deletions

View File

@ -12,7 +12,7 @@ p {
a { a {
color: #fed136; } color: #fed136; }
a:hover, a:focus, a:active, a.active { a.active, a:active, a:focus, a:hover {
color: #fec503; } color: #fec503; }
h1, h1,
@ -72,41 +72,41 @@ body {
background-color: #fed136; background-color: #fed136;
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-transform: uppercase; } text-transform: uppercase; }
#mainNav .container { #mainNav .navbar-brand {
padding: 0; } color: #fed136;
#mainNav .container .navbar-brand { font-family: 'Kaushan Script', 'Helvetica Neue', Helvetica, Arial, cursive; }
color: #fed136; #mainNav .navbar-brand.active, #mainNav .navbar-brand:active, #mainNav .navbar-brand:focus, #mainNav .navbar-brand:hover {
font-family: 'Kaushan Script', 'Helvetica Neue', Helvetica, Arial, cursive; } color: #fec503; }
#mainNav .container .navbar-brand:hover, #mainNav .container .navbar-brand:focus, #mainNav .container .navbar-brand:active, #mainNav .container .navbar-brand.active { #mainNav .navbar-nav .nav-item .nav-link {
color: #fec503; } font-size: 90%;
#mainNav .container .navbar-nav .nav-item .nav-link { font-weight: 400;
font-size: 90%; padding: 0.75em 0;
font-weight: 400; letter-spacing: 1px;
padding: .75em 0; color: white;
letter-spacing: 1px; font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
color: white; text-transform: uppercase; }
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif; #mainNav .navbar-nav .nav-item .nav-link.active, #mainNav .navbar-nav .nav-item .nav-link:hover {
text-transform: uppercase; } color: #fed136; }
#mainNav .container .navbar-nav .nav-item .nav-link:hover, #mainNav .container .navbar-nav .nav-item .nav-link.active {
color: #fed136; }
@media (min-width: 992px) { @media (min-width: 992px) {
#mainNav { #mainNav {
padding: 25px 0; padding-top: 25px;
-webkit-transition: padding .3s; padding-bottom: 25px;
-moz-transition: padding .3s; -webkit-transition: padding-top 0.3s, padding-bottom 0.3s;
transition: padding .3s; -moz-transition: padding-top 0.3s, padding-bottom 0.3s;
transition: padding-top 0.3s, padding-bottom 0.3s;
border: none; border: none;
background-color: transparent; } background-color: transparent; }
#mainNav .navbar-brand { #mainNav .navbar-brand {
font-size: 1.75em; font-size: 1.75em;
-webkit-transition: all .3s; -webkit-transition: all 0.3s;
-moz-transition: all .3s; -moz-transition: all 0.3s;
transition: all .3s; } transition: all 0.3s; }
#mainNav .navbar-nav .nav-item .nav-link { #mainNav .navbar-nav .nav-item .nav-link {
padding: 1.1em 1em !important; } padding: 1.1em 1em !important; }
#mainNav.navbar-shrink { #mainNav.navbar-shrink {
padding: 0; padding-top: 0;
padding-bottom: 0;
background-color: #222222; } background-color: #222222; }
#mainNav.navbar-shrink .navbar-brand { #mainNav.navbar-shrink .navbar-brand {
font-size: 1.25em; font-size: 1.25em;
@ -124,8 +124,8 @@ header.masthead {
-o-background-size: cover; -o-background-size: cover;
background-size: cover; } background-size: cover; }
header.masthead .intro-text { header.masthead .intro-text {
padding-top: 100px; padding-top: 150px;
padding-bottom: 50px; } padding-bottom: 100px; }
header.masthead .intro-text .intro-lead-in { header.masthead .intro-text .intro-lead-in {
font-size: 22px; font-size: 22px;
font-style: italic; font-style: italic;
@ -175,9 +175,9 @@ header.masthead {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
-webkit-transition: all ease .5s; -webkit-transition: all ease 0.5s;
-moz-transition: all ease .5s; -moz-transition: all ease 0.5s;
transition: all ease .5s; transition: all ease 0.5s;
opacity: 0; opacity: 0;
background: rgba(254, 209, 54, 0.9); } background: rgba(254, 209, 54, 0.9); }
#portfolio .portfolio-item .portfolio-link .portfolio-hover:hover { #portfolio .portfolio-item .portfolio-link .portfolio-hover:hover {
@ -259,7 +259,7 @@ header.masthead {
cursor: pointer; cursor: pointer;
background-color: transparent; } background-color: transparent; }
.portfolio-modal .close-modal:hover { .portfolio-modal .close-modal:hover {
opacity: .3; } opacity: 0.3; }
.portfolio-modal .close-modal .lr { .portfolio-modal .close-modal .lr {
/* Safari and Chrome */ /* Safari and Chrome */
z-index: 1051; z-index: 1051;
@ -303,7 +303,7 @@ header.masthead {
position: relative; position: relative;
min-height: 50px; min-height: 50px;
margin-bottom: 50px; } margin-bottom: 50px; }
.timeline > li:before, .timeline > li:after { .timeline > li:after, .timeline > li:before {
display: table; display: table;
content: ' '; } content: ' '; }
.timeline > li:after { .timeline > li:after {
@ -361,8 +361,8 @@ header.masthead {
color: inherit; } color: inherit; }
.timeline .timeline-heading h4.subheading { .timeline .timeline-heading h4.subheading {
text-transform: none; } text-transform: none; }
.timeline .timeline-body > p, .timeline .timeline-body > ul,
.timeline .timeline-body > ul { .timeline .timeline-body > p {
margin-bottom: 0; } margin-bottom: 0; }
@media (min-width: 768px) { @media (min-width: 768px) {
@ -503,14 +503,14 @@ ul.social-buttons {
display: block; display: block;
width: 40px; width: 40px;
height: 40px; height: 40px;
-webkit-transition: all .3s; -webkit-transition: all 0.3s;
-moz-transition: all .3s; -moz-transition: all 0.3s;
transition: all .3s; transition: all 0.3s;
color: white; color: white;
border-radius: 100%; border-radius: 100%;
outline: none; outline: none;
background-color: #222222; } background-color: #222222; }
ul.social-buttons li a:hover, ul.social-buttons li a:focus, ul.social-buttons li a:active { ul.social-buttons li a:active, ul.social-buttons li a:focus, ul.social-buttons li a:hover {
background-color: #fed136; } background-color: #fed136; }
.text-primary { .text-primary {
@ -523,7 +523,7 @@ ul.social-buttons {
background-color: #fed136; background-color: #fed136;
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-transform: uppercase; } text-transform: uppercase; }
.btn-primary:focus, .btn-primary.focus { .btn-primary.focus, .btn-primary:focus {
color: white; color: white;
border-color: #b48b01; border-color: #b48b01;
background-color: #fec503; } background-color: #fec503; }
@ -531,25 +531,25 @@ ul.social-buttons {
color: white; color: white;
border-color: #f6bf01; border-color: #f6bf01;
background-color: #fec503; } background-color: #fec503; }
.btn-primary:active, .btn-primary.active, .btn-primary.active, .btn-primary:active,
.open > .btn-primary.dropdown-toggle { .open > .btn-primary.dropdown-toggle {
color: white; color: white;
border-color: #f6bf01; border-color: #f6bf01;
background-color: #fec503; } background-color: #fec503; }
.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, .btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, .btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover,
.open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle.focus,
.open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle:focus,
.open > .btn-primary.dropdown-toggle.focus { .open > .btn-primary.dropdown-toggle:hover {
color: white; color: white;
border-color: #b48b01; border-color: #b48b01;
background-color: #dcab01; } background-color: #dcab01; }
.btn-primary:active, .btn-primary.active, .btn-primary.active, .btn-primary:active,
.open > .btn-primary.dropdown-toggle { .open > .btn-primary.dropdown-toggle {
background-image: none; } background-image: none; }
.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, .btn-primary.disabled.focus, .btn-primary.disabled:focus, .btn-primary.disabled:hover, .btn-primary[disabled].focus, .btn-primary[disabled]:focus, .btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary.focus,
fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:focus,
fieldset[disabled] .btn-primary.focus { fieldset[disabled] .btn-primary:hover {
border-color: #fed136; border-color: #fed136;
background-color: #fed136; } background-color: #fed136; }
.btn-primary .badge { .btn-primary .badge {
@ -566,7 +566,7 @@ ul.social-buttons {
background-color: #fed136; background-color: #fed136;
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-transform: uppercase; } text-transform: uppercase; }
.btn-xl:focus, .btn-xl.focus { .btn-xl.focus, .btn-xl:focus {
color: white; color: white;
border-color: #b48b01; border-color: #b48b01;
background-color: #fec503; } background-color: #fec503; }
@ -574,25 +574,25 @@ ul.social-buttons {
color: white; color: white;
border-color: #f6bf01; border-color: #f6bf01;
background-color: #fec503; } background-color: #fec503; }
.btn-xl:active, .btn-xl.active, .btn-xl.active, .btn-xl:active,
.open > .btn-xl.dropdown-toggle { .open > .btn-xl.dropdown-toggle {
color: white; color: white;
border-color: #f6bf01; border-color: #f6bf01;
background-color: #fec503; } background-color: #fec503; }
.btn-xl:active:hover, .btn-xl:active:focus, .btn-xl:active.focus, .btn-xl.active:hover, .btn-xl.active:focus, .btn-xl.active.focus, .btn-xl.active.focus, .btn-xl.active:focus, .btn-xl.active:hover, .btn-xl:active.focus, .btn-xl:active:focus, .btn-xl:active:hover,
.open > .btn-xl.dropdown-toggle:hover, .open > .btn-xl.dropdown-toggle.focus,
.open > .btn-xl.dropdown-toggle:focus, .open > .btn-xl.dropdown-toggle:focus,
.open > .btn-xl.dropdown-toggle.focus { .open > .btn-xl.dropdown-toggle:hover {
color: white; color: white;
border-color: #b48b01; border-color: #b48b01;
background-color: #dcab01; } background-color: #dcab01; }
.btn-xl:active, .btn-xl.active, .btn-xl.active, .btn-xl:active,
.open > .btn-xl.dropdown-toggle { .open > .btn-xl.dropdown-toggle {
background-image: none; } background-image: none; }
.btn-xl.disabled:hover, .btn-xl.disabled:focus, .btn-xl.disabled.focus, .btn-xl[disabled]:hover, .btn-xl[disabled]:focus, .btn-xl[disabled].focus, .btn-xl.disabled.focus, .btn-xl.disabled:focus, .btn-xl.disabled:hover, .btn-xl[disabled].focus, .btn-xl[disabled]:focus, .btn-xl[disabled]:hover,
fieldset[disabled] .btn-xl:hover, fieldset[disabled] .btn-xl.focus,
fieldset[disabled] .btn-xl:focus, fieldset[disabled] .btn-xl:focus,
fieldset[disabled] .btn-xl.focus { fieldset[disabled] .btn-xl:hover {
border-color: #fed136; border-color: #fed136;
background-color: #fed136; } background-color: #fed136; }
.btn-xl .badge { .btn-xl .badge {

2
css/agency.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -9,71 +9,86 @@ var pkg = require('./package.json');
// Set the banner content // Set the banner content
var banner = ['/*!\n', var banner = ['/*!\n',
' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n', ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n',
' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n', ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n',
' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n', ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n',
' */\n', ' */\n',
'' ''
].join(''); ].join('');
// Compiles SCSS files from /scss into /css // Compiles SCSS files from /scss into /css
gulp.task('sass', function() { gulp.task('sass', function() {
return gulp.src('scss/agency.scss') return gulp.src('scss/agency.scss')
.pipe(sass()) .pipe(sass())
.pipe(header(banner, { pkg: pkg })) .pipe(header(banner, {
.pipe(gulp.dest('css')) pkg: pkg
.pipe(browserSync.reload({ }))
stream: true .pipe(gulp.dest('css'))
})) .pipe(browserSync.reload({
stream: true
}))
}); });
// Minify compiled CSS // Minify compiled CSS
gulp.task('minify-css', ['sass'], function() { gulp.task('minify-css', ['sass'], function() {
return gulp.src('css/agency.css') return gulp.src('css/agency.css')
.pipe(cleanCSS({ compatibility: 'ie8' })) .pipe(cleanCSS({
.pipe(rename({ suffix: '.min' })) compatibility: 'ie8'
.pipe(gulp.dest('css')) }))
.pipe(browserSync.reload({ .pipe(rename({
stream: true suffix: '.min'
})) }))
.pipe(gulp.dest('css'))
.pipe(browserSync.reload({
stream: true
}))
}); });
// Minify custom JS // Minify custom JS
gulp.task('minify-js', function() { gulp.task('minify-js', function() {
return gulp.src('js/agency.js') return gulp.src('js/agency.js')
.pipe(uglify()) .pipe(uglify())
.pipe(header(banner, { pkg: pkg })) .pipe(header(banner, {
.pipe(rename({ suffix: '.min' })) pkg: pkg
.pipe(gulp.dest('js')) }))
.pipe(browserSync.reload({ .pipe(rename({
stream: true suffix: '.min'
})) }))
.pipe(gulp.dest('js'))
.pipe(browserSync.reload({
stream: true
}))
}); });
// Copy vendor files from /node_modules into /vendor // Copy vendor files from /node_modules into /vendor
// NOTE: requires `npm install` before running! // NOTE: requires `npm install` before running!
gulp.task('copy', function() { gulp.task('copy', function() {
gulp.src(['node_modules/bootstrap/dist/**/*', '!**/npm.js', '!**/bootstrap-theme.*', '!**/*.map']) gulp.src([
.pipe(gulp.dest('vendor/bootstrap')) 'node_modules/bootstrap/dist/**/*',
'!**/npm.js',
'!**/bootstrap-theme.*',
'!**/*.map'
])
.pipe(gulp.dest('vendor/bootstrap'))
gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js']) gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/jquery/dist/jquery.min.js'])
.pipe(gulp.dest('vendor/jquery')) .pipe(gulp.dest('vendor/jquery'))
gulp.src(['node_modules/tether/dist/js/*.js']) gulp.src(['node_modules/popper.js/dist/umd/popper.js', 'node_modules/popper.js/dist/umd/popper.min.js'])
.pipe(gulp.dest('vendor/tether')) .pipe(gulp.dest('vendor/popper'))
gulp.src(['node_modules/jquery.easing/*.js']) gulp.src(['node_modules/jquery.easing/*.js'])
.pipe(gulp.dest('vendor/jquery-easing')) .pipe(gulp.dest('vendor/jquery-easing'))
gulp.src([ gulp.src([
'node_modules/font-awesome/**', 'node_modules/font-awesome/**',
'!node_modules/font-awesome/**/*.map', '!node_modules/font-awesome/**/*.map',
'!node_modules/font-awesome/.npmignore', '!node_modules/font-awesome/.npmignore',
'!node_modules/font-awesome/*.txt', '!node_modules/font-awesome/*.txt',
'!node_modules/font-awesome/*.md', '!node_modules/font-awesome/*.md',
'!node_modules/font-awesome/*.json' '!node_modules/font-awesome/*.json'
]) ])
.pipe(gulp.dest('vendor/font-awesome')) .pipe(gulp.dest('vendor/font-awesome'))
}) })
// Default task // Default task
@ -81,19 +96,19 @@ gulp.task('default', ['sass', 'minify-css', 'minify-js', 'copy']);
// Configure the browserSync task // Configure the browserSync task
gulp.task('browserSync', function() { gulp.task('browserSync', function() {
browserSync.init({ browserSync.init({
server: { server: {
baseDir: '' baseDir: ''
}, },
}) })
}) })
// Dev task with browserSync // Dev task with browserSync
gulp.task('dev', ['browserSync', 'sass', 'minify-css', 'minify-js'], function() { gulp.task('dev', ['browserSync', 'sass', 'minify-css', 'minify-js'], function() {
gulp.watch('scss/*.scss', ['sass']); gulp.watch('scss/*.scss', ['sass']);
gulp.watch('css/*.css', ['minify-css']); gulp.watch('css/*.css', ['minify-css']);
gulp.watch('js/*.js', ['minify-js']); gulp.watch('js/*.js', ['minify-js']);
// Reloads the browser whenever HTML or JS files change // Reloads the browser whenever HTML or JS files change
gulp.watch('*.html', browserSync.reload); gulp.watch('*.html', browserSync.reload);
gulp.watch('js/**/*.js', browserSync.reload); gulp.watch('js/**/*.js', browserSync.reload);
}); });

1170
index.html

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +1,38 @@
(function($) { (function($) {
"use strict"; // Start of use strict "use strict"; // Start of use strict
// Smooth scrolling using jQuery easing // Smooth scrolling using jQuery easing
$('a[href*="#"]:not([href="#"])').click(function() { $('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash); var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) { if (target.length) {
$('html, body').animate({ $('html, body').animate({
scrollTop: (target.offset().top - 54) scrollTop: (target.offset().top - 54)
}, 1000, "easeInOutExpo"); }, 1000, "easeInOutExpo");
return false; return false;
} }
} }
}); });
// Activate scrollspy to add active class to navbar items on scroll // Activate scrollspy to add active class to navbar items on scroll
$('body').scrollspy({ $('body').scrollspy({
target: '#mainNav', target: '#mainNav',
offset: 54 offset: 54
}); });
// Closes responsive menu when a link is clicked // Closes responsive menu when a link is clicked
$('.navbar-collapse>ul>li>a').click(function() { $('.navbar-collapse>ul>li>a').click(function() {
$('.navbar-collapse').collapse('hide'); $('.navbar-collapse').collapse('hide');
}); });
// Collapse the navbar when page is scrolled // Collapse the navbar when page is scrolled
$(window).scroll(function() { $(window).scroll(function() {
if ($("#mainNav").offset().top > 100) { if ($("#mainNav").offset().top > 100) {
$("#mainNav").addClass("navbar-shrink"); $("#mainNav").addClass("navbar-shrink");
} else { } else {
$("#mainNav").removeClass("navbar-shrink"); $("#mainNav").removeClass("navbar-shrink");
} }
}); });
})(jQuery); // End of use strict })(jQuery); // End of use strict

2
js/agency.min.js vendored
View File

@ -3,4 +3,4 @@
* Copyright 2013-2017 Start Bootstrap * Copyright 2013-2017 Start Bootstrap
* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-agency/blob/master/LICENSE) * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-agency/blob/master/LICENSE)
*/ */
!function(a){"use strict";a('a[href*="#"]:not([href="#"])').click(function(){if(location.pathname.replace(/^\//,"")==this.pathname.replace(/^\//,"")&&location.hostname==this.hostname){var n=a(this.hash);if(n=n.length?n:a("[name="+this.hash.slice(1)+"]"),n.length)return a("html, body").animate({scrollTop:n.offset().top-54},1e3,"easeInOutExpo"),!1}}),a("body").scrollspy({target:"#mainNav",offset:54}),a(".navbar-collapse>ul>li>a").click(function(){a(".navbar-collapse").collapse("hide")}),a(window).scroll(function(){a("#mainNav").offset().top>100?a("#mainNav").addClass("navbar-shrink"):a("#mainNav").removeClass("navbar-shrink")})}(jQuery); !function(a){"use strict";a('a[href*="#"]:not([href="#"])').click(function(){if(location.pathname.replace(/^\//,"")==this.pathname.replace(/^\//,"")&&location.hostname==this.hostname){var n=a(this.hash);if((n=n.length?n:a("[name="+this.hash.slice(1)+"]")).length)return a("html, body").animate({scrollTop:n.offset().top-54},1e3,"easeInOutExpo"),!1}}),a("body").scrollspy({target:"#mainNav",offset:54}),a(".navbar-collapse>ul>li>a").click(function(){a(".navbar-collapse").collapse("hide")}),a(window).scroll(function(){a("#mainNav").offset().top>100?a("#mainNav").addClass("navbar-shrink"):a("#mainNav").removeClass("navbar-shrink")})}(jQuery);

View File

@ -1,70 +1,70 @@
$(function() { $(function() {
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({ $("#contactForm input,#contactForm textarea").jqBootstrapValidation({
preventSubmit: true, preventSubmit: true,
submitError: function($form, event, errors) { submitError: function($form, event, errors) {
// additional error messages or events // additional error messages or events
},
submitSuccess: function($form, event) {
event.preventDefault(); // prevent default submit behaviour
// get values from FORM
var name = $("input#name").val();
var email = $("input#email").val();
var phone = $("input#phone").val();
var message = $("textarea#message").val();
var firstName = name; // For Success/Failure Message
// Check for white space in name for Success/Fail message
if (firstName.indexOf(' ') >= 0) {
firstName = name.split(' ').slice(0, -1).join(' ');
}
$.ajax({
url: "././mail/contact_me.php",
type: "POST",
data: {
name: name,
phone: phone,
email: email,
message: message
}, },
submitSuccess: function($form, event) { cache: false,
event.preventDefault(); // prevent default submit behaviour success: function() {
// get values from FORM // Success message
var name = $("input#name").val(); $('#success').html("<div class='alert alert-success'>");
var email = $("input#email").val(); $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
var phone = $("input#phone").val(); .append("</button>");
var message = $("textarea#message").val(); $('#success > .alert-success')
var firstName = name; // For Success/Failure Message .append("<strong>Your message has been sent. </strong>");
// Check for white space in name for Success/Fail message $('#success > .alert-success')
if (firstName.indexOf(' ') >= 0) { .append('</div>');
firstName = name.split(' ').slice(0, -1).join(' ');
}
$.ajax({
url: "././mail/contact_me.php",
type: "POST",
data: {
name: name,
phone: phone,
email: email,
message: message
},
cache: false,
success: function() {
// Success message
$('#success').html("<div class='alert alert-success'>");
$('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
.append("</button>");
$('#success > .alert-success')
.append("<strong>Your message has been sent. </strong>");
$('#success > .alert-success')
.append('</div>');
//clear all fields //clear all fields
$('#contactForm').trigger("reset"); $('#contactForm').trigger("reset");
},
error: function() {
// Fail message
$('#success').html("<div class='alert alert-danger'>");
$('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
.append("</button>");
$('#success > .alert-danger').append($("<strong>").text("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"));
$('#success > .alert-danger').append('</div>');
//clear all fields
$('#contactForm').trigger("reset");
},
});
}, },
filter: function() { error: function() {
return $(this).is(":visible"); // Fail message
$('#success').html("<div class='alert alert-danger'>");
$('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
.append("</button>");
$('#success > .alert-danger').append($("<strong>").text("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"));
$('#success > .alert-danger').append('</div>');
//clear all fields
$('#contactForm').trigger("reset");
}, },
}); });
},
filter: function() {
return $(this).is(":visible");
},
});
$("a[data-toggle=\"tab\"]").click(function(e) { $("a[data-toggle=\"tab\"]").click(function(e) {
e.preventDefault(); e.preventDefault();
$(this).tab("show"); $(this).tab("show");
}); });
}); });
/*When clicking on Full hide fail/success boxes */ /*When clicking on Full hide fail/success boxes */
$('#name').focus(function() { $('#name').focus(function() {
$('#success').html(''); $('#success').html('');
}); });

View File

@ -8,28 +8,28 @@
* http://ReactiveRaven.github.com/jqBootstrapValidation/ * http://ReactiveRaven.github.com/jqBootstrapValidation/
*/ */
(function( $ ){ (function($) {
var createdElements = []; var createdElements = [];
var defaults = { var defaults = {
options: { options: {
prependExistingHelpBlock: false, prependExistingHelpBlock: false,
sniffHtml: true, // sniff for 'required', 'maxlength', etc sniffHtml: true, // sniff for 'required', 'maxlength', etc
preventSubmit: true, // stop the form submit event from firing if validation fails preventSubmit: true, // stop the form submit event from firing if validation fails
submitError: false, // function called if there is an error when trying to submit submitError: false, // function called if there is an error when trying to submit
submitSuccess: false, // function called just before a successful submit event is sent to the server submitSuccess: false, // function called just before a successful submit event is sent to the server
semanticallyStrict: false, // set to true to tidy up generated HTML output semanticallyStrict: false, // set to true to tidy up generated HTML output
autoAdd: { autoAdd: {
helpBlocks: true helpBlocks: true
}, },
filter: function () { filter: function() {
// return $(this).is(":visible"); // only validate elements you can see // return $(this).is(":visible"); // only validate elements you can see
return true; // validate everything return true; // validate everything
} }
}, },
methods: { methods: {
init : function( options ) { init: function(options) {
var settings = $.extend(true, {}, defaults); var settings = $.extend(true, {}, defaults);
@ -38,18 +38,18 @@
var $siblingElements = this; var $siblingElements = this;
var uniqueForms = $.unique( var uniqueForms = $.unique(
$siblingElements.map( function () { $siblingElements.map(function() {
return $(this).parents("form")[0]; return $(this).parents("form")[0];
}).toArray() }).toArray()
); );
$(uniqueForms).bind("submit", function (e) { $(uniqueForms).bind("submit", function(e) {
var $form = $(this); var $form = $(this);
var warningsFound = 0; var warningsFound = 0;
var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
$inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
$inputs.each(function (i, el) { $inputs.each(function(i, el) {
var $this = $(el), var $this = $(el),
$controlGroup = $this.parents(".form-group").first(); $controlGroup = $this.parents(".form-group").first();
if ( if (
@ -78,7 +78,7 @@
} }
}); });
return this.each(function(){ return this.each(function() {
// Get references to everything we're interested in // Get references to everything we're interested in
var $this = $(this), var $this = $(this),
@ -89,9 +89,9 @@
// create message container if not exists // create message container if not exists
if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
$helpBlock = $('<div class="help-block" />'); $helpBlock = $('<div class="help-block" />');
$controlGroup.find('.controls').append($helpBlock); $controlGroup.find('.controls').append($helpBlock);
createdElements.push($helpBlock[0]); createdElements.push($helpBlock[0]);
} }
// ============================================================= // =============================================================
@ -225,7 +225,7 @@
} }
// Get extra ones defined on the element's data attributes // Get extra ones defined on the element's data attributes
$.each($this.data(), function (i, el) { $.each($this.data(), function(i, el) {
var parts = i.replace(/([A-Z])/g, ",$1").split(","); var parts = i.replace(/([A-Z])/g, ",$1").split(",");
if (parts[0] === "validation" && parts[1]) { if (parts[0] === "validation" && parts[1]) {
validatorNames.push(parts[1]); validatorNames.push(parts[1]);
@ -242,7 +242,7 @@
do // repeatedly expand 'shortcut' validators into their real validators do // repeatedly expand 'shortcut' validators into their real validators
{ {
// Uppercase only the first letter of each name // Uppercase only the first letter of each name
$.each(validatorNames, function (i, el) { $.each(validatorNames, function(i, el) {
validatorNames[i] = formatValidatorName(el); validatorNames[i] = formatValidatorName(el);
}); });
@ -263,7 +263,7 @@
// Pull it out! // Pull it out!
var validator = settings.builtInValidators[el.toLowerCase()]; var validator = settings.builtInValidators[el.toLowerCase()];
if (validator.type.toLowerCase() === "shortcut") { if (validator.type.toLowerCase() === "shortcut") {
$.each(validator.shortcut.split(","), function (i, el) { $.each(validator.shortcut.split(","), function(i, el) {
el = formatValidatorName(el); el = formatValidatorName(el);
newValidatorNamesToInspect.push(el); newValidatorNamesToInspect.push(el);
validatorNames.push(el); validatorNames.push(el);
@ -282,30 +282,28 @@
var validators = {}; var validators = {};
$.each(validatorNames, function (i, el) { $.each(validatorNames, function(i, el) {
// Set up the 'override' message // Set up the 'override' message
var message = $this.data("validation" + el + "Message"); var message = $this.data("validation" + el + "Message");
var hasOverrideMessage = (message !== undefined); var hasOverrideMessage = (message !== undefined);
var foundValidator = false; var foundValidator = false;
message = message =
( (
message message ?
? message message :
: "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->" "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->"
) );
;
$.each( $.each(
settings.validatorTypes, settings.validatorTypes,
function (validatorType, validatorTemplate) { function(validatorType, validatorTemplate) {
if (validators[validatorType] === undefined) { if (validators[validatorType] === undefined) {
validators[validatorType] = []; validators[validatorType] = [];
} }
if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
validators[validatorType].push( validators[validatorType].push(
$.extend( $.extend(
true, true, {
{
name: formatValidatorName(validatorTemplate.name), name: formatValidatorName(validatorTemplate.name),
message: message message: message
}, },
@ -330,7 +328,7 @@
} else { } else {
$.each( $.each(
settings.validatorTypes, settings.validatorTypes,
function (validatorTemplateType, validatorTemplate) { function(validatorTemplateType, validatorTemplate) {
if (validators[validatorTemplateType] === undefined) { if (validators[validatorTemplateType] === undefined) {
validators[validatorTemplateType] = []; validators[validatorTemplateType] = [];
} }
@ -349,7 +347,7 @@
} }
} }
if (! foundValidator) { if (!foundValidator) {
$.error("Cannot find validation info for '" + el + "'"); $.error("Cannot find validation info for '" + el + "'");
} }
}); });
@ -361,36 +359,36 @@
$helpBlock.data( $helpBlock.data(
"original-contents", "original-contents",
( (
$helpBlock.data("original-contents") $helpBlock.data("original-contents") ?
? $helpBlock.data("original-contents") $helpBlock.data("original-contents") :
: $helpBlock.html() $helpBlock.html()
) )
); );
$helpBlock.data( $helpBlock.data(
"original-role", "original-role",
( (
$helpBlock.data("original-role") $helpBlock.data("original-role") ?
? $helpBlock.data("original-role") $helpBlock.data("original-role") :
: $helpBlock.attr("role") $helpBlock.attr("role")
) )
); );
$controlGroup.data( $controlGroup.data(
"original-classes", "original-classes",
( (
$controlGroup.data("original-clases") $controlGroup.data("original-clases") ?
? $controlGroup.data("original-classes") $controlGroup.data("original-classes") :
: $controlGroup.attr("class") $controlGroup.attr("class")
) )
); );
$this.data( $this.data(
"original-aria-invalid", "original-aria-invalid",
( (
$this.data("original-aria-invalid") $this.data("original-aria-invalid") ?
? $this.data("original-aria-invalid") $this.data("original-aria-invalid") :
: $this.attr("aria-invalid") $this.attr("aria-invalid")
) )
); );
@ -400,16 +398,16 @@
$this.bind( $this.bind(
"validation.validation", "validation.validation",
function (event, params) { function(event, params) {
var value = getValue($this); var value = getValue($this);
// Get a list of the errors to apply // Get a list of the errors to apply
var errorsFound = []; var errorsFound = [];
$.each(validators, function (validatorType, validatorTypeArray) { $.each(validators, function(validatorType, validatorTypeArray) {
if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
$.each(validatorTypeArray, function (i, validator) { $.each(validatorTypeArray, function(i, validator) {
if (settings.validatorTypes[validatorType].validate($this, value, validator)) { if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
errorsFound.push(validator.message); errorsFound.push(validator.message);
} }
@ -423,7 +421,7 @@
$this.bind( $this.bind(
"getValidators.validation", "getValidators.validation",
function () { function() {
return validators; return validators;
} }
); );
@ -433,8 +431,10 @@
// ============================================================= // =============================================================
$this.bind( $this.bind(
"submit.validation", "submit.validation",
function () { function() {
return $this.triggerHandler("change.validation", {submitting: true}); return $this.triggerHandler("change.validation", {
submitting: true
});
} }
); );
$this.bind( $this.bind(
@ -447,15 +447,15 @@
"keypress", "keypress",
"change" "change"
].join(".validation ") + ".validation", ].join(".validation ") + ".validation",
function (e, params) { function(e, params) {
var value = getValue($this); var value = getValue($this);
var errorsFound = []; var errorsFound = [];
$controlGroup.find("input,textarea,select").each(function (i, el) { $controlGroup.find("input,textarea,select").each(function(i, el) {
var oldCount = errorsFound.length; var oldCount = errorsFound.length;
$.each($(el).triggerHandler("validation.validation", params), function (j, message) { $.each($(el).triggerHandler("validation.validation", params), function(j, message) {
errorsFound.push(message); errorsFound.push(message);
}); });
if (errorsFound.length > oldCount) { if (errorsFound.length > oldCount) {
@ -479,11 +479,11 @@
if (settings.options.semanticallyStrict && errorsFound.length === 1) { if (settings.options.semanticallyStrict && errorsFound.length === 1) {
// Only one? Being strict? Just output it. // Only one? Being strict? Just output it.
$helpBlock.html(errorsFound[0] + $helpBlock.html(errorsFound[0] +
( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
} else { } else {
// Multiple? Being sloppy? Glue them together into an UL. // Multiple? Being sloppy? Glue them together into an UL.
$helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" + $helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" +
( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
} }
} else { } else {
$controlGroup.removeClass("warning error success"); $controlGroup.removeClass("warning error success");
@ -498,12 +498,12 @@
} }
} }
); );
$this.bind("validationLostFocus.validation", function () { $this.bind("validationLostFocus.validation", function() {
$controlGroup.removeClass("success"); $controlGroup.removeClass("success");
}); });
}); });
}, },
destroy : function( ) { destroy: function() {
return this.each( return this.each(
function() { function() {
@ -523,26 +523,28 @@
$this.attr("aria-invalid", $this.data("original-aria-invalid")); $this.attr("aria-invalid", $this.data("original-aria-invalid"));
// reset role // reset role
$helpBlock.attr("role", $this.data("original-role")); $helpBlock.attr("role", $this.data("original-role"));
// remove all elements we created // remove all elements we created
if (createdElements.indexOf($helpBlock[0]) > -1) { if (createdElements.indexOf($helpBlock[0]) > -1) {
$helpBlock.remove(); $helpBlock.remove();
} }
} }
); );
}, },
collectErrors : function(includeEmpty) { collectErrors: function(includeEmpty) {
var errorMessages = {}; var errorMessages = {};
this.each(function (i, el) { this.each(function(i, el) {
var $el = $(el); var $el = $(el);
var name = $el.attr("name"); var name = $el.attr("name");
var errors = $el.triggerHandler("validation.validation", {includeEmpty: true}); var errors = $el.triggerHandler("validation.validation", {
includeEmpty: true
});
errorMessages[name] = $.extend(true, errors, errorMessages[name]); errorMessages[name] = $.extend(true, errors, errorMessages[name]);
}); });
$.each(errorMessages, function (i, el) { $.each(errorMessages, function(i, el) {
if (el.length === 0) { if (el.length === 0) {
delete errorMessages[i]; delete errorMessages[i];
} }
@ -555,22 +557,24 @@
var errorMessages = []; var errorMessages = [];
this.each(function (i, el) { this.each(function(i, el) {
errorMessages = errorMessages.concat( errorMessages = errorMessages.concat(
$(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : [] $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {
submitting: true
}) : []
); );
}); });
return (errorMessages.length > 0); return (errorMessages.length > 0);
}, },
override : function (newDefaults) { override: function(newDefaults) {
defaults = $.extend(true, defaults, newDefaults); defaults = $.extend(true, defaults, newDefaults);
} }
}, },
validatorTypes: { validatorTypes: {
callback: { callback: {
name: "callback", name: "callback",
init: function ($this, name) { init: function($this, name) {
return { return {
validatorName: name, validatorName: name,
callback: $this.data("validation" + name + "Callback"), callback: $this.data("validation" + name + "Callback"),
@ -579,13 +583,12 @@
lastFinished: true lastFinished: true
}; };
}, },
validate: function ($this, value, validator) { validate: function($this, value, validator) {
if (validator.lastValue === value && validator.lastFinished) { if (validator.lastValue === value && validator.lastFinished) {
return !validator.lastValid; return !validator.lastValid;
} }
if (validator.lastFinished === true) if (validator.lastFinished === true) {
{
validator.lastValue = value; validator.lastValue = value;
validator.lastValid = true; validator.lastValid = true;
validator.lastFinished = false; validator.lastFinished = false;
@ -597,7 +600,7 @@
window, window,
$this, $this,
value, value,
function (data) { function(data) {
if (rrjqbvValidator.lastValue === data.value) { if (rrjqbvValidator.lastValue === data.value) {
rrjqbvValidator.lastValid = data.valid; rrjqbvValidator.lastValid = data.valid;
if (data.message) { if (data.message) {
@ -606,7 +609,7 @@
rrjqbvValidator.lastFinished = true; rrjqbvValidator.lastFinished = true;
rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
// Timeout is set to avoid problems with the events being considered 'already fired' // Timeout is set to avoid problems with the events being considered 'already fired'
setTimeout(function () { setTimeout(function() {
rrjqbvThis.trigger("change.validation"); rrjqbvThis.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
} }
@ -620,7 +623,7 @@
}, },
ajax: { ajax: {
name: "ajax", name: "ajax",
init: function ($this, name) { init: function($this, name) {
return { return {
validatorName: name, validatorName: name,
url: $this.data("validation" + name + "Ajax"), url: $this.data("validation" + name + "Ajax"),
@ -629,13 +632,12 @@
lastFinished: true lastFinished: true
}; };
}, },
validate: function ($this, value, validator) { validate: function($this, value, validator) {
if (""+validator.lastValue === ""+value && validator.lastFinished === true) { if ("" + validator.lastValue === "" + value && validator.lastFinished === true) {
return validator.lastValid === false; return validator.lastValid === false;
} }
if (validator.lastFinished === true) if (validator.lastFinished === true) {
{
validator.lastValue = value; validator.lastValue = value;
validator.lastValid = true; validator.lastValid = true;
validator.lastFinished = false; validator.lastFinished = false;
@ -643,8 +645,8 @@
url: validator.url, url: validator.url,
data: "value=" + value + "&field=" + $this.attr("name"), data: "value=" + value + "&field=" + $this.attr("name"),
dataType: "json", dataType: "json",
success: function (data) { success: function(data) {
if (""+validator.lastValue === ""+data.value) { if ("" + validator.lastValue === "" + data.value) {
validator.lastValid = !!(data.valid); validator.lastValid = !!(data.valid);
if (data.message) { if (data.message) {
validator.message = data.message; validator.message = data.message;
@ -652,18 +654,18 @@
validator.lastFinished = true; validator.lastFinished = true;
$this.data("validation" + validator.validatorName + "Message", validator.message); $this.data("validation" + validator.validatorName + "Message", validator.message);
// Timeout is set to avoid problems with the events being considered 'already fired' // Timeout is set to avoid problems with the events being considered 'already fired'
setTimeout(function () { setTimeout(function() {
$this.trigger("change.validation"); $this.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
} }
}, },
failure: function () { failure: function() {
validator.lastValid = true; validator.lastValid = true;
validator.message = "ajax call failed"; validator.message = "ajax call failed";
validator.lastFinished = true; validator.lastFinished = true;
$this.data("validation" + validator.validatorName + "Message", validator.message); $this.data("validation" + validator.validatorName + "Message", validator.message);
// Timeout is set to avoid problems with the events being considered 'already fired' // Timeout is set to avoid problems with the events being considered 'already fired'
setTimeout(function () { setTimeout(function() {
$this.trigger("change.validation"); $this.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
} }
@ -674,239 +676,262 @@
} }
}, },
regex: { regex: {
name: "regex", name: "regex",
init: function ($this, name) { init: function($this, name) {
return {regex: regexFromString($this.data("validation" + name + "Regex"))}; return {
}, regex: regexFromString($this.data("validation" + name + "Regex"))
validate: function ($this, value, validator) { };
return (!validator.regex.test(value) && ! validator.negative) },
|| (validator.regex.test(value) && validator.negative); validate: function($this, value, validator) {
} return (!validator.regex.test(value) && !validator.negative) ||
}, (validator.regex.test(value) && validator.negative);
required: { }
name: "required", },
init: function ($this, name) { required: {
return {}; name: "required",
}, init: function($this, name) {
validate: function ($this, value, validator) { return {};
return !!(value.length === 0 && ! validator.negative) },
|| !!(value.length > 0 && validator.negative); validate: function($this, value, validator) {
}, return !!(value.length === 0 && !validator.negative) ||
!!(value.length > 0 && validator.negative);
},
blockSubmit: true blockSubmit: true
}, },
match: { match: {
name: "match", name: "match",
init: function ($this, name) { init: function($this, name) {
var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
element.bind("validation.validation", function () { element.bind("validation.validation", function() {
$this.trigger("change.validation", {submitting: true}); $this.trigger("change.validation", {
}); submitting: true
return {"element": element}; });
}, });
validate: function ($this, value, validator) { return {
return (value !== validator.element.val() && ! validator.negative) "element": element
|| (value === validator.element.val() && validator.negative); };
}, },
validate: function($this, value, validator) {
return (value !== validator.element.val() && !validator.negative) ||
(value === validator.element.val() && validator.negative);
},
blockSubmit: true blockSubmit: true
}, },
max: { max: {
name: "max", name: "max",
init: function ($this, name) { init: function($this, name) {
return {max: $this.data("validation" + name + "Max")}; return {
}, max: $this.data("validation" + name + "Max")
validate: function ($this, value, validator) { };
return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative) },
|| (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); validate: function($this, value, validator) {
} return (parseFloat(value, 10) > parseFloat(validator.max, 10) && !validator.negative) ||
}, (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
min: { }
name: "min", },
init: function ($this, name) { min: {
return {min: $this.data("validation" + name + "Min")}; name: "min",
}, init: function($this, name) {
validate: function ($this, value, validator) { return {
return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative) min: $this.data("validation" + name + "Min")
|| (parseFloat(value) >= parseFloat(validator.min) && validator.negative); };
} },
}, validate: function($this, value, validator) {
maxlength: { return (parseFloat(value) < parseFloat(validator.min) && !validator.negative) ||
name: "maxlength", (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
init: function ($this, name) { }
return {maxlength: $this.data("validation" + name + "Maxlength")}; },
}, maxlength: {
validate: function ($this, value, validator) { name: "maxlength",
return ((value.length > validator.maxlength) && ! validator.negative) init: function($this, name) {
|| ((value.length <= validator.maxlength) && validator.negative); return {
} maxlength: $this.data("validation" + name + "Maxlength")
}, };
minlength: { },
name: "minlength", validate: function($this, value, validator) {
init: function ($this, name) { return ((value.length > validator.maxlength) && !validator.negative) ||
return {minlength: $this.data("validation" + name + "Minlength")}; ((value.length <= validator.maxlength) && validator.negative);
}, }
validate: function ($this, value, validator) { },
return ((value.length < validator.minlength) && ! validator.negative) minlength: {
|| ((value.length >= validator.minlength) && validator.negative); name: "minlength",
} init: function($this, name) {
}, return {
maxchecked: { minlength: $this.data("validation" + name + "Minlength")
name: "maxchecked", };
init: function ($this, name) { },
var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); validate: function($this, value, validator) {
elements.bind("click.validation", function () { return ((value.length < validator.minlength) && !validator.negative) ||
$this.trigger("change.validation", {includeEmpty: true}); ((value.length >= validator.minlength) && validator.negative);
}); }
return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements}; },
}, maxchecked: {
validate: function ($this, value, validator) { name: "maxchecked",
return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative) init: function($this, name) {
|| (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
}, elements.bind("click.validation", function() {
$this.trigger("change.validation", {
includeEmpty: true
});
});
return {
maxchecked: $this.data("validation" + name + "Maxchecked"),
elements: elements
};
},
validate: function($this, value, validator) {
return (validator.elements.filter(":checked").length > validator.maxchecked && !validator.negative) ||
(validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
},
blockSubmit: true blockSubmit: true
}, },
minchecked: { minchecked: {
name: "minchecked", name: "minchecked",
init: function ($this, name) { init: function($this, name) {
var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
elements.bind("click.validation", function () { elements.bind("click.validation", function() {
$this.trigger("change.validation", {includeEmpty: true}); $this.trigger("change.validation", {
}); includeEmpty: true
return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements}; });
}, });
validate: function ($this, value, validator) { return {
return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative) minchecked: $this.data("validation" + name + "Minchecked"),
|| (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); elements: elements
}, };
},
validate: function($this, value, validator) {
return (validator.elements.filter(":checked").length < validator.minchecked && !validator.negative) ||
(validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
},
blockSubmit: true blockSubmit: true
} }
}, },
builtInValidators: { builtInValidators: {
email: { email: {
name: "Email", name: "Email",
type: "shortcut", type: "shortcut",
shortcut: "validemail" shortcut: "validemail"
}, },
validemail: { validemail: {
name: "Validemail", name: "Validemail",
type: "regex", type: "regex",
regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
message: "Not a valid email address<!-- data-validator-validemail-message to override -->" message: "Not a valid email address<!-- data-validator-validemail-message to override -->"
}, },
passwordagain: { passwordagain: {
name: "Passwordagain", name: "Passwordagain",
type: "match", type: "match",
match: "password", match: "password",
message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->" message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->"
}, },
positive: { positive: {
name: "Positive", name: "Positive",
type: "shortcut", type: "shortcut",
shortcut: "number,positivenumber" shortcut: "number,positivenumber"
}, },
negative: { negative: {
name: "Negative", name: "Negative",
type: "shortcut", type: "shortcut",
shortcut: "number,negativenumber" shortcut: "number,negativenumber"
}, },
number: { number: {
name: "Number", name: "Number",
type: "regex", type: "regex",
regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
message: "Must be a number<!-- data-validator-number-message to override -->" message: "Must be a number<!-- data-validator-number-message to override -->"
}, },
integer: { integer: {
name: "Integer", name: "Integer",
type: "regex", type: "regex",
regex: "[+-]?\\\d+", regex: "[+-]?\\\d+",
message: "No decimal places allowed<!-- data-validator-integer-message to override -->" message: "No decimal places allowed<!-- data-validator-integer-message to override -->"
}, },
positivenumber: { positivenumber: {
name: "Positivenumber", name: "Positivenumber",
type: "min", type: "min",
min: 0, min: 0,
message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->" message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->"
}, },
negativenumber: { negativenumber: {
name: "Negativenumber", name: "Negativenumber",
type: "max", type: "max",
max: 0, max: 0,
message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->" message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->"
}, },
required: { required: {
name: "Required", name: "Required",
type: "required", type: "required",
message: "This is required<!-- data-validator-required-message to override -->" message: "This is required<!-- data-validator-required-message to override -->"
}, },
checkone: { checkone: {
name: "Checkone", name: "Checkone",
type: "minchecked", type: "minchecked",
minchecked: 1, minchecked: 1,
message: "Check at least one option<!-- data-validation-checkone-message to override -->" message: "Check at least one option<!-- data-validation-checkone-message to override -->"
} }
} }
}; };
var formatValidatorName = function (name) { var formatValidatorName = function(name) {
return name return name
.toLowerCase() .toLowerCase()
.replace( .replace(
/(^|\s)([a-z])/g , /(^|\s)([a-z])/g,
function(m,p1,p2) { function(m, p1, p2) {
return p1+p2.toUpperCase(); return p1 + p2.toUpperCase();
} }
) );
; };
};
var getValue = function ($this) { var getValue = function($this) {
// Extract the value we're talking about // Extract the value we're talking about
var value = $this.val(); var value = $this.val();
var type = $this.attr("type"); var type = $this.attr("type");
if (type === "checkbox") { if (type === "checkbox") {
value = ($this.is(":checked") ? value : ""); value = ($this.is(":checked") ? value : "");
} }
if (type === "radio") { if (type === "radio") {
value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
} }
return value; return value;
}; };
function regexFromString(inputstring) { function regexFromString(inputstring) {
return new RegExp("^" + inputstring + "$"); return new RegExp("^" + inputstring + "$");
} }
/** /**
* Thanks to Jason Bunting via StackOverflow.com * Thanks to Jason Bunting via StackOverflow.com
* *
* http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
* Short link: http://tinyurl.com/executeFunctionByName * Short link: http://tinyurl.com/executeFunctionByName
**/ **/
function executeFunctionByName(functionName, context /*, args*/) { function executeFunctionByName(functionName, context /*, args*/ ) {
var args = Array.prototype.slice.call(arguments).splice(2); var args = Array.prototype.slice.call(arguments).splice(2);
var namespaces = functionName.split("."); var namespaces = functionName.split(".");
var func = namespaces.pop(); var func = namespaces.pop();
for(var i = 0; i < namespaces.length; i++) { for (var i = 0; i < namespaces.length; i++) {
context = context[namespaces[i]]; context = context[namespaces[i]];
} }
return context[func].apply(this, args); return context[func].apply(this, args);
} }
$.fn.jqBootstrapValidation = function( method ) { $.fn.jqBootstrapValidation = function(method) {
if ( defaults.methods[method] ) { if (defaults.methods[method]) {
return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); return defaults.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if ( typeof method === 'object' || ! method ) { } else if (typeof method === 'object' || !method) {
return defaults.methods.init.apply( this, arguments ); return defaults.methods.init.apply(this, arguments);
} else { } else {
$.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' ); $.error('Method ' + method + ' does not exist on jQuery.jqBootstrapValidation');
return null; return null;
} }
};
$.jqBootstrapValidation = function (options) {
$(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments);
}; };
})( jQuery ); $.jqBootstrapValidation = function(options) {
$(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments);
};
})(jQuery);

View File

@ -1,44 +1,44 @@
{ {
"title": "Agency", "title": "Agency",
"name": "startbootstrap-agency", "name": "startbootstrap-agency",
"version": "4.0.0-alpha", "version": "4.0.0-alpha",
"description": "Agency is a one page HTML theme for Bootstrap.", "description": "Agency is a one page HTML theme for Bootstrap.",
"keywords": [ "keywords": [
"css", "css",
"sass", "sass",
"html", "html",
"responsive", "responsive",
"theme", "theme",
"template" "template"
], ],
"homepage": "http://startbootstrap.com/template-overviews/agency", "homepage": "http://startbootstrap.com/template-overviews/agency",
"bugs": { "bugs": {
"url": "https://github.com/BlackrockDigital/startbootstrap-agency/issues", "url": "https://github.com/BlackrockDigital/startbootstrap-agency/issues",
"email": "feedback@startbootstrap.com" "email": "feedback@startbootstrap.com"
}, },
"license": "MIT", "license": "MIT",
"author": "Start Bootstrap", "author": "Start Bootstrap",
"contributors": [ "contributors": [
"David Miller (http://davidmiller.io/)" "David Miller (http://davidmiller.io/)"
], ],
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/BlackrockDigital/startbootstrap-agency.git" "url": "https://github.com/BlackrockDigital/startbootstrap-agency.git"
}, },
"dependencies": { "dependencies": {
"bootstrap": "^4.0.0-alpha.6", "bootstrap": "^4.0.0-beta",
"font-awesome": "4.7.0", "font-awesome": "4.7.0",
"jquery": "^3.2.1", "jquery": "^3.2.1",
"jquery.easing": "^1.4.1", "jquery.easing": "^1.4.1",
"tether": "^1.4.0" "popper.js": "^1.11.1"
}, },
"devDependencies": { "devDependencies": {
"browser-sync": "^2.18.8", "browser-sync": "2.18.13",
"gulp": "^3.9.1", "gulp": "^3.9.1",
"gulp-clean-css": "3.2.0", "gulp-clean-css": "3.7.0",
"gulp-header": "1.8.8", "gulp-header": "1.8.9",
"gulp-rename": "^1.2.2", "gulp-rename": "^1.2.2",
"gulp-sass": "^3.1.0", "gulp-sass": "^3.1.0",
"gulp-uglify": "^2.1.2" "gulp-uglify": "3.0.0"
} }
} }

View File

@ -1,19 +1,19 @@
// Bootstrap overrides for this template // Bootstrap overrides for this template
.text-primary { .text-primary {
color: $theme-primary !important; color: $theme-primary !important;
} }
.btn-primary { .btn-primary {
font-weight: 700; font-weight: 700;
@include button-variant(white, $theme-primary, $theme-primary); @include button-variant(white, $theme-primary, $theme-primary);
@include heading-font; @include heading-font;
} }
.btn-xl { .btn-xl {
font-size: 18px; font-size: 18px;
font-weight: 700; font-weight: 700;
padding: 20px 40px; padding: 20px 40px;
border-radius: 3px; border-radius: 3px;
@include button-variant(white, $theme-primary, $theme-primary); @include button-variant(white, $theme-primary, $theme-primary);
@include heading-font; @include heading-font;
} }

View File

@ -1,52 +1,52 @@
// Styling for the contact section // Styling for the contact section
section#contact { section#contact {
background-color: $gray-darker; background-color: $gray-darker;
background-image: url('../img/map-image.png'); background-image: url('../img/map-image.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
.section-heading { .section-heading {
color: white; color: white;
}
.form-group {
margin-bottom: 25px;
input,
textarea {
padding: 20px;
} }
.form-group { input.form-control {
margin-bottom: 25px; height: auto;
input,
textarea {
padding: 20px;
}
input.form-control {
height: auto;
}
textarea.form-control {
height: 236px;
}
} }
.form-control:focus { textarea.form-control {
border-color: $theme-primary; height: 236px;
box-shadow: none;
}
::-webkit-input-placeholder {
font-weight: 700;
color: $gray-lighter;
@include heading-font;
}
:-moz-placeholder {
font-weight: 700;
color: $gray-lighter;
/* Firefox 18- */
@include heading-font;
}
::-moz-placeholder {
font-weight: 700;
color: $gray-lighter;
/* Firefox 19+ */
@include heading-font;
}
:-ms-input-placeholder {
font-weight: 700;
color: $gray-lighter;
@include heading-font;
}
.text-danger {
color: $theme-danger;
} }
}
.form-control:focus {
border-color: $theme-primary;
box-shadow: none;
}
::-webkit-input-placeholder {
font-weight: 700;
color: $gray-lighter;
@include heading-font;
}
:-moz-placeholder {
font-weight: 700;
color: $gray-lighter;
/* Firefox 18- */
@include heading-font;
}
::-moz-placeholder {
font-weight: 700;
color: $gray-lighter;
/* Firefox 19+ */
@include heading-font;
}
:-ms-input-placeholder {
font-weight: 700;
color: $gray-lighter;
@include heading-font;
}
.text-danger {
color: $theme-danger;
}
} }

View File

@ -1,43 +1,43 @@
// Styling for the footer // Styling for the footer
footer { footer {
padding: 25px 0; padding: 25px 0;
text-align: center; text-align: center;
span.copyright { span.copyright {
font-size: 90%; font-size: 90%;
line-height: 40px; line-height: 40px;
text-transform: none; text-transform: none;
@include heading-font; @include heading-font;
} }
ul.quicklinks { ul.quicklinks {
font-size: 90%; font-size: 90%;
line-height: 40px; line-height: 40px;
margin-bottom: 0; margin-bottom: 0;
text-transform: none; text-transform: none;
@include heading-font; @include heading-font;
} }
} }
ul.social-buttons { ul.social-buttons {
margin-bottom: 0; margin-bottom: 0;
li { li {
a { a {
font-size: 20px; font-size: 20px;
line-height: 40px; line-height: 40px;
display: block; display: block;
width: 40px; width: 40px;
height: 40px; height: 40px;
-webkit-transition: all .3s; -webkit-transition: all 0.3s;
-moz-transition: all .3s; -moz-transition: all 0.3s;
transition: all .3s; transition: all 0.3s;
color: white; color: white;
border-radius: 100%; border-radius: 100%;
outline: none; outline: none;
background-color: $gray-darker; background-color: $gray-darker;
&:hover, &:active,
&:focus, &:focus,
&:active { &:hover {
background-color: $theme-primary; background-color: $theme-primary;
} }
}
} }
}
} }

View File

@ -1,21 +1,21 @@
// Global styling for this template // Global styling for this template
body { body {
overflow-x: hidden; overflow-x: hidden;
@include body-font; @include body-font;
} }
p { p {
line-height: 1.75; line-height: 1.75;
} }
a { a {
color: $theme-primary; color: $theme-primary;
&:hover, &.active,
&:focus, &:active,
&:active, &:focus,
&.active { &:hover {
color: darken($theme-primary, 10%); color: darken($theme-primary, 10%);
} }
} }
h1, h1,
@ -24,52 +24,51 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-weight: 700; font-weight: 700;
@include heading-font; @include heading-font;
} }
section { section {
padding: 100px 0; padding: 100px 0;
h2.section-heading { h2.section-heading {
font-size: 40px; font-size: 40px;
margin-top: 0; margin-top: 0;
margin-bottom: 15px; margin-bottom: 15px;
} }
h3.section-subheading { h3.section-subheading {
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
font-style: italic; font-style: italic;
margin-bottom: 75px; margin-bottom: 75px;
text-transform: none; text-transform: none;
@include serif-font; @include serif-font;
} }
} }
@media(min-width:768px) { @media(min-width:768px) {
section { section {
padding: 150px 0; padding: 150px 0;
} }
} }
// Highlight color customization // Highlight color customization
::-moz-selection { ::-moz-selection {
background: $theme-primary; background: $theme-primary;
text-shadow: none; text-shadow: none;
} }
::selection { ::selection {
background: $theme-primary; background: $theme-primary;
text-shadow: none; text-shadow: none;
} }
img::selection { img::selection {
background: transparent; background: transparent;
} }
img::-moz-selection { img::-moz-selection {
background: transparent; background: transparent;
} }
body { body {
-webkit-tap-highlight-color: $theme-primary; -webkit-tap-highlight-color: $theme-primary;
} }

View File

@ -1,51 +1,50 @@
// Styling for the masthead // Styling for the masthead
header.masthead { header.masthead {
text-align: center; text-align: center;
color: white; color: white;
background-image: url('../img/header-bg.jpg'); background-image: url('../img/header-bg.jpg');
background-repeat: no-repeat; background-repeat: no-repeat;
background-attachment: scroll; background-attachment: scroll;
background-position: center center; background-position: center center;
@include background-cover; @include background-cover;
.intro-text { .intro-text {
padding-top: 100px; padding-top: 150px;
padding-bottom: 50px; padding-bottom: 100px;
.intro-lead-in { .intro-lead-in {
font-size: 22px; font-size: 22px;
font-style: italic; font-style: italic;
line-height: 22px; line-height: 22px;
margin-bottom: 25px; margin-bottom: 25px;
@include serif-font; @include serif-font;
}
.intro-heading {
font-size: 50px;
font-weight: 700;
line-height: 50px;
margin-bottom: 25px;
@include heading-font;
}
} }
.intro-heading {
font-size: 50px;
font-weight: 700;
line-height: 50px;
margin-bottom: 25px;
@include heading-font;
}
}
} }
@media(min-width:768px) { @media(min-width:768px) {
header.masthead { header.masthead {
.intro-text { .intro-text {
padding-top: 300px; padding-top: 300px;
padding-bottom: 200px; padding-bottom: 200px;
.intro-lead-in { .intro-lead-in {
font-size: 40px; font-size: 40px;
font-style: italic; font-style: italic;
line-height: 40px; line-height: 40px;
margin-bottom: 25px; margin-bottom: 25px;
@include serif-font; @include serif-font;
} }
.intro-heading { .intro-heading {
font-size: 75px; font-size: 75px;
font-weight: 700; font-weight: 700;
line-height: 75px; line-height: 75px;
margin-bottom: 50px; margin-bottom: 50px;
@include heading-font; @include heading-font;
} }
}
} }
}
} }

View File

@ -1,77 +1,74 @@
// Mixins // Mixins
// Bootstrap Button Variant // Bootstrap Button Variant
@mixin button-variant($color, $background, $border) { @mixin button-variant($color, $background, $border) {
color: $color;
border-color: $border;
background-color: $background;
&.focus,
&:focus {
color: $color; color: $color;
border-color: $border; border-color: darken($border, 25%);
background-color: $background; background-color: darken($background, 10%);
}
&:hover {
color: $color;
border-color: darken($border, 12%);
background-color: darken($background, 10%);
}
&.active,
&:active,
.open > &.dropdown-toggle {
color: $color;
border-color: darken($border, 12%);
background-color: darken($background, 10%);
&.focus,
&:focus, &:focus,
&.focus {
color: $color;
border-color: darken($border, 25%);
background-color: darken($background, 10%);
}
&:hover { &:hover {
color: $color; color: $color;
border-color: darken($border, 12%); border-color: darken($border, 25%);
background-color: darken($background, 10%); background-color: darken($background, 17%);
} }
&:active, }
&.active, &.active,
.open > &.dropdown-toggle { &:active,
color: $color; .open > &.dropdown-toggle {
border-color: darken($border, 12%); background-image: none;
background-color: darken($background, 10%); }
&:hover, &.disabled,
&:focus, &[disabled],
&.focus { fieldset[disabled] & {
color: $color; &.focus,
border-color: darken($border, 25%); &:focus,
background-color: darken($background, 17%); &:hover {
} border-color: $border;
} background-color: $background;
&:active,
&.active,
.open > &.dropdown-toggle {
background-image: none;
}
&.disabled,
&[disabled],
fieldset[disabled] & {
&:hover,
&:focus,
&.focus {
border-color: $border;
background-color: $background;
}
}
.badge {
color: $background;
background-color: $color;
} }
}
.badge {
color: $background;
background-color: $color;
}
} }
// Background Cover Mixin // Background Cover Mixin
@mixin background-cover { @mixin background-cover {
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;
background-size: cover; background-size: cover;
} }
// Font Mixins // Font Mixins
@mixin serif-font { @mixin serif-font {
font-family: 'Droid Serif', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Droid Serif', 'Helvetica Neue', Helvetica, Arial, sans-serif;
} }
@mixin script-font { @mixin script-font {
font-family: 'Kaushan Script', 'Helvetica Neue', Helvetica, Arial, cursive; font-family: 'Kaushan Script', 'Helvetica Neue', Helvetica, Arial, cursive;
} }
@mixin body-font { @mixin body-font {
font-family: 'Roboto Slab', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Roboto Slab', 'Helvetica Neue', Helvetica, Arial, sans-serif;
} }
@mixin heading-font { @mixin heading-font {
font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-transform: uppercase; text-transform: uppercase;
} }

View File

@ -1,75 +1,73 @@
// Styling for the navbar // Styling for the navbar
#mainNav { #mainNav {
background-color: $gray-darker; background-color: $gray-darker;
.navbar-toggler { .navbar-toggler {
font-size: 12px; font-size: 12px;
right: 0; right: 0;
padding: 13px; padding: 13px;
text-transform: uppercase; text-transform: uppercase;
color: white;
border: 0;
background-color: $theme-primary;
@include heading-font;
}
.navbar-brand {
color: $theme-primary;
@include script-font;
&.active,
&:active,
&:focus,
&:hover {
color: darken($theme-primary, 10%);
}
}
.navbar-nav {
.nav-item {
.nav-link {
font-size: 90%;
font-weight: 400;
padding: 0.75em 0;
letter-spacing: 1px;
color: white; color: white;
border: 0;
background-color: $theme-primary;
@include heading-font; @include heading-font;
} &.active,
.container { &:hover {
padding: 0; color: $theme-primary;
.navbar-brand {
color: $theme-primary;
@include script-font;
&:hover,
&:focus,
&:active,
&.active {
color: darken($theme-primary, 10%);
}
}
.navbar-nav {
.nav-item {
.nav-link {
font-size: 90%;
font-weight: 400;
padding: .75em 0;
letter-spacing: 1px;
color: white;
@include heading-font;
&:hover,
&.active {
color: $theme-primary;
}
}
}
} }
}
} }
}
} }
@media(min-width:992px) { @media(min-width:992px) {
#mainNav { #mainNav {
padding: 25px 0; padding-top: 25px;
-webkit-transition: padding .3s; padding-bottom: 25px;
-moz-transition: padding .3s; -webkit-transition: padding-top 0.3s, padding-bottom 0.3s;
transition: padding .3s; -moz-transition: padding-top 0.3s, padding-bottom 0.3s;
border: none; transition: padding-top 0.3s, padding-bottom 0.3s;
background-color: transparent; border: none;
.navbar-brand { background-color: transparent;
font-size: 1.75em; .navbar-brand {
-webkit-transition: all .3s; font-size: 1.75em;
-moz-transition: all .3s; -webkit-transition: all 0.3s;
transition: all .3s; -moz-transition: all 0.3s;
} transition: all 0.3s;
.navbar-nav {
.nav-item {
.nav-link {
padding: 1.1em 1em !important;
}
}
}
&.navbar-shrink {
padding: 0;
background-color: $gray-darker;
.navbar-brand {
font-size: 1.25em;
padding: 12px 0;
}
}
} }
.navbar-nav {
.nav-item {
.nav-link {
padding: 1.1em 1em !important;
}
}
}
&.navbar-shrink {
padding-top: 0;
padding-bottom: 0;
background-color: $gray-darker;
.navbar-brand {
font-size: 1.25em;
padding: 12px 0;
}
}
}
} }

View File

@ -1,152 +1,151 @@
// Styling for the portfolio section // Styling for the portfolio section
#portfolio { #portfolio {
.portfolio-item { .portfolio-item {
right: 0; right: 0;
margin: 0 0 15px; margin: 0 0 15px;
.portfolio-link { .portfolio-link {
position: relative; position: relative;
display: block; display: block;
max-width: 400px; max-width: 400px;
margin: 0 auto; margin: 0 auto;
cursor: pointer; cursor: pointer;
.portfolio-hover { .portfolio-hover {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 100%; height: 100%;
-webkit-transition: all ease .5s; -webkit-transition: all ease 0.5s;
-moz-transition: all ease .5s; -moz-transition: all ease 0.5s;
transition: all ease .5s; transition: all ease 0.5s;
opacity: 0; opacity: 0;
background: fade-out($theme-primary, .1); background: fade-out($theme-primary, .1);
&:hover { &:hover {
opacity: 1; opacity: 1;
}
.portfolio-hover-content {
font-size: 20px;
position: absolute;
top: 50%;
width: 100%;
height: 20px;
margin-top: -12px;
text-align: center;
color: white;
i {
margin-top: -12px;
}
h3,
h4 {
margin: 0;
}
}
}
} }
.portfolio-caption { .portfolio-hover-content {
max-width: 400px; font-size: 20px;
margin: 0 auto; position: absolute;
padding: 25px; top: 50%;
text-align: center; width: 100%;
background-color: white; height: 20px;
h4 { margin-top: -12px;
margin: 0; text-align: center;
text-transform: none; color: white;
} i {
p { margin-top: -12px;
font-size: 16px; }
font-style: italic; h3,
margin: 0; h4 {
@include serif-font; margin: 0;
} }
} }
}
} }
* { .portfolio-caption {
z-index: 2; max-width: 400px;
margin: 0 auto;
padding: 25px;
text-align: center;
background-color: white;
h4 {
margin: 0;
text-transform: none;
}
p {
font-size: 16px;
font-style: italic;
margin: 0;
@include serif-font;
}
} }
}
* {
z-index: 2;
}
} }
@media(min-width:767px) { @media(min-width:767px) {
#portfolio { #portfolio {
.portfolio-item { .portfolio-item {
margin: 0 0 30px; margin: 0 0 30px;
}
} }
}
} }
.portfolio-modal { .portfolio-modal {
.modal-dialog { .modal-dialog {
max-width: none; max-width: none;
height: 100%; height: 100%;
margin: 0; margin: 0;
}
.modal-content {
min-height: 100%;
padding: 100px 0;
text-align: center;
border: none;
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
h2 {
font-size: 3em;
margin-bottom: 15px;
} }
.modal-content { p {
min-height: 100%; margin-bottom: 30px;
padding: 100px 0;
text-align: center;
border: none;
border-radius: 0;
background-clip: border-box;
-webkit-box-shadow: none;
box-shadow: none;
h2 {
font-size: 3em;
margin-bottom: 15px;
}
p {
margin-bottom: 30px;
}
p.item-intro {
font-size: 16px;
font-style: italic;
margin: 20px 0 30px;
@include serif-font;
}
ul.list-inline {
margin-top: 0;
margin-bottom: 30px;
}
img {
margin-bottom: 30px;
}
button {
cursor: pointer;
}
} }
.close-modal { p.item-intro {
position: absolute; font-size: 16px;
top: 25px; font-style: italic;
right: 25px; margin: 20px 0 30px;
width: 75px; @include serif-font;
}
ul.list-inline {
margin-top: 0;
margin-bottom: 30px;
}
img {
margin-bottom: 30px;
}
button {
cursor: pointer;
}
}
.close-modal {
position: absolute;
top: 25px;
right: 25px;
width: 75px;
height: 75px;
cursor: pointer;
background-color: transparent;
&:hover {
opacity: 0.3;
}
.lr {
/* Safari and Chrome */
z-index: 1051;
width: 1px;
height: 75px;
margin-left: 35px;
/* IE 9 */
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
background-color: $gray-darker;
.rl {
/* Safari and Chrome */
z-index: 1052;
width: 1px;
height: 75px; height: 75px;
cursor: pointer; /* IE 9 */
background-color: transparent; -webkit-transform: rotate(90deg);
&:hover { -ms-transform: rotate(90deg);
opacity: .3; transform: rotate(90deg);
} background-color: $gray-darker;
.lr { }
/* Safari and Chrome */
z-index: 1051;
width: 1px;
height: 75px;
margin-left: 35px;
/* IE 9 */
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
background-color: $gray-darker;
.rl {
/* Safari and Chrome */
z-index: 1052;
width: 1px;
height: 75px;
/* IE 9 */
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
background-color: $gray-darker;
}
}
}
.modal-backdrop {
display: none;
opacity: 0;
} }
}
.modal-backdrop {
display: none;
opacity: 0;
}
} }

View File

@ -1,5 +1,5 @@
// Styling for the services section // Styling for the services section
.service-heading { .service-heading {
margin: 15px 0; margin: 15px 0;
text-transform: none; text-transform: none;
} }

View File

@ -1,18 +1,18 @@
// Styling for the team section // Styling for the team section
.team-member { .team-member {
margin-bottom: 50px; margin-bottom: 50px;
text-align: center; text-align: center;
img { img {
width: 225px; width: 225px;
height: 225px; height: 225px;
border: 7px solid white; border: 7px solid white;
} }
h4 { h4 {
margin-top: 25px; margin-top: 25px;
margin-bottom: 0; margin-bottom: 0;
text-transform: none; text-transform: none;
} }
p { p {
margin-top: 0; margin-top: 0;
} }
} }

View File

@ -1,181 +1,178 @@
// Styling for the timeline section // Styling for the timeline section
.timeline { .timeline {
position: relative;
padding: 0;
list-style: none;
&:before {
position: absolute;
top: 0;
bottom: 0;
left: 40px;
width: 2px;
margin-left: -1.5px;
content: '';
background-color: #f1f1f1;
}
> li {
position: relative; position: relative;
padding: 0; min-height: 50px;
list-style: none; margin-bottom: 50px;
&:after,
&:before { &:before {
position: absolute; display: table;
top: 0; content: ' ';
bottom: 0; }
left: 40px; &:after {
width: 2px; clear: both;
margin-left: -1.5px; }
content: ''; .timeline-panel {
background-color: #f1f1f1; position: relative;
float: right;
width: 100%;
padding: 0 20px 0 100px;
text-align: left;
&:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
&:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
}
.timeline-image {
position: absolute;
z-index: 100;
left: 0;
width: 80px;
height: 80px;
margin-left: 0;
text-align: center;
color: white;
border: 7px solid #f1f1f1;
border-radius: 100%;
background-color: $theme-primary;
h4 {
font-size: 10px;
line-height: 14px;
margin-top: 12px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
padding: 0 20px 0 100px;
text-align: left;
&:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
&:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
}
&:last-child {
margin-bottom: 0;
}
}
.timeline-heading {
h4 {
margin-top: 0;
color: inherit;
&.subheading {
text-transform: none;
}
}
}
.timeline-body {
> ul,
> p {
margin-bottom: 0;
}
}
}
@media(min-width:768px) {
.timeline {
&:before {
left: 50%;
} }
> li { > li {
position: relative; min-height: 100px;
min-height: 50px; margin-bottom: 100px;
margin-bottom: 50px; .timeline-panel {
&:before, float: left;
&:after { width: 41%;
display: table; padding: 0 20px 20px 30px;
content: ' '; text-align: right;
} }
&:after { .timeline-image {
clear: both; left: 50%;
} width: 100px;
.timeline-panel { height: 100px;
position: relative; margin-left: -50px;
float: right;
width: 100%;
padding: 0 20px 0 100px;
text-align: left;
&:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
&:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
}
.timeline-image {
position: absolute;
z-index: 100;
left: 0;
width: 80px;
height: 80px;
margin-left: 0;
text-align: center;
color: white;
border: 7px solid #f1f1f1;
border-radius: 100%;
background-color: $theme-primary;
h4 {
font-size: 10px;
line-height: 14px;
margin-top: 12px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
padding: 0 20px 0 100px;
text-align: left;
&:before {
right: auto;
left: -15px;
border-right-width: 15px;
border-left-width: 0;
}
&:after {
right: auto;
left: -14px;
border-right-width: 14px;
border-left-width: 0;
}
}
&:last-child {
margin-bottom: 0;
}
}
.timeline-heading {
h4 { h4 {
margin-top: 0; font-size: 13px;
color: inherit; line-height: 18px;
&.subheading { margin-top: 16px;
text-transform: none;
}
}
}
.timeline-body {
> p,
> ul {
margin-bottom: 0;
} }
}
&.timeline-inverted > .timeline-panel {
float: right;
padding: 0 30px 20px 20px;
text-align: left;
}
} }
}
} }
@media(min-width:768px) {
.timeline {
&:before {
left: 50%;
}
> li {
min-height: 100px;
margin-bottom: 100px;
.timeline-panel {
float: left;
width: 41%;
padding: 0 20px 20px 30px;
text-align: right;
}
.timeline-image {
left: 50%;
width: 100px;
height: 100px;
margin-left: -50px;
h4 {
font-size: 13px;
line-height: 18px;
margin-top: 16px;
}
}
&.timeline-inverted > .timeline-panel {
float: right;
padding: 0 30px 20px 20px;
text-align: left;
}
}
}
}
@media(min-width:992px) { @media(min-width:992px) {
.timeline { .timeline {
> li { > li {
min-height: 150px; min-height: 150px;
.timeline-panel { .timeline-panel {
padding: 0 20px 20px; padding: 0 20px 20px;
} }
.timeline-image { .timeline-image {
width: 150px; width: 150px;
height: 150px; height: 150px;
margin-left: -75px; margin-left: -75px;
h4 { h4 {
font-size: 18px; font-size: 18px;
line-height: 26px; line-height: 26px;
margin-top: 30px; margin-top: 30px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 20px 20px;
}
} }
}
&.timeline-inverted > .timeline-panel {
padding: 0 20px 20px;
}
} }
}
} }
@media(min-width:1200px) { @media(min-width:1200px) {
.timeline { .timeline {
> li { > li {
min-height: 170px; min-height: 170px;
.timeline-panel { .timeline-panel {
padding: 0 20px 20px 100px; padding: 0 20px 20px 100px;
} }
.timeline-image { .timeline-image {
width: 170px; width: 170px;
height: 170px; height: 170px;
margin-left: -85px; margin-left: -85px;
h4 { h4 {
margin-top: 40px; margin-top: 40px;
}
}
&.timeline-inverted > .timeline-panel {
padding: 0 100px 20px 20px;
}
} }
}
&.timeline-inverted > .timeline-panel {
padding: 0 100px 20px 20px;
}
} }
}
} }

View File

@ -2,12 +2,12 @@
// Gray and Brand Colors for use across theme // Gray and Brand Colors for use across theme
$theme-primary: #fed136; $theme-primary: #fed136;
$theme-danger: #e74c3c; $theme-danger: #e74c3c;
$gray-base: #000 !default; $gray-base: #000 !default;
$gray-darker: lighten($gray-base, 13.5%) !default; // #222 $gray-darker: lighten($gray-base, 13.5%) !default;
$gray-dark: lighten($gray-base, 20%) !default; // #333 $gray-dark: lighten($gray-base, 20%) !default;
$gray: lighten($gray-base, 33.5%) !default; // #555 $gray: lighten($gray-base, 33.5%) !default;
$gray-light: lighten($gray-base, 46.7%) !default; // #777 $gray-light: lighten($gray-base, 46.7%) !default;
$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee $gray-lighter: lighten($gray-base, 93.5%) !default;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,274 +1,34 @@
/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
html { html {
box-sizing: border-box;
font-family: sans-serif; font-family: sans-serif;
line-height: 1.15; line-height: 1.15;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
} -ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
body { -webkit-tap-highlight-color: transparent;
margin: 0;
}
article,
aside,
footer,
header,
nav,
section {
display: block;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
figcaption,
figure,
main {
display: block;
}
figure {
margin: 1em 40px;
}
hr {
-webkit-box-sizing: content-box;
box-sizing: content-box;
height: 0;
overflow: visible;
}
pre {
font-family: monospace, monospace;
font-size: 1em;
}
a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:active,
a:hover {
outline-width: 0;
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}
b,
strong {
font-weight: inherit;
}
b,
strong {
font-weight: bolder;
}
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
dfn {
font-style: italic;
}
mark {
background-color: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
audio,
video {
display: inline-block;
}
audio:not([controls]) {
display: none;
height: 0;
}
img {
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif;
font-size: 100%;
line-height: 1.15;
margin: 0;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
progress {
display: inline-block;
vertical-align: baseline;
}
textarea {
overflow: auto;
}
[type="checkbox"],
[type="radio"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
details,
menu {
display: block;
}
summary {
display: list-item;
}
canvas {
display: inline-block;
}
template {
display: none;
}
[hidden] {
display: none;
}
html {
-webkit-box-sizing: border-box;
box-sizing: border-box;
} }
*, *,
*::before, *::before,
*::after { *::after {
-webkit-box-sizing: inherit; box-sizing: inherit;
box-sizing: inherit;
} }
@-ms-viewport { @-ms-viewport {
width: device-width; width: device-width;
} }
html { article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
-ms-overflow-style: scrollbar; display: block;
-webkit-tap-highlight-color: transparent;
} }
body { body {
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 1rem; font-size: 1rem;
font-weight: normal; font-weight: normal;
line-height: 1.5; line-height: 1.5;
color: #292b2c; color: #212529;
background-color: #fff; background-color: #fff;
} }
@ -276,6 +36,12 @@ body {
outline: none !important; outline: none !important;
} }
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
margin-top: 0; margin-top: 0;
margin-bottom: .5rem; margin-bottom: .5rem;
@ -288,7 +54,11 @@ p {
abbr[title], abbr[title],
abbr[data-original-title] { abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help; cursor: help;
border-bottom: 0;
} }
address { address {
@ -324,13 +94,44 @@ blockquote {
margin: 0 0 1rem; margin: 0 0 1rem;
} }
a { dfn {
color: #0275d8; font-style: italic;
text-decoration: none;
} }
a:focus, a:hover { b,
color: #014c8c; strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline; text-decoration: underline;
} }
@ -348,6 +149,14 @@ a:not([href]):not([tabindex]):focus {
outline: 0; outline: 0;
} }
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre { pre {
margin-top: 0; margin-top: 0;
margin-bottom: 1rem; margin-bottom: 1rem;
@ -360,10 +169,11 @@ figure {
img { img {
vertical-align: middle; vertical-align: middle;
border-style: none;
} }
[role="button"] { svg:not(:root) {
cursor: pointer; overflow: hidden;
} }
a, a,
@ -381,13 +191,12 @@ textarea {
table { table {
border-collapse: collapse; border-collapse: collapse;
background-color: transparent;
} }
caption { caption {
padding-top: 0.75rem; padding-top: 0.75rem;
padding-bottom: 0.75rem; padding-bottom: 0.75rem;
color: #636c72; color: #868e96;
text-align: left; text-align: left;
caption-side: bottom; caption-side: bottom;
} }
@ -409,13 +218,43 @@ button:focus {
input, input,
button, button,
select, select,
optgroup,
textarea { textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit; line-height: inherit;
} }
input[type="radio"]:disabled, button,
input[type="checkbox"]:disabled { input {
cursor: not-allowed; overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
} }
input[type="date"], input[type="date"],
@ -426,6 +265,7 @@ input[type="month"] {
} }
textarea { textarea {
overflow: auto;
resize: vertical; resize: vertical;
} }
@ -439,20 +279,51 @@ fieldset {
legend { legend {
display: block; display: block;
width: 100%; width: 100%;
max-width: 100%;
padding: 0; padding: 0;
margin-bottom: .5rem; margin-bottom: .5rem;
font-size: 1.5rem; font-size: 1.5rem;
line-height: inherit; line-height: inherit;
color: inherit;
white-space: normal;
} }
input[type="search"] { progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none; -webkit-appearance: none;
} }
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output { output {
display: inline-block; display: inline-block;
} }
summary {
display: list-item;
}
template {
display: none;
}
[hidden] { [hidden] {
display: none !important; display: none !important;
} }

View File

@ -1 +1,2 @@
/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */ html{box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{box-sizing:inherit}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

2438
vendor/popper/popper.js vendored Normal file

File diff suppressed because it is too large Load Diff

5
vendor/popper/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1811
vendor/tether/tether.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long