/* Le livre habille comme la console d'administration (src/admin/ui.html) :
   memes jetons de la charte CrafTogether, memes polices, menu a gauche sur
   fond marine.

   Deux themes seulement : « light » (clair) et « navy » (sombre), plus
   « Auto » qui suit le systeme. Les anciens themes de mdBook (rust, coal,
   ayu) sont caches du selecteur ; un lecteur qui en avait retenu un retombe
   sur l'equivalent clair ou sombre. Les jetons ci-dessous sont recopies de
   la console : les garder alignes quand la charte change. */

/* Jetons de la console, theme clair. */
.light, .rust, html:not(.js) {
    --c-bg-canvas: #F7F8FA; --c-bg-surface: #FFFFFF; --c-bg-muted: #F0F3F7;
    --c-bg-sidebar: #0F3467; --c-bg-hover: #E8EFF8; --c-bg-selected: #D3E0F2;
    --c-border: #E5E7EB; --c-border-strong: #9CA3AF; --c-border-focus: #184F95;
    --c-fg: #1F2933; --c-fg-muted: #4B5563;
    --c-fg-on-sidebar: #D3E0F2; --c-fg-on-sidebar-active: #FFFFFF;
    --c-primary: #184F95; --c-primary-soft: #E8EFF8; --c-link: #2F6BC0;
    --c-accent: #D9822B;
    --c-success: #2E8B57; --c-warning: #B7791F; --c-danger: #C62828; --c-info: #2F6BC0;
    --c-nav-hover: rgba(255, 255, 255, .06); --c-nav-active: rgba(255, 255, 255, .10);
    --c-nav-indicator: var(--c-accent);
    --c-logo-accent: #184F95; --c-logo-ink: #1F2933;
    --c-shadow: 0 1px 3px rgba(15, 52, 103, .08), 0 4px 12px rgba(15, 52, 103, .06);
    --c-mark-bg: #FBE3C2;
    --color-scheme: light;
}

/* Jetons de la console, theme sombre. */
.navy, .coal, .ayu {
    --c-bg-canvas: #0B1526; --c-bg-surface: #121F36; --c-bg-muted: #1A2A45;
    --c-bg-sidebar: #0B1526; --c-bg-hover: #1F3152; --c-bg-selected: #1B3560;
    --c-border: #243652; --c-border-strong: #34507A; --c-border-focus: #5B8FE0;
    --c-fg: #E6ECF5; --c-fg-muted: #94A3B8;
    --c-fg-on-sidebar: #94A3B8; --c-fg-on-sidebar-active: #FFFFFF;
    --c-primary: #5B8FE0; --c-primary-soft: #1B3560; --c-link: #7AA6EA;
    --c-accent: #E8A054;
    --c-success: #4CB47C; --c-warning: #D9A441; --c-danger: #F26B6B; --c-info: #7AA6EA;
    --c-nav-hover: rgba(255, 255, 255, .06); --c-nav-active: rgba(255, 255, 255, .10);
    --c-nav-indicator: var(--c-primary);
    --c-logo-accent: #5B8FE0; --c-logo-ink: #FFFFFF;
    --c-shadow: none;
    --c-mark-bg: #5A4320;
    --color-scheme: dark;
}

