.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#fffffff2;padding:20px;text-align:center;box-shadow:0 2px 10px #0000001a}.app-header h1{font-size:32px;color:#333;margin-bottom:5px}.app-header .subtitle{font-size:16px;color:#666}.scanner-container{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 20px}.scan-mode-selection{background:#fff;border-radius:20px;padding:60px 40px;max-width:600px;width:100%;text-align:center;box-shadow:0 20px 60px #0000004d;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.scan-mode-selection h2{font-size:32px;color:#333;margin-bottom:10px}.scan-mode-selection .instructions{font-size:18px;color:#666;margin-bottom:40px}.mode-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:20px}.mode-button{background:#fff;border:3px solid #e0e0e0;border-radius:15px;padding:40px 20px;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:15px}.mode-button:hover{border-color:#d71a21;transform:translateY(-5px);box-shadow:0 10px 30px #d71a214d}.mode-icon{font-size:64px}.mode-label{font-size:18px;font-weight:700;color:#333}.error-message{background:#ffebee;color:#c62828;padding:15px;border-radius:10px;margin-top:20px}.scanner-active{background:#fff;border-radius:20px;padding:40px;max-width:800px;width:100%;box-shadow:0 20px 60px #0000004d;animation:slideIn .3s ease-out}.qr-scanner{text-align:center}.qr-reader{max-width:100%;margin:0 auto 20px;border-radius:10px;overflow:hidden}.qr-reader video{width:100%;border-radius:10px}.scan-instructions{font-size:18px;color:#d71a21;margin:20px 0;font-weight:700}.scan-instructions .loading{color:#999;font-size:14px;margin-top:10px}.face-scanner{text-align:center}.camera-container{position:relative;max-width:640px;margin:0 auto 20px;border-radius:15px;overflow:hidden;background:#000}.webcam{width:100%;height:auto;display:block}.face-oval-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:250px;height:350px;border:3px dashed rgba(215,26,33,.8);border-radius:50%;pointer-events:none}.face-detected-indicator{position:absolute;top:20px;left:50%;transform:translate(-50%);background:#4caf50e6;color:#fff;padding:10px 20px;border-radius:20px;font-weight:700}.cancel-button{background:#f5f5f5;color:#666;border:none;padding:15px 40px;font-size:18px;border-radius:10px;cursor:pointer;margin-top:20px;font-weight:700;transition:all .2s}.cancel-button:hover{background:#e0e0e0}.validation-result{background:#fff;border-radius:20px;padding:60px 40px;max-width:600px;width:100%;text-align:center;box-shadow:0 20px 60px #0000004d;animation:scaleIn .3s ease-out}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.validation-result.allowed{border:5px solid #4caf50}.validation-result.denied{border:5px solid #f44336}.result-icon{width:120px;height:120px;margin:0 auto 30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:72px;color:#fff;font-weight:700}.validation-result.allowed .result-icon{background:#4caf50}.validation-result.denied .result-icon{background:#f44336}.result-content h2{font-size:36px;margin-bottom:15px;color:#333}.validation-result.allowed .result-content h2{color:#4caf50}.validation-result.denied .result-content h2{color:#f44336}.result-message{font-size:20px;color:#666;margin-bottom:30px;line-height:1.6}.result-details{background:#f5f5f5;border-radius:15px;padding:25px;margin:20px 0;text-align:left}.detail-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #e0e0e0}.detail-item:last-child{border-bottom:none}.detail-item.warning{background:#fff3cd;padding:15px;border-radius:8px;border-bottom:none;margin-top:10px}.detail-item .label{font-weight:600;color:#666}.detail-item .value{font-weight:700;color:#333}.auto-reset-message{margin-top:30px;font-size:14px;color:#999}.confidence-badge{display:inline-block;padding:6px 16px;border-radius:20px;font-size:14px;font-weight:600;margin-top:10px}.confidence-high{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.confidence-moderate{background:#fff3e0;color:#e65100;border:1px solid #ffcc80}.confidence-low{background:#ffebee;color:#c62828;border:1px solid #ef9a9a}.confidence-score{font-size:14px;color:#999;margin-top:8px}.validation-result.confirmation{border:5px solid #ff9800;animation:pulseOrange 1.5s ease-in-out infinite}@keyframes pulseOrange{0%,to{box-shadow:0 0 #ff980066}50%{box-shadow:0 0 0 20px #ff980000}}.confirmation-icon{background:#ff9800!important;font-size:60px!important}.confirmation-details{background:#fff8e1;border-radius:16px;padding:24px;margin:20px 0}.confirmation-name{font-size:32px;font-weight:700;color:#333;margin-bottom:8px}.confirmation-token{font-size:20px;color:#666;margin-bottom:12px}.confirmation-actions{display:flex;gap:16px;justify-content:center;margin-top:24px}.confirm-btn{padding:16px 40px;border:none;border-radius:12px;font-size:20px;font-weight:700;cursor:pointer;transition:transform .1s,box-shadow .2s}.confirm-btn:active{transform:scale(.97)}.confirm-yes{background:#4caf50;color:#fff;box-shadow:0 4px 12px #4caf5066}.confirm-yes:hover{background:#43a047}.confirm-no{background:#f44336;color:#fff;box-shadow:0 4px 12px #f4433666}.confirm-no:hover{background:#e53935}.confirmation-timer{margin-top:16px;font-size:14px;color:#999}.token-number{font-size:28px;font-weight:700;color:#333;margin-bottom:4px}.consumer-name{font-size:18px;color:#666;margin-bottom:8px}.fallback-hint{margin-top:16px;padding:12px 20px;background:#e3f2fd;border-radius:10px;color:#1565c0;font-size:16px;font-weight:500}.app-footer{background:#fffffff2;padding:15px;text-align:center;color:#666;font-size:14px}.app-footer .dev-info{color:#d71a21;font-weight:700;margin-top:5px}.app-footer .device-info{color:#999;font-size:14px;margin-top:2px}.setup-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;padding:40px 30px;text-align:center}.setup-header{margin-bottom:40px}.setup-logo{margin-bottom:16px}.setup-title{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.setup-subtitle{font-size:16px;color:#6b7280;margin:0}.setup-form{width:100%;max-width:360px}.setup-field{margin-bottom:20px;text-align:left}.setup-label{display:block;font-size:14px;font-weight:600;color:#374151;margin-bottom:6px}.setup-enrollment-input{width:100%;padding:14px 16px;font-size:14px;font-family:Courier New,monospace;border:2px solid #d1d5db;border-radius:12px;background:#f9fafb;color:#1f2937;outline:none;transition:border-color .2s;box-sizing:border-box}.setup-enrollment-input:focus{border-color:#d71a21;background:#fff}.setup-url-input{width:100%;padding:12px 16px;font-size:14px;border:2px solid #d1d5db;border-radius:12px;background:#f9fafb;color:#1f2937;outline:none;transition:border-color .2s;box-sizing:border-box}.setup-url-input:focus{border-color:#d71a21;background:#fff}.setup-error{background:#fef2f2;color:#dc2626;padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:20px;border:1px solid #fecaca}.setup-activate-btn{width:100%;padding:16px;font-size:18px;font-weight:600;color:#fff;background:linear-gradient(135deg,#d71a21,#b91c1c);border:none;border-radius:12px;cursor:pointer;transition:opacity .2s,transform .1s;display:flex;align-items:center;justify-content:center;gap:8px}.setup-activate-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.setup-activate-btn:disabled{opacity:.5;cursor:not-allowed}.setup-spinner{width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.setup-divider{display:flex;align-items:center;margin:20px 0;color:#9ca3af;font-size:14px}.setup-divider:before,.setup-divider:after{content:"";flex:1;height:1px;background:#e5e7eb}.setup-divider span{padding:0 12px}.setup-paste-link{background:transparent;border:none;color:#d71a21;cursor:pointer;font-size:14px;text-decoration:underline;padding:8px}.setup-paste-link:hover{color:#b91c1c}.setup-paste-link:disabled{opacity:.5;cursor:not-allowed}.setup-paste-section{display:flex;flex-direction:column;gap:12px}.setup-paste-actions{display:flex;gap:10px}.setup-paste-btn{flex:1;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,#d71a21,#b91c1c);border:none;border-radius:10px;cursor:pointer;transition:opacity .2s}.setup-paste-btn:hover:not(:disabled){opacity:.9}.setup-paste-btn:disabled{opacity:.5;cursor:not-allowed}.setup-paste-cancel{padding:12px 16px;font-size:14px;font-weight:600;color:#6b7280;background:#f3f4f6;border:none;border-radius:10px;cursor:pointer;transition:background .2s}.setup-paste-cancel:hover{background:#e5e7eb}.setup-footer{margin-top:40px;font-size:14px;color:#9ca3af}.pending-approval-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;padding:60px 40px;text-align:center}.pending-approval-icon{margin-bottom:24px}.pending-approval-screen h2{font-size:28px;color:#f59e0b;margin-bottom:12px}.pending-approval-subtitle{font-size:16px;color:#6b7280;max-width:400px;line-height:1.6;margin-bottom:32px}.pending-device-code{background:#f9fafb;border:2px solid #e5e7eb;border-radius:16px;padding:20px 40px;margin-bottom:24px}.pending-device-code label{display:block;font-size:14px;color:#9ca3af;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.device-code-value{font-size:28px;font-weight:700;font-family:Courier New,monospace;color:#1f2937;letter-spacing:3px}.pending-approval-instruction{font-size:14px;color:#6b7280;max-width:380px;line-height:1.5;margin-bottom:32px}.pending-polling-indicator{display:flex;align-items:center;gap:10px;font-size:14px;color:#9ca3af}.pulse-dot{width:10px;height:10px;border-radius:50%;background:#f59e0b;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.entry-fingerprint-scanner{text-align:center}.entry-fingerprint-scanner h3{font-size:28px;color:#333;margin-bottom:8px}.entry-fingerprint-subtitle{font-size:16px;color:#666;margin-bottom:30px}.entry-fingerprint-visual{position:relative;width:160px;height:160px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 24px;background:#f9fafb;border:3px solid #e0e0e0;transition:all .4s ease}.entry-fingerprint-visual.entry-fp-connecting{border-color:#9ca3af}.entry-fingerprint-visual.entry-fp-scanning{border-color:#d71a21;background:linear-gradient(135deg,#d71a2114,#b91c1c14);animation:entry-fp-glow 1.5s ease-in-out infinite}.entry-fingerprint-visual.entry-fp-error{border-color:#f44336;background:#f443360d}@keyframes entry-fp-glow{0%,to{box-shadow:0 0 #d71a2166}50%{box-shadow:0 0 0 15px #d71a2100}}.entry-fp-pulse{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;border:3px solid #D71A21;animation:entry-fp-pulse-anim 1.2s ease-out infinite}@keyframes entry-fp-pulse-anim{0%{transform:scale(.8);opacity:1}to{transform:scale(1.3);opacity:0}}.entry-fp-spinner{position:absolute;bottom:6px;right:6px}.entry-fp-spinner-circle{width:24px;height:24px;border:3px solid #e0e0e0;border-top-color:#d71a21;border-radius:50%;animation:spin .8s linear infinite}.entry-fingerprint-status{font-size:16px;font-weight:600;min-height:24px}.entry-fp-status-connecting{color:#9ca3af}.entry-fp-status-scanning{color:#d71a21}.entry-fp-status-error{color:#f44336}.entry-idcard-scanner{text-align:center}.entry-idcard-scanner h3{font-size:28px;color:#333;margin-bottom:8px}.entry-idcard-subtitle{font-size:16px;color:#666;margin-bottom:30px}.entry-idcard-type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:500px;margin:0 auto}.entry-idcard-type-btn{background:#fff;border:3px solid #e0e0e0;border-radius:15px;padding:28px 16px;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:12px}.entry-idcard-type-btn:hover{border-color:#d71a21;transform:translateY(-3px);box-shadow:0 8px 20px #d71a2140}.entry-idcard-type-icon{font-size:40px}.entry-idcard-type-label{font-size:16px;font-weight:700;color:#333}.entry-idcard-form{max-width:400px;margin:0 auto;text-align:left}.entry-idcard-selected-type{display:flex;align-items:center;gap:10px;padding:12px 16px;background:linear-gradient(135deg,#d71a210f,#b91c1c0f);border:2px solid #e5e7eb;border-radius:12px;font-size:16px;font-weight:600;color:#374151;margin-bottom:20px}.entry-idcard-selected-icon{font-size:24px}.entry-idcard-field{margin-bottom:20px}.entry-idcard-field label{display:block;font-size:14px;font-weight:600;color:#374151;margin-bottom:8px}.entry-idcard-required{color:#f44336}.entry-idcard-input{width:100%;padding:14px 16px;font-size:18px;font-weight:600;letter-spacing:1px;border:2px solid #d1d5db;border-radius:12px;background:#f9fafb;color:#1f2937;outline:none;transition:border-color .2s,background .2s;box-sizing:border-box}.entry-idcard-input:focus{border-color:#d71a21;background:#fff}.entry-idcard-error{background:#fef2f2;color:#dc2626;padding:10px 14px;border-radius:8px;font-size:14px;border:1px solid #fecaca;margin-bottom:16px}.entry-idcard-actions{display:flex;gap:12px}.entry-idcard-verify-btn{flex:1;padding:15px;font-size:18px;font-weight:700;color:#fff;background:linear-gradient(135deg,#d71a21,#b91c1c);border:none;border-radius:10px;cursor:pointer;transition:all .2s}.entry-idcard-verify-btn:hover{transform:translateY(-2px);box-shadow:0 5px 15px #d71a2166}.entry-idcard-back-btn{padding:15px 30px;font-size:18px;font-weight:700;color:#666;background:#f5f5f5;border:none;border-radius:10px;cursor:pointer;transition:all .2s}.entry-idcard-back-btn:hover{background:#e0e0e0}@media (max-width: 768px){.mode-buttons,.entry-idcard-type-grid{grid-template-columns:1fr}.scan-mode-selection,.scanner-active,.validation-result{padding:30px 20px}.result-icon{width:100px;height:100px;font-size:60px}.result-content h2{font-size:28px}.setup-screen,.pending-approval-screen{padding:30px 20px}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter Variable,Noto Sans Devanagari,Noto Sans Tamil,Noto Sans Telugu,Noto Sans Kannada,Noto Sans Malayalam,Noto Sans Bengali,Noto Sans Gujarati,Noto Sans Gurmukhi,Noto Sans Oriya,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#d71a21,#b91c1c);min-height:100vh}button,input,select,textarea{font-family:inherit}#root{width:100%;min-height:100vh}
