/* ═══════════════════════════════════════════════════════════════════════
   Fonctionnalités 2026-09 : e-mail vérifié, recharge des mineurs,
   suppression de compte, notifications push, affluence du serveur.
   Utilise uniquement les variables du thème (style.css).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Bandeau « confirme ton adresse » ─────────────────────────────────── */
.verify-banner {
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
  gap: .5rem 1rem;
  padding: .55rem 1rem;
  background: rgba(240,176,48,0.08);
  border-bottom: 1px solid rgba(240,176,48,0.35);
  color: #f4cc78;
  font-size: .82rem;
  line-height: 1.45;
  text-align: center;
}
.verify-banner strong { color: var(--text-bright); font-weight: 600; word-break: break-all; }
.verify-banner form { display: inline; margin: 0; }
.verify-banner button,
.verify-banner a {
  font: inherit; font-weight: 600;
  color: var(--yellow);
  background: none; border: 0; padding: 0;
  text-decoration: underline; text-underline-offset: 3px;
  cursor: pointer;
}
.verify-banner button:hover,
.verify-banner a:hover { color: var(--text-bright); }
.verify-banner button:focus-visible,
.verify-banner a:focus-visible { outline: 2px solid var(--yellow); outline-offset: 2px; border-radius: 2px; }

/* ── Page de confirmation ─────────────────────────────────────────────── */
.verify-result {
  max-width: 480px; margin: 3rem auto; padding: 2.25rem 2rem;
  background: var(--bg-panel); border: var(--border); border-radius: var(--radius-lg);
  text-align: center;
}
.verify-result-icon {
  width: 52px; height: 52px; margin: 0 auto 1rem;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
}
.verify-result-icon svg { width: 26px; height: 26px; }
.verify-result.is-ok .verify-result-icon { color: var(--green); background: rgba(68,196,122,0.1); border: 1px solid rgba(68,196,122,0.35); }
.verify-result.is-error .verify-result-icon { color: var(--yellow); background: rgba(240,176,48,0.08); border: 1px solid rgba(240,176,48,0.35); }
.verify-result h1 { font-family: var(--font-head); font-size: 1.35rem; color: var(--text-bright); margin: 0 0 .6rem; }
.verify-result p { color: var(--text-secondary); line-height: 1.6; margin: 0 0 1.5rem; }
.verify-result-actions { display: flex; gap: .6rem; justify-content: center; flex-wrap: wrap; }

/* ── Statut e-mail dans le profil ─────────────────────────────────────── */
.email-status { display: flex; flex-direction: column; gap: .45rem; }
.email-status-line { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.email-status-note { font-size: .78rem; color: var(--text-muted); line-height: 1.5; }
.email-status-note strong { color: var(--text-secondary); }
.email-status form { display: inline; }

/* ── Recharge : conditions d'accès ────────────────────────────────────── */
.dep-gate {
  background: var(--bg-card);
  border: 1px solid rgba(240,176,48,0.3);
  border-radius: var(--radius-lg);
  padding: 1.15rem 1.2rem;
  margin-bottom: 1.25rem;
}
.dep-gate.is-blocked { border-color: rgba(224,85,112,0.35); }
.dep-gate h2 {
  font-family: var(--font-sub); font-size: 1.02rem; font-weight: 700;
  color: var(--text-bright); margin: 0 0 .45rem;
}
.dep-gate p { font-size: .84rem; color: var(--text-secondary); line-height: 1.6; margin: 0 0 .75rem; }
.dep-gate p:last-child { margin-bottom: 0; }
.dep-gate-meter { margin: .2rem 0 .9rem; }
.dep-gate-meter-bar {
  height: 6px; border-radius: 3px; overflow: hidden;
  background: rgba(255,255,255,0.06);
}
.dep-gate-meter-bar span { display: block; height: 100%; background: var(--blue-bright); border-radius: 3px; }
.dep-gate-meter-bar span.is-full { background: var(--red); }
.dep-gate-meter-legend {
  display: flex; justify-content: space-between; gap: 1rem;
  margin-top: .4rem; font-size: .76rem; color: var(--text-muted);
}
.dep-gate-meter-legend strong { color: var(--text-primary); font-weight: 600; }
.dep-gate-confirm { display: flex; flex-direction: column; gap: .75rem; }
.dep-gate-confirm label {
  display: flex; align-items: flex-start; gap: .6rem;
  font-size: .86rem; color: var(--text-primary); line-height: 1.5; cursor: pointer;
}
.dep-gate-confirm input[type="checkbox"] { width: 18px; height: 18px; margin-top: .1rem; flex-shrink: 0; accent-color: var(--blue-main); }
.dep-gate-confirm .btn { align-self: flex-start; }
.dep-gate-ok { font-size: .8rem; color: var(--green); margin: 0; }

/* ── Notifications push ───────────────────────────────────────────────── */
.push-panel {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: .9rem 1.1rem;
  background: var(--bg-panel);
  border: var(--border);
  border-radius: var(--radius-lg);
  padding: 1rem 1.2rem;
  margin-bottom: 1.25rem;
}
.push-panel-icon {
  width: 38px; height: 38px; border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-muted); background: rgba(255,255,255,0.03); border: var(--border);
}
.push-panel-icon svg { width: 19px; height: 19px; }
.push-panel[data-state="on"] .push-panel-icon { color: var(--green); border-color: rgba(68,196,122,0.35); background: rgba(68,196,122,0.07); }
.push-panel[data-state="denied"] .push-panel-icon { color: var(--red); }
.push-panel-title { font-family: var(--font-sub); font-weight: 700; font-size: .98rem; color: var(--text-bright); margin: 0; }
.push-panel-status { font-size: .8rem; color: var(--text-secondary); margin-top: .1rem; }
.push-panel[data-state="on"] .push-panel-status { color: var(--green); }
.push-panel-hint { grid-column: 2 / -1; font-size: .78rem; color: var(--text-muted); line-height: 1.55; margin: 0; }
.push-panel-hint:empty { display: none; }
.push-panel-actions { display: flex; gap: .5rem; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 640px) {
  .push-panel { grid-template-columns: auto 1fr; }
  .push-panel-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .push-panel-hint { grid-column: 1 / -1; }
}

/* ── Suppression de compte ────────────────────────────────────────────── */
.danger-zone { border-color: rgba(224,85,112,0.3) !important; margin-top: 1.25rem; }
.danger-zone .panel-title { color: #ff9aaa; }
.danger-zone p, .danger-zone li { font-size: .84rem; color: var(--text-secondary); line-height: 1.6; }
.danger-zone-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: .5rem 0 1rem; }
.danger-zone-cols h3 { font-family: var(--font-sub); font-size: .86rem; font-weight: 700; color: var(--text-primary); margin: 0 0 .35rem; }
.danger-zone-cols ul { margin: 0; padding-left: 1.1rem; }
.danger-zone-loss {
  background: rgba(224,85,112,0.06); border: 1px solid rgba(224,85,112,0.25);
  border-radius: var(--radius); padding: .75rem .9rem; margin-bottom: 1rem;
}
.danger-zone-loss p { margin: 0; }
.danger-zone-loss p + p { margin-top: .35rem; }
.danger-zone-blockers { margin: 0 0 .25rem; padding-left: 1.1rem; }
.danger-zone details summary {
  cursor: pointer; font-weight: 600; color: #ff9aaa; font-size: .88rem;
  list-style-position: inside; padding: .2rem 0;
}
.danger-zone details[open] summary { margin-bottom: .85rem; }
.danger-zone code { font-family: var(--font-mono); color: var(--text-bright); background: rgba(255,255,255,0.05); padding: .05rem .35rem; border-radius: 4px; }
@media (max-width: 640px) { .danger-zone-cols { grid-template-columns: 1fr; } }

