/* Domaine Tariff — la mercuriale : états des cellules et des lignes peints par les controllers, place de la
   pastille du dernier enregistrement, en-tête de diffusion. Chargée après app-theme.css (_Host.cshtml) :
   les !important de ce fichier suffisent à battre les règles globales sans monter la spécificité. */

/* Marge sous le seuil : coefficient inférieur au coef mini de sa catégorie de tarif.
   La classe est posée par PriceListItemDynamicPricesColumnController sur la seule cellule
   concernée — coefficient et prix de la colonne fautive — pour que l'opérateur voie QUEL
   tarif pose problème, et pas seulement que la ligne en a un.
   Alerte, jamais blocage : la saisie et l'enregistrement restent possibles. */
.pim-coef-below-min {
    background-color: var(--ds-state-coef-alert-bg) !important;
    color: var(--ds-state-coef-alert-content) !important;
    font-weight: 600;
}

/* Ligne en tarif général : les colonnes de calcul (coefficient et prix) restent visibles et à leur
   place — les masquer casserait l'alignement du tableau sur quatre cents lignes — mais grisées,
   pour dire qu'elles ne se saisissent pas ici. Le prix affiché reste le prix réel. */
.pim-general-tariff-cell {
    background-color: var(--ds-state-general-tariff-bg) !important;
    color: var(--ds-state-general-tariff-content) !important;
}

/* Mise en avant de la ligne de mercuriale — classe posée sur la ligne par
   PriceListItemHighlightStyleController d'après PriceListItem.Highlight.
   Deux niveaux, ceux de la liste déroulante historique : GRAS et BON COUP.

   Le fond s'arrête aux cellules qui n'ont pas déjà leur propre alerte : sans le :not(),
   la mise en avant recouvrirait le signalement de marge insuffisante, qui est l'information
   la plus importante des deux. L'exclusion évite d'en faire dépendre l'ordre des règles. */
.pim-highlight-bold td:not(.pim-coef-below-min),
.pim-highlight-good-deal td:not(.pim-coef-below-min) {
    font-weight: 700 !important;
}

/* Le FOND se pose sur la ligne, la COULEUR DE TEXTE sur les cellules — cf. CONTRAT DE PEINTURE
   DES LIGNES dans app-theme.css. C'est toute la ligne qui est mise en avant, donc le fond lui
   revient ; le posait-on sur les td qu'une colonne gelée resterait transparente dessus.
   Le :not(.pim-coef-below-min) n'a plus à porter le fond : la cellule d'alerte de marge pose
   le sien en !important et repeint par-dessus celui de la ligne. Il reste sur `color`, où il
   sert toujours (le violet de l'alerte doit survivre au vert de la mise en avant). */
.pim-highlight-good-deal {
    background-color: var(--ds-state-good-deal-bg) !important;
}

.pim-highlight-good-deal td:not(.pim-coef-below-min) {
    color: var(--ds-state-good-deal-content) !important;
}

/* ── Dernier enregistrement de la mercuriale (PIM-329) ─────────────────────────────────────────
   La pastille elle-même est dessinée par son composant (PriceListLastSavedText.razor.css) ; ici, sa
   PLACE dans la fiche, qui se règle sur des conteneurs générés par XAF, hors du composant.

   Sur la ligne de la barre d'outils de la grille, calée à droite. Mesure faite sur l'écran réel : la
   barre d'ACTIONS du haut (Supprimer, Envoyer la mercuriale...) n'offre que 196 px libres entre son
   groupe de gauche et celui de droite, pour une pastille de 320 px -- s'y poser chevaucherait des
   boutons. La barre d'outils de la grille, juste en dessous, en laisse 551 : c'est là qu'elle tient,
   sans rien recouvrir.

   La pastille sort du flux pour ne plus coûter sa propre ligne : le conteneur de l'élément de
   disposition est ramené à une hauteur nulle, et la grille remonte d'autant.

   :has() plutôt qu'une classe posée sur le conteneur : celui-ci est généré par XAF, on ne peut pas
   lui en ajouter une. Le sélecteur ne mord que sur les écrans qui portent la pastille. */
