/* ============================================================
   VITRINE.CSS — Site vitrine RN-PERFORMANCE
   Dépend de theme.css (tokens partagés).
   Mobile-first, dark par défaut.
   ============================================================ */

/* ============================================================
   HEADER STICKY
   ============================================================ */
.site-header{
  position:sticky; top:0; z-index:50;
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent;
  transition:var(--t);
}
.site-header.scrolled{
  background:color-mix(in srgb, var(--bg) 92%, transparent);
  border-bottom-color:var(--border);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:18px; padding:14px 0;
  transition:var(--t-fast);
}
.site-header.scrolled .header-inner{padding:10px 0;}

/* Zone compte dynamique (header vitrine, remplie par ui-header.js) */
/* --header-btn-h : hauteur commune à TOUS les boutons du header (compte +
   bouton « Accueil » des pages profil/logiciels). L'avatar est plus haut
   qu'une ligne de texte : sans hauteur fixe, le bouton du pseudo dépassait
   ses voisins. */
:root{--header-btn-h:38px;}

/* ⚠ Ces sélecteurs ne dépendent NI de la classe .header-account (posée par
   ui-header.js) NI d'un parent particulier : ils visent directement les
   éléments produits par le markup. C'est délibéré. Quand la mise en forme
   dépendait de la classe, un navigateur qui avait encore l'ancien
   ui-header.js en cache n'ajoutait pas la classe : le logo client
   s'affichait à sa taille de stockage (128 px) et faisait exploser le
   bandeau. Un fichier CSS périmé dégrade les couleurs, jamais la structure. */
.header-avatar{
  width:24px; height:24px; min-width:24px; max-width:24px;
  border-radius:8px; background:var(--accent-grad);
  color:#fff; display:inline-grid; place-items:center;
  font-weight:800; font-size:12px; line-height:1;
  overflow:hidden; position:relative; flex-shrink:0;
  box-sizing:border-box;
}
/* Si l'utilisateur a un logo, l'image remplit la tuile et l'initiale sert
   de fallback (masquée tant que l'image charge / s'affiche). */
.header-avatar.has-logo{background:var(--surface-2);}
.header-avatar img{
  display:block; width:100%; height:100%; max-width:100%; max-height:100%;
  object-fit:cover; border-radius:inherit;
}
.header-avatar.has-logo .header-avatar-fallback{display:none;}

/* Zone compte : ciblée par l'attribut, présent dans le HTML de chaque page,
   donc valable même si le JS n'a pas encore posé sa classe. */
.header-account,
[data-ui-header]{display:flex; align-items:center; gap:8px;}
.header-account .btn,
[data-ui-header] .btn{
  height:var(--header-btn-h); padding:0 14px; font-size:14px;
  flex-shrink:0;
}
.header-account .btn svg,
[data-ui-header] .btn svg{width:16px; height:16px; flex-shrink:0;}
/* Bouton carré (déconnexion) : pas de label, donc pas de rembourrage latéral */
.header-account .iconbtn,
[data-ui-header] .iconbtn{width:var(--header-btn-h); padding:0;}
@media (max-width:899px){
  /* Sur mobile : compact, on masque les labels (uniquement les icônes) */
  .header-account,
  [data-ui-header]{gap:6px;}
  .header-account .btn span:not(.header-avatar),
  [data-ui-header] .btn span:not(.header-avatar){display:none;}
  .header-account .btn,
  [data-ui-header] .btn{padding:0 10px;}
}

/* Logo */
.brand-logo{display:inline-flex; align-items:center; gap:11px; color:var(--text);}
.brand-logo:hover{color:var(--text);}
.brand-mark{
  width:42px; height:42px; border-radius:12px; flex-shrink:0;
  background:var(--accent-grad); color:#fff;
  display:grid; place-items:center; box-shadow:var(--glow);
}
.brand-mark svg{width:24px; height:24px;}
.brand-name{display:flex; flex-direction:column; line-height:1.1;}
.brand-name strong{font-size:16px; font-weight:800; letter-spacing:.3px;}
.brand-name span{font-size:11px; color:var(--muted); font-weight:600; letter-spacing:1px; text-transform:uppercase;}

/* Navigation desktop */
.main-nav{display:none; align-items:center; gap:6px;}
.main-nav a{
  color:var(--muted); font-size:14px; font-weight:600;
  padding:9px 14px; border-radius:var(--r-md); transition:var(--t-fast);
}
.main-nav a:hover{color:var(--text); background:var(--surface-2);}
.header-cta{display:none;}

