/* Hypervisible : rapport public /r/<jeton> et composants partagés avec /scan/, direction artistique v3 « Noir ».
   Mêmes composants et mêmes valeurs que brand/ui.css (boutons, champs, jetons, badges, cartes à voile, anneau,
   tableau, faisceau, squelette), écrits ici avec les variables --hv-* de jetons.css (chargée avant) : aucune
   couleur, police, ombre ni durée en dur. Un seul halo (derrière le score) et un seul faisceau par page. */

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--hv-hauteur-entete) + 24px);background:var(--hv-fond)}
body{margin:0;min-height:100vh;background:var(--hv-fond);color:var(--hv-encre);font-family:var(--hv-police);font-size:var(--hv-taille-corps);font-weight:var(--hv-graisse-corps);line-height:1.5;font-optical-sizing:auto;font-kerning:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
a{color:var(--hv-bleu-texte);text-decoration:none;text-underline-offset:3px}
a:hover{text-decoration:underline}
img,svg{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:none;box-shadow:var(--hv-focus);border-radius:var(--hv-rayon-2)}
::selection{background:var(--hv-surlignage)}
[hidden]{display:none!important}
.num{font-variant-numeric:tabular-nums}
.sans-js{max-width:var(--hv-largeur);margin:40px auto;padding:0 var(--hv-gouttiere);color:var(--hv-encre-2)}
.saut{position:absolute;left:16px;top:-80px;z-index:100;padding:10px 16px;border-radius:var(--hv-rayon-2);background:var(--hv-bouton-primaire-fond);color:var(--hv-bouton-primaire-encre);font-size:14px;font-weight:var(--hv-graisse-moyenne)}
.saut:focus{top:12px;text-decoration:none}
.ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ic-plein{width:16px;height:16px;flex:none}

/* ---------- Symbole v3 (brand/logo-mark.svg, grille 32) : deux montants, le faisceau passe derrière ---------- */
.symbole{--taille-symbole:32px;position:relative;display:inline-block;flex:none;width:var(--taille-symbole);height:var(--taille-symbole)}
.symbole i{position:absolute;display:block;border-radius:calc(var(--taille-symbole) * .0375)}
.symbole-faisceau{left:31.25%;top:42.1875%;width:62.5%;height:15.625%;background:linear-gradient(90deg,var(--hv-bleu) 0%,var(--hv-bleu) 60%,rgba(30,111,255,0) 100%)}
.symbole-montant{top:12.5%;width:18.75%;height:75%;background:var(--hv-encre)}
.symbole-montant:nth-child(2){left:12.5%}
.symbole-montant:nth-child(3){left:50%}
.symbole-anime .symbole-montant{animation:montant-entre var(--hv-duree) var(--hv-expo) both}
.symbole-anime .symbole-montant:nth-child(3){animation-delay:80ms}
.symbole-anime .symbole-faisceau{animation:faisceau-traverse 500ms var(--hv-expo) 280ms both}
@keyframes montant-entre{from{opacity:0;transform:translateY(16%)}}
@keyframes faisceau-traverse{from{clip-path:inset(0 100% 0 0)}}

/* ---------- En-tête : noir flouté, logotype, actions ---------- */
.entete{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--hv-hauteur-entete);padding:0 max(var(--hv-gouttiere),calc((100% - var(--hv-largeur)) / 2));background:var(--hv-voile-entete);-webkit-backdrop-filter:var(--hv-flou);backdrop-filter:var(--hv-flou);border-bottom:1px solid var(--hv-trait)}
.logo{display:inline-flex;align-items:center;min-height:40px;color:var(--hv-encre);border-radius:var(--hv-rayon-1)}
.logo:hover{text-decoration:none}
.logotype{width:auto;height:24px;overflow:visible}
.logotype stop{stop-color:var(--hv-bleu)}
.logotype .logotype-fin{stop-opacity:0}
.entete-actions{display:flex;align-items:center;gap:8px}

