:root{
  --bg: #0e1116;
  --muted:#97a2b0;
  --panel:#131823;
  --panel2:#1b2230;
  --text:#e7ebf1;
  --brand:#45aaf2;
  --accent:#7bed9f;
  --danger:#ff6b6b;
  --border: #2a3344;
}

* {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
    background: var(--bg);
    color: var(--text);
    font-family: Inter, system-ui, Segoe UI, Roboto, Arial, sans-serif;
}

a {
    color: var(--brand);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    background: var(--panel);
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 10;
}

.topbar .btn-menu {
    background: transparent;
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 10px;
    border-radius: 8px;
    cursor: pointer;
}

.topbar .user-badge {
    margin-right: 8px;
    color: var(--muted);
}

.app {
    display: flex;
    min-height: calc(100vh - 56px);
}

.sidebar {
    width: 250px;
    background: var(--panel2);
    border-right: 1px solid var(--border);
    padding: 10px 0;
    transition: transform .2s ease;
}



.sidebar__user{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 16px 14px 16px;
  margin-bottom:6px;
  border-bottom:1px solid var(--border);
}

.sidebar__avatar{
  width:36px;
  height:36px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:linear-gradient(135deg, var(--brand), var(--accent));
  color:#0a0f18;
  font-weight:700;
}

.sidebar__meta{
    line-height:1.15
}

.sidebar__name{
    font-weight:600
}

.sidebar__role{
    font-size:12px;
    color:var(--muted)
}


.sidebar h2 {
    margin: 0 0 10px 0;
    padding: 0 16px;
    font-size: 16px;
    color: var(--muted);
}

.sidebar ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sidebar li {
    padding: 10px 20px;
}

.sidebar li.active,
.sidebar li:hover {
    background: #222b3a;
}

.sidebar a {
    color: var(--text);
    display: block;
}

.sidebar .has-sub {
    list-style: none;
    padding-left: 10px;
}

.sidebar .submenu-toggle {
  width: 100%;
  background: none;
  border: 0;
  color: inherit;
  text-align: left;
  cursor: pointer;
  display: flex;
  gap: 8px;
  align-items: center;
  font: inherit;
}

.sidebar .chev {
  display: inline-block;
  transition: transform .2s ease;
}

.sidebar .has-sub.is-open > .submenu-toggle .chev {
  transform: rotate(90deg);
}

.sidebar .submenu {
  list-style: none;
  margin: 0;
  padding: 6px 28px;
}

.sidebar .submenu[hidden] { display: none; }


.sidebar .submenu a {
  opacity: .95;
  font-size: .95em;
}

.sidebar .submenu li.active > a {
  font-weight: 600;
  text-decoration: underline;
}

.content {
    flex: 1;
    padding: 20px;
}

.footer {
    padding: 12px 16px;
    border-top: 1px solid var(--border);
    background: var(--panel);
    text-align: center;
    color: var(--muted);
}

.btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 10px;
    border: none;
    cursor: pointer;
}

.btn--primary {
    background: var(--brand);
    color: #0a0f18;
}

.btn--danger {
    background: var(--danger);
    color: #0a0f18;
}

.btn--outline {
    border: 1px solid var(--border);
    background: transparent;
    color: var(--text);
}

.btn:hover {
    opacity: .9;
}

.card {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 16px;
}

