/* =========================================================
   PREMIUM UI — gradients, glass, WCAG AA, performance-safe
   + Loader élégant (overlay + shimmer + progress bar)
   ========================================================= */

/* ------------------------------
   1) Design tokens
------------------------------ */
:root{
  /* Brand */
  --p1:#0A72B8;
  --p2:#0B4F7A;
  --p3:#1A9AE6;

  /* Neutral */
  --bg0:#F7FBFF;
  --bg1:#FFFFFF;
  --text:#0B1220;
  --muted:rgba(11,18,32,.74);
  --muted2:rgba(11,18,32,.62);
  --line:rgba(11,18,32,.10);
  --line2:rgba(11,18,32,.08);

  /* Effects */
  --radius:18px;
  --radius2:26px;
  --shadow:0 14px 40px rgba(11,18,32,.10);
  --shadow2:0 12px 30px rgba(11,79,122,.18);
  --ring:0 0 0 4px rgba(10,114,184,.22);

  /* Layout */
  --max:1120px;

  /* Gradients */
  --g-bg:
    radial-gradient(1200px 800px at 18% 10%, rgba(26,154,230,.18), transparent 56%),
    radial-gradient(900px 650px at 86% 30%, rgba(11,79,122,.14), transparent 55%),
    linear-gradient(180deg, #FFFFFF 0%, rgba(234,244,255,.85) 100%);

  --g-primary:linear-gradient(135deg, var(--p3), var(--p1) 55%, var(--p2));
  --g-soft:linear-gradient(135deg, rgba(26,154,230,.16), rgba(11,79,122,.10));
  --g-card:
    radial-gradient(900px 520px at 14% 0%, rgba(10,114,184,.18), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.78));

  /* Motion */
  --ease:cubic-bezier(.2,.8,.2,1);
  --t1:180ms var(--ease);
  --t2:320ms var(--ease);
}

/* ------------------------------
   2) Base / typography
------------------------------ */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  color:var(--text);
  background:var(--g-bg);
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

::selection{background:rgba(10,114,184,.22)}
a{color:inherit}

p{margin:0 0 12px; line-height:1.6}
h2{
  font-size:clamp(20px,3.2vw,32px);
  letter-spacing:-.45px;
  margin:0 0 10px;
}
h3{font-size:1.08rem;margin:0 0 8px}
.muted{color:var(--muted)}
.note{color:rgba(11,18,32,.76);font-size:.95rem}

.hr{
  height:1px;background:rgba(11,18,32,.08);
  border:0;margin:18px 0
}

/* Strong focus visibility everywhere */
:focus-visible{outline:none; box-shadow:var(--ring)}

/* High-contrast link focus in content */
main a.link{
  color:var(--p2);
  text-decoration:underline;
  text-decoration-thickness:2px;
  text-underline-offset:2px
}
main a.link:focus-visible{border-radius:10px}

/* ------------------------------
   3) Tiny components
------------------------------ */
.badge{
  display:inline-flex;align-items:center;gap:8px;
  font-weight:850;font-size:.92rem;color:var(--p2);
  background:rgba(10,114,184,.10);
  border:1px solid rgba(10,114,184,.20);
  padding:6px 10px;border-radius:999px;
  box-shadow:0 8px 20px rgba(11,18,32,.06);
}

.chip{
  font-size:.92rem;font-weight:850;color:rgba(11,79,122,.98);
  background:rgba(10,114,184,.10);
  border:1px solid rgba(10,114,184,.18);
  border-radius:999px;padding:6px 10px
}

/* Buttons (si tu utilises .btn) */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:12px 14px;border-radius:14px;border:1px solid var(--line);
  background:rgba(255,255,255,.86);
  text-decoration:none;font-weight:900;
  box-shadow:0 10px 22px rgba(11,18,32,.06);
  transition:transform var(--t1), box-shadow var(--t1), background var(--t1), border-color var(--t1);
  will-change:transform;
}
.btn:hover{transform:translateY(-1px); box-shadow:var(--shadow)}
.btn:active{transform:translateY(0px)}
.btn-primary{
  border:0;
  color:#fff;
  background:var(--g-primary);
  box-shadow:0 14px 34px rgba(11,79,122,.22);
}
.btn-primary:hover{box-shadow:0 16px 40px rgba(11,79,122,.28)}
.btn-ghost{
  background:rgba(255,255,255,.60);
  backdrop-filter:blur(8px);
}