/* ---------- Boutons (brand/ui.css .btn) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--hv-bouton-hauteur);padding:0 16px;border:0;border-radius:var(--hv-rayon-2);font-size:14px;font-weight:var(--hv-graisse-moyenne);line-height:1;letter-spacing:-.005em;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background-color var(--hv-duree-rapide) var(--hv-courbe),color var(--hv-duree-rapide) var(--hv-courbe),box-shadow var(--hv-duree-rapide) var(--hv-courbe),transform var(--hv-duree-rapide) var(--hv-courbe)}
.btn:hover{text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.5;cursor:progress;transform:none}
.btn-primaire{background:var(--hv-bouton-primaire-fond);color:var(--hv-bouton-primaire-encre)}
.btn-primaire:hover{background:var(--hv-bouton-primaire-survol)}
.btn-secondaire{background:var(--hv-bouton-secondaire-fond);color:var(--hv-encre);box-shadow:var(--hv-trait-lumiere)}
.btn-secondaire:hover{background:var(--hv-bouton-secondaire-survol)}
.btn-accent{background:var(--hv-bouton-accent-fond);color:var(--hv-bouton-accent-encre)}
.btn-accent:hover{background:var(--hv-bouton-accent-survol);box-shadow:var(--hv-lueur)}
.btn-fantome{background:transparent;color:var(--hv-encre-2)}
.btn-fantome:hover{background:var(--hv-voile-2);color:var(--hv-encre)}
.btn-compact{height:var(--hv-bouton-hauteur-compacte);padding:0 12px;font-size:13px}
.btn-large{height:44px;padding:0 20px;font-size:15px}
.btn-icone{width:var(--hv-bouton-hauteur);padding:0}
.btn-icone.btn-compact{width:var(--hv-bouton-hauteur-compacte)}
.btn:focus-visible{box-shadow:var(--hv-focus)}

/* ---------- Typographie ---------- */
.kicker{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:var(--hv-taille-petit);font-weight:var(--hv-graisse-moyenne);line-height:1.4;color:var(--hv-encre-2)}
.titre{margin-top:16px;font-size:var(--hv-taille-h1);font-weight:var(--hv-graisse-moyenne);line-height:1;letter-spacing:var(--hv-approche-heros);color:var(--hv-encre);text-wrap:balance}
.titre em,.bloc-titre em{font-style:normal;color:var(--hv-encre-2)}
.chapo{margin-top:20px;max-width:56ch;font-size:var(--hv-taille-intro);line-height:1.5;color:var(--hv-encre-2);text-wrap:pretty}
.mini-lab{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:var(--hv-taille-etiquette);font-weight:var(--hv-graisse-moyenne);line-height:1.4;color:var(--hv-encre-2)}
.vide{padding:20px 22px;border:1px dashed var(--hv-trait-fort);border-radius:var(--hv-rayon-3);font-size:14px;color:var(--hv-encre-2)}

/* ---------- Jetons, badges, pastilles, points ---------- */
.jeton{display:inline-flex;align-items:center;gap:8px;height:28px;padding:0 10px;border-radius:var(--hv-rayon-pilule);background:var(--hv-voile-2);border:1px solid var(--hv-trait);font-size:12px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre);white-space:nowrap}
.jeton-marque{padding-left:3px}
.badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--hv-rayon-1);background:var(--hv-voile-3);font-size:12px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre);white-space:nowrap;font-variant-numeric:tabular-nums}
.badge-attention{background:var(--hv-attention-fond);color:var(--hv-attention)}
.pastille{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%;background:var(--m,var(--hv-s-autre))}
[data-m="chatgpt"]{--m:var(--hv-s-chatgpt)}
[data-m="ai_overview"]{--m:var(--hv-s-ai-overview)}
[data-m="ai_mode"]{--m:var(--hv-s-ai-mode)}
[data-m="gemini"]{--m:var(--hv-s-gemini)}
[data-m="perplexity"]{--m:var(--hv-s-perplexity)}
.point{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%}
.etat{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:var(--hv-graisse-moyenne);line-height:1.3;color:var(--hv-encre);white-space:nowrap}
.etat-cite .point{background:var(--hv-mieux);box-shadow:var(--hv-mieux-lueur)}
.etat-non{color:var(--hv-encre-2)}
.etat-non .point{background:var(--hv-moins)}
.etat-vide,.etat-erreur{font-weight:var(--hv-graisse-corps);color:var(--hv-encre-2)}
.etat-vide .point{border:1.5px solid var(--hv-trait-fort)}
.etat-erreur .point{border:1.5px dashed var(--hv-trait-fort)}

