/* Définition globale de box-sizing */
*, *::before, *::after {
    /* * Règle universelle appliquée à tous les éléments (*), ainsi qu'aux pseudo-éléments ::before et ::after.
     * `box-sizing: border-box;` : Change le modèle de boîte par défaut du CSS.
     * Par défaut (content-box), la largeur et la hauteur d'un élément incluent seulement le contenu. 
     * Avec `border-box`, la largeur et la hauteur spécifiées incluent le padding (remplissage) et la border (bordure), 
     * ce qui simplifie grandement le calcul des mises en page et rend le positionnement des éléments plus intuitif.
     */
    box-sizing: border-box;
}

/* Variables CSS pour faciliter la maintenance */
:root {
    /* * Le sélecteur `:root` cible l'élément racine du document (le <html>).
     * Il est utilisé pour définir des variables CSS personnalisées (appelées "propriétés personnalisées" ou "variables CSS").
     * Ces variables sont préfixées par `--` et peuvent être réutilisées partout dans le CSS 
     * via la fonction `var()`. Cela rend le style plus modulaire, facile à maintenir et à modifier 
     * (par exemple, pour changer de thème clair/sombre).
     */

    /* Variables principales du thème sombre */
    --bg-color: #1a1a2e; /* Couleur de fond principale pour le corps de la page. */
    --card-bg-color: #16213e; /* Couleur de fond pour les "cartes" ou conteneurs secondaires. */
    --text-color: #e0e0e0; /* Couleur de texte générale, un gris clair. */
    --accent-color: #ffd700; /* Couleur d'accentuation, un jaune or, souvent pour les titres ou éléments importants. */
    --border-color: #0f3460; /* Couleur des bordures. */
    --shadow-dark: rgba(0, 0, 0, 0.7); /* Couleur pour les ombres foncées avec transparence. */
    --glow-color: rgba(255, 215, 0, 0.4); /* Couleur pour un effet de "lueur" avec transparence, utilisant la couleur d'accent. */

    /* Autres variables */
    --header-color: #ecf0f1; /* Couleur pour le texte des en-têtes (par exemple, des colonnes de tableau). */
    --host-name-color: #81ecec; /* Couleur spécifique pour les noms d'hôtes. */
    --green-light: #29ff29; /* Vert clair, souvent pour un statut "OK" ou "Succès". */
    --green-dark: #00cc00; /* Vert foncé. */
    --red-light: #ff2929; /* Rouge clair, souvent pour un statut "Erreur" ou "Critique". */
    --red-dark: #cc0000; /* Rouge foncé. */
    --orange-light: #ffb429; /* Orange clair, pour un statut "Avertissement" ou "Mineur". */
    --orange-dark: #cc8a00; /* Orange foncé. */
    --critical-light: #cc1f1f; /* Couleur spécifique pour un état très critique (rouge sombre). */
    --critical-dark: #8b1212; /* Couleur encore plus sombre pour critique. */
    --unknown-light: #9aa0a0; /* Gris clair pour un statut "Inconnu". */
    --unknown-dark: #6c7a7b; /* Gris foncé pour "Inconnu". */
    --nodata-color: #e74c3c; /* Couleur pour l'absence de données, souvent un rouge-orangé. */
    --shadow-light: rgba(255, 255, 255, 0.3); /* Couleur pour les ombres claires avec transparence. */

    --section-title-color: #00bcd4; /* Couleur pour les titres de section, un bleu-cyan. */
    --section-title-font: 'Arial', sans-serif; /* Police par défaut pour les titres de section. */

    --modal-bg-color: #2c3e50; /* Couleur de fond de la fenêtre modale. */
    --modal-text-color: #ecf0f1; /* Couleur du texte dans la modale. */
    --modal-header-bg: #34495e; /* Couleur de fond de l'en-tête de la modale. */
    --modal-border-color: #00bcd4; /* Couleur des bordures de la modale (reprend section-title-color). */

    --gauge-track-color: rgba(255, 255, 255, 0.1); /* Couleur de la piste de la jauge (partie vide). */
    --gauge-green: var(--green-light); /* Couleur verte pour la jauge, réutilisant --green-light. */
    --gauge-orange: var(--orange-light); /* Couleur orange pour la jauge. */
    --gauge-red: var(--red-light); /* Couleur rouge pour la jauge. */
    --gauge-unknown: var(--unknown-light); /* Couleur "inconnu" pour la jauge. */
    --gauge-nodata: var(--nodata-color); /* Couleur "pas de données" pour la jauge. */

    --heart-green: var(--green-light); /* Couleur verte pour les icônes de cœur. */
    --heart-red: var(--red-light); /* Couleur rouge pour les icônes de cœur. */
    --heart-unknown: var(--unknown-light); /* Couleur "inconnu" pour les icônes de cœur. */
    --heart-nodata: var(--nodata-color); /* Couleur "pas de données" pour les icônes de cœur. */

    --veeam-green: var(--green-light); /* Couleur verte pour les statuts Veeam. */
    --veeam-red: var(--red-light); /* Couleur rouge pour les statuts Veeam. */
    --veeam-nodata: #e74c3c; /* Couleur spécifique pour l'absence de données Veeam. */
    --veeam-server-color: #ccc; /* Couleur pour le texte ou l'icône du serveur Veeam. */

    --avamar-green: var(--green-light); /* Couleur verte pour les statuts Avamar. */
    --avamar-red: var(--red-light); /* Couleur rouge pour les statuts Avamar. */
    --avamar-unknown: var(--unknown-light); /* Couleur "inconnu" pour les statuts Avamar. */

    --wu-green: var(--green-light); /* Couleur verte pour les statuts Windows Update. */
    --wu-red: var(--red-light); /* Couleur rouge pour les statuts Windows Update. */
    --wu-unknown: var(--unknown-light); /* Couleur "inconnu" pour les statuts Windows Update. */
}