/* Variables de mdBook alimentees par les jetons. */
.light, .rust, html:not(.js), .navy, .coal, .ayu {
    --bg: var(--c-bg-surface);
    --fg: var(--c-fg);

    --sidebar-bg: var(--c-bg-sidebar);
    --sidebar-fg: var(--c-fg-on-sidebar);
    --sidebar-non-existant: var(--c-fg-on-sidebar);
    --sidebar-active: var(--c-fg-on-sidebar-active);
    --sidebar-spacer: rgba(255, 255, 255, .12);
    --sidebar-header-border-color: var(--c-nav-indicator);

    --scrollbar: var(--c-border-strong);

    --icons: var(--c-fg-muted);
    --icons-hover: var(--c-fg);

    --links: var(--c-link);

    --inline-code-color: var(--c-fg);

    --theme-popup-bg: var(--c-bg-surface);
    --theme-popup-border: var(--c-border);
    --theme-hover: var(--c-bg-hover);

    --quote-bg: var(--c-primary-soft);
    --quote-border: var(--c-primary);

    --warning-border: var(--c-warning);

    --table-border-color: var(--c-border);
    --table-header-bg: var(--c-bg-muted);
    --table-alternate-bg: transparent;

    --searchbar-border-color: var(--c-border-strong);
    --searchbar-bg: var(--c-bg-surface);
    --searchbar-fg: var(--c-fg);
    --searchbar-shadow-color: transparent;
    --searchresults-header-fg: var(--c-fg-muted);
    --searchresults-border-color: var(--c-border);
    --searchresults-li-bg: var(--c-bg-hover);
    --search-mark-bg: var(--c-mark-bg);

    --footnote-highlight: var(--c-primary);
    --overlay-bg: rgba(11, 21, 38, .55);

    --blockquote-note-color: var(--c-info);
    --blockquote-tip-color: var(--c-success);
    --blockquote-important-color: var(--c-primary);
    --blockquote-warning-color: var(--c-warning);
    --blockquote-caution-color: var(--c-danger);

    --mono-font: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* Seuls « Auto », « Light » et « Navy » restent au choix (renommes par
   theme/js/craft.js). */
#mdbook-theme-rust, #mdbook-theme-coal, #mdbook-theme-ayu { display: none; }

/* Texte : Montserrat 400/500 comme la console. */
html { font-family: Montserrat, system-ui, sans-serif; color: var(--fg); background-color: var(--c-bg-surface); }
body { line-height: 1.6; }
strong, b, th { font-weight: 500; }
h1, h2, h3, h4, h5, h6 { font-weight: 500; color: var(--c-fg); letter-spacing: -.005em; }
.content h1 { font-size: 2.8rem; line-height: 1.25; }
.content h2 { font-size: 2.2rem; padding-block-end: .3em; border-block-end: 1px solid var(--c-border); }
.content h3 { font-size: 1.8rem; }
.content h4 { font-size: 1.6rem; }
.content h5, .content h6 {
    font-size: 1.3rem; color: var(--c-fg-muted); text-transform: uppercase; letter-spacing: .06em;
}

.content a:link, .content a:visited { color: var(--c-link); text-decoration: none; }
.content a:hover { text-decoration: underline; }
.content .header:link, .content .header:visited { color: var(--c-fg); }

:focus-visible { outline: 2px solid var(--c-border-focus); outline-offset: 2px; border-radius: 4px; }

/* Barre du haut : la barre de la console (fond surface, filet bas). */
#mdbook-menu-bar { border-block-end-color: var(--c-border); }
#mdbook-menu-bar.bordered { border-block-end-color: var(--c-border); }
.menu-title {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    font-weight: 500; font-size: 1.6rem; color: var(--c-fg);
}
.craft-mark { height: 28px; width: 28px; flex: none; }
.craft-mark .mark-line { fill: none; stroke: var(--c-logo-accent); stroke-width: 2; }
.craft-mark .mark-node { fill: var(--c-logo-accent); }
.craft-mark .mark-core { fill: var(--c-logo-ink); }

/* Menu de gauche : le bandeau marine de la console. */
.sidebar { border-inline-end: 1px solid var(--c-border); }
.sidebar .sidebar-scrollbox { padding: 12px 10px; }
.sidebar-iframe-inner { font-family: Montserrat, system-ui, sans-serif; }
.chapter li a, .chapter li .chapter-link-wrapper > span {
    position: relative; display: block; flex: 1;
    padding: 6px 10px; border-radius: 8px;
    color: var(--c-fg-on-sidebar); font-weight: 500;
}
.chapter li a:hover { background: var(--c-nav-hover); color: var(--c-fg-on-sidebar-active); }
.chapter li a.active {
    background: var(--c-nav-active); color: var(--c-fg-on-sidebar-active);
}
.chapter li a.active::before {
    content: ""; position: absolute; inset-inline-start: 0; top: 7px; bottom: 7px;
    width: 3px; border-radius: 0 3px 3px 0; background: var(--c-nav-indicator);
}
.chapter li.chapter-item { margin-block-start: 2px; }
.chapter li.part-title {
    margin: 18px 10px 6px; color: var(--c-fg-on-sidebar);
    font-size: 1.1rem; font-weight: 500; text-transform: uppercase; letter-spacing: .08em;
}
.chapter li a strong { color: inherit; font-weight: 500; opacity: .75; margin-inline-end: 4px; }
.chapter-fold-toggle { color: var(--c-fg-on-sidebar); opacity: 1; padding: 6px 10px; border-radius: 8px; }
.chapter-fold-toggle:hover { background: var(--c-nav-hover); color: var(--c-fg-on-sidebar-active); }
.chapter .spacer { background-color: rgba(255, 255, 255, .12); height: 1px; margin: 10px 0; }
.chapter a.current-header { color: var(--c-fg-on-sidebar-active); }
.on-this-page { border-inline-start-width: 2px; }
.on-this-page a { font-weight: 400 !important; padding: 3px 10px !important; }
.sidebar :focus-visible { outline-color: var(--c-fg-on-sidebar-active); outline-offset: -2px; }
.sidebar .sidebar-resize-indicator { background-color: var(--c-fg-on-sidebar); }

/* Code : JetBrains Mono, bloc inset comme la sortie des outils de la console. */
:root {
    --code-font-size: 0.875em;
    /* mdBook centres the text in 750px: too narrow for the reference tables
       on a common screen. Use most of the width, keep a readable cap. */
    --content-max-width: min(1280px, 92%);
}
/* Prose stays readable; tables and code use the full content width. */
.content main > p, .content main > ul, .content main > ol { max-width: 900px; }
.content table td code { white-space: nowrap; }
code { font-family: var(--mono-font) !important; }
:not(pre) > code, :not(pre) > .hljs {
    background: var(--c-bg-muted); color: var(--c-fg);
    padding: .1em .35em; border-radius: 6px;
}
pre > code.hljs, pre > code {
    background: var(--c-bg-canvas);
    border: 1px solid var(--c-border); border-radius: 8px;
    padding: 1.2rem 1.4rem; line-height: 1.55;
}
pre > code.hljs { color: var(--c-fg); }
pre > .buttons { top: 6px; right: 6px; }
pre > .buttons button { border-radius: 6px; border-color: var(--c-border-strong); background-color: var(--c-bg-surface); color: var(--c-fg-muted); }

/* Tableaux : en-tetes en petites capitales sur fond muted, filets fins. */
.table-wrapper { margin: 1.6rem 0; border: 1px solid var(--c-border); border-radius: 8px; overflow-x: auto; }
.content table { width: 100%; margin: 0; border-collapse: collapse; font-size: 1.4rem; }
.content table thead { background: var(--c-bg-muted); }
.content table thead tr { border: none; }
.content table thead th {
    color: var(--c-fg-muted); text-align: start; padding: 10px 16px;
    font-size: 1.2rem; font-weight: 500; text-transform: uppercase; letter-spacing: .06em;
    border-bottom: 1px solid var(--c-border);
}
.content table td { padding: 8px 16px; border: none; border-bottom: 1px solid var(--c-border); vertical-align: top; }
.content table tbody tr:last-child td { border-bottom: none; }
.content table tbody tr:hover td { background: var(--c-bg-hover); }

/* Citations et encadres : les alertes de la console (filet gauche). */
blockquote {
    margin: 1.6rem 0; padding: 2px 16px; color: var(--c-fg);
    background: var(--c-primary-soft);
    border: none; border-inline-start: 3px solid var(--c-primary); border-radius: 8px;
}
.blockquote-tag { background: var(--c-bg-muted); border-inline-start-width: 3px; border-radius: 8px; padding: 2px 16px; }
.blockquote-tag-title { font-weight: 500; }
/* Le titre garde la couleur du texte (le jaune d'avertissement n'atteint pas
   4,5:1 sur fond clair) ; seule l'icone porte la couleur du type. */
.blockquote-tag > .blockquote-tag-title { color: var(--c-fg) !important; }
.blockquote-tag-note .blockquote-tag-title svg { fill: var(--blockquote-note-color); }
.blockquote-tag-tip .blockquote-tag-title svg { fill: var(--blockquote-tip-color); }
.blockquote-tag-important .blockquote-tag-title svg { fill: var(--blockquote-important-color); }
.blockquote-tag-warning .blockquote-tag-title svg { fill: var(--blockquote-warning-color); }
.blockquote-tag-caution .blockquote-tag-title svg { fill: var(--blockquote-caution-color); }
.warning { border-inline-start-width: 3px; }

/* Selecteur de theme et recherche : carte de la console. */
.theme-popup {
    border-radius: 8px; box-shadow: var(--c-shadow); overflow: hidden;
    font-family: Montserrat, system-ui, sans-serif;
}
.theme-popup .theme { font-family: inherit; color: var(--c-fg); }
.theme-popup .theme-selected::before { color: var(--c-primary); }
#mdbook-searchbar { border-radius: 6px; font-family: inherit; }
#mdbook-searchbar:focus { outline: 2px solid var(--c-border-focus); outline-offset: 2px; }

/* Navigation precedent / suivant. */
.nav-chapters { color: var(--c-fg-muted); }
.nav-chapters:hover { color: var(--c-primary); background: var(--c-bg-hover); }

hr { border: none; border-block-start: 1px solid var(--c-border); }
kbd { font-family: var(--mono-font); }

/* Une cle rechargee a chaud, dans la reference : le pictogramme suit son nom,
   dans la ligne ; le title dit son sens au survol. */
.content .hot { color: var(--c-accent); cursor: help; font-weight: 500; white-space: nowrap; }

/* Narrow screens: tables become one card per row, each cell labelled with its
   column (labels set by craft.js). No sideways scrolling inside a table. */
@media (max-width: 720px) {
    .table-wrapper { overflow-x: visible; border: none; }
    .content table.craft-stackable thead { display: none; }
    .content table.craft-stackable,
    .content table.craft-stackable tbody,
    .content table.craft-stackable tr,
    .content table.craft-stackable td { display: block; width: 100%; }
    .content table.craft-stackable tr {
        margin: 0 0 12px; border: 1px solid var(--c-border); border-radius: 8px;
        padding: 6px 0; background: var(--c-bg-surface);
    }
    .content table.craft-stackable td { border: none; padding: 4px 14px; }
    .content table.craft-stackable td[data-label]::before {
        content: attr(data-label); display: block; font-size: 1.1rem;
        letter-spacing: .06em; text-transform: uppercase; color: var(--c-fg-muted);
    }
    .content table.craft-stackable td code { white-space: normal; overflow-wrap: anywhere; }
    .content table tbody tr:hover td { background: transparent; }
}

/* Le lien vers l'autre langue du livre, pose par theme/js/craft.js dans la barre du haut. */
#mdbook-menu-bar .craft-lang {
    display: inline-block; padding: 0 8px; margin-right: 4px; line-height: 50px;
    font-family: "Montserrat", sans-serif; font-weight: 500; font-size: .9rem;
    color: var(--icons); text-decoration: none; letter-spacing: .04em;
}
#mdbook-menu-bar .craft-lang:hover { color: var(--icons-hover); }