/* Burger */
.burger{
  display:inline-flex; flex-direction:column; gap:5px;
  width:44px; height:44px; align-items:center; justify-content:center;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md);
}
.burger span{display:block; width:20px; height:2px; background:var(--text); border-radius:2px; transition:var(--t);}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* Menu mobile */
.mobile-menu{
  display:none; flex-direction:column; gap:4px; padding:8px 20px 18px;
  border-bottom:1px solid var(--border); background:var(--surface);
}
.mobile-menu.open{display:flex;}
.mobile-menu a{
  color:var(--text); font-weight:600; padding:13px 14px; border-radius:var(--r-md);
}
.mobile-menu a:hover{background:var(--surface-2); color:var(--accent);}
.mobile-menu .btn{margin-top:8px;}

@media (min-width:900px){
  .main-nav{display:flex;}
  .header-cta{display:inline-flex;}
  .burger{display:none;}
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative; overflow:hidden;
  padding:60px 0 70px;
}
/* Glow décoratif en fond */
.hero::before{
  content:""; position:absolute; top:-30%; right:-20%;
  width:60vw; height:60vw; max-width:760px; max-height:760px;
  background:radial-gradient(circle, var(--accent-soft) 0%, transparent 65%);
  filter:blur(20px); pointer-events:none; z-index:0;
}
.hero::after{
  content:""; position:absolute; bottom:-40%; left:-20%;
  width:50vw; height:50vw; max-width:600px; max-height:600px;
  background:radial-gradient(circle, rgba(249,115,22,.10) 0%, transparent 65%);
  filter:blur(20px); pointer-events:none; z-index:0;
}
.hero-grid{
  position:relative; z-index:1;
  display:grid; grid-template-columns:1fr; gap:40px; align-items:center;
}
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--accent-soft); border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);
  color:var(--accent); font-size:12px; font-weight:700; letter-spacing:.5px;
  padding:6px 14px; border-radius:var(--r-pill); text-transform:uppercase;
}
.hero-eyebrow .dot{width:7px; height:7px; border-radius:50%; background:var(--accent); box-shadow:0 0 10px var(--accent);}
.hero h1{
  margin:18px 0 0; font-size:38px; line-height:1.08; font-weight:800;
  letter-spacing:-1px;
}
.hero h1 .gradient-text{display:inline;}
.hero .lead{
  margin:18px 0 0; font-size:17px; color:var(--muted); max-width:560px;
}
.hero-actions{display:flex; flex-wrap:wrap; gap:12px; margin-top:28px;}
.hero-trust{
  display:flex; flex-wrap:wrap; gap:18px; margin-top:28px;
  font-size:13px; color:var(--muted-2);
}
.hero-trust span{display:inline-flex; align-items:center; gap:6px;}
.hero-trust svg{width:15px; height:15px; color:var(--accent-2);}