/* ---------- Cartes à voile (brand/ui.css .carte) ---------- */
.carte,.composante,.formule,.extrait,.offre{position:relative;border-radius:var(--hv-rayon-3);background:var(--hv-voile-2);border:1px solid var(--hv-trait);box-shadow:var(--hv-trait-lumiere);transition:background-color var(--hv-duree-rapide) var(--hv-courbe),border-color var(--hv-duree-rapide) var(--hv-courbe)}
.carte,.composante,.extrait{padding:22px}
.carte:hover,.composante:hover,.extrait:hover,.offre:hover{background:var(--hv-voile-3);border-color:var(--hv-trait-fort)}

/* ---------- Logos des marques et des sites : l'image du proxy sur tuile blanche, l'initiale en repli ---------- */
.logo-pastille{position:relative;display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border-radius:var(--hv-rayon-2);background:var(--hv-panneau-3);box-shadow:inset 0 0 0 1px var(--hv-trait);overflow:hidden}
.logo-pastille img{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);object-fit:contain;opacity:0}
.logo-pastille.a-logo{background:var(--hv-encre)}
.logo-pastille.a-logo img{opacity:1}
.logo-pastille.a-logo .logo-ini{opacity:0}
.logo-ini{font-size:10px;font-weight:var(--hv-graisse-forte);letter-spacing:0;color:var(--hv-encre)}
.logo-pastille.mini{width:20px;height:20px;border-radius:var(--hv-rayon-1)}
.logo-pastille.mini img{inset:2px;width:calc(100% - 4px);height:calc(100% - 4px)}
.logo-pastille.mini .logo-ini{font-size:8px}

/* ---------- Page ---------- */
.rapport{position:relative;width:100%;max-width:calc(var(--hv-largeur) + 2 * var(--hv-gouttiere));margin:0 auto;padding:clamp(40px,5.5vw,80px) var(--hv-gouttiere) 0;outline:none;overflow-x:clip}
.chargement{display:flex;align-items:center;justify-content:center;gap:12px;min-height:60vh;font-size:14px;color:var(--hv-encre-2)}
.chargement .symbole{--taille-symbole:28px}