@font-face {
    /* * Règle `@font-face` permet d'importer et de définir des polices personnalisées qui ne sont pas 
     * installées par défaut sur le système de l'utilisateur.
     */
    font-family: 'Hobbiton'; /* Nom donné à cette police, utilisé ensuite dans `font-family`. */
    src: url('../fonts/hobbitonbrushhand.ttf') format('truetype');
    /* * `src`: Spécifie le chemin vers le fichier de police.
     * `url('../fonts/hobbitonbrushhand.ttf')`: Le chemin relatif vers le fichier .ttf. `../` signifie "remonter d'un dossier".
     * `format('truetype')`: Indique le format de la police, ce qui aide le navigateur à choisir le bon fichier.
     */
    font-weight: normal; /* Définit l'épaisseur de la police. */
    font-style: normal; /* Définit le style de la police (normal, italic, oblique). */
}

/* Styles globaux pour le corps de la page */
body {
    /* Appliqué à l'élément `<body>` de votre HTML. */
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    /* * Définit la pile de polices. Le navigateur essaiera d'abord 'Segoe UI', puis Tahoma, etc. 
     * Si aucune n'est disponible, il utilisera une police sans empattement générique (sans-serif).
     */
    margin: 0; /* Supprime la marge par défaut du corps du document, assurant que le contenu touche les bords de la fenêtre. */
    padding: 20px; /* Ajoute un rembourrage de 20px tout autour du contenu du corps. */
    background-color: var(--bg-color); /* Définit la couleur de fond en utilisant la variable `--bg-color`. */
    color: var(--text-color); /* Définit la couleur du texte par défaut en utilisant la variable `--text-color`. */
    line-height: 1.6; /* Définit la hauteur de ligne pour le texte, améliorant la lisibilité. 1.6 fois la taille de la police. */
    overflow-x: hidden; /* * Empêche la barre de défilement horizontale d'apparaître si le contenu dépasse la largeur de la fenêtre. 
                         * Utile pour éviter les problèmes de mise en page responsive. 
                         */
    min-height: 100vh; /* * Définit la hauteur minimale du corps à 100% de la hauteur du viewport (vh = viewport height).
                        * Cela assure que le corps occupe au moins toute la hauteur de l'écran, même s'il y a peu de contenu. 
                        */
    box-sizing: border-box; /* S'assure que le `box-sizing: border-box;` est bien appliqué aussi au `<body>`. */
    animation: fadeInBackground 1.5s ease-out forwards;
    /* * Applique une animation nommée `fadeInBackground` au corps de la page.
     * - `1.5s`: Durée de l'animation (1.5 secondes).
     * - `ease-out`: Fonction de temporisation (démarre rapidement et ralentit à la fin).
     * - `forwards`: L'élément conservera les valeurs de style définies à la dernière keyframe de l'animation. 
     */
    display: flex; /* Active le modèle de boîte flexible (Flexbox) pour le corps. */
    flex-direction: column; /* Organise les éléments enfants du corps en une colonne verticale. */
    align-items: center; /* Centre horizontalement les éléments enfants le long de l'axe transversal (ici, horizontalement). */
    justify-content: flex-start; /* Aligne les éléments enfants au début de l'axe principal (verticalement, en haut). */
}

