@import url("https://fonts.googleapis.com/css?family=Roboto+Condensed:400,300,700");
@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,300,400italic,300italic,600,600italic,700,700italic,800,800italic");

@font-face {
    font-family: 'icomoon';
    src:    url('../fonts/icomoon.eot?z8h1zd');
    src:    url('../fonts/icomoon.eot?z8h1zd#iefix') format('embedded-opentype'),
        url('../fonts/icomoon.ttf?z8h1zd') format('truetype'),
        url('../fonts/icomoon.woff?z8h1zd') format('woff'),
        url('../fonts/icomoon.svg?z8h1zd#icomoon') format('svg');
    font-weight: normal;
    font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
    /* use !important to prevent issues with browser extensions that change fonts */
    font-family: 'icomoon' !important;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon-envelope:before {
    content: "\e903";
}
.icon-twitter:before {
    content: "\e901";
}
.icon-slack:before {
  content: "\e909";
}
.icon-keyboard_arrow_right:before {
  content: "\e900";
}


.slack {
	background:url('../images/slack_mark_16px.png') no-repeat 0 center;
	padding-left:21px;
}
.github {
	background:url('../images/github.png') no-repeat 0 center;
	padding-left:21px;
}
.mail {
	background:url('../images/mail.png') no-repeat 0 center;
	padding-left:21px;
}
.jira {
	background:url('../images/jira.png') no-repeat 0 center;
	padding-left:21px;
}
.twitter-icon {
	background:url('../images/twitter-icon.png') no-repeat 0 center;
	padding-left:21px;
}

/* Made with Bones: http://themble.com/bones :) */
/******************************************************************
Site Name:
Author:

Stylesheet: Main Stylesheet

Here's where the magic happens. Here, you'll see we are calling in
the separate media queries. The base mobile goes outside any query
and is called at the beginning, after that we call the rest
of the styles inside media queries.

Helpful articles on Sass file organization:
http://thesassway.com/advanced/modular-css-naming-conventions

******************************************************************/
/*********************
IMPORTING PARTIALS
These files are needed at the beginning so that we establish all
our mixins, functions, and variables that we'll be using across
the whole project.
*********************/
/* normalize.css 2012-07-07T09:50 UTC - http://github.com/necolas/normalize.css */
/* ========================================================================== HTML5 display definitions ========================================================================== */
/** Correct `block` display not defined in IE 8/9. */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }

/** Correct `inline-block` display not defined in IE 8/9. */
audio, canvas, video { display: inline-block; }

/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
audio:not([controls]) { display: none; height: 0; }

/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */
[hidden], template { display: none; }

/* ========================================================================== Base ========================================================================== */
/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }

/** Remove default margin. */
body { margin: 0; }

/* ========================================================================== Links ========================================================================== */
/** Remove the gray background color from active links in IE 10. */
a { background: transparent; }

/** Address `outline` inconsistency between Chrome and other browsers. */
a:focus { outline: thin dotted; }

/** Improve readability when focused and also mouse hovered in all browsers. */
a:active, a:hover { outline: 0; }

/* ========================================================================== Typography ========================================================================== */
/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */
h1 { font-size: 2em; margin: 0.67em 0; }

/** Address styling not present in IE 8/9, Safari 5, and Chrome. */
abbr[title] { border-bottom: 1px dotted; }

/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */
b, strong, .strong { font-weight: bold; }

/** Address styling not present in Safari 5 and Chrome. */
dfn, em, .em { font-style: italic; }

/** Address differences between Firefox and other browsers. */
hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; }

/* proper formatting (http://blog.fontdeck.com/post/9037028497/hyphens)
*/
p { -webkit-hyphens: auto; -epub-hyphens: auto; -moz-hyphens: auto; hyphens: auto; }

/* Addresses margins set differently in IE6/7. */
pre { margin: 0; }

/** Correct font family set oddly in Safari 5 and Chrome. */
code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; }

/** Improve readability of pre-formatted text in all browsers. */
pre { white-space: pre-wrap; }

/** Set consistent quote types. */
q { quotes: "\201C" "\201D" "\2018" "\2019" "\2020"; }

/** Address inconsistent and variable font size in all browsers. */
q:before, q:after { content: ''; content: none; }

small, .small { font-size: 75%; }

/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }

sup { top: -0.5em; }

sub { bottom: -0.25em; }

/* ========================================================================== Lists
========================================================================== */
/* Addresses margins set differently in IE6/7. */
dl, menu, ol, ul { margin: 1em 0; }

dd { margin: 0; }

/* Addresses paddings set differently in IE6/7. */
menu { padding: 0 0 0 40px; }

ol, ul { padding: 0; /*list-style-type: none;*/ }

/* Corrects list images handled incorrectly in IE7. */
nav ul, nav ol { list-style: none; list-style-image: none; }

/* ========================================================================== Embedded content
========================================================================== */
/** Remove border when inside `a` element in IE 8/9. */
img { border: 0; }

/** Correct overflow displayed oddly in IE 9. */
svg:not(:root) { overflow: hidden; }

/* ========================================================================== Figures ========================================================================== */
/** Address margin not present in IE 8/9 and Safari 5. */
figure { margin: 0; }

/* ========================================================================== Forms ========================================================================== */
/** Define consistent border, margin, and padding. */
fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }

/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
legend { border: 0; /* 1 */ padding: 0; /* 2 */ }

/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }

/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
button, input { line-height: normal; }

/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
button, select { text-transform: none; }

/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }

/** Re-set default cursor for disabled elements. */
button[disabled], html input[disabled] { cursor: default; }

/** 1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }

/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }

/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }

/** Remove inner padding and border in Firefox 4+. */
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }

/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }

/* ========================================================================== Tables ========================================================================== */
/** Remove most spacing between table cells. */
table { border-collapse: collapse; border-spacing: 0; }

* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }

.image-replacement, .ir { text-indent: 100%; white-space: nowrap; overflow: hidden; }

.clearfix, .cf, .comment-respond { zoom: 1; }
.clearfix:before, .clearfix:after, .cf:before, .comment-respond:before, .cf:after, .comment-respond:after { content: ""; display: table; }
.clearfix:after, .cf:after, .comment-respond:after { clear: both; }

/*
use the best ampersand
http://simplebits.com/notebook/2008/08/14/ampersands-2/
*/
span.amp { font-family: Baskerville,'Goudy Old Style',Palatino,'Book Antiqua',serif !important; font-style: italic; }

/******************************************************************
Site Name:
Author:

Stylesheet: Variables

Here is where we declare all our variables like colors, fonts,
base values, and defaults. We want to make sure this file ONLY
contains variables that way our files don't get all messy.
No one likes a mess.

******************************************************************/
/*********************
COLORS
Need help w/ choosing your colors? Try this site out:
http://0to255.com/
*********************/
/*
Here's a great tutorial on how to
use color variables properly:
http://sachagreif.com/sass-color-variables/
*/
/******************************************************************
Site Name:
Author:

Stylesheet: Typography

Need to import a font or set of icons for your site? Drop them in
here or just use this to establish your typographical grid. Or not.
Do whatever you want to...GOSH!

Helpful Articles:
http://trentwalton.com/2012/06/19/fluid-type/
http://ia.net/blog/responsive-typography-the-basics/
http://alistapart.com/column/responsive-typography-is-a-physical-discipline

******************************************************************/
/*********************
FONT FACE (IN YOUR FACE)
*********************/
/*  To embed your own fonts, use this syntax and place your fonts inside the library/fonts folder. For more information on embedding fonts, go to: http://www.fontsquirrel.com/ Be sure to remove the comment brackets.
*/
/*  @font-face { font-family: 'Font Name'; src: url('../css/library/fonts/font-name.eot'); src: url('../css/library/fonts/font-name.eot#iefix') format('embedded-opentype'), url('../css/library/fonts/font-name.woff') format('woff'), url('../css/library/fonts/font-name.ttf') format('truetype'), url('../css/library/fonts/font-name.svg#font-name') format('svg'); font-weight: normal; font-style: normal; }
*/
/*
The following is based of Typebase:
https://github.com/devinhunt/typebase.css
I've edited it a bit, but it's a nice starting point.
*/
/* i imported this one in the functions file so bones would look sweet. don't forget to remove it for your site.
*/
/*
some nice typographical defaults
more here: http://www.newnet-soft.com/blog/csstypography
*/
p { -ms-word-wrap: break-word; word-break: break-word; word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; -webkit-hyphenate-before: 2; -webkit-hyphenate-after: 3; hyphenate-lines: 3; -webkit-font-feature-settings: "liga", "dlig"; -moz-font-feature-settings: "liga=1, dlig=1"; -ms-font-feature-settings: "liga", "dlig"; -o-font-feature-settings: "liga", "dlig"; font-feature-settings: "liga", "dlig"; }