/* ---------- Bloc 1 : héros, score, composantes ---------- */
.heros-haut{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,5vw,72px);align-items:center}
.heros-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.partage-emplacement{margin-top:20px}
.partage-emplacement:empty{display:none}
.partage{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.partage-etat{font-size:13px;color:var(--hv-mieux)}
.score{--anneau:320px;--ecart-heros:clamp(32px,5vw,72px);position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center}
.score-cadran{position:relative;width:min(100%,var(--anneau));aspect-ratio:1}
.score-cadran::before{content:"";position:absolute;inset:-52%;z-index:-2;border-radius:50%;background:radial-gradient(closest-side,var(--hv-halo) 47%,rgba(30,111,255,.1) 64%,rgba(30,111,255,.03) 80%,rgba(30,111,255,0) 94%);pointer-events:none}
.score-faisceau{position:absolute;z-index:-1;top:calc(var(--anneau) / 2);left:calc(-1 * var(--ecart-heros));right:calc(-1 * var(--hv-gouttiere));height:6px;margin-top:-3px;border-radius:3px;background:var(--hv-faisceau-scene);pointer-events:none}
.score-faisceau::after{content:"";position:absolute;inset:-9px 0;border-radius:12px;background:var(--hv-faisceau-scene);opacity:.35;filter:blur(9px)}
.anneau{position:relative;width:100%;height:100%;overflow:visible}
.anneau-fond{fill:none;stroke:var(--hv-voile-3);stroke-width:8}
.anneau-trait{fill:none;stroke:var(--hv-bleu);stroke-width:8;stroke-linecap:round;filter:var(--hv-lueur-anneau)}
.score-centre{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:50%;background:radial-gradient(closest-side,var(--hv-fond) 86.4%,rgba(0,0,0,0) 86.8%)}
.score-nombre{font-size:var(--hv-taille-score);font-weight:var(--hv-graisse-moyenne);line-height:.85;letter-spacing:-.045em;color:var(--hv-encre)}
.score-sur{margin-top:12px;font-size:13px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.score-libelle{margin-top:24px;font-size:15px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre);text-align:center}
.heros-cartes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:clamp(48px,6vw,88px)}
.composantes{grid-column:span 3;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.composante{display:flex;flex-direction:column;gap:12px}
.composante-nom{font-size:var(--hv-taille-etiquette);font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.composante-chiffre{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.composante-valeur{font-size:var(--hv-taille-chiffre);font-weight:var(--hv-graisse-moyenne);line-height:.95;letter-spacing:var(--hv-approche-heros);color:var(--hv-encre)}
.jauge{height:6px;border-radius:3px;background:var(--hv-voile-3);overflow:hidden}
.jauge i,.barre-piste i{display:block;height:100%;border-radius:inherit;background:var(--hv-bleu);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.composante-aide{margin-top:auto;font-size:var(--hv-taille-petit);line-height:1.45;color:var(--hv-encre-2)}
.formule{display:flex;flex-direction:column;gap:12px;padding:22px;background:var(--hv-voile-1)}
.formule-titre{font-size:var(--hv-taille-etiquette);font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.formule-termes{display:grid;gap:8px;font-size:var(--hv-taille-petit);line-height:1.45;color:var(--hv-encre-2)}
.formule-termes b{font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre)}
.formule-note{margin-top:auto;font-size:var(--hv-taille-petit);line-height:1.45;color:var(--hv-attention)}

/* ---------- Blocs ---------- */
.bloc{margin-top:var(--hv-espace-bloc)}
.bloc-tete{max-width:760px;margin-bottom:32px}
.bloc-titre{margin-top:12px;font-size:var(--hv-taille-h2);font-weight:var(--hv-graisse-moyenne);line-height:1.1;letter-spacing:var(--hv-approche-h2);color:var(--hv-encre);text-wrap:balance}
.bloc-aide{margin-top:14px;max-width:64ch;font-size:15px;line-height:1.55;color:var(--hv-encre-2);text-wrap:pretty}

/* ---------- Bloc 2 : questions × surfaces ---------- */
.matrice{border-radius:var(--hv-rayon-4);background:var(--hv-voile-1);border:1px solid var(--hv-trait);box-shadow:var(--hv-trait-lumiere);overflow:hidden}
.matrice-tete,.ligne{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr))}
.matrice-tete{border-bottom:1px solid var(--hv-trait-fort)}
.matrice-tete span{display:flex;align-items:center;gap:8px;padding:14px 20px;font-size:var(--hv-taille-etiquette);font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.ligne{transition:background-color var(--hv-duree-rapide) var(--hv-courbe)}
.ligne:hover{background:var(--hv-voile-1)}
.ligne+.ligne{border-top:1px solid var(--hv-trait)}
.ligne>div{min-width:0;padding:18px 20px}
.cel-question{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.q-texte{font-size:15px;font-weight:var(--hv-graisse-moyenne);line-height:1.4;color:var(--hv-encre)}
.q-demande{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--hv-rayon-1);background:var(--hv-voile-3);font-size:12px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre);white-space:nowrap}
.q-demande[data-inconnue]{background:transparent;box-shadow:inset 0 0 0 1px var(--hv-trait-fort);color:var(--hv-encre-2)}
.cel{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.cel-surface{display:none}
.cel-note{font-size:12px;color:var(--hv-encre-2)}
.cel-place{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12px;color:var(--hv-encre-2)}
.cel-concurrent{display:inline-flex;align-items:center;gap:6px;color:var(--hv-encre)}

/* ---------- Bloc 3 : ce que ChatGPT répond ---------- */
.extraits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.extrait{display:flex;flex-direction:column;gap:16px;padding:24px}
.extrait-tete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.extrait-question{font-size:var(--hv-taille-h3);font-weight:var(--hv-graisse-moyenne);line-height:1.3;letter-spacing:var(--hv-approche-h3);color:var(--hv-encre)}
.extrait-texte{margin:0;padding-left:14px;border-left:2px solid var(--hv-s-chatgpt);font-size:14px;line-height:1.6;color:var(--hv-encre-2);white-space:pre-line;display:-webkit-box;-webkit-line-clamp:8;line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}
.extrait-texte mark{padding:0 3px;border-radius:4px;background:var(--hv-surlignage);color:var(--hv-encre)}
.extrait-sources{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;padding-top:16px;border-top:1px solid var(--hv-trait)}
.extrait-sources .mini-lab{margin:0 4px 0 0}
.source,.site,.puce{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 10px 0 4px;border-radius:var(--hv-rayon-pilule);background:var(--hv-voile-2);border:1px solid var(--hv-trait);font-size:12px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre);white-space:nowrap}

/* ---------- Bloc 4 : citations AI Overviews ---------- */
.apercus{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:12px}
.apercus-chiffre,.apercus-liste{padding:28px}
.apercus-chiffre{display:flex;flex-direction:column}
.grand-nombre{display:block;margin-top:8px;font-size:var(--hv-taille-chiffre-principal);font-weight:var(--hv-graisse-moyenne);line-height:.95;letter-spacing:var(--hv-approche-heros);color:var(--hv-encre)}
.grand-libelle{display:block;margin-top:12px;font-size:15px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre)}
.apercus-chiffre .bloc-aide{margin-top:auto;padding-top:24px;font-size:var(--hv-taille-petit)}
.requetes{display:grid;counter-reset:rq}
.requete{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:4px 12px;align-items:baseline;padding:14px 0;border-top:1px solid var(--hv-trait);counter-increment:rq}
.requete::before{content:counter(rq);font-size:13px;font-variant-numeric:tabular-nums;color:var(--hv-encre-3)}
.requete-texte{min-width:0;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre)}
.requete-volume{font-size:13px;color:var(--hv-encre-2);white-space:nowrap}
.requete-page{grid-column:2/-1;overflow:hidden;font-size:13px;color:var(--hv-encre-3);text-overflow:ellipsis;white-space:nowrap}

