
*,*::before,*::after{box-sizing:border-box}
:root{color-scheme:light;
 --surface:#fcfcfb;--plane:#f9f9f7;--ink:#0b0b0b;--ink2:#52514e;--muted:#898781;
 --grid:#e1e0d9;--axis:#c3c2b7;--ring:rgba(11,11,11,.10);
 --good:#0ca30c;--warn:#fab219;--serious:#ec835a;--crit:#d03b3b;--blue:#2a78d6;--chip:#f0efec;}
@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){color-scheme:dark;
 --surface:#1a1a19;--plane:#0d0d0d;--ink:#fff;--ink2:#c3c2b7;--muted:#898781;
 --grid:#2c2c2a;--axis:#383835;--ring:rgba(255,255,255,.10);--chip:#26261f;--blue:#3987e5;}}
:root[data-theme=dark]{color-scheme:dark;
 --surface:#1a1a19;--plane:#0d0d0d;--ink:#fff;--ink2:#c3c2b7;--muted:#898781;
 --grid:#2c2c2a;--axis:#383835;--ring:rgba(255,255,255,.10);--chip:#26261f;--blue:#3987e5;}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--plane);color:var(--ink);
 font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;overflow-wrap:break-word}
a{color:var(--blue)}
.wrap{max-width:1420px;margin:0 auto;padding:22px 18px 80px}
.site-head{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline;
 border-bottom:1px solid var(--grid);padding-bottom:14px;margin-bottom:20px}
.site-head .brand{font-weight:700;font-size:18px;letter-spacing:-.01em;text-decoration:none;color:var(--ink)}
.site-head .brand span{color:var(--blue)}
.site-head nav{margin-left:auto;display:flex;gap:16px;font-size:13.5px}
.site-head nav a{color:var(--ink2);text-decoration:none}
.site-head nav a:hover{color:var(--ink)}
h1{font-size:25px;margin:0 0 6px;letter-spacing:-.01em}
.lead{color:var(--ink2);font-size:14px;margin:0 0 4px;max-width:78ch}
.kpis{display:flex;flex-wrap:wrap;gap:9px;margin:16px 0 0}
.kpi{background:var(--surface);border:1px solid var(--ring);border-radius:10px;padding:9px 13px;min-width:96px;flex:1 1 auto}
.kpi .n{font-size:21px;font-weight:650;line-height:1.1}
.kpi .l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
h2{font-size:17px;margin:30px 0 10px;letter-spacing:-.005em}
h2 .hint{font-weight:400;font-size:13px;color:var(--muted);margin-left:8px}
.panel{background:var(--surface);border:1px solid var(--ring);border-radius:12px;padding:14px}
/* carte */
.hero{background:var(--surface);border:1px solid var(--ring);border-radius:14px;padding:12px 14px 10px}
.hero-head{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin-bottom:6px}
.hero-head h2{margin:0;font-size:16px}
.modes{margin-left:auto;display:flex;border:1px solid var(--axis);border-radius:8px;overflow:hidden}
.modes button{font:inherit;font-size:12.5px;cursor:pointer;border:0;background:var(--surface);color:var(--ink2);padding:6px 12px}
.modes button[aria-pressed=true]{background:var(--blue);color:#fff}
.mapbox{position:relative;width:100%}
svg.world{display:block;width:100%;height:auto;overflow:visible}
svg.world path.c{stroke:var(--surface);stroke-width:.5;stroke-linejoin:round;transition:opacity .12s}
svg.world path.hit,svg.world circle.hit{cursor:pointer}
svg.world path.hit:hover{stroke:var(--ink);stroke-width:1.1}
svg.world circle.mk{stroke:var(--surface);stroke-width:1}
svg.world circle.hit:hover{stroke:var(--ink);stroke-width:1.5}
svg.world .off{opacity:.16}
.tip{position:absolute;pointer-events:none;z-index:9;background:var(--surface);color:var(--ink);
 border:1px solid var(--axis);border-radius:9px;padding:8px 11px;font-size:12.5px;
 box-shadow:0 4px 16px rgba(0,0,0,.20);max-width:260px;opacity:0;transition:opacity .1s}
.tip.on{opacity:1}
.tip .t{font-weight:650;margin-bottom:3px}
.tip .l{color:var(--muted);font-size:11.5px}
.maplegend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--ink2);margin-top:4px;padding-top:8px;border-top:1px solid var(--grid)}
.maplegend span{display:inline-flex;align-items:center;gap:6px}
.maplegend i{width:13px;height:13px;border-radius:3px;display:inline-block;border:1px solid var(--ring)}
/* filtres */
.prio-row{display:flex;flex-wrap:wrap;gap:9px;align-items:center}
.pbtn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;
 border:1.5px solid var(--axis);background:var(--surface);color:var(--ink);border-radius:999px;
 padding:8px 15px;font-size:14px;font-weight:550}
