/* ===========================================================================
   Escale France — Feuille de style (tokens + composants + pages)
   =========================================================================== */

/* ---------- TOKENS --------------------------------------------------------- */
:root{
  --green-50:#F1F8F4;--green-100:#E3EFE9;--green-200:#C3DDD2;--green-300:#8FC0AE;--green-400:#5AA088;
  --green-500:#2E8062;--green-600:#246B52;--green-700:#1C5742;--green-800:#14402F;--green-900:#0E2D22;
  --orange-50:#FEF9F0;--orange-100:#FDF4E2;--orange-200:#FAE9C6;--orange-300:#F5D89B;--orange-400:#EFC470;
  --orange-500:#E8B24A;--orange-600:#DEA32C;--orange-700:#C68F25;--orange-800:#A6781C;--orange-900:#7A560F;
  --neutral-0:#FFFFFF;--neutral-50:#F6F8F7;--neutral-100:#EEF1EF;--neutral-200:#DFE5E2;--neutral-300:#C2CBC7;
  --neutral-400:#9BA7A2;--neutral-500:#788580;--neutral-600:#5A6862;--neutral-700:#3D4A45;--neutral-800:#283330;--neutral-900:#16201C;
  --status-success:#1E8E5A;--status-success-bg:#E4F3EB;--status-warning:#DEA32C;--status-warning-bg:#FDF1D8;
  --status-danger:#D4493C;--status-danger-bg:#FBE7E5;--status-info:#2E6FB0;--status-info-bg:#E5EEF7;
  --escore-excellent:#1C5742;--escore-great:#2E8062;--escore-good:#C68F25;--escore-fair:#B5651D;--escore-bg:#E3EFE9;
  --brand-green:var(--green-700);--brand-orange:var(--orange-600);
  --color-primary:var(--green-700);--color-primary-hover:var(--green-800);--color-primary-active:var(--green-900);
  --color-accent:var(--orange-600);--color-accent-hover:var(--orange-700);--color-accent-active:var(--orange-800);
  --text-strong:var(--neutral-900);--text-body:var(--neutral-700);--text-muted:var(--neutral-500);--text-faint:var(--neutral-400);
  --text-on-primary:#fff;--text-on-accent:#fff;--text-link:var(--green-700);
  --surface-page:var(--neutral-50);--surface-card:var(--neutral-0);
  --border-subtle:var(--neutral-200);--border-default:var(--neutral-300);--border-strong:var(--neutral-400);--border-focus:var(--green-700);
  --font-display:'Poppins',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-body:'Nunito Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.25rem;
  --text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.375rem;--text-4xl:3rem;--text-5xl:3.75rem;
  --radius-xs:6px;--radius-sm:8px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-2xl:24px;--radius-pill:999px;
  --shadow-xs:0 1px 2px rgba(16,32,28,.06);--shadow-sm:0 2px 8px rgba(16,32,28,.06);--shadow-md:0 6px 20px rgba(16,32,28,.08);
  --shadow-lg:0 16px 40px rgba(16,32,28,.12);--shadow-xl:0 28px 64px rgba(16,32,28,.16);
  --shadow-focus:0 0 0 3px rgba(28,87,66,.20);--shadow-focus-accent:0 0 0 3px rgba(222,163,44,.28);
  --ease:cubic-bezier(.2,.6,.2,1);--container:1240px;
}

/* ---------- BASE ----------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;color:var(--text-body);
  background:var(--surface-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5{font-family:var(--font-display);color:var(--text-strong);font-weight:600;line-height:1.1;letter-spacing:-.01em;margin:0 0 .5em;text-wrap:balance}
h1{font-size:var(--text-4xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}
p{margin:0 0 1em;text-wrap:pretty}
a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:none}
img{max-width:100%;display:block}
button{font-family:inherit}
:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}
.ef-main{min-height:60vh}
.ef-eyebrow{font-family:var(--font-body);font-weight:800;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent);margin-bottom:7px}
.ef-container{max-width:var(--container);margin:0 auto;padding:0 28px}
.ef-section{max-width:var(--container);margin:0 auto;padding:44px 28px 0}
.ef-flash{position:fixed;top:84px;right:20px;z-index:9999;max-width:360px;margin:0;padding:0;animation:ef-flash-in .35s var(--ease)}
.ef-flash.is-out{animation:ef-flash-out .4s var(--ease) forwards}
.ef-flash__in{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--green-100);color:var(--green-800);font-weight:700;font-size:var(--text-sm);padding:13px 18px;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);cursor:pointer}
.ef-flash__in svg{color:var(--brand-green);flex:none}
@keyframes ef-flash-in{from{transform:translateY(-14px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes ef-flash-out{to{transform:translateY(-14px);opacity:0}}
@media(max-width:560px){.ef-flash{right:12px;left:12px;max-width:none;top:74px}}

/* ---------- Chargement différé des images (placeholder de marque) ---------- */
img.ef-lazy{background:var(--neutral-100) var(--ef-lazy-ph,none) center center / clamp(70px,42%,150px) no-repeat;color:transparent;font-size:0}
img.ef-lazy.is-loaded{background-image:none;background-color:transparent;animation:ef-img-in .45s var(--ease)}
@keyframes ef-img-in{from{opacity:.35}to{opacity:1}}
@media (prefers-reduced-motion:reduce){img.ef-lazy.is-loaded{animation:none}}
.ef-error{background:var(--status-danger-bg);border:1px solid #f3c9c5;color:var(--status-danger);font-weight:700;font-size:var(--text-sm);padding:12px 16px;border-radius:var(--radius-md);margin-bottom:16px}

/* ---------- BUTTONS -------------------------------------------------------- */
.ef-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;
  font-family:var(--font-body);font-size:var(--text-base);font-weight:700;letter-spacing:-.01em;white-space:nowrap;
  border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background .12s var(--ease),transform .12s var(--ease);text-decoration:none}
.ef-btn:active{transform:translateY(1px)}
.ef-btn__i{display:inline-flex;width:18px;height:18px}
.ef-btn--sm{height:36px;padding:0 14px;font-size:var(--text-sm);border-radius:var(--radius-sm)}
.ef-btn--lg{height:52px;padding:0 28px;font-size:var(--text-md)}
.ef-btn--full{width:100%}
.ef-btn--primary{background:var(--color-accent);color:#fff}.ef-btn--primary:hover{background:var(--color-accent-hover)}
.ef-btn--secondary{background:var(--color-primary);color:#fff}.ef-btn--secondary:hover{background:var(--color-primary-hover)}
.ef-btn--outline{background:var(--surface-card);color:var(--color-primary);border-color:var(--border-default)}.ef-btn--outline:hover{background:var(--green-50)}
.ef-btn--ghost{background:transparent;color:var(--color-primary)}.ef-btn--ghost:hover{background:var(--green-50)}
.ef-btn--soft{background:var(--orange-50);color:var(--orange-800)}.ef-btn--soft:hover{background:var(--orange-100)}

/* ---------- TAGS / BADGES -------------------------------------------------- */
.ef-tag{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--radius-pill);
  font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;letter-spacing:-.01em;white-space:nowrap;border:1px solid transparent}
.ef-tag--sm{height:24px;padding:0 9px;gap:5px;font-size:var(--text-xs)}
.ef-tag__i{display:inline-flex;width:15px;height:15px}.ef-tag--sm .ef-tag__i{width:13px;height:13px}
.ef-tag--neutral{background:var(--neutral-100);color:var(--neutral-700)}
.ef-tag--green{background:var(--green-50);color:var(--green-800)}
.ef-tag--orange{background:var(--orange-50);color:var(--orange-800)}
.ef-tag--outline{background:transparent;color:var(--neutral-700);border-color:var(--border-default)}
.ef-tag--solid{background:var(--color-primary);color:#fff}
.ef-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-sm);
  font-family:var(--font-body);font-size:var(--text-xs);font-weight:800;letter-spacing:-.01em;white-space:nowrap}
.ef-badge--success{background:var(--status-success-bg);color:var(--status-success)}
.ef-badge--warning{background:var(--status-warning-bg);color:var(--orange-800)}
.ef-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor}

/* ---------- SCORE BADGE ---------------------------------------------------- */
.ef-score{display:inline-flex;align-items:baseline;gap:1px;padding:4px 9px;border-radius:var(--radius-sm);
  background:var(--escore-bg);color:var(--escore-excellent);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);line-height:1;letter-spacing:-.01em}