/******************************************************************
Site Name:
Author:

Stylesheet: Sass Functions

You can do a lot of really cool things in Sass. Functions help you
make repeated actions a lot easier. They are really similar to mixins,
but can be used for so much more.

Anyway, keep them all in here so it's easier to find when you're
looking for one.

For more info on functions, go here:
http://sass-lang.com/documentation/Sass/Script/Functions.html

******************************************************************/
/*********************
COLOR FUNCTIONS
These are helpful when you're working
with shadows and such things. It's essentially
a quicker way to write RGBA.

Example:
box-shadow: 0 0 4px black(0.3);
compiles to:
box-shadow: 0 0 4px rgba(0,0,0,0.3);
*********************/
/*********************
RESPONSIVE HELPER FUNCTION
If you're creating a responsive site, then
you've probably already read
Responsive Web Design: http://www.abookapart.com/products/responsive-web-design

Here's a nice little helper function for calculating
target / context
as mentioned in that book.

Example:
width: cp(650px, 1000px);
or
width: calc-percent(650px, 1000px);
both compile to:
width: 65%;
*********************/
/******************************************************************
Site Name:
Author:

Stylesheet: Mixins Stylesheet

This is where you can take advantage of Sass' great features: Mixins.
I won't go in-depth on how they work exactly,
there are a few articles below that will help do that. What I will
tell you is that this will help speed up simple changes like
changing a color or adding CSS3 techniques gradients.

A WORD OF WARNING: It's very easy to overdo it here. Be careful and
remember less is more.

Helpful:
http://sachagreif.com/useful-sass-mixins/
http://thesassway.com/intermediate/leveraging-sass-mixins-for-cleaner-code
http://web-design-weekly.com/blog/2013/05/12/handy-sass-mixins/

******************************************************************/
/*********************
TRANSITION
*********************/
/*
I totally rewrote this to be cleaner and easier to use.
You'll need to be using Sass 3.2+ for these to work.
Thanks to @anthonyshort for the inspiration on these.
USAGE: @include transition(all 0.2s ease-in-out);
*/
/*********************
CSS3 GRADIENTS
Be careful with these since they can
really slow down your CSS. Don't overdo it.
*********************/
/* @include css-gradient(#dfdfdf,#f8f8f8); */
/*********************
BOX SIZING
*********************/
/* @include box-sizing(border-box); */
/* NOTE: value of "padding-box" is only supported in Gecko. So
probably best not to use it. I mean, were you going to anyway? */
/******************************************************************
Site Name:
Author:

Stylesheet: Grid Stylesheet

I've seperated the grid so you can swap it out easily. It's
called at the top the style.scss stylesheet.

There are a ton of grid solutions out there. You should definitely
experiment with your own. Here are some recommendations:

http://gridsetapp.com - Love this site. Responsive Grids made easy.
http://susy.oddbird.net/ - Grids using Compass. Very elegant.
http://gridpak.com/ - Create your own responsive grid.
https://github.com/dope/lemonade - Neat lightweight grid.


The grid below is a custom built thingy I modeled a bit after
Gridset. It's VERY basic and probably shouldn't be used on
your client projects. The idea is you learn how to roll your
own grids. It's better in the long run and allows you full control
over your project's layout.

******************************************************************/
.last-col { float: right; padding-right: 0 !important; }

/*
Mobile Grid Styles
These are the widths for the mobile grid.
There are four types, but you can add or customize
them however you see fit.
*/
@media (max-width: 767px) { .m-all { float: left; padding-right: 0.75em; width: 100%; padding-right: 0; }
  .m-1of2 { float: left; padding-right: 0.75em; width: 50%; }
  .m-1of3 { float: left; padding-right: 0.75em; width: 33.33%; }
  .m-2of3 { float: left; padding-right: 0.75em; width: 66.66%; }
  .m-1of4 { float: left; padding-right: 0.75em; width: 25%; }
  .m-3of4 { float: left; padding-right: 0.75em; width: 75%; } }
/* Portrait tablet to landscape */
@media (min-width: 768px) and (max-width: 1029px) { .t-all { float: left; padding-right: 0.75em; width: 100%; padding-right: 0; }
  .t-1of2 { float: left; padding-right: 0.75em; width: 50%; }
  .t-1of3 { float: left; padding-right: 0.75em; width: 33.33%; }
  .t-2of3 { float: left; padding-right: 0.75em; width: 66.66%; }
  .t-1of4 { float: left; padding-right: 0.75em; width: 25%; }
  .t-3of4 { float: left; padding-right: 0.75em; width: 75%; }
  .t-1of5 { float: left; padding-right: 0.75em; width: 20%; }
  .t-2of5 { float: left; padding-right: 0.75em; width: 40%; }
  .t-3of5 { float: left; padding-right: 0.75em; width: 60%; }
  .t-4of5 { float: left; padding-right: 0.75em; width: 80%; } }
/* Landscape to small desktop */
@media (min-width: 1030px) { .d-all { float: left; padding-right: 0.75em; width: 100%; padding-right: 0; }
  .d-1of2 { float: left; padding-right: 0.75em; width: 50%; }
  .d-1of3 { float: left; padding-right: 0.75em; width: 33.33%; }
  .d-2of3 { float: left; padding-right: 0.75em; width: 66.66%; }
  .d-1of4 { float: left; padding-right: 0.75em; width: 25%; }
  .d-3of4 { float: left; padding-right: 0.75em; width: 75%; }
  .d-1of5 { float: left; padding-right: 0.75em; width: 20%; }
  .d-2of5 { float: left; padding-right: 0.75em; width: 40%; }
  .d-3of5 { float: left; padding-right: 0.75em; width: 60%; }
  .d-4of5 { float: left; padding-right: 0.75em; width: 80%; }
  .d-1of6 { float: left; padding-right: 0.75em; width: 16.6666666667%; }
  .d-1of7 { float: left; padding-right: 0.75em; width: 14.2857142857%; }
  .d-2of7 { float: left; padding-right: 0.75em; width: 28.5714286%; }
  .d-3of7 { float: left; padding-right: 0.75em; width: 42.8571429%; }
  .d-4of7 { float: left; padding-right: 0.75em; width: 57.1428572%; }
  .d-5of7 { float: left; padding-right: 0.75em; width: 71.4285715%; }
  .d-6of7 { float: left; padding-right: 0.75em; width: 85.7142857%; }
  .d-1of8 { float: left; padding-right: 0.75em; width: 12.5%; }
  .d-1of9 { float: left; padding-right: 0.75em; width: 11.1111111111%; }
  .d-1of10 { float: left; padding-right: 0.75em; width: 10%; }
  .d-1of11 { float: left; padding-right: 0.75em; width: 9.09090909091%; }
  .d-1of12 { float: left; padding-right: 0.75em; width: 8.33%; } }
/*********************
IMPORTING MODULES
Modules are reusable blocks or elements we use throughout the project.
We can break them up as much as we want or just keep them all in one.
I mean, you can do whatever you want. The world is your oyster. Unless
you hate oysters, then the world is your peanut butter & jelly sandwich.
*********************/
/******************************************************************
Site Name:
Author:

Stylesheet: Alert Styles

If you want to use these alerts in your design, you can. If not,
you can just remove this stylesheet.

******************************************************************/
.alert-help, .alert-info, .alert-error, .alert-success { margin: 10px; padding: 5px 18px; border: 1px solid; }