/* ---------- Bloc 5 : concurrents ---------- */
.concurrents{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);grid-template-areas:"pdv place" "sites sites";gap:12px}
.carte-pdv{grid-area:pdv;display:flex;flex-direction:column}
.carte-place{grid-area:place}
.carte-sites{grid-area:sites}
.barres{display:grid;gap:16px}
.barre{display:grid;grid-template-columns:28px minmax(84px,.7fr) minmax(0,1.5fr) 52px;align-items:center;gap:12px}
.barre-nom{overflow:hidden;font-size:14px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2);text-overflow:ellipsis;white-space:nowrap}
.barre[data-marque] .barre-nom{color:var(--hv-encre)}
.barre-piste{height:6px;border-radius:3px;background:var(--hv-voile-3);overflow:hidden}
.barre-piste i{background:var(--hv-s-autre)}
.barre[data-marque] .barre-piste i{background:var(--hv-bleu)}
.barre-valeur{text-align:right;font-size:14px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.barre[data-marque] .barre-valeur{color:var(--hv-encre)}
.carte-pdv .bloc-aide{margin-top:auto;padding-top:24px;font-size:var(--hv-taille-petit)}
.places{display:grid;gap:12px}
.place{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px}
.place-nom{font-size:14px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre)}
.place-n{font-size:13px;color:var(--hv-encre-2)}
.place-exemple{margin-top:16px;padding-top:14px;border-top:1px solid var(--hv-trait);font-size:13px;line-height:1.5;color:var(--hv-encre-2)}
.sites{display:flex;flex-wrap:wrap;gap:8px}
.site b{font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.sites-marque{margin-top:16px;font-size:13px;color:var(--hv-encre-2)}
.sites-marque b{font-weight:var(--hv-graisse-moyenne);color:var(--hv-mieux)}
.autres{margin-top:18px;padding-top:16px;border-top:1px solid var(--hv-trait)}
.puces{display:flex;flex-wrap:wrap;gap:8px}

/* ---------- Bloc 6 : le film, dans un cadre d'écran ---------- */
.film-cadre{overflow:hidden;border-radius:var(--hv-rayon-5);border:1px solid var(--hv-trait);background:var(--hv-fond-2);box-shadow:var(--hv-ombre-cadre)}
.film-cadre #film{aspect-ratio:16/9}

/* ---------- Bloc 7 : l'appel ---------- */
.offres{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.offre{display:flex;flex-direction:column;gap:20px;padding:28px;border-radius:var(--hv-rayon-4)}
.offre-complet{border-color:var(--hv-trait-fort)}
.offre-titre{font-size:var(--hv-taille-h3);font-weight:var(--hv-graisse-moyenne);line-height:1.3;letter-spacing:var(--hv-approche-h3);color:var(--hv-encre)}
.offre-prix{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px}
.offre-prix .num{font-size:var(--hv-taille-chiffre);font-weight:var(--hv-graisse-moyenne);line-height:.95;letter-spacing:var(--hv-approche-heros);color:var(--hv-encre)}
.offre-detail{font-size:13px;color:var(--hv-encre-2)}
.offre-points{display:grid;gap:10px;margin-bottom:8px}
.offre-points li{display:flex;gap:10px;font-size:14px;line-height:1.45;color:var(--hv-encre-2)}
.offre-points .ic{margin-top:2px;color:var(--hv-encre)}
.offre .btn{margin-top:auto;align-self:flex-start}

/* ---------- États : scan en cours, échec ---------- */
.encours{display:flex;align-items:center;min-height:calc(100vh - var(--hv-hauteur-entete) - 96px);padding:clamp(8px,4vh,48px) 0 clamp(40px,8vh,96px)}
.encours-corps{width:100%;max-width:780px;margin:0 auto}
.encours-marque{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre)}
.encours-marque .symbole{--taille-symbole:36px}
.encours-titre{margin-top:24px}
.encours-mesure{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;margin-top:48px}
.encours-pct{font-size:var(--hv-taille-chiffre);font-weight:var(--hv-graisse-moyenne);line-height:.95;letter-spacing:var(--hv-approche-heros);color:var(--hv-encre)}
.encours-compte{font-size:14px;color:var(--hv-encre-2)}
.progression{position:relative;height:6px;margin-top:16px;border-radius:3px;background:var(--hv-voile-2)}
.progression i{position:absolute;inset:0 auto 0 0;width:calc(var(--p,0) * 100%);min-width:6px;border-radius:inherit;background:var(--hv-faisceau);box-shadow:var(--hv-lueur);transition:width var(--hv-duree-lente) var(--hv-expo)}
.etapes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:28px}
.etape{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:var(--hv-rayon-3);background:var(--hv-voile-1);border:1px solid var(--hv-trait);font-size:13px;line-height:1.35;color:var(--hv-encre-3);transition:background-color var(--hv-duree) var(--hv-courbe),border-color var(--hv-duree) var(--hv-courbe),color var(--hv-duree) var(--hv-courbe),box-shadow var(--hv-duree) var(--hv-courbe)}
.etape-haut{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:10px}
.etape-point{display:block;width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--hv-trait-fort)}
.etape-surfaces{display:inline-flex;gap:5px}
.etape-surfaces .pastille{width:6px;height:6px;opacity:.25;transition:opacity var(--hv-duree) var(--hv-courbe)}
.etape[data-etat="fait"]{background:var(--hv-voile-2);color:var(--hv-encre-2)}
.etape[data-etat="fait"] .etape-point{background:var(--hv-mieux);box-shadow:var(--hv-mieux-lueur)}
.etape[data-etat="encours"]{background:var(--hv-voile-2);border-color:var(--hv-bleu-trait);color:var(--hv-encre);box-shadow:var(--hv-trait-lumiere),0 0 28px rgba(30,111,255,.16)}
.etape[data-etat="encours"] .etape-point{background:var(--hv-bleu);box-shadow:var(--hv-lueur-douce);animation:respire 1.6s var(--hv-courbe) infinite}
.etape[data-etat="encours"] .etape-surfaces .pastille,.etape[data-etat="fait"] .etape-surfaces .pastille{opacity:1}
.etape[data-etat="encours"] .etape-surfaces .pastille:nth-child(2){transition-delay:120ms}
.etape[data-etat="encours"] .etape-surfaces .pastille:nth-child(3){transition-delay:240ms}
@keyframes respire{50%{opacity:.4}}
.encours.echec .encours-corps{max-width:640px}
.encours-bouton{margin-top:32px}

