/* AO Maroc — site public */
:root{--navy:#0d1b3e;--navy2:#163a7c;--or:#d4af37;--enc:#1a2233;--gris:#5a6472;
--fond:#f5f7fa;--carte:#fff;--bord:#e3e6ec;--bleu:#0d47a1}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
color:var(--enc);background:var(--fond);font-size:16px;line-height:1.5}
a{color:var(--bleu)}
.inner{max-width:1000px;margin:0 auto;padding:0 16px}
/* header */
.site-header{background:var(--navy);position:sticky;top:0;z-index:50;
box-shadow:0 2px 8px rgba(13,27,62,.25)}
.site-header .inner{display:flex;align-items:center;justify-content:space-between;
height:56px}
.marque{display:flex;align-items:center;gap:8px;text-decoration:none}
.marque .logo{font-size:1.4rem}
.marque .nom{color:#fff;font-weight:800;font-size:1.15rem;letter-spacing:.5px}
.marque .or{color:var(--or)}
.site-header nav{display:flex;gap:4px}
.site-header nav a{color:#cfd8ea;text-decoration:none;padding:6px 12px;
border-radius:8px;font-size:.92rem;white-space:nowrap}
.site-header nav a.on,.site-header nav a:hover{background:rgba(255,255,255,.12);color:#fff}
main{max-width:1000px;margin:0 auto;padding:20px 16px 40px}
h1{font-size:1.5rem;line-height:1.3;margin:.4em 0}
h2{font-size:1.15rem;margin:1.4em 0 .6em}
.ss-titre{color:var(--gris);margin-top:-4px}
.fil{font-size:.85rem;color:var(--gris);margin-bottom:8px}
.cats{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.cats a{flex:1 1 140px;text-align:center;background:#fff;border:1px solid var(--bord);border-radius:12px;padding:10px 12px;
  font-weight:700;color:var(--navy);text-decoration:none;font-size:.95rem}
.cats a b{color:var(--bleu);font-weight:800;margin-left:4px}
.cats a.on{background:var(--navy);color:#fff;border-color:var(--navy)}.cats a.on b{color:var(--or)}
.cats a:hover{border-color:var(--bleu)}
@media(max-width:700px){.cats a{padding:8px 6px;font-size:.85rem}}
.intro{color:#3b465a;font-size:.92rem;line-height:1.55;margin:0 0 12px}
.intro-bas{margin:18px 0 6px}.intro-bas .intro{color:#6b7587;font-size:.84rem;margin:0}
.h2-liens{font-size:1rem;margin:14px 0 6px}
.pied-liens{font-size:.78rem;line-height:1.8;opacity:.85}
.fil a{text-decoration:none}
/* hero */
.hero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;
border-radius:16px;padding:34px 26px;margin-bottom:10px}
.hero h1{font-size:1.7rem;margin:0 0 8px}
.or-txt{color:var(--or)}
.accroche{color:#cfd8ea;margin:0 0 18px}
.recherche{display:flex;gap:8px;max-width:560px}
.recherche input{flex:1;border:none;border-radius:10px;padding:13px 14px;font-size:1rem}
.recherche button{background:var(--or);color:var(--navy);font-weight:800;border:none;
border-radius:10px;padding:0 20px;font-size:1rem;cursor:pointer}
.stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:22px}
.stats div{text-align:center}
.stats b{display:block;font-size:1.35rem}
.stats span{font-size:.78rem;color:#cfd8ea}
/* cartes */
.grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.liste-offres{display:flex;flex-direction:column;gap:12px}
.offre{background:var(--carte);border:1px solid var(--bord);border-radius:12px;
padding:14px 16px;box-shadow:0 1px 3px rgba(13,27,62,.05)}
.offre h3{font-size:.98rem;margin:0 0 6px;line-height:1.35}
.offre h3 a{color:var(--enc);text-decoration:none}
.offre h3 a:hover{color:var(--bleu)}
.offre p{margin:3px 0;font-size:.88rem;color:var(--gris)}
.offre .ach{color:#3b465a;font-weight:600}
.offre .bas{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;align-items:center}
.mnt{color:#2e7d32;font-weight:700;font-size:.88rem}
.alloti{background:#f2f4f8;border:1px solid var(--bord);border-radius:6px;
padding:2px 8px;font-size:.82rem}
.lim{background:#e3f2fd;color:var(--bleu);border-radius:6px;padding:2px 8px;
font-size:.82rem}
.lim.rouge{background:#fdecea;color:#b71c1c}
.lim.orange{background:#fff3e0;color:#e65100}
.cau{color:#d84315;font-weight:700;font-size:.85rem}
.actions-carte{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px!important}
.actions-carte .btn{padding:8px 13px;font-size:.86rem}
.carte-tete{font-size:.82rem;color:#111!important;font-weight:700;margin:0 0 6px!important;
padding-bottom:5px;border-bottom:1px solid #eef1f6}
.bascule{display:inline-flex;gap:0;margin-top:10px;border:1px solid var(--bord);
border-radius:9px;overflow:hidden}
.bascule button{background:#fff;border:none;padding:9px 18px;font-size:.9rem;
cursor:pointer;color:var(--gris);font-weight:600}
.bascule button.on{background:var(--navy);color:#fff}
/* boite filtre acheteur (barre + suggestions) */
.ach-box{position:relative;flex:1;min-width:150px}
.ach-box input{width:100%;border:1px solid var(--bord);border-radius:9px;
padding:9px;font-size:.92rem;background:#fff}
.ach-box .sugg{position:absolute;left:0;right:0;top:100%;z-index:45;margin-top:2px;
border-radius:10px}
/* banniere de mode qui clignote */
.abo{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#fff8e1;border:1px solid #f1dc9a;
  border-radius:12px;padding:10px 14px;margin:0 0 12px}
.abo-txt{flex:1 1 240px;display:flex;flex-direction:column;font-size:.86rem;color:#5a4a12}
.abo-txt b{font-size:.95rem;color:var(--navy)}
.abo input{flex:1 1 180px;min-width:0;border:1px solid #e4d08a;border-radius:9px;padding:9px 12px;font-size:.9rem;background:#fff}
.abo .btn{cursor:pointer;padding:9px 16px;font-weight:700}
@media(max-width:700px){.bandeau-titre{padding:12px 14px!important}.bandeau-titre h1{font-size:1.05rem!important;margin-bottom:3px!important}.ss-titre-hero{font-size:.78rem!important}
  .abo{flex-direction:column;align-items:stretch;gap:7px;padding:10px 12px}
  .abo-txt,.abo input,.abo .btn{flex:none;width:100%;box-sizing:border-box}.abo-txt span{font-size:.8rem}}
.abo-cat{flex-direction:column;align-items:stretch;gap:8px}
.abo-cat .abo-txt{flex:none}
.abo .abo-dom input{flex:none;width:15px;height:15px;min-width:15px;padding:0;border:none;background:none}
.abo-dom{white-space:nowrap}
.abo-doms{display:flex;flex-wrap:wrap;gap:6px}
.abo-dom{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #e4d08a;border-radius:16px;padding:4px 10px;font-size:.82rem;cursor:pointer;color:var(--navy)}
.abo-dom input{margin:0;width:15px;height:15px}
.abo-dom small{color:#8a7a2a}
.abo-dom:has(input:checked){background:var(--navy);color:#fff;border-color:var(--navy)}
.abo-dom:has(input:checked) small{color:var(--or)}
.abo-ligne{display:flex;gap:8px;flex-wrap:wrap}
.abo-ligne input{flex:1 1 220px}
.banniere{border-radius:10px;padding:9px 14px;margin:0 0 12px;font-size:.9rem;
font-weight:600;text-align:center;animation:flash 1.2s ease-in-out infinite}
.banniere.en-cours{background:#e8f5e9;color:#1b5e20;border:1px solid #a5d6a7}
.banniere.expire{background:#fdecea;color:#b71c1c;border:1px solid #f5c6c0}
@keyframes flash{0%,100%{opacity:1}50%{opacity:.45}}
.q-nd{color:#b26a00!important;font-style:italic}
/* societe : gagnants en or, participations en rouge */
.offre.gagne{background:#fffdf3;border-color:#e8d48a;border-left:4px solid var(--or)}
.offre.particip{background:#fdf5f4;border-color:#f0cfca;border-left:4px solid #c0392b}
.tag-gagne{background:var(--or);color:var(--navy);font-weight:700;border-radius:6px;
padding:2px 9px;font-size:.82rem}
.tag-part{background:#c0392b;color:#fff;font-weight:700;border-radius:6px;
padding:2px 9px;font-size:.82rem}
.bandeau-titre{background:linear-gradient(135deg,var(--navy),var(--navy2));
color:#fff;border-radius:14px;padding:20px 22px;margin-bottom:12px}
.bandeau-titre h1{margin:0 0 6px;font-size:1.45rem}
.ss-titre-hero{color:#cfd8ea;margin:0;font-size:.9rem}
.ss-titre-hero span{font-weight:800;color:var(--or)}
.sep-clot{color:#b71c1c;border-top:2px solid #f5c6c0;padding-top:12px;margin-top:18px}
/* recherche societe */
.sugg{background:#fff;border:1px solid var(--bord);border-radius:0 0 10px 10px;
margin-top:-8px;max-height:340px;overflow:auto}
.sugg:empty{display:none}
.sugg-item{padding:9px 12px;cursor:pointer;border-bottom:1px solid #f0f2f6;font-size:.92rem}
.sugg-item:hover{background:#eef2f9}
.sugg-c{color:var(--gris);font-size:.8rem;float:right}
/* stats */
.carte-stat{background:var(--carte);border:1px solid var(--bord);border-radius:12px;
padding:16px 18px;margin-bottom:14px}
.carte-stat h2{margin-top:4px}
.barres{display:flex;flex-direction:column;gap:9px}
.barre-l{display:flex;align-items:center;gap:10px;font-size:.86rem}
.barre-nom{flex:0 0 34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3b465a}
.barre-track{flex:1;background:#eef1f6;border-radius:6px;height:16px;overflow:hidden}
.barre-fill{display:block;height:100%;border-radius:6px}
.barre-val{flex:0 0 auto;font-weight:700;color:var(--enc);white-space:nowrap}
.barre-val small{color:var(--gris);font-weight:400}
@media(max-width:640px){.barre-nom{flex-basis:40%}}
/* KPI tuiles */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}
.kpi{background:var(--carte);border:1px solid var(--bord);border-radius:12px;
padding:16px;text-align:center;box-shadow:0 1px 3px rgba(13,27,62,.05)}
.kpi b{display:block;font-size:1.5rem;color:var(--navy)}
.kpi span{font-size:.78rem;color:var(--gris)}
@media(max-width:640px){.kpis{grid-template-columns:repeat(2,1fr)}}
/* donut */
.donut-wrap{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.donut{width:230px;height:230px;max-width:230px;max-height:230px;flex:0 0 230px}
.leg-l{min-width:0}
.donut-nb{font-size:34px;font-weight:800;fill:var(--navy)}
.donut-lb{font-size:14px;fill:var(--gris)}
.legende{flex:1;min-width:220px;display:grid;grid-template-columns:1fr 1fr;gap:5px 16px}
.leg-l{display:flex;align-items:center;gap:8px;font-size:.85rem}
.leg-p{width:12px;height:12px;border-radius:3px;flex:0 0 auto}
.leg-n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3b465a}
.leg-v{font-weight:700;white-space:nowrap}
.leg-v small{color:var(--gris);font-weight:400}
@media(max-width:640px){.donut-wrap{justify-content:center}.legende{grid-template-columns:1fr}}
/* fiche */
.fiche{background:var(--carte);border:1px solid var(--bord);border-radius:14px;
padding:22px}
.ach-fiche{color:#3b465a;font-weight:700;margin:0}
.fiche h1{font-size:1.25rem}
.lim-fiche{background:#e3f2fd;display:inline-block;border-radius:8px;padding:6px 12px}
.lim-fiche.rouge{background:#fdecea}
.lim-fiche.orange{background:#fff3e0}
.tbl{margin:14px 0;border-top:1px solid var(--bord)}
.tbl .ligne{display:flex;padding:9px 0;border-bottom:1px solid var(--bord);gap:12px}
.tbl .cle{flex:0 0 175px;color:var(--gris);font-size:.88rem}
.tbl .valr{flex:1;font-weight:600;font-size:.92rem;overflow-wrap:anywhere}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 6px}
.btn{display:inline-block;background:#fff;border:1px solid #c9d4e8;color:var(--bleu);
border-radius:9px;padding:11px 16px;text-decoration:none;font-weight:700;
font-size:.92rem;cursor:pointer}
.btn.plein{background:var(--bleu);border-color:var(--bleu);color:#fff}
.btn.or{background:var(--or);border-color:var(--or);color:var(--navy)}
.note{color:var(--gris);font-size:.85rem}
.bandeau-exp{background:#fdecea;border:1px solid #f5c6c0;border-radius:10px;
padding:10px 14px;color:#b71c1c;font-weight:600}
/* filtres (non collants : remplaces par la petite barre .fil-resume
   quand on defile) */
.filtres{background:var(--carte);border:1px solid var(--bord);border-radius:12px;
padding:12px;margin:12px 0}
.filtres input[type=search]{width:100%;border:1px solid var(--bord);border-radius:9px;
padding:11px 12px;font-size:1rem;margin-bottom:8px}
.selects{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.selects select{flex:1;min-width:150px;border:1px solid var(--bord);border-radius:9px;
padding:9px;font-size:.92rem;background:#fff}
.chk{font-size:.85rem;color:var(--gris);white-space:nowrap}
.chargement{color:var(--gris)}
/* divers */
.liens{display:flex;flex-wrap:wrap;gap:8px}
.liens a{background:#fff;border:1px solid #c9d4e8;border-radius:18px;padding:6px 13px;
font-size:.86rem;color:#23406e;text-decoration:none}
.liens a b{color:var(--bleu)}
.centre{text-align:center;margin:18px 0}
.bloc-espace{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;
border-radius:16px;padding:24px;margin-top:26px}
.bloc-espace h2{margin-top:0}
.bloc-espace p{color:#cfd8ea}
footer{background:var(--navy);color:#cfd8ea;margin-top:30px;padding:22px 0;
font-size:.85rem;text-align:center}
footer a{color:var(--or);text-decoration:none}
footer p{margin:4px 0}
/* petite barre collante des filtres selectionnes : apparait au defilement
   (bureau) ; toujours visible sur mobile ; clic = retour en haut */
.fil-resume{display:none;position:sticky;top:60px;z-index:60;background:var(--navy);
color:#fff;padding:7px 14px;font-size:.8rem;font-weight:600;margin:0 0 10px;
white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:10px;
box-shadow:0 2px 8px rgba(13,27,62,.3);cursor:pointer}
.fil-resume.vu{display:block}
/* bande qualification + montants (pleine largeur, fond tres clair) */
.ligne-qm{display:flex!important;justify-content:space-between;align-items:center;
gap:8px 14px;flex-wrap:wrap;background:#f2f6fc;color:var(--enc)!important;
border:1px solid #dbe4f0;
border-radius:8px;padding:9px 12px;margin:8px 0 4px!important;font-size:.95rem}
.ligne-qm .qm-g{font-weight:600;color:#23406e}
.ligne-qm .qm-d{display:flex;gap:10px;align-items:center;flex-wrap:wrap;
margin-left:auto}
.ligne-qm .mnt{color:#2e7d32;font-size:.95rem}
.ligne-qm .cau{color:#d84315;font-size:.92rem}
.ligne-qm i{color:#b26a00;font-weight:500}
@media(max-width:640px){
  /* header mobile : logo en haut, menu complet en dessous, rien a faire
     defiler horizontalement */
  /* clip (et non hidden) : bloque le defilement horizontal SANS casser
     position:sticky sur Safari */
  html,body{overflow-x:clip;max-width:100vw}
  .site-header .inner{flex-direction:column;height:auto;padding:8px 10px;gap:3px}
  .site-header nav{width:100%;justify-content:space-between;flex-wrap:wrap;gap:0}
  .site-header nav a{padding:6px 7px;font-size:.85rem}
  .hero{padding:24px 18px}
  .hero h1{font-size:1.35rem}
  .stats{gap:16px}
  .tbl .cle{flex-basis:130px}
  .filtres{position:static}
  /* sur mobile : toujours visible, collee tout en haut, pleine largeur */
  .fil-resume{display:block;top:var(--hh,148px);margin:0 -16px 10px;border-radius:0 0 10px 10px;z-index:40}
  /* boutons des cartes en grille 2x2 : Soumissionner|CPS puis
     Mieux-Disant|Suivre (meme principe pour les cartes societe) */
  .actions-carte{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}
  .actions-carte .btn{text-align:center;padding:10px 6px;font-size:.84rem}
}
