/*
 * Exosphere Documentation CSS Overrides
 *
 * SPDX-License-Identifier: Apache-2.0
 * SPDX-FileCopyrightText: 2025-2026 Alexandre Gauthier
 * SPDX-FileCopyrightText: 2017 Swiss Data Science Center (SDSC)
 *
 * This file contains the CSS for the visual look of the Sphinx Documentation.
 * Profoundly inspired by the Renku Documentation theme, with some tweaks for
 * readability. It shares no verbatim source with the Renku Sphinx Theme but
 * reuses its color palette and structure, so it is treated as a derivative
 * work and distributed under Renku's original Apache-2.0 terms.
 *   Renku Sphinx Theme, Apache License 2.0
 *   https://github.com/SwissDataScienceCenter/renku-sphinx-theme
 *
 * The bundled fonts are distributed under the SIL Open Font License,
 * Version 1.1 (http://scripts.sil.org/OFL); see LICENSE.txt in the fonts
 * directory. The non-bundled DejaVu Sans / DejaVu Sans Mono are specified
 * only as a convenience fallback and are not distributed with this project.
 *
 * See the top-level COPYRIGHT file for the full machine-readable summary.
 */

 /* Font definitions, no Google Fonts please */
@font-face {
    font-family: "Calcutta";
    src: url("../fonts/calcutta/Calcutta-Regular.woff") format("woff"),
         url("../fonts/calcutta/Calcutta-Regular.ttf") format("truetype");
    font-style: normal;
    font-weight: 400;
    text-rendering: optimizeLegibility;
}

@font-face {
    font-family: "Calcutta";
    src: url("../fonts/calcutta/Calcutta-Medium.woff") format("woff"),
         url("../fonts/calcutta/Calcutta-Medium.ttf") format("truetype");
    font-style: normal;
    font-weight: 500;
    text-rendering: optimizeLegibility;
}

@font-face {
    font-family: "Calcutta";
    src: url("../fonts/calcutta/Calcutta-Bold.woff") format("woff"),
         url("../fonts/calcutta/Calcutta-Bold.ttf") format("truetype");
    font-style: normal;
    font-weight: 700;
    text-rendering: optimizeLegibility;
}

@font-face {
    font-family: "Source Code Pro";
    src: url("../fonts/source-code-pro/SourceCodePro-Regular.woff2") format("woff2"),
         url("../fonts/source-code-pro/SourceCodePro-Regular.woff") format("woff");
    font-style: normal;
    font-weight: 400;
}

@font-face {
    font-family: "Source Code Pro";
    src: url("../fonts/source-code-pro/SourceCodePro-It.woff2") format("woff2"),
         url("../fonts/source-code-pro/SourceCodePro-It.woff") format("woff");
    font-style: italic;
    font-weight: 400;
}

@font-face {
    font-family: "Source Code Pro";
    src: url("../fonts/source-code-pro/SourceCodePro-Medium.woff2") format("woff2"),
         url("../fonts/source-code-pro/SourceCodePro-Medium.woff") format("woff");
    font-style: normal;
    font-weight: 500;
}

/* Narrower page width */
:root {
    --exo-max-width: 950px;
}

body {
    background: #f5f5f5;
    font-family: "Calcutta", "DejaVu Sans", sans-serif;
}

h1,
h2,
h3,
h4,
h5,
h6,
.wy-menu-vertical,
.wy-side-nav-search,
.wy-nav-top,
button,
input,
select,
textarea {
    font-family: "Calcutta", "DejaVu Sans", sans-serif;
}

code,
kbd,
pre,
samp,
.rst-content code,
.rst-content tt {
    font-family: "Source Code Pro", "DejaVu Sans Mono", monospace;
}

a,
a:visited {
    color: #009568;
}

a:hover,
a:focus {
    color: #00bd84;
}

