:root{--bg:#0A0A0B;--panel:#14141A;--surface:#1A1A22;--line:#252530;--line2:#35354A;
--gold:#C9A86A;--gold-b:#E0C088;--gold-d:#9A8044;--ok:#7FB785;--warn:#D9A441;--alert:#C97070;
--t1:#F4F5F6;--t2:#9A9CA1;--t3:#6C6E73;--t4:#45474C;--white:#F4F5F6}
.a4wrap{max-width:640px;margin:0 auto;padding:0 16px}

/* ═══════ FOND DU PARCOURS ═══════
   Couches empilées, dans l'ordre de peinture souhaité (voir updateBg()
   dans assessment.js pour la logique de bascule photo/marque) :
   bgPhoto/bgBrand (image ou logo+slogan) < bgTint (teinte sport/or)
   < bgScrim (voile sombre, lisibilité) < bgGrain (grain, avant le choix
   du sport uniquement). Tout est position:fixed, z-index:0 — pbar/main/
   nav gardent leur z-index positif pour rester strictement au-dessus.

   bgPhoto est borné à un panneau centré de 1000px max (jamais toute la
   largeur du viewport) : les photos sources sont en portrait (téléphone),
   et en background-size:cover sur un écran large elles seraient recadrées
   à une simple bande verticale méconnaissable — d'où le rendu délavé/sans
   relief constaté en PC. Bornée, la photo reste lisible comme une vraie
   photo derrière le contenu, quelle que soit la largeur d'écran.

   bgTint/bgScrim/bgGrain restent plein cadre : un fond uniformément
   coloré/sombre autour du panneau. bgTint est plein cadre (et non borné
   comme bgPhoto) précisément pour éviter que la zone hors panneau, sur
   grand écran, ne reste noire/vide — c'était la cause des « deux barres
   noires sur le côté » : à droite/gauche du panneau de 1000px il n'y
   avait que bgScrim (un voile sombre) au-dessus du fond --bg quasi noir,
   sans aucune couleur. bgTint (couleur/dégradé, jamais une image) peut
   couvrir tout le viewport sans jamais subir de recadrage moche — le
   problème de crop ne concerne que les photos. Un mask-image en fondu sur
   les bords de bgPhoto adoucit la couture entre panneau net et halo
   coloré plein cadre, au lieu d'une ligne verticale brutale. */
.bg-brand,.bg-scrim,.bg-grain,.bg-tint{position:fixed;inset:0;z-index:0;pointer-events:none}
.bg-photo{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);
  width:min(1000px,100vw);z-index:0;pointer-events:none;overflow:hidden}
.bg-photo{opacity:0;transition:opacity .4s ease}
.bg-photo.on{opacity:1}
/* Le fondu sur les bords ne s'applique qu'au-delà de 1000px de viewport :
   sous ce seuil bgPhoto fait déjà 100vw (aucun bord à adoucir, et on ne
   veut surtout pas rogner la photo sur mobile). */