/* Animation globale pour le fondu du background */
@keyframes fadeInBackground {
    /* * Définit une animation CSS nommée `fadeInBackground`.
     * `@keyframes` permet de spécifier le comportement de l'animation à différents points de sa durée.
     */
    from { opacity: 0; } /* À 0% de l'animation, l'opacité est de 0 (complètement transparent). */
    to { opacity: 1; } /* À 100% de l'animation, l'opacité est de 1 (complètement opaque). */
}

h1 {
    /* Appliqué aux titres de niveau 1. */
    font-family: 'Hobbiton', cursive; /* Utilise la police 'Hobbiton' définie via `@font-face`, avec 'cursive' comme alternative. */
    text-align: center; /* Centre le texte horizontalement. */
    margin: 20px 0 40px; /* Marges : 20px en haut, 0 à gauche/droite, 40px en bas. */
    font-size: 60px; /* Taille de police de base (peut être ajustée par la suite avec les media queries). */
    color: var(--accent-color); /* Utilise la couleur d'accentuation pour le texte. */
    text-shadow: 2px 2px 6px var(--shadow-dark);
    /* * Ajoute une ombre au texte.
     * - `2px 2px`: Décalage horizontal et vertical de l'ombre.
     * - `6px`: Rayon de flou de l'ombre.
     * - `var(--shadow-dark)`: Couleur de l'ombre.
     */
    letter-spacing: 2px; /* Ajoute un espacement de 2px entre chaque lettre. */
}

h2 {
    /* Appliqué aux titres de niveau 2. */
    font-family: var(--section-title-font); /* Utilise la police définie par la variable. */
    color: var(--section-title-color); /* Utilise la couleur des titres de section. */
    text-align: center; /* Centre le texte. */
    margin: 30px 0 20px; /* Marges : 30px haut, 0 gauche/droite, 20px bas. */
    font-size: 2.2em; /* Taille de police relative (2.2 fois la taille de police par défaut). */
    letter-spacing: 1.5px; /* Espacement des lettres. */
    text-shadow: 0 0 8px rgba(0, 188, 212, 0.6);
    /* * Ombre de texte sans décalage, mais avec un flou de 8px et une couleur semi-transparente.
     * Crée un effet de "lueur".
     */
    padding-bottom: 5px; /* Rembourrage en bas du texte. */
    border-bottom: 2px solid rgba(0, 188, 212, 0.3); /* Bordure inférieure. */
}

h5 {
    /* Appliqué aux titres de niveau 5 (moins courants pour des titres de section, souvent utilisés pour des sous-titres). */
    font-family: Georgia, serif; /* Pile de polices. */
    color: var(--section-title-color); /* Couleur des titres de section. */
    text-align: center; /* Centre le texte. */
    margin: 30px 0 20px; /* Marges. */
    font-size: 2.2em; /* Taille de police. */
    letter-spacing: 1.5px; /* Espacement des lettres. */
    text-shadow: 0 0 8px rgba(0, 188, 212, 0.6); /* Effet de lueur. */
    /* Note: `h5` partage beaucoup de styles avec `h2`, il pourrait y avoir une opportunité de regroupement pour DRY (Don't Repeat Yourself). */
}

main {
    /* Appliqué à l'élément `<main>` qui contient le contenu principal. */
    padding: 10px; /* Rembourrage intérieur de 10px. */
    width: 100%; /* S'assure que l'élément `<main>` prend 100% de la largeur disponible de son parent. */
    max-width: 2560px; /* Limite la largeur maximale à 2560px, pour éviter que le contenu ne s'étire trop sur de très grands écrans. */
    margin: 0 auto; /* Centre l'élément `<main>` horizontalement dans son parent en définissant des marges automatiques gauche et droite. */
}

