:root{/* `--green` est un nom d'origine : la valeur est un bleu nuit. */--ink:#141b2d;--muted:#6b7280;--bg:#f6f6f3;--card:#fff;--accent:#f4e04a;--green:#16233f;--line:#dfe1e6}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}.hero{background:var(--green);color:white;padding:22px max(5vw,28px) 40px;border-radius:0 0 34px 34px}nav{display:flex;align-items:center;justify-content:space-between}.brand{font-size:23px;font-weight:850;letter-spacing:-.8px}.brand span{color:#f6e77e}.brand small{font-size:9px;border:1px solid #ffffff55;border-radius:20px;padding:3px 6px;margin-left:7px;vertical-align:middle}.ghost,.outline{border:1px solid #ffffff55;border-radius:999px;padding:10px 16px;text-decoration:none;background:transparent;color:inherit;cursor:pointer}.hero-copy{max-width:800px;margin:64px 0 28px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:800;opacity:.7}.hero h1,.submit-card h1{font-size:clamp(38px,5vw,70px);line-height:.98;letter-spacing:-3px;margin:10px 0 16px}.hero h1 em{color:#f6e77e;font-style:normal}.hero-copy>p:last-child{color:#ccd5e8;font-size:17px}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px;background:#ffffff12;border:1px solid #ffffff1f;padding:12px;border-radius:20px}.filters label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#aebad4}.filters input,.filters select{display:block;width:100%;margin-top:5px;background:transparent;border:0;color:white;font-size:15px;outline:0}.filters input[type=date]{color-scheme:dark}.linklike{background:none;border:0;color:#2f4a7d;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;padding:0}.filters select option{color:#111}.filters button,.submit-card button{background:var(--accent);border:0;color:#fff;font-weight:800;border-radius:14px;padding:14px 20px;cursor:pointer}.toggles{display:flex;gap:18px;margin-top:12px;color:#ccd5e8;font-size:13px}.toggles label{display:flex;align-items:center;gap:7px;cursor:pointer}.toggles input{accent-color:var(--accent);width:15px;height:15px}main{max-width:1500px;margin:auto;padding:32px max(5vw,28px) 80px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:32px}.stats div{background:white;border:1px solid var(--line);border-radius:18px;padding:18px}.stats strong{display:block;font-size:30px}.stats span{color:var(--muted);font-size:13px}.layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr);gap:28px}.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:16px}.section-head h2{margin:4px 0;font-size:28px;letter-spacing:-1px}.section-head .outline{border-color:var(--line);color:var(--ink);font-size:13px}.collection-status{font-size:12px;color:var(--muted);min-height:20px}.cards{display:grid;gap:12px}.event-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;display:grid;grid-template-columns:64px 1fr;gap:16px}.date-pill{height:64px;border-radius:16px;background:#fbf3b4;display:flex;flex-direction:column;align-items:center;justify-content:center}.date-pill strong{font-size:25px;line-height:1}.date-pill span{font-size:9px;font-weight:900;letter-spacing:1px}.topline{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.8px}.confidence{color:#2f4a7d}.distance{color:#2f4a7d;font-weight:800;white-space:nowrap}.also{text-transform:none;letter-spacing:0;color:#8b93a1;font-style:italic}.precision{color:#8b93a1;font-weight:400;font-size:12px}.event-card h3{font-size:22px;letter-spacing:-.6px;margin:6px 0}.event-card p{color:#4b5563;margin:8px 0;line-height:1.45}.meta{font-weight:700;color:#1f2a44!important}.badges{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.badges span{font-size:11px;padding:5px 8px;border-radius:999px;background:#ecedf1}.sources{border-top:1px solid #eee;padding-top:10px;color:#6b7280;font-size:11px}.sources a{color:#2f4a7d}.alert{background:#fff3d8;color:#795818;padding:9px 11px;border-radius:10px;font-size:12px}.empty{padding:30px;background:white;border:1px dashed var(--line);border-radius:20px;text-align:center;color:var(--muted)}aside{position:sticky;top:20px;align-self:start}#map{height:650px;border-radius:24px;border:1px solid var(--line);background:#e7e8ec}.map-note{font-size:11px;color:var(--muted);padding:8px 4px}.submit-page{background:var(--green);min-height:100vh}.submit-wrap{max-width:760px;padding-top:38px}.back{color:white;text-decoration:none}.submit-card{background:#fff;border-radius:28px;padding:32px;margin-top:24px}.submit-card h1{font-size:48px;color:var(--ink)}.submit-card>p{color:var(--muted)}form{display:grid;gap:14px;margin-top:26px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}form label{font-size:12px;font-weight:750}form input,form textarea{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:12px;font:inherit;background:#fafaf8}form small{display:block;color:var(--muted);margin-top:6px;font-weight:400}#msg{margin-top:16px;font-weight:700}
.review-wrap{max-width:1100px}.warn{background:#ffe9e4;color:#8a2c17;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:700;margin-top:18px}.muted{color:var(--muted);font-size:13px}.review-tabs{display:flex;gap:8px;margin:22px 0 6px}.tab{border:1px solid var(--line);background:#fafaf8;border-radius:999px;padding:8px 16px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;color:var(--muted)}.tab.on{background:var(--green);border-color:var(--green);color:#fff}.sub{border:1px solid var(--line);border-radius:20px;padding:18px;margin-top:14px}.sub.done{opacity:.55}.sub-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sub-id{font-weight:850;letter-spacing:-.5px}.badge{font-size:11px;font-weight:800;padding:4px 9px;border-radius:999px;background:#ecedf1}.badge.approved{background:#dcf0e5;color:#175c3f}.badge.rejected{background:#fbf3b4;color:#8a2c17}.sub-body{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:18px}.sub-fields form,.sub-fields{display:grid;gap:12px}.sub-fields label{font-size:12px;font-weight:750;display:block}.sub-fields input,.sub-fields textarea{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:10px;font:inherit;background:#fafaf8}.sub-fields p{margin:0}.poster{width:100%;border-radius:14px;border:1px solid var(--line)}.poster-pdf{display:block;text-align:center;padding:26px 12px;border:1px dashed var(--line);border-radius:14px;font-size:13px;font-weight:700;color:#2f4a7d}.sub-actions{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}.sub-actions input{flex:1;min-width:200px;border:1px solid var(--line);border-radius:12px;padding:11px;font:inherit;background:#fafaf8}.sub-actions button{background:var(--accent);border:0;color:#fff;font-weight:800;border-radius:12px;padding:11px 18px;cursor:pointer;font-size:14px}.outline-dark{background:transparent!important;border:1px solid var(--line)!important;color:var(--muted)!important}.sub-msg{margin:10px 0 0;font-weight:700;font-size:13px;color:#175c3f}.sub-poster .extract{width:100%;margin-top:10px;border-radius:12px;padding:10px;font:inherit;font-weight:800;font-size:13px;cursor:pointer}.extract-msg{margin:8px 0 0;font-size:12px;line-height:1.4}.sub-fields .filled{background:#eef2fb;border-color:#a9bde0}@media(max-width:760px){.sub-body{grid-template-columns:1fr}}@media(max-width:900px){.filters{grid-template-columns:1fr 1fr}.filters button{grid-column:1/-1}.layout{grid-template-columns:1fr}aside{position:static}#map{height:380px}.stats{grid-template-columns:1fr 1fr}}@media(max-width:600px){.hero-copy{margin-top:44px}.filters{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.event-card{grid-template-columns:52px 1fr}.date-pill{height:52px}.topline{display:block}.confidence{display:block;margin-top:4px}.grid2{grid-template-columns:1fr}}

/* Pages rendues côté serveur : commune, événement, projet. Le style reprend les
   variables existantes — c'est de la mise en lisibilité, pas une refonte : celle-ci
   viendra avec le chantier esthétique. */
.hero.compact{padding-bottom:26px}.hero.compact .hero-copy{margin:36px 0 10px}.brand a{text-decoration:none}
.page{max-width:900px}
.fil{font-size:13px;color:var(--muted);margin:0 0 10px}.fil a{color:#2f4a7d}
.fiche h1,.texte h1{font-size:clamp(30px,4vw,46px);letter-spacing:-1.4px;line-height:1.05;margin:0 0 20px}
.fiche-meta{display:grid;grid-template-columns:110px 1fr;gap:8px 18px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;margin:0 0 22px}
.fiche-meta dt{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-weight:800}
.fiche-meta dd{margin:0}
.fiche-texte{line-height:1.6;font-size:17px}
.tag{font-size:11px;padding:4px 9px;border-radius:999px;background:#ecedf1;margin-right:5px;display:inline-block}
.discret{color:var(--muted);font-size:13px}.discret a{color:#2f4a7d}
.liste{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.carte{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px}
.carte h2{margin:4px 0 6px;font-size:21px;letter-spacing:-.6px}.carte h2 a{text-decoration:none}
.carte .date{margin:0;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#2f4a7d}
.liste-compacte{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.liste-compacte a{color:#2f4a7d;font-weight:700}
.voisins{margin-top:34px;border-top:1px solid var(--line);padding-top:22px}
.voisins h2{font-size:19px;letter-spacing:-.5px}
.vide{background:var(--card);border:1px dashed var(--line);border-radius:20px;padding:26px;line-height:1.6;color:#4b5563}
.texte{line-height:1.65;font-size:17px}.texte h2{font-size:24px;letter-spacing:-.8px;margin:34px 0 10px}
.encart{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:16px;padding:20px 24px;margin:28px 0}
.encart h2{margin-top:0}
.couverture{list-style:none;padding:0;margin:16px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px}
.couverture li{display:flex;justify-content:space-between;gap:10px;padding:9px 13px;background:var(--card);border:1px solid var(--line);border-radius:12px;font-size:14px}
.couverture li.vide{background:transparent;border-style:dashed;padding:9px 13px;border-radius:12px}
.couverture a{color:#2f4a7d;font-weight:700;text-decoration:none}
.puces{line-height:1.6}.puces li{margin-bottom:8px}
.site-foot{max-width:900px;margin:auto;padding:30px max(5vw,28px) 60px;border-top:1px solid var(--line);color:var(--muted);font-size:14px;line-height:1.6}
.site-foot a{color:#2f4a7d}
@media(max-width:600px){.fiche-meta{grid-template-columns:1fr;gap:2px 0}.fiche-meta dt{margin-top:10px}}

/* Accueil : les résultats d'abord, la carte à côté sur un écran large, repliée
   sous eux sur un téléphone. Le seuil est à 900 px et non 1100 : un portable de
   13 pouces sous Windows à 150 % d'échelle n'expose que ~850-1100 px CSS, et la
   carte se retrouvait donc tout en bas sur une machine qui a la place. */
.page-large{max-width:1180px}
.ou{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;color:#ccd5e8;font-size:14px}
.ou label{display:flex;align-items:center;gap:8px}
.ou input,.ou select{background:#ffffff14;border:1px solid #ffffff2e;border-radius:12px;color:#fff;padding:9px 12px;font:inherit;font-size:15px;outline:0}
.ou select option{color:#111}
.affiner{margin-top:14px;color:#ccd5e8}
.affiner summary{cursor:pointer;font-size:13px;font-weight:750;opacity:.85;width:max-content}
.affiner-corps{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:12px;background:#ffffff12;border:1px solid #ffffff1f;padding:14px;border-radius:18px}
.affiner-corps label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:#aebad4}
.affiner-corps input,.affiner-corps select{display:block;width:100%;margin-top:5px;background:transparent;border:0;border-bottom:1px solid #ffffff2e;color:#fff;font-size:15px;outline:0;padding-bottom:5px}
.affiner-corps input[type=date]{color-scheme:dark}
.affiner-corps select option{color:#111}
.affiner-corps .case{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13px;color:#ccd5e8}
.affiner-corps .case input{width:16px;height:16px;accent-color:var(--accent);margin:0;border:0}
.resultats-tete{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:16px}
.resultats-tete h2{margin:0;font-size:26px;letter-spacing:-1px}
.lien-carte{background:none;border:0;color:#2f4a7d;font:inherit;font-weight:750;text-decoration:underline;cursor:pointer;padding:0;white-space:nowrap}
.event-card h3 a{text-decoration:none}
.event-card h3 a:hover{text-decoration:underline}
.lien-commune{color:inherit;text-decoration:none;font-weight:750}
.lien-commune:hover{text-decoration:underline}
#carte-bloc{margin-top:26px}
#carte-bloc #map{height:480px}
.index-communes{margin-top:44px;border-top:1px solid var(--line);padding-top:24px}
.index-communes h2{font-size:20px;letter-spacing:-.6px;margin:0 0 12px}
.index-communes .couverture li{justify-content:flex-start}
@media(min-width:900px){
  .page-large{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.8fr);
              grid-template-areas:"tete tete" "liste carte" "index index";gap:0 28px;align-items:start}
  .resultats-tete{grid-area:tete}#events{grid-area:liste}#carte-bloc{grid-area:carte;margin-top:0;position:sticky;top:20px}
  .index-communes{grid-area:index}
  #carte-bloc #map{height:620px}
  .lien-carte{display:none}
}
@media(max-width:600px){.ou{font-size:13px}}
/* --- Reprises après le passage au bleu nuit ------------------------------- */
/* Le vert se lisait en blanc ; le jaune non. Tout texte posé sur l'accent
   repasse en bleu nuit, sans quoi il devient illisible sur fond clair. */
.filters button,.submit-card button,.sub-actions button{background:var(--accent);color:var(--green);font-weight:850}
.date-pill{color:var(--green)}
/* Pastille d une fiche deja commencee : deux mots au lieu du jour et du
   mois. Meme fond que les autres, pour que la colonne reste homogene ;
   c est le texte qui distingue, pas la couleur. */
.date-pill.en-cours span{font-size:10px;line-height:1.25}
/* Les couleurs d'état de l'écran de revue restent sémantiques : vert = publié,
   rouge = refusé. Elles ne suivent pas la charte, elles disent un statut. */
.badge.approved{background:#dcf0e5;color:#175c3f}
.badge.rejected{background:#f7dcd6;color:#8a2c17}
.warn{background:#f7e2dd;color:#8a2c17}
.popup-titre{color:var(--green);text-decoration:none}
.popup-titre:hover{text-decoration:underline}