.ef-score--sm{padding:3px 7px;font-size:var(--text-xs)}
.ef-score--lg{padding:6px 12px;font-size:var(--text-md)}
.ef-score--solid{color:#fff}
.ef-score__denom{font-size:10px;font-weight:600;opacity:.55}
.ef-score--solid .ef-score__denom{opacity:.8}
.ef-score--tile{flex-direction:column;align-items:center;justify-content:center;min-width:56px;padding:8px 10px;color:#fff;border-radius:var(--radius-lg);line-height:1}
.ef-score--tile.ef-score--lg{min-width:76px}
.ef-score--tile .ef-score__num{font-size:20px;font-weight:700}
.ef-score--tile.ef-score--lg .ef-score__num{font-size:30px}
.ef-score--tile.ef-score--sm .ef-score__num{font-size:16px}
.ef-score__lbl{font-size:10px;font-weight:600;opacity:.85;margin-top:3px}

/* ---------- STARS ---------------------------------------------------------- */
.ef-stars{display:inline-flex;align-items:center;gap:6px}
.ef-stars__row{display:inline-flex;gap:2px}
.ef-star{position:relative;width:var(--star);height:var(--star);background:var(--neutral-200);
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.6l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 18.6 6.6 19.5l1-6.1L3.2 9.1l6.1-.9z'/></svg>") center/contain no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.6l2.7 5.6 6.1.9-4.4 4.3 1 6.1L12 18.6 6.6 19.5l1-6.1L3.2 9.1l6.1-.9z'/></svg>") center/contain no-repeat}
.ef-star__fill{position:absolute;inset:0;background:var(--orange-500);width:0}
.ef-stars__val{font-weight:700;font-size:calc(var(--star)*.9);color:var(--text-strong)}
.ef-stars__count{font-weight:600;font-size:calc(var(--star)*.82);color:var(--text-muted)}

/* ---------- FLAG / AVATAR -------------------------------------------------- */
.ef-flag{display:inline-flex;border-radius:3px;overflow:hidden;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.10)}
.ef-flag svg{display:block}
.ef-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:var(--radius-pill);
  background:var(--green-100);color:var(--green-800);font-family:var(--font-display);font-weight:700;overflow:visible}
.ef-avatar__ini{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}
.ef-avatar.is-ring{box-shadow:0 0 0 2px var(--color-accent),0 0 0 4px var(--surface-card)}
.ef-avatar__flag{position:absolute;right:-2px;bottom:-2px;display:inline-flex;background:var(--neutral-100);border-radius:var(--radius-pill);border:1.5px solid #fff;box-shadow:var(--shadow-xs);padding:2px}

/* ---------- HEADER --------------------------------------------------------- */
.ef-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--border-subtle)}
.ef-header__in{max-width:var(--container);margin:0 auto;padding:0 28px;height:84px;display:flex;align-items:center;gap:22px}
.ef-logo{position:relative;display:inline-flex;align-items:center;height:56px;width:56px;flex:none;transition:width .32s var(--ease)}
.ef-logo__mark{position:absolute;left:0;height:52px;transition:opacity .2s var(--ease)}
.ef-logo__word{position:absolute;left:0;height:46px;opacity:0;transition:opacity .2s var(--ease);pointer-events:none;max-width:none}
.ef-header.is-scrolled .ef-logo{width:180px}
.ef-header.is-scrolled .ef-logo__mark{opacity:0}
.ef-header.is-scrolled .ef-logo__word{opacity:1}
.ef-nav{display:flex;align-items:center;gap:22px;margin-left:6px}
.ef-nav__link{position:relative;padding:6px 2px;font-size:var(--text-base);font-weight:700;color:var(--text-body);transition:color .12s}
.ef-nav__link:hover,.ef-nav__link.is-active{color:var(--brand-green)}
.ef-nav__link.is-active::after,.ef-nav__link:hover::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2.5px;border-radius:2px;background:var(--color-accent)}
.ef-header__spacer{flex:1}
.ef-header__actions{display:flex;align-items:center;gap:4px}
.ef-header__div{width:1px;height:26px;background:var(--border-subtle);margin:0 4px}
.ef-haction{position:relative;display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 10px;border:none;border-radius:var(--radius-md);
  cursor:pointer;background:transparent;color:var(--text-body);font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;transition:background .12s}
.ef-haction:hover{background:var(--green-50)}
.ef-haction--label{padding:0 12px}
.ef-haction__icon{position:relative;display:inline-flex}
.ef-badge-dot{position:absolute;top:-6px;right:-7px;min-width:15px;height:15px;padding:0 3px;border-radius:var(--radius-pill);
  background:var(--color-accent);color:#fff;font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
/* dropdowns */
.ef-dd{position:relative}
.ef-dd__menu{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-xl);
  box-shadow:var(--shadow-lg);padding:8px;z-index:200;display:none}
.ef-dd.is-open .ef-dd__menu{display:block}
.ef-dd__menu--acct{width:248px;padding:14px}
.ef-dd__item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:none;border-radius:var(--radius-md);cursor:pointer;
  background:transparent;color:var(--text-body);font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;text-align:left}
.ef-dd__item:hover{background:var(--neutral-50)}
.ef-dd__item svg{color:var(--text-muted)}
.ef-dd__sep{height:1px;background:var(--border-subtle);margin:12px -2px}
.ef-acct__hello{display:flex;align-items:center;gap:10px;padding:4px 2px 10px}
.ef-acct__hello strong{display:block;font-family:var(--font-display);font-size:var(--text-sm);color:var(--text-strong)}
.ef-acct__hello span{display:block;font-size:var(--text-xs);color:var(--text-muted);max-width:150px;overflow:hidden;text-overflow:ellipsis}

/* ---------- SEARCH MODAL --------------------------------------------------- */
.ef-search{position:fixed;inset:0;z-index:500;display:flex;flex-direction:column;align-items:center}
.ef-search[hidden]{display:none}
.ef-search__backdrop{position:absolute;inset:0;background:rgba(14,45,34,.5);backdrop-filter:blur(4px)}
.ef-search__panel{position:relative;width:100%;max-width:720px;margin:76px 24px 0;background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);overflow:hidden}
.ef-search__bar{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border-subtle)}
.ef-search__bar>svg{color:var(--text-muted)}
.ef-search__bar input{flex:1;border:none;outline:none;background:transparent;font-family:var(--font-body);font-weight:600;font-size:var(--text-lg);color:var(--text-strong)}
.ef-search__close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius-md);background:var(--neutral-100);cursor:pointer;color:var(--text-muted)}
.ef-search__body{padding:16px 16px 20px;max-height:62vh;overflow-y:auto}
.ef-search__label{font-weight:800;font-size:var(--text-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:6px 4px 10px}
.ef-search__chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 4px 20px}
.ef-search__chip{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border:1px solid var(--border-default);border-radius:var(--radius-pill);background:#fff;font-weight:700;font-size:var(--text-sm);color:var(--text-body)}
.ef-search__chip:hover{border-color:var(--orange-300);background:var(--orange-50)}
.ef-search__chip svg{color:var(--color-primary)}
.ef-search__row{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border-radius:var(--radius-md)}
.ef-search__row:hover{background:var(--neutral-50)}
.ef-search__row img{width:44px;height:44px;border-radius:var(--radius-md);object-fit:cover;flex:none}
.ef-search__row-main{flex:1;min-width:0}
.ef-search__row-main div{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--text-strong)}
.ef-search__row-main span{font-size:var(--text-xs);font-weight:600;color:var(--text-muted)}

/* ---------- CARDS: DESTINATION --------------------------------------------- */
.ef-card{position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-card);
  border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:box-shadow .2s var(--ease),transform .2s var(--ease)}
.ef-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.ef-card__media{position:relative;display:block;aspect-ratio:4/3;overflow:hidden}
.ef-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .32s var(--ease)}
.ef-card:hover .ef-card__media img{transform:scale(1.05)}
.ef-card__score{position:absolute;top:10px;left:10px;box-shadow:var(--shadow-sm)}
.ef-fav{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-pill);background:rgba(255,255,255,.9);box-shadow:var(--shadow-sm);cursor:pointer;color:var(--neutral-700);z-index:2}
.ef-fav:hover{background:#fff}
.ef-fav.is-active{color:var(--color-accent)}
.ef-card__body{display:block;padding:12px 14px 14px;color:inherit}
.ef-card__title{margin:0;font-size:var(--text-md);font-weight:700;color:var(--text-strong);letter-spacing:-.01em}
.ef-card__region{display:flex;align-items:center;gap:4px;margin-top:3px;color:var(--text-muted)}
.ef-card__region svg{width:13px;height:13px}
.ef-card__region span{font-size:var(--text-sm);font-weight:600}
.ef-card__rating{margin-top:9px}

/* ---------- RANK ROW ------------------------------------------------------- */
.ef-rank{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:var(--radius-md);transition:background .12s}
.ef-rank:hover{background:var(--neutral-50)}
.ef-rank__n{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border-radius:var(--radius-sm);color:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--text-sm)}
.ef-rank__img{width:40px;height:40px;border-radius:var(--radius-sm);object-fit:cover;flex:none}
.ef-rank__main{flex:1;min-width:0}
.ef-rank__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ef-rank__sub{font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}

