Banking Face Verify – Emerald Glassmorphism
<div class="fp-banking-face-id-verification-ui">
<div class="fp-banking-face-id-verification-ui-stage">
<div class="fp-banking-face-id-verification-ui-blob fp-banking-face-id-verification-ui-blob-1"></div>
<div class="fp-banking-face-id-verification-ui-blob fp-banking-face-id-verification-ui-blob-2"></div>
<div class="fp-banking-face-id-verification-ui-card">
<div class="fp-banking-face-id-verification-ui-header">
<div class="fp-banking-face-id-verification-ui-title" id="fp-banking-face-id-verification-ui-title">Scan Face ID</div>
<div class="fp-banking-face-id-verification-ui-subtitle" id="fp-banking-face-id-verification-ui-subtitle">Position your face in the frame</div>
</div>
<div class="fp-banking-face-id-verification-ui-scanner-wrap">
<div class="fp-banking-face-id-verification-ui-reticle"></div>
<div class="fp-banking-face-id-verification-ui-reticle-inner"></div>
<div class="fp-banking-face-id-verification-ui-feed">
<div class="fp-banking-face-id-verification-ui-silhouette" id="fp-banking-face-id-verification-ui-sil"></div>
</div>
<div class="fp-banking-face-id-verification-ui-scan-line" id="fp-banking-face-id-verification-ui-line"></div>
</div>
<div class="fp-banking-face-id-verification-ui-badges">
<div class="fp-banking-face-id-verification-ui-badge">
<span class="fp-banking-face-id-verification-ui-dot"></span>
Encrypted
</div>
<div class="fp-banking-face-id-verification-ui-badge">
<span class="fp-banking-face-id-verification-ui-dot"></span>
Liveness
</div>
</div>
</div>
</div>
</div>.fp-banking-face-id-verification-ui {
--fp-container-width: 100%;
--fp-max-width: 500px;
--fp-aspect-ratio: 1 / 1;
--fp-primary-color: #fcfbf9;
--fp-secondary-color: #f0ebe1;
--fp-muted-color: #111111;
--fp-soft-color: rgba(252, 251, 249, 0.75);
--fp-background-color: transparent;
--fp-info-color: #666666;
--fp-warning-color: #34d399;
--fp-danger-color: #064e3b;
--fp-accent-color: #10b981;
width: var(--fp-container-width);
max-width: var(--fp-max-width);
margin: 0 auto;
position: relative;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
color: var(--fp-muted-color);
background-color: var(--fp-background-color);
box-sizing: border-box;
}
.fp-banking-face-id-verification-ui-stage {
width: 100%;
aspect-ratio: var(--fp-aspect-ratio);
background: var(--fp-primary-color);
position: relative;
display: flex;
align-items: center;
justify-content: center;
border-radius: 24px;
overflow: hidden;
box-shadow: 0 24px 48px -12px rgba(17, 17, 17, 0.08);
border: 1px solid var(--fp-secondary-color);
}
.fp-banking-face-id-verification-ui-blob {
position: absolute;
border-radius: 50%;
filter: blur(40px);
z-index: 1;
opacity: 0.4;
animation: fp-banking-face-id-verification-ui-float 10s ease-in-out infinite alternate;
}
.fp-banking-face-id-verification-ui-blob-1 {
width: 200px;
height: 200px;
background: var(--fp-accent-color);
top: -20%;
right: -10%;
}
.fp-banking-face-id-verification-ui-blob-2 {
width: 250px;
height: 250px;
background: var(--fp-secondary-color);
bottom: -20%;
left: -20%;
animation-duration: 12s;
animation-direction: alternate-reverse;
}
.fp-banking-face-id-verification-ui-card {
position: relative;
z-index: 10;
width: 80%;
max-width: 320px;
background: var(--fp-soft-color);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(255, 255, 255, 0.6);
border-radius: 24px;
padding: 32px 24px;
box-shadow:
0 10px 30px rgba(0,0,0,0.05),
inset 0 1px 0 rgba(255,255,255,0.8);
display: flex;
flex-direction: column;
align-items: center;
gap: 24px;
animation: fp-banking-face-id-verification-ui-breathe 5s ease-in-out infinite;
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.fp-banking-face-id-verification-ui-header {
text-align: center;
}
.fp-banking-face-id-verification-ui-title {
font-size: 1.1rem;
font-weight: 700;
color: var(--fp-muted-color);
letter-spacing: -0.02em;
margin-bottom: 4px;
}
.fp-banking-face-id-verification-ui-subtitle {
font-size: 0.75rem;
font-weight: 500;
color: var(--fp-info-color);
}
.fp-banking-face-id-verification-ui-scanner-wrap {
position: relative;
width: 140px;
height: 140px;
display: flex;
align-items: center;
justify-content: center;
}
.fp-banking-face-id-verification-ui-reticle {
position: absolute;
inset: 0;
border-radius: 50%;
border: 2px dashed var(--fp-info-color);
opacity: 0.4;
animation: fp-banking-face-id-verification-ui-spin 10s linear infinite;
transition: all 0.5s ease;
}
.fp-banking-face-id-verification-ui-reticle-inner {
position: absolute;
inset: 10px;
border-radius: 50%;
border: 1px solid var(--fp-accent-color);
opacity: 0.2;
animation: fp-banking-face-id-verification-ui-spin 6s linear infinite reverse;
transition: all 0.5s ease;
}
.fp-banking-face-id-verification-ui-feed {
position: relative;
width: 100px;
height: 100px;
border-radius: 50%;
background: var(--fp-secondary-color);
overflow: hidden;
display: flex;
align-items: flex-end;
justify-content: center;
box-shadow: inset 0 4px 10px rgba(0,0,0,0.05);
}
.fp-banking-face-id-verification-ui-silhouette {
width: 60%;
height: 80%;
background: var(--fp-info-color);
border-radius: 40px 40px 0 0;
will-change: filter;
transition: background 0.5s ease;
}
.fp-banking-face-id-verification-ui-scan-line {
position: absolute;
left: 10%;
right: 10%;
height: 2px;
background: var(--fp-accent-color);
box-shadow: 0 0 8px var(--fp-accent-color);
top: 10%;
opacity: 0.8;
z-index: 5;
will-change: top;
}
.fp-banking-face-id-verification-ui-badges {
display: flex;
gap: 8px;
}
.fp-banking-face-id-verification-ui-badge {
font-size: 0.65rem;
font-weight: 700;
padding: 4px 10px;
border-radius: 12px;
background: var(--fp-primary-color);
color: var(--fp-muted-color);
border: 1px solid var(--fp-secondary-color);
display: flex;
align-items: center;
gap: 4px;
transition: all 0.3s ease;
}
.fp-banking-face-id-verification-ui-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--fp-info-color);
transition: background 0.3s ease;
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-card {
border-color: rgba(16, 185, 129, 0.4);
box-shadow:
0 15px 40px rgba(16, 185, 129, 0.15),
inset 0 1px 0 rgba(255,255,255,0.8);
transform: translateY(-4px);
animation: none;
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-reticle {
border-color: var(--fp-accent-color);
border-style: solid;
opacity: 1;
box-shadow: 0 0 15px rgba(16, 185, 129, 0.3);
animation-duration: 3s;
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-reticle-inner {
opacity: 0;
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-silhouette {
background: var(--fp-danger-color);
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-scan-line {
opacity: 0;
transition: opacity 0.2s;
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-dot {
background: var(--fp-accent-color);
box-shadow: 0 0 8px var(--fp-accent-color);
}
.fp-banking-face-id-verification-ui.fp-is-verified .fp-banking-face-id-verification-ui-badge {
color: var(--fp-danger-color);
border-color: var(--fp-warning-color);
background: rgba(16, 185, 129, 0.05);
}
@keyframes fp-banking-face-id-verification-ui-breathe {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-4px); }
}
@keyframes fp-banking-face-id-verification-ui-float {
0% { transform: translate(0, 0); }
100% { transform: translate(20px, 30px); }
}
@keyframes fp-banking-face-id-verification-ui-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@media (max-width: 480px) {
.fp-banking-face-id-verification-ui-stage { padding: 16px; border-radius: 16px; }
.fp-banking-face-id-verification-ui-card { width: 95%; padding: 24px 16px; }
.fp-banking-face-id-verification-ui-scanner-wrap { width: 120px; height: 120px; }
.fp-banking-face-id-verification-ui-feed { width: 85px; height: 85px; }
}document.querySelectorAll('.fp-banking-face-id-verification-ui').forEach(root => {
const silEl = root.querySelector('#fp-banking-face-id-verification-ui-sil');
const lineEl = root.querySelector('#fp-banking-face-id-verification-ui-line');
const titleEl = root.querySelector('#fp-banking-face-id-verification-ui-title');
const subtitleEl = root.querySelector('#fp-banking-face-id-verification-ui-subtitle');
let phase = 'scanning';
let timer = 0;
let lastTime = performance.now();
let animationFrameId;
let blurAmount = 10;
let linePos = 10;
let lineDir = 1;
function fp_banking_face_id_verification_ui_loop(time) {
if (document.visibilityState === "hidden") {
lastTime = time;
animationFrameId = requestAnimationFrame(fp_banking_face_id_verification_ui_loop);
return;
}
let dt = time - lastTime;
lastTime = time;
timer += dt;
if (phase === 'scanning' || phase === 'focusing') {
linePos += lineDir * 0.1 * (dt/16);
if (linePos > 90) { linePos = 90; lineDir = -1; }
if (linePos < 10) { linePos = 10; lineDir = 1; }
if (lineEl) lineEl.style.top = `${linePos}%`;
}
if (phase === 'scanning') {
blurAmount = 8 + Math.sin(timer / 200) * 2;
if (timer > 2500) {
phase = 'focusing';
timer = 0;
if (titleEl) titleEl.textContent = "Analyzing...";
if (subtitleEl) subtitleEl.textContent = "Hold still";
}
}
else if (phase === 'focusing') {
blurAmount -= 0.05 * (dt/16);
if (blurAmount < 0) blurAmount = 0;
if (timer > 1500) {
phase = 'verified';
timer = 0;
blurAmount = 0;
root.classList.add('fp-is-verified');
if (titleEl) titleEl.textContent = "Verified";
if (subtitleEl) subtitleEl.textContent = "Access Granted";
}
}
else if (phase === 'verified') {
if (timer > 2500) {
phase = 'scanning';
timer = 0;
blurAmount = 10;
root.classList.remove('fp-is-verified');
if (titleEl) titleEl.textContent = "Scan Face ID";
if (subtitleEl) subtitleEl.textContent = "Position your face in the frame";
}
}
if (silEl) {
silEl.style.filter = `blur(${Math.max(0, blurAmount)}px)`;
}
animationFrameId = requestAnimationFrame(fp_banking_face_id_verification_ui_loop);
}
animationFrameId = requestAnimationFrame(fp_banking_face_id_verification_ui_loop);
const observer = new MutationObserver(() => {
if (!document.body.contains(root)) {
cancelAnimationFrame(animationFrameId);
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
});Description
Let us look at the Banking Face Verify Emerald Glassmorphism component. This free UI asset offers a modular card system specifically engineered for the financial technology and banking sector. We built this entirely from scratch to handle secure authentication flows without the usual framework bloat. You get a sterile DOM structure that integrates cleanly into your existing banking application architecture.
Financial platforms often process sensitive biometric data during user logins and require absolute reliability. Heavy client side payloads completely ruin performance metrics when immediate action is needed during a secure verification. This component solves that bottleneck directly. By strictly avoiding external libraries like Tailwind, Bootstrap, or GSAP, it keeps your bundle size minimal. This ensures rapid rendering for retail banking customers and corporate clients who need to authenticate quickly on varying mobile networks.
Technical Architecture & Performance
-
Zero dependency codebase: Built strictly with pure HTML, CSS, and Vanilla JavaScript to keep your front end stack incredibly light.
-
Guaranteed performance metrics: Optimized to help your banking software maintain 90 plus PageSpeed scores and pass Core Web Vitals easily.
-
Safely scoped CSS: All styling is strictly scoped to prevent any class name collisions when you drop these cards into a massive monolithic repository.
-
Sterile DOM markup: Features clean HTML with absolutely no unnecessary wrappers or deep nesting trees to parse.
Design & Aesthetic Impact
The visual direction pairs deep Emerald Wealth tones with a modern glassmorphism design to establish trust and financial security. This transparent and highly readable aesthetic ensures visual clarity for users interacting with sensitive biometric prompts and authentication screens. For the interaction layer, we implemented custom blurring and focusing animations. These depth of field transitions provide clear visual feedback during active facial scans without requiring heavy javascript animation scripts. The final result is a clean user interface that looks premium and functions perfectly for strict banking environments.
Enterprise Use Cases
-
Mobile banking login portals: Display secure facial recognition prompts using the card grid so retail users can access their checking accounts quickly.
-
Corporate wire transfer approvals: Build a fast rendering verification page where corporate treasurers can organize and authorize large transactions within a lightweight interface.
-
KYC onboarding dashboards: Create a responsive control layout for compliance officers to track active identity verifications across multiple new client registrations.
Highlights & Benefits
Drop the code straight into your project without configuration.
Built strictly with pure CSS & Vanilla JS for maximum speed.
Constructed with strict adherence to WCAG accessibility standards for perfect contrast and screen-reader support.
Utilizes a highly optimized, clean DOM architecture ensuring lightning-fast render and maximum PageSpeed scores.

Banking Face Verify – Emerald Glassmorphism
Description
Let us look at the Banking Face Verify Emerald Glassmorphism component. This free UI asset offers a modular card system specifically engineered for the financial technology and banking sector. We built this entirely from scratch to handle secure authentication flows without the usual framework bloat. You get a sterile DOM structure that integrates cleanly into your existing banking application architecture.
Financial platforms often process sensitive biometric data during user logins and require absolute reliability. Heavy client side payloads completely ruin performance metrics when immediate action is needed during a secure verification. This component solves that bottleneck directly. By strictly avoiding external libraries like Tailwind, Bootstrap, or GSAP, it keeps your bundle size minimal. This ensures rapid rendering for retail banking customers and corporate clients who need to authenticate quickly on varying mobile networks.
Technical Architecture & Performance
-
Zero dependency codebase: Built strictly with pure HTML, CSS, and Vanilla JavaScript to keep your front end stack incredibly light.
-
Guaranteed performance metrics: Optimized to help your banking software maintain 90 plus PageSpeed scores and pass Core Web Vitals easily.
-
Safely scoped CSS: All styling is strictly scoped to prevent any class name collisions when you drop these cards into a massive monolithic repository.
-
Sterile DOM markup: Features clean HTML with absolutely no unnecessary wrappers or deep nesting trees to parse.
Design & Aesthetic Impact
The visual direction pairs deep Emerald Wealth tones with a modern glassmorphism design to establish trust and financial security. This transparent and highly readable aesthetic ensures visual clarity for users interacting with sensitive biometric prompts and authentication screens. For the interaction layer, we implemented custom blurring and focusing animations. These depth of field transitions provide clear visual feedback during active facial scans without requiring heavy javascript animation scripts. The final result is a clean user interface that looks premium and functions perfectly for strict banking environments.
Enterprise Use Cases
-
Mobile banking login portals: Display secure facial recognition prompts using the card grid so retail users can access their checking accounts quickly.
-
Corporate wire transfer approvals: Build a fast rendering verification page where corporate treasurers can organize and authorize large transactions within a lightweight interface.
-
KYC onboarding dashboards: Create a responsive control layout for compliance officers to track active identity verifications across multiple new client registrations.