/* ------------------------------
   4) Header / nav
------------------------------ */
header .menu-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:14px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(10px);
  box-shadow:0 10px 22px rgba(11,18,32,.06);
  transition:transform var(--t1), box-shadow var(--t1), background var(--t1);
}
header .menu-btn:hover{transform:translateY(-1px); box-shadow:var(--shadow)}
header nav[aria-label="Primary"]{display:none}
header nav a{
  text-decoration:none;
  padding:10px 12px;border-radius:14px;
  color:rgba(11,18,32,.84);
  font-weight:850;
  transition:background var(--t1), transform var(--t1);
}
header nav a:hover{background:rgba(10,114,184,.08); transform:translateY(-1px)}
header .lang{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 10px;border-radius:999px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(10px);
  font-weight:850;
  box-shadow:0 10px 22px rgba(11,18,32,.06);
}
header .lang select{
  border:0;background:transparent;font:inherit;color:inherit;outline:none
}

/* ------------------------------
   5) Mobile drawer
------------------------------ */
.mobile-drawer{
  position:fixed; inset:0; z-index:120;
  background:rgba(11,18,32,.56);
  display:none; align-items:flex-start; justify-content:flex-end;
}
.mobile-panel{
  width:min(420px,92vw); height:100%;
  background:rgba(255,255,255,.92);
  border-left:1px solid var(--line);
  padding:14px;
  box-shadow:var(--shadow2);
  backdrop-filter:blur(12px);
}
.mobile-panel .top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.mobile-panel .close{
  width:46px;height:46px;border-radius:14px;
  border:1px solid var(--line); background:rgba(255,255,255,.92);
  box-shadow:0 10px 22px rgba(11,18,32,.06);
}
.mobile-panel a{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  text-decoration:none;
  padding:12px 12px;border-radius:16px;
  font-weight:900;
  border:1px solid rgba(11,18,32,.08);
  margin-top:10px;
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.78));
  transition:background var(--t1), transform var(--t1), box-shadow var(--t1);
}
.mobile-panel a:hover{
  background:rgba(10,114,184,.06);
  transform:translateY(-1px);
  box-shadow:0 12px 26px rgba(11,18,32,.08);
}

/* ------------------------------
   6) Hero visual (plus “wow”)
------------------------------ */
.hero-visual{
  position:relative; overflow:hidden;
  border-radius:var(--radius2);
  border:1px solid rgba(11,18,32,.08);
  background:
    radial-gradient(1200px 800px at 20% 10%, rgba(26,154,230,.22), transparent 55%),
    radial-gradient(900px 600px at 80% 40%, rgba(11,79,122,.18), transparent 52%),
    linear-gradient(180deg,#fff 0%, rgba(234,244,255,.78) 100%);
  min-height:260px;
  box-shadow:var(--shadow);
}
.hero-visual::before{
  content:"";
  position:absolute; inset:-40%;
  background:conic-gradient(from 220deg,
    rgba(26,154,230,.00),
    rgba(26,154,230,.20),
    rgba(10,114,184,.00),
    rgba(11,79,122,.18),
    rgba(26,154,230,.00)
  );
  filter:blur(18px);
  opacity:.55;
  animation:heroGlow 8s var(--ease) infinite alternate;
}
@keyframes heroGlow{
  from{transform:translate3d(-2%, -1%, 0) rotate(0deg)}
  to{transform:translate3d(2%, 1%, 0) rotate(10deg)}
}

.hero-visual .stat{
  position:absolute; inset:auto 14px 14px 14px;
  display:grid; gap:10px; grid-template-columns:1fr 1fr;
  z-index:2;
}

.pill{
  padding:12px 12px;border-radius:18px;
  border:1px solid rgba(255,255,255,.55);
  background:rgba(255,255,255,.78);
  backdrop-filter:blur(10px);
  box-shadow:0 12px 26px rgba(11,18,32,.10);
}
.pill b{display:block}
.pill span{display:block;color:var(--muted);font-size:.92rem}

/* ------------------------------
   7) Sections / grids / cards
------------------------------ */
.section{padding:18px 0}
.grid-3{display:grid;gap:14px;grid-template-columns:1fr}
.grid-2{display:grid;gap:14px;grid-template-columns:1fr}

.card{
  border:1px solid rgba(11,18,32,.08);
  border-radius:var(--radius2);
  background:var(--g-card);
  box-shadow:0 12px 28px rgba(11,18,32,.08);
  padding:14px;
  transition:transform var(--t2), box-shadow var(--t2);
  will-change:transform;
}
.card:hover{transform:translateY(-2px); box-shadow:var(--shadow)}
.card.soft{background:rgba(255,255,255,.86)}
.card .meta{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 10px}

.list{margin:0;padding-left:18px;color:rgba(11,18,32,.84)}
.list li{margin:8px 0}

/* KPIs */
.kpis{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.kpi{
  border:1px solid rgba(11,18,32,.08);
  border-radius:20px;
  padding:14px;
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.76));
  box-shadow:0 12px 26px rgba(11,18,32,.08);
  position:relative;
  overflow:hidden;
}
.kpi::after{
  content:"";
  position:absolute; inset:auto -40% -60% -40%;
  height:120%;
  background:radial-gradient(circle at 50% 0%, rgba(26,154,230,.18), transparent 55%);
  transform:rotate(-8deg);
}
.kpi strong{display:block;font-size:1.12rem;position:relative;z-index:1}
.kpi span{display:block;color:var(--muted);font-size:.95rem;position:relative;z-index:1}