.detail-view-content:has(.pim-lastsaved) {
    position: relative;
}

.dxbl-fl-ctrl:has(> .pim-lastsaved) {
    height: 0;
    overflow: visible;
}

.dxbl-fl-item:has(.pim-lastsaved) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* Fenêtre étroite : la pastille retourne dans le flux (son composant), son conteneur reprend sa hauteur. */
@media (max-width: 1200px) {
    .dxbl-fl-ctrl:has(> .pim-lastsaved) {
        height: auto;
    }
}

/* ============================================================
   EN-TÊTE DE DIFFUSION DE LA MERCURIALE (.pim-diffusion-header)

   Trois valeurs en LECTURE SEULE — état de l'envoi, date d'envoi, nombre de
   destinataires. Elles répondent à une question, elles ne se saisissent pas.

   La charte rend tout champ désactivé de vue détail sur un fond gris
   (--ds-input-disabled-filled-bg, app-theme.css « Text editors ») : c'est le bon choix PARTOUT AILLEURS,
   où le gris signale « ce champ existe mais tu ne peux pas y toucher ». Ici il
   n'y a rien à toucher du tout, et trois boîtes grises vides — dont un chevron
   de liste déroulante et un bouton calendrier qui n'ouvrent rien — donnent
   l'impression d'un formulaire cassé plutôt que d'un bandeau d'information.

   On neutralise donc le décor de saisie DANS CE SEUL GROUPE, et on laisse le
   texte des champs tel que la charte le donne.
   Scope obligatoire : sans lui, on toucherait tous les champs désactivés de
   l'application. Cette feuille est chargée APRÈS app-theme.css, d'où les !important
   qui suffisent à battre les règles globales sans monter la spécificité.
   ============================================================ */

/* 1 · Le conteneur de l'éditeur perd fond, bordure et ombre. */
.pim-diffusion-header .dxbl-fl-item dxbl-input-editor.dxbl-text-edit,
.pim-diffusion-header .dxbl-fl-item dxbl-input-editor.dxbl-text-edit.dxbl-disabled,
.pim-diffusion-header .dxbl-fl-item .dxbl-text-edit,
.pim-diffusion-header .dxbl-fl-item .dxbl-text-edit.dxbl-disabled {
    background-color: transparent !important;
    border-color: transparent !important;
    box-shadow: none !important;
    min-height: 0 !important;
}

/* 2 · L'input lui-même : plus de fond, plus de retrait à gauche. La valeur doit
       s'aligner sur son libellé, pas flotter au milieu d'une boîte. */
.pim-diffusion-header .dxbl-fl-item .dxbl-text-edit input.dxbl-text-edit-input,
.pim-diffusion-header .dxbl-fl-item .dxbl-text-edit input.dxbl-text-edit-input:disabled {
    background-color: transparent !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    height: auto !important;
}

/* 3 · Les boutons de fin de champ — chevron de liste, icône calendrier — n'ouvrent
       rien sur un champ en lecture seule. Ils promettent une action qui n'existe pas. */
.pim-diffusion-header .dxbl-text-edit-btn,
.pim-diffusion-header .dxbl-edit-btn-dropdown {
    display: none !important;
}

/* 4 · Le libellé passe au second plan : c'est la valeur qui porte l'information.
       Casse haute et interlettrage pour qu'il se lise comme une étiquette. */
.pim-diffusion-header .dxbl-fl-item > label,
.pim-diffusion-header .dxbl-fl-cpt {
    font-size: .72rem !important;
    letter-spacing: .04em !important;
    text-transform: uppercase !important;
    font-weight: 500 !important;
    /* the charter's muted text: #8fa3a6 gave 2.6:1 on white */
    color: var(--ds-panel-muted-content) !important;
}

/* 5 · Le bandeau se resserre : sans boîtes de saisie, la hauteur d'un formulaire
       n'a plus lieu d'être. */
.pim-diffusion-header .dxbl-fl-item {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
