:root{--bg:#f4f4f2;--panel:#fff;--soft:#e5e5e0;--hover:#eef3fa;--row:#eee;--line:#d3d3ce;--ink:#222;--mute:#80807a;--acc:#3b6fb6;
  --mapbg:#fafaf8;--tag:#ffe9a8;--tagink:#222;--glass:#fffe;--c1:#1b4f9c;--c2:#c8202f;--c3:#16335e;--c4:#e8731f;--c5:#0aa6c9;color-scheme:light}
:root[data-theme="dark"]{--bg:#14161a;--panel:#1d2025;--soft:#2c3038;--hover:#262b34;--row:#2a2e36;--line:#363b45;--ink:#e8e9ec;--mute:#9298a3;--acc:#6b9de0;
  --mapbg:#101216;--tag:#4a3d12;--tagink:#ffe9a8;--glass:#1d2025ee;--c1:#4a82d4;--c2:#e5505d;--c3:#5d7fb8;--c4:#f08a3c;--c5:#2cc0e0;color-scheme:dark}
*{box-sizing:border-box}
body{margin:0;font:14px system-ui,sans-serif;color:var(--ink);background:var(--bg);height:100vh;height:100dvh;display:flex;flex-direction:column}
.sig,.cal-toggle{display:none}
button{font:inherit}
header{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--line)}
h1{margin:0;font-size:17px}h1 small{font-weight:400;color:var(--mute);font-size:12px;margin-left:8px}
.theme{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:14px;padding:4px 10px;cursor:pointer;margin-left:auto}
.tag{font-size:11px;background:var(--tag);color:var(--tagink);padding:3px 8px;border-radius:10px}
.ph{color:var(--mute);font-size:12px}.small{font-size:11px}.box{border:1px dashed var(--line);padding:24px;text-align:center;margin-top:12px}

/* Bandeau */
#scoreboard{display:flex;gap:16px;background:var(--panel);border-bottom:1px solid var(--line);padding:10px 16px}
.summary{flex:0 0 300px}.summary h2{margin:0 0 4px;font-size:15px}.summary p{margin:2px 0}
#parties{flex:1;display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.party{border:1px solid var(--line);border-top:4px solid var(--pc);border-radius:6px;padding:6px 10px;background:var(--panel)}
.party .n{font-size:24px;font-weight:700;line-height:1.1}.party .nm{font-size:12px}.party .pc{display:flex;flex-wrap:wrap;gap:2px 8px;font-size:11px;color:var(--mute)}

/* Recherche */
#searchbar{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--line)}
#search,.filters select{background:var(--panel);color:var(--ink)}
#search{flex:1;max-width:520px;padding:8px 10px;border:1px solid var(--line);border-radius:6px}
.seg{display:flex;align-items:center;gap:6px;margin-left:auto}
.seg button{border:1px solid var(--line);background:var(--panel);padding:5px 10px;border-radius:14px;cursor:pointer}
.seg button{color:var(--ink)}
.seg button.on{background:var(--ink);color:var(--panel);border-color:var(--ink)}

/* Corps */
main{flex:1;position:relative;min-height:0;overflow:hidden}
#map-wrap{position:absolute;inset:0}
#map{position:absolute;inset:0;background:var(--mapbg)}
.mapctl{position:absolute;right:12px;top:60px;z-index:500;display:flex;flex-direction:column;gap:4px}
.mapctl button{color:var(--ink);width:34px;height:34px;border:1px solid var(--line);background:var(--panel);border-radius:6px;cursor:pointer;font-size:16px}
.legend{position:absolute;left:12px;bottom:12px;z-index:500;background:var(--panel)e;border:1px solid var(--line);padding:6px 10px;border-radius:6px;font-size:11px;color:var(--mute);display:flex;gap:10px;flex-wrap:wrap;max-width:70%}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.leaflet-tooltip{font-weight:600}

/* Panneau */
/* Tiroir : glisse par-dessus la carte, à droite */
#panel{position:absolute;top:0;right:0;bottom:0;width:420px;max-width:92vw;z-index:800;background:var(--panel);border-left:1px solid var(--line);box-shadow:-6px 0 24px #0003;overflow:auto;display:flex;flex-direction:column;transition:transform .25s ease}
#panel.closed{transform:translateX(105%);box-shadow:none}
.drawer-handle{position:absolute;top:12px;right:12px;z-index:700;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:8px 12px;border-radius:8px;cursor:pointer;font-weight:600;box-shadow:0 2px 8px #0002;transition:opacity .2s}
.drawer-handle.hide{opacity:0;pointer-events:none}
.x{margin-left:auto;font-size:16px}
.mapctl{transition:right .25s ease}
.drawer-open .mapctl{right:432px}
.drawer-open .drawer-handle{opacity:0;pointer-events:none}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:14px 0 12px}
.tabs button{border:0;background:none;padding:8px 10px;cursor:pointer;color:var(--mute);border-bottom:2px solid transparent}
.tabs button.on{color:var(--ink);border-color:var(--acc);font-weight:600}
.main-tabs{margin:0;padding:0 8px;position:sticky;top:0;background:var(--panel);z-index:2}
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}
.filters select{padding:6px;border:1px solid var(--line);border-radius:6px;flex:1;min-width:130px}
#ridings{list-style:none;margin:0;padding:0}
#ridings li{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--row);cursor:pointer}
#ridings li:hover{background:var(--hover)}
#ridings .nm{flex:1}#ridings .nm span{display:block;font-size:11px;color:var(--mute)}
.star{border:0;background:none;font-size:18px;color:var(--mute);cursor:pointer}
.badge{display:inline-block;border:1px solid var(--ink);border-radius:3px;padding:0 6px;font-size:11px;font-weight:700}
.badge.gain{border-color:#2a8a4a;color:#2a8a4a;margin-left:4px}
.link{border:0;background:none;color:var(--acc);cursor:pointer;padding:12px 14px 0}

/* Détail */
#view-detail{padding:0 16px 16px}
.head{display:flex;gap:12px;align-items:flex-start;margin-top:12px}.head .star{margin-left:auto}
.head>div:nth-child(2){flex:1}
.photo{width:72px;height:88px;border:1px dashed var(--line);display:grid;place-items:center;color:var(--mute);font-size:11px;flex:none}
h2{margin:0 0 4px;font-size:17px}
.resultbar{display:flex;height:12px;border-radius:6px;overflow:hidden;margin:14px 0 4px}.resultbar span{display:block}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center;font-size:11px;color:var(--mute)}
.kpis div{border:1px dashed var(--line);padding:8px 2px}.kpis b{display:block;font-size:18px;color:var(--ink)}
.bar{height:8px;background:var(--soft);border-radius:4px;margin:10px 0}.bar span{display:block;width:35%;height:100%;background:var(--acc);border-radius:4px;opacity:.4}
.promises{list-style:none;padding:0;margin:0}.promises li{padding:10px 0;border-bottom:1px solid var(--row)}
.promises em{display:block;font-size:11px;color:var(--mute);margin-top:2px}
.pill{background:var(--soft);border-radius:10px;padding:1px 8px;font-size:11px;margin-right:4px}
.timeline{border-left:2px solid var(--line);margin-left:6px}
.timeline div{position:relative;padding:0 0 16px 16px}.timeline i{position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--acc)}
.timeline b{margin-right:6px;color:var(--mute);font-weight:500}

