/* -- Extra CSS styles for Zephyr content (RTD theme) ----------------------- */

/* make the page width fill the window */
.wy-nav-content {
   max-width: none;
}

/* pygments tweak for white-on-black console */
/* hold off on this change for now

.highlight-console .highlight {
   background-color: black;
}
.highlight-console .highlight .go, .highlight-console .highlight .gp {
   color: white;
}
.highlight-console .highlight .hll {
   background-color: white;
}
.highlight-console .highlight .hll .go, .highlight-console .highlight .hll .gp {
   color: black;
   font-weight: bold;
}
*/

/* tweak doc version selection */
.rst-versions {
   position: static !important;
}


.rst-versions .rst-current-version {
   padding: 5px;
   background-color: #2980B9;
   color: #80FF80;
}

.rst-versions .rst-other-versions {
   padding: 5px;
}

div.rst-other-versions dl {
   margin-bottom: 0;
}

/* tweak spacing after a toctree, fixing issue from sphinx-tabs */
.toctree-wrapper ul, .section ul {
   margin-bottom: 24px !important;
}

/* code block highlight color in rtd changed to lime green, no no no */

.rst-content tt.literal, .rst-content code.literal, .highlight {
   background: #f0f0f0;
}
.rst-content tt.literal, .rst-content code.literal {
    color: #000000;
}

/* code literal links should be blue, and purple after visiting */
a.internal code.literal {
   color: #2980B9;
}
a.internal:visited code.literal {
   color: #9B59B9;
}

/* Make the version number more visible */
.wy-side-nav-search>div.version {
    color: rgba(255,255,255,1);
}

/* squish the space between a paragraph before a list */
div > p + ul, div > p + ol {
   margin-top: -20px;
}

/* squish space before an hlist in a list */
li table.hlist {
   margin-top: -10px;
   margin-bottom: 5px;
}

/* add some space before the figure caption */
p.caption  {
#    border-top: 1px solid;
    margin-top: 1em;
}

/* decrease line leading a bit, 24px is too wide */

p {
   line-height: 22px;
}

/* add a colon after the figure/table number (before the caption) */
span.caption-number::after {
   content: ": ";
}

p.extrafooter {
   text-align: right;
   margin-top: -36px;
}

table.align-center {
   display: table !important;
}

/* put the table caption at the bottom, as done for figures */
table {
   caption-side: bottom;
}

.code-block-caption {
    color: #000;
    font: italic 85%/1 arial,sans-serif;
    padding: 1em 0;
    text-align: center;
}

/*  make .. hlist:: tables fill the page */
table.hlist {
    width: 95% !important;
    table-layout: fixed;
}

/*  override rtd theme white-space no-wrap in table heading and content  */
th,td {
    white-space: normal !important;
}

/* dbk tweak for doxygen-generated API headings (for RTD theme) */
.rst-content dl.group>dt, .rst-content dl.group>dd>p {
   display:none !important;
}
.rst-content dl.group {
  margin: 0 0 12px 0px;
}
.rst-content dl.group>dd {
  margin-left: 0  !important;
}
.rst-content p.breathe-sectiondef-title {
  text-decoration: underline;  /* dbk for API sub-headings */
  font-size: 1.25rem;
  font-weight: bold;
  margin-bottom: 12px;
}
.rst-content div.breathe-sectiondef {
  padding-left: 0 !important;
}

/* doxygenXX item color tweaks, light blue background with dark blue top border */
.rst-content dl:not(.docutils) dl dt, dl:not(.docutils,.rst-other-versions) dt {
  background: #e7f2fa !important;
  border-top: none !important;
  border-left: none !important; */
}


/* tweak display of option tables to make first column wider */
col.option {
  width: 25%;
}

/* tweak format for <kbd> (:kbd:`F10`) */
kbd
{
  -moz-border-radius:3px;
  -moz-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;
  -webkit-border-radius:3px;
  -webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;
  background-color:#f7f7f7;
  border:1px solid #ccc;
  border-radius:3px;
  box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;
  color:#333;
  display:inline-block;
  font-family:Arial,Helvetica,sans-serif;
  font-size:11px;
  line-height:1.4;
  margin:0 .1em;
  padding:.1em .6em;
  text-shadow:0 1px 0 #fff;
}

/* home page grid display */

.grid {
    list-style-type: none !important;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin: 1rem auto;
    max-width: calc((250px + 2rem) * 4);
}

.grid-item {
    list-style-type: none !important;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: 200px;
    text-align: center;
    margin: 1rem;
}

.grid-item a {
    display: block;
    width: 200px;
    height: 200px;
    padding: 20px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    border: 1px solid #c6cbce;
    background-color: #57D3FC;
    color: white;
}

.grid-item h2 {
    font-size: 1.1rem;
}

.grid-item img {
    margin-bottom: 1.1rem;
    max-width: 75%;
}


.grid-item a:hover {
    background-color: #C756E9;
    color: white;
}


.grid-item p {
    margin-top: 0.5rem;
    color: #333e48;
}

.grid-icon {
   line-height: 1.8;
   font-size: 4rem;
   color: mediumslateblue;
}

/* add a class for multi-column support
 * in docs to replace use of .hlist with
 * a .. rst-class:: rst-columns
 */

.rst-columns {
   column-width: 18em;
}

/* numbered "h2" steps */

body {
   counter-reset: step-count;
}

div.numbered-step h2::before {
  counter-increment: step-count;
  content: counter(step-count);
  background: #cccccc;
  border-radius: 0.8em;
  -moz-border-radius: 0.8em;
  -webkit-border-radius: 0.8em;
  color: #ffffff;
  display: inline-block;
  font-weight: bold;
  line-height: 1.6em;
  margin-right: 5px;
  text-align: center;
  width: 1.6em;
}

/* tweak bottom margin of a code block in a list */

.tab div[class^='highlight']:last-child {
   margin-bottom: 1em;
}

/* force table content font-size in responsive tables to be 100%
 * fixing larger font size for paragraphs in the kconfig tables */

.wy-table-responsive td p {
   font-size:100%;
}
