/* ============================================================
   SCAN — estilos da etapa de análise facial (fluxo B · b.html)
   Adaptado do rascunho-scan.html aprovado. Prefixo ks- pra não
   colidir com o quiz.css. Depende das variáveis do quiz.css.
   ============================================================ */
:root{
  /* contorno de rosto: ovo invertido — coroa redonda, queixo mais fino
     (vertical 44% em cima / 56% embaixo = ponto mais largo nos olhos) */
  --ks-face-r:50% 50% 50% 50% / 44% 44% 56% 56%;
  --ks-dark:#14162A;
}

/* ---------- intro (inline no step do quiz) ---------- */
.ks-intro{display:flex;flex-direction:column;align-items:center}
.ks-hero{position:relative;width:min(44vw,170px);aspect-ratio:1;margin:6px 0 18px;flex:0 0 auto}
.ks-hero .ph{position:absolute;inset:12%;border-radius:50%;overflow:hidden;border:3px solid #fff;box-shadow:0 12px 28px rgba(67,80,168,.30)}
.ks-hero .ph img{width:100%;height:100%;object-fit:cover;display:block}
.ks-hero .ring{position:absolute;border-radius:50%;border:1.5px solid var(--blueberry);opacity:.55}
.ks-hero .ring.r1{inset:4%;border-style:dashed;animation:ksSpin 14s linear infinite}
.ks-hero .ring.r2{inset:-4%;border-color:var(--blueberry-light);opacity:.4;animation:ksPulse 2.6s ease-in-out infinite}
.ks-hero .ring.r3{inset:-12%;border-color:var(--gold);opacity:.3;animation:ksPulse 2.6s ease-in-out 1.3s infinite}
.ks-hero .tick{position:absolute;top:2%;left:50%;width:8px;height:8px;margin-left:-4px;border-radius:50%;
  background:var(--gold);box-shadow:0 0 10px rgba(201,162,39,.8)}
@keyframes ksSpin{to{transform:rotate(360deg)}}
@keyframes ksPulse{0%,100%{transform:scale(1);opacity:.42}50%{transform:scale(1.05);opacity:.14}}
.ks-kicker{font-size:10px;font-weight:900;letter-spacing:1.8px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.ks-bullets{display:flex;flex-direction:column;gap:9px;width:100%;margin-top:4px}
.ks-ib{display:flex;align-items:center;gap:12px;background:var(--card);border:1.5px solid var(--line);border-radius:13px;padding:12px 14px}
.ks-ib .ic{flex:0 0 34px;height:34px;border-radius:10px;background:var(--blueberry-bg);display:flex;align-items:center;justify-content:center}
.ks-ib .ic svg{width:18px;height:18px;stroke:var(--blueberry-deep)}
.ks-ib p{font-size:12.5px;font-weight:600;line-height:1.45;margin:0}
.ks-cta{width:100%;display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:18px}
.ks-skiplink{background:none;border:none;font-family:'Inter',sans-serif;font-size:12.5px;font-weight:600;color:var(--ink-soft);
  text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:8px}
.ks-skiplink.light{color:rgba(255,255,255,.75)}

/* ---------- overlay (câmera + análise) ---------- */
.ks-ov{position:fixed;inset:0;z-index:9990;background:var(--ks-dark);color:#fff;font-family:'Inter',sans-serif;overflow:hidden}

/* câmera */
.ks-stage{position:absolute;inset:0;overflow:hidden;background:#000}
#ks-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}
/* máscara com curvatura de rosto: recorte transparente + sombra gigante */
.ks-hole{position:absolute;top:50%;left:50%;width:min(76vw,350px);aspect-ratio:.78;transform:translate(-50%,-56%);
  border-radius:var(--ks-face-r);box-shadow:0 0 0 200vmax rgba(10,12,26,.72);pointer-events:none}
.ks-hole::after{content:"";position:absolute;inset:-3px;border-radius:var(--ks-face-r);border:2.5px dashed rgba(255,255,255,.65)}
.ks-hole .lbl{position:absolute;left:50%;bottom:-30px;transform:translateX(-50%);white-space:nowrap;
  font-size:11.5px;font-weight:700;letter-spacing:.3px;color:rgba(255,255,255,.9);text-shadow:0 1px 5px rgba(0,0,0,.7)}
.ks-top{position:relative;z-index:5;padding:calc(14px + env(safe-area-inset-top)) 16px 0;display:flex;flex-direction:column;gap:10px;
  max-width:480px;margin:0 auto}
.ks-topbar{display:flex;justify-content:space-between;align-items:center}
.ks-topbar .tt{font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:rgba(255,255,255,.85)}
.ks-pill{background:rgba(255,255,255,.14);border:none;color:#fff;font-family:'Inter',sans-serif;font-size:11px;font-weight:800;
  letter-spacing:1.2px;padding:8px 14px;border-radius:999px;cursor:pointer;backdrop-filter:blur(4px)}
.ks-checklist{background:rgba(20,22,42,.78);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.12);
  border-radius:14px;padding:11px 13px;display:flex;flex-direction:column;gap:8px}
.ks-ck{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.92)}
.ks-ck .st{flex:0 0 20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.16);transition:background .2s}
.ks-ck .st svg{width:11px;height:11px;display:none}
.ks-ck[data-ok="1"] .st{background:var(--green)}
.ks-ck[data-ok="1"] .st svg.ok{display:block}
.ks-ck[data-ok="0"] .st{background:var(--red)}
.ks-ck[data-ok="0"] .st svg.no{display:block}
.ks-ck .hint{margin-left:auto;font-size:10.5px;font-weight:700;color:rgba(255,255,255,.55)}
.ks-ck[data-ok="1"] .hint{color:#7FE0A6}
.ks-ck[data-ok="0"] .hint{color:#FF9B9B}
.ks-bottom{position:absolute;left:0;right:0;bottom:0;z-index:5;display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:0 16px calc(22px + env(safe-area-inset-bottom))}
.ks-msg{font-size:12px;font-weight:600;color:rgba(255,255,255,.75);text-align:center;min-height:16px;margin:0}
.ks-shutter{width:72px;height:72px;border-radius:50%;border:none;background:#fff;cursor:pointer;position:relative;
  box-shadow:0 6px 20px rgba(0,0,0,.4);transition:opacity .2s,transform .15s}
.ks-shutter::after{content:"";position:absolute;inset:5px;border-radius:50%;border:2.5px solid var(--ks-dark)}
.ks-shutter:disabled{opacity:.35;cursor:default}
.ks-shutter:not(:disabled):active{transform:scale(.92)}
/* fallback sem câmera */
.ks-fallback{position:absolute;inset:0;z-index:8;display:none;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;background:var(--ks-dark);padding:28px;text-align:center}
.ks-fallback.show{display:flex}
.ks-fallback p{font-size:13.5px;line-height:1.6;color:rgba(255,255,255,.85);max-width:300px;margin:0}
.ks-fallback .btn{max-width:300px}

/* análise */
.ks-ana{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 4vw}
.ks-wrap{position:relative;width:min(76vw,350px);aspect-ratio:.78;margin-bottom:26px}
.ks-photo{position:absolute;inset:0;border-radius:var(--ks-face-r);overflow:hidden;border:2.5px solid rgba(255,255,255,.35)}
.ks-photo img{width:100%;height:100%;object-fit:cover;display:block}
.ks-mesh{position:absolute;inset:0;border-radius:var(--ks-face-r);overflow:hidden;opacity:0;animation:ksMeshIn 1.4s ease .5s forwards;pointer-events:none}
@keyframes ksMeshIn{to{opacity:1}}
.ks-mesh svg{width:100%;height:100%}
.ks-sweep{position:absolute;inset:0;border-radius:var(--ks-face-r);overflow:hidden;pointer-events:none}
.ks-sweep::before{content:"";position:absolute;left:0;right:0;height:34%;top:-40%;
  background:linear-gradient(to bottom,rgba(142,159,229,0),rgba(142,159,229,.30),rgba(255,255,255,.14));
  animation:ksSweep 2.4s ease-in-out infinite}
@keyframes ksSweep{0%{top:-40%}55%{top:105%}100%{top:105%}}
/* alvos concêntricos que passeiam pelas zonas anatômicas:
   testa 22% · olhos 42% (±19% x) · bochechas 58% (±22% x) · boca 70% · queixo 82% */
.ks-probe{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;pointer-events:none;opacity:0}
.ks-probe i,.ks-probe i::before,.ks-probe i::after{content:"";position:absolute;border-radius:50%;border:1.5px solid rgba(255,255,255,.9)}
.ks-probe i{inset:0;animation:ksProbe 1.2s ease-in-out infinite}
.ks-probe i::before{inset:9px;border-color:rgba(142,159,229,.95)}
.ks-probe i::after{inset:18px;border-color:rgba(255,255,255,.85)}
@keyframes ksProbe{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.ks-probe.p1{animation:ksWalk1 6.5s ease-in-out .5s forwards}
.ks-probe.p2{animation:ksWalk2 6.5s ease-in-out .9s forwards}
.ks-probe.p3{animation:ksWalk3 6.5s ease-in-out 1.3s forwards}
@keyframes ksWalk1{0%{opacity:0;top:22%;left:50%}8%{opacity:1}30%{top:42%;left:31%}55%{top:58%;left:28%}80%{top:70%;left:50%}95%{opacity:1}100%{opacity:0;top:70%;left:50%}}
@keyframes ksWalk2{0%{opacity:0;top:42%;left:69%}8%{opacity:1}30%{top:58%;left:72%}55%{top:70%;left:50%}80%{top:82%;left:50%}95%{opacity:1}100%{opacity:0;top:82%;left:50%}}
@keyframes ksWalk3{0%{opacity:0;top:22%;left:50%}8%{opacity:1}35%{top:42%;left:50%}65%{top:58%;left:50%}85%{top:82%;left:50%}95%{opacity:1}100%{opacity:0;top:82%;left:50%}}
.ks-anamsg{font-size:15px;font-weight:700;text-align:center;min-height:22px;margin:0 0 16px}
.ks-bar{width:min(84vw,380px);height:6px;border-radius:3px;background:rgba(255,255,255,.14);overflow:hidden}
.ks-bar .fill{height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--blueberry-light),var(--gold));transition:width .5s ease}
.ks-pct{margin-top:9px;font-size:11px;font-weight:800;letter-spacing:1.5px;color:rgba(255,255,255,.6)}
/* viewports baixas (desktop/landscape): moldura menor pra caber msg+barra */
@media (max-height:600px){ .ks-wrap{width:min(76vw,270px)} .ks-hole{width:min(76vw,270px)} }
