/* Franc-Parler - feuille editoriale locale (aucun CDN)
   Palette : bleu nuit profond + fonds clairs + accent ocre limite */
:root{
  --encre:#1c2733;
  --bleu:#1c2e4a;
  --bleu-70:#4a5a72;
  --bleu-surface:#eef1f6;
  --accent:#c9a227;
  --accent-fonce:#8a6f14;
  --bord:#ddd8cb;
  --bord-bleu:#d7dce6;
  --fond:#faf9f5;
  --fond-cartes:#ffffff;
  --vert:#3d6b4f;
  --rouge:#8c3b31;
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif;
  --sans:Verdana,Geneva,Arial,sans-serif;
  --mono:"SF Mono",Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--fond);color:var(--encre);
  font-family:var(--sans);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto}
a{color:var(--bleu);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--accent-fonce)}
:focus-visible{outline:2px solid var(--accent-fonce);outline-offset:2px}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px}
.wrap-etroit{max-width:720px;margin:0 auto;padding:0 24px}
.visually-hidden,.skip-link{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap}
.skip-link:focus{position:fixed;top:12px;left:12px;width:auto;height:auto;clip:auto;
  background:var(--fond);border:1px solid var(--bleu);padding:10px 16px;z-index:100}

/* ---------- en-tete ---------- */
.site-header{background:var(--fond);border-bottom:1px solid var(--bord);}
.header-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-top:16px;padding-bottom:16px;flex-wrap:wrap;position:relative}
.brand{text-decoration:none;color:var(--bleu);display:inline-flex;flex-direction:column;gap:2px}
.brand-name{font-family:var(--serif);font-weight:700;font-size:26px;letter-spacing:.5px}
.brand-dash{color:var(--accent)}
.brand-signature{font-size:11px;color:var(--bleu-70);letter-spacing:.4px}
.nav ul{list-style:none;display:flex;gap:22px;margin:0;padding:0;align-items:center}
.nav a{color:var(--encre);text-decoration:none;font-size:15px;padding:6px 2px;
  border-bottom:2px solid transparent}
.nav a:hover{border-bottom-color:var(--accent)}
.nav a[aria-current="page"]{border-bottom-color:var(--bleu);font-weight:bold}
.nav-toggle{display:none;background:none;border:1px solid var(--bord-bleu);
  border-radius:6px;padding:10px;cursor:pointer}
.nav-toggle-bar{display:block;width:20px;height:2px;background:var(--bleu);position:relative}
.nav-toggle-bar::before,.nav-toggle-bar::after{content:"";position:absolute;left:0;
  width:20px;height:2px;background:var(--bleu)}
.nav-toggle-bar::before{top:-6px}.nav-toggle-bar::after{top:6px}

/* ---------- boutons ---------- */
.btn{display:inline-block;background:var(--bleu);color:#fff;text-decoration:none;
  font-size:15px;padding:11px 20px;border-radius:6px;border:1px solid var(--bleu);
  cursor:pointer;font-family:var(--sans)}