@media(min-width:1000px){
.bg-photo{-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 7%,#000 93%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0%,#000 7%,#000 93%,transparent 100%)}
}
.bg-photo-img{position:absolute;inset:-6%;background-size:cover;background-position:center 30%;
  transform:scale(1.08);transition:background-image .4s ease}
.bg-photo-img.drift{animation:bgDrift 48s ease-in-out infinite alternate}
@keyframes bgDrift{from{transform:scale(1.08) translate(0,0)}to{transform:scale(1.16) translate(-1.5%,-1.5%)}}
.bg-brand{opacity:0;transition:opacity .4s ease;display:flex;align-items:center;justify-content:center;
  flex-direction:column;overflow:hidden}
.bg-brand.on{opacity:1}
.bg-brand img{width:62vw;max-width:420px;opacity:.10;filter:blur(1px)}
.bg-brand.drift img{animation:bgDrift 48s ease-in-out infinite alternate}
.bg-slogan{position:absolute;bottom:14%;left:0;right:0;text-align:center;
  font-family:'Saira Condensed';font-weight:700;font-size:15px;letter-spacing:.06em;
  text-transform:uppercase;color:rgba(244,245,246,.16)}
.bg-tint{transition:background .4s ease}
.bg-scrim{background:linear-gradient(180deg,rgba(10,10,11,.52) 0%,rgba(10,10,11,.63) 45%,rgba(10,10,11,.9) 100%);
  opacity:0;transition:opacity .4s ease}
.bg-scrim.on{opacity:1}
.bg-grain{background-image:url('/grain.png');background-size:128px 128px;mix-blend-mode:overlay;opacity:.5;
  transition:opacity .4s ease}

/* Barre de progression segmentée par pilier (levier 01+02 — bilan
   addictif) : deux rangées (points fins pour Format/Profil/Sport, puis
   un segment par pilier de marque avec son libellé et une puce par
   test) au lieu de l'ancienne rangée plate de 8 points techniques.
   Voir renderPbar() dans assessment.js. */
.pbar{position:relative;z-index:1;display:flex;flex-direction:column;gap:6px;padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--line)}
.pseg-intro{display:flex;gap:3px}
.pd{flex:1;height:3px;border-radius:2px;background:var(--line);transition:.4s}
.pd.done{background:var(--gold-d)}.pd.cur{background:var(--gold);box-shadow:0 0 6px var(--gold)}
.pseg-pillars{display:flex;gap:8px}
.pil{flex:1;min-width:0}
.pil .pil-l{font-family:'Saira';font-weight:600;font-size:8.5px;letter-spacing:.06em;color:var(--t3);
  text-transform:uppercase;margin-bottom:4px;display:block;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pil.active .pil-l{color:var(--gold)}
.pil-ticks{display:flex;gap:2px}
.pil-ticks .t{flex:1;height:5px;border-radius:2px;background:var(--line);transition:.4s}
.pil-ticks .t.done{background:var(--gold-d)}
.pil-ticks .t.cur{background:var(--gold);box-shadow:0 0 5px var(--gold)}

.main{position:relative;z-index:1;padding:24px 16px 110px;max-width:640px;margin:0 auto}
.stage{animation:fi .35s ease}
@keyframes fi{from{opacity:0;transform:translateY(12px)}to{opacity:1}}

/* Activé par updateBg() dès qu'un fond (photo ou marque) est visible —
   les cartes passent en verre dépoli pour laisser deviner le fond,
   au lieu du panneau opaque utilisé quand le fond est grain seul. */
.bg-live .card{background:rgba(26,26,34,.66);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.bg-live .sh{color:#fff}
.bg-live .sd{color:rgba(244,245,246,.72)}

.se{font-family:'Saira';font-size:10px;letter-spacing:.4em;color:var(--gold);text-transform:uppercase;margin-bottom:8px}
.sh{font-family:'Saira Condensed';font-weight:800;font-size:30px;text-transform:uppercase;color:var(--t1);line-height:.95;margin-bottom:6px}
.sh em{font-style:normal;color:var(--gold)}
.sd{font-size:13.5px;color:var(--t2);line-height:1.6;margin-bottom:20px}

.card{background:linear-gradient(165deg,var(--surface),var(--panel));border:1px solid var(--line);
border-radius:14px;padding:20px;margin-bottom:10px;transition:.2s;position:relative}
.card:focus-within{border-color:var(--gold)}
.card h3{font-family:'Saira Condensed';font-weight:700;font-size:17px;color:var(--t1);text-transform:uppercase}
.card .u{font-family:'Saira';font-size:9px;letter-spacing:.1em;color:var(--t3);text-transform:uppercase}
.card .hw{font-size:12px;color:var(--t2);line-height:1.55;margin:8px 0 12px}
.card .hw b{color:var(--t1);font-weight:600}
.ir{display:flex;gap:10px;align-items:center}
.ir input{flex:1;background:var(--bg);border:1.5px solid var(--line2);border-radius:10px;color:var(--t1);
font-family:'Saira Condensed';font-weight:600;font-size:22px;padding:12px 14px;text-align:center;transition:.2s}
.ir input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,106,.1)}
.ir input[type=text],.ir input[type=email]{text-align:left;font-family:'Inter';font-size:15px;font-weight:500}
.ls{font-family:'Saira Condensed';font-weight:700;font-size:14px;color:var(--t3);min-width:65px;text-align:right;transition:color .3s}
/* Pulse au moment où le score en direct animé se stabilise (levier 03) —
   mêmes réglages que la démo validée dans proposition-bilan-addictif.html. */
.ls.ls-pulse{animation:lsPulse .5s ease}
@keyframes lsPulse{0%{transform:scale(1)}40%{transform:scale(1.18)}100%{transform:scale(1)}}
.ctx{margin-top:10px;padding:10px 12px;border-radius:8px;background:var(--bg);border:1px solid var(--line);
font-size:11px;color:var(--t2);line-height:1.5}
.ctx .ct{font-family:'Saira';font-size:8px;letter-spacing:.15em;color:var(--gold);text-transform:uppercase;margin-bottom:4px}

.seg{display:flex;background:var(--bg);border:1px solid var(--line2);border-radius:10px;overflow:hidden}
.seg button{flex:1;background:none;border:none;color:var(--t3);font-family:'Saira Condensed';font-weight:600;
font-size:13px;padding:10px 4px;cursor:pointer;transition:.15s}
.seg button em{font-style:normal;font-size:10px;color:var(--t4);display:block;font-family:'Inter';font-weight:400}
.seg button.on{background:var(--gold);color:#19130A}.seg button.on em{color:rgba(25,19,10,.5)}

.tgl{margin:8px 0 12px}
.tgl-l{font-family:'Saira';font-size:9px;letter-spacing:.15em;color:var(--t3);text-transform:uppercase;margin-bottom:5px}

.sport-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}
.sport-btn{position:relative;overflow:hidden;background-color:var(--surface);background-size:cover;
background-position:center 28%;border:1.5px solid var(--line);border-radius:12px;padding:0;min-height:136px;
display:flex;align-items:flex-end;cursor:pointer;transition:border-color .2s,transform .2s;text-align:left}
.sport-btn:hover{border-color:var(--line2);transform:translateY(-2px)}
.sport-btn.on{border-color:var(--gold)}
.sport-btn.on::after{content:"✓";position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;
background:var(--gold);color:#19130A;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;
box-shadow:0 2px 8px rgba(0,0,0,.4);z-index:2}
.sport-btn-overlay{position:absolute;inset:0;
background:linear-gradient(180deg,rgba(10,10,11,0) 0%,rgba(10,10,11,.25) 42%,rgba(10,10,11,.94) 100%)}
.sport-btn.on .sport-btn-overlay{background:linear-gradient(180deg,rgba(10,10,11,0) 0%,rgba(10,10,11,.2) 42%,rgba(10,10,11,.94) 100%),
linear-gradient(0deg,rgba(201,168,106,.16),rgba(201,168,106,.16))}
.sport-btn-body{position:relative;z-index:1;padding:14px 14px 12px;width:100%}
.sport-btn .sp-icon{font-size:19px;margin-bottom:4px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.7))}
.sport-btn .sp-name{font-family:'Saira Condensed';font-weight:700;font-size:14.5px;color:#fff;text-transform:uppercase;
text-shadow:0 1px 4px rgba(0,0,0,.6)}
.sport-btn .sp-desc{font-size:9.5px;color:rgba(244,245,246,.75);margin-top:3px;line-height:1.4;
text-shadow:0 1px 3px rgba(0,0,0,.6)}
.sport-btn.on .sp-name{color:var(--gold-b)}

