:root{color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html{scroll-padding-top:env(safe-area-inset-top,0px)}body{margin:0;padding:0;font:14px -apple-system,BlinkMacSystemFont,sans-serif;background:#fff;color:#000}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}

/* Carte pleine largeur à gauche, panneau de lecture à droite; dégradé du jaune pâle au rouge occitan */
:root{
  --bg:#f6f1e7; --panel:#ffffff; --fg:#17284a; --muted:#5f6b85; --line:#e2d8c3;
  --bleu:#1f3a70; --rouge:#a3182b; --or:#e0a82e;
  --lo:#fbeec4; --hi:#a3182b; --on-hi:#ffffff; --none:#ece6df; --stroke:#ffffff; --accent:#1f3a70;
  --display:"Bricolage Grotesque","Trebuchet MS",sans-serif; --body:"Source Sans 3","Segoe UI",sans-serif;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font-family:var(--body);font-size:16px;line-height:1.45;
  padding-block:20px 32px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
header{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between}
h1{font-family:var(--display);font-size:clamp(26px,4vw,38px);line-height:1.1;margin:0;text-wrap:balance}
h1.totaux{display:flex;flex-wrap:wrap;gap:4px 14px}
h1.totaux b{color:#2a7a3b}
/* Laisser la place à « Bonjour … / Se déconnecter » (fixé en haut à droite) : les bandeaux passent dessous */
.entete{padding-top:52px}
.sub{color:var(--muted);margin:4px 0 0}
.syncstate{margin:2px 0 0;font-size:13px;color:var(--muted);min-height:1.2em}
.syncstate.ok{color:#2a7a3b}.syncstate.err{color:#c0152f;font-weight:600}
.file{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.btn{font:600 15px var(--body);background:var(--accent);color:var(--on-hi);border:0;border-radius:6px;padding:10px 16px;cursor:pointer}
.btn:focus-visible,.row:focus-visible,path:focus-visible{outline:3px solid var(--fg);outline-offset:2px}
.note{font-size:13px;color:var(--muted)}
main{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px;align-items:start}
@media(max-width:820px){main{grid-template-columns:minmax(0,1fr)}}
.mapbox{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;width:85%;margin:0 auto}
svg{display:block;width:100%;height:auto}
path.dep{stroke:var(--stroke);stroke-width:2;stroke-linejoin:round;cursor:pointer;transition:filter .15s}
path.dep:hover,path.dep.sel{filter:brightness(.88);stroke:var(--fg);stroke-width:2.5}
text{font-family:var(--body);pointer-events:none;fill:var(--fg)}
text.n{font-family:var(--display);font-weight:700;font-size:30px;text-anchor:middle;font-variant-numeric:tabular-nums}
text.d{font-size:13px;font-weight:600;text-anchor:middle}
#map text{fill:#1f1a17} /* couleurs de la carte claires dans les deux thèmes */
aside{display:flex;flex-direction:column;gap:16px;min-width:0}
.total{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.total b{font-family:var(--display);font-size:40px;line-height:1;font-variant-numeric:tabular-nums}
.total span{font-family:var(--display);font-weight:700;font-size:32px;line-height:1;color:var(--fg)}
.list{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px 0;margin:0;list-style:none}
.row{display:grid;grid-template-columns:minmax(0,1fr) 3.5ch;gap:4px 12px;padding:8px 16px;cursor:pointer}
.row:hover,.row.sel{background:color-mix(in oklab,var(--accent) 10%,var(--panel))}
.row .nm{font-weight:600;overflow-wrap:anywhere}
.pastille{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:8px;vertical-align:-1px}
.row .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.row .track{grid-column:1/-1;height:5px;background:var(--none);border-radius:3px;overflow:hidden}
.row .fill{height:100%;background:var(--accent);border-radius:3px}
.detail{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.detail h2{font-family:var(--display);font-size:19px;margin:0 0 6px}
.detail ul{margin:0;padding:0;list-style:none}
.detail li{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border-top:1px solid var(--line)}
.detail li:first-child{border-top:0}
.detail .muted{color:var(--muted);margin:0}
#msg{color:var(--accent);font-size:14px;min-height:1.2em}
#msg.ok{color:#2a7a3b;font-weight:600}

.btn.ghost{background:transparent;color:var(--fg);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--muted)}
.edit{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}
.edit h2{font-family:var(--display);font-size:22px;margin:0}
.edhead{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;align-items:flex-end}
.actions{display:flex;flex-wrap:wrap;gap:8px}
.filterbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-weight:600}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
table{width:100%;border-collapse:collapse;min-width:640px}
th{text-align:left;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:8px 10px;background:color-mix(in oklab,var(--fg) 4%,var(--panel));border-bottom:1px solid var(--line)}
th.num{text-align:right}
td{padding:4px 6px;border-top:1px solid var(--line)}
tbody tr:first-child td{border-top:0}
td input,td select{width:100%;font:16px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;min-width:0}
td input.num{text-align:right;font-variant-numeric:tabular-nums;max-width:130px;margin-left:auto;display:block}
td input:focus,td select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
td.x{width:56px;text-align:center;white-space:nowrap}
.del,.addly{background:transparent;border:0;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:8px;border-radius:6px}
.del:hover,.addly:hover{color:var(--accent)}
.addly{font-weight:700}
tr.cont .city{color:var(--muted);border-style:dashed}
.del:focus-visible,.addly:focus-visible{outline:2px solid var(--fg)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.empty td{padding:18px 10px;color:var(--muted)}

.lybtn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:130px;font:600 15px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;cursor:pointer}
.lybtn[aria-expanded="true"]{border-color:var(--accent);color:var(--accent)}
.lybtn:focus-visible,.ldel:focus-visible,.ladd:focus-visible{outline:2px solid var(--fg);outline-offset:1px}
.sumv{display:block;text-align:right;font-weight:600;font-variant-numeric:tabular-nums;padding:8px 10px}
tr.sub td{padding:0 6px 10px 6px;border-top:0;background:color-mix(in oklab,var(--accent) 5%,var(--panel))}
.lyc{display:flex;flex-direction:column;gap:6px;padding:10px 10px 10px 18px;border-left:3px solid var(--accent);margin-left:6px}
.lyct{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.lrow{display:flex;gap:8px;align-items:center}
.lrow .lname{flex:1;min-width:0}
.lrow .lnum{width:110px;text-align:right;font-variant-numeric:tabular-nums}
.lrow input{font:16px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px}
.lrow input:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.ldel{background:transparent;border:0;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:8px;border-radius:6px}
.ldel:hover{color:var(--accent)}
.ladd{align-self:flex-start;padding:8px 12px}

.row .meta{grid-column:1/-1;font-size:13px;color:var(--muted);margin-top:-4px}
dialog#addDlg{width:min(780px,94vw)}
.addcard{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;flex:none}
.fld{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:14px;min-width:0}
.fld input,.fld select,.fld textarea{font:16px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px 12px;width:100%;min-width:0}
.fld textarea{resize:vertical;min-height:64px}
.statuts{display:flex;flex-wrap:wrap;gap:6px;font-weight:400}
.statuts label{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:var(--bg);cursor:pointer;font-size:15px}
.statuts label:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg));font-weight:600}
.statuts input{width:auto;margin:0;padding:0;border:0;accent-color:var(--accent)}
.addcard .full{grid-column:1/-1}
.dgrp{display:grid;grid-template-columns:.8fr 1.5fr 1fr;gap:8px}
.dgrp select{padding:10px 8px}
dialog#listDlg{width:min(1240px,96vw)}
dialog#logsDlg{width:min(1100px,96vw)}
.logs{width:100%;border-collapse:collapse;font-size:14px}
.logs th,.logs td{text-align:left;vertical-align:top;padding:8px 10px;border-bottom:1px solid var(--line)}
.logs th{position:sticky;top:0;background:var(--panel);font-weight:600}
.logs td.quand{white-space:nowrap;color:var(--muted)}
.logs td.qui{white-space:nowrap}
.logs .act{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--bg);border:1px solid var(--line)}
.logs .act.plus{color:#2a7a3b;border-color:#9fd0aa}.logs .act.moins{color:#c0152f;border-color:#eba3ae}.logs .act.modif{color:#8a5a00;border-color:#e8c766}
.logs .det{margin-top:2px;color:var(--muted);font-size:13px}
.logs del{color:#c0152f;text-decoration:line-through}.logs ins{color:#2a7a3b;text-decoration:none;font-weight:600}
.logsplus{display:flex;justify-content:center;padding:14px}
.logsact{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.logsact[hidden],.btn[hidden]{display:none}
.btn.danger{color:#c0152f;border-color:#eba3ae}
.btn.danger:hover{background:#fbe9ec}
.detailgroupe{margin-top:6px}
.detailgroupe summary{cursor:pointer;color:var(--accent);font-size:13px;font-weight:600}
.detailgroupe ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px;max-height:420px;overflow:auto}
.detailgroupe li{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg)}
.logs td.voircol{text-align:right;white-space:nowrap;vertical-align:middle}
.logs .voir{color:#1f6b33;border-color:#9fd0aa}
/* Élément ouvert depuis « Voir » dans les Logs : surligné en vert */
.vu,tr.vu>td{background:#d3f3db!important;color:#10361c!important}
tr.vu>td:first-child{box-shadow:inset 4px 0 0 #2a7a3b}
.vu:not(tr){border-radius:6px;box-shadow:0 0 0 3px #2a7a3b}
tr.vu input{background:#ecfbef!important;color:#10361c!important}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.fld select:disabled{opacity:.6}
.addact{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
#addMsg{color:var(--accent);font-size:14px}
@media(max-width:560px){.addcard{grid-template-columns:1fr}}
.listbar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:12px 20px;background:var(--panel);border-bottom:1px solid var(--line);flex:none}
.listbar input,.listbar select{font:16px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:9px 12px;min-width:0}
.listbar input{flex:1 1 220px}
.listbar[hidden]{display:none}
#listBody tbody tr[data-i]{cursor:pointer}
#listBody tbody tr[data-i]:hover td{background:color-mix(in oklab,var(--accent) 10%,var(--panel))}
.a-medit{margin-right:6px}
.req{color:var(--accent);font-weight:700}
.rejet{color:#d00000 !important;font-weight:700}
.contrat{color:#a87400 !important;font-weight:700}
button.eye{display:inline-flex;align-items:center;justify-content:center;width:34px;height:30px;padding:0;margin-right:4px;vertical-align:middle;background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:6px;cursor:pointer}
button.eye:hover,button.eye:focus-visible{color:var(--fg);border-color:var(--accent)}
button.eye svg{width:18px;height:18px;pointer-events:none}
.cbtns{display:flex;align-items:center;gap:6px;margin-top:6px}
.cbtns .eye{margin:0}
.dright{display:flex;align-items:center;gap:10px}
.dright .eye{margin:0}
.cname{display:flex;align-items:center;gap:6px}
.cname>*:not(.eye){flex:1 1 auto;min-width:0}
.cname .eye{flex:none;margin:0}
.adhdep td.x{min-width:84px}
.chcard{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;flex:none}
.chcard h3{margin:0 0 2px;font-family:var(--display);font-size:18px}
.chcard .chsub{margin:0 0 10px;color:var(--muted);font-size:13px}
.chtop{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;margin-bottom:6px}
.chtop select{font:15px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px}
.chscroll{overflow-x:auto;padding-bottom:4px}
.chscroll svg{display:block;max-width:none}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .axis{stroke:var(--muted);stroke-width:1}
.chart .tick{fill:var(--muted);font:12px var(--body)}
.chart .lab{fill:var(--fg);font:12px var(--body)}
.chart .val{fill:var(--fg);font:600 12px var(--body)}
.chart .ccurve{fill:none;stroke:var(--accent);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.chart .carea{fill:var(--accent);opacity:.12}
.chart .cdot{fill:var(--panel);stroke:var(--accent);stroke-width:2.5}
.chart .cdot:hover{fill:var(--or)}
.chempty{color:var(--muted);margin:10px 0 0}
#viewNote{margin:0 0 10px;color:var(--muted);font-size:13px}
#xMsg{color:var(--accent);font-size:14px}
#adhFCount{color:var(--muted);font-size:13px}
.listbar input:focus,.listbar select:focus{outline:2px solid var(--accent);border-color:var(--accent)}
#listMsg{color:var(--accent);font-size:13px}
dialog#confDlg{width:min(480px,92vw);padding:0;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--fg)}
dialog#confDlg::backdrop{background:rgba(20,12,10,.65)}
.confbox{padding:20px;display:flex;flex-direction:column;gap:12px}
.confbox h2{font-family:var(--display);font-size:21px;margin:0}
.confbox p{margin:0;line-height:1.5}
.confact{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:6px}
.btn.danger{background:#b3261e;color:#fff}
.adhdep input.ro-in{cursor:default;caret-color:transparent}
.adhdep input.ro-in:focus{outline:none;border-color:var(--line)}
.adhdep .ro{display:block;padding:6px 4px}
.adhdep .ro.rcity{font-weight:600}
.adhdep .ro.muted{color:var(--muted)}
.adhdep td.v .ro{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.btns{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
dialog#retrDlg,dialog#resilDlg,dialog#rejetDlg,dialog#contrDlg{width:min(1000px,96vw)}
dialog#retrDlg,dialog#resilDlg,dialog#rejetDlg,dialog#contrDlg,dialog#adhDlg,dialog#addDlg,dialog#listDlg,dialog#editDlg,dialog#viewDlg,dialog#chDlg,dialog#importDlg,dialog#ctrlDlg,dialog#ctrlErrDlg,dialog#ctrlMajDlg,dialog#ctrlConnDlg{width:min(940px,94vw);max-height:88vh;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--fg);overflow:hidden}
dialog#retrDlg[open],dialog#resilDlg[open],dialog#rejetDlg[open],dialog#contrDlg[open],dialog#adhDlg[open],dialog#addDlg[open],dialog#listDlg[open],dialog#editDlg[open],dialog#viewDlg[open],dialog#chDlg[open],dialog#importDlg[open],dialog#ctrlDlg[open],dialog#ctrlErrDlg[open],dialog#ctrlMajDlg[open],dialog#ctrlConnDlg[open][open]{display:flex;flex-direction:column}
/* Liste, Lycées, Ajouter / Modifier, Contractuel, Retraité, Résiliation : plein écran, toutes les colonnes visibles sans défiler sur le côté */
dialog#listDlg,dialog#adhDlg,dialog#addDlg,dialog#editDlg,dialog#contrDlg,dialog#retrDlg,dialog#resilDlg,dialog#rejetDlg,dialog#viewDlg,dialog#chDlg,dialog#importDlg,dialog#ctrlDlg,dialog#ctrlErrDlg,dialog#ctrlMajDlg,dialog#ctrlConnDlg{width:98vw;max-width:98vw;height:96vh;max-height:96vh}
table.liste{width:100%;min-width:0;table-layout:auto;font-size:13px}
.adhdep table.liste th,.adhdep table.liste td{padding:6px 8px}
table.liste td.nw{white-space:nowrap}
table.liste td.mail{overflow-wrap:anywhere;min-width:12ch}
table.liste th{font-size:11px}
table.liste td.x{min-width:0;width:1%}
@media (max-width:900px){ table.liste{min-width:900px} }
dialog#retrDlg::backdrop,dialog#resilDlg::backdrop,dialog#rejetDlg::backdrop,dialog#contrDlg::backdrop,dialog#adhDlg::backdrop,dialog#addDlg::backdrop,dialog#listDlg::backdrop,dialog#editDlg::backdrop,dialog#viewDlg::backdrop,dialog#chDlg::backdrop,dialog#importDlg::backdrop,dialog#ctrlDlg::backdrop,dialog#ctrlErrDlg::backdrop,dialog#ctrlMajDlg::backdrop,dialog#ctrlConnDlg::backdrop::backdrop{background:rgba(20,12,10,.6)}
.adhhead{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;background:var(--panel);border-bottom:1px solid var(--line)}
.adhhead h2{font-family:var(--display);font-size:22px;margin:0}
.adhhead p{margin:2px 0 0;color:var(--muted);font-size:14px}
.adhbody{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 20px 20px;display:flex;flex-direction:column;gap:18px}
.adhhead{flex:none}
.adhdep{flex:none;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.adhdep h3{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0;padding:12px 16px;font-family:var(--display);font-size:18px;background:color-mix(in oklab,var(--accent) 10%,var(--panel));border-bottom:1px solid var(--line)}
.adhdep h3 span{font:600 14px var(--body);color:var(--muted);font-variant-numeric:tabular-nums}
.adhdep table{min-width:0}
.adhdep th,.adhdep td{padding:8px 16px}
.adhdep td{border-top:1px solid var(--line);vertical-align:top}
.adhdep tbody tr:first-child td{border-top:0}
.adhdep td.c{font-weight:600}
.adhdep td.v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.adhdep tr.cs td{border-top:2px solid var(--line)}
.adhdep tfoot td{font-weight:700;background:color-mix(in oklab,var(--fg) 4%,var(--panel))}
.adhdep .none{margin:0;padding:12px 16px;color:var(--muted)}
.adhdep.empty h3{background:var(--panel)}
.adhdep table{min-width:560px}
.adhdep th,.adhdep td{padding:6px 10px}
.adhdep th{padding:8px 10px}
.adhdep td.c{min-width:170px}
.adhdep td.c input{font-weight:600}
.adhdep td.v{padding-right:10px}
.adhdep td.x{width:48px;text-align:center}
.adhdep .csub{font-size:13px;font-weight:400;color:var(--muted);margin:4px 2px 6px}
.adhdep .addrow td{padding:4px 10px 10px;border-top:0}
.adhdep tfoot td{padding:10px}
.adhdep tfoot td.v{padding-right:10px}
.btn.small{font-size:13px;padding:6px 10px}
.adhadd{padding:10px 14px;border-top:1px solid var(--line)}
#adhMsg{margin:4px 0 0;color:var(--accent);font-size:13px;min-height:0}
#adhMsg:empty{display:none}

/* Connexion */
.authscreen{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg);z-index:1000;padding:16px}
.authscreen[hidden]{display:none!important}
.authbox{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px;width:min(380px,100%);display:grid;gap:14px;color:var(--fg)}
.authbox h2{margin:0;font-family:var(--display)}
.authbox input{width:100%;box-sizing:border-box;font:16px var(--body);padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg)}
.authbox .fld{display:grid;gap:4px}
#authMsg{margin:0;min-height:1.2em;font-size:14px}
#authMsg.err{color:#c0152f}#authMsg.ok{color:#2a7a3b}
.authlinks{display:flex;justify-content:space-between;gap:8px}
.maintbox{text-align:center;justify-items:center}
.maintbox[hidden]{display:none}
.maintbox p{margin:0;line-height:1.5;white-space:pre-line}
.mainticon{font-size:44px;line-height:1}
.maintbanner{margin:0 0 16px;padding:10px 14px;border-radius:8px;background:#fff4d6;border:1px solid #e8c766;color:#5c4400;font-weight:600}
.maintbanner[hidden]{display:none}
.linkbtn{background:none;border:0;padding:0;font:14px var(--body);color:var(--accent);text-decoration:underline;cursor:pointer}
#userbar{position:fixed;top:8px;right:8px;z-index:50;display:flex;align-items:center;gap:10px}
#userbar[hidden]{display:none}
#themeBtn{background:none;border:0;padding:6px;width:32px;height:32px;cursor:pointer;border-radius:8px}
#themeBtn:hover{background:color-mix(in srgb,var(--or) 25%,transparent)}
#themeBtn svg{width:100%;height:100%;display:block}
#hello{font-weight:600;color:var(--bleu);max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.passrow{display:flex;align-items:center;gap:10px}
.passrow input{flex:1}
.passrow .linkbtn{white-space:nowrap}
.allowform{display:flex;gap:8px;margin:12px 0}
.allowform input{flex:1;min-width:0;font:16px var(--body);padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--fg)}
#allowMsg{margin:0 0 8px;min-height:1.2em;font-size:14px}
#allowMsg.err{color:#c0152f}#allowMsg.ok{color:#2a7a3b}
.allowlist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.allowlist li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.invitebox{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.invitebox[hidden]{display:none}
.invitebox p{margin:0 0 8px;font-size:14px}
.invitelink{display:flex;gap:8px}
.invitelink input{flex:1;min-width:0;font:13px var(--body);padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--fg)}
.compteetat{font-size:12px;color:var(--muted,#8a7a72);white-space:nowrap}
.adminchk{display:inline-flex;align-items:center;gap:4px;font-size:14px;white-space:nowrap}.allowact{display:flex;align-items:center;gap:12px}
.maintinput{width:100%;box-sizing:border-box;font:16px var(--body);padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--fg);margin:8px 0}#maintMsg,#accesMsg{min-height:1.2em;font-size:14px}#maintMsg.ok,#accesMsg.ok{color:#2a7a3b}#maintMsg.err,#accesMsg.err{color:#c0152f}
/* Logo du syndicat en filigrane (transparent) sur toute la zone du haut : bandeaux, titre et boutons */
.entete{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:20px}
.entete::before{content:"";position:absolute;inset:56px 0 22px 0;z-index:-1;pointer-events:none;
  background:url("../img/logo-sombre.png?v=2") 70% center/contain no-repeat;opacity:.55} /* version sans fond blanc : plus de couleur sans rectangle visible */
@media(max-width:820px){.mapbox{width:100%}}

/* Habillage aux couleurs du logo : bleu marine, rouge, or occitan */
h1,.edhead h2,dialog h2{color:var(--bleu)}
.btn:not(.ghost):not(.danger):hover{background:var(--rouge)}
.btn:focus-visible,.linkbtn:focus-visible{outline:2px solid var(--or);outline-offset:2px}
.entete>header{border-bottom:3px solid var(--or);padding-bottom:14px}
.total{border-left:5px solid var(--or)}
.mapbox{border-top:3px solid var(--bleu)}
/* Boutons du haut : un peu plus petits et légèrement transparents (le logo transparaît) */
:is(.entete,.side) .btns .btn{font-size:14px;padding:8px 13px;background:color-mix(in srgb,var(--accent) 82%,transparent)}
:is(.entete,.side) .btns .btn:not(.ghost):not(.danger):hover{background:color-mix(in srgb,var(--rouge) 88%,transparent)}

/* Contrôle Site */
.ctrlgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.ctrlcard{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;border-top:3px solid var(--bleu)}
.ctrlcard h3{margin:0 0 8px;font:700 16px var(--display);color:var(--bleu)}
.ctrlcard dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:14px}
.ctrlcard dt{color:var(--muted)}
.ctrlcard dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.ctrlcard dd.mauvais{color:#b3261e}
.ctrlcard dd.moyen{color:#b26a00}
.ctrlcard dd.bon{color:#2a7a3b}
.ctrlcourbes{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.ctrlcourbes svg{width:100%;height:90px;display:block}
.ctrlcourbes .cc{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round}
.ctrlcourbes .ca{fill:var(--accent);opacity:.12}
.ctrlcourbes p{margin:4px 0 0;font-size:13px;color:var(--muted)}
.ctrlattention{background:#fff4d6;border:1px solid #ecd28a;border-radius:10px;padding:12px 16px;color:#5a4300}
.ctrlattention.ok{background:#e8f5ea;border-color:#a7d3ae;color:#1f5a2c}
.ctrlattention ul{margin:4px 0 0;padding-left:20px}
.ctrltable{width:100%;border-collapse:collapse;font-size:14px;background:var(--panel)}
.ctrltable th,.ctrltable td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
.ctrltable td.n,.ctrltable th.n{text-align:right}

/* Erreurs détectées */
.errtable{width:100%;border-collapse:collapse;font-size:14px;background:var(--panel)}
.errtable th,.errtable td{text-align:left;vertical-align:top;padding:8px 10px;border-bottom:1px solid var(--line)}
.errtable th{position:sticky;top:0;background:var(--panel);font-weight:600}
.errtable td.quand,.errtable td.code{white-space:nowrap;color:var(--muted)}
.errtable .src{display:inline-block;padding:1px 8px;border-radius:99px;font:600 12px var(--body);background:#fbe9ec;color:#b3261e}
.errtable .src.conflit{background:#fff4d6;color:#8a5a00}
.errtable .src.navigateur{background:#e3ebfb;color:#1f3a70}
.errtable details summary{cursor:pointer;color:var(--accent)}
.errtable pre{margin:6px 0 0;white-space:pre-wrap;word-break:break-word;font:12px/1.4 ui-monospace,Consolas,monospace;color:var(--muted)}
#ctrlErrBtn.alerte{border-color:#b3261e;color:#b3261e}
.errtable td.qui .ip{font-size:12px;color:var(--muted)}
.logs td.qui .ip{font-size:12px;color:var(--muted)}
.majbox{margin-bottom:4px}
.majbox .maj{padding:8px 10px;margin:6px 0;border-radius:8px;border:1px solid #ecd28a;background:#fff4d6;color:#5a4300}
.majbox .maj.urgent{border-color:#e3a2a8;background:#fbe9ec;color:#7a1620}
.majbox .majcmd{margin-top:3px;font:13px/1.4 ui-monospace,Consolas,monospace;word-break:break-word}
.majbox .majok{color:#1f5a2c;font-weight:600;margin:0}
.majbox .majmute{margin:8px 0 0;font-size:13px;color:var(--muted)}
.errtable td.enligne{white-space:nowrap}
.errtable .src.enligne{background:#e3f4e6;color:#1f5a2c}

/* ---- Habillage de la page d'accueil (mise en forme seulement, aucun contenu changé) ---- */
/* Motif de croix occitanes : retiré (--croix:none), dans la page et dans toutes les fenêtres */
:root{--croix:none} /* motif de croix occitanes retiré (l'ancien motif est dans l'historique git) */
/* Fond : papier crème avec un dégradé très doux aux couleurs du logo (bleu marine, or, bordeaux) et bandeau tricolore */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(1100px 800px at 0% 0%,color-mix(in srgb,var(--bleu) 34%,transparent),transparent 72%),
    radial-gradient(1000px 760px at 100% 10%,color-mix(in srgb,var(--or) 42%,transparent),transparent 72%),
    radial-gradient(1100px 850px at 100% 100%,color-mix(in srgb,var(--rouge) 26%,transparent),transparent 72%),
    radial-gradient(1000px 760px at 0% 100%,color-mix(in srgb,var(--bleu) 22%,transparent),transparent 72%),var(--bg)}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:var(--croix) 0 0/220px 220px;
  -webkit-mask-image:linear-gradient(180deg,#000 0,rgba(0,0,0,.55) 45%,transparent 95%);mask-image:linear-gradient(180deg,#000 0,rgba(0,0,0,.55) 45%,transparent 95%)}
html::before{content:"";position:fixed;top:0;left:0;right:0;height:5px;z-index:5;pointer-events:none;
  background:linear-gradient(90deg,var(--bleu) 0 55%,var(--or) 55% 82%,var(--rouge) 82%)}
.wrap{gap:18px}
.entete{gap:10px}
/* bandeaux d'information : plus compacts */
.maintbanner{margin:0;padding:8px 14px;font-size:14px;line-height:1.35;border-left:5px solid var(--or);box-shadow:0 1px 2px rgba(23,40,74,.06)}
/* en-tête : filet bleu → or sous les boutons */
.entete>header{border-bottom:0;padding:6px 0 18px;background:linear-gradient(90deg,var(--bleu),var(--or) 70%,transparent) bottom/100% 3px no-repeat}
h1.totaux{font-size:clamp(30px,4.4vw,44px);letter-spacing:.01em}
.sub{font-size:15px}
#derniereModif{font-size:14px}
/* cartes : coins plus doux et légère ombre */
.mapbox,.total,.list,.detail{border-radius:14px;box-shadow:0 1px 2px rgba(23,40,74,.06),0 8px 22px rgba(23,40,74,.05)}
.mapbox{border-top-width:4px}
.total{border-left-width:6px}
.list{padding:8px 0}
.row{padding:9px 18px;transition:background .15s}
.row .track{height:6px;border-radius:99px}
.row .fill{border-radius:99px;transition:width .3s}
/* boutons du haut : léger relief au survol */
:is(.entete,.side) .btns .btn{transition:transform .12s,background .15s,box-shadow .15s;box-shadow:0 1px 2px rgba(23,40,74,.18)}
:is(.entete,.side) .btns .btn:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(23,40,74,.22)}
@media (prefers-reduced-motion:reduce){:is(.entete,.side) .btns .btn,.row,.row .fill{transition:none}:is(.entete,.side) .btns .btn:hover{transform:none}}

/* ---- Même fond que la page dans toutes les fenêtres : voile bleu clair, croix occitanes qui s'effacent vers le bas, bandeau tricolore ---- */
:is(dialog#adhDlg,dialog#addDlg,dialog#listDlg,dialog#editDlg,dialog#viewDlg,dialog#chDlg,dialog#importDlg,dialog#retrDlg,dialog#resilDlg,dialog#rejetDlg,dialog#contrDlg,dialog#logsDlg,dialog#cfgDlg,dialog#ctrlDlg,dialog#ctrlErrDlg,dialog#ctrlMajDlg,dialog#ctrlConnDlg){
  background:
    linear-gradient(180deg,transparent 0,transparent 25%,var(--bg) 85%),
    var(--croix) 0 0/220px 220px,
    linear-gradient(180deg,color-mix(in srgb,var(--voile,#9ec1f2) 30%,var(--bg)) 0,color-mix(in srgb,var(--voile,#9ec1f2) 10%,var(--bg)) 220px,var(--bg) 520px);
  background-color:var(--bg);color:var(--fg);
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
:is(dialog#adhDlg,dialog#addDlg,dialog#listDlg,dialog#editDlg,dialog#viewDlg,dialog#chDlg,dialog#importDlg,dialog#retrDlg,dialog#resilDlg,dialog#rejetDlg,dialog#contrDlg,dialog#logsDlg,dialog#cfgDlg,dialog#ctrlDlg,dialog#ctrlErrDlg,dialog#ctrlMajDlg,dialog#ctrlConnDlg)::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;z-index:3;pointer-events:none;
  background:linear-gradient(90deg,var(--bleu) 0 55%,var(--or) 55% 82%,var(--rouge) 82%)}
/* Logs et Configuration : même présentation que les autres fenêtres (en-tête collé en haut, contenu qui défile) */
dialog#logsDlg,dialog#cfgDlg{padding:0;overflow:hidden;max-height:92vh}
dialog#logsDlg[open],dialog#cfgDlg[open]{display:flex;flex-direction:column}
dialog#cfgDlg{width:min(960px,96vw)}
:is(dialog#logsDlg,dialog#cfgDlg)::backdrop{background:rgba(20,12,10,.6)}

/* Boutons : liserés dorés à gauche et à droite, coins arrondis */
.btn.btn.btn{border-left:4px solid var(--or);border-right:4px solid var(--or);border-radius:8px}

/* Totaux et départements au-dessus de la carte, liste coupée en deux colonnes */
main{grid-template-columns:minmax(0,1fr)}
main aside{order:-1}
.list{column-count:2;column-gap:0}
.list .row{break-inside:avoid}
@media(max-width:640px){.list{column-count:1}}

/* Moins étalé : totaux et liste plus compacts, carte plus petite */
main aside{width:100%;max-width:760px;margin:0 auto;gap:10px}
.total{padding:8px 16px}
.total span{font-size:24px}
.total b{font-size:30px}
.list{padding:4px 0}
.list .row{padding:5px 14px;gap:2px 10px;font-size:14px}
main .mapbox{width:100%;max-width:560px}
@media(max-width:640px){main aside,main .mapbox{max-width:none}}

/* Graphiques en camembert */
.pie{display:flex;flex-wrap:wrap;gap:18px 28px;align-items:center;justify-content:center;padding:6px 0}
.piesvg{width:min(260px,100%);height:auto;flex:none}
.piesvg .part{stroke:var(--panel);stroke-width:2}
.piesvg .part:hover{opacity:.85}
.pieleg{list-style:none;margin:0;padding:0;flex:1 1 240px;max-width:420px;display:grid;gap:5px}
.pieleg li{display:grid;grid-template-columns:14px minmax(0,1fr) auto 5ch;gap:8px;align-items:center;font-size:14px}
.pieleg i{width:14px;height:14px;border-radius:3px}
.pieleg span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pieleg b{font-variant-numeric:tabular-nums}
.pieleg em{white-space:nowrap;font-style:normal;color:var(--muted);font-size:12px;text-align:right}
.chcard{background:#f3ead8}
.piesvg .part{stroke:#f3ead8}

/* Graphiques : les deux camemberts côte à côte (l'un sous l'autre sur petit écran) */
#chDlg .adhbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
@media(max-width:900px){#chDlg .adhbody{grid-template-columns:minmax(0,1fr)}}

/* Menu déroulant « Statuts » */
.menu{position:relative}
.menupanel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 22px rgba(23,40,74,.2);min-width:100%}
.menupanel[hidden]{display:none}
.menupanel .btn{white-space:nowrap;text-align:left}

/* Menu « ⋯ » en haut à droite : le panneau s'ouvre vers la gauche pour rester dans l'écran */
#userbar .menupanel{left:auto;right:0}

/* Bouton « ⋯ » plus petit et barre du haut plus serrée */
#userbar{gap:6px}
#plusBtn.btn.btn.btn{padding:3px 8px;font-size:14px;line-height:1.1;min-width:0}

/* « Administration » : sous-liste dépliée dans le menu « ⋯ » */
.subgroup{display:flex;flex-direction:column;gap:6px}
.subpanel{display:flex;flex-direction:column;gap:6px;padding-left:14px}
.subpanel[hidden]{display:none}

/* Boutons du menu en colonne à gauche, sous le trait bleu de l'en-tête */
.corps{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:24px;align-items:start;margin-top:18px}
.contenu{min-width:0;display:flex;flex-direction:column;gap:24px}
.side .btns{flex-direction:column;align-items:stretch;flex-wrap:nowrap}
.side .btns .btn{text-align:left}
.side .menupanel{top:0;left:calc(100% + 8px);min-width:max-content}
@media(max-width:820px){
  .corps{grid-template-columns:minmax(0,1fr)}
  .side .btns{flex-direction:row;flex-wrap:wrap;align-items:center}
  .side .menupanel{top:calc(100% + 6px);left:0}
}

/* Menu « ⋯ » : tous les boutons alignés, même largeur, sans décalage */
.menupanel .subpanel{padding-left:0}
.menupanel .btn{width:100%}

/* Supprimer une ville ou un lycée : réservé aux administrateurs (le serveur le refuse aussi) */
html:not([data-admin="1"]) :is(.del,.ldel,.a-cdel,.a-ldel){display:none!important}
html:not([data-site="1"]) :is(.del,.a-cdel,.ladd,.a-addl){display:none!important}

/* Création de compte : * obligatoire et barre de solidité du mot de passe */
.req{color:#c0152f}
.force{display:flex;align-items:center;gap:10px;margin:2px 0 10px}
.forcebar{flex:1;height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.forcebar i{display:block;height:100%;width:0;border-radius:99px;background:#c0152f;transition:width .2s,background .2s}
.forcebar i.f0,.force span.f0{background:#c0152f;color:#c0152f}
.forcebar i.f1,.force span.f1{background:#e25b1c;color:#e25b1c}
.forcebar i.f2,.force span.f2{background:#e0a82e;color:#b07d00}
.forcebar i.f3,.force span.f3{background:#7bb83d;color:#4f8a1a}
.forcebar i.f4,.force span.f4{background:#2a9d4a;color:#1f7a38}
.force span{font-size:13px;font-weight:600;min-width:11ch;background:none!important}

/* Import : barre de recherche du lycée */
#importDlg table.liste input[type=search]{width:100%;min-width:260px;font:14px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 10px}
#importDlg td.istat{min-width:170px}
.multibtn{width:100%;text-align:left;font:14px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;cursor:pointer;white-space:normal}
.multipanel{position:fixed;z-index:60;display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 22px rgba(23,40,74,.25);min-width:160px}
.multipanel label{display:flex;align-items:center;gap:8px;font-size:14px;white-space:nowrap;cursor:pointer}
#importDlg table.liste select{font:14px var(--body);color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px}

/* Statut : menu déroulant à choix multiples dans les formulaires adhérent */
.multi{position:relative}
.multi .multibtn{padding:11px 12px;font-size:16px}
.multi .statuts{position:absolute;z-index:40;top:calc(100% + 4px);left:0;min-width:220px;flex-direction:column;flex-wrap:nowrap;gap:2px;padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 22px rgba(23,40,74,.25)}
.multi .statuts[hidden]{display:none}
.multi .statuts label,.multi .statuts label:has(input:checked){border:0;border-radius:6px;background:none;padding:6px 8px}
.multi .statuts label:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}

/* Lecture seule (compte sans « Autoriser les modifications ») : aucun bouton de modification, le serveur refuse aussi */
html[data-lecture="1"] :is(#addAdhBtn,.a-addc,.a-addl,.a-cdel,.a-ldel,.a-mdel,.a-medit,.del,.ldel,.ladd,#addBtn,section.edit){display:none!important}
html[data-lecture="1"] #tbody :is(input,select):disabled{opacity:1;color:inherit;-webkit-text-fill-color:currentColor}
html[data-lecture="1"] #adhDlg :is(input,select,textarea){pointer-events:none}

/* Contrôle Site > Connexions */
.errtable .src.bloquee{background:#fbe9ec;color:#a3182b}
.errtable .src.echouee{background:#fff4d6;color:#8a5a00}
.errtable .src.refusee{background:#fbe9ec;color:#a3182b}
.errtable .src.nouvelle{background:#fbe9ec;color:#a3182b;margin-left:6px}