/* ---------- REVIEW CARD ---------------------------------------------------- */
.ef-review{display:flex;gap:12px;padding:16px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}
.ef-review__main{flex:1;min-width:0}
.ef-review__head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.ef-review__name{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-review__loc{font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}
.ef-review__date{font-size:var(--text-xs);color:var(--text-faint);white-space:nowrap}
.ef-review__stars{margin-top:6px}
.ef-review__text{margin:8px 0 0;font-size:var(--text-sm);line-height:1.5;color:var(--text-body)}
.ef-review__photos{display:inline-flex;align-items:center;gap:5px;margin-top:10px;color:var(--text-muted);font-size:var(--text-xs);font-weight:700}

/* ---------- SECTION HEADER ------------------------------------------------- */
.ef-sec{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}
.ef-sec__title{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--text-strong);letter-spacing:-.02em}
.ef-sec__sub{margin:6px 0 0;font-size:var(--text-base);font-weight:600;color:var(--text-muted)}
.ef-sec__action{flex:none;display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px;border:1px solid var(--border-default);background:#fff;border-radius:var(--radius-md);color:var(--brand-green);font-weight:700;font-size:var(--text-sm)}
.ef-sec__action:hover{background:var(--green-50)}

/* ---------- BREADCRUMB ----------------------------------------------------- */
.ef-crumb{display:flex;align-items:center;gap:7px;font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}
.ef-crumb a{color:var(--text-muted)}.ef-crumb a:hover{color:var(--brand-green)}
.ef-crumb .is-current{color:var(--text-strong)}
.ef-crumb--chip{display:inline-flex;background:rgba(255,255,255,.9);border-radius:var(--radius-pill);padding:7px 14px}

/* ---------- GRIDS ---------------------------------------------------------- */
.ef-grid{display:grid;gap:18px}
.ef-grid--2{grid-template-columns:repeat(2,1fr)}
.ef-grid--3{grid-template-columns:repeat(3,1fr)}
.ef-grid--4{grid-template-columns:repeat(4,1fr)}
.ef-grid--5{grid-template-columns:repeat(5,1fr)}

/* ---------- HERO (home) ---------------------------------------------------- */
.ef-hero{position:relative;min-height:480px;display:flex;align-items:center;overflow:visible}
.ef-hero__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.ef-hero__grad{position:absolute;inset:0;background:linear-gradient(100deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.86) 34%,rgba(255,255,255,.25) 58%,rgba(14,45,34,.12) 100%)}
.ef-hero__in{position:relative;max-width:var(--container);margin:0 auto;padding:0 28px;width:100%}
.ef-hero__content{max-width:580px;padding:44px 0}
.ef-hero__pill{display:inline-flex;align-items:center;gap:7px;margin-bottom:16px;padding:6px 13px;background:rgba(28,87,66,.08);border-radius:var(--radius-pill)}
.ef-hero__pill svg{color:var(--color-accent);width:15px;height:15px}
.ef-hero__pill span{font-weight:800;font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--brand-green)}
.ef-hero h1{margin:0;font-size:48px;font-weight:600;line-height:1.05;letter-spacing:-.02em;color:var(--brand-green)}
.ef-hero h1 b{font-weight:700}
.ef-hero__lede{margin:14px 0 26px;font-size:var(--text-md);font-weight:600;color:var(--text-body);max-width:460px}
.ef-hero__search{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);padding:16px;max-width:560px}
.ef-hero__tabs{display:flex;gap:4px;margin-bottom:12px}
.ef-hero__tab{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:none;border-radius:var(--radius-pill);cursor:pointer;background:transparent;color:var(--text-muted);font-weight:700;font-size:var(--text-sm)}
.ef-hero__tab.is-active{background:var(--green-50);color:var(--brand-green)}
.ef-hero__form{display:flex;gap:10px}
.ef-hero__input{flex:1;display:flex;align-items:center;gap:8px;height:50px;padding:0 14px;background:#fff;border:1px solid var(--border-default);border-radius:var(--radius-md)}
.ef-hero__input svg{color:var(--text-muted)}
.ef-hero__input input{flex:1;border:none;outline:none;background:transparent;font-family:var(--font-body);font-weight:600;font-size:var(--text-base);color:var(--text-strong)}

/* ---------- THEME CARDS ---------------------------------------------------- */
.ef-theme{position:relative;height:230px;display:block;overflow:hidden;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s}
.ef-theme:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.ef-theme img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .32s var(--ease)}
.ef-theme:hover img{transform:scale(1.06)}
.ef-theme__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.82) 0%,rgba(14,45,34,.12) 55%,rgba(14,45,34,.18) 100%)}
.ef-theme__ic{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-md);background:rgba(255,255,255,.92);color:var(--brand-green)}
.ef-theme__cap{position:absolute;left:0;right:0;bottom:0;padding:16px}
.ef-theme__label{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:#fff;letter-spacing:-.01em}
.ef-theme__count{display:flex;align-items:center;gap:6px;margin-top:4px;color:rgba(255,255,255,.85);font-weight:700;font-size:var(--text-sm)}

/* ---------- FEATURED CITY / REGION CARDS ----------------------------------- */
.ef-feat{position:relative;display:block;min-height:340px;overflow:hidden;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}
.ef-feat img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-feat__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.85) 0%,rgba(14,45,34,.1) 55%)}
.ef-feat__tagline{position:absolute;top:16px;left:16px;display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--radius-pill);background:var(--color-accent);color:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--text-sm)}
.ef-feat__cap{position:absolute;left:0;right:0;bottom:0;padding:22px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.ef-feat__name{font-family:var(--font-display);font-weight:700;font-size:38px;color:#fff;letter-spacing:-.02em;margin-top:10px;line-height:1}
.ef-feat__sub{margin:8px 0 0;color:rgba(255,255,255,.85);font-weight:600;font-size:var(--text-sm);max-width:320px}
.ef-ranklist{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:14px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;justify-content:space-between}
.ef-regioncard{display:flex;flex-direction:column;border:1px solid var(--border-subtle);overflow:hidden;border-radius:var(--radius-xl);background:var(--surface-card);box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s}
.ef-regioncard:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.ef-regioncard__media{position:relative;height:150px;overflow:hidden}
.ef-regioncard__media img{width:100%;height:100%;object-fit:cover;transition:transform .32s var(--ease)}
.ef-regioncard:hover .ef-regioncard__media img{transform:scale(1.05)}
.ef-regioncard__score{position:absolute;top:10px;right:10px;box-shadow:var(--shadow-sm)}
.ef-regioncard__body{padding:16px}
.ef-regioncard__name{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--text-strong)}
.ef-regioncard__eyebrow{font-weight:800;font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:12px 0 5px}
.ef-regioncard__cities{margin:0;font-size:var(--text-sm);font-weight:600;color:var(--text-body)}

/* ---------- COMMUNITY GREEN BAND ------------------------------------------- */
.ef-band{position:relative;overflow:hidden;background:var(--green-700);margin-top:56px}
.ef-band--dots::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:22px 22px}
.ef-band__in{position:relative;max-width:var(--container);margin:0 auto;padding:52px 28px;display:grid;grid-template-columns:300px 1fr;gap:36px;align-items:center}
.ef-band__eyebrow{font-weight:800;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--orange-300);margin-bottom:10px}
.ef-band h2{margin:0;font-size:var(--text-2xl);font-weight:700;color:#fff;letter-spacing:-.02em}
.ef-band__text{margin:12px 0 20px;color:rgba(255,255,255,.82);font-weight:600;font-size:var(--text-base);line-height:1.6}
.ef-band__stats{display:flex;gap:28px;margin-bottom:22px}
.ef-stat__v{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);color:#fff;line-height:1}
.ef-stat__l{font-size:var(--text-xs);font-weight:700;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.04em;margin-top:4px}

/* ---------- ESCORE EXPLAINER CARD (home) ----------------------------------- */
.ef-escard{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-2xl);box-shadow:var(--shadow-sm);padding:34px 36px;display:grid;grid-template-columns:300px 1fr;gap:40px;align-items:center}
.ef-escard__feats{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.ef-feature__ic{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:var(--radius-lg);background:var(--green-50);color:var(--brand-green);margin-bottom:12px}
.ef-feature__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-feature__p{margin:4px 0 0;font-size:var(--text-sm);font-weight:600;color:var(--text-muted);line-height:1.5}

/* ---------- DETAIL HEROES -------------------------------------------------- */
.ef-dhero{position:relative;height:360px;overflow:hidden}
.ef-dhero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-dhero__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.78) 0%,rgba(14,45,34,.15) 50%,rgba(14,45,34,.25) 100%)}
.ef-dhero__top{position:absolute;top:16px;left:0;right:0}
.ef-dhero__bottom{position:absolute;bottom:0;left:0;right:0}
.ef-dhero__row{max-width:var(--container);margin:0 auto;padding:0 28px 26px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.ef-dhero__title{margin:0;font-size:52px;font-weight:700;color:#fff;letter-spacing:-.02em;line-height:1}
.ef-dhero__meta{display:flex;align-items:center;gap:14px;margin-top:12px}
.ef-dhero__meta .ef-reviews{color:rgba(255,255,255,.85);font-weight:700;font-size:var(--text-sm)}
.ef-dhero__actions{display:flex;align-items:center;gap:10px}
.ef-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;flex:none;border-radius:var(--radius-pill);cursor:pointer;border:1px solid rgba(255,255,255,.6);background:rgba(255,255,255,.9);box-shadow:var(--shadow-sm);color:var(--neutral-700)}
.ef-iconbtn--solid{background:var(--surface-card);border-color:var(--border-subtle)}
.ef-iconbtn--sm{width:32px;height:32px}
.ef-iconbtn.is-active{color:var(--color-accent)}

/* ---------- DETAIL LAYOUT -------------------------------------------------- */
.ef-detail{max-width:var(--container);margin:0 auto;padding:30px 28px}
.ef-detail__cols{display:grid;grid-template-columns:1fr 320px;gap:30px;align-items:start}
.ef-detail__cols--wide{grid-template-columns:1fr 360px}
.ef-intro{font-size:var(--text-md);line-height:1.7;color:var(--text-body);font-weight:500;margin:0 0 24px;max-width:62ch}
.ef-side{display:flex;flex-direction:column;gap:12px;position:sticky;top:96px}
.ef-side__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-stat{display:flex;align-items:center;gap:11px;padding:14px 16px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}
.ef-stat__ic{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:none;border-radius:var(--radius-md);background:var(--green-50);color:var(--brand-green)}
.ef-stat__lbl{font-size:var(--text-xs);font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.ef-stat__val{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--text-strong)}
.ef-stat__val--warn{color:var(--orange-700)}

/* gallery */
.ef-gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:180px 180px;gap:10px;margin-bottom:26px}
.ef-gallery>div{position:relative;overflow:hidden;border-radius:var(--radius-md)}
.ef-gallery>div:first-child{grid-row:span 2;grid-column:1;border-radius:var(--radius-lg)}
.ef-gallery img{width:100%;height:100%;object-fit:cover}
.ef-gallery__more{position:absolute;inset:0;background:rgba(14,45,34,.55);display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:700;gap:6px}