.pbtn .dot{width:11px;height:11px;border-radius:50%}
.pbtn[aria-pressed=true]{border-color:currentColor;box-shadow:inset 0 0 0 1px currentColor}
.pbtn.p-prio[aria-pressed=true]{color:var(--good)}.pbtn.p-prio .dot{background:var(--good)}
.pbtn.p-neut[aria-pressed=true]{color:#8a6100}.pbtn.p-neut .dot{background:var(--warn)}
.pbtn.p-non[aria-pressed=true]{color:var(--crit)}.pbtn.p-non .dot{background:var(--crit)}
.pbtn.p-so[aria-pressed=true]{color:var(--blue)}.pbtn.p-so .dot{background:var(--blue)}
.count{margin-left:auto;font-size:13.5px;color:var(--ink2);font-variant-numeric:tabular-nums}
.count b{color:var(--ink);font-size:16px}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px;padding-top:13px;border-top:1px solid var(--grid)}
select,input[type=search]{font:inherit;font-size:13.5px;color:var(--ink);background:var(--surface);
 border:1px solid var(--axis);border-radius:8px;padding:7px 10px;max-width:100%}
input[type=search]{flex:1 1 220px}
.btn{font:inherit;font-size:13.5px;cursor:pointer;background:var(--chip);color:var(--ink);
 border:1px solid var(--axis);border-radius:8px;padding:7px 12px}