/* Cartes de choix simples sans photo (ex. format de bilan) — même grille
   que .sport-grid, mais mise en page pleine hauteur classique plutôt que
   la carte photo en overlay utilisée pour la sélection de sport. */
.choice-btn{background:var(--surface);border:1.5px solid var(--line);border-radius:12px;padding:16px 14px;
cursor:pointer;transition:.2s;text-align:left}
.choice-btn:hover{border-color:var(--line2);transform:translateY(-2px)}
.choice-btn.on{border-color:var(--gold);background:rgba(201,168,106,.06)}
.choice-btn .sp-icon{font-size:24px;margin-bottom:6px}
.choice-btn .sp-name{font-family:'Saira Condensed';font-weight:700;font-size:15px;color:var(--t1);text-transform:uppercase}
.choice-btn .sp-desc{font-size:10px;color:var(--t3);margin-top:3px;line-height:1.4}
.choice-btn.on .sp-name{color:var(--gold)}

.mq{border-top:1px solid var(--line);padding:16px 0}
.mq label{font-family:'Saira Condensed';font-weight:600;font-size:14px;color:var(--t1);display:block;margin-bottom:8px}
.lik{display:flex;gap:4px}
.lik button{flex:1;background:var(--surface);border:1px solid var(--line2);border-radius:8px;color:var(--t3);
font-family:'Saira Condensed';font-weight:600;font-size:13px;padding:9px 0;cursor:pointer;transition:.15s}
.lik button.on{background:var(--gold);color:#19130A;border-color:var(--gold)}

.nav{position:fixed;bottom:0;left:0;right:0;background:rgba(10,10,11,.92);backdrop-filter:blur(16px);
border-top:1px solid var(--line);padding:12px 20px;display:flex;gap:10px;z-index:100}
.nav button{flex:1;font-family:'Saira Condensed';font-weight:700;font-size:15px;letter-spacing:.1em;
text-transform:uppercase;border-radius:10px;padding:14px;cursor:pointer;transition:.2s;border:none}
#prevBtn{background:var(--surface);color:var(--t3);border:1px solid var(--line2)}
#nextBtn{background:linear-gradient(160deg,var(--gold-b),var(--gold) 55%,var(--gold-d));color:#19130A;
box-shadow:0 8px 24px -8px var(--gold)}
#nextBtn:disabled{opacity:.3;cursor:not-allowed;box-shadow:none}
#stepHint{font-size:10px;color:var(--t4);text-align:center;position:fixed;bottom:60px;left:0;right:0;padding:0 20px}

