/* Socle visuel des apps Blazor CMB — par-dessus le thème Radzen « standard ».
   Règle maison : la lisibilité prime sur la charte (en-têtes de grille gris neutre,
   sans gras ni retour à la ligne, filtres compacts et alignés). L'or CMB reste
   un accent (bouton principal, sélection). */

:root {
    --cmb-gold: #D5AC5C;
    --cmb-gold-dark: #A9802F;
    --cmb-selection: #F0E2C6;
    --cmb-filter-tint: #F5E9CF;
    --cmb-head-bg: #F1F0EE;
    --cmb-head-fg: #3A3734;
    --cmb-border: #D8D3CB;
    --cmb-muted: #8A847C;
    --cmb-sidebar-width: 240px;

    --rz-primary: var(--cmb-gold-dark);
    --rz-primary-light: var(--cmb-gold);
    --rz-primary-lighter: var(--cmb-selection);
    --rz-primary-dark: #8A6623;
    --rz-primary-darker: #6E511B;
}

html[data-theme="dark"] {
    --cmb-selection: #5D4D31;
    --cmb-filter-tint: #4A3E28;
    --cmb-head-bg: #2E2B28;
    --cmb-head-fg: #E6E2DC;
    --cmb-border: #44403C;
    --cmb-muted: #A39D94;
    --rz-primary: var(--cmb-gold);
    --rz-primary-light: #E2C283;
    --rz-primary-lighter: var(--cmb-selection);
}