.card__title {
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.card__value {
    font-size: 28px;
    margin: 6px 0 2px;
}

.card__hint {
    color: var(--muted);
    font-size: 12px;
}

.panel {
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 16px;
    margin-top: 16px;
}

/* Login */
.login-page {
    display: grid;
    place-items: center;
    min-height: 100vh;
}

.login-card {
    width: 100%;
    max-width: 380px;
    background: var(--panel);
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 22px;
}

.login-card h1 {
    margin: 0 0 6px;
}

.muted {
    color: var(--muted);
    margin: 0 0 14px;
}

.form-row {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 12px;
}

label {
    font-size: 14px;
    color: var(--muted);
    text-align: center;
}

input[type=text],
input[type=password] {
    background: #0a0f18;
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 10px 12px;
    color: var(--text);
    outline: none;
    text-align: center;
}

input:focus {
    border-color: var(--brand);

}
.form-msg {
    margin-top: 10px;
    font-size: 14px;

}
.form-msg--error {
    color: var(--danger);
}

.form-msg--ok {
    color: var(--accent);
}

@media (max-width: 900px) {
    .sidebar {
        position: fixed;
        left: 0;
        top: 56px;
        bottom: 0;
        transform: translateX(-100%);
    }

    .sidebar.is-open {
        transform: translateX(0);
    }

    .content {
        padding: 16px;
    }
}


/* Tables */
.table-wrapper {
    overflow:auto;
    border:1px solid var(--border);
    border-radius:12px;
    background:var(--panel);
}

.table {
    width:100%;
    border-collapse:collapse
}

.table th, .table td {
    padding:10px 12px;
    border-bottom:1px solid var(--border);
    vertical-align:top;
    white-space:nowrap
}

.table th {
    position:sticky;
    top:0;
    background:var(--panel2);
    text-align:left;
    font-size:12px;
    letter-spacing:.04em;
    text-transform:uppercase;
    color:var(--muted)
}

.table tr:hover td {
    background:#182033
}

.table td:nth-child(2) {
    text-transform: uppercase;
    font-weight: 600;
}

/* Colonne actions */
.tbl-actions {
    display:flex;
    align-items:center;
    gap:8px;
}

.icon-btn {
  border: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  width: 32px;
  height: 32px;
  border-radius: 8px;
  cursor: pointer;
}

.icon-btn:hover {
  opacity: .9;
}

/* Menu actions (dropdown) */
.act-menu {
  position: relative;
  display: inline-block;
}
.act-list {
  position: absolute;
  right: 0;
  top: 36px;
  min-width: 140px;
  z-index: 20;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--panel2);
  box-shadow: 0 6px 20px rgba(0, 0, 0, .35);
  padding: 6px;
  display: none;
}

.act-menu.is-open .act-list {
  display: block;
}

.act-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text);
  cursor: pointer;
}

.act-item:hover {
  background: #212a3a;
}

/* Inputs */
.input, input, select {
    background:#0a0f18;
    border:1px solid var(--border);
    border-radius:10px;
    padding:10px 12px;
    color:var(--text);
    outline:none
}

.input:focus, input:focus {
    border-color:var(--brand)
}

/* Panel actions */
.panel__actions {
    display:flex;
    gap:10px;
    align-items:center;
    margin-bottom:10px
}

/* Modales (<dialog>) */
.modal {
    border:1px solid var(--border);
    border-radius:14px;
    padding:16px;
    background:var(--panel);
    color:var(--text);
    max-width:800px;
    width:95%
}

.form-vertical h2 {
    margin:0 0 10px
}

.form-vertical label {
    display:flex;
    flex-direction:column;
    gap:6px;
    margin-bottom:10px
}

.form-vertical menu {
    display:flex;
    justify-content:flex-end;
    gap:10px;
    margin:10px 0 0
}


.grid .grid-1 {
    display:grid;
    grid-template-columns:repeat(1,1fr);
    gap:10px;
    margin:18px 0;
}

.grid-2 {
    display: grid;
    grid-template-columns:repeat(2,1fr);
    gap:10px;
    margin:18px 0;
}

.grid-3 {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:10px;
    margin:18px 0;
}

@media (max-width:900px){.grid-2,.grid-3{grid-template-columns:1fr}}

.form-msg {
    margin-top:8px;
    font-size:14px
}

.form-msg--error {
    color:var(--danger)
}

.form-msg--ok {
    color:var(--accent)
}

.check {
    display:flex;
    align-items:center;
    gap:8px
}

.medaille-field {
    display:flex;
    align-items:center;
    gap:10px
}

.badge {
    display:inline-block;
    padding:2px 8px;
    border-radius:999px;
    font-size:12px;
    border:1px solid var(--border);
    background:#0a0f18
}

/* OR (médaille décernée) */
.badge--gold{
  color:#6b3d00;
  background:linear-gradient(180deg,#ffe9a8,#ffd659);
  border-color:#f0be30;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}

/* BLEU (médaille donnée à quelqu’un) */
.badge--blue{
  color:#0b2f66;
  background:linear-gradient(180deg,#d7e7ff,#b5cffd);
  border-color:#82aff6;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}

/* VIOLET (prochain médaillé) */
.badge--violet{
  color:#3f176f;
  background:linear-gradient(180deg,#ead8ff,#d3b8ff);
  border-color:#ab86fb;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}

/* Boutons table */
.table .btn {
    padding:6px 10px;
    border-radius:8px
}



.chart-lg {
    width: 100%;
    height: 400px;
    display: block;
}

[hidden] { display: none !important; }