/* activity info panel */
.ef-panel{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:18px;box-shadow:var(--shadow-md)}
.ef-inforow{display:flex;align-items:flex-start;gap:11px;padding:11px 0;border-bottom:1px solid var(--neutral-100);font-size:var(--text-sm);font-weight:600;color:var(--text-body);line-height:1.45}
.ef-inforow>svg{flex:none;color:var(--text-muted);margin-top:1px}
.ef-escore-banner{display:flex;align-items:center;gap:16px;padding:18px;background:var(--green-50);border-radius:var(--radius-xl);margin-bottom:24px}
.ef-escore-banner__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--brand-green)}
.ef-escore-banner p{margin:2px 0 0;font-size:var(--text-sm);font-weight:600;color:var(--text-body)}
.ef-mapcard{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm)}
.ef-mapcard__map{height:150px;background:linear-gradient(135deg,var(--green-100),var(--green-50));display:flex;align-items:center;justify-content:center;position:relative}
.ef-mapcard__grid{position:absolute;inset:0;background-image:linear-gradient(var(--green-200) 1px,transparent 1px),linear-gradient(90deg,var(--green-200) 1px,transparent 1px);background-size:28px 28px;opacity:.5}
.ef-mapcard__pin{position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-pill);background:var(--color-accent);color:#fff;box-shadow:var(--shadow-md)}
.ef-nearby{display:flex;align-items:center;gap:9px;padding:6px 0}
.ef-nearby span:nth-child(1){display:inline-flex;width:17px;height:17px;color:var(--text-muted)}
.ef-nearby__name{flex:1;font-size:var(--text-sm);font-weight:600;color:var(--text-body)}
.ef-nearby__dist{font-size:var(--text-xs);font-weight:700;color:var(--text-muted)}

/* ---------- FORM CONTROLS -------------------------------------------------- */
.ef-field{display:flex;flex-direction:column;gap:6px}
.ef-field label{font-size:var(--text-sm);font-weight:700;color:var(--text-strong)}
.ef-inputwrap{display:flex;align-items:center;gap:8px;height:54px;padding:0 16px;background:#fff;border:1px solid var(--border-default);border-radius:var(--radius-md);transition:border-color .12s,box-shadow .12s}
.ef-inputwrap:focus-within{border-color:var(--border-focus);box-shadow:var(--shadow-focus)}
.ef-inputwrap svg{color:var(--text-muted);flex:none}
.ef-inputwrap input,.ef-inputwrap select,.ef-inputwrap textarea{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-strong);font-weight:600}
/* Pas de cadre interne dans les champs : le focus est porté par le conteneur, jamais par le champ lui-même */
.ef-inputwrap input:focus,.ef-inputwrap select:focus,.ef-inputwrap textarea:focus,
.ef-inputwrap input:focus-visible,.ef-inputwrap select:focus-visible,.ef-inputwrap textarea:focus-visible,
.ef-search__bar input:focus,.ef-search__bar input:focus-visible,
.ef-hero__input input:focus,.ef-hero__input input:focus-visible,
.ef-404__input input:focus,.ef-404__input input:focus-visible{outline:none;box-shadow:none;border-radius:0}
/* Le focus reste visible sur le conteneur des champs qui n'en avaient pas */
.ef-hero__input:focus-within,.ef-404__input:focus-within{border-color:var(--border-focus);box-shadow:var(--shadow-focus)}
.ef-inputwrap--md{height:46px;padding:0 14px}
.ef-inputwrap--sm{height:38px;padding:0 12px;font-size:var(--text-sm)}
.ef-pwtoggle{display:inline-flex;border:none;background:none;cursor:pointer;color:var(--text-muted);padding:2px}
.ef-textarea{align-items:flex-start;height:auto;padding:12px 16px}
.ef-textarea textarea{resize:vertical;min-height:90px;line-height:1.5}
.ef-check{display:flex;align-items:flex-start;gap:9px;cursor:pointer;user-select:none}
.ef-check input{position:absolute;opacity:0;pointer-events:none}
.ef-check__box{flex:none;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-top:1px;border-radius:6px;border:1.5px solid var(--border-strong);background:#fff;color:#fff;transition:all .12s}
.ef-check input:checked+.ef-check__box{background:var(--brand-green);border-color:var(--brand-green)}
.ef-check__box svg{opacity:0}
.ef-check input:checked+.ef-check__box svg{opacity:1}
.ef-check span:last-child{font-size:var(--text-sm);font-weight:600;color:var(--text-body);line-height:1.45}

/* ---------- AUTH ----------------------------------------------------------- */
.ef-auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--surface-card)}
.ef-auth__aside{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:48px;color:#fff}
.ef-auth__aside>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-auth__aside-grad{position:absolute;inset:0;background:linear-gradient(160deg,rgba(20,64,47,.92) 0%,rgba(20,64,47,.74) 50%,rgba(14,45,34,.82) 100%)}
.ef-auth__aside>*{position:relative}
.ef-auth__aside h2{margin:0;font-size:34px;font-weight:600;line-height:1.12;letter-spacing:-.02em;color:#fff}
.ef-auth__feats{display:flex;flex-direction:column;gap:18px;margin:28px 0}
.ef-auth__feat{display:flex;gap:13px;align-items:flex-start}
.ef-auth__feat .ef-auth__feat-ic{flex:none;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:var(--radius-lg);background:rgba(255,255,255,.14);color:#fff}
.ef-auth__feat strong{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);display:block}
.ef-auth__feat span{font-size:var(--text-sm);font-weight:600;color:rgba(255,255,255,.78)}
.ef-auth__quote{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-xl);padding:18px;display:flex;gap:13px;align-items:flex-start}
.ef-auth__quote p{margin:7px 0 6px;font-size:var(--text-sm);font-weight:600;line-height:1.5;color:#fff}
.ef-auth__quote .ef-auth__who{font-size:var(--text-xs);font-weight:700;color:rgba(255,255,255,.75)}
.ef-auth__main{display:flex;flex-direction:column;min-height:100vh;overflow-y:auto}
.ef-auth__bar{display:flex;align-items:center;justify-content:space-between;padding:24px 40px}
.ef-auth__back{display:inline-flex;align-items:center;gap:7px;border:none;background:none;cursor:pointer;color:var(--text-muted);font-weight:700;font-size:var(--text-sm)}
.ef-auth__back svg{transform:rotate(180deg)}
.ef-auth__form-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:12px 40px 40px}
.ef-auth__form{width:100%;max-width:408px}
.ef-auth__form h1{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--text-strong);letter-spacing:-.02em}
.ef-auth__switch{margin:8px 0 24px;font-size:var(--text-base);font-weight:600;color:var(--text-muted)}
.ef-auth__switch a{font-weight:800;color:var(--brand-green)}
.ef-auth__social{display:flex;gap:10px;margin-bottom:22px}
.ef-social-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:#fff;cursor:pointer;font-weight:700;font-size:var(--text-sm);color:var(--text-body)}
.ef-social-btn:hover{background:var(--neutral-50)}
.ef-auth__divider{display:flex;align-items:center;gap:12px;margin:0 0 22px;color:var(--text-faint)}
.ef-auth__divider span:first-child,.ef-auth__divider span:last-child{flex:1;height:1px;background:var(--border-subtle)}
.ef-auth__divider em{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-style:normal}
.ef-auth__fields{display:flex;flex-direction:column;gap:16px}
.ef-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ef-auth__row-between{display:flex;align-items:center;justify-content:space-between}
.ef-auth__forgot{font-size:var(--text-sm);font-weight:700;color:var(--brand-green)}
.ef-auth__note{margin:18px 0 0;font-size:var(--text-xs);font-weight:600;color:var(--text-faint);text-align:center}
.ef-auth__sent{text-align:center;padding:8px 0 4px}
.ef-auth__sent-ic{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:var(--green-50);color:var(--brand-green);margin:6px 0 14px}
.ef-auth__sent p{font-size:var(--text-sm);font-weight:600;color:var(--text-body);line-height:1.55;margin:0 0 22px}

/* ---------- RANKINGS / COMMUNITY / ESCORE green page heroes ---------------- */
.ef-pagehero{position:relative;overflow:hidden;color:#fff;background:var(--green-700)}
.ef-pagehero--grad{background:linear-gradient(160deg,var(--green-700),var(--green-800))}
.ef-pagehero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:24px 24px}
.ef-pagehero__in{position:relative;max-width:var(--container);margin:0 auto;padding:48px 28px}
.ef-pagehero h1{margin:0;font-size:42px;font-weight:700;color:#fff;letter-spacing:-.02em;line-height:1.08}
.ef-pagehero__eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--orange-300);font-weight:800;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}
.ef-pagehero__intro{margin:16px 0 0;color:rgba(255,255,255,.85);font-weight:600;font-size:var(--text-md);line-height:1.6;max-width:600px}

