/* Mise en page. Les couleurs, formes et durées viennent de habillage/theme.css. */

* { box-sizing: border-box; }

html, body {
    margin: 0;
    height: 100%;
    background: var(--fond);
    color: var(--texte);
    font-family: var(--police);
    -webkit-font-smoothing: antialiased;
    -webkit-tap-highlight-color: transparent;
    overscroll-behavior: none;
}

h1, h2, h3 { font-family: var(--police-titres); margin: 0; }

/* Écran de chargement : une barre discrète, le temps que .NET démarre (une seule fois, ensuite c'est en cache). */
.chargement { position: fixed; inset: 0; display: grid; place-items: center; }
.chargement-barre {
    width: 96px; height: 4px; border-radius: 2px; background: var(--trait); overflow: hidden; position: relative;
}
.chargement-barre::after {
    content: ""; position: absolute; inset: 0; width: var(--blazor-load-percentage, 10%);
    background: var(--accent); transition: width var(--duree) var(--sortie);
}

#blazor-error-ui {
    display: none; position: fixed; inset: auto 0 0 0; z-index: 1000;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: var(--surface); box-shadow: var(--ombre);
}
#blazor-error-ui .reload { color: var(--accent); margin-left: 8px; }
#blazor-error-ui .dismiss { float: right; cursor: pointer; }

/* Le titre reçoit le focus à chaque changement de page (lecteurs d'écran) : pas de cadre visible pour autant. */
h1:focus { outline: none; }
