/* Custom CSS for the Rust Specification. */

/*
.parenthetical class used to keep e.g. "less-than symbol (<)" from wrapping
the end parenthesis onto its own line. Use in a span between the last word and
the parenthetical. So for this example, you'd use
```less-than <span class="parenthetical">symbol (`<`)</span>```
*/
.parenthetical {
    white-space: nowrap;
}

/*
Warnings are defined using admonitions in blockquotes:

> [!WARNING]
> This is bad!

*/
main .warning blockquote {
    padding: 0px;
}

main .warning blockquote p {
    padding: 0px 20px;
    margin: 10px 0;
}

main .warning blockquote p:first-child::before {
    content: "⚠️ ";
}

.light main .warning blockquote,
.rust main .warning blockquote {
    border: 2px solid red;
    background: #ffcece;
}

.rust main .warning blockquote {
    /* overrides previous declaration */
    border-color: #961717;
}

.coal main .warning blockquote,
.navy main .warning blockquote,
.ayu main .warning blockquote {
    background: #542626;
}

/* Make the links higher contrast on dark themes */
.coal main .warning blockquote p a,
.navy main .warning blockquote p a,
.ayu main .warning blockquote p a {
    color: #80d0d0;
}

/* <kbd> tags can be used to highlight specific character elements. */
kbd {
    border: 1px solid #999;
    display: inline-block;
    border-radius: 3px;
    padding: 0 0.6ex;
    background: #eee;
    box-shadow: inset -1px -1px 0 #999;
    vertical-align: baseline;
    color: #000;
    height: 1.55em;
    font-style: normal;
    font-weight: bold;
    font-family: inherit;
    font-size: revert;
    line-height: revert;
}
kbd.optional {
    border-style: dashed;
    background: #fff;
}
var.optional {
    border-style: dashed;
}

/* <var> tags can be used for non-terminals. */
var {
    border: 1px solid #9c9;
    box-shadow: inset -1px -1px 0 #9c9;
    font-style: normal;
    display: inline-block;
    vertical-align: baseline;
    border-radius: 7px;
    padding: 0 4px;
    background: #dfd;
    margin: 2px;
}
var.type {
    box-shadow: inset -1px -1px 0 #c99;
    border-color: #c99;
    background: #fdd;
}

/* <span class="repeat"> can be used for a grammar production that repeats zero or more times. */
span.repeat {
    position: relative;
    border: 1px dashed #393;
    border-radius: 10px;
    display: inline-block;
    padding: 6px;
    margin-left: 0.5ex;
    margin-top: 1em;
    margin-bottom: 0.5ex;
    min-width: 3.8em;
    text-align: center;
}
span.repeat::before {
    content: "zero or more";
    white-space: nowrap;
    display: block;
    text-align: center;
    font-size: 0.75em;
    position: absolute;
    left: 0;
    right: 0;
    top: -1.4em;
    color: #393;
}
var > span {
    display: inline-block;
    border-right: 1px dotted green;
    padding-right: 0.5ex;
    margin-right: 0.5ex;
    font-style: italic;
}

/* <span class="version"> can be used to highlight a specific version of Rust. */
span.version {
    float: right;
    margin-left: 1em;
    margin-bottom: 1em;
    background: #f7c0eb;
    padding: 0.2ex 0.5ex;
    border-radius: 5px;
    display: block;
    box-shadow: inset -1px -1px 0 #a06894;
    font-size: 0.9em;
}

/* <dfn> tags are used to indicate a specific word or phrase is being defined. */
dfn {
    font-style: italic;
    text-decoration: underline;
}

.content main {
    /* Provides space on the left for the rule call-outs. */
    padding-left: 4em;
}

/* Rules are generated via r[foo.bar] syntax, processed by mdbook-spec. */
.rule {
    /* Allows the rule to be positioned. */
    position: relative;
    /* Position slightly to the left. */
    left: -4em;
    color: #999;
    font-size: 0.8em;
}
/* mdbook will wrap the rule content in a <p> tag, with a margin. However, we
   don't need the extra space
*/
.rule ~ p {
    margin-top: 0px;
}

/* When the sidebar is visible, reduce the spacing of rules so that the
   content doesn't get shifted too far, and make the text too narrow.
*/
.sidebar-visible .rule {
    left: -1em;
}
.sidebar-visible .content main {
    padding-left: 1em;
}

/* Remove the blue coloring of links on rules that mdbook normally sets. */
.rule-link {
    color: #999 !important;
}

/* When clicking a rule, it is added as a URL fragment and the browser will
   navigate to it. This adds an indicator that the linked rule is the one that
   is "current", just like normal headers are in mdbook.
*/
.rule:target::before {
    display: inline-block;
    content: "»";
    margin-inline-start: -20px;
    width: 20px;
}

/* Sets the color for [!HISTORY] blockquote admonitions. */
.history > blockquote {
    background: #f7c0eb;
}
