
/* Palette generated by Material Palette - materialpalette.com/blue/cyan */

.dark-primary-color    { background: #1976D2; }
.default-primary-color { background: #2196F3; }
.light-primary-color   { background: #BBDEFB; }
.text-primary-color    { color: #FFFFFF; }
.accent-color          { background: #00BCD4; }
.primary-text-color    { color: #212121; }
.secondary-text-color  { color: #727272; }
.divider-color         { border-color: #B6B6B6; }

/* for layout */
html,
body {
  margin: 0;
  padding: 0;
  height: 100%;
  width: 100%;
  overflow: hidden;
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  display: flex;
  flex-direction: column;
  -webkit-overflow-scrolling: touch;
}

header {
  flex: 0 0 50px;
  display: flex;
  flex-direction: row;
  align-items: center;
  padding-left: 30px;
}

header ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

header ol li {
  display: inline;
}

header form {
  display: flex;
  flex: 1;
  justify-content: flex-end;
  padding-right: 30px;
}

header#header-search-sidebar {
  height: 50px;
  margin-bottom: 25px;
}

footer {
  flex: 0 0 16px;
  text-align: center;
  padding: 16px 20px;
}

main {
  flex: 1;
  display: flex;
  flex-direction: row;
  padding: 20px;
  min-height: 0;
}

.sidebar-offcanvas-left {
  flex: 0 1 230px;
  overflow-y: scroll;
  padding: 20px 0 15px 30px;
  margin: 5px 20px 0 0;
  visibility: hidden; /* shown by Javascript after scroll position restore */
}

::-webkit-scrollbar-button{ display: none; height: 13px; border-radius: 0px; background-color: #AAA; }
::-webkit-scrollbar-button:hover{ background-color: #AAA; }
::-webkit-scrollbar-thumb{ background-color: #CCC; }
::-webkit-scrollbar-thumb:hover{ background-color: #CCC; }
::-webkit-scrollbar{ width: 4px; }

.main-content::-webkit-scrollbar{ width: 8px; }

.main-content {
  flex: 1;
  overflow-y: scroll;
  padding: 10px 20px 0 20px;
  visibility: hidden; /* shown by Javascript after scroll position restore */
}

.sidebar-offcanvas-right {
  flex: 0 1 12em;
  overflow-y: scroll;
  padding: 20px 15px 15px 15px;
  margin-top: 5px;
  margin-right: 20px;
  visibility: hidden; /* shown by Javascript after scroll position restore */
}
/* end for layout */

body {
  -webkit-text-size-adjust: 100%;
  overflow-x: hidden;
  font-family: Roboto, sans-serif;
  font-size: 16px;
  line-height: 1.42857143;
  color: #111111;
  background-color: #fff;
}

/* some of this is to reset bootstrap */
nav.navbar {
  background-color: inherit;
  min-height: 50px;
  border: 0;
}

@media (max-width: 768px) {
  .hidden-xs {
    display: none !important;
  }
}

@media (min-width: 769px) {
  .hidden-l {
    display: none !important;
  }
}

nav.navbar .row {
  padding-top: 8px;
}

nav .container {
  white-space: nowrap;
}

header {
  background-color: #eeeeee;
  box-shadow: 0 3px 5px rgba(0,0,0,0.1);
}

header.header-fixed nav.navbar-fixed-top {
  box-shadow: 0 3px 5px rgba(0,0,0,0.1);
}

header.container-fluid {
  padding: 0;
}

header .masthead {
  padding-top: 64px;
}

header .contents {
  padding: 0;
}

@media screen and (max-width:768px) {
  header .contents {
    padding-left: 15px;
    padding-right: 15px;
  }
}

a {
  text-decoration: none;
}

.body {
  margin-top: 90px;
}

section {
  margin-bottom: 36px;
}

dl {
  margin: 0;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: Roboto, sans-serif;
  font-weight: 400;
  margin-top: 1.5em;
  color: #111111;
}

h1.title {
  overflow: hidden;
  text-overflow: ellipsis;
}

h1 {
  font-size: 37px;
  margin-top: 0;
  margin-bottom: 0.67em;
}

h2 {
  font-size: 28px;
}

h5 {
  font-size: 16px;
}

.subtitle {
  font-size: 17px;
  min-height: 1.4em;
}

.title-description .subtitle {
  white-space: nowrap;
  overflow-x: hidden;
  text-overflow: ellipsis;
}

p {
  margin-bottom: 1em;
  margin-top: 0;
}

a {
  color: #0175C2;
}

a:hover {
  color: #13B9FD;
}

pre.prettyprint {
  font-family: 'Source Code Pro', Menlo, monospace;
  color: black;
  border-radius: 0;
  font-size: 15px;
  word-wrap: normal;
  line-height: 1.4;
  border: 0;
  margin: 16px 0 16px 0;
  padding: 8px;
}

pre code {
  white-space: pre;
  word-wrap: initial;
  font-size: 100%
}

.fixed {
  white-space: pre;
}

pre {
  border: 1px solid #ddd;
  background-color: #eee;
  font-size: 14px;
}

code {
  font-family: 'Source Code Pro', Menlo, monospace;
  /* overriding bootstrap */
  color: inherit;
  padding: 0.2em 0.4em;
  font-size: 85%;
  background-color: rgba(27,31,35,0.05);
  border-radius: 3px;
}

@media(max-width: 768px) {
  nav .container {
    width: 100%
  }

  h1 {
    font-size: 24px;
  }

  pre {
    margin: 16px 0;
  }
}

@media (min-width: 768px) {
  ul.subnav li {
    font-size: 17px;
  }
}

header h1 {
  font-weight: 400;
  margin-bottom: 16px;
}

header a,
header p,
header li {
  color: #111111;
}

header a:hover {
  color: #0175C2;
}

header h1 .kind {
  color: #555;
}

dt {
  font-weight: normal;
}

dd {
  color: #212121;
  margin-bottom: 1em;
  margin-left: 0;
}

dd.callable, dd.constant, dd.property {
  margin-bottom: 24px;
}

dd p {
  overflow-x: hidden;
  text-overflow: ellipsis;
  margin-bottom: 0;
}

/* Enum values do not have their own pages; their full docs are presented on the
 * enum class's page. */
dt.constant + dd p {
  margin-bottom: 1em;
}

/* indents wrapped lines */
section.summary dt {
  margin-left: 24px;
  text-indent: -24px;
}

.dl-horizontal dd {
  margin-left: initial;
}

dl.dl-horizontal dt {
  font-style: normal;
  text-align: left;
  color: #727272;
  margin-right: 20px;
  width: initial;
}

dt .name {
  font-weight: 500;
}

dl dt.callable .name {
  float: none;
  width: auto;
}

.parameter {
  white-space: nowrap;
}

.type-parameter {
  white-space: nowrap;
}

.multi-line-signature .type-parameter .parameter {
  margin-left: 0px;
  display: unset;
}

.parameter-list {
  display: table-cell;
  margin-left: 10px;
  list-style-type: none;
}

.signature {
  color: #727272;
}

.signature a {
  /* 50% mix of default-primary-color and primary-text-color. */
  color: #4674a2;
}

.optional {
  font-style: italic;
}

.undocumented {
  font-style: italic;
}

.is-const {
  font-style: italic;
}

.deprecated {
  text-decoration: line-through;
}

.category.linked {
  font-weight: bold;
  opacity: 1;
}

/* Colors for category based on categoryOrder in dartdoc_options.config. */
.category.cp-0 {
  background-color: #54b7c4
}

.category.cp-1 {
  background-color: #54c47f
}

.category.cp-2 {
  background-color: #c4c254
}

.category.cp-3 {
  background-color: #c49f54
}

.category.cp-4 {
  background-color: #c45465
}

.category.cp-5 {
  background-color: #c454c4
}

.category a {
  color: white;
}

.category {
  padding: 2px 4px;
  font-size: 12px;
  border-radius: 4px;
  background-color: #999;
  text-transform: uppercase;
  color: white;
  opacity: .5;
}

h1 .category {
  vertical-align: middle;
}

.feature {
  display: inline-block;
  background: white;
  border: 1px solid #0175c2;
  border-radius: 20px;
  color: #0175c2;

  font-size: 12px;
  padding: 1px 6px;
  margin: 0 8px 0 0;
}

h1 .feature {
  vertical-align: middle;
}

.source-link {
  padding: 18px 4px;
  vertical-align: middle;
}

.source-link .material-icons {
  font-size: 18px;
}

@media (max-width: 768px) {
  .source-link {
    padding: 7px 2px;
    font-size: 10px;
  }
}

#external-links {
  float: right;
}

.btn-group {
  position: relative;
  display: inline-flex;
  vertical-align: middle;
}

p.firstline {
  font-weight: bold;
}

footer {
  color: #fff;
  background-color: #111111;
  width: 100%;
}

footer p {
  margin: 0;
}

footer .no-break {
  white-space: nowrap;
}

footer .container,
footer .container-fluid {
  padding-left: 0;
  padding-right: 0;
}

footer a, footer a:hover {
  color: #fff;
}

.markdown.desc {
  max-width: 700px;
}

.markdown h1 {
  font-size: 24px;
  margin-bottom: 8px;
}

.markdown h2 {
  font-size: 20px;
  margin-top: 24px;
  margin-bottom: 8px;
}

.markdown h3 {
  font-size: 18px;
  margin-bottom: 8px;
}

.markdown h4 {
  font-size: 16px;
  margin-bottom: 0;
}

.markdown li p {
  margin: 0;
}

.gt-separated {
  list-style: none;
  padding: 0;
  margin: 0;
}

.gt-separated li {
  display: inline-block;
}

.gt-separated li:before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path fill='%23DDDDDD' d='M6.7,4L5.7,4.9L8.8,8l-3.1,3.1L6.7,12l4-4L6.7,4z'/></svg>");
  background-position: center;
  content: "\00a0";
  margin: 0 6px 0 4px;
  padding: 0 3px 0 0;
}

.gt-separated.dark li:before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path fill='%23727272' d='M6.7,4L5.7,4.9L8.8,8l-3.1,3.1L6.7,12l4-4L6.7,4z'/></svg>");
}

.gt-separated li:first-child:before {
  background-image: none;
  content: "";
  margin: 0;
  padding: 0;
}

/* The slug line under a declaration for things like "const", "read-only", etc. */
.features {
  font-style: italic;
  color: #727272;
}

.multi-line-signature {
  font-size: 17px;
  color: #727272;
}

.multi-line-signature .parameter {
  margin-left: 24px;
  display: block;
}

.breadcrumbs {
  padding: 0;
  margin: 8px 0 8px 0;
  white-space: nowrap;
  line-height: 1;
}

@media screen and (min-width: 768px) {
  nav ol.breadcrumbs {
    float: left;
  }
}

@media screen and (max-width: 768px) {
  .breadcrumbs {
    margin: 0 0 24px 0;
    overflow-x: hidden;
  }
}

.self-crumb {
  color: #555;
}

.self-name {
  color: #555;
  display: none;
}

.annotation-list {
  list-style: none;
  padding: 0;
  display: inline;
}

.comma-separated {
  list-style: none;
  padding: 0;
  display: inline;
}

.comma-separated li {
  display: inline;
}

.comma-separated li:after {
  content: ", ";
}

.comma-separated li:last-child:after {
  content: "";
}

.end-with-period li:last-child:after {
  content: ".";
}

.container > section:first-child {
  border: 0;
}

.constructor-modifier {
  font-style: italic;
}

section.multi-line-signature div.parameters {
  margin-left: 24px;
}

/* subnav styles */

ul.subnav {
  overflow: auto;
  white-space: nowrap;
  padding-left: 0;
  min-height: 25px;
}

ul.subnav::-webkit-scrollbar {
  display: none;
}

ul.subnav li {
  display: inline-block;
  text-transform: uppercase;
}

ul.subnav li a {
  color: #111;
}

ul.subnav li {
  margin-right: 24px;
}

ul.subnav li:last-of-type {
  margin-right: 0;
}

@media(max-width: 768px) {
  ul.subnav li {
    margin-right: 16px;
  }
}

/* sidebar styles */

.sidebar ol {
  list-style: none;
  line-height: 22px;
  margin-top: 0;
  margin-bottom: 0;
  padding: 0 0 15px 0;
}

.sidebar h5 a,
.sidebar h5 a:hover {
  color: #727272;
}

.sidebar h5,
.sidebar ol li {
  text-overflow: ellipsis;
  overflow: hidden;
  padding: 3px 0;
}

.sidebar h5 {
  color: #727272;
  font-size: 18px;
  margin: 0 0 25px 0;
  padding-top: 0;
}

.sidebar ol li.section-title {
  font-size: 18px;
  font-weight: normal;
  text-transform: uppercase;
  padding-top: 25px;
}

.sidebar ol li.section-subtitle a {
  color: inherit;
}

.sidebar ol li.section-subtitle {
  font-weight: 400;
  text-transform: uppercase;
}

.sidebar ol li.section-subitem {
  margin-left: 12px;
}

.sidebar ol li:first-child {
  padding-top: 0;
  margin-top: 0;
}

button {
  padding: 0;
}

#sidenav-left-toggle {
  display: none;
  vertical-align: text-bottom;
  padding: 0;
}

/* left-nav disappears, and can transition in from the left */
@media screen and (max-width:768px) {
  #sidenav-left-toggle {
    display: inline;
    background: no-repeat url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path fill='%23111' d='M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z'/></svg>");
    background-position: center;
    width: 24px;
    height: 24px;
    border: none;
    margin-right: 24px;
  }

  #overlay-under-drawer.active {
    opacity: 0.4;
    height: 100%;
    z-index: 1999;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: black;
    display: block;
  }

  .sidebar-offcanvas-left {
    left: -100%;
    position: fixed;
    -webkit-transition:all .25s ease-out;
    -o-transition:all .25s ease-out;
    transition:all .25s ease-out;
    z-index: 2000;
    top: 0;
    width: 280px; /* works all the way down to an iphone 4 */
    height: 90%;
    background-color: white;
    overflow-y: scroll; /* TODO: how to hide scroll bars? */
    padding: 10px;
    margin: 10px 10px;
    box-shadow: 5px 5px 5px 5px #444444;
    visibility: hidden; /* shown by Javascript after scroll position restore */
  }

  ol#sidebar-nav {
    font-size: 18px;
    white-space: pre-line;
  }

  .sidebar-offcanvas-left.active {
    left: 0; /* this animates our drawer into the page */
  }

  .self-name {
    display: inline-block;
  }
}

.sidebar-offcanvas-left h5 {
  margin-bottom: 10px;
}

.sidebar-offcanvas-left h5:last-of-type {
  border: 0;
  margin-bottom: 25px;
}

/* the right nav disappears out of view when the window shrinks */
@media screen and (max-width: 992px) {
  .sidebar-offcanvas-right {
     display: none;
   }
}

#overlay-under-drawer {
  display: none;
}

/* find-as-you-type search box */

/* override bootstrap defaults */
.form-control {
  border-radius: 0;
  border: 0;
}

@media screen and (max-width: 768px) {
  form.search {
    display: none;
  }
}

.typeahead,
.tt-query,
.tt-hint {
  width: 200px;
  height: 20px;
  padding: 2px 7px 1px 7px;
  line-height: 20px;
  outline: none;
}

.typeahead {
  background-color: #fff;
  border-radius: 2px;
}

.tt-query {
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

.tt-hint {
  color: #999
}

.navbar-right .tt-menu {
  right:0;
  left: inherit !important;
  width: 422px;
  max-height: 250px;
  overflow-y: scroll;
}

.tt-menu {
  font-size: 14px;
  margin: 0;
  padding: 8px 0;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
     -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
          box-shadow: 0 5px 10px rgba(0,0,0,.2);
}

.tt-suggestion {
  padding: 3px 20px;
  color: #212121;
}

.tt-suggestion:hover {
  cursor: pointer;
  color: #fff;
  background-color: #0097cf;
}

.tt-suggestion:hover .search-from-lib {
  color: #ddd;
}

.tt-suggestion.tt-cursor {
  color: #fff;
  background-color: #0097cf;
}

.tt-suggestion.tt-cursor .search-from-lib {
  color: #ddd;
}

.tt-suggestion p {
  margin: 0;
}

.search-from-lib {
  font-style: italic;
  color: gray;
}

#search-box {
  background-color: #ffffff;
}

.search-body {
  border: 1px solid #7f7f7f;
  max-width: 400px;
  box-shadow: 3px 3px 5px rgba(0,0,0,0.1);
}

section#setter {
  border-top: 1px solid #ddd;
  padding-top: 36px;
}

li.inherited a {
  opacity: 0.65;
  font-style: italic;
}

#instance-methods dt.inherited .name,
#instance-properties dt.inherited .name,
#operators dt.inherited .name {
  font-weight: 300;
  font-style: italic;
}

#instance-methods dt.inherited .signature,
#instance-properties dt.inherited .signature,
#operators dt.inherited .signature {
  font-weight: 300;
}

@media print {
  .subnav, .sidebar {
    display:none;
  }

  a[href]:after {
   content:"" !important;
  }
}