/* ── Affluence du serveur (/stats) ────────────────────────────────────── */
.aff-panel { margin-bottom: 2rem; }
.aff-head { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: .75rem 1.5rem; margin-bottom: 1.1rem; }
.aff-head .panel-title { margin: 0; }
.aff-lede { font-size: .84rem; color: var(--text-secondary); margin: .35rem 0 0; max-width: 60ch; line-height: 1.55; }
.aff-facts { display: flex; gap: 1.5rem; flex-wrap: wrap; }
.aff-fact { min-width: 7rem; }
.aff-fact-val { font-family: var(--font-head); font-size: 1.35rem; font-weight: 700; color: var(--text-bright); line-height: 1.1; }
.aff-fact-val small { font-family: var(--font-main); font-size: .8rem; font-weight: 400; color: var(--text-muted); }
.aff-fact-lbl { font-size: .74rem; color: var(--text-muted); margin-top: .2rem; }
.aff-live-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin-right: .35rem; vertical-align: middle; }
.aff-live-dot.is-off { background: var(--red); }

.aff-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: .25rem; }
.aff-grid {
  display: grid;
  grid-template-columns: 2.6rem repeat(24, minmax(20px, 1fr));
  gap: 3px;
  min-width: 620px;
}
.aff-grid .aff-hour { font-family: var(--font-mono); font-size: .62rem; color: var(--text-muted); text-align: center; padding-bottom: .15rem; }
.aff-grid .aff-day { font-family: var(--font-sub); font-size: .76rem; font-weight: 600; color: var(--text-secondary); display: flex; align-items: center; }
.aff-cell {
  aspect-ratio: 1 / 1; min-height: 18px;
  border-radius: 3px;
  background: rgba(240,136,0, var(--a, 0.04));
  border: 1px solid rgba(240,136,0, calc(var(--a, 0.04) * 0.6));
}
.aff-cell.is-empty { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.03); }
.aff-cell.is-best { outline: 2px solid var(--blue-glow); outline-offset: -1px; }
.aff-legend { display: flex; align-items: center; gap: .5rem; margin-top: .8rem; font-size: .74rem; color: var(--text-muted); flex-wrap: wrap; }
.aff-legend-scale { display: flex; gap: 3px; }
.aff-legend-scale span { width: 16px; height: 10px; border-radius: 2px; background: rgba(240,136,0, var(--a)); }
.aff-best { margin: 1.1rem 0 0; font-size: .86rem; color: var(--text-secondary); line-height: 1.6; }
.aff-best strong { color: var(--text-bright); }
.aff-chart-wrap { margin-top: 1.4rem; }
.aff-chart-wrap h3 { font-family: var(--font-sub); font-size: .9rem; font-weight: 700; color: var(--text-primary); margin: 0 0 .6rem; }
.aff-empty { text-align: center; padding: 1.75rem 1rem; color: var(--text-muted); font-size: .88rem; line-height: 1.6; }

/* ── Forum des candidatures (/candidater) ─────────────────────────────── */
.app-forum { max-width: 980px; margin: 0 auto; }
.app-h1 { font-family: var(--font-head); font-size: 1.6rem; color: var(--text-bright); margin: 0 0 .4rem; line-height: 1.25; overflow-wrap: anywhere; }
.app-h2 { display: block; font-family: var(--font-sub); font-size: 1.05rem; font-weight: 700; color: var(--text-primary); margin: 1.75rem 0 .75rem; }
.app-lede { color: var(--text-secondary); font-size: .9rem; line-height: 1.6; margin: 0; max-width: 62ch; }
.app-back { display: inline-block; margin-bottom: 1rem; font-size: .84rem; color: var(--text-muted); text-decoration: none; }
.app-back:hover { color: var(--blue-bright); }
.app-list-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem 2rem; flex-wrap: wrap; margin-bottom: 1.25rem; }