/* ---------- Verrou : rapport partiel ---------- */
.verrou{position:relative;isolation:isolate;min-height:620px;margin-top:var(--hv-espace-bloc)}
.fantome{display:grid;gap:12px;filter:var(--hv-flou-fantome);pointer-events:none;user-select:none}
.fantome-titre{width:44%;height:40px;border-radius:var(--hv-rayon-2);background:var(--hv-voile-4)}
.fantome-ligne{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:12px}
.fantome-ligne i,.fantome-cartes i{height:64px;border-radius:var(--hv-rayon-3);background:var(--hv-voile-3)}
.fantome-ligne i:nth-child(2){background:var(--hv-mieux-fond)}
.fantome-ligne i:nth-child(3){background:var(--hv-moins-fond)}
.fantome-cartes{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fantome-cartes i{height:200px}
.verrou::after{content:"";position:absolute;inset:-32px -48px -48px;z-index:1;background:radial-gradient(120% 90% at 50% 12%,rgba(0,0,0,.1) 0%,rgba(0,0,0,.45) 42%,var(--hv-fond) 84%);pointer-events:none}
.verrou-carte{position:absolute;z-index:2;left:50%;top:48px;width:min(480px,100%);padding:28px;border-radius:var(--hv-rayon-4);background:var(--hv-panneau);border:1px solid var(--hv-trait);box-shadow:var(--hv-ombre-flottante),var(--hv-trait-lumiere);transform:translateX(-50%)}
.verrou-icone{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--hv-rayon-2);background:var(--hv-voile-3);color:var(--hv-encre)}
.verrou-carte h2{margin-top:18px;font-size:clamp(1.375rem,1.2rem + .6vw,1.625rem);font-weight:var(--hv-graisse-moyenne);line-height:1.15;letter-spacing:-.025em;color:var(--hv-encre)}
.verrou-carte>p{margin-top:10px;font-size:15px;line-height:1.55;color:var(--hv-encre-2)}
.verrou-form{margin-top:24px}
.verrou-form .champ-libelle{display:block;margin-bottom:8px}
.verrou-ligne{display:flex;gap:8px}
.verrou-ligne .champ-saisie{flex:1 1 auto;min-width:0}
.verrou-note{margin-top:12px;font-size:12px;line-height:1.45;color:var(--hv-encre-2)}