/* tabs (rankings) */
.ef-tabs{display:flex;gap:4px;margin-top:22px}
.ef-tab{display:inline-flex;align-items:center;gap:7px;padding:12px 20px;border:none;cursor:pointer;background:transparent;color:rgba(255,255,255,.85);border-radius:12px 12px 0 0;font-weight:700;font-size:var(--text-base);text-decoration:none}
.ef-tab.is-active{background:var(--surface-page);color:var(--brand-green)}
.ef-filterbar{display:flex;align-items:center;gap:10px;margin-bottom:24px;flex-wrap:wrap}
.ef-filterbar__lbl{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);font-weight:700;font-size:var(--text-sm)}
.ef-chip{padding:7px 14px;border-radius:var(--radius-pill);border:1px solid var(--border-default);cursor:pointer;background:#fff;color:var(--text-body);font-weight:700;font-size:var(--text-sm);text-decoration:none}
.ef-chip.is-active{background:var(--brand-green);color:#fff;border-color:transparent}

/* podium */
.ef-podium{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;align-items:end;margin-bottom:28px}
.ef-podium__item{position:relative;display:block;overflow:hidden;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}
.ef-podium__item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-podium__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.88) 0%,rgba(14,45,34,.1) 60%)}
.ef-podium__n{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-pill);color:#fff;font-family:var(--font-display);font-weight:700;box-shadow:var(--shadow-sm)}
.ef-podium__crown{position:absolute;top:14px;right:12px;color:var(--orange-400)}
.ef-podium__cap{position:absolute;left:0;right:0;bottom:0;padding:14px}
.ef-podium__name{font-family:var(--font-display);font-weight:700;color:#fff}
.ef-podium__region{font-size:var(--text-xs);font-weight:700;color:rgba(255,255,255,.78);margin:2px 0 8px}
/* ranking list */
.ef-ranktable{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:10px}
.ef-ranktable__head,.ef-ranktable__row{display:flex;align-items:center;gap:16px;padding:10px 14px}
.ef-ranktable__head{padding:6px 14px 10px;border-bottom:1px solid var(--neutral-100);color:var(--text-faint);font-weight:800;font-size:var(--text-2xs);letter-spacing:.06em;text-transform:uppercase}
.ef-ranktable__row{border-radius:var(--radius-lg);transition:background .12s}
.ef-ranktable__row:hover{background:var(--neutral-50)}
.ef-rk-n{width:30px;text-align:center;font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--text-muted)}
.ef-rk-img{width:56px;height:56px;border-radius:var(--radius-md);object-fit:cover;flex:none}
.ef-rk-main{flex:1;min-width:0}
.ef-rk-main .t{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--text-strong)}
.ef-rk-main .s{font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}
.ef-rk-trend{width:64px;display:flex;justify-content:center}
.ef-trend{display:inline-flex;align-items:center;gap:2px;font-size:var(--text-xs);font-weight:800}
.ef-trend--up{color:var(--status-success)}.ef-trend--down{color:var(--status-danger)}.ef-trend--flat{color:var(--text-faint)}

/* ---------- FORM PAGE / generic content card ------------------------------ */
.ef-card-block{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:24px}
.ef-form-stack{display:flex;flex-direction:column;gap:14px}

