:root {
  --bleu: #0055A4;
  --blanc: #ffffff;
  --rouge: #EF4135;
  --bg: #f4f6f9;
  --surface: #ffffff;
  --text: #1c2530;
  --muted: #64748b;
  --border: #e2e8f0;
  --pos: #16a34a;
  --neg: #dc2626;
  --gold: #a97a09;
  --radius: 14px;
  --shadow: 0 8px 24px rgba(15, 23, 42, .07), 0 1px 3px rgba(15, 23, 42, .08);
  --tint: rgba(15, 23, 42, .028);
  /* Largeur max du contenu (.view + le padding centré de .topbar s'alignent sur la même
     valeur). Sur un écran très large/ultra-wide, 1280px fixe laissait des marges énormes
     inutilisées ; on l'augmente par paliers via cette seule variable pour que les deux
     restent synchronisés sans dupliquer de calc(). */
  --content-max: 1280px;
}
@media (min-width:1600px) { :root { --content-max: 1440px; } }
@media (min-width:2000px) { :root { --content-max: 1620px; } }

/* Dossier de carrière */
.career-page { display:grid; gap:26px; max-width:1500px; margin:0 auto; }
.career-hero { position:relative; overflow:hidden; display:grid; grid-template-columns:minmax(0,1fr) 190px; gap:28px; min-height:280px; padding:42px 48px; border-radius:25px; color:#fff; background:radial-gradient(circle at 82% 15%,rgba(224,180,79,.25),transparent 24%),radial-gradient(circle at 8% 120%,rgba(28,126,196,.5),transparent 42%),linear-gradient(130deg,#0c2139,#084e87 60%,#12345a); box-shadow:0 22px 55px rgba(11,35,62,.2); }
.career-hero::before { content:""; position:absolute; right:-100px; bottom:-230px; width:500px; height:500px; border:1px solid rgba(255,255,255,.09); border-radius:50%; box-shadow:0 0 0 50px rgba(255,255,255,.025),0 0 0 100px rgba(255,255,255,.018); }
.career-hero-copy { position:relative; z-index:1; align-self:center; }
.career-hero .eyebrow { color:#e5c778; }
.career-hero h1 { margin:6px 0 0; color:#fff; font-size:clamp(2.6rem,5vw,4.8rem); line-height:.95; letter-spacing:-.055em; }
.career-rank { margin:13px 0 5px !important; color:#fff !important; font-family:Georgia,serif; font-size:1.35rem; }
.career-hero-copy > p:last-of-type { max-width:690px; margin:0; color:#cbd9e6; line-height:1.55; }
.career-identity-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
.career-identity-tags span { padding:7px 11px; border:1px solid rgba(255,255,255,.14); border-radius:99px; color:#e6eef6; background:rgba(255,255,255,.07); font-size:.76rem; font-weight:700; }
.career-identity-tags span[style] { box-shadow:inset 3px 0 var(--party); }
.career-level-tag { display:none; }
.career-hero-seal { position:relative; z-index:1; align-self:center; display:flex; flex-direction:column; align-items:center; justify-content:center; width:170px; height:170px; border:1px solid rgba(229,199,120,.4); border-radius:50%; background:rgba(4,20,36,.22); box-shadow:inset 0 0 0 8px rgba(255,255,255,.035),0 15px 38px rgba(3,15,27,.2); backdrop-filter:blur(8px); }
.career-hero-seal > span { color:#e5c778; font-size:3.4rem; line-height:1; }
.career-hero-seal strong { margin-top:10px; color:#fff; }
.career-hero-seal small { margin-top:3px; color:#9fb4c8; }
.career-xp-bar { overflow:hidden; width:112px; height:5px; margin-top:8px; border-radius:99px; background:rgba(255,255,255,.15); }
.career-xp-bar i { display:block; height:100%; border-radius:inherit; background:#e5c778; }
.career-jumpnav { position:sticky; top:74px; z-index:20; display:flex; gap:4px; overflow-x:auto; padding:6px; border:1px solid var(--border); border-radius:15px; background:color-mix(in srgb,var(--surface) 94%,transparent); box-shadow:0 8px 24px rgba(15,23,42,.07); backdrop-filter:blur(14px); scrollbar-width:none; }
.career-jumpnav::-webkit-scrollbar { display:none; }
.career-jumpnav a { flex:1 0 auto; padding:9px 14px; border-radius:10px; color:var(--muted); font-size:.75rem; font-weight:800; text-align:center; text-decoration:none; }
.career-jumpnav a:hover,.career-jumpnav a:focus-visible { color:var(--bleu); background:rgba(0,85,164,.08); }
.career-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.career-kpi { display:flex; flex-direction:column; min-height:132px; padding:20px 22px; border:1px solid var(--border); border-radius:17px; background:var(--surface); box-shadow:var(--shadow); }
.career-kpi strong { color:var(--text); font-size:2.2rem; line-height:1; letter-spacing:-.05em; }
.career-kpi span { margin-top:9px; color:var(--text); font-size:.85rem; font-weight:800; }
.career-kpi small { margin-top:auto; padding-top:8px; color:var(--muted); font-size:.7rem; }
.career-next { overflow:hidden; border:1px solid rgba(16,128,117,.25); border-radius:20px; background:linear-gradient(130deg,rgba(15,118,110,.1),var(--surface) 50%,rgba(0,85,164,.07)); }
.career-next > header,.career-section > header { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding:24px 26px; }
.career-next h2,.career-section h2 { margin:3px 0 5px; color:var(--text); font-size:1.55rem; letter-spacing:-.035em; }
.career-next header p,.career-section header p { margin:0; max-width:700px; color:var(--muted); font-size:.86rem; line-height:1.5; }
.career-next > header > span,.career-section > header > span { color:var(--muted); font-size:.72rem; font-weight:700; }
.career-next > div { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; border-top:1px solid rgba(16,128,117,.18); background:rgba(16,128,117,.14); }
.career-next article { display:grid; grid-template-columns:42px 1fr; gap:13px; padding:20px 22px; background:var(--surface); }
.career-next article > span { display:grid; place-items:center; width:42px; height:42px; border-radius:12px; color:#0f766e; background:rgba(15,118,110,.1); font-size:1.2rem; font-weight:900; }
.career-next h3 { margin:0; color:var(--text); font-size:.9rem; }
.career-next p { min-height:42px; margin:5px 0 12px; color:var(--muted); font-size:.74rem; line-height:1.45; }
.career-section { scroll-margin-top:150px; overflow:hidden; border:1px solid var(--border); border-radius:20px; background:var(--surface); box-shadow:0 8px 28px rgba(15,23,42,.045); }
.career-profile-average { display:flex; flex-direction:column; align-items:flex-end; color:var(--bleu) !important; font-size:2.2rem !important; line-height:1; letter-spacing:-.05em; }
.career-profile-average small { margin-top:3px; color:var(--muted); font-size:.65rem; letter-spacing:0; }
.career-stat-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; border-top:1px solid var(--border); background:var(--border); }
.career-stat { padding:22px; background:var(--surface); }
.career-stat > div:first-child { display:grid; grid-template-columns:38px 1fr auto; align-items:center; gap:11px; }
.career-stat > div:first-child > span { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:var(--bleu); background:rgba(0,85,164,.08); font-size:1rem; font-weight:900; }
.career-stat h3 { margin:0; color:var(--text); font-size:.88rem; }
.career-stat h3 + small { color:var(--muted); font-size:.66rem; }
.career-stat strong { color:var(--text); font-size:1.55rem; letter-spacing:-.04em; }
.career-stat-bar { overflow:hidden; height:7px; margin-top:17px; border-radius:99px; background:var(--border); }
.career-stat-bar i { display:block; width:var(--value); height:100%; border-radius:inherit; background:linear-gradient(90deg,#0d7f79,var(--bleu)); }
.career-stat p { min-height:42px; margin:12px 0 9px; color:var(--muted); font-size:.75rem; line-height:1.45; }
.career-stat footer { padding-top:9px; border-top:1px dashed var(--border); color:var(--text); font-size:.65rem; font-weight:700; }
.career-aura-badge { padding:6px 14px; border-radius:99px; color:#fff; background:linear-gradient(120deg,#0d7f79,var(--bleu)); font-size:.72rem; font-weight:800; }
.career-aura-body { display:flex; align-items:center; gap:28px; padding:0 26px; }
.career-aura-value { display:flex; align-items:baseline; gap:6px; }
.career-aura-value strong { color:var(--text); font-size:3.2rem; letter-spacing:-.05em; }
.career-aura-value small { color:var(--muted); font-size:.9rem; }
.career-aura-facts { display:flex; flex:1; gap:24px; padding-left:24px; border-left:1px solid var(--border); }
.career-aura-facts > div { display:flex; flex-direction:column; }
.career-aura-facts strong { color:var(--text); font-size:1.3rem; letter-spacing:-.03em; }
.career-aura-facts span { margin-top:2px; color:var(--muted); font-size:.72rem; }
.career-aura-section > p.small { margin:16px 26px 22px; }
.career-talent-points { display:flex; flex-direction:column; align-items:flex-end; color:var(--bleu) !important; font-size:2.2rem !important; line-height:1; letter-spacing:-.05em; }
.career-talent-points small { margin-top:3px; color:var(--muted); font-size:.65rem; letter-spacing:0; }
.career-talent-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; border-top:1px solid var(--border); background:var(--border); }
.career-talent { display:grid; grid-template-columns:38px 1fr auto; align-items:start; gap:11px; padding:22px; background:var(--surface); }
.career-talent.active { box-shadow:inset 4px 0 var(--bleu); }
.career-talent > span { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:var(--bleu); background:rgba(0,85,164,.08); font-size:1rem; font-weight:900; }
.career-talent h3 { margin:0; color:var(--text); font-size:.88rem; }
.career-talent p { margin:6px 0 10px; color:var(--muted); font-size:.75rem; line-height:1.45; }
.career-talent-ranks { display:flex; gap:4px; margin-bottom:8px; }
.career-talent-ranks i { width:16px; height:6px; border-radius:99px; background:var(--border); }
.career-talent-ranks i.filled { background:var(--bleu); }
.career-talent small { display:block; color:var(--text); font-size:.72rem; font-weight:700; }
.career-talent footer { margin-top:6px; color:var(--muted); font-size:.66rem; }
.career-talent > button { align-self:center; }
.career-talent-maxed { align-self:center; color:var(--muted); font-size:.7rem; font-weight:800; }
.career-mandate-list { display:grid; gap:12px; padding:0 24px 24px; }
.career-mandate { overflow:hidden; border:1px solid var(--border); border-radius:16px; background:var(--surface); }
.career-mandate.active { border-color:rgba(0,85,164,.35); box-shadow:inset 4px 0 var(--bleu); }
.career-mandate > header { display:grid; grid-template-columns:48px 1fr auto; align-items:center; gap:14px; padding:18px 20px; background:var(--tint); }
.career-mandate-icon { display:grid; place-items:center; width:46px; height:46px; border-radius:50%; color:#815d12; background:#f8edd0; font-size:1.25rem; }
.career-mandate h3 { margin:2px 0; color:var(--text); font-size:1rem; }
.career-mandate header p { margin:0; color:var(--muted); font-size:.72rem; }
.career-mandate header > .badge { max-width:360px; white-space:normal; text-align:center; }
.career-mandate-facts { display:flex; flex-wrap:wrap; gap:1px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); background:var(--border); }
.career-mandate-facts > span { min-width:130px; flex:1; display:flex; flex-direction:column; padding:14px 18px; background:var(--surface); }
.career-mandate-facts b { color:var(--text); font-size:1.1rem; }
.career-mandate-facts small { color:var(--muted); font-size:.63rem; }
.career-mandate > .link-btn { margin:12px 18px; }
.career-history { background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--surface) 94%,#eaf0f7)); }
.career-timeline { position:relative; display:grid; gap:0; max-width:980px; padding:2px 28px 30px; }
.career-timeline::before { content:""; position:absolute; left:49px; top:5px; bottom:35px; width:2px; background:var(--border); }
.career-timeline-item { position:relative; display:grid; grid-template-columns:44px 1fr; gap:16px; padding:13px 0; }
.career-timeline-marker { position:relative; z-index:1; padding-top:2px; }
.career-timeline-marker span { display:grid; place-items:center; width:42px; height:42px; border:5px solid var(--surface); border-radius:50%; color:#456075; background:#dfe7ee; box-shadow:0 0 0 1px var(--border); font-size:.85rem; font-weight:900; }
.career-timeline-item.gold .career-timeline-marker span { color:#805d12; background:#f4dfaa; }.career-timeline-item.green .career-timeline-marker span { color:#08734a; background:#c9eddd; }.career-timeline-item.red .career-timeline-marker span { color:#a8322a; background:#f8d4d1; }.career-timeline-item.purple .career-timeline-marker span { color:#6845a8; background:#e4d9f8; }.career-timeline-item.blue .career-timeline-marker span { color:#075997; background:#d5e9f8; }
.career-timeline-item time { color:var(--bleu); font-size:.65rem; font-weight:900; text-transform:uppercase; letter-spacing:.08em; }
.career-timeline-item h3 { margin:3px 0; color:var(--text); font-size:.92rem; }
.career-timeline-item p { margin:0; color:var(--muted); font-size:.76rem; line-height:1.45; }
.career-timeline-item .link-btn { margin-top:5px; padding:0; font-size:.68rem; }
.career-timeline-archive { border-top:1px solid var(--border); }
.career-timeline-archive > summary { margin:0; padding:17px 28px; color:var(--bleu); background:var(--tint); cursor:pointer; font-size:.76rem; font-weight:800; }
.career-timeline-archive > .career-timeline { margin-top:12px; }
.career-record-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:1px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); background:var(--border); }
.career-record-grid article { min-height:145px; padding:20px; background:var(--surface); }
.career-record-grid span { color:var(--muted); font-size:.65rem; font-weight:900; text-transform:uppercase; letter-spacing:.07em; }
.career-record-grid strong { display:block; margin:7px 0; color:var(--text); font-size:2rem; letter-spacing:-.05em; }
.career-record-grid p { margin:0; color:var(--muted); font-size:.7rem; line-height:1.45; }
.career-election-record { padding:24px; }
.career-election-record h3 { margin:0 0 14px; color:var(--text); }
.career-election-record td > small { display:block; margin-top:3px; color:var(--muted); }.career-result { display:inline-flex; padding:4px 8px; border-radius:99px; font-size:.68rem; font-weight:800; }.career-result.won { color:#08734a; background:#dff5e9; }.career-result.lost { color:#765050; background:#f1e8e8; }.career-result.pending { color:#075997; background:#e0eef8; }
.career-milestone-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; border-top:1px solid var(--border); background:var(--border); }
.career-milestone { display:grid; grid-template-columns:44px 1fr; gap:13px; min-height:150px; padding:21px; opacity:.64; background:var(--surface); }
.career-milestone.unlocked { opacity:1; background:linear-gradient(135deg,rgba(225,180,77,.1),var(--surface) 48%); }
.career-milestone > span { display:grid; place-items:center; width:42px; height:42px; border-radius:50%; color:#687787; background:var(--border); font-size:1.1rem; font-weight:900; }
.career-milestone.unlocked > span { color:#79570f; background:#f2dfaf; box-shadow:0 0 0 4px rgba(229,193,104,.15); }
.career-milestone h3 { margin:0; color:var(--text); font-size:.86rem; }.career-milestone p { min-height:38px; margin:5px 0 10px; color:var(--muted); font-size:.7rem; line-height:1.4; }.career-milestone small { color:var(--muted); font-size:.63rem; font-weight:700; }
.career-progress { overflow:hidden; height:5px; margin-bottom:5px; border-radius:99px; background:var(--border); }.career-progress i { display:block; height:100%; border-radius:inherit; background:#b98a24; }
.career-empty { grid-column:1/-1; padding:42px; color:var(--muted); text-align:center; }.career-empty > span { font-size:2.2rem; }.career-empty h3 { margin:10px 0 5px; color:var(--text); }.career-empty p { margin:0 auto 16px; max-width:520px; }

@media (max-width:1050px) {
  .career-kpis { grid-template-columns:repeat(2,1fr); }.career-next > div,.career-stat-grid,.career-milestone-grid,.career-talent-grid { grid-template-columns:repeat(2,1fr); }.career-record-grid { grid-template-columns:repeat(3,1fr); }
}
@media (max-width:720px) {
  .career-page { gap:16px; }.career-hero { grid-template-columns:1fr; min-height:0; padding:28px 22px; }.career-hero h1 { font-size:2.8rem; }.career-hero-seal { display:none; }.career-level-tag { display:inline-block; }.career-jumpnav { top:56px; margin:0 -4px; }.career-jumpnav a { flex:0 0 auto; }.career-kpis { gap:8px; }.career-kpi { min-height:112px; padding:16px; }.career-kpi strong { font-size:1.7rem; }.career-next > header,.career-section > header { align-items:flex-start; padding:20px; }.career-next > header > span,.career-section > header > span { display:none; }.career-next > div,.career-stat-grid,.career-milestone-grid,.career-record-grid,.career-talent-grid { grid-template-columns:1fr; }.career-next article { padding:18px; }.career-stat p { min-height:0; }.career-aura-body { flex-direction:column; align-items:flex-start; gap:16px; padding:0 20px; }.career-aura-facts { padding-left:0; border-left:none; }.career-mandate-list { padding:0 14px 16px; }.career-mandate > header { grid-template-columns:44px 1fr; }.career-mandate header > .badge { grid-column:1/-1; justify-self:start; margin-left:58px; }.career-mandate-facts > span { min-width:50%; }.career-timeline { padding:0 16px 22px; }.career-timeline::before { left:37px; }.career-timeline-item { grid-template-columns:42px 1fr; gap:11px; }.career-election-record { padding:16px; }
}

@media (prefers-color-scheme:dark) {
  .career-hero { background:radial-gradient(circle at 82% 15%,rgba(224,180,79,.2),transparent 24%),linear-gradient(130deg,#09192a,#10395c 60%,#182b43); }
  .career-mandate-icon,.career-milestone.unlocked > span { color:#e3c879; background:#40371f; }.career-timeline-marker span { border-color:var(--surface); }.career-timeline-item.gold .career-timeline-marker span { color:#e1c77b; background:#44391e; }.career-timeline-item.green .career-timeline-marker span { color:#8ce0ba; background:#173e32; }.career-timeline-item.red .career-timeline-marker span { color:#f2a49e; background:#482523; }.career-timeline-item.purple .career-timeline-marker span { color:#c8acf2; background:#33254b; }.career-timeline-item.blue .career-timeline-marker span { color:#9bcff2; background:#17374f; }.career-result.won { color:#8ce0ba; background:#173e32; }.career-result.lost { color:#d8b3b3; background:#3a2929; }.career-result.pending { color:#9bcff2; background:#17374f; }
}

/* Fiche membre : dossier politique public, volontairement distinct du profil rôleplay Agora. */
.member-page { display:grid; gap:16px; max-width:1500px; margin:0 auto; }
.member-topbar { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; padding:8px 10px; border:1px solid var(--border); border-radius:14px; background:var(--surface); box-shadow:0 6px 20px rgba(15,23,42,.05); }
.member-topbar button { width:max-content; border:0; padding:8px 10px; border-radius:9px; color:var(--bleu); background:transparent; cursor:pointer; font-weight:750; }
.member-topbar button:last-child { justify-self:end; color:#6d4aa7; background:rgba(105,72,166,.08); }
.member-topbar span { color:var(--muted); font-size:.7rem; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.member-hero { position:relative; overflow:hidden; min-height:290px; border-radius:24px; color:#fff; background:radial-gradient(circle at 80% 0,rgba(255,255,255,.2),transparent 32%),linear-gradient(125deg,#0b1f35,color-mix(in srgb,var(--member-cover) 82%,#0b1f35)); box-shadow:0 20px 50px rgba(12,31,52,.19); }
.profile-theme-hemicycle .member-hero { background:radial-gradient(circle at 72% 30%,rgba(240,199,104,.36),transparent 20%),linear-gradient(125deg,#4c1627,#8d3342 58%,#b98a36); }
.profile-theme-minuit .member-hero { background:radial-gradient(circle at 76% 22%,rgba(80,164,255,.45),transparent 18%),linear-gradient(125deg,#061426,#102c53 58%,#193b75); }
.profile-theme-salon .member-hero { background:radial-gradient(circle at 72% 25%,rgba(236,205,112,.48),transparent 19%),linear-gradient(125deg,#103c31,#2f6a55 58%,#cfb868); }
.profile-theme-manifeste .member-hero { background:linear-gradient(105deg,transparent 66%,rgba(186,35,49,.86) 66% 73%,transparent 73%),repeating-linear-gradient(0deg,rgba(41,47,54,.09) 0 1px,transparent 1px 14px),linear-gradient(125deg,#6a5b43,#b33540); }
.member-hero::after { content:""; position:absolute; right:-75px; top:-110px; width:380px; height:380px; border:1px solid rgba(255,255,255,.08); border-radius:50%; box-shadow:0 0 0 42px rgba(255,255,255,.025),0 0 0 84px rgba(255,255,255,.018); }
.member-cover-mark { position:relative; z-index:1; padding:24px 32px 70px; color:rgba(255,255,255,.65); font-size:.66rem; font-weight:900; text-transform:uppercase; letter-spacing:.13em; }
.member-identity { position:relative; z-index:2; display:grid; grid-template-columns:112px minmax(0,1fr) auto; align-items:end; gap:21px; padding:0 34px 30px; }
.member-avatar { display:grid; place-items:center; width:104px; height:104px; border:5px solid rgba(255,255,255,.9); border-radius:50%; color:#fff; background:var(--avatar); box-shadow:0 13px 30px rgba(3,17,31,.3); font-size:2.5rem; font-weight:900; }
.member-identity .eyebrow { color:#d9c583; }.member-identity h1 { display:flex; align-items:center; gap:7px; margin:3px 0; color:#fff; font-size:2.5rem; letter-spacing:-.05em; }.member-identity p { margin:0 0 9px; color:#d7e2ed; }.member-identity .badge { margin-right:6px; }
.member-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.member-actions .btn.secondary { border-color:rgba(255,255,255,.28); color:#fff; background:rgba(255,255,255,.08); }
.member-kpis { display:grid; grid-template-columns:repeat(6,1fr); overflow:hidden; border:1px solid var(--border); border-radius:17px; background:var(--border); box-shadow:var(--shadow); }
.member-kpis > div { display:flex; flex-direction:column; min-height:98px; padding:17px 18px; background:var(--surface); }.member-kpis strong { color:var(--text); font-size:1.7rem; letter-spacing:-.045em; }.member-kpis span { margin-top:auto; color:var(--muted); font-size:.66rem; font-weight:750; }
.member-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(290px,.62fr); gap:16px; align-items:start; }.member-layout > main,.member-layout > aside { display:grid; gap:16px; }.member-layout > aside { position:sticky; top:82px; }
.member-stat-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; border-top:1px solid var(--border); background:var(--border); }
.member-stat-grid article { display:grid; grid-template-columns:38px 1fr; align-items:center; gap:11px; padding:17px 20px; background:var(--surface); }.member-stat-grid article > span { display:grid; place-items:center; width:36px; height:36px; border-radius:11px; color:var(--bleu); background:rgba(0,85,164,.08); font-weight:900; }.member-stat-grid article > div > div { display:flex; justify-content:space-between; gap:8px; color:var(--text); font-size:.74rem; }.member-stat-grid article b { color:var(--muted); font-size:.68rem; }.member-stat-grid article i { display:block; overflow:hidden; height:5px; margin-top:7px; border-radius:99px; background:var(--border); }.member-stat-grid article em { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#0d7f79,var(--bleu)); }
.member-mandates { display:grid; gap:9px; padding:0 20px 22px; }.member-mandate { overflow:hidden; border:1px solid var(--border); border-radius:14px; background:var(--surface); }.member-mandate.active { border-color:rgba(0,85,164,.38); box-shadow:inset 4px 0 var(--bleu); }.member-mandate > header { display:grid; grid-template-columns:42px 1fr auto; align-items:center; gap:12px; padding:15px 17px; background:var(--tint); }.member-mandate > header > span { display:grid; place-items:center; width:40px; height:40px; border-radius:50%; color:#795a18; background:#f3e4ba; }.member-mandate h3 { margin:2px 0; color:var(--text); font-size:.9rem; }.member-mandate header p { margin:0; color:var(--muted); font-size:.67rem; }.member-mandate header > small { color:var(--muted); font-size:.64rem; font-weight:700; }.member-mandate > .tag-list { padding:11px 15px; border-top:1px solid var(--border); }
.member-election-table { padding:0 20px 22px; }.member-election-table td small { display:block; color:var(--muted); font-size:.63rem; }
.member-side-card { padding:21px; border:1px solid var(--border); border-radius:17px; background:var(--surface); box-shadow:0 7px 24px rgba(15,23,42,.045); }.member-side-card h2 { margin:4px 0 10px; color:var(--text); font-size:1.1rem; }.member-side-card > p { color:var(--muted); font-size:.76rem; line-height:1.55; }.member-about dl { display:grid; gap:0; margin:17px 0 0; }.member-about dl > div { display:grid; gap:3px; padding:11px 0; border-top:1px solid var(--border); }.member-about dt { color:var(--muted); font-size:.62rem; text-transform:uppercase; letter-spacing:.06em; }.member-about dd { margin:0; color:var(--text); font-size:.75rem; font-weight:700; }
.member-milestones { display:grid; gap:7px; }.member-milestones article { display:grid; grid-template-columns:34px 1fr; align-items:center; gap:9px; padding:9px; border-radius:11px; background:var(--tint); }.member-milestones article > span { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; color:#795a18; background:#f1dfad; font-weight:900; }.member-milestones strong,.member-milestones small { display:block; }.member-milestones strong { color:var(--text); font-size:.72rem; }.member-milestones small { margin-top:2px; color:var(--muted); font-size:.59rem; line-height:1.3; }
.member-activity-list { display:grid; grid-template-columns:1fr 1fr; gap:7px; }.member-activity-list span { display:flex; flex-direction:column; padding:11px; border-radius:10px; color:var(--muted); background:var(--tint); font-size:.62rem; }.member-activity-list b { color:var(--text); font-size:1rem; }.member-rp-link { display:block; margin-top:15px; color:#7351aa; text-align:left; font-size:.68rem; }
@media (max-width:1100px) { .member-kpis { grid-template-columns:repeat(3,1fr); }.member-layout { grid-template-columns:1fr; }.member-layout > aside { position:static; grid-template-columns:repeat(2,1fr); }.member-layout > aside > :last-child { grid-column:1/-1; } }
@media (max-width:720px) { .member-topbar { grid-template-columns:1fr 1fr; }.member-topbar span { display:none; }.member-topbar button:last-child { text-align:right; }.member-cover-mark { padding:20px 20px 55px; }.member-identity { grid-template-columns:76px 1fr; gap:14px; padding:0 20px 22px; }.member-avatar { width:72px; height:72px; border-width:4px; font-size:1.8rem; }.member-identity h1 { font-size:1.85rem; }.member-actions { grid-column:1/-1; justify-content:flex-start; }.member-kpis { grid-template-columns:repeat(2,1fr); }.member-kpis > div { min-height:82px; padding:13px; }.member-stat-grid { grid-template-columns:1fr; }.member-layout > aside { grid-template-columns:1fr; }.member-layout > aside > :last-child { grid-column:auto; }.member-mandate > header { grid-template-columns:38px 1fr; }.member-mandate header > small { grid-column:2; }.member-activity-list { grid-template-columns:1fr; } }
@media (prefers-color-scheme:dark) { .member-mandate > header > span,.member-milestones article > span { color:#e1c77b; background:#41371f; }.member-topbar button:last-child,.member-rp-link { color:#c8acf2; } }

/* Identité de personnage sur le réseau rôleplay Agora. */
.agora-persona-title { width:max-content; max-width:100%; margin:0; padding:3px 9px; border-radius:7px; color:#6845a8; background:rgba(104,69,168,.09); font-size:.68rem; font-weight:850; letter-spacing:.025em; white-space:nowrap; }
.agora-persona-motto { margin:3px 0 6px; padding-left:12px; border-left:2px solid color-mix(in srgb,var(--cover,#6845a8) 55%,#6845a8); color:var(--muted); font-family:Georgia,serif; font-size:.86rem; font-style:italic; line-height:1.5; }
.agora-profile-side > blockquote { margin:11px 0 16px; padding:11px 13px; border:1px solid rgba(104,69,168,.16); border-radius:10px; color:var(--text); background:rgba(104,69,168,.06); font-family:Georgia,serif; font-size:.8rem; line-height:1.45; }
.agora-persona-side-title { display:block; margin-top:4px; color:#6845a8 !important; font-family:Georgia,serif; font-size:1.1rem !important; }
.agora-rp-separator { display:grid; gap:3px; margin:14px 0 10px; padding:12px 0; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }.agora-rp-separator span { color:var(--muted); font-size:.59rem; font-weight:850; text-transform:uppercase; letter-spacing:.08em; }.agora-rp-separator b { color:var(--text); font-size:.75rem; }
.agora-rp-editor-note { margin:4px 0 10px; padding:9px 11px; border-radius:9px; color:#6845a8; background:rgba(104,69,168,.08); font-size:.65rem; font-weight:750; }
@media (prefers-color-scheme:dark) { .agora-persona-title,.agora-persona-side-title,.agora-rp-editor-note { color:#c8acf2 !important; }.agora-persona-title,.agora-rp-editor-note { background:rgba(104,69,168,.2); }.agora-profile-side > blockquote { border-color:rgba(176,139,238,.2); background:rgba(104,69,168,.14); } }

/* Tooltips globaux : légers, lisibles et compatibles avec les contrôles dynamiques. */
.ui-tooltip {
  --tooltip-arrow-left: 50%;
  position: fixed;
  z-index: 10050;
  width: max-content;
  max-width: min(310px, calc(100vw - 20px));
  padding: 8px 11px;
  border: 1px solid rgba(255, 255, 255, .13);
  border-radius: 8px;
  background: #152238;
  box-shadow: 0 9px 28px rgba(6, 18, 35, .3);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .005em;
  text-align: left;
  pointer-events: none;
  animation: ui-tooltip-in .12s ease-out;
}

.ui-tooltip[hidden] { display: none; }

.ui-tooltip::after {
  content: '';
  position: absolute;
  left: var(--tooltip-arrow-left);
  width: 8px;
  height: 8px;
  background: #152238;
  transform: translateX(-50%) rotate(45deg);
}

.ui-tooltip[data-placement="top"]::after {
  bottom: -5px;
  border-right: 1px solid rgba(255, 255, 255, .13);
  border-bottom: 1px solid rgba(255, 255, 255, .13);
}

.ui-tooltip[data-placement="bottom"]::after {
  top: -5px;
  border-top: 1px solid rgba(255, 255, 255, .13);
  border-left: 1px solid rgba(255, 255, 255, .13);
}

@keyframes ui-tooltip-in {
  from { opacity: 0; transform: translateY(2px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .ui-tooltip { animation: none; }
}

/* Boutique civique */
.civic-wallet-pill { gap: 5px; cursor: pointer; border: 1px solid rgba(174,130,30,.28) !important; background: linear-gradient(135deg, #fffaf0, #f7eed6) !important; color: #79520a !important; font-weight: 800; }
.civic-wallet-pill .tab-icon-svg { color: #bd8119; }
.civic-wallet-pill.is-boosted { background: linear-gradient(135deg, #12243d, #37265f) !important; border-color: rgba(192,151,255,.5) !important; color: #fff !important; box-shadow: 0 0 20px rgba(108,69,174,.16); }
.talent-pill { font-weight: 800; }
.talent-pill.has-points { border-color: rgba(229,199,120,.55) !important; background: linear-gradient(135deg,#12243d,#0c2139) !important; color: #e5c778 !important; box-shadow: 0 0 16px rgba(229,199,120,.28); animation: talent-pill-pulse 2.2s ease-in-out infinite; }
.talent-pill.has-points b { color: #fff; }
@keyframes talent-pill-pulse { 0%,100% { box-shadow: 0 0 10px rgba(229,199,120,.22); } 50% { box-shadow: 0 0 20px rgba(229,199,120,.45); } }
@media (prefers-reduced-motion: reduce) { .talent-pill.has-points { animation: none; } }
.career-talents-teaser { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:24px 26px; }
.career-talents-teaser h2 { margin:3px 0 5px; }
.talent-modal { max-width:640px; padding:0; overflow:hidden; }
.talent-modal-head { padding:25px 27px 20px; color:#fff; background:radial-gradient(circle at 82% 15%,rgba(224,180,79,.25),transparent 24%),linear-gradient(130deg,#0c2139,#084e87 60%,#12345a); }
.talent-modal-head .eyebrow { color:#e5c778; }
.talent-modal-head h2 { margin:4px 0 6px; font-size:24px; }
.talent-modal-head p { margin:0 0 12px; color:rgba(255,255,255,.82); font-size:12px; line-height:1.45; }
.talent-modal-xp { width:100%; height:6px; background:rgba(255,255,255,.15); }
.talent-modal-head small { display:block; margin-top:6px; color:#bcd2e6; font-size:10px; }
.talent-modal-points { display:flex; justify-content:flex-end; padding:14px 24px 0; }
.talent-modal-grid { grid-template-columns:1fr; gap:1px; padding:14px 0 4px; }
.shop-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0,1fr) 260px; gap: 38px; padding: clamp(28px,5vw,62px); border-radius: 28px; color: #fff; background: radial-gradient(circle at 76% 20%, rgba(226,170,50,.26), transparent 28%), radial-gradient(circle at 8% 110%, rgba(0,85,164,.42), transparent 44%), linear-gradient(135deg,#0b1728,#162d4a 58%,#352754); box-shadow: 0 22px 60px rgba(9,26,48,.22); }
.shop-hero::after { content:""; position:absolute; width:260px; height:260px; border:1px solid rgba(255,255,255,.08); border-radius:50%; right:-90px; top:-120px; box-shadow:0 0 0 38px rgba(255,255,255,.025),0 0 0 76px rgba(255,255,255,.02); }
.shop-hero-copy { position:relative; z-index:1; align-self:center; }
.shop-hero .eyebrow { color:#e6bf68; }
.shop-hero h1 { margin:7px 0 12px; max-width:680px; font-size:clamp(2rem,4vw,3.6rem); line-height:1.03; letter-spacing:-.045em; color:#fff; }
.shop-hero p { max-width:720px; margin:0; color:#c7d5e5; font-size:1.04rem; line-height:1.65; }
.shop-hero-actions { margin-top:21px; }
.shop-hero-actions .btn { border-color:#fff; color:#10243c; background:#fff; box-shadow:0 8px 22px rgba(0,0,0,.2); }
.shop-hero-actions .btn:hover { transform:translateY(-1px); filter:brightness(.97); }
.shop-hero-trust { display:flex; flex-wrap:wrap; gap:9px 18px; margin-top:24px; color:#dce8f4; font-size:.82rem; }
.shop-wallet-card { position:relative; z-index:1; align-self:stretch; display:flex; flex-direction:column; justify-content:center; min-height:220px; padding:28px; border:1px solid rgba(255,255,255,.14); border-radius:22px; background:rgba(255,255,255,.075); backdrop-filter:blur(12px); box-shadow:inset 0 1px rgba(255,255,255,.1); }
.shop-wallet-card > span { color:#aebed0; font-size:.78rem; text-transform:uppercase; letter-spacing:.1em; }
.shop-wallet-card > strong { margin-top:5px; font-size:3.4rem; line-height:1; letter-spacing:-.06em; color:#ffe4a4; }
.shop-wallet-card > small { margin-top:6px; color:#d3deea; }
.booster-live,.booster-inactive { margin-top:24px; padding-top:18px; border-top:1px solid rgba(255,255,255,.13); }
.booster-live { display:flex; align-items:center; gap:10px; }
.booster-live > i { width:10px; height:10px; flex:0 0 auto; border-radius:50%; background:#62e6ad; box-shadow:0 0 0 6px rgba(98,230,173,.12),0 0 20px #62e6ad; }
.booster-live div { display:flex; flex-direction:column; }
.booster-live span,.booster-inactive { color:#b9c8d8; font-size:.78rem; }
.booster-benefits { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; overflow:hidden; margin-top:18px; border:1px solid var(--border); border-radius:18px; background:var(--border); }
.booster-benefits > div { display:grid; grid-template-columns:auto 1fr; column-gap:13px; align-items:center; padding:19px 20px; background:var(--surface); }
.booster-benefits > div > span { grid-row:1/3; min-width:50px; color:#805b13; font-size:1.55rem; font-weight:900; letter-spacing:-.04em; }
.booster-benefits strong { font-size:.88rem; }
.booster-benefits small { color:var(--muted); font-size:.72rem; line-height:1.3; }
.shop-section { margin-top:40px; }
.shop-catalog-tabs { margin-top:28px; }
.shop-catalog-nav { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; overflow:visible; padding:7px; border:1px solid var(--border); border-radius:17px; background:var(--surface); box-shadow:0 8px 24px rgba(15,23,42,.05); }
.shop-catalog-nav button { position:relative; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:10px; margin:0; padding:13px 16px; border:0; border-radius:12px; text-align:left; }
.shop-catalog-nav button > span { grid-row:1/3; align-self:center; display:grid; place-items:center; width:34px; height:34px; border-radius:10px; background:var(--tint); font-size:17px; }
.shop-catalog-nav button b { color:var(--text); font-size:.84rem; }
.shop-catalog-nav button small { color:var(--muted); font-size:.67rem; font-weight:600; }
.shop-catalog-nav button.active { color:var(--bleu); background:rgba(0,85,164,.09); }
.shop-catalog-nav button.active > span { color:#fff; background:var(--bleu); box-shadow:0 5px 13px rgba(0,85,164,.2); }
.shop-tab-notice { position:absolute; right:9px; top:8px; display:grid; place-items:center; min-width:19px; height:19px; padding:0 5px; border:2px solid var(--surface); border-radius:99px; color:#fff; background:var(--rouge); box-shadow:0 3px 9px rgba(239,65,53,.28); font-size:.6rem; font-style:normal; font-weight:900; }
.shop-tab-panel > .shop-section:first-child { margin-top:28px; }
.shop-tab-panel[hidden] { display:none; }
.shop-balance-inline { padding:9px 13px; border-radius:999px; background:#f8edd1; color:#78520b; font-size:.82rem; font-weight:800; }
.booster-offers { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:18px; align-items:stretch; }
.booster-offer { position:relative; display:flex; flex-direction:column; min-height:300px; padding:26px; border:1px solid var(--border); border-radius:20px; background:var(--surface); box-shadow:var(--shadow); transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease; }
.booster-offer:hover { transform:translateY(-3px); box-shadow:var(--shadow); }
.booster-offer.featured { border-color:#b98223; background:linear-gradient(180deg,#fffaf0,var(--surface) 42%); box-shadow:0 18px 45px rgba(139,98,22,.13); }
.booster-popular { position:absolute; top:0; right:20px; transform:translateY(-50%); padding:5px 11px; border-radius:999px; color:#fff; background:linear-gradient(90deg,#9a6410,#d2982f); font-size:.69rem; font-weight:850; text-transform:uppercase; letter-spacing:.06em; }
.booster-popular.welcome { background:linear-gradient(90deg,#b42318,#e05243); box-shadow:0 6px 18px rgba(180,35,24,.22); }
.booster-popular.loyalty { background:linear-gradient(90deg,#5b3ea6,#8b5bd6); box-shadow:0 6px 18px rgba(91,62,166,.24); }
.booster-offer.welcome-offer { border-color:#dc5b4d; box-shadow:0 18px 48px rgba(180,35,24,.14); }
.booster-offer.loyalty-offer { border-color:#8b67cf; background:linear-gradient(180deg,#f8f4ff,var(--surface) 42%); box-shadow:0 18px 48px rgba(91,62,166,.14); }
.booster-welcome-price { display:flex; align-items:baseline; gap:8px; min-height:34px; margin:-8px 0 14px; }
.booster-welcome-price span { color:var(--muted); font-size:.85rem; text-decoration:line-through; }
.booster-welcome-price strong { color:#b42318; font-size:1.45rem; letter-spacing:-.04em; }
.booster-welcome-price.loyalty strong { color:#6745ae; }
.booster-welcome-price small { color:var(--muted); font-size:.68rem; font-weight:700; text-transform:uppercase; }
.booster-offer-duration { display:flex; align-items:flex-end; gap:6px; color:#9a6915; }
.booster-offer-duration strong { font-size:2.8rem; line-height:.9; letter-spacing:-.06em; }
.booster-offer-duration span { font-size:.82rem; font-weight:800; text-transform:uppercase; }
.booster-offer h3 { margin:18px 0 5px; font-size:1.12rem; }
.booster-price { color:var(--muted); }
.booster-price b { color:var(--text); font-size:1.12rem; }
.booster-offer > small { margin:12px 0 22px; color:var(--muted); line-height:1.45; }
.booster-offer-actions { margin-top:auto; display:flex; flex-direction:column; gap:7px; }
.booster-offer-actions > span { color:var(--muted); text-align:center; font-size:.7rem; }
.gift-vault { display:grid; grid-template-columns:auto 1fr auto; gap:18px; align-items:center; margin-top:38px; padding:22px 25px; border:1px solid rgba(19,139,113,.3); border-radius:20px; background:linear-gradient(135deg,rgba(19,139,113,.11),rgba(0,85,164,.06)); }
.gift-vault-icon { display:grid; place-items:center; width:58px; height:58px; border-radius:17px; background:var(--surface); box-shadow:var(--shadow); font-size:29px; }
.gift-vault h2 { margin:3px 0 4px; font-size:1.2rem; }
.gift-vault p { margin:0; color:var(--muted); font-size:.82rem; }
.gift-vault-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }
.shop-duo { position:relative; display:grid; grid-template-columns:220px minmax(0,1fr) 190px; gap:30px; align-items:center; overflow:hidden; margin-top:40px; padding:34px; border-radius:24px; color:#fff; background:radial-gradient(circle at 12% 50%,rgba(93,214,185,.18),transparent 25%),linear-gradient(125deg,#082a45,#075f78 55%,#133f65); box-shadow:0 18px 48px rgba(4,42,68,.2); }
.shop-duo::after { content:''; position:absolute; right:-70px; top:-110px; width:270px; height:270px; border:1px solid rgba(255,255,255,.08); border-radius:50%; box-shadow:0 0 0 35px rgba(255,255,255,.025),0 0 0 70px rgba(255,255,255,.02); }
.shop-duo-visual,.shop-duo-copy,.shop-duo-offer { position:relative; z-index:1; }
.shop-duo-visual { display:flex; align-items:center; justify-content:center; gap:13px; }
.duo-orbit { display:grid; justify-items:center; gap:7px; color:#cbe8ef; font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.duo-orbit i { display:grid; place-items:center; width:67px; height:67px; border:3px solid rgba(255,255,255,.8); border-radius:50%; color:#fff; background:#0b7891; box-shadow:0 0 0 7px rgba(255,255,255,.08),0 12px 28px rgba(0,0,0,.22); font-size:24px; font-style:normal; }
.duo-orbit.two i { background:linear-gradient(135deg,#7450b7,#b75e9a); }
.duo-link { color:#7fe0c9; font-size:28px; font-weight:300; }
.shop-duo .eyebrow { color:#7fe0c9; }
.shop-duo h2 { margin:5px 0 8px; color:#fff; font-size:1.75rem; }
.shop-duo-copy p { max-width:580px; margin:0; color:#cee0e8; line-height:1.55; }
.shop-duo-copy p strong { color:#fff; }
.shop-duo-points { display:flex; flex-wrap:wrap; gap:8px 15px; margin-top:17px; color:#b8d6df; font-size:.72rem; }
.shop-duo-offer { display:grid; gap:5px; padding:20px; border:1px solid rgba(255,255,255,.15); border-radius:18px; background:rgba(255,255,255,.08); backdrop-filter:blur(10px); text-align:center; }
.shop-duo-offer > small { color:#a9c8d3; font-size:.65rem; text-transform:uppercase; letter-spacing:.09em; }
.shop-duo-offer > strong { color:#fff0b8; font-size:2rem; letter-spacing:-.05em; }
.shop-duo-offer > span { color:#c5dae2; font-size:.73rem; }
.shop-duo-offer .btn { margin-top:10px; background:#fff; color:#07576e; }
.shop-duo-offer > em { color:#9ec7d3; font-size:.66rem; font-style:normal; }
.shop-personalization { padding-top:9px; }
.cosmetic-studio { display:grid; grid-template-columns:minmax(190px,.62fr) minmax(360px,1.38fr); gap:24px; align-items:center; margin-top:20px; padding:24px; border:1px solid rgba(0,85,164,.2); border-radius:20px; background:linear-gradient(135deg,rgba(0,85,164,.07),rgba(103,69,174,.055)); }
.cosmetic-studio h3 { margin:5px 0 7px; font-size:1.25rem; }
.cosmetic-studio > div:first-child p { margin:0; color:var(--muted); font-size:.78rem; line-height:1.5; }
.cosmetic-collection-strip { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:16px; }
.cosmetic-collection-strip button { display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; gap:0 7px; min-width:0; padding:8px 9px; border:1px solid var(--border); border-radius:10px; color:var(--text); background:var(--surface); cursor:pointer; text-align:left; }
.cosmetic-collection-strip button:hover,.cosmetic-collection-strip button.active { border-color:#7658bd; background:rgba(103,69,174,.09); }
.cosmetic-collection-strip button > span { grid-row:1/3; align-self:center; font-size:16px; }
.cosmetic-collection-strip button b { overflow:hidden; font-size:.68rem; text-overflow:ellipsis; white-space:nowrap; }
.cosmetic-collection-strip button small { color:var(--muted); font-size:.56rem; }
#cosmetic-live-studio { min-width:0; }
.cosmetic-live-stage { overflow:hidden; border:1px solid rgba(8,44,78,.16); border-radius:16px; background:var(--surface); box-shadow:0 13px 30px rgba(15,23,42,.12); }
.cosmetic-live-cover { position:relative; height:76px; background:linear-gradient(125deg,#174979,#071f3d); }
.profile-theme-hemicycle .cosmetic-live-cover { background:radial-gradient(circle at 72% 30%,rgba(240,199,104,.36),transparent 20%),linear-gradient(125deg,#4c1627,#8d3342 58%,#b98a36); }
.profile-theme-minuit .cosmetic-live-cover { background:radial-gradient(circle at 76% 22%,rgba(80,164,255,.45),transparent 18%),linear-gradient(125deg,#061426,#102c53 58%,#193b75); }
.profile-theme-salon .cosmetic-live-cover { background:radial-gradient(circle at 72% 25%,rgba(236,205,112,.48),transparent 19%),linear-gradient(125deg,#103c31,#2f6a55 58%,#cfb868); }
.profile-theme-manifeste .cosmetic-live-cover { background:linear-gradient(105deg,transparent 66%,rgba(186,35,49,.86) 66% 73%,transparent 73%),repeating-linear-gradient(0deg,rgba(41,47,54,.09) 0 1px,transparent 1px 14px),linear-gradient(125deg,#eee2c7,#cdb98c); }
.cosmetic-live-cover span { position:absolute; right:12px; top:10px; padding:4px 8px; border:1px solid rgba(255,255,255,.2); border-radius:999px; color:#fff; background:rgba(0,0,0,.15); font-size:.58rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.cosmetic-live-profile { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:center; min-height:66px; padding:0 17px 12px; }
.cosmetic-live-avatar { display:grid; place-items:center; width:65px; height:65px; margin-top:-23px; border:4px solid #fff; border-radius:50%; color:#fff; box-shadow:0 5px 14px rgba(0,31,61,.22); font-size:22px; font-weight:850; }
.cosmetic-live-profile > div { display:grid; gap:2px; }
.cosmetic-live-profile > div strong { font-size:.9rem; }
.cosmetic-live-profile > div strong,.account-hero h1,.agora-profile-identity h1 { display:flex; align-items:center; gap:6px; }
.agora-profile-identity h1 { flex-wrap:wrap; row-gap:2px; }
.cosmetic-live-profile > div span,.cosmetic-live-profile > small { color:var(--muted); font-size:.67rem; }
.cosmetic-live-legend { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.cosmetic-live-legend span { padding:4px 8px; border-radius:999px; color:#45617a; background:rgba(0,85,164,.08); font-size:.62rem; font-weight:750; }
.cosmetic-groups { display:grid; gap:25px; margin-top:20px; }
.cosmetic-group { padding:22px; border:1px solid var(--border); border-radius:20px; background:linear-gradient(145deg,var(--surface),var(--tint)); }
.cosmetic-group-head { display:flex; align-items:start; justify-content:space-between; gap:16px; margin-bottom:15px; }
.cosmetic-group-head h3 { margin:0 0 3px; font-size:1rem; }
.cosmetic-group-head p { margin:0; color:var(--muted); font-size:.75rem; }
.cosmetic-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.cosmetic-card { display:grid; grid-template-columns:110px minmax(0,1fr) auto; gap:16px; align-items:center; min-height:130px; padding:16px; border:1px solid var(--border); border-radius:16px; background:var(--surface); transition:border-color .18s ease,transform .18s ease; }
.cosmetic-card:hover { transform:translateY(-2px); border-color:rgba(0,85,164,.35); }
.cosmetic-card.equipped { border-color:rgba(19,139,113,.48); box-shadow:inset 0 0 0 1px rgba(19,139,113,.1); }
.cosmetic-card.previewing { border-color:#6e52b5; box-shadow:inset 0 0 0 2px rgba(110,82,181,.12); }
.cosmetic-card.tier-prestige { background:linear-gradient(145deg,var(--surface),rgba(181,132,31,.045)); }
.cosmetic-card.tier-iconique { border-color:rgba(103,69,174,.28); background:linear-gradient(145deg,var(--surface),rgba(103,69,174,.075)); }
.cosmetic-preview { position:relative; display:grid; place-items:center; height:92px; overflow:hidden; border-radius:13px; background:linear-gradient(145deg,var(--tint),rgba(0,85,164,.08)); }
.cosmetic-preview em { position:absolute; left:6px; bottom:6px; padding:3px 6px; border-radius:999px; color:#fff; background:#0c8c6c; font-size:.55rem; font-style:normal; font-weight:850; text-transform:uppercase; }
.cosmetic-card h3 { margin:0 0 5px; font-size:.9rem; }
.cosmetic-card p { margin:0; color:var(--muted); font-size:.72rem; line-height:1.42; }
.cosmetic-meta { display:flex; align-items:center; gap:6px; margin-bottom:5px; color:var(--muted); font-size:.57rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.cosmetic-meta b { padding:2px 5px; border-radius:99px; color:#805c13; background:rgba(181,132,31,.11); font-size:inherit; }
.tier-iconique .cosmetic-meta b { color:#6543a7; background:rgba(103,69,174,.12); }
.cosmetic-card .btn { min-width:128px; }
.cosmetic-card-actions { display:grid; justify-items:stretch; gap:6px; min-width:128px; }
.cosmetic-card-actions .cosmetic-try { padding:3px 7px; color:#5e45a1; font-weight:800; }
.identity-cosmetic-badge { display:inline-grid; place-items:center; width:18px; height:18px; flex:0 0 auto; border:2px solid #fff; border-radius:50%; color:#fff; background:linear-gradient(145deg,#1d9bf0,#0878c2); box-shadow:0 2px 7px rgba(29,155,240,.38); font-size:11px; font-weight:950; line-height:1; vertical-align:middle; }
.identity-cosmetic-badge.compact { width:14px; height:14px; border-width:1.5px; font-size:8px; }
.header-pseudo { display:flex; align-items:center; gap:4px; }
.cosmetic-badge-preview { display:flex; align-items:center; gap:7px; padding:8px 10px; border:1px solid #c9e8fa; border-radius:999px; color:#183a55; background:#fff; box-shadow:0 5px 14px rgba(19,92,137,.1); }
.cosmetic-badge-preview > i { max-width:70px; overflow:hidden; font-size:.68rem; font-style:normal; font-weight:850; text-overflow:ellipsis; white-space:nowrap; }
.cosmetic-avatar-preview { display:grid; place-items:center; width:60px; height:60px; border-radius:50%; background:#315e87; }
.cosmetic-avatar-preview i { color:#fff; font-size:22px; font-style:normal; font-weight:850; }
.cosmetic-avatar,.agora-profile-avatar,.cosmetic-avatar-preview { position:relative; }
.frame-tricolore { border-color:#fff !important; outline:2px solid #f8fafc; box-shadow:-4px 0 0 #0055a4,4px 0 0 #ef4135,0 0 0 6px rgba(255,255,255,.72),0 6px 18px rgba(0,31,61,.25) !important; }
.frame-tribune { border-color:#ffeba9 !important; outline:2px solid #80520c; box-shadow:0 0 0 5px #d7a33a,0 0 22px rgba(231,177,60,.7),0 7px 19px rgba(65,38,5,.3) !important; }
.frame-laurier { border-color:#e8d58a !important; outline:2px solid #35705c; box-shadow:0 0 0 5px #76a47d,0 0 0 7px rgba(224,194,104,.82),0 8px 20px rgba(24,82,63,.32) !important; }
.frame-media { border-color:#d7fbff !important; outline:2px solid #6b43c7; box-shadow:0 0 0 5px #11b8cf,0 0 0 8px rgba(126,66,220,.62),0 0 25px rgba(17,184,207,.78) !important; animation:cosmetic-media-pulse 2.4s ease-in-out infinite; }
@keyframes cosmetic-media-pulse { 50% { filter:brightness(1.12); box-shadow:0 0 0 5px #7e42dc,0 0 0 8px rgba(17,184,207,.58),0 0 30px rgba(126,66,220,.8) !important; } }
@media (prefers-reduced-motion: reduce) { .frame-media { animation:none; } }
.cosmetic-title-preview { padding:8px 11px; border:1px solid rgba(0,85,164,.2); border-radius:999px; color:#144f7f; background:#edf6ff; font-size:.69rem; font-weight:850; text-align:center; }
.cosmetic-title-preview.title-stratege { color:#5c3b9e; background:#f3effc; border-color:#d8c9f2; }
.cosmetic-title-preview.title-compromis { color:#24604d; background:#eef8f2; border-color:#a8cfbd; box-shadow:inset 0 -2px rgba(201,165,73,.25); }
.cosmetic-title-preview.title-visionnaire { color:#fff; border-color:#8658df; background:linear-gradient(100deg,#194e78,#7146bd); box-shadow:0 5px 14px rgba(79,58,150,.25); }
.cosmetic-theme-preview { position:relative; display:grid; place-items:center; width:88px; height:58px; overflow:hidden; border-radius:9px; background:linear-gradient(135deg,#681f32,#c1913a); box-shadow:0 7px 17px rgba(60,20,30,.2); }
.cosmetic-theme-preview.theme-minuit { background:radial-gradient(circle at 70% 25%,#367cc6,transparent 25%),linear-gradient(135deg,#07192e,#182c5b); }
.cosmetic-theme-preview.theme-salon { background:radial-gradient(circle at 70% 25%,#d9bf71,transparent 22%),linear-gradient(135deg,#164d3e,#39745e 58%,#eee2ba); }
.cosmetic-theme-preview.theme-manifeste { background:linear-gradient(105deg,transparent 67%,#c9323f 67% 74%,transparent 74%),repeating-linear-gradient(0deg,rgba(32,41,52,.08) 0 1px,transparent 1px 9px),linear-gradient(135deg,#f5ecd8,#d7c59f); }
.cosmetic-theme-preview i { position:absolute; width:65px; height:65px; border:9px solid rgba(255,255,255,.1); border-radius:50%; }
.cosmetic-theme-preview b { position:relative; color:#fff; font-size:19px; }
.profile-theme-hemicycle .agora-profile-banner { background:radial-gradient(circle at 72% 30%,rgba(240,199,104,.36),transparent 20%),linear-gradient(125deg,#4c1627,#8d3342 58%,#b98a36); }
.profile-theme-minuit .agora-profile-banner { background:radial-gradient(circle at 76% 22%,rgba(80,164,255,.45),transparent 18%),linear-gradient(125deg,#061426,#102c53 58%,#193b75); }
.profile-theme-salon .agora-profile-banner { background:radial-gradient(circle at 72% 25%,rgba(236,205,112,.48),transparent 19%),linear-gradient(125deg,#103c31,#2f6a55 58%,#cfb868); }
.profile-theme-manifeste .agora-profile-banner { background:linear-gradient(105deg,transparent 66%,rgba(186,35,49,.86) 66% 73%,transparent 73%),repeating-linear-gradient(0deg,rgba(41,47,54,.09) 0 1px,transparent 1px 14px),linear-gradient(125deg,#eee2c7,#cdb98c); }
.cosmetic-political-identity,.cosmetic-modal-title { color:var(--muted); font-size:.7rem; font-weight:750; }
.gift-trust-note { margin-top:12px; padding:10px 12px; border-radius:10px; color:#176b5b; background:rgba(19,139,113,.09); font-size:.75rem; }
.shop-free-route { box-sizing:border-box; display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:14px; align-items:center; width:100%; margin-top:18px; padding:13px 16px; border:1px solid rgba(177,123,24,.27); border-radius:15px; color:var(--text); background:linear-gradient(100deg,#fff9e9,var(--surface) 56%,rgba(19,139,113,.07)); box-shadow:0 7px 20px rgba(127,88,16,.07); cursor:pointer; text-align:left; }
.shop-free-route:hover { border-color:#b57e1c; transform:translateY(-1px); }
.shop-free-route.completed { border-color:rgba(19,139,113,.27); background:linear-gradient(100deg,#edf9f4,var(--surface)); }
.shop-free-route-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; color:#fff; background:linear-gradient(135deg,#b77916,#e0aa3d); box-shadow:0 6px 14px rgba(169,112,18,.22); font-size:18px; font-weight:900; }
.shop-free-route.completed .shop-free-route-icon { background:linear-gradient(135deg,#087a5e,#20b386); }
.shop-free-route > span:nth-child(2) { display:grid; gap:2px; }
.shop-free-route small { color:#8a6117; font-size:.62rem; font-weight:850; letter-spacing:.07em; text-transform:uppercase; }
.shop-free-route strong { font-size:.8rem; }
.shop-free-route > b { color:#95630e; font-size:1.1rem; }
.shop-free-route > em { color:var(--bleu); font-size:.7rem; font-style:normal; font-weight:800; white-space:nowrap; }
.earn-seals { position:relative; overflow:hidden; margin-top:28px; border:1px solid rgba(0,85,164,.2); border-radius:24px; background:var(--surface); box-shadow:0 15px 38px rgba(15,58,89,.1); }
.earn-seals::before { position:absolute; right:-70px; top:-90px; width:230px; height:230px; border:1px solid rgba(255,255,255,.08); border-radius:50%; box-shadow:0 0 0 34px rgba(255,255,255,.025),0 0 0 68px rgba(255,255,255,.018); content:''; pointer-events:none; }
.earn-seals-spotlight { display:grid; grid-template-columns:minmax(0,1fr) 270px; gap:28px; align-items:center; padding:30px; color:#fff; background:radial-gradient(circle at 84% 18%,rgba(79,218,174,.2),transparent 25%),linear-gradient(125deg,#072b4c,#075b74 58%,#126653); }
.earn-seals.completed .earn-seals-spotlight { background:radial-gradient(circle at 84% 18%,rgba(247,207,85,.2),transparent 25%),linear-gradient(125deg,#073d36,#0b715c 58%,#187a50); }
.earn-seals-copy { position:relative; z-index:1; }
.earn-seals-copy .eyebrow { color:#81e2cb; }
.earn-seals-copy h2 { max-width:700px; margin:6px 0 9px; color:#fff; font-size:clamp(1.55rem,3vw,2.35rem); letter-spacing:-.035em; }
.earn-seals-copy p { max-width:690px; margin:0; color:#c4dce2; font-size:.82rem; line-height:1.55; }
.earn-next-action { margin-top:18px; border-color:#fff; color:#0b4c52; background:#fff; }
.earn-complete-note { display:inline-block; margin-top:17px; color:#abf2d2; font-size:.76rem; font-weight:800; }
.earn-reward { position:relative; z-index:1; display:grid; grid-template-columns:1fr auto; gap:2px 14px; align-items:center; min-height:118px; padding:18px 20px; border:1px solid rgba(255,255,255,.16); border-radius:19px; background:rgba(255,255,255,.09); backdrop-filter:blur(10px); }
.earn-reward > span { color:#acd1d7; font-size:.63rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.earn-reward > strong { color:#ffe39c; font-size:1.75rem; letter-spacing:-.04em; }
.earn-reward > strong i { font-style:normal; }
.earn-reward > small { color:#b8d5d8; font-size:.62rem; }
.earn-ring { grid-column:2; grid-row:1/4; position:relative; display:grid; place-items:center; width:82px; height:82px; border-radius:50%; background:conic-gradient(#65e0b6 var(--progress),rgba(255,255,255,.13) 0); }
.earn-ring::before { position:absolute; inset:7px; border-radius:50%; background:#105467; content:''; }
.earn-ring b { position:relative; color:#fff; font-size:1.1rem; }
.activity-path { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; padding:18px 22px 0; }
.activity-step { position:relative; display:grid; grid-template-columns:auto 1fr; gap:9px; align-items:center; min-width:0; padding:12px; border:1px solid var(--border); border-radius:13px; color:var(--text); background:var(--surface); cursor:pointer; text-align:left; font:inherit; transition:border-color .16s,background .16s,transform .16s; }
.activity-step:hover { border-color:rgba(0,85,164,.38); background:rgba(0,85,164,.035); transform:translateY(-1px); }
.activity-step.done { border-color:rgba(19,139,113,.22); color:#08775b; background:rgba(19,139,113,.065); cursor:default; }
.activity-step-icon { display:grid; place-items:center; width:31px; height:31px; border-radius:10px; color:#075e9f; background:rgba(0,85,164,.09); font-size:14px; font-weight:900; }
.activity-step.done .activity-step-icon { color:#fff; background:#13906e; }
.activity-step div { display:grid; gap:2px; min-width:0; }
.activity-step b { overflow:hidden; font-size:.7rem; text-overflow:ellipsis; }
.activity-step small { overflow:hidden; color:var(--muted); font-size:.57rem; text-overflow:ellipsis; white-space:nowrap; }
.activity-step em { position:absolute; right:7px; top:6px; color:#9babbb; font-size:.52rem; font-style:normal; font-weight:850; text-transform:uppercase; }
.activity-step.done em { color:#168263; }
.weekly-civic { display:grid; grid-template-columns:minmax(185px,1fr) 2fr auto; gap:22px; align-items:center; margin:18px 22px 0; padding:17px 0 20px; border-top:1px solid var(--border); }
.weekly-civic > div:first-child { display:flex; flex-direction:column; }
.weekly-civic span { color:var(--muted); font-size:.65rem; text-transform:uppercase; letter-spacing:.07em; }
.weekly-civic strong { font-size:.8rem; }
.weekly-civic > b { padding:7px 10px; border-radius:999px; color:#8a5d0d; background:#fff5d9; font-size:.77rem; }
.weekly-dots { display:flex; gap:7px; }
.weekly-dots i { display:grid; place-items:center; height:27px; flex:1; border:1px solid var(--border); border-radius:8px; color:#99a8b7; background:var(--tint); font-size:.55rem; font-style:normal; }
.weekly-dots i.done { border-color:#13906e; color:#fff; background:linear-gradient(135deg,#087a5e,#20b386); }
.weekly-dots i b { font-size:inherit; }
.seal-packs { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:18px; }
.seal-pack { position:relative; display:flex; flex-direction:column; gap:16px; padding:22px; border:1px solid var(--border); border-radius:17px; background:var(--surface); }
.seal-pack.best { border-color:#c28a27; box-shadow:0 9px 28px rgba(150,100,15,.1); }
.seal-pack > span { position:absolute; right:12px; top:10px; color:#a06d15; font-size:.65rem; font-weight:850; text-transform:uppercase; }
.seal-pack > div { display:flex; flex-direction:column; }
.seal-pack > div strong { color:#94630e; font-size:2rem; line-height:1; }
.seal-pack > div small { color:var(--muted); }
.seal-pack > b { font-size:1.05rem; }
.seal-pack .btn { margin-top:auto; }
.shop-setup-note { margin-top:14px; padding:12px 15px; border-radius:12px; color:#755112; background:#fff4d8; font-size:.82rem; }
.shop-lower-grid { display:grid; grid-template-columns:1.2fr .8fr; gap:18px; margin-top:40px; }
.civic-history ul,.shop-fairness ul { margin:18px 0 0; padding:0; list-style:none; }
.civic-history li { display:grid; grid-template-columns:32px 1fr auto; align-items:center; gap:10px; padding:11px 0; border-top:1px solid var(--border); }
.civic-history li > div { display:flex; flex-direction:column; }
.civic-history li strong { font-size:.82rem; }
.civic-history li small { color:var(--muted); font-size:.7rem; }
.civic-history li > b { font-size:.85rem; }
.civic-history li > b i { color:var(--muted); font-size:.66rem; font-style:normal; font-weight:500; }
.civic-ledger-icon { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; font-weight:900; }
.civic-ledger-icon.gain { color:#087957; background:rgba(18,145,102,.1); }
.civic-ledger-icon.spent { color:#8c5b11; background:rgba(176,123,22,.1); }
.shop-fairness { position:relative; overflow:hidden; background:linear-gradient(145deg,var(--surface),rgba(0,85,164,.055)); }
.fairness-mark { position:absolute; right:-10px; top:-35px; color:rgba(167,119,30,.08); font-size:10rem; }
.shop-fairness p,.shop-fairness li { color:var(--muted); line-height:1.55; }
.shop-fairness li { padding:5px 0 5px 18px; position:relative; font-size:.82rem; }
.shop-fairness li::before { content:'✓'; position:absolute; left:0; color:#128663; font-weight:900; }
.objective-reroll-note { margin:12px 0; padding:9px 12px; border-radius:10px; color:#805812; background:#fff5dc; font-size:.78rem; }
.objective-modal-actions { display:flex; flex-direction:column; align-items:center; gap:5px; }

@media (max-width: 960px) {
  .shop-hero { grid-template-columns:1fr 220px; gap:22px; }
  .booster-benefits { grid-template-columns:repeat(2,1fr); }
  .booster-offers { grid-template-columns:1fr; }
  .booster-offer { min-height:0; }
  .seal-packs { grid-template-columns:repeat(2,1fr); }
  .shop-duo { grid-template-columns:170px 1fr; }
  .shop-duo-offer { grid-column:1/-1; grid-template-columns:repeat(3,auto); align-items:center; text-align:left; }
  .shop-duo-offer .btn { margin:0 0 0 auto; }
  .cosmetic-card { grid-template-columns:90px 1fr; }
  .cosmetic-card-actions { grid-column:1/-1; }
  .cosmetic-studio { grid-template-columns:1fr; }
  .activity-path { grid-template-columns:repeat(3,1fr); }
}

@media (max-width: 680px) {
  .shop-hero { grid-template-columns:1fr; padding:27px 22px; border-radius:20px; }
  .shop-hero h1 { font-size:2.2rem; }
  .shop-wallet-card { min-height:0; }
  .shop-hero-trust { display:grid; }
  .booster-benefits { grid-template-columns:1fr; }
  .booster-benefits > div { padding:15px 17px; }
  .shop-free-route { grid-template-columns:auto 1fr auto; }
  .shop-free-route > em { grid-column:2/4; }
  .earn-seals-spotlight { grid-template-columns:1fr; padding:23px 18px; }
  .earn-reward { min-height:100px; }
  .activity-path { grid-template-columns:1fr 1fr; padding:14px 14px 0; }
  .weekly-civic { grid-template-columns:1fr auto; }
  .weekly-dots { grid-column:1/3; grid-row:2; }
  .seal-packs { grid-template-columns:1fr; }
  .shop-lower-grid { grid-template-columns:1fr; }
  .shop-section { margin-top:30px; }
  .civic-wallet-pill { display:inline-flex !important; }
  .gift-vault { grid-template-columns:auto 1fr; padding:18px; }
  .gift-vault-actions { grid-column:1/-1; justify-content:stretch; }
  .gift-vault-actions .btn { width:100%; }
  .shop-duo { grid-template-columns:1fr; gap:20px; padding:25px 20px; }
  .shop-duo-offer { grid-column:auto; grid-template-columns:1fr; text-align:center; }
  .shop-duo-offer .btn { width:100%; margin-top:8px; }
  .cosmetic-group { padding:16px; }
  .cosmetic-grid { grid-template-columns:1fr; }
  .cosmetic-card { grid-template-columns:88px 1fr; gap:12px; }
  .cosmetic-live-profile { grid-template-columns:auto 1fr; }
  .cosmetic-live-profile > small { display:none; }
  .cosmetic-collection-strip { grid-template-columns:1fr; }
  .cosmetic-group-head { display:grid; }
  .shop-catalog-nav { gap:4px; padding:5px; }
  .shop-catalog-nav button { display:flex; justify-content:center; padding:10px 7px; }
  .shop-catalog-nav button > span { width:30px; height:30px; }
  .shop-catalog-nav button small { display:none; }
  .shop-catalog-nav button b { font-size:.72rem; }
}

@media (max-width: 430px) {
  .shop-free-route { grid-template-columns:auto 1fr; }
  .shop-free-route > b { align-self:start; grid-column:1; grid-row:2; text-align:center; }
  .shop-free-route > em { grid-column:2; }
  .activity-path { grid-template-columns:1fr; }
  .weekly-civic { margin-inline:14px; }
}

/* Agora — réseau communautaire */
.agora-app { padding:12px; border:1px solid #cfe0ee; border-radius:24px; background:linear-gradient(135deg,#e8f3fa,#f8fbfd 36%,#eaf0fb); box-shadow:0 22px 52px rgba(0,49,96,.12); }.agora-inner-nav { display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:48px; padding:0 10px 12px; color:#55708b; font-size:12px; font-weight:800; }.agora-wordmark { display:flex; align-items:baseline; gap:7px; color:#075ca8; font-size:16px; }.agora-wordmark span { color:#6b8296; font-size:10px; font-weight:600; }.agora-nav-actions { display:flex; align-items:center; gap:4px; }.agora-nav-actions button { border:0; padding:8px 10px; border-radius:10px; color:#48657d; background:transparent; cursor:pointer; font:inherit; font-size:12px; font-weight:800; }.agora-nav-actions button:hover { color:#075ca8; background:#eaf4fb; }.agora-nav-actions .agora-profile-nav { color:#fff; background:#075ca8; }.agora-network-grid { display:grid; grid-template-columns:180px minmax(0,1fr); gap:14px; margin-top:14px; }.agora-left-rail { display:grid; align-content:start; gap:12px; }.agora-left-rail section { display:grid; gap:6px; padding:16px; border-radius:16px; color:#e9f5ff; background:linear-gradient(160deg,#062b54,#075ca8); }.agora-left-rail .account-avatar { width:45px; height:45px; font-size:18px; border:2px solid rgba(255,255,255,.65); }.agora-left-rail small,.agora-left-rail p { color:#b8d6ed; font-size:11px; line-height:1.4; }.agora-left-rail section button { width:100%; margin-top:5px; border:1px solid rgba(255,255,255,.3); border-radius:8px; padding:7px; color:#fff; background:rgba(255,255,255,.1); cursor:pointer; font:inherit; font-size:11px; }.agora-left-rail nav { display:grid; gap:3px; padding:8px; border:1px solid #d4e2ec; border-radius:14px; background:#fff; }.agora-left-rail nav button { display:flex; align-items:center; gap:7px; width:100%; border:0; border-radius:8px; padding:8px; color:#48657d; background:transparent; cursor:pointer; font:inherit; font-size:11px; text-align:left; }.agora-left-rail nav button:hover { color:#075ca8; background:#edf6fc; }.agora-left-rail > p { margin:0; padding:0 7px; color:#667f95; }.agora-network-grid .civis-layout { grid-template-columns:minmax(0,1.5fr) minmax(230px,.65fr); margin:0; }.agora-profile-page { overflow:hidden; border:1px solid #cfe0ee; border-radius:24px; background:#f8fbfd; box-shadow:0 22px 52px rgba(0,49,96,.12); }.agora-profile-page .agora-inner-nav { padding:10px 20px; background:#fff; }.agora-profile-banner { position:relative; height:205px; overflow:hidden; background:linear-gradient(125deg,var(--cover),#071f3d); }.agora-profile-banner:after { position:absolute; inset:0; content:""; background:radial-gradient(circle at 75% 25%,rgba(255,255,255,.32),transparent 19%),linear-gradient(35deg,rgba(0,0,0,.22),transparent 55%); }.agora-profile-glow { position:absolute; right:12%; top:24%; width:260px; height:260px; border:40px solid rgba(255,255,255,.1); border-radius:50%; }.agora-profile-card { position:relative; display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:18px; align-items:end; margin:-62px 22px 0; padding:0 22px 22px; border-radius:18px 18px 0 0; background:#fff; }.agora-profile-avatar { display:grid; place-items:center; width:112px; height:112px; border:5px solid #fff; border-radius:50%; color:#fff; box-shadow:0 6px 20px rgba(0,31,61,.25); font-size:42px; font-weight:800; }.agora-profile-identity h1 { margin:2px 0 3px; font-size:27px; }.agora-profile-identity p { max-width:520px; margin:0 0 5px; color:#587188; }.agora-location { margin-left:8px; color:#607b93; font-size:12px; }.agora-profile-metrics { display:grid; grid-template-columns:repeat(2,max-content); gap:3px 11px; align-items:baseline; color:#71869a; font-size:10px; text-transform:uppercase; letter-spacing:.05em; }.agora-profile-metrics strong { color:#0b3359; font-size:22px; }.agora-profile-layout { display:grid; grid-template-columns:minmax(0,1fr) 270px; gap:18px; padding:22px; background:linear-gradient(180deg,#fff,#f2f7fb); }.agora-wall,.agora-profile-side,.agora-profile-editor { border:1px solid #dce7ef; border-radius:16px; background:#fff; }.agora-wall-head { display:flex; justify-content:space-between; align-items:end; padding:18px; border-bottom:1px solid #e1ebf2; }.agora-wall-head h2 { margin:3px 0 0; font-size:19px; }.agora-wall-head > span { color:#6d8498; font-size:11px; }.agora-wall-post { padding:18px; border-bottom:1px solid #e1ebf2; }.agora-wall-post:last-child { border-bottom:0; }.agora-wall-post p { margin:0 0 10px; white-space:pre-wrap; line-height:1.5; }.agora-wall-post footer { display:flex; gap:12px; color:#70879b; font-size:11px; }.agora-empty-wall { padding:35px 20px; color:#698196; text-align:center; }.agora-profile-side,.agora-profile-editor { padding:16px; margin-bottom:12px; }.agora-profile-side p { color:#607a91; font-size:12px; line-height:1.45; }.agora-profile-editor { display:grid; gap:8px; }.agora-profile-editor label { color:#4b6780; font-size:11px; font-weight:800; }.agora-profile-editor textarea,.agora-profile-editor input { box-sizing:border-box; width:100%; }.agora-profile-editor .btn { margin-top:5px; }
.agora-compose-options { display:grid; grid-template-columns:minmax(0,1fr) 155px; gap:8px; margin:9px 0; }.agora-compose-options select { min-width:0; padding:7px; border:1px solid var(--border); border-radius:8px; color:var(--text); background:#fff; font:inherit; font-size:12px; }.agora-post-context { margin:10px 18px -2px; padding:7px 9px; border-left:3px solid var(--bleu); border-radius:0 7px 7px 0; color:#315775; background:#eaf4fb; font-size:11px; }
.civis-feed-heading span { display:flex; gap:4px; }.civis-feed-heading button { border:1px solid var(--border); border-radius:999px; padding:4px 8px; color:var(--muted); background:#fff; cursor:pointer; font:inherit; font-size:10px; }.civis-feed-heading button.active { border-color:#075ca8; color:#fff; background:#075ca8; }.civis-feed-heading .agora-new-posts { border-color:#075ca8; color:#fff; background:#075ca8; box-shadow:0 3px 9px rgba(0,85,164,.2); }.agora-profile-actions { display:flex; gap:7px; align-items:center; }
.citizen-feed-post { padding:0; overflow:hidden; border-left:4px solid #0b7495; }.citizen-feed-post.social { border-left-color:#d97706; }.citizen-feed-post.economie { border-left-color:#5b4bb7; }.citizen-feed-post.assemblee { border-left-color:#0055a4; }.citizen-feed-post header { display:flex; align-items:center; gap:9px; padding:14px 16px 7px; }.citizen-feed-avatar { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; color:#fff; background:linear-gradient(135deg,#075ca8,#0b7495); font-size:18px; }.citizen-feed-post header div { display:grid; gap:2px; }.citizen-feed-post header small,.citizen-feed-post footer { color:var(--muted); font-size:10px; }.citizen-feed-label { margin-left:auto; border-radius:999px; padding:3px 7px; color:#0b7495; background:#e6f6f8; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }.citizen-feed-context { margin:1px 16px; color:#43657a; font-size:11px; font-weight:700; }.citizen-feed-post p { margin:7px 16px 12px; line-height:1.5; }.citizen-feed-post footer { padding:9px 16px; border-top:1px solid var(--border); background:#f7fafc; line-height:1.35; }
.agora-profile-page .agora-inner-nav { min-height:54px; }.agora-back { border:0; border-radius:9px; padding:7px 9px; color:#48657d; background:#edf3f8; cursor:pointer; font:inherit; font-size:11px; font-weight:800; }.agora-back:hover { color:#075ca8; background:#e1eef8; }.agora-profile-nav-state { color:#567189; font-size:11px; font-weight:800; }.agora-cover-label { position:absolute; right:20px; bottom:15px; z-index:2; border:1px solid rgba(255,255,255,.3); border-radius:999px; padding:6px 10px; color:#fff; background:rgba(0,24,53,.22); backdrop-filter:blur(5px); font-size:10px; font-weight:800; }.agora-wall-head p { max-width:520px; margin:5px 0 0; color:#6e8496; font-size:11px; line-height:1.4; }.agora-wall-feed { display:grid; gap:12px; padding:14px; background:#f7fafc; }.agora-wall-feed .civis-post { box-shadow:none; }.agora-profile-editor > p { margin:0 0 4px; color:#607a91; font-size:11px; line-height:1.4; }
.agora-profile-completion { display:grid; gap:6px; margin-top:13px; color:#4b6780; font-size:10px; font-weight:800; }.agora-profile-completion i { display:block; overflow:hidden; height:6px; border-radius:999px; background:#e3edf4; }.agora-profile-completion b { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#075ca8,#17a776); }.agora-cover-presets { display:flex; gap:7px; }.agora-cover-preset { width:25px; height:25px; border:2px solid #fff; border-radius:50%; background:#0055a4; box-shadow:0 0 0 1px #d3e0eb; cursor:pointer; }.agora-cover-preset.violet { background:#5b4bb7; }.agora-cover-preset.rouge { background:#c63b4c; }.agora-cover-preset.vert { background:#087e6b; }.agora-cover-preset.active { box-shadow:0 0 0 2px #075ca8; transform:scale(1.08); }.agora-profile-editor input[type="color"] { width:100%; height:32px; padding:2px; cursor:pointer; }
.civis-hero { display:flex; align-items:end; justify-content:space-between; gap:20px; padding:30px; border-radius:20px; color:#fff; background:radial-gradient(circle at 85% 18%,rgba(255,255,255,.18),transparent 28%),linear-gradient(125deg,#071f3d,#0055a4 58%,#0b7495); box-shadow:0 14px 35px rgba(0,49,96,.17); }.civis-hero .eyebrow { color:#bfe4fb; }.civis-hero h1 { margin:5px 0; font-size:34px; }.civis-hero p { max-width:690px; margin:0; color:rgba(255,255,255,.82); }.civis-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(260px,.7fr); gap:18px; align-items:start; }.civis-feed { display:grid; gap:13px; }.civis-aside { display:grid; gap:14px; align-content:start; }.civis-composer { padding:18px; }.civis-composer .flex { gap:10px; align-items:center; }.civis-composer small { display:block; color:var(--muted); font-size:11px; }.small-avatar { width:36px; height:36px; min-width:36px; font-size:15px; }.civis-composer textarea { width:100%; box-sizing:border-box; border:0; border-bottom:1px solid var(--border); border-radius:0; padding:12px 2px; background:transparent; }.civis-feed-heading { display:flex; justify-content:space-between; padding:3px 4px; color:var(--muted); font-size:12px; }.civis-feed-heading strong { color:var(--text); }.civis-post { padding:0; overflow:hidden; }.civis-post header { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:15px 17px 0; }.civis-author { display:flex; align-items:center; gap:10px; border:0; color:var(--text); background:transparent; text-align:left; cursor:pointer; font:inherit; }.civis-author span:last-child { display:grid; gap:2px; }.civis-author small { color:var(--muted); font-size:10px; }.civis-author .badge { font-size:9px; }.civis-post-body { padding:1px 18px 14px; white-space:pre-wrap; line-height:1.55; }.civis-post-actions { display:flex; align-items:center; gap:6px; padding:9px 14px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }.civis-post-actions button { border:0; border-radius:7px; padding:6px 8px; color:var(--muted); background:transparent; cursor:pointer; font:inherit; font-size:12px; }.civis-post-actions button:hover,.civis-post-actions button.active { color:#c02655; background:#fff0f3; }.civis-post-actions span { margin-left:auto; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.08em; }.civis-replies { display:grid; gap:9px; padding:13px 17px; background:#f8fafc; }.civis-replies.collapsed { display:none; }.civis-reply { display:flex; gap:8px; padding:8px; border-radius:9px; font-size:12px; }.civis-reply.real { background:#fff; border:1px solid var(--border); }.civis-reply.citizen { background:#eef6fb; color:#36516d; }.civis-reply > div { min-width:0; }.civis-reply p { margin:3px 0; line-height:1.4; }.civis-reply small { color:var(--muted); font-size:9px; }.civis-pulse { border-top:4px solid #0b7495; }.civis-pulse h2,.civis-aside h2 { margin:5px 0 12px; font-size:18px; }.civis-pulse-item { margin-bottom:8px; padding:12px 14px; border-top:0; border-left:3px solid var(--bleu); border-radius:0 10px 10px 0; background:var(--tint); }.civis-pulse-item:last-child { margin-bottom:0; }.civis-pulse-item.social { border-left-color:#d97706; }.civis-pulse-item.economie { border-left-color:#5b4bb7; }.civis-pulse-item.securite { border-left-color:#c02647; }.civis-pulse-item.assemblee { border-left-color:#0055a4; }.civis-pulse-item.general { border-left-color:var(--muted); }.civis-pulse-item strong { display:block; margin-bottom:4px; font-size:12px; color:var(--bleu); }.civis-pulse-item.social strong { color:#d97706; }.civis-pulse-item.economie strong { color:#5b4bb7; }.civis-pulse-item.securite strong { color:#c02647; }.civis-pulse-item.assemblee strong { color:#0055a4; }.civis-pulse-item.general strong { color:var(--text); }.civis-pulse-item p { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }.civis-agenda { display:grid; gap:5px; margin-bottom:8px; padding:12px 14px; border-top:0; border-radius:10px; background:var(--tint); }.civis-agenda:last-child { margin-bottom:0; }.civis-agenda strong { font-size:13px; }.civis-agenda span { color:var(--muted); font-size:11px; }.civis-profile-modal { max-width:720px; padding:0; overflow:hidden; }.civis-profile-modal > .modal-close { z-index:2; color:#fff; }.civis-profile-cover { height:126px; }.civis-profile-head { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:15px; align-items:end; padding:0 24px 20px; margin-top:-29px; }.civis-profile-avatar { width:78px; height:78px; min-width:78px; border:4px solid #fff; font-size:30px; }.civis-profile-head h2 { margin:0 0 4px; }.civis-profile-head p { margin:0 0 5px; color:var(--muted); }.civis-profile-stats { display:grid; grid-template-columns:auto auto; gap:2px 8px; align-items:baseline; color:var(--muted); font-size:11px; }.civis-profile-stats strong { color:var(--text); font-size:16px; }.civis-profile-modal form,.civis-profile-modal h3,.civis-profile-modal > p,.civis-profile-post,.civis-profile-modal .actions { margin-left:24px; margin-right:24px; }.civis-profile-post { padding:11px 0; border-top:1px solid var(--border); }.civis-profile-post p { margin:0 0 4px; }.civis-profile-post small { color:var(--muted); }
@media (max-width: 720px) { .civis-hero { display:grid; align-items:start; padding:22px; }.civis-hero h1 { font-size:27px; }.civis-layout { grid-template-columns:1fr; }.civis-aside { display:grid; gap:12px; }.civis-profile-head { grid-template-columns:auto 1fr; padding:0 15px 16px; }.civis-profile-stats { grid-column:1/-1; }.civis-profile-modal form,.civis-profile-modal h3,.civis-profile-modal > p,.civis-profile-post,.civis-profile-modal .actions { margin-left:15px; margin-right:15px; } }
@media (max-width: 720px) { .agora-app { padding:7px; border-radius:16px; }.agora-inner-nav { gap:8px; overflow-x:auto; padding:5px 4px 10px; white-space:nowrap; }.agora-inner-nav span { display:none; }.agora-network-grid,.agora-network-grid .civis-layout,.agora-profile-layout { grid-template-columns:1fr; }.agora-left-rail { display:none; }.agora-profile-banner { height:150px; }.agora-profile-card { grid-template-columns:auto minmax(0,1fr); gap:10px; margin:-45px 9px 0; padding:0 13px 16px; }.agora-profile-avatar { width:84px; height:84px; font-size:30px; }.agora-profile-identity h1 { font-size:22px; }.agora-profile-metrics { grid-column:1/-1; }.agora-profile-card > .btn { grid-column:1/-1; }.agora-profile-layout { padding:10px; }.agora-wall-post footer { flex-wrap:wrap; }.agora-network-grid .civis-aside { display:grid; } }

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0f1620;
    --surface: #17202b;
    --text: #e6ebf1;
    --muted: #93a1b4;
    --border: #2a3543;
    --tint: rgba(255, 255, 255, .045);
    --gold: #e0b13a;
  }
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: radial-gradient(circle at 10% -10%, rgba(0,85,164,.10), transparent 30rem), var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  min-height: 100vh;
}
#app { display:grid; grid-template-columns:238px minmax(0, 1fr); min-height:100vh; }
.app-main { min-width:0; display:flex; flex-direction:column; }
.sidebar { position:sticky; top:0; height:100vh; display:flex; flex-direction:column; padding:22px 14px; color:#fff; background:linear-gradient(180deg,#003b74,#05294d); box-shadow:4px 0 24px rgba(15,23,42,.12); z-index:20; }
.sidebar-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.brand { display:flex; align-items:center; gap:9px; padding:0 8px 20px; color:#fff; text-decoration:none; font-weight:800; font-size:22px; letter-spacing:-.02em; white-space:nowrap; }.brand img { width:42px; height:42px; border-radius:10px; }.brand-copy { display:grid; gap:1px; }.brand small { font-weight:500; opacity:.7; font-size:10px; letter-spacing:.02em; }
.mobile-menu-close { display:none; }
.tabs { flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:2px 3px 8px; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.38) transparent; }
.tabs::-webkit-scrollbar { width:6px; }.tabs::-webkit-scrollbar-thumb { border-radius:999px; background:rgba(255,255,255,.34); }
.tabs-group { display:grid; gap:4px; padding:0 0 13px; }.tabs-group + .tabs-group { border-top:1px solid rgba(255,255,255,.13); padding-top:13px; }
.tabs-group-label { margin:0; padding:0 10px 3px; color:rgba(255,255,255,.56); font-size:10px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.tabs button { width:100%; background:transparent; border:none; color:rgba(255,255,255,.85); padding:10px 11px; border-radius:9px; cursor:pointer; font-size:13px; font-weight:600; text-align:left; transition:background .15s,color .15s,transform .15s; display:flex; align-items:center; gap:10px; }
.tab-icon-svg { flex:none; width:17px; height:17px; }
.tabs button:hover { background:rgba(255,255,255,.11); color:#fff; transform:translateX(2px); }.tabs button.active { background:var(--rouge); color:#fff; box-shadow:0 4px 12px rgba(0,0,0,.18); }
.tabs button .tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--blanc); color: var(--bleu); margin-left:auto;
  font-size: 11px;
  font-weight: 700;
}.sidebar-note { margin-top:auto; padding:14px 10px 2px; border-top:1px solid rgba(255,255,255,.15); color:rgba(255,255,255,.85); font-size:11px; line-height:1.45; }.sidebar-note span { color:rgba(255,255,255,.58); }
/* padding-inline en calc() plutôt qu'une valeur fixe : sur un écran très large (ultra-wide,
   4K...), le bandeau restait plein-largeur alors que .view se recentre à --content-max — le
   compteur de tour se retrouvait collé à l'extrême gauche et le compte à l'extrême droite,
   avec un grand vide au milieu, décalé par rapport à la colonne de contenu centrée juste
   en dessous. Même variable que .view : sous ce seuil le padding vaut 24px comme avant, au-
   delà il grandit pour recentrer le contenu du header sur la même largeur que la page — et
   les deux paliers d'agrandissement de --content-max les gardent synchronisés ensemble. */
.topbar { position:sticky; top:0; z-index:10; min-height:62px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:10px max(24px, calc((100% - var(--content-max)) / 2 + 24px)); background:rgba(255,255,255,.92); backdrop-filter:blur(14px); border-bottom:1px solid var(--border); }
.topbar-status { flex:none; min-width:0; }.topbar-actions { display:flex; flex:1; min-width:0; align-items:center; justify-content:flex-end; gap:14px; }.topbar-account { display:flex; flex:none; align-items:center; gap:8px; }.objective-dock { flex:0 1 460px; width:min(32vw,460px); min-width:250px; }.header-objectives { display:grid; grid-template-columns:29px minmax(0,1fr) auto; align-items:center; gap:8px; width:100%; padding:6px 9px; border:1px solid rgba(8,120,120,.34); border-radius:10px; color:#113c4a; background:linear-gradient(100deg,#e9fbf8,#f8fffe); cursor:pointer; font:inherit; text-align:left; box-shadow:0 3px 11px rgba(8,120,120,.09); }.header-objectives:hover { border-color:#087878; transform:translateY(-1px); }.header-objectives.complete { border-color:rgba(22,163,74,.45); color:#126338; background:#effcf3; }.header-objective-icon { display:grid; place-items:center; width:26px; height:26px; border-radius:8px; color:#fff; background:#087878; font-weight:900; }.header-objective-icon .tab-icon-svg { width:15px; height:15px; }.header-objectives.complete .header-objective-icon { background:var(--pos); }.header-objectives span:nth-child(2) { display:grid; min-width:0; gap:1px; }.header-objectives small { color:#43808a; font-size:9px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }.header-objectives strong { overflow:hidden; color:#16424c; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.header-objectives em { display:inline-flex; align-items:center; gap:3px; border-radius:999px; padding:4px 6px; color:#087878; background:rgba(8,120,120,.1); font-size:10px; font-style:normal; font-weight:900; white-space:nowrap; }.header-objectives em .tab-icon-svg { width:10px; height:10px; }
.turn-console { display:flex; align-items:center; gap:8px; color:var(--text); font-size:12px; }.turn-console strong { color:var(--bleu); font-size:16px; }.turn-label { color:var(--muted); font-weight:700; text-transform:uppercase; font-size:10px; letter-spacing:.07em; }.turn-divider { width:1px; height:21px; background:var(--border); margin:0 5px; }
.election-agenda-chip { position:absolute; left:50%; bottom:0; z-index:2; display:flex; max-width:min(540px,calc(100% - 32px)); align-items:center; justify-content:center; gap:6px; overflow:hidden; padding:7px 13px; border:1px solid rgba(239,65,53,.22); border-radius:20px; color:var(--text); background:#fff1f1; box-shadow:0 7px 18px rgba(111,24,24,.16); font:inherit; font-size:12px; font-weight:800; text-overflow:ellipsis; white-space:nowrap; cursor:pointer; transform:translate(-50%,50%); }.election-agenda-chip[hidden] { display:none; }.election-agenda-chip:hover { background:#ffe5e5; }.election-agenda-chip small { overflow:hidden; color:var(--muted); font-weight:600; text-overflow:ellipsis; }
.userbox { display:flex; align-items:center; gap:8px; font-size:13px; }.userbox .pill { display:inline-flex; align-items:center; gap:5px; background:rgba(0,85,164,.08); color:var(--text); padding:6px 9px; border-radius:20px; }.userbox button.link, .link-btn { background:none; border:none; color:var(--bleu); text-decoration:underline; cursor:pointer; font-size:13px; padding:0; }.user-profile-link { display:grid; grid-template-columns:auto auto auto; align-items:center; column-gap:6px; border:0; padding:4px 7px; border-radius:9px; color:var(--text); background:transparent; text-align:left; cursor:pointer; font:inherit; font-weight:800; }.user-profile-link:hover { background:rgba(0,85,164,.07); }.user-profile-link .dot { grid-row:span 2; }.user-profile-link small { color:var(--muted); font-size:10px; font-weight:600; }.user-profile-link .profile-menu-caret { grid-row:span 2; align-self:center; display:flex; color:var(--muted); transition:transform .15s; }
.userbox .tab-icon-svg, .header-objective-icon .tab-icon-svg { width:15px; height:15px; flex:none; }
/* Menu profil : "Mon profil", "Quitter" (client natif uniquement) et "Déconnexion" étaient
   trois éléments toujours visibles séparément dans le header (voir le fil "les boutons
   Quitter/Déconnexion/mon profil pourrait être dans un même collapse"). Ils sont regroupés
   ici dans un même panneau replié par défaut, ouvert/fermé via body.profile-menu-open
   (même technique que .mobile-menu-open pour le tiroir de navigation). */
.profile-menu { position:relative; }
.profile-menu-panel { position:absolute; top:calc(100% + 8px); right:0; z-index:30; display:none; min-width:190px; padding:6px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:0 14px 32px rgba(15,23,42,.16); animation:profile-menu-in .15s ease; }
body.profile-menu-open .profile-menu-panel { display:grid; gap:2px; }
body.profile-menu-open .user-profile-link .profile-menu-caret { transform:rotate(180deg); }
@keyframes profile-menu-in { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
.profile-menu-item { display:flex; align-items:center; gap:9px; width:100%; padding:9px 10px; border:0; border-radius:8px; color:var(--text); background:transparent; text-align:left; text-decoration:none; cursor:pointer; font:inherit; font-size:13px; font-weight:700; }
.profile-menu-item:hover { background:rgba(0,85,164,.07); }
.profile-menu-item .tab-icon-svg { width:16px; height:16px; flex:none; color:var(--muted); }
.profile-menu-item.danger { color:var(--rouge); }
.profile-menu-item.danger:hover { background:rgba(239,65,53,.08); }
.profile-menu-item.danger .tab-icon-svg { color:var(--rouge); }
.notification-bell { display:inline-flex; align-items:center; gap:5px; }.notification-bell b { display:grid; place-items:center; min-width:17px; height:17px; padding:0 4px; border-radius:999px; background:var(--rouge); color:#fff; font-size:10px; }
#chat-dock { position:fixed; right:22px; bottom:0; z-index:80; display:flex; align-items:flex-end; gap:12px; pointer-events:none; }.sticky-chat,.chat-minimized { pointer-events:auto; }.sticky-chat { width:320px; overflow:hidden; border:1px solid rgba(0,49,96,.14); border-radius:16px 16px 0 0; background:var(--surface); box-shadow:0 -14px 38px rgba(15,23,42,.22),0 0 0 1px rgba(15,23,42,.03); animation:chat-pop-in .2s ease; }.sticky-chat header { display:flex; align-items:center; justify-content:space-between; padding:12px 12px 12px 15px; color:#fff; background:linear-gradient(115deg,#003b74,var(--bleu) 80%); font-size:13px; font-weight:800; }.sticky-chat header > span { display:flex; align-items:center; gap:8px; }.sticky-chat header .dot { width:10px; height:10px; border:2px solid rgba(255,255,255,.78); box-shadow:0 0 0 2px rgba(255,255,255,.12); }.sticky-chat header button { display:grid; place-items:center; border:0; background:rgba(255,255,255,.14); color:#fff; width:26px; height:26px; border-radius:7px; cursor:pointer; font-size:16px; line-height:1; transition:background .15s,transform .12s; }.sticky-chat header button:hover { background:rgba(255,255,255,.24); }.sticky-chat header button:active { transform:scale(.9); }.sticky-chat header button svg { width:15px; height:15px; }.sticky-chat-thread { height:240px; overflow-y:auto; padding:12px; display:flex; flex-direction:column; gap:8px; background:linear-gradient(180deg,rgba(0,85,164,.035),transparent 120px); }.chat-channel-note { padding:8px 11px; border-bottom:1px solid var(--border); color:var(--muted); background:#f6f9fc; font-size:10px; line-height:1.3; }.chat-bubble { align-self:flex-start; max-width:84%; display:grid; gap:3px; padding:8px 10px; border-radius:12px 12px 12px 3px; background:var(--border); font-size:12px; line-height:1.4; box-shadow:0 1px 1px rgba(15,23,42,.04); }.chat-bubble b { color:var(--bleu); font-size:10px; }.chat-bubble.mine { align-self:flex-end; border-radius:12px 12px 3px 12px; color:#fff; background:linear-gradient(135deg,var(--bleu),#0a63b8); }.chat-bubble.mine b { color:#fff; }.chat-bubble small { font-size:9px; opacity:.72; }.chat-empty { margin:auto; color:var(--muted); font-size:12px; }.sticky-chat form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; padding:10px; border-top:1px solid var(--border); background:var(--surface); }.sticky-chat textarea { min-height:36px; max-height:70px; resize:vertical; border-radius:10px; }.chat-minimized { border:0; display:flex; align-items:center; gap:8px; padding:10px 14px; border-radius:14px 14px 0 0; color:#fff; background:linear-gradient(115deg,#003b74,#0a4f8f); box-shadow:0 -8px 20px rgba(15,23,42,.2); cursor:pointer; font-weight:700; transition:transform .14s,filter .14s; }
.chat-minimized:hover { filter:brightness(1.08); transform:translateY(-2px); }
.chat-minimized:active { transform:scale(.95); }
@keyframes chat-pop-in { from { opacity:0; transform:translateY(14px) scale(.97); } to { opacity:1; transform:none; } }
@keyframes chat-sheet-in { from { transform:translateY(100%); } to { transform:translateY(0); } }
.chat-launcher { position:fixed; right:22px; bottom:18px; z-index:79; width:48px; height:48px; place-items:center; border:0; border-radius:50%; color:#fff; background:var(--rouge); box-shadow:0 7px 20px rgba(239,65,53,.32); cursor:pointer; font-size:20px; transition:transform .16s,filter .16s; }.chat-launcher:hover { transform:translateY(-2px) scale(1.04); filter:brightness(1.05); }.chat-launcher:active { transform:scale(.93); }.chat-launcher svg { width:21px; height:21px; }.chat-launcher-count { position:absolute; right:-3px; top:-4px; min-width:19px; height:19px; place-items:center; padding:0 4px; border:2px solid var(--surface); border-radius:999px; color:#fff; background:#102a43; font-size:10px; font-weight:800; }
.modal.chat-launcher-modal { position:relative; width:min(680px,calc(100vw - 32px)); max-width:680px; max-height:min(760px,calc(100vh - 32px)); padding:0; overflow:hidden; border:1px solid rgba(29,55,82,.12); border-radius:22px; box-shadow:0 28px 80px rgba(5,23,43,.28); }
.chat-launcher-modal > .modal-close { position:absolute; right:17px; top:17px; z-index:3; display:grid; place-items:center; width:32px; height:32px; border-radius:9px; color:#d8e6f3; background:rgba(255,255,255,.09); }
.chat-launcher-modal > .modal-close:hover { color:#fff; background:rgba(255,255,255,.18); }
.quick-chat-head { display:grid; grid-template-columns:46px minmax(0,1fr); gap:14px; align-items:center; padding:24px 62px 22px 25px; color:#fff; background:radial-gradient(circle at 85% 0,rgba(52,133,196,.35),transparent 37%),linear-gradient(125deg,#0c2945,#075c99); }
.quick-chat-head > span { display:grid; place-items:center; width:44px; height:44px; border:1px solid rgba(255,255,255,.2); border-radius:14px; background:rgba(255,255,255,.1); }
.quick-chat-head > span svg { width:22px; height:22px; }
.quick-chat-head .eyebrow { color:#9ed1f4; }
.quick-chat-head h2 { margin:3px 0 4px; color:#fff; font-size:24px; letter-spacing:-.035em; }
.quick-chat-head p { margin:0; color:rgba(255,255,255,.7); font-size:11px; }
.quick-chat-body { max-height:calc(min(760px,100vh - 32px) - 116px); overflow-y:auto; padding:18px; background:#f6f8fb; }
.quick-chat-search { padding:15px; border:1px solid #dde5ee; border-radius:14px; background:#fff; box-shadow:0 5px 16px rgba(20,43,67,.05); }
.quick-chat-search > label { display:block; margin-bottom:7px; color:#506277; font-size:9px; font-weight:850; text-transform:uppercase; letter-spacing:.08em; }
.quick-chat-search > div:first-of-type { display:grid; grid-template-columns:20px minmax(0,1fr) auto; gap:7px; align-items:center; }
.quick-chat-search > div:first-of-type > span { color:#8092a5; text-align:center; }
.quick-chat-search input { min-height:39px; padding:8px 5px; border:0; outline:0; background:transparent; font-size:13px; }
.quick-chat-search .btn { min-height:37px; }
.quick-chat-search .chat-user-suggestions { margin:8px 0 0 27px; border-radius:10px; }
.quick-chat-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:12px; }
.quick-chat-grid > section { min-width:0; padding:14px; border:1px solid #dde5ee; border-radius:14px; background:#fff; }
.quick-chat-grid > section > header { display:flex; align-items:center; gap:9px; padding:1px 2px 10px; }
.quick-chat-grid > section > header > span { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; color:#075c99; background:#e8f3fb; font-size:12px; }
.quick-chat-grid > section > header h3 { margin:2px 0 0; color:#26384d; font-size:12px; }
.quick-chat-grid > section > header .eyebrow { font-size:8px; }
.quick-chat-loading,.quick-chat-empty { display:grid; place-items:center; min-height:76px; padding:15px; color:var(--muted); font-size:10px; text-align:center; }
.quick-chat-item { width:100%; display:grid; grid-template-columns:34px minmax(0,1fr) auto; gap:9px; align-items:center; padding:9px 4px; border:0; border-top:1px solid #edf0f4; color:var(--text); background:transparent; text-align:left; cursor:pointer; font-family:inherit; }
.quick-chat-item:hover { background:#f4f8fc; }
.quick-chat-item > span:nth-child(2) { display:grid; gap:2px; min-width:0; }
.quick-chat-item strong { overflow:hidden; color:#29394c; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.quick-chat-item small { overflow:hidden; color:#8290a0; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.quick-chat-item > b { display:grid; place-items:center; min-width:18px; height:18px; padding:0 4px; border-radius:99px; color:#fff; background:var(--rouge); font-size:8px; }
.quick-chat-item > em { color:#9aa7b5; font-size:17px; font-style:normal; }
.quick-chat-avatar { display:grid; place-items:center; width:32px; height:32px; border-radius:10px; color:#fff; background:var(--quick-color); font-size:11px; font-weight:900; }
.quick-chat-item.channel .quick-chat-avatar { border-radius:50%; }
.quick-chat-body > footer { display:flex; align-items:center; gap:10px; margin-top:12px; padding:11px 13px; border:1px solid #e3d3b2; border-radius:12px; color:#725a2e; background:#fffaf0; }
.quick-chat-body > footer > span { color:#b58c43; }
.quick-chat-body > footer p { flex:1; display:grid; gap:2px; margin:0; }
.quick-chat-body > footer strong { font-size:9px; text-transform:uppercase; letter-spacing:.06em; }
.quick-chat-body > footer small { color:#9b8255; font-size:8px; }
.quick-chat-body > footer button { border:0; color:#76571d; background:transparent; cursor:pointer; font:800 9px/1 inherit; }
.chat-launcher-conversation { width:100%; display:grid; grid-template-columns:10px minmax(0,1fr) auto; gap:9px; align-items:center; padding:10px 4px; border:0; border-bottom:1px solid var(--border); color:var(--text); background:transparent; text-align:left; cursor:pointer; font-family:inherit; }.chat-launcher-conversation:hover { background:rgba(0,85,164,.05); }.chat-launcher-conversation span:nth-child(2) { display:grid; gap:3px; }.chat-launcher-conversation small { color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.chat-launcher-conversation b { display:grid; place-items:center; min-width:19px; height:19px; border-radius:50%; color:#fff; background:var(--rouge); font-size:10px; }
.chat-user-suggestions { display:grid; margin-top:5px; border:1px solid var(--border); border-radius:8px; overflow:hidden; }.chat-user-suggestions:empty { display:none; }.chat-user-suggestion { display:flex; align-items:center; gap:8px; padding:8px 9px; border:0; border-bottom:1px solid var(--border); background:var(--surface); color:var(--text); text-align:left; cursor:pointer; font-family:inherit; font-size:12px; }.chat-user-suggestion:last-child { border-bottom:0; }.chat-user-suggestion:hover { background:rgba(0,85,164,.06); }.chat-user-suggestions > .small { padding:8px; }

/* Barre de navigation mobile (façon appli) + menu plein écran ; masquées sur desktop */
.mobile-tabbar { display:none; }
#mobile-menu-backdrop { display:none; }
body.mobile-menu-open { overflow:hidden; }
.pull-refresh-indicator { display:none; }
.install-nudge { display:none; }

.guidance {
  background: #fff7e6;
  color: #6b4a00;
  border-bottom: 1px solid #f0dca0;
  padding: 10px 20px;
  font-size: 13px;
  display: none;
}
@media (prefers-color-scheme: dark) {
  .guidance { background: #3a2f10; color: #f0d999; border-color: #5a4a1a; }
}
.guidance.show { display: flex; align-items: center; gap: 10px; justify-content: center; flex-wrap: wrap; }
.topbar.has-active-agenda + .guidance.show { padding-top:26px; }
.guidance b { font-weight: 700; }
.guidance button { margin-left: 6px; }
.guidance-close { display:grid; place-items:center; width:26px; height:26px; padding:0; border:1px solid currentColor; border-radius:50%; color:inherit; background:transparent; cursor:pointer; font-family:inherit; font-size:18px; font-weight:700; line-height:1; opacity:.7; }
.guidance-close:hover { opacity:1; background:rgba(107,74,0,.08); }

.view { flex: 1; padding: 28px 22px 42px; max-width: var(--content-max); width: 100%; margin: 0 auto; }
.view-fade { animation: view-fade-in .22s ease; }
@keyframes view-fade-in { from { opacity:.4; transform:translateY(6px); } to { opacity:1; transform:none; } }

.page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; padding:6px 0 22px; }
.page-head.compact { padding-bottom:18px; }
.page-head h1 { margin:3px 0 7px; font-size:30px; letter-spacing:-.04em; }
.page-head p { margin:0; color:var(--muted); font-size:14px; max-width:650px; }
.eyebrow { color:var(--bleu); text-transform:uppercase; letter-spacing:.09em; font-size:11px; font-weight:800; }
.role-chip { flex:0 0 auto; border:1px solid rgba(0,85,164,.18); background:rgba(0,85,164,.07); color:var(--bleu); border-radius:999px; padding:8px 12px; font-size:12px; font-weight:700; }
.turn-pulse { color:var(--bleu); font-weight:700; }
.choice-option { display:flex; flex-direction:column; align-items:flex-start; gap:4px; }

.hero {
  background: linear-gradient(135deg, var(--bleu), #002a52 60%, var(--rouge));
  color: #fff;
  border-radius: var(--radius);
  padding: 32px;
  margin-bottom: 20px;
}
.hero h1 { margin: 0 0 8px; font-size: 26px; }
.hero p { opacity: .9; max-width: 640px; line-height: 1.5; }
.hero .actions { margin-top: 16px; display: flex; gap: 10px; flex-wrap: wrap; }
.hero .btn.secondary { background: rgba(255,255,255,.15); color: #fff; }

.empty-state { text-align: center; padding: 30px 10px; color: var(--muted); }
.empty-state .big { font-size: 30px; margin-bottom: 8px; }

.steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.steps li { display: flex; align-items: baseline; gap: 8px; font-size: 13px; }
.steps li .n { color: var(--bleu); font-weight: 700; }

.help-text { font-size: 11px; color: var(--muted); margin-top: 3px; }

.notif-item { padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.notif-item:last-child { border-bottom: none; }
.notif-item .time { font-size: 11px; color: var(--muted); }
.notif-item.unread { font-weight: 600; }
.footer {
  text-align: center; padding: 10px; font-size: 12px; color: var(--muted);
  border-top: 1px solid var(--border); background: var(--surface);
}
.footer a { color: var(--muted); text-decoration: underline; }
.footer a:hover { color: var(--bleu); }

.loading { text-align: center; padding: 60px; color: var(--muted); }
/* Écrans de chargement de page : blocs-gabarits + reflet animé plutôt qu'un texte
   centré sur fond vide. Le texte "Chargement…" reste dans le DOM (lu par un lecteur
   d'écran) mais devient visuellement transparent. */
.loading-skeleton {
  position:relative; overflow:hidden; text-align:left; color:transparent;
  min-height:220px; padding:0; border-radius:var(--radius);
  background:
    linear-gradient(var(--border) 0 22px, transparent 0) 0 0/62% 22px no-repeat,
    linear-gradient(var(--border) 0 12px, transparent 0) 0 46px/40% 12px no-repeat,
    linear-gradient(var(--tint) 0 90px, transparent 0) 0 74px/100% 90px no-repeat,
    linear-gradient(var(--tint) 0 34px, transparent 0) 0 176px/100% 34px no-repeat;
}
.loading-skeleton::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(100deg, transparent 30%, rgba(255,255,255,.5) 50%, transparent 70%);
  background-size:200% 100%;
  animation: skeleton-shimmer 1.3s ease-in-out infinite;
}
@keyframes skeleton-shimmer { from { background-position:150% 0; } to { background-position:-50% 0; } }
@media (prefers-color-scheme: dark) {
  .loading-skeleton::after { background:linear-gradient(100deg, transparent 30%, rgba(255,255,255,.08) 50%, transparent 70%); background-size:200% 100%; }
}

.grid { display: grid; gap: 16px; }
.grid.cols-2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid.cols-3 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.grid.cols-4 { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px 20px;
  box-shadow: var(--shadow);
}
.card:hover { border-color:rgba(0,85,164,.20); }
.card h3 { margin: 0 0 12px; font-size: 15px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.card h2 { margin: 0 0 12px; font-size: 18px; }

.stat { display: flex; flex-direction: column; gap: 2px; }
.stat .value { font-size: 26px; font-weight: 700; }
.stat .label { font-size: 12px; color: var(--muted); }
.stat .delta { font-size: 12px; font-weight: 600; margin-top: 4px; }
.stat .delta.pos { color: var(--pos); }
.stat .delta.neg { color: var(--neg); }
.stat .delta.flat { color: var(--muted); }

.indicator-row { position: relative; margin-top: 12px; }
.indicator-row:first-child { margin-top: 0; }
.indicator-row-chart { position: absolute; left: 0; right: 0; top: 0; height: 26px; z-index: 0; opacity: .3; pointer-events: none; -webkit-mask-image: linear-gradient(90deg, transparent, black 15%, black 85%, transparent); mask-image: linear-gradient(90deg, transparent, black 15%, black 85%, transparent); }
.indicator-row-chart svg { display: block; width: 100%; height: 100%; }
.indicator-row-head { position: relative; z-index: 1; }
.indicator-row-body { position: relative; z-index: 1; display: flex; align-items: center; gap: 10px; margin-top: 6px; }
.indicator-row-body .indicator-bar { flex: 1; margin-top: 0; }
.indicator-value { display: inline-flex; align-items: center; gap: 6px; }
.indicator-delta { font-size: 11px; font-weight: 700; white-space: nowrap; }
.indicator-delta.pos { color: var(--pos); }
.indicator-delta.neg { color: var(--neg); }
.indicator-delta.flat { color: var(--muted); }

.indicator-bar { height: 8px; border-radius: 4px; background: var(--border); overflow: hidden; margin-top: 6px; }
.treasury-evolution { display: grid; gap: 7px; }
.treasury-evo-row { display: grid; grid-template-columns: 86px 1fr 84px; align-items: center; gap: 9px; }
.treasury-evo-row .indicator-bar { margin-top: 0; }
.indicator-bar > span { display: block; height: 100%; background: var(--bleu); }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 11px 10px; border-bottom: 1px solid var(--border); vertical-align:top; }
th { color: var(--muted); font-weight: 600; font-size: 12px; text-transform: uppercase; }
tr:hover td { background: rgba(0,85,164,.04); }
.table-scroll { overflow-x:auto; border:1px solid var(--border); border-radius:10px; }
.table-scroll table { min-width:720px; }

.badge {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 20px;
  font-size: 12px; font-weight: 600; color: #fff;
}
.badge.outline { background: none; border: 1px solid var(--border); color: var(--text); }
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.reputation-card { border-left: 3px solid var(--bleu); padding-left: 12px; }
.reputation-tier { display: inline-flex; align-items: center; border-radius: 999px; padding: 2px 8px; font-size: 11px; font-weight: 700; background: var(--border); color: var(--text); }
.tier-militant { background: #dbeafe; color: #1d4ed8; }
.tier-cadre { background: #dcfce7; color: #166534; }
.tier-figure { background: #fef3c7; color: #92400e; }
@media (prefers-color-scheme: dark) {
  .tier-militant { background: #1e3a8a; color: #dbeafe; }
  .tier-cadre { background: #14532d; color: #dcfce7; }
  .tier-figure { background: #78350f; color: #fef3c7; }
}

.btn {
  background: var(--bleu); color: #fff; border: none; padding: 8px 16px; border-radius: 8px;
  cursor: pointer; font-size: 13px; font-weight: 700; transition:transform .15s,filter .15s,box-shadow .15s;
}
.btn:hover { filter: brightness(1.08); transform:translateY(-1px); box-shadow:0 4px 10px rgba(0,85,164,.16); }
.btn:active { transform:scale(.96); filter:brightness(.97); box-shadow:none; }
.btn.secondary { background: var(--border); color: var(--text); }
.btn.danger { background: var(--rouge); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn.small { padding: 5px 10px; font-size: 12px; }

input, select, textarea {
  width: 100%; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--surface); color: var(--text); font-size: 13px; font-family: inherit;
}
label { font-size: 12px; color: var(--muted); display: block; margin-bottom: 4px; margin-top: 10px; }
form .actions { margin-top: 16px; display: flex; gap: 8px; }

/* Select riche (rselect) : le <select> natif reste dans le DOM (valeur, soumission,
   évènement « change » et validation inchangés) mais devient invisible/inerte ; un
   déclencheur + un panneau custom affichent le même contenu avec recherche, sous-titre
   et badges. Le panneau est en position fixed pour échapper aux ancêtres overflow:hidden
   (ex. .disclosure) sans dépendre d'un portail DOM. */
.rselect { position: relative; }
.rselect-native { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; pointer-events: none; }
.rselect-trigger {
  display: flex; align-items: center; gap: 8px; width: 100%; min-height: 38px; padding: 7px 12px;
  border: 1px solid var(--border); border-radius: 6px; background: var(--surface); color: var(--text);
  font: inherit; font-size: 13px; text-align: left; cursor: pointer; transition: border-color .12s, box-shadow .12s;
}
.rselect-trigger:hover { border-color: var(--bleu); }
.rselect.open .rselect-trigger, .rselect-trigger:focus-visible { outline: none; border-color: var(--bleu); box-shadow: 0 0 0 3px rgba(0, 85, 164, .14); }
.rselect-trigger[disabled] { opacity: .55; cursor: not-allowed; }
.rselect-trigger-main { flex: 1; min-width: 0; display: grid; gap: 1px; }
.rselect-trigger-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rselect-trigger-label.placeholder { color: var(--muted); }
.rselect-trigger-sub { overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.rselect-trigger-badges { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 4px; }
.rselect-trigger::after { content: '⌄'; flex: 0 0 auto; color: var(--muted); font-size: 16px; transition: transform .16s; }
.rselect.open .rselect-trigger::after { transform: rotate(180deg); }
.rselect-panel {
  position: fixed; z-index: 150; display: flex; flex-direction: column; max-height: 340px;
  border: 1px solid var(--border); border-radius: 10px; background: var(--surface); box-shadow: var(--shadow);
  overflow: hidden; animation: rselect-in .12s ease;
}
/* `display:flex` ci-dessus a la même origine/spécificité que la règle par défaut du
   navigateur pour [hidden] ({display:none}) et gagne — sans cette règle, fermer un
   panneau (panel.hidden = true) ne le cache plus visuellement une fois qu'il a été
   ouvert une fois. */
.rselect-panel[hidden] { display: none; }
@keyframes rselect-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.rselect-search-wrap { flex: 0 0 auto; padding: 8px; border-bottom: 1px solid var(--border); }
.rselect-search { width: 100%; padding: 7px 9px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); font: inherit; font-size: 13px; }
.rselect-options { overflow-y: auto; padding: 6px; }
.rselect-group-label { padding: 8px 8px 4px; color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.rselect-option { display: flex; align-items: center; gap: 8px; padding: 8px 9px; border-radius: 7px; cursor: pointer; scroll-margin: 6px; }
.rselect-option[hidden] { display: none; }
.rselect-option:hover, .rselect-option.active { background: rgba(0, 85, 164, .08); }
.rselect-option.selected { background: rgba(0, 85, 164, .12); }
.rselect-option.selected .rselect-option-label { color: var(--bleu); font-weight: 700; }
.rselect-option-main { flex: 1; min-width: 0; display: grid; gap: 1px; }
.rselect-option-label { line-height: 1.3; }
.rselect-option-sub { color: var(--muted); font-size: 11px; line-height: 1.35; }
.rselect-option-badges { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 4px; }
.rselect-chip { display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px; border: 1px solid var(--border); border-radius: 20px; color: var(--muted); background: var(--tint); font-size: 10px; font-weight: 800; white-space: nowrap; }
.rselect-chip-constitution { color: var(--gold); background: rgba(169, 122, 9, .14); border-color: rgba(169, 122, 9, .4); }
.rselect-chip-rupture { color: var(--rouge); background: rgba(239, 65, 53, .12); border-color: rgba(239, 65, 53, .35); }
.rselect-chip-controversy { color: var(--muted); background: var(--tint); }
.rselect-empty { padding: 14px 10px; color: var(--muted); font-size: 12px; text-align: center; }

/* Bloc « avant / après » d'une règle constitutionnelle modifiée (formulaire de dépôt de loi). */
.constitution-rule-desc { margin: 4px 0 8px; padding: 8px 10px; border-left: 3px solid var(--gold); color: var(--text); font-size: 12.5px; line-height: 1.45; background: rgba(169, 122, 9, .06); }
.constitution-rule-rows { display: grid; gap: 8px; margin-top: 6px; }
.constitution-rule-row { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid rgba(169, 122, 9, .35); border-radius: 8px; background: rgba(169, 122, 9, .07); }
.constitution-rule-row .rule-label { grid-column: 1 / -1; color: var(--gold); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; }
.constitution-rule-row .rule-before { color: var(--muted); font-size: 12.5px; text-decoration: line-through; text-decoration-color: var(--muted); }
.constitution-rule-row .rule-arrow { color: var(--gold); font-weight: 900; text-align: center; }
.constitution-rule-row .rule-after { color: var(--text); font-size: 12.5px; font-weight: 700; }

input[type="range"] {
  -webkit-appearance: none; appearance: none; width: 100%; height: 6px; padding: 0;
  border: none; border-radius: 4px; background: linear-gradient(90deg, var(--bleu), var(--border) 50%, var(--rouge));
  cursor: pointer; margin: 4px 0 2px;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none; width: 18px; height: 18px; border-radius: 50%;
  background: var(--surface); border: 3px solid var(--bleu); cursor: pointer; box-shadow: var(--shadow);
}
input[type="range"]::-moz-range-thumb {
  width: 18px; height: 18px; border-radius: 50%; background: var(--surface); border: 3px solid var(--bleu);
  cursor: pointer; box-shadow: var(--shadow);
}
input[type="color"] { padding: 2px; height: 36px; cursor: pointer; }

.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }

.event-item { padding: 10px 0; border-bottom: 1px solid var(--border); }
.event-item:last-child { border-bottom: none; }
.event-item .meta { font-size: 11px; color: var(--muted); }
.event-item .title { font-weight: 600; margin: 2px 0; }
.severity-critique { color: var(--rouge); }
.severity-majeur { color: #d97706; }

.choice-buttons { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }

.gov-choice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; margin-top: 10px; }
.gov-choice-card { display: flex; flex-direction: column; gap: 8px; padding: 12px 13px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.gov-choice-card h4 { margin: 0; font-size: 13px; line-height: 1.3; }
.gov-choice-card .effect-chips { margin-top: 0; }
.gov-choice-card .gov-choice-horizon { padding: 3px 5px; color: var(--muted); font-size: 10px; font-weight: 600; background: none; }
.gov-choice-card .btn { margin-top: auto; }
.inline-form-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.inline-form-row input { flex:1; min-width:140px; }
.inline-form-row .choice-buttons { margin-top:0; }

.modal-backdrop {
  position: fixed; inset: 0; background: rgba(0,0,0,.5); display: flex; align-items: center;
  justify-content: center; z-index: 100; padding: 20px;
}
.modal {
  background: var(--surface); border-radius: var(--radius); padding: 24px; width: 100%; max-width: 420px;
  max-height: 90vh; overflow: auto; box-shadow: var(--shadow);
}
.modal h2 { margin-top: 0; }
.modal-close { float: right; background: none; border: none; font-size: 18px; cursor: pointer; color: var(--muted); }
.modal-close svg { display:block; width:16px; height:16px; }
.modal-close:active { transform:scale(.9); }
.notification-center { max-width:680px; padding:0; overflow:hidden; }.notification-center > .modal-close { position:absolute; right:18px; top:16px; z-index:2; color:#fff; }.notification-center-head { display:flex; justify-content:space-between; gap:18px; padding:25px 58px 22px 24px; color:#fff; background:linear-gradient(125deg,#063b72,#0055a4); }.notification-center-head .eyebrow { color:#b9d7f7; }.notification-center-head h2 { margin:4px 0 6px; font-size:24px; }.notification-center-head p { margin:0; color:rgba(255,255,255,.78); font-size:12px; line-height:1.4; }.notification-summary { align-self:center; flex:0 0 auto; padding:7px 10px; border:1px solid rgba(255,255,255,.3); border-radius:999px; font-size:12px; font-weight:800; }.notification-tabs { display:flex; gap:4px; padding:9px 12px 8px; overflow-x:auto; border-bottom:1px solid var(--border); background:var(--surface); scrollbar-width:thin; }.notification-tabs button { position:relative; display:flex; align-items:center; gap:5px; flex:0 0 auto; min-height:34px; padding:7px 9px; border:1px solid transparent; border-radius:9px; background:transparent; color:var(--muted); font:700 11px/1 inherit; cursor:pointer; white-space:nowrap; }.notification-tabs button:hover { color:var(--bleu); background:rgba(0,85,164,.05); }.notification-tabs button.active { color:var(--bleu); border-color:rgba(0,85,164,.18); background:rgba(0,85,164,.09); }.notification-tabs b { display:grid; place-items:center; min-width:17px; height:17px; padding:0 4px; border-radius:999px; background:var(--rouge); color:#fff; font-size:9px; }.notification-center #notif-list { max-height:58vh; overflow:auto; padding:8px 14px; }.notification-item { width:100%; display:grid; grid-template-columns:38px minmax(0,1fr) 16px; gap:11px; align-items:center; padding:12px 8px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); text-align:left; cursor:pointer; font-family:inherit; }.notification-item:hover { background:rgba(0,85,164,.05); }.notification-item.unread { background:rgba(0,85,164,.07); }.notification-item.unread strong { font-weight:800; }.notification-icon { display:grid; place-items:center; width:34px; height:34px; border-radius:10px; font-size:16px; background:rgba(0,85,164,.1); }.notification-icon .tab-icon-svg { width:17px; height:17px; }.notification-icon.institution { color:var(--bleu); }.notification-icon.elections { color:#a16207; background:#fef3c7; }.notification-icon.government { color:#7c3aed; background:#ede9fe; }.notification-icon.party { color:#047857; background:#d1fae5; }.notification-icon.message { color:#0369a1; background:#e0f2fe; }.notification-icon.diplomacy { color:#be123c; background:#ffe4e6; }.notification-content { display:grid; gap:3px; min-width:0; }.notification-content strong { font-size:13px; line-height:1.35; }.notification-kicker { color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.07em; font-weight:800; }.notification-arrow { color:var(--muted); font-size:22px; }.notification-load-more { display:flex; justify-content:center; padding:16px 8px 10px; }.notification-load-more .btn { width:100%; }.notification-center-foot { display:flex; justify-content:flex-end; padding:12px 18px; border-top:1px solid var(--border); background:var(--surface); }

.error-msg { background: rgba(239,65,53,.1); color: var(--rouge); padding: 8px 12px; border-radius: 6px; font-size: 13px; margin-top: 10px; }
.law-decision-meta { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
.law-decision-meta .badge.danger { background:var(--rouge); color:#fff; border-color:var(--rouge); }
.law-preview-card { width:100%; }
.law-preview-card h3 { margin:2px 0 6px; }
.law-preview-card.is-rupture { border-left:4px solid var(--rouge); padding-left:12px; }
.effect-gauges { display:grid; gap:9px; width:100%; }
.effect-gauge-row { display:grid; grid-template-columns:112px minmax(0,1fr) 96px; align-items:center; gap:10px; }
.effect-gauge-label { min-width:0; font-size:12.5px; font-weight:600; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.effect-gauge-track { position:relative; min-width:0; border-radius:999px; background:rgba(100,116,139,.13); }
.effect-gauge-zero { position:absolute; left:50%; top:-3px; bottom:-3px; width:1px; background:rgba(100,116,139,.3); }
.effect-gauge-fill { position:absolute; top:0; bottom:0; border-radius:999px; transition:left .25s ease, width .25s ease, background-color .25s ease; }
.effect-gauge-fill.pos { background:rgba(22,163,74,.55); }
.effect-gauge-fill.neg { background:rgba(220,38,38,.55); }
.effect-gauge-fill.flat { background:rgba(100,116,139,.3); }
.effect-gauge-marker { position:absolute; top:50%; width:7px; height:7px; margin-left:-3.5px; border-radius:50%; background:var(--surface); border:2px solid var(--muted); transform:translateY(-50%); transition:left .25s ease; box-sizing:content-box; }
.effect-gauge-marker.current.pos { border-color:var(--pos); background:var(--pos); box-shadow:0 0 0 3px rgba(22,163,74,.16); }
.effect-gauge-marker.current.neg { border-color:var(--neg); background:var(--neg); box-shadow:0 0 0 3px rgba(220,38,38,.16); }
.effect-gauge-marker.current.flat { border-color:var(--muted); background:var(--muted); }
.effect-gauge-value { min-width:0; display:flex; align-items:center; justify-content:flex-end; gap:4px; font-size:12.5px; font-weight:700; white-space:nowrap; }
.effect-gauge-value .muted { color:var(--muted); font-weight:600; }
.effect-gauge-value .pos { color:var(--pos); }
.effect-gauge-value .neg { color:var(--neg); }
.effect-gauge-value .flat { color:var(--muted); }
.effect-gauge-arrow { color:var(--muted); font-weight:400; }
@media (max-width:480px) {
  .effect-gauge-row { grid-template-columns:82px minmax(0,1fr) 82px; gap:6px; }
  .effect-gauge-label, .effect-gauge-value { font-size:11px; }
}
.legislative-form #law-impact-preview { margin:14px 0; padding:14px; border:1px solid var(--border); border-radius:10px; background:#fbfcff; }
.success-msg { background: rgba(22,163,74,.1); color: var(--pos); padding: 8px 12px; border-radius: 6px; font-size: 13px; margin-top: 10px; }
.muted { color: var(--muted); }
.small { font-size: 12px; }
.flex { display: flex; gap: 8px; align-items: center; }
.flex.between { justify-content: space-between; }
.flex.wrap { flex-wrap: wrap; }
.mt { margin-top: 16px; }
.section-title { font-size: 20px; font-weight: 700; margin: 0 0 16px; }
.section-heading { display:flex; justify-content:space-between; align-items:start; gap:14px; margin-bottom:14px; }
.section-heading h2 { margin:0 0 4px; font-size:19px; letter-spacing:-.02em; }
.section-heading p { margin:0; }
.grid.cols-4.stat-grid { grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.stat-grid { margin-top:0; }
.stat-grid .card { position:relative; overflow:hidden; min-height:172px; padding:24px 22px 22px; }
.stat-grid .card::before { content:''; position:absolute; inset:0; z-index:1; pointer-events:none; background:linear-gradient(180deg, transparent 0%, var(--surface) 66%); }
.stat-grid .card .label, .stat-grid .card .value, .stat-grid .card .delta { position:relative; z-index:2; }
.stat-grid .card .label { font-size:13px; }
.stat-grid .card .value { font-size:32px; }
.stat-spark { position:absolute; inset:0; z-index:0; opacity:.55; pointer-events:none; }
.stat-spark svg { display:block; width:100%; height:100%; }
.stat .value { letter-spacing:-.04em; }
.action-board { background:linear-gradient(135deg, #073d72, #0055a4 67%, #0a477e); color:#fff; padding:22px; border-radius:var(--radius); box-shadow:var(--shadow); }
.action-board-head { display:flex; justify-content:space-between; gap:16px; align-items:start; margin-bottom:16px; }
.action-board .eyebrow { color:#b9d7f7; }
.action-board h2 { margin:3px 0 0; font-size:21px; letter-spacing:-.02em; }
.action-board .muted { color:rgba(255,255,255,.78); }
.action-list { display:grid; gap:9px; }
.action-item { display:grid; grid-template-columns:32px minmax(0,1fr) auto; align-items:center; gap:10px; padding:12px; border-radius:10px; background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.11); }
.action-item.urgent { background:rgba(239,65,53,.20); border-color:rgba(255,255,255,.22); }
.action-item.done { grid-template-columns:32px minmax(0,1fr); opacity:.82; }
.action-icon { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:rgba(255,255,255,.17); font-weight:800; }
.action-item .btn.secondary { background:#fff; color:var(--bleu); }
.law-flow { margin-top:6px; border-left:2px solid rgba(0,85,164,.25); padding-left:8px; }
.vote-actions { display:flex; flex-wrap:wrap; gap:5px; }
/* Consigne de vote de groupe : coût toujours visible sur le bouton (pas seulement au survol,
   inutilisable au doigt) — deux teintes tranchées pour rendre l'engagement "pour/contre" lisible
   d'un coup d'œil, plus de limite d'une prise de position par tour depuis 3.19.0. */
.party-directive-actions { display:flex; flex-wrap:wrap; gap:8px; }
.party-directive-btn { display:inline-flex; flex-direction:column; align-items:center; gap:2px; border:none; line-height:1.1; }
.party-directive-label { font-weight:800; text-transform:uppercase; letter-spacing:.02em; font-size:.94em; }
.party-directive-cost { margin-top:1px; padding:2px 9px; border-radius:999px; background:rgba(0,0,0,.32); color:#fff; font-size:.76em; font-weight:800; letter-spacing:.01em; white-space:nowrap; }
.party-directive-pour { background:var(--pos); color:#fff; }
.party-directive-contre { background:var(--rouge); color:#fff; }
.party-directive-pour:hover, .party-directive-contre:hover { filter:brightness(1.1); }
.hemicycle-card { background:linear-gradient(125deg, var(--surface), rgba(0,85,164,.045)); }
.hemicycle { padding:8px; }
.legislative-form { border-top:4px solid var(--bleu); }
.council-card { border-top:4px solid var(--rouge); }
.executive-grid .card:first-child { border-top:3px solid var(--bleu); }
.executive-grid .card:nth-child(2) { border-top:3px solid #7c3aed; }
.executive-grid .card:nth-child(3) { border-top:3px solid var(--rouge); }
.disclosure { border:1px solid var(--border); border-radius:12px; background:var(--surface); overflow:hidden; }
.disclosure + .disclosure { margin-top:10px; }
.disclosure summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; font-weight:750; }
.disclosure summary::-webkit-details-marker { display:none; }
.disclosure summary::after { content:'⌄'; color:var(--muted); font-size:18px; transition:transform .16s; }
.disclosure[open] summary { border-bottom:1px solid var(--border); background:rgba(0,85,164,.035); }
.disclosure[open] summary::after { transform:rotate(180deg); }
.disclosure-body { padding:16px; }
.disclosure-body > :first-child { margin-top:0; }
.subtabs { margin-top:16px; }
.subtabs-nav { display:flex; gap:4px; overflow-x:auto; padding-bottom:2px; border-bottom:1px solid var(--border); scrollbar-width:none; }
.subtabs-nav::-webkit-scrollbar { display:none; }
.subtabs-nav button { flex:0 0 auto; display:flex; align-items:center; gap:6px; margin-bottom:-1px; padding:10px 14px; border:0; border-bottom:2px solid transparent; color:var(--muted); background:transparent; cursor:pointer; font:inherit; font-size:13px; font-weight:700; white-space:nowrap; transition:color .15s,border-color .15s; }
.subtabs-nav button:hover { color:var(--text); }
.subtabs-nav button.active { color:var(--bleu); border-bottom-color:var(--bleu); }
.subtab-badge { display:inline-flex; align-items:center; justify-content:center; min-width:17px; height:17px; padding:0 5px; border-radius:999px; color:#fff; background:var(--rouge); font-size:10px; font-weight:800; }
.subtabs-nav button.active .subtab-badge { background:var(--bleu); }
.assembly-main-tabs { margin-top:14px; }
.assembly-main-tabs > .subtabs-nav { gap:2px; border-bottom:2px solid var(--border); }
.assembly-main-tabs > .subtabs-nav button { padding:13px 18px; font-size:14px; border-radius:10px 10px 0 0; }
.assembly-main-tabs > .subtabs-nav button.active { background:rgba(0,85,164,.07); border-bottom-color:var(--bleu); }
.assembly-main-tabs > [data-subtab-panel] { margin-top:16px; }
.assembly-docket > .subtabs { margin-top:12px; }
.assembly-docket > .subtabs > .subtabs-nav { border-bottom-color:transparent; gap:6px; }
.assembly-docket > .subtabs > .subtabs-nav button { padding:6px 12px; border:1px solid var(--border); border-radius:999px; font-size:12px; }
.assembly-docket > .subtabs > .subtabs-nav button.active { background:var(--bleu); border-color:var(--bleu); color:#fff; }
.assembly-docket > .subtabs > .subtabs-nav button.active .subtab-badge { background:#fff; color:var(--bleu); }
.mini-vote-bar { display:flex; width:100%; height:6px; margin:4px 0; border-radius:4px; overflow:hidden; background:var(--tint); }
.mvb-pour { background:var(--pos); }
.mvb-contre { background:var(--rouge); }
.mvb-abst { background:#d28b12; }
.timeline-action-card { padding:14px 16px; }
.timeline-action-card h3 { margin:3px 0 8px; font-size:15px; }
.timeline-feed { display:grid; }
.timeline-item { padding-left:12px; border-left:3px solid var(--border); border-bottom:none; margin-bottom:10px; }
.timeline-review { border-left-color:#9a6700; }
.timeline-question { border-left-color:var(--bleu); }
.timeline-motion { border-left-color:var(--rouge); }
.form-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; }
.form-grid.two { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.form-grid label { margin-top:0; }
.form-section { margin-top:14px; padding-top:14px; border-top:1px solid var(--border); }
.checkboxes { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:7px; margin-top:8px; }
.checkboxes label { display:flex; align-items:flex-start; gap:7px; border:1px solid var(--border); border-radius:8px; padding:8px; margin:0; color:var(--text); background:rgba(0,85,164,.02); }
.checkboxes input { width:auto; margin-top:1px; accent-color:var(--bleu); }
.role-mission { margin:16px 0 4px; padding:18px; border-radius:12px; border:1px solid rgba(0,85,164,.23); background:linear-gradient(135deg, rgba(0,85,164,.09), rgba(255,255,255,.55)); }
.objective-board { padding:18px; border:1px solid rgba(8,120,120,.3); border-radius:16px; background:linear-gradient(135deg,rgba(8,120,120,.11),rgba(255,255,255,.92)); box-shadow:0 8px 22px rgba(8,120,120,.08); }.objective-board-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }.objective-board h2 { margin:3px 0 0; font-size:20px; letter-spacing:-.025em; }.objective-list { display:grid; gap:8px; margin-top:12px; }.objective-item { display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:10px; padding:11px; border:1px solid rgba(8,120,120,.16); border-radius:10px; background:rgba(255,255,255,.78); }.objective-item.done { border-color:rgba(22,163,74,.28); background:rgba(22,163,74,.06); }.objective-icon { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; background:rgba(8,120,120,.13); color:#087878; font-weight:900; }.objective-item.done .objective-icon { background:var(--pos); color:#fff; }.objective-item strong { font-size:13px; }.objective-item p { margin:3px 0 7px; color:var(--muted); font-size:11px; line-height:1.35; }.objective-progress { display:flex; align-items:center; gap:7px; }.objective-progress span { display:block; flex:1; max-width:180px; height:5px; overflow:hidden; border-radius:99px; background:rgba(8,120,120,.14); }.objective-progress i { display:block; height:100%; border-radius:inherit; background:#159b87; }.objective-progress small { color:var(--muted); font-size:10px; }
.objective-reward { margin:-2px 0 7px; color:#087878; font-size:10px; font-weight:800; }.treasury-flow { display:flex; align-items:center; flex-wrap:wrap; gap:7px; padding:9px 10px; border-radius:9px; background:rgba(0,85,164,.06); color:var(--muted); font-size:11px; }.treasury-flow b { color:var(--text); }
.objective-modal { margin:-24px; overflow:hidden; border-radius:14px; }.objective-modal-head { padding:25px 27px 20px; color:#fff; background:linear-gradient(125deg,#075c69,#087878,#159b87); }.objective-modal-head .eyebrow { color:#bff1e8; }.objective-modal-head h2 { margin:4px 0 6px; font-size:24px; }.objective-modal-head p { margin:0; color:rgba(255,255,255,.85); font-size:12px; line-height:1.45; }.objective-modal-bonus { padding:11px 24px; color:#075449; background:#e5faf5; font-size:12px; }.objective-modal-bonus small { display:block; margin-top:4px; color:#397b70; font-size:10px; }.objective-modal-list { display:grid; gap:0; padding:6px 24px 18px; }.objective-modal-item { display:grid; grid-template-columns:31px minmax(0,1fr) auto; align-items:center; gap:11px; padding:15px 0; border-bottom:1px solid var(--border); }.objective-modal-item:last-child { border-bottom:0; }.objective-modal-item.done { opacity:.62; }.objective-modal-number { display:grid; place-items:center; width:27px; height:27px; border-radius:50%; color:#087878; background:#def6f0; font-size:12px; font-weight:900; }.objective-modal-item.done .objective-modal-number { color:#fff; background:var(--pos); }.objective-modal-item h3 { margin:0 0 3px; font-size:14px; }.objective-modal-item p { margin:0 0 5px; color:var(--muted); font-size:11px; line-height:1.4; }.objective-modal-item small { color:#087878; font-size:10px; font-weight:800; }
.objective-item .btn { white-space:nowrap; }
.party-hq-hero { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px; padding:25px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#102a43,var(--party-color),#063b72); box-shadow:var(--shadow); }.party-hq-hero .eyebrow { color:rgba(255,255,255,.72); }.party-hq-identity { display:flex; align-items:center; gap:15px; }.party-hq-sigil { display:grid; place-items:center; width:62px; height:62px; border:2px solid rgba(255,255,255,.55); border-radius:16px; background:rgba(255,255,255,.12); font-weight:900; font-size:17px; }.party-hq-hero h1 { margin:3px 0 6px; font-size:27px; letter-spacing:-.04em; }.party-hq-hero p { margin:0; color:rgba(255,255,255,.78); font-size:13px; }.party-hq-status { display:grid; justify-items:end; gap:3px; font-size:11px; color:rgba(255,255,255,.7); }.party-hq-status strong { color:#fff; font-size:21px; }.party-hq-quicklinks { flex-basis:100%; display:flex; flex-wrap:wrap; gap:8px; }.party-hq-quicklinks .btn.ghost { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.35); color:#fff; }.party-hq-quicklinks .btn.ghost:hover { background:rgba(255,255,255,.22); }.party-hq-stats { flex-basis:100%; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }.party-hq-stat { background:rgba(255,255,255,.12); border-radius:12px; padding:10px 12px; text-align:center; }.party-hq-stat strong { display:block; font-size:19px; }.party-hq-stat span { font-size:10px; color:rgba(255,255,255,.75); text-transform:uppercase; letter-spacing:.03em; }.legislative-item { border-left:3px solid var(--bleu); padding-left:12px; }.party-story { position:relative; display:flex; flex-direction:column; gap:14px; padding-left:34px; }.party-story::before { content:''; position:absolute; top:4px; bottom:4px; left:13px; width:2px; background:var(--border); }.party-story-item { position:relative; }.party-story-marker { position:absolute; left:-34px; top:0; width:27px; height:27px; border-radius:50%; background:var(--surface); border:2px solid var(--bleu); display:grid; place-items:center; font-size:12px; z-index:1; }.party-story-item.type-scandale .party-story-marker,.party-story-item.type-fracture .party-story-marker,.party-story-item.type-polemique .party-story-marker,.party-story-item.type-covert .party-story-marker { border-color:var(--rouge); }.party-story-item.type-percee .party-story-marker,.party-story-item.type-succes_local .party-story-marker,.party-story-item.type-financement .party-story-marker,.party-story-item.type-initiative .party-story-marker { border-color:var(--pos); }.party-story-item.type-fondation .party-story-marker,.party-story-item.type-leadership .party-story-marker,.party-story-item.type-alliance .party-story-marker,.party-story-item.type-accord .party-story-marker { border-color:#9a6700; }.party-story-card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:10px 14px; }.party-story-card h4 { margin:0; font-size:14px; }.party-story-card .small.muted { white-space:nowrap; margin-left:10px; }.legislative-grid { display:flex; flex-direction:column; gap:10px; }.split-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr); gap:16px; align-items:start; }.split-grid.equal { grid-template-columns:repeat(2,minmax(280px,1fr)); }.split-grid > .card,.split-grid > details.disclosure { margin-top:0; }.party-hq-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(340px,1.2fr); gap:16px; }.party-profile-card h2,.party-action-card h2 { margin:0; font-size:18px; }.party-action-card { border-top:4px solid var(--bleu); background:linear-gradient(145deg,var(--surface),rgba(0,85,164,.04)); }.party-action-zone { margin-top:14px; }.party-action-buttons { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.party-action-buttons .btn { min-height:56px; text-align:left; display:flex; flex-direction:column; justify-content:center; gap:2px; }.party-action-buttons .btn span { font-weight:600; }.party-action-buttons .btn small { font-weight:400; opacity:.85; font-size:11px; }.party-action-feedback { min-height:18px; margin:10px 0 0; font-size:12px; color:var(--muted); }.party-action-yield { align-items:center; }.party-missions { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:12px; }.party-missions .role-mission { margin:0; }.party-stats-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.party-momentum-card { border-left:4px solid var(--pos); }
.account-hero { display:flex; align-items:center; gap:16px; padding:24px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#102a43,#0055a4,#087c9a); box-shadow:var(--shadow); }.account-avatar { display:grid; flex:0 0 auto; place-items:center; width:62px; height:62px; border:3px solid rgba(255,255,255,.72); border-radius:50%; color:#fff; font-size:28px; font-weight:900; box-shadow:inset 0 0 0 3px rgba(0,0,0,.12); }.account-hero .eyebrow { color:rgba(255,255,255,.72); }.account-hero h1 { margin:3px 0 5px; font-size:28px; }.account-hero p { margin:0; color:rgba(255,255,255,.8); font-size:13px; }.account-meta { display:grid; gap:3px; margin-left:auto; text-align:right; color:rgba(255,255,255,.7); font-size:11px; }.account-meta strong { color:#fff; font-size:17px; }.account-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }.account-card h2 { margin:2px 0 0; font-size:19px; }.account-form { margin-top:16px; }.account-security-note { margin:8px 0 14px; padding:9px 10px; border-left:3px solid var(--bleu); background:rgba(0,85,164,.05); color:var(--muted); font-size:12px; }.account-settings-feedback { min-height:20px; color:var(--muted); font-size:13px; }
.account-hero.profile-theme-hemicycle { background:linear-gradient(125deg,#4c1627,#8d3342 58%,#b98a36); }.account-hero.profile-theme-minuit { background:linear-gradient(125deg,#061426,#102c53 58%,#193b75); }.account-hero.profile-theme-salon { background:linear-gradient(125deg,#103c31,#2f6a55 58%,#cfb868); }.account-hero.profile-theme-manifeste { background:linear-gradient(125deg,#6a5b43,#b33540); }
.executive-hero { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:26px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#17233c,#304b78,#0055a4); box-shadow:var(--shadow); }.executive-hero .eyebrow { color:rgba(255,255,255,.7); }.executive-hero h1 { margin:4px 0 7px; font-size:30px; letter-spacing:-.04em; }.executive-hero p { max-width:640px; margin:0; color:rgba(255,255,255,.8); font-size:13px; line-height:1.5; }.executive-command-grid { display:grid; grid-template-columns:1.35fr .85fr 1fr; gap:16px; }.executive-leadership,.executive-budget-summary,.executive-radar { min-height:142px; }.executive-people { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:13px; }.executive-people > div { display:grid; gap:5px; padding:10px; border-radius:10px; background:rgba(0,85,164,.05); }.executive-people > div > span:not(.badge) { color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; }.executive-people .badge { color:#fff; font-size:15px; font-weight:800; line-height:1.25; white-space:normal; text-shadow:0 1px 1px rgba(0,0,0,.32); }.executive-budget-summary strong { display:block; margin:9px 0 4px; color:var(--bleu); font-size:25px; }.executive-budget-summary p { min-height:30px; margin:0 0 11px; color:var(--muted); font-size:12px; }.executive-radar { display:grid; align-content:start; gap:7px; }.executive-radar-row { display:flex; justify-content:space-between; gap:8px; padding:7px 0; border-bottom:1px solid var(--border); font-size:12px; }.executive-radar-row:last-child { border:0; }.executive-radar-row b { color:var(--rouge); font-size:11px; }.council-table tbody tr { transition:background .16s; }.council-table tbody tr:hover { background:rgba(0,85,164,.035); }.cabinet-actions { display:flex; flex-wrap:wrap; gap:6px; }.cabinet-actions .btn { text-align:left; }.cabinet-action-button { display:grid; gap:3px; }.cabinet-action-button small { font-size:9px; line-height:1.2; opacity:.72; }.cabinet-own-action { display:grid; gap:5px; padding:9px 10px; border-left:3px solid var(--bleu); border-radius:8px; background:rgba(0,85,164,.06); }.cabinet-own-action > div { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }.cabinet-own-action > div .badge { font-size:10px; }.cabinet-own-action p { margin:0; }.cabinet-appointment { display:grid; grid-template-columns:minmax(145px,1fr) auto; gap:5px; align-items:center; min-width:230px; }.cabinet-appointment select { min-width:0; padding:6px; font-size:11px; }.appointment-feedback,.budget-feedback { display:block; margin-top:4px; }.cabinet-result { display:grid; gap:6px; padding:10px; border-radius:9px; background:rgba(46,204,113,.08); }.cabinet-result .effect-chips { margin-top:0; }.effect-chips { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }.effect-chips span { padding:3px 5px; border-radius:5px; background:rgba(0,85,164,.07); color:var(--muted); font-size:10px; font-weight:700; }.effect-chips span.pos { color:var(--pos); background:rgba(46,204,113,.09); }.effect-chips span.neg { color:var(--rouge); background:rgba(239,65,53,.08); }
.intermin-card { border-top:4px solid var(--bleu); }.intermin-portfolios { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }.intermin-portfolio { display:flex; align-items:center; gap:6px; padding:6px 10px; border-radius:8px; background:rgba(0,85,164,.06); font-size:12px; font-weight:600; color:var(--muted); }.intermin-portfolio.joined { background:rgba(46,204,113,.12); color:var(--pos); }.intermin-portfolio span { font-size:13px; }.intermin-theme-choice { cursor:pointer; }.intermin-theme-choice input[type="radio"] { margin:0 0 4px; }.intermin-theme-choice:has(input:checked) { border-color:var(--bleu); box-shadow:0 0 0 2px color-mix(in srgb,var(--bleu) 12%,transparent); }
/* ================= ÉLECTIONS — refonte républicaine 3.35.0 ================= */
/* Hero solennel : dégradé rouge républicain, liseré tricolore, devise, citation constitutionnelle */
.election-hero { position:relative; overflow:hidden; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:28px; align-items:center; padding:38px 40px 26px; border-radius:22px; color:#fff; background:radial-gradient(circle at 86% 6%,rgba(233,185,92,.18),transparent 26%),radial-gradient(circle at 4% 118%,rgba(0,85,164,.4),transparent 42%),linear-gradient(128deg,#2a0913,#8e1430 54%,#c2233b); box-shadow:0 20px 50px rgba(118,18,38,.24); }
.election-hero::before { content:""; position:absolute; top:0; left:0; right:0; height:5px; background:linear-gradient(90deg,#0055A4 0 33.4%,#ffffff 33.4% 66.7%,#EF4135 66.7% 100%); }
.election-hero::after { content:""; position:absolute; right:-110px; top:-150px; width:430px; height:430px; border:1px solid rgba(255,255,255,.1); border-radius:50%; box-shadow:0 0 0 46px rgba(255,255,255,.028),0 0 0 92px rgba(255,255,255,.018); }
.election-hero-copy { position:relative; z-index:1; }
.election-hero .eyebrow { color:#f5c26b; letter-spacing:.18em; }
.election-hero h1 { margin:9px 0 7px; color:#fff; font-size:clamp(2rem,4.2vw,3.3rem); line-height:1; letter-spacing:-.05em; }
.election-hero-cite { max-width:720px; margin:0; color:#f8e7c9; font-family:Georgia,serif; font-style:italic; font-size:1.02rem; line-height:1.5; }
.election-hero-cite small { display:block; margin-top:5px; color:rgba(255,255,255,.62); font-family:inherit; font-size:.7rem; font-style:normal; font-weight:700; letter-spacing:.08em; }
.election-hero-copy > p.election-hero-body { max-width:700px; margin:14px 0 0; color:rgba(255,255,255,.84); font-size:.86rem; line-height:1.62; }
.election-devise { margin-top:17px; color:#e9b95c; font-size:.72rem; font-weight:800; letter-spacing:.34em; text-transform:uppercase; }
.election-hero-side { position:relative; z-index:1; display:grid; justify-items:center; gap:12px; }
.election-seal { display:grid; place-items:center; width:116px; height:116px; border:1px solid rgba(233,185,92,.5); border-radius:50%; background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.16),transparent 44%),rgba(70,8,20,.32); box-shadow:inset 0 0 0 7px rgba(255,255,255,.05),0 14px 34px rgba(40,5,14,.35); }
.election-seal > span { font-size:2.9rem; line-height:1; }
.election-seal small { margin-top:6px; color:#f5c26b; font-size:.56rem; font-weight:800; letter-spacing:.2em; text-transform:uppercase; }
.election-hero-clock { display:grid; gap:6px; min-width:230px; }
.election-hero-clock .election-hero-card { padding:11px 14px; }
.election-hero-card { padding:11px 14px; border:1px solid rgba(255,255,255,.17); border-radius:13px; background:rgba(8,14,26,.28); backdrop-filter:blur(6px); }
.election-hero-card > span { display:block; color:rgba(255,255,255,.64); font-size:.62rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.election-hero-card > strong { display:block; margin-top:3px; color:#fff; font-size:1.22rem; line-height:1.15; }
.election-hero-card > small { display:block; margin-top:2px; color:rgba(255,255,255,.6); font-size:.66rem; }
.election-facts { position:relative; z-index:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(205px,1fr)); gap:8px; margin-top:24px; padding-top:18px; border-top:1px solid rgba(255,255,255,.15); }
.election-fact { display:grid; gap:2px; padding:9px 12px; border-radius:11px; background:rgba(255,255,255,.08); }
.election-fact b { color:#fff; font-size:.78rem; font-weight:800; line-height:1.3; }
.election-fact span { color:rgba(255,255,255,.6); font-size:.64rem; line-height:1.35; }
.election-hero .badge.outline { border-color:rgba(255,255,255,.42); color:#fff; background:rgba(255,255,255,.12); }
/* Calendrier républicain : liste verticale solennelle (nom .election-agenda conservé pour le swipe) */
.election-agenda { display:grid; gap:9px; }
.election-agenda-step { display:grid; grid-template-columns:46px minmax(0,1fr) auto; gap:13px; align-items:center; padding:12px 15px; border:1px solid var(--border); border-radius:13px; background:var(--surface); box-shadow:0 3px 12px rgba(15,23,42,.04); }
.election-agenda-step > span { display:grid; place-items:center; width:46px; height:46px; border-radius:12px; font-size:20px; background:var(--tint); }
.election-agenda-step > div { display:grid; gap:2px; min-width:0; }
.election-agenda-step strong { font-size:.86rem; }
.election-agenda-step small { color:var(--muted); font-size:.7rem; }
.election-agenda-step.active { border-color:rgba(232,75,60,.5); background:linear-gradient(90deg,rgba(232,75,60,.055),var(--surface)); box-shadow:inset 3px 0 0 var(--rouge); }
.election-agenda-step.active > span { background:rgba(232,75,60,.12); }
.election-agenda-step.next { border-color:rgba(0,85,164,.4); box-shadow:inset 3px 0 0 var(--bleu); }
.election-agenda-step.next > span { background:rgba(0,85,164,.1); }
.election-agenda-when { display:grid; gap:2px; justify-items:end; text-align:right; }
.election-agenda-when b { font-size:.8rem; }
.election-agenda-when small { color:var(--muted); font-size:.66rem; }
/* Cartes scrutins : bandeau tricolore + tête colorée par type + convocation + nature du scrutin */
.election-command-card { position:relative; overflow:hidden; }
.election-command-card::before { content:""; position:absolute; top:0; left:0; right:0; height:4px; z-index:2; background:linear-gradient(90deg,#0055A4 0 33.4%,#ffffff 33.4% 66.7%,#EF4135 66.7% 100%); }
.election-card-head { display:flex; align-items:center; gap:13px; padding:20px 20px 14px; color:#fff; background:linear-gradient(120deg,var(--scrutin-c1,#7c1226),var(--scrutin-c2,#a01738)); }
.election-card-emblem { display:grid; flex:0 0 auto; place-items:center; width:46px; height:46px; border-radius:13px; background:rgba(255,255,255,.15); font-size:22px; }
.election-card-head h2 { margin:1px 0 0; color:#fff; font-size:1.22rem; letter-spacing:-.03em; }
.election-card-head .eyebrow { color:rgba(255,255,255,.72); }
.election-card-head .badge { margin-left:auto; white-space:normal; }
.election-card-head .badge.outline { border-color:rgba(255,255,255,.42); color:#fff; background:rgba(255,255,255,.12); }
.scrutin-presidentielle { --scrutin-c1:#123a6b; --scrutin-c2:#0055A4; }
.scrutin-legislatives { --scrutin-c1:#46206b; --scrutin-c2:#6d3ba8; }
.scrutin-referendum { --scrutin-c1:#0d5a43; --scrutin-c2:#0f8a68; }
.scrutin-municipales { --scrutin-c1:#065f46; --scrutin-c2:#047857; }
.election-convocation { display:flex; flex-wrap:wrap; align-items:center; gap:9px 22px; padding:12px 20px; border-bottom:1px solid var(--border); background:var(--tint); }
.election-convocation > div { display:grid; gap:1px; }
.election-convocation b { font-size:.78rem; }
.election-convocation span { color:var(--muted); font-size:.64rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.election-nature { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:8px; padding:14px 20px; border-bottom:1px solid var(--border); }
.election-nature-item { display:grid; gap:2px; padding:8px 11px; border-radius:10px; background:rgba(0,85,164,.05); }
.election-nature-item b { font-size:.74rem; }
.election-nature-item span { color:var(--muted); font-size:.64rem; line-height:1.35; }
.election-command-grid { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(0,1.6fr); gap:18px; padding:18px 20px 20px; }
.campaign-entry { align-self:start; padding:15px; border:1px solid var(--border); border-radius:13px; background:linear-gradient(145deg,rgba(0,85,164,.05),var(--surface)); }
.campaign-entry form { margin-top:9px; }
.campaign-entry label { margin-top:10px; }
.my-candidacy { display:grid; gap:8px; margin-top:11px; }
.my-candidacy strong { font-size:17px; }
.my-candidacy p { margin:0; color:var(--muted); font-size:12px; }
.election-field h3 { margin:2px 0 0; font-size:18px; }
/* Champ électoral : cartes candidats riches (projet, promesses, projection) */
.candidate-field { display:grid; grid-template-columns:repeat(auto-fill,minmax(235px,1fr)); gap:11px; margin-top:11px; }
.candidate-card { position:relative; display:grid; gap:6px; min-height:148px; padding:12px; border:1px solid var(--border); border-top:3px solid var(--candidate); border-radius:13px; background:var(--surface); box-shadow:0 3px 12px rgba(15,23,42,.045); }
.candidate-card.mine { border-color:var(--candidate); background:linear-gradient(160deg,rgba(0,85,164,.06),var(--surface)); box-shadow:0 0 0 2px rgba(0,85,164,.1); }
.candidate-card.mine::after { content:"Vous"; position:absolute; top:9px; right:10px; padding:2px 7px; border-radius:99px; color:var(--bleu); background:rgba(0,85,164,.09); font-size:.58rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.candidate-head { display:flex; align-items:center; gap:9px; min-width:0; }
.candidate-avatar { display:grid; flex:0 0 auto; place-items:center; width:34px; height:34px; border-radius:10px; color:#fff; background:var(--candidate); font-size:.8rem; font-weight:900; }
.candidate-head .badge { font-size:9px; }
.candidate-head > div { display:grid; gap:1px; min-width:0; }
.candidate-head strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.84rem; }
.candidate-role { color:var(--muted); font-size:.6rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.candidate-slogan { min-height:30px; margin:0; color:var(--muted); font-size:.7rem; line-height:1.35; font-style:italic; }
.candidate-promises { display:grid; gap:3px; padding:7px 9px; border-radius:9px; background:rgba(212,160,23,.09); }
.candidate-promises b { color:#8a6a10; font-size:.6rem; font-weight:800; text-transform:uppercase; letter-spacing:.07em; }
.candidate-promises ul { display:grid; gap:2px; margin:2px 0 0; padding-left:14px; }
.candidate-promises li { color:var(--muted); font-size:.66rem; line-height:1.3; }
.candidate-proj { display:grid; gap:4px; margin-top:auto; }
.candidate-proj > div { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.candidate-proj b { color:var(--bleu); font-size:1.02rem; }
.candidate-proj small { color:var(--muted); font-size:.62rem; }
.candidate-bar { overflow:hidden; height:5px; border-radius:99px; background:var(--border); }
.candidate-bar i { display:block; height:100%; border-radius:inherit; background:var(--candidate); }
.candidate-pts { color:var(--muted); font-size:.62rem; }
.candidate-more { display:flex; justify-content:center; margin-top:12px; }
/* Duel du second tour */
.election-duel { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:14px; align-items:center; padding:16px 20px; border-bottom:1px solid var(--border); }
.election-duel .candidate-card { min-height:0; }
.election-duel-vs { display:grid; place-items:center; width:46px; height:46px; border-radius:50%; color:var(--rouge); background:rgba(239,65,53,.09); font-weight:900; font-size:.95rem; }
/* Bulletin de vote joueur */
.election-vote-wrap { padding:0 20px 20px; }
.election-vote { padding:13px 16px; border:1px solid rgba(0,85,164,.26); border-radius:13px; background:linear-gradient(145deg,rgba(0,85,164,.06),var(--surface)); }
.election-vote .eyebrow { color:var(--bleu); }
/* Référendum */
.referendum-body { padding:16px 20px 20px; }
.referendum-command h2 { margin:2px 0; }
.referendum-tally { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; margin-top:13px; }
.referendum-tally > div:not(.referendum-track) { display:grid; gap:1px; text-align:center; font-size:11px; color:var(--muted); }
.referendum-tally strong { color:var(--text); font-size:1.5rem; }
.referendum-track { height:12px; overflow:hidden; border-radius:999px; background:rgba(239,65,53,.14); }
.referendum-track span { display:block; height:100%; background:var(--pos); }
/* Archives électorales */
.election-history { padding:20px 22px; }
.election-history-item { padding:14px 0; border-bottom:1px solid var(--border); }
.election-history-item:last-child { border-bottom:0; }
.election-history-item > header { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
.election-history-item h3 { margin:0; font-size:1rem; }
.election-history-meta { color:var(--muted); font-size:.68rem; }
.election-winner { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:9px; padding:9px 12px; border-radius:10px; background:rgba(0,85,164,.05); }
.election-winner b { font-size:.8rem; }
.election-results { display:grid; gap:6px; margin-top:9px; }
.election-result-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:10px; align-items:center; font-size:.74rem; }
.election-result-row .candidate-bar { width:auto; }
.election-result-row b { min-width:34px; text-align:right; }
.election-result-row .badge { font-size:9px; }
@media (max-width:760px) {
  .election-hero { grid-template-columns:1fr; padding:30px 20px 22px; gap:18px; }
  .election-hero-side { justify-items:start; }
  .election-hero-clock { min-width:0; width:100%; }
  .election-agenda-step { grid-template-columns:42px minmax(0,1fr); }
  .election-agenda-when { grid-column:2; justify-items:start; text-align:left; }
  .election-command-grid { grid-template-columns:1fr; padding:14px; }
  .election-duel { grid-template-columns:1fr; padding:14px; }
  .election-duel-vs { display:none; }
  .election-card-head { flex-wrap:wrap; }
  .election-card-head .badge { margin-left:0; }
  .election-convocation, .election-nature { padding:12px 14px; }
}
@media (prefers-color-scheme:dark) {
  .election-nature-item { background:rgba(0,85,164,.14); }
  .campaign-entry { background:linear-gradient(145deg,rgba(0,85,164,.13),var(--surface)); }
  .election-vote { background:linear-gradient(145deg,rgba(0,85,164,.13),var(--surface)); }
  .election-winner { background:rgba(0,85,164,.13); }
  .candidate-promises { background:rgba(212,160,23,.14); }
  .candidate-promises b { color:#e3c879; }
  .election-card-head .badge.outline { border-color:rgba(255,255,255,.4); color:#fff; background:rgba(255,255,255,.1); }
}
.parties-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:26px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#162637,#124d77,#00827f); box-shadow:var(--shadow); }.parties-hero .eyebrow { color:rgba(255,255,255,.72); }.parties-hero h1 { margin:4px 0 7px; font-size:30px; letter-spacing:-.04em; }.parties-hero p { max-width:630px; margin:0; color:rgba(255,255,255,.84); font-size:13px; }.parties-hero-leader { display:grid; justify-items:end; gap:3px; color:rgba(255,255,255,.74); font-size:11px; }.parties-hero-leader strong { display:grid; place-items:center; width:46px; height:46px; border:2px solid rgba(255,255,255,.7); border-radius:14px; color:#fff; background:var(--leader); font-size:16px; }.parties-hero-leader small { color:#fff; font-weight:800; }.party-balance { display:grid; grid-template-columns:.65fr .65fr 1.7fr; gap:16px; }.party-balance .card { min-height:126px; }.party-balance-number { margin:7px 0 2px; color:var(--bleu); font-size:30px; font-weight:900; }.party-balance p { margin:0; color:var(--muted); font-size:12px; }.party-spectrum-map { position:relative; height:64px; margin:9px 0 6px; border-radius:8px; background:linear-gradient(90deg,rgba(0,85,164,.12),rgba(255,255,255,.3),rgba(46,204,113,.13)); }.party-spectrum-map:before { position:absolute; left:50%; top:0; bottom:0; width:1px; background:rgba(15,23,42,.16); content:""; }.party-spectrum-map span { position:absolute; display:grid; place-items:center; width:31px; height:22px; transform:translate(-50%,50%); border:2px solid #fff; border-radius:6px; color:#fff; box-shadow:0 2px 7px rgba(15,23,42,.22); font-size:9px; font-weight:900; }.party-directory { display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:16px; }.party-directory-card { position:relative; overflow:hidden; border-top:4px solid var(--party); }.party-directory-card.mine { box-shadow:0 0 0 2px color-mix(in srgb,var(--party) 28%,transparent),var(--shadow); }.party-directory-card header { display:flex; justify-content:space-between; gap:10px; }.party-directory-card header > div { display:flex; align-items:center; gap:7px; }.party-you { padding:3px 7px; border-radius:999px; color:var(--bleu); background:rgba(0,85,164,.08); font-size:10px; font-weight:800; }.party-rank { color:var(--muted); font-size:11px; }.party-directory-title { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-top:12px; }.party-directory-title h2 { margin:0; font-size:20px; }.party-directory-title span { color:var(--muted); font-size:11px; text-align:right; }.party-description { min-height:34px; margin:7px 0 12px; color:var(--muted); font-size:12px; line-height:1.4; }.party-score { display:grid; grid-template-columns:120px 1fr; align-items:end; gap:10px; }.party-score > div:first-child { display:grid; gap:2px; }.party-score span { color:var(--muted); font-size:11px; }.party-score strong { color:var(--text); font-size:25px; }.party-score small { font-size:11px; font-weight:800; }.party-spark { min-height:44px; }.party-resources { display:flex; flex-wrap:wrap; gap:7px; margin-top:9px; }.party-resources span { padding:4px 6px; border-radius:5px; background:rgba(0,85,164,.055); color:var(--muted); font-size:10px; font-weight:700; }.party-positions { margin-top:12px; border-top:1px solid var(--border); }.party-positions summary { padding:10px 0; color:var(--bleu); cursor:pointer; font-size:12px; font-weight:800; }.party-positions > div { padding-bottom:4px; }

/* Barre d'outils de la page Partis : recherche, filtres à puces, tri. */
.parties-toolbar { display:grid; gap:12px; padding:16px 18px; }
.parties-search-field { display:flex; align-items:center; gap:9px; min-height:40px; padding:0 13px; border:1px solid var(--border); border-radius:11px; background:var(--bg); }
.parties-search-field span { color:var(--muted); font-size:14px; }
.parties-search-field input { width:100%; min-height:0; padding:0; border:0; outline:0; background:transparent; font-size:13px; }
.parties-filter-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.parties-chips { display:flex; flex-wrap:wrap; gap:7px; }
.filter-chip { border:1px solid var(--border); padding:7px 13px; border-radius:999px; color:var(--muted); background:var(--surface); cursor:pointer; font-size:12px; font-weight:750; transition:all .15s; }
.filter-chip:hover { border-color:var(--bleu); color:var(--bleu); }
.filter-chip.active { border-color:var(--bleu); color:#fff; background:var(--bleu); box-shadow:0 4px 12px rgba(0,85,164,.22); }
.parties-sort-field { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; font-weight:700; white-space:nowrap; }
.parties-sort-field select { min-height:36px; padding:0 8px; font-size:12px; }
.parties-result-count { padding:0 2px 10px; }

/* Pagination générique, réutilisable partout où une liste est découpée en pages. */
.pagination { display:flex; align-items:center; justify-content:center; gap:10px; }
.pagination-nav { border:1px solid var(--border); padding:8px 14px; border-radius:9px; color:var(--bleu); background:var(--surface); cursor:pointer; font-size:12px; font-weight:750; }
.pagination-nav:disabled { color:var(--muted); background:var(--tint); cursor:default; opacity:.55; }
.pagination-pages { display:flex; align-items:center; gap:4px; }
.pagination-page { display:grid; place-items:center; width:34px; height:34px; border:1px solid transparent; border-radius:9px; color:var(--muted); background:transparent; cursor:pointer; font-size:12px; font-weight:750; }
.pagination-page:hover { border-color:var(--border); color:var(--text); }
.pagination-page.active { color:#fff; background:var(--bleu); box-shadow:0 4px 12px rgba(0,85,164,.22); }
.pagination-ellipsis { color:var(--muted); font-size:12px; padding:0 3px; }
.empty-state .btn { margin-top:14px; }

/* Fiche parti : dossier public consacré à une organisation, sur le modèle de la fiche membre. */
.party-page { display:grid; gap:16px; max-width:1500px; margin:0 auto; }
.party-topbar { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; padding:8px 10px; border:1px solid var(--border); border-radius:14px; background:var(--surface); box-shadow:0 6px 20px rgba(15,23,42,.05); }
.party-topbar button { width:max-content; border:0; padding:8px 10px; border-radius:9px; color:var(--bleu); background:transparent; cursor:pointer; font-weight:750; }
.party-topbar button:last-child { justify-self:end; }
.party-topbar span { justify-self:center; color:var(--muted); font-size:.7rem; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.party-hero { position:relative; overflow:hidden; display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:center; padding:30px 34px; border-radius:24px; color:#fff; background:radial-gradient(circle at 80% 0,rgba(255,255,255,.2),transparent 32%),linear-gradient(125deg,#0b1f35,color-mix(in srgb,var(--party) 82%,#0b1f35)); box-shadow:0 20px 50px rgba(12,31,52,.19); }
.party-hero::after { content:""; position:absolute; right:-75px; top:-110px; width:380px; height:380px; border:1px solid rgba(255,255,255,.08); border-radius:50%; box-shadow:0 0 0 42px rgba(255,255,255,.025),0 0 0 84px rgba(255,255,255,.018); }
.party-hero-badge { position:relative; z-index:1; display:grid; place-items:center; width:104px; height:104px; border:5px solid rgba(255,255,255,.9); border-radius:24px; color:#fff; background:var(--party); box-shadow:0 13px 30px rgba(3,17,31,.3); font-size:1.9rem; font-weight:900; }
.party-hero-body { position:relative; z-index:1; }
.party-hero-body .eyebrow { color:rgba(255,255,255,.72); }
.party-hero-body h1 { margin:4px 0 8px; font-size:2.3rem; letter-spacing:-.045em; color:#fff; }
.party-hero-body p { max-width:680px; margin:0 0 12px; color:rgba(255,255,255,.86); font-size:13px; line-height:1.55; }
.party-hero-facts { display:flex; flex-wrap:wrap; gap:14px; color:rgba(255,255,255,.78); font-size:12px; font-weight:700; }
.party-kpis { display:grid; grid-template-columns:repeat(4,1fr); overflow:hidden; border:1px solid var(--border); border-radius:17px; background:var(--border); box-shadow:var(--shadow); }
.party-kpis > div { display:flex; flex-direction:column; min-height:98px; padding:17px 18px; background:var(--surface); }
.party-kpis strong { color:var(--text); font-size:1.6rem; letter-spacing:-.04em; }
.party-kpis span { margin-top:auto; color:var(--muted); font-size:.68rem; font-weight:750; }
.party-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(280px,.62fr); gap:16px; align-items:start; }
.party-layout > main,.party-layout > aside { display:grid; gap:16px; }
.party-layout > aside { position:sticky; top:82px; }
.party-page-section .section-heading { margin-bottom:14px; }
.party-page-side { padding:21px; border:1px solid var(--border); border-radius:17px; background:var(--surface); box-shadow:0 7px 24px rgba(15,23,42,.045); }
.party-page-side h2 { margin:4px 0 10px; font-size:1.05rem; }
.party-activity-list { display:grid; gap:8px; margin:0; padding:0; list-style:none; }
.party-activity-list li { padding:9px 11px; border-radius:9px; background:var(--tint); font-size:.78rem; line-height:1.45; }
@media (max-width:1100px) { .party-kpis { grid-template-columns:repeat(2,1fr); }.party-layout { grid-template-columns:1fr; }.party-layout > aside { position:static; } }
@media (max-width:720px) {
  .parties-filter-row { flex-direction:column; align-items:stretch; }
  .parties-sort-field { justify-content:space-between; }
  .party-topbar { grid-template-columns:1fr 1fr; }
  .party-topbar span { display:none; }
  .party-hero { grid-template-columns:1fr; text-align:left; padding:22px; }
  .party-hero-body h1 { font-size:1.8rem; }
  .party-kpis { grid-template-columns:repeat(2,1fr); }
}
@media (prefers-color-scheme:dark) {
  .parties-search-field { background:rgba(255,255,255,.04); }
  .filter-chip { background:rgba(255,255,255,.04); }
}

.diplomacy-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:26px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#101b33,#223c78,#6353a6); box-shadow:var(--shadow); }.diplomacy-hero .eyebrow { color:rgba(255,255,255,.72); }.diplomacy-hero h1 { margin:4px 0 7px; font-size:30px; letter-spacing:-.04em; }.diplomacy-hero p { max-width:625px; margin:0; color:rgba(255,255,255,.84); font-size:13px; }.diplomacy-tension { display:grid; justify-items:end; gap:3px; min-width:145px; color:rgba(255,255,255,.72); font-size:11px; }.diplomacy-tension strong { color:#fff; font-size:27px; }.diplomacy-tension strong small { font-size:12px; }.diplomacy-tension > div { width:145px; height:7px; overflow:hidden; border-radius:99px; background:rgba(255,255,255,.22); }.diplomacy-tension i { display:block; height:100%; background:#ffbc42; }.diplomacy-command-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }.diplomacy-brief { min-height:116px; }.diplomacy-brief strong { display:block; margin:8px 0 5px; font-size:16px; }.diplomacy-brief p { margin:0; color:var(--muted); font-size:12px; line-height:1.4; }.diplomacy-crisis { border-top:4px solid var(--rouge); }.diplo-event-item .title { font-size:15px; }.diplo-choice-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px; }.diplo-choice-card { display:flex; flex-direction:column; gap:8px; padding:13px; border:1px solid var(--border); border-radius:12px; background:var(--surface); }.diplo-choice-card h4 { margin:0; font-size:13px; line-height:1.3; }.diplo-choice-card .effect-chips { margin-top:0; }.diplo-choice-card .btn { margin-top:auto; }.diplomacy-nations { display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:14px; }.diplomacy-nation-card { border-top:3px solid #536dfe; }.diplomacy-nation-card header { display:flex; justify-content:space-between; gap:12px; }.diplomacy-nation-card header > div { display:flex; gap:9px; align-items:center; }.diplomacy-flag { display:grid; place-items:center; width:37px; height:37px; border-radius:10px; background:rgba(83,109,254,.09); font-size:22px; }.diplomacy-nation-card h3 { margin:0; font-size:17px; }.diplomacy-nation-card header div div span { color:var(--muted); font-size:11px; text-transform:capitalize; }.diplomacy-relation-value { font-size:16px; white-space:nowrap; }.diplomacy-relation-bar { height:9px; overflow:hidden; margin-top:14px; border-radius:99px; background:var(--border); }.diplomacy-relation-bar span { display:block; height:100%; border-radius:inherit; transition:width .2s; }.diplomacy-relation-caption { display:flex; justify-content:space-between; gap:9px; margin-top:6px; color:var(--muted); font-size:11px; }.diplomacy-relation-caption span:first-child { font-weight:800; color:var(--text); }.diplomacy-treaties { display:flex; flex-direction:column; gap:5px; margin-top:10px; }.diplomacy-treaty { display:flex; flex-direction:column; gap:1px; padding:6px 9px; border-radius:8px; background:rgba(83,109,254,.07); font-size:11px; font-weight:700; }.diplomacy-treaty.at-risk { background:rgba(239,65,53,.08); }.diplomacy-treaty.at-risk span:first-child { color:var(--rouge); }.diplomacy-actions { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-top:13px; }.diplomacy-actions .btn { min-height:42px; text-align:left; font-size:11px; }.diplomacy-actions .btn small { display:block; margin-top:2px; color:inherit; opacity:.62; }.diplomacy-action-feedback { min-height:18px; margin:9px 0 0; color:var(--muted); font-size:11px; line-height:1.35; }.diplomacy-journal .event-item { border-left:3px solid #6353a6; }
.press-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:27px; border-radius:18px; color:#1f2937; background:linear-gradient(135deg,#f9e9c6,#fffdf6); border-top:7px solid #172033; box-shadow:var(--shadow); font-family:Georgia,serif; }.press-hero h1 { margin:3px 0; font-size:34px; }.press-hero p { margin:0; font-size:14px; }.press-date { display:grid; justify-items:end; gap:3px; font-family:inherit; font-size:11px; }.press-date strong { font-size:18px; }.press-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(290px,.75fr); gap:16px; }.press-frontpage { border-top:4px solid #172033; }.press-story { padding:14px 0; border-bottom:1px solid var(--border); }.press-story:last-child { border:0; }.press-story h2 { margin:4px 0 6px; font-family:Georgia,serif; font-size:20px; }.press-story.lead h2 { font-size:27px; }.press-story p { margin:0; line-height:1.45; }.press-media { border-top:4px solid var(--rouge); }.press-media h2 { margin:4px 0 7px; }.press-media-feed { display:grid; gap:8px; margin-top:15px; }.press-media-feed > div { display:grid; gap:4px; padding:8px; border-radius:7px; background:rgba(232,75,60,.06); }.press-media-feed strong { font-size:12px; }.press-media-feed small { color:var(--muted); font-size:10px; }.press-wire-item { display:grid; grid-template-columns:145px 1fr; gap:15px; padding:14px 0; border-bottom:1px solid var(--border); }.press-wire-item:last-child { border:0; }.press-wire-item h3 { margin:0 0 5px; font-size:16px; }.press-wire-item p { margin:0; font-size:13px; line-height:1.4; }.press-nav { display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:5px 0; }.press-nav a { padding:6px 12px; border-radius:7px; color:var(--muted); font-size:12px; font-weight:700; text-decoration:none; border:1px solid var(--border); background:var(--surface); transition:all .16s; }.press-nav a:hover,.press-nav a:focus { border-color:var(--bleu); color:var(--bleu); background:rgba(0,85,164,.06); }.press-nav a.press-nav-highlight { border-color:#c6a56a; color:#5e3d1a; background:linear-gradient(135deg,#fef7e6,#fff9f0); font-weight:800; animation:press-nav-glow 2.2s ease-in-out infinite; }@keyframes press-nav-glow { 50%{box-shadow:0 0 0 4px rgba(198,165,106,.25)} }.press-layout-new { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(290px,0.9fr); gap:16px; align-items:start; }.press-main { display:grid; gap:0; }.press-sidebar { display:grid; gap:0; }.press-partis-card { border-top:4px solid #c6a56a; background:linear-gradient(155deg,#fffdf7,#fff9f0 60%,#fff); }.press-partis-card h2 { margin:5px 0 4px; font-size:17px; }.press-partis-count { margin-left:4px; }.press-partis-feed { display:grid; gap:0; }.press-partis-item { display:grid; grid-template-columns:32px minmax(0,1fr); gap:11px; padding:12px 0; border-bottom:1px solid rgba(198,165,106,.18); }.press-partis-item:last-child { border:0; padding-bottom:0; }.press-partis-icon { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; background:rgba(198,165,106,.15); font-size:15px; }.press-partis-item .badge { margin-right:4px; }.press-partis-item strong { font-size:13px; }.press-partis-item p { margin:4px 0 0; color:var(--muted); font-size:12px; line-height:1.4; }.press-partis-item .meta { color:var(--muted); font-size:10px; margin-bottom:3px; }.press-wire-more { margin-top:6px; }.press-wire-more summary { padding:9px 11px; border-radius:8px; background:rgba(0,85,164,.04); color:var(--bleu); font-size:12px; font-weight:700; cursor:pointer; border:1px dashed var(--border); }.press-wire-more summary:hover { background:rgba(0,85,164,.09); }.press-wire-more[open] summary { border-radius:8px 8px 0 0; border-bottom:0; margin-bottom:0; }
.ranking-hero { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; overflow:hidden; padding:30px; border-radius:22px; color:#fff; background:radial-gradient(circle at 78% 15%,rgba(244,194,74,.27),transparent 20%),linear-gradient(125deg,#111f35,#3d326e 58%,#9a671e); box-shadow:0 18px 42px rgba(24,28,54,.22); }.ranking-hero .eyebrow { color:#d8ccef; }.ranking-hero h1 { max-width:760px; margin:5px 0 8px; font-size:32px; letter-spacing:-.04em; }.ranking-hero p { max-width:720px; margin:0; color:rgba(255,255,255,.8); font-size:13px; line-height:1.5; }.ranking-period { display:flex; gap:5px; width:max-content; margin-top:18px; padding:4px; border:1px solid rgba(255,255,255,.18); border-radius:11px; background:rgba(4,12,28,.22); }.ranking-period button { border:0; padding:7px 12px; border-radius:8px; color:#dce5ef; background:transparent; cursor:pointer; font:inherit; font-size:11px; font-weight:800; }.ranking-period button.active { color:#21243d; background:#fff; }.ranking-me { display:grid; min-width:170px; justify-items:end; gap:3px; padding:16px; border:1px solid rgba(255,255,255,.17); border-radius:15px; color:rgba(255,255,255,.72); background:rgba(3,12,27,.2); font-size:11px; }.ranking-me strong { color:#fff; font-size:38px; line-height:1; }.ranking-me small { color:#f1e5bf; }
.ranking-podium { display:grid; grid-template-columns:repeat(3,1fr); gap:15px; align-items:end; }.ranking-podium-card { position:relative; display:grid; justify-items:center; gap:5px; overflow:hidden; min-height:230px; border:1px solid var(--border); border-radius:18px; background:var(--surface); box-shadow:0 10px 30px rgba(15,23,42,.07); text-align:center; }.ranking-podium-cover { display:flex; align-items:flex-start; justify-content:space-between; width:100%; height:70px; box-sizing:border-box; padding:12px 14px; color:#fff; background:linear-gradient(125deg,#253852,#6b4c91); font-weight:900; }.ranking-podium-cover small { color:rgba(255,255,255,.78); }.profile-theme-hemicycle .ranking-podium-cover { background:linear-gradient(125deg,#4c1627,#b98a36); }.profile-theme-minuit .ranking-podium-cover { background:linear-gradient(125deg,#061426,#193b75); }.profile-theme-salon .ranking-podium-cover { background:linear-gradient(125deg,#103c31,#cfb868); }.profile-theme-manifeste .ranking-podium-cover { background:linear-gradient(125deg,#79684d,#bb3944); }.ranking-avatar { display:grid; place-items:center; width:67px; height:67px; margin-top:-40px; border:4px solid var(--surface); border-radius:50%; color:#fff; box-shadow:0 7px 18px rgba(15,23,42,.2); font-size:22px; font-weight:900; }.ranking-podium-card h2 { display:flex; align-items:center; gap:5px; margin:4px 0 0; font-size:17px; }.ranking-podium-card p { min-height:25px; margin:0; }.ranking-cosmetic-title { color:#67469e; font-size:11px; font-weight:800; }.ranking-podium-card > strong { color:#4d347c; font-size:28px; }.ranking-podium-card > small { margin-bottom:15px; color:var(--muted); }.ranking-podium-card.place-1 { min-height:250px; border-color:#d5a329; }.ranking-podium-card.place-2 { border-color:#a7afb9; }.ranking-podium-card.place-3 { border-color:#b87333; }
.ranking-highlights { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }.ranking-highlights article { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:12px; padding:16px; border:1px solid var(--border); border-radius:15px; background:var(--surface); box-shadow:0 6px 18px rgba(15,23,42,.045); }.ranking-highlight-icon { display:grid; place-items:center; width:39px; height:39px; border-radius:12px; background:rgba(91,57,137,.09); font-size:18px; }.ranking-highlights strong { display:block; margin:3px 0; color:var(--text); font-size:15px; }.ranking-highlights small { color:var(--muted); font-size:10px; line-height:1.35; }
.ranking-table-card { overflow:hidden; border:1px solid var(--border); border-top:4px solid #5b3989; border-radius:16px; background:var(--surface); box-shadow:var(--shadow); }.ranking-table-card > .section-heading { padding:19px 21px; }.ranking-table-card table { margin:0; }.ranking-table-card th { background:var(--tint); }.ranking-person { display:flex; align-items:center; gap:9px; min-width:190px; }.ranking-person .ranking-avatar.small { flex:0 0 auto; width:35px; height:35px; margin:0; border-width:2px; font-size:13px; }.ranking-person > span { display:grid; gap:2px; }.ranking-person > span > strong { display:flex; align-items:center; gap:4px; }.ranking-person small { color:var(--muted); font-size:9px; }.ranking-person em { padding:3px 5px; border-radius:5px; color:var(--bleu); background:rgba(0,85,164,.08); font-size:9px; font-style:normal; font-weight:800; }.ranking-functions { display:flex; flex-wrap:wrap; gap:3px; margin-top:5px; }.ranking-functions span,.ranking-contributions span { padding:3px 5px; border-radius:5px; color:#5b3989; background:rgba(91,57,137,.08); font-size:9px; font-weight:750; }.ranking-contributions { display:flex; flex-wrap:wrap; gap:5px; }.ranking-contributions span[data-tooltip] { display:inline-flex; align-items:center; gap:4px; padding:5px 7px; cursor:help; font-size:11px; }.ranking-contributions span[data-tooltip] i { font-style:normal; font-size:12px; }.ranking-contributions span[data-tooltip] b { font-size:12px; }.ranking-contributions span[data-tooltip]:focus-visible { outline:2px solid #7859af; outline-offset:2px; }.ranking-impact { color:#533580; font-size:16px; }.ranking-method { margin:0 20px 20px; padding:12px 14px; border:1px solid var(--border); border-radius:11px; background:var(--tint); }.ranking-method summary { color:var(--text); cursor:pointer; font-size:12px; font-weight:800; }.ranking-method p { color:var(--muted); font-size:11px; line-height:1.55; }
@media (max-width:1050px) { .ranking-highlights { grid-template-columns:repeat(2,1fr); } }
@media (max-width:720px) { .ranking-hero { display:grid; padding:21px; }.ranking-hero h1 { font-size:26px; }.ranking-me { min-width:0; justify-items:start; }.ranking-podium { grid-template-columns:1fr; }.ranking-podium-card,.ranking-podium-card.place-1 { min-height:220px; }.ranking-highlights { grid-template-columns:1fr; } }
.dashboard-hero { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:28px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#062c4e,#0055a4,#118b9d); box-shadow:var(--shadow); }.dashboard-hero .eyebrow { color:rgba(255,255,255,.74); }.dashboard-hero h1 { margin:4px 0 7px; font-size:31px; letter-spacing:-.04em; }.dashboard-hero p { max-width:620px; margin:0; color:rgba(255,255,255,.85); font-size:13px; }.dashboard-hero-state { display:flex; gap:13px; }.dashboard-hero-state > div { display:grid; gap:3px; min-width:84px; padding:10px; border:1px solid rgba(255,255,255,.18); border-radius:10px; background:rgba(255,255,255,.1); }.dashboard-hero-state span { color:rgba(255,255,255,.72); font-size:10px; text-transform:uppercase; font-weight:700; }.dashboard-hero-state strong { color:#fff; font-size:18px; }.dashboard-context { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--muted); font-size:12px; }.dashboard-stat-section { padding:3px 0; }
.dashboard-spotlight .section-heading .eyebrow { color:var(--bleu); }.spotlight-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; align-items:start; }.spotlight-card { padding:16px 18px; border:1px solid var(--border); border-top:4px solid var(--muted); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.spotlight-card h3 { margin:5px 0 8px; font-size:16px; }.spotlight-card p { margin:0; color:var(--muted); font-size:12.5px; line-height:1.45; }.spotlight-card.lead { border-top-color:var(--bleu); background:linear-gradient(155deg,var(--surface),rgba(0,85,164,.045)); }.spotlight-news-list { display:grid; gap:6px; margin:10px 0 0; padding:0; list-style:none; }.spotlight-news-list li { padding-top:8px; border-top:1px solid var(--border); font-size:12.5px; line-height:1.4; }.spotlight-news-list .meta { display:block; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.05em; margin-bottom:2px; }.spotlight-card .actions { margin-top:12px; }
.national-crisis-card { border-top:4px solid var(--rouge); background:linear-gradient(155deg,var(--surface),rgba(232,75,60,.045)); }.crisis-timeline { display:grid; gap:0; }.crisis-timeline-step { display:grid; grid-template-columns:26px minmax(0,1fr); gap:11px; padding:12px 0; border-bottom:1px solid var(--border); }.crisis-timeline-step:last-child { border:0; padding-bottom:0; }.crisis-timeline-marker { display:grid; place-items:center; width:26px; height:26px; border-radius:50%; background:rgba(100,116,139,.14); color:var(--muted); font-size:12px; font-weight:800; }.crisis-timeline-step.done .crisis-timeline-marker { background:var(--pos); color:#fff; }.crisis-timeline-step.open .crisis-timeline-marker { background:var(--rouge); color:#fff; }.crisis-timeline-step .meta { color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.05em; }.crisis-timeline-step strong { display:block; margin:2px 0 3px; font-size:13px; }.crisis-timeline-step p { margin:0; color:var(--muted); font-size:12px; line-height:1.4; }
.starting-guide { overflow:hidden; border:1px solid #b9d9d7; border-radius:18px; background:linear-gradient(145deg,#f5fcfb,#fff 54%); box-shadow:0 8px 26px rgba(13,102,111,.1); }.starting-guide-hero { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:22px 24px; color:#fff; background:linear-gradient(125deg,#12394b,#087878,#159b87); }.starting-guide-title { display:flex; align-items:flex-start; gap:13px; }.starting-guide-icon { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; border:1px solid rgba(255,255,255,.35); border-radius:13px; background:rgba(255,255,255,.12); font-size:22px; }.starting-guide .eyebrow { color:rgba(255,255,255,.7); }.starting-guide h2 { margin:3px 0 5px; font-size:23px; }.starting-guide-title p { max-width:610px; margin:0; color:rgba(255,255,255,.86); font-size:12px; line-height:1.4; }.starting-guide-progress { display:grid; justify-items:end; min-width:120px; gap:2px; font-size:10px; color:rgba(255,255,255,.74); }.starting-guide-progress strong { color:#fff; font-size:24px; }.starting-guide-progress > div { width:120px; height:6px; overflow:hidden; border-radius:99px; background:rgba(255,255,255,.24); }.starting-guide-progress i { display:block; height:100%; border-radius:inherit; background:#f5d36a; }.starting-guide-body { padding:18px 22px 14px; }.starting-guide-mission { display:flex; align-items:baseline; flex-wrap:wrap; gap:7px 10px; padding:10px 12px; border-radius:10px; background:rgba(21,155,135,.08); color:#295461; }.starting-guide-mission span { font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:#087878; }.starting-guide-mission strong { color:#12394b; font-size:14px; }.starting-guide-mission p { margin:0 0 0 auto; font-size:11px; }.starting-guide-steps { display:grid; gap:0; margin:13px 0 0; padding:0; list-style:none; }.starting-guide-steps li { display:grid; grid-template-columns:31px minmax(0,1fr) auto; align-items:center; gap:10px; padding:11px 0; border-top:1px solid rgba(13,102,111,.13); }.starting-guide-check { display:grid; place-items:center; width:26px; height:26px; padding:0; border:1px solid #72b6af; border-radius:50%; background:#fff; color:#087878; font-size:11px; font-weight:800; cursor:pointer; }.starting-guide-steps li.is-done .starting-guide-check { border-color:#159b87; background:#159b87; color:#fff; }.starting-guide-steps li.is-done strong,.starting-guide-steps li.is-done p { opacity:.58; }.starting-guide-steps strong { display:block; font-size:13px; }.starting-guide-steps p { margin:3px 0 0; color:var(--muted); font-size:11px; line-height:1.35; }.starting-guide-steps .btn span { margin-left:3px; }.starting-guide-footer { display:flex; align-items:center; flex-wrap:wrap; gap:8px 14px; margin-top:10px; color:var(--muted); font-size:11px; }.starting-guide-footer .link-btn { font-size:11px; }.starting-guide-role-picker { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-top:14px; padding-top:14px; border-top:1px solid rgba(13,102,111,.13); }.starting-guide-role-picker button { display:flex; align-items:center; gap:7px; padding:8px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--text); font-size:11px; font-weight:700; cursor:pointer; text-align:left; }.starting-guide-role-picker button:hover,.starting-guide-role-picker button.active { border-color:#159b87; color:#087878; background:rgba(21,155,135,.06); }.starting-guide-role-picker span { font-size:16px; }
.starting-guide-focus { display:grid; grid-template-columns:68px minmax(0,1fr); gap:18px; align-items:start; margin-top:14px; padding:18px; border:1px solid rgba(21,155,135,.22); border-radius:14px; background:#fff; box-shadow:0 5px 17px rgba(13,102,111,.07); }.starting-guide-focus.is-complete { border-color:#8bcab4; background:linear-gradient(135deg,#f1fbf5,#fff); }.starting-guide-step-number { display:grid; place-items:center; width:62px; height:62px; border-radius:18px; background:linear-gradient(135deg,#159b87,#087878); color:#fff; font-size:28px; font-weight:900; box-shadow:0 6px 13px rgba(8,120,120,.25); }.starting-guide-focus h3 { margin:3px 0 7px; color:#12394b; font-size:20px; letter-spacing:-.025em; }.starting-guide-focus p { max-width:620px; margin:0 0 13px; color:var(--muted); font-size:13px; line-height:1.5; }.starting-guide-focus .eyebrow { color:#087878; }.starting-guide-dots { display:flex; align-items:center; gap:5px; }.starting-guide-dots i { display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:#e0eeee; color:#638084; font-size:9px; font-style:normal; font-weight:800; }.starting-guide-dots i.active { outline:3px solid rgba(21,155,135,.17); background:#159b87; color:#fff; }.starting-guide-dots i.done { background:#087878; color:#fff; }.starting-guide-discovery { margin-top:13px; padding-top:10px; border-top:1px solid rgba(13,102,111,.12); }
.starting-guide-compact { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; align-items:center; gap:13px; padding:11px 14px; }.starting-guide-compact-symbol { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:#fff; background:linear-gradient(135deg,#159b87,#087878); font-size:19px; }.starting-guide-compact-copy { display:grid; gap:2px; min-width:0; }.starting-guide-compact-copy .eyebrow { color:#087878; }.starting-guide-compact-copy strong { color:#12394b; font-size:14px; }.starting-guide-compact-copy span { overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }.starting-guide-compact-progress { display:grid; justify-items:end; color:var(--muted); font-size:9px; text-transform:uppercase; }.starting-guide-compact-progress strong { color:#087878; font-size:16px; }.starting-guide-compact .btn { padding:7px 11px; font-size:11px; }.starting-guide-availability { display:inline-flex; padding:8px 10px; border-radius:8px; color:#087878; background:rgba(21,155,135,.1); font-size:11px; font-weight:700; }.starting-guide-collapse { margin-left:auto; }
.guide-tour { position:fixed; inset:0; z-index:500; pointer-events:none; }.guide-tour > i { position:fixed; display:block; background:rgba(5,20,35,.67); }.guide-tour-target { position:relative !important; z-index:501 !important; outline:3px solid #f7cf55 !important; outline-offset:4px; border-radius:8px; animation:guide-target-pulse 1.25s ease-in-out infinite; }.guide-tour-marker { position:fixed; z-index:503; display:block; border:4px solid #f7cf55; border-radius:10px; box-shadow:0 0 0 6px rgba(247,207,85,.22),0 0 22px rgba(247,207,85,.9); animation:guide-marker-pulse 1.15s ease-in-out infinite; }.guide-tour-marker::after { content:'CLIQUEZ ICI'; position:absolute; right:-4px; top:-28px; padding:4px 7px; border-radius:5px; background:#f7cf55; color:#1c2530; font-size:10px; font-style:normal; font-weight:900; white-space:nowrap; }.guide-tour-tip { position:fixed; z-index:502; width:268px; padding:15px; border:1px solid rgba(255,255,255,.35); border-radius:13px; background:#102f44; color:#fff; box-shadow:0 14px 32px rgba(0,0,0,.3); pointer-events:auto; }.guide-tour-tip span { display:block; margin-bottom:5px; color:#8de1d5; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }.guide-tour-tip strong { display:block; font-size:16px; }.guide-tour-tip p { margin:7px 0; color:#deeff2; font-size:12px; line-height:1.4; }.guide-tour-tip b { display:block; color:#f7dc83; font-size:11px; }.guide-tour-tip button { margin-top:10px; padding:0; border:0; background:none; color:#b9d9dd; font-size:11px; text-decoration:underline; cursor:pointer; } @keyframes guide-target-pulse { 50% { outline-color:#fff; box-shadow:0 0 0 7px rgba(247,207,85,.25); } } @keyframes guide-marker-pulse { 50% { transform:scale(1.025); filter:brightness(1.2); } }
.guide-intro { position:fixed; inset:0; z-index:550; display:grid; place-items:center; padding:20px; background:rgba(5,20,35,.68); backdrop-filter:blur(4px); }.guide-intro section { width:min(100%,520px); padding:25px; border:1px solid rgba(255,255,255,.22); border-radius:20px; color:#fff; background:linear-gradient(135deg,#0e3048,#087878); box-shadow:0 24px 70px rgba(0,0,0,.38); }.guide-intro-symbol { display:grid; place-items:center; width:54px; height:54px; margin-bottom:15px; border:1px solid rgba(255,255,255,.35); border-radius:17px; background:rgba(255,255,255,.12); font-size:27px; }.guide-intro span,.guide-intro-next small { color:#a9e6dc; font-size:10px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }.guide-intro h2 { margin:4px 0 8px; font-size:27px; }.guide-intro > section > div > p { margin:0; color:rgba(255,255,255,.8); line-height:1.45; }.guide-intro-next { margin-top:20px; padding:14px; border-radius:12px; background:rgba(255,255,255,.1); }.guide-intro-next strong { display:block; margin-top:3px; font-size:16px; }.guide-intro-next p { margin:5px 0 0; color:rgba(255,255,255,.78); font-size:12px; line-height:1.4; }.guide-intro-actions { display:flex; align-items:center; gap:15px; margin-top:20px; }.guide-intro-actions .link-btn { color:#d6f4ef; }
.guide-hero { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:27px; border-radius:18px; color:#fff; background:linear-gradient(125deg,#17364d,#0b6b79,#159b87); box-shadow:var(--shadow); }.guide-hero .eyebrow { color:rgba(255,255,255,.72); }.guide-hero h1 { margin:4px 0 7px; font-size:31px; }.guide-hero p { max-width:620px; margin:0; color:rgba(255,255,255,.85); font-size:13px; }.guide-hero-turn { display:grid; justify-items:end; gap:3px; color:rgba(255,255,255,.75); font-size:11px; }.guide-hero-turn strong { color:#fff; font-size:28px; }.guide-shortcuts { display:grid; grid-template-columns:repeat(4,1fr); gap:11px; }.guide-shortcuts button { display:grid; grid-template-columns:auto 1fr; column-gap:8px; align-items:center; border:1px solid var(--border); border-radius:11px; padding:11px; background:var(--surface); color:var(--text); text-align:left; cursor:pointer; }.guide-shortcuts button:hover { border-color:var(--bleu); background:rgba(0,85,164,.04); }.guide-shortcuts span { grid-row:span 2; font-size:21px; }.guide-shortcuts strong { font-size:13px; }.guide-shortcuts small { color:var(--muted); font-size:10px; }.guide-route { border-top:4px solid #159b87; }.guide-steps { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; padding:0; list-style:none; }.guide-steps li { display:flex; gap:9px; padding:10px; border-radius:9px; background:rgba(21,155,135,.06); }.guide-steps b { display:grid; flex:0 0 24px; place-items:center; width:24px; height:24px; border-radius:50%; color:#fff; background:#159b87; font-size:11px; }.guide-steps div { display:grid; gap:3px; }.guide-steps strong { font-size:12px; }.guide-steps span { color:var(--muted); font-size:11px; line-height:1.3; }.guide-role-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }.guide-role-grid article > span { font-size:23px; }.guide-role-grid h3 { margin:6px 0; }.guide-role-grid p { min-height:34px; color:var(--muted); font-size:12px; }
.npc-matignon { border-left:4px solid #5b3989; }.npc-matignon h3 { margin:5px 0; }.npc-matignon p { margin:0 0 7px; font-size:13px; }
.role-mission-head { display:flex; align-items:start; justify-content:space-between; gap:12px; }
.role-mission h2 { margin:3px 0 0; font-size:20px; letter-spacing:-.025em; }
.role-mission > p { color:var(--muted); margin:10px 0 12px; line-height:1.45; }
.role-actions { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
.role-action-card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:14px; display:flex; flex-direction:column; align-items:flex-start; }
.role-action-card h3 { margin:0 0 6px; color:var(--text); text-transform:none; letter-spacing:0; font-size:15px; }
.role-action-card p { font-size:12px; color:var(--muted); line-height:1.42; margin:0 0 12px; flex:1; }
.npc-role-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px; }
.npc-role-card { background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:14px; display:flex; flex-direction:column; align-items:stretch; }
.npc-role-card .flex.between { gap:8px; }
.npc-role-holder { padding:9px 10px; border-left:3px solid var(--bleu); border-radius:8px; background:rgba(0,85,164,.06); }
.npc-role-holder .badge { margin-right:6px; }
.npc-role-vacant { padding:4px 0; }
.npc-role-admin { border-top:1px dashed var(--border); padding-top:10px; }
.npc-role-admin .inline-form-row select { flex:1; min-width:160px; max-width:240px; }
.npc-role-directive { border-top:1px dashed var(--border); padding-top:8px; }
.campaign-pool { padding:8px 10px; border-left:3px solid var(--bleu); border-radius:8px; background:rgba(0,85,164,.06); font-size:12px; }
.role-effects { font-weight:700; color:var(--bleu); margin-bottom:12px; }
input, select, textarea { transition:border-color .15s, box-shadow .15s, background .15s; }
input:hover, select:hover, textarea:hover { border-color:rgba(0,85,164,.45); }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--bleu); box-shadow:0 0 0 3px rgba(0,85,164,.13); }
select { min-height:38px; }
.hemicycle { display: flex; flex-wrap: wrap; gap: 3px; }
.hemicycle .seat { width: 10px; height: 10px; border-radius: 2px; }
.assembly-hero { display:flex; justify-content:space-between; align-items:end; gap:22px; padding:24px; border-radius:18px 18px 10px 10px; color:#fff; background:linear-gradient(125deg,#102a43,#0055a4 56%,#063b72); box-shadow:var(--shadow); }
.assembly-hero h1 { margin:3px 0 8px; font-size:30px; letter-spacing:-.04em; }.assembly-hero p { margin:0; color:rgba(255,255,255,.78); max-width:620px; }.assembly-hero .eyebrow { color:#b9d7f7; }
.assembly-live-status { min-width:210px; display:grid; gap:5px; padding:12px 14px; border:1px solid rgba(255,255,255,.2); border-radius:12px; background:rgba(0,0,0,.14); font-size:12px; }.assembly-live-status strong { font-size:13px; }
.assembly-intention { flex-basis:100%; display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:3px; padding:10px 12px; border-radius:10px; background:rgba(255,255,255,.12); font-size:12px; font-weight:700; }.assembly-intention .btn.pos { outline:2px solid #fff; outline-offset:1px; }
.my-intention-state { color:#fff; font-size:12px; }
.chamber-pulse { color:#ffcbc6; font-weight:800; letter-spacing:.08em; font-size:11px; }.chamber-pulse::first-letter { color:#ff5d51; animation:chamber-blink 1.1s infinite; } @keyframes chamber-blink { 50% { opacity:.25; } }
.assembly-layout { display:grid; grid-template-columns:minmax(0,1fr) 270px; gap:14px; margin-top:14px; }.assembly-chamber-panel { border:1px solid #c6a56a; border-radius:12px; overflow:hidden; background:linear-gradient(155deg,#f8f1df,#ead8b1); box-shadow:0 12px 28px rgba(45,34,14,.13); }.assembly-agenda { padding:18px; border-radius:12px; background:#152b40; color:#fff; box-shadow:var(--shadow); }.assembly-agenda .eyebrow { color:#b9d7f7; }.assembly-agenda h2 { margin:4px 0 12px; font-size:19px; }.agenda-item { display:grid; gap:4px; width:100%; padding:10px 0; border:0; border-top:1px solid rgba(255,255,255,.15); background:none; color:inherit; font:inherit; text-align:left; cursor:pointer; }.agenda-item:hover strong { text-decoration:underline; }.agenda-item span { color:#cbd8e5; }.agenda-next-turn { margin-top:13px; padding:10px; border-radius:8px; color:#d9e9f7; background:rgba(255,255,255,.08); font-size:12px; line-height:1.4; }
.chamber-live { padding:14px 16px 10px; }.chamber-rostrum { width:56%; min-width:240px; margin:0 auto 13px; padding:9px 14px; border-radius:8px 8px 3px 3px; background:linear-gradient(180deg,#6b4d2b,#3e2a15); color:#f9eed8; text-align:center; box-shadow:0 4px 0 #27190d; display:grid; gap:2px; font-size:11px; }.chamber-rostrum strong { font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.chamber-rostrum .chamber-pulse { justify-self:center; color:#ffdad5; }
.chamber-hall { padding:14px 10px 8px; border:7px solid #b78950; border-bottom:0; border-radius:58% 58% 0 0 / 34% 34% 0 0; background:radial-gradient(ellipse at 50% 100%,#d9c18d 0,#ebdcc0 54%,#f5e9d2 100%); overflow:hidden; }.chamber-row { display:flex; justify-content:center; align-items:center; gap:3px; margin:3px auto; }.chamber-row:nth-child(1) { width:39%; }.chamber-row:nth-child(2) { width:50%; }.chamber-row:nth-child(3) { width:61%; }.chamber-row:nth-child(4) { width:72%; }.chamber-row:nth-child(5) { width:83%; }.chamber-row:nth-child(6) { width:94%; }.chamber-row:nth-child(7) { width:100%; }
.chamber-seat { position:relative; width:12px; height:12px; padding:0; border:0; border-radius:50% 50% 3px 3px; background:var(--party); cursor:pointer; box-shadow:0 1px 0 rgba(0,0,0,.22); transition:transform .18s, box-shadow .18s, filter .18s; }.chamber-seat:hover { transform:translateY(-3px) scale(1.32); z-index:2; box-shadow:0 4px 8px rgba(0,0,0,.3); }.chamber-seat span { position:absolute; width:5px; height:5px; left:3.5px; top:-5px; border-radius:50%; background:#24303a; opacity:.8; }.chamber-seat.vote-pour { box-shadow:0 0 0 2px #fff,0 0 0 4px #16a34a,0 2px 5px rgba(22,163,74,.65); animation:hand-raised .75s ease-out; }.chamber-seat.vote-contre { box-shadow:0 0 0 2px #fff,0 0 0 4px #dc2626,0 2px 5px rgba(220,38,38,.55); animation:hand-raised .75s ease-out; }.chamber-seat.vote-abstention { box-shadow:0 0 0 2px #fff,0 0 0 4px #d28b12; }.chamber-seat.vote-pending { filter:saturate(.35) opacity(.48); }.chamber-seat.vote-pour span,.chamber-seat.vote-contre span { transform:translateY(-4px); box-shadow:0 -5px 0 -1px currentColor; color:inherit; } @keyframes hand-raised { 0%{transform:translateY(6px)} 55%{transform:translateY(-5px) scale(1.15)} 100%{transform:none} }
.chamber-seat.my-seat { z-index:3; outline:3px solid #fff; outline-offset:2px; box-shadow:0 0 0 5px #111827,0 0 0 7px #f3c64e; transform:scale(1.35); }.chamber-seat.my-seat i { position:absolute; left:50%; bottom:-19px; transform:translateX(-50%); padding:1px 4px; border-radius:3px; background:#111827; color:#fff; font-size:8px; font-style:normal; font-weight:800; white-space:nowrap; }
.chamber-tally { display:flex; justify-content:center; flex-wrap:wrap; gap:12px; padding:13px 4px 3px; font-weight:800; font-size:13px; }.tally-pour { color:#118344; }.tally-contre { color:#c12f29; }.tally-abst { color:#a06408; }.chamber-groups { padding:0 16px 14px; }.has-new-votes { animation:chamber-update 1.1s ease; } @keyframes chamber-update { 35% { filter:brightness(1.08); } }
.assembly-docket { border-top:4px solid #b78950; }.assembly-law-list { display:grid; gap:10px; }.assembly-law-card { display:grid; grid-template-columns:minmax(0,1fr) 130px 240px; gap:14px; padding:15px; border:1px solid var(--border); border-radius:12px; background:linear-gradient(100deg,#fff,#fafcff); }.assembly-law-card.selected { border-color:#b78950; box-shadow:0 4px 16px rgba(183,137,80,.16); }.assembly-law-card h3 { margin:3px 0 6px; font-size:16px; }.assembly-law-card p { margin:0; color:var(--muted); font-size:12px; line-height:1.4; }.assembly-law-votes { display:grid; align-content:center; gap:3px; font-size:12px; }.assembly-law-actions { display:flex; align-content:center; justify-content:center; flex-wrap:wrap; gap:7px; }.assembly-law-actions .link-btn { width:100%; }
.my-vote-badge { display:inline-block; width:max-content; margin-top:4px; padding:4px 6px; border-radius:5px; background:#102a43; color:#fff; font-weight:800; }
.chamber-stats-card,.assembly-discussion-card { min-height:270px; }.chamber-stats-table td,.chamber-stats-table th { white-space:nowrap; }.seat-mini-bar { height:5px; width:72px; margin-top:4px; border-radius:4px; overflow:hidden; background:rgba(0,85,164,.12); }.seat-mini-bar span { display:block; height:100%; border-radius:4px; background:var(--bleu); }.group-recommendations { margin:0 0 13px; padding:10px; border-radius:9px; background:rgba(183,137,80,.1); font-size:12px; }.group-recommendations > div { display:flex; flex-wrap:wrap; gap:6px; margin-top:7px; }.group-recommendations.empty { color:var(--muted); }.group-recommendation { border-left:4px solid var(--group); padding:5px 7px; border-radius:4px; background:#fff; }.recommend-pour { color:#087538; }.recommend-contre { color:#b52c26; }.assembly-discussion-head { display:flex; justify-content:space-between; gap:12px; align-items:start; padding-bottom:12px; border-bottom:1px solid var(--border); }.assembly-discussion-head h2 { margin:3px 0 5px; font-size:18px; }.assembly-discussion-head p { margin:0; font-size:12px; line-height:1.4; color:var(--muted); }.assembly-discussion-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:13px; }.assembly-discussion-grid h3 { margin:0 0 8px; font-size:14px; }.debate-line,.amendment-line { display:grid; gap:3px; padding:8px 0; border-top:1px solid var(--border); font-size:12px; }.debate-line span,.amendment-line span { color:var(--muted); line-height:1.4; }
.assembly-impact { display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; margin-top:13px; padding:12px 14px; border-radius:10px; background:rgba(0,85,164,.05); }.assembly-impact .eyebrow { margin-bottom:5px; }
.agora-pulse { display:grid; gap:4px; padding:9px 11px; border-radius:8px; background:rgba(100,116,139,.08); font-size:12px; }.agora-pulse span:first-child { font-weight:700; }.agora-pulse span:last-child { color:var(--muted); }.agora-pulse.pos { background:rgba(46,204,113,.09); }.agora-pulse.pos span:last-child b { color:var(--pos); }.agora-pulse.neg { background:rgba(239,65,53,.08); }.agora-pulse.neg span:last-child b { color:var(--rouge); }
.reform-tabs { display:flex; flex-wrap:wrap; gap:6px; padding:6px; border:1px solid var(--border); border-radius:13px; background:var(--surface); }
.cadre-constitutionnel { border-left:3px solid var(--gold, #d4a017); }
.cadre-constitutionnel-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; margin-top:12px; }
.cadre-constitutionnel-card { display:flex; align-items:flex-start; gap:10px; padding:12px; border:1px solid var(--border); border-radius:11px; background:var(--surface); }
.cadre-constitutionnel-card > div:nth-child(2) { display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
.cadre-constitutionnel-card strong { font-size:13px; line-height:1.35; }
.cadre-constitutionnel-card small { line-height:1.3; }
.cadre-constitutionnel-card .btn { margin-left:auto; align-self:center; }
.cadre-constitutionnel-icon { font-size:20px; line-height:1; margin-top:2px; }
.reform-tabs button { display:flex; align-items:center; gap:6px; padding:9px 13px; border:1px solid transparent; border-radius:9px; background:transparent; color:var(--muted); font-size:12px; font-weight:750; cursor:pointer; white-space:nowrap; transition:all .15s; }
.reform-tabs button:hover { color:var(--bleu); background:rgba(0,85,164,.06); }
.reform-tabs button.active { color:#fff; background:var(--bleu); box-shadow:0 4px 12px rgba(0,85,164,.22); }
.reform-tabs button b { display:grid; place-items:center; min-width:18px; height:18px; padding:0 4px; border-radius:999px; background:rgba(100,116,139,.16); color:var(--muted); font-size:10px; font-weight:800; }
.reform-tabs button.active b { background:rgba(255,255,255,.24); color:#fff; }
.reform-toolbar { display:flex; justify-content:flex-end; padding:12px 16px; }
.reform-card { border-top:4px solid var(--border); }
.reform-metrics { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
.reform-cost { font-size:20px; font-weight:800; }
@media (max-width: 720px) {
  .reform-tabs { flex-wrap:nowrap; overflow-x:auto; scrollbar-width:thin; }
  .reform-metrics { grid-template-columns:1fr; gap:10px; }
}
.debate-modal { position:relative; padding:0 !important; overflow-x:hidden; overflow-y:auto; background:var(--surface); }.debate-modal > .modal-close { position:absolute; top:15px; right:15px; z-index:2; display:grid; place-items:center; width:32px; height:32px; border-radius:9px; background:rgba(255,255,255,.18); color:#fff; }.debate-modal-hero { display:flex; justify-content:space-between; gap:20px; padding:28px 58px 25px 28px; color:#fff; background:linear-gradient(125deg,#112f4b,#0055a4); }.debate-modal-hero .eyebrow { color:#b9d7f7; }.debate-modal-hero h2 { margin:4px 0 7px; font-size:24px; }.debate-modal-hero p { margin:0; color:rgba(255,255,255,.78); line-height:1.45; }.debate-modal-flow { padding:13px 24px; background:#e7eef7; }.debate-modal-positions { display:flex; flex-wrap:wrap; align-items:center; gap:7px; padding:13px 24px; background:#fff8e9; font-size:12px; }.debate-modal-section { padding:18px 22px; background:#fff; border:1px solid var(--border); border-radius:11px; }.debate-modal-section .section-heading h3 { margin:3px 0 0; }.debate-modal > .debate-modal-section { margin:18px 22px 0; }.debate-modal-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:18px 22px 22px; }.debate-compose textarea { background:#f8fbff; }

@media (max-width: 720px) {
  /* Coquille app mobile : sidebar desktop devient le menu plein écran (bouton
     Menu de la barre du bas), remplacée en usage courant par la mobile-tabbar. */
  #app { display:flex; flex-direction:column; }.app-main { display:contents; }
  .sidebar { display:none; }
  /* inset:0 sur un élément position:fixed suffit déjà à occuper tout le viewport visible ;
     un width:100vw/height:100vh explicite en plus est redondant et, sur les viewports très
     courts (ex. Pixel Fold déplié, ~512px de haut), peut légèrement désynchroniser la taille
     du panneau de la zone réellement visible pendant l'animation d'ouverture. */
  body.mobile-menu-open .sidebar { display:flex; position:fixed; inset:0; z-index:150; padding:calc(16px + env(safe-area-inset-top)) 14px calc(16px + env(safe-area-inset-bottom)); overflow-y:auto; }
  body.mobile-menu-open .sidebar .brand,body.mobile-menu-open .sidebar .sidebar-note { display:flex; }
  .sidebar .brand,.sidebar .sidebar-note { display:none; }
  body.mobile-menu-open .mobile-menu-close { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; margin-top:4px; border:1px solid rgba(255,255,255,.28); border-radius:9px; color:#fff; background:rgba(255,255,255,.1); cursor:pointer; font-size:16px; }
  body.mobile-menu-open #mobile-menu-backdrop { display:block; position:fixed; inset:0; z-index:149; background:rgba(4,15,30,.55); }
  .tabs button { padding:13px 12px; font-size:14px; }
  .mobile-tabbar { display:flex; position:fixed; left:0; right:0; bottom:0; z-index:120; align-items:stretch; justify-content:space-around; background:rgba(255,255,255,.97); backdrop-filter:blur(14px); border-top:1px solid var(--border); padding:5px 2px calc(5px + env(safe-area-inset-bottom)); box-shadow:0 -6px 20px rgba(15,23,42,.09); }
  .mobile-tabbar button { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; position:relative; min-width:0; border:0; background:transparent; color:var(--muted); padding:6px 2px; border-radius:12px; cursor:pointer; font:inherit; transition:color .15s,transform .12s; }
  .mobile-tabbar button:active { transform:scale(.9); }
  .mobile-tabbar button.active { color:var(--bleu); }
  .mobile-tabbar .mtab-icon { display:flex; }
  .mobile-tabbar .mtab-icon .tab-icon-svg { width:22px; height:22px; }
  .mobile-tabbar .mtab-label { font-size:9.5px; font-weight:700; letter-spacing:.01em; overflow:hidden; max-width:100%; text-overflow:ellipsis; white-space:nowrap; }
  .mobile-tabbar button .tab-count { position:absolute; top:0; right:calc(50% - 22px); min-width:15px; height:15px; padding:0 4px; font-size:9px; background:var(--rouge); color:#fff; margin-left:0; }
  body.mobile-menu-open .mobile-tabbar { display:none; }
  .topbar { min-height:62px; display:grid; grid-template-columns:minmax(0,1fr); padding:calc(8px + env(safe-area-inset-top)) 12px 8px; gap:8px; }.topbar-status { grid-column:1; grid-row:1; width:100%; }.topbar-actions { display:contents; }.topbar-account { grid-column:1; grid-row:2; width:100%; min-width:0; justify-content:center; }.objective-dock { grid-column:1; grid-row:3; width:100%; min-width:0; max-width:none; }.turn-console { justify-content:center; gap:5px; font-size:11px; white-space:nowrap; }.turn-console strong { font-size:14px; }.turn-console #turn-date,.turn-console .turn-divider { display:none; }.election-agenda-chip { bottom:0; max-width:calc(100% - 24px); padding:6px 11px; font-size:11px; }.election-agenda-chip small { display:none; }.userbox { min-width:0; justify-content:center; gap:5px; }.userbox .pill { padding:5px 7px; }.userbox span:not(.pill) { display:none; }
  .view { padding:18px 12px calc(78px + env(safe-area-inset-bottom)); }
  .btn:not(.small) { min-height:40px; }
  input, select, textarea { font-size:16px; }

  /* Glisser-pour-actualiser : anneau qui grandit avec le tirage, vire au vert une fois
     armé, tourne pendant le rafraîchissement. */
  .pull-refresh-indicator { display:flex; align-items:center; justify-content:center; height:0; overflow:hidden; transition:height .12s ease; }
  .pull-refresh-indicator::before { content:''; width:20px; height:20px; border-radius:50%; border:2.5px solid rgba(0,85,164,.2); border-top-color:var(--bleu); transition:transform .15s ease,border-color .15s ease; }
  .pull-refresh-indicator.armed::before { border-top-color:var(--pos); transform:scale(1.15); }
  .pull-refresh-indicator.loading::before { animation:pull-refresh-spin .7s linear infinite; }
  @keyframes pull-refresh-spin { to { transform:rotate(360deg); } }

  /* Bandeau d'installation PWA */
  .install-nudge { display:flex; align-items:center; gap:10px; position:fixed; left:10px; right:10px; bottom:calc(70px + env(safe-area-inset-bottom)); z-index:130; padding:11px 12px; border-radius:14px; background:var(--surface); border:1px solid var(--border); box-shadow:0 10px 28px rgba(15,23,42,.18); animation:install-nudge-in .25s ease; }
  .install-nudge > span { display:grid; place-items:center; flex:none; width:34px; height:34px; border-radius:10px; background:rgba(0,85,164,.1); color:var(--bleu); }
  .install-nudge > span svg { width:18px; height:18px; }
  .install-nudge > div { flex:1; min-width:0; display:grid; gap:2px; }
  .install-nudge strong { font-size:12.5px; }
  .install-nudge small { color:var(--muted); font-size:10.5px; line-height:1.3; }
  .install-nudge .btn.small { flex:none; }
  .install-nudge-close { flex:none; display:grid; place-items:center; width:26px; height:26px; border:0; border-radius:7px; background:transparent; color:var(--muted); cursor:pointer; padding:0; }
  .install-nudge-close svg { width:13px; height:13px; }
  @keyframes install-nudge-in { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
  .page-head { display:block; padding:3px 3px 18px; }
  .page-head h1 { font-size:25px; }
  .role-chip { display:inline-flex; margin-top:12px; }
  .grid.cols-2, .grid.cols-3, .grid.cols-4 { grid-template-columns:1fr; }
  .stat-grid { grid-template-columns:repeat(2, minmax(0,1fr)) !important; gap:9px; }
  .stat-grid .card { min-height:128px; padding:16px; }
  .stat-grid .card .value { font-size:24px; }
  .stat .value { font-size:22px; }
  .card { padding:16px; }
  .assembly-hero { display:block; padding:18px; }.assembly-hero h1 { font-size:25px; }.assembly-live-status { margin-top:14px; min-width:0; }.assembly-layout { grid-template-columns:1fr; }.assembly-agenda { order:-1; }.chamber-live { padding:10px 7px 8px; }.chamber-hall { padding:10px 6px 8px; border-width:4px; overflow:visible; }
  /* Les rangées de l'hémicycle ont une largeur fixe en % pensée pour un écran large : sur
     mobile ça dépassait le conteneur (overflow:hidden coupait alors une partie des sièges,
     rendant des députés invisibles). On les laisse s'enrouler pour que chaque siège reste
     visible et cliquable, quitte à perdre la forme en éventail. */
  .chamber-row { width:100% !important; flex-wrap:wrap; gap:4px; margin:3px auto; }
  .chamber-seat { width:12px; height:12px; }.chamber-seat span { width:5px; height:5px; left:3.5px; top:-4px; }.chamber-seat:active { transform:scale(1.5); }.chamber-tally { gap:8px; font-size:11px; }.assembly-law-card { grid-template-columns:1fr; gap:10px; }.assembly-law-votes { grid-template-columns:repeat(4, max-content); align-items:center; gap:8px; }.assembly-law-actions { justify-content:flex-start; }.assembly-law-actions .link-btn { width:auto; }
  /* Vote d'intention (Pour/Abstention/Contre) : grille tactile à 3 colonnes égales plutôt
     que des .btn.small qui s'enroulent — c'est l'action la plus importante de l'écran. */
  .assembly-intention { display:block; }.assembly-intention > div { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin-top:10px; }.assembly-intention .btn { min-height:44px; font-size:13px; }
  .party-directive-actions { display:grid; grid-template-columns:1fr 1fr; gap:7px; width:100%; }.party-directive-btn { min-height:44px; }
  /* Le débat détaillé (amendements, commentaires) devient un volet plein écran comme le
     chat et les notifications : trop dense pour tenir dans les 92vh d'une feuille modale. */
  .debate-modal { position:fixed; inset:0; z-index:161; width:auto; max-width:none; max-height:none; margin:0; border-radius:0; padding-bottom:calc(16px + env(safe-area-inset-bottom)); animation:chat-sheet-in .22s ease; }
  .debate-modal-hero { padding:calc(20px + env(safe-area-inset-top)) 50px 20px 18px; }.debate-modal-grid { grid-template-columns:1fr; padding:12px; }.debate-modal > .debate-modal-section { margin:12px 12px 0; }.debate-modal-section { padding:15px; }.debate-modal-positions,.debate-modal-flow { padding:12px 15px; }
  .party-hq-hero { display:block; padding:19px; }.party-hq-status { justify-items:start; margin-top:14px; }.party-hq-quicklinks { margin-top:14px; }.party-hq-stats { grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:12px; }.party-hq-grid,.split-grid,.split-grid.equal { grid-template-columns:1fr; }.party-action-buttons { grid-template-columns:1fr; }.party-missions { grid-template-columns:1fr; }.party-stats-row { grid-template-columns:1fr; }.account-hero { align-items:flex-start; padding:19px; }.account-meta { margin-left:auto; }.account-grid { grid-template-columns:1fr; }.executive-hero { padding:19px; }.executive-command-grid { grid-template-columns:1fr; }.executive-people { grid-template-columns:1fr; }.cabinet-appointment { min-width:210px; }.election-hero { padding:19px; }.election-command-grid { grid-template-columns:1fr; }.candidate-field { grid-template-columns:1fr; }.parties-hero { padding:19px; }.party-balance { grid-template-columns:1fr; }.party-directory { grid-template-columns:1fr; }.diplomacy-hero { padding:19px; }.diplomacy-command-grid { grid-template-columns:1fr; }.diplomacy-nations { grid-template-columns:1fr; }.diplomacy-actions { grid-template-columns:1fr; }.diplo-choice-grid { grid-template-columns:1fr; }.press-hero { padding:19px; }.press-layout { grid-template-columns:1fr; }.press-layout-new { grid-template-columns:1fr; }.press-sidebar { order:-1; }.press-wire-item { grid-template-columns:1fr; gap:4px; }.press-partis-item { grid-template-columns:28px minmax(0,1fr); gap:8px; }.press-nav { gap:3px; }.press-nav a { padding:5px 9px; font-size:11px; }.subtabs-nav button { padding:8px 10px; font-size:12px; }.dashboard-hero { display:block; padding:19px; }.dashboard-hero-state { margin-top:15px; }.dashboard-context { align-items:flex-start; flex-direction:column; }.starting-guide-hero { display:block; padding:18px; }.starting-guide-progress { justify-items:start; margin-top:15px; }.starting-guide-focus { grid-template-columns:1fr; gap:12px; padding:15px; }.starting-guide-step-number { width:48px; height:48px; border-radius:14px; font-size:22px; }.starting-guide-body { padding:13px; }.starting-guide-mission { display:grid; }.starting-guide-role-picker { grid-template-columns:1fr 1fr; }.guide-hero { padding:19px; }.guide-shortcuts,.guide-steps,.guide-role-grid { grid-template-columns:1fr; }.user-profile-link { grid-template-columns:auto; }.user-profile-link small,.user-profile-link span:not(.dot) { display:none !important; }.user-profile-link .dot { display:inline-block !important; }
  .starting-guide-compact { grid-template-columns:auto minmax(0,1fr) auto; }.starting-guide-compact-progress { display:none; }.starting-guide-compact-copy span { white-space:normal; }
  /* Centre de notifications façon "volet" plein écran sur mobile (même logique que .sticky-chat) */
  .notification-center { position:fixed; inset:0; z-index:161; width:auto; max-width:none; max-height:none; margin:0; border-radius:0; display:flex; flex-direction:column; animation:chat-sheet-in .22s ease; }
  .notification-center-head { padding:calc(18px + env(safe-area-inset-top)) 48px 18px 17px; flex:none; }.notification-center-head h2 { font-size:21px; }.notification-tabs { flex:none; padding-left:9px; padding-right:9px; }.notification-tabs button { min-height:38px; }.notification-center #notif-list { flex:1; max-height:none; padding:6px 10px; }.notification-item { grid-template-columns:34px minmax(0,1fr) 12px; gap:8px; }.notification-icon { width:30px; height:30px; }.notification-summary { display:none; }.notification-center-foot { flex:none; padding-bottom:calc(12px + env(safe-area-inset-bottom)); }
  /* Chat mobile façon "volet" plein écran (style messagerie Instagram) : la
     discussion active occupe tout l'écran, les autres restent des pastilles
     réduites au-dessus de la barre de navigation. :last-of-type cible le
     dernier <section class="sticky-chat"> parmi les <section> uniquement,
     sans être perturbé par les <button class="chat-minimized"> intercalés. */
  /* #chat-dock garde son z-index desktop (80) sinon, comme il est positionné avec un
     z-index explicite, il crée son propre contexte d'empilement : le z-index:140 de
     .sticky-chat ne compterait alors que localement, et la barre de navigation basse
     (z-index:120, dans le contexte racine) peinturait par-dessus le bas du volet — muet,
     ça cachait le champ de saisie du chat. */
  #chat-dock { right:8px; left:8px; bottom:calc(70px + env(safe-area-inset-bottom)); gap:6px; z-index:141; }
  .sticky-chat { position:fixed; inset:0; z-index:140; width:auto; display:flex; flex-direction:column; border-radius:0; animation:chat-sheet-in .22s ease; }
  .sticky-chat:not(:last-of-type) { display:none; }
  .sticky-chat header { flex:none; padding:calc(10px + env(safe-area-inset-top)) 12px 10px 14px; }
  .sticky-chat-thread { flex:1; height:auto; }
  .sticky-chat form { flex:none; padding-bottom:calc(9px + env(safe-area-inset-bottom)); }
  .chat-minimized { font-size:12px; padding:9px 14px; border-radius:999px; }
  .chat-launcher { right:13px; bottom:calc(76px + env(safe-area-inset-bottom)); width:44px; height:44px; }.modal.chat-launcher-modal { width:100vw; max-width:none; max-height:92vh; padding:0; border-radius:18px 18px 0 0; }.quick-chat-head { padding:calc(18px + env(safe-area-inset-top)) 54px 18px 17px; grid-template-columns:38px minmax(0,1fr); }.quick-chat-head > span { width:37px; height:37px; border-radius:11px; }.quick-chat-head h2 { font-size:20px; }.quick-chat-head p { display:none; }.quick-chat-body { max-height:calc(92vh - 91px); padding:11px; }.quick-chat-grid { grid-template-columns:1fr; }.quick-chat-grid > section { padding:11px; }.quick-chat-body > footer { align-items:flex-start; }.quick-chat-body > footer button { align-self:center; white-space:nowrap; }
  .assembly-discussion-head { display:block; }.assembly-discussion-head .btn { margin-top:9px; }.assembly-discussion-grid { grid-template-columns:1fr; gap:10px; }.assembly-impact { grid-template-columns:1fr; }
  .action-board { padding:16px; border-radius:12px; }
  .action-board-head { display:block; }
  .action-board-head > .small { display:block; margin-top:6px; }
  .action-item { grid-template-columns:30px minmax(0,1fr); }
  .action-item .btn { grid-column:2; justify-self:start; margin-top:2px; }
  .section-heading { display:block; }
  .section-heading .badge { margin-top:8px; }
  /* Tableaux denses -> cartes empilées sur mobile, plutôt qu'un défilement horizontal
     forcé. app.js (decorateResponsiveTables) pose un data-label positionnel sur chaque
     <td> à partir du <thead> ; ::before l'affiche comme étiquette de champ. */
  .table-scroll { margin:0; overflow-x:visible; border:0; border-radius:0; }
  .table-scroll table { min-width:0; width:100%; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
  .table-scroll table thead { display:none; }
  .table-scroll table, .table-scroll table tbody, .table-scroll table tr, .table-scroll table td { display:block; width:100%; }
  .table-scroll table tr { padding:9px 12px; border-bottom:1px solid var(--border); background:var(--surface); }
  .table-scroll table tr:last-child { border-bottom:0; }
  .table-scroll table tr:hover td { background:none; }
  .table-scroll table td { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:5px 0; border:0; text-align:right; }
  .table-scroll table td[data-label]::before { content:attr(data-label); flex:none; margin-right:auto; color:var(--muted); font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; text-align:left; }
  .table-scroll table td:not([data-label]) { justify-content:flex-start; }
  .footer { font-size:11px; padding:12px 8px calc(24px + 78px + env(safe-area-inset-bottom)); }
  .modal-backdrop { align-items:flex-end; padding:0; z-index:160; }
  .modal { max-height:92vh; border-radius:16px 16px 0 0; padding:20px 16px; position:relative; }
  .modal::before { content:''; position:absolute; z-index:5; top:8px; left:50%; width:36px; height:4px; border-radius:99px; background:rgba(120,140,164,.5); transform:translateX(-50%); pointer-events:none; }
  .form-grid, .form-grid.two, .checkboxes, .role-actions { grid-template-columns:1fr; }
  .disclosure summary { padding:13px; }
  .disclosure-body { padding:13px; }
}

/* Communauté (Discord) — hors media query, styles généraux */
.footer-discord { display:inline-flex; align-items:center; gap:4px; }
.footer-discord svg { width:12px; height:12px; }
.btn.discord { background:#5865F2; }
.btn.discord:hover { background:#4752c4; }
.btn.discord svg, .auth-discord svg { width:15px; height:15px; }
.btn.discord.lg { padding:13px 24px; font-size:14px; border-radius:11px; }
.btn.discord.lg svg { width:18px; height:18px; }
.auth-discord { display:flex; align-items:center; justify-content:center; gap:6px; margin-top:14px; padding-top:12px; border-top:1px solid var(--border); color:var(--muted); font-size:12.5px; }
.auth-discord a { display:inline-flex; align-items:center; gap:6px; color:var(--bleu); font-weight:700; }
.community-card { overflow:hidden; border:1px solid rgba(88,101,242,.25); background:linear-gradient(150deg, rgba(88,101,242,.07), var(--surface) 55%); }
.community-card-head { display:flex; align-items:flex-start; gap:13px; }
.community-card-icon { display:grid; place-items:center; flex:none; width:42px; height:42px; border-radius:12px; color:#fff; background:#5865F2; font-size:19px; }
.community-card-offer { margin-top:14px; padding:14px; border:1px solid rgba(88,101,242,.28); border-radius:14px; background:linear-gradient(135deg, rgba(88,101,242,.10), rgba(255,255,255,.02)); }
.community-offer-head { margin-bottom:10px; color:var(--bleu); font-size:11px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.community-offer-items { display:flex; flex-wrap:wrap; gap:10px; }
.community-offer-item { display:flex; align-items:center; gap:11px; flex:1 1 230px; padding:11px 13px; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
.community-offer-icon { display:grid; place-items:center; flex:none; width:40px; height:40px; border-radius:11px; font-size:19px; }
.community-offer-icon.booster { background:rgba(88,101,242,.14); color:#5865F2; }
.community-offer-icon.seals { background:rgba(212,175,55,.16); color:#b8860b; }
.community-offer-item strong { display:block; font-size:14px; line-height:1.2; }
.community-offer-item small { color:var(--muted); font-size:11.5px; line-height:1.35; }
.community-offer-note { display:block; margin-top:10px; color:var(--muted); font-size:11.5px; }
.community-card-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:14px; }
.community-card-pending { display:flex; align-items:center; gap:13px; margin-top:14px; padding:13px 15px; border:1px dashed rgba(88,101,242,.35); border-radius:12px; background:rgba(88,101,242,.05); }
.community-card-pending strong { display:block; font-size:13.5px; }
.community-card-pending p { margin:2px 0 0; }
.community-spinner { flex:none; width:24px; height:24px; border:3px solid rgba(88,101,242,.22); border-top-color:#5865F2; border-radius:50%; animation:community-spin .8s linear infinite; }
@keyframes community-spin { to { transform:rotate(360deg); } }
.community-claimed { display:inline-flex; align-items:center; gap:6px; color:var(--pos); font-weight:700; font-size:13px; }

/* Palier tablette (721-1024px, couvre notamment le Pixel Fold déplié ~717-720px de large).
   La coquille desktop (sidebar 238px fixe) reste affichée dans cette plage — seul le seuil
   mobile (720px) la remplace par la barre du bas — mais plusieurs grilles à colonnes fixes
   ou à 3-4 colonnes n'avaient aucun palier entre ce seuil et les paliers desktop existants
   (960-1100px) : elles restaient calquées sur le desktop large et s'écrasaient contre la
   sidebar. On les réduit ici sans rien masquer, en s'alignant sur les ré-arrangements déjà
   utilisés au palier mobile (order:-1 pour renvoyer l'agenda/la barre latérale au-dessus). */
@media (min-width:721px) and (max-width:1024px) {
  .form-grid { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .civis-layout,
  .agora-network-grid,
  .agora-network-grid .civis-layout,
  .agora-profile-layout,
  .assembly-layout,
  .party-hq-grid,
  .election-command-grid,
  .press-layout,
  .press-layout-new { grid-template-columns:1fr; }
  .assembly-agenda,
  .press-sidebar { order:-1; }
  .executive-command-grid,
  .party-balance,
  .diplomacy-command-grid,
  .guide-shortcuts,
  .guide-role-grid,
  .guide-steps,
  .starting-guide-role-picker { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .executive-command-grid > :last-child,
  .party-balance > :last-child { grid-column:1/-1; }
}

/* Le header n'avait que deux états : une seule ligne flex serrée (desktop large) ou la
   grille empilée sur 3 lignes du palier mobile (≤720px). Entre les deux, rien — alors que
   .objective-dock (jusqu'à 460px), le compteur de tour et le bloc compte/pastilles se
   battent tous pour la même ligne dès que la fenêtre descend sous ~1280px (tablette, mais
   aussi une fenêtre desktop simplement redimensionnée) : ils se chevauchent/débordent au
   lieu de se réorganiser. On reprend la même astuce que le palier mobile (.topbar-actions
   en display:contents pour replacer ses enfants comme cellules de grille directes du
   header) mais en 2 lignes au lieu de 3, en gardant plus de largeur qu'un téléphone. */
@media (min-width:721px) and (max-width:1280px) {
  .topbar { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,min(46%,320px)); align-items:center; gap:6px 16px; padding:10px 20px; }
  .topbar-status { grid-column:1; grid-row:1; min-width:0; }
  .topbar-actions { display:contents; }
  .topbar-account { grid-column:2; grid-row:1; flex-wrap:wrap; justify-content:flex-end; min-width:0; }
  .objective-dock { grid-column:1/-1; grid-row:2; width:100%; max-width:none; min-width:0; }
  .turn-console { min-width:0; }
  .turn-console #turn-date,
  .turn-console .turn-divider { display:none; }
}

@media (max-width: 380px) {
  .page-head h1 { font-size:21px; }
  .stat-grid { grid-template-columns:1fr !important; }
  .mobile-tabbar .mtab-label { display:none; }
  .mobile-tabbar .mtab-icon .tab-icon-svg { width:24px; height:24px; }
  .mobile-tabbar button .tab-count { right:calc(50% - 18px); }
  .dashboard-hero-state { flex-wrap:wrap; }
  .civis-profile-avatar,.agora-profile-avatar { width:64px; height:64px; font-size:24px; }
  .assembly-hero,.party-hq-hero,.executive-hero,.election-hero,.parties-hero,.diplomacy-hero,.dashboard-hero,.ranking-hero,.press-hero,.guide-hero { padding:15px; }
}

/* Renforcement Agora : présence, réactions, épinglage, discussions actives, mentions, canaux */
.presence-dot { display:inline-block; flex:none; width:8px; height:8px; margin-left:6px; border-radius:50%; background:#c7d4de; vertical-align:middle; }
.citizen-reactions-badge { display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:999px; background:rgba(139,92,246,.1); color:#7c3aed; font-size:11px; font-weight:700; white-space:nowrap; }
@media (prefers-color-scheme:dark) { .citizen-reactions-badge { background:rgba(167,139,250,.14); color:#c4b5fd; } }
.presence-dot.online { background:#22c55e; box-shadow:0 0 0 2px rgba(34,197,94,.25); }
h1 .presence-dot { width:11px; height:11px; margin-left:9px; }

.civis-post-actions { flex-wrap:wrap; row-gap:6px; }
.civis-post-actions .reaction-bar { margin-right:2px; }
.reaction-bar { display:inline-flex; flex-wrap:wrap; gap:3px; }
.civis-post-actions .reaction-bar .reaction-btn,
.reaction-bar .reaction-btn { display:inline-flex; align-items:center; gap:4px; border:1px solid transparent; border-radius:999px; padding:5px 8px; color:#48657d; background:#f0f5f9; cursor:pointer; font:inherit; font-size:12px; line-height:1; }
.civis-post-actions .reaction-bar .reaction-btn:hover,
.reaction-bar .reaction-btn:hover { color:#075ca8; background:#e1eef8; }
.civis-post-actions .reaction-bar .reaction-btn.active,
.reaction-bar .reaction-btn.active { border-color:#075ca8; color:#075ca8; background:#e1eef8; font-weight:800; }
.reaction-bar .reaction-btn:focus-visible { outline:2px solid #075ca8; outline-offset:1px; }
.reaction-bar .reaction-btn span { font-size:11px; }

.civis-pin-banner { padding:7px 18px; color:#8a5a00; background:#fff4dc; font-size:11px; font-weight:800; }
.civis-post .pin-btn { flex:none; margin-left:auto; border-radius:999px; padding:4px 9px; color:#8a5a00; background:#fff4dc; text-decoration:none; white-space:nowrap; font-size:11px; font-weight:800; }
.civis-post .pin-btn:hover { background:#ffe8b8; }

.repost-card { margin:6px 18px 10px; border:1px solid #d4e0e8; border-left:3px solid #7c3aed; border-radius:8px; padding:10px 14px; background:#f9f7fe; }
.repost-header { display:flex; align-items:center; gap:6px; color:#5b21b6; font-size:11px; font-weight:700; margin-bottom:6px; }
.repost-header .link-btn { color:inherit; font-size:11px; padding:0; text-decoration:underline; }
.repost-icon { font-size:14px; }
.repost-body { margin:0; padding:4px 0 0 12px; border-left:2px solid #c4b5fd; color:#52525b; font-size:13px; line-height:1.5; white-space:pre-wrap; overflow-wrap:break-word; }
.repost-btn { display:inline-flex; align-items:center; border:1px solid transparent; border-radius:999px; padding:5px 9px; color:#6d28d9; background:transparent; cursor:pointer; font:inherit; font-size:12px; }
.repost-btn:hover { color:#5b21b6; background:#f5f3ff; border-color:#c4b5fd; }

@media (prefers-color-scheme:dark) {
  .repost-card { background:#1e1b4b; border-color:#312e81; border-left-color:#7c3aed; }
  .repost-header { color:#a78bfa; }
  .repost-body { color:#a1a1aa; border-left-color:#6d28d9; }
  .repost-btn { color:#a78bfa; }
  .repost-btn:hover { color:#c4b5fd; background:#1e1b4b; border-color:#6d28d9; }
}

.civis-active-discussions h2 { margin:3px 0 8px; }
.civis-active-discussion { display:grid; grid-template-columns:8px minmax(0,1fr) auto; align-items:start; gap:9px; width:100%; margin-bottom:8px; padding:9px; border:1px solid #e1ebf2; border-radius:10px; background:#fff; text-align:left; cursor:pointer; font-family:inherit; }
.civis-active-discussion:last-child { margin-bottom:0; }
.civis-active-discussion:hover { background:#f4f9fc; }
.civis-active-discussion:focus-visible { outline:2px solid #075ca8; outline-offset:1px; }
.civis-active-discussion .dot { margin-top:5px; width:8px; height:8px; border-radius:50%; }
.civis-active-discussion strong { display:block; margin-bottom:2px; font-size:12px; }
.civis-active-discussion p { margin:0; color:#5b7288; font-size:11px; line-height:1.35; }
.civis-active-discussion b { align-self:center; color:#075ca8; font-size:11px; white-space:nowrap; }

.agora-mention-suggestions { display:grid; margin:-4px 0 8px; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.agora-mention-suggestions:empty, .agora-mention-suggestions[hidden] { display:none; }
.agora-mention-suggestion { display:flex; align-items:center; gap:8px; padding:7px 9px; border:0; border-bottom:1px solid var(--border); background:var(--surface); color:var(--text); text-align:left; cursor:pointer; font-family:inherit; font-size:12px; }
.agora-mention-suggestion:last-child { border-bottom:0; }
.agora-mention-suggestion:hover, .agora-mention-suggestion:focus-visible { background:rgba(0,85,164,.06); }
.agora-mention-suggestion .dot { flex:none; width:8px; height:8px; border-radius:50%; }

.agora-mention-link, .agora-hashtag-link { border:0; background:none; padding:0; color:var(--bleu); font:inherit; font-weight:700; cursor:pointer; }
.agora-mention-link:hover, .agora-hashtag-link:hover { text-decoration:underline; }

.agora-hashtag-banner { display:flex; align-items:center; gap:8px; margin-bottom:10px; padding:9px 13px; border:1px solid var(--border); border-radius:10px; background:var(--tint); font-size:12px; color:var(--muted); }
.agora-hashtag-banner strong { color:var(--text); }
.agora-hashtag-banner button { margin-left:auto; border:0; background:none; color:var(--bleu); cursor:pointer; font:inherit; font-size:11px; padding:0; }

.civis-hashtag-trends .agora-hashtag-cloud { display:flex; flex-wrap:wrap; gap:6px; }
.agora-hashtag-chip { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--border); border-radius:999px; padding:5px 10px; color:var(--bleu); background:var(--tint); cursor:pointer; font:inherit; font-size:12px; }
.agora-hashtag-chip:hover { background:rgba(0,85,164,.12); }
.agora-hashtag-chip span { color:var(--muted); font-size:10px; }

.civis-follow-suggestions .agora-follow-suggestion { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.civis-follow-suggestions .agora-follow-suggestion:last-child { margin-bottom:0; }
.civis-follow-suggestions .agora-follow-suggestion .civis-active-discussion { flex:1; margin-bottom:0; padding:7px 9px; cursor:pointer; }

.chat-unread-divider { position:relative; margin:4px 0; padding:3px 0; color:var(--muted); text-align:center; font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.chat-unread-divider::before, .chat-unread-divider::after { position:absolute; top:50%; width:30%; height:1px; background:var(--border); content:""; }
.chat-unread-divider::before { left:0; }
.chat-unread-divider::after { right:0; }

.mail-page { --mail-ink:#17283e; --mail-paper:#fbfaf6; --mail-gold:#b8924f; }
.mail-page-head { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:3px 4px 20px; }
.mail-page-head h1 { margin:4px 0 5px; color:var(--mail-ink); font-size:31px; letter-spacing:-.045em; }
.mail-page-head p { margin:0; color:var(--muted); font-size:13px; }
.mail-security { display:flex; align-items:center; gap:10px; padding:10px 14px; border:1px solid rgba(184,146,79,.28); border-radius:12px; color:#6f5527; background:#fffaf0; }
.mail-security > span { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; color:#fff; background:var(--mail-gold); font-size:11px; }
.mail-security div { display:grid; gap:1px; }
.mail-security strong { font-size:11px; text-transform:uppercase; letter-spacing:.07em; }
.mail-security small { color:#92764a; font-size:9px; }
.mail-shell { display:grid; grid-template-columns:220px 350px minmax(420px,1fr); min-height:680px; height:calc(100vh - 245px); max-height:820px; overflow:hidden; border:1px solid #dce3eb; border-radius:22px; background:var(--surface); box-shadow:0 22px 60px rgba(19,38,63,.12),0 2px 8px rgba(19,38,63,.05); }
.mail-sidebar { display:flex; flex-direction:column; min-width:0; min-height:0; overflow-y:auto; padding:18px 13px 14px; color:#dce8f4; background:radial-gradient(circle at 20% 0,rgba(31,101,161,.4),transparent 34%),linear-gradient(180deg,#102b47,#091c30); }
.mail-compose-button { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:45px; border:1px solid rgba(255,255,255,.9); border-radius:12px; color:#17324f; background:#fff; box-shadow:0 7px 18px rgba(0,0,0,.15); cursor:pointer; font:800 12px/1 inherit; transition:transform .15s,box-shadow .15s; }
.mail-compose-button:hover { transform:translateY(-2px); box-shadow:0 10px 22px rgba(0,0,0,.22); }
.mail-compose-button span { color:var(--bleu); font-size:20px; font-weight:400; }
.mail-sidebar nav { display:grid; gap:3px; margin-top:20px; }
.mail-sidebar nav button { display:grid; grid-template-columns:21px minmax(0,1fr) auto; align-items:center; gap:6px; min-height:39px; padding:8px 10px; border:0; border-radius:9px; color:#b9cadb; background:transparent; text-align:left; cursor:pointer; font:700 11px/1 inherit; }
.mail-sidebar nav button:hover { color:#fff; background:rgba(255,255,255,.07); }
.mail-sidebar nav button.active { color:#fff; background:rgba(255,255,255,.13); box-shadow:inset 3px 0 #e3be73; }
.mail-sidebar nav button > span { color:#94b4d1; text-align:center; }
.mail-sidebar nav button.active > span { color:#f2cf88; }
.mail-sidebar nav b { display:grid; place-items:center; min-width:18px; height:18px; padding:0 4px; border-radius:99px; color:#102b47; background:#d7e5f2; font-size:9px; }
.mail-live-channels { display:grid; gap:3px; margin-top:27px; padding-top:16px; border-top:1px solid rgba(255,255,255,.1); }
.mail-live-channels .eyebrow { margin:0 8px 5px; color:#7398b9; font-size:9px; }
.mail-live-channels button { display:grid; grid-template-columns:8px minmax(0,1fr) auto; gap:8px; align-items:center; padding:8px; border:0; border-radius:9px; color:#d4e0eb; background:transparent; text-align:left; cursor:pointer; font-family:inherit; }
.mail-live-channels button:hover { background:rgba(255,255,255,.07); }
.mail-live-channels button > span:nth-child(2) { display:grid; gap:2px; min-width:0; }
.mail-live-channels strong { font-size:10px; }
.mail-live-channels small { overflow:hidden; color:#7f9cb7; font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.mail-live-channels b { display:grid; place-items:center; min-width:18px; height:18px; border-radius:99px; color:#fff; background:var(--rouge); font-size:9px; }
.mail-sidebar > footer { display:flex; align-items:center; gap:9px; margin-top:auto; padding:13px 8px 2px; border-top:1px solid rgba(255,255,255,.1); }
.mail-sidebar > footer > span { color:#dfbd78; }
.mail-sidebar > footer p { display:grid; gap:2px; margin:0; }
.mail-sidebar > footer strong { color:#cbd9e6; font-size:9px; text-transform:uppercase; letter-spacing:.06em; }
.mail-sidebar > footer small { color:#708ca6; font-size:8px; line-height:1.3; }
.mail-list-pane { min-width:0; min-height:0; display:flex; flex-direction:column; border-right:1px solid var(--border); background:#f7f9fc; }
.mail-list-toolbar { display:grid; grid-template-columns:minmax(0,1fr) 35px; gap:8px; padding:14px 13px 10px; }
.mail-list-toolbar label { display:flex; align-items:center; gap:8px; min-height:37px; padding:0 11px; border:1px solid #dce4ed; border-radius:10px; color:#8a9bad; background:#fff; }
.mail-list-toolbar input { width:100%; min-height:0; padding:0; border:0; outline:0; background:transparent; font-size:11px; }
.mail-list-toolbar > button { border:1px solid #dce4ed; border-radius:10px; color:var(--bleu); background:#fff; cursor:pointer; font-size:18px; }
.mail-list-heading { display:flex; align-items:end; justify-content:space-between; gap:10px; padding:10px 16px 13px; border-bottom:1px solid var(--border); }
.mail-list-heading small { color:var(--muted); font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.09em; }
.mail-list-heading h2 { margin:2px 0 0; color:var(--mail-ink); font-size:17px; }
.mail-list-heading > span { color:var(--muted); font-size:9px; }
.mail-list { flex:1; min-height:0; overflow-y:auto; }
.mail-row { position:relative; display:grid; grid-template-columns:31px minmax(0,1fr); border-bottom:1px solid #e7ebf0; background:#fff; transition:background .15s,box-shadow .15s; }
.mail-row:hover { z-index:1; background:#fafdff; box-shadow:0 5px 18px rgba(15,42,68,.07); }
.mail-row.unread { background:#f1f7fd; }
.mail-row.selected { background:#e7f1fa; box-shadow:inset 3px 0 var(--bleu); }
.mail-row[hidden] { display:none; }
.mail-star { align-self:start; margin:21px 0 0 10px; padding:0; border:0; color:#c5ced8; background:transparent; cursor:pointer; font-size:14px; }
.mail-star:hover,.mail-star.active { color:#c89227; }
.mail-row-open { display:grid; grid-template-columns:35px minmax(0,1fr) auto; gap:9px; align-items:start; width:100%; min-width:0; padding:14px 13px 13px 5px; border:0; color:var(--text); background:transparent; text-align:left; cursor:pointer; font-family:inherit; }
.mail-avatar { display:grid; place-items:center; flex:none; width:34px; height:34px; border:2px solid #fff; border-radius:11px; color:#fff; background:var(--avatar); box-shadow:0 0 0 1px rgba(23,40,62,.1); font-size:12px; font-weight:900; }
.mail-avatar.large { width:48px; height:48px; border-radius:15px; font-size:17px; }
.mail-official-avatar { display:grid; place-items:center; width:34px; height:34px; border:1px solid #c7a45f; border-radius:50%; outline:1px solid rgba(184,146,79,.35); outline-offset:2px; color:#9b7228; background:#fffaf0; font:800 10px/1 Georgia,serif; }
.mail-official-avatar.large { width:48px; height:48px; font-size:14px; }
.mail-row.official { background:#fffdf7; }
.mail-row.official.unread { background:#fff8e7; }
.mail-row-copy .official-tag { color:#896521; background:#f7e9c9; }
.mail-row-copy { display:grid; gap:3px; min-width:0; }
.mail-row-copy > span { display:flex; align-items:center; gap:6px; }
.mail-row-copy > span strong { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.mail-row-copy > span em { padding:2px 4px; border-radius:4px; color:#738499; background:#edf1f5; font-size:7px; font-style:normal; font-weight:800; text-transform:uppercase; }
.mail-row.unread .mail-row-copy > span strong,.mail-row.unread .mail-row-copy > b { font-weight:900; }
.mail-row-copy > b { overflow:hidden; color:#314258; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.mail-row-copy > small { overflow:hidden; color:#7b899a; font-size:9px; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.mail-row-meta { display:grid; justify-items:end; gap:7px; padding-left:4px; }
.mail-row-meta time { color:#8391a1; font-size:8px; white-space:nowrap; }
.mail-row-meta b { display:grid; place-items:center; min-width:18px; height:18px; padding:0 4px; border-radius:99px; color:#fff; background:var(--bleu); font-size:8px; }
.mail-list-empty { display:grid; justify-items:center; gap:7px; padding:55px 24px; color:var(--muted); text-align:center; }
.mail-list-empty > span { display:grid; place-items:center; width:48px; height:48px; border-radius:50%; color:#7f9fbd; background:#e9f0f7; font-size:20px; }
.mail-list-empty strong { color:#43566d; font-size:12px; }
.mail-list-empty p { max-width:210px; margin:0; font-size:10px; line-height:1.5; }
.mail-list-empty.compact { padding:25px; }
.mail-list-empty[hidden] { display:none; }
.mail-reader { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; background:var(--mail-paper); }
.mail-reader-toolbar { flex:none; display:flex; align-items:center; justify-content:space-between; min-height:50px; padding:8px 16px; border-bottom:1px solid #e5e2d9; color:#7b766a; background:rgba(255,255,255,.7); font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.mail-reader-toolbar button { display:grid; place-items:center; min-width:30px; height:30px; padding:0 8px; border:1px solid #e2dfd6; border-radius:8px; color:#7e7b72; background:#fff; cursor:pointer; font-size:15px; }
.mail-reader-toolbar button:hover,.mail-reader-toolbar button.active { color:#9a6d1b; border-color:#d9bd86; background:#fff8e9; }
.mail-reader-toolbar > div { display:flex; gap:6px; }
.mail-mobile-back { display:none !important; }
.mail-correspondent-head { flex:none; display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:13px; align-items:center; padding:17px 21px; border-bottom:1px solid #e5e2d9; background:#fffdf8; }
.mail-correspondent-head h2 { margin:2px 0 3px; color:var(--mail-ink); font-size:19px; }
.mail-correspondent-head p { margin:0; color:#8b877e; font-size:9px; }
.mail-correspondent-head > button { padding:7px 9px; border:1px solid #ded9cd; border-radius:8px; color:#706c63; background:transparent; cursor:pointer; font:700 9px/1 inherit; }
.mail-thread { flex:1; min-height:0; display:grid; align-content:start; gap:14px; overflow-y:auto; padding:20px clamp(16px,4vw,38px); background:radial-gradient(circle at 50% 0,rgba(185,150,84,.06),transparent 35%),var(--mail-paper); }
.mail-letter { position:relative; padding:18px 20px 12px; border:1px solid #dfdbd1; border-radius:3px 13px 13px 13px; background:#fff; box-shadow:0 6px 18px rgba(69,58,39,.065); }
.mail-letter.mine { border-radius:13px 3px 13px 13px; border-color:#ccdbe8; background:#fbfdff; }
.mail-letter::before { position:absolute; left:0; top:0; bottom:0; width:3px; border-radius:3px 0 0 3px; background:var(--mail-gold); content:""; }
.mail-letter.mine::before { left:auto; right:0; border-radius:0 3px 3px 0; background:var(--bleu); }
.mail-letter > header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.mail-letter > header > div { display:flex; align-items:center; gap:9px; }
.mail-letter > header > div > span:last-child { display:grid; gap:2px; }
.mail-letter > header strong { color:#26384e; font-size:10px; }
.mail-letter > header small,.mail-letter > header time { color:#8d949c; font-size:8px; }
.mail-letter-subject { display:grid; gap:2px; margin:14px 0 12px; padding-bottom:10px; border-bottom:1px solid #ece8df; }
.mail-letter-subject small { color:#9a8a6b; font-size:7px; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.mail-letter-subject strong { color:#25364b; font-family:Georgia,serif; font-size:15px; }
.mail-letter > p { margin:0; color:#354256; font-family:Georgia,serif; font-size:12px; line-height:1.75; white-space:pre-wrap; }
.mail-markdown { color:#354256; font-family:Georgia,serif; font-size:12px; line-height:1.75; overflow-wrap:anywhere; }
.mail-markdown p { margin:0 0 10px; }
.mail-markdown p:last-child { margin-bottom:0; }
.mail-markdown h3,.mail-markdown h4,.mail-markdown h5,.mail-markdown h6 { margin:17px 0 7px; color:#26384d; font-family:Georgia,serif; line-height:1.25; }
.mail-markdown h3 { font-size:18px; }.mail-markdown h4 { font-size:15px; }.mail-markdown h5 { font-size:13px; }.mail-markdown h6 { font-size:12px; }
.mail-markdown ul,.mail-markdown ol { margin:8px 0 12px; padding-left:22px; }
.mail-markdown li { margin:3px 0; }
.mail-markdown blockquote { margin:12px 0; padding:8px 12px; border-left:3px solid var(--mail-gold); color:#6e6659; background:#faf6ec; font-style:italic; }
.mail-markdown code { padding:2px 5px; border-radius:4px; color:#a13b32; background:#f4eee5; font:11px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace; }
.mail-markdown pre { overflow:auto; margin:12px 0; padding:11px 13px; border-radius:8px; background:#17283e; }
.mail-markdown pre code { padding:0; color:#e5edf5; background:transparent; white-space:pre; }
.mail-markdown a { color:var(--bleu); text-decoration:underline; text-underline-offset:2px; }
.mail-letter > footer { display:flex; justify-content:space-between; gap:10px; margin-top:17px; padding-top:9px; border-top:1px solid #f0ede6; color:#9a958a; font-size:7px; text-transform:uppercase; letter-spacing:.07em; }
.mail-letter > footer em { color:#587797; font-style:normal; font-weight:800; }
.mail-reply-form { flex:none; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end; padding:12px 16px 14px; border-top:1px solid #dedbd2; background:#fffdf9; }
.mail-reply-form > div { display:grid; grid-template-columns:22px minmax(0,1fr); gap:7px; color:#8c7c5e; }
.mail-reply-form label { color:#6c7785; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.mail-reply-form textarea { width:100%; min-height:56px; margin-top:4px; padding:9px 11px; border-color:#ddd8cb; border-radius:9px; background:#fff; font-family:Georgia,serif; font-size:12px; text-transform:none; letter-spacing:normal; resize:none; }
.mail-reply-form .btn { min-height:38px; }
.mail-reader-empty { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:40px; color:#817b70; text-align:center; background:radial-gradient(circle at 50% 45%,rgba(192,157,91,.09),transparent 28%); }
.mail-seal { display:grid; place-items:center; width:70px; height:70px; margin-bottom:19px; border:1px solid #c5a463; border-radius:50%; outline:1px solid #c5a463; outline-offset:4px; color:#a57d32; font:700 22px/1 Georgia,serif; }
.mail-reader-empty h2 { margin:6px 0 8px; color:#27384c; font-family:Georgia,serif; font-size:23px; }
.mail-reader-empty p { max-width:340px; margin:0 0 18px; font-size:11px; line-height:1.6; }
.mail-reader-empty > small { margin-top:16px; color:#aaa294; font-size:8px; }
.mail-correspondent-head.official { grid-template-columns:auto minmax(0,1fr); background:#fffaf0; }
.mail-official-reader { flex:1; min-height:0; overflow-y:auto; padding:clamp(18px,4vw,40px); background:radial-gradient(circle at 50% 0,rgba(184,146,79,.1),transparent 42%),var(--mail-paper); }
.mail-official-reader > article { max-width:680px; min-height:440px; margin:0 auto; padding:0 clamp(22px,5vw,48px) 34px; border:1px solid #ddd5c4; background:#fffefa; box-shadow:0 14px 38px rgba(73,57,29,.11); }
.mail-official-ribbon { margin:0 clamp(-48px,-5vw,-22px) 34px; padding:10px 16px; color:#f6e4bc; background:linear-gradient(90deg,#102c49,#183e62); text-align:center; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.12em; }
.mail-official-letterhead { display:grid; grid-template-columns:auto minmax(0,1fr); gap:18px; align-items:center; padding-bottom:22px; border-bottom:2px solid #d5bc89; }
.mail-seal.small { width:54px; height:54px; margin:0; font-size:17px; }
.mail-official-letterhead small { color:#a18d68; font-size:8px; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.mail-official-letterhead h2 { margin:4px 0 0; color:#26384c; font-family:Georgia,serif; font-size:clamp(19px,3vw,27px); line-height:1.15; }
.mail-official-reader article > .mail-markdown { margin:29px 0; color:#374355; font-size:13px; line-height:1.9; }
.mail-official-reader article > footer { display:flex; align-items:end; justify-content:space-between; gap:20px; margin-top:38px; padding-top:18px; border-top:1px solid #e2dccf; }
.mail-official-reader article > footer > div { display:grid; gap:4px; color:#807767; font-family:Georgia,serif; font-size:10px; }
.mail-official-reader article > footer strong { color:#2f4157; font-size:12px; }
.mail-official-reader article > footer .btn { flex:none; text-decoration:none; }
.mail-compose-form { flex:1; min-height:0; overflow-y:auto; padding:clamp(20px,4vw,40px) clamp(22px,6vw,60px); background:radial-gradient(circle at 90% 5%,rgba(184,146,79,.09),transparent 27%),var(--mail-paper); }
.mail-compose-form > header { margin-bottom:25px; }
.mail-compose-form > header h2 { margin:5px 0 7px; color:#23364b; font-family:Georgia,serif; font-size:27px; }
.mail-compose-form > header p { margin:0; color:#8a8377; font-size:10px; }
.mail-compose-form > label:not(.mail-body-field) { display:grid; grid-template-columns:60px minmax(0,1fr); align-items:center; min-height:46px; margin:0; border-bottom:1px solid #dfdbd0; color:#8c806b; font-size:9px; text-transform:uppercase; letter-spacing:.08em; }
.mail-compose-form > label input { min-height:0; padding:8px 0; border:0; outline:0; color:#27384d; background:transparent; font-size:12px; text-transform:none; letter-spacing:normal; }
.mail-compose-form .chat-user-suggestions { margin:2px 0 4px 60px; }
.mail-body-field { display:grid; gap:7px; margin-top:22px; color:#8c806b; font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; }
.mail-body-field textarea { min-height:220px; padding:18px; border:1px solid #ded8ca; border-radius:3px; color:#354154; background:#fff; box-shadow:inset 0 0 35px rgba(178,148,91,.035); font-family:Georgia,serif; font-size:13px; line-height:1.7; text-transform:none; letter-spacing:normal; resize:vertical; }
.mail-formatbar { display:flex; align-items:center; gap:3px; padding:5px 6px; border:1px solid #ded8ca; border-bottom:0; border-radius:8px 8px 0 0; background:#f8f5ee; }
.mail-formatbar button { display:grid; place-items:center; min-width:27px; height:25px; padding:0 5px; border:0; border-radius:5px; color:#5c6877; background:transparent; cursor:pointer; font:700 10px/1 inherit; text-transform:none; }
.mail-formatbar button:hover { color:var(--bleu); background:#e6eef6; }
.mail-formatbar small { margin-left:auto; color:#a09889; font:700 7px/1 inherit; text-transform:uppercase; letter-spacing:.08em; }
.mail-body-field .mail-formatbar + textarea { margin-top:0; border-radius:0 0 3px 3px; }
.mail-reply-form .mail-formatbar { margin-top:5px; padding:3px 4px; }
.mail-reply-form .mail-formatbar button { min-width:24px; height:22px; }
.mail-reply-form .mail-formatbar + textarea { margin-top:0; border-radius:0 0 9px 9px; }
.mail-signature { display:grid; justify-items:end; gap:2px; margin-top:15px; color:#817766; font-family:Georgia,serif; font-size:10px; }
.mail-signature strong { color:#304259; font-size:14px; }
.mail-signature small { color:#aaa294; font-family:inherit; font-size:7px; text-transform:uppercase; letter-spacing:.07em; }
.mail-compose-form > footer { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-top:22px; padding-top:16px; border-top:1px solid #dfdbd0; }
.mail-compose-form > footer small { color:#9a927f; font-size:8px; }
.mail-compose-form > footer .btn { gap:9px; min-width:165px; }

@media (max-width:1100px) and (min-width:721px) {
  .mail-shell { grid-template-columns:185px 300px minmax(360px,1fr); }
  .mail-sidebar { padding-left:9px; padding-right:9px; }
  .mail-compose-form { padding-left:28px; padding-right:28px; }
}

@media (max-width: 720px) {
  .civis-active-discussion { grid-template-columns:8px minmax(0,1fr); }
  .civis-active-discussion b { grid-column:2; justify-self:start; }
  .mail-page-head { display:block; padding:0 3px 14px; }
  .mail-page-head h1 { font-size:25px; }
  .mail-page-head p,.mail-security { display:none; }
  .mail-shell { display:block; min-height:calc(100vh - 215px); height:calc(100vh - 215px); max-height:none; overflow:hidden; border-radius:15px; }
  .mail-sidebar { display:none; }
  .mail-list-pane { height:100%; border-right:0; }
  .mail-reader { display:none; height:100%; }
  .mail-shell.has-reader .mail-list-pane { display:none; }
  .mail-shell.has-reader .mail-reader { display:flex; }
  .mail-list-toolbar { padding:10px; }
  .mail-list-heading { padding:9px 13px 12px; }
  .mail-row { grid-template-columns:29px minmax(0,1fr); }
  .mail-row-open { grid-template-columns:38px minmax(0,1fr) auto; padding-right:9px; }
  .mail-avatar { width:36px; height:36px; }
  .mail-mobile-back { display:grid !important; }
  .mail-reader-toolbar { min-height:48px; padding:7px 10px; }
  .mail-correspondent-head { padding:13px; }
  .mail-correspondent-head > button { display:none; }
  .mail-thread { padding:13px 10px; }
  .mail-letter { padding:14px 14px 10px; }
  .mail-letter > header { align-items:start; }
  .mail-letter > header time { max-width:70px; text-align:right; }
  .mail-reply-form { grid-template-columns:1fr auto; padding:9px 9px calc(9px + env(safe-area-inset-bottom)); }
  .mail-reply-form textarea { min-height:50px; font-size:16px; }
  .mail-compose-form { padding:19px 15px calc(20px + env(safe-area-inset-bottom)); }
  .mail-compose-form > header h2 { font-size:23px; }
  .mail-body-field textarea { min-height:210px; font-size:16px; }
  .mail-compose-form > footer { align-items:stretch; flex-direction:column; }
  .mail-compose-form > footer .btn { width:100%; }
  .mail-official-reader { padding:10px; }
  .mail-official-reader > article { min-height:100%; padding:0 18px 28px; }
  .mail-official-ribbon { margin:0 -18px 25px; }
  .mail-official-reader article > footer { align-items:stretch; flex-direction:column; }
  .mail-official-reader article > footer .btn { width:100%; }
}

/* Correctifs dark-theme : composants ajoutés hors des variables --surface/--text/--muted/--border */
@media (prefers-color-scheme: dark) {
  /* le correctif topbar doit rester après sa règle claire (ligne ~68) pour gagner la cascade */
  .topbar { background: rgba(23,32,43,.92); }
  .election-agenda-chip { border-color:rgba(239,65,53,.42); color:var(--text); background:#40292b; }
  .election-agenda-chip:hover { background:#513033; }
  .mobile-tabbar { background: rgba(15,22,32,.94); border-top-color: var(--border); }
  .mobile-tabbar button { color: var(--muted); }
  .mobile-tabbar button.active { color: #7db8f2; }
  .modal::before { background: rgba(200,210,224,.28); }

  /* fonds de carte codés en dur -> surface du thème */
  .agora-left-rail nav,
  .agora-profile-page .agora-inner-nav,
  .agora-profile-card,
  .agora-wall, .agora-profile-side, .agora-profile-editor,
  .civis-feed-heading button,
  .civis-reply.real,
  .civis-active-discussion,
  .assembly-law-card,
  .group-recommendation,
  .debate-modal-section,
  .agora-compose-options select,
  .starting-guide-check,
  .starting-guide-role-picker button,
  .starting-guide-focus {
    background: var(--surface);
    border-color: var(--border);
  }

  /* panneaux légèrement teintés -> fond du thème */
  .agora-profile-page,
  .agora-app,
  .agora-profile-layout,
  .agora-wall-feed,
  .citizen-feed-post footer,
  .civis-replies,
  .chat-channel-note,
  .debate-compose textarea,
  .civis-active-discussion:hover {
    background: rgba(255,255,255,.03);
    border-color: var(--border);
  }

  /* .debate-modal hérite déjà de var(--surface) (opaque) ; seul le bandeau
     d'échéances a besoin d'un fond distinct du fond de la modale. */
  .debate-modal-flow { background: var(--tint); }

  /* textes secondaires bleu-gris codés en dur -> couleur muted du thème */
  .agora-inner-nav,
  .agora-wordmark span,
  .agora-nav-actions button,
  .agora-left-rail nav button,
  .agora-left-rail > p,
  .agora-profile-identity p,
  .agora-location,
  .agora-profile-metrics,
  .agora-wall-head > span,
  .agora-wall-post footer,
  .agora-empty-wall,
  .agora-profile-side p,
  .agora-profile-editor label,
  .agora-profile-nav-state,
  .agora-wall-head p,
  .agora-profile-editor > p,
  .agora-profile-completion,
  .citizen-feed-context,
  .civis-active-discussion p {
    color: var(--muted);
  }

  .agora-profile-metrics strong,
  .starting-guide-mission strong,
  .starting-guide-focus h3 {
    color: var(--text);
  }

  .agora-profile-completion i { background: rgba(255,255,255,.08); }

  /* accents bleus (hover/tags) -> teinte bleue transparente + texte clair */
  .agora-nav-actions button:hover,
  .agora-left-rail nav button:hover,
  .agora-back,
  .agora-back:hover,
  .agora-post-context,
  .civis-reply.citizen,
  .citizen-feed-label,
  .reaction-bar .reaction-btn,
  .civis-post-actions .reaction-bar .reaction-btn {
    background: rgba(0,85,164,.16);
    color: #bcdcff;
  }
  .reaction-bar .reaction-btn:hover,
  .reaction-bar .reaction-btn.active,
  .civis-post-actions .reaction-bar .reaction-btn:hover,
  .civis-post-actions .reaction-bar .reaction-btn.active {
    background: rgba(0,85,164,.26);
    border-color: #4da3e0;
    color: #d9ecff;
  }

  /* bandeau épinglé (ambre) */
  .civis-pin-banner,
  .civis-post .pin-btn { color: #f0cf7a; }
  .civis-pin-banner, .civis-post .pin-btn { background: rgba(138,90,0,.28); }
  .civis-post .pin-btn:hover { background: rgba(138,90,0,.42); }
  .debate-modal-positions { background: rgba(255,212,120,.08); }

  /* blocs teal : objectifs / guide de démarrage */
  .header-objectives,
  .objective-board,
  .starting-guide {
    background: linear-gradient(135deg, rgba(8,120,120,.22), var(--surface));
    border-color: rgba(21,155,135,.35);
    color: #cdeee8;
  }
  .header-objectives:hover { border-color: #0aa3a3; }
  .header-objectives.complete {
    background: rgba(22,163,74,.14);
    border-color: rgba(22,163,74,.5);
    color: #bdeccb;
  }
  .header-objectives small { color: #8fd0c9; }
  .header-objectives strong { color: #eafcf8; }
  .objective-item { background: rgba(255,255,255,.05); border-color: rgba(21,155,135,.22); }
  .objective-modal-bonus { background: rgba(21,155,135,.16); color: #bdf0e4; }
  .objective-modal-bonus small { color: #8fc9bd; }
  .objective-modal-number { background: rgba(21,155,135,.22); }
  .starting-guide-mission { color: #b9dcd6; }
  .starting-guide-compact-copy strong { color:#eafcf8; }
  .starting-guide-compact-copy .eyebrow,.starting-guide-compact-progress strong,.starting-guide-availability { color:#9fe1d6; }
  .starting-guide-availability { background:rgba(21,155,135,.16); }
  .starting-guide-focus.is-complete {
    background: linear-gradient(135deg, rgba(22,163,74,.14), var(--surface));
    border-color: #3f7a68;
  }
  .starting-guide-dots i { background: rgba(255,255,255,.08); color: #9fd6ca; }

  /* badges de notification pastel -> version sombre */
  .notification-icon.elections { background: rgba(161,98,7,.25); color: #fbd989; }
  .notification-icon.government { background: rgba(124,58,237,.25); color: #d6bbfb; }
  .notification-icon.party { background: rgba(4,120,87,.25); color: #8fe3c4; }
  .notification-icon.message { background: rgba(3,105,161,.25); color: #8fd0f5; }
  .notification-icon.diplomacy { background: rgba(190,18,60,.25); color: #f6a8bb; }
  .civic-wallet-pill { background: linear-gradient(135deg,rgba(154,100,16,.22),rgba(210,152,47,.12)) !important; color:#f3d58f !important; }
  .shop-free-route { border-color:rgba(210,152,47,.28); background:linear-gradient(100deg,rgba(154,100,16,.2),var(--surface) 58%,rgba(19,139,113,.12)); }
  .shop-free-route.completed { border-color:rgba(19,139,113,.35); background:linear-gradient(100deg,rgba(19,139,113,.18),var(--surface)); }
  .shop-free-route small,.shop-free-route > b { color:#f0ce81; }
  .weekly-civic > b { color:#f0ce81; background:rgba(154,100,16,.2); }
  .cosmetic-badge-preview { border-color:#315975; color:#d7edfa; background:#132838; }
  .booster-offer.featured { background: linear-gradient(180deg,rgba(154,100,16,.16),var(--surface) 42%); }
  .booster-offer.welcome-offer { background:linear-gradient(180deg,rgba(180,35,24,.16),var(--surface) 42%); border-color:#dc6b60; }
  .booster-offer.loyalty-offer { background:linear-gradient(180deg,rgba(103,69,174,.18),var(--surface) 42%); border-color:#8e73c7; }
  .booster-welcome-price strong { color:#ff998f; }
  .booster-welcome-price.loyalty strong { color:#c6a9ff; }
  .cosmetic-title-preview { color:#bcdcff; background:rgba(0,85,164,.2); border-color:rgba(91,159,218,.35); }
  .cosmetic-title-preview.title-stratege { color:#d8c4ff; background:rgba(103,69,174,.2); border-color:rgba(157,126,216,.35); }
  .gift-trust-note { color:#98dfcf; background:rgba(19,139,113,.16); }
  .shop-balance-inline,.objective-reroll-note { color:#f0ce81; background:rgba(154,100,16,.2); }
  .activity-categories span.done { color:#86dfbd; background:rgba(18,145,102,.14); }
  .shop-setup-note { color:#f0ce81; background:rgba(154,100,16,.18); }
  .mail-page { --mail-ink:#e3edf7; --mail-paper:#f8f5ed; }
  .mail-shell { border-color:#304257; }
  .mail-list-pane { background:#101b28; }
  .mail-list-toolbar label,.mail-list-toolbar > button { border-color:#324459; background:#172535; }
  .mail-list-toolbar input { color:var(--text); }
  .mail-list-heading,.mail-row { border-color:#2a3a4c; }
  .mail-row { background:#172230; }
  .mail-row:hover { background:#1c2b3b; }
  .mail-row.unread,.mail-row.selected { background:#19334b; }
  .mail-row.official { background:#28261f; }
  .mail-row.official.unread { background:#39301f; }
  .mail-row-copy > b,.mail-list-empty strong { color:#d7e2ee; }
  .mail-row-copy > span em { color:#aab9c9; background:#273649; }
  .mail-row-copy .official-tag { color:#e8ca8d; background:#49391c; }
  .mail-security { border-color:#69542e; color:#e8cb91; background:#2c271d; }
  .quick-chat-body { background:#101a27; }
  .quick-chat-search,.quick-chat-grid > section { border-color:#304257; background:#172535; }
  .quick-chat-search > label,.quick-chat-grid > section > header h3,.quick-chat-item strong { color:#dbe7f2; }
  .quick-chat-search input { color:var(--text); }
  .quick-chat-item { border-color:#2b3b4d; }
  .quick-chat-item:hover { background:#1d3043; }
  .quick-chat-grid > section > header > span { color:#9ed1f4; background:#203b54; }
  .quick-chat-body > footer { border-color:#5e4c2b; color:#e1c88f; background:#2b261c; }
  .quick-chat-body > footer small { color:#b5a077; }
}
.presidential-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.presidential-choice{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.presidential-choice.recommended{border-color:var(--bleu);box-shadow:0 0 0 2px color-mix(in srgb,var(--bleu) 12%,transparent)}.presidential-choice h3,.presidential-choice p{margin:0}.presidential-choice .effect-chips{margin:2px 0 5px}.presidential-choice .btn{margin-top:auto}.presidential-cooldown{padding:18px;border-radius:14px;background:color-mix(in srgb,var(--bleu) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--bleu) 25%,var(--border))}
.pm-current{display:flex;align-items:center;gap:10px;padding:12px 14px;margin-top:12px;border-radius:12px;background:color-mix(in srgb,var(--bleu) 7%,var(--surface))}.pm-current span:first-child{color:var(--muted);font-size:.8rem}.pm-candidate-grid{display:grid;gap:10px;margin-top:14px}.pm-candidate-grid article{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 14px;border:1px solid var(--border);border-radius:13px}.pm-candidate-grid article>div{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px 9px}.pm-candidate-grid small{grid-column:2;color:var(--muted)}
@media(max-width:720px){.presidential-choice-grid{grid-template-columns:1fr}.presidential-choice{padding:15px}}
@media(max-width:720px){.pm-current,.pm-candidate-grid article{align-items:flex-start;flex-direction:column}.pm-candidate-grid article .btn{width:100%}}

/* ============ 3.33.0 — Présidence : Élysée (cap, parole, institutions, crises) ============ */
.elysee-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;border-radius:16px;background:linear-gradient(135deg,#1e3a8a,#3b5bdb);color:#fff;margin-top:18px}.elysee-hero h1{margin:0;font-size:1.35rem}.elysee-hero p{margin:4px 0 0;opacity:.9}.elysee-hero .badge{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);color:#fff}
.presidential-doctrine-card{border-left:4px solid var(--cap-color,#0055A4)}.presidential-doctrine-card .presidential-choice{border-color:color-mix(in srgb,var(--cap-color,#0055A4) 30%,var(--border))}
.doctrine-markers{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.arbitrage-list{display:flex;flex-direction:column;gap:10px}.arbitrage-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.arbitrage-row>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.arbitrage-row .choice-buttons{flex-shrink:0}
.promulgation-list{display:flex;flex-direction:column;gap:12px}.promulgation-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.promulgation-row h3{margin:4px 0 0;font-size:1rem}.promulgation-row .choice-buttons{flex-shrink:0}
.promise-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:8px}
.emergency-state{border:1px dashed color-mix(in srgb,var(--rouge) 40%,var(--border));border-radius:12px;padding:12px 14px;background:color-mix(in srgb,var(--rouge) 5%,var(--surface))}
@media(max-width:720px){.elysee-hero{flex-direction:column;align-items:flex-start}.promise-picker{grid-template-columns:1fr}.arbitrage-row,.promulgation-row{flex-direction:column;align-items:stretch}}

/* ============ 3.42.0 — Politique locale (communes, mairies, budget municipal) ============ */
.muni-hero{padding:20px;border-radius:16px;background:linear-gradient(135deg,#14532d,#166534);color:#fff;margin-top:18px}.muni-hero h1{margin:0;font-size:1.35rem}.muni-hero p{margin:6px 0 0;opacity:.92;max-width:760px}.muni-hero .eyebrow{color:rgba(255,255,255,.75)}
.muni-next-scrutin{padding:18px 20px;border-radius:16px;border:1px solid color-mix(in srgb,var(--pos) 30%,var(--border));background:color-mix(in srgb,var(--pos) 6%,var(--surface));margin-top:16px}.muni-next-scrutin h2{margin:4px 0 0;font-size:1.15rem}
.muni-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.muni-stats-grid>div{padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:3px}.muni-stats-grid small{color:var(--muted)}.muni-stats-grid b{font-size:1.12rem}
.muni-tax-controls{display:flex;flex-direction:column;gap:12px;margin-top:12px}.muni-tax-controls input[type=range]{width:100%;accent-color:var(--bleu)}.muni-tax-readouts{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.muni-tax-readouts span{font-size:.9rem}.muni-tax-readouts .btn{margin-left:auto}
.muni-builds-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.muni-build-card{padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:10px}.muni-build-card.disabled{opacity:.62}.muni-build-head{display:flex;gap:12px;align-items:flex-start}.muni-build-icon{font-size:1.5rem;line-height:1}.muni-build-icon svg{width:30px;height:30px;display:block}.muni-build-head h4{margin:0 0 3px;font-size:.98rem}.muni-build-head p{margin:0}.muni-build-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.muni-build-cost{font-weight:700;color:var(--pos)}.muni-build-effects{color:var(--muted);font-size:.82rem;flex:1}
.muni-journal-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:7px}.muni-journal-list li{display:flex;align-items:baseline;gap:8px;font-size:.9rem;flex-wrap:wrap}.muni-log-cat{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:1px 6px}
.muni-candidacy-card{border-left:4px solid var(--bleu)}
.muni-dir-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.muni-dir-filters select,.muni-dir-filters input{padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:inherit}.muni-dir-filters input{min-width:220px}
.muni-dir{padding:0;overflow:hidden}.muni-dir-head,.muni-dir-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.6fr) auto;gap:12px;align-items:center;padding:11px 16px}.muni-dir-head{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border)}.muni-dir-row{border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent)}.muni-dir-row:last-child{border-bottom:none}.muni-dir-name{display:flex;flex-direction:column;gap:1px}.muni-dir-stats{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:.85rem}.muni-dir-more{padding:12px 16px;text-align:center}
.muni-hist{list-style:none;margin:0;padding:0}.muni-hist-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);flex-wrap:wrap}.muni-hist-row:last-child{border-bottom:none}.muni-hist-row>div:first-child{display:flex;flex-direction:column;gap:2px}.muni-hist-results{display:flex;gap:8px;flex-wrap:wrap}.muni-hist-party{font-size:.82rem;font-weight:600;padding:3px 9px;border-radius:8px;background:color-mix(in srgb,var(--party,#64748b) 14%,var(--surface));border:1px solid color-mix(in srgb,var(--party,#64748b) 35%,var(--border))}
.muni-city-modal .muni-stats-grid{margin-top:14px}.muni-city-block{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.muni-city-block ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.92rem}.muni-city-candidate{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.muni-city-candidate.mine{background:color-mix(in srgb,var(--pos) 8%,transparent);border-radius:8px;padding:4px 8px}.muni-party-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}
@media(max-width:900px){.muni-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.muni-builds-grid{grid-template-columns:1fr}.muni-dir-head{display:none}.muni-dir-row{grid-template-columns:1fr auto;gap:8px}.muni-dir-stats{grid-column:1/-1;order:3}}
@media(max-width:720px){.muni-tax-readouts .btn{width:100%;margin-left:0}.muni-hist-row{align-items:flex-start}}

/* ============ 3.42.0 — Municipales dans la page Élections ============ */
.election-command-card.scrutin-municipales .election-card-head{background:linear-gradient(135deg,#065f46,#047857)}
.election-command-card.scrutin-municipales .election-card-head::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,transparent 0 10px,rgba(255,255,255,.05) 10px 20px);pointer-events:none}
.election-municipal-cta{padding:16px 18px;display:flex;flex-direction:column;gap:12px;align-items:flex-start;border-top:1px dashed color-mix(in srgb,var(--pos) 30%,var(--border))}

/* ============ 3.45.4 — Politique locale : charte des onglets de l'Assemblée ============ */
.muni-charter > .subtabs-nav { gap:2px; }
.muni-charter > .subtabs-nav button { padding:12px 16px; font-size:13px; }
.muni-charter > [data-subtab-panel] { margin-top:16px; }

/* ============ 3.45.4 — Carte interactive de la ville (Politique locale) ============ */
.muni-map-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.muni-map-grid { display:grid; grid-template-columns:repeat(6, 1fr); gap:8px; margin-top:14px; }
.muni-map-tile { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; min-height:94px; padding:8px 4px; border-radius:10px; border:1px solid var(--border); background:var(--surface); cursor:default; font:inherit; text-align:center; transition:all .15s; }
.muni-map-tile.building { background:linear-gradient(180deg, rgba(0,85,164,.08), rgba(0,85,164,.02)); cursor:pointer; }
.muni-map-tile.building:hover { border-color:var(--bleu); transform:translateY(-2px); box-shadow:0 6px 14px rgba(0,85,164,.14); }
.muni-map-tile.townhall { background:linear-gradient(180deg, rgba(212,160,23,.16), rgba(212,160,23,.04)); border-color:rgba(212,160,23,.45); }
.muni-map-tile.empty { border-style:dashed; opacity:.55; }
.muni-map-tile small { font-size:10px; color:var(--muted); line-height:1.15; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.muni-map-icon { font-size:22px; line-height:1; }
.muni-map-icon svg { width:34px; height:34px; display:block; }
.muni-map-legend { margin-top:10px; }
@media (max-width:560px) { .muni-map-grid { grid-template-columns:repeat(3, 1fr); } }

/* ============ 3.46.0 — Vie municipale : événements, gouvernance, dette, palmarès ============ */
.muni-event-card { border-left:4px solid var(--bleu); }
.muni-event-card.severity-mineur { border-left-color:var(--pos); }
.muni-event-card.severity-majeur { border-left-color:#d97706; }
.muni-event-card.severity-critique { border-left-color:var(--rouge); }
.muni-event-head { display:flex; gap:12px; align-items:flex-start; }
.muni-event-icon { font-size:22px; line-height:1.2; }
.muni-event-choices { display:flex; flex-wrap:wrap; gap:8px; }
.muni-governance-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:10px; }
.muni-debt-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.muni-debt-actions { display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.muni-debt-input { padding:8px 10px; border:1px solid var(--border); border-radius:9px; background:var(--bg); color:var(--text); font:inherit; font-size:13px; min-width:220px; }
.muni-rank-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.muni-rank-row { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px dashed var(--border); }
.muni-rank-row:last-child { border-bottom:0; }
.muni-rank-pos { display:grid; place-items:center; min-width:22px; height:22px; border-radius:7px; background:rgba(0,85,164,.1); color:var(--bleu); font-weight:800; font-size:12px; }
.muni-rank-city { flex:1; min-width:0; display:flex; flex-direction:column; }
.muni-rank-city small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.muni-rank-val { font-weight:800; color:var(--bleu); }
.muni-grant-row { display:flex; gap:8px; margin-top:8px; }
@media (max-width:720px) { .muni-governance-grid, .muni-rank-grid { grid-template-columns:1fr; } }

/* ============ 3.47.0 — Carte OpenStreetMap (Leaflet vendorisé) ============ */
.muni-osm-map { position:relative; z-index:0; height:320px; border-radius:12px; overflow:hidden; border:1px solid var(--border); background:#dfe7ef; }
.muni-osm-map-sm { height:230px; }
.muni-osm-map .leaflet-container { height:100%; width:100%; background:#dfe7ef; font:inherit; }
.muni-osm-marker-wrap { background:transparent; border:0; }
.muni-osm-marker { display:grid; place-items:center; width:30px; height:30px; background:#fff; border:2px solid var(--bleu); border-radius:10px; box-shadow:0 2px 8px rgba(15,23,42,.28); }
.muni-osm-marker svg { width:20px; height:20px; display:block; }
.muni-osm-marker.townhall { width:34px; height:34px; border-color:#d9a441; background:#fff8e1; }
.muni-osm-marker.townhall svg { width:24px; height:24px; }
.muni-osm-free { display:grid; place-items:center; width:20px; height:20px; border:1.5px dashed var(--muted); border-radius:7px; background:rgba(255,255,255,.75); color:var(--muted); font-weight:800; font-size:13px; }
.muni-city-modal .leaflet-popup { z-index:1300; }
.muni-osm-map .leaflet-popup-content { font-size:13px; line-height:1.4; }
.muni-osm-map .leaflet-control-attribution { font-size:9px; }

/* ============ 3.48.0 — Placement libre des constructions ============ */
.muni-place-panel { border:1.5px dashed var(--bleu); }
.muni-place-actions { display:flex; align-items:center; gap:10px; margin-top:10px; flex-wrap:wrap; }
.muni-osm-marker.ghost { border-style:dashed; border-color:var(--pos); background:#f0fdf4; }

/* ============ 3.48.1 — Effets des choix d'événements municipaux ============ */
.muni-event-choice { display:flex; flex-direction:column; align-items:flex-start; gap:2px; }
.muni-event-effects { font-size:11px; opacity:.85; }

/* ============ 3.52.0 — Effets des choix affichés (événements, gouvernance) ============ */
.ev-pos { color: var(--pos); font-weight:600; }
.ev-neg { color: var(--rouge); font-weight:600; }
.muni-event-effects { display:block; font-size:11px; line-height:1.4; margin-top:2px; }
.muni-gov-effects { list-style:none; margin:4px 0 8px; padding:0; display:flex; flex-direction:column; gap:2px; }
.muni-gov-effects li { font-size:12px; color:var(--text); }
.muni-gov-effects strong { color:var(--bleu); font-weight:700; }