/* Styles pour les lignes d'en-tête et de données des tableaux (grids) */
.header-row, .data-row {
    /* Appliqué aux éléments avec les classes `header-row` (en-tête de tableau) et `data-row` (ligne de données). */
    display: grid; /* Active le modèle de boîte de grille CSS (CSS Grid) pour ces éléments. */
    grid-template-columns: repeat(auto-fit, minmax(10px, 1fr));
    /* * Définit les colonnes de la grille.
     * - `repeat(auto-fit, ...)`: Crée autant de colonnes que possible qui tiendront dans l'espace disponible.
     * - `minmax(10px, 1fr)`: Chaque colonne aura une largeur minimale de 10px et une largeur maximale de 1 fraction de l'espace disponible.
     * Cela permet une disposition fluide et adaptative pour les colonnes du tableau.
     */
    padding: 6px 0; /* Rembourrage de 6px en haut/bas, 0 à gauche/droite. */
    align-items: center; /* Aligne verticalement le contenu de chaque cellule au centre de la ligne. */
    border-bottom: 1px solid rgba(255, 255, 255, 0.1); /* Ajoute une bordure inférieure fine et semi-transparente. */
}

.header-row {
    /* Styles spécifiques à la ligne d'en-tête. */
    color: var(--header-color); /* Couleur du texte de l'en-tête. */
    font-weight: bold; /* Texte en gras. */
    text-transform: uppercase; /* Transforme le texte en majuscules. */
    letter-spacing: 0.8px; /* Espacement des lettres. */
    font-size: 0.75em; /* Taille de police plus petite pour l'en-tête. */
    background-color: rgba(0, 0, 0, 0.2); /* Couleur de fond semi-transparente noire. */
    border-radius: 8px 8px 0 0; /* Arrondit les coins supérieurs gauche et droit. */
    padding: 8px 0; /* Rembourrage spécifique pour l'en-tête. */
}

.header-row > div {
    /* Styles pour les cellules individuelles (direct children `div`) de la ligne d'en-tête. */
    text-align: center; /* Centre le texte dans chaque cellule. */
    display: flex; /* Active Flexbox pour le contenu de la cellule. */
    flex-direction: column; /* Empile le contenu de la cellule verticalement. */
    align-items: center; /* Centre horizontalement le contenu de la cellule. */
    justify-content: center; /* Centre verticalement le contenu de la cellule. */
    gap: 3px; /* Ajoute un espace de 3px entre les éléments enfants (par exemple, icône et texte). */
    white-space: nowrap; /* Empêche le texte de passer à la ligne. */
    overflow: hidden; /* Masque tout contenu qui dépasse. */
    text-overflow: ellipsis; /* Affiche des points de suspension (...) si le texte est tronqué. */
}

.header-row img {
    /* Styles pour les images à l'intérieur des cellules d'en-tête (probablement des icônes de service). */
    width: 40px; /* Largeur fixe. */
    height: auto; /* Hauteur ajustée automatiquement pour maintenir les proportions. */
    filter: drop-shadow(0 0 3px rgba(255, 255, 255, 0.2)); /* Ajoute une ombre légère à l'image. */
}

.legend {
    /* Styles pour le texte de la légende sous les icônes dans l'en-tête. */
    font-size: 0.7em; /* Taille de police plus petite. */
    display: block; /* S'assure que la légende prend une nouvelle ligne. */
}

.host-name {
    /* Styles pour le nom de l'hôte dans la table. */
    text-align: left !important; /* Aligne le texte à gauche (surpasse toute autre règle `text-align`). */
    font-weight: bold; /* Texte en gras. */
    color: var(--host-name-color); /* Couleur spécifique pour le nom d'hôte. */
    padding-left: 15px; /* Rembourrage à gauche. */
    font-size: 0.9em; /* Taille de police légèrement plus petite. */
    cursor: pointer; /* Change le curseur en pointeur pour indiquer que l'élément est cliquable. */
    transition: color 0.2s ease-in-out; /* Ajoute une transition fluide à la couleur du texte lors du survol. */
    white-space: nowrap; /* Empêche le texte de passer à la ligne. */
    overflow: hidden; /* Masque le contenu débordant. */
    text-overflow: ellipsis; /* Affiche des points de suspension si le texte est tronqué. */
}

.host-name:hover {
    /* Styles appliqués au nom d'hôte lorsque la souris le survole. */
    color: var(--accent-color); /* Change la couleur du texte à la couleur d'accentuation. */
    text-decoration: underline; /* Souligne le texte. */
}