/* Visuel hero : mockup carte 3D + heatmap */
.hero-visual{display:none;}
.hero-mock{
  position:relative; padding:22px;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-xl);
  box-shadow:var(--shadow-lg);
}
.hero-mock .mock-bar{
  display:flex; gap:7px; padding-bottom:14px; border-bottom:1px solid var(--border); margin-bottom:16px;
}
.hero-mock .mock-bar i{width:11px; height:11px; border-radius:50%; background:var(--surface-3);}
.hero-mock .mock-bar i:nth-child(1){background:#EF4444;}
.hero-mock .mock-bar i:nth-child(2){background:#F59E0B;}
.hero-mock .mock-bar i:nth-child(3){background:#22C55E;}
.mock-title{font-size:13px; font-weight:700; margin-bottom:10px; color:var(--text);}
.mock-heatmap{
  display:grid; grid-template-columns:repeat(10,1fr); gap:3px; aspect-ratio:10/6;
  border-radius:var(--r-md); overflow:hidden;
}
.mock-heatmap span{background:var(--surface-2); border-radius:2px;}
.mock-meta{
  display:flex; justify-content:space-between; gap:10px; margin-top:14px;
  font-size:11px; color:var(--muted-2); font-family:var(--mono);
}
.mock-stats{
  display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:16px;
}
.mock-stats .ms{
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--r-md);
  padding:10px;
}
.mock-stats .ms .k{font-size:10px; color:var(--muted-2); text-transform:uppercase; letter-spacing:.5px;}
.mock-stats .ms .v{font-size:17px; font-weight:800; color:var(--text); margin-top:2px;}
.mock-stats .ms .v.ok{color:var(--success);}
.mock-badge{
  position:absolute; top:-14px; right:-14px;
  background:var(--accent-grad); color:#fff; font-size:12px; font-weight:700;
  padding:7px 13px; border-radius:var(--r-pill); box-shadow:var(--glow);
}

@media (min-width:900px){
  .hero{padding:80px 0 90px;}
  .hero h1{font-size:54px;}
  .hero .lead{font-size:19px;}
  .hero-grid{grid-template-columns:1.1fr .9fr; gap:50px;}
  .hero-visual{display:block;}
}

/* ============================================================
   BANDEAU STATS
   ============================================================ */
.stats-bar{
  border-top:1px solid var(--border); border-bottom:1px solid var(--border);
  background:var(--surface);
}
.stats-grid{
  display:grid; grid-template-columns:repeat(2,1fr);
}
.stat{padding:26px 18px; text-align:center; border-right:1px solid var(--border); border-bottom:1px solid var(--border);}
.stat:nth-child(2n){border-right:none;}
.stat:nth-last-child(-n+2){border-bottom:none;}
.stat .num{
  font-size:34px; font-weight:800; line-height:1; letter-spacing:-1px;
  background:var(--accent-grad); -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent; color:transparent;
}
.stat .lbl{margin-top:8px; font-size:13px; color:var(--muted); font-weight:600;}
@media (min-width:768px){
  .stats-grid{grid-template-columns:repeat(4,1fr);}
  .stat{border-bottom:none;}
  .stat:nth-child(2n){border-right:1px solid var(--border);}
  .stat:last-child{border-right:none;}
  .stat .num{font-size:42px;}
}

/* ============================================================
   SECTION TITRES
   ============================================================ */
.section-head{text-align:center; max-width:680px; margin:0 auto 48px;}
.section-head .eyebrow{
  display:inline-block; font-size:12px; font-weight:700; letter-spacing:1.5px;
  text-transform:uppercase; color:var(--accent); margin-bottom:12px;
}
.section-head h2{font-size:30px; font-weight:800; letter-spacing:-.6px; margin:0;}
.section-head p{margin:14px 0 0; color:var(--muted); font-size:16px;}
@media (min-width:768px){.section-head h2{font-size:38px;}}

/* ============================================================
   FONCTIONNALITÉS
   ============================================================ */
.features-grid{
  display:grid; grid-template-columns:1fr; gap:16px;
}
.feature{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg);
  padding:26px; transition:var(--t); position:relative; overflow:hidden;
}
.feature::before{
  content:""; position:absolute; inset:0;
  background:var(--accent-grad-soft); opacity:0; transition:var(--t); pointer-events:none;
}
.feature:hover{transform:translateY(-4px); border-color:color-mix(in srgb,var(--accent) 45%,transparent); box-shadow:var(--shadow);}
.feature:hover::before{opacity:1;}
.feature > *{position:relative; z-index:1;}
.feature .f-ico{
  width:48px; height:48px; border-radius:12px; flex-shrink:0;
  background:var(--accent-soft); color:var(--accent);
  display:grid; place-items:center; margin-bottom:16px;
}
.feature .f-ico svg{width:24px; height:24px;}
.feature h3{font-size:18px; font-weight:700; margin:0 0 8px;}
.feature p{margin:0; font-size:14px; color:var(--muted);}
@media (min-width:640px){.features-grid{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1024px){.features-grid{grid-template-columns:repeat(4,1fr);}}

/* ============================================================
   ECUs SUPPORTÉS
   ============================================================ */
.ecu-section{background:var(--surface);}
.ecu-cloud{
  display:flex; flex-wrap:wrap; gap:10px; justify-content:center; max-width:880px; margin:0 auto;
}
.ecu-chip{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--bg); border:1px solid var(--border); border-radius:var(--r-pill);
  padding:9px 16px; font-size:13px; font-weight:600; color:var(--text);
  transition:var(--t-fast);
}
.ecu-chip:hover{border-color:var(--accent); color:var(--accent); transform:translateY(-2px);}
.ecu-chip .b{width:8px; height:8px; border-radius:50%; background:var(--accent-grad);}
.ecu-more{
  text-align:center; margin-top:26px; font-size:14px; color:var(--muted);
}
.ecu-more strong{color:var(--accent); font-weight:800;}

/* ============================================================
   WORKFLOW (Comment ça marche)
   ============================================================ */
.steps-grid{
  display:grid; grid-template-columns:1fr; gap:20px; counter-reset:step;
}
.step{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg);
  padding:28px; position:relative; transition:var(--t);
}
.step:hover{border-color:color-mix(in srgb,var(--accent) 40%,transparent); transform:translateY(-3px);}
.step .step-num{
  width:44px; height:44px; border-radius:12px;
  background:var(--accent-grad); color:#fff; display:grid; place-items:center;
  font-weight:800; font-size:18px; box-shadow:var(--glow); margin-bottom:16px;
}
.step h3{font-size:18px; font-weight:700; margin:0 0 8px;}
.step p{margin:0; color:var(--muted); font-size:14px;}
@media (min-width:768px){.steps-grid{grid-template-columns:repeat(3,1fr);}}

