:root {
  --bg: #080b12;
  --panel: rgba(17, 22, 33, .88);
  --panel-2: rgba(21, 27, 40, .86);
  --panel-soft: rgba(255,255,255,.035);
  --border: rgba(255,255,255,.085);
  --text: #f6f7fb;
  --muted: #9ba3b4;
  --muted-2: #687085;
  --accent: #ff5e67;
  --accent-2: #ff8d4d;
  --green: #52db8a;
  --purple: #9b67ff;
  --cyan: #4dc4ff;
  --yellow: #ffc258;
  --shadow: 0 24px 70px rgba(0,0,0,.34);
  --radius: 18px;
}

* { box-sizing: border-box; }
html { color-scheme: dark; }
body {
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(circle at 84% 6%, rgba(255, 82, 63, .12), transparent 22%),
    radial-gradient(circle at 42% 0%, rgba(71, 102, 255, .08), transparent 30%),
    var(--bg);
  color: var(--text);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

button, input { font: inherit; }
button { color: inherit; }

.app-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 264px minmax(0, 1fr);
}

.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 22px 16px;
  border-right: 1px solid var(--border);
  background:
    linear-gradient(180deg, rgba(255,74,74,.08), transparent 19%),
    rgba(8, 11, 18, .94);
  backdrop-filter: blur(18px);
  display: flex;
  flex-direction: column;
  z-index: 5;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 10px 22px;
}

.brand-mark {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  font-size: 27px;
  color: #ffcf66;
  background: linear-gradient(145deg, rgba(255,79,65,.27), rgba(129,31,31,.08));
  border: 1px solid rgba(255,113,72,.25);
  box-shadow: inset 0 0 24px rgba(255,77,52,.14), 0 0 30px rgba(255,84,52,.12);
}
.brand-title { font-weight: 800; letter-spacing: -.02em; font-size: 18px; }
.brand-subtitle { margin-top: 3px; color: var(--muted); font-size: 12px; }

.nav { display: grid; gap: 7px; }
.nav-item {
  width: 100%;
  border: 0;
  background: transparent;
  color: #b4bbca;
  display: grid;
  grid-template-columns: 28px 1fr;
  align-items: center;
  gap: 10px;
  padding: 13px 14px;
  border-radius: 13px;
  text-align: left;
  cursor: pointer;
  transition: .18s ease;
}
.nav-item span:first-child { font-size: 18px; opacity: .85; text-align: center; }
.nav-item:hover { background: rgba(255,255,255,.045); color: #fff; }
.nav-item.active {
  color: #fff;
  background: linear-gradient(90deg, rgba(255,84,95,.19), rgba(255,255,255,.045));
  border: 1px solid rgba(255,95,102,.16);
  box-shadow: inset 3px 0 0 var(--accent), 0 8px 24px rgba(255,72,79,.06);
}

.sidebar-status {
  margin-top: auto;
  border: 1px solid var(--border);
  background: var(--panel-soft);
  padding: 13px;
  border-radius: 16px;
  display: grid;
  grid-template-columns: 10px 1fr 34px;
  align-items: center;
  gap: 10px;
}
.sidebar-status strong { font-size: 13px; display: block; }
.sidebar-status span { color: var(--muted); font-size: 11px; display: block; margin-top: 2px; }
.status-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--green); box-shadow: 0 0 12px rgba(82,219,138,.8); }