.alert-help { border-color: #e8dc59; background: #ebe16f; }

.alert-info { border-color: #bfe4f4; background: #d5edf8; }

.alert-error { border-color: #f8cdce; background: #fbe3e4; }

.alert-success { border-color: #deeaae; background: #e6efc2; }

/******************************************************************
Site Name:
Author:

Stylesheet: Button Styles

Buttons are a pretty important part of your site's style, so it's
important to have a consistent baseline for them. Use this stylesheet
to create all kinds of buttons.

Helpful Links:
http://galp.in/blog/2011/08/02/the-ui-guide-part-1-buttons/

******************************************************************/
/*********************
BUTTON DEFAULTS
We're gonna use a placeholder selector here
so we can use common styles. We then use this
to load up the defaults in all our buttons.

Here's a quick video to show how it works:
http://www.youtube.com/watch?v=hwdVpKiJzac

*********************/
.blue-btn, .comment-reply-link, #submit { display: inline-block; position: relative; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-decoration: none; color: white; font-size: 0.9em; font-size: 34px; line-height: 34px; font-weight: normal; padding: 0 24px; border-radius: 4px; border: 0; cursor: pointer; -webkit-transition: background-color 0.14s ease-in-out; transition: background-color 0.14s ease-in-out; }
.blue-btn:hover, .comment-reply-link:hover, #submit:hover, .blue-btn:focus, .comment-reply-link:focus, #submit:focus { color: white; text-decoration: none; outline: none; }
.blue-btn:active, .comment-reply-link:active, #submit:active { top: 1px; }

/*
An example button.
You can use this example if you want. Just replace all the variables
and it will create a button dependant on those variables.
*/
.blue-btn, .comment-reply-link, #submit { background-color: #2980b9; }
.blue-btn:hover, .comment-reply-link:hover, #submit:hover, .blue-btn:focus, .comment-reply-link:focus, #submit:focus { background-color: #2574a8; }
.blue-btn:active, .comment-reply-link:active, #submit:active { background-color: #2472a4; }

.y-btn, .y-btn:visited { background: transparent; padding: 10px 35px; border: 2px solid #c97644; color: #c97644; text-align:center;text-decoration: none; font-weight: bold; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; text-transform: uppercase; letter-spacing: 1px; font-size: 10.5pt; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -ms-transition: all .3s ease; -o-transition: all .3s ease; transition: all .3s ease; display:block;margin:0 auto 15px;max-width:225px;}
.y-btn:hover, .y-btn:focus, .y-btn:active, .y-btn:visited:hover, .y-btn:visited:focus, .y-btn:visited:active { background: #c97644; color: white; }

.btn-margin { margin-top: 50px; }

/******************************************************************
Site Name:
Author:

Stylesheet: Form Styles

We put all the form and button styles in here to setup a consistent
look. If we need to customize them, we can do this in the main
stylesheets and just override them. Easy Peasy.

You're gonna see a few data-uri thingies down there. If you're not
sure what they are, check this link out:
http://css-tricks.com/data-uris/
If you want to create your own, use this helpful link:
http://websemantics.co.uk/online_tools/image_to_data_uri_convertor/

******************************************************************/
/*********************
INPUTS
*********************/
input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], select, textarea, .field { display: block; height: 40px; line-height: 1em; padding: 0 12px; margin-bottom: 14px; font-size: 1em; color: #5c6b80; border-radius: 3px; vertical-align: middle; box-shadow: none; border: 0; width: 100%; max-width: 400px; font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; background-color: white; -webkit-transition: background-color 0.24s ease-in-out; transition: background-color 0.24s ease-in-out; }
input[type="text"]:focus, input[type="text"]:active, input[type="password"]:focus, input[type="password"]:active, input[type="datetime"]:focus, input[type="datetime"]:active, input[type="datetime-local"]:focus, input[type="datetime-local"]:active, input[type="date"]:focus, input[type="date"]:active, input[type="month"]:focus, input[type="month"]:active, input[type="time"]:focus, input[type="time"]:active, input[type="week"]:focus, input[type="week"]:active, input[type="number"]:focus, input[type="number"]:active, input[type="email"]:focus, input[type="email"]:active, input[type="url"]:focus, input[type="url"]:active, input[type="search"]:focus, input[type="search"]:active, input[type="tel"]:focus, input[type="tel"]:active, input[type="color"]:focus, input[type="color"]:active, select:focus, select:active, textarea:focus, textarea:active, .field:focus, .field:active { background-color: #fafafa; outline: none; }
input[type="text"].error, input[type="text"].is-invalid, input[type="password"].error, input[type="password"].is-invalid, input[type="datetime"].error, input[type="datetime"].is-invalid, input[type="datetime-local"].error, input[type="datetime-local"].is-invalid, input[type="date"].error, input[type="date"].is-invalid, input[type="month"].error, input[type="month"].is-invalid, input[type="time"].error, input[type="time"].is-invalid, input[type="week"].error, input[type="week"].is-invalid, input[type="number"].error, input[type="number"].is-invalid, input[type="email"].error, input[type="email"].is-invalid, input[type="url"].error, input[type="url"].is-invalid, input[type="search"].error, input[type="search"].is-invalid, input[type="tel"].error, input[type="tel"].is-invalid, input[type="color"].error, input[type="color"].is-invalid, select.error, select.is-invalid, textarea.error, textarea.is-invalid, .field.error, .field.is-invalid { color: #fbe3e4; border-color: #fbe3e4; background-color: white; background-position: 99% center; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NDM0NDREQkYwNEIxMUUyOTI4REZGQTEzMzA2MDcyNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2NDM0NDREQ0YwNEIxMUUyOTI4REZGQTEzMzA2MDcyNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ3ODRGRkE2RjA0QTExRTI5MjhERkZBMTMzMDYwNzI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY0MzQ0NERBRjA0QjExRTI5MjhERkZBMTMzMDYwNzI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+U8iT5wAAAedJREFUeNqk1U9I02Ecx/HtV3aIFAc1hcRDUoGXRAq0oNLA2CrsEFmHbikZu0iQYIFGYAiegkCpLipBxPpDEBMUzB0EhSG2LhG7hMR2GviPgUTvB57Bw8P3+U23B16HPX8+e/b8nt93wezZSMCnhXETF3AcB5BDCnH8Dq98ExcGHcFn8Ah3cdDni+fxnPDv9oAnTB7CKu6VCFXtChZy56LxUjt+jfuB8toSOth9wd7xWAWhqrUjYR/FRTwWJm+iIPT/w7bQf5ljiZnBg45dtKFX6H+LU8gIY8OEV6vgTkStwXWE8BPTGDHGPqNPz2mCfSOOYkA99TvCt1bhGPL68zMcwmncMuape10jrI+q4BbHi/FLn31S9z2x5tRhTc+1W506ipM+T3oRD4X+8+qtc4SqFvL0z/Fr14S+Szjis8bz9Lvvaq8cwS/wwGfdlqfPSWqTiFlX77o13u9Ym1PBs8JAytpRoy44X9Ft9E/gvbA+rYKn8NcaaMVc8UHgBw4b9/iqUQZ6hOAJFbyDcUflmsEX4a6+wTtHGfhAIUqa1U29Zc2BytouThD8x6xuN5CtMPi2CrXLZkZf/HyZoRFCP7n+QVR4PV7uI/AjGghN7OU/r1ilnqILtfpNC+o6vIFljBKYlhb/F2AAgaBsWR5wRiIAAAAASUVORK5CYII=); outline-color: #fbe3e4; }
input[type="text"].success, input[type="text"].is-valid, input[type="password"].success, input[type="password"].is-valid, input[type="datetime"].success, input[type="datetime"].is-valid, input[type="datetime-local"].success, input[type="datetime-local"].is-valid, input[type="date"].success, input[type="date"].is-valid, input[type="month"].success, input[type="month"].is-valid, input[type="time"].success, input[type="time"].is-valid, input[type="week"].success, input[type="week"].is-valid, input[type="number"].success, input[type="number"].is-valid, input[type="email"].success, input[type="email"].is-valid, input[type="url"].success, input[type="url"].is-valid, input[type="search"].success, input[type="search"].is-valid, input[type="tel"].success, input[type="tel"].is-valid, input[type="color"].success, input[type="color"].is-valid, select.success, select.is-valid, textarea.success, textarea.is-valid, .field.success, .field.is-valid { color: #e6efc2; border-color: #e6efc2; background-color: white; background-position: 99% center; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NDM0NDRERkYwNEIxMUUyOTI4REZGQTEzMzA2MDcyNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2NDM0NDRFMEYwNEIxMUUyOTI4REZGQTEzMzA2MDcyNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjY0MzQ0NERERjA0QjExRTI5MjhERkZBMTMzMDYwNzI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjY0MzQ0NERFRjA0QjExRTI5MjhERkZBMTMzMDYwNzI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+7olkTQAAAfhJREFUeNqklU9oE0EUhzdroWjw0tBeWlDxkEaIp55TsCU9VKIgCrHBelA8CQ1Kr1WPbZrQ3gqtQqvGqxpQc2jBk6BIIaAGD4qNCKURpDSKiPi98gLDsJt//uBjsztvfnk7895sIPAw6/joGMThFJyAXn2+A+9gA57/TaY/eU0OeBgfhGm4DiGnsb7DAszxBz/NAdcKjMJLuNWCqagHbsscN5+L+hmH4QkMOe1L5jzFfNA2PgT34ajTuY7AGuZB0/hmh5m+gS0r8xv1zRvg+gGCHZiOwnF4DP3iB3sQkYxPd2C6CWfhB9Xwlus5+K1j4jXuaq3a+gM1H9OPcAa+7q9lPidZJqHbiIm7Wg22rsEI7FrPSzAMX/T+ADyAKSsu7Fr1KplehLvwCs5DvfBf65p+MypqRbO1FXK9utH4/QKuaqYTsG3E3INJv00Q46px3+XxanJ/Ute2/vqP4FKDza2KcdljIKdnhS0xXYULTaqmLMZFn8FFSFtvt6x70ExFCS5oUXspq2ssa7oEl1swFa+CGFdgtkHgPDyDKy02zyxNU6lXRUZb1EuHYayNNs+Yh5B0WQo+/8fpJnNTZFuzz2OpjoQ2QruSOQlMy35fEGmEGMxY9e1brxobw7TkWA1h6xfckUPb+JhGoE/Hpfvew7qUld/H9J8AAwDpw3WYrxcZ3QAAAABJRU5ErkJggg==); outline-color: #e6efc2; }
input[type="text"][disabled], input[type="text"].is-disabled, input[type="password"][disabled], input[type="password"].is-disabled, input[type="datetime"][disabled], input[type="datetime"].is-disabled, input[type="datetime-local"][disabled], input[type="datetime-local"].is-disabled, input[type="date"][disabled], input[type="date"].is-disabled, input[type="month"][disabled], input[type="month"].is-disabled, input[type="time"][disabled], input[type="time"].is-disabled, input[type="week"][disabled], input[type="week"].is-disabled, input[type="number"][disabled], input[type="number"].is-disabled, input[type="email"][disabled], input[type="email"].is-disabled, input[type="url"][disabled], input[type="url"].is-disabled, input[type="search"][disabled], input[type="search"].is-disabled, input[type="tel"][disabled], input[type="tel"].is-disabled, input[type="color"][disabled], input[type="color"].is-disabled, select[disabled], select.is-disabled, textarea[disabled], textarea.is-disabled, .field[disabled], .field.is-disabled { cursor: not-allowed; border-color: #cfcfcf; opacity: 0.6; }
input[type="text"][disabled]:focus, input[type="text"][disabled]:active, input[type="text"].is-disabled:focus, input[type="text"].is-disabled:active, input[type="password"][disabled]:focus, input[type="password"][disabled]:active, input[type="password"].is-disabled:focus, input[type="password"].is-disabled:active, input[type="datetime"][disabled]:focus, input[type="datetime"][disabled]:active, input[type="datetime"].is-disabled:focus, input[type="datetime"].is-disabled:active, input[type="datetime-local"][disabled]:focus, input[type="datetime-local"][disabled]:active, input[type="datetime-local"].is-disabled:focus, input[type="datetime-local"].is-disabled:active, input[type="date"][disabled]:focus, input[type="date"][disabled]:active, input[type="date"].is-disabled:focus, input[type="date"].is-disabled:active, input[type="month"][disabled]:focus, input[type="month"][disabled]:active, input[type="month"].is-disabled:focus, input[type="month"].is-disabled:active, input[type="time"][disabled]:focus, input[type="time"][disabled]:active, input[type="time"].is-disabled:focus, input[type="time"].is-disabled:active, input[type="week"][disabled]:focus, input[type="week"][disabled]:active, input[type="week"].is-disabled:focus, input[type="week"].is-disabled:active, input[type="number"][disabled]:focus, input[type="number"][disabled]:active, input[type="number"].is-disabled:focus, input[type="number"].is-disabled:active, input[type="email"][disabled]:focus, input[type="email"][disabled]:active, input[type="email"].is-disabled:focus, input[type="email"].is-disabled:active, input[type="url"][disabled]:focus, input[type="url"][disabled]:active, input[type="url"].is-disabled:focus, input[type="url"].is-disabled:active, input[type="search"][disabled]:focus, input[type="search"][disabled]:active, input[type="search"].is-disabled:focus, input[type="search"].is-disabled:active, input[type="tel"][disabled]:focus, input[type="tel"][disabled]:active, input[type="tel"].is-disabled:focus, input[type="tel"].is-disabled:active, input[type="color"][disabled]:focus, input[type="color"][disabled]:active, input[type="color"].is-disabled:focus, input[type="color"].is-disabled:active, select[disabled]:focus, select[disabled]:active, select.is-disabled:focus, select.is-disabled:active, textarea[disabled]:focus, textarea[disabled]:active, textarea.is-disabled:focus, textarea.is-disabled:active, .field[disabled]:focus, .field[disabled]:active, .field.is-disabled:focus, .field.is-disabled:active { background-color: #d5edf8; }

input[type="password"] { letter-spacing: 0.3em; }

textarea { max-width: 100%; min-height: 120px; line-height: 1.5em; }

select { -webkit-appearance: none; /* 1 */ -moz-appearance: none; appearance: none; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAHCAYAAADXhRcnAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEOEZCMjYxMEYwNUUxMUUyOTI4REZGQTEzMzA2MDcyNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEOEZCMjYxMUYwNUUxMUUyOTI4REZGQTEzMzA2MDcyNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ4RkIyNjBFRjA1RTExRTI5MjhERkZBMTMzMDYwNzI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ4RkIyNjBGRjA1RTExRTI5MjhERkZBMTMzMDYwNzI2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Vxkp9gAAAI9JREFUeNpidHFxucHAwKAOxE+AmJmBMPgLxDJAfJMFSKwD4kqoAClgA+P///8ZXF1dPaCGcBKh6QcQB+3evXs7WDMIAA2QB1I7gFgDj0aQFz2BGh+AOEwwUaDAQyBlCMR7cGjcC5KHaQQBuM3IAOiKTiBVhiTUDdRUhq4Oq2aoAelAahIQ5wM1zsCmBiDAADhYMJXVZ9u9AAAAAElFTkSuQmCC); background-repeat: no-repeat; background-position: 97.5% center; }

form#searchform input#searchsubmit { background: transparent url(../images/search.png) top left no-repeat; width: 50px; padding-left: 5px; display: block; overflow: hidden; /* Hack for IE */ text-indent: -9999px; font-size: 0px; line-height: 0px; }

/*********************
BASE (MOBILE) SIZE
This are the mobile styles. It's what people see on their phones. If
you set a great foundation, you won't need to add too many styles in
the other stylesheets. Remember, keep it light: Speed is Important.
*********************/
/******************************************************************
Site Name:
Author:

Stylesheet: Base Mobile Stylesheet

Be light and don't over style since everything here will be
loaded by mobile devices. You want to keep it as minimal as
possible. This is called at the top of the main stylsheet
and will be used across all viewports.

******************************************************************/
/*********************
GENERAL STYLES
*********************/
body { font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 100%; line-height: 1.5; color: #0b0b0b; background-color: #f7f7f7; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-hyphens: none; -epub-hyphens: none; -moz-hyphens: none; hyphens: none; }

p { -webkit-hyphens: none; -epub-hyphens: none; -moz-hyphens: none; hyphens: none; letter-spacing: 1px; line-height: 1.8em; font-size: 11pt; }

ol {padding-left:20px;font-size:11pt;line-height:1.8em;letter-spacing:1px;}

ul{padding-left:20px;list-style-image:url('../images/bullet.png');font-size:11pt;line-height:1.8em;letter-spacing:1px;}
ul li {margin-bottom:10px;}

img { max-width: 100%; height: auto; }

.header { box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); }

.thin {font-weight:400;}

.green {color:#8e8506;}

.cont-table {border:2px solid #ccc; background:#fff;margin:25px 0;}
.cont-table tr {padding:10px;border-top:2px solid #ccc;}
.cont-table td {padding:10px;border-left:2px solid #ccc;}
.cont-table td:first-of-type {border-left:none #ccc;}

/********************
WORDPRESS BODY CLASSES
style a page via class
********************/
/* for sites that are read right to left (i.e. hebrew) */
/* home page */
/* blog template page */
/* archive page */
/* date archive page */
/* replace the number to the corresponding page number */
/* search page */
/* search result page */
/* no results search page */
/* individual paged search (i.e. body.search-paged-3) */
/* 404 page */
/* single post page */
/* individual post page by id (i.e. body.postid-73) */
/* individual paged single (i.e. body.single-paged-3) */
/* attatchment page */
/* individual attatchment page (i.e. body.attachmentid-763) */
/* style mime type pages */
/* author page */
/* user nicename (i.e. body.author-samueladams) */
/* paged author archives (i.e. body.author-paged-4) for page 4 */
/* category page */
/* individual category page (i.e. body.category-6) */
/* replace the number to the corresponding page number */
/* tag page */
/* individual tag page (i.e. body.tag-news) */
/* replace the number to the corresponding page number */
/* custom page template page */
/* individual page template (i.e. body.page-template-contact-php */
/* replace the number to the corresponding page number */
/* parent page template */
/* child page template */
/* replace the number to the corresponding page number */
/* if user is logged in */
/* paged items like search results or archives */
/* individual paged (i.e. body.paged-3) */
/*********************
LAYOUT & GRID STYLES
*********************/
.wrap { /*width: 85%;*/width:95%; margin: 0 auto; }

.center { text-align: center; }

.table { display: table; border-collapse: separate; }

.table-row { display: table-row; }

.table-cell { display: table-cell; vertical-align: middle; }

.table-cell.quote-man {text-align:center;min-width:171px;}
.quotes .table-cell {text-align:center;}

.disclaimer {color:#fff;font-size:.7em;line-height:1.3em;}


/*********************
BACK TO TOP
*********************/
.cd-container {
  width: 90%;
  max-width: 768px;
  margin: 2em auto;
}
.cd-container::after {
  /* clearfix */
  content: '';
  display: table;
  clear: both;
}
.cd-top {
  display: inline-block;
  height: 40px;
  width: 40px;
  position: fixed;
  bottom: 40px;
  right: 10px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
  /* image replacement properties */
  overflow: hidden;
  text-indent: 100%;
  white-space: nowrap;
  background: rgba(201, 118, 68, 0.8) url('../images/cd-top-arrow.svg') no-repeat center 50%;
  visibility: hidden;
  opacity: 0;
  -webkit-transition: opacity .3s 0s, visibility 0s .3s;
  -moz-transition: opacity .3s 0s, visibility 0s .3s;
  transition: opacity .3s 0s, visibility 0s .3s;
}
.cd-top.cd-is-visible, .cd-top.cd-fade-out, .no-touch .cd-top:hover {
  -webkit-transition: opacity .3s 0s, visibility 0s 0s;
  -moz-transition: opacity .3s 0s, visibility 0s 0s;
  transition: opacity .3s 0s, visibility 0s 0s;
}
.cd-top.cd-is-visible {
  /* the button becomes visible */
  visibility: visible;
  opacity: 1;
}
.cd-top.cd-fade-out {
  /* if the user keeps scrolling down, the button is out of focus and becomes less visible */
  opacity: .5;
}
.no-touch .cd-top:hover {
  background-color: #c97644;
  opacity: 1;
}

/*********************
LINK STYLES
*********************/
a, a:visited { color: #c97644; -webkit-transition: color .3s ease; -moz-transition: color .3s ease; -ms-transition: color .3s ease; -o-transition: color .3s ease; transition: color .3s ease; text-decoration: none; /* on hover */ /* on click */ /* mobile tap color */ }
a:hover, a:focus, a:visited:hover, a:visited:focus { color: #3e3e40; }
a:link, a:visited:link { /*
this highlights links on iPhones/iPads.
so it basically works like the :hover selector
for mobile devices.
*/ -webkit-tap-highlight-color: rgba(0, 0, 0, 0.3); }

/******************************************************************
H1, H2, H3, H4, H5 STYLES
******************************************************************/
h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5 { text-rendering: optimizelegibility; font-weight: 500; color: #c97644;letter-spacing:2px; /*
if you're going to use webfonts, be sure to check your weights
http://css-tricks.com/watch-your-font-weight/
*/ /* removing text decoration from all headline links */ }
h1 a, .h1 a, h2 a, .h2 a, h3 a, .h3 a, h4 a, .h4 a, h5 a, .h5 a { text-decoration: none; }

h1, .h1 { font-size: 2.2em; line-height: 1.333em; }

h2, .h2 { font-size: 1.75em; line-height: 1.4em; margin-bottom: 0.375em; }

h3, .h3 { font-size: 1.125em; }

h4, .h4 { font-size: 1.1em; font-weight: 700; }

h5, .h5 { font-size: 0.846em; line-height: 2.09em; text-transform: uppercase; letter-spacing: 2px; }

/*********************
HEADER STYLES
*********************/
.header { background-color: white; }

#logo { margin: 25px 0 15px; text-align: center; }
#logo a { color: white; }

#masthead { background: url("../images/masthead-bg.jpg") no-repeat bottom center; background-size: cover; clear: both; padding: 50px 0; -webkit-box-shadow: inset 0 0 5px 8px rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 5px 8px rgba(0, 0, 0, 0.2); text-align: center; }
#masthead h1 { color: #f9bf12; line-height: 1.2em; max-width: 600px; text-align: center; display: block; margin: 0 auto;color:#fff;font-weight:bold;letter-spacing:1px;text-shadow: 0 0 12px rgba(0,0,0,.85);}
#masthead h1.thin {font-weight:400;}
#masthead p { color: #fff; line-height: 1.8em; text-align: center; letter-spacing: 1px; font-size: 11pt; }
#masthead .contribute h3 {color:#fff;letter-spacing:1px;font-size:1.3em;font-weight:500;}
#masthead .btn-margin {text-align:center;margin:25px auto 0;max-width:250px;}
#masthead .y-btn {padding:10px 15px;max-width:100%;color:#fff;border-color:#fff;}

.page #masthead {text-align:center;}
.page #masthead h1 {font-weight:400;}


/*********************
NAVIGATION STYLES
*********************/
/*
all navs have a .nav class applied via
the wp_menu function; this is so we can
easily write one group of styles for
the navs on the site so our css is cleaner
and more scalable.
*/
.nav { border-bottom: 0; margin: 0; font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; /* end .menu li */ /* highlight current page */ /* end current highlighters */ }
.nav li { /*
so you really have to rethink your dropdowns for mobile.
you don't want to have it expand too much because the
screen is so small. How you manage your menu should
depend on the project. Here's some great info on it:
http://www.alistapart.com/articles/organizing-mobile/
*/ }
.nav li a { display: block; color: white; text-decoration: none; padding: 0.75em; /*
remember this is for mobile ONLY, so there's no need
to even declare hover styles here, you can do it in
the style.scss file where it's relevant. We want to
keep this file as small as possible!
*/ }
.nav li ul.sub-menu li a, .nav li ul.children li a { padding-left: 30px; }
.menu-item-has-children > a {cursor:default;}
ul.sub-menu li {margin-bottom:0;}

/* end .nav */
/*********************
POSTS & CONTENT STYLES
*********************/
.home { background: white; }
.home #main img { margin: 50px 0; }
.home .header { box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none; }

#at-a-glance {background:#e8e5e0;padding:50px 0;text-align:center;}
#at-a-glance h1 {margin-top:0;color:#c97644;}

#and { background: #4b4547; padding:35px 0 25px; color: #fff; }

#how-it-works { padding: 50px 0 100px; background: #e8e5e0; text-align: center; border-bottom: 1px solid #e0e0e0; }
#how-it-works img { display: block; margin: 50px auto 0; }

#key-features { padding: 50px 0; /*background: white url("../images/key_features_bg.jpg") no-repeat top center; background-size: cover;*/background-color:#fff; border-top: 1px solid #efefef; }
#key-features .d-1of2 { margin: 25px 0; }
#key-features h1 { text-align: center; margin: 0 0 50px; }
#key-features h3 { font-weight: bold; max-width: 200px; line-height: 1em; font-size: 16pt; font-weight: 600; color:#8e8506; }
#key-features img { margin-right: 20px; }
#key-features .btn-margin { clear: both; text-align: center; }

#open-data-models {padding:50px 0;background:#d0cbc5;color:#535457;}


#user-stories { background: #e8e5e0; padding: 50px 0; }
#user-stories h1 { text-align: center; }
#user-stories .intro { background: url("../images/quotes.png") no-repeat center center; text-align: center; font-weight: 600; padding: 25px 0; }
#user-stories .table { margin-bottom: 25px; border-bottom: 1px solid #7e7f81; vertical-align: middle; }
#user-stories .table:last-of-type { border-bottom: none; }
#user-stories .table-cell { width: 100%; display: block; text-align: center; margin-bottom: 25px; }
#user-stories .quote-man { text-align: center; width: 100%; }
#user-stories .quote-man h3 { margin: 10px 0 20px; }

.community {text-align:center;margin-top:35px;}
.community img {display:inline;}

#use-case { padding: 50px 0; background: #fff; }
#use-case h1 { text-align: center; margin-bottom: 0; }
#use-case h3 { color: #c97644; text-align: center; font-weight: 600; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; letter-spacing: 1px; margin:15px 0; font-size: 13pt;line-height:1.3em; text-transform:uppercase;}
#use-case .number { min-height: 100px; width: 95px; vertical-align: top; }
#use-case .left img { margin-bottom: 50px; }
#use-case .table { padding: 25px 0 25px 0; }
#use-case .table:first-of-type { padding-top: 0; }
#use-case .table p { font-size: 13pt; line-height: 1.3em; font-weight: 500; }
#use-case .table p strong { font-weight: 800; }
#use-case .table p:first-of-type { margin-top: 0; }
.quotes {margin-top:50px;}
.quotes .table-cell {display:block;}

.arrow { margin: 50px 0 0; width: 100%; height: 150px; background-color: #c97644; position: relative;color:#fff; }
.arrow p { margin: 20px 25px 20px 25px; font-size: 14pt; text-align: left; line-height: 1.2em; }

#more-info { background: #4b4547; padding: 50px 0; }
#more-info p { text-align: center; }

.social-icons {text-align:center;margin-bottom:50px;}
.social-icons a {font-size:2em;color:#fff;}
.social-icons a:hover {color:#c97644;}
.social-icons a:first-child {margin-right:15px;}
.add-to-slack {margin:0 0 0 15px;}
.add-to-slack {position:relative;top:5px;}

#and .and-cell p {font-size:13pt;line-height:1.2em;}

.citation {font-size:.7em;line-height:1.5em;margin:50px 0 15px;}

#content { margin-top: 2em; }
.page #content {margin-top:0;}

.page .main {padding:50px 25px;}
.page #content h3 {color:#a3a3a1;font-weight:700;text-transform:uppercase;line-height:1.3em;font-size:1.3em;}
.page #content h4 {color:#8e8506;font-weight:400;}
.page .wrap.with-sidebar {width:100%;}
.page #content h3.green {color:#8e8506;font-weight:500;text-transform: none;}


.divTable{
	display: table;
	width: 100%;
}
.divTableRow {
	display: table-row;
}
.divTableCell {
	border-top: 1px solid #999999;
	border-right:1px solid #999;
	display: table-cell;
	padding: 3px 1%;
	font-size:12px;
}
.divTableRow .divTableCell:nth-of-type(1) {
	width:18%;
}
.divTableRow .divTableCell:nth-of-type(2) {
	width:31.5%;
}
.divTableRow .divTableCell:last-of-type {
	width:15%;
}
.divTableBody {
	display: table-row-group;
}
.tableHeading .divTableCell {
	font-weight:bold;
}
.divTableRow .divTableCell:first-of-type {
	border-left:1px solid #999;
}
.divTableRow:last-of-type .divTableCell {
	border-bottom:1px solid #999;
}
.divTableRow:nth-of-type(even) {
	background-color:rgba(232,229,224,.6);
}

.download .content-wrap {
  max-width:700px;
  border-bottom:15px solid #4b4547;
  display: block;
  margin:25px auto;
  padding:0 25px;
  font-size: 17px;
}
.download .content-wrap:first-of-type {
  border-top:15px solid #4b4547;
}
.download .content-wrap a {
  color:#4eafe7;
}

.download #content {
  margin-bottom:50px;
}
.content-wrap .indent {
  display:block;
  padding-left:40px;
  margin:15px 0;
}

.hentry { padding: .75em; margin-bottom: 1.5em; }
.hentry footer { padding: 1.5em 0; border-top: 1px solid #d6d6d6; }
.hentry footer p { margin: 0; }

/* end .hentry */
.single-title, .page-title, .entry-title { margin: 0;line-height:1.2em; }

/* want to style individual post classes? Booya! */
/* post by id (i.e. post-3) */
/* general post style */
/* general article on a page style */
/* general style on an attatchment */
/* sticky post style */
/* hentry class */
/* style by category (i.e. category-videos) */
/* style by tag (i.e. tag-news) */
/* post meta */
.byline { color: #9fa6b4; margin: 10px 0 0; font-size: 10pt; }

/* entry content */
.entry-content { padding: 1.5em 0; /*
image alignment on a screen this size may be
a bit difficult. It's set to start aligning
and floating images at the next breakpoint,
but it's up to you. Feel free to change it up.
*/ }
.entry-content ol {list-style-type:decimal;padding-left:40px;}
.entry-content ul {list-style-type:disc;padding-left:40px;}
.entry-content p { margin: 0 0 1.5em; }
.entry-content table { width: 100%; border: 1px solid #626366; margin-bottom: 1.5em; }
.entry-content table caption { margin: 0 0 7px; font-size: 0.75em; color: #9fa6b4; text-transform: uppercase; letter-spacing: 1px; }
.entry-content tr { border-bottom: 1px solid #626366; }
.entry-content tr:nth-child(even) { background-color: #f8f9fa; }
.entry-content td { padding: 7px; border-right: 1px solid #626366; }
.entry-content td:last-child { border-right: 0; }
.entry-content th { background-color: #f8f9fa; border-bottom: 1px solid #626366; border-right: 1px solid #626366; }
.entry-content th:last-child { border-right: 0; }
.entry-content blockquote { margin: 0 0 1.5em 0.75em; padding: 0 0 0 0.75em; border-left: 3px solid #2980b9; font-style: italic; color: #9fa6b4; }
.entry-content dd { margin-left: 0; font-size: 0.9em; color: #787878; margin-bottom: 1.5em; }
.entry-content img { margin: 0 0 1.5em 0; max-width: 100%; height: auto; }
.entry-content .size-auto, .entry-content .size-full, .entry-content .size-large, .entry-content .size-medium, .entry-content .size-thumbnail { max-width: 100%; height: auto; }
.entry-content pre { background: #323944; color: #f8f9fa; font-size: 0.9em; padding: 1.5em; margin: 0 0 1.5em; border-radius: 3px; }

/* end .entry-content */
.wp-caption { max-width: 100%; background: #eee; padding: 5px; /* images inside wp-caption */ }
.wp-caption img { max-width: 100%; margin-bottom: 0; width: 100%; }
.wp-caption p.wp-caption-text { font-size: 0.85em; margin: 4px 0 7px; text-align: center; }

/* end .wp-caption */
/* image gallery styles */
/* end .gallery */
/* gallery caption styles */
.tags { margin: 0; }


blockquote {font-size:11pt;}
/******************************************************************
PAGE NAVI STYLES
******************************************************************/
.pagination, .wp-prev-next { margin: 1.5em 0; }

.pagination { text-align: center; }
.pagination ul { display: inline-block; white-space: nowrap; padding: 0; clear: both; border-radius: 3px; }
.pagination li { padding: 0; margin: 0; float: left; display: inline; overflow: hidden; border-right: 1px solid #9fa6b4; }
.pagination a, .pagination span { margin: 0; text-decoration: none; padding: 0; line-height: 1em; font-size: 1em; font-weight: normal; padding: 0.75em; min-width: 1em; display: block; color: #f9bf12; }
.pagination a:hover, .pagination a:focus, .pagination span:hover, .pagination span:focus { background-color: #f9bf12; color: white; }
.pagination .current { cursor: default; color: #9fa6b4; }
.pagination .current:hover, .pagination .current:focus { background-color: transparent; color: #5c6b80; }

/* end .bones_page_navi */
/* fallback previous & next links */
.wp-prev-next .prev-link { float: left; }
.wp-prev-next .next-link { float: right; }

/* end .wp-prev-next */
/******************************************************************
COMMENT STYLES
******************************************************************/
/* h3 comment title */
#comments-title { padding: 0.75em; margin: 0; border-top: 1px solid #f8f9fa; /* number of comments span */ }

.commentlist { margin: 0; list-style-type: none; }

.comment { position: relative; clear: both; overflow: hidden; padding: 1.5em; border-bottom: 1px solid #f8f9fa; /* vcard */ /* end .commentlist .vcard */ /* end children */ /* general comment classes */ }
.comment .comment-author { padding: 7px; border: 0; }
.comment .vcard { margin-left: 50px; }
.comment .vcard cite.fn { font-weight: 700; font-style: normal; }
.comment .vcard time { display: block; font-size: 0.9em; font-style: italic; }
.comment .vcard time a { color: #9fa6b4; text-decoration: none; }
.comment .vcard time a:hover { text-decoration: underline; }
.comment .vcard .avatar { position: absolute; left: 16px; border-radius: 50%; }
.comment:last-child { margin-bottom: 0; }
.comment .children { margin: 0; /* variations */ /* change number for different depth */ }
.comment[class*=depth-] { margin-top: 1.1em; }
.comment.depth-1 { margin-left: 0; margin-top: 0; }
.comment:not(.depth-1) { margin-top: 0; margin-left: 7px; padding: 7px; }
.comment.odd { background-color: white; }
.comment.even { background: #f8f9fa; }

/* comment meta */
/* comment content */
.comment_content p { margin: 0.7335em 0 1.5em; font-size: 1em; line-height: 1.5em; }

/* end .commentlist .comment_content */
/* comment reply link */
.comment-reply-link { font-size: 0.9em; float: right; }

/* end .commentlist .comment-reply-link */
/* edit comment link */
.comment-edit-link { font-style: italic; margin: 0 7px; text-decoration: none; font-size: 0.9em; }

/******************************************************************
COMMENT FORM STYLES
******************************************************************/
.comment-respond { padding: 1.5em; border-top: 1px solid #f8f9fa; }

#reply-title { margin: 0; }

.logged-in-as { color: #9fa6b4; font-style: italic; margin: 0; }
.logged-in-as a { color: #5c6b80; }

.comment-form-comment { margin: 1.5em 0 0.75em; }

.form-allowed-tags { padding: 1.5em; background-color: #f8f9fa; font-size: 0.9em; }

/* comment submit button */
#submit { float: right; font-size: 1em; }

/* comment form title */
#comment-form-title { margin: 0 0 1.1em; }

/* cancel comment reply link */
/* logged in comments */
/* allowed tags */
#allowed_tags { margin: 1.5em 10px 0.7335em 0; }

/* no comments */
.nocomments { margin: 0 20px 1.1em; }

/*********************
SIDEBARS & ASIDES
*********************/
.widget ul li { /* deep nesting */ }

.no-widgets { background-color: white; padding: 1.5em; text-align: center; border: 1px solid #cccccc; border-radius: 2px; margin-bottom: 1.5em; }

.sidebar {margin-bottom:25px;}
.sidebar ul {list-style-type:none;padding-left:0;list-style-image:none;}

.social-sidebar {display:none;}

.downloads {background:#d0cbc5;padding:10px;}
.downloads h1 {color:#fff;text-align:center;background:#bfb8b0;padding:50px 0;margin:0;width:100%;}
.downloads ul {list-style-image:none;list-style-type:none;margin:35px 0 25px;font-size:10.5pt;line-height:1.1em;letter-spacing:0px;}
.downloads ul li {margin-bottom:25px;}
.downloads ul li a {color:#c77240;font-weight:bold;text-transform:uppercase;-webkit-transition: color .3s ease;-moz-transition: color .3s ease;-ms-transition: color .3s ease;-o-transition: color .3s ease;transition: color .3s ease;}
.downloads ul li a:hover {color:#000;}
.downloads ul .icon-keyboard_arrow_right {font-size:1.5em;position:relative;top:4px;}

/*********************
FOOTER STYLES
*********************/
.footer { clear: both; background-color: #363132; color: #f8f9fa; min-height: 50px; }

/*
if you checked out the link above:
http://www.alistapart.com/articles/organizing-mobile/
you'll want to style the footer nav
a bit more in-depth. Remember to keep
it simple because you'll have to
override these styles for the desktop
view.
*/
/* end .footer-links */
/*********************
LARGER MOBILE DEVICES
This is for devices like the Galaxy Note or something that's
larger than an iPhone but smaller than a tablet. Let's call them
tweeners.
*********************/
@media only screen and (min-width: 481px) { /****************************************************************** Site Name: Author:  Stylesheet: 481px and Up Stylesheet  This stylesheet is loaded for larger devices. It's set to 481px because at 480px it would load on a landscaped iPhone. This isn't ideal because then you would be loading all those extra styles on that same mobile connection.  A word of warning. This size COULD be a larger mobile device, so you still want to keep it pretty light and simply expand upon your base.scss styles.  *****************************************************************/
  /* IMPORTANT NOTE ABOUT SASS 3.3 & UP You can't use @extend within media queries anymore, so just be aware that if you drop them in here, they won't work. */
  /********************* NAVIGATION STYLES ********************/
  /* .menu is clearfixed inside mixins.scss */
  .menu { /* end .menu ul */ }
  .menu ul { /* end .menu ul li */ /* highlight current page */ /* end current highlighters */ }
  .menu ul li { /*
plan your menus and drop-downs wisely.
*/ }
  .menu ul li a { /*
you can use hover styles here even though this size
has the possibility of being a mobile device.
*/ }
  /* end .menu */
  /********************* POSTS & CONTENT STYLES ********************/
  #user-stories .table-cell { width: auto; display: table-cell; text-align: left; }
  #user-stories .quote-man { text-align: center; width: 200px; }
  .arrow { margin: 50px 0 0; width: 85%; height: 130px; background-color: #c97644; position: relative; }
  .arrow p { margin: 20px 25px 20px 25px; font-size: 14pt; text-align: left; line-height: 1.2em; }
  .arrow:after { content: ''; position: absolute; top: 0px; left: 100%; width: 0; height: 0; border: 65px solid transparent; border-left: 55px solid #f9bf12; }
  /* entry content */
  .entry-content { /* at this larger size, we can start to align images */ }
  .entry-content .alignleft, .entry-content img.alignleft { margin-right: 1.5em; display: inline; float: left; }
  .entry-content .alignright, .entry-content img.alignright { margin-left: 1.5em; display: inline; float: right; }
  .entry-content .aligncenter, .entry-content img.aligncenter { margin-right: auto; margin-left: auto; display: block; clear: both; }
  /* end .entry-content */
  /********************* FOOTER STYLES ********************/
  /* check your menus here. do they look good? do they need tweaking? */
  /* end .footer-links */ }
/*********************
TABLET & SMALLER LAPTOPS
This is the average viewing window. So Desktops, Laptops, and
in general anyone not viewing on a mobile device. Here's where
you can add resource intensive styles.
*********************/
@media only screen and (min-width: 768px) { /****************************************************************** Site Name: Author:  Stylesheet: Tablet & Small Desktop Stylesheet  Here's where you can start getting into the good stuff. This size will work on iPads, other tablets, and desktops. So you can start working with more styles, background images, and other resources. You'll also notice the grid starts to come into play. Have fun!  *****************************************************************/
  /********************* GENERAL STYLES ********************/
  /********************* LAYOUT & GRID STYLES ********************/
  .wrap { width: 760px; }
  .cd-top { right: 20px;  bottom: 20px; }
  .social-sidebar {display:block;position: fixed;width: 50px;right: 0;top: 50%;margin-top: -100px;background: #c97644;z-index: 100;padding: 5px 0 5px 10px;opacity: 0.5;transition: width .2s linear;-moz-transition: width .2s linear;-webkit-transition: width .2s linear;}
  .social-sidebar a {color:#fff;font-size:2em;display:block;}
  .social-sidebar a:hover {color:#a04209;}
  .social-sidebar:hover {opacity:1;width:60px;}
  /********************* HEADER STYLES ********************/

  #masthead .wrap { text-align: left; position:relative;min-height:550px;}
  .contribute {position:absolute;bottom:0;right:0;max-width:500px;color:#fff;text-align:center;}
  #masthead h1 { text-align: left; margin: 0; }
  #masthead p { text-align: left; }
  .page #masthead .wrap {min-height:250px;}
  .page #masthead h1 {text-align:center;margin:0 auto;}


  /* end .nav */


  /********************* CONTENT ********************/
  #how-it-works { padding: 100px 0; text-align: left; }
  #how-it-works img { display: block; margin: 0 auto; }
  #key-features .d-1of2:nth-of-type(2n+1) { clear: both; }
  #key-features .d-1of2 p { margin-right: 35px; }
  #use-case .table { padding: 25px 0 25px 50px; }
  #use-case .table:first-of-type { padding-top: 0; }
  #use-case .table:last-of-type { padding-bottom: 0; }
  #use-case .left img { margin-bottom: 0; padding-right: 25px; }
  #use-case h3 {margin: 0 0 15px;text-align:left;}
  .quotes .table-cell {display:table-cell;text-align:left;}
  .table-cell.quote-man {padding-right:35px;text-align:center;}
  .table-cell.quote-man img {text-align:center;}
  .arrow { height: 80px; }
  .arrow p { margin: 20px 85px 20px 25px; }
  .arrow:after { border: 40px solid transparent; border-left: 40px solid #c97644; }
  .hentry { margin-right: 50px; }


	.divTableCell {
		font-size:11pt;
	}
	.divTableRow .divTableCell:nth-of-type(1) {
		width:18%;
	}
	.divTableRow .divTableCell:nth-of-type(2) {
		width:31.5%;
	}
	.divTableRow .divTableCell:last-of-type {
		width:15%;
	}
  /********************* SIDEBARS & ASIDES ********************/
  .sidebar { margin-top: 0; }
  .widgettitle { border-bottom: 2px solid #444; margin-bottom: 0.75em; }
  .widget { padding: 0 10px; margin: 2.2em 0; }
  .widget ul li { margin-bottom: 0.75em; /* deep nesting */ }
  .widget ul li ul { margin-top: 0.75em; padding-left: 1em; }

  /********************* FOOTER STYLES ********************/
  /* you'll probably need to do quite a bit of overriding here if you styled them for mobile. Make sure to double check these! */
  .footer-links ul li { /*
be careful with the depth of your menus.
it's very rare to have multi-depth menus in
the footer.
*/ }
.y-btn {display:inline-block;margin:0;}
/*.y-btn:first-of-type {margin-right:15px;}*/
  /* end .footer-links */ }
/*********************
DESKTOP
This is the average viewing window. So Desktops, Laptops, and
in general anyone not viewing on a mobile device. Here's where
you can add resource intensive styles.
*********************/
@media only screen and (min-width: 1030px) { /****************************************************************** Site Name: Author:  Stylesheet: Desktop Stylsheet  This is the desktop size. It's larger than an iPad so it will only be seen on the Desktop.  *****************************************************************/
  #logo { float: left; text-align: left; }
  .wrap, .page .wrap.with-sidebar { width: 1040px; }
  .cd-top { height: 60px; width: 60px; right: 30px;bottom: 30px; }
  .nav li a { padding: .75em 1.6em; }
  .nav li:last-child a {padding-right:0;}
  /********************* NAVIGATION STYLES ********************/
  .nav { border: 0; float: right; margin-top: 35px; /* end .menu ul li */ /* highlight current page */ /* end current highlighters */ }
  .nav ul { background: #e8e5e0; margin-top: 0; }
  .nav li { float: left; position: relative; /*
plan your menus and drop-downs wisely.
*/ /* showing sub-menus */ }
  .nav li a { border-bottom: 0; color: #626366; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 700; text-transform: uppercase; font-size: 10.2pt; letter-spacing: 1px; padding: .75em 1.2em; /*
you can use hover styles here even though this size
has the possibility of being a mobile device.
*/ }
  .nav li a:hover, .nav li a:focus { color: #c97644; }
  .nav li.active > a {color:#c97644;}
  .nav li ul.sub-menu, .nav li ul.children { width:235px;margin-top: 0; position: absolute; visibility: hidden;opacity:0; z-index: 8999;padding-left:0; -webkit-transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s;-moz-transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s;-ms-transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s; -o-transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s;transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s;  -webkit-transform: translateY(-2em); -moz-transform: translateY(-2em); -o-transform: translateY(-2em); -ms-transform: translateY(-2em);translateY(-2em);}

  .nav li ul.sub-menu li a, .nav li ul.children li a { float:none;padding-left: 10px; border-right: 0; display: block; width: 235px; border-bottom: 1px solid #ccc; line-height: 1.4em;}
  .nav li ul.sub-menu li a:hover, .nav li ul.children li a:hover {color:#c97644;}
  .nav li ul.sub-menu li:last-child a, .nav li ul.children li:last-child a { border-bottom: 0; }
  .nav li ul.sub-menu li ul, .nav li ul.children li ul { top: 0; left: 100%; }
  .nav li:hover > ul { top: auto; visibility: visible; opacity:1;-moz-transform: translateY(0%);-webkit-transform: translateY(0%); -o-transform: translateY(0%);-ms-transform: translateY(0%); transform: translateY(0%); -webkit-transition-delay: 0s, 0s, 0.3s;-moz-transition-delay: 0s, 0s, 0.3s;-o-transition-delay: 0s, 0s, 0.3s;transition-delay: 0s, 0s, 0.3s; /* this removes the transition delay so the menu will be visible while the other styles transition */}
.nav li ul.sub-menu.com-sm li a {
	border-bottom:none;
}

.under-dev {
  background:#aea698;
  color:#fff;
  font-weight:700;
  text-transform: uppercase;
  padding:10px;
  width:100%;
  border-bottom:1px solid #ccc;
  line-height: 1.4em;
  font-size:10.2pt;
  letter-spacing: 1px;
  text-align: center;
}
 .dropmenu-head {
 	float: none;
	border-right: 0;
	display: block;
	width: 235px;
	text-transform:uppercase;
	color:#666;
	padding:0 10px 0 15px;
	border-bottom:none;
	font-size:.95em;
}
.sub-menu.com-sm .dropmenu-head:first-child {
	padding-top:10px;
}
.sub-menu.com-sm .mail,
.sub-menu.com-sm .slack,
.sub-menu.com-sm .github,
.sub-menu.com-sm .twitter-icon,
.sub-menu.com-sm .jira {
	background-position:left 15px center;
}
.nav li ul.sub-menu.com-sm li .mail,
.nav li ul.sub-menu.com-sm li .slack,
.nav li ul.sub-menu.com-sm li .github,
.nav li ul.sub-menu.com-sm li .twitter-icon,
.nav li ul.sub-menu.com-sm li .jira {
	padding-left:40px;
}
.sub-menu.com-sm li a {
	padding:5px 10px 5px 25px;
}
li.divider {
	border-bottom:1px solid #ccc;
	width:100%;
	margin:10px 0 !important;
}
.nav li ul.sub-menu.com-sm li {
	margin-bottom:0;
}
.nav li ul.sub-menu.com-sm li a {
	padding-left:15px;
}
  img.oniguy { margin-top: 75px; }
  .page #masthead .wrap {min-height:360px;display: flex;  justify-content: flex-end;  align-items: center;  align-content: flex-end;text-align:right;}
  #and { display: table; border-collapse: separate; width: 100%; }
  #and .and-row { display: table-row; }
  #and .and-cell { display: table-cell; vertical-align: middle; }
  #and p { margin: 0; }
  #and img { margin-right: 35px; }
  #use-case .table:last-of-type { padding-bottom: 125px; }
  .arrow { height: 80px; }
  .arrow p { margin: 30px 60px 20px 25px; }
  .arrow:after { border: 40px solid transparent; border-left: 40px solid #c97644; }

  .page .wrap.with-sidebar {display:flex;}
  .page .downloads {margin-left:50px;} }

/*********************
LARGE VIEWING SIZE
This is for the larger monitors and possibly full screen viewers.
*********************/
@media only screen and (min-width: 1240px) {
  #user-stories .wrap {width:1140px;}
}
/*********************
RETINA (2x RESOLUTION DEVICES)
This applies to the retina iPhone (4s) and iPad (2,3) along with
other displays with a 2x resolution. You can also create a media
query for retina AND a certain size if you want. Go Nuts.
*********************/
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) { /****************************************************************** Site Name:  Author:   Stylesheet: Retina Screens & Devices Stylesheet  When handling retina screens you need to make adjustments, especially if you're not using font icons. Here you can add them in one neat place.  *****************************************************************/
  /*   EXAMPLE  Let's say you have an image and you need to make sure it looks ok on retina screens. Let's say we have an icon which dimension are 24px x 24px. In your regular stylesheets, it would look something like this:  .icon { 	width: 24px; 	height: 24px; 	background: url(../css/img/test.png) no-repeat; }  For retina screens, we have to make some adjustments, so that image doesn't look blurry. So, taking into account the image above and the dimensions, this is what we would put in our retina stylesheet:  .icon { 	background: url(../css/img/test@2x.png) no-repeat; 	background-size: 24px 24px; }  So, you would create the same icon, but at double the resolution, meaning  it would be 48px x 48px. You'd name it the same, but with a @2x at the end (this is pretty standard practice). Set the background image so it matches the original dimensions and you are good to go.   */ }
/*********************
PRINT STYLESHEET
Feel free to customize this. Remember to add things that won't make
sense to print at the bottom. Things like nav, ads, and forms should
be set to display none.
*********************/
@media print { /****************************************************************** Site Name: Author:  Stylesheet: Print Stylesheet  This is the print stylesheet. There's probably not a lot of reasons to edit this stylesheet. If you want to though, go for it.  *****************************************************************/
  * { background: transparent !important; color: black !important; text-shadow: none !important; filter: none !important; -ms-filter: none !important; }
  a, a:visited { color: #444 !important; text-decoration: underline; }
  a:after, a:visited:after { content: " (" attr(href) ")"; }
  a abbr[title]:after, a:visited abbr[title]:after { content: " (" attr(title) ")"; }
  .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
  pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
  thead { display: table-header-group; }
  tr, img { page-break-inside: avoid; }
  img { max-width: 100% !important; }
  @page { margin: 0.5cm; }
  p, h2, h3 { orphans: 3; widows: 3; }
  h2, h3 { page-break-after: avoid; }
  .sidebar, .page-navigation, .wp-prev-next, .respond-form, nav { display: none; } }
