/* ============================================================
   base.css — structure du portail, commune à tous les thèmes.
   Ne contient que la mise en page, les états et l'accessibilité.
   Tout ce qui se voit (couleurs, formes, typographie) est défini
   par le thème chargé ensuite, via les variables ci-dessous.
   ============================================================ */

:root{
  --blanc:#FFFFFF; --papier:#F4F6F5; --papier-2:#E8ECEA;
  --encre:#16211D; --encre-2:#3D4A45; --gris:#6B7872;
  --vert:#0B7A4B; --vert-fonce:#065E39; --menthe:#DCF0E6;
  --accent:#FFC53D; --accent-clair:#FFF2D2; --accent-encre:#16211D;
  --brique:#DE3C2B; --brique-clair:#FCE4E1;
  --lignes:#DDE4E1; --lignes-2:#EEF2F0;

  --r:8px; --r-lg:12px; --r-sm:4px; --r-btn:8px; --r-chip:999px;
  --bord:1px; --bord-fort:2px;
  --ombre:none; --ombre-carte:none;
  --font:system-ui,-apple-system,Segoe UI,sans-serif;
  --display:var(--font);
  --poids-titre:700; --espacement-titre:-.02em; --titre-transform:none;
  --hero-fond:var(--vert); --hero-texte:#FFFFFF; --hero-sous:#C6E4D5;
  --head-fond:var(--encre); --head-texte:#FFFFFF;
  --foot-fond:var(--encre); --foot-texte:#9FB2AA;
  --carte-fond:var(--blanc); --carte-bord:var(--lignes);
  --corps:15.5px; --interligne:1.55;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--papier);color:var(--encre);font-family:var(--font);
  font-size:var(--corps);line-height:var(--interligne);-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--vert);text-decoration:none}
a:hover{color:var(--vert-fonce);text-decoration:underline}
h1,h2,h3{margin:0 0 .45em;line-height:1.14;font-family:var(--display);
  font-weight:var(--poids-titre);letter-spacing:var(--espacement-titre)}
