/* Hypervisible : page du scan gratuit /scan/, direction artistique v3 « Noir ». Réutilise jetons.css (variables
   --hv-*) et les composants de rapport.css (en-tête, boutons, champs, titres, état « scan en cours ») ; ici, la
   mise en page du héros : un halo derrière le titre, le faisceau qui passe derrière les mots et entre dans le
   formulaire (surface pleine : la lumière passe derrière), les trois promesses en cartes. */
.langues{display:inline-flex;gap:2px;padding:3px;border-radius:var(--hv-rayon-2);background:var(--hv-voile-2);border:1px solid var(--hv-trait)}
.langues a{display:inline-grid;place-items:center;min-width:36px;height:28px;padding:0 10px;border-radius:var(--hv-rayon-1);font-size:13px;font-weight:var(--hv-graisse-moyenne);color:var(--hv-encre-2);transition:background-color var(--hv-duree-rapide) var(--hv-courbe),color var(--hv-duree-rapide) var(--hv-courbe)}
.langues a:hover{color:var(--hv-encre);text-decoration:none}
.langues a[aria-current="true"]{background:var(--hv-panneau-3);color:var(--hv-encre);box-shadow:var(--hv-trait-lumiere)}

.scan{position:relative;width:100%;max-width:calc(var(--hv-largeur) + 2 * var(--hv-gouttiere));margin:0 auto;padding:clamp(40px,7vw,104px) var(--hv-gouttiere) clamp(56px,8vw,112px);overflow-x:clip}
.scan-heros{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-template-areas:"texte formulaire" "promesses promesses";gap:clamp(48px,6vw,88px) clamp(32px,5vw,80px);align-items:center}
.scan-texte{grid-area:texte;position:relative}
.scan-halo{position:absolute;z-index:-2;left:-12%;top:-30%;width:78%;height:120%;border-radius:50%;background:radial-gradient(closest-side,var(--hv-halo),var(--hv-halo-2) 56%,rgba(30,111,255,0) 76%);pointer-events:none}
.scan-titre{position:relative;isolation:isolate;margin-top:18px;font-size:clamp(2.75rem,.35rem + 5.4vw,4.75rem)}
.scan-titre em{color:var(--hv-bleu-clair)}
.scan-faisceau{position:absolute;z-index:-1;top:50%;left:24%;width:calc(100% + 28vw);height:6px;margin-top:-3px;border-radius:3px;background:var(--hv-faisceau-scene);pointer-events:none}
.scan-faisceau::after{content:"";position:absolute;inset:-9px 0;border-radius:12px;background:var(--hv-faisceau-scene);opacity:.35;filter:blur(9px)}
.scan-texte .chapo{margin-top:24px;max-width:48ch}
.carte-formulaire{grid-area:formulaire;position:relative;z-index:1;display:grid;gap:18px;padding:28px;border-radius:var(--hv-rayon-4);background:var(--hv-panneau);border:1px solid var(--hv-trait);box-shadow:var(--hv-trait-lumiere)}
.carte-formulaire .champ-erreur{margin-top:-6px}
/* Code d'accès (tant que le scan est sur invitation) : même champ que les autres ; refusé, son bord passe au rouge. */
.carte-formulaire .champ-saisie[aria-invalid="true"]{border-color:var(--hv-moins)}
.turnstile:empty{display:none}
.scan-lancer{width:100%;margin-top:4px}
.note{font-size:var(--hv-taille-petit);line-height:1.45;color:var(--hv-encre-2);text-align:center}
.promesses{grid-area:promesses;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;counter-reset:promesse}
.promesses li{display:grid;align-content:start;gap:6px;padding:20px 22px;border-radius:var(--hv-rayon-3);background:var(--hv-voile-1);border:1px solid var(--hv-trait);counter-increment:promesse}
.promesses li::before{content:counter(promesse,decimal-leading-zero);margin-bottom:10px;font-size:var(--hv-taille-petit);font-weight:var(--hv-graisse-moyenne);font-variant-numeric:tabular-nums;color:var(--hv-encre-3)}
.promesses b{font-size:15px;font-weight:var(--hv-graisse-moyenne);letter-spacing:-.005em;color:var(--hv-encre)}
.promesses span{font-size:14px;line-height:1.5;color:var(--hv-encre-2)}
.scan-encours{min-height:calc(100vh - var(--hv-hauteur-entete) - 160px)}

/* Entrée (dossier/02 §8) : les blocs montent de 12 px en fondu, échelonnés de 40 ms ; le halo s'allume, puis le
   faisceau traverse une fois, de gauche à droite. Au chargement seulement, jamais au défilement. */
@keyframes scan-entree{from{opacity:0;transform:translateY(12px)}}
@keyframes scan-halo{from{opacity:0}}
.scan-texte>*,.carte-formulaire,.promesses li{animation:scan-entree 500ms var(--hv-expo) both}
.scan-texte>:nth-child(2){animation-delay:40ms}
.scan-texte>:nth-child(3){animation-delay:80ms}
.carte-formulaire{animation-delay:120ms}
.promesses li:nth-child(1){animation-delay:200ms}
.promesses li:nth-child(2){animation-delay:240ms}
.promesses li:nth-child(3){animation-delay:280ms}
.scan-halo{animation:scan-halo 900ms var(--hv-courbe) both}
.scan-faisceau{animation:faisceau-traverse 900ms var(--hv-expo) 280ms both}

@media (max-width:900px){
  .scan-heros{grid-template-columns:minmax(0,1fr);grid-template-areas:"texte" "formulaire" "promesses";row-gap:40px}
  .scan-titre{font-size:var(--hv-taille-heros)}
  .promesses{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:720px){
  .carte-formulaire{padding:20px}
  .promesses li{padding:18px 20px}
}
@media (max-width:360px){
  .scan-titre{font-size:2.375rem}
}
@media (pointer:coarse){
  .langues a{height:34px;min-width:40px}
}
@media (prefers-reduced-motion:reduce){
  .scan-texte>*,.carte-formulaire,.promesses li,.scan-halo,.scan-faisceau{animation:none}
}