#results{display:none}
.rh{text-align:center;padding:20px 0 24px}
.rsc{font-family:'Saira Condensed';font-weight:800;font-size:90px;line-height:.85;
background:linear-gradient(165deg,#fff 30%,#cfd1d4 55%,#c9a86a 90%);
-webkit-background-clip:text;background-clip:text;color:transparent}
.rsc sub{font-size:.22em;color:var(--t3);-webkit-text-fill-color:var(--t3)}
.rv{font-family:'Saira Condensed';font-weight:700;font-size:22px;margin-top:6px;letter-spacing:.04em}
.pc{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;
margin-bottom:8px;display:flex;align-items:center;gap:14px}
.pc.weak{border-color:var(--alert);border-style:dashed}
.pc-s{font-family:'Saira Condensed';font-weight:800;font-size:30px;min-width:44px;text-align:center}
.pc-b{flex:1}.pc-n{font-family:'Saira Condensed';font-weight:700;font-size:13px;color:var(--t1);text-transform:uppercase}
.pc-t{height:4px;border-radius:2px;background:var(--line);margin-top:5px;overflow:hidden}
.pc-f{height:100%;border-radius:2px;transition:width .8s}
.badge{font-family:'Saira';font-size:8px;letter-spacing:.08em;text-transform:uppercase;
padding:3px 8px;border-radius:4px;border:1px solid;white-space:nowrap}

.mn{font-size:10px;color:var(--t3);line-height:1.5;margin-top:20px;padding:12px;border-radius:8px;border:1px solid var(--line)}

@media(max-width:480px){.sh{font-size:24px}.rsc{font-size:70px}.sport-grid{grid-template-columns:1fr 1fr}
.sport-btn{min-height:118px}.sport-btn .sp-desc{display:none}
.seg button{font-size:11px}}