h1{font-size:clamp(28px,6vw,44px);text-transform:var(--titre-transform)}
h2{font-size:clamp(19px,3.2vw,25px)}
h3{font-size:17px}
p{margin:0 0 1em;max-width:74ch}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* Structure */
.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 20px}
.wrap-sm{max-width:700px}
main{min-height:60vh;padding:26px 0 64px}
.row{display:flex;gap:18px;flex-wrap:wrap}
.col{flex:1 1 280px;min-width:0}
.stack{display:flex;flex-direction:column;gap:14px}
.between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(172px,1fr))}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* En-tête et pied */
.site-head{background:var(--head-fond);color:var(--head-texte);position:sticky;top:0;z-index:50}
.site-head a{color:var(--head-texte)}
.head-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0}
.logo{font-family:var(--display);font-weight:700;font-size:19px;text-decoration:none!important;white-space:nowrap}
.logo span{color:var(--accent)}
.head-nav{display:flex;align-items:center;gap:4px}
.head-nav a{padding:9px 13px;border-radius:var(--r-sm);font-size:14.5px;font-weight:500;text-decoration:none!important}
.head-nav a:hover{background:rgba(255,255,255,.14)}
.btn-ghost-light{border:1.5px solid rgba(255,255,255,.5);border-radius:var(--r-chip);padding:7px 15px;
  background:transparent;color:inherit;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.btn-ghost-light:hover{background:#fff;color:var(--encre)}
.site-foot{background:var(--foot-fond);color:var(--foot-texte);padding:40px 0 28px;font-size:14px;margin-top:auto}
.site-foot a{color:var(--foot-texte);text-decoration:underline}
.site-foot h3{color:#fff;font-size:14.5px;margin-bottom:11px}
.foot-grid{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.foot-legal{border-top:1px solid rgba(255,255,255,.14);margin-top:28px;padding-top:18px;font-size:13px}

/* Héros et recherche */
.hero{background:var(--hero-fond);color:var(--hero-texte);padding:46px 0 42px;position:relative;overflow:hidden}
.hero .wrap{position:relative;z-index:1}
.hero h1{color:var(--hero-texte);max-width:15ch;margin-bottom:.35em}
.hero p{color:var(--hero-sous);margin-bottom:22px;max-width:46ch;font-size:16.5px}
.searchbox{position:relative;background:var(--blanc);border:var(--bord-fort) solid var(--encre);
  border-radius:var(--r);display:flex;align-items:stretch;overflow:hidden}
.searchbox svg{align-self:center;margin-left:15px;flex-shrink:0}
.searchbox input{flex:1;border:0;outline:0;font:inherit;font-size:16.5px;color:var(--encre);
  background:transparent;min-width:0;padding:15px 12px;min-height:auto}
.searchbox select{border:0;border-left:1px solid var(--lignes);background:var(--blanc);font:inherit;
  font-size:15px;padding:0 36px 0 14px;max-width:180px;border-radius:0;min-height:auto}
.searchbox button{border:0;background:var(--vert);color:#fff;font:inherit;font-weight:700;font-size:15px;
  padding:15px 26px;cursor:pointer;white-space:nowrap}
.searchbox button:hover{background:var(--encre)}
.suggest{position:absolute;left:0;right:0;top:calc(100% + 8px);background:var(--blanc);
  border:var(--bord-fort) solid var(--encre);border-radius:var(--r);overflow:hidden;z-index:60}
.suggest a{display:flex;justify-content:space-between;gap:10px;padding:12px 15px;font-size:15px;
  color:var(--encre);text-decoration:none!important;border-bottom:1px solid var(--lignes-2)}
.suggest a:last-child{border-bottom:0}
.suggest a:hover,.suggest a.on{background:var(--menthe)}
.suggest .kind{color:var(--gris);font-size:12.5px;flex-shrink:0}
.hero-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.hero-chips .chip{background:transparent;border-color:rgba(255,255,255,.55);color:var(--hero-texte)}
.hero-chips .chip:hover{background:#fff;color:var(--vert);border-color:#fff}
.trust-strip{background:var(--encre);color:#fff;padding:12px 0;font-size:14px;font-weight:500}
.trust-strip .wrap{display:flex;gap:26px;justify-content:center;flex-wrap:wrap}

/* Cartes, tuiles */
.card{background:var(--carte-fond);border:var(--bord) solid var(--carte-bord);border-radius:var(--r-lg);
  padding:20px;box-shadow:var(--ombre-carte)}
.card-tight{padding:15px 16px}
.card-link{display:block;color:inherit;text-decoration:none!important;transition:border-color .12s,background-color .12s,transform .12s}
.card-link:hover{border-color:var(--vert)}
.card h3{margin-bottom:7px}
.tile{background:var(--menthe);border:0;border-radius:var(--r);padding:20px 12px;display:flex;
  flex-direction:column;align-items:center;gap:11px;text-align:center;color:var(--vert);
  text-decoration:none!important;min-height:106px;justify-content:center;font-weight:600}
.tile:hover{background:var(--vert);color:#fff}
.tile span{font-size:13.5px;line-height:1.25}
.tile svg{stroke:currentColor}

/* Badges, étiquettes */
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-chip);
  font-size:11.5px;font-weight:700;white-space:nowrap;vertical-align:middle}
.badge svg{width:11px;height:11px;flex-shrink:0}
.badge-certified{background:var(--encre);color:var(--accent)}
.badge-verified{background:var(--vert);color:#fff}
.badge-claimed{background:var(--papier-2);color:var(--encre-2)}
.badge-none{background:transparent;color:var(--gris);border:1px solid var(--lignes)}
.tag{display:inline-block;padding:4px 10px;border-radius:var(--r-sm);background:var(--papier);
  font-size:12px;color:var(--encre-2);font-weight:500}
.tag-amber{background:var(--accent);color:var(--accent-encre);font-weight:700}
.tag-green{background:var(--menthe);color:var(--vert);font-weight:700}
.tag-red{background:var(--brique-clair);color:var(--brique);font-weight:700}
.sponsored{font-size:11px;font-weight:700;color:var(--accent-encre);background:var(--accent);
  padding:4px 9px;border-radius:var(--r-sm)}

/* Compteur d'ouverture */
.segments{display:flex;gap:3px;flex-wrap:wrap}
.segments i{width:14px;height:14px;background:var(--papier-2);border-radius:2px;display:block}
.segments i.on{background:var(--accent)}
.segments.full i.on{background:var(--vert)}
.seg-line{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}
.seg-count{font-weight:700;font-size:15px}
.seg-left{font-size:12.5px;color:var(--gris)}
.gauge{height:10px;border-radius:2px;background:var(--papier-2);overflow:hidden}
.gauge i{display:block;height:100%;background:var(--accent)}
.gauge-green i{background:var(--vert)}
.gauge-wrap{display:flex;flex-direction:column;gap:7px}

/* Boutons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:13px 22px;
  border-radius:var(--r-btn);border:var(--bord-fort) solid transparent;font:inherit;font-size:15px;
  font-weight:700;cursor:pointer;text-decoration:none!important;box-shadow:var(--ombre);
  transition:background-color .12s,color .12s,border-color .12s,transform .12s}
.btn-primary{background:var(--vert);color:#fff;border-color:var(--vert)}
.btn-primary:hover{background:var(--encre);border-color:var(--encre);color:#fff}
.btn-amber{background:var(--accent);color:var(--accent-encre);border-color:var(--accent)}
.btn-amber:hover{background:var(--encre);color:var(--accent)}
.btn-outline{background:transparent;border-color:var(--vert);color:var(--vert)}
.btn-outline:hover{background:var(--vert);color:#fff}
.btn-quiet{background:var(--blanc);border-color:var(--lignes);color:var(--encre)}
.btn-quiet:hover{border-color:var(--encre)}
.btn-danger{background:var(--blanc);border-color:var(--brique);color:var(--brique)}
.btn-danger:hover{background:var(--brique);color:#fff}
.btn-sm{min-height:38px;padding:8px 14px;font-size:13.5px;border-width:1.5px}
.btn-block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* Formulaires */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:15px}
.field label{font-size:13px;font-weight:600;color:var(--encre-2)}
.field .hint{font-size:12.5px;color:var(--gris);line-height:1.45}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=number],
input[type=date],input[type=search],input[type=url],input[type=file],select,textarea{
  width:100%;min-height:48px;padding:12px 13px;border:1.5px solid var(--lignes);border-radius:var(--r-sm);
  font:inherit;font-size:15.5px;color:var(--encre);background:var(--blanc)}
input[type=file]{padding:10px 13px}
textarea{min-height:120px;resize:vertical;line-height:1.55}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236B7872' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:36px}
input:focus,select:focus,textarea:focus{border-color:var(--vert);outline:0}
.check{display:flex;align-items:flex-start;gap:11px;margin-bottom:13px;font-size:14px;line-height:1.45}
.check input{width:21px;height:21px;accent-color:var(--vert);flex-shrink:0;margin-top:1px}
fieldset{border:1px solid var(--lignes);border-radius:var(--r);padding:18px;margin:0 0 18px}
legend{font-size:13.5px;font-weight:700;padding:0 7px}

/* Filtres */
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:9px 15px;border-radius:var(--r-chip);
  border:1.5px solid var(--lignes);background:var(--blanc);font:inherit;font-size:14px;font-weight:500;
  color:var(--encre);white-space:nowrap;cursor:pointer;text-decoration:none!important}
.chip:hover{border-color:var(--vert);color:var(--vert)}
.chip.on{background:var(--vert);border-color:var(--vert);color:#fff;font-weight:600}

/* Tableaux */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:14.5px;background:var(--blanc)}
thead th{text-align:left;font-size:12.5px;font-weight:700;color:var(--encre);padding:13px 15px;
  background:var(--papier);border-bottom:2px solid var(--lignes);white-space:nowrap}
tbody td{padding:14px 15px;border-bottom:1px solid var(--lignes-2);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr.masked{background:var(--accent-clair)}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* Indicateurs et messages */
.kpi{background:var(--carte-fond);border:var(--bord) solid var(--carte-bord);border-radius:var(--r-lg);
  padding:17px;display:flex;flex-direction:column;gap:5px}
.kpi .label{font-size:13px;color:var(--gris)}
.kpi .value{font-family:var(--display);font-size:31px;font-weight:700;line-height:1.02;letter-spacing:-.03em}
.kpi .sub{font-size:12.5px;color:var(--gris)}
.kpi.alert{border-color:var(--accent);border-width:2px}
.kpi.alert .value{color:#9A6A00}
.kpi.good .value{color:var(--vert)}
.alert{border-radius:var(--r);padding:14px 17px;margin-bottom:16px;font-size:14.5px;display:flex;gap:10px;
  align-items:flex-start;border-left:5px solid transparent}
.alert-success{background:var(--menthe);color:var(--vert);border-left-color:var(--vert)}
.alert-error{background:var(--brique-clair);color:var(--brique);border-left-color:var(--brique)}
.alert-info{background:var(--papier);color:var(--encre-2);border-left-color:var(--gris)}
.notice{background:var(--accent-clair);border-left:5px solid var(--accent);border-radius:var(--r);
  padding:16px 18px;font-size:14.5px;line-height:1.5;color:var(--encre)}
.empty{text-align:center;padding:48px 22px;color:var(--gris)}

/* Divers */
.breadcrumb{font-size:13px;color:var(--gris);margin-bottom:14px}
.breadcrumb a{color:var(--gris)}
.price{font-family:var(--display);font-size:21px;font-weight:700;color:var(--encre);font-variant-numeric:tabular-nums}
.stars{color:#9A6A00;font-weight:700;font-size:13.5px}
.pager{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:30px}
.pager a,.pager span{min-width:46px;min-height:46px;display:inline-flex;align-items:center;justify-content:center;
  border:1.5px solid var(--lignes);border-radius:var(--r-sm);background:var(--blanc);font-size:15px;
  font-weight:600;text-decoration:none!important}
.pager a:hover{border-color:var(--vert);color:var(--vert)}
.pager .on{background:var(--vert);color:#fff;border-color:var(--vert)}
.muted{color:var(--gris)}
.small{font-size:13px}
.mt0{margin-top:0}.mb0{margin-bottom:0}
.photo-ph{background:var(--papier-2);border-radius:var(--r);min-height:96px;display:flex;align-items:center;justify-content:center}
.bar-h{display:flex;align-items:center;gap:10px}
.bar-h .track{flex:1;height:10px;border-radius:2px;background:var(--papier-2);overflow:hidden}
.bar-h .track i{display:block;height:100%;background:var(--vert)}

/* Espaces authentifiés : habillage stable, indépendant du thème public */
.app{display:flex;min-height:100vh;align-items:stretch}
.side{width:236px;flex-shrink:0;background:#0B7A4B;color:#fff;padding:20px 12px;display:flex;flex-direction:column;gap:20px}
.side.dark{background:#16211D}
.side a{color:#C9E7D8;display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:4px;
  font-size:14px;text-decoration:none!important;min-height:44px}
.side a:hover{background:rgba(255,255,255,.12);color:#fff}
.side a.on{background:#fff;color:#0B7A4B;font-weight:700}
.side.dark a.on{color:#16211D}
.side .pill{margin-left:auto;background:#FFC53D;color:#16211D;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px}
.side-title{font-weight:700;font-size:18px}
.side-sub{font-size:11px;font-weight:600;color:#8FB5A3}
.app-main{flex:1;min-width:0;display:flex;flex-direction:column;background:#F4F6F5}
.app-head{background:#fff;border-bottom:1px solid #DDE4E1;padding:15px 24px}
.app-body{padding:24px;flex:1}

/* Adaptation */
@media (max-width:860px){
  .app{flex-direction:column}
  .side{width:100%;flex-direction:row;overflow-x:auto;gap:4px;padding:10px;align-items:center}
  .side .side-title,.side .side-sub,.side .side-foot-box{display:none}
  .side a{white-space:nowrap;padding:10px 12px}
  .app-body{padding:16px}
  .hero{padding:32px 0 30px}
}
@media (max-width:560px){
  .searchbox{flex-direction:column;align-items:stretch}
  .searchbox svg{display:none}
  .searchbox input{padding:14px}
  .searchbox select{border-left:0;border-top:1px solid var(--lignes);max-width:none;padding:14px;min-height:50px}
  .searchbox button{width:100%}
  .kpi .value{font-size:26px}
  .trust-strip .wrap{gap:10px;flex-direction:column;align-items:flex-start}
}
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }

/* Arabe */
html[dir="rtl"] .side a,html[dir="rtl"] .badge,html[dir="rtl"] .btn{flex-direction:row-reverse}
html[dir="rtl"] thead th,html[dir="rtl"] tbody td{text-align:right}
html[dir="rtl"] .side .pill{margin-left:0;margin-right:auto}
html[dir="rtl"] .num,html[dir="rtl"] .price{direction:ltr;display:inline-block}
html[dir="rtl"] .alert,html[dir="rtl"] .notice{border-left:0;border-right:5px solid}
html[dir="rtl"] .searchbox svg{margin-left:0;margin-right:15px}

@media print{
  .site-head,.site-foot,.side,.btn,.chips,.no-print{display:none!important}
  body{background:#fff}
  .card{break-inside:avoid;border-color:#ccc}
  table{font-size:12px}
}