.btn:hover{background:#14243c;color:#fff}
.btn-secondaire{background:transparent;color:var(--bleu)}
.btn-secondaire:hover{background:var(--bleu-surface);color:var(--bleu)}
.btn-accent{background:var(--accent);border-color:var(--accent);color:#3a2f07}
.btn-accent:hover{background:#b89420;color:#3a2f07}
.btn-sm{font-size:13px;padding:7px 13px}

/* ---------- sections accueil ---------- */
.hero{padding:44px 0 36px;border-bottom:1px solid var(--bord)}
.hero-wrap{max-width:780px}
.surtitle{font-size:12px;letter-spacing:2.5px;text-transform:uppercase;
  color:var(--accent-fonce);font-weight:bold;margin:0 0 14px}
.hero h1{font-family:var(--serif);font-size:40px;line-height:1.2;color:var(--bleu);
  margin:0 0 16px}
.hero .lead{font-size:18px;color:var(--bleu-70);line-height:1.65;margin:0 0 26px;
  font-family:var(--serif)}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}

.section{padding:44px 0;border-bottom:1px solid var(--bord)}
.section:last-of-type{border-bottom:none}
.section-titre{font-family:var(--serif);font-size:28px;color:var(--bleu);margin:0 0 8px}
.section-sous{color:var(--bleu-70);margin:0 0 28px;max-width:640px}
.section-actions{margin-top:24px}

.newsletters{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.newsletter-card h3{font-family:var(--serif);font-size:22px;color:var(--bleu);margin:0 0 8px}
.newsletter-card p{margin:0 0 14px}
.themes{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.themes li{font-size:12.5px;color:var(--bleu);background:var(--bleu-surface);
  border:1px solid var(--bord-bleu);border-radius:99px;padding:4px 12px}
.newsletter-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.carte{background:var(--fond-cartes);border:1px solid var(--bord);border-radius:8px;
  overflow:hidden;display:flex;flex-direction:column}
.carte img{width:100%;aspect-ratio:3/2;object-fit:cover;border-bottom:1px solid var(--bord)}
.carte-contenu{padding:18px 20px 20px;display:flex;flex-direction:column;gap:9px;flex:1}
.carte-meta{font-size:12px;color:var(--bleu-70);display:flex;gap:8px;flex-wrap:wrap}
.carte-meta .cat{font-weight:bold;letter-spacing:.8px;text-transform:uppercase;font-size:11px}
.cat-marches{color:#35558a}
.cat-education{color:var(--accent-fonce)}
.carte h3{font-family:var(--serif);font-size:19px;line-height:1.35;margin:0}
.carte h3 a{color:var(--bleu);text-decoration:none}
.carte h3 a:hover{color:var(--accent-fonce)}
.carte .resume{font-size:14.5px;color:var(--bleu-70);line-height:1.55;margin:0}
.etat-vide{background:var(--fond-cartes);border:1px dashed var(--bord);border-radius:8px;
  padding:32px;text-align:center;color:var(--bleu-70)}

.outils-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.outil-card h3{font-family:var(--serif);font-size:20px;color:var(--bleu);margin:0 0 10px}
.outil-card p{font-size:14.5px;color:var(--bleu-70);margin:0 0 8px}
.outil-utilite{font-size:13.5px;color:var(--encre);border-left:3px solid var(--accent);
  padding-left:12px;margin:10px 0 16px}

.auteur{display:flex;gap:36px;align-items:center}
.auteur-photo{width:170px;height:170px;border-radius:50%;object-fit:cover;
  border:1px solid var(--bord);flex-shrink:0}
.auteur h3{font-family:var(--serif);font-size:22px;color:var(--bleu);margin:0 0 10px}
.auteur p{margin:0 0 14px}

/* ---------- rubrique / article ---------- */
.page-entete{padding:40px 0 26px;border-bottom:1px solid var(--bord);margin-bottom:32px}
.filed-ariane{font-size:13px;color:var(--bleu-70);margin:0 0 12px}
.filed-ariane a{color:var(--bleu-70)}
.article-grid{display:grid;grid-template-columns:minmax(0,720px) minmax(220px,300px);
  gap:48px;align-items:start}
.article h1{font-family:var(--serif);font-size:36px;line-height:1.22;color:var(--bleu);
  margin:10px 0 14px}
.article-corps{font-family:var(--serif);font-size:17.5px;line-height:1.75}
.article-corps p{margin:0 0 20px}
.article-corps h2{font-family:var(--sans);font-size:22px;color:var(--bleu);margin:34px 0 14px;
  line-height:1.3}
.article-corps h3{font-family:var(--sans);font-size:18px;color:var(--bleu);margin:28px 0 12px}
.article-corps ul,.article-corps ol{margin:0 0 20px;padding-left:24px}
.article-corps li{margin-bottom:8px}
.article-corps blockquote{border-left:3px solid var(--accent);margin:22px 0;padding:4px 0 4px 20px;
  color:var(--bleu-70);font-style:italic}
.article-corps figure{margin:26px 0}
.article-corps figcaption{font-size:13px;color:var(--bleu-70);margin-top:8px;
  font-family:var(--sans)}
.article-corps table{border-collapse:collapse;width:100%;margin:22px 0;font-family:var(--sans);
  font-size:14.5px}
.article-corps th,.article-corps td{border:1px solid var(--bord);padding:8px 12px;text-align:left}
.article-corps th{background:var(--bleu-surface);color:var(--bleu)}
.article-corps pre{background:#f1efe8;border:1px solid var(--bord);border-radius:6px;
  padding:14px 16px;overflow:auto;font-size:13.5px}
.article-corps code{font-family:var(--mono);font-size:.92em}
.article-corps a{text-decoration-line:underline}
.article-image{margin:0 0 24px}
.article-image img{width:100%;border-radius:8px;border:1px solid var(--bord)}

.aside-box{background:var(--fond-cartes);border:1px solid var(--bord);border-radius:8px;
  padding:20px;margin-bottom:20px}
.aside-box h4{margin:0 0 12px;font-size:14px;letter-spacing:1px;text-transform:uppercase;
  color:var(--bleu)}
.aside-box ul{list-style:none;margin:0;padding:0}
.aside-box li{margin-bottom:10px;font-size:14.5px}
.aside-box .lien-extrait{font-size:14px}
.aside-box .meta-extrait{font-size:12px;color:var(--bleu-70);margin-bottom:2px}

.partage{display:flex;gap:10px;margin:30px 0;border-top:1px solid var(--bord);
  padding-top:20px;align-items:center}
.partage-label{font-size:13.5px;color:var(--bleu-70);margin-right:6px}
.partage button{background:var(--fond-cartes);border:1px solid var(--bord-bleu);
  border-radius:6px;padding:8px 14px;font-size:13.5px;cursor:pointer;color:var(--bleu)}
.partage button:hover{border-color:var(--bleu)}
.flash-copie{color:var(--vert);font-size:13px;margin-left:8px}

.sources-list{font-size:13.5px;color:var(--bleu-70)}
.sources-list li{margin-bottom:6px;word-break:break-word}
article .article-corps p:first-child:first-letter{ /* lettrine discrete uniquement si marquee */
}

/* ---------- formulaire newsletter ---------- */
.nl-form{max-width:640px}
.choices{display:grid;gap:12px;margin:14px 0 20px}
.choice{display:flex;gap:12px;align-items:flex-start;background:var(--fond-cartes);
  border:1px solid var(--bord);border-radius:8px;padding:14px 16px}
.choice input{margin-top:5px;accent-color:var(--bleu);width:17px;height:17px}
.choice label{font-size:15px}
.choice small{display:block;color:var(--bleu-70);font-size:13px;margin-top:3px}
.champ{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.champ label{font-size:14px;font-weight:bold;color:var(--bleu)}
.champ input[type=email],.champ input[type=password],.champ input[type=text],
.champ textarea,.champ select{padding:10px 12px;border:1px solid var(--bord-bleu);
  border-radius:6px;font-size:15px;font-family:var(--sans);background:#fff;color:var(--encre)}
.champ textarea{min-height:260px;resize:vertical;font-family:var(--mono);font-size:13.5px;
  line-height:1.55}
.consent{font-size:13.5px;color:var(--bleu-70);display:flex;gap:10px;align-items:flex-start;
  margin:16px 0}
.consent input{margin-top:3px;accent-color:var(--bleu)}
.mentions-formulaire{font-size:12.5px;color:var(--bleu-70);margin-top:14px}
.mention-success{background:#eef4ef;border:1px solid #cfe0d3;color:var(--vert);
  border-radius:8px;padding:14px 16px;margin-bottom:18px}
.mention-erreur{background:#f8efee;border:1px solid #e2ccc8;color:var(--rouge);
  border-radius:8px;padding:14px 16px;margin-bottom:18px}
.hp-field{position:absolute;left:-5000px;top:-5000px;opacity:0;height:0;overflow:hidden}

/* ---------- outils ---------- */
.outil-entete{margin-bottom:24px}
.outil-panneau{background:var(--fond-cartes);border:1px solid var(--bord);border-radius:10px;
  padding:26px;margin-bottom:30px}
.outil-grid{display:grid;grid-template-columns:minmax(0,520px) minmax(280px,380px);
  gap:40px;align-items:start}
.resultats{position:sticky;top:20px}
.chiffre-cle{border-bottom:1px solid var(--bord);padding:12px 0}
.chiffre-cle:last-child{border-bottom:none}
.chiffre-cle dt{font-size:13px;color:var(--bleu-70)}
.chiffre-cle dd{margin:2px 0 0;font-family:var(--serif);font-size:26px;font-weight:bold;
  color:var(--bleu)}
.chiffre-cle dd.acc{color:var(--rouge)}
.chiffre-cle dd.pos{color:var(--vert)}
.resultat-liste{list-style:none;margin:0;padding:0}
.resultat-liste li{margin-bottom:12px}
.resultat-liste .val{font-family:var(--serif);font-size:24px;font-weight:bold;color:var(--bleu)}
.resultat-liste .nom{font-size:13px;color:var(--bleu-70)}
.resultat-liste .neg{color:var(--rouge)}
table.comparaison{width:100%;border-collapse:collapse;font-size:14.5px}
table.comparaison th,table.comparaison td{border:1px solid var(--bord);padding:9px 12px}
table.comparaison th{background:var(--bleu-surface)}
.hypotheses{font-size:13.5px;color:var(--bleu-70);line-height:1.7}
.hypotheses h4{font-size:13px;letter-spacing:1px;text-transform:uppercase;margin:0 0 8px;
  color:var(--bleu)}
.note-hypotheses{background:var(--bleu-surface);border-radius:8px;padding:16px 20px}
.avertissement{border-left:3px solid var(--accent);padding:10px 16px;font-size:14px;
  color:var(--bleu-70);background:var(--fond-cartes);border-radius:0 8px 8px 0;margin:18px 0}
.erreur-calcul{border:1px solid #e2ccc8;background:#f8efee;color:var(--rouge);
  border-radius:8px;padding:12px 16px;margin:0 0 22px}

/* ---------- admin ---------- */
.admin-shell{max-width:1180px;margin:34px auto;padding:0 24px}
.admin-shell h1{font-family:var(--serif);color:var(--bleu);font-size:32px}
.admin-nav{display:flex;gap:18px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--bord);
  padding-bottom:14px;margin-bottom:26px}
.admin-nav .spacer{flex:1}
.admin-table{width:100%;border-collapse:collapse;font-size:14.5px;background:var(--fond-cartes);
  border:1px solid var(--bord);border-radius:8px;overflow:hidden}
.admin-table th,.admin-table td{padding:10px 12px;border-bottom:1px solid var(--bord);
  text-align:left;vertical-align:top}
.admin-table th{background:var(--bleu-surface);font-size:12.5px;text-transform:uppercase;
  letter-spacing:.8px;color:var(--bleu)}
.admin-table tr:last-child td{border-bottom:none}
.badge{display:inline-block;font-size:11.5px;border-radius:99px;padding:3px 10px;font-weight:bold}
.badge-publie{background:#e6efe8;color:var(--vert)}
.badge-brouillon{background:#efeadd;color:#7a6a2f}
.badge-attente{background:#efeadd;color:#7a6a2f}
.badge-desabonne{background:#eee;color:#777}
.admin-champ{margin-bottom:14px}
.admin-champ label{display:block;font-weight:bold;font-size:14px;margin-bottom:5px;color:var(--bleu)}
.admin-champ small{color:var(--bleu-70);font-weight:normal}
.admin-champ input,.admin-champ select{width:100%;padding:9px 12px;border:1px solid var(--bord-bleu);
  border-radius:6px;font-size:15px;font-family:var(--sans)}
.admin-champ input[type=checkbox]{width:auto;accent-color:var(--bleu)}
.admin-col2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.admin-col3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:18px}
.stat-card{display:inline-block;background:var(--fond-cartes);border:1px solid var(--bord);
  border-radius:8px;padding:14px 20px;margin:0 12px 12px 0}
.stat-card .num{font-family:var(--serif);font-size:26px;font-weight:bold;color:var(--bleu)}
.stat-card .lbl{font-size:12.5px;color:var(--bleu-70)}
.errors-box{border:1px solid #e2ccc8;background:#f8efee;color:var(--rouge);border-radius:8px;
  padding:14px 18px;margin-bottom:20px}
.errors-box ul{margin:0;padding-left:20px}

/* ---------- footer ---------- */
.site-footer{background:#101a2b;color:#cdd4e0;margin-top:50px;padding:44px 0 26px;
  font-size:14.5px}
.site-footer a{color:#e8ecf4;text-decoration:none}
.site-footer a:hover{text-decoration:underline;color:#fff}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:34px;margin-bottom:26px}
.footer-brand{font-family:var(--serif);font-size:22px;color:#fff;margin:0 0 10px}
.footer-title{font-size:12px;letter-spacing:1.6px;text-transform:uppercase;color:#8fa1bd;
  margin:0 0 12px}
.footer-note{font-size:12.5px;color:#8fa1bd;max-width:420px}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin-bottom:9px}
.footer-bottom{border-top:1px solid #2a3852;padding-top:18px;font-size:12.5px;color:#8fa1bd}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .cards,.outils-grid{grid-template-columns:repeat(2,1fr)}
  .article-grid{grid-template-columns:1fr}
  .resultats{position:static}
  .outil-grid{grid-template-columns:1fr}
}
@media (max-width:760px){
  .hero h1{font-size:30px}
  .section{padding:34px 0}
  .newsletters{grid-template-columns:1fr}
  .auteur{flex-direction:column;align-items:flex-start;gap:20px}
  .footer-grid{grid-template-columns:1fr;gap:22px}
  .admin-col2,.admin-col3{grid-template-columns:1fr}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--fond);
    border:1px solid var(--bord);border-radius:0 0 8px 8px;z-index:50;box-shadow:0 8px 20px rgba(28,46,74,.08)}
  .nav.open{display:block}
  .nav ul{flex-direction:column;align-items:stretch;gap:0;padding:8px 0}
  .nav li a{display:block;padding:12px 22px;border-bottom:none}
  .nav li a[aria-current="page"]{background:var(--bleu-surface)}
  .nav li a.btn{margin:10px 16px;text-align:center}
  .nav-toggle{display:inline-flex}
  .brand-signature{display:none}
  .header-bar{padding-top:12px;padding-bottom:12px}
}
@media (max-width:520px){
  .cards,.outils-grid{grid-template-columns:1fr}
  .article h1{font-size:28px}
  .hero h1{font-size:26px}
  .wrap{padding:0 16px}
}
@media print{
  .site-header,.site-footer,.partage,.aside-box{display:none}
  body{background:#fff}
}
