/* -*- coding: utf-8; mode: css -*-
 *
 * Sphinx HTML theme customization: read the doc
 * Based on Linux Documentation/sphinx-static/theme_overrides.css
 */

/* Improve contrast and increase size for easier reading. */

body {
    font-family: serif;
    color: black;
    font-size: 100%;
}

h1, h2, .rst-content .toctree-wrapper p.caption, h3, h4, h5, h6, legend {
    font-family: sans-serif;
}

.rst-content dl:not(.docutils) dt {
    border-top: none;
    border-left: solid 3px #ccc;
    background-color: #f0f0f0;
    color: black;
}

.wy-nav-top {
    background: #802400;
}

.wy-side-nav-search input[type="text"] {
    border-color: #f60;
}

.wy-menu-vertical p.caption {
    color: white;
}

.wy-menu-vertical li.current a {
    color: #505050;
}

.wy-menu-vertical li.on a, .wy-menu-vertical li.current > a {
    color: #303030;
}

.fa-gitlab {
      box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2), 0 3px 10px 0 rgba(0,0,0,0.19);
      border-radius: 5px;
}

div[class^="highlight"] pre {
    font-family: monospace;
    color: black;
    font-size: 100%;
}

.wy-menu-vertical {
    font-family: sans-serif;
}

.c {
    font-style: normal;
}

p {
    font-size: 100%;
}

/* Interim: Code-blocks with line nos - lines and line numbers don't line up.
 * see: https://github.com/rtfd/sphinx_rtd_theme/issues/419
 */

div[class^="highlight"] pre {
    line-height: normal;
}
.rst-content .highlight > pre {
    line-height: normal;
}

/* Keep fields from being strangely far apart due to inheirited table CSS. */
.rst-content table.field-list th.field-name {
    padding-top: 1px;
    padding-bottom: 1px;
}
.rst-content table.field-list td.field-body {
    padding-top: 1px;
    padding-bottom: 1px;
}

/* qmp-example directive styling */

.rst-content .admonition-example {
    /* do not apply the standard admonition background */
    background-color: transparent;
    border: solid #ffd2ed 1px;
}

.rst-content .admonition-example > .admonition-title:before {
    content: "▷";
}

.rst-content .admonition-example > .admonition-title {
    background-color: #5980a6;
}

.rst-content .admonition-example > div[class^="highlight"] {
    /* make code boxes take up the full width of the admonition w/o margin */
    margin-left: -12px;
    margin-right: -12px;

    border-top: 1px solid #ffd2ed;
    border-bottom: 1px solid #ffd2ed;
    border-left: 0px;
    border-right: 0px;
}

.rst-content .admonition-example > div[class^="highlight"]:nth-child(2) {
    /* If a code box is the second element in an example admonition,
     * it is the first child after the title. let it sit flush against
     * the title. */
    margin-top: -12px;
    border-top: 0px;
}

.rst-content .admonition-example > div[class^="highlight"]:last-child {
    /* If a code box is the final element in an example admonition, don't
     * render margin below it; let it sit flush with the end of the
     * admonition box */
    margin-bottom: -12px;
    border-bottom: 0px;
}

.rst-content .admonition-example .highlight {
    background-color: #fffafd;
}

/* end qmp-example styling */

@media screen {

    /* content column
     *
     * RTD theme's default is 800px as max width for the content, but we have
     * tables with tons of columns, which need the full width of the view-port.
     */

    .wy-nav-content{max-width: none; }

    /* table:
     *
     *   - Sequences of whitespace should collapse into a single whitespace.
     *   - make the overflow auto (scrollbar if needed)
     *   - align caption "left" ("center" is unsuitable on vast tables)
     */

    .wy-table-responsive table td { white-space: normal; }
    .wy-table-responsive { overflow: auto; }
    .rst-content table.docutils caption { text-align: left; font-size: 100%; }

    /* captions:
     *
     *   - captions should have 100% (not 85%) font size
     *   - hide the permalink symbol as long as link is not hovered
     */

    .toc-title {
        font-size: 150%;
        font-weight: bold;
    }

    caption, .wy-table caption, .rst-content table.field-list caption {
        font-size: 100%;
    }
    caption a.headerlink { opacity: 0; }
    caption a.headerlink:hover { opacity: 1; }

    /* Menu selection and keystrokes */

    span.menuselection {
        color: blue;
        font-family: "Courier New", Courier, monospace
    }

    code.kbd, code.kbd span {
        color: white;
        background-color: darkblue;
        font-weight: bold;
        font-family: "Courier New", Courier, monospace
    }

    /* fix bottom margin of lists items */

    .rst-content .section ul li:last-child, .rst-content .section ul li p:last-child {
          margin-bottom: 12px;
    }

    /* inline literal: drop the borderbox, padding and red color */

    code, .rst-content tt, .rst-content code {
        color: inherit;
        border: none;
        padding: unset;
        background: inherit;
        font-size: 85%;
    }

    .rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal {
        color: inherit;
    }
}