/* CTA band */
.cta-band{
  background:var(--g-soft);
  border:1px solid rgba(11,18,32,.08);
  border-radius:var(--radius2);
  padding:16px;
  box-shadow:var(--shadow);
  display:grid;gap:10px;
  position:relative;
  overflow:hidden;
}
.cta-band::before{
  content:"";
  position:absolute; inset:-1px;
  background:linear-gradient(120deg,
    rgba(26,154,230,.0),
    rgba(26,154,230,.18),
    rgba(10,114,184,.0)
  );
  transform:translateX(-35%);
  animation:shimmer 2.6s var(--ease) infinite;
  opacity:.8;
}
@keyframes shimmer{
  0%{transform:translateX(-45%)}
  100%{transform:translateX(45%)}
}
.cta-band > *{position:relative; z-index:1}
.cta-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cta-row .btn{padding:12px 14px}

/* FAQ */
.faq{margin-top:10px}
.faq details{
  border:1px solid rgba(11,18,32,.08);
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.76));
  border-radius:18px;
  padding:12px 12px;
  margin-top:10px;
  box-shadow:0 12px 26px rgba(11,18,32,.06);
}
.faq summary{
  cursor:pointer;font-weight:950;
  list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:focus-visible{border-radius:14px;padding:6px}
.faq details p{margin-top:10px;color:rgba(11,18,32,.82)}
.faq .hint{color:var(--muted2);font-size:.95rem}

/* Reveal */
.reveal{opacity:0;transform:translateY(10px);transition:opacity .7s var(--ease), transform .7s var(--ease)}
.reveal.is-in{opacity:1;transform:none}

/* WhatsApp sticky */
.wa-sticky a{
  display:inline-flex;align-items:center;gap:10px;
  background:linear-gradient(135deg,#25D366,#128C7E);
  color:#fff;border:0;text-decoration:none;font-weight:950;
  padding:12px 14px;border-radius:16px;
  box-shadow:0 16px 34px rgba(18,140,126,.24);
  transition:transform var(--t1), box-shadow var(--t1);
}
.wa-sticky a:hover{transform:translateY(-1px); box-shadow:0 18px 40px rgba(18,140,126,.30)}
.wa-sticky a:focus-visible{box-shadow:0 0 0 4px rgba(18,140,126,.26)}
.wa-sticky .sub{display:block;font-weight:850;font-size:.86rem;opacity:.92}

/* Popin */
.popin{position:fixed;inset:auto 14px 86px 14px;z-index:130;display:none}
.popin .box{
  max-width:560px;margin:0 auto;
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.78));
  border:1px solid rgba(11,18,32,.10);
  border-radius:24px;
  box-shadow:var(--shadow2);
  padding:14px;
  backdrop-filter:blur(12px);
}
.popin .box .top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.popin .x{
  width:46px;height:46px;border-radius:14px;
  border:1px solid rgba(11,18,32,.10);
  background:rgba(255,255,255,.92);
  box-shadow:0 10px 22px rgba(11,18,32,.06);
}
.popin .actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.popin .actions .btn{flex:1 1 auto}
.popin .small{color:var(--muted2);font-size:.92rem}

/* Footer */
footer .cols{display:grid;gap:14px;grid-template-columns:1fr}
footer a{text-decoration:none}
footer a:hover{text-decoration:underline}
.footer-cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

/* Table links */
.table-links{display:grid;gap:10px;grid-template-columns:1fr}
.table-links a{
  padding:12px 12px;border-radius:18px;
  border:1px solid rgba(11,18,32,.08);
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.76));
  text-decoration:none;font-weight:900;
  display:flex;justify-content:space-between;gap:10px;
  box-shadow:0 12px 26px rgba(11,18,32,.06);
  transition:transform var(--t1), box-shadow var(--t1), background var(--t1);
}
.table-links a:hover{transform:translateY(-1px); box-shadow:var(--shadow)}
.table-links a:focus-visible{}

