﻿html,
body {
    min-height: 100%;
    margin: 0;
    font-family: Inter, Nunito, "Segoe UI", Arial, sans-serif;
}

code {
    font-family: Consolas, "Courier New", monospace;
}

/* Liseré fin sur les modales : en thème sombre, la surface du dialogue (#18181b) est
   trop proche du fond (#09090b) pour que l'ombre seule en détache le cadre. */
.mud-dialog {
    border: 1px solid var(--mud-palette-divider) !important;
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.7), 0 10px 10px -5px rgba(0, 0, 0, 0.7) !important;
}

/* Mobile : chaque pixel compte. On annule les gouttières et marges par defaut
   de MudBlazor pour que le contenu et les modales occupent toute la largeur. */
@media (max-width: 600px) {
    .mud-container--gutters {
        padding-left: 4px;
        padding-right: 4px;
    }

    .mud-dialog {
        margin: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        max-height: 100% !important;
        border-radius: 0;
        /* La bordure ci-dessus est conservée — sans elle, la modale pleine largeur se
           confond avec la page qui reste visible au-dessus et en dessous. L'ombre, elle,
           ne sert plus à rien une fois les coins carrés et le cadre collé aux bords. */
        box-shadow: none !important;
        /* Le défilement revient au seul corps du dialogue : titre et ligne d'actions
           restent visibles au lieu de sortir du cadre avec le contenu. */
        overflow-y: hidden !important;
    }

    .mud-dialog-title {
        padding: 8px 12px;
    }

    .mud-dialog-content {
        padding: 8px 12px;
        min-height: 0;
    }

    /* Opt-in pour les dialogues dont le contenu gère lui-même ses marges (aperçu ticket,
       tableaux pleine largeur) : ContentClass="px-0" sur le MudDialog. La règle ci-dessus
       étant une propriété raccourcie, elle écrase l'utilitaire MudBlazor sans ce renfort. */
    .mud-dialog-content.px-0 {
        padding-left: 0;
        padding-right: 0;
    }

    .mud-dialog-actions {
        padding: 4px 8px;
        margin: 0;
    }
}

/* Hauteur des boutons alignée sur celle des champs de saisie une ligne (Margin.Dense),
   pour des formulaires cohérents. N'affecte pas les boutons-icônes. */
.mud-button-root:not(.mud-icon-button) {
    min-height: 40px;
}

/* --- Tables MudBlazor en mode carte -----------------------------------------
   Sous le Breakpoint de la table, MudBlazor transforme chaque cellule en
   `display:flex; justify-content:space-between` et injecte le libellé en `:before`.
   Le libellé et TOUS les enfants de la cellule deviennent alors des items d'une
   même ligne, sans repli possible : une cellule qui empile plusieurs MudText ou
   qui aligne plusieurs boutons les met côte à côte et déborde à droite, hors cadre.

   On autorise simplement le repli : ce qui tient reste sur la ligne du libellé, le
   reste bascule dessous. Surtout pas de `flex-grow` sur les valeurs — un bouton
   s'étirerait alors sur toute la largeur de la cellule.
   Pas de media query — c'est la classe posée par MudBlazor qui porte la condition. */
.mud-xs-table .mud-table-cell,
.mud-sm-table .mud-table-cell,
.mud-md-table .mud-table-cell {
    flex-wrap: wrap;
    align-items: flex-start;
    row-gap: 2px;
}

.mud-xs-table .mud-table-cell > *,
.mud-sm-table .mud-table-cell > *,
.mud-md-table .mud-table-cell > * {
    min-width: 0;
    max-width: 100%;
}

/* --- Visualiseur d'archives fiscales -----------------------------------------
   Aucune chaîne de hauteur ici : le lecteur suit le flux normal du document, si
   bien que le bandeau d'identité et la barre d'onglets défilent avec le contenu
   au lieu d'occuper le haut de l'écran en permanence. Le défilement appartient
   à la page, jamais au panneau d'onglets. */

/* La barre de navigation du reçu s'aligne sur la hauteur d'un champ `Margin.Dense` (40 px),
   sans quoi ses boutons-icônes la rendent plus haute et décalent l'aperçu sous la liste. */
.fiscal-viewer .fiscal-document-nav {
    min-height: 40px;
}

/* Le badge de comptage est posé en absolu sur le bord de l'onglet : sans réserve à droite,
   il déborde de la zone visible sur les libellés longs (« Justificatifs »). */
.fiscal-viewer .mud-tab {
    padding-right: 32px;
}

/* MudBlazor pose `overflow-x: auto` sur ce conteneur, ce qui force aussi l'axe vertical
   en `auto` : la table se remettait à défiler pour son propre compte, d'où une seconde
   barre imbriquée dans celle de la page. Le défilement doit rester à la page seule. */
.fiscal-viewer .mud-table-container {
    overflow: visible;
}

/* Série unique : la légende ne fait que répéter le titre du bloc, et lui prend une soixantaine
   de pixels de hauteur — autant les rendre à la courbe. */
.fiscal-viewer .mud-chart-legend {
    display: none;
}

/* Exception à la règle ci-dessus : les sections brutes ont jusqu'à quinze colonnes et doivent
   défiler horizontalement. `overflow: auto` y réintroduit forcément l'axe vertical — la spec
   interdit `visible` sur un seul axe — mais cette table étant paginée, elle ne dépasse jamais
   en hauteur : aucune barre verticale imbriquée n'apparaît. */
.fiscal-viewer .fiscal-section-rows .mud-table-container {
    overflow: auto;
}

/* Les sections brutes portent des colonnes très larges — un GUID d'identifiant s'étale
   sur quatre lignes, si bien que cinq lignes remplissent l'écran. La troncature rend
   surtout les hauteurs de ligne uniformes, ce dont `Virtualize` a besoin : ses
   estimations reposent sur une taille de ligne constante, et c'est leur correction
   permanente qui faisait clignoter la table. La valeur entière reste en infobulle. */
.fiscal-viewer .fiscal-section-rows td {
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Le reçu reconstitué suit lui aussi le flux : il n'a plus de défilement propre. */