/* ---------- COMMUNITY / FORUM ---------------------------------------------- */
.ef-pagehero__statstrip{display:flex;gap:32px;margin-top:28px;padding-top:24px;border-top:1px solid rgba(255,255,255,.16);flex-wrap:wrap}
.ef-hstat{display:flex;align-items:center;gap:11px}
.ef-hstat__ic{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;flex:none;border-radius:var(--radius-lg);background:rgba(255,255,255,.12);color:#fff}
.ef-hstat__v{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);color:#fff;line-height:1}
.ef-hstat__l{font-size:var(--text-2xs);font-weight:700;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.04em;margin-top:3px}
.ef-forum{max-width:var(--container);margin:0 auto;padding:28px 28px 56px;display:grid;grid-template-columns:230px 1fr 300px;gap:26px;align-items:start}
.ef-forum__aside{position:sticky;top:96px}
.ef-forum__catlabel{font-weight:800;font-size:var(--text-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:4px 10px 8px}
.ef-forum__cat{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;background:transparent;color:var(--text-body);font-weight:700;font-size:var(--text-sm);text-decoration:none}
.ef-forum__cat.is-active{background:var(--green-50);color:var(--brand-green)}
.ef-forum__rules{margin-top:16px;padding:16px;background:var(--orange-50);border-radius:var(--radius-lg)}
.ef-forum__rules strong{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--orange-900)}
.ef-forum__rules p{margin:4px 0 0;font-size:var(--text-xs);font-weight:600;color:var(--orange-800);line-height:1.5}
.ef-threadlist{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:hidden}
.ef-thread{display:flex;gap:14px;padding:16px;background:var(--surface-card);border-bottom:1px solid var(--neutral-100);text-decoration:none;color:inherit}
.ef-thread:hover{background:var(--neutral-50)}
.ef-thread__main{flex:1;min-width:0}
.ef-thread__top{display:flex;align-items:center;gap:8px;margin-bottom:5px;flex-wrap:wrap}
.ef-thread__pinned{display:inline-flex;align-items:center;gap:3px;color:var(--color-accent);font-weight:800;font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.04em}
.ef-thread__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--text-strong);line-height:1.3}
.ef-thread__excerpt{margin:5px 0 0;font-size:var(--text-sm);font-weight:500;color:var(--text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ef-thread__meta{display:flex;align-items:center;gap:14px;margin-top:10px;font-size:var(--text-xs);font-weight:700;color:var(--text-faint)}
.ef-thread__meta b{color:var(--text-body)}
.ef-thread__stats{display:flex;gap:18px;flex:none;align-items:center}
.ef-thread__stat{text-align:center;min-width:48px}
.ef-thread__stat .v{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-thread__stat.is-replies .v{color:var(--brand-green)}
.ef-thread__stat .v svg{color:var(--text-faint)}
.ef-thread__stat .l{font-size:var(--text-2xs);font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em;margin-top:2px}
.ef-contrib{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:16px}
.ef-contrib__row{display:flex;align-items:center;gap:11px;padding:8px 0}
.ef-contrib__n{width:16px;text-align:center;font-family:var(--font-display);font-weight:700;font-size:var(--text-sm)}
.ef-contrib__main{flex:1;min-width:0}
.ef-contrib__main .n{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--text-strong)}
.ef-contrib__main .a{font-size:var(--text-xs);font-weight:600;color:var(--text-muted)}
.ef-cta-card{background:var(--green-800);border-radius:var(--radius-xl);padding:20px;color:#fff}
.ef-cta-card .ef-cta-card__ic{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:var(--radius-lg);background:rgba(255,255,255,.14);color:#fff;margin-bottom:12px}
.ef-cta-card strong{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:#fff}
.ef-cta-card p{margin:6px 0 14px;font-size:var(--text-sm);font-weight:600;color:rgba(255,255,255,.8);line-height:1.5}

/* ---------- ESCORE PAGE ---------------------------------------------------- */
.ef-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}
.ef-pillar{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:20px}
.ef-pillar__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.ef-pillar__ic{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:var(--radius-lg);color:#fff}
.ef-pillar__w{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl)}
.ef-pillar__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-pillar__bar{height:6px;border-radius:3px;background:var(--neutral-100);margin:10px 0 12px;overflow:hidden}
.ef-pillar__bar i{display:block;height:100%;border-radius:3px}
.ef-pillar p{margin:0;font-size:var(--text-sm);font-weight:600;color:var(--text-muted);line-height:1.5}
.ef-steps{background:var(--green-50);border-radius:var(--radius-2xl);padding:34px 36px;margin:12px 0 44px;display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.ef-step{position:relative}
.ef-step__n{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);background:var(--brand-green);color:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);margin-bottom:12px}
.ef-step__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--text-strong)}
.ef-step p{margin:6px 0 0;font-size:var(--text-sm);font-weight:600;color:var(--text-body);line-height:1.5}
.ef-tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.ef-tier{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:20px;display:flex;align-items:center;gap:16px}
.ef-tier__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg)}
.ef-tier__r{font-size:var(--text-sm);font-weight:700;color:var(--text-muted)}
.ef-cta-band{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:44px;padding:28px 32px;background:var(--green-800);border-radius:var(--radius-2xl);color:#fff}
.ef-cta-band h3{margin:0;font-size:var(--text-xl);color:#fff}
.ef-cta-band p{margin:6px 0 0;color:rgba(255,255,255,.8);font-weight:600;font-size:var(--text-base)}

/* ---------- BLOG ----------------------------------------------------------- */
.ef-blog-head{text-align:center;margin-bottom:28px}
.ef-blog-head h1{margin:0;font-size:42px;font-weight:700;color:var(--text-strong);letter-spacing:-.02em}
.ef-blog-head p{margin:10px auto 0;max-width:560px;font-size:var(--text-md);font-weight:600;color:var(--text-muted)}
.ef-eyebrow-center{display:inline-flex;align-items:center;gap:8px;margin-bottom:10px;color:var(--color-accent);font-weight:800;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}
.ef-featured{position:relative;display:block;width:100%;min-height:360px;overflow:hidden;border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);margin-bottom:40px}
.ef-featured img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-featured__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.9) 0%,rgba(14,45,34,.15) 65%)}
.ef-featured__cap{position:absolute;left:0;right:0;bottom:0;padding:36px 40px;max-width:720px}
.ef-featured__cap h2{margin:14px 0 10px;font-size:34px;font-weight:700;color:#fff;letter-spacing:-.02em;line-height:1.1}
.ef-featured__cap p{margin:0 0 16px;color:rgba(255,255,255,.85);font-weight:600;font-size:var(--text-md);line-height:1.5;max-width:600px}
.ef-meta{display:flex;align-items:center;gap:10px;font-size:var(--text-xs);font-weight:700;color:var(--text-muted)}
.ef-meta--light{color:rgba(255,255,255,.8)}
.ef-meta .dot{opacity:.5}
.ef-meta .read{display:inline-flex;align-items:center;gap:4px}
.ef-acard{display:flex;flex-direction:column;text-align:left;border:1px solid var(--border-subtle);background:var(--surface-card);overflow:hidden;border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s;text-decoration:none;color:inherit}
.ef-acard:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.ef-acard__media{position:relative;height:170px;overflow:hidden}
.ef-acard__media img{width:100%;height:100%;object-fit:cover;transition:transform .32s var(--ease)}
.ef-acard:hover .ef-acard__media img{transform:scale(1.05)}
.ef-acard__cat{position:absolute;top:12px;left:12px}
.ef-acard__body{padding:18px;display:flex;flex-direction:column;flex:1}
.ef-acard__body h3{margin:0;font-size:var(--text-lg);font-weight:700;color:var(--text-strong);letter-spacing:-.01em;line-height:1.25}
.ef-acard__body p{margin:8px 0 16px;font-size:var(--text-sm);font-weight:600;color:var(--text-muted);line-height:1.5;flex:1}
.ef-newsletter{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:48px;padding:30px 34px;background:var(--green-50);border:1px solid var(--green-100);border-radius:var(--radius-2xl)}
.ef-newsletter form{display:flex;gap:10px;flex:none;width:380px}

/* ---------- ARTICLE -------------------------------------------------------- */
.ef-article-hero{position:relative;height:420px;overflow:hidden}
.ef-article-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ef-article-hero__grad{position:absolute;inset:0;background:linear-gradient(0deg,rgba(14,45,34,.92) 0%,rgba(14,45,34,.2) 60%,rgba(14,45,34,.35) 100%)}
.ef-article-hero__cap{position:absolute;bottom:0;left:0;right:0}
.ef-article-hero__cap-in{max-width:820px;margin:0 auto;padding:0 28px 32px}
.ef-article-hero__cap h1{margin:14px 0 0;font-size:42px;font-weight:700;color:#fff;letter-spacing:-.02em;line-height:1.1}
.ef-article-author{display:flex;align-items:center;gap:12px;margin-top:18px}
.ef-article-author .n{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:#fff}
.ef-article-author .r{display:flex;align-items:center;gap:8px;font-size:var(--text-sm);font-weight:600;color:rgba(255,255,255,.8)}
.ef-article-body{max-width:820px;margin:0 auto;padding:40px 28px 0}
.ef-article-body .lede{margin:0 0 26px;font-size:var(--text-xl);font-weight:600;color:var(--text-strong);line-height:1.5;letter-spacing:-.01em}
.ef-article-body p{margin:0 0 18px;font-size:var(--text-md);font-weight:500;color:var(--text-body);line-height:1.8}
.ef-article-body h2{margin:32px 0 12px;font-size:var(--text-2xl);font-weight:700;color:var(--text-strong);letter-spacing:-.02em}
.ef-article-body blockquote{margin:28px 0;padding:4px 0 4px 22px;border-left:4px solid var(--color-accent);font-family:var(--font-display);font-weight:600;font-size:var(--text-xl);font-style:italic;color:var(--brand-green);line-height:1.4}
.ef-article-body figure{margin:28px 0}
.ef-article-body figure>div{border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm)}
.ef-article-body figcaption{margin:10px 0 0;font-size:var(--text-sm);font-weight:600;color:var(--text-faint);text-align:center;font-style:italic}
.ef-article-body h3{margin:26px 0 10px;font-size:var(--text-xl);font-weight:700;color:var(--text-strong);letter-spacing:-.01em}
.ef-article-body h4{margin:22px 0 8px;font-size:var(--text-lg);font-weight:700;color:var(--text-strong)}
.ef-article-body ul,.ef-article-body ol{margin:0 0 18px;padding-left:24px}
.ef-article-body ul{list-style:disc}
.ef-article-body ol{list-style:decimal}
.ef-article-body li{margin:0 0 8px;font-size:var(--text-md);font-weight:500;color:var(--text-body);line-height:1.7}
.ef-article-body li::marker{color:var(--color-accent)}
.ef-article-body p strong,.ef-article-body li strong,.ef-article-body .lede strong{font-weight:700;color:var(--text-strong)}
.ef-article-body a{color:var(--brand-green);font-weight:600;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;text-decoration-color:rgba(28,87,66,.35);transition:text-decoration-color .15s}
.ef-article-body a:hover{text-decoration-color:var(--brand-green)}
.ef-article-body figcaption .ef-figcredit{display:inline;font-style:normal;font-weight:600;color:var(--text-faint);opacity:.85}
.ef-article-body figcaption .ef-figcredit a{color:inherit;font-weight:600}
.ef-article-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px;padding-top:24px;border-top:1px solid var(--border-subtle)}
.ef-author-box{display:flex;gap:16px;align-items:center;margin-top:28px;padding:20px;background:var(--green-50);border-radius:var(--radius-xl)}
.ef-author-box .ef-author-box__main{flex:1}
.ef-related{max-width:var(--container);margin:0 auto;padding:44px 28px 56px}

/* ---------- BADGES PAGE ---------------------------------------------------- */
.ef-profile{display:flex;align-items:center;gap:22px}
.ef-profile__main{flex:1}
.ef-profile__name{margin:0;font-size:32px;font-weight:700;color:#fff;letter-spacing:-.02em;display:inline}
.ef-profile__lvl{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:var(--radius-pill);background:var(--color-accent);color:#fff;font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);margin-left:10px}
.ef-profile__sub{display:flex;align-items:center;gap:8px;margin-top:6px;color:rgba(255,255,255,.82);font-weight:600;font-size:var(--text-sm);flex-wrap:wrap}
.ef-profile__sub .dot{opacity:.5}
.ef-profile__progress{margin-top:16px;max-width:460px}
.ef-profile__progress-top{display:flex;justify-content:space-between;font-size:var(--text-xs);font-weight:700;margin-bottom:6px}
.ef-profile__progress-top span:last-child{color:rgba(255,255,255,.7)}
.ef-profile__bar{height:8px;border-radius:4px;background:rgba(255,255,255,.18);overflow:hidden}
.ef-profile__bar i{display:block;height:100%;border-radius:4px;background:var(--orange-500)}
.ef-profile__ministats{display:flex;gap:26px;flex:none}
.ef-profile__ministat{text-align:center}
.ef-profile__ministat .v{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);color:#fff;line-height:1}
.ef-profile__ministat .l{font-size:var(--text-2xs);font-weight:700;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.04em;margin-top:5px}
.ef-challenge{display:flex;gap:14px;padding:18px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}
.ef-challenge__ic{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;flex:none;border-radius:var(--radius-lg);background:var(--orange-50);color:var(--orange-700)}
.ef-challenge__main{flex:1;min-width:0}
.ef-challenge__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ef-challenge__t{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-challenge__x{font-size:var(--text-sm);font-weight:600;color:var(--text-muted);margin-top:2px}
.ef-challenge__reward{display:inline-flex;align-items:center;gap:4px;flex:none;padding:4px 10px;border-radius:var(--radius-pill);background:var(--green-50);color:var(--brand-green);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm)}
.ef-pbar{height:7px;border-radius:4px;background:var(--neutral-100);overflow:hidden;margin-top:12px}
.ef-pbar i{display:block;height:100%;border-radius:4px;background:var(--color-accent)}
.ef-challenge__foot{display:flex;align-items:center;justify-content:space-between;margin-top:7px;font-size:var(--text-xs);font-weight:700;color:var(--text-muted)}
.ef-challenge__deadline{display:inline-flex;align-items:center;gap:4px;color:var(--orange-700)}
.ef-badgetile{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 14px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}
.ef-badgetile.is-locked{box-shadow:none;opacity:.96}
.ef-badgetile__tier{position:absolute;top:10px;right:10px}
.ef-badgetile__med{position:relative;width:72px;height:72px;margin-bottom:12px}
.ef-badgetile__med>span{position:absolute;inset:0;border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;color:#fff}
.ef-badgetile.is-locked .ef-badgetile__med>span{background:var(--neutral-200);color:var(--neutral-400)}
.ef-badgetile__check{position:absolute;bottom:-2px;right:-2px;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-pill);background:var(--status-success);color:#fff;border:2px solid var(--surface-card)}
.ef-badgetile__name{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong)}
.ef-badgetile__desc{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);margin:3px 0 12px}
.ef-badgetile__pbar{width:100%;height:6px;border-radius:3px;background:var(--neutral-100);overflow:hidden}
.ef-badgetile__pbar i{display:block;height:100%;border-radius:3px}
.ef-badgetile__status{font-size:var(--text-2xs);font-weight:700;margin-top:6px}
.ef-ladder{background:var(--green-50);border-radius:var(--radius-2xl);padding:28px 32px}
.ef-ladder__track{display:flex;align-items:flex-start;justify-content:space-between;position:relative}
.ef-ladder__line{position:absolute;top:19px;left:20px;right:20px;height:3px;background:var(--green-200)}
.ef-ladder__step{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;width:130px}
.ef-ladder__n{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-faint);border:2px solid var(--green-200);font-family:var(--font-display);font-weight:700;z-index:1}
.ef-ladder__n.is-reached{background:var(--brand-green);color:#fff;border:none}
.ef-ladder__n.is-current{background:var(--color-accent);color:#fff;border:none;box-shadow:var(--shadow-md)}
.ef-ladder__name{font-family:var(--font-display);font-weight:700;font-size:var(--text-xs);color:var(--text-muted);margin-top:8px;line-height:1.25}
.ef-ladder__pts{font-size:var(--text-2xs);font-weight:700;color:var(--text-faint);margin-top:2px}

/* ---------- INFO PAGES (about/press/partners) ------------------------------ */
.ef-statbox{text-align:center;padding:24px 16px;background:var(--green-50);border-radius:var(--radius-xl)}
.ef-statbox .v{font-family:var(--font-display);font-weight:700;font-size:36px;color:var(--brand-green);line-height:1}
.ef-statbox .l{font-size:var(--text-sm);font-weight:700;color:var(--text-muted);margin-top:8px}
.ef-valuecard{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:24px}
.ef-valuecard__ic{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-lg);background:var(--green-50);color:var(--brand-green);margin-bottom:14px}
.ef-pressrow{display:flex;align-items:center;gap:16px;width:100%;text-align:left;padding:16px 18px;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-card);text-decoration:none;color:inherit}
.ef-pressrow:hover{background:var(--neutral-50)}
.ef-pressrow__src{flex:none;width:90px}
.ef-pressrow__src .s{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--brand-green)}
.ef-pressrow__src .d{font-size:var(--text-xs);font-weight:600;color:var(--text-faint);margin-top:2px}
.ef-pressrow__title{flex:1;font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--text-strong);line-height:1.35}
.ef-contact-split{display:grid;grid-template-columns:1fr 1fr;border-radius:var(--radius-2xl);overflow:hidden;border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm)}
.ef-contact-split__left{background:var(--green-700);color:#fff;padding:34px}
.ef-contact-split__left h3{color:#fff;margin:0}
.ef-contact-split__left p{margin:10px 0 22px;color:rgba(255,255,255,.82);font-weight:600;line-height:1.6}
.ef-contact-line{display:flex;align-items:center;gap:11px;padding:8px 0;font-weight:700;font-size:var(--text-sm)}
.ef-contact-line svg{color:var(--orange-300)}
.ef-contact-split__right{background:var(--surface-card);padding:34px;display:flex;flex-direction:column;gap:14px}
.ef-trustlogos{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}
.ef-trustlogo{padding:12px 22px;background:var(--neutral-50);border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--neutral-600)}

/* ---------- LEGAL ---------------------------------------------------------- */
.ef-legal{max-width:1000px;margin:0 auto;padding:28px 28px 56px}
.ef-legal__cols{display:grid;grid-template-columns:230px 1fr;gap:36px;align-items:start}
.ef-legal__nav{position:sticky;top:96px;display:flex;flex-direction:column;gap:4px}
.ef-legal__navitem{display:flex;align-items:center;gap:9px;padding:10px 12px;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;background:transparent;color:var(--text-body);font-weight:700;font-size:var(--text-sm);text-decoration:none}
.ef-legal__navitem.is-active{background:var(--green-50);color:var(--brand-green)}
.ef-legal h1{margin:0;font-size:38px;font-weight:700;color:var(--text-strong);letter-spacing:-.02em}
.ef-legal__updated{margin:8px 0 28px;font-size:var(--text-sm);font-weight:700;color:var(--text-faint)}
.ef-legal section{margin-bottom:22px}
.ef-legal section h2{margin:0 0 8px;font-size:var(--text-lg);font-weight:700;color:var(--text-strong)}
.ef-legal section p{margin:0;font-size:var(--text-base);font-weight:500;color:var(--text-body);line-height:1.7;max-width:70ch}
.ef-legal__contact{display:flex;align-items:center;gap:11px;margin-top:24px;padding:14px 18px;background:var(--neutral-50);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:600;color:var(--text-body)}

/* ---------- COOKIE BANNER -------------------------------------------------- */
.ef-cookie{position:fixed;left:0;right:0;bottom:0;z-index:480;padding:20px;display:flex;justify-content:center;pointer-events:none}
.ef-cookie[hidden]{display:none}
.ef-cookie__card{pointer-events:auto;width:100%;max-width:560px;background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);border:1px solid var(--border-subtle);overflow:hidden}
.ef-cookie__top{padding:22px 24px 0;display:flex;gap:14px}
.ef-cookie__icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex:none;border-radius:var(--radius-lg);background:var(--green-50);color:var(--brand-green)}
.ef-cookie__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--text-strong)}
.ef-cookie__top p{margin:6px 0 0;font-size:var(--text-sm);font-weight:500;color:var(--text-body);line-height:1.55}
.ef-cookie__prefs{padding:16px 24px 0}
.ef-cookie__pref{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--neutral-100)}
.ef-cookie__pref .m{flex:1}
.ef-cookie__pref .m b{font-weight:700;font-size:var(--text-sm);color:var(--text-strong)}
.ef-cookie__pref .m span{display:block;font-size:var(--text-xs);font-weight:600;color:var(--text-muted);margin-top:2px}
.ef-toggle{width:42px;height:24px;flex:none;border-radius:var(--radius-pill);border:none;cursor:pointer;padding:2px;background:var(--neutral-300);display:flex;justify-content:flex-start}
.ef-toggle.is-on{background:var(--brand-green);justify-content:flex-end}
.ef-toggle.is-locked{opacity:.6;cursor:not-allowed}
.ef-toggle span{width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--shadow-xs)}
.ef-cookie__actions{display:flex;align-items:center;gap:10px;padding:18px 24px 22px;flex-wrap:wrap}
.ef-cookie__custom{display:inline-flex;align-items:center;gap:5px;border:none;background:none;cursor:pointer;color:var(--text-muted);font-weight:700;font-size:var(--text-sm);margin-right:auto}

