/* MonSolaireLocal — identité « L'énergie du quartier » : jaune soleil, vert forêt, blanc lumineux, formes rondes, flux d'énergie.
   Polices auto-hébergées (OFL) : Bricolage Grotesque (titres), Onest (texte). */
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:800;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-latin-800-normal.woff2) format("woff2")}
@font-face{font-family:"Onest";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/onest-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Onest";font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/onest-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Onest";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/onest-latin-700-normal.woff2) format("woff2")}

:root{
  --soleil:#ffc53d; --soleil2:#ffe08a; --soleil3:#fff6d6; --soleil4:#fffbea;
  --foret:#0b4f3c; --foret2:#073a2c; --foret3:#e3f3ec; --menthe:#2fbf7f; --feuille:#d4efe2;
  --encre:#10251d; --encre2:#33483f; --doux:#52645b; --trait:#e3ece7; --blanc:#fff;
  --rouge:#b3261e; --rouge2:#fde4e1;
  /* alias des anciennes variables utilisées par les scripts */
  --midi:var(--soleil); --midi2:var(--soleil3); --tuile:var(--foret); --tuile2:var(--foret2); --sarcelle:var(--foret); --sarcelle2:var(--foret2);
  --papier:var(--blanc); --papier2:var(--soleil4); --carte:var(--blanc); --vert:var(--foret);
  --r:24px; --r2:34px;
  --titre:"Bricolage Grotesque","Onest",system-ui,sans-serif;
  --sans:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --serif:var(--titre);
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --ombre:0 18px 40px -18px rgba(11,79,60,.35);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
body{margin:0;background:var(--blanc);color:var(--encre);font:17px/1.6 var(--sans);overflow-wrap:break-word}
img,svg{max-width:100%;height:auto}
a{color:var(--foret);text-decoration-thickness:2px;text-decoration-color:var(--soleil);text-underline-offset:4px}
a:hover{color:var(--foret2);text-decoration-color:var(--foret)}
:focus-visible{outline:3px solid var(--foret);outline-offset:3px;border-radius:8px}
h1,h2,h3{font-family:var(--titre);line-height:1.06;letter-spacing:-.025em;color:var(--foret);font-weight:800}
h1{font-size:clamp(2.2rem,7.2vw,4.4rem);margin:.15em 0 .35em}
h2{font-size:clamp(1.6rem,4.6vw,2.6rem);margin:1.4em 0 .5em}
h3{font-size:1.3rem;margin:1.2em 0 .4em;font-weight:700;letter-spacing:-.015em}
p{margin:.6em 0 1em}
.sr{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.sr:focus{left:12px;top:12px;width:auto;height:auto;background:var(--soleil);color:var(--encre);padding:10px 14px;border-radius:999px;z-index:99}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}
.etroit{max-width:780px}
.muted{color:var(--doux)}
.petit{font-size:.9rem}
.num{font-variant-numeric:tabular-nums}
.hidden{display:none!important}
.section{padding:28px 0}

/* ---------- En-tête ---------- */
.entete{background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);position:sticky;top:0;z-index:30;border-bottom:1px solid var(--trait)}
.entete .wrap{display:flex;align-items:center;gap:14px;min-height:68px}
.logo{display:flex;align-items:center;gap:10px;font:800 1.2rem var(--titre);letter-spacing:-.02em;color:var(--foret);text-decoration:none;white-space:nowrap}
.logo b{color:var(--foret);background:var(--soleil);padding:0 .2em;border-radius:.4em;margin:0 .05em}
.logo svg{width:36px;height:36px;flex:none}
.logo .rayons{transform-origin:20px 20px;animation:tourne 24s linear infinite}
.nav{margin-left:auto;display:flex;gap:2px;align-items:center}
.nav a{padding:9px 12px;border-radius:999px;text-decoration:none;color:var(--encre);font-size:.95rem;font-weight:600}
.nav a:hover{background:var(--soleil3);color:var(--foret)}
.nav a[aria-current="page"]{background:var(--feuille);color:var(--foret)}
.nav .btn{margin-left:8px}
.burger{display:none;margin-left:auto;background:var(--soleil3);border:0;border-radius:999px;padding:10px 16px;font:700 1rem var(--sans);color:var(--foret);cursor:pointer}
@media (max-width:960px){
  .burger{display:block}
  .nav{display:none;position:absolute;left:12px;right:12px;top:74px;background:#fff;flex-direction:column;align-items:stretch;padding:12px;border-radius:var(--r);box-shadow:var(--ombre)}
  .nav.ouvert{display:flex}
  .nav a{padding:12px 14px}
  .nav .btn{margin:8px 0 0}
}

/* ---------- Boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px;border-radius:999px;border:2px solid var(--foret);background:var(--foret);color:#fff;font:700 1rem var(--sans);text-decoration:none;cursor:pointer;line-height:1.2;text-align:center;box-shadow:0 4px 0 var(--foret2);transition:transform .12s,box-shadow .12s,background .12s}
.btn:hover{background:var(--foret2);border-color:var(--foret2);color:#fff;transform:translateY(-1px)}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--foret2)}
.btn.chaud{background:var(--soleil);border-color:var(--soleil);color:var(--encre);box-shadow:0 4px 0 #d99a00}
.btn.chaud:hover{background:#ffd25e;border-color:#ffd25e;color:var(--encre)}
.btn.ligne{background:#fff;color:var(--foret);box-shadow:none}
.btn.ligne:hover{background:var(--foret3);color:var(--foret2)}
.btn.petit{min-height:38px;padding:7px 14px;font-size:.9rem;box-shadow:none}
.btn[disabled]{opacity:.6;cursor:wait;transform:none}
.btn.large{width:100%}
.btn.whatsapp{background:#1b7a4a;border-color:#1b7a4a;box-shadow:0 4px 0 #11553a}
.btn.whatsapp:hover{background:#155f3a;border-color:#155f3a}
.nav a.btn,.nav a.btn:hover{color:#fff}
.lien-btn{background:none;border:0;color:var(--foret);text-decoration:underline;text-decoration-color:var(--soleil);cursor:pointer;font:inherit;padding:0}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 8px}

/* ---------- Héros signature : flux d'énergie entre les toits ---------- */
.heros-flux{position:relative;padding:34px 0 10px;background:radial-gradient(700px 360px at 12% 0%,var(--soleil3),transparent 70%),radial-gradient(600px 300px at 95% 30%,var(--foret3),transparent 70%)}
.heros-flux .tete{text-align:center;max-width:900px;margin:0 auto}
.heros-flux h1 em{font-style:normal;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:linear-gradient(transparent 58%,var(--soleil) 58%,var(--soleil) 92%,transparent 92%);padding:0 .08em}
.heros-flux .chapeau{margin-left:auto;margin-right:auto}
.slogan{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:0 0 14px;padding:0;list-style:none}
.slogan li{font:700 .92rem var(--sans);padding:6px 14px;border-radius:999px;background:var(--feuille);color:var(--foret)}
.slogan li:nth-child(1){background:var(--soleil);color:var(--encre)}
.slogan li:nth-child(3){background:var(--foret);color:#fff}
.scene{position:relative;max-width:1160px;margin:6px auto 0;padding:0 12px}
.scene svg.flux{display:block;width:100%;height:auto}
.flux-carte{position:absolute;left:50%;top:50%;transform:translate(-50%,-42%);width:min(440px,calc(100% - 32px));background:#fff;border-radius:var(--r2);padding:22px 22px 18px;box-shadow:0 30px 60px -26px rgba(11,79,60,.45),0 0 0 6px rgba(255,197,61,.35);text-align:center;z-index:2}
.flux-carte .compteur-geant{display:block;font:800 clamp(3rem,9vw,4.6rem)/1 var(--titre);color:var(--foret);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.flux-carte .compteur-texte{font-weight:600;color:var(--encre2);margin:.3em 0 .9em}
.flux-carte .compteur-texte strong{color:var(--foret)}
.flux-carte label{text-align:left;font-weight:700;color:var(--foret)}
.flux-carte .suite{margin-top:12px}
.flux-carte .suite .btn{flex:1 1 180px}
@media (max-width:760px){
  .flux-carte{position:relative;left:auto;top:auto;transform:none;margin:-8px auto 0;width:100%;padding:20px 16px 16px}
  .heros-flux .tete{text-align:left}
  .heros-flux .chapeau{font-size:1.05rem}
  .slogan{justify-content:flex-start}
}
.scene.mini .flux-carte{transform:translate(-50%,-40%)}
@media (max-width:760px){.scene.mini .flux-carte{transform:none}}

/* éléments du schéma SVG */
.flux .ciel-rayon{stroke:var(--soleil);stroke-width:6;stroke-linecap:round}
.flux .soleil-disque{fill:var(--soleil)}
.flux .soleil-halo{fill:var(--soleil3)}
.flux .rayons{transform-box:fill-box;transform-origin:center;animation:tourne 30s linear infinite}
.flux .sol{fill:var(--feuille)}
.flux .maison{fill:var(--foret)}
.flux .maison.claire{fill:#1f7a5b}
.flux .maison.menthe{fill:var(--menthe)}
.flux .fenetre{fill:var(--soleil3)}
.flux .fenetre.allumee{fill:var(--soleil);animation:allume 3.2s ease-in-out infinite}
.flux .panneau-pv{fill:#163d5c;stroke:#cfe3f2;stroke-width:1.5}
.flux .reflet{fill:#fff;opacity:.35}
.flux .chemin{fill:none;stroke:var(--soleil3);stroke-width:10;stroke-linecap:round}
.flux .particules{fill:none;stroke:var(--soleil);stroke-width:9;stroke-linecap:round;stroke-dasharray:0 26;animation:coule 2.2s linear infinite;filter:drop-shadow(0 0 4px rgba(255,197,61,.9))}
.flux .particules.p2{animation-duration:2.8s}
.flux .particules.p3{animation-duration:3.3s}
.flux .particules.p4{animation-duration:2.5s}
.flux .arrivee{fill:var(--soleil);opacity:.0;transform-box:fill-box;transform-origin:center;animation:pulse 2.2s ease-out infinite}
.flux .etiquette-svg{font:700 15px var(--sans);fill:var(--foret)}
@keyframes coule{to{stroke-dashoffset:-52}}
@keyframes tourne{to{transform:rotate(360deg)}}
@keyframes pulse{0%{opacity:.75;transform:scale(.4)}100%{opacity:0;transform:scale(1.8)}}
@keyframes allume{0%,100%{fill:var(--soleil3)}50%{fill:var(--soleil)}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .flux .particules{stroke-dasharray:0 26}
}

/* ---------- Champs de recherche ---------- */
.auto{position:relative}
.liste-auto{position:absolute;left:0;right:0;top:100%;z-index:15;margin-top:6px;border-radius:18px;background:#fff;box-shadow:0 18px 40px -12px rgba(11,79,60,.35);max-height:300px;overflow:auto;text-align:left;border:1px solid var(--trait)}
.liste-auto a,.liste-auto button{display:block;width:100%;text-align:left;padding:12px 16px;border:0;background:none;font:inherit;color:var(--encre);text-decoration:none;cursor:pointer}
.liste-auto a:hover,.liste-auto a:focus,.liste-auto button:hover,.liste-auto button:focus,.liste-auto [aria-selected="true"]{background:var(--soleil3)}
.cherche label{font-weight:700}
.cherche input,.champ-commune{font:600 1.15rem var(--sans);padding:15px 20px;border-radius:999px;border:2px solid var(--foret);background:#fff}
.cherche input:focus,.champ-commune:focus{box-shadow:0 0 0 5px rgba(255,197,61,.55)}
.heros-cherche{max-width:520px;margin:10px auto 6px}

/* ---------- Trio « produisez, partagez, économisez » ---------- */
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:10px 0}
.trio>div{border-radius:var(--r2);padding:26px 22px;background:var(--soleil4)}
.trio>div:nth-child(2){background:var(--foret3)}
.trio>div:nth-child(3){background:var(--foret);color:#e8f5ef}
.trio>div:nth-child(3) h3{color:#fff}
.trio .rond{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--soleil);margin-bottom:6px}
.trio>div:nth-child(2) .rond{background:#fff}
.trio .rond svg{width:36px;height:36px}
.trio h3{font-size:1.6rem;margin:.3em 0 .2em}
@media (max-width:760px){.trio{grid-template-columns:1fr}}

/* ---------- Fiches ---------- */
.fiches{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin:18px 0}
.fiche{background:#fff;border:2px solid var(--trait);border-radius:var(--r);padding:22px;position:relative}
.fiche.ticket{border:0;background:var(--soleil4)}
.fiche.ticket:nth-child(even){background:var(--foret3)}
.fiche h3{margin-top:.1em}
.fiche .chiffre{font:800 2.4rem/1 var(--titre);color:var(--foret);display:block;margin-bottom:.2em;letter-spacing:-.03em}
.pastille{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--soleil);color:var(--encre);font:800 1.2rem var(--titre);margin-bottom:8px}
.bande{background:var(--foret);color:#e3f3ec;padding:44px 0;margin:44px 12px;border-radius:44px;position:relative;overflow:hidden}
.bande::before{content:"";position:absolute;right:-120px;top:-120px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(255,197,61,.35),transparent 65%)}
.bande h2,.bande h3{color:#fff}
.bande a{color:var(--soleil)}
.bande .fiche{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14);color:#e3f3ec}
.bande .fiche .chiffre{color:var(--soleil)}
.bande .source,.bande .source a{color:#cfe8dc}
.encadre{background:var(--soleil3);border-radius:var(--r);padding:16px 20px;margin:18px 0}
.encadre.info{background:var(--foret3)}
.encadre.alerte{background:var(--rouge2)}
.source{font-size:.86rem;color:var(--doux)}
.source a{color:var(--doux)}
.surtitre{display:inline-block;font:700 .82rem var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--foret);background:var(--soleil);padding:6px 14px;border-radius:999px}
.chapeau{font-size:1.18rem;color:var(--encre2);max-width:40em}
.etiquette{display:inline-block;padding:4px 12px;border-radius:999px;font-size:.8rem;font-weight:700;background:var(--soleil3);color:var(--foret)}
.etiquette.actif{background:var(--feuille);color:var(--foret2)}
.etiquette.invite{background:var(--soleil2);color:#5c4100}
.etiquette.sorti{background:#eef0ef;color:#4f5652}

/* ---------- Tableaux ---------- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:14px 0;border-radius:var(--r);background:#fff;border:2px solid var(--trait)}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--trait);vertical-align:top}
th{background:var(--foret3);color:var(--foret2);font-weight:700}
td.d,th.d{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr:last-child td{border-bottom:0}

/* ---------- Formulaires ---------- */
form .ligne{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:620px){form .ligne{grid-template-columns:1fr}}
label{display:block;font-weight:600;font-size:.96rem;margin:14px 0 6px}
.aide{display:block;font-weight:400;color:var(--doux);font-size:.86rem;margin-top:2px}
input,select,textarea{width:100%;font:16px var(--sans);padding:12px 16px;border:2px solid #cfdcd5;border-radius:16px;background:#fff;color:var(--encre);min-height:48px}
textarea{border-radius:18px}
input:focus,select:focus,textarea:focus{border-color:var(--foret);outline:none;box-shadow:0 0 0 4px rgba(255,197,61,.5)}
input[aria-invalid="true"],select[aria-invalid="true"]{border-color:var(--rouge)}
input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;accent-color:var(--foret)}
input[type=range]{padding:0;border:0;min-height:0;accent-color:var(--foret)}
.case{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:.92rem}
.case input{margin-top:2px;flex:none}
.robot{position:absolute;left:-9999px}
.msg{padding:12px 16px;border-radius:16px;margin:12px 0}
.msg.ok{background:var(--feuille);color:var(--foret2)}
.msg.err{background:var(--rouge2);color:#7a1a14}
.erreur-champ{color:var(--rouge);font-size:.86rem;margin:4px 0 0;font-weight:600}
.choix{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:8px 0}
.choix label{margin:0;border:2px solid var(--trait);border-radius:18px;padding:12px 14px;background:#fff;cursor:pointer;font-weight:600;display:flex;gap:8px;align-items:flex-start}
.choix label:has(input:checked){border-color:var(--foret);background:var(--foret3)}
.choix-cartes{border:0;padding:0;margin:6px 0 4px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.choix-cartes legend{font-weight:700;margin-bottom:6px;padding:0}
.choix-cartes label{margin:0;border:2px solid var(--trait);border-radius:18px;padding:10px;background:#fff;cursor:pointer;display:flex;gap:6px;align-items:flex-start;font-weight:400;font-size:.88rem}
.choix-cartes label b{display:block;font-size:.98rem}
.choix-cartes label:has(input:checked){border-color:var(--foret);background:var(--soleil3)}
.choix-cartes input{margin-top:2px}
@media (max-width:420px){.choix-cartes{grid-template-columns:1fr}}
.panneau{background:#fff;border:2px solid var(--trait);border-radius:var(--r2);padding:22px}
.panneau.soleil{background:var(--soleil4);border-color:var(--soleil2)}

/* ---------- Simulateur ---------- */
.simu{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;align-items:start}
@media (max-width:900px){.simu{grid-template-columns:1fr}}
.resultat{position:sticky;top:86px}
@media (max-width:900px){.resultat{position:static}}
.resultat .panneau:first-child{background:var(--foret);border-color:var(--foret);color:#e3f3ec}
.resultat .panneau:first-child strong,.resultat .panneau:first-child h2{color:#fff}
.resultat .panneau:first-child a{color:var(--soleil)}
.resultat .panneau:first-child .muted{color:#bfe0d1}
.resultat .panneau:first-child .msg.err{background:#fff3c4;color:#4d3600}
.resultat .panneau:first-child .msg.ok{background:#d4efe2;color:var(--foret2)}
.economie-geante{margin:6px 0 4px}
.economie-geante b{display:block;font:800 clamp(3.2rem,11vw,5.6rem)/1 var(--titre);color:var(--soleil);letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.economie-geante span{font-weight:600;color:#d4efe2}
.gros{font:800 clamp(1.8rem,5vw,2.6rem) var(--titre);color:var(--foret);line-height:1.1}
.resultat .panneau:first-child .gros{color:var(--soleil)}
.resultat .kpi{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
.resultat .kpi b{color:#fff}.resultat .kpi span{color:#cfe8dc}
.resultat .table-wrap{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16)}
.resultat th{background:rgba(255,255,255,.1);color:#fff}.resultat td{border-color:rgba(255,255,255,.12)}
.voisins .v{display:grid;grid-template-columns:1fr 130px 48px;gap:8px;align-items:end;margin-bottom:8px}
.voisins .v label{margin:0 0 4px;font-size:.84rem}
.suppr{background:#fff;border:2px solid var(--trait);border-radius:50%;width:48px;height:48px;cursor:pointer;color:var(--doux);font-size:1rem}
.suppr:hover{border-color:var(--rouge);color:var(--rouge)}
.liste-communes{list-style:none;margin:6px 0 0;padding:0;border-radius:18px;background:#fff;max-height:240px;overflow:auto;box-shadow:0 18px 40px -12px rgba(11,79,60,.3);border:1px solid var(--trait)}
.liste-communes li button{display:block;width:100%;text-align:left;background:none;border:0;padding:11px 16px;font:inherit;cursor:pointer;color:var(--encre)}
.liste-communes li button:hover,.liste-communes li button:focus{background:var(--soleil3)}
.barre{height:14px;border-radius:999px;background:rgba(255,255,255,.16);overflow:hidden;margin:6px 0}
.barre i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--soleil),#ffe58f)}
.etape-num{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--soleil);color:var(--encre);font:800 1rem var(--titre);margin-right:8px;vertical-align:4px}

/* ---------- Barre d'action mobile toujours visible ---------- */
.barre-action{display:none}
@media (max-width:760px){
  .barre-action{display:flex;position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:40;gap:10px;align-items:center;background:var(--foret);color:#fff;border-radius:999px;padding:8px 8px 8px 18px;box-shadow:0 14px 30px -10px rgba(7,58,44,.6)}
  .barre-action .info{flex:1;min-width:0;font-weight:700;font-size:.92rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .barre-action .info b{color:var(--soleil);font-family:var(--titre);font-size:1.15rem}
  .barre-action .btn{min-height:44px;padding:10px 16px;box-shadow:none;flex:none}
  body.avec-barre{padding-bottom:84px}
}

/* ---------- Blog et articles ---------- */
.fil{font-size:.88rem;color:var(--doux);margin:18px 0 0}
.fil a{color:var(--doux)}
.article{padding-bottom:30px}
.article h1{font-size:clamp(2rem,6vw,3.2rem)}
.article .meta{color:var(--doux);font-size:.92rem}
.article li{margin:.35em 0}
.article h2{font-size:clamp(1.45rem,4vw,2rem)}
.cta{background:var(--foret);color:#e3f3ec;border-radius:var(--r2);padding:26px;margin:32px 0;position:relative;overflow:hidden}
.cta::after{content:"";position:absolute;right:-60px;bottom:-60px;width:180px;height:180px;border-radius:50%;background:var(--soleil);opacity:.9}
.cta>*{position:relative;z-index:1}
.cta h2,.cta h3{color:#fff;margin-top:0}
.cta .btn{background:var(--soleil);border-color:var(--soleil);color:var(--encre);box-shadow:0 4px 0 #d99a00}
.cta .btn:hover{background:#ffd25e;border-color:#ffd25e}
.cta a:not(.btn){color:var(--soleil)}
.liste-articles{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.liste-articles a.fiche{text-decoration:none;color:inherit;display:block;transition:transform .15s,border-color .15s}
.liste-articles a.fiche:hover{border-color:var(--soleil);transform:translateY(-2px)}
.liste-articles h2{color:var(--foret)}
details{background:#fff;border:2px solid var(--trait);border-radius:20px;padding:14px 18px;margin:10px 0}
details[open]{border-color:var(--soleil2);background:var(--soleil4)}
summary{cursor:pointer;font-weight:700;color:var(--foret)}

/* ---------- Application ---------- */
.app-entete{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:20px 0 6px}
.onglets{display:flex;gap:6px;overflow-x:auto;margin:14px 0 18px;padding:4px;background:var(--foret3);border-radius:999px}
.onglets a{padding:10px 16px;text-decoration:none;color:var(--encre2);border-radius:999px;white-space:nowrap;font-weight:600}
.onglets a[aria-current="page"]{color:var(--encre);background:var(--soleil)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0}
.kpi{background:#fff;border:2px solid var(--trait);border-radius:var(--r);padding:16px}
.kpi b{display:block;font:800 1.6rem var(--titre);color:var(--foret);letter-spacing:-.02em}
.kpi span{font-size:.86rem;color:var(--doux)}
.kpis.vivants .kpi:first-child{background:var(--foret);border-color:var(--foret)}
.kpis.vivants .kpi:first-child b{color:var(--soleil)}.kpis.vivants .kpi:first-child span{color:#d4efe2}
.doc{background:#fff;border:2px solid var(--trait);border-radius:var(--r);padding:24px;line-height:1.6}
.doc h2{margin-top:0}
.modale{position:fixed;inset:0;background:rgba(7,58,44,.5);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}
.modale .boite{background:#fff;border-radius:var(--r2);max-width:480px;width:100%;padding:24px;max-height:92vh;overflow:auto}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--foret);color:#fff;padding:12px 20px;border-radius:999px;z-index:60;max-width:92vw}
.graph{display:flex;align-items:flex-end;gap:6px;height:160px;padding:10px 0;border-bottom:2px solid var(--trait)}
.graph div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;min-width:12px}
.graph i{display:block;border-radius:8px 8px 0 0}
.graph .l{background:var(--soleil)}
.graph .r{background:#b9d7c9}
.legende{display:flex;flex-wrap:wrap;gap:14px;font-size:.86rem;color:var(--doux);margin:6px 0}
.legende i{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.etapes-app{padding-left:40px}
.etapes-app li{margin:6px 0}
.etapes-app li.fait::marker{content:"✓  ";color:var(--foret)}
.panneau-int{border:2px solid var(--trait);border-radius:var(--r);padding:12px 16px;margin:14px 0}
.panneau-int legend{font-weight:700;padding:0 6px}
.soleil-carte{display:grid;grid-template-columns:1fr 1.3fr;gap:16px;align-items:center;background:var(--soleil4);border:2px solid var(--soleil2);border-radius:var(--r);padding:16px 18px;margin:8px 0 14px}
.soleil-carte .case{grid-column:1/-1;margin:0}
@media (max-width:760px){.soleil-carte{grid-template-columns:1fr}}
.courbe-jour{width:100%;height:auto;display:block}
.courbe-jour rect.b{fill:var(--soleil2)}.courbe-jour rect.b-fort{fill:var(--soleil)}.courbe-jour rect.b-now{fill:var(--foret)}
.courbe-jour text{font:11px var(--sans);fill:var(--doux)}
.qr-zone{background:#fff;border:2px solid var(--trait);border-radius:16px;padding:6px;margin:14px 0;overflow-x:auto}
.qr-facture{display:block;width:100%;min-width:540px;height:auto}

/* ---------- Réseau de voisins, carte ---------- */
.compteur-ligne{margin:.4em 0 1em;color:var(--encre2)}
.compteur-ligne b{color:var(--foret);font:800 1.2rem var(--titre)}
.compteurs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.compteurs>div{background:var(--soleil4);border-radius:var(--r);padding:14px 16px}
.compteurs>div:first-child{background:var(--soleil)}
.compteurs b{display:block;font:800 clamp(1.7rem,5vw,2.4rem)/1.05 var(--titre);color:var(--foret);letter-spacing:-.03em}
.compteurs span{font-size:.84rem;color:var(--encre2);font-weight:600}
@media (max-width:420px){.compteurs{grid-template-columns:1fr}.compteurs>div{display:flex;gap:12px;align-items:baseline}}
.hero-grille{display:grid;grid-template-columns:1.1fr 1fr;gap:30px;align-items:start}
.hero-grille>div{min-width:0}
@media (max-width:860px){.hero-grille{grid-template-columns:1fr}}
.partage .actions{display:flex;flex-wrap:wrap;gap:8px}
.reseau-ok{background:var(--soleil3);border-radius:var(--r2);padding:20px}
.reseau-ok .grand,.grand{font:800 1.35rem var(--titre);color:var(--foret);margin:.2em 0 .5em}
.reseau-ok a,.partage a,.encadre a{overflow-wrap:anywhere}
.carte{background:var(--foret3);border-radius:var(--r2);padding:12px;max-width:860px}
.carte.petite{max-width:520px}
.carte-svg{display:block;width:100%;height:auto}
.carte-svg .pt{fill:#9fbfb0;opacity:.8}
.carte-svg .pt-focus{fill:var(--foret);opacity:1}
.carte-svg .pt-actif{fill:var(--soleil);stroke:#fff;stroke-width:1.5;opacity:.97}
.carte-svg .pt-cel{fill:var(--foret)}
.carte-svg a:hover circle,.carte-svg a:focus circle{fill:var(--menthe);opacity:1}
.carte-accueil{display:grid;grid-template-columns:1.6fr 1fr;gap:24px;align-items:center}
@media (max-width:800px){.carte-accueil{grid-template-columns:1fr}}
.liens-communes{line-height:2.1}
details.canton{border:0;border-bottom:2px solid var(--trait);border-radius:0;padding:10px 0;background:none}
details.canton[open]{background:none}
details.canton summary{font:800 1.2rem var(--titre)}
.etapes-liste{counter-reset:e;list-style:none;padding:0}
.etapes-liste li{counter-increment:e;position:relative;padding:4px 0 10px 54px;margin:8px 0}
.etapes-liste li::before{content:counter(e);position:absolute;left:0;top:0;width:40px;height:40px;border-radius:50%;background:var(--soleil);color:var(--encre);display:grid;place-items:center;font:800 1.05rem var(--titre)}
.fiche.ouverte{margin:12px 0}
.affiche{background:#fff;border:4px solid var(--foret);border-radius:var(--r2);padding:32px;text-align:center;margin-top:18px}
.affiche-sur{font:800 .95rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--foret);background:var(--soleil);display:inline-block;padding:6px 14px;border-radius:999px}
.affiche-titre{font-size:clamp(1.8rem,6vw,3rem);margin:.3em 0}
.affiche-texte{font-size:1.1rem;max-width:520px;margin:12px auto}
.affiche-qr{width:min(280px,70%);height:auto;margin:10px auto;display:block}
.affiche-pied{color:var(--doux);font-size:.9rem;margin-top:20px}

/* ---------- Pied de page ---------- */
.pied{background:var(--foret);color:#cfe8dc;padding:46px 0 30px;margin-top:60px;font-size:.94rem;border-radius:44px 44px 0 0;position:relative;overflow:hidden}
.pied::before{content:"";position:absolute;left:50%;top:-140px;width:280px;height:280px;margin-left:-140px;border-radius:50%;background:radial-gradient(circle,rgba(255,197,61,.45),transparent 62%)}
.pied .wrap{position:relative}
.pied a{color:#fff;text-decoration-color:var(--soleil)}
.pied .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px}
.pied h2{font:800 1.1rem var(--titre);color:var(--soleil);margin:0 0 10px;letter-spacing:-.01em}
.pied ul{list-style:none;padding:0;margin:0}
.pied li{margin:7px 0}
.pied .devise{font:800 clamp(1.6rem,5vw,2.4rem)/1.1 var(--titre);color:#fff;margin:0 0 22px;letter-spacing:-.03em}
.pied .devise span{color:var(--soleil)}

/* ---------- Impression ---------- */
@media print{
  .entete,.pied,.onglets,.no-print,.btn,.toast,.barre-action,.fil{display:none!important}
  body{background:#fff;padding:0!important}
  .doc,.fiche,.kpi{border-color:#999}
  .affiche{border:none;padding:0;margin:0}
  .qr-zone{border:none;padding:0;overflow:visible}
  .qr-facture{width:210mm;min-width:0;page-break-inside:avoid}
}
#impression{display:none}
@media print{
  body.mode-impression > *:not(#impression){display:none!important}
  body.mode-impression #impression{display:block!important}
  #impression .doc{border:0;padding:0}
}
@media (max-width:760px){.flux .etiquette-svg{display:none}}