/* Navigation Buttons - Emulate Renku style */
.rst-footer-buttons .btn,
.rst-footer-buttons .btn.btn-neutral {
    background: transparent;
    border: 0;
    border-radius: 2px;
    box-shadow: none;
    color: #3d3d3d;
    padding: 0.35rem 0.75rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.rst-footer-buttons .btn:hover,
.rst-footer-buttons .btn:focus,
.rst-footer-buttons .btn.btn-neutral:hover,
.rst-footer-buttons .btn.btn-neutral:focus {
    background: #e9eff1;
    color: #1f2d3d;
}

.rst-content {
    color: #3d3d3d;
}

.rst-content h1,
.rst-content h2,
.rst-content h3,
.rst-content h4,
.rst-content h5,
.rst-content h6 {
    position: relative;
}

.rst-content h1 .headerlink,
.rst-content h2 .headerlink,
.rst-content h3 .headerlink,
.rst-content h4 .headerlink,
.rst-content h5 .headerlink,
.rst-content h6 .headerlink {
    position: absolute;
    margin-left: 0.3em;
}

/* String Literals */
.rst-content code.literal,
.rst-content tt.literal {
    background: #ebebeb;
    color: #3d3d3d;
    border: 1px solid #d4d4d4;
    border-radius: 3px;
    padding: 0.1em 0.35em;
    font-size: 0.8em;
}

.rst-content .note {
    color: #003274;
    background: #ccddf3;
    padding: 1rem;
    margin-bottom: 1rem;
}

.rst-content .note .admonition-title {
    display: none;
}

.rst-content .warning {
    color: #605000;
    background: #fcf4cc;
    padding: 1rem;
    margin-bottom: 1rem;
}

.rst-content .warning .admonition-title {
    display: none;
}

.rst-content .highlight {
    border: 1px solid rgba(0, 0, 0, 0.2);
    border-radius: 4px;
    overflow: hidden;
}

/* Code Blocks */
.rst-content .linenodiv pre,
.rst-content div[class^="highlight"] pre,
.rst-content div[class*=" highlight-"] pre,
.rst-content pre.literal-block {
    font-family: "Source Code Pro", "DejaVu Sans Mono", monospace;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.4;
    text-rendering: auto;
    -webkit-font-smoothing: auto;
    -moz-osx-font-smoothing: auto;
}

/* Parsed Literal Blocks should look like code blocks.
 * Background hardcoded to match pygments_style = 'nord-darker'.
 */
.rst-content pre.literal-block {
    background: #242933;
    color: #d8dee9;
    border: 1px solid rgba(0, 0, 0, 0.2);
    border-radius: 4px;
}

/* Behold, the monstrosity that is my attempt at styling nav */
.wy-nav-side {
    background: #01192d;
}

@media screen and (min-width: 1100px) {
    .wy-nav-content-wrap {
        background: #01192d;
    }
}

.wy-nav-content {
    max-width: var(--exo-max-width);
    background: #f5f5f5;
    margin-top: 0;
    margin-bottom: 0;
    border-radius: 0;
    box-shadow: none;
}

.wy-side-scroll,
.wy-side-nav-search,
.wy-nav-top {
    background-color: #01192d;
}

.wy-side-nav-search input[type="text"] {
    width: 100%;
    border-radius: 0;
    padding: 6px 12px;
    border-color: #01192d;
}

.wy-menu-vertical p.caption,
.wy-menu-vertical .caption-text {
    color: #2ea6e8;
    font-weight: 700;
}

.wy-menu-vertical a,
.wy-menu-vertical a:visited {
    font-size: 100%;
    color: #d9d9d9;
    padding-top: 0.6rem;
    padding-bottom: 0.6rem;
    background-color: transparent;
}

.wy-menu-vertical li.current,
.wy-menu-vertical li.current ul {
    background: transparent;
}

.wy-menu-vertical li.current a,
.wy-menu-vertical li.current a:visited {
    border-right: 0 !important;
}

.wy-menu-vertical li.toctree-l1 > a,
.wy-menu-vertical li.toctree-l1 > a:visited {
    opacity: 0.5;
}

.wy-menu-vertical li.toctree-l1 > a:hover,
.wy-menu-vertical li.toctree-l1 > a:focus,
.wy-menu-vertical li.toctree-l1.current > a,
.wy-menu-vertical li.toctree-l1.current > a:visited {
    opacity: 1;
}

.wy-menu-vertical li.toctree-l1.current > a,
.wy-menu-vertical li.toctree-l1.current > a:visited,
.wy-menu-vertical li.current > a,
.wy-menu-vertical li.current > a:visited {
    background-color: #01192d !important;
    color: #ffffff !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
}

.wy-menu-vertical .toctree-l1.current .toctree-l2 > ul,
.wy-menu-vertical .toctree-l2.current .toctree-l3 > ul,
.wy-menu-vertical .toctree-l3.current .toctree-l4 > ul,
.wy-menu-vertical .toctree-l4.current .toctree-l5 > ul {
    background: transparent !important;
}

.wy-menu-vertical li.toctree-l2 > a,
.wy-menu-vertical li.toctree-l2 > a:visited,
.wy-menu-vertical li.toctree-l3 > a,
.wy-menu-vertical li.toctree-l3 > a:visited,
.wy-menu-vertical li.toctree-l4 > a,
.wy-menu-vertical li.toctree-l4 > a:visited {
    border: 0;
    background-color: #566673 !important;
    color: #d9d9d9 !important;
}

.wy-menu-vertical li.toctree-l2.current > a,
.wy-menu-vertical li.toctree-l2.current > a:visited,
.wy-menu-vertical li.toctree-l3.current > a,
.wy-menu-vertical li.toctree-l3.current > a:visited,
.wy-menu-vertical li.toctree-l4.current > a,
.wy-menu-vertical li.toctree-l4.current > a:visited {
    color: #ffffff !important;
}

.wy-menu-vertical li.toctree-l1 > a:hover,
.wy-menu-vertical li.toctree-l1 > a:focus {
    background-color: #01192d !important;
    color: #ffffff !important;
}

.wy-menu-vertical li.toctree-l2 > a:hover,
.wy-menu-vertical li.toctree-l2 > a:focus,
.wy-menu-vertical li.toctree-l3 > a:hover,
.wy-menu-vertical li.toctree-l3 > a:focus,
.wy-menu-vertical li.toctree-l4 > a:hover,
.wy-menu-vertical li.toctree-l4 > a:focus,
.wy-menu-vertical li.current a:hover,
.wy-menu-vertical li.current a:focus {
    background-color: #566673 !important;
    color: #ffffff !important;
}

@media screen and (max-width: 768px) {
    .wy-nav-content {
        margin-top: 0;
        margin-bottom: 0;
        border-radius: 0;
        box-shadow: none;
    }
}