.count{padding:6px 12px;border-bottom:1px solid var(--row)}
.kpis small{display:block;font-size:10px;margin-top:2px}
.photo{border-radius:8px;color:#fff;font-size:22px;font-weight:700;border:0}
.warn{margin-top:10px;padding:6px 10px;border-radius:6px;background:var(--tag);color:var(--tagink);font-size:12px}
.results{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}
.results td{padding:3px 4px;border-bottom:1px solid var(--row)}.results td:nth-child(n+3){text-align:right;white-space:nowrap}
.results i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px}
#tab-promesses h3{font-size:13px;margin:16px 0 4px}
.promises b{font-weight:600}.promises .desc{font-size:12px;margin-top:2px}
.promises em a{color:var(--acc)}
.pill.s1{background:#dbe8fb;color:#1d4f91}.pill.s2{background:#d5efdc;color:#1e6b38}.pill.s3{background:#fbeccc;color:#7a5200}.pill.s4{background:#f8d7d7;color:#8a1f1f}
.pill.type{background:none;border:1px solid var(--line);color:var(--mute)}
.note{font-size:12px;color:var(--mute);border-left:3px solid var(--line);padding-left:8px;margin:8px 0}
details{margin-top:14px}details summary{cursor:pointer;font-weight:600;font-size:13px}
.sources{padding-left:16px;font-size:12px}.sources li{margin-bottom:6px}.sources a{color:var(--acc)}
.bar span{opacity:1;background:var(--green,#3f8f5a)}

/* Programme d'un parti */
.party.clickable{cursor:pointer;transition:box-shadow .15s,transform .15s}
.party.clickable:hover{box-shadow:0 2px 10px #0002;transform:translateY(-1px)}
.party.clickable.on{outline:2px solid var(--pc);outline-offset:-1px}
#view-party{padding:12px 16px 16px}
.pchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.pchips button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:14px;padding:4px 12px;cursor:pointer;font-weight:600;border-left:4px solid var(--pc)}
.pchips button.on{background:var(--pc);color:#fff;border-color:var(--pc)}
.phead{border-left:6px solid var(--pc);padding:2px 0 2px 10px;margin-bottom:12px}
#view-party h3{font-size:13px;margin:16px 0 4px}
.filters.inline{padding:10px 0;border:0}
.mini{list-style:none;padding:0;margin:6px 0 0}.mini li{padding:6px 0;border-bottom:1px solid var(--row);cursor:pointer;font-size:13px}
.mini li:hover{background:var(--hover)}.mini .ph{display:block}
.link-btn{display:block;width:100%;margin-top:16px;padding:10px 12px;text-align:left;border:1px solid var(--line);border-left:4px solid var(--pc);border-radius:6px;background:var(--panel);color:var(--ink);cursor:pointer;font-weight:600}
.link-btn:hover{background:var(--hover)}

/* Votes */
.pill.vp{font-weight:600}.pill.vp.pour{background:#d5efdc;color:#1e6b38}.pill.vp.contre{background:#f8d7d7;color:#8a1f1f}
.pill.vp.abstention{background:#fbeccc;color:#7a5200}.pill.vp.absent{background:none;border:1px dashed var(--line);color:var(--mute)}
.pvote{font-size:12px;margin-top:4px}.pvote a,#tab-activite em a{color:var(--acc)}
.box code,.note code{font-size:12px}
#tab-activite .note{margin-top:12px}

/* Catégories de promesses : liseré à gauche, étiquette et pastille des titres */
.pc,.cat,.cath{--cc2:var(--cc)}
:root[data-theme="dark"] :is(.pc,.cat,.cath){--cc2:color-mix(in srgb,var(--cc) 70%,#fff)}
.promises li.pc{border-left:4px solid var(--cc2);padding-left:10px}
.cat{display:inline-block;font-style:normal;font-weight:600;color:var(--ink);background:color-mix(in srgb,var(--cc2) 16%,transparent);border-radius:8px;padding:0 6px}
.cat::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cc2);margin-right:4px;vertical-align:1px}
.cath{display:flex;align-items:center;gap:6px;border-bottom:2px solid var(--cc2);padding-bottom:3px}
.cath i{width:10px;height:10px;border-radius:3px;background:var(--cc2);flex:none}
.cath .ph{font-weight:400}

/* Fil de l'actualité */
#viewbar{margin:0;padding:8px 16px 0;background:var(--panel)}
.news-mode #viewbar{border-bottom:1px solid var(--line);padding-bottom:8px}
.theme.on{background:var(--ink);color:var(--panel);border-color:var(--ink)}
#news{position:absolute;inset:0;z-index:900;overflow:auto;background:var(--bg)}
.news-mode #searchbar{display:none}
.news-wrap{max-width:860px;margin:0 auto;padding:4px 16px 32px}
.news-wrap .link{padding-left:0}
.news-wrap h2{margin-top:10px;font-size:20px}
.news-wrap .filters input[type=search]{flex:2;min-width:180px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}
.nday{font-size:12px;margin:14px 0 4px;color:var(--mute)}.nday::first-letter{text-transform:uppercase}
/* Calendrier */
.news-wrap{max-width:1060px}
.news-cols{display:grid;grid-template-columns:230px minmax(0,1fr);gap:20px;align-items:start}
#news-cal{position:sticky;top:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.cal-head b{display:inline-block;font-size:13px}.cal-head b::first-letter{text-transform:uppercase}
.cal-head button{border:0;background:none;color:var(--ink);font-size:18px;line-height:1;cursor:pointer;padding:2px 8px;border-radius:6px}
.cal-head button:hover:not(:disabled){background:var(--hover)}.cal-head button:disabled{opacity:.25;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.cal-dow{font-size:10px;color:var(--mute);padding:2px 0}
.cal-day{position:relative;border:0;background:none;color:var(--ink);border-radius:6px;padding:7px 0 9px;font-size:12px;cursor:pointer}
.cal-day:hover:not(:disabled){background:var(--hover)}
.cal-day:disabled{color:var(--line);cursor:default}
.cal-day.has{font-weight:700}
.cal-day i,.cal-note i{position:absolute;left:50%;bottom:3px;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--acc)}
.cal-note i{position:static;display:inline-block;transform:none;vertical-align:1px}
.cal-day.today{box-shadow:inset 0 0 0 1px var(--acc)}
.cal-day.on{background:var(--ink);color:var(--panel)}.cal-day.on i{background:var(--panel)}
.cal-note{font-size:11px;color:var(--mute);margin:8px 0 0;line-height:1.5}
.cal-auj{margin-top:8px;width:100%;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:14px;padding:4px;cursor:pointer}
.day-nav{display:flex;align-items:center;gap:8px;margin:0 0 8px}
.day-nav h3{flex:1;text-align:center;margin:0;font-size:14px}.day-nav h3::first-letter{text-transform:uppercase}
.day-nav button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:14px;padding:4px 10px;cursor:pointer;min-width:72px;font-size:12px}
.day-nav button:disabled{opacity:.35;cursor:default}
/* Point d'actualité en liste compacte */
.actus li.actu{padding:7px 8px;margin:0 -8px;border-radius:6px;cursor:pointer}
.actus li.actu:hover{background:var(--hover)}
.actus li.actu:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.ahead{display:flex;gap:8px;align-items:baseline;font-size:13px}
.atype{flex:none;width:76px;font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--mute)}
.atitre{font-weight:600}
.ameta{margin:3px 0 0 84px;font-size:11px;color:var(--mute);display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.ameta .pchip{max-width:230px;padding:1px 7px}
.adrawer{display:none;margin:6px 0 2px 84px;padding:6px 0 0 10px;border-left:2px solid var(--line)}
.actu.open .adrawer{display:block}
.adrawer .desc{margin:0 0 4px;color:var(--ink)}
.asrc{list-style:none;margin:0;padding:0;font-size:11px}.asrc li{padding:1px 0}.asrc a{color:var(--acc)}
#tab-mandat .atype{width:64px}#tab-mandat .adrawer,#tab-mandat .ameta{margin-left:72px}
@media(max-width:760px){.news-cols{grid-template-columns:1fr}#news-cal{position:static}.atype{width:auto}.adrawer,.ameta{margin-left:0}}
.news-wrap .actus{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:0 12px}
.news-wrap .actus li:last-child{border-bottom:0}
.actus li.actu b{font-weight:600}
.pchip-l{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.pchip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;border:1px solid var(--line);border-left:4px solid var(--cc);border-radius:6px;background:var(--panel);color:var(--ink);padding:2px 8px;cursor:pointer;text-align:left}
.pchip:hover{background:var(--hover)}
.pnews{font-size:12px;margin-top:4px}.pnews a{color:var(--acc)}
#tab-mandat h3{font-size:13px;margin:18px 0 4px}
@keyframes flash{0%,40%{background:var(--tag)}100%{background:transparent}}
.flash{animation:flash 1.8s ease}

@media(max-width:1000px){.drawer-open .mapctl{right:12px}#parties{grid-template-columns:repeat(3,1fr)}#scoreboard{flex-direction:column}}

/* Téléphone (700 px et moins) : la version ordinateur n'est pas touchée */
@media(max-width:700px){
  header{flex-wrap:wrap;gap:4px 10px;padding:6px 12px}
  h1{font-size:16px;flex:1;min-width:0}h1 small{display:block;margin:0;font-size:11px}
  .theme{margin-left:0;padding:4px 9px}.theme .lbl{display:none}
  #datatag{order:3;flex-basis:100%;width:max-content;max-width:100%;font-size:10px;padding:2px 8px;justify-self:start}
  /* Bandeau : résumé court, partis sur une ligne qui défile de côté */
  #scoreboard{flex-direction:column;gap:6px;padding:6px 12px}
  .summary{flex:none}.summary h2{display:none}.summary p{font-size:11px;margin:0}
  #parties{display:flex;overflow-x:auto;gap:6px;padding-bottom:2px;scrollbar-width:none}
  #parties::-webkit-scrollbar{display:none}
  .party{flex:0 0 auto;min-width:72px;padding:3px 8px;border-top-width:3px}
  .party .n{font-size:18px;display:flex;align-items:baseline;gap:5px}
  .party .sig{display:inline;font-size:12px;font-weight:600;color:var(--mute)}
  .party .nm,.party .pc{display:none}
  /* Choix de page, recherche et coloration */
  #viewbar{padding:6px 12px 0}
  #searchbar{flex-wrap:wrap;gap:6px;padding:6px 12px}
  #search{flex:1 1 100%;max-width:none;padding:7px 9px}
  .seg{margin-left:0}.seg button{padding:4px 9px;font-size:12px}
  /* La carte prend tout l'espace restant */
  main{min-height:46vh}
  .mapctl{top:56px;right:10px}.mapctl button{width:32px;height:32px}
  .legend{left:8px;bottom:8px;max-width:calc(100% - 16px);gap:6px;padding:4px 8px;font-size:10px}
  .drawer-handle{top:8px;right:10px;padding:6px 10px}
  /* Tiroir : panneau qui monte du bas, sur toute la largeur */
  #panel{top:auto;left:0;right:0;width:100%;max-width:none;height:74%;border-left:0;border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -6px 24px #0003}
  #panel.closed{transform:translateY(105%)}
  #panel::before{content:"";display:block;flex:none;width:40px;height:4px;border-radius:2px;background:var(--line);margin:6px auto 0}
  .drawer-open .mapctl{right:10px}
  .drawer-open .legend{display:none}
  #panel>*{flex:none}   /* le panneau est plus court : rien ne doit s'y écraser */
  .main-tabs{overflow-x:auto;white-space:nowrap}.main-tabs button{padding:8px 8px}
  #view-detail,#view-party{padding-left:12px;padding-right:12px}
  .kpis b{font-size:16px}
  /* Actualités */
  .news-cols{grid-template-columns:minmax(0,1fr);gap:10px}
  #news-cal{padding:0;border:0;background:none}
  .cal-toggle{display:block;width:100%;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:8px;cursor:pointer;font-weight:600}
  #news-cal.open{padding:10px;border:1px solid var(--line);background:var(--panel)}
  #news-cal.open .cal-toggle{margin-bottom:8px}
  #news-cal:not(.open)>:not(.cal-toggle){display:none}
  .news-wrap{padding:4px 12px 24px}.news-wrap h2{font-size:18px}
  .news-wrap .filters input[type=search]{flex-basis:100%}
  .day-nav button{min-width:56px;padding:4px 8px}.day-nav h3{font-size:13px}
  .ameta .pchip{max-width:100%}
}
