
/* Self-hosted brand typefaces. Both are variable fonts, so a single woff2
   file per family covers the whole weight range we use -- no external
   Google Fonts CDN dependency (that @import was silently unreachable when
   this site is opened via file:// or from a network without CDN access). */
@font-face{font-family:'Plus Jakarta Sans'; src:url('../fonts/plus-jakarta-sans.woff2') format('woff2'); font-weight:400 800; font-style:normal; font-display:swap;}
@font-face{font-family:'Space Grotesk'; src:url('../fonts/space-grotesk.woff2') format('woff2'); font-weight:500 700; font-style:normal; font-display:swap;}

*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Plus Jakarta Sans', system-ui, sans-serif;
  background:#ffffff;
  color:#15131f;
  --ink:#15131f;
  --ink-soft:#55506e;
  --ink-faint:#8b85a6;
  --paper:#ffffff;
  --surface:#f7f5fc;
  --surface-2:#efeafa;
  --line:#e6e1f5;
  --violet:#9465ea;
  --violet-deep:#6d3fd6;
  --blue:#2db7f9;
  --indigo:#241f45;
  --indigo-2:#332a63;
  --good:#1f9d63;
}
h1,h2,h3,h4{font-family:'Space Grotesk', system-ui, sans-serif; margin:0; color:var(--ink); letter-spacing:-0.01em;}
a{color:inherit; text-decoration:none;}
img{max-width:100%;}
.eyebrow{display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; color:var(--violet-deep);}
.eyebrow::before{content:""; width:16px; height:2px; background:linear-gradient(90deg,var(--violet),var(--blue)); border-radius:2px;}
.nav-link{font-size:15px; font-weight:600; color:var(--ink-soft); padding:10px 4px; transition:color .15s ease;}
.nav-link:hover{color:var(--violet-deep);}
.nav-drop{position:relative;}
.nav-drop .nav-panel{display:none; position:absolute; top:100%; left:0; background:var(--paper); border:1px solid var(--line); border-radius:14px; box-shadow:0 20px 40px -12px rgba(36,31,69,0.18); padding:10px; min-width:240px; z-index:20;}
.nav-drop:hover .nav-panel{display:block;}
.nav-panel a{display:block; padding:10px 12px; border-radius:9px; font-size:14px; font-weight:600; color:var(--ink-soft);}
.nav-panel a:hover{background:var(--surface); color:var(--violet-deep);}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; font-family:'Plus Jakarta Sans',sans-serif; font-weight:700; font-size:15px; border-radius:12px; padding:14px 24px; border:none; cursor:pointer; transition:transform .15s ease, box-shadow .15s ease, opacity .15s ease;}
.btn-grad{background:linear-gradient(124deg,var(--violet) 0%, var(--blue) 100%); color:#fff; box-shadow:0 14px 28px -10px rgba(148,101,234,0.55);}
.btn-grad:hover{transform:translateY(-2px); box-shadow:0 18px 34px -8px rgba(45,183,249,0.5);}
.btn-dark{background:var(--indigo); color:#fff;}
.btn-dark:hover{background:var(--indigo-2); transform:translateY(-2px);}
.btn-outline{background:#fff; color:var(--ink); border:1.5px solid var(--line); padding:12.5px 22.5px;}
.btn-outline:hover{border-color:var(--violet); color:var(--violet-deep);}
.btn:disabled{opacity:0.6; cursor:not-allowed; transform:none !important;}
.chip{display:inline-flex; align-items:center; gap:8px; background:var(--surface-2); color:var(--violet-deep); border:1px solid #e3d6fb; padding:9px 16px 9px 12px; border-radius:999px; font-size:13px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; align-self:flex-start; width:fit-content;}
.card{background:var(--paper); border:1px solid var(--line); border-radius:18px;}
.icon-badge{width:44px; height:44px; border-radius:12px; background:var(--surface-2); color:var(--violet-deep); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.feat-check{display:flex; align-items:center; gap:8px; font-size:14px; font-weight:600; color:var(--ink-soft);}
.feat-check svg{color:var(--violet-deep); flex-shrink:0;}
.prod-card{padding:28px; transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease;}
.prod-card:hover{border-color:var(--violet); transform:translateY(-3px); box-shadow:0 20px 32px -18px rgba(148,101,234,0.45);}
.prod-link{font-size:14px; font-weight:700; color:var(--violet-deep); display:inline-flex; align-items:center; gap:6px;}
.prod-card:hover .prod-link{gap:9px;}
.bullet{display:flex; gap:12px; align-items:flex-start; font-size:15px; color:var(--ink-soft); line-height:1.55;}
.bullet svg{color:var(--violet-deep); flex-shrink:0; margin-top:2px;}
.stat-num{font-family:'Space Grotesk',sans-serif; font-size:40px; font-weight:700; background:linear-gradient(120deg,var(--violet),var(--blue)); -webkit-background-clip:text; background-clip:text; color:transparent;}
details.faq{border-bottom:1px solid var(--line); padding:22px 4px;}
details.faq summary{list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; font-weight:700; font-size:16.5px; color:var(--ink);}
details.faq summary::-webkit-details-marker{display:none;}
details.faq summary .chev{transition:transform .2s ease; color:var(--violet-deep); flex-shrink:0;}
details.faq[open] summary .chev{transform:rotate(180deg);}
details.faq p{margin:14px 0 0 0; color:var(--ink-soft); font-size:15px; line-height:1.65; max-width:820px;}
.industry-card{padding:26px; transition:transform .15s ease, box-shadow .15s ease;}
.industry-card:hover{transform:translateY(-3px); box-shadow:0 20px 32px -18px rgba(36,31,69,0.18);}
.footer-link{display:block; font-size:14.5px; color:#b9b3d6; padding:6px 0; transition:color .15s ease;}
.footer-link:hover{color:#fff;}
.mock-row{display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-bottom:1px solid rgba(255,255,255,0.08); font-size:13.5px;}
.tag-ok{color:#22c98d; font-weight:700;}
.tag-warn{color:#ff8a65; font-weight:700;}
.step-num{width:36px; height:36px; border-radius:50%; background:linear-gradient(124deg,var(--violet),var(--blue)); color:#fff; font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:15px; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.checklist-row{display:flex; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); font-size:14px;}
.checklist-row:last-child{border-bottom:none;}
.field label{display:block; font-size:13px; font-weight:700; color:var(--ink-soft); margin-bottom:6px;}
.field input, .field select, .field textarea{width:100%; box-sizing:border-box; border:1.5px solid var(--line); border-radius:10px; padding:12px 14px; font-family:'Plus Jakarta Sans',sans-serif; font-size:14.5px; color:var(--ink); background:#fff;}
.field input:focus, .field select:focus, .field textarea:focus{outline:none; border-color:var(--violet);}
.legal h2{font-size:22px; margin-top:44px;}
.legal h2:first-of-type{margin-top:0;}
.legal p, .legal li{color:var(--ink-soft); font-size:15px; line-height:1.7;}
.legal ul{padding-left:22px; margin:10px 0;}
.legal li{margin:4px 0;}
.form-error{display:none; color:#c23b2f; background:rgba(255,95,86,0.1); border:1px solid rgba(255,95,86,0.3); border-radius:10px; padding:10px 14px; font-size:13.5px; font-weight:600; margin-top:14px;}
.form-error.show{display:block;}
@media (max-width: 900px){
  header nav{display:none !important;}
  section > div{grid-template-columns:1fr !important;}
}

/* ---- biometric-scan photo overlay animation (hero/result photo cards) ---- */
@keyframes fpScanSweep{0%{top:-6%;}100%{top:106%;}}
@keyframes fpBadgePulse{0%,100%{transform:scale(1);}50%{transform:scale(1.06);}}
@keyframes fpDotPulse{0%{transform:scale(0.55);opacity:0.25;}30%{transform:scale(1.1);opacity:1;}50%{transform:scale(1.4);opacity:0.95;}75%{transform:translateY(-3px) scale(1.15);opacity:0.8;}100%{transform:scale(0.55);opacity:0.25;}}
@keyframes fpRipple{0%{transform:scale(0.2);opacity:1;}100%{transform:scale(2.6);opacity:0;}}
.fp-scan-overlay{position:absolute; inset:0; pointer-events:none; border-radius:inherit; overflow:hidden;}
.fp-corner{position:absolute; width:26px; height:26px; border:3px solid rgba(148,101,234,0.85);}
.fp-corner.tl{top:12px; left:12px; border-right:none; border-bottom:none; border-radius:6px 0 0 0;}
.fp-corner.tr{top:12px; right:12px; border-left:none; border-bottom:none; border-radius:0 6px 0 0;}
.fp-corner.bl{bottom:12px; left:12px; border-right:none; border-top:none; border-radius:0 0 0 6px;}
.fp-corner.br{bottom:12px; right:12px; border-left:none; border-top:none; border-radius:0 0 6px 0;}
.fp-grid{position:absolute; top:26%; left:26%; width:48%; height:48%; border:1px solid rgba(148,101,234,0.3);}
.fp-grid::before, .fp-grid::after{content:""; position:absolute; background:rgba(148,101,234,0.28);}
.fp-grid::before{width:100%; height:1px; top:50%;}
.fp-grid::after{width:1px; height:100%; left:50%;}
.fp-scan-line{position:absolute; left:6%; right:6%; height:2px; background:linear-gradient(90deg,transparent,var(--violet),var(--blue),transparent); box-shadow:0 0 16px rgba(148,101,234,0.65); animation:fpScanSweep 2.6s ease-in-out infinite;}
.fp-dot{position:absolute; width:10px; height:10px; border-radius:50%; background:rgba(148,101,234,0.5); border:2px solid rgba(148,101,234,0.9); box-shadow:0 0 10px rgba(148,101,234,0.6); animation:fpDotPulse 2.2s ease-in-out infinite;}
.fp-dot span{position:absolute; inset:-7px; border:1px solid rgba(148,101,234,0.5); border-radius:50%; animation:fpRipple 2.2s linear infinite;}
.fp-badge-pulse{animation:fpBadgePulse 1.8s ease infinite;}

/* ---- face-recognition 1:1 / 1:N dark result card (match_thumb_panel) ---- */
.fp-rec-card{position:relative; width:100%; max-width:480px; background:var(--indigo); border-radius:20px; padding:26px; box-shadow:0 30px 60px -24px rgba(36,31,69,0.4);}
.fp-rec-card input[type="radio"]{position:absolute; width:1px; height:1px; opacity:0; pointer-events:none;}
.fp-rec-heading{display:flex; align-items:center; gap:10px; margin-bottom:18px; color:#8f89b3; font-size:11.5px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;}
.fp-rec-heading-icon{width:26px; height:26px; flex:0 0 26px; display:flex; align-items:center; justify-content:center; color:#b49bf2; background:rgba(148,101,234,0.18); border-radius:50%;}
.fp-rec-heading-icon svg{width:15px; height:15px; display:block; stroke:currentColor;}
.fp-rec-tabs{display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:16px; padding:5px; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.08); border-radius:11px;}
.fp-rec-tab{padding:10px 8px; color:#8f89b3; font-size:12px; font-weight:700; line-height:1.2; text-align:center; cursor:pointer; border-radius:8px; transition:0.25s;}
.fp-rec-tab:hover{color:#fff; background:rgba(148,101,234,0.12);}
#fp-rec-verify:checked ~ .fp-rec-tabs label[for="fp-rec-verify"],
#fp-rec-gallery:checked ~ .fp-rec-tabs label[for="fp-rec-gallery"]{color:#fff; background:linear-gradient(124deg,var(--violet),var(--blue)); box-shadow:0 7px 18px -6px rgba(148,101,234,0.5);}
.fp-rec-content{display:grid;}
.fp-rec-panel{grid-area:1/1; visibility:hidden; opacity:0; pointer-events:none;}
#fp-rec-verify:checked ~ .fp-rec-content .fp-rec-verify-panel,
#fp-rec-gallery:checked ~ .fp-rec-content .fp-rec-gallery-panel{visibility:visible; opacity:1; pointer-events:auto;}
.fp-face-comparison{display:grid; grid-template-columns:minmax(0,1fr) 50px minmax(0,1fr); align-items:center; gap:9px; margin-bottom:16px;}
.fp-face-box{position:relative; aspect-ratio:199/160; min-width:0; overflow:hidden; border-radius:12px; border:1px solid rgba(148,101,234,0.35);}
.fp-face-box img{width:100%; height:100%; display:block; object-fit:cover; object-position:center top;}
.fp-face-label{position:absolute; z-index:3; left:8px; bottom:8px; padding:5px 9px; color:#fff; font-size:9.5px; font-weight:700; white-space:nowrap; background:rgba(15,20,40,0.82); border:1px solid rgba(148,101,234,0.5); border-radius:20px; backdrop-filter:blur(6px);}
.fp-live-label{border-color:rgba(95,227,168,0.55);}
.fp-live-label::before{content:""; width:6px; height:6px; display:inline-block; margin-right:5px; background:#5fe3a8; border-radius:50%; box-shadow:0 0 8px rgba(95,227,168,0.9);}
.fp-match-connector{position:relative; height:2px; background:linear-gradient(90deg,var(--violet),var(--blue),var(--violet)); box-shadow:0 0 12px rgba(148,101,234,0.6);}
.fp-match-connector::before, .fp-match-connector::after{content:""; position:absolute; top:50%; width:7px; height:7px; background:var(--blue); border-radius:50%; transform:translateY(-50%); box-shadow:0 0 9px rgba(80,150,240,0.9);}
.fp-match-connector::before{left:0;}
.fp-match-connector::after{right:0;}
.fp-match-percentage{position:absolute; z-index:3; top:50%; left:50%; width:44px; height:44px; display:flex; align-items:center; justify-content:center; color:#c7b8fb; font-size:10.5px; font-weight:700; background:var(--indigo); border:1px solid var(--violet); border-radius:50%; transform:translate(-50%,-50%); box-shadow:0 0 0 4px rgba(148,101,234,0.1), 0 0 18px rgba(148,101,234,0.45);}
.fp-rec-results{overflow:hidden; background:rgba(255,255,255,0.03); border:1px solid rgba(255,255,255,0.08); border-radius:11px; margin-bottom:16px;}
.fp-rec-row{min-height:40px; padding:8px 12px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,0.08);}
.fp-rec-row:last-child{border-bottom:0;}
.fp-rec-row-icon{width:24px; height:24px; flex:0 0 24px; display:flex; align-items:center; justify-content:center; color:#b49bf2;}
.fp-rec-row-icon svg{width:16px; height:16px; display:block; stroke:currentColor;}
.fp-rec-row-label{min-width:0; flex:1; color:#d8d4ee; font-size:12px; line-height:1.3;}
.fp-rec-row-value{flex-shrink:0; font-size:13px; font-weight:700; text-align:right;}
.fp-rec-success{min-height:66px; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; background:rgba(31,157,99,0.14); border:1px solid rgba(31,157,99,0.35); border-radius:14px;}
.fp-rec-success-left{display:flex; align-items:center; gap:12px; min-width:0;}
.fp-rec-success-icon{width:30px; height:30px; flex:0 0 30px; border-radius:50%; background:rgba(31,157,99,0.22); color:#5fe3a8; display:flex; align-items:center; justify-content:center;}
.fp-rec-success-text strong{display:block; color:#5fe3a8; font-size:13.5px; margin-bottom:2px;}
.fp-rec-success-text span{display:block; color:#9be8c4; font-size:12px;}
.fp-rec-onprem{display:flex; align-items:center; gap:6px; color:#8f89b3; font-size:11.5px; font-weight:600; white-space:nowrap;}
.fp-gallery-layout{display:grid; grid-template-columns:34% 66%; gap:11px; margin-bottom:16px;}
.fp-query-face{position:relative; height:190px; overflow:hidden; border-radius:12px; border:1px solid rgba(148,101,234,0.35);}
.fp-query-face img{width:100%; height:100%; display:block; object-fit:cover;}
.fp-query-label{position:absolute; z-index:3; left:6px; bottom:6px; padding:5px 8px; color:#fff; font-size:8.5px; font-weight:700; background:rgba(15,20,40,0.82); border:1px solid rgba(148,101,234,0.5); border-radius:20px;}
.fp-candidates{min-width:0; padding:10px; background:rgba(255,255,255,0.03); border:1px solid rgba(255,255,255,0.08); border-radius:11px;}
.fp-candidates-title{margin-bottom:9px; color:#8f89b3; font-size:9.5px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;}
.fp-candidate-list{display:flex; flex-direction:column; gap:7px;}
.fp-candidate{display:grid; grid-template-columns:40px minmax(0,1fr) auto; align-items:center; gap:8px; padding:7px; background:rgba(255,255,255,0.02); border:1px solid rgba(255,255,255,0.07); border-radius:8px;}
.fp-candidate.fp-top-match{background:rgba(31,157,99,0.1); border-color:rgba(31,157,99,0.5); box-shadow:inset 3px 0 0 #5fe3a8;}
.fp-candidate-info strong{display:block; margin-bottom:2px; color:#e9e6f7; font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.fp-candidate-info span{display:block; color:#8f89b3; font-size:9px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.fp-candidate-score{color:#8f89b3; font-size:11px; font-weight:700;}
.fp-top-match .fp-candidate-score{color:#5fe3a8;}

/* ---- deepfake analysis dark result card (deepfake_mockrow_panel) ---- */
.df-card2{width:100%; background:var(--indigo); border-radius:20px; padding:26px; box-shadow:0 30px 60px -24px rgba(36,31,69,0.4);}
.df-card2-header{display:flex; align-items:center; gap:10px; margin-bottom:18px; color:#8f89b3; font-size:11.5px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;}
.df-card2-header-icon{width:26px; height:26px; flex:0 0 26px; display:flex; align-items:center; justify-content:center; color:#b49bf2; background:rgba(148,101,234,0.18); border-radius:50%;}
.df-card2-header-icon svg{width:15px; height:15px; display:block; stroke:currentColor;}
.df-card2-main{display:grid; grid-template-columns:minmax(0,148px) minmax(0,1fr); gap:12px; margin-bottom:16px;}
.df-face-preview{position:relative; min-width:0; height:172px; overflow:hidden; border-radius:12px; border:1px solid rgba(148,101,234,0.35);}
.df-face-preview img{width:100%; height:100%; display:block; object-fit:cover; object-position:center top;}
.df-card2-results{min-width:0; overflow:hidden; background:rgba(255,255,255,0.03); border:1px solid rgba(255,255,255,0.08); border-radius:11px;}
.df-card2-warning{margin-top:16px; min-height:60px; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; background:rgba(255,95,86,0.12); border:1px solid rgba(255,95,86,0.32); border-radius:14px;}
.df-card2-warning-left{display:flex; align-items:center; gap:12px; min-width:0;}
.df-card2-warning-icon{width:30px; height:30px; flex:0 0 30px; border-radius:50%; background:rgba(255,95,86,0.18); color:#ff8a75; display:flex; align-items:center; justify-content:center;}
.df-card2-warning-text strong{display:block; color:#ff8a75; font-size:13.5px; margin-bottom:2px;}
.df-card2-warning-text span{display:block; color:#ffb4ad; font-size:12px;}
.df-card2-onprem{display:flex; align-items:center; gap:6px; color:#8f89b3; font-size:11.5px; font-weight:600; white-space:nowrap;}

/* ---- homepage compact deepfake code-panel card (fp_deepfake_card) ---- */
.fp-deepfake-card{width:100%; max-width:576px; margin:0 auto; padding:17px; background:radial-gradient(circle at 85% 15%, rgba(148,101,234,0.14), transparent 38%), linear-gradient(145deg,var(--indigo) 0%, #0d0a20 100%); border:1px solid rgba(148,101,234,0.28); border-radius:16px; box-shadow:0 18px 45px -14px rgba(13,10,37,0.45); box-sizing:border-box;}
.fp-deepfake-heading{display:flex; align-items:center; gap:9px; margin-bottom:16px; color:#c8c5da; font-size:11px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;}
.fp-deepfake-logo{position:relative; width:25px; height:25px; flex:0 0 25px; display:flex; align-items:center; justify-content:center; color:#b49bf2; background:rgba(148,101,234,0.14); border:2px solid var(--violet); border-radius:50%; font-size:13px; font-weight:800;}
.fp-deepfake-main{display:grid; grid-template-columns:minmax(0,150px) minmax(0,1fr); gap:11px; margin-bottom:12px;}
.fp-deepfake-preview{position:relative; min-width:0; height:174px; overflow:hidden; background:#15132a; border:1px solid rgba(148,101,234,0.3); border-radius:11px;}
.fp-deepfake-preview img{width:100%; height:100%; display:block; object-fit:cover; object-position:center top;}
.fp-deepfake-results{min-width:0; overflow:hidden; border:1px solid rgba(148,101,234,0.2); border-radius:11px; background:rgba(255,255,255,0.015);}
.fp-analysis-row{min-height:43px; padding:8px 12px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,0.08);}
.fp-analysis-row:last-child{border-bottom:0;}
.fp-analysis-icon{width:24px; height:24px; flex:0 0 24px; display:flex; align-items:center; justify-content:center; color:#b49bf2;}
.fp-analysis-icon svg{width:16px; height:16px; display:block; stroke:currentColor;}
.fp-analysis-label{min-width:0; flex:1; color:#d8d4ee; font-size:12px; line-height:1.3;}
.fp-analysis-value{flex-shrink:0; color:#c7b8fb; font-size:13px; font-weight:700; text-align:right;}
.fp-analysis-value.fp-failed{color:#ff8a75;}
.fp-deepfake-status{margin-top:0; min-height:66px; padding:11px 14px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; background:rgba(255,95,86,0.12); border:1px solid rgba(255,95,86,0.32); border-radius:11px;}
.fp-status-text strong{display:block; color:#ff8a75; font-size:13.5px; margin-bottom:2px;}
.fp-status-text span{display:block; color:#ffb4ad; font-size:12px;}
.fp-alert-icon{width:30px; height:30px; flex:0 0 30px; border-radius:50%; background:rgba(255,95,86,0.18); color:#ff8a75; display:flex; align-items:center; justify-content:center;}
.fp-lock-icon{width:28px; height:28px; flex:0 0 28px; color:#8f89b3; display:flex; align-items:center; justify-content:center;}

/* ---- deepfake hero white card (deepfake_hero_card) ---- */
.df-hero-card{width:100%; max-width:390px; background:#fff; border-radius:22px; padding:18px; box-shadow:0 15px 40px rgba(0,0,0,.08);}
.df-hero-header{display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; gap:10px;}
.df-hero-title{font-size:20px; font-weight:800; color:var(--ink); line-height:1.2;}
.df-hero-tag{background:rgba(148,101,234,0.12); color:var(--violet-deep); padding:7px 14px; border-radius:30px; font-size:11px; font-weight:700; white-space:nowrap;}
.df-hero-result{display:flex; align-items:center; gap:15px; margin-bottom:20px;}
.df-hero-photo{width:85px; height:105px; border-radius:15px; overflow:hidden; position:relative; flex-shrink:0; box-shadow:0 0 0 3px rgba(148,101,234,0.15);}
.df-hero-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.df-hero-label{position:absolute; top:8px; left:8px; background:var(--violet-deep); color:#fff; font-size:10px; font-weight:700; padding:4px 8px; border-radius:20px;}
.df-hero-scan{position:absolute; left:0; width:100%; height:3px; background:var(--violet); box-shadow:0 0 12px var(--violet); animation:dfHeroScan 2.2s linear infinite;}
@keyframes dfHeroScan{0%{top:0;}100%{top:100%;}}
.df-hero-info h2{font-size:28px; font-weight:800; color:var(--violet-deep); line-height:1.1; margin:0 0 6px;}
.df-hero-info p{font-size:14px; color:var(--ink-soft); line-height:1.4; margin:0;}
.df-hero-item{margin-bottom:16px;}
.df-hero-row{display:flex; justify-content:space-between; font-size:13px; font-weight:600; margin-bottom:7px; color:var(--ink-soft);}
.df-hero-progress{width:100%; height:7px; background:var(--surface-2); border-radius:30px; overflow:hidden;}
.df-hero-fill{height:100%; border-radius:30px; background:linear-gradient(90deg,var(--violet),var(--violet-deep));}
.df-hero-warning{margin-top:20px; background:#f8f0ff; border:1px solid rgba(148,101,234,0.25); border-radius:14px; padding:13px; text-align:center; font-size:14px; font-weight:700; color:var(--violet-deep);}

/* ---- liveness passive/active dark tabbed result card (dark_result_tabs_panel) ---- */
.fplv-card{position:relative; width:100%; max-width:480px; background:var(--indigo); border-radius:20px; padding:26px; box-shadow:0 30px 60px -24px rgba(36,31,69,0.4);}
.fplv-card input[type="radio"]{position:absolute; width:1px; height:1px; opacity:0; pointer-events:none;}
.fplv-heading{display:flex; align-items:center; gap:10px; margin-bottom:18px; color:#8f89b3; font-size:11.5px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;}
.fplv-heading-icon{width:26px; height:26px; flex:0 0 26px; display:flex; align-items:center; justify-content:center; color:#b49bf2; background:rgba(148,101,234,0.18); border-radius:50%;}
.fplv-heading-icon svg{width:15px; height:15px; display:block; stroke:currentColor;}
.fplv-tabs{display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:16px; padding:5px; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.08); border-radius:11px;}
.fplv-tab{padding:10px 8px; color:#8f89b3; font-size:12px; font-weight:700; line-height:1.2; text-align:center; cursor:pointer; border-radius:8px; transition:0.25s;}
.fplv-tab:hover{color:#fff; background:rgba(148,101,234,0.12);}
#fplv-passive:checked ~ .fplv-tabs label[for="fplv-passive"]{color:#fff; background:linear-gradient(124deg,var(--blue),#26c3c7); box-shadow:0 7px 18px -6px rgba(38,195,199,0.45);}
#fplv-active:checked ~ .fplv-tabs label[for="fplv-active"]{color:#fff; background:linear-gradient(124deg,var(--violet-deep),var(--violet)); box-shadow:0 7px 18px -6px rgba(148,101,234,0.5);}
.fplv-content{display:grid;}
.fplv-panel{grid-area:1/1; visibility:hidden; opacity:0; pointer-events:none;}
#fplv-passive:checked ~ .fplv-content .fplv-passive-panel,
#fplv-active:checked ~ .fplv-content .fplv-active-panel{visibility:visible; opacity:1; pointer-events:auto;}
.fplv-main{display:flex; gap:16px; margin-bottom:16px;}
.fplv-results{flex:1; min-width:0; overflow:hidden; background:rgba(255,255,255,0.03); border:1px solid rgba(255,255,255,0.08); border-radius:11px;}
.fplv-row{min-height:40px; padding:8px 12px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,0.08);}
.fplv-row:last-child{border-bottom:0;}
.fplv-row-icon{width:24px; height:24px; flex:0 0 24px; display:flex; align-items:center; justify-content:center; color:#b49bf2;}
.fplv-row-icon svg{width:16px; height:16px; display:block; stroke:currentColor;}
.fplv-row-label{min-width:0; flex:1; color:#d8d4ee; font-size:12px; line-height:1.3;}
.fplv-row-value{flex-shrink:0; font-size:13px; font-weight:700; text-align:right;}
.fplv-progress-top{display:flex; justify-content:space-between; gap:10px; margin-bottom:8px; font-size:11px;}
.fplv-progress-track{width:100%; height:6px; overflow:hidden; background:rgba(255,255,255,0.1); border-radius:20px;}
.fplv-progress-fill{height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--violet-deep),var(--violet)); box-shadow:0 0 12px rgba(148,101,234,0.5);}
.fplv-status{min-height:66px; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; background:rgba(31,157,99,0.14); border:1px solid rgba(31,157,99,0.35); border-radius:14px;}
.fplv-status.active-tone{background:rgba(148,101,234,0.14); border-color:rgba(148,101,234,0.4);}
.fplv-status-left{display:flex; align-items:center; gap:12px; min-width:0;}
.fplv-status-icon{width:30px; height:30px; flex:0 0 30px; border-radius:50%; background:rgba(31,157,99,0.22); color:#5fe3a8; display:flex; align-items:center; justify-content:center;}
.fplv-status.active-tone .fplv-status-icon{background:rgba(148,101,234,0.22); color:#c7b8fb;}
.fplv-status-text strong{display:block; font-size:13.5px; margin-bottom:2px; color:#5fe3a8;}
.fplv-status.active-tone .fplv-status-text strong{color:#c7b8fb;}
.fplv-status-text span{display:block; color:#9be8c4; font-size:12px;}
.fplv-status.active-tone .fplv-status-text span{color:#d8cff5;}
.fplv-onprem{display:flex; align-items:center; gap:6px; color:#8f89b3; font-size:11.5px; font-weight:600; white-space:nowrap;}

/* ---- smartphone device-mockup visual (phone_scan_visual) ---- */
.fpph-wrap{display:flex; justify-content:center; padding:20px;}
.fpph-phone{width:460px; height:552px; flex-shrink:0; background:#0f172a; border:9px solid #C758FF; border-radius:39px; position:relative; overflow:hidden; box-shadow:0 20px 45px -10px rgba(0,0,0,0.35);}
.fpph-phone::before{content:""; position:absolute; top:14px; left:50%; transform:translateX(-50%); width:101px; height:20px; background:#111; border-radius:20px; z-index:20;}
.fpph-screen{position:absolute; inset:0; padding:28px 18px; display:flex; flex-direction:column; align-items:center; justify-content:center; background:linear-gradient(180deg,#0b1023,#111827);}
.fpph-facebox{width:90%; height:350px; border-radius:22px; overflow:hidden; position:relative; border:2px solid rgba(255,255,255,0.08); box-shadow:0 0 18px rgba(0,229,255,0.12);}
.fpph-facebox img{width:100%; height:100%; object-fit:cover; display:block;}
.fpph-overlay{position:absolute; inset:0; pointer-events:none;}
.fpph-corner{position:absolute; width:37px; height:37px; border:4px solid #C758FF;}
.fpph-corner.tl{top:14px; left:14px; border-right:none; border-bottom:none; border-radius:11px 0 0 0;}
.fpph-corner.tr{top:14px; right:14px; border-left:none; border-bottom:none; border-radius:0 11px 0 0;}
.fpph-corner.bl{bottom:14px; left:14px; border-right:none; border-top:none; border-radius:0 0 0 11px;}
.fpph-corner.br{bottom:14px; right:14px; border-left:none; border-top:none; border-radius:0 0 11px 0;}
.fpph-scan{position:absolute; left:0; width:100%; height:4px; background:linear-gradient(90deg,transparent,#00e5ff,#00e5ff,transparent); box-shadow:0 0 16px #00e5ff; animation:fpphScan 2.4s linear infinite;}
@keyframes fpphScan{0%{top:0;}100%{top:100%;}}
.fpph-status{margin-top:26px; display:flex; align-items:center; gap:9px; color:#fff; font-size:16.5px; font-weight:700;}
.fpph-status svg{color:var(--good); flex-shrink:0;}
.fpph-badge{margin-top:14px; background:var(--good); color:#fff; padding:8px 18px; border-radius:30px; font-weight:700; font-size:13.5px; letter-spacing:0.3px; box-shadow:0 8px 18px -6px rgba(31,157,99,0.5); animation:fpBadgePulse 1.8s ease infinite;}

/* passport-card: matches the real faceplugin.com document mockup exactly */
.passport-card{width:100%; max-width:520px; background:#fff; border-radius:18px; padding:14px; box-shadow:0 8px 25px rgba(0,0,0,0.08); font-family:Arial,sans-serif; border:1px solid #e5e7eb; margin:auto; box-sizing:border-box;}
.passport-header{background:#15203b; color:#fff; padding:10px 14px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; font-size:12px; font-weight:700;}
.passport-body{display:flex; gap:12px; background:#f5f7fb; padding:12px; align-items:flex-start;}
.passport-body img{width:70px; height:85px; object-fit:cover; border-radius:8px; flex-shrink:0;}
.passport-info{flex:1;}
.passport-info small{display:block; color:#8b95a7; font-size:9px; margin-top:4px; letter-spacing:0.5px;}
.passport-info h4{margin:1px 0; font-size:13px; color:#111827; line-height:1.2;}
.mrz{font-size:8px; color:#6b7280; padding:10px; border-top:1px dashed #ddd; line-height:1.4; overflow-wrap:anywhere;}
.status{padding:6px 10px;}
.status div{display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid #eee; color:#4b5563; font-size:13px;}
.status div span:last-child{color:#10b981; font-weight:700; font-size:16px;}
.verify-btn{margin-top:10px; background:#10b981; color:#fff; text-align:center; padding:12px; border-radius:10px; font-size:15px; font-weight:700;}


/* cta-box: small dark rounded CTA card used near the bottom of every Product page, matches real faceplugin.com */
.cta-box{background:var(--indigo); border-radius:18px; box-shadow:0 0 0 1px rgba(148,101,234,0.45), 0 20px 50px -12px rgba(13,10,37,0.35); padding:44px 40px; text-align:center;}
.cta-box-title{font-size:30px; font-weight:600; color:#fff; margin:0;}
.cta-box-desc{margin-top:14px; color:#f6f8fc; font-size:16.5px; line-height:1.65; max-width:560px; margin-left:auto; margin-right:auto;}
.cta-box-btn{display:inline-block; background-image:linear-gradient(124deg,var(--violet) 0%, var(--blue) 100%); color:#fff; font-weight:600; font-size:15px; padding:13px 26px; border-radius:15px;}
.cta-box-btn-ghost{display:inline-block; background:rgba(255,255,255,0.08); color:#fff; font-weight:600; font-size:15px; padding:13px 26px; border-radius:15px; border:1.5px solid rgba(255,255,255,0.25);}

/* identity-card: light checklist card, matches real faceplugin.com exactly (SDK Suite hero, eKYC 'Built for Regulated Onboarding') */
.identity-card{width:100%; max-width:480px; margin:auto; background:#fff; border-radius:24px; padding:20px; box-shadow:0 10px 30px rgba(0,0,0,0.08); border:1px solid #ececec; box-sizing:border-box;}
.identity-card .verify-item{display:flex; align-items:center; gap:12px; padding:12px 0; position:relative;}
.identity-card .verify-item:not(:last-of-type)::after{content:""; position:absolute; left:22px; top:58px; width:2px; height:32px; background:#e5e7eb;}
.identity-card .icon{width:44px; height:44px; flex-shrink:0; display:flex; align-items:center; justify-content:center; background:var(--surface-2); color:var(--violet-deep); border-radius:12px;}
.identity-card .icon svg{width:22px; height:22px;}
.identity-card .content{flex:1; min-width:0;}
.identity-card .content h4{font-size:18px; font-weight:700; color:#111827; margin:0;}
.identity-card .content p{margin:2px 0 0; font-size:13px; color:#6b7280;}
.identity-card .check{width:28px; height:28px; flex-shrink:0; display:flex; align-items:center; justify-content:center; background:#22c55e; color:#fff; border-radius:50%; font-size:14px; font-weight:700;}
.identity-card .verified-btn{width:100%; margin-top:18px; border:none; background-image:linear-gradient(124deg,var(--violet) 0%, var(--blue) 100%); color:#fff; border-radius:14px; padding:16px; font-size:18px; font-weight:700; cursor:pointer; transition:0.3s;}
.identity-card .verified-btn:hover{opacity:0.9;}

/* fpekyc-card: dark document-to-selfie eKYC flow card, matches real faceplugin.com exactly */
.fpekyc-card,.fpekyc-card *{box-sizing:border-box;}
.fpekyc-card{width:100%; max-width:600px; margin:0 auto; padding:18px; overflow:hidden; color:#fff; font-family:Arial,Helvetica,sans-serif; background:radial-gradient(circle at 88% 8%, rgba(64,105,255,0.18), transparent 38%), linear-gradient(145deg,#0c1329 0%,#070b1c 100%); border:1px solid rgba(91,126,255,0.27); border-radius:12px; box-shadow:0 20px 50px rgba(4,9,30,0.22);}
.fpekyc-header{display:flex; align-items:center; gap:10px; margin-bottom:16px; color:#cbd4e8; font-size:11px; font-weight:700; letter-spacing:1.4px; text-transform:uppercase;}
.fpekyc-header-icon{width:30px; height:30px; flex:0 0 30px; display:flex; align-items:center; justify-content:center; color:#7197ff; background:rgba(113,151,255,0.08); border:1px solid rgba(113,151,255,0.5); border-radius:50%;}
.fpekyc-header-icon svg{width:18px; height:18px; display:block; stroke:currentColor;}
.fpekyc-visual{display:grid; grid-template-columns:minmax(0,1.6fr) 48px minmax(0,1fr); align-items:center; gap:9px; margin-bottom:13px;}
.fpekyc-passport{position:relative; min-width:0; height:205px; overflow:hidden; color:#16223a; background:#f1f5fa; border:1px solid rgba(89,174,255,0.42); border-radius:9px;}
.fpekyc-passport-head{padding:8px 9px; display:flex; align-items:center; justify-content:space-between; color:#fff; font-size:7px; font-weight:700; letter-spacing:0.7px; background:linear-gradient(135deg,#183864,#205b86);}
.fpekyc-passport-body{padding:9px; display:grid; grid-template-columns:66px minmax(0,1fr); gap:8px;}
.fpekyc-passport-photo{position:relative; width:66px; height:83px; overflow:hidden; background:#dce5ee; border:1px solid #b8c5d3; border-radius:5px;}
.fpekyc-passport-photo img{width:100%; height:100%; display:block; object-fit:cover; object-position:center top;}
.fpekyc-passport-scan{position:absolute; left:0; top:30%; width:100%; height:2px; background:linear-gradient(90deg,transparent,#32d4a5,#fff,#32d4a5,transparent); box-shadow:0 0 8px rgba(50,212,165,0.85); animation:fpekycPassportScan 4s ease-in-out infinite;}
.fpekyc-passport-fields{min-width:0;}
.fpekyc-passport-field{margin-bottom:4px;}
.fpekyc-passport-field small{display:block; margin-bottom:1px; color:#7e8ca0; font-size:5.8px; font-weight:700; letter-spacing:0.4px;}
.fpekyc-passport-field strong{display:block; overflow:hidden; color:#17243a; font-size:8px; line-height:1.15; text-overflow:ellipsis; white-space:nowrap;}
.fpekyc-mrz{padding:8px 9px; color:#34445a; font-family:"Courier New",monospace; font-size:5.8px; font-weight:700; line-height:1.45; background:#e5ebf2; border-top:1px dashed #abb8c7; overflow-wrap:anywhere;}
.fpekyc-document-badge{position:absolute; right:8px; bottom:8px; z-index:3; display:flex; align-items:center; gap:5px; padding:5px 7px; color:#e9fff8; font-size:7px; font-weight:700; background:rgba(10,85,67,0.9); border:1px solid rgba(55,221,177,0.55); border-radius:20px;}
.fpekyc-document-badge::before{content:"\2713"; font-size:8px;}
.fpekyc-connector{position:relative; height:2px; background:linear-gradient(90deg,#3d92ff,#61e4ff,#3d92ff); box-shadow:0 0 11px rgba(70,188,255,0.7);}
.fpekyc-connector::before,.fpekyc-connector::after{content:""; position:absolute; top:50%; width:7px; height:7px; background:#62e6ff; border-radius:50%; transform:translateY(-50%); box-shadow:0 0 8px rgba(98,230,255,0.9);}
.fpekyc-connector::before{left:0;}
.fpekyc-connector::after{right:0;}
.fpekyc-match-score{position:absolute; z-index:3; top:50%; left:50%; width:43px; height:43px; display:flex; align-items:center; justify-content:center; color:#73e9ff; font-size:10px; font-weight:700; background:#0b1830; border:1px solid #44c9ff; border-radius:50%; transform:translate(-50%,-50%); box-shadow:0 0 0 4px rgba(62,183,255,0.08), 0 0 17px rgba(62,183,255,0.4);}
.fpekyc-selfie{position:relative; min-width:0; height:205px; overflow:hidden; background:#11172e; border:1px solid rgba(84,143,255,0.32); border-radius:9px;}
.fpekyc-selfie img{width:100%; height:100%; display:block; object-fit:cover; object-position:center top;}
.fpekyc-selfie-grid{position:absolute; inset:0; z-index:1; pointer-events:none; opacity:0.55; background-image:linear-gradient(rgba(61,220,178,0.09) 1px, transparent 1px), linear-gradient(90deg, rgba(61,220,178,0.09) 1px, transparent 1px); background-size:15px 15px;}
.fpekyc-selfie-scan{position:absolute; z-index:3; left:0; top:28%; width:100%; height:2px; background:linear-gradient(90deg,transparent,#46e0b7,#fff,#46e0b7,transparent); box-shadow:0 0 8px rgba(70,224,183,0.9), 0 0 18px rgba(70,224,183,0.55); animation:fpekycSelfieScan 4s ease-in-out infinite;}
.fpekyc-corner{position:absolute; z-index:4; width:24px; height:24px; border-color:#42ddb5; border-style:solid; filter:drop-shadow(0 0 5px rgba(66,221,181,0.75));}
.fpekyc-corner-tl{top:27px; left:24px; border-width:2px 0 0 2px;}
.fpekyc-corner-tr{top:27px; right:24px; border-width:2px 2px 0 0;}
.fpekyc-corner-bl{bottom:27px; left:24px; border-width:0 0 2px 2px;}
.fpekyc-corner-br{right:24px; bottom:27px; border-width:0 2px 2px 0;}
.fpekyc-selfie-badge{position:absolute; z-index:5; left:50%; bottom:9px; transform:translateX(-50%); display:flex; align-items:center; gap:5px; padding:6px 8px; color:#e5fff8; font-size:8px; font-weight:700; white-space:nowrap; background:rgba(6,27,29,0.88); border:1px solid rgba(66,221,181,0.55); border-radius:20px; backdrop-filter:blur(6px);}
.fpekyc-selfie-dot{width:7px; height:7px; flex:0 0 7px; background:#43ddb5; border-radius:50%; box-shadow:0 0 8px rgba(67,221,181,0.9);}
.fpekyc-stages{overflow:hidden; background:rgba(255,255,255,0.016); border:1px solid rgba(111,138,214,0.21); border-radius:9px;}
.fpekyc-stage{min-height:46px; padding:8px 11px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,0.086);}
.fpekyc-stage:last-child{border-bottom:0;}
.fpekyc-stage-number{width:27px; height:27px; flex:0 0 27px; display:flex; align-items:center; justify-content:center; color:#8fb0ff; font-size:11px; font-weight:700; background:rgba(91,126,255,0.1); border:1px solid rgba(110,145,255,0.35); border-radius:50%;}
.fpekyc-stage-content{min-width:0; flex:1 1 0%;}
.fpekyc-stage-content strong{display:block; margin-bottom:2px; color:#e3e9f5; font-size:11px; line-height:1.25;}
.fpekyc-stage-content span{display:block; color:#8e9db6; font-size:9px; line-height:1.35;}
.fpekyc-stage-result{flex-shrink:0; color:#47dfb7; font-size:11px; font-weight:700; text-align:right;}
.fpekyc-success{margin-top:12px; min-height:76px; padding:11px 14px; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:12px; background:linear-gradient(90deg, rgba(57,220,184,0.11), rgba(255,255,255,0.01)); border:1px solid rgba(57,220,184,0.42); border-radius:9px;}
.fpekyc-success-icon{width:42px; height:42px; display:flex; align-items:center; justify-content:center; color:#43dfb9;}
.fpekyc-success-icon svg{width:41px; height:41px; display:block; stroke:currentColor;}
.fpekyc-success-text{min-width:0;}
.fpekyc-success-text strong{display:block; margin-bottom:4px; color:#56e5c1; font-size:15px; line-height:1.2;}
.fpekyc-success-text span{display:block; color:#a8c6bd; font-size:10px; line-height:1.4;}
.fpekyc-local{display:flex; align-items:center; gap:6px; color:#b5bfd3; font-size:10px; white-space:nowrap;}
.fpekyc-local-icon{width:26px; height:26px; display:flex; align-items:center; justify-content:center; color:#6f9eff;}
.fpekyc-local-icon svg{width:23px; height:23px; display:block; stroke:currentColor;}
@keyframes fpekycPassportScan{0%,100%{top:22%;} 50%{top:78%;}}
@keyframes fpekycSelfieScan{0%,100%{top:24%;} 50%{top:76%;}}
@media (max-width:520px){
  .fpekyc-card{padding:14px; border-radius:10px;}
  .fpekyc-visual{grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr); gap:6px;}
  .fpekyc-passport,.fpekyc-selfie{height:185px;}
  .fpekyc-passport-body{grid-template-columns:55px minmax(0,1fr); gap:6px; padding:7px;}
  .fpekyc-passport-photo{width:55px; height:72px;}
  .fpekyc-match-score{width:38px; height:38px; font-size:8px;}
  .fpekyc-success{grid-template-columns:auto minmax(0,1fr);}
  .fpekyc-local{grid-column:1/-1; padding-top:9px; border-top:1px solid rgba(255,255,255,0.09);}
}
@media (max-width:410px){
  .fpekyc-visual{grid-template-columns:1fr; gap:10px;}
  .fpekyc-passport,.fpekyc-selfie{height:220px;}
  .fpekyc-passport{max-width:280px; width:100%; margin:0 auto;}
  .fpekyc-passport-body{grid-template-columns:72px minmax(0,1fr); padding:9px;}
  .fpekyc-passport-photo{width:72px; height:90px;}
  .fpekyc-connector{width:2px; height:34px; margin:0 auto; background:linear-gradient(#3d92ff,#61e4ff,#3d92ff);}
  .fpekyc-connector::before,.fpekyc-connector::after{left:50%; top:auto; transform:translateX(-50%);}
  .fpekyc-connector::before{top:0;}
  .fpekyc-connector::after{right:auto; bottom:0;}
  .fpekyc-match-score{top:50%; left:50%;}
}
@media (max-width:370px){
  .fpekyc-stage{padding:8px; gap:7px;}
  .fpekyc-stage-content strong,.fpekyc-stage-result{font-size:10px;}
  .fpekyc-success-text strong{font-size:13px;}
}
