UI Customization
SDK provides extensive customization options through CSS variables, allowing you to match your application's design system.
General Styling
You can set provided CSS variables in your stylesheet to customize the SDK's appearance:
:root {
/* Colors */
--modal-background-color: rgba(255, 255, 255, 0.8);
--modal-text-color: #1e293b;
/* Border Styles */
--modal-border-radius: 8px;
/* Font Settings */
--modal-text-font-family: 'Your-Font-Family', sans-serif;
--modal-text-font-size: 24px;
}
Available Customization Options
- Blur Modal
- Document Modal
- Check Capture Modal
- Credit Card Scanner
- Control Buttons (Capture, Torch, Submit)
- Cropped Image
- Check Images
- Spinner

info
Text in the blur modal is customizable through the blurModalMessage.
:root {
/* Container Styles */
--blur-modal-background-color: white;
--blur-modal-border-radius: 8px;
--blur-modal-padding: 20px;
--blur-modal-width: 300px;
--blur-modal-max-width: 300px;
/* Text Styles */
--blur-modal-text-color: #1e293b;
--blur-modal-text-font-family: 'NB International Pro', sans-serif;
--blur-modal-text-font-size: 17px;
/* Button Styles */
--blur-modal-button-width: 100%;
--blur-modal-button-padding: 12px;
--blur-modal-button-border-radius: 4px;
--blur-modal-button-font-family: 'DIN Pro', sans-serif;
--blur-modal-button-font-size: 14px;
--blur-modal-button-font-weight: 700;
/* Primary Button (Retake) */
--blur-modal-primary-button-background: #00AA00;
--blur-modal-primary-button-color: white;
/* Secondary Button (Submit Anyway) */
--blur-modal-secondary-button-background: transparent;
--blur-modal-secondary-button-border: 1px solid #333;
--blur-modal-secondary-button-color: #333;
}
Global Modal Positioning
:root {
/* Modal Positioning (applies to all modals) */
--modal-border-radius: 8px;
--modal-z-index: 1000;
--modal-width: 300px;
--modal-height: 250px; /* Auto-adjusts for enforced modes */
--modal-top: 50%;
--modal-left: 50%;
--modal-transform: translate(-50%, -50%);
}

info
Text in the document modal is customizable through the documentModalMessage.
:root {
/* Container Styles */
--document-modal-background-color: white;
--document-modal-border-radius: 8px;
--document-modal-padding: 20px;
--document-modal-width: 300px;
--document-modal-max-width: 300px;
/* Text Styles */
--document-modal-text-color: #1e293b;
--document-modal-text-font-family: 'NB International Pro', sans-serif;
--document-modal-text-font-size: 17px;
/* Button Styles */
--document-modal-button-width: 100%;
--document-modal-button-padding: 12px;
--document-modal-button-border-radius: 4px;
--document-modal-button-font-family: 'DIN Pro', sans-serif;
--document-modal-button-font-size: 14px;
--document-modal-button-font-weight: 700;
/* Primary Button (Retake) */
--document-modal-primary-button-background: #00AA00;
--document-modal-primary-button-color: white;
/* Secondary Button (Submit Anyway) */
--document-modal-secondary-button-background: transparent;
--document-modal-secondary-button-border: 1px solid #333;
--document-modal-secondary-button-color: #333;
}
Global Modal Positioning
:root {
/* Modal Positioning (applies to all modals) */
--modal-border-radius: 8px;
--modal-z-index: 1000;
--modal-width: 300px;
--modal-height: 250px; /* Auto-adjusts for enforced modes */
--modal-top: 50%;
--modal-left: 50%;
--modal-transform: translate(-50%, -50%);
}

info
Text in the check capture modal is customizable through the checkEnforcedModalMessage and checkOptionalModalMessage.
:root {
/* Container Styles */
--check-modal-background-color: white;
--check-modal-border-radius: 8px;
--check-modal-padding: 20px;
--check-modal-width: 300px;
--check-modal-max-width: 300px;
/* Text Styles */
--check-modal-text-color: #1e293b;
--check-modal-text-font-family: 'NB International Pro', sans-serif;
--check-modal-text-font-size: 17px;
/* Button Styles */
--check-modal-button-width: 100%;
--check-modal-button-padding: 12px;
--check-modal-button-border-radius: 4px;
--check-modal-button-font-family: 'DIN Pro', sans-serif;
--check-modal-button-font-size: 14px;
--check-modal-button-font-weight: 700;
/* Primary Button (Continue/Yes) */
--check-modal-primary-button-background: #00AA00;
--check-modal-primary-button-color: white;
/* Secondary Button (No) */
--check-modal-secondary-button-background: transparent;
--check-modal-secondary-button-border: 1px solid #333;
--check-modal-secondary-button-color: #333;
}
Global Modal Positioning
:root {
/* Modal Positioning (applies to all modals) */
--modal-border-radius: 8px;
--modal-z-index: 1000;
--modal-width: 300px;
--modal-height: 250px; /* Auto-adjusts for enforced modes */
--modal-top: 50%;
--modal-left: 50%;
--modal-transform: translate(-50%, -50%);
}