/* ---------- Champs (brand/ui.css .champ) ---------- */
.champ{display:flex;flex-direction:column;gap:6px}
.champ-libelle{font-size:var(--hv-taille-petit);font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.champ-saisie{width:100%;height:var(--hv-bouton-hauteur);padding:0 12px;border-radius:var(--hv-rayon-2);border:1px solid var(--hv-trait);background:var(--hv-voile-2);color:var(--hv-encre);font-size:15px;transition:border-color var(--hv-duree-rapide) var(--hv-courbe),background-color var(--hv-duree-rapide) var(--hv-courbe)}
.champ-saisie::placeholder{color:var(--hv-encre-3);opacity:1}
.champ-saisie:hover{border-color:var(--hv-trait-fort)}
.champ-saisie:focus-visible{border-color:var(--hv-bleu-texte);box-shadow:var(--hv-focus);outline:none}
select.champ-saisie{appearance:none;padding-right:36px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239E9E9E' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;cursor:pointer}
select.champ-saisie option{background:var(--hv-panneau);color:var(--hv-encre)}
.champ-aide{font-size:12px;line-height:1.45;color:var(--hv-encre-2)}
.champ-erreur{font-size:13px;line-height:1.45;color:var(--hv-moins)}
.verrou-form .champ-erreur{margin-top:10px}

/* ---------- Pied ---------- */
.pied{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;width:100%;max-width:calc(var(--hv-largeur) + 2 * var(--hv-gouttiere));margin:var(--hv-espace-bloc) auto 0;padding:28px var(--hv-gouttiere) 48px;font-size:13px;color:var(--hv-encre-3)}
.pied::before{content:"";position:absolute;top:0;left:var(--hv-gouttiere);right:var(--hv-gouttiere);height:1px;background:var(--hv-trait)}
.pied:empty{display:none}
.pied-texte{display:grid;gap:4px}
.pied-signature{color:var(--hv-encre-2)}
.pied-lien{display:inline-flex;align-items:center;gap:6px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
.pied-lien:hover{color:var(--hv-encre);text-decoration:none}

/* ---------- Tablette ---------- */
@media (max-width:1080px){
  .heros-cartes{grid-template-columns:minmax(0,1fr)}
  .composantes{grid-column:auto}
}
@media (max-width:900px){
  .heros-haut{grid-template-columns:minmax(0,1fr)}
  .score{--anneau:280px;margin-top:16px}
  .score-faisceau{left:calc(-1 * var(--hv-gouttiere))}
  .concurrents{grid-template-columns:minmax(0,1fr);grid-template-areas:"pdv" "place" "sites"}
  .apercus{grid-template-columns:minmax(0,1fr)}
  .etapes{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---------- Mobile : la matrice devient une carte par question, chaque surface nommée ---------- */
@media (max-width:720px){
  .entete-partager{display:none}
  .composantes{grid-template-columns:minmax(0,1fr)}
  .carte,.composante,.formule,.extrait{padding:20px}
  .offre,.apercus-chiffre,.apercus-liste{padding:22px}
  .score{--anneau:256px}
  .matrice-tete{display:none}
  .ligne{grid-template-columns:minmax(0,1fr)}
  .ligne>div{padding:12px 16px}
  .cel-question{padding-top:18px!important}
  .cel{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:12px;border-top:1px solid var(--hv-trait)}
  .cel-surface{display:inline-flex;align-items:center;gap:8px;min-width:112px;font-size:12px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2)}
  .cel-place{width:100%}
  .extraits,.offres{grid-template-columns:minmax(0,1fr)}
  .barre{grid-template-columns:28px minmax(0,1fr) 52px;grid-template-areas:"logo nom valeur" "piste piste piste";row-gap:8px}
  .barre .logo-pastille{grid-area:logo}
  .barre-nom{grid-area:nom}
  .barre-piste{grid-area:piste}
  .barre-valeur{grid-area:valeur}
  .requete{grid-template-columns:22px minmax(0,1fr)}
  .requete-volume{grid-column:2}
  .verrou{min-height:560px}
  .fantome>:nth-child(n+5){display:none}
  .verrou-carte{top:24px;padding:22px}
  .verrou-ligne{flex-direction:column}
  .fantome-ligne{grid-template-columns:1fr 1fr}
  .encours-mesure{margin-top:36px}
  .offre .btn{align-self:stretch}
}
@media (pointer:coarse){
  .btn-compact{height:40px}
  .btn-icone.btn-compact{width:40px}
  .champ-saisie{height:44px;font-size:16px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .symbole-anime i,.etape[data-etat="encours"] .etape-point{animation:none}
  .progression i,.etape,.etape-surfaces .pastille,.btn,.carte,.composante,.extrait,.offre,.ligne{transition:none}
}