html, body { height: 100%; margin: 0; }
body {
    background: var(--rz-base-background-color, #fff);
    color: var(--rz-text-color, inherit);
    font-family: var(--rz-text-font-family, "Segoe UI", system-ui, sans-serif);
    font-size: 14px;
}

.cmb-spacer { flex: 1 1 auto; }

.cmb-splash {
    display: flex; align-items: center; justify-content: center;
    min-height: 40vh;
}

/* ─── Coque ─────────────────────────────────────────────────────────────── */

.cmb-layout { height: 100vh; }
.cmb-header-row { height: 100%; padding: 0 .75rem 0 .25rem; }
.cmb-app-title { font-weight: 600; white-space: nowrap; margin-right: .75rem; }
.cmb-concours-select { width: 13rem; }
.cmb-user-name { margin-left: .35rem; white-space: nowrap; }
.cmb-sidebar { width: var(--cmb-sidebar-width); }
.cmb-body { padding: 0; }

/* ─── Sidebar ───────────────────────────────────────────────────────────── */

.cmb-nav { padding: .5rem 0 2rem; font-size: .875rem; }
.cmb-nav-group { margin-bottom: .25rem; }
.cmb-nav-group-title {
    display: flex; align-items: center; gap: .25rem; width: 100%;
    padding: .35rem .75rem; border: 0; background: none; cursor: pointer;
    color: var(--cmb-muted); font: inherit; font-size: .75rem;
    text-transform: uppercase; letter-spacing: .04em; text-align: left;
}
.cmb-nav-group-static { cursor: default; padding-left: 1.75rem; }
.cmb-nav-chevron { font-size: 1rem !important; }
.cmb-nav-item {
    display: flex; align-items: center; gap: .6rem;
    padding: .35rem .75rem .35rem 1.75rem;
    color: inherit; text-decoration: none; white-space: nowrap;
    border-left: 3px solid transparent;
}
.cmb-nav-item:hover { background: var(--rz-base-200, rgba(0,0,0,.05)); }
.cmb-nav-item.active { border-left-color: var(--cmb-gold); background: var(--cmb-selection); }
.cmb-nav-item .rzi { font-size: 1.15rem; }
.cmb-nav-item-pending { color: var(--cmb-muted); }

/* ─── Pages ─────────────────────────────────────────────────────────────── */

.cmb-page { padding: 1rem 1.25rem; }
.cmb-page-narrow { max-width: 640px; }
.cmb-page h2 { margin: 0 0 1rem; font-size: 1.25rem; font-weight: 600; }
.cmb-section { margin-bottom: 1rem; }
.cmb-section h3 { margin: 0 0 .75rem; font-size: 1rem; font-weight: 600; }
.cmb-form { display: flex; flex-direction: column; gap: .85rem; }
.cmb-props { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 0; }
.cmb-props dt { color: var(--cmb-muted); }
.cmb-props dd { margin: 0; word-break: break-word; }
.cmb-placeholder { text-align: center; padding-top: 4rem; color: var(--cmb-muted); }
.cmb-placeholder-icon { font-size: 3rem !important; }

/* ─── Login ─────────────────────────────────────────────────────────────── */

.cmb-blank { min-height: 100vh; }
.cmb-login { display: flex; justify-content: center; align-items: flex-start; padding: 10vh 1rem 2rem; }
.cmb-login-card { width: 100%; max-width: 400px; }
.cmb-login-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.cmb-login-head h1 { margin: 0; font-size: 1.35rem; font-weight: 600; }

/* ─── Grille de recherche ───────────────────────────────────────────────── */

.cmb-grid-page { display: flex; flex-direction: column; height: calc(100vh - var(--rz-header-min-height, 3.5rem)); }
.cmb-grid-toolbar {
    display: flex; flex-wrap: wrap; align-items: center; gap: .4rem;
    padding: .5rem .75rem; border-bottom: 1px solid var(--cmb-border);
}
.cmb-grid-title { margin: 0 .5rem 0 0; font-size: 1.1rem; font-weight: 600; white-space: nowrap; }
.cmb-grid-search { width: 16rem; }
.cmb-grid-concours { width: 12rem; }
.cmb-grid-pager { display: flex; align-items: center; gap: .25rem; }
.cmb-grid-count, .cmb-grid-pagenum { font-size: .8rem; color: var(--cmb-muted); white-space: nowrap; padding: 0 .25rem; }
.cmb-grid-pagesize { width: 5rem; }
.cmb-grid-error { margin: .5rem .75rem; }

.cmb-grid { flex: 1 1 auto; min-height: 0; border: 0; font-size: .8125rem; }
.cmb-grid .rz-grid-table thead th {
    background: var(--cmb-head-bg); color: var(--cmb-head-fg);
    font-weight: 400; vertical-align: top;
}
.cmb-grid .rz-cell-data { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmb-grid .rz-state-highlight > td,
.cmb-grid .rz-data-row.rz-state-highlight > td { background: var(--cmb-selection) !important; color: inherit; }

.cmb-col-head { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cmb-col-title {
    display: flex; align-items: center; gap: 2px; min-width: 0;
    border: 0; padding: 0; background: none; color: inherit; font: inherit;
    cursor: pointer; text-align: inherit;
}
.cmb-col-title:disabled { cursor: default; }
.cmb-col-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmb-col-sort { font-size: .9rem !important; color: var(--cmb-gold-dark); }
.cmb-col-filter {
    width: 100%; box-sizing: border-box; min-width: 0;
    height: 1.5rem; padding: 0 .3rem; font: inherit; font-size: .75rem;
    border: 1px solid var(--cmb-border); border-radius: 3px;
    background: var(--rz-base-background-color, #fff); color: inherit;
}
.cmb-col-filter::placeholder { color: var(--cmb-muted); opacity: .6; }
.cmb-col-filter-active { background: var(--cmb-filter-tint); border-color: var(--cmb-gold); }

.cmb-row-details { max-height: 60vh; overflow: auto; }

/* ─── Utilisateurs ──────────────────────────────────────────────────────── */

.cmb-users-toolbar { display: flex; align-items: center; gap: .75rem; margin-bottom: .75rem; }
.cmb-inactive { color: var(--cmb-muted); }

/* ─── Formulaires ───────────────────────────────────────────────────────── */

.cmb-hint { color: var(--cmb-muted); margin-top: -.5rem; }
.cmb-link {
    align-self: flex-start; border: 0; padding: 0; background: none; cursor: pointer;
    color: var(--rz-primary); font: inherit; text-decoration: underline;
}
.cmb-fieldset { border: 1px solid var(--cmb-border); border-radius: 4px; padding: .5rem .75rem; margin: 0; }
.cmb-fieldset legend { color: var(--cmb-muted); font-size: .8rem; padding: 0 .25rem; }

/* ─── Accueil ───────────────────────────────────────────────────────────── */

.cmb-home-intro { color: var(--cmb-muted); }
.cmb-home-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .75rem; margin-top: 1rem; }
.cmb-home-tile {
    display: flex; align-items: center; gap: .6rem; padding: .9rem 1rem;
    border: 1px solid var(--cmb-border); border-radius: 6px;
    color: inherit; text-decoration: none;
}
.cmb-home-tile:hover { border-color: var(--cmb-gold); background: var(--cmb-selection); }

/* Colonne repliée (largeur ≤ 8 dans le schéma, ou Collapsed) : présente mais réduite à
   un liseré ; élargie à la poignée, le contenu réapparaît. */
.cmb-grid th.cmb-col-collapsed,
.cmb-grid td.cmb-col-collapsed { padding-left: 0 !important; padding-right: 0 !important; }
.cmb-grid th.cmb-col-collapsed { background: var(--cmb-border); }
/* Contenu invisible mais présent : l'infobulle (titre) et le clic droit restent actifs */
.cmb-grid th.cmb-col-collapsed .cmb-col-head,
.cmb-grid td.cmb-col-collapsed .rz-cell-data { opacity: 0; }

/* Largeurs EXACTES du schéma : en disposition fixe, une table de largeur minimale
   prend la somme des colonnes (Radzen étire sinon les colonnes à 100 %). */
.cmb-grid .rz-grid-table { width: 1px !important; }

/* Badge d'environnement (STAGING, DEV) — absent en production */
.cmb-env-badge {
    padding: .1rem .5rem; border-radius: 3px;
    background: #C0392B; color: #fff;
    font-size: .75rem; font-weight: 600; letter-spacing: .05em; white-space: nowrap;
}
