/* -*- 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 5px #bcc6d2;
    background-color: #eaedf1;
    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;
    }
}

/* QAPI domain theming */

/* most content in a QAPI object definition should not eclipse about
   80ch, but nested field lists are explicitly exempt due to their
   two-column nature */
.qapi dd *:not(dl) {
    max-width: 80ch;
}

/* but the content column itself should still be less than ~80ch. */
.qapi .field-list dd {
    max-width: 80ch;
}

.qapi-infopips {
    margin-bottom: 1em;
}

.qapi-infopip {
    display: inline-block;
    padding: 0em 0.5em 0em 0.5em;
    margin: 0.25em;
}

.qapi-deprecated,.qapi-unstable {
    background-color: #fffef5;
    border: solid #fff176 6px;
    font-weight: bold;
    padding: 8px;
    border-radius: 15px;
    margin: 5px;
}

.qapi-unstable::before {
    content: '🚧 ';
}

.qapi-deprecated::before {
    content: '⚠️ ';
}

.qapi-ifcond::before {
    /* gaze ye into the crystal ball to determine feature availability */
    content: '🔮 ';
}

.qapi-ifcond {
    background-color: #f9f5ff;
    border: solid #dac2ff 6px;
    padding: 8px;
    border-radius: 15px;
    margin: 5px;
}

/* code blocks */
.qapi div[class^="highlight"] {
    width: fit-content;
    background-color: #fffafd;
    border: 2px solid #ffe1f3;
}

/* note, warning, etc. */
.qapi .admonition {
    width: fit-content;
}

/* pad the top of the field-list so the text doesn't start directly at
   the top border; primarily for the field list labels, but adjust the
   field bodies as well for parity. */
dl.field-list > dt:first-of-type, dl.field-list > dd:first-of-type {
    padding-top: 0.3em;
}

dl.field-list > dt:last-of-type, dl.field-list > dd:last-of-type {
    padding-bottom: 0.3em;
}

/* pad the field list labels so they don't crash into the border */
dl.field-list > dt {
    padding-left: 0.5em;
    padding-right: 0.5em;
}

/* Add a little padding between field list sections */
dl.field-list > dd:not(:last-child) {
    padding-bottom: 1em;
}

/* Sphinx 3.x: unresolved xrefs */
.rst-content *:not(a) > code.xref {
    font-weight: 400;
    color: #333333;
}