/* Étiquettes */
.app-tag {
  display: inline-block; padding: .18rem .5rem; border-radius: 4px;
  font-family: var(--font-sub); font-size: .72rem; font-weight: 700; letter-spacing: .06em;
  border: 1px solid; line-height: 1.3; white-space: nowrap;
}
.app-tag.is-pending   { color: #f4cc78; background: rgba(240,176,48,0.1);  border-color: rgba(240,176,48,0.4); }
.app-tag.is-accepted  { color: #7ae8a8; background: rgba(68,196,122,0.1);  border-color: rgba(68,196,122,0.4); }
.app-tag.is-rejected  { color: #ff9aaa; background: rgba(224,85,112,0.1);  border-color: rgba(224,85,112,0.4); }
.app-tag.is-important { color: #fff2e4; background: rgba(240,136,0,0.28);  border-color: rgba(255,170,51,0.75); }

/* Filtres */
.app-filters { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1.5rem; }
.app-filters a {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .35rem .7rem; border-radius: var(--radius);
  border: var(--border); background: var(--bg-panel);
  color: var(--text-secondary); font-size: .82rem; text-decoration: none;
}
.app-filters a span:last-child { font-family: var(--font-mono); font-size: .72rem; color: var(--text-muted); }
.app-filters a:hover { border-color: rgba(240,136,0,0.45); }
.app-filters a.active { border-color: var(--blue-bright); background: rgba(240,136,0,0.08); color: var(--text-bright); }
.app-filters a:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: 2px; }

/* Sections et lignes */
.app-section { margin-bottom: 1.75rem; }
.app-section-title {
  display: flex; align-items: center; gap: .45rem;
  font-family: var(--font-sub); font-size: .95rem; font-weight: 700; color: var(--text-secondary);
  margin: 0 0 .6rem;
}
.app-section-title svg { width: 15px; height: 15px; }
.app-section-pinned .app-section-title { color: var(--blue-glow); }
.app-rows { border: var(--border); border-radius: var(--radius-lg); overflow: hidden; background: var(--bg-panel); }
.app-section-pinned .app-rows { border-color: rgba(240,136,0,0.45); background: linear-gradient(90deg, rgba(240,136,0,0.07), transparent 40%), var(--bg-panel); }
.app-row {
  display: grid; grid-template-columns: 40px 1fr auto 11rem; align-items: center; gap: .9rem;
  padding: .8rem 1rem; text-decoration: none; color: inherit;
  border-top: 1px solid rgba(110,60,16,0.18);
}
.app-row:first-child { border-top: 0; }
.app-row:hover { background: var(--bg-hover); }
.app-row:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: -2px; }
.app-row-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: var(--border); }
.app-row-main { min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.app-row-title { font-weight: 600; color: var(--text-bright); font-size: .95rem; overflow-wrap: anywhere; display: flex; align-items: center; gap: .35rem; }
.app-row-icon { display: inline-flex; color: var(--blue-glow); flex-shrink: 0; }
.app-row-icon svg { width: 14px; height: 14px; }
.app-row-meta { font-size: .78rem; color: var(--text-muted); }
.app-row-stats { display: flex; flex-direction: column; align-items: flex-end; gap: .1rem; font-size: .76rem; color: var(--text-secondary); text-align: right; }
.app-row-last { color: var(--text-muted); }
@media (max-width: 720px) {
  .app-row { grid-template-columns: 36px 1fr auto; }
  .app-row-avatar { width: 36px; height: 36px; }
  .app-row-stats { grid-column: 2 / -1; flex-direction: row; justify-content: space-between; align-items: center; text-align: left; }
}
.app-empty { text-align: center; padding: 2rem 1rem; color: var(--text-muted); }
.app-empty p { margin: 0 0 1rem; }
.app-empty .btn + .btn { margin-left: .4rem; }

/* Sujet */
.app-topic-head { margin-bottom: 1rem; }
.app-topic-flags { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .6rem; }
.app-flag { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; color: var(--blue-glow); }
.app-flag svg { width: 14px; height: 14px; }
.app-modbar {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1rem;
  padding: .75rem 1rem; margin-bottom: 1.25rem;
  border: 1px dashed rgba(240,136,0,0.4); border-radius: var(--radius-lg); background: rgba(240,136,0,0.04);
}
.app-modbar form { display: inline-flex; margin: 0; }
.app-modbar-tags { flex-wrap: wrap; align-items: center; gap: .35rem; }
.app-modbar-label { font-size: .78rem; color: var(--text-muted); margin-right: .25rem; }
.app-modbar-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
.app-tag-btn {
  font-family: var(--font-sub); font-size: .72rem; font-weight: 700; letter-spacing: .06em;
  padding: .3rem .55rem; border-radius: 4px; cursor: pointer;
  background: transparent; border: 1px solid rgba(110,60,16,0.4); color: var(--text-muted);
}
.app-tag-btn:hover { color: var(--text-bright); border-color: rgba(240,136,0,0.5); }
.app-tag-btn.is-current.is-pending   { color: #f4cc78; border-color: rgba(240,176,48,0.6); background: rgba(240,176,48,0.12); }
.app-tag-btn.is-current.is-accepted  { color: #7ae8a8; border-color: rgba(68,196,122,0.6); background: rgba(68,196,122,0.12); }
.app-tag-btn.is-current.is-rejected  { color: #ff9aaa; border-color: rgba(224,85,112,0.6); background: rgba(224,85,112,0.12); }
.app-tag-btn.is-current.is-important { color: #fff2e4; border-color: rgba(255,170,51,0.8); background: rgba(240,136,0,0.28); }
.app-tag-btn:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: 2px; }

.app-post {
  display: grid; grid-template-columns: 9rem 1fr; gap: 1.25rem;
  padding: 1.1rem 1.2rem; margin-bottom: .75rem;
  background: var(--bg-panel); border: var(--border); border-radius: var(--radius-lg);
  scroll-margin-top: 5rem;
}
.app-post-main { border-color: rgba(240,136,0,0.35); }
.app-post.is-staff { border-left: 3px solid var(--blue-bright); }
.app-post:target { box-shadow: 0 0 0 2px rgba(240,136,0,0.45); }
.app-post-author { display: flex; flex-direction: column; align-items: center; gap: .35rem; text-align: center; min-width: 0; }
.app-post-author img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: var(--border); }
.app-post-author a { font-weight: 700; color: var(--text-bright); text-decoration: none; font-size: .88rem; overflow-wrap: anywhere; }
.app-post-author a:hover { color: var(--blue-bright); }
.app-op { font-size: .7rem; color: var(--blue-glow); }
.app-post-body { min-width: 0; }
.app-post-meta { font-size: .76rem; color: var(--text-muted); margin-bottom: .6rem; display: flex; flex-wrap: wrap; gap: .5rem; }
.app-post-meta a { color: inherit; text-decoration: none; }
.app-post-meta a:hover { color: var(--blue-bright); }
.app-edited { font-style: italic; }
.app-text { color: var(--text-primary); line-height: 1.7; font-size: .93rem; overflow-wrap: anywhere; max-width: 72ch; }
.app-text p { margin: 0 0 .85rem; }
.app-text p:last-child { margin-bottom: 0; }
.app-text a { color: var(--blue-bright); }
.app-post-tools { display: flex; gap: 1rem; margin-top: .9rem; font-size: .78rem; }
.app-post-tools form { margin: 0; }
.app-post-tools a, .app-post-tools button { color: var(--text-muted); background: none; border: 0; padding: 0; font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.app-post-tools a:hover, .app-post-tools button:hover { color: var(--text-bright); }
.app-post-deleted { display: block; padding: .7rem 1.2rem; font-size: .82rem; font-style: italic; color: var(--text-muted); background: transparent; border-style: dashed; }
@media (max-width: 640px) {
  .app-post { grid-template-columns: 1fr; gap: .6rem; }
  .app-post-author { flex-direction: row; justify-content: flex-start; text-align: left; }
  .app-post-author img { width: 36px; height: 36px; }
}

/* Formulaires */
.app-form { display: flex; flex-direction: column; gap: .25rem; }
.app-textarea { min-height: 8rem; resize: vertical; line-height: 1.6; font-family: var(--font-main); }
.app-form-actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .75rem; }
.app-public-note { font-size: .82rem; color: #f4cc78; background: rgba(240,176,48,0.06); border: 1px solid rgba(240,176,48,0.25); border-radius: var(--radius); padding: .6rem .8rem; margin: 0 0 1rem; line-height: 1.5; }
.app-reply { margin-top: 1.5rem; padding-top: .25rem; }
.app-reply > p { color: var(--text-muted); font-size: .88rem; }
.app-reply > p a { color: var(--blue-bright); }

.app-pagination { display: flex; gap: .35rem; justify-content: center; flex-wrap: wrap; margin-top: 1rem; }
.app-pagination a { min-width: 2rem; padding: .3rem .6rem; text-align: center; border: var(--border); border-radius: var(--radius); color: var(--text-secondary); text-decoration: none; font-size: .82rem; }
.app-pagination a:hover { border-color: var(--blue-main); color: var(--blue-bright); }
.app-pagination a.active { background: var(--blue-main); border-color: var(--blue-main); color: #fff; }

/* ═══════════════════════════════════════════════════════════════════════
   Forum des candidatures — texte mis en forme
   Les mêmes règles s'appliquent dans l'éditeur (.ql-editor) et aux messages
   publiés (.app-rich) : ce qu'on voit en écrivant est ce qui sera affiché.
   ═══════════════════════════════════════════════════════════════════════ */
.app-rich p { margin: 0; }
/* Ligne vide de l'éditeur (<p></p>) : garde la hauteur d'une ligne. */
.app-rich p:empty::before { content: "\00a0"; }
.app-rich h2, .app-editor .ql-editor h2 { font-family: var(--font-head); font-size: 1.45em; font-weight: 700; color: var(--text-bright); margin: .6em 0 .35em; line-height: 1.3; }
.app-rich h3, .app-editor .ql-editor h3 { font-family: var(--font-sub); font-size: 1.2em; font-weight: 700; color: var(--text-bright); margin: .5em 0 .3em; line-height: 1.3; }
.app-rich > :first-child { margin-top: 0; }
.app-rich blockquote, .app-editor .ql-editor blockquote {
  margin: .5em 0; padding: .35em 0 .35em 1em;
  border-left: 3px solid var(--blue-bright); color: var(--text-secondary);
}
.app-rich ul, .app-rich ol { margin: .35em 0; padding-left: 1.5em; }
.app-rich li { margin: .15em 0; }
.app-rich a { color: var(--blue-bright); text-decoration: underline; text-underline-offset: 2px; }
.app-rich s { opacity: .8; }

.app-rich .ql-font-cinzel,   .app-editor .ql-font-cinzel   { font-family: 'Cinzel', Georgia, serif; }
.app-rich .ql-font-rajdhani, .app-editor .ql-font-rajdhani { font-family: 'Rajdhani', 'Segoe UI', sans-serif; }
.app-rich .ql-font-oswald,   .app-editor .ql-font-oswald   { font-family: 'Oswald', 'Arial Narrow', sans-serif; }
.app-rich .ql-font-mono,     .app-editor .ql-font-mono     { font-family: 'Share Tech Mono', 'Courier New', monospace; }
.app-rich .ql-font-serif,    .app-editor .ql-font-serif    { font-family: Georgia, 'Times New Roman', serif; }
.app-rich .ql-size-small, .app-editor .ql-editor .ql-size-small { font-size: .8em; }
.app-rich .ql-size-large, .app-editor .ql-editor .ql-size-large { font-size: 1.3em; }
.app-rich .ql-size-huge,  .app-editor .ql-editor .ql-size-huge  { font-size: 1.75em; line-height: 1.3; }
.app-rich .ql-align-center  { text-align: center; }
.app-rich .ql-align-right   { text-align: right; }
.app-rich .ql-align-justify { text-align: justify; }
.app-rich .ql-indent-1 { padding-left: 2em; }  .app-rich .ql-indent-2 { padding-left: 4em; }
.app-rich .ql-indent-3 { padding-left: 6em; }  .app-rich .ql-indent-4 { padding-left: 8em; }

/* ── L'éditeur ─────────────────────────────────────────────────────────── */
.app-editor {
  border: 1px solid rgba(240,136,0,0.22);
  border-radius: var(--radius);
  background: var(--bg-deep, rgba(0,0,0,0.25));
}
.app-editor:focus-within { border-color: rgba(240,136,0,0.55); box-shadow: 0 0 0 3px rgba(240,136,0,0.1); }
.app-editor .ql-toolbar.ql-snow {
  border: 0; border-bottom: 1px solid rgba(240,136,0,0.15);
  background: var(--bg-card);
  border-radius: var(--radius) var(--radius) 0 0;
  padding: 6px 8px;
  font-family: var(--font-main);
  position: sticky; top: env(safe-area-inset-top, 0px); z-index: 2;
}
.app-editor .ql-toolbar.ql-snow .ql-formats { margin-right: 10px; margin-bottom: 2px; }
.app-editor .ql-container.ql-snow { border: 0; font-family: var(--font-main); font-size: .93rem; color: var(--text-primary); }
.app-editor .ql-editor { min-height: 15rem; max-height: 70vh; line-height: 1.7; padding: .9rem 1rem; overflow-wrap: anywhere; }
.app-editor[data-kind="reply"] .ql-editor { min-height: 8rem; }
.app-editor .ql-editor.ql-blank::before { color: var(--text-muted); font-style: normal; left: 1rem; right: 1rem; }
.app-editor .ql-editor a { color: var(--blue-bright); }

/* Icônes et menus de la barre d'outils, en thème sombre */
.app-editor .ql-snow .ql-stroke { stroke: var(--text-secondary); }
.app-editor .ql-snow .ql-fill, .app-editor .ql-snow .ql-stroke.ql-fill { fill: var(--text-secondary); }
.app-editor .ql-snow .ql-picker { color: var(--text-secondary); }
.app-editor .ql-snow.ql-toolbar button:hover, .app-editor .ql-snow.ql-toolbar button:focus-visible, .app-editor .ql-snow.ql-toolbar button.ql-active,
.app-editor .ql-snow.ql-toolbar .ql-picker-label:hover, .app-editor .ql-snow.ql-toolbar .ql-picker-label.ql-active,
.app-editor .ql-snow.ql-toolbar .ql-picker-item:hover, .app-editor .ql-snow.ql-toolbar .ql-picker-item.ql-selected { color: var(--blue-bright); }
.app-editor .ql-snow.ql-toolbar button:hover .ql-stroke, .app-editor .ql-snow.ql-toolbar button:focus-visible .ql-stroke, .app-editor .ql-snow.ql-toolbar button.ql-active .ql-stroke,
.app-editor .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, .app-editor .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
.app-editor .ql-snow.ql-toolbar button:hover .ql-stroke-miter, .app-editor .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter { stroke: var(--blue-bright); }
.app-editor .ql-snow.ql-toolbar button:hover .ql-fill, .app-editor .ql-snow.ql-toolbar button.ql-active .ql-fill,
.app-editor .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, .app-editor .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill { fill: var(--blue-bright); }
.app-editor .ql-snow.ql-toolbar button { border-radius: 4px; }
.app-editor .ql-snow.ql-toolbar button.ql-active { background: rgba(240,136,0,0.12); }
.app-editor .ql-snow.ql-toolbar button:focus-visible, .app-editor .ql-snow .ql-picker-label:focus-visible { outline: 2px solid var(--blue-bright); outline-offset: 1px; }
.app-editor .ql-snow .ql-picker-options {
  background: var(--bg-panel); border: 1px solid rgba(240,136,0,0.25) !important;
  border-radius: var(--radius); box-shadow: 0 10px 28px rgba(0,0,0,0.55); padding: 6px 8px;
}
.app-editor .ql-snow .ql-picker.ql-expanded .ql-picker-label { border-color: rgba(240,136,0,0.3); color: var(--text-bright); }
.app-editor .ql-snow .ql-color-picker .ql-picker-item { border-radius: 3px; width: 18px; height: 18px; margin: 2px; }
.app-editor .ql-snow .ql-color-picker .ql-picker-options { width: 136px; }
.app-editor .ql-snow .ql-color-picker .ql-picker-item:hover, .app-editor .ql-snow .ql-color-picker .ql-picker-item.ql-selected { border-color: var(--text-bright); }

/* Libellés des menus en français */
.app-editor .ql-snow .ql-picker.ql-header { width: 118px; }
.app-editor .ql-snow .ql-picker.ql-font   { width: 150px; }
.app-editor .ql-snow .ql-picker.ql-size   { width: 128px; }
/* Le texte ne passe jamais sous la flèche : place réservée à droite, et « … » si ça ne tient pas. */
.app-editor .ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) .ql-picker-label { padding-right: 20px; }
.app-editor .ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) .ql-picker-label::before {
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top;
}
.app-editor .ql-snow .ql-picker.ql-header .ql-picker-label::before, .app-editor .ql-snow .ql-picker.ql-header .ql-picker-item::before { content: 'Texte'; }
.app-editor .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, .app-editor .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { content: 'Grand titre'; }
.app-editor .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, .app-editor .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { content: 'Sous-titre'; }
.app-editor .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { font-family: var(--font-head); font-size: 1.15em; }
.app-editor .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { font-family: var(--font-sub); font-weight: 700; font-size: 1.05em; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label::before, .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item::before { content: 'Police normale'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="cinzel"]::before,   .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="cinzel"]::before   { content: 'Cinzel'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="rajdhani"]::before, .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="rajdhani"]::before { content: 'Rajdhani'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="oswald"]::before,   .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="oswald"]::before   { content: 'Oswald'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="mono"]::before,     .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="mono"]::before     { content: 'Machine à écrire'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,    .app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before    { content: 'Serif'; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="cinzel"]::before   { font-family: 'Cinzel', serif; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="rajdhani"]::before { font-family: 'Rajdhani', sans-serif; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="oswald"]::before   { font-family: 'Oswald', sans-serif; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="mono"]::before     { font-family: 'Share Tech Mono', monospace; }
.app-editor .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before    { font-family: Georgia, serif; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-label::before, .app-editor .ql-snow .ql-picker.ql-size .ql-picker-item::before { content: 'Taille normale'; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before, .app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { content: 'Petit'; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before, .app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { content: 'Grand'; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,  .app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before  { content: 'Très grand'; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before { font-size: .8em; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before { font-size: 1.2em; }
.app-editor .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before  { font-size: 1.45em; }

/* Bulle de lien */
.app-editor .ql-snow .ql-tooltip {
  background: var(--bg-panel); color: var(--text-primary);
  border: 1px solid rgba(240,136,0,0.3); border-radius: var(--radius);
  box-shadow: 0 10px 28px rgba(0,0,0,0.55); z-index: 5;
}
.app-editor .ql-snow .ql-tooltip input[type=text] {
  background: var(--bg-deep, #0b0603); color: var(--text-bright);
  border: 1px solid rgba(240,136,0,0.3); border-radius: 4px; height: 30px;
}
.app-editor .ql-snow .ql-tooltip a { color: var(--blue-bright); }
.app-editor .ql-snow .ql-tooltip::before { content: 'Lien :'; }
.app-editor .ql-snow .ql-tooltip[data-mode=link]::before { content: 'Adresse du lien :'; }
.app-editor .ql-snow .ql-tooltip a.ql-action::after { content: 'Modifier'; }
.app-editor .ql-snow .ql-tooltip.ql-editing a.ql-action::after { content: 'Enregistrer'; }
.app-editor .ql-snow .ql-tooltip a.ql-remove::before { content: 'Retirer'; }

/* Variantes de hauteur (système de factions) */
.app-editor[data-kind="short"] .ql-editor { min-height: 6.5rem; }
.app-editor[data-kind="doc"]   .ql-editor { min-height: 20rem; }

/* Champs éditeur du système de factions */
.fx-optional { font-family: var(--font-main); font-size: .7rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--text-muted); margin-left: .35rem; }
.fx-editor-field .app-editor-foot { margin-bottom: 0; }
.fx-rich { max-width: none; overflow-wrap: anywhere; }

.app-editor-foot { display: flex; justify-content: space-between; gap: 1rem; margin-top: .35rem; min-height: 1.1rem; font-size: .76rem; }
.app-editor-error { color: #ff9aaa; }
.app-editor-count { color: var(--text-muted); margin-left: auto; font-variant-numeric: tabular-nums; }
.app-editor-count.is-over { color: #ff9aaa; font-weight: 600; }
@media (max-width: 640px) {
  .app-editor .ql-toolbar.ql-snow .ql-formats { margin-right: 6px; }
  .app-editor .ql-snow .ql-picker.ql-font { width: 142px; }
}

/* ── Badge « Votant palier OR / DIAMANT / LÉGENDE » (includes/vote_tiers.php) ── */
.vote-tier-flair {
  --vt: #f0b030;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  max-width: 100%;
  box-sizing: border-box;
  font-family: var(--font-head, sans-serif);   /* police condensée (Oswald) */
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  line-height: 1.25;
  padding: .24rem .7rem;
  border-radius: 99px;
  color: var(--vt);
  background: color-mix(in srgb, var(--vt) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--vt) 40%, transparent);
  vertical-align: middle;
}
.vote-tier-flair svg { flex-shrink: 0; width: 10px; height: 10px; }
.vote-tier-flair .vtf-txt { white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.vote-tier-flair.is-gold    { --vt: #f0b030; }
.vote-tier-flair.is-diamond { --vt: #7ee8e0; box-shadow: 0 0 8px rgba(126,232,224,.18); }
.vote-tier-flair.is-legend  { --vt: #e05570; box-shadow: 0 0 8px rgba(224,85,112,.22); animation: navflair-pulse 2.4s ease-in-out infinite; }
.vote-tier-flair.is-lg { font-size: .76rem; padding: .28rem .8rem; }
/* Carte de la liste des membres (190 px) : badge « médaille » sur deux lignes,
   « VOTANT PALIER » en petit au-dessus du nom du palier, pour garder de l'air. */
.member-card .vote-tier-flair {
  margin: .25rem 0 .15rem;
  padding: .3rem .8rem .3rem .65rem;
  gap: .45rem;
  border-radius: 9px;
}
.member-card .vote-tier-flair svg { width: 13px; height: 13px; }
.member-card .vote-tier-flair .vtf-txt { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.1; overflow: visible; }
.member-card .vote-tier-flair .vtf-pre  { font-size: .52rem; letter-spacing: .14em; opacity: .75; font-weight: 500; }
.member-card .vote-tier-flair .vtf-tier { font-size: .8rem; letter-spacing: .1em; font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .vote-tier-flair.is-legend { animation: none; } }


/* ═══════════════════════════════════════════════════════════════════════
   Factions — pastille ronde (site public + administration)
   Variables posées par la page : --fx, --fx-rgb, --fx-fill, --fx-ink
   (voir factionColorVars() dans includes/faction_rich.php).
   ═══════════════════════════════════════════════════════════════════════ */
.fx-roundel {
  --size: 46px;
  flex-shrink: 0; width: var(--size); height: var(--size); border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--fx-fill, var(--fx)); color: var(--fx-ink);
  font-family: var(--font-head); font-weight: 700; line-height: 1;
  font-size: calc(var(--size) * 0.4); letter-spacing: 0.02em; text-transform: uppercase;
  box-shadow: 0 0 0 3px rgba(10,5,2,0.8), 0 0 0 4px rgba(var(--fx-rgb),0.6);
  transition: background 0.15s, color 0.15s;
}
.fx-roundel.is-long { font-size: calc(var(--size) * 0.3); }
.fx-roundel-lg { --size: 70px; }

/* ═══════════════════════════════════════════════════════════════════════
   Factions — pages publiques (/factions)
   Lisibles par tous, même sans compte. Les outils d'édition n'apparaissent
   que pour les membres (Leader, Officier, Équipe TaliaRP).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Liste des factions ── */
.fp-head { margin-bottom: 1.6rem; }
.fp-head h1 { font-family: var(--font-head); font-size: clamp(1.9rem, 4vw, 2.7rem); font-weight: 700; line-height: 1; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-bright); }
.fp-lede { max-width: 64ch; margin-top: 0.55rem; font-size: 0.95rem; line-height: 1.6; color: var(--text-secondary); }
.fp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 1rem; }
.fp-card {
  position: relative; display: flex; flex-direction: column; gap: 0.9rem;
  padding: 1.35rem 1.3rem 1.1rem 1.6rem; overflow: hidden;
  background: var(--bg-panel); border: 1px solid rgba(120,70,20,0.22); border-radius: 10px;
  color: inherit; text-decoration: none; transition: border-color 0.15s, background 0.15s;
}
.fp-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background: var(--fx); }
.fp-card:hover { border-color: rgba(var(--fx-rgb),0.5); background: linear-gradient(90deg, rgba(var(--fx-rgb),0.08), transparent 65%), var(--bg-panel); }
.fp-card:focus-visible { outline: 2px solid var(--fx); outline-offset: 2px; }
.fp-card-head { display: flex; align-items: center; gap: 1.1rem; min-width: 0; padding-right: 4.5rem; }
.fp-card-title { display: flex; flex-direction: column; min-width: 0; }
.fp-card-name { font-family: var(--font-head); font-size: 1.3rem; font-weight: 600; line-height: 1.15; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-bright); overflow-wrap: anywhere; }
.fp-card-motto { margin-top: 0.2rem; font-size: 0.85rem; font-style: italic; color: var(--text-muted); }
.fp-card-desc.is-empty { font-style: italic; color: var(--text-muted); }
.fp-card-desc { font-size: 0.88rem; line-height: 1.6; color: var(--text-secondary); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.fp-card-facts { display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem; margin-top: auto; padding-top: 0.8rem; border-top: 1px solid rgba(120,70,20,0.16); font-size: 0.8rem; color: var(--text-muted); }
.fp-card-facts strong { font-weight: 600; color: var(--text-secondary); }
.fp-badges { position: absolute; top: 0.9rem; right: 0.9rem; display: flex; gap: 0.35rem; }
.fp-badge { padding: 0.1rem 0.55rem; border-radius: 999px; border: 1px solid rgba(var(--fx-rgb),0.5); background: rgba(var(--fx-rgb),0.1); font-family: var(--font-sub); font-size: 0.72rem; font-weight: 700; color: var(--fx); white-space: nowrap; }
.fp-badge.is-private { border-color: rgba(120,70,20,0.4); background: transparent; color: var(--text-muted); }
.fp-empty { padding: 3rem 1rem; text-align: center; color: var(--text-muted); }

/* ── Page d'une faction ── */
.ix-back { display: inline-flex; align-items: center; gap: 0.3rem; margin-bottom: 0.9rem; font-family: var(--font-sub); font-size: 0.85rem; font-weight: 600; color: var(--text-muted); text-decoration: none; }
.ix-back:hover { color: var(--text-bright); }
.ix-back svg { width: 14px; height: 14px; }

.ix-header {
  position: relative; display: flex; align-items: center; gap: 1.6rem; padding: 1.75rem 2rem; overflow: hidden;
  background: linear-gradient(135deg, rgba(var(--fx-rgb),0.1) 0%, rgba(var(--fx-rgb),0.03) 40%, transparent 70%), var(--bg-panel);
  border: 1px solid rgba(var(--fx-rgb),0.22); border-bottom: none; border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
.ix-header::after { content: ''; position: absolute; right: 0; top: 0; bottom: 0; width: 40%; background: radial-gradient(ellipse at right center, rgba(var(--fx-rgb),0.08) 0%, transparent 70%); pointer-events: none; }
.ix-header .fx-roundel { position: relative; z-index: 1; }
.ix-info { position: relative; z-index: 1; min-width: 0; }
.ix-name { font-family: var(--font-head); font-size: clamp(1.4rem, 4vw, 2.2rem); font-weight: 900; line-height: 1; letter-spacing: 5px; text-transform: uppercase; color: var(--fx); text-shadow: 0 0 40px rgba(var(--fx-rgb),0.4); overflow-wrap: anywhere; }
.ix-tag { display: inline-flex; align-items: center; margin-left: 0.6rem; padding: 0.12rem 0.5rem; vertical-align: middle; border: 1px solid rgba(var(--fx-rgb),0.3); border-radius: 3px; background: rgba(var(--fx-rgb),0.12); font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 1.5px; color: var(--fx); }
.ix-badge { display: inline-flex; align-items: center; gap: 0.25rem; margin-left: 0.6rem; padding: 0.15rem 0.5rem; vertical-align: middle; border: 1px solid; border-radius: 3px; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 2px; text-transform: uppercase; }
.ix-badge.leader  { color: #e0a020; border-color: rgba(224,160,32,0.4); background: rgba(224,160,32,0.08); }
.ix-badge.staff   { color: #4a9eff; border-color: rgba(74,158,255,0.4); background: rgba(74,158,255,0.08); }
.ix-badge.officer { color: var(--fx); border-color: rgba(var(--fx-rgb),0.4); background: rgba(var(--fx-rgb),0.12); }
.ix-badge.private { color: var(--text-muted); border-color: rgba(120,70,20,0.4); background: transparent; }
.ix-meta { margin-top: 0.5rem; font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.5px; color: var(--text-muted); }
.ix-motto { margin-top: 0.3rem; font-size: 0.85rem; font-style: italic; color: var(--text-secondary); }

.ix-nav {
  position: relative; display: flex; overflow-x: auto; scrollbar-width: thin; margin-bottom: 1.25rem;
  background: rgba(var(--fx-rgb),0.04); border: 1px solid rgba(var(--fx-rgb),0.22); border-top: none;
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}
.ix-tab { position: relative; display: inline-flex; align-items: center; gap: 0.4rem; flex-shrink: 0; padding: 0.75rem 1.1rem; border-right: 1px solid rgba(var(--fx-rgb),0.1); font-size: 0.8rem; font-weight: 600; letter-spacing: 0.3px; white-space: nowrap; color: var(--text-muted); text-decoration: none; transition: color 0.15s, background 0.15s; }
.ix-tab:last-child { border-right: none; }
.ix-tab:hover { color: var(--text-bright); background: rgba(var(--fx-rgb),0.06); }
.ix-tab.active { color: var(--fx); background: rgba(var(--fx-rgb),0.1); font-weight: 700; }
.ix-tab.active::before { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--fx); }
.ix-tab.is-members { margin-left: auto; border-left: 1px solid rgba(var(--fx-rgb),0.18); }
.ix-tab.is-members + .ix-tab.is-members { margin-left: 0; border-left: none; }
.ix-tab svg { width: 13px; height: 13px; opacity: 0.75; }

.ix-member-note {
  display: flex; align-items: center; gap: 0.6rem; margin-bottom: 1.25rem; padding: 0.7rem 1rem;
  border: 1px dashed rgba(var(--fx-rgb),0.4); border-radius: var(--radius); background: rgba(var(--fx-rgb),0.05);
  font-size: 0.85rem; color: var(--text-secondary);
}
.ix-member-note svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--fx); }

.ix-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin-bottom: 1.5rem; overflow: hidden; background: rgba(var(--fx-rgb),0.15); border: 1px solid rgba(var(--fx-rgb),0.15); border-radius: var(--radius-lg); }
.ix-stat { position: relative; display: flex; flex-direction: column; gap: 0.3rem; padding: 1.25rem 1.5rem; background: var(--bg-panel); color: inherit; text-decoration: none; transition: background 0.15s; }
a.ix-stat:hover { background: rgba(var(--fx-rgb),0.05); }
.ix-stat-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin-bottom: 0.5rem; border-radius: 8px; background: rgba(var(--fx-rgb),0.1); color: var(--fx); }
.ix-stat-icon svg { width: 16px; height: 16px; }
.ix-stat-val { font-family: var(--font-head); font-size: 1.8rem; font-weight: 900; line-height: 1; color: var(--text-bright); }
.ix-stat-label { font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 2px; text-transform: uppercase; color: var(--text-muted); }

.ix-announce { position: relative; margin-bottom: 0.9rem; padding: 1.25rem 1.5rem; background: var(--bg-panel); border: 1px solid rgba(255,255,255,0.06); border-left: 3px solid rgba(var(--fx-rgb),0.25); border-radius: var(--radius-lg); transition: border-left-color 0.15s; }
.ix-announce:hover { border-left-color: var(--fx); }
.ix-announce.pinned { border-left-color: var(--fx); background: linear-gradient(135deg, rgba(var(--fx-rgb),0.05) 0%, var(--bg-panel) 50%); }
.ix-announce-pin { position: absolute; top: 1rem; right: 1rem; display: flex; align-items: center; gap: 0.3rem; padding: 0.12rem 0.45rem; border: 1px solid rgba(var(--fx-rgb),0.25); border-radius: 3px; background: rgba(var(--fx-rgb),0.12); font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 2px; text-transform: uppercase; color: var(--fx); }
.ix-announce-title { margin-bottom: 0.3rem; padding-right: 6rem; font-family: var(--font-head); font-size: 1.05rem; font-weight: 800; letter-spacing: 0.5px; color: var(--text-bright); }
.ix-announce-meta { margin-bottom: 0.8rem; font-family: var(--font-mono); font-size: 0.72rem; color: var(--text-muted); }
.ix-announce-body { font-size: 0.9rem; line-height: 1.75; color: var(--text-secondary); }

.ix-member-section { margin-bottom: 2rem; }
.ix-member-section-hd { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; padding-bottom: 0.6rem; border-bottom: 1px solid rgba(var(--fx-rgb),0.1); font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 3px; text-transform: uppercase; }
.ix-member-section-hd .ix-sect-count { margin-left: 0.25rem; font-size: 0.62rem; opacity: 0.5; }
.ix-member-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 0.8rem; }
.ix-member-card { position: relative; display: flex; align-items: center; gap: 0.9rem; padding: 0.9rem 1rem; overflow: hidden; background: var(--bg-panel); border: 1px solid rgba(255,255,255,0.05); border-radius: var(--radius-lg); text-decoration: none; transition: border-color 0.15s, background 0.15s, transform 0.15s; }
.ix-member-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: var(--mc, var(--fx)); }
.ix-member-card:hover { border-color: rgba(var(--fx-rgb),0.3); background: rgba(var(--fx-rgb),0.04); transform: translateX(2px); }
.ix-member-card .av { flex-shrink: 0; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; border: 2px solid var(--mc, rgba(var(--fx-rgb),0.4)); }
.ix-member-card .inf { flex: 1; min-width: 0; }
.ix-member-card .inf-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-head); font-size: 0.92rem; font-weight: 700; color: var(--text-bright); }
.ix-member-card .inf-role { margin-top: 0.15rem; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 1.5px; text-transform: uppercase; color: var(--mc, var(--fx)); }
.ix-member-card .inf-date { margin-top: 0.1rem; font-size: 0.7rem; color: var(--text-muted); }

.ix-doc { margin-bottom: 0.6rem; padding: 1rem 1.2rem; background: var(--bg-panel); border: 1px solid rgba(255,255,255,0.05); border-radius: var(--radius); transition: border-color 0.15s; }
.ix-doc:hover, .ix-doc.open { border-color: rgba(var(--fx-rgb),0.3); }
.ix-doc-head { display: flex; align-items: center; gap: 0.75rem; cursor: pointer; }
.ix-doc-head:focus-visible { outline: 2px solid var(--fx); outline-offset: 4px; border-radius: 4px; }
.ix-doc-chev { flex-shrink: 0; width: 16px; height: 16px; color: var(--text-muted); transition: transform 0.2s, color 0.15s; }
.ix-doc.open .ix-doc-chev { transform: rotate(180deg); color: var(--fx); }
.ix-doc-title { margin-bottom: 0.2rem; font-size: 0.95rem; font-weight: 700; color: var(--text-bright); }
.ix-doc-meta { font-family: var(--font-mono); font-size: 0.75rem; color: var(--text-muted); }
.ix-doc-body { display: none; margin-top: 0.75rem; padding: 1rem 0 0.25rem; border-top: 1px solid rgba(255,255,255,0.05); font-size: 0.9rem; line-height: 1.75; color: var(--text-secondary); }
.ix-doc.open .ix-doc-body { display: block; }
.ix-doc-link { margin-left: auto; font-family: var(--font-sub); font-size: 0.78rem; font-weight: 600; color: var(--text-muted); text-decoration: none; }
.ix-doc-link:hover { color: var(--fx); }

.ix-event { display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 0.8rem; padding: 1rem 1.25rem; background: var(--bg-panel); border: 1px solid rgba(255,255,255,0.05); border-radius: var(--radius-lg); transition: border-color 0.15s; }
.ix-event:hover { border-color: rgba(var(--fx-rgb),0.25); }
.ix-event-date { display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; min-width: 52px; height: 52px; background: rgba(var(--fx-rgb),0.1); border: 1px solid rgba(var(--fx-rgb),0.2); border-radius: var(--radius); font-family: var(--font-head); }
.ix-event-date .day { font-size: 1.4rem; font-weight: 900; line-height: 1; color: var(--fx); }
.ix-event-date .mon { font-size: 0.6rem; letter-spacing: 1px; text-transform: uppercase; color: var(--text-muted); }
.ix-event-title { margin-bottom: 0.2rem; font-size: 0.95rem; font-weight: 700; color: var(--text-bright); }
.ix-event-desc { font-size: 0.85rem; line-height: 1.55; color: var(--text-secondary); }
.ix-event-time { margin-top: 0.3rem; font-family: var(--font-mono); font-size: 0.73rem; color: var(--fx); }

.ix-fin-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin-bottom: 1.5rem; overflow: hidden; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.06); border-radius: var(--radius-lg); }
.ix-fin-stat { padding: 1rem 1.25rem; background: var(--bg-panel); }
.ix-fin-stat .lbl { margin-bottom: 0.35rem; font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 2px; text-transform: uppercase; color: var(--text-muted); }
.ix-fin-stat .val { font-family: var(--font-head); font-size: 1.4rem; font-weight: 900; }
.fin-in  { color: var(--green); }
.fin-out { color: #e45f6e; }

.ix-panel { margin-bottom: 1.25rem; overflow: hidden; background: var(--bg-panel); border: 1px solid rgba(255,255,255,0.06); border-radius: var(--radius-lg); }
.ix-panel-hd { display: flex; align-items: center; justify-content: space-between; padding: 0.85rem 1.25rem; border-bottom: 1px solid rgba(255,255,255,0.05); font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 2px; text-transform: uppercase; color: var(--text-secondary); }
.ix-panel-hd a { font-size: 0.68rem; color: var(--fx); text-decoration: none; }
.ix-panel-body { padding: 1.25rem; }
.ix-empty { padding: 2.5rem; text-align: center; color: var(--text-muted); }
.ix-action-bar { display: flex; justify-content: flex-end; margin-bottom: 1rem; }
.btn-ix {
  display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.5rem 1rem; cursor: pointer;
  border: 1px solid rgba(var(--fx-rgb),0.4); border-radius: var(--radius); background: rgba(var(--fx-rgb),0.1); color: var(--fx);
  font-family: var(--font-head); font-size: 0.78rem; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; text-decoration: none;
  transition: background 0.15s, border-color 0.15s;
}
.btn-ix:hover { background: rgba(var(--fx-rgb),0.2); border-color: var(--fx); }
.btn-ix svg { width: 13px; height: 13px; }
.btn-ix-danger { border-color: rgba(228,95,110,0.3); background: rgba(228,95,110,0.08); color: #e45f6e; }
.btn-ix-danger:hover { background: rgba(228,95,110,0.18); border-color: rgba(228,95,110,0.6); }
.btn-ix-sm { padding: 0.3rem 0.65rem; font-size: 0.7rem; }
.ix-item-actions { display: flex; justify-content: flex-end; align-items: center; gap: 0.45rem; margin-top: 0.9rem; }
.ix-item-actions form, .ix-inline-form { margin: 0; }
.ix-edited { font-style: italic; }

.ix-modal { display: none; position: fixed; inset: 0; z-index: 999; align-items: center; justify-content: center; padding: 1rem; background: rgba(0,0,0,0.7); backdrop-filter: blur(4px); }
.ix-modal.open { display: flex; }
.ix-modal-box { position: relative; width: 100%; max-width: 500px; max-height: 90vh; overflow-y: auto; padding: 1.75rem; background: var(--bg-panel); border: 1px solid rgba(var(--fx-rgb),0.22); border-top: 3px solid var(--fx); border-radius: var(--radius-lg); box-shadow: 0 20px 60px rgba(0,0,0,0.5), 0 0 40px rgba(var(--fx-rgb),0.1); }
.ix-modal-box.is-wide { max-width: 820px; }
.ix-modal-title { margin-bottom: 1.4rem; padding-right: 2rem; font-family: var(--font-head); font-size: 1rem; font-weight: 800; letter-spacing: 3px; text-transform: uppercase; color: var(--fx); }
.ix-modal-close { position: absolute; top: 1rem; right: 1rem; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; cursor: pointer; border: 1px solid rgba(255,255,255,0.1); border-radius: 50%; background: rgba(255,255,255,0.05); color: var(--text-muted); transition: background 0.15s, color 0.15s; }
.ix-modal-close:hover { background: rgba(255,255,255,0.1); color: var(--text-bright); }
.ix-modal .btn-primary[type="submit"] { width: 100%; justify-content: center; }

.ix-members-preview { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.ix-member-thumb { display: flex; flex-direction: column; align-items: center; gap: 0.3rem; width: 64px; text-decoration: none; }
.ix-member-thumb img { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; border: 2px solid; }
.ix-member-thumb span { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: center; font-size: 0.68rem; color: var(--text-muted); }

/* Texte mis en forme, aux couleurs de la faction */
.ix-rich { font-size: 0.9rem; line-height: 1.75; color: var(--text-secondary); }
.ix-rich .app-rich blockquote { border-left-color: var(--fx); }
.ix-rich .app-rich h2, .ix-rich .app-rich h3 { color: var(--text-bright); }
.ix-clamp { max-height: 11rem; overflow: hidden; -webkit-mask-image: linear-gradient(180deg,#000 60%,transparent); mask-image: linear-gradient(180deg,#000 60%,transparent); }
.ix-readmore { display: inline-block; margin-top: 0.6rem; font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 1px; color: var(--fx); text-decoration: none; }
.ix-readmore:hover { text-decoration: underline; }
.ix-modal .app-editor, .ix-panel .app-editor { border-color: rgba(var(--fx-rgb),0.25); }
.ix-modal .app-editor:focus-within, .ix-panel .app-editor:focus-within { border-color: rgba(var(--fx-rgb),0.6); box-shadow: 0 0 0 3px rgba(var(--fx-rgb),0.12); }
.ix-modal .app-editor .ql-toolbar.ql-snow, .ix-panel .app-editor .ql-toolbar.ql-snow { border-bottom-color: rgba(var(--fx-rgb),0.18); }

.ix-grid-2 { display: grid; grid-template-columns: 2fr 1fr; gap: 0.75rem; }
.ix-check { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1.2rem; }
.ix-check label { margin: 0; font-family: var(--font-main); font-size: 0.86rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--text-secondary); cursor: pointer; }

@media (max-width: 760px) {
  .ix-header { flex-direction: column; align-items: flex-start; gap: 1rem; padding: 1.3rem; }
  .ix-stats { grid-template-columns: repeat(2,1fr); }
  .ix-fin-stats { grid-template-columns: 1fr; }
  .ix-grid-2 { grid-template-columns: 1fr; }
  .ix-tab.is-members { margin-left: 0; }
  .ix-announce { padding: 1.1rem 1.1rem; }
  .ix-modal-box { padding: 1.3rem 1.1rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ix-member-card, .ix-doc-chev, .fp-card { transition: none; }
  .ix-member-card:hover { transform: none; }
}
