/* static/shared/hb-face-capture.css — Face ID to'liq ekran suratga olish UX'i
   (oval + "svetofor" chegara + past-yorug'lik rejimi + 3s taymer).

   2026-08-14: staff/hrm_launcher/templates/hrm_launcher/profile.html'dagi
   `.hp-face-*` klasslaridan KO'CHIRILGAN (birinchi marta enrollment uchun
   yozilgan) — endi ULARNI hb-face-capture.js bilan birga profile.html
   (ro'yxatdan o'tish) VA attendance/templates/attendance/index.html
   (check-in/out tekshiruvi) IKKALASI ham ishlatadi (bitta komponent,
   ikki joyda chaqiriladi — loyihaning "build one component, reuse
   everywhere" konvensiyasi). Klasslar `.hp-face-*` dan `.hbfc-*` ga
   qayta nomlandi (umumiy modul — sahifaga xos prefiks noto'g'ri bo'lardi).

   Ranglar --hb-* tokenlaridan (hb-tokens.css, shell orqali HAR BIR sahifada
   global yuklanadi — hb_shell_base.html) — sahifaga xos --accent/--danger
   kabi eski o'zgaruvchilarga BOG'LIQ EMAS, shu bois attendance/index.html
   kabi "eski komponent + hb- qayta belgilash" reskin qatlamiga ega
   sahifalarda ham bir xil ishlaydi. */
.hbfc-full{position:fixed;inset:0;z-index:300;background:#000;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center}
.hbfc-full video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scaleX(-1)}
.hbfc-back{position:absolute;top:calc(env(safe-area-inset-top,0px) + 14px);left:14px;z-index:3;
  width:40px;height:40px;border-radius:999px;border:none;background:rgba(20,20,20,.55);
  color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.hbfc-back:hover{background:rgba(20,20,20,.8)}
/* [2026-08-14, oval/svetofor mos kelish tuzatishi] `width` endi bu yerda
   STATIK EMAS — hb-face-capture.js::updateOvalSize() video ekranda
   ko'ringan haqiqiy kengligidan va backend'dagi _QUALITY_FACE_MAX_RATIO
   bilan bir xil nisbatdan inline `style.width` sifatida hisoblab qo'yadi
   (shu bois "yuz ovalni to'ldiradi" va "backend good deydi" bitta narsa
   bo'ladi — qurilma/kamera o'lchamidan qat'iy nazar). `min(84vw,380px)`
   faqat JS ishlamay qolgan holat uchun ZAXIRA (masalan juda eski brauzer) —
   `max-width` esa JS hisoblagan qiymat g'ayrioddiy katta chiqib qolsa
   ekrandan toshib ketmasligi uchun xavfsizlik chegarasi.*/
.hbfc-oval{position:relative;z-index:1;width:min(84vw,380px);max-width:92vw;aspect-ratio:3/4;border-radius:50%;
  pointer-events:none;box-shadow:0 0 0 9999px rgba(0,0,0,.66);border:3.5px solid var(--hb-danger);
  transition:border-color .25s,box-shadow .25s,width .2s}
.hbfc-oval.st-yellow{border-color:var(--hb-warning)}
.hbfc-oval.st-green{border-color:var(--hb-ok);
  box-shadow:0 0 0 9999px rgba(0,0,0,.66),0 0 26px 4px color-mix(in srgb,var(--hb-ok) 55%,transparent)}
/* 3 soniyalik yashil-ushlab-turish progress halqasi. */
.hbfc-timerwrap{position:absolute;z-index:2;left:50%;bottom:20%;transform:translateX(-50%);
  opacity:0;transition:opacity .2s}
.hbfc-timer{width:36px;height:36px;border-radius:50%;
  background:conic-gradient(var(--hb-ok) calc(var(--pct,0)*1%),rgba(255,255,255,.28) 0)}
.hbfc-status{position:absolute;z-index:2;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 30px);
  text-align:center;color:#fff;font-size:14.5px;font-weight:600;padding:0 24px;
  text-shadow:0 1px 4px rgba(0,0,0,.6);transition:color .2s}
.hbfc-status.err{color:var(--hb-danger)}
/* "Ekran-chiroq" past yorug'lik rejimi — old kamerada flesh yo'q, xira joyda
   oval TASHQARISIDAGI maska qora o'rniga OQ (ekran o'zi yoritadi), matn/tugma
   teskari (qorong'i) rangga o'tadi. Fizik yorug'lik effekti — sahifa
   mavzusiga (dark/light) bog'liq EMAS, shu bois qattiq neytral ranglar. */
.hbfc-full.is-lowlight .hbfc-oval{box-shadow:0 0 0 9999px rgba(255,255,255,.97)}
.hbfc-full.is-lowlight .hbfc-back{background:rgba(255,255,255,.82);color:#161616}
.hbfc-full.is-lowlight .hbfc-back:hover{background:rgba(255,255,255,.96)}
.hbfc-full.is-lowlight .hbfc-status{color:#161616;text-shadow:none}
.hbfc-full.is-lowlight .hbfc-timer{background:conic-gradient(var(--hb-ok) calc(var(--pct,0)*1%),rgba(0,0,0,.18) 0)}