.main { min-width: 0; padding: 30px 34px 48px; }
.topbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 22px;
  margin-bottom: 26px;
}
.title-line { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.title-icon { color: var(--accent); font-size: 24px; }
h1 { margin: 0; font-size: clamp(26px, 2.5vw, 38px); letter-spacing: -.045em; }
.topbar p { margin: 7px 0 0 34px; color: var(--muted); font-size: 14px; }
.live-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  color: #c4cad7;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 7px 10px;
  background: rgba(255,255,255,.025);
}
.live-pill i { width: 8px; height: 8px; border-radius: 50%; background: var(--green); box-shadow: 0 0 9px rgba(82,219,138,.7); }
.topbar-actions { display: flex; align-items: center; gap: 10px; }
.search-box {
  height: 42px;
  width: min(320px, 29vw);
  padding: 0 13px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: rgba(12,16,24,.8);
  display: flex;
  align-items: center;
  gap: 9px;
}
.search-box input { width: 100%; border: 0; outline: 0; background: transparent; color: #fff; font-size: 13px; }
.search-box input::placeholder { color: #697185; }
.icon-button, .profile-button {
  border: 1px solid var(--border);
  background: rgba(255,255,255,.035);
  cursor: pointer;
}
.icon-button { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; position: relative; }
.icon-button:hover, .profile-button:hover { background: rgba(255,255,255,.07); }
.notif b { position: absolute; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); right: 8px; top: 7px; }
.profile-button { height: 42px; padding: 0 10px 0 6px; border-radius: 14px; display: flex; align-items: center; gap: 8px; }
.profile-button span { font-size: 12px; font-weight: 700; }
.profile-button small { color: var(--muted); }
.avatar { width: 32px; height: 32px; border-radius: 10px; display: inline-grid; place-items: center; font-weight: 800; border: 1px solid rgba(255,255,255,.09); background: linear-gradient(145deg,#283041,#121723); }
.avatar-main { background: linear-gradient(145deg,#5a2626,#1e1111); color: #ffd0bb; }

.view-container { min-height: 600px; }
.dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(330px, .95fr);
  gap: 14px;
}
.stack { display: grid; gap: 14px; align-content: start; }
.card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: linear-gradient(145deg, var(--panel), rgba(11,15,23,.82));
  box-shadow: var(--shadow);
  overflow: hidden;
}
.card-header { padding: 17px 18px 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.card-title-wrap { display: flex; align-items: flex-start; gap: 10px; }
.card-icon {
  width: 34px; height: 34px; border-radius: 10px;
  display: grid; place-items: center;
  background: rgba(255,85,94,.14); color: var(--accent);
  flex: 0 0 auto;
}
.card-title { font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.card-subtitle { color: var(--muted); font-size: 11px; margin-top: 3px; }
.card-body { padding: 0 18px 18px; }

.btn {
  border: 1px solid var(--border);
  background: rgba(255,255,255,.045);
  border-radius: 10px;
  color: #dfe3ec;
  padding: 8px 11px;
  cursor: pointer;
  font-size: 11px;
  font-weight: 700;
}
.btn:hover { background: rgba(255,255,255,.08); }
.btn-primary { background: linear-gradient(135deg, rgba(255,82,91,.25), rgba(255,136,74,.18)); border-color: rgba(255,101,86,.28); }

.week-grid { display: grid; grid-template-columns: repeat(7, minmax(0,1fr)); gap: 7px; }
.day-card {
  min-height: 138px;
  border: 1px solid var(--border);
  background: rgba(8,12,20,.52);
  border-radius: 13px;
  padding: 13px 10px;
  text-align: center;
}
.day-card.today { border-color: rgba(255,89,96,.43); background: linear-gradient(180deg, rgba(255,76,86,.12), rgba(255,76,86,.035)); }
.day-name { font-size: 12px; font-weight: 800; }
.day-date { color: var(--muted); font-size: 10px; margin-top: 2px; }
.day-number { font-size: 26px; font-weight: 850; margin-top: 14px; letter-spacing: -.05em; }
.day-number.hot { color: var(--accent); }
.day-label { color: var(--muted); font-size: 10px; }
.avatar-row { display: flex; justify-content: center; gap: 4px; margin-top: 11px; }
.avatar-sm { width: 22px; height: 22px; border-radius: 7px; font-size: 9px; }
.week-footer { margin-top: 10px; border-radius: 11px; background: rgba(255,255,255,.035); border: 1px solid var(--border); padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 11px; }
.week-footer .trend { color: var(--green); }

.stats-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.stat-tile { padding: 15px; min-height: 102px; border: 1px solid var(--border); border-radius: 13px; background: rgba(255,255,255,.025); }
.stat-top { display: flex; gap: 11px; align-items: center; }
.stat-icon { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; font-size: 18px; }
.stat-value { font-size: 24px; font-weight: 850; letter-spacing: -.04em; }
.stat-label { color: #c9cfda; font-size: 10px; margin-top: 2px; }
.stat-note { color: var(--muted); font-size: 9px; margin-top: 7px; }
.stat-note.good { color: var(--green); }
.stat-icon.red { color: var(--accent); background: rgba(255,85,94,.14); }
.stat-icon.orange { color: var(--accent-2); background: rgba(255,141,77,.14); }
.stat-icon.purple { color: var(--purple); background: rgba(155,103,255,.14); }
.stat-icon.green { color: var(--green); background: rgba(82,219,138,.14); }

.request-list { display: grid; gap: 7px; }
.request-row {
  display: grid;
  grid-template-columns: minmax(0,1.4fr) minmax(180px,.9fr) auto 24px;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: rgba(255,255,255,.025);
}
.user-cell { display: flex; align-items: center; gap: 9px; min-width: 0; }
.user-cell strong { font-size: 11px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-cell small, .date-cell small { color: var(--muted); font-size: 9px; display: block; margin-top: 2px; }
.date-cell { color: #c8cfda; font-size: 10px; }
.status-badge { font-size: 9px; font-weight: 800; padding: 6px 8px; border-radius: 999px; white-space: nowrap; }
.status-pending { color: #ffc260; background: rgba(255,194,96,.11); border: 1px solid rgba(255,194,96,.14); }
.status-approved { color: var(--green); background: rgba(82,219,138,.11); border: 1px solid rgba(82,219,138,.14); }
.status-rejected { color: var(--accent); background: rgba(255,94,103,.11); border: 1px solid rgba(255,94,103,.14); }

.calendar { display: grid; grid-template-columns: repeat(7, 1fr); border-left: 1px solid var(--border); border-top: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.cal-head, .cal-day { min-height: 42px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: center; position: relative; }
.cal-head { min-height: 30px; font-size: 9px; color: var(--muted); background: rgba(255,255,255,.025); }
.cal-day { font-size: 10px; color: #c4cad4; }
.cal-day.muted { color: #525a6a; }
.cal-day.has-absence { color: #ff888e; background: rgba(255,84,95,.04); }
.cal-day.selected { background: rgba(255,84,95,.16); color: #fff; }
.dot-row { position: absolute; bottom: 5px; display: flex; gap: 2px; }
.dot-row i { width: 3px; height: 3px; border-radius: 50%; background: var(--accent); }

.resource-list { display: grid; gap: 9px; }
.resource-row { display: grid; grid-template-columns: minmax(130px,.9fr) minmax(160px,1.5fr) 90px 42px; gap: 10px; align-items: center; }
.resource-name { font-size: 10px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.resource-icon { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; background: rgba(255,255,255,.05); }
.progress { height: 9px; background: rgba(255,255,255,.07); border-radius: 999px; overflow: hidden; }
.progress > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #ff7a61, #ff5265); }
.resource-qty { color: #c8ced8; font-size: 10px; text-align: right; }
.resource-pct { color: var(--accent); font-size: 10px; font-weight: 800; text-align: right; }

.vote-card { padding: 0 18px 18px; }
.vote-question { font-size: 14px; font-weight: 800; margin: 4px 0 3px; }
.vote-sub { color: var(--muted); font-size: 10px; }
.vote-meter { display: flex; height: 9px; margin: 13px 0 6px; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,.05); }
.vote-for { background: var(--green); }
.vote-against { background: var(--accent); }
.vote-legend { display: flex; justify-content: space-between; font-size: 9px; color: var(--muted); }
.vote-legend .for { color: var(--green); }
.vote-legend .against { color: #ff8a90; }

.page-grid { display: grid; gap: 14px; }
.page-grid.two { grid-template-columns: repeat(2, minmax(0,1fr)); }
.page-grid.three { grid-template-columns: repeat(3, minmax(0,1fr)); }
.hero-card { padding: 18px; display: flex; align-items: center; justify-content: space-between; gap: 18px; background: linear-gradient(135deg, rgba(255,87,94,.11), rgba(14,18,27,.88) 48%, rgba(77,196,255,.055)); }
.hero-card h2 { margin: 0; font-size: 22px; letter-spacing: -.03em; }
.hero-card p { color: var(--muted); font-size: 12px; margin: 7px 0 0; }
.metric-big { font-size: 38px; font-weight: 900; letter-spacing: -.06em; }
.list-card { padding: 15px; }
.simple-list { display: grid; gap: 8px; }
.simple-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; border: 1px solid var(--border); border-radius: 11px; background: rgba(255,255,255,.025); }
.simple-item strong { font-size: 11px; }
.simple-item small { color: var(--muted); font-size: 9px; display: block; margin-top: 3px; }
.code-pill { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: #ffd5b2; background: rgba(255,141,77,.09); border: 1px solid rgba(255,141,77,.14); border-radius: 8px; padding: 7px 9px; font-size: 10px; }
.empty-state { padding: 36px 18px; text-align: center; color: var(--muted); }

.toast { position: fixed; right: 24px; bottom: 24px; padding: 11px 14px; border-radius: 12px; background: #151a25; border: 1px solid var(--border); box-shadow: var(--shadow); color: #fff; font-size: 12px; opacity: 0; transform: translateY(10px); pointer-events: none; transition: .2s ease; z-index: 20; }
.toast.show { opacity: 1; transform: translateY(0); }

@media (max-width: 1150px) {
  .app-shell { grid-template-columns: 82px minmax(0,1fr); }
  .brand > div:last-child, .nav-item span:last-child, .sidebar-status > div:nth-child(2) { display: none; }
  .brand { justify-content: center; padding-left: 0; padding-right: 0; }
  .nav-item { grid-template-columns: 1fr; place-items: center; }
  .sidebar-status { grid-template-columns: 10px 34px; justify-content: center; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .page-grid.three { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 820px) {
  .app-shell { display: block; }
  .sidebar { position: fixed; bottom: 0; top: auto; height: auto; width: 100%; padding: 8px; border-right: 0; border-top: 1px solid var(--border); flex-direction: row; z-index: 30; }
  .brand, .sidebar-status { display: none; }
  .nav { display: flex; gap: 4px; overflow-x: auto; width: 100%; }
  .nav-item { min-width: 68px; padding: 10px 7px; grid-template-columns: 1fr; }
  .nav-item span:last-child { display: none; }
  .main { padding: 20px 14px 88px; }
  .topbar { display: block; }
  .topbar p { margin-left: 0; }
  .topbar-actions { margin-top: 14px; }
  .search-box { width: 100%; }
  .profile-button span, .profile-button small { display: none; }
  .week-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .stats-grid, .page-grid.two, .page-grid.three { grid-template-columns: 1fr; }
  .request-row { grid-template-columns: 1fr auto; }
  .date-cell { display: none; }
  .resource-row { grid-template-columns: 1fr; gap: 6px; }
  .resource-qty, .resource-pct { text-align: left; }
}

/* Icônes Lucide */
svg {
  display: block;
}
.brand-mark svg { width: 25px; height: 25px; }
.nav-icon { display: grid; place-items: center; }
.nav-icon svg { width: 18px; height: 18px; }
.title-icon { display: inline-grid; place-items: center; }
.title-icon svg { width: 23px; height: 23px; }
.search-box > svg { width: 16px; height: 16px; color: var(--muted); flex: 0 0 auto; }
.icon-button svg { width: 17px; height: 17px; }
.profile-chevron { width: 14px; height: 14px; color: var(--muted); }
.card-icon svg, .stat-icon svg, .resource-icon svg { width: 17px; height: 17px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.btn svg { width: 14px; height: 14px; flex: 0 0 auto; }
.btn-icon { width: 34px; min-width: 34px; height: 34px; padding: 0; }
.btn-wide { width: 100%; margin-top: 12px; }
.inline-meta { display: inline-flex; align-items: center; gap: 6px; }
.inline-meta svg { width: 14px; height: 14px; }
.item-actions { display: flex; gap: 8px; align-items: center; }

/* Fonctionnalités interactives */
.hero-actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; justify-content: flex-end; }
.muted-text { color: var(--muted); }
.status-interview { color: var(--cyan); background: rgba(77,196,255,.11); border: 1px solid rgba(77,196,255,.16); }
.row-actions { display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.mini-action {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.035);
  color: #d9deea;
  display: inline-grid;
  place-items: center;
  cursor: pointer;
}
.mini-action:hover { background: rgba(255,255,255,.08); }
.mini-action.success { color: var(--green); border-color: rgba(82,219,138,.18); background: rgba(82,219,138,.06); }
.mini-action.danger { color: var(--accent); border-color: rgba(255,94,103,.18); background: rgba(255,94,103,.06); }
.mini-action svg { width: 14px; height: 14px; }
.resource-row:has(.row-actions) { grid-template-columns: minmax(130px,.9fr) minmax(160px,1.5fr) 90px 42px auto; }
.vote-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.btn-selected { color: #fff; border-color: rgba(255,94,103,.4); background: rgba(255,94,103,.16); }

.loading-panel,
.error-panel {
  min-height: 360px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: linear-gradient(145deg, var(--panel), rgba(11,15,23,.82));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  text-align: center;
  color: var(--muted);
}
.loading-panel strong,
.error-panel strong { color: var(--text); font-size: 16px; }
.loading-panel span,
.error-panel span { max-width: 520px; font-size: 12px; }
.error-panel > svg { color: var(--accent); }
.spin { animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.toast.error { border-color: rgba(255,94,103,.32); color: #ffd6d8; }

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: rgba(2,4,8,.72);
  backdrop-filter: blur(8px);
  display: grid;
  place-items: center;
  padding: 20px;
  opacity: 0;
  transition: opacity .15s ease;
}
.modal-backdrop[hidden] { display: none; }
.modal-backdrop.open { opacity: 1; }
.modal {
  width: min(680px, 100%);
  max-height: min(760px, calc(100vh - 40px));
  overflow: auto;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 20px;
  background: linear-gradient(145deg, rgba(20,25,36,.98), rgba(9,12,19,.98));
  box-shadow: 0 34px 100px rgba(0,0,0,.58);
  transform: translateY(10px) scale(.985);
  transition: transform .15s ease;
}
.modal-backdrop.open .modal { transform: translateY(0) scale(1); }
.modal-header {
  padding: 20px 20px 16px;
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
}
.modal-header h2 { margin: 0; font-size: 20px; letter-spacing: -.03em; }
.modal-header p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.modal-form {
  padding: 20px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 14px;
}
.form-field { display: grid; gap: 7px; }
.form-field-wide { grid-column: 1 / -1; }
.form-field > span { font-size: 11px; font-weight: 750; color: #cdd3df; }
.form-field input,
.form-field textarea,
.form-field select {
  width: 100%;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.035);
  color: var(--text);
  border-radius: 11px;
  outline: 0;
  padding: 11px 12px;
  font: inherit;
  font-size: 12px;
}
.form-field textarea { min-height: 118px; resize: vertical; }
.form-field input:focus,
.form-field textarea:focus,
.form-field select:focus { border-color: rgba(255,94,103,.42); box-shadow: 0 0 0 3px rgba(255,94,103,.08); }
.form-field select option { background: #151a25; color: white; }
.modal-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 9px;
  padding-top: 4px;
}
.modal-actions button:disabled { opacity: .55; cursor: wait; }

@media (max-width: 820px) {
  .hero-actions { width: 100%; justify-content: space-between; }
  .modal-form { grid-template-columns: 1fr; }
  .form-field-wide { grid-column: auto; }
  .resource-row:has(.row-actions) { grid-template-columns: 1fr; }
  .row-actions { justify-content: flex-start; }
  .item-actions { flex-wrap: wrap; justify-content: flex-end; }
  .code-pill { max-width: 100%; overflow-x: auto; }
}

/* Authentification — Discord + accès local temporaire */
body.auth-locked { overflow: hidden; }
.profile-copy { display: grid; text-align: left; line-height: 1.15; }
.profile-copy strong { font-size: 11px; color: var(--text); font-weight: 800; }
.profile-copy small { font-size: 9px; color: var(--muted); margin-top: 3px; }
.avatar-main.has-image { background-size: cover; background-position: center; color: transparent; }

.auth-backdrop {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(4, 5, 7, .9);
  backdrop-filter: blur(18px) saturate(.75);
  transition: opacity .2s ease, visibility .2s ease;
}
.auth-backdrop.hidden { opacity: 0; visibility: hidden; pointer-events: none; }

.auth-panel {
  width: min(430px, 100%);
  padding: 28px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,.10);
  background: linear-gradient(145deg, rgba(35,37,42,.985), rgba(22,24,28,.985));
  box-shadow: 0 30px 90px rgba(0,0,0,.55);
}

.auth-brand {
  display: flex;
  gap: 15px;
  align-items: center;
  margin-bottom: 24px;
}

.discord-brand-logo {
  width: 52px;
  height: 52px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 15px;
  border: 1px solid rgba(255,255,255,.10);
  background: #5865F2;
  color: #fff;
}
.discord-brand-logo svg { width: 27px; height: 27px; fill: currentColor; }

.auth-kicker {
  display: block;
  color: #9ca0a8;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 5px;
}
.auth-brand h1 { margin: 0; color: #f7f7f8; font-size: 23px; letter-spacing: -.03em; }
.auth-brand p { margin: 6px 0 0; color: #a6a9b0; font-size: 11px; line-height: 1.55; }

.discord-login {
  width: 100%;
  min-height: 50px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 12px;
  background: #5865F2;
  color: #fff;
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(0,0,0,.20);
  transition: background .16s ease, border-color .16s ease, transform .16s ease;
}
.discord-login:hover:not(:disabled) {
  transform: translateY(-1px);
  background: #4752c4;
  border-color: rgba(255,255,255,.22);
}
.discord-login:active:not(:disabled) { transform: translateY(0); background: #3c45a5; }
.discord-login:disabled { opacity: .42; cursor: not-allowed; }
.discord-button-logo { width: 20px; height: 20px; fill: currentColor; flex: 0 0 auto; }

.auth-message {
  margin-top: 14px;
  padding: 10px 12px;
  border-radius: 9px;
  background: rgba(255,255,255,.045);
  border: 1px solid rgba(255,255,255,.09);
  color: #d8d9dc;
  font-size: 10px;
  line-height: 1.45;
}
.auth-message.error {
  background: rgba(255,255,255,.045);
  border-color: rgba(255,255,255,.12);
  color: #ececee;
}

.auth-privacy {
  display: flex;
  gap: 9px;
  align-items: flex-start;
  margin-top: 17px;
  padding-top: 16px;
  border-top: 1px solid rgba(255,255,255,.075);
  color: #7f838b;
}
.auth-privacy svg { width: 15px; height: 15px; flex: 0 0 auto; margin-top: 1px; }
.auth-privacy p { margin: 0; font-size: 9px; line-height: 1.55; }

.account-panel-actions { display: grid; gap: 14px; }
.account-summary { display: flex; align-items: center; gap: 10px; padding: 12px; border-radius: 11px; border: 1px solid var(--border); background: rgba(255,255,255,.025); }
.account-summary strong { display: block; font-size: 11px; }
.account-summary small { display: block; color: var(--muted); font-size: 9px; margin-top: 3px; }
.btn-danger-soft { color: #ffc4c7; border-color: rgba(255,94,103,.22); background: rgba(255,94,103,.07); }
.btn-danger-soft:hover { background: rgba(255,94,103,.12); }

@media (max-width: 560px) {
  .auth-backdrop { padding: 12px; align-items: end; }
  .auth-panel { border-radius: 20px 20px 12px 12px; padding: 22px; }
  .auth-brand { align-items: flex-start; }
}


.auth-invite {
  width: 100%;
  margin-top: 10px;
  min-height: 42px;
  border-radius: 11px;
  border: 1px solid rgba(255,255,255,.11);
  background: rgba(255,255,255,.035);
  color: #d9dbe1;
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 10px;
  font-weight: 750;
}
.auth-invite:hover { background: rgba(255,255,255,.065); }
.auth-invite svg { width: 14px; height: 14px; }

.hero-status { margin-top: 11px; display: flex; gap: 8px; flex-wrap: wrap; }
.discord-member-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: #b9f4cf;
  border: 1px solid rgba(82,219,138,.18);
  background: rgba(82,219,138,.07);
  border-radius: 999px;
  padding: 8px 11px;
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}

.notification-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 4px;
}
.notification-list {
  display: grid;
  gap: 9px;
  max-height: min(56vh, 560px);
  overflow-y: auto;
  padding-right: 3px;
}
.notification-item {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  gap: 11px;
  align-items: flex-start;
  padding: 12px;
  border: 1px solid rgba(255,194,88,.18);
  border-radius: 12px;
  background: rgba(255,194,88,.055);
}
.notification-item.done {
  border-color: var(--border);
  background: rgba(255,255,255,.025);
  opacity: .68;
}
.notification-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  color: var(--yellow);
  background: rgba(255,194,88,.09);
}
.notification-copy strong { display: block; font-size: 11px; }
.notification-copy p { margin: 4px 0 5px; color: #c8ced8; font-size: 10px; line-height: 1.45; }
.notification-copy small { color: var(--muted); font-size: 8px; }
.notification-actions { display: flex; align-items: center; }
.empty-state.compact { padding: 20px 12px; }

@media (max-width: 640px) {
  .notification-item { grid-template-columns: 34px minmax(0,1fr); }
  .notification-actions { grid-column: 2; justify-content: flex-start; }
}

/* ======================================================
   PANEL STAFF - GESTION DES MEMBRES
   ====================================================== */

.btn-warning-soft {
  color: #ffd28a;
  border-color: rgba(255,188,84,.22);
  background: rgba(255,188,84,.07);
}
.btn-warning-soft:hover { background: rgba(255,188,84,.12); }

.member-admin-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.member-admin-stat {
  display: flex;
  align-items: center;
  gap: 11px;
  min-height: 76px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: rgba(255,255,255,.025);
}

.member-admin-stat > svg {
  width: 18px;
  height: 18px;
  color: #b9c2d1;
  flex: 0 0 auto;
}

.member-admin-stat strong {
  display: block;
  font-size: 21px;
  line-height: 1;
  letter-spacing: -.04em;
}

.member-admin-stat span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 9px;
}

.member-admin-list {
  display: grid;
  gap: 10px;
}

.member-admin-row {
  display: grid;
  grid-template-columns: minmax(220px, 1.15fr) minmax(180px, .85fr) minmax(380px, 1.55fr);
  gap: 14px;
  align-items: center;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: rgba(255,255,255,.022);
}

.member-admin-identity {
  display: flex;
  align-items: center;
  gap: 11px;
  min-width: 0;
}

.member-admin-avatar {
  width: 42px;
  height: 42px;
  border-radius: 13px;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  background: rgba(255,255,255,.07);
  background-position: center;
  background-size: cover;
  color: #d7dce5;
  font-size: 11px;
  font-weight: 850;
  border: 1px solid rgba(255,255,255,.07);
}

.member-admin-avatar.has-image {
  color: transparent;
}

.member-admin-name {
  min-width: 0;
}

.member-admin-name strong {
  display: block;
  font-size: 11px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.member-admin-name small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 9px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.member-admin-status {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
}

.member-role-badge {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 5px 8px;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 850;
  border: 1px solid rgba(255,255,255,.08);
}

.member-role-recruit {
  color: #c8ced9;
  background: rgba(200,206,217,.07);
}

.member-role-member {
  color: #8fc5ff;
  background: rgba(85,157,255,.09);
  border-color: rgba(85,157,255,.15);
}

.member-role-officer {
  color: #c7a5ff;
  background: rgba(154,103,255,.10);
  border-color: rgba(154,103,255,.16);
}

.member-role-leader {
  color: #ffd28a;
  background: rgba(255,188,84,.09);
  border-color: rgba(255,188,84,.16);
}

.member-admin-controls {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(120px, 1fr) auto;
  gap: 8px;
  align-items: end;
}

.member-admin-controls label {
  display: grid;
  gap: 5px;
}

.member-admin-controls label > span {
  color: var(--muted);
  font-size: 8px;
  font-weight: 700;
}

.member-admin-controls select {
  width: 100%;
  min-height: 35px;
  padding: 0 9px;
  border-radius: 9px;
  border: 1px solid var(--border);
  color: #e7eaf0;
  background: #111722;
  outline: none;
  font-size: 10px;
}

.member-admin-controls select:focus {
  border-color: rgba(132,151,185,.42);
}

.member-admin-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
  padding-top: 9px;
  border-top: 1px solid rgba(255,255,255,.045);
}

@media (max-width: 1250px) {
  .member-admin-row {
    grid-template-columns: minmax(220px, 1fr) minmax(160px, .7fr);
  }
  .member-admin-controls {
    grid-column: 1 / -1;
  }
}

@media (max-width: 820px) {
  .member-admin-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .member-admin-row { grid-template-columns: 1fr; }
  .member-admin-controls { grid-column: auto; grid-template-columns: 1fr; }
  .member-admin-actions { grid-column: auto; justify-content: stretch; }
  .member-admin-actions .btn { width: 100%; }
}


/* Accès temporaire local */
.dev-login-box {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,.075);
}
.auth-divider {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #8b8f97;
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 11px;
}
.auth-divider::before, .auth-divider::after {
  content: '';
  height: 1px;
  background: rgba(255,255,255,.08);
  flex: 1;
}
.dev-login-label {
  display: block;
  color: #b8bbc2;
  font-size: 9px;
  font-weight: 750;
  margin-bottom: 7px;
}
.dev-login-row { display: grid; grid-template-columns: 1fr auto; gap: 8px; }
.dev-login-input {
  min-width: 0;
  height: 44px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.11);
  background: rgba(255,255,255,.045);
  color: #f2f3f5;
  padding: 0 12px;
  outline: none;
  font: inherit;
  font-size: 11px;
}
.dev-login-input:focus { border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.06); }
.dev-login-button {
  min-width: 94px;
  height: 44px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.12);
  background: #3a3d43;
  color: #f2f3f5;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font: inherit;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
}
.dev-login-button:hover:not(:disabled) { background: #454950; }
.dev-login-button:disabled { opacity: .5; cursor: wait; }
.dev-login-button svg { width: 14px; height: 14px; }
.dev-login-hint { margin: 8px 0 0; color: #777b83; font-size: 8.5px; line-height: 1.45; }

/* ======================================================
   V2 — INTERFACE 100% SITE, PANELS ET OUTILS AVANCÉS
   ====================================================== */

/* Toasts enrichis */
.toast {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 250px;
  max-width: min(440px, calc(100vw - 32px));
  padding: 12px 15px;
}
.toast-icon { display: grid; place-items: center; color: var(--green); }
.toast.error .toast-icon { color: #ff8b91; }
.toast-message { line-height: 1.4; }

/* Modales */
.modal-wide { width: min(860px, 100%); }
.modal-danger { border-color: rgba(255,94,103,.24); }
.modal-heading { display: flex; gap: 12px; align-items: flex-start; }
.modal-heading-icon {
  width: 38px;
  height: 38px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  color: #d9deea;
  background: rgba(255,255,255,.055);
  border: 1px solid var(--border);
  flex: 0 0 auto;
}
.modal-danger .modal-heading-icon { color: #ffabb0; background: rgba(255,94,103,.08); border-color: rgba(255,94,103,.2); }
.btn-danger { background: rgba(255,94,103,.16); border-color: rgba(255,94,103,.32); color: #ffd7d9; }
.btn-danger:hover { background: rgba(255,94,103,.23); }
.btn-success-soft { color: #baf6d0; border-color: rgba(82,219,138,.22); background: rgba(82,219,138,.07); }
.btn-success-soft:hover { background: rgba(82,219,138,.12); }
.btn-ghost { background: transparent; border-color: transparent; color: var(--muted); }
.form-hint { color: var(--muted-2); font-size: 9px; line-height: 1.4; }
.confirm-box {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 15px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.confirm-box.danger { border-color: rgba(255,94,103,.18); background: rgba(255,94,103,.045); }
.confirm-symbol { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: rgba(255,255,255,.05); flex: 0 0 auto; }
.confirm-box.danger .confirm-symbol { color: #ff9fa5; background: rgba(255,94,103,.09); }
.confirm-box strong { display: block; font-size: 13px; }
.confirm-box p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }

/* Date picker maison — aucun input date natif */
.custom-date-field { position: relative; }
.date-picker-trigger {
  width: 100%;
  min-height: 54px;
  display: grid;
  grid-template-columns: 34px minmax(0,1fr) 18px;
  gap: 10px;
  align-items: center;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: rgba(255,255,255,.035);
  color: var(--text);
  padding: 8px 11px;
  cursor: pointer;
}
.date-picker-trigger:hover,
.date-picker-trigger:focus-visible { border-color: rgba(126,140,170,.42); background: rgba(255,255,255,.055); outline: none; }
.date-picker-trigger-icon { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; background: rgba(255,255,255,.05); color: #ccd4e2; }
.date-picker-trigger-copy { min-width: 0; }
.date-picker-trigger-copy strong { display: block; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.date-picker-trigger-copy small { display: block; color: var(--muted); font-size: 8px; margin-top: 3px; }
.date-picker-popover {
  position: absolute;
  z-index: 12;
  top: calc(100% - 1px);
  left: 0;
  width: min(340px, 90vw);
  padding-top: 8px;
}
.date-picker-popover[hidden] { display: none; }
.date-picker-panel {
  padding: 12px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  background: #111620;
  box-shadow: 0 22px 60px rgba(0,0,0,.56);
}
.date-picker-head { display: grid; grid-template-columns: 34px 1fr 34px; align-items: center; gap: 8px; margin-bottom: 9px; }
.date-picker-head strong { text-align: center; font-size: 11px; text-transform: capitalize; }
.date-picker-weekdays,
.date-picker-grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 4px; }
.date-picker-weekdays span { color: var(--muted-2); text-align: center; font-size: 8px; font-weight: 800; padding: 4px 0; }
.date-picker-day {
  aspect-ratio: 1;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: #d8dde7;
  cursor: pointer;
  font-size: 10px;
}
.date-picker-day:hover { background: rgba(255,255,255,.07); }
.date-picker-day.muted { color: #555e70; }
.date-picker-day.today { border-color: rgba(77,196,255,.32); color: #bceaff; }
.date-picker-day.selected { background: rgba(100,115,150,.28); border-color: rgba(174,187,218,.28); color: #fff; font-weight: 900; }
.date-picker-footer { display: flex; justify-content: space-between; gap: 6px; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--border); }

/* Dashboard enrichi */
.welcome-banner {
  margin-bottom: 14px;
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 20px 22px;
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: center;
  background:
    radial-gradient(circle at 90% 20%, rgba(77,196,255,.09), transparent 28%),
    radial-gradient(circle at 30% 0%, rgba(155,103,255,.07), transparent 34%),
    linear-gradient(135deg, rgba(25,31,44,.96), rgba(10,14,22,.92));
  box-shadow: var(--shadow);
}
.welcome-kicker, .eyebrow { display: inline-flex; align-items: center; gap: 6px; color: #aeb7c8; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .09em; }
.welcome-copy h2 { margin: 6px 0 0; font-size: 27px; letter-spacing: -.04em; }
.welcome-copy p { margin: 7px 0 0; color: var(--muted); font-size: 11px; }
.welcome-metrics { display: grid; grid-template-columns: repeat(4,minmax(78px,1fr)); gap: 8px; }
.welcome-metrics > div { min-width: 88px; padding: 11px 12px; border-radius: 12px; border: 1px solid var(--border); background: rgba(255,255,255,.025); }
.welcome-metrics strong { display: block; font-size: 20px; }
.welcome-metrics span { display: block; color: var(--muted); font-size: 8px; margin-top: 2px; }
.dashboard-grid-v2 { grid-template-columns: minmax(0,1.45fr) minmax(340px,.9fr); }
.quick-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.quick-action {
  border: 1px solid var(--border);
  background: rgba(255,255,255,.025);
  border-radius: 13px;
  padding: 11px;
  display: grid;
  grid-template-columns: 34px minmax(0,1fr) 16px;
  gap: 9px;
  align-items: center;
  text-align: left;
  cursor: pointer;
  transition: .16s ease;
}
.quick-action:hover { transform: translateY(-1px); border-color: rgba(255,255,255,.16); background: rgba(255,255,255,.05); }
.quick-action-icon { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: rgba(255,255,255,.05); color: #cbd3e1; }
.quick-action strong { display: block; font-size: 10px; }
.quick-action small { display: block; color: var(--muted); font-size: 8px; margin-top: 2px; line-height: 1.35; }
.quick-action.compact { width: 100%; }
.staff-shortcuts { display: grid; gap: 8px; }
.my-space-grid { display: grid; gap: 7px; }
.my-space-item { width: 100%; display: grid; grid-template-columns: 30px minmax(0,1fr) auto; align-items: center; gap: 9px; text-align: left; border: 1px solid var(--border); background: rgba(255,255,255,.022); border-radius: 11px; padding: 10px; cursor: pointer; }
.my-space-item:hover { background: rgba(255,255,255,.045); }
.my-space-item > span:first-child { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: rgba(255,255,255,.045); }
.my-space-item small { display:block; color:var(--muted); font-size:8px; }
.my-space-item strong { display:block; font-size:10px; margin-top:2px; }
.hero-rich { min-height: 132px; }
.hero-progress { width: min(430px, 60vw); height: 7px; background: rgba(255,255,255,.07); border-radius:999px; overflow:hidden; margin-top:13px; }
.hero-progress span { display:block; height:100%; background:linear-gradient(90deg,#4dc4ff,#9b67ff); border-radius:inherit; }
.hero-icon-big { color:#aeb7c8; opacity:.8; }

/* Filtres et listes */
.filter-bar { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 12px; }
.filter-chip { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--border); background:rgba(255,255,255,.02); color:var(--muted); padding:7px 9px; border-radius:999px; cursor:pointer; font-size:9px; font-weight:750; }
.filter-chip:hover { background:rgba(255,255,255,.05); color:#fff; }
.filter-chip.active { color:#fff; border-color:rgba(167,180,210,.28); background:rgba(120,136,170,.16); }
.filter-chip b { min-width:18px; height:18px; padding:0 5px; display:grid; place-items:center; border-radius:999px; background:rgba(255,255,255,.06); font-size:8px; }
.clickable-row { cursor:pointer; transition:.15s ease; }
.clickable-row:hover { border-color:rgba(255,255,255,.15); background:rgba(255,255,255,.045); transform:translateY(-1px); }
.empty-state.enhanced { display:grid; place-items:center; gap:7px; }
.empty-state.enhanced svg { color:#79849a; }
.empty-state.enhanced strong { color:#d9dee8; font-size:12px; }
.empty-state.enhanced span { max-width:360px; font-size:9px; line-height:1.5; }

/* Calendrier principal navigable */
.calendar-shell { display:grid; gap:9px; }
.calendar-toolbar { display:grid; grid-template-columns:34px 1fr auto; align-items:center; gap:8px; }
.calendar-toolbar > strong { text-align:center; text-transform:capitalize; font-size:10px; }
.calendar-toolbar-actions { display:flex; gap:6px; align-items:center; }
.calendar-today { border:0; background:transparent; color:var(--muted); cursor:pointer; font-size:8px; font-weight:800; }
.calendar-today:hover { color:#fff; }
.cal-day { border:0; background:transparent; cursor:pointer; padding:0; }
.cal-day:hover { background:rgba(255,255,255,.05); }
.cal-day > span:first-child { pointer-events:none; }

/* Ressources */
.resource-name > div { min-width:0; }
.resource-name strong { display:block; font-size:10px; }
.resource-name small { display:block; color:var(--muted); font-size:8px; margin-top:2px; }
.resource-complete { opacity:.78; }
.resource-complete .progress > span { background:linear-gradient(90deg,#3fbf77,#63df98); }
.resource-complete .resource-pct { color:var(--green); }
.progress.large { height:11px; }
.leaderboard { display:grid; gap:7px; }
.leaderboard-row { display:grid; grid-template-columns:24px 28px 1fr auto; align-items:center; gap:8px; padding:8px 9px; border:1px solid var(--border); border-radius:10px; background:rgba(255,255,255,.022); }
.leaderboard-row .rank { width:22px; height:22px; display:grid; place-items:center; border-radius:7px; background:rgba(255,255,255,.05); color:var(--muted); font-size:8px; font-weight:900; }
.leaderboard-row strong { font-size:9px; }
.leaderboard-row b { font-size:9px; color:#dce2ee; }
.resource-detail { display:grid; gap:16px; }
.resource-detail-progress { display:grid; grid-template-columns:minmax(0,1fr) 80px; gap:9px; align-items:center; padding:13px; border:1px solid var(--border); border-radius:13px; background:rgba(255,255,255,.022); }
.resource-detail-progress > div:first-child { grid-column:1/-1; display:flex; justify-content:space-between; gap:10px; }
.resource-detail-progress strong { font-size:12px; }
.resource-detail-progress span { color:var(--muted); font-size:9px; }
.resource-detail-progress b { text-align:right; font-size:15px; }
.detail-columns { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.detail-columns h4 { margin:0 0 8px; font-size:10px; color:#ccd3df; }
.contribution-history { display:grid; gap:6px; max-height:260px; overflow:auto; }
.contribution-history > div { display:grid; grid-template-columns:1fr auto; gap:3px 8px; padding:8px; border-bottom:1px solid var(--border); }
.contribution-history span { display:flex; align-items:center; gap:6px; }
.contribution-history strong,.contribution-history b { font-size:9px; }
.contribution-history small { grid-column:1/-1; color:var(--muted); font-size:7px; padding-left:34px; }
.avatar-xs { width:24px; height:24px; border-radius:7px; font-size:8px; }

/* Bibliothèques */
.library-grid,.texture-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.library-card,.texture-card { border:1px solid var(--border); border-radius:13px; padding:13px; background:rgba(255,255,255,.022); }
.library-card-top { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.library-index { color:#778195; font-size:9px; font-weight:900; }
.library-meta { color:var(--muted); font-size:8px; }
.library-card p { margin:13px 0; color:#d3d8e2; font-size:10px; line-height:1.55; min-height:46px; white-space:pre-wrap; }
.library-actions { display:flex; align-items:center; gap:7px; justify-content:flex-end; flex-wrap:wrap; }
.texture-card-head { display:flex; align-items:center; gap:9px; }
.texture-card-head strong { display:block; font-size:10px; }
.texture-card-head small { display:block; color:var(--muted); font-size:8px; margin-top:2px; }
.texture-card code { display:block; margin:12px 0; padding:10px; border-radius:10px; border:1px solid rgba(255,255,255,.07); background:rgba(4,7,12,.5); color:#d9c8b6; font-size:9px; line-height:1.45; white-space:pre-wrap; word-break:break-word; }

/* Détails */
.detail-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.detail-hero { grid-column:1/-1; display:flex; gap:10px; align-items:center; padding-bottom:11px; border-bottom:1px solid var(--border); }
.detail-hero h3 { margin:2px 0 5px; font-size:15px; }
.detail-hero small { color:var(--muted); font-size:8px; }
.detail-stat { padding:11px; border:1px solid var(--border); border-radius:11px; background:rgba(255,255,255,.022); }
.detail-stat span,.detail-note span { display:block; color:var(--muted); font-size:8px; margin-bottom:4px; }
.detail-stat strong { font-size:10px; }
.detail-note { grid-column:1/-1; padding:12px; border:1px solid var(--border); border-radius:11px; background:rgba(255,255,255,.022); }
.detail-note p { margin:0; color:#d6dbe4; font-size:10px; line-height:1.6; white-space:pre-wrap; }
.detail-actions,.status-action-grid { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.status-action-grid { grid-column:1/-1; padding-top:2px; }

/* Votes */
.vote-list-v2 { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.vote-wrapper .vote-card { padding:0; }

/* Journal staff */
.timeline { display:grid; gap:0; }
.timeline-item { display:grid; grid-template-columns:38px minmax(0,1fr) auto; gap:10px; align-items:start; padding:12px 4px; border-bottom:1px solid var(--border); }
.timeline-item:last-child { border-bottom:0; }
.timeline-icon { width:34px; height:34px; border-radius:10px; display:grid; place-items:center; background:rgba(255,255,255,.04); color:#b9c3d3; }
.timeline-copy strong { display:block; font-size:10px; }
.timeline-copy p { margin:3px 0; color:#b8c0cf; font-size:9px; line-height:1.45; }
.timeline-copy small { color:var(--muted); font-size:7px; }
.timeline-item code { color:#788298; font-size:7px; background:rgba(255,255,255,.025); padding:5px 7px; border-radius:7px; }

@media (max-width: 1100px) {
  .welcome-banner { align-items:flex-start; flex-direction:column; }
  .welcome-metrics { width:100%; }
  .dashboard-grid-v2 { grid-template-columns:1fr; }
  .library-grid,.texture-grid,.vote-list-v2 { grid-template-columns:1fr; }
}

@media (max-width: 700px) {
  .welcome-metrics { grid-template-columns:repeat(2,1fr); }
  .quick-actions { grid-template-columns:1fr; }
  .detail-grid { grid-template-columns:1fr; }
  .detail-hero,.detail-note { grid-column:auto; }
  .detail-columns { grid-template-columns:1fr; }
  .date-picker-popover { position:fixed; left:12px; right:12px; bottom:12px; top:auto; width:auto; z-index:140; }
  .date-picker-panel { border-radius:18px; }
  .timeline-item { grid-template-columns:34px minmax(0,1fr); }
  .timeline-item code { grid-column:2; justify-self:start; }
}
.feature-check-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.feature-check-grid > div { display:flex; align-items:center; gap:8px; padding:10px; border:1px solid var(--border); border-radius:10px; background:rgba(255,255,255,.022); color:#cfd5df; font-size:9px; }
.feature-check-grid svg { color:var(--green); }
@media (max-width:620px){ .feature-check-grid{grid-template-columns:1fr;} }
.form-field.field-invalid > input,
.form-field.field-invalid > textarea,
.form-field.field-invalid > select,
.form-field.field-invalid .date-picker-trigger { border-color: rgba(255,94,103,.5); box-shadow: 0 0 0 3px rgba(255,94,103,.08); }

/* ======================================================
   V3 — LISIBILITÉ, MODALES ROBUSTES, AUCUNE COLLISION
   ====================================================== */

:root {
  --radius: 20px;
  --content-max: 1640px;
}

body {
  font-size: 15px;
  line-height: 1.5;
  overflow-x: hidden;
}

button, input, textarea, select { font-size: 14px; }

.main {
  width: 100%;
  max-width: var(--content-max);
  margin: 0 auto;
  padding: 34px 38px 56px;
}

.topbar {
  align-items: center;
  margin-bottom: 30px;
}

h1 { font-size: clamp(30px, 2.6vw, 42px); }
.topbar p { font-size: 15px; line-height: 1.55; max-width: 860px; }
.live-pill { font-size: 12px; padding: 8px 12px; }
.search-box { height: 46px; width: min(360px, 31vw); }
.search-box input { font-size: 14px; }
.profile-button { height: 46px; }
.profile-copy strong { font-size: 13px; }
.profile-copy small { font-size: 11px; }

.nav { gap: 8px; }
.nav-item {
  min-height: 48px;
  padding: 13px 14px;
  font-size: 14px;
  font-weight: 650;
}
.sidebar-status strong { font-size: 14px; }
.sidebar-status span { font-size: 12px; }

.page-grid { gap: 18px; }
.page-grid.two { gap: 18px; }
.stack { gap: 18px; }
.card { overflow: visible; }
.card-header { padding: 21px 22px 16px; gap: 16px; }
.card-body { padding: 0 22px 22px; }
.card-title { font-size: 18px; }
.card-subtitle { font-size: 13px; line-height: 1.45; margin-top: 4px; }
.card-icon { width: 40px; height: 40px; border-radius: 12px; }
.hero-card { padding: 24px 26px; gap: 24px; min-height: 150px; }
.hero-card h2 { font-size: 28px; }
.hero-card p { font-size: 14px; line-height: 1.55; max-width: 760px; }
.hero-rich { min-height: 150px; }
.eyebrow, .welcome-kicker { font-size: 11px; }
.metric-big { font-size: 44px; }

.btn {
  min-height: 40px;
  padding: 10px 14px;
  border-radius: 11px;
  font-size: 13px;
  font-weight: 750;
  line-height: 1.15;
  white-space: nowrap;
}
.btn svg { width: 15px; height: 15px; }
.btn-row-open { min-width: 104px; }
.icon-button { width: 42px; height: 42px; }
.mini-action { width: 36px; height: 36px; border-radius: 10px; }
.mini-action svg { width: 16px; height: 16px; }

.status-badge {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 11px;
  font-size: 11px;
  line-height: 1;
}

.stats-grid { gap: 12px; }
.stat-tile { min-height: 118px; padding: 18px; }
.stat-value { font-size: 30px; }
.stat-label { font-size: 13px; }
.stat-note { font-size: 11px; line-height: 1.45; }

.week-grid { gap: 9px; }
.day-card { min-height: 150px; padding: 15px 11px; }
.day-name { font-size: 13px; }
.day-date { font-size: 11px; }
.day-number { font-size: 30px; }
.day-label { font-size: 11px; }
.week-footer { font-size: 12px; padding: 12px 14px; }

/* Demandes d'absence : structure robuste en 2 blocs, sans chevauchement */
.request-list { gap: 10px; }
.request-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  min-height: 88px;
  padding: 15px 16px;
  border-radius: 14px;
}
.request-main {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(220px, 1.2fr) minmax(260px, .8fr);
  align-items: center;
  gap: 18px;
}
.request-side {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: nowrap;
}
.user-cell { gap: 11px; min-width: 0; }
.user-cell .avatar { flex: 0 0 auto; }
.user-cell > div { min-width: 0; }
.user-cell strong { font-size: 14px; }
.user-cell small {
  font-size: 12px;
  line-height: 1.4;
  margin-top: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.date-cell { font-size: 13px; line-height: 1.45; }
.date-cell small { font-size: 11px; margin-top: 4px; }
.row-actions { gap: 8px; flex: 0 0 auto; }

/* Candidatures et listes */
.simple-list { gap: 10px; }
.simple-item {
  min-height: 78px;
  padding: 14px 16px;
  border-radius: 14px;
  gap: 16px;
}
.simple-item strong { font-size: 14px; }
.simple-item small { font-size: 12px; line-height: 1.45; margin-top: 4px; }
.item-actions { gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.filter-bar { gap: 8px; margin-bottom: 16px; }
.filter-chip { padding: 9px 12px; font-size: 12px; }
.filter-chip b { min-width: 20px; height: 20px; font-size: 10px; }

/* Calendrier page Absences */
.calendar-shell { gap: 12px; }
.calendar-toolbar { grid-template-columns: 40px 1fr auto; gap: 10px; }
.calendar-toolbar > strong { font-size: 14px; }
.calendar-today { font-size: 11px; padding: 8px 4px; }
.calendar { border-radius: 12px; }
.cal-head { min-height: 36px; font-size: 11px; }
.cal-day { min-height: 54px; font-size: 13px; }
.dot-row { bottom: 6px; gap: 3px; }
.dot-row i { width: 4px; height: 4px; }

/* Ressources */
.resource-list { gap: 12px; }
.resource-row { gap: 12px; padding: 5px 0; }
.resource-name strong { font-size: 13px; }
.resource-name small { font-size: 11px; }
.resource-qty, .resource-pct { font-size: 12px; }
.leaderboard { gap: 9px; }
.leaderboard-row { min-height: 48px; padding: 10px 12px; }
.leaderboard-row strong, .leaderboard-row b { font-size: 12px; }
.leaderboard-row .rank { font-size: 10px; }

/* Bibliothèques */
.library-grid, .texture-grid { gap: 14px; }
.library-card, .texture-card { padding: 17px; border-radius: 15px; }
.library-index { font-size: 11px; }
.library-meta { font-size: 11px; }
.library-card p { font-size: 13px; line-height: 1.6; }
.texture-card-head strong { font-size: 14px; }
.texture-card-head small { font-size: 11px; }
.texture-card code { font-size: 12px; line-height: 1.55; padding: 12px; }

/* Etats vides */
.empty-state { font-size: 13px; line-height: 1.55; }
.empty-state.enhanced { min-height: 150px; gap: 9px; }
.empty-state.enhanced strong { font-size: 15px; }
.empty-state.enhanced span { font-size: 12px; }

/* ======================================================
   MODALES V3 — GRANDES, LISIBLE, SANS ELEMENT QUI PASSE DESSUS
   ====================================================== */
.modal-backdrop {
  z-index: 1000;
  padding: 28px;
  background: rgba(2, 5, 10, .78);
  backdrop-filter: blur(12px);
}
.modal {
  width: min(760px, calc(100vw - 56px));
  max-height: min(880px, calc(100vh - 56px));
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border-radius: 22px;
  box-shadow: 0 34px 110px rgba(0,0,0,.68);
}
.modal-wide { width: min(960px, calc(100vw - 56px)); }
.modal-header {
  flex: 0 0 auto;
  padding: 24px 26px 20px;
  align-items: center;
  background: rgba(13,17,25,.98);
  position: relative;
  z-index: 6;
}
.modal-heading { gap: 14px; align-items: center; min-width: 0; }
.modal-heading > div:last-child { min-width: 0; }
.modal-heading-icon { width: 44px; height: 44px; border-radius: 13px; }
.modal-header h2 { font-size: 23px; line-height: 1.2; }
.modal-header p { font-size: 13px; line-height: 1.45; margin-top: 6px; }
.modal-form {
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 24px 26px 26px;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 18px;
  align-content: start;
}
.form-field { gap: 9px; min-width: 0; }
.form-field > span { font-size: 13px; }
.form-field input,
.form-field textarea,
.form-field select {
  min-height: 46px;
  padding: 12px 14px;
  font-size: 14px;
  border-radius: 12px;
}
.form-field textarea { min-height: 135px; line-height: 1.55; }
.form-hint { font-size: 11px; line-height: 1.45; }
.modal-actions {
  position: sticky;
  bottom: -26px;
  z-index: 5;
  margin: 8px -26px -26px;
  padding: 18px 26px 20px;
  background: linear-gradient(180deg, rgba(12,16,24,.86), #0c1018 34%);
  border-top: 1px solid var(--border);
  gap: 10px;
}
.modal-actions .btn { min-width: 120px; }

/* Confirmation */
.confirm-box {
  padding: 19px;
  gap: 15px;
  border-radius: 15px;
}
.confirm-symbol { width: 46px; height: 46px; border-radius: 13px; }
.confirm-box strong { font-size: 16px; line-height: 1.35; }
.confirm-box p { font-size: 13px; line-height: 1.55; margin-top: 7px; }

/* Date picker 100% intégré à la modale : il pousse le contenu au lieu de le chevaucher */
.custom-date-field { position: static; grid-column: 1 / -1; }
.date-picker-trigger {
  min-height: 64px;
  grid-template-columns: 40px minmax(0,1fr) 20px;
  gap: 12px;
  border-radius: 13px;
  padding: 10px 13px;
}
.date-picker-trigger-icon { width: 38px; height: 38px; border-radius: 10px; }
.date-picker-trigger-copy strong { font-size: 14px; }
.date-picker-trigger-copy small { font-size: 11px; margin-top: 4px; }
.date-picker-popover {
  position: static;
  width: 100%;
  padding-top: 10px;
  z-index: auto;
}
.date-picker-panel {
  padding: 16px;
  border-radius: 15px;
  box-shadow: none;
  background: rgba(7,11,17,.72);
}
.date-picker-head {
  grid-template-columns: 40px 1fr 40px;
  gap: 10px;
  margin-bottom: 12px;
}
.date-picker-head strong { font-size: 14px; }
.date-picker-weekdays, .date-picker-grid { gap: 6px; }
.date-picker-weekdays span { font-size: 10px; padding: 7px 0; }
.date-picker-day {
  min-height: 42px;
  aspect-ratio: auto;
  font-size: 13px;
  border-radius: 10px;
}
.date-picker-footer { margin-top: 12px; padding-top: 12px; }

/* Fiches détaillées */
.detail-grid { gap: 12px; }
.detail-hero { gap: 14px; padding-bottom: 15px; }
.detail-hero .avatar { width: 42px; height: 42px; }
.detail-hero h3 { font-size: 20px; margin: 3px 0 7px; }
.detail-hero small { font-size: 11px; }
.detail-stat { padding: 14px; border-radius: 12px; }
.detail-stat span, .detail-note span { font-size: 11px; margin-bottom: 6px; }
.detail-stat strong { font-size: 14px; }
.detail-note { padding: 15px; border-radius: 12px; }
.detail-note p { font-size: 14px; line-height: 1.6; }
.detail-actions, .status-action-grid { gap: 10px; }
.detail-actions { padding-top: 4px; }
.status-action-grid {
  padding: 15px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.absence-review-actions {
  display: grid;
  grid-template-columns: minmax(180px,1fr) auto;
  align-items: center;
  gap: 14px;
}
.review-copy strong { display: block; font-size: 14px; }
.review-copy span { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.review-buttons { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }

/* Votes */
.vote-question { font-size: 16px; line-height: 1.45; }
.vote-sub { font-size: 12px; }
.vote-legend { font-size: 11px; }
.vote-actions { gap: 9px; }

/* Dashboard */
.welcome-banner { padding: 24px 26px; gap: 28px; }
.welcome-copy h2 { font-size: 30px; }
.welcome-copy p { font-size: 14px; line-height: 1.55; }
.welcome-metrics strong { font-size: 25px; }
.welcome-metrics span { font-size: 11px; }
.quick-action { min-height: 64px; padding: 12px; }
.quick-action strong { font-size: 13px; }
.quick-action small { font-size: 11px; }
.my-space-item { min-height: 60px; padding: 12px; }
.my-space-item small { font-size: 11px; }
.my-space-item strong { font-size: 13px; }

/* Notifications */
.notification-copy strong { font-size: 14px; }
.notification-copy p { font-size: 12px; }
.notification-copy small { font-size: 10px; }

/* Gestion membres */
.member-admin-stat span { font-size: 11px; }
.member-admin-name strong { font-size: 14px; }
.member-admin-name small { font-size: 11px; }
.member-role-badge { min-height: 30px; padding: 6px 10px; font-size: 11px; }
.member-admin-controls label > span { font-size: 11px; }
.member-admin-controls select { min-height: 42px; font-size: 13px; }
.member-admin-row { padding: 16px; gap: 16px; }
.member-admin-actions { gap: 10px; padding-top: 12px; }

/* Journal */
.timeline-item { padding: 15px 5px; }
.timeline-copy strong { font-size: 13px; }
.timeline-copy p { font-size: 12px; line-height: 1.5; }
.timeline-copy small { font-size: 10px; }
.timeline-item code { font-size: 10px; }

/* Connexion locale / Discord */
.auth-panel { width: min(540px, calc(100vw - 32px)); padding: 28px; }
.auth-kicker { font-size: 11px; }
.auth-brand h1 { font-size: 26px; }
.auth-brand p, .auth-privacy p, .dev-login-hint { font-size: 12px; line-height: 1.55; }
.dev-login-label { font-size: 12px; }
.dev-login-input { height: 48px; font-size: 14px; }
.dev-login-button { height: 48px; font-size: 13px; }
.auth-divider { font-size: 10px; }
.auth-invite { font-size: 12px; }

/* Responsive sans collisions */
@media (max-width: 1280px) {
  .main { padding: 30px 28px 52px; }
  .request-main { grid-template-columns: minmax(200px, 1fr) minmax(220px, .8fr); gap: 14px; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .member-admin-row { grid-template-columns: minmax(220px, 1fr) minmax(180px, .75fr); }
  .member-admin-controls { grid-column: 1 / -1; }
}

@media (max-width: 980px) {
  .topbar { align-items: flex-start; flex-direction: column; }
  .topbar-actions { width: 100%; }
  .search-box { flex: 1; width: auto; }
  .request-row { align-items: start; }
  .request-main { grid-template-columns: 1fr; gap: 9px; }
  .request-side { align-self: center; }
  .date-cell { display: block; }
  .page-grid.two, .page-grid.three { grid-template-columns: 1fr; }
  .absence-review-actions { grid-template-columns: 1fr; }
  .review-buttons { justify-content: flex-start; }
}

@media (max-width: 820px) {
  .main { padding: 20px 14px 96px; }
  .topbar p { font-size: 13px; }
  .topbar-actions { flex-wrap: wrap; }
  .search-box { min-width: 100%; order: 2; }
  .request-row { grid-template-columns: 1fr; gap: 12px; }
  .request-side { justify-content: space-between; width: 100%; }
  .row-actions { margin-left: auto; }
  .simple-item { align-items: flex-start; flex-direction: column; }
  .item-actions { width: 100%; justify-content: space-between; }
  .week-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .modal-backdrop { padding: 12px; place-items: end center; }
  .modal, .modal-wide {
    width: 100%;
    max-height: calc(100vh - 24px);
    border-radius: 20px 20px 14px 14px;
  }
  .modal-header { padding: 19px 18px 16px; }
  .modal-form { grid-template-columns: 1fr; padding: 18px; gap: 15px; }
  .form-field-wide, .custom-date-field { grid-column: auto; }
  .modal-actions { margin: 6px -18px -18px; padding: 15px 18px 17px; }
  .modal-actions .btn { flex: 1; min-width: 0; }
  .date-picker-popover { position: static; left: auto; right: auto; bottom: auto; top: auto; width: 100%; }
  .date-picker-panel { border-radius: 14px; }
  .date-picker-day { min-height: 40px; }
  .detail-grid { grid-template-columns: 1fr; }
  .detail-hero, .detail-note { grid-column: auto; }
  .status-action-grid { grid-column: auto; }
  .library-grid, .texture-grid, .vote-list-v2 { grid-template-columns: 1fr; }
  .resource-row:has(.row-actions) { grid-template-columns: 1fr; padding: 11px 0; }
  .resource-row .row-actions { justify-content: flex-start; margin-left: 0; }
  .member-admin-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .member-admin-row, .member-admin-controls { grid-template-columns: 1fr; }
}

@media (max-width: 520px) {
  h1 { font-size: 29px; }
  .hero-card { padding: 20px; align-items: flex-start; flex-direction: column; }
  .hero-card h2 { font-size: 24px; }
  .hero-actions { width: 100%; justify-content: flex-start; }
  .stats-grid { grid-template-columns: 1fr; }
  .week-grid { grid-template-columns: 1fr; }
  .request-side { align-items: stretch; flex-direction: column; }
  .request-side .status-badge { align-self: flex-start; }
  .request-side .row-actions, .request-side .btn-row-open { width: 100%; margin-left: 0; }
  .modal-actions { flex-direction: column-reverse; }
  .modal-actions .btn { width: 100%; }
  .review-buttons { flex-direction: column; }
  .review-buttons .btn { width: 100%; }
  .date-picker-grid, .date-picker-weekdays { gap: 3px; }
  .date-picker-day { min-height: 38px; }
}

/* Derniers correctifs de lisibilité V3 */
.discord-login { min-height: 54px; font-size: 14px; }
.auth-message { font-size: 12px; line-height: 1.55; }
.account-summary { padding: 14px; }
.account-summary strong { font-size: 14px; }
.account-summary small { font-size: 11px; }
.resource-detail-progress span { font-size: 12px; }
.resource-detail-progress strong { font-size: 14px; }
.contribution-history strong, .contribution-history b { font-size: 12px; }
.contribution-history small { font-size: 10px; }
.avatar-sm { width: 26px; height: 26px; font-size: 10px; }
.avatar-xs { width: 26px; height: 26px; font-size: 10px; }
.feature-check-grid > div { font-size: 12px; }
.code-pill { font-size: 12px; }
.modal-actions { bottom: 0; }

/* Discord integration V4 */
.discord-config-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.discord-config-grid > div {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--border, rgba(255,255,255,.08));
  border-radius: 14px;
  background: rgba(255,255,255,.025);
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.discord-config-grid > div > span:first-child {
  font-size: 12px;
  font-weight: 750;
  color: var(--muted, #9aa3b2);
}
.discord-config-grid .status-badge {
  width: fit-content;
  gap: 6px;
}
.discord-config-meta {
  margin-top: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--muted, #9aa3b2);
}
.inline-error {
  margin-top: 12px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid rgba(239, 68, 68, .28);
  background: rgba(239, 68, 68, .08);
  font-size: 12px;
  line-height: 1.5;
}
@media (max-width: 1000px) {
  .discord-config-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px) {
  .discord-config-grid { grid-template-columns: 1fr; }
}

/* =========================
   V5 — lisibilité / collisions / nouveaux modules
   ========================= */
html { font-size: 16px; }
body { min-width: 320px; }
body:not(.authenticated) .app-shell { display: none !important; }
body.auth-locked { overflow: hidden; }
.main, .view-container, .card, .card-body, .stack, .page-grid, .dashboard-grid { min-width: 0; }
.view-container { padding-bottom: 28px; }
.card { overflow: hidden; }
.card-body { overflow: visible; }
.card-title { font-size: 1.02rem; }
.card-subtitle, .form-field small, .simple-item small, .request-row small, .library-meta, .member-admin-name small { font-size: .84rem; line-height: 1.45; }
.btn { min-height: 40px; padding: 9px 14px; font-size: .9rem; white-space: normal; line-height: 1.2; }
.btn-compact { min-height: 34px; padding: 7px 10px; font-size: .82rem; }
.mini-action { flex: 0 0 auto; }
input, select, textarea { font-size: .95rem !important; }
textarea { min-height: 116px; resize: vertical; }

.toast { z-index: 10050 !important; top: 20px !important; right: 20px !important; max-width: min(460px, calc(100vw - 32px)); box-shadow: 0 18px 55px rgba(0,0,0,.45); }
.modal-backdrop { z-index: 9000 !important; padding: 28px 18px !important; overflow-y: auto; align-items: flex-start !important; }
.modal { width: min(640px, 100%) !important; max-height: calc(100vh - 56px); margin: auto; overflow: hidden; }
.modal.modal-wide { width: min(840px, 100%) !important; }
.modal.modal-xl { width: min(1040px, 100%) !important; }
.modal-header { position: sticky; top: 0; z-index: 2; backdrop-filter: blur(16px); }
.modal-form { overflow-y: auto; max-height: calc(100vh - 190px); padding-bottom: 20px; }
.modal-actions { position: sticky; bottom: -20px; z-index: 3; margin-top: 10px; padding: 16px 0 4px; background: linear-gradient(180deg, transparent, rgba(10,14,22,.98) 24%); display:flex; gap:10px; justify-content:flex-end; }
.modal-inline-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding-top: 10px; }
.confirm-box { align-items: flex-start !important; }

.brand-mark.country-logo { background-size: cover !important; background-position: center !important; background-repeat: no-repeat !important; border: 1px solid rgba(255,255,255,.12); }
.brand-copy { min-width:0; }
.brand-title, .brand-subtitle { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sidebar-credit { padding: 12px 14px 4px; color: var(--muted, #8691a6); font-size: .75rem; text-align:center; }
.nav-separator { margin: 10px 10px 3px; padding: 10px 7px 5px; border-top: 1px solid rgba(255,255,255,.07); color: #6f7b90; text-transform: uppercase; letter-spacing: .12em; font-size: .66rem; }
.sidebar-status { flex-wrap: nowrap; }
.sidebar-status-copy { min-width:0; flex:1; }
.live-dot, .status-dot.live-dot { animation: livePulse 1.8s ease-in-out infinite; box-shadow: 0 0 0 0 rgba(74,222,128,.35), 0 0 16px rgba(74,222,128,.35); }
@keyframes livePulse { 0%,100%{transform:scale(.92);box-shadow:0 0 0 0 rgba(74,222,128,.32)}50%{transform:scale(1.08);box-shadow:0 0 0 7px rgba(74,222,128,0)} }
.notif b.pulse { display:block !important; animation: notifPulse 1.1s ease-in-out infinite; box-shadow: 0 0 0 0 rgba(239,68,68,.55); }
@keyframes notifPulse { 0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.4)}50%{transform:scale(1.35);box-shadow:0 0 0 6px rgba(239,68,68,0)} }
.main-footer { color:#68758b; text-align:center; font-size:.77rem; padding: 14px 10px 24px; }

.notice-banner { display:flex; gap:12px; align-items:flex-start; padding:16px 18px; border:1px solid rgba(255,255,255,.08); border-radius:16px; background:rgba(255,255,255,.035); }
.notice-banner strong { display:block; margin-bottom:4px; color:#e8edf6; }
.notice-banner span { color:#9ba7ba; line-height:1.5; }
.notice-banner.info { border-color: rgba(88,101,242,.28); background:rgba(88,101,242,.08); }
.notice-banner.danger { border-color: rgba(239,68,68,.28); background:rgba(239,68,68,.08); }

.dashboard-member-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(320px,.85fr); gap:18px; }
.member-welcome { display:flex; gap:18px; align-items:center; }
.member-welcome h2 { margin:0 0 6px; font-size:1.42rem; }
.member-welcome p { margin:0; color:#9ba7ba; line-height:1.55; }
.avatar-lg { width:58px; height:58px; font-size:1.05rem; }
.avatar-xl { width:72px; height:72px; font-size:1.15rem; }
.role-chip-row { display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
.news-mini-list { display:grid; gap:8px; }
.news-mini-list button { text-align:left; border:1px solid rgba(255,255,255,.07); background:rgba(255,255,255,.025); border-radius:12px; padding:12px 13px; color:inherit; cursor:pointer; }
.news-mini-list button:hover { background:rgba(255,255,255,.055); }
.news-mini-list strong,.news-mini-list span,.news-mini-list small { display:block; }
.news-mini-list span { color:#a3aec0; margin:4px 0; line-height:1.4; }
.news-mini-list small { color:#67758b; }
.staff-attention { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.staff-attention button { display:grid; gap:5px; text-align:left; border:1px solid rgba(255,255,255,.07); border-radius:13px; padding:13px; background:rgba(255,255,255,.025); color:inherit; cursor:pointer; }
.staff-attention strong { font-size:1.4rem; }
.staff-attention small { color:#8f9bae; }

.news-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.news-card { border:1px solid rgba(255,255,255,.075); border-radius:17px; background:rgba(255,255,255,.025); padding:18px; min-width:0; }
.news-card.important { border-color:rgba(245,165,68,.28); box-shadow:inset 3px 0 0 rgba(245,165,68,.75); }
.news-card-head { display:flex; justify-content:space-between; gap:18px; align-items:flex-start; }
.news-card h3 { margin:6px 0 0; font-size:1.15rem; }
.news-card p { color:#aab4c5; line-height:1.58; white-space:pre-wrap; overflow-wrap:anywhere; }
.news-card-foot { display:flex; justify-content:space-between; gap:10px; align-items:center; color:#748198; font-size:.8rem; }

.candidate-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.candidate-card { border:1px solid rgba(255,255,255,.075); border-radius:15px; background:rgba(255,255,255,.025); padding:15px; min-width:0; }
.candidate-head { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:10px; align-items:center; }
.candidate-head small { color:#8490a3; display:block; margin-top:2px; }
.candidate-card p { color:#a9b3c4; line-height:1.5; min-height:44px; }
.candidate-detail { display:grid; gap:12px; }
.candidate-detail > div { border:1px solid rgba(255,255,255,.07); border-radius:13px; padding:14px; }
.candidate-detail span { color:#7e8ba0; font-size:.79rem; }
.candidate-detail p { white-space:pre-wrap; margin:7px 0 0; line-height:1.6; overflow-wrap:anywhere; }

.resource-row { align-items:center !important; }
.resource-content { min-width:0; width:100%; }
.progress-track, .hero-progress { overflow:hidden !important; position:relative; }
.progress-track > span, .hero-progress > span { display:block; max-width:100% !important; min-width:0; }
.resource-batch { display:grid; gap:10px; }
.resource-batch-row { display:grid; grid-template-columns:minmax(180px,1.5fr) minmax(130px,.8fr) minmax(140px,.8fr) auto; gap:10px; align-items:end; border:1px solid rgba(255,255,255,.07); border-radius:14px; padding:12px; }
.resource-batch-row label { min-width:0; }
.resource-batch-row label span { display:block; color:#8d99ad; font-size:.78rem; margin-bottom:6px; }
.resource-batch-row input { width:100%; }

.account-hero-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; align-items:stretch; }
.account-link-row { display:flex; justify-content:space-between; align-items:center; gap:14px; padding:13px 14px; border:1px solid rgba(255,255,255,.07); border-radius:13px; }
.account-list { gap:8px; }
.discord-member-chip { display:inline-flex; align-items:center; gap:7px; border-radius:999px; padding:8px 11px; background:rgba(88,101,242,.12); color:#aeb6ff; }

.member-stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.member-stat-grid > div { border:1px solid rgba(255,255,255,.07); border-radius:15px; background:rgba(255,255,255,.025); padding:16px; }
.member-stat-grid strong { display:block; font-size:1.6rem; }
.member-stat-grid span { color:#8390a4; font-size:.8rem; }
.member-manager-list { display:grid; gap:10px; }
.member-manager-card { border:1px solid rgba(255,255,255,.075); border-radius:16px; background:rgba(255,255,255,.02); overflow:hidden; }
.member-manager-card > summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:15px; padding:14px 15px; cursor:pointer; }
.member-manager-card > summary::-webkit-details-marker { display:none; }
.member-summary-tags { display:flex; align-items:center; gap:7px; flex-wrap:wrap; justify-content:flex-end; }
.member-manager-body { border-top:1px solid rgba(255,255,255,.07); padding:16px; display:grid; gap:16px; }
.member-control-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.permission-section { display:grid; gap:9px; }
.section-label { font-weight:700; }
.section-help { margin:0; color:#7e8ba0; font-size:.8rem; line-height:1.45; }
.check-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.check-tile { display:flex; align-items:center; gap:8px; min-height:42px; border:1px solid rgba(255,255,255,.07); border-radius:11px; padding:9px 10px; background:rgba(255,255,255,.02); cursor:pointer; }
.check-tile input { width:16px; height:16px; accent-color:#5865F2; flex:0 0 auto; }
.check-tile span { min-width:0; overflow-wrap:anywhere; }
.member-manager-actions { display:flex; flex-wrap:wrap; gap:9px; }

.voice-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.voice-card { border:1px solid rgba(255,255,255,.075); border-radius:16px; padding:15px; background:rgba(255,255,255,.025); }
.voice-head { display:flex; align-items:center; gap:10px; }
.voice-head > div { flex:1; min-width:0; }
.voice-head small { display:block; color:#7e8ba0; margin-top:2px; }
.voice-members { display:grid; gap:7px; margin-top:12px; }
.voice-members > div { display:flex; align-items:center; gap:9px; padding:7px 8px; border-radius:10px; background:rgba(255,255,255,.025); }
.discord-tools { display:flex; flex-wrap:wrap; gap:9px; }

.profile-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:13px; }
.profile-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:13px; align-items:center; text-align:left; border:1px solid rgba(255,255,255,.075); border-radius:16px; background:rgba(255,255,255,.025); color:inherit; padding:14px; cursor:pointer; }
.profile-card:hover { transform:translateY(-1px); background:rgba(255,255,255,.045); }
.profile-card strong,.profile-card small { display:block; }
.profile-card small { color:#7f8b9e; margin-top:3px; }
.profile-detail-head { display:flex; align-items:center; gap:16px; margin-bottom:16px; }
.profile-detail-head h3 { margin:0; font-size:1.35rem; }

.help-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.help-topic { text-align:left; border:1px solid rgba(255,255,255,.075); border-radius:15px; background:rgba(255,255,255,.025); color:inherit; padding:15px; cursor:pointer; }
.help-topic:hover { background:rgba(255,255,255,.045); }
.help-topic strong { display:block; margin:8px 0 6px; font-size:1rem; }
.help-topic p { margin:0 0 10px; color:#9ea9bb; line-height:1.5; }
.help-topic small { color:#748198; }
.help-category { display:inline-flex; border-radius:999px; background:rgba(88,101,242,.12); color:#aeb6ff; padding:4px 8px; font-size:.72rem; }
.help-content { border:1px solid rgba(255,255,255,.07); border-radius:14px; padding:16px; }
.help-content p { white-space:pre-wrap; line-height:1.65; margin:0; }
.help-replies { display:grid; gap:8px; }
.help-reply { border-left:2px solid rgba(88,101,242,.5); padding:10px 12px; background:rgba(255,255,255,.02); border-radius:0 10px 10px 0; }
.help-reply p { white-space:pre-wrap; margin:5px 0; color:#a7b1c2; }
.help-reply small { color:#6e7a8f; }

.territory-wrap { border:1px solid rgba(255,255,255,.08); border-radius:20px; padding:18px; background-color:#0d1320; background-size:cover; background-position:center; overflow:auto; }
.territory-grid { display:grid; grid-template-columns:repeat(10,minmax(70px,1fr)); gap:5px; min-width:760px; }
.territory-chunk { min-height:72px; border:1px solid rgba(255,255,255,.09); border-radius:9px; background:rgba(8,13,22,.72); color:#aab5c6; cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; }
.territory-chunk:hover { background:rgba(88,101,242,.16); border-color:rgba(88,101,242,.4); }
.territory-chunk.assigned { background:rgba(61,139,212,.2); border-color:rgba(61,139,212,.52); color:#e5f1ff; }
.territory-chunk small { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.68rem; }

.notification-toolbar { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.notification-list { display:grid; gap:9px; }
.notification-item { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:start; border:1px solid rgba(255,255,255,.075); border-radius:14px; padding:13px; background:rgba(255,255,255,.025); }
.notification-item.done { opacity:.63; }
.notification-copy p { margin:5px 0; color:#9da8ba; line-height:1.45; }
.notification-copy small { color:#6d798d; }
.notification-actions { display:flex; align-items:center; gap:6px; }

.checkbox-field { border:0; padding:0; margin:0; }
.checkbox-field legend { color:#d9dfeb; font-weight:600; margin-bottom:8px; }
.date-picker-slot { grid-column:1/-1; }
.date-picker-panel { position:static !important; width:100% !important; margin-top:8px; box-shadow:none !important; }

.auth-backdrop { z-index: 12000 !important; }
.auth-panel { max-width: 520px; }

@media (max-width: 1180px) {
  .dashboard-member-grid,.dashboard-grid,.page-grid.two,.account-hero-grid { grid-template-columns:1fr !important; }
  .profile-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .news-grid,.voice-grid,.help-grid { grid-template-columns:1fr; }
  .check-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .member-stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
  html { font-size:15px; }
  .topbar { align-items:flex-start; }
  .topbar-actions { width:100%; flex-wrap:wrap; }
  .search-box { order:3; width:100%; }
  .profile-copy { display:none; }
  .profile-grid,.candidate-grid { grid-template-columns:1fr; }
  .member-control-grid,.check-grid { grid-template-columns:1fr; }
  .member-manager-card > summary { align-items:flex-start; }
  .member-summary-tags { max-width:48%; }
  .resource-batch-row { grid-template-columns:1fr 1fr; }
  .resource-batch-row > label:first-child { grid-column:1/-1; }
  .notification-item { grid-template-columns:auto minmax(0,1fr); }
  .notification-actions { grid-column:2; justify-content:flex-start; }
  .modal-backdrop { padding:10px !important; }
  .modal { max-height:calc(100vh - 20px); }
  .modal-form { max-height:calc(100vh - 160px); }
  .staff-attention { grid-template-columns:1fr; }
}

/* ========================================================================== */
/* V6 — couche canonique d'interface                                          */
/* ========================================================================== */

:root {
  --v6-surface: #0c111b;
  --v6-surface-2: #111827;
  --v6-surface-3: #171f30;
  --v6-border: rgba(255,255,255,.085);
  --v6-muted: #94a0b5;
  --v6-danger: #ff6673;
  --v6-danger-bg: rgba(255,72,88,.12);
  --v6-discord: #5865f2;
}

[hidden] { display: none !important; }
html, body { width: 100%; height: 100%; overflow: hidden; }
body { min-height: 100%; overscroll-behavior: none; }
body.auth-locked .app-shell { visibility: hidden; pointer-events: none; }
body.authenticated .app-shell { visibility: visible; }
body.modal-open .main { overflow: hidden; }

.app-shell {
  height: 100dvh;
  min-height: 0 !important;
  overflow: hidden;
}
.sidebar {
  height: 100dvh !important;
  min-height: 0;
  overflow: hidden;
}
.sidebar .nav {
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 3px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.14) transparent;
}
.sidebar .nav::-webkit-scrollbar { width: 5px; }
.sidebar .nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.14); border-radius: 999px; }
.sidebar-credit { flex: 0 0 auto; }
.main {
  height: 100dvh;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding-bottom: 28px !important;
}
.view-container { min-height: 0 !important; padding-bottom: 6px; }
.main-footer { margin: 22px 0 0; padding: 15px 2px 4px; color: #68758a; font-size: .78rem; }

/* Lisibilité globale */
body { font-size: 16px; line-height: 1.45; }
.nav-item { min-height: 45px; font-size: .91rem; }
.brand-subtitle { font-size: .77rem; }
.topbar p { font-size: .91rem; }
.card-title { font-size: 1rem; }
.card-subtitle { font-size: .78rem; line-height: 1.4; }
.card-body { font-size: .91rem; }
.btn {
  min-height: 39px;
  padding: 9px 13px;
  font-size: .84rem;
  line-height: 1.1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  max-width: 100%;
  white-space: normal;
  text-align: center;
}
.btn span { min-width: 0; overflow-wrap: anywhere; }
.btn-compact { min-height: 34px; padding: 7px 10px; font-size: .78rem; }
.simple-item strong, .user-cell strong { font-size: .9rem; }
.simple-item small, .user-cell small, .date-cell small { font-size: .76rem; line-height: 1.35; }
.date-cell { font-size: .83rem; }
.status-badge { font-size: .74rem; padding: 5px 8px; }

/* Les animations d'état doivent rester discrètes et fluides */
.live-dot, .status-dot.live-dot {
  animation: v6LivePulse 3.4s cubic-bezier(.4,0,.2,1) infinite !important;
  transform-origin: center;
}
.notif b.pulse { animation: v6NotifPulse 2.1s cubic-bezier(.4,0,.2,1) infinite !important; }
.notif-pop { animation: v6BellPop .72s cubic-bezier(.2,.8,.2,1) 1; }
@keyframes v6LivePulse {
  0%,100% { opacity:.72; box-shadow:0 0 7px rgba(82,219,138,.42); transform:scale(.92); }
  50% { opacity:1; box-shadow:0 0 18px rgba(82,219,138,.78); transform:scale(1.08); }
}
@keyframes v6NotifPulse {
  0%,100% { transform:scale(.9); box-shadow:0 0 0 0 rgba(255,94,103,.42); }
  50% { transform:scale(1.08); box-shadow:0 0 0 6px rgba(255,94,103,0); }
}
@keyframes v6BellPop {
  0%,100% { transform:rotate(0) scale(1); }
  25% { transform:rotate(-8deg) scale(1.08); }
  55% { transform:rotate(8deg) scale(1.08); }
}

/* Toasts compacts, jamais plein écran */
.toast {
  position: fixed !important;
  top: 22px !important;
  right: 22px !important;
  bottom: auto !important;
  left: auto !important;
  width: min(410px, calc(100vw - 32px)) !important;
  min-height: 50px;
  max-height: 160px !important;
  padding: 12px 14px !important;
  border-radius: 14px !important;
  display: grid !important;
  grid-template-columns: 24px minmax(0,1fr);
  align-items: center;
  gap: 10px;
  background: rgba(18,24,35,.97) !important;
  border: 1px solid rgba(255,255,255,.1) !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.4) !important;
  font-size: .86rem !important;
  line-height: 1.35;
  opacity: 0;
  transform: translateY(-10px) scale(.98) !important;
  transition: opacity .2s ease, transform .25s cubic-bezier(.2,.8,.2,1) !important;
  overflow: hidden;
  z-index: 20000 !important;
}
.toast.show { opacity: 1 !important; transform: translateY(0) scale(1) !important; }
.toast.error { background: rgba(42,15,21,.98) !important; border-color: rgba(255,102,115,.38) !important; }
.toast.error .toast-icon { color: var(--v6-danger); }
.toast.success .toast-icon { color: #62dda0; }
.toast-message { min-width: 0; overflow-wrap: anywhere; }
.inline-error {
  min-height: 0 !important;
  height: auto !important;
  width: 100%;
  display: grid !important;
  grid-template-columns: 38px minmax(0,1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 13px 14px !important;
  margin: 0 !important;
  border-radius: 14px;
  border: 1px solid rgba(255,102,115,.28);
  background: var(--v6-danger-bg);
  color: #ffd8dc;
}
.inline-error-icon { width: 36px; height: 36px; display:grid; place-items:center; border-radius:10px; color:var(--v6-danger); background:rgba(255,102,115,.1); }
.inline-error strong { display:block; font-size:.9rem; }
.inline-error span { display:block; margin-top:2px; color:#d8aeb4; font-size:.79rem; line-height:1.35; overflow-wrap:anywhere; }

/* Modales : grande zone lisible + actions toujours bien rangées */
.modal-backdrop {
  position: fixed !important;
  inset: 0 !important;
  display: grid !important;
  place-items: center !important;
  padding: 22px !important;
  overflow: hidden !important;
  background: rgba(3,6,11,.74) !important;
  backdrop-filter: blur(9px) !important;
  z-index: 15000 !important;
}
.modal-backdrop[hidden] { display:none !important; }
.modal {
  width: min(720px, 100%) !important;
  max-height: min(88dvh, 900px) !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  border: 1px solid rgba(255,255,255,.1) !important;
  border-radius: 20px !important;
  background: #0d131e !important;
  box-shadow: 0 28px 90px rgba(0,0,0,.56) !important;
}
.modal.modal-wide { width:min(900px,100%) !important; }
.modal.modal-xl { width:min(1120px,100%) !important; }
.modal-header {
  flex: 0 0 auto;
  padding: 18px 20px !important;
  border-bottom: 1px solid rgba(255,255,255,.075);
  background: #101723;
}
.modal-heading { min-width:0; }
.modal-heading h2 { margin:0; font-size:1.18rem; line-height:1.2; overflow-wrap:anywhere; }
.modal-heading p { margin:4px 0 0; color:#8f9bb0; font-size:.8rem; }
.modal-form {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  padding: 0 !important;
}
.modal-content-grid {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  align-content: start;
  gap: 14px;
  padding: 18px 20px 20px;
  scrollbar-gutter: stable;
}
.modal-content-grid > * { min-width: 0; }
.modal-actions {
  flex: 0 0 auto;
  width: 100%;
  display: flex !important;
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px;
  padding: 14px 20px calc(14px + env(safe-area-inset-bottom));
  border-top: 1px solid rgba(255,255,255,.075);
  background: #101723;
  z-index: 2;
}
.modal-actions .btn { min-width: 112px; flex: 0 1 auto; }
.form-field, .checkbox-field, .custom-date-field { min-width:0; }
.form-field-wide, .confirm-box, .date-picker-slot { grid-column: 1 / -1 !important; }
.form-field > span, .custom-date-field > span, .checkbox-field legend { font-size:.82rem; color:#dce3ee; font-weight:700; }
.form-field input, .form-field textarea, .form-field select {
  width: 100%;
  min-width:0;
  min-height: 43px;
  border-radius: 11px !important;
  font-size: .88rem !important;
  line-height: 1.35;
}
.form-field textarea { min-height: 120px; resize: vertical; }
.form-field small, .custom-date-field > small, .checkbox-field > small { font-size:.74rem; line-height:1.35; color:#7f8ba0; }
.confirm-box { min-height: 82px; align-items:flex-start; }
.confirm-box strong { font-size:.92rem; }
.confirm-box p { margin:5px 0 0; font-size:.8rem; color:#9eabbf; line-height:1.45; }

/* Calendriers */
.calendar-v6, .date-picker-panel {
  width:100%;
  min-width:0;
  border:1px solid rgba(255,255,255,.085);
  border-radius:15px;
  background:#0d141f;
  overflow:hidden;
}
.calendar-toolbar, .date-picker-head {
  min-height: 48px;
  padding: 9px 11px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.calendar-toolbar > strong, .date-picker-head > strong { text-align:center; text-transform:capitalize; font-size:.9rem; }
.calendar-toolbar-actions { display:flex; align-items:center; gap:7px; }
.calendar-head, .date-picker-weekdays, .calendar-grid, .date-picker-grid {
  display:grid !important;
  grid-template-columns:repeat(7,minmax(0,1fr)) !important;
}
.calendar-head, .date-picker-weekdays { padding:8px 8px 5px; color:#77859b; font-size:.68rem; font-weight:800; text-align:center; }
.calendar-grid, .date-picker-grid { gap:4px; padding:5px 8px 10px; }
.calendar-cell, .date-picker-day {
  aspect-ratio: 1.12 / 1;
  min-width:0;
  min-height:38px;
  border:1px solid transparent;
  border-radius:9px;
  background:transparent;
  color:#cbd3df;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  position:relative;
  font-size:.79rem;
}
.calendar-cell:hover, .date-picker-day:hover { background:rgba(255,255,255,.055); border-color:rgba(255,255,255,.075); }
.calendar-cell.muted, .date-picker-day.muted { opacity:.34; }
.calendar-cell.today, .date-picker-day.today { border-color:rgba(88,101,242,.55); color:#fff; }
.calendar-cell.has-absence { background:rgba(255,102,115,.09); color:#ffd4d9; }
.calendar-cell b { position:absolute; right:4px; bottom:3px; min-width:15px; height:15px; padding:0 3px; display:grid; place-items:center; border-radius:99px; background:rgba(255,102,115,.18); color:#ff98a2; font-size:.58rem; }
.date-picker-day.selected { background:var(--v6-discord); color:#fff; border-color:var(--v6-discord); box-shadow:0 5px 15px rgba(88,101,242,.25); }
.date-picker-trigger {
  width:100%; min-height:48px; min-width:0;
  display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:9px;
  border:1px solid rgba(255,255,255,.09); border-radius:11px; padding:7px 10px;
  background:#0a1019; color:#fff; cursor:pointer; text-align:left;
}
.date-picker-trigger-copy { min-width:0; }
.date-picker-trigger-copy strong,.date-picker-trigger-copy small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.date-picker-trigger-copy strong { font-size:.85rem; }
.date-picker-trigger-copy small { color:#78869a; font-size:.69rem; margin-top:2px; }
.date-picker-panel { position:static !important; margin-top:8px; box-shadow:none !important; }
.date-picker-footer { display:flex; justify-content:flex-end; gap:8px; padding:9px 11px 11px; border-top:1px solid rgba(255,255,255,.06); }

/* Cartes et listes sensibles aux collisions */
.request-row { grid-template-columns:minmax(0,1fr) auto !important; gap:12px !important; padding:13px 14px !important; }
.request-main { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) minmax(170px,.45fr); gap:12px; align-items:center; }
.request-side { display:flex; align-items:center; gap:8px; }
.user-cell, .user-cell > div, .resource-content { min-width:0; }
.user-cell small { white-space:normal !important; overflow-wrap:anywhere; }
.item-actions, .library-actions, .member-manager-actions, .settings-actions { display:flex; align-items:center; flex-wrap:wrap; gap:7px; min-width:0; }
.resource-row {
  display:grid !important;
  grid-template-columns:36px minmax(0,1fr) auto !important;
  gap:12px !important;
  align-items:center !important;
  padding:12px 0;
}
.resource-row + .resource-row { border-top:1px solid rgba(255,255,255,.06); }
.resource-line { display:flex; justify-content:space-between; gap:12px; align-items:baseline; min-width:0; }
.resource-line strong { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.resource-line span { flex:0 0 auto; color:#a9b3c3; font-size:.78rem; }
.progress-track, .hero-progress { width:100% !important; height:9px; border-radius:999px; background:rgba(255,255,255,.075); overflow:hidden !important; }
.progress-track > span, .hero-progress > span { height:100%; max-width:100% !important; border-radius:inherit; background:linear-gradient(90deg,#5865f2,#7a87ff); }
.resource-content > small { display:block; margin-top:5px; color:#7f8ca0; font-size:.73rem; }

/* Navigation admin et sécurité visuelle */
.nav-separator { margin:9px 9px 3px; color:#5f6b80; font-size:.63rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.admin-nav { background:rgba(255,255,255,.012); }

/* Administration */
.admin-health-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.admin-health { min-width:0; display:flex; align-items:center; gap:10px; padding:14px; border:1px solid rgba(255,255,255,.075); border-radius:14px; background:rgba(255,255,255,.025); }
.admin-health > span { width:34px; height:34px; display:grid; place-items:center; border-radius:10px; flex:0 0 auto; }
.admin-health strong,.admin-health small { display:block; }
.admin-health strong { font-size:.84rem; overflow-wrap:anywhere; }
.admin-health small { margin-top:2px; color:#7f8ba0; font-size:.72rem; }
.admin-health.ok > span { color:#5ddc96; background:rgba(82,219,138,.09); }
.admin-health.warn > span { color:#ffbf66; background:rgba(255,194,88,.09); }

/* Discord */
.discord-combo-icon { position:relative; width:28px; height:26px; display:grid !important; place-items:center; }
.discord-mini-logo { width:20px; height:20px; fill:#8791ff; opacity:.95; }
.discord-combo-icon > svg[data-lucide] { position:absolute; right:-3px; bottom:-2px; width:12px; height:12px; padding:2px; border-radius:99px; background:#101622; color:#fff; }
.discord-hero { display:grid; grid-template-columns:56px 34px minmax(0,1fr); align-items:center; gap:11px; padding:18px; border-radius:18px; border:1px solid rgba(88,101,242,.22); background:linear-gradient(135deg,rgba(88,101,242,.16),rgba(14,19,30,.9)); }
.discord-page-logo { width:54px; height:54px; fill:#7b86ff; }
.discord-headset { width:34px; height:34px; border-radius:11px; display:grid; place-items:center; background:rgba(88,101,242,.15); color:#c4c9ff; }
.discord-hero h2 { margin:2px 0 3px; font-size:1.35rem; }
.discord-hero p { margin:0; color:#929db0; font-size:.8rem; }
.voice-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.voice-card { min-width:0; }
.voice-head { min-width:0; }
.voice-head strong { overflow-wrap:anywhere; }
.voice-members > div { min-width:0; }
.voice-members span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.discord-open-btn { flex:0 0 auto; }

/* Aide débutant */
.help-empty-center { min-height:260px; display:grid; place-items:center; }
.help-empty-center .empty-state { width:min(480px,100%); }
.help-grid-v6 { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
.help-topic-v6 { padding:0 !important; overflow:hidden; display:flex; flex-direction:column; min-height:310px; }
.help-cover { width:100%; aspect-ratio:16/8.6; display:grid; place-items:center; background-size:cover; background-position:center; border-bottom:1px solid rgba(255,255,255,.07); }
.help-cover.placeholder { color:#738097; background:linear-gradient(135deg,#111927,#0b111c); }
.help-topic-body { display:flex; flex-direction:column; align-items:flex-start; min-width:0; padding:15px; flex:1; }
.help-topic-body strong { font-size:1rem; line-height:1.3; }
.help-topic-body p { flex:1; width:100%; font-size:.8rem; line-height:1.5; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.help-topic-body small { margin-top:auto; }
.help-guide-hero { width:100%; max-height:320px; object-fit:cover; border-radius:14px; border:1px solid rgba(255,255,255,.08); }

/* Banque */
.trophy-note { border-color:rgba(255,194,88,.22) !important; background:rgba(255,194,88,.06) !important; }
.leaderboard { display:grid; gap:7px; }
.leaderboard-row { display:grid; grid-template-columns:32px 30px minmax(0,1fr) auto; align-items:center; gap:8px; padding:9px 10px; border-radius:11px; background:rgba(255,255,255,.025); }
.leaderboard-row .rank { width:27px; height:27px; display:grid; place-items:center; border-radius:9px; background:rgba(255,194,88,.09); color:#ffc865; font-weight:900; font-size:.78rem; }
.leaderboard-row b { color:#e7edf7; font-size:.82rem; }

/* Country info */
.country-info-page { display:grid; gap:14px; }
.country-info-hero { min-height:320px; max-height:480px; position:relative; overflow:hidden; border-radius:20px; border:1px solid rgba(255,255,255,.08); background:#111827; }
.country-info-hero img { width:100%; height:100%; min-height:320px; object-fit:cover; display:block; }
.country-info-hero-shade { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:flex-end; padding:28px; background:linear-gradient(180deg,transparent 16%,rgba(5,8,13,.88) 92%); }
.country-info-hero.no-image .country-info-hero-shade { position:relative; min-height:320px; background:radial-gradient(circle at 80% 10%,rgba(88,101,242,.22),transparent 32%),linear-gradient(145deg,#151d2d,#0c111b); }
.country-info-hero h2 { margin:4px 0 6px; font-size:clamp(1.8rem,4vw,3rem); }
.country-info-hero p { max-width:760px; margin:0; color:#c1cad8; font-size:.96rem; }
.rich-copy { white-space:normal; line-height:1.75; font-size:.93rem; color:#c2cbd8; }
.country-info-admin { margin-top:18px; }

/* Image upload */
.image-upload-box { min-height:84px; width:100%; display:flex; align-items:center; gap:12px; padding:14px; border:1px dashed rgba(255,255,255,.16); border-radius:13px; background:rgba(255,255,255,.022); cursor:pointer; }
.image-upload-box input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.image-upload-icon { width:42px; height:42px; display:grid; place-items:center; border-radius:11px; background:rgba(88,101,242,.11); color:#98a1ff; flex:0 0 auto; }
.image-upload-box strong,.image-upload-box small { display:block; }
.image-upload-box small { color:#7f8ba0; margin-top:3px; }
.image-preview { margin-top:8px; width:100%; min-height:0; border-radius:12px; background-size:cover; background-position:center; }
.image-preview.has-image { min-height:210px; border:1px solid rgba(255,255,255,.08); }

/* Objectifs staff */
.objective-board { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:start; }
.objective-column { min-width:0; padding:11px; border:1px solid rgba(255,255,255,.07); border-radius:16px; background:rgba(255,255,255,.018); }
.objective-column > header { display:flex; justify-content:space-between; align-items:center; padding:2px 3px 10px; color:#cdd5e0; font-size:.82rem; font-weight:800; }
.objective-column > header b { min-width:24px; height:24px; display:grid; place-items:center; border-radius:999px; background:rgba(255,255,255,.055); font-size:.7rem; }
.objective-column > div { display:grid; gap:8px; }
.objective-card { min-width:0; padding:12px; border-radius:12px; background:#111927; border:1px solid rgba(255,255,255,.07); }
.objective-card strong { display:block; font-size:.88rem; overflow-wrap:anywhere; }
.objective-card p { margin:6px 0; color:#96a2b5; font-size:.78rem; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere; }
.objective-card small { color:#68768c; font-size:.69rem; }
.objective-card .item-actions { margin-top:9px; }
.objective-empty { padding:24px 10px; text-align:center; color:#647187; font-size:.75rem; }

/* Territoire */
.ruby-map-shell { position:relative; height:clamp(420px,60vh,760px); overflow:hidden; border-radius:20px; border:1px solid rgba(255,255,255,.09); background:#070b12; }
.ruby-map-shell iframe { width:100%; height:100%; border:0; display:block; background:#070b12; }
.ruby-map-open { position:absolute; right:12px; top:12px; z-index:2; background:rgba(10,15,24,.9); backdrop-filter:blur(8px); }
.territory-wrap { max-width:100%; overflow:auto; scrollbar-width:thin; }
.territory-grid { min-width:760px; }

/* Comptes */
.account-hero-grid { align-items:stretch !important; }
.account-hero-grid .hero-card { min-width:0; height:100%; }
.account-hero-grid .hero-card > div { min-width:0; }
.account-hero-grid h2 { overflow-wrap:anywhere; }
.account-link-row { min-width:0; }
.account-link-row .item-actions { justify-content:flex-end; }

/* Gestion membres */
.member-manager-card { min-width:0; }
.member-admin-identity { display:flex; align-items:center; gap:10px; min-width:0; }
.member-admin-identity > div { min-width:0; }
.member-admin-identity strong,.member-admin-identity small { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.member-manager-body { overflow:hidden; }
.permission-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.check-tile { min-width:0; }
.check-tile span { font-size:.78rem; }

/* Etat vide et notices */
.empty-state.enhanced { min-height:150px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:26px 16px; }
.empty-state.enhanced strong { color:#d8dfeb; font-size:.9rem; }
.empty-state.enhanced span { max-width:440px; font-size:.78rem; line-height:1.45; text-align:center; }
.notice-banner { min-width:0; display:flex; align-items:flex-start; gap:10px; padding:13px 14px; border-radius:14px; border:1px solid rgba(255,255,255,.075); background:rgba(255,255,255,.025); }
.notice-banner > svg { flex:0 0 auto; margin-top:1px; }
.notice-banner strong,.notice-banner span { display:block; }
.notice-banner strong { font-size:.85rem; }
.notice-banner span { color:#94a0b4; font-size:.78rem; line-height:1.4; margin-top:2px; }
.notice-banner.danger { border-color:rgba(255,102,115,.26); background:rgba(255,102,115,.07); color:#ffd8dc; }
.notice-banner.info { border-color:rgba(88,101,242,.2); background:rgba(88,101,242,.06); }

/* Responsive */
@media (max-width: 1220px) {
  .admin-health-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .help-grid-v6 { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .permission-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width: 900px) {
  html, body { overflow:auto; min-height:100%; height:auto; }
  .app-shell { min-height:100dvh; height:auto; overflow:visible; }
  .main { height:auto; min-height:100dvh; overflow:visible; padding-bottom:92px !important; }
  .sidebar { height:auto !important; overflow:visible; }
  .sidebar .nav { overflow-x:auto; overflow-y:hidden; }
  .modal-content-grid { grid-template-columns:1fr; }
  .form-field-wide,.confirm-box,.date-picker-slot { grid-column:1 !important; }
  .voice-grid,.help-grid-v6,.objective-board { grid-template-columns:1fr !important; }
  .request-main { grid-template-columns:1fr; gap:6px; }
  .request-main .date-cell { display:block !important; }
  .resource-row { grid-template-columns:34px minmax(0,1fr) !important; }
  .resource-row > .item-actions { grid-column:1/-1; padding-left:46px; }
  .country-info-hero,.country-info-hero img,.country-info-hero.no-image .country-info-hero-shade { min-height:270px; }
}
@media (max-width: 620px) {
  .modal-backdrop { padding:8px !important; align-items:end !important; }
  .modal { width:100% !important; max-height:94dvh !important; border-radius:18px 18px 0 0 !important; }
  .modal-header { padding:15px 14px !important; }
  .modal-content-grid { padding:14px !important; }
  .modal-actions { padding:11px 14px calc(11px + env(safe-area-inset-bottom)); }
  .modal-actions .btn { flex:1 1 130px; min-width:0; }
  .toast { top:12px !important; right:12px !important; width:calc(100vw - 24px) !important; }
  .admin-health-grid,.member-stat-grid,.check-grid,.permission-grid { grid-template-columns:1fr !important; }
  .calendar-toolbar { grid-template-columns:auto minmax(0,1fr) auto; }
  .calendar-toolbar-actions .btn { display:none; }
  .calendar-cell,.date-picker-day { min-height:34px; font-size:.72rem; }
  .date-picker-weekdays,.calendar-head { font-size:.6rem; }
  .member-manager-card > summary { display:grid !important; grid-template-columns:minmax(0,1fr); }
  .member-summary-tags { justify-content:flex-start !important; max-width:none !important; }
  .leaderboard-row { grid-template-columns:28px 28px minmax(0,1fr); }
  .leaderboard-row b { grid-column:3; }
  .discord-hero { grid-template-columns:46px 30px minmax(0,1fr); padding:14px; }
  .discord-page-logo { width:44px; height:44px; }
  .ruby-map-shell { height:430px; }
}
.admin-diagnostic-list { display:grid; gap:8px; }
.admin-diagnostic-list > div { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 12px; border-radius:11px; border:1px solid rgba(255,255,255,.065); background:rgba(255,255,255,.02); }
.admin-diagnostic-list span { color:#8996aa; font-size:.78rem; }
.admin-diagnostic-list strong { font-size:.82rem; text-align:right; overflow-wrap:anywhere; }
.modal-inline-actions { grid-column:1/-1 !important; display:flex !important; align-items:center; flex-wrap:wrap; gap:8px; padding-top:4px; }
.detail-grid { grid-column:1/-1 !important; min-width:0; }
.detail-note p { overflow-wrap:anywhere; }
.ruby-map-overlay-note { position:absolute; left:12px; bottom:12px; max-width:min(520px,calc(100% - 24px)); padding:8px 10px; border-radius:10px; background:rgba(7,11,18,.76); backdrop-filter:blur(8px); color:#8793a6; font-size:.7rem; pointer-events:none; }
.territory-help { margin:10px 2px 0; color:#748196; font-size:.75rem; line-height:1.45; }

/* =========================
   V7 — stabilité / lisibilité
   ========================= */
html, body { overscroll-behavior: none; }
.main { overflow-x: clip !important; overscroll-behavior-y: contain !important; scrollbar-gutter: auto !important; }
.view-container, .page-grid, .card, .card-body { max-width: 100%; }

/* avatars Discord toujours bien cadrés */
.avatar.has-image, .avatar-main.has-image, .member-admin-avatar.has-image {
  background-size: cover !important;
  background-position: 50% 50% !important;
  background-repeat: no-repeat !important;
  color: transparent !important;
}

/* semaine : ancien bug où les jours s'empilaient comme du texte */
.week-strip {
  display: grid !important;
  grid-template-columns: repeat(7, minmax(0,1fr)) !important;
  gap: 7px !important;
  width: 100%;
  min-width: 0;
}
.week-day {
  min-width: 0;
  min-height: 112px;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 5px;
  padding: 10px 6px;
  border: 1px solid rgba(255,255,255,.075);
  border-radius: 12px;
  background: rgba(255,255,255,.022);
  text-align: center;
}
.week-day > strong { text-transform: capitalize; color:#9aa6b8; font-size:.72rem; }
.week-day > span { color:#eef3fa; font-size:1rem; font-weight:850; }
.week-day > small { margin-top:auto; color:#79869b; font-size:.66rem; line-height:1.2; }
.week-avatars { min-height:28px; display:flex; align-items:center; justify-content:center; gap:3px; flex-wrap:wrap; }
.week-avatars b { font-size:.64rem; color:#9ca7ba; }

/* calendrier principal + date picker plus compacts */
.calendar-v6 { max-width: 760px; margin: 0 auto; }
.date-picker-slot { max-width: 430px; }
.date-picker-panel { max-width: 430px; margin-inline: 0; }
.date-picker-day, .calendar-cell { aspect-ratio: 1 / .86 !important; min-height: 34px !important; }
.date-picker-weekdays, .calendar-head { font-size:.66rem !important; }

/* modales : aucun bouton coupé, footer toujours visible */
.modal { max-height: calc(100dvh - 36px) !important; }
.modal-form { min-height:0 !important; }
.modal-content-grid { padding-bottom: 22px !important; }
.modal-actions {
  position: relative !important;
  bottom: auto !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 14px 20px max(14px, env(safe-area-inset-bottom)) !important;
  background: #101723 !important;
  box-shadow: 0 -10px 28px rgba(0,0,0,.18);
}
.modal-actions .btn { flex: 0 1 auto; min-width: 118px; }
.modal-inline-actions { width:100%; }
.modal-inline-actions .btn { max-width:100%; }

/* gestion membres — couleurs de rang franches */
.member-role-badge {
  display:inline-flex; align-items:center; justify-content:center;
  min-height:28px; padding:5px 9px; border-radius:999px;
  border:1px solid transparent; font-size:.72rem; font-weight:850;
}
.member-role-visitor { color:#c3cad4 !important; background:rgba(148,163,184,.11) !important; border-color:rgba(148,163,184,.24) !important; }
.member-role-recruit { color:#9ed0ff !important; background:rgba(59,130,246,.13) !important; border-color:rgba(59,130,246,.30) !important; }
.member-role-member { color:#8ff1b5 !important; background:rgba(34,197,94,.13) !important; border-color:rgba(34,197,94,.30) !important; }
.member-role-officer { color:#ffd082 !important; background:rgba(245,158,11,.13) !important; border-color:rgba(245,158,11,.30) !important; }
.member-role-leader { color:#ff9ca7 !important; background:rgba(239,68,68,.13) !important; border-color:rgba(239,68,68,.30) !important; }
.member-role-stats { grid-template-columns: repeat(5,minmax(0,1fr)) !important; }
.role-stat { padding:15px; border:1px solid rgba(255,255,255,.075); border-radius:14px; background:rgba(255,255,255,.02); }
.role-stat strong { display:block; font-size:1.35rem; }
.role-stat span { display:block; margin-top:3px; font-size:.75rem; color:#8592a6; }
.role-stat.role-recruit { box-shadow: inset 0 2px 0 rgba(59,130,246,.55); }
.role-stat.role-member { box-shadow: inset 0 2px 0 rgba(34,197,94,.55); }
.role-stat.role-officer { box-shadow: inset 0 2px 0 rgba(245,158,11,.55); }
.role-stat.role-leader { box-shadow: inset 0 2px 0 rgba(239,68,68,.55); }

/* cartes membres ne perdent pas visuellement leur contenu */
.member-manager-card[open] { border-color:rgba(88,101,242,.28); box-shadow:0 12px 30px rgba(0,0,0,.12); }
.member-manager-card[open] > summary { background:rgba(88,101,242,.045); }
.member-manager-body { overflow: visible !important; }

/* administration */
.admin-health-grid { align-items:stretch; }
.admin-health { min-height:72px; }
.admin-health > span svg { width:20px; height:20px; }
.settings-actions, .admin-diagnostic-list { min-width:0; }
.nav-item .nav-icon svg { width:19px; height:19px; }

/* Discord : logo blanc comme les autres icônes */
.discord-mini-logo, .discord-page-logo { fill: currentColor !important; color:#e8edf5 !important; }
.discord-combo-icon { color:#e8edf5 !important; }
.discord-headset { color:#e8edf5 !important; background:rgba(255,255,255,.06) !important; }
.discord-hero { border-color:rgba(255,255,255,.09) !important; background:linear-gradient(135deg,rgba(255,255,255,.045),rgba(14,19,30,.92)) !important; }
.discord-tools-grid { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px !important; }
.discord-tools-grid .btn { width:100%; }
.voice-members .avatar { flex:0 0 auto; }
.voice-members > div { display:flex; align-items:center; gap:8px; }

/* ressources */
.resource-call-title { color:#7e8ba0; font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; margin-bottom:3px; }
.resource-content > small { white-space:normal; }

/* territoires : plus d'iframe bloquée */
.territory-map-image {
  min-height:420px; border-radius:20px; border:1px solid rgba(255,255,255,.09);
  background-size:cover; background-position:center; position:relative; overflow:hidden;
}
.territory-map-image-overlay { position:absolute; left:14px; bottom:14px; padding:10px 12px; border-radius:12px; background:rgba(5,9,15,.78); backdrop-filter:blur(8px); }
.territory-map-image-overlay strong,.territory-map-image-overlay span { display:block; }
.territory-map-image-overlay span { margin-top:2px; color:#8d99ad; font-size:.74rem; }
.territory-map-fallback {
  min-height:320px; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:10px; padding:28px; text-align:center; border:1px dashed rgba(255,255,255,.13); border-radius:20px; background:rgba(255,255,255,.018);
}
.territory-map-fallback > span { max-width:650px; color:#8996aa; line-height:1.5; }

/* texture vide toujours centré */
.texture-grid > .empty-state { grid-column:1 / -1 !important; width:100%; min-height:220px; }

/* personnes en ligne */
.dashboard-customize-row { display:flex; justify-content:flex-end; margin-bottom:10px; }
.online-user-list { display:grid; gap:7px; }
.online-user-list button { width:100%; display:grid; grid-template-columns:30px minmax(0,1fr) 9px; align-items:center; gap:9px; padding:9px 10px; border:1px solid rgba(255,255,255,.065); border-radius:11px; background:rgba(255,255,255,.02); color:inherit; text-align:left; cursor:pointer; }
.online-user-list button:hover { background:rgba(255,255,255,.045); }
.online-user-list span strong,.online-user-list span small { display:block; }
.online-user-list span small { color:#7f8ca0; font-size:.7rem; margin-top:2px; }
.online-user-list b { width:8px; height:8px; border-radius:50%; background:#4edb8d; box-shadow:0 0 10px rgba(78,219,141,.65); }

/* toasts un peu plus visibles */
.toast { font-size:.9rem !important; min-height:56px !important; }
.toast.error { box-shadow:0 18px 55px rgba(90,10,20,.38) !important; }

@media (max-width: 1050px) {
  .member-role-stats { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
  .discord-tools-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .week-strip { grid-template-columns:repeat(4,minmax(0,1fr)) !important; }
}
@media (max-width: 700px) {
  .member-role-stats { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .discord-tools-grid { grid-template-columns:1fr; }
  .week-strip { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .week-day { min-height:96px; }
  .date-picker-slot,.date-picker-panel { max-width:100%; }
  .modal-actions { flex-direction:column-reverse !important; }
  .modal-actions .btn { width:100%; min-width:0; }
}
.resource-batch-row { grid-template-columns:minmax(170px,1.4fr) minmax(90px,.6fr) minmax(90px,.6fr) minmax(130px,.8fr) auto !important; }
.admin-panel-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.admin-panel-grid > .card:last-child { grid-column:1/-1; }
.admin-diagnostic-list > div { display:grid !important; grid-template-columns:20px minmax(0,1fr) auto; }
.admin-diagnostic-list > div > svg { color:#8491a5; }
@media (max-width:900px){ .resource-batch-row { grid-template-columns:1fr 1fr !important; } .resource-batch-row > label:first-child { grid-column:1/-1; } .resource-batch-row > label:nth-child(4){ grid-column:1/-1; } .admin-panel-grid{grid-template-columns:1fr;} .admin-panel-grid > .card:last-child{grid-column:auto;} }

/* V7.1 — stabilisation globale des pages et des fenêtres */
html, body { overflow:hidden !important; }
.app-shell { min-height:0 !important; overflow:hidden !important; }
.main { min-height:0 !important; overflow-y:auto !important; overflow-x:hidden !important; scrollbar-gutter:stable !important; overscroll-behavior-y:auto !important; padding-bottom:55px !important; }
.main:focus-within { overflow-y:auto; }
.view-container,.page-grid,.card,.card-body,.admin-panel-grid,.dashboard-grid,.dashboard-member-grid { min-width:0; }
.page-grid { align-content:start; }
.main-footer { position:relative; margin-top:22px; clear:both; }
.card { max-width:100%; }
.modal-backdrop { overflow-y:auto !important; align-items:center !important; }
.modal { border-radius:20px !important; width:min(650px,calc(100vw - 26px)) !important; overflow:hidden !important; max-height:calc(100dvh - 26px) !important; display:flex !important; flex-direction:column; }
.modal-form { flex:1 1 auto !important; overflow:auto !important; min-height:0 !important; max-height:none !important; display:flex; flex-direction:column; }
.modal-content-grid { min-height:0; overflow:visible; flex:1 1 auto; }
.modal-actions { margin:0 !important; position:sticky !important; bottom:0 !important; flex-shrink:0; padding:15px 20px !important; background:#10151f !important; border-top:1px solid rgba(255,255,255,.1); }
.form-field select,.member-control-grid select { width:100%; min-width:0; max-width:100%; appearance:none; background-size:14px; }
.check-grid,.permission-grid,.modal-content-grid { min-width:0; }
.check-tile { min-width:0; overflow-wrap:anywhere; }
.library-grid:has(> .empty-state),.vote-list-v2:has(> .empty-state),.texture-grid:has(> .empty-state),.candidate-grid:has(> .empty-state) { display:flex !important; justify-content:center; align-items:center; min-height:260px; }
.library-grid > .empty-state,.vote-list-v2 > .empty-state,.texture-grid > .empty-state,.candidate-grid > .empty-state { width:100%; max-width:580px; text-align:center; justify-content:center; align-items:center; }
.resource-contributor-strip { display:flex; flex-wrap:wrap; gap:7px; padding-top:9px; }
.resource-contributor-strip span { display:inline-flex; gap:7px; align-items:center; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04); border-radius:9px; padding:5px 9px; color:#b7c3d6; font-size:.74rem; }
.resource-contributor-strip strong { color:#f3f6fa; }
.resource-leaderboard { display:grid; gap:7px; }
.leaderboard-row { display:grid; grid-template-columns:30px minmax(0,1fr) auto; align-items:center; gap:10px; padding:11px 13px; border-radius:10px; background:rgba(255,255,255,.035); }
.leaderboard-rank { display:grid; place-items:center; border-radius:8px; background:rgba(245,158,66,.12); color:#f5ad63; padding:6px; font-weight:800; }
.leaderboard-row > span:last-child { color:#b1c0d1; font-size:.85rem; }
.dashboard-sortable { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:14px; }
.dashboard-movable { min-width:0; cursor:grab; }
.dashboard-movable:active { cursor:grabbing; }
.dashboard-movable.dragging { opacity:.35; }
.dashboard-drag-handle { display:flex; justify-content:center; align-items:center; gap:6px; color:#8290a5; font-size:.72rem; padding:4px 0 6px; }
.dashboard-movable > .card { height:auto; }
.territory-image-board { position:relative; width:100%; overflow:hidden; border:1px solid rgba(255,255,255,.12); border-radius:16px; background:#101722; }
.territory-image-board > img { display:block; width:100%; height:auto; pointer-events:none; user-select:none; }
.territory-image-grid { position:absolute; inset:0; display:grid; grid-template-columns:repeat(var(--chunk-columns),minmax(0,1fr)); grid-template-rows:repeat(var(--chunk-rows),minmax(0,1fr)); }
.territory-image-grid .territory-chunk { padding:2px !important; min-width:0 !important; min-height:0 !important; width:100%; height:100%; border:1px solid rgba(230,242,255,.38) !important; background:rgba(10,21,36,.08) !important; border-radius:0 !important; color:#fff !important; display:flex; align-items:center; justify-content:center; flex-direction:column; text-shadow:0 1px 4px #000; font-size:clamp(8px,1.1vw,12px); }
.territory-image-grid .territory-chunk:hover,.territory-image-grid .territory-chunk:focus-visible { background:rgba(75,151,246,.34) !important; border-color:#fff !important; outline:2px solid #fff; z-index:2; }
.territory-image-grid .territory-chunk.assigned { background:rgba(44,179,120,.25) !important; }
.territory-image-grid .territory-chunk small { font-size:10px; max-width:100%; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.territory-calibration-note { color:#98a5b8; font-size:.8rem; margin:0 2px; }
.country-info-cta { padding-top:20px; }
.country-info-cta .btn { min-height:45px; }
body:has(.visitor-dashboard) .hero-card { max-width:100%; }
@media (max-width:900px){ .dashboard-sortable { grid-template-columns:1fr; } }
@media (max-width:700px){ .modal-backdrop { padding:8px !important; align-items:center !important; } .modal { border-radius:17px !important; max-height:calc(100dvh - 16px) !important; } .territory-image-grid .territory-chunk small { display:none; } }

/* V7.2 — controls: reset inherited generic input and label dimensions */
.check-grid {grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr)) !important;align-items:stretch !important;gap:9px !important}
.check-tile {display:flex !important;flex-direction:row !important;align-items:center !important;justify-content:flex-start !important;width:100% !important;height:auto !important;min-height:42px !important;padding:10px 12px !important;gap:10px !important;line-height:1.35 !important}
.check-tile input[type="checkbox"] {appearance:auto !important;-webkit-appearance:checkbox !important;position:static !important;opacity:1 !important;pointer-events:auto !important;display:inline-block !important;width:17px !important;height:17px !important;min-width:17px !important;max-width:17px !important;min-height:17px !important;max-height:17px !important;padding:0 !important;margin:0 !important;border-radius:3px !important;box-shadow:none !important;flex:0 0 17px !important;accent-color:#f5a544 !important}
.check-tile span {display:block !important;flex:1 !important;font-size:.83rem !important;white-space:normal !important;overflow-wrap:break-word !important}
.checkbox-field {width:100% !important;max-width:100% !important}
.resource-split {display:grid;grid-template-columns:minmax(0,1.8fr) minmax(275px,1fr);gap:16px;align-items:start}
.resource-split>.card {min-width:0;margin:0}
@media(max-width:950px){.resource-split{grid-template-columns:minmax(0,1fr)}}
/* Restore scroll under all administration screens */
html,body {overflow-y:auto !important; min-height:100% !important;height:auto !important}
.app-shell{min-height:100dvh !important;overflow:visible !important}
.main{height:auto !important;min-height:100dvh !important;overflow-y:visible !important;overscroll-behavior:auto !important;}
.sidebar{position:sticky;top:0;height:100dvh;overflow-y:auto}
.nav-item {transition:background .12s ease,color .12s ease,border-color .12s ease !important;cursor:pointer}
.nav-item.active {background:rgba(245,165,68,.16) !important;border-color:rgba(245,165,68,.32) !important;color:#fff !important}
.page-grid,.admin-page-v7 {min-height:0; align-content:start;}
.country-welcome-card {max-width:900px;margin:0 auto;min-height:0 !important;padding:20px !important}
.country-welcome-card img {max-height:220px;object-fit:cover}
.visitor-dashboard {max-width:900px !important;width:100%;margin:0 auto !important;gap:12px !important}
.visitor-dashboard .card {border-radius:14px !important}
.visitor-dashboard .card-body {padding:16px !important}
.ng-legal-footer{position:relative;z-index:7;padding:8px 20px;display:flex;gap:12px;flex-wrap:wrap;justify-content:center;font-size:.72rem;color:#8995a8;background:#0a0e16;border-top:1px solid rgba(255,255,255,.05)}
.ng-legal-footer button {color:#c5d5ed;background:none;border:0;text-decoration:underline;cursor:pointer}
.ng-legal-dialog {max-width:540px;width:calc(100% - 30px);padding:24px;border:1px solid #384458;border-radius:16px;background:#111927;color:#e8eef8;line-height:1.6}
.ng-legal-dialog::backdrop {background:rgba(0,0,0,.72)}
.ng-legal-dialog button {padding:10px 20px;border-radius:9px;background:#e49b4d;border:0;cursor:pointer}

.dashboard-staff-sortable{grid-template-columns:minmax(0,1fr)}
.dashboard-staff-sortable >.dashboard-movable {width:100%}
.dashboard-staff-sortable .dashboard-grid-v2 {width:100%}
.dashboard-movable[hidden] {display:none !important}

/* V7.3 : retour au rouge doux de navigation, disparition de l'orange V7.2 */
.nav-item.active {background:linear-gradient(90deg,rgba(255,84,95,.19),rgba(255,255,255,.045)) !important;border-color:rgba(255,95,102,.16) !important;box-shadow:inset 3px 0 0 #ff5e67,0 8px 24px rgba(255,72,79,.06) !important}
.check-tile input[type="checkbox"] {accent-color:#ff5e67 !important}
.dashboard-sortable {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.dashboard-movable {cursor:default !important;min-width:0}
.dashboard-span-1 {grid-column:span 1}
.dashboard-span-2 {grid-column:span 2}
.dashboard-drag-handle {display:none !important}
.dashboard-staff-sortable {grid-template-columns:repeat(2,minmax(0,1fr))}
.dashboard-staff-sortable>.dashboard-movable {width:auto}
.dashboard-staff-sortable .dashboard-grid-v2 {grid-template-columns:repeat(2,minmax(0,1fr))}
.dash-editor {max-width:960px;margin:0 auto}
.dash-editor-header {display:flex;justify-content:space-between;align-items:start;gap:20px;margin-bottom:22px;flex-wrap:wrap}
.dash-editor-header h2 {display:flex;gap:10px;align-items:center;font-size:1.28rem;margin:0 0 7px}
.dash-editor-header p {color:#a7b0c0;margin:0;max-width:580px}
.dash-editor-actions,.dash-edit-controls{display:flex;gap:8px;align-items:center}
.dash-edit-list {display:grid;gap:10px}
.dash-edit-row {display:flex;gap:16px;justify-content:space-between;align-items:center;padding:14px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:#151c2a}
.dash-edit-row>label {display:flex;gap:12px;align-items:center;min-width:0;flex:1}
.dash-edit-row input {width:17px;height:17px;accent-color:#ff5e67;flex-shrink:0}
.dash-edit-row small {color:#8d9bad;font-size:.75rem}
.dash-edit-controls button {display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:#222d3d;border:1px solid #354255;color:#e6e9f2;cursor:pointer}
.dash-edit-controls select {height:34px;border-radius:8px;padding:0 9px;background:#222d3d;border:1px solid #354255;color:#e6e9f2;width:auto;min-width:120px}
@media(max-width:780px){.dashboard-sortable,.dashboard-staff-sortable {grid-template-columns:1fr}.dashboard-span-1,.dashboard-span-2 {grid-column:1}.dash-edit-row{flex-wrap:wrap}.dash-edit-controls{margin-left:auto}.dashboard-staff-sortable .dashboard-grid-v2{grid-template-columns:1fr}}

/* V7.4 : layout initial asymétrique, personnalisable avec le bouton paramètres */
.dashboard-member-grid{grid-template-columns:repeat(4,minmax(0,1fr)) !important;align-items:start}
.dashboard-member-grid>.dashboard-span-1{grid-column:span 2}
.dashboard-member-grid>.dashboard-span-2{grid-column:span 4}
.dashboard-member-grid>.dashboard-movable:nth-child(3n+2).dashboard-span-1{grid-column:span 2}
.cand-discussion{margin-top:18px;padding:16px;border-radius:14px;background:#141e2e;border:1px solid #303d52;display:grid;gap:12px}
.cand-discussion h3{font-size:1rem;margin:0}.cand-discussion textarea{display:block;min-height:90px;width:100%;resize:vertical;border-radius:10px;background:#0d1624;color:#fff;border:1px solid #34445e;padding:12px}
.cand-message-list{display:grid;gap:10px;max-height:300px;overflow-y:auto}.cand-message{padding:10px 12px;border-radius:10px;background:#1d2a3d}.cand-message strong{margin-right:12px}.cand-message small{color:#95a5bd}.cand-message p{white-space:pre-wrap;margin:7px 0 0}
.ng-legal-footer button{color:#e5eafa}.ng-legal-dialog button{background:#c34655;color:white}
@media(max-width:780px){.dashboard-member-grid{grid-template-columns:1fr !important}.dashboard-member-grid>.dashboard-span-1,.dashboard-member-grid>.dashboard-span-2{grid-column:span 1 !important}}

/* Équilibre : petits et grands modules, sans uniformiser les cartes */
.dashboard-member-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.dashboard-member-grid>.dashboard-span-1{grid-column:span 1}
.dashboard-member-grid>.dashboard-span-2{grid-column:span 2}
.dashboard-member-grid>.dashboard-movable[data-module="welcome"]{grid-column:1/-1}
.dashboard-member-grid>.dashboard-movable:nth-child(3n+2).dashboard-span-1{grid-column:span 1}
@media(max-width:1000px){.dashboard-member-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}.dashboard-member-grid>.dashboard-span-2{grid-column:span 2}}
@media(max-width:780px){.dashboard-member-grid{grid-template-columns:1fr !important}.dashboard-member-grid>.dashboard-span-1,.dashboard-member-grid>.dashboard-span-2{grid-column:span 1 !important}}

/* ===== V7.5 — Navigation mobile, badges et accueil fixe ===== */
.nav-item{position:relative}
.nav-unread{position:absolute;top:8px;right:10px;display:block;width:9px;height:9px;border:2px solid #1a2230;border-radius:50%;background:#ff465d;box-shadow:0 0 0 0 rgba(255,75,94,.65);pointer-events:none;animation:ngUnreadPulse 1.8s ease-in-out infinite}
.nav-unread[hidden]{display:none!important}
@keyframes ngUnreadPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,75,94,.55)}60%{box-shadow:0 0 0 7px rgba(255,75,94,0)}}
@media(prefers-reduced-motion:reduce){.nav-unread,.ng-skeleton,.ng-loader-orbit{animation:none!important}}
.dashboard-member-grid.dashboard-fixed{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr))!important;gap:16px;align-items:start}
.dashboard-fixed-module{grid-column:span 6;min-width:0}
.dashboard-fixed-welcome{grid-column:1/-1}
.dashboard-fixed-news{grid-column:span 7}
.dashboard-fixed-follow{grid-column:span 5}
.dashboard-fixed-resources{grid-column:span 7}
.dashboard-fixed-votes{grid-column:span 5}
.dashboard-fixed-absences{grid-column:1/-1}
.dashboard-fixed-online{grid-column:1/-1}
.dashboard-fixed-module>.card{height:100%;min-width:0}
.queue-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.queue-summary>div{display:flex;flex-direction:column;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--panel,#151c29)}
.queue-summary strong{font-size:1.6rem;color:#f7f7fa}.queue-summary span{font-size:.8rem;color:#99a6ba}
.queue-list{display:grid;gap:11px;margin-top:14px}.queue-item{display:flex;justify-content:space-between;align-items:center;gap:18px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.018);padding:16px;border-radius:15px}
.queue-item>div:first-child{min-width:0}.queue-item small,.queue-item strong,.queue-item p{display:block;margin:0}.queue-item small{color:#8e9bb1;font-size:.75rem}.queue-item strong{margin:6px 0;font-size:1rem}.queue-item p{color:#aeb7c6;font-size:.82rem;overflow-wrap:anywhere}
.queue-actions{display:flex;gap:7px;flex-wrap:wrap;flex-shrink:0}.queue-actions .btn{white-space:nowrap}
.member-filter-toolbar{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.member-filter-toolbar label{display:grid;gap:6px;font-size:.8rem;color:#97a3b6;flex:1 1 180px}.member-filter-toolbar select{width:100%;max-width:340px}
.ng-loading{display:grid;gap:18px;padding:20px 0;animation:ngEnter .3s ease-out}.ng-loading-head{display:flex;align-items:center;gap:14px}.ng-loading-head strong,.ng-loading-head small{display:block}.ng-loading-head small{color:#8e9bb1;margin-top:4px}
.ng-loader-orbit{width:48px;height:48px;display:grid;place-items:center;border:1px solid rgba(252,84,98,.4);border-radius:15px;background:rgba(252,84,98,.07);color:#ff5e67;animation:ngOrbit 2s ease-in-out infinite}
.ng-skeleton{border-radius:12px;background:linear-gradient(100deg,rgba(255,255,255,.025) 20%,rgba(255,255,255,.08) 45%,rgba(255,255,255,.025) 70%);background-size:230% 100%;animation:ngShimmer 1.7s linear infinite}
.ng-skeleton-title{height:55px}.ng-skeleton-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.ng-skeleton-card{height:230px;border:1px solid rgba(255,255,255,.06);border-radius:17px;padding:22px;display:grid;align-content:start;gap:15px;background:rgba(255,255,255,.018)}.ng-skeleton-card i{display:block;height:15px;width:80%;border-radius:8px;background:rgba(255,255,255,.07)}.ng-skeleton-card i:first-child{width:44%;height:23px}.ng-skeleton-card i:last-child{width:60%}
@keyframes ngShimmer{to{background-position-x:-230%}}@keyframes ngOrbit{50%{transform:scale(1.06);box-shadow:0 0 18px rgba(255,84,100,.14)}}@keyframes ngEnter{from{opacity:.5;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
.mobile-menu-btn,.mobile-nav-backdrop{display:none}
@media(max-width:1020px){.dashboard-fixed-news,.dashboard-fixed-follow,.dashboard-fixed-resources,.dashboard-fixed-votes{grid-column:span 6}}
@media(max-width:760px){
 .dashboard-member-grid.dashboard-fixed{grid-template-columns:minmax(0,1fr)!important}.dashboard-fixed-module{grid-column:1/-1!important}
 .queue-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.queue-item{flex-direction:column;align-items:stretch}.queue-actions{width:100%}.queue-actions .btn{flex:1 1 auto;justify-content:center}
 .ng-skeleton-grid{grid-template-columns:1fr}
 .mobile-menu-btn{display:grid!important;position:relative;z-index:3;margin-bottom:12px}
 .sidebar{position:fixed!important;top:0!important;bottom:0!important;left:0!important;width:min(82vw,320px)!important;height:100dvh!important;padding:18px 12px!important;overflow-y:auto!important;display:flex!important;flex-direction:column!important;transform:translateX(-105%);transition:transform .24s ease;z-index:151!important;background:#101725!important;border-right:1px solid rgba(255,255,255,.09)!important;border-top:0!important}
 .mobile-nav-open .sidebar{transform:translateX(0)}
 .sidebar .brand{display:flex!important}.sidebar .brand-copy{display:block!important}.sidebar .sidebar-status{display:flex!important}.sidebar .sidebar-credit{display:block!important}
 .sidebar .nav{display:flex!important;flex-direction:column!important;width:100%!important;overflow-x:hidden!important;overflow-y:auto!important;gap:4px!important;flex:1 1 auto!important}
 .sidebar .nav-item{display:flex!important;flex-direction:row!important;align-items:center!important;min-height:44px!important;padding:12px 14px!important;text-align:left!important;gap:12px!important}
 .sidebar .nav-item[hidden],.sidebar .admin-separator[hidden]{display:none!important}
 .sidebar .nav-item span:last-child{display:inline!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .sidebar .nav-separator{display:block!important}
 .sidebar .nav-unread{margin-left:auto;position:static;flex:0 0 9px}
 .mobile-nav-backdrop:not([hidden]){display:block;position:fixed;inset:0;background:rgba(0,0,0,.7);border:0;z-index:150}
 .main{padding:16px 14px 40px!important;min-height:100dvh!important;margin:0!important;width:100%!important}
 .topbar{padding-top:4px!important}.topbar-actions{min-width:0}.view-container{min-width:0}
 .territory-image-grid{max-width:100%;overflow:hidden;touch-action:manipulation}.territory-chunk{min-width:0;touch-action:manipulation}
 .card,.modal,.request-card{max-width:100%;overflow-wrap:anywhere}
 .modal-backdrop{padding:8px!important;align-items:flex-end!important}.modal{max-width:100vw!important;width:100%!important;border-radius:18px 18px 0 0!important;max-height:95dvh!important}
 .table-wrap,table{max-width:100%;overflow-x:auto}.main-footer{padding-bottom:calc(10px + env(safe-area-inset-bottom))}
}

@media(max-width:760px){.sidebar .nav-item .nav-unread{display:block!important;width:9px!important;height:9px!important;min-width:9px!important;padding:0!important}.sidebar .nav-item .nav-unread[hidden]{display:none!important}}

@media(max-width:760px){.card-header{flex-wrap:wrap;gap:12px;align-items:start}.card-header>.btn{flex:0 0 auto;min-width:125px;white-space:nowrap;margin-left:auto}.card-title-wrap{min-width:0;flex:1 1 160px}.card-header .card-title,.card-header .card-subtitle{overflow-wrap:anywhere}}
.audit-date-toolbar{display:flex;gap:14px;margin:14px 0 20px;flex-wrap:wrap}.audit-date-toolbar label{display:flex;align-items:center;gap:9px;font-size:.8rem;color:#9ca8bb}.audit-date-toolbar input{width:145px;max-width:100%;padding:8px 10px;border:1px solid rgba(255,255,255,.12);border-radius:9px;background:#111827;color:#f1f5fa;font:inherit}
.mobile-menu-btn::before{content:'☰';font-size:20px;color:#e8eef8}.mobile-menu-btn>i{display:none}

/* V7.6 : statut d'absence et nouveau tableau de bord membre */
.status-absent{background:rgba(246,94,112,.13)!important;color:#ff8f9d!important;border:1px solid rgba(246,94,112,.38)!important}
.dashboard-fixed-actions{grid-column:1/-1}
.dashboard-fixed-contribution{grid-column:span 5}
.dashboard-fixed-resources{grid-column:span 7}
.dashboard-my-contributions{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px;padding:12px 0 16px}
.dashboard-my-contributions strong{font-size:1.55rem;color:#f4f5f8}
.dashboard-my-contributions span{font-size:.8rem;color:#99a6ba}
@media(max-width:1020px){.dashboard-fixed-contribution{grid-column:span 6}}
@media(max-width:780px){.dashboard-fixed-actions,.dashboard-fixed-contribution{grid-column:1/-1}}

/* V7.7 — Lisibilité, stabilité et ergonomie mobile */
.search-box{position:relative;isolation:isolate;z-index:40}
.search-box:focus-within{border-color:rgba(255,94,103,.65);box-shadow:0 0 0 3px rgba(255,94,103,.10)}
.site-search-results:not([hidden]){display:grid;position:absolute;top:calc(100% + 9px);right:0;width:min(430px,90vw);max-height:360px;overflow:auto;background:#151c28;border:1px solid rgba(255,255,255,.14);box-shadow:0 22px 65px rgba(0,0,0,.55);border-radius:15px;padding:8px;z-index:250}
.site-search-results[hidden]{display:none!important}
.search-results-caption{font-size:.72rem;color:#929fb3;padding:9px 11px;font-weight:750;letter-spacing:.04em}
.site-search-results button{width:100%;border:0;background:transparent;color:#eff2f7;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;text-align:left;padding:12px 10px;border-radius:9px;cursor:pointer;align-items:center;font:inherit}
.site-search-results button:hover,.site-search-results button:focus-visible{background:rgba(255,94,103,.11);outline:0}
.site-search-results button span{font-size:.84rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.site-search-results button small{color:#98a4b8;font-size:.69rem}
.search-results-empty{padding:16px 12px;color:#99a6b7;font-size:.83rem}

.member-home-overview{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:18px;border:1px solid rgba(251,104,120,.17);background:radial-gradient(circle at 0 0,rgba(234,82,99,.14),transparent 60%),linear-gradient(120deg,#1b2231,#141a26);border-radius:19px;padding:22px 25px;min-width:0}
.member-overview-welcome{flex:1 1 280px;min-width:0}
.member-overview-welcome small{font-size:.68rem;font-weight:800;color:#f78d98;letter-spacing:.13em}
.member-overview-welcome h2{font-size:clamp(1.25rem,2.2vw,1.75rem);margin:9px 0 7px;letter-spacing:-.028em;color:#f6f8fc}
.member-overview-welcome h2 span{font-size:.9em}
.member-overview-welcome p{margin:0;color:#aeb9ca;font-size:.84rem;line-height:1.5}
.member-overview-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;flex:1 1 350px;min-width:0}
.member-overview-metrics button{min-width:0;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(12,18,28,.54);color:inherit;padding:13px 11px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:8px;cursor:pointer;font:inherit;transition:border-color .15s ease,transform .15s ease}
.member-overview-metrics button:hover{border-color:rgba(255,94,103,.45);transform:translateY(-2px)}
.member-overview-metrics button strong{font-size:1.2rem;line-height:1.1;font-variant-numeric:tabular-nums}
.member-overview-metrics button strong .status-badge{font-size:.64rem}
.member-overview-metrics button span{color:#99a7bc;font-size:.72rem;line-height:1.25}
.dashboard-fixed-module{min-width:0;align-self:stretch}
.dashboard-member-grid.dashboard-fixed{grid-auto-flow:row dense!important;align-items:stretch;position:relative}
.dashboard-fixed-module>.card{min-height:100%;position:relative}
.dashboard-fixed-welcome{grid-column:1/-1}
.dashboard-fixed-actions{grid-column:span 7}
.dashboard-fixed-news{grid-column:span 5}
.dashboard-fixed-follow{grid-column:span 5}
.dashboard-fixed-resources{grid-column:span 7}
.dashboard-fixed-contribution{grid-column:span 5}
.dashboard-fixed-votes{grid-column:span 7}
.dashboard-fixed-absences{grid-column:1/-1}
.dashboard-fixed-online{grid-column:1/-1}
.staff-online-section{position:relative;clear:both;display:block;width:100%;margin:22px 0 5px;min-width:0}
.staff-online-section>.card{position:relative;width:100%;min-width:0}
.dashboard-grid.dashboard-grid-v2{align-items:start;min-height:0;position:relative}
.dashboard-grid.dashboard-grid-v2>.stack{min-width:0;align-self:start}

/* Menus et formulaires staff : contrôles compacts, couleurs des rangs conservées. */
.member-manager-card{border:1px solid rgba(255,255,255,.085);border-radius:15px!important;background:linear-gradient(145deg,#171e2b,#121926);transition:border-color .18s ease,background .18s ease}
.member-manager-card:hover{border-color:rgba(255,255,255,.18)}
.member-manager-card[open]{border-color:rgba(250,97,112,.45)!important;box-shadow:0 9px 28px rgba(0,0,0,.18)!important}
.member-manager-card[open]>summary{background:rgba(249,80,99,.045)!important}
.member-manager-card select,.member-filter-toolbar select,.modal-content-grid select{appearance:none!important;-webkit-appearance:none!important;border:1px solid rgba(255,255,255,.14)!important;background-color:#121a26!important;background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="%23b9c5d5" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="m6 9 6 6 6-6"/%3E%3C/svg%3E')!important;background-repeat:no-repeat!important;background-position:right 12px center!important;padding:11px 37px 11px 13px!important;border-radius:10px!important;max-width:100%;font:inherit;color:#edf3fc!important;min-height:43px;cursor:pointer}
.member-manager-card select:focus-visible,.member-filter-toolbar select:focus-visible,.modal-content-grid select:focus-visible{border-color:#ff6c7b!important;outline:2px solid rgba(255,105,125,.23)!important;outline-offset:1px}
.member-filter-toolbar{padding:12px 13px;border:1px solid rgba(255,255,255,.06);border-radius:13px;background:#111925}
.member-filter-toolbar label{font-weight:650;color:#b7c2d2}

/* Calendrier de déclaration : proportions uniformes et sans grand volet vide. */
.modal-content-grid .custom-date-field{position:relative!important;grid-column:auto!important;align-self:start;max-width:100%}
.modal-content-grid .date-picker-slot{grid-column:auto!important;width:100%;max-width:340px!important;min-width:0}
.modal-content-grid .date-picker-panel{width:100%;max-width:340px!important;border-radius:12px!important;padding:4px!important;margin:8px 0 0!important;box-shadow:0 12px 32px rgba(0,0,0,.25)!important;position:relative!important}
.modal-content-grid .date-picker-day{aspect-ratio:1!important;min-height:0!important;width:100%;height:37px!important;padding:0!important;font-size:.78rem!important;border-radius:7px!important}
.modal-content-grid .date-picker-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:2px!important;padding:5px!important}
.modal-content-grid .date-picker-weekdays{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:2px!important;padding:5px!important;font-size:.7rem!important}
.modal-content-grid .date-picker-head{min-height:38px!important;padding:3px 5px!important}
.modal-content-grid .date-picker-footer{padding:7px 4px 3px!important}
.modal-content-grid .date-picker-footer .btn{font-size:.74rem;padding:7px 9px}
.modal-content-grid .custom-date-field .date-picker-trigger{min-height:46px}

/* Actualités : texte aéré et identification de l'auteur. */
.news-story{border:1px solid rgba(255,255,255,.08);border-radius:16px;overflow:hidden;background:linear-gradient(145deg,rgba(255,97,118,.055),rgba(255,255,255,.017) 36%,transparent 80%);min-width:0;margin:0}
.news-story-kicker{display:flex;align-items:center;gap:9px;padding:17px 21px;border-bottom:1px solid rgba(255,255,255,.065);color:#ffa6b1;font-weight:750;letter-spacing:.07em;text-transform:uppercase;font-size:.69rem}
.news-story-author{display:flex;align-items:center;gap:10px;padding:18px 21px 4px}
.news-story-author>div strong,.news-story-author>div small{display:block}
.news-story-author strong{font-size:.88rem;color:#e6ebf5}
.news-story-author small{margin-top:4px;color:#8e9aad;font-size:.73rem}
.news-story-copy{padding:19px 22px 28px;line-height:1.85;font-size:.95rem;color:#d6dfeb;white-space:normal;overflow-wrap:anywhere}
.news-story-footer{display:flex;align-items:center;gap:8px;padding:13px 21px;border-top:1px solid rgba(255,255,255,.07);color:#8f9db2;font-size:.74rem;background:rgba(0,0,0,.1)}
.discord-page-logo{color:#fff!important;fill:#fff!important}

@media (max-width:1090px){
 .dashboard-fixed-actions,.dashboard-fixed-news,.dashboard-fixed-follow,.dashboard-fixed-resources,.dashboard-fixed-contribution,.dashboard-fixed-votes{grid-column:span 6}
 .member-overview-metrics{flex-basis:100%}
}
@media (max-width:760px){
 .member-home-overview{padding:18px 16px}
 .member-overview-metrics{gap:7px;grid-template-columns:repeat(3,minmax(0,1fr))}
 .member-overview-metrics button{padding:11px 8px}
 .member-overview-metrics button span{font-size:.66rem}
 .dashboard-member-grid.dashboard-fixed{grid-template-columns:minmax(0,1fr)!important}
 .dashboard-fixed-module{grid-column:1/-1!important}
 .site-search-results:not([hidden]){width:calc(100vw - 28px);left:0;right:auto}
 .modal-content-grid .custom-date-field{grid-column:1/-1!important}
 .modal-content-grid .date-picker-slot,.modal-content-grid .date-picker-panel{max-width:320px!important}
 .news-story-copy{padding:15px 16px 22px}
}
@media(max-width:400px){.member-overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.member-overview-metrics button{transition:none}}
.bot-status-card{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:15px 17px;border:1px solid rgba(255,255,255,.09);background:linear-gradient(120deg,#192230,#151b27);border-radius:13px;min-width:0}
.bot-status-card>div{flex:1 1 250px;min-width:0}
.bot-status-card strong,.bot-status-card small{display:block;overflow-wrap:anywhere}
.bot-status-card strong{font-size:.86rem;color:#ecf3fa}.bot-status-card small{margin-top:4px;font-size:.74rem;color:#9aa7b9;line-height:1.45}
.bot-status-orb{width:11px;height:11px;border-radius:50%;flex:0 0 11px}
.bot-status-orb.connected{background:#3ed9a1;box-shadow:0 0 0 4px rgba(62,217,161,.09),0 0 12px rgba(62,217,161,.4)}
.bot-status-orb.disconnected{background:#f0a45b;box-shadow:0 0 0 4px rgba(240,164,91,.085)}
.bot-status-voice{font-size:.73rem;color:#9fb0c5;display:flex;align-items:center;gap:6px}
.member-overview-metrics button:disabled{opacity:.48;cursor:default;transform:none!important}
@media(min-width:1100px){.topbar-heading{min-width:330px;flex:1 1 auto}.topbar-heading .title-line{display:flex;flex-wrap:nowrap;gap:10px;align-items:center}.topbar-heading .title-line h1{font-size:clamp(1.35rem,1.85vw,2.05rem);white-space:nowrap}.topbar-actions{flex:0 1 auto}.topbar-actions .search-box{width:min(330px,24vw)}}
@media(max-width:1099px){.topbar-heading .title-line{flex-wrap:wrap;gap:8px}}

/* V7.8 — Accueil membre harmonisé avec le bandeau staff. */
.member-home-overview{background:radial-gradient(circle at 90% 20%,rgba(77,196,255,.09),transparent 28%),radial-gradient(circle at 30% 0%,rgba(155,103,255,.07),transparent 34%),linear-gradient(135deg,rgba(25,31,44,.96),rgba(10,14,22,.92));border-color:var(--border);box-shadow:var(--shadow)}
.member-overview-welcome small{color:#aeb7c8}
/* Sélecteur de dates : grille équilibrée et utilisable au doigt. */
.modal-content-grid .custom-date-field{grid-column:1/-1!important;max-width:100%!important}
.modal-content-grid .date-picker-slot,.modal-content-grid .date-picker-panel{width:100%!important;max-width:440px!important;min-width:0!important}
.modal-content-grid .date-picker-panel{padding:12px!important;border-radius:16px!important;background:linear-gradient(160deg,#1a2533,#101722)!important;border:1px solid rgba(255,255,255,.12)!important;margin:10px 0 12px!important}
.modal-content-grid .date-picker-day{width:100%!important;min-height:42px!important;height:auto!important;aspect-ratio:1.08/1!important;font-size:14px!important;border-radius:9px!important}
.modal-content-grid .date-picker-grid{gap:5px!important;padding:9px 3px!important}
.modal-content-grid .date-picker-weekdays{gap:5px!important;padding:5px 3px!important;font-size:12px!important}
.modal-content-grid .date-picker-head{padding:5px 3px 10px!important;min-height:44px!important}
.modal-content-grid .date-picker-head strong{font-size:15px!important}
.modal-content-grid .date-picker-day.selected{background:rgba(255,94,103,.2)!important;border-color:var(--accent)!important;color:#fff!important;box-shadow:0 0 0 1px rgba(255,94,103,.2)!important}
.modal-content-grid .date-picker-day.today{border-color:rgba(255,94,103,.45)!important}
.modal-content-grid .date-picker-trigger{min-height:62px!important}
@media(max-width:540px){.modal-content-grid .date-picker-panel{max-width:100%!important;padding:8px!important}.modal-content-grid .date-picker-day{min-height:35px!important;font-size:12px!important}.modal-content-grid .date-picker-grid{gap:2px!important}.modal-content-grid .custom-date-field{grid-column:1/-1!important}}


/* V7.9 — Présentation du pays et candidatures */
.checkbox-field.field-invalid{border:1px solid rgba(249,95,109,.55)!important;border-radius:14px!important;padding:12px!important;background:rgba(255,94,103,.045)!important}
.modal-content-grid textarea.field-invalid{border-color:#fb7185!important;box-shadow:0 0 0 3px rgba(251,113,133,.1)!important}
.country-info-v79 { gap:20px; padding-bottom:24px; max-width:1450px; margin:0 auto; }
.country-landing-hero{min-height:360px;position:relative;isolation:isolate;display:flex;overflow:hidden;border-radius:24px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(125deg,#211522 0%,#151e31 55%,#091725 100%);box-shadow:0 18px 48px rgba(0,0,0,.16)}
.country-landing-hero .country-hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.48) saturate(.9);z-index:-2}
.country-landing-hero .country-hero-glow{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 92% 12%,rgba(247,80,107,.22),transparent 48%),linear-gradient(90deg,rgba(9,13,23,.92),rgba(9,15,26,.7) 60%,rgba(9,15,26,.1))}
.country-hero-content{position:relative;z-index:1;max-width:810px;padding:clamp(28px,5vw,65px);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:16px}
.country-kicker{display:flex;align-items:center;gap:10px;text-transform:uppercase;font-weight:800;letter-spacing:.12em;color:#ffc6cd;font-size:.75rem}
.country-kicker img{width:27px;height:27px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.08)}
.country-landing-hero h2{font-size:clamp(2rem,5vw,4.2rem);letter-spacing:-.04em;line-height:1.03;margin:0;color:#fff;text-wrap:balance}
.country-hero-subtitle{max-width:600px;font-size:clamp(.9rem,1.6vw,1.1rem);line-height:1.75;color:#e1e7f1;margin:0}
.country-hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:7px}
.country-hero-actions .btn{min-height:43px;border-radius:11px}
.country-secondary-btn{display:flex;align-items:center;gap:8px;padding:12px 13px;text-decoration:none;color:#eff4fb;border:1px solid rgba(255,255,255,.19);border-radius:11px;background:rgba(255,255,255,.06);font-size:.82rem;font-weight:750}
.country-secondary-btn:hover{background:rgba(255,255,255,.12)}
.country-hero-mark{position:absolute;right:-64px;top:50%;transform:translateY(-50%);opacity:.11;width:min(33vw,380px);pointer-events:none}
.country-hero-mark img{display:block;width:100%;height:auto;filter:drop-shadow(0 15px 60px rgba(240,57,91,.35))}
.country-landing-headline{display:flex;align-items:center;gap:11px;padding:13px 18px;border:1px solid rgba(248,90,110,.15);border-radius:13px;background:rgba(255,94,103,.055);color:#f3c4cb;font-weight:800;letter-spacing:.01em}
.country-landing-columns{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.85fr);gap:16px}
.country-landing-panel{min-width:0;background:linear-gradient(160deg,rgba(24,31,44,.97),rgba(14,20,31,.95));border:1px solid rgba(255,255,255,.085);border-radius:20px;padding:clamp(20px,2.5vw,30px);box-shadow:0 12px 36px rgba(0,0,0,.08)}
.country-section-heading{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.country-section-icon{width:45px;height:45px;flex:0 0 45px;display:grid;place-items:center;border-radius:14px;color:#ff96a5;background:rgba(255,94,103,.095);border:1px solid rgba(255,94,103,.15)}
.country-section-heading h3,.country-recruit h3,.country-team-header h3{font-size:1.35rem;letter-spacing:-.02em;margin:5px 0 0}
.country-info-v79 .eyebrow{color:#ff9fad;font-size:.7rem;letter-spacing:.13em;font-weight:850}
.country-article-copy{color:#bdc9d9;line-height:1.95;font-size:.91rem;overflow-wrap:anywhere;white-space:normal}
.country-recruit{display:flex;align-items:flex-start;flex-direction:column;gap:14px}
.country-recruit h3{font-size:1.55rem;margin:0;color:#eef2fa}
.country-recruit p{margin:0;line-height:1.75;color:#b9c5d5;font-size:.89rem}
.country-role-tags{display:flex;flex-wrap:wrap;gap:8px;margin:1px 0 9px}
.country-role-tags span{padding:8px 10px;border-radius:9px;border:1px solid rgba(255,255,255,.085);background:rgba(255,255,255,.04);font-size:.76rem;color:#dde6f2;font-weight:650}
.country-recruit .btn{min-height:45px;width:100%;justify-content:center}
.country-recruit-note{font-size:.75rem;color:#95a5b7}
.country-team-header{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:22px}
.country-team-header h3{font-size:1.55rem;margin:4px 0 6px}
.country-team-header p{font-size:.83rem;color:#96a5b8;margin:0}
.country-team-count{padding:8px 12px;background:rgba(255,255,255,.045);border-radius:30px;border:1px solid rgba(255,255,255,.08);font-size:.75rem;color:#b4c1d2}
.country-team-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:22px}
.country-group-title{display:flex;align-items:center;gap:10px;margin-bottom:13px}
.country-group-title h3{font-size:.95rem;margin:0}
.country-group-title span{font-size:.7rem;color:#9dacc0;background:rgba(255,255,255,.06);border-radius:999px;padding:4px 8px}
.country-people{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,215px),1fr));gap:10px}
.country-person-card{display:flex;align-items:center;gap:11px;padding:13px;border-radius:14px;background:rgba(255,255,255,.028);border:1px solid rgba(255,255,255,.07);min-width:0}
.country-person-card .avatar{width:45px;height:45px;min-width:45px;max-width:45px;border-radius:12px}
.country-person-text{display:flex;flex-direction:column;gap:6px;min-width:0}
.country-person-text strong{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.country-person-rank{font-size:.7rem;font-weight:800;width:max-content;padding:4px 7px;border-radius:7px}
.country-person-rank.leader{background:rgba(249,182,88,.11);color:#f4c482}
.country-person-rank.officer{background:rgba(255,94,103,.13);color:#ff9baa}
.country-no-team{display:flex;align-items:center;gap:10px;padding:16px;border:1px dashed rgba(255,255,255,.09);border-radius:12px;color:#8999ad;font-size:.79rem;line-height:1.5}
@media(max-width:930px){.country-landing-columns{grid-template-columns:1fr}.country-team-columns{grid-template-columns:1fr}.country-hero-mark{opacity:.045}}
@media(max-width:540px){.country-info-v79{gap:12px}.country-landing-hero{min-height:340px;border-radius:16px}.country-hero-content{padding:25px 20px;gap:14px}.country-hero-mark{display:none}.country-landing-panel{padding:20px;border-radius:16px}.country-landing-headline{padding:12px}.country-kicker{letter-spacing:.06em}.country-hero-actions{align-items:stretch;flex-direction:column;width:100%}.country-hero-actions>*{width:100%;justify-content:center}.country-person-card{padding:11px}}

/* V8 : Statistiques et sécurité */
.analytics-page{display:grid;gap:20px}.analytics-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:linear-gradient(125deg,#30222f,#171f2d 60%);padding:26px;border-radius:18px;border:1px solid #493446}.analytics-heading h2{margin:4px 0 6px;font-size:1.7rem}.analytics-heading p{color:#b9c4d3;margin:0;max-width:700px}.analytics-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px}.analytics-kpi{display:flex;flex-direction:column;gap:10px;border:1px solid #364153;border-radius:16px;background:#1a2333;padding:20px;min-height:154px}.analytics-kpi>span{color:#ff7884}.analytics-kpi>strong{font-size:1.9rem;line-height:1.1;font-variant-numeric:tabular-nums}.analytics-kpi>small{color:#b5c4d6;font-size:.85rem}.analytics-chart{display:flex;align-items:end;min-height:210px;gap:5px;overflow-x:auto;padding:14px 0}.analytics-bar-item{flex:1;min-width:23px;max-width:70px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.7rem;color:#aeb9c8}.analytics-bar-track{position:relative;width:100%;height:150px;background:#252c3b;border-radius:7px;overflow:hidden}.analytics-bar-track span{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(#ff667a,#9d3748);border-radius:7px 7px 0 0}.analytics-sections{display:grid;gap:9px}.analytics-sections>div{display:grid;grid-template-columns:24px 1fr auto;gap:15px;align-items:center;padding:11px;border-radius:10px;background:#1c2835}.analytics-sections span{color:#fa8191}.analytics-note{font-size:.8rem;color:#aeb9c8}.ng-legal-footer a{color:#ffc4cb;text-decoration:underline;text-underline-offset:3px}@media(max-width:650px){.analytics-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-kpi{padding:13px;min-height:135px}.analytics-kpi>strong{font-size:1.5rem}.analytics-heading{padding:18px}}

.auth-legal-entry{text-align:center;margin:14px 0}.auth-legal-entry a{color:#f2aab6;text-decoration:underline;text-underline-offset:3px;font-size:.82rem}

/* V8.1 — dossier candidature : décisions visibles, défilement de contenu, discussion */
.modal-candidature{height:min(850px,calc(100dvh - 40px))!important;max-height:calc(100dvh - 32px)!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;}
.modal-candidature .modal-header{flex:0 0 auto!important;padding:18px 23px!important;}
.modal-candidature .modal-form{flex:1 1 auto!important;min-height:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;}
.modal-candidature .modal-content-grid{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overscroll-behavior:contain!important;display:flex!important;flex-direction:column!important;padding:20px 24px 40px!important;gap:16px!important;}
.modal-candidature .modal-actions{flex:0 0 auto!important;padding:13px 24px!important;position:relative!important;bottom:auto!important;background:#101723!important;}
.cand-detail-v81,.cand-decision-panel,.cand-discussion-v81{width:100%;min-width:0;border:1px solid rgba(255,255,255,.09);border-radius:17px;overflow:visible;}
.cand-detail-v81{background:linear-gradient(145deg,#1c2738,#131d2b);}
.cand-detail-banner{padding:19px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.07);flex-wrap:wrap}
.cand-detail-person{display:flex;gap:12px;align-items:center;min-width:0}.cand-detail-person h3{margin:2px 0;font-size:1.16rem;overflow-wrap:anywhere}.cand-detail-person small{color:#99a9c1;font-weight:650;font-size:.75rem;letter-spacing:.025em}
.cand-detail-jobs{padding:15px 20px;border-bottom:1px solid rgba(255,255,255,.065);display:grid;gap:9px}.cand-detail-jobs>strong{font-size:.82rem;color:#cbd5e6}
.cand-detail-answers{padding:15px 20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cand-detail-answers section{padding:14px;border-radius:11px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.045);min-width:0}.cand-detail-answers span{font-weight:800;color:#ffa8b1;font-size:.75rem}.cand-detail-answers p{margin:7px 0 0;line-height:1.65;color:#d6dfef;overflow-wrap:anywhere;white-space:pre-wrap;font-size:.89rem}
.cand-decision-panel{background:linear-gradient(125deg,#211c2b,#18202d);border-color:rgba(255,120,139,.2);padding:17px 19px;display:grid;gap:17px}.cand-section-title{display:flex;align-items:center;gap:12px;min-width:0}.cand-section-title>div:last-child{display:grid;gap:3px;min-width:0}.cand-section-title strong{font-size:.96rem;color:#f2f5fc}.cand-section-title small{font-size:.76rem;color:#9caabe;overflow-wrap:anywhere}.cand-section-icon{display:grid;place-items:center;flex:0 0 35px;width:35px;height:35px;border-radius:10px;background:rgba(255,101,118,.12);color:#ff92a0}
.cand-decision-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.cand-decision-buttons .btn{min-width:0!important;min-height:44px;display:flex;justify-content:center;align-items:center;gap:7px;white-space:normal!important;line-height:1.25;text-align:center;padding:9px 12px!important}.cand-decision-buttons .btn span{overflow-wrap:anywhere}
.cand-discussion-v81{display:grid;gap:16px;background:#172233;padding:20px}.cand-chat-list{display:grid;gap:11px;min-height:52px;max-height:370px;overflow-y:auto;padding:2px 3px;scrollbar-gutter:stable}.cand-chat-empty{color:#a5b4c8;margin:8px}.cand-chat-message{min-width:0;border:1px solid #334258;border-radius:13px;background:#1e2b3c;padding:13px 15px;box-shadow:0 4px 14px rgba(0,0,0,.07)}.cand-chat-message.mine{border-color:rgba(254,118,139,.29);background:#242735}.cand-chat-author{display:flex;align-items:center;gap:10px;min-width:0}.cand-chat-author .avatar{flex-shrink:0}.cand-chat-identity{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.cand-chat-identity strong{font-size:.9rem;overflow-wrap:anywhere}.cand-chat-rank{background:rgba(255,99,114,.11);color:#ffb5be;border:1px solid rgba(255,129,143,.2);padding:2px 8px;border-radius:999px;font-size:.67rem;font-weight:750}.cand-chat-author time{margin-left:auto;flex:0 0 auto;font-size:.69rem;color:#9daec4}.cand-chat-message>p{line-height:1.7;color:#e0e9f5;white-space:pre-wrap;overflow-wrap:anywhere;margin:11px 0 0;font-size:.91rem}.cand-chat-compose{border-top:1px solid rgba(255,255,255,.08);padding-top:13px;display:grid;gap:9px}.cand-chat-compose label{font-weight:760;color:#e0e8f3;font-size:.82rem}.cand-chat-compose textarea{width:100%!important;max-width:100%;box-sizing:border-box;min-height:100px!important;resize:vertical;border-radius:11px;padding:13px;color:#f5f8fd;background:#101a29;border:1px solid #44536a;line-height:1.5}.cand-chat-compose textarea:focus{outline:2px solid rgba(255,105,122,.32);border-color:#e16b7d}.cand-chat-compose-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.cand-chat-compose-actions small{color:#9aabc1;font-size:.75rem}.cand-chat-compose-actions button{margin-left:auto;min-height:43px;min-width:126px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
@media(max-width:600px){.modal-candidature{height:95dvh!important;max-height:95dvh!important}.modal-candidature .modal-header{padding:14px 17px!important}.modal-candidature .modal-content-grid{padding:15px 14px 35px!important}.modal-candidature .modal-actions{padding:12px 15px max(16px,env(safe-area-inset-bottom))!important}.cand-detail-answers{grid-template-columns:1fr}.cand-detail-banner,.cand-detail-jobs,.cand-detail-answers{padding:15px}.cand-decision-buttons{grid-template-columns:1fr}.cand-decision-buttons .btn{width:100%;min-height:44px}.cand-chat-author time{white-space:normal;max-width:100px;text-align:right}.cand-discussion-v81{padding:14px}.cand-chat-compose-actions{align-items:stretch}.cand-chat-compose-actions button{width:100%;margin-left:0}}

/* V8.2 : zone de réponse entièrement visible dans la fiche de candidature */
.modal-candidature .modal-content-grid{padding-bottom:100px!important;scroll-padding-bottom:130px!important;overflow-y:auto!important;}
.modal-candidature .cand-discussion-v81{flex:0 0 auto;overflow:visible!important;}
.modal-candidature .cand-chat-compose{min-height:0;overflow:visible!important;scroll-margin-bottom:120px;}
.modal-candidature .cand-chat-compose textarea{height:auto!important;min-height:116px!important;max-height:240px!important;display:block!important;flex-shrink:0;}
.modal-candidature .cand-chat-compose-actions{padding-bottom:10px!important;}
.search-results-caption{font-size:.73rem;letter-spacing:.02em}
.site-search-results button>span{display:flex;flex-direction:column;gap:5px;min-width:0;}
.site-search-results button>span strong{font-size:.85rem;font-weight:740;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.site-search-results button>span em{color:#9faec3;font-size:.76rem;font-style:normal;white-space:normal;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.ng-search-hit{color:#fff;background:rgba(225,57,83,.58);outline:2px solid rgba(255,132,153,.35);border-radius:3px;padding:1px 3px;box-decoration-break:clone;}
@media(max-width:600px){.modal-candidature .modal-content-grid{padding-bottom:120px!important}.site-search-results button{grid-template-columns:minmax(0,1fr) auto;}}


/* V8.3 : Guide d'accueil des nouveaux membres */
body.welcome-locked{overflow:hidden!important}
.welcome-overlay[hidden]{display:none!important}
.welcome-overlay{position:fixed;inset:0;z-index:10050;background:rgba(6,10,17,.94);backdrop-filter:blur(14px);display:grid;place-items:center;padding:clamp(12px,2vw,24px);overflow:auto;overscroll-behavior:contain;color:#f3f5fa}
.welcome-panel{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(0,1.25fr);width:min(880px,100%);max-height:min(94dvh,900px);border:1px solid rgba(255,255,255,.13);border-radius:24px;background:linear-gradient(150deg,#1a2230,#0e1520);overflow:hidden;box-shadow:0 26px 110px rgba(0,0,0,.55)}
.welcome-visual{background:radial-gradient(circle at 50% 40%,rgba(255,94,103,.25),transparent 65%),linear-gradient(145deg,#271b2a,#141d2d);border-right:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:30px;text-align:center}
.welcome-visual img{width:clamp(80px,12vw,130px);height:clamp(80px,12vw,130px);object-fit:contain;filter:drop-shadow(0 15px 35px rgba(255,65,84,.2))}
.welcome-visual>span{font-size:.88rem;font-weight:850;letter-spacing:.025em;color:#f8e5e9}
.welcome-steps{display:flex;gap:9px;margin-top:7px}.welcome-step-dot{width:23px;height:5px;border-radius:8px;background:rgba(255,255,255,.18)}.welcome-step-dot.done{background:#ff5e67}
.welcome-body{padding:clamp(20px,4vw,43px);min-width:0;overflow:auto;scrollbar-width:thin}
.welcome-kicker{color:#ff99a4;font-weight:850;font-size:.7rem;letter-spacing:.12em}
.welcome-body h2{font-size:clamp(1.5rem,2.8vw,2.35rem);margin:10px 0 10px;color:#fff;letter-spacing:-.035em;line-height:1.16}
.welcome-intro{margin:0 0 22px;color:#c0cbd9;font-size:.92rem;line-height:1.7}
.welcome-pseudo-form{display:grid;gap:12px}.welcome-pseudo-form label{font-weight:780;color:#e8eef5}.welcome-pseudo-form label strong{color:#ff5e67}
.welcome-pseudo-form input{background:#0b1420;color:#fff;border:1px solid #3b485d;border-radius:13px;min-height:53px;width:100%;font:inherit;padding:0 14px;outline:none}.welcome-pseudo-form input:focus{border-color:#ff7986;box-shadow:0 0 0 3px rgba(255,94,103,.14)}
.welcome-pseudo-form small{color:#9eafc4;line-height:1.6}
.welcome-primary{margin-top:17px;min-height:49px;background:#e95768;border:1px solid #f97280;border-radius:12px;color:white;font-weight:850;padding:12px 18px;display:flex;gap:9px;align-items:center;justify-content:center;cursor:pointer;width:100%;font:inherit}.welcome-primary:hover{background:#f16b7b}.welcome-primary:disabled{opacity:.55;cursor:wait}
.welcome-tip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.welcome-tip-grid article{display:flex;align-items:flex-start;flex-direction:column;gap:10px;min-width:0;border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:15px;background:rgba(255,255,255,.025)}.welcome-tip-grid svg,.welcome-info-list svg{color:#ff8996;flex:none}.welcome-tip-grid strong{font-size:.91rem;color:#fff}.welcome-tip-grid p{margin:0;font-size:.8rem;color:#aebdd0;line-height:1.5}
.welcome-info-list{display:grid;gap:10px}.welcome-info-list>div{display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);border-radius:13px;padding:13px}.welcome-info-list span{display:flex;flex-direction:column;gap:4px}.welcome-info-list strong{color:#fff;font-size:.88rem}.welcome-info-list small{font-size:.79rem;line-height:1.6;color:#bac6d7}
.welcome-note{color:#8999ab;font-size:.73rem;line-height:1.6;margin:16px 0 0}.welcome-error{padding:10px 12px;border-radius:10px;background:rgba(237,74,94,.12);color:#ffb7c2;border:1px solid rgba(245,93,108,.3);margin-top:12px}
@media(max-width:660px){.welcome-overlay{display:block;padding:12px;}.welcome-panel{grid-template-columns:1fr;max-height:none;min-height:calc(100dvh - 24px);border-radius:18px;overflow:visible}.welcome-visual{padding:17px 16px;border-right:0;border-bottom:1px solid rgba(255,255,255,.08);gap:7px}.welcome-visual img{width:51px;height:51px}.welcome-visual>span{font-size:.78rem}.welcome-steps{margin-top:3px}.welcome-body{padding:22px;overflow:visible}.welcome-tip-grid{grid-template-columns:1fr 1fr}.welcome-tip-grid article{padding:11px}.welcome-tip-grid p{font-size:.73rem}}
@media(max-width:370px){.welcome-tip-grid{grid-template-columns:1fr}}

/* V8.4 — menu mobile : une seule icône SVG lucide */
@media (max-width:760px) {
  .mobile-menu-btn::before { content: none !important; display: none !important; }
  .mobile-menu-btn > svg { display: block !important; width: 20px !important; height: 20px !important; flex: 0 0 auto; }
}
/* Ne pas faire apparaître la connexion Discord pendant le contrôle de session à F5. */
body.auth-pending .auth-backdrop { opacity:0 !important; visibility:hidden !important; pointer-events:none !important; }
body.auth-pending .app-shell { visibility:hidden !important; }
/* Un seul emblème Discord blanc dans la navigation et la page. */
.discord-mini-logo, .discord-page-logo { fill:currentColor !important; color:#e8edf5 !important; }


/* --- NationsGlory Géorgie V8.5 : succès & récompenses --- */
.achievement-page{gap:24px}.achievement-hero{position:relative;display:flex;justify-content:space-between;align-items:center;gap:24px;border:1px solid rgba(246,192,83,.27);border-radius:22px;padding:32px;overflow:hidden;background:radial-gradient(circle at 86% 20%,rgba(245,174,66,.2),transparent 38%),linear-gradient(135deg,#202636,#111827 70%)}
.achievement-eyebrow{color:#f8ca7c;letter-spacing:.16em;font-size:.7rem;font-weight:800}.achievement-hero h2{font-size:clamp(1.5rem,3vw,2.3rem);margin:8px 0;color:#fafafa;letter-spacing:-.035em}.achievement-hero p{color:#bbc5d4;max-width:570px;font-size:.95rem}.achievement-hero-symbol{color:#ffcf78;opacity:.8;filter:drop-shadow(0 0 25px rgba(241,170,61,.35));transform:rotate(-9deg)}.achievement-hero-stats{display:flex;gap:20px;flex-wrap:wrap;margin-top:18px}.achievement-hero-stats span{display:inline-flex;align-items:center;gap:7px;color:#f0debc;font-size:.85rem}
.achievement-section-heading{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap}.achievement-section-heading h3{font-size:1.16rem;margin:0 0 4px}.achievement-section-heading p{font-size:.85rem;margin:0;opacity:.7}
.achievement-grid,.achievement-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px}.achievement-card{--badge-glow:rgba(196,205,217,.15);display:flex;align-items:flex-start;gap:14px;position:relative;padding:18px;border-radius:16px;border:1px solid rgba(151,165,183,.2);background:linear-gradient(145deg,rgba(55,65,81,.36),rgba(24,30,42,.4));min-height:142px;transition:border-color .18s,transform .18s,box-shadow .18s}.achievement-card.unlocked{border-color:rgba(223,170,92,.39);background:radial-gradient(circle at 8% 18%,var(--badge-glow),transparent 55%),linear-gradient(145deg,rgba(47,51,64,.55),rgba(25,29,39,.5))}.achievement-card.unlocked:hover{transform:translateY(-3px);box-shadow:0 14px 36px rgba(0,0,0,.18)}.achievement-card.locked{opacity:.58;filter:saturate(.45)}.achievement-card.tier-legendary{--badge-glow:rgba(243,175,54,.22)}.achievement-card.tier-epic{--badge-glow:rgba(151,90,241,.19)}.achievement-card.tier-rare{--badge-glow:rgba(73,166,234,.18)}
.achievement-coin{flex:0 0 62px;height:62px;display:flex;align-items:center;justify-content:center;border-radius:18px;color:#ffdb8b;border:1px solid rgba(242,187,91,.36);background:radial-gradient(circle at 25% 18%,rgba(255,226,151,.24),transparent 64%),linear-gradient(140deg,#564222,#252a36);box-shadow:inset 0 1px rgba(255,255,255,.13),0 6px 22px rgba(0,0,0,.15)}.achievement-card.tier-epic .achievement-coin{color:#dfb7ff;background:linear-gradient(140deg,#493168,#24283c);border-color:rgba(198,145,246,.28)}.achievement-card.tier-rare .achievement-coin{color:#addaff;background:linear-gradient(140deg,#20476c,#253044);border-color:rgba(112,178,245,.25)}.achievement-card.locked .achievement-coin{filter:grayscale(1)}.achievement-card-copy{min-width:0;flex:1}.achievement-card-copy strong{display:block;font-size:.99rem}.achievement-card-copy p{margin:7px 0 9px;font-size:.82rem;line-height:1.5;opacity:.75}.achievement-card-copy small{font-size:.76rem;color:#e4c58b}.achievement-card-copy em{font-size:.76rem;display:block;color:#d3d8e2;margin-top:6px}.achievement-status{position:absolute;right:12px;top:12px;opacity:.75}
.achievement-hall{display:grid;gap:8px}.achievement-player{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 17px;border:1px solid rgba(151,165,183,.16);border-radius:14px;background:rgba(35,43,57,.45);color:inherit;cursor:pointer;transition:background .2s,transform .2s}.achievement-player:hover{background:rgba(61,69,88,.65);transform:translateX(3px)}.achievement-place{font-weight:800;color:#ddb870;min-width:18px}.achievement-player-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.achievement-player-text small{font-size:.78rem;opacity:.7}.achievement-player-badges,.achievement-profile-badges{display:flex;gap:5px;flex-wrap:wrap}.achievement-mini{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid rgba(218,179,93,.25);border-radius:100px;color:#f6d194;background:rgba(152,106,37,.15);font-size:.7rem;white-space:nowrap}.achievement-mini.tier-epic{color:#d9b9ff;background:rgba(127,73,182,.14);border-color:rgba(200,152,255,.25)}.achievement-mini.tier-rare{color:#b1d9ff;background:rgba(49,111,173,.17);border-color:rgba(152,205,250,.25)}.achievement-admin-note{display:flex;align-items:center;gap:8px;opacity:.75;font-size:.8rem;margin:0}.achievement-profile-section{margin-top:22px}.achievement-profile-section h4{display:flex;gap:9px;align-items:center;font-size:1rem;margin:0 0 14px}.achievement-profile-section h4 span{margin-left:auto;font-weight:500;opacity:.6;font-size:.8rem}.achievement-detail-grid{grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));margin-bottom:14px}.achievement-admin-list{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.achievement-celebration{position:fixed;left:50%;top:19%;z-index:100000;max-width:min(94vw,400px);width:360px;transform:translate(-50%,-15px) scale(.9);opacity:0;pointer-events:none;transition:opacity .2s,transform .35s cubic-bezier(.2,1.3,.25,1)}.achievement-celebration.visible{opacity:1;transform:translate(-50%,0) scale(1)}.achievement-celebration-burst{display:flex;align-items:center;flex-direction:column;gap:9px;text-align:center;padding:24px 20px;border:1px solid rgba(255,202,91,.65);border-radius:22px;background:radial-gradient(circle at 50% 15%,rgba(175,116,37,.4),transparent 52%),rgba(24,30,42,.96);box-shadow:0 24px 85px rgba(0,0,0,.4),0 0 44px rgba(255,199,74,.13);color:#fff}.achievement-celebration-icon{display:flex;align-items:center;justify-content:center;width:76px;height:76px;background:linear-gradient(135deg,#6c4e21,#b5823a);border:2px solid #f1ca7e;border-radius:25px;color:#fff0b2;box-shadow:0 0 32px rgba(240,181,71,.35);animation:ng-badge-pop .55s cubic-bezier(.2,1.5,.3,1)}.achievement-celebration-burst span{letter-spacing:.17em;color:#f5cb79;font-size:.7rem;font-weight:800}.achievement-celebration-burst strong{font-size:1.55rem}.achievement-celebration-burst small{color:#d5dbe4}@keyframes ng-badge-pop{0%{transform:scale(.4) rotate(-25deg)}70%{transform:scale(1.13) rotate(4deg)}100%{transform:scale(1) rotate(0)}}
@media(max-width:760px){.achievement-hero{padding:21px}.achievement-hero-symbol{display:none}.achievement-grid,.achievement-detail-grid{grid-template-columns:1fr}.achievement-player-badges{max-width:130px;justify-content:flex-end}.achievement-player-badges .achievement-mini:nth-child(n+2){display:none}.achievement-card{min-height:unset}}
@media(prefers-reduced-motion:reduce){.achievement-card,.achievement-player,.achievement-celebration{transition:none!important;animation:none!important}.achievement-celebration-icon{animation:none}}

/* V8.6 — présence et pseudos en jeu */
.presence-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.presence-pill{display:inline-flex;align-items:center;gap:6px;width:max-content;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;border:1px solid transparent}
.presence-pill.active{background:rgba(43,175,113,.12);border-color:rgba(43,175,113,.3);color:#5ce6a1}
.presence-pill.idle{background:rgba(235,171,60,.10);border-color:rgba(235,171,60,.3);color:#f2c178}
.presence-indicator{display:inline-block;flex:0 0 9px;height:9px;border-radius:50%;background:#46dc91;box-shadow:0 0 0 3px rgba(70,220,145,.12)}
.presence-indicator.idle{background:#e2ab5a;box-shadow:0 0 0 3px rgba(226,171,90,.12)}
.ng-manual-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.ng-manual-row input{flex:1 1 220px;min-width:0;padding:11px 14px;border:1px solid var(--line,rgba(255,255,255,.15));border-radius:12px;background:var(--surface,rgba(0,0,0,.18));color:inherit;font:inherit}
.ng-manual-row input:focus-visible{outline:2px solid var(--accent,#f5a544);outline-offset:2px}
.ng-manual-row .btn{max-width:100%}

.online-user-list b.presence-indicator.idle{background:#e2ab5a;box-shadow:0 0 0 3px rgba(226,171,90,.13)}
.online-user-list b.presence-indicator.active{background:#46dc91;box-shadow:0 0 0 3px rgba(70,220,145,.13)}

/* V8.7 — profils compacts : alignement des badges et actions visibles */
.profile-card{min-width:0;align-items:start}
.profile-card>div:nth-child(2){min-width:0}
.profile-card .role-chip-row,.profile-detail-head .role-chip-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;max-width:100%;min-width:0;margin:8px 0 7px}
.profile-card .role-chip-row>* , .profile-detail-head .role-chip-row>*{flex:0 0 auto;max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.profile-card .achievement-profile-badges{margin:6px 0 8px;gap:5px;clear:both;max-width:100%}
.achievement-profile-badges .achievement-mini{font-size:.64rem;line-height:1.15;padding:3px 6px;max-width:100%;white-space:normal}
.profile-detail-head{align-items:flex-start;min-width:0}
.profile-detail-head>div:last-child{min-width:0;flex:1}
.achievement-profile-section{margin-top:18px;min-width:0;width:100%}
.achievement-profile-section h4{display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:.91rem;line-height:1.4}
.achievement-profile-section h4 span{margin-left:0}
.achievement-detail-grid.achievement-compact-grid{grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr));gap:9px;margin-bottom:13px}
.achievement-compact-grid .achievement-card{min-height:unset;padding:11px 12px;gap:9px;border-radius:13px;overflow:hidden}
.achievement-compact-grid .achievement-coin{height:38px;flex-basis:38px;border-radius:10px}
.achievement-compact-grid .achievement-coin svg{width:19px;height:19px}
.achievement-compact-grid .achievement-card-copy{min-width:0;padding-right:11px}
.achievement-compact-grid .achievement-card-copy strong{font-size:.8rem}
.achievement-compact-grid .achievement-card-copy p{font-size:.71rem;line-height:1.4;margin:5px 0}
.achievement-compact-grid .achievement-card-copy small,.achievement-compact-grid .achievement-card-copy em{font-size:.68rem;line-height:1.35}
.achievement-compact-grid .achievement-status{right:7px;top:7px}
.achievement-admin-list{gap:6px}
.achievement-admin-list .btn{min-width:0;max-width:100%;white-space:normal;text-align:left;height:auto;min-height:36px}
.achievement-profile-section>.btn,.profile-arrival-actions>.btn{max-width:100%;min-width:0;min-height:38px;height:auto;white-space:normal;overflow-wrap:anywhere;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 12px}
.profile-arrival-actions{display:flex;flex-wrap:wrap;margin:14px 0 8px;gap:8px}
.arrival-help{grid-column:1/-1;color:#b0b9c7;font-size:.85rem;line-height:1.5;margin:0}
.profile-detail .detail-grid{min-width:0}
.profile-detail .detail-stat{min-width:0;overflow-wrap:anywhere}
.modal:has(.achievement-profile-section) .modal-content-grid{padding-bottom:90px!important;overflow-x:hidden;min-width:0}
/* V8.7 — panneau de notifications sous la cloche, sans fond modal */
.notification-panel[hidden]{display:none!important}
.notification-panel{position:fixed;z-index:9000;top:78px;right:clamp(12px,3vw,48px);width:min(410px,calc(100vw - 24px));max-height:min(640px,calc(100dvh - 94px));background:linear-gradient(160deg,#182333,#101824 80%);border:1px solid rgba(255,255,255,.14);box-shadow:0 20px 65px rgba(0,0,0,.55);border-radius:17px;display:flex;flex-direction:column;overflow:hidden;color:#f2f5f9;animation:notification-drop .16s ease-out}
@keyframes notification-drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.notification-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 10px}
.notification-panel-head strong{font-size:1.04rem;display:block}
.notification-panel-head small{font-size:.76rem;color:#a8b4c8}
.notification-panel-close{border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(255,255,255,.05);color:inherit;width:31px;height:31px;display:grid;place-items:center;cursor:pointer;flex:none}
.notification-panel-filters{display:flex;align-items:center;overflow-x:auto;gap:6px;padding:8px 13px;scrollbar-width:thin;min-height:49px}
.notification-filter{flex:0 0 auto;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:6px 10px;background:rgba(255,255,255,.04);color:#cad2de;font-weight:600;font-size:.72rem;cursor:pointer}
.notification-filter.selected{background:rgba(238,166,67,.17);color:#fbd498;border-color:rgba(238,166,67,.4)}
.notification-panel-toolbar{display:flex;justify-content:flex-end;padding:2px 16px 10px;border-bottom:1px solid rgba(255,255,255,.08)}
.notification-panel-toolbar button{font-size:.75rem;border:0;background:none;color:#dcb776;cursor:pointer;padding:5px}
.notification-panel-toolbar button:disabled{opacity:.38;cursor:default}
.notification-panel-list{overflow-y:auto;min-height:0;overscroll-behavior:contain;padding:8px;scrollbar-width:thin}
.notification-panel-item{display:flex;gap:10px;padding:12px 10px;border-radius:12px;border:1px solid transparent;background:rgba(255,255,255,.035);margin-bottom:7px;min-width:0}
.notification-panel-item.done{opacity:.65;background:rgba(255,255,255,.012)}
.notification-panel-item-icon{display:grid;place-items:center;width:31px;height:31px;border-radius:10px;color:#f4c879;background:rgba(243,180,75,.11);flex:none}
.notification-panel-item-main{min-width:0;flex:1;overflow-wrap:anywhere}
.notification-panel-item-meta{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:.68rem;color:#9faabd;margin-bottom:5px}
.notification-panel-item-meta span{color:#e8b86e;font-weight:700}
.notification-panel-item-main>strong{display:block;font-size:.83rem;line-height:1.35}
.notification-panel-item-main p{font-size:.76rem;line-height:1.42;color:#afb9ca;margin:4px 0 9px;white-space:normal}
.notification-panel-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.notification-panel-actions button{display:inline-flex;align-items:center;gap:4px;border-radius:8px;padding:6px 10px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:#e0e8f4;font-size:.74rem;cursor:pointer}
.notification-panel-actions button:first-child{color:#eec47e;border-color:rgba(235,184,93,.3)}
.notification-panel-empty{padding:27px 12px;text-align:center;color:#aeb9c9;font-size:.86rem}
@media(max-width:600px){.notification-panel{top:68px;right:10px;width:calc(100vw - 20px);max-height:calc(100dvh - 80px)}.achievement-detail-grid.achievement-compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.achievement-compact-grid .achievement-card{padding:9px;gap:7px}.achievement-compact-grid .achievement-coin{height:32px;flex-basis:32px}.achievement-compact-grid .achievement-card-copy p{font-size:.68rem}}
@media(max-width:380px){.achievement-detail-grid.achievement-compact-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.notification-panel{animation:none}}

.arrival-days-label{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.82rem;color:#c3d0de}
.arrival-days-label input{width:85px;flex:0 0 85px;min-width:0}


/* V8.8 — mêmes couleurs que l'interface et ses notifications d'origine */
.notification-panel,.account-panel{
  background:linear-gradient(145deg,var(--panel),rgba(11,15,23,.96));
  border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow);
  backdrop-filter:blur(18px);
}
.notification-panel-head small,.notification-panel-item-meta,.notification-panel-item-main p,.notification-panel-empty{color:var(--muted)}
.notification-panel-close{border-color:var(--border);background:var(--panel-soft);color:var(--text)}
.notification-panel-close:hover{background:rgba(255,255,255,.09)}
.notification-filter{background:var(--panel-soft);border-color:var(--border);color:var(--muted)}
.notification-filter:hover{color:var(--text);border-color:rgba(255,94,103,.26)}
.notification-filter.selected{color:#ffe8e9;background:rgba(255,94,103,.17);border-color:rgba(255,94,103,.38)}
.notification-panel-toolbar{border-bottom-color:var(--border)}
.notification-panel-toolbar button{color:var(--accent)}
.notification-panel-item{background:rgba(255,194,88,.055);border-color:rgba(255,194,88,.18)}
.notification-panel-item.done{background:rgba(255,255,255,.025);border-color:var(--border)}
.notification-panel-item-icon{color:var(--yellow);background:rgba(255,194,88,.09)}
.notification-panel-item-meta span{color:var(--yellow)}
.notification-panel-actions button{background:var(--panel-soft);color:var(--text);border-color:var(--border)}
.notification-panel-actions button:hover{background:rgba(255,255,255,.09)}
.notification-panel-actions button:first-child{color:var(--yellow);border-color:rgba(255,194,88,.25)}
/* Le menu de compte utilise exactement le même panneau compact. */
.account-panel[hidden]{display:none!important}
.account-panel{position:fixed;z-index:9001;top:78px;right:clamp(12px,3vw,48px);width:min(298px,calc(100vw - 24px));border-radius:17px;padding:9px;animation:notification-drop .16s ease-out}
.account-panel-identity{display:flex;align-items:center;gap:11px;padding:12px 11px 15px;border-bottom:1px solid var(--border);min-width:0}
.account-panel-identity .avatar{width:40px;height:40px;flex:0 0 40px}
.account-panel-identity>div:last-child{min-width:0}
.account-panel-identity strong{font-size:.86rem;display:block;overflow-wrap:anywhere}
.account-panel-identity small{display:block;font-size:.72rem;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}
.account-panel-links{display:grid;gap:3px;padding-top:7px}
.account-panel-links button{background:transparent;border:0;border-radius:10px;cursor:pointer;text-align:left;display:flex;gap:10px;align-items:center;color:var(--text);padding:11px 10px;font-weight:650;font-size:.82rem}
.account-panel-links button:hover,.account-panel-links button:focus-visible{background:rgba(255,255,255,.065)}
.account-panel-links button svg{width:17px;height:17px;flex:0 0 17px;color:var(--muted)}
.account-panel-links button span{flex:1}
.account-panel-links button svg:last-child:not(:first-child){width:14px;height:14px}
.account-panel-links .account-panel-logout{color:#ff9ca1;border-top:1px solid var(--border);border-radius:0;margin-top:3px;padding-top:13px}
.account-panel-links .account-panel-logout svg{color:var(--accent)}
/* Présence discrète en haut à droite des cartes Profil. */
.profile-card{position:relative;padding-top:39px;min-height:133px}
.profile-presence-state{display:inline-flex;align-items:center;gap:6px;font-size:.73rem;font-weight:750;white-space:nowrap;color:var(--muted)}
.profile-presence-state i{display:inline-block;width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--muted-2)}
.profile-presence-state.active{color:#62dfa0}
.profile-presence-state.active i{background:var(--green);box-shadow:0 0 0 3px rgba(82,219,138,.12)}
.profile-presence-state.idle{color:var(--yellow)}
.profile-presence-state.idle i{background:var(--yellow);box-shadow:0 0 0 3px rgba(255,194,88,.12)}
.profile-presence-state.offline{color:var(--muted)}
.profile-card>.profile-presence-state{position:absolute;top:12px;right:14px}
.profile-detail-head>.profile-presence-state{margin-left:auto;align-self:flex-start;flex:0 0 auto;padding:4px 0}
/* Champs du profil NG en bas de chaque carte d'administration. */
.member-bottom-fields{display:grid;gap:14px;padding-top:14px;border-top:1px solid var(--border)}
.member-bottom-fields .permission-section{min-width:0}
.member-bottom-fields .section-label{color:var(--text)}
@media(max-width:600px){.account-panel{top:68px;right:10px;width:min(298px,calc(100vw - 20px))}.profile-card{padding-top:38px}.profile-detail-head{flex-wrap:wrap}.profile-detail-head>.profile-presence-state{margin-left:auto}}
@media(prefers-reduced-motion:reduce){.account-panel{animation:none}}