/* tableau */
.tblwrap{overflow-x:auto;border:1px solid var(--ring);border-radius:12px;background:var(--surface);-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-size:13px;min-width:1060px}
th,td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--grid);vertical-align:top}
th{position:sticky;top:0;background:var(--surface);z-index:1;cursor:pointer;white-space:nowrap;
 font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
th:hover{color:var(--ink)}
th .ar{opacity:.4;font-size:9px}
/* ligne dépliable expliquant les colonnes */
.colhelp{margin:14px 0 0;border:1px solid var(--ring);border-radius:10px;background:var(--surface);overflow:hidden}
.colhelp>summary{cursor:pointer;list-style:none;padding:11px 14px;font-size:13.5px;font-weight:550;
 color:var(--ink2);display:flex;align-items:center;gap:8px}
.colhelp>summary::-webkit-details-marker{display:none}
.colhelp>summary::before{content:"▸";color:var(--blue);font-size:12px;transition:transform .15s}
.colhelp[open]>summary::before{transform:rotate(90deg)}
.colhelp>summary:hover{color:var(--ink)}
.colhelp .cols{padding:2px 14px 14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px 22px;
 border-top:1px solid var(--grid)}
.colhelp dt{font-weight:650;font-size:13px;margin-top:10px}
.colhelp dd{margin:2px 0 0;font-size:12.5px;color:var(--ink2);line-height:1.5}
tbody tr{cursor:pointer}tbody tr:hover{background:var(--chip)}
td.n{font-variant-numeric:tabular-nums;text-align:right}
td a.rowlink{color:inherit;text-decoration:none;font-weight:600}
td a.rowlink:hover{color:var(--blue)}
.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid transparent}
.b-prio{background:rgba(12,163,12,.13);color:#046904;border-color:rgba(12,163,12,.35)}
.b-neut{background:rgba(250,178,25,.16);color:#7a5600;border-color:rgba(250,178,25,.45)}
.b-non{background:rgba(208,59,59,.13);color:#98201f;border-color:rgba(208,59,59,.35)}
.b-so{background:rgba(42,120,214,.12);color:#1c5cab;border-color:rgba(42,120,214,.35)}
.b-ind{background:var(--chip);color:var(--ink2);border-color:var(--axis)}
:root[data-theme=dark] .b-prio{color:#5cd85c}:root[data-theme=dark] .b-neut{color:#fdd37a}
:root[data-theme=dark] .b-non{color:#f08a8a}:root[data-theme=dark] .b-so{color:#86b6ef}
.feu{display:inline-flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap}
.feu .d{width:9px;height:9px;border-radius:50%}
.f-vert .d{background:var(--good)}.f-orange .d{background:var(--serious)}.f-rouge .d{background:var(--crit)}
.conf-faible{color:var(--crit);font-weight:600}
.empty{padding:26px;text-align:center;color:var(--muted)}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--ink2);margin-top:10px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:10px;height:10px;border-radius:50%;display:inline-block}
/* page pays */
.pheader{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:6px 0 4px}
.pheader h1{margin:0}
.pheader .iso{color:var(--muted);font-size:15px;font-weight:500}
.pheader .sc{margin-left:auto;text-align:right}
.pheader .sc .v{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.pheader .sc .l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.just{background:var(--chip);border-radius:9px;padding:12px 14px;margin:12px 0;font-size:14px}
.metagrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px;margin:14px 0}
.mcell{background:var(--surface);border:1px solid var(--ring);border-radius:9px;padding:9px 11px}
.mcell .l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.mcell .v{font-size:14px;font-weight:600;margin-top:3px}
.pn{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
.pn .card{background:var(--surface);border:1px solid var(--ring);border-radius:10px;padding:12px 14px}
.pn h3{margin:0 0 7px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.pn.pos h3{color:#046904}.pn.neg h3{color:#98201f}
.pn ul{margin:0;padding-left:17px}.pn li{margin-bottom:5px;font-size:13.5px}
.bloc{background:var(--surface);border:1px solid var(--ring);border-radius:12px;padding:4px 16px 14px;margin:12px 0}
.bloc h2{font-size:15px;margin:14px 0 4px;border-bottom:1px solid var(--grid);padding-bottom:8px}
.row{display:grid;grid-template-columns:230px 1fr;gap:14px;padding:8px 0;font-size:13.5px;border-bottom:1px dotted var(--grid)}
.row:last-child{border-bottom:0}
.row>.lab{color:var(--muted);font-size:12px}
.val{font-weight:600;margin-right:6px}
.det{color:var(--ink2);display:block;margin-top:2px}
.kv{display:block;margin-top:2px;color:var(--ink2);font-size:12.5px}
.kv b{color:var(--muted);font-weight:600}
ul.sub{margin:3px 0 0;padding-left:16px}
.sref{display:inline-block;background:var(--chip);border:1px solid var(--axis);border-radius:5px;
 padding:0 4px;margin:0 2px;font-size:10.5px;color:var(--ink2);text-decoration:none;font-variant-numeric:tabular-nums}
.sref:hover{background:var(--blue);color:#fff;border-color:var(--blue)}
.srcs{margin-top:20px}
.srcs h2{font-size:15px}
.srcs ol{font-size:12.5px;color:var(--ink2);padding-left:24px}
.srcs li{margin-bottom:7px;scroll-margin-top:12px}
.srcs li:target{background:rgba(250,178,25,.22);border-radius:5px}
.srcs a{word-break:break-word}
.niv{display:inline-block;border-radius:4px;padding:0 5px;font-size:10px;font-weight:650;margin-right:5px}
.n-primaire{background:rgba(12,163,12,.16);color:#046904}
.n-juridique{background:rgba(42,120,214,.15);color:#1c5cab}
.n-institutionnel{background:rgba(250,178,25,.18);color:#7a5600}
.n-presse{background:var(--chip);color:var(--muted)}
:root[data-theme=dark] .n-primaire{color:#5cd85c}:root[data-theme=dark] .n-juridique{color:#86b6ef}
:root[data-theme=dark] .n-institutionnel{color:#fdd37a}
.pnav{display:flex;justify-content:space-between;gap:10px;margin-top:26px;font-size:13.5px}
.pnav a{text-decoration:none;color:var(--ink2);background:var(--surface);border:1px solid var(--ring);
 border-radius:9px;padding:9px 13px;max-width:46%}
.pnav a:hover{color:var(--ink)}
.pnav a b{color:var(--ink);display:block}
.note{background:var(--surface);border:1px solid var(--ring);border-left:3px solid var(--warn);
 border-radius:10px;padding:14px 16px;font-size:13.5px;color:var(--ink2)}
.note h2{margin:0 0 8px;font-size:15px;color:var(--ink);border:0;padding:0}
.note ul{margin:6px 0;padding-left:19px}
.foot{margin-top:40px;padding-top:16px;border-top:1px solid var(--grid);font-size:12px;color:var(--muted)}
.themetog{position:fixed;right:14px;bottom:14px;z-index:20;border-radius:999px;padding:8px 13px;
 background:var(--surface);border:1px solid var(--axis);color:var(--ink);cursor:pointer;font:inherit;
 font-size:12.5px;box-shadow:0 2px 10px rgba(0,0,0,.14)}
/* page de garde (mot de passe) */
#gate{position:fixed;inset:0;z-index:9999;background:var(--plane);display:flex;
 align-items:center;justify-content:center;padding:20px}
#gate form{background:var(--surface);border:1px solid var(--ring);border-radius:14px;
 padding:26px 24px;max-width:340px;width:100%;box-shadow:0 8px 40px rgba(0,0,0,.18);text-align:center}
#gate .gt{font-weight:650;font-size:17px;margin-bottom:4px}
#gate .gs{color:var(--muted);font-size:13px;margin-bottom:16px}
#gate input{width:100%;font:inherit;font-size:16px;text-align:center;letter-spacing:.15em;
 border:1px solid var(--axis);border-radius:9px;padding:11px;background:var(--plane);color:var(--ink)}
#gate button{width:100%;margin-top:11px;font:inherit;font-size:15px;font-weight:600;cursor:pointer;
 border:0;border-radius:9px;padding:11px;background:var(--blue);color:#fff}
#gate .ge{color:var(--crit);font-size:12.5px;min-height:16px;margin-top:9px}
/* ─── responsive : le tableau devient des cartes empilees ─── */
@media (max-width:720px){
 .wrap{padding:16px 12px 70px}
 h1{font-size:21px}
 .site-head nav{width:100%;margin-left:0}
 .pheader .sc{margin-left:0;text-align:left}
 .pn{grid-template-columns:1fr}
 .row{grid-template-columns:1fr;gap:2px;padding:7px 0}
 .row>.lab{font-size:11.5px;text-transform:uppercase;letter-spacing:.03em}
 table,thead,tbody,th,td,tr{display:block}
 table{min-width:0}
 thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 tbody tr{border:1px solid var(--ring);border-radius:11px;margin-bottom:10px;padding:6px 12px 10px;background:var(--surface)}
 tbody td{border:0;border-bottom:1px solid var(--grid);padding:6px 0;display:flex;justify-content:space-between;gap:12px;text-align:right}
 tbody td:last-child{border-bottom:0}
 tbody td::before{content:attr(data-l);color:var(--muted);font-size:11px;text-transform:uppercase;
  letter-spacing:.03em;text-align:left;font-weight:600;flex:0 0 42%}
 td.n{text-align:right}
 td a.rowlink{font-size:15px}
}