/* ============================================================
   ACCÈS / MODULES
   ============================================================ */
.plans-grid{
  display:grid; grid-template-columns:1fr; gap:18px;
}
.plan{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-xl);
  padding:30px; display:flex; flex-direction:column; transition:var(--t); position:relative;
}
.plan:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg);}
.plan.featured{
  border-color:color-mix(in srgb,var(--accent) 50%,transparent);
  box-shadow:var(--glow);
}
.plan.featured::after{
  content:"Le plus demandé"; position:absolute; top:18px; right:18px;
  background:var(--accent-grad); color:#fff; font-size:11px; font-weight:700;
  padding:5px 11px; border-radius:var(--r-pill); text-transform:uppercase; letter-spacing:.5px;
}
.plan-name{font-size:13px; font-weight:700; color:var(--accent); text-transform:uppercase; letter-spacing:1px;}
.plan h3{font-size:24px; font-weight:800; margin:6px 0 6px;}
.plan .plan-price{font-size:14px; color:var(--muted); margin-bottom:18px;}
.plan .plan-price strong{font-size:26px; color:var(--text); font-weight:800;}
.plan ul{list-style:none; padding:0; margin:0 0 24px; display:flex; flex-direction:column; gap:11px; flex:1;}
.plan li{display:flex; gap:10px; font-size:14px; color:var(--text);}
.plan li svg{width:18px; height:18px; color:var(--accent); flex-shrink:0; margin-top:1px;}
.plan li.muted{color:var(--muted-2);}
.plan li.muted svg{color:var(--muted-2);}
.plan .btn{width:100%;}
@media (min-width:900px){.plans-grid{grid-template-columns:repeat(3,1fr);}}

/* ============================================================
   CTA FINAL
   ============================================================ */
.cta-final{padding:60px 0;}
.cta-box{
  position:relative; overflow:hidden;
  background:var(--accent-grad); border-radius:var(--r-xl);
  padding:48px 28px; text-align:center; color:#fff;
  box-shadow:0 30px 80px -30px rgba(225,29,72,.7);
}
.cta-box::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at 20% 20%, rgba(255,255,255,.18), transparent 50%),
             radial-gradient(circle at 80% 90%, rgba(0,0,0,.25), transparent 50%);
  pointer-events:none;
}
.cta-box > *{position:relative; z-index:1;}
.cta-box h2{font-size:28px; font-weight:800; margin:0; letter-spacing:-.5px;}
.cta-box p{margin:12px 0 24px; opacity:.92; font-size:16px;}
.cta-box .btn{
  background:#fff; color:var(--accent); border:none; font-weight:800;
}
.cta-box .btn:hover{background:#fff; color:var(--accent); transform:translateY(-2px);}
@media (min-width:768px){
  .cta-box{padding:64px 40px;}
  .cta-box h2{font-size:34px;}
}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{
  background:var(--surface); border-top:1px solid var(--border); padding:50px 0 26px;
}
.footer-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:36px 24px; margin-bottom:36px;
}
.footer-brand{grid-column:1/-1;}
.footer-brand .brand-logo{margin-bottom:14px;}
.footer-brand p{color:var(--muted); font-size:14px; max-width:420px; margin:0;}
.footer-col h4{font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:var(--text); margin:0 0 14px;}
.footer-col ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:9px;}
.footer-col a{color:var(--muted); font-size:14px;}
.footer-col a:hover{color:var(--accent);}
.footer-social{display:flex; gap:10px; margin-top:14px;}
.footer-social a{
  width:38px; height:38px; border-radius:10px; background:var(--surface-2);
  border:1px solid var(--border); color:var(--muted); display:grid; place-items:center; transition:var(--t-fast);
}
.footer-social a:hover{color:#fff; background:var(--accent-grad); border-color:transparent;}
.footer-social svg{width:18px; height:18px;}
.footer-bottom{
  display:flex; flex-direction:column; gap:10px;
  padding-top:24px; border-top:1px solid var(--border);
  font-size:13px; color:var(--muted-2);
}
@media (min-width:768px){
  .footer-grid{grid-template-columns:2fr 1fr 1fr 1fr;}
  .footer-brand{grid-column:auto;}
  .footer-bottom{flex-direction:row; justify-content:space-between; align-items:center;}
}

/* ============================================================
   SCROLL REVEAL
   ============================================================ */
.reveal{opacity:0; transform:translateY(24px); transition:opacity .6s var(--t), transform .6s var(--t);}
.reveal.in{opacity:1; transform:none;}

/* ============================================================
   ESPACEMENTS SECTION RÉDUITS SUR MOBILE
   ============================================================ */
@media (max-width:640px){
  .section{padding:56px 0;}
  .section-head{margin-bottom:36px;}
}