/* Breadcrumb layout */
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}
.breadcrumb li{display:flex;gap:6px;align-items:center}
.breadcrumb li::after{content:"/";opacity:.45}
.breadcrumb li:last-child::after{content:""}

/* ------------------------------
   8) Responsive
------------------------------ */
@media (min-width:860px){
  header nav[aria-label="Primary"]{display:flex;gap:6px;align-items:center}
  header .menu-btn{display:none}
  .grid-3{grid-template-columns:repeat(3,1fr)}
  .grid-2{grid-template-columns:repeat(2,1fr)}
  .hero-visual{min-height:360px}
  .section{padding:22px 0}
  footer .cols{grid-template-columns:1.4fr 1fr 1fr}
  .popin{inset:auto 18px 20px auto;max-width:none}
  .popin .box{margin:0;max-width:520px}
  .table-links{grid-template-columns:repeat(2,1fr)}
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{transition:none}
  .cta-band::before{animation:none}
  .hero-visual::before{animation:none}
}

/* =========================================================
   9) LOADER — très joli (Overlay + shimmer + bar)
   Utilisation:
   - Ajoute <div class="loader is-active">...</div>
   - Retire la classe is-active pour cacher
   ========================================================= */
.loader{
  position:fixed; inset:0; z-index:9999;
  display:none;
  align-items:center; justify-content:center;
  background:
    radial-gradient(900px 520px at 20% 10%, rgba(26,154,230,.20), transparent 60%),
    radial-gradient(800px 520px at 80% 40%, rgba(11,79,122,.16), transparent 58%),
    rgba(11,18,32,.52);
  backdrop-filter:blur(10px);
}
.loader.is-active{display:flex}

.loader-card{
  width:min(520px, 92vw);
  border-radius:28px;
  border:1px solid rgba(255,255,255,.20);
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.74));
  box-shadow:0 26px 70px rgba(11,18,32,.30);
  overflow:hidden;
  position:relative;
}
.loader-card::before{
  content:"";
  position:absolute; inset:-1px;
  background:linear-gradient(120deg,
    rgba(26,154,230,.0),
    rgba(26,154,230,.22),
    rgba(10,114,184,.0)
  );
  transform:translateX(-45%);
  animation:loaderShimmer 1.8s var(--ease) infinite;
  opacity:.8;
}
@keyframes loaderShimmer{
  0%{transform:translateX(-48%)}
  100%{transform:translateX(48%)}
}

.loader-inner{
  position:relative; z-index:1;
  padding:18px;
  display:grid; gap:14px;
}

.loader-top{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.loader-title{
  font-weight:950;
  letter-spacing:-.25px;
}
.loader-sub{
  color:var(--muted);
  font-weight:800;
  font-size:.95rem;
}

/* Spinner premium */
.loader-spin{
  width:44px;height:44px;border-radius:999px;
  border:3px solid rgba(11,18,32,.10);
  border-top-color:rgba(10,114,184,.95);
  border-right-color:rgba(26,154,230,.65);
  animation:spin 900ms linear infinite;
  box-shadow:0 14px 30px rgba(11,79,122,.18);
}
@keyframes spin{to{transform:rotate(360deg)}}

/* Progress bar (indéterminée) */
.loader-bar{
  height:10px;border-radius:999px;
  background:rgba(11,18,32,.08);
  overflow:hidden;
  border:1px solid rgba(11,18,32,.08);
}
.loader-bar > i{
  display:block;height:100%;
  width:42%;
  border-radius:999px;
  background:var(--g-primary);
  transform:translateX(-60%);
  animation:bar 1.2s var(--ease) infinite;
}
@keyframes bar{
  0%{transform:translateX(-60%)}
  50%{transform:translateX(130%)}
  100%{transform:translateX(130%)}
}

/* Petite ligne "points" */
.loader-dots{
  display:flex; gap:6px; align-items:center;
  color:rgba(11,18,32,.72);
  font-weight:900;
}
.loader-dots i{
  width:8px;height:8px;border-radius:999px;
  background:rgba(10,114,184,.42);
  animation:dots 900ms var(--ease) infinite;
}
.loader-dots i:nth-child(2){animation-delay:120ms; opacity:.85}
.loader-dots i:nth-child(3){animation-delay:240ms; opacity:.70}
@keyframes dots{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-4px)}
}

/* Reduced motion for loader */
@media (prefers-reduced-motion:reduce){
  .loader-card::before{animation:none}
  .loader-spin{animation:none}
  .loader-bar > i{animation:none; transform:none; width:55%}
  .loader-dots i{animation:none}
}