.header-row div:first-child {
    /* Styles spécifiques pour la *première* cellule `div` de la ligne d'en-tête.
       Il s'agit probablement de la cellule "Client" ou "Hôte" qui est le titre de la première colonne. */
    text-align: left !important; /* Aligne le texte à gauche (surpasse toute autre règle). */
    padding-left: 15px; /* Rembourrage à gauche. */
    align-items: flex-start; /* Aligne les éléments enfants au début de l'axe transversal (ici, à gauche pour une colonne). */
    font-family: var(--section-title-font); /* Utilise la police des titres de section. */
    color: var(--section-title-color); /* Utilise la couleur des titres de section. */
    font-size: 1.05em; /* Taille de police légèrement plus grande. */
    text-transform: uppercase; /* Met le texte en majuscules. */
    letter-spacing: 1.5px; /* Espacement des lettres. */
    text-shadow: 0 0 5px rgba(0, 188, 212, 0.5); /* Effet de lueur. */
    white-space: normal; /* Autorise le texte à passer à la ligne (contrairement aux autres cellules d'en-tête). */
    overflow: visible; /* Le contenu débordant est visible. */
    text-overflow: clip; /* Le texte débordant est coupé (pas de points de suspension). */
}

/* Styles pour les nouvelles icônes Avamar et Windows Update */
.avamar-icon, .wu-icon {
    /* Appliqué aux éléments avec la classe `avamar-icon` ou `wu-icon` (probablement des icônes Font Awesome). */
    font-size: 2.5em; /* Taille de police élevée pour que l'icône soit grande. */
    margin-bottom: 3px; /* Marge en bas. */
    flex-shrink: 0; /* Empêche l'icône de rétrécir dans un conteneur flex. */
}

.avamar-icon.green-icon, .wu-icon.green-icon {
    /* Appliqué aux icônes Avamar ou WU qui ont aussi la classe `green-icon`. */
    color: var(--avamar-green); /* Couleur verte (utilisant la variable). */
}
.avamar-icon.red-icon, .wu-icon.red-icon {
    /* Appliqué aux icônes Avamar ou WU qui ont aussi la classe `red-icon`. */
    color: var(--avamar-red); /* Couleur rouge. */
}
.avamar-icon.unknown-icon, .wu-icon.unknown-icon {
    /* Appliqué aux icônes Avamar ou WU qui ont aussi la classe `unknown-icon`. */
    color: var(--avamar-unknown); /* Couleur "inconnu". */
}

/* Styles pour le lien de déconnexion */
.logout-link {
    /* Appliqué à l'élément conteneur du lien de déconnexion (votre <p> dans le HTML). */
    text-align: center; /* Centre le contenu textuel du paragraphe. */
    margin-top: 40px; /* Marge supérieure. */
    margin-bottom: 20px; /* Marge inférieure. */
}
.logout-link a {
    /* Styles pour le lien (<a>) à l'intérieur de `.logout-link`. */
    color: var(--text-color); /* Couleur du texte du lien. */
    text-decoration: none; /* Supprime le soulignement par défaut des liens. */
    font-size: 1.1em; /* Taille de police légèrement plus grande. */
    padding: 10px 20px; /* Rembourrage intérieur (10px haut/bas, 20px gauche/droite). */
    border-radius: 8px; /* Coins légèrement arrondis. */
    background-color: rgba(221, 190, 15, 0.4); /* Couleur de fond semi-transparente pour le bouton/lien. */
    transition: background-color 0.3s ease, transform 0.2s ease;
    /* * Ajoute des transitions fluides pour les changements de `background-color` et `transform` 
     * (quand la souris survole, par exemple).
     */
    display: inline-flex; /* * Affiche le lien comme une boîte flexible en ligne, ce qui permet d'aligner l'icône et le texte.
                           * `inline-flex` permet au conteneur lui-même de se comporter comme un élément `inline` 
                           * tout en utilisant les propriétés Flexbox pour ses enfants.
                           */
    align-items: center; /* Centre verticalement les éléments enfants (icône et texte). */
    gap: 8px; /* Ajoute un espace de 8px entre les éléments enfants (icône et texte). */
    box-shadow: 0 2px 5px rgba(0,0,0,0.3); /* Ajoute une ombre au bouton. */
}
.logout-link a:hover {
    /* Styles appliqués au lien de déconnexion lorsque la souris le survole. */
    background-color: rgba(255, 0, 0, 0.6); /* Change la couleur de fond en rouge semi-transparent. */
    transform: translateY(-2px); /* Déplace le bouton de 2px vers le haut, créant un effet de "clic" ou d'interactivité. */
}
.logout-link a .fas {
    /* Styles pour l'icône Font Awesome (élément avec la classe `fas`) à l'intérieur du lien de déconnexion. */
    font-size: 1.2em; /* Rend l'icône légèrement plus grande que le texte adjacent. */
}