/* ---------- FOOTER --------------------------------------------------------- */
.ef-footer{background:var(--green-800);color:#fff;margin-top:8px}
.ef-footer__in{max-width:var(--container);margin:0 auto;padding:52px 28px 28px}
.ef-footer__grid{display:grid;grid-template-columns:1.7fr repeat(5,1fr);gap:28px}
.ef-footer__brand img{height:76px;margin-bottom:18px}
.ef-footer__brand p{color:rgba(255,255,255,.72);font-size:var(--text-sm);font-weight:600;line-height:1.6;max-width:250px;margin:0}
.ef-socials{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.ef-social{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-pill);background:rgba(255,255,255,.12);color:#fff;transition:background .12s,transform .12s}
.ef-social:hover{background:var(--color-accent);transform:translateY(-2px)}
.ef-footer__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:#fff;margin-bottom:12px}
.ef-footer__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ef-footer__col a{color:rgba(255,255,255,.72);font-size:var(--text-sm);font-weight:600}
.ef-footer__col a:hover{color:#fff}
.ef-footer__bottom{display:flex;align-items:center;justify-content:space-between;margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);flex-wrap:wrap;gap:12px}
.ef-footer__bottom>span{color:rgba(255,255,255,.6);font-size:var(--text-xs);font-weight:600}
.ef-footer__legal{display:flex;gap:18px}
.ef-footer__legal a{color:rgba(255,255,255,.6);font-size:var(--text-xs);font-weight:600}

/* ---------- UTIL ----------------------------------------------------------- */
.ef-mt-section{margin-top:52px}
.ef-pb{padding-bottom:56px}
.ef-center{text-align:center}
.ef-flex-center{display:flex;justify-content:center}
.ef-empty{padding:48px;text-align:center;color:var(--text-muted);font-weight:600;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl)}

/* ---------- RESPONSIVE ----------------------------------------------------- */
@media(max-width:1080px){
  .ef-grid--5{grid-template-columns:repeat(3,1fr)}
  .ef-grid--4{grid-template-columns:repeat(2,1fr)}
  .ef-forum{grid-template-columns:1fr}
  .ef-forum__aside,.ef-forum [class$="aside"]{position:static}
  .ef-detail__cols,.ef-detail__cols--wide{grid-template-columns:1fr}
  .ef-band__in,.ef-escard,.ef-contact-split,.ef-auth{grid-template-columns:1fr}
  .ef-pillars,.ef-tiers,.ef-steps{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:920px){
  .ef-nav{display:none}
  .ef-footer__grid{grid-template-columns:1fr 1fr}
  .ef-auth__aside{display:none}
  .ef-newsletter{flex-direction:column;align-items:stretch}
  .ef-newsletter form{width:auto}
}
@media(max-width:680px){
  .ef-header__in{padding:0 16px;gap:12px}
  .ef-haction--label span:not(.ef-badge-dot):not(.ef-haction__icon){display:none}
  .ef-container,.ef-section,.ef-detail,.ef-pagehero__in,.ef-forum,.ef-footer__in,.ef-related,.ef-legal{padding-left:16px;padding-right:16px}
  .ef-grid--3,.ef-grid--4,.ef-grid--5,.ef-grid--2,.ef-pillars,.ef-tiers,.ef-steps,.ef-podium{grid-template-columns:1fr}
  .ef-hero h1{font-size:34px}.ef-dhero__title{font-size:36px}
  .ef-hero__form{flex-direction:column;gap:12px}
  .ef-hero__input{height:60px;padding:0 18px;gap:11px}
  .ef-hero__input svg{width:22px;height:22px}
  .ef-hero__input input{font-size:17px}
  .ef-hero__form .ef-btn--lg{height:58px;font-size:var(--text-md);width:100%}
  .ef-gallery{grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .ef-gallery>div:first-child{grid-column:span 2}
  .ef-profile{flex-wrap:wrap}.ef-profile__ministats{width:100%;justify-content:space-between;gap:8px}
  .ef-ladder__track{flex-wrap:wrap;gap:20px}.ef-ladder__line{display:none}.ef-ladder__step{width:45%}
  .ef-legal__cols{grid-template-columns:1fr}.ef-legal__nav{position:static;flex-direction:row;flex-wrap:wrap}
  .ef-footer__grid{grid-template-columns:1fr}
  .ef-cta-band,.ef-cta-band *{text-align:left}.ef-cta-band{flex-direction:column;align-items:flex-start}
}

/* ===========================================================================
   KIT MÉDIA / ESPACE PRESSE
   =========================================================================== */
.ef-kit{max-width:var(--container);margin:0 auto;padding:40px 28px 64px;display:grid;grid-template-columns:1fr 340px;gap:34px;align-items:start}
.ef-kit__block{margin-bottom:42px}
.ef-kit__block:last-child{margin-bottom:0}
.ef-kit__h{font-size:var(--text-xl);margin:0 0 4px}
.ef-kit__sub{margin:0 0 18px;font-size:var(--text-sm);font-weight:600;color:var(--text-muted);max-width:62ch}
.ef-kit__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:16px}

.ef-logocard{border:1px solid var(--border-subtle);border-radius:var(--radius-xl);overflow:hidden;background:#fff}
.ef-logocard__tile{height:130px;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--neutral-50)}
.ef-logocard__tile img{max-height:100%;max-width:100%;width:auto;object-fit:contain;background:none}
.ef-logocard__tile--green{background:var(--brand-green)}
.ef-logocard__tile--dark{background:var(--neutral-900)}
.ef-logocard__body{padding:12px 14px 14px}
.ef-logocard__name{font-weight:700;font-size:var(--text-sm);color:var(--text-strong);margin-bottom:10px}
.ef-logocard__dls{display:flex;flex-wrap:wrap;gap:7px}
.ef-dlchip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid var(--border-default);border-radius:var(--radius-pill);font-size:var(--text-2xs);font-weight:800;letter-spacing:.02em;color:var(--text-body);background:#fff;cursor:pointer}
.ef-dlchip:hover{border-color:var(--brand-green);color:var(--brand-green);background:var(--green-50)}
.ef-dlchip svg{flex:none}

.ef-kit__photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px}
.ef-photo{position:relative;display:block;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-subtle);background:var(--neutral-100);aspect-ratio:16/9}
.ef-photo img{width:100%;height:100%;object-fit:cover}
.ef-photo__dl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;background:rgba(14,45,34,.58);color:#fff;font-weight:800;font-size:var(--text-sm);opacity:0;transition:opacity .22s var(--ease)}
.ef-photo:hover .ef-photo__dl,.ef-photo:focus-visible .ef-photo__dl{opacity:1}

