/* ---------- Visionneuse PDF plein écran ---------- */

* {
    box-sizing: border-box;
}

html {
    /* indique au navigateur (et à son lecteur PDF natif) qu'on est en thème
       sombre, pour que sa propre marge/UI autour de la page s'adapte aussi */
    color-scheme: dark;
}

html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    /* la couleur de fond est fixée en inline depuis doc.php (couleur du mur) */
    color: #eee;
    font-family: 'Segoe UI', Arial, sans-serif;
}

.barre {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 50px;
    padding: 0 20px;
    /* léger voile sombre par-dessus la couleur du mur, pour que le texte
       reste lisible quelle que soit la couleur choisie */
    background-color: rgba(0, 0, 0, 0.35);
    border-bottom: 1px solid rgba(0, 0, 0, 0.4);
}

.retour {
    color: #bbb;
    text-decoration: none;
    font-size: 0.9em;
}

.retour:hover {
    color: #fff;
}

/* .retour est habituellement un <a> ; sur doc-bac.php c'est un <button>
   (essaie de fermer l'onglet avant de replier sur un vrai lien de retour,
   voir le script en bas de page) — on lui redonne l'apparence d'un lien. */
.retour-bouton {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    cursor: pointer;
}

.controles-droite {
    display: flex;
    align-items: center;
    gap: 8px;
}

.titre-doc {
    font-size: 0.95em;
    color: #eee;
}

.bouton-telecharger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-left: 6px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.12);
    color: #eee;
    text-decoration: none;
    font-size: 0.85em;
    vertical-align: middle;
}

.bouton-telecharger:hover {
    background-color: rgba(255, 255, 255, 0.25);
}

.form-aller-page {
    display: flex;
    align-items: center;
    gap: 4px;
}

.form-aller-page input {
    width: 56px;
    padding: 5px 6px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background-color: rgba(255, 255, 255, 0.08);
    color: #eee;
    font-size: 0.8em;
    /* Masque les petites flèches +/- du champ number sur la plupart des
       navigateurs : un clavier numérique (mobile) ou la saisie au clavier
       suffit, pas besoin de cliquer une flèche des centaines de fois. */
    -moz-appearance: textfield;
}

.form-aller-page input::-webkit-outer-spin-button,
.form-aller-page input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.form-aller-page button {
    padding: 6px 10px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background-color: rgba(255, 255, 255, 0.08);
    color: #eee;
    cursor: pointer;
    font-size: 0.8em;
    white-space: nowrap;
}

.form-aller-page button:hover {
    background-color: rgba(255, 255, 255, 0.18);
}

.bouton-mode {
    padding: 6px 12px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background-color: rgba(255, 255, 255, 0.08);
    color: #eee;
    cursor: pointer;
    font-size: 0.8em;
    white-space: nowrap;
}

.bouton-mode:hover {
    background-color: rgba(255, 255, 255, 0.18);
}

.visionneuse {
    display: block;
    width: 100%;
    height: calc(100% - 50px);
    border: none;

    /* Mode sombre par défaut, pour le confort de lecture :
       invert(1) inverse toutes les couleurs (fond blanc -> noir),
       hue-rotate(180deg) recorrige les teintes pour que le bleu
       reste bleu et le rouge reste rouge (sinon ils s'inversent aussi).
       Le bouton "Mode clair" (voir js/mode-doc.js) ajoute la classe
       .mode-clair sur <body>, qui annule ce filtre ci-dessous. */
    filter: invert(1) hue-rotate(180deg);
    background-color: #fff; /* la page PDF elle-même reste blanche avant inversion */
}

/* Visionneuse mobile (rendu PDF.js, voir js/doc-mobile.js) : même principe
   d'inversion que .visionneuse ci-dessus, mais appliqué à chaque page
   dessinée sur un <canvas> plutôt qu'à un iframe. */
.pdf-mobile {
    width: 100%;
    height: calc(100% - 50px);
    overflow-y: auto;
    padding: 12px 0;
}

.page-pdf-mobile {
    display: block;
    margin: 0 auto 12px;
    filter: invert(1) hue-rotate(180deg);
}

body.mode-clair .visionneuse,
body.mode-clair .page-pdf-mobile {
    filter: none;
}

/* --- Recouvrement "chargement en cours" (voir js/doc-chargement.js) --- */

.chargement-pdf {
    position: fixed;
    top: 50px;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    background-color: rgba(0, 0, 0, 0.55);
    /* Au-dessus de l'iframe/du rendu mobile, en dessous de rien d'autre. */
    z-index: 10;
    transition: opacity 0.2s ease;
}

.chargement-pdf.masque {
    opacity: 0;
    pointer-events: none;
}

.barre-chargement {
    width: min(260px, 70vw);
    height: 6px;
    border-radius: 4px;
    background-color: rgba(255, 255, 255, 0.15);
    overflow: hidden;
}

.barre-chargement-remplissage {
    height: 100%;
    width: 40%;
    border-radius: 4px;
    background-color: #eee;
}

/* Progression indéterminée par défaut (bureau : on ne connaît pas la vraie
   avancée du lecteur PDF natif) — un segment qui va-et-vient. Le mode mobile
   (doc-mobile.js) retire cette classe et fixe une largeur réelle en % dès
   qu'il connaît la progression du téléchargement. */
.barre-chargement.indeterminee .barre-chargement-remplissage {
    width: 35%;
    animation: chargement-va-et-vient 1.1s ease-in-out infinite;
}

@keyframes chargement-va-et-vient {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(285%); }
}

.texte-chargement {
    margin: 0;
    color: #eee;
    font-size: 0.85em;
    text-align: center;
}