:root {
/* Overlay Settings */
--card-overlay-max-width: 500px;
--card-overlay-height: 100%;
--card-overlay-z-index: 150;
/* Card Outline */
--card-outline-width: 400px;
--card-outline-height: 250px;
--card-outline-border-width: 8px;
--card-outline-border-color: white;
--card-outline-border-radius: 12px;
/* Text Display */
--card-text-color: white;
--card-number-font-size: 24px;
--card-number-margin: 90px 0 10px 40px;
--card-info-margin-left: 20px;
--card-info-font-weight: bold;
/* Flip Message */
--flip-message-width: 300px;
--flip-message-font-size: 25px;
}

:root {
/* Capture Button */
--capture-button-background-color: transparent;
--capture-button-hover-background-color: rgba(255, 255, 255, 0.5);
--capture-button-active-background-color: rgba(255, 0, 0, 0.5);
/* Torch Button */
--torch-button-background-color: rgba(107, 114, 128, 0.5);
--torch-button-hover-background-color: rgba(75, 85, 99, 0.8);
/* Submit Button */
--submit-button-background-color: #4CAF50;
--submit-button-color: white;
--submit-button-border-radius: 5px;
--submit-button-font-size: 16px;
}

:root {
/* Basic Positioning */
--cropped-image-position: absolute;
--cropped-image-width: 100%;
--cropped-image-height: auto;
--cropped-image-max-width: 350px;
--cropped-image-max-height: 100%;
--cropped-image-z-index: 130;
/* Border Styles */
--cropped-image-border-width: 3px;
--cropped-image-border-color-error: red;
--cropped-image-border-color-success: #00AA00;
--cropped-image-border-radius: 10px;
--cropped-image-border-radius-rectangle: 5px;
--cropped-image-border-hidden: none;
--cropped-image-border-radius-hidden: 0;
/* Mobile Portrait */
--cropped-image-mobile-width: 370px;
--cropped-image-mobile-height: 95vh;
--cropped-image-mobile-max-width: 350px;
--cropped-image-mobile-position: fixed;
/* Mobile Landscape */
--cropped-image-mobile-landscape-width: 170px;
--cropped-image-mobile-landscape-height: 85vh;
--cropped-image-mobile-landscape-max-width: 200px;
/* Desktop */
--cropped-image-desktop-width: 100%;
--cropped-image-desktop-height: 95%;
--cropped-image-desktop-max-width: 370px;
--cropped-image-desktop-position: absolute;
/* Square Display (Bottle Caps) */
--cropped-image-square-size: 350px; /* Auto-calculated based on screen size */
--cropped-image-square-position: fixed;
--cropped-image-square-top: 50%;
--cropped-image-square-left: 50%;
--cropped-image-square-transform: translate(-50%, -50%);
/* Rectangle Display (Code Strips) */
--cropped-image-rectangle-width: 500px; /* Auto-calculated based on aspect ratio */
--cropped-image-rectangle-height: 300px; /* Auto-calculated based on aspect ratio */
--cropped-image-rectangle-max-width: 500px;
--cropped-image-rectangle-max-height: 60vh;
--cropped-image-rectangle-position: fixed;
--cropped-image-rectangle-top: 50%;
--cropped-image-rectangle-left: 50%;
--cropped-image-rectangle-transform: translate(-50%, -50%);
/* Common Display Properties */
--cropped-image-object-fit: contain;
--cropped-image-display: block;
--cropped-image-margin: auto;
}
:root {
/* Container Layout */
--check-images-container-display: flex;
--check-images-container-flex-direction: column;
--check-images-container-justify-content: center;
--check-images-container-align-items: center;
--check-images-container-width: 100%;
--check-images-container-height: 100%;
--check-images-container-overflow: auto;
/* Container Orientation Modes */
--check-images-container-flex-direction-portrait: row;
--check-images-container-flex-direction-landscape: column;
/* Image Sizing - Portrait Mode */
--check-images-max-width-portrait: 48%;
--check-images-max-height-portrait: 96%;
/* Image Sizing - Landscape Mode */
--check-images-max-width-landscape: 96%;
--check-images-max-height-landscape: 48%;
/* Image Display Properties */
--check-images-object-fit: contain;
--check-images-margin: 1%;
/* Hidden State */
--check-images-container-display-hidden: none;
}

:root {
/* Overlay Styles */
--spinner-overlay-background-color: rgba(0, 0, 0, 0.7);
--spinner-overlay-z-index: 9999;
/* Spinner Styles */
--spinner-size: 40px;
--spinner-border-width: 4px;
--spinner-border-color: #f3f3f3;
--spinner-primary-color: #4CAF50;
--spinner-animation-duration: 1s;
/* Text Styles */
--spinner-text-color: #4CAF50;
--spinner-text-size: 16px;
--spinner-text-margin: 20px;
--spinner-font-family: 'Arial', sans-serif;
}