*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}

:root{
  --fond:#0e1116;
  --carte:#161b23;
  --texte:#eef1f5;
  --texte-2:#9aa3b0;
  --or:#d8b45a;
  --vert:#3ecf6e;
  --orange:#f0a63a;
  --rouge:#e5544b;
}

html,body{height:100%}
body{
  background:var(--fond);
  color:var(--texte);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  display:flex;flex-direction:column;align-items:center;
  min-height:100dvh;
  padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
  overflow-x:hidden;
}

.entete{text-align:center;padding:18px 16px 6px}
.logo{font-size:1.7rem;font-weight:700;letter-spacing:.5px}
.logo .plus{color:var(--or)}
.sous-logo{font-size:.72rem;color:var(--texte-2);margin-top:2px;letter-spacing:.4px}

.ecran{display:none;flex-direction:column;align-items:center;width:100%;max-width:480px;padding:12px 20px 24px;flex:1}
.ecran.actif{display:flex}

/* ---- accueil ---- */
#ecran-accueil h1{font-size:1.45rem;text-align:center;line-height:1.35;margin:18px 0 22px;font-weight:600}
.etapes{list-style:none;width:100%;display:flex;flex-direction:column;gap:14px;margin-bottom:28px}
.etapes li{display:flex;gap:14px;align-items:flex-start;background:var(--carte);border:1px solid #232a35;border-radius:14px;padding:14px 16px;font-size:.9rem;line-height:1.45;color:var(--texte-2)}
.etapes strong{color:var(--texte)}
.etapes .num{flex:none;width:28px;height:28px;border-radius:50%;background:var(--or);color:#161206;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:.95rem}
.note-confidentialite{font-size:.75rem;color:var(--texte-2);text-align:center;margin-top:18px;line-height:1.6}

.btn-principal{
  background:linear-gradient(135deg,#e3c069,#c79a35);
  color:#181206;font-size:1.05rem;font-weight:700;
  border:none;border-radius:14px;padding:16px 30px;width:100%;
  cursor:pointer;box-shadow:0 6px 22px rgba(216,180,90,.25);
  transition:transform .15s;
}
.btn-principal:active{transform:scale(.97)}

/* ---- caméra ---- */
#cam-box{
  position:relative;
  width:min(88vw, 58dvh * .7778);
  aspect-ratio:35/45;
  border-radius:16px;overflow:hidden;
  background:#000;
  border:1px solid #2a3240;
}
#video{width:100%;height:100%;object-fit:cover;display:block}
#video.miroir{transform:scaleX(-1)}
#guide{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.g-ovale{fill:none;stroke:rgba(255,255,255,.85);stroke-width:2;stroke-dasharray:7 6}
.g-ligne{stroke:rgba(216,180,90,.8);stroke-width:1.4;stroke-dasharray:5 5}
.g-texte{fill:rgba(255,255,255,.75);font-size:12px;text-anchor:middle;font-family:inherit}
#cam-erreur{position:absolute;inset:0;background:#12161d;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;font-size:.9rem;line-height:1.6;color:var(--texte-2)}
.cache{display:none!important}

.btn-voix{
  position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;
  background:rgba(14,17,22,.55);border:1px solid rgba(255,255,255,.25);color:#fff;
  font-size:1rem;cursor:pointer;backdrop-filter:blur(2px);
}
.btn-voix.muet{opacity:.5}
.btn-voix.attire{
  animation:clignoter-voix 1.15s ease-in-out infinite;
  box-shadow:0 0 0 0 rgba(216,180,90,.6);
}
@keyframes clignoter-voix{
  0%,100%{ box-shadow:0 0 0 0 rgba(216,180,90,.55); background:rgba(216,180,90,.35); }
  50%{ box-shadow:0 0 0 8px rgba(216,180,90,0); background:rgba(14,17,22,.55); }
}

/* cadrage (position du visage dans le cercle) */
#cadrage-statut{
  margin-top:10px;text-align:center;font-size:.85rem;font-weight:600;
  padding:6px 12px;border-radius:10px;background:var(--carte);
  min-height:1.4em;
}
#cadrage-statut.ok{color:var(--vert)}
#cadrage-statut.moyen{color:var(--orange)}
#cadrage-statut.mauvais{color:var(--rouge)}

/* jauge de luminosité */
#jauge-zone{width:min(88vw,340px);margin-top:14px}
#jauge-piste{position:relative;height:12px;border-radius:6px;overflow:hidden;background:#1c222c}
.j-zone{position:absolute;top:0;height:100%}
.j-rouge{background:rgba(229,84,75,.55)}
.j-orange{background:rgba(240,166,58,.55)}
.j-verte{background:rgba(62,207,110,.6)}
#jauge-curseur{
  position:absolute;top:-3px;width:6px;height:18px;border-radius:3px;
  background:#fff;box-shadow:0 0 6px rgba(0,0,0,.7);
  left:0;transition:left .25s ease;
}
#jauge-statut{
  margin-top:8px;text-align:center;font-size:.85rem;font-weight:600;
  padding:6px 12px;border-radius:10px;background:var(--carte);
}
#jauge-statut.ok{color:var(--vert)}
#jauge-statut.moyen{color:var(--orange)}
#jauge-statut.mauvais{color:var(--rouge)}

.consigne{font-size:.74rem;color:var(--texte-2);text-align:center;margin-top:10px}

.barre-actions{display:flex;align-items:center;justify-content:center;gap:34px;margin-top:16px;width:100%}
.barre-actions.colonne{flex-direction:column;gap:12px;margin-top:18px}
.ligne-btns{display:flex;gap:12px;width:100%}

.btn-capture{
  width:76px;height:76px;border-radius:50%;
  background:transparent;border:4px solid #fff;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:transform .1s;
}
.btn-capture span{width:56px;height:56px;border-radius:50%;background:#fff;transition:background .3s}
.btn-capture:active{transform:scale(.93)}
.btn-capture.pret span{background:var(--vert)}

.btn-rond{
  width:52px;height:52px;border-radius:50%;font-size:1.2rem;
  background:var(--carte);color:var(--texte);border:1px solid #2a3240;cursor:pointer;
}
#statut-modele{font-size:.72rem;color:var(--texte-2);margin-top:12px;min-height:1em}
#statut-modele.pret{color:var(--vert)}
#diag-ligne{font-size:.68rem;color:#5a6472;margin-top:4px;min-height:1em}

/* ---- traitement ---- */
#ecran-traitement{justify-content:center}
.spinner{
  width:52px;height:52px;border-radius:50%;
  border:4px solid #232a35;border-top-color:var(--or);
  animation:tourne 1s linear infinite;margin-bottom:20px;
}
@keyframes tourne{to{transform:rotate(360deg)}}
#msg-traitement{color:var(--texte-2);font-size:.95rem}

/* ---- résultat ---- */
#ecran-resultat h2{font-size:1.2rem;margin:6px 0 14px}
#resultat-cadre{
  width:min(72vw, 46dvh * .7778);
  aspect-ratio:35/45;border-radius:12px;overflow:hidden;
  border:2px solid #2a3240;box-shadow:0 10px 30px rgba(0,0,0,.5);
}
#resultat-img{width:100%;height:100%;object-fit:cover;display:block}
#resultat-badge{margin-top:12px;font-size:.8rem;font-weight:600;padding:6px 14px;border-radius:20px;background:var(--carte)}
#resultat-badge.ok{color:var(--vert)}
#resultat-badge.alerte{color:var(--orange)}
.btn-secondaire-large{
  flex:1;background:var(--carte);color:var(--texte);border:1px solid #2a3240;
  border-radius:12px;padding:13px 10px;font-size:.92rem;cursor:pointer;
}
.note-suite{font-size:.72rem;color:var(--texte-2);text-align:center;margin-top:16px;line-height:1.6}

.pied{font-size:.68rem;color:#525c69;padding:10px 0 16px;text-align:center}

/* ---- choix du document ---- */
#ecran-document h2{font-size:1.25rem;margin:10px 0 18px}
.docs{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}
.doc-carte{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  background:var(--carte);border:1px solid #232a35;border-radius:14px;
  padding:18px 10px 14px;cursor:pointer;color:var(--texte);
  font-family:inherit;transition:border-color .15s, transform .1s;
}
.doc-carte:active{transform:scale(.97);border-color:var(--or)}
.doc-emoji{font-size:1.9rem}
.doc-nom{font-size:.88rem;font-weight:600;line-height:1.25;text-align:center}
.doc-carte small{font-size:.7rem;color:var(--or)}
.note-doc{font-size:.75rem;color:var(--texte-2);line-height:1.6;margin-top:18px;background:var(--carte);border:1px solid #232a35;border-radius:12px;padding:12px 14px}
.btn-lien{background:none;border:none;color:var(--texte-2);font-size:.9rem;margin-top:16px;cursor:pointer;padding:8px}

/* ---- signature ---- */
#ecran-signature h2{font-size:1.25rem;margin:6px 0 8px}
.consigne-signature{font-size:.8rem;color:var(--texte-2);text-align:center;line-height:1.55;margin-bottom:14px}
#pad-box{
  position:relative;width:100%;aspect-ratio:5/2;
  background:#f7f8f9;border-radius:14px;overflow:hidden;
  border:2px dashed #3a4452;
  touch-action:none;
}
#pad{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
#pad-ligne{position:absolute;left:8%;right:8%;bottom:22%;height:1px;background:#c3c9d0;pointer-events:none}
#pad-indice{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#9aa3b0;font-size:1rem;pointer-events:none;transition:opacity .25s;
}
#pad-box.signee #pad-indice{opacity:0}
.btn-principal:disabled{opacity:.4;box-shadow:none;cursor:default}

/* ---- récapitulatif ---- */
#ecran-recap h2{font-size:1.25rem;margin:6px 0 14px}
.recap-carte{width:100%;background:var(--carte);border:1px solid #232a35;border-radius:16px;padding:16px}
.recap-ligne{display:flex;justify-content:space-between;align-items:center;font-size:.9rem;padding-bottom:12px;border-bottom:1px solid #232a35;margin-bottom:14px}
.recap-label{color:var(--texte-2)}
#recap-doc{font-weight:600}
.recap-visuels{display:flex;gap:14px;align-items:flex-start;justify-content:center;flex-wrap:wrap}
.recap-photo-bloc{display:flex;flex-direction:column;align-items:center;gap:6px}
.recap-photo-bloc img{width:120px;aspect-ratio:35/45;object-fit:cover;border-radius:8px;border:1px solid #2a3240}
#recap-signature-bloc{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1;min-width:140px}
#recap-signature-bloc img{width:100%;max-width:200px;background:#fff;border-radius:8px;border:1px solid #2a3240}
.recap-visuels small{font-size:.68rem;color:var(--texte-2)}