.ef-swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px}
.ef-swatch{display:flex;flex-direction:column;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;background:#fff;text-align:center;padding:0;font-family:inherit;width:100%}
.ef-swatch__c{height:54px;margin-top:auto;border-top:1px solid var(--border-subtle)}
.ef-swatch__m{padding:14px 12px 12px;text-align:center}
.ef-swatch__n{display:block;font-weight:800;font-size:var(--text-sm);color:var(--text-strong);text-align:center}
.ef-swatch__h{display:block;text-align:center;font-size:var(--text-2xs);font-weight:800;color:var(--text-muted);letter-spacing:.06em;margin-top:4px}
.ef-swatch.copied .ef-swatch__h{color:var(--brand-green)}
.ef-swatch.copied .ef-swatch__h::after{content:" · " attr(data-copied)}

.ef-kit__side{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.ef-side-card{border:1px solid var(--border-subtle);border-radius:var(--radius-xl);background:#fff;padding:18px}
.ef-side-card h3{font-size:var(--text-md);margin:0 0 13px}
.ef-dlrow{display:flex;align-items:center;gap:11px;width:100%;padding:11px 13px;margin-bottom:8px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#fff;font-weight:700;font-size:var(--text-sm);color:var(--text-body)}
.ef-dlrow:last-child{margin-bottom:0}
.ef-dlrow:hover{border-color:var(--brand-green);background:var(--green-50);color:var(--brand-green)}
.ef-dlrow__ic{display:inline-flex;color:var(--brand-green);flex:none}
.ef-dlrow span{flex:1;text-align:left}
.ef-dlrow--primary{background:var(--brand-green);border-color:var(--brand-green);color:#fff}
.ef-dlrow--primary:hover{background:var(--green-800);color:#fff}
.ef-dlrow--primary .ef-dlrow__ic{color:#fff}
.ef-usage{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);line-height:1.65;margin:0}
.ef-kit__facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}
.ef-kit__fact b{display:block;font-family:var(--font-display);font-weight:700;font-size:22px;color:var(--brand-green);line-height:1}
.ef-kit__fact em{display:block;font-style:normal;font-size:var(--text-2xs);font-weight:800;color:var(--text-muted);margin-top:5px}
.ef-contactline{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:var(--text-sm);font-weight:700;color:var(--text-body)}
.ef-contactline svg{color:var(--text-muted);flex:none}
.ef-kit__divider{height:1px;background:var(--border-subtle);margin:14px 0}
.ef-kit__caplabel{font-weight:800;font-size:var(--text-2xs);letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:0 0 10px}
@media(max-width:920px){.ef-kit{grid-template-columns:1fr}.ef-kit__side{position:static}}

/* ---------- PAGINATION (élégante, réutilisable) ---------------------------- */
.ef-pagination{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:30px}
.ef-pagination__list{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ef-pagination a,.ef-pagination span.ef-pagination__dots{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 6px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--surface-card);color:var(--text-body);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);text-decoration:none;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease),transform .12s var(--ease)}
.ef-pagination a:hover{border-color:var(--brand-green);color:var(--brand-green);box-shadow:var(--shadow-sm);transform:translateY(-1px)}
.ef-pagination a.is-current{background:linear-gradient(150deg,var(--green-600),var(--green-800));border-color:var(--green-700);color:#fff;box-shadow:var(--shadow-md);pointer-events:none}
.ef-pagination span.ef-pagination__dots{border:none;background:none;color:var(--text-faint);min-width:24px;pointer-events:none}
.ef-pagination__nav{padding:0 16px;gap:7px}
.ef-pagination__nav svg{flex:none}
.ef-pagination__nav.is-disabled{opacity:.4;pointer-events:none;background:var(--neutral-50)}
.ef-pagination__nav .ef-pagination__lbl{font-weight:700}
@media(max-width:560px){.ef-pagination__nav .ef-pagination__lbl{display:none}.ef-pagination__nav{padding:0;min-width:42px}.ef-pagination a,.ef-pagination span.ef-pagination__dots{min-width:38px;height:38px}}

/* ---------- Carte d'avis : espacement vertical + transition ---------------- */
.ef-reviewlist{display:flex;flex-direction:column;gap:18px}
.ef-reviewlist .ef-review{box-shadow:var(--shadow-xs)}
.ef-reviewlist .ef-review.is-hidden{display:none}

/* ---------- Pastille ville (lien vers les avis d'une commune) -------------- */
.ef-citypill{display:inline-flex;align-items:center;gap:7px;padding:6px 13px 6px 9px;border-radius:var(--radius-pill);background:var(--green-50);border:1px solid var(--green-100);color:var(--brand-green);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);text-decoration:none;transition:background .15s var(--ease),box-shadow .15s var(--ease),transform .12s var(--ease)}
.ef-citypill:hover{background:var(--green-100);box-shadow:var(--shadow-sm);transform:translateY(-1px)}
.ef-citypill__ic{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-pill);background:#fff;color:var(--brand-green);box-shadow:var(--shadow-xs);flex:none}
.ef-citypill__go{display:inline-flex;color:var(--green-400);margin-left:1px}
.ef-regreview{margin-bottom:22px}
.ef-regreview__head{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}

/* ---------- Titre étoile premium ------------------------------------------ */
.ef-startitle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-md);background:linear-gradient(150deg,#FCE9B8,#E8B24A);box-shadow:0 2px 6px rgba(222,163,44,.35),inset 0 1px 0 rgba(255,255,255,.55);flex:none}
.ef-startitle svg{display:block;filter:drop-shadow(0 1px 1px rgba(122,86,15,.25))}

/* ===========================================================================
   ACCESSIBILITÉ NUMÉRIQUE — états appliqués sur <html> (sans flash)
   Le filtre couleur (luminosité/teinte/daltonisme/gris) est posé en inline
   sur <html> par le script ; ici on gère le reste via des classes.
   =========================================================================== */
/* Taille du texte : « Plus gros » agrandit toute l'interface (tokens en rem) */
html.ef-a11y-text-big{font-size:125%}
/* Soulignement des liens pour les rendre repérables */
html.ef-a11y-links a:not(.ef-btn):not(.ef-tag):not(.ef-logo){text-decoration:underline!important;text-underline-offset:2px}
/* Contraste élevé : on renforce les variables de texte (cascade globale) */
html.ef-a11y-contrast{--text-body:#0a0a0a;--text-strong:#000;--text-muted:#1f1f1f;--text-faint:#333;--text-link:#06351f}
html.ef-a11y-contrast a{text-decoration:underline}
html.ef-a11y-contrast .ef-btn,html.ef-a11y-contrast .ef-tag,html.ef-a11y-contrast .ef-card,html.ef-a11y-contrast input,html.ef-a11y-contrast select,html.ef-a11y-contrast textarea{border:1px solid #000}
/* Confort de lecture : interlignage et espacements augmentés */
html.ef-a11y-read body{line-height:1.75;letter-spacing:.03em;word-spacing:.08em}
html.ef-a11y-read p,html.ef-a11y-read li{line-height:1.85}
/* Réduction des animations */
html.ef-a11y-motion *,html.ef-a11y-motion *::before,html.ef-a11y-motion *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
/* Indicateur de focus renforcé (toujours utile en accessibilité) */
html.ef-a11y-links :focus-visible,html.ef-a11y-contrast :focus-visible{outline:3px solid #06351f;outline-offset:2px}
