/* CSS */
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
/** 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 */ }

/* HTML5 display definitions ========================================================================== */
/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */
article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; }

/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */
audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ }

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

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

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

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

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

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

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

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

/** Address styling not present in IE 8/9. */
mark { background: #ff0; color: #000; }

/** Address inconsistent and variable font size in all browsers. */
small { font-size: 80%; }

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

sup { top: -0.5em; }

sub { bottom: -0.25em; }

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

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

/* Grouping content ========================================================================== */
/** Address margin not present in IE 8/9 and Safari. */
figure { margin: 1em 40px; }

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

/** Contain overflow in all browsers. */
pre { overflow: auto; }

/** Address odd `em`-unit font size rendering in all browsers. */
code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; }

/* Forms ========================================================================== */
/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */
/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */
button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ }

/** Address `overflow` set to `hidden` in IE 8/9/10/11. */
button { overflow: visible; }

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

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

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

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

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

/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width.  1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }

/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */
input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; }

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

/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }

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

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

/** Remove default vertical scrollbar in IE 8/9/10/11. */
textarea { overflow: auto; }

/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */
optgroup { font-weight: bold; }

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

td, th { padding: 0; }

/* LAYOUT STYLES */

p { margin-top: 0; }

code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; }

code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; }

pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; }

pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; }

ul, ol, dl { margin-bottom: 20px; }

/* COMMON STYLES */

td.halign-right { text-align: right; } 

td.halign-center { text-align: center; } 

form { padding: 20px; background: #f2f2f2; }

h2 { 
   font-size: 2em;
   line-height: 1.2em;
   font-weight: 200;
   letter-spacing: 0;
}

h3 { 
   font-size: 1.4em;
   line-height: 1.2em;
   font-weight: normal;
   letter-spacing: 0;
}

.sect1 {
   margin-left: 4%;
   margin-right: 4%;
   font: 13px/20px Arial, Helvetica, sans-serif  
}

a:link {
   text-decoration: none;
   color: #09569d;
}

#preamble hr{
   margin-left: 0%;
   margin-right: 0%;
}

#preamble .sectionbody table  {
   font-weight: 200;
   margin-left: 4%;
   margin-right: 4%;
}

hr {
   margin-bottom: 12px;
}

table.tableblock.frame-all.grid-all.spread {
   font-size: 12px;
}

code {
   font-size:.9em;
   border: 1px solid #eaeaea;
   background-color: #f6f6f6;
   border-radius: 3px;
   padding: 1px;
   padding-left:2px;
   padding-right:2px;
}

pre.prettyprint.highlight {
   border: 1px solid #eaeaea;
   background-color: #f6f6f6;
   border-radius: 4px;
   padding: 8px;
   padding-top:4px;
   padding-bottom:4px;
}

.language-oac_no_warn {
   font-size:.9em;
   color:#222;
   background-color: transparent;
}

#doc-title {
   margin-left: 4%;
}

#top-nav {
   margin-left: 4%;
   font-size: 12px;
}

#bottom-nav {
   margin-left: 4%;
   font-size: 12px;
}

.vector-font {
   color:grey; 
   font-size: 20px;
}

#copyright {
   padding-top: 10px;
   padding-bottom: 4px;
   display: table;
   margin:0 auto;
   color: grey;
   font-size: 12px;
   vertical-align: middle;
}

.beta {color: #FF0000}

/* GENERAL ELEMENT TYPE STYLES */

/* #Media Queries
================================================== */
/* Smaller than standard 960 (devices and browsers) */
/* Tablet Portrait size to standard 960 (devices and browsers) */
@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; }
  header h1, header h2 { width: 340px; }
  header h1 { font-size: 60px; }
  header h2 { font-size: 30px; }
}
/* All Mobile Sizes (devices and browser) */
@media only screen and (max-width: 767px) { .inner { width: 93%; }
  header { padding: 20px 0; }
  header .inner { position: relative; }
  header h1, header h2 { width: 100%; }
  header h1 { font-size: 48px; }
  header h2 { font-size: 24px; }
  header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
  header a.button small { display: inline; font-size: 13px; }
}
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */

header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; }

header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; }

/*
header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; }
*/

header a:hover { text-decoration: none; }

/* Admonition (Note) block */
.admonitionblock > table {
  border: 0;
  background: none;
  width: 100%;
  table-layout: auto;
  margin-bottom: 10.5px;
}
.admonitionblock > table td.icon {
  text-align: center;
  width: 60px;
}
.admonitionblock > table td.icon img {
  max-width: none;
}
.admonitionblock > table td.icon .title {
  text-transform: uppercase;
}
.admonitionblock > table td.content {
  padding-left: 1em;
  padding-right: 1em;
  border-left: 3px solid #ddd;
}
.admonitionblock > table td.content > :last-child > :last-child {
  margin-bottom: 0;
}
.admonitionblock td.icon [class^="fa icon-"]:before {
  font-size: 2.5em;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  cursor: default;
}
.admonitionblock td.icon .icon-note:before {
  content: "\f05a";
  color: #5bc0de;
}
