@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;min-height:100vh}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}:root{--primary-navy:#1a1d29;--primary-blue:#4f46e5;--primary-cyan:#06b6d4;--accent-purple:#8b5cf6;--accent-emerald:#10b981;--accent-amber:#f59e0b;--accent-rose:#f43f5e;--gray-50:#fafafa;--gray-100:#f4f4f5;--gray-200:#e4e4e7;--gray-300:#d4d4d8;--gray-400:#a1a1aa;--gray-500:#71717a;--gray-600:#52525b;--gray-700:#3f3f46;--gray-800:#27272a;--gray-900:#18181b;--surface-primary:#fff;--surface-secondary:#f8fafc;--surface-tertiary:#f1f5f9;--surface-glass:#ffffff1a;--surface-dark:#0f172a;--font-primary:"Poppins",-apple-system,system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--space-xs:0.5rem;--space-sm:0.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000001f,0 1px 2px #0000003d;--shadow-md:0 4px 6px #00000012,0 2px 4px #0000000f;--shadow-lg:0 10px 15px #0000001a,0 4px 6px #0000000d;--shadow-xl:0 20px 25px #0000001a,0 10px 10px #0000000a;--shadow-glow:0 0 20px #4f46e54d;--transition-fast:0.15s cubic-bezier(0.4,0,0.2,1);--transition-normal:0.3s cubic-bezier(0.4,0,0.2,1);--transition-slow:0.5s cubic-bezier(0.4,0,0.2,1)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11";font-family:Poppins,-apple-system,system-ui,sans-serif;font-family:var(--font-primary)}body{background:#0a0e27;color:#18181b;color:var(--gray-900);font-weight:400;line-height:1.6;overflow-x:hidden;position:relative}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#f4f4f5;background:var(--gray-100)}::-webkit-scrollbar-thumb{background:#a1a1aa;background:var(--gray-400);border-radius:9999px;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#71717a;background:var(--gray-500)}.app{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:1.5rem;padding:var(--space-lg);position:relative}.app:before{background:linear-gradient(135deg,#0a0e27,#1a1d3a 25%,#2d1b69 50%,#1e3a8a 75%,#0f172a);z-index:-3}.app:after,.app:before{content:"";height:100%;left:0;position:fixed;top:0;width:100%}.app:after{animation:backgroundFloat 25s ease-in-out infinite;background:radial-gradient(circle at 20% 80%,#8b5cf626 0,#0000 50%),radial-gradient(circle at 80% 20%,#06b6d426 0,#0000 50%),radial-gradient(circle at 40% 40%,#4f46e533 0,#0000 50%),radial-gradient(circle at 60% 70%,#10b9811a 0,#0000 50%);z-index:-2}.app .floating-particles{height:100%;left:0;overflow:hidden;pointer-events:none;position:fixed;top:0;width:100%;z-index:-1}.app .floating-particles:after,.app .floating-particles:before{animation:float-particle 20s linear infinite;background:#4f46e599;border-radius:50%;content:"";height:4px;position:absolute;width:4px}.app .floating-particles:before{animation-delay:-5s;box-shadow:0 0 20px #4f46e580,200px 300px 0 #8b5cf666,400px 150px 0 #06b6d44d,600px 400px 0 #10b98166,800px 100px 0 #4f46e54d,1000px 350px 0 #8b5cf633,1200px 250px 0 #06b6d466,1400px 450px 0 #10b9814d;left:20%;top:-10px}.app .floating-particles:after{animation-delay:-12s;box-shadow:0 0 20px #06b6d480,-200px 200px 0 #10b98166,-400px 350px 0 #4f46e54d,-600px 100px 0 #8b5cf666,-800px 400px 0 #06b6d44d,-1000px 150px 0 #10b98133,-1200px 300px 0 #4f46e566,-1400px 50px 0 #8b5cf64d;left:70%;top:-10px}@keyframes backgroundFloat{0%,to{opacity:.8;transform:scale(1) rotate(0deg)}25%{opacity:1;transform:scale(1.05) rotate(1deg)}50%{opacity:.9;transform:scale(1.1) rotate(-.5deg)}75%{opacity:1;transform:scale(1.03) rotate(.5deg)}}@keyframes float-particle{0%{opacity:0;transform:translateY(100vh) rotate(0deg)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(-100px) rotate(1turn)}}.card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fff;background:var(--surface-primary);border:1px solid #fff3;border-radius:24px;border-radius:var(--radius-xl);box-shadow:0 20px 25px #0000001a,0 10px 10px #0000000a;box-shadow:var(--shadow-xl);max-width:1000px;overflow:hidden;padding:4rem;padding:var(--space-3xl);position:relative;transform:translateY(0);transition:all .3s cubic-bezier(.4,0,.2,1);transition:all var(--transition-normal);width:100%}.card:before{background:linear-gradient(90deg,#4f46e5,#8b5cf6,#06b6d4);background:linear-gradient(90deg,var(--primary-blue),var(--accent-purple),var(--primary-cyan));border-radius:24px 24px 0 0;border-radius:var(--radius-xl) var(--radius-xl) 0 0;content:"";height:6px;left:0;position:absolute;right:0;top:0}.card:hover{box-shadow:0 20px 25px #0000001a,0 10px 10px #0000000a,0 0 20px #4f46e54d;box-shadow:var(--shadow-xl),var(--shadow-glow);transform:translateY(-2px)}.header{margin-bottom:4rem;margin-bottom:var(--space-3xl);text-align:center}.header,.title{position:relative}.title{color:#1a1d29;color:var(--primary-navy);font-size:clamp(2rem,5vw,3.5rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1.5rem;margin-bottom:var(--space-lg)}.title:after{background:linear-gradient(90deg,#4f46e5,#8b5cf6);background:linear-gradient(90deg,var(--primary-blue),var(--accent-purple));border-radius:9999px;border-radius:var(--radius-full);bottom:-8px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:60px}.subtitle{color:#52525b;color:var(--gray-600);font-size:1.125rem;font-weight:400;line-height:1.7;margin:0 auto;max-width:600px}.camera-section{margin-bottom:4rem;margin-bottom:var(--space-3xl);text-align:center}.camera-container{background:#f4f4f5;background:var(--gray-100);border:3px solid #e4e4e7;border:3px solid var(--gray-200);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 10px 15px #0000001a,0 4px 6px #0000000d;box-shadow:var(--shadow-lg);display:inline-block;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);transition:all var(--transition-normal)}.camera-container:hover{border-color:#4f46e5;border-color:var(--primary-blue);box-shadow:0 20px 25px #0000001a,0 10px 10px #0000000a;box-shadow:var(--shadow-xl)}.webcam{border-radius:12px;border-radius:var(--radius-md);display:block;height:auto;max-height:480px;max-width:640px;width:100%}.face-guide{border:3px solid #4f46e5;border:3px solid var(--primary-blue);border-radius:16px;border-radius:var(--radius-lg);height:280px;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:220px}.face-guide:before{animation:guidePulse 3s ease-in-out infinite;border:2px dashed #4f46e566;border-radius:16px;border-radius:var(--radius-lg);bottom:-15px;content:"";left:-15px;position:absolute;right:-15px;top:-15px}.face-guide:after{border-left:3px solid #10b981;border-left:3px solid var(--accent-emerald);border-radius:4px 0 0 0;border-top:3px solid #10b981;border-top:3px solid var(--accent-emerald);content:"";left:10px;top:10px}.face-guide .corner,.face-guide:after{height:20px;position:absolute;width:20px}.face-guide .corner.top-right{border-radius:0 4px 0 0;border-right:3px solid #10b981;border-right:3px solid var(--accent-emerald);border-top:3px solid #10b981;border-top:3px solid var(--accent-emerald);right:10px;top:10px}.face-guide .corner.bottom-left{border-left:3px solid #10b981;border-left:3px solid var(--accent-emerald);border-radius:0 0 0 4px;left:10px}.face-guide .corner.bottom-left,.face-guide .corner.bottom-right{border-bottom:3px solid #10b981;border-bottom:3px solid var(--accent-emerald);bottom:10px}.face-guide .corner.bottom-right{border-radius:0 0 4px 0;border-right:3px solid #10b981;border-right:3px solid var(--accent-emerald);right:10px}@keyframes guidePulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}}.countdown{animation:countdownPulse 1s ease-in-out infinite;background:linear-gradient(135deg,#4f46e5,#8b5cf6);background:linear-gradient(135deg,var(--primary-blue),var(--accent-purple));border:2px solid #ffffff4d;border-radius:9999px;border-radius:var(--radius-full);box-shadow:0 10px 15px #0000001a,0 4px 6px #0000000d;box-shadow:var(--shadow-lg);color:#fff;font-family:JetBrains Mono,Fira Code,monospace;font-family:var(--font-mono);font-size:2rem;font-weight:800;left:50%;padding:1rem 2rem;padding:var(--space-md) var(--space-xl);position:absolute;top:1.5rem;top:var(--space-lg);transform:translateX(-50%)}@keyframes countdownPulse{0%,to{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.1)}}.button{align-items:center;border:none;border-radius:9999px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;font-family:Poppins,-apple-system,system-ui,sans-serif;font-family:var(--font-primary);font-size:1rem;font-weight:600;gap:.75rem;gap:var(--space-sm);justify-content:center;min-height:52px;overflow:hidden;padding:1rem 2rem;padding:var(--space-md) var(--space-xl);position:relative;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);transition:all var(--transition-normal)}.button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s cubic-bezier(.4,0,.2,1);transition:left var(--transition-slow);width:100%}.button:hover:before{left:100%}.button:disabled{cursor:not-allowed;opacity:.6;transform:none!important}.button:focus{outline:2px solid #4f46e5;outline:2px solid var(--primary-blue);outline-offset:2px}.button-primary{background:linear-gradient(135deg,#4f46e5,#8b5cf6);background:linear-gradient(135deg,var(--primary-blue),var(--accent-purple));box-shadow:0 4px 6px #00000012,0 2px 4px #0000000f;box-shadow:var(--shadow-md);color:#fff}.button-primary:hover:not(:disabled){box-shadow:0 10px 15px #0000001a,0 4px 6px #0000000d,0 0 20px #4f46e566;box-shadow:var(--shadow-lg),0 0 20px #4f46e566;transform:translateY(-2px)}.button-primary:active{transform:translateY(0)}.button-secondary{background:#fff;background:var(--surface-primary);border:2px solid #d4d4d8;border:2px solid var(--gray-300);box-shadow:0 1px 3px #0000001f,0 1px 2px #0000003d;box-shadow:var(--shadow-sm);color:#3f3f46;color:var(--gray-700)}.button-secondary:hover:not(:disabled){background:#fafafa;background:var(--gray-50);border-color:#4f46e5;border-color:var(--primary-blue);box-shadow:0 4px 6px #00000012,0 2px 4px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-1px)}.button-large{font-size:1.125rem;min-height:60px;padding:1.5rem 3rem;padding:var(--space-lg) var(--space-2xl)}.controls{display:flex;flex-wrap:wrap;gap:1.5rem;gap:var(--space-lg);justify-content:center;margin-top:2rem;margin-top:var(--space-xl)}.loading{align-items:center;display:flex;flex-direction:column;gap:2rem;gap:var(--space-xl);padding:4rem;padding:var(--space-3xl)}.spinner{animation:spin 1s linear infinite;border:4px solid #e4e4e7;border-top:4px solid #4f46e5;border:4px solid var(--gray-200);border-radius:50%;border-top-color:var(--primary-blue);height:64px;position:relative;width:64px}.spinner:after{animation:pulse 1.5s ease-in-out infinite;background:#4f46e5;background:var(--primary-blue);border-radius:50%;content:"";height:24px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:24px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:.5;transform:translate(-50%,-50%) scale(.8)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}}.loading-text{text-align:center}.loading-text h3{color:#18181b;color:var(--gray-900);font-size:1.5rem;font-weight:600;margin-bottom:.75rem;margin-bottom:var(--space-sm)}.loading-text p{color:#52525b;color:var(--gray-600);font-size:1rem}.results{margin-top:4rem;margin-top:var(--space-3xl)}.results-header{margin-bottom:3rem;margin-bottom:var(--space-2xl);text-align:center}.results-title{color:#1a1d29;color:var(--primary-navy);font-size:2rem;font-weight:700;margin-bottom:1.5rem;margin-bottom:var(--space-lg)}.consensus-result{align-items:center;border-radius:9999px;border-radius:var(--radius-full);display:inline-flex;font-size:1.25rem;font-weight:700;gap:1rem;gap:var(--space-md);overflow:hidden;padding:1.5rem 3rem;padding:var(--space-lg) var(--space-2xl);position:relative}.consensus-result:before{background:inherit;bottom:0;content:"";left:0;opacity:.1;position:absolute;right:0;top:0;z-index:-1}.consensus-result.over-18{background:linear-gradient(135deg,#10b981,#059669);background:linear-gradient(135deg,var(--accent-emerald),#059669);box-shadow:0 8px 32px #10b9814d;color:#fff}.consensus-result.under-18{background:linear-gradient(135deg,#f43f5e,#dc2626);background:linear-gradient(135deg,var(--accent-rose),#dc2626);box-shadow:0 8px 32px #f43f5e4d;color:#fff}.models-grid{grid-gap:2rem;grid-gap:var(--space-xl);display:grid;gap:2rem;gap:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));margin-top:3rem;margin-top:var(--space-2xl)}.model-card{background:#fff;background:var(--surface-primary);border:1px solid #e4e4e7;border:1px solid var(--gray-200);border-radius:16px;border-radius:var(--radius-lg);overflow:hidden;padding:2rem;padding:var(--space-xl);position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);transition:all var(--transition-normal)}.model-card:before{background:linear-gradient(90deg,#d4d4d8,#a1a1aa);background:linear-gradient(90deg,var(--gray-300),var(--gray-400));content:"";height:4px;left:0;position:absolute;right:0;top:0;transition:background .3s cubic-bezier(.4,0,.2,1);transition:background var(--transition-normal)}.model-card:hover{border-color:#4f46e5;border-color:var(--primary-blue);box-shadow:0 10px 15px #0000001a,0 4px 6px #0000000d;box-shadow:var(--shadow-lg);transform:translateY(-4px)}.model-card.over-18{background:linear-gradient(135deg,#10b98105,#10b9810d);border-color:#10b9814d}.model-card.over-18:before{background:linear-gradient(90deg,#10b981,#059669);background:linear-gradient(90deg,var(--accent-emerald),#059669)}.model-card.under-18{background:linear-gradient(135deg,#f43f5e05,#f43f5e0d);border-color:#f43f5e4d}.model-card.under-18:before{background:linear-gradient(90deg,#f43f5e,#dc2626);background:linear-gradient(90deg,var(--accent-rose),#dc2626)}.model-name{color:#1a1d29;color:var(--primary-navy);font-size:1.25rem;font-weight:700;margin-bottom:1.5rem;margin-bottom:var(--space-lg);padding-bottom:.75rem;padding-bottom:var(--space-sm);position:relative;text-transform:capitalize}.model-name:after{background:#4f46e5;background:var(--primary-blue);border-radius:9999px;border-radius:var(--radius-full);bottom:0;content:"";height:2px;left:0;position:absolute;width:40px}.model-details{display:flex;flex-direction:column;gap:1rem;gap:var(--space-md)}.detail-row{align-items:center;border-bottom:1px solid #f4f4f5;border-bottom:1px solid var(--gray-100);display:flex;justify-content:space-between;padding:.75rem 0;padding:var(--space-sm) 0}.detail-row:last-child{border-bottom:none}.detail-label{color:#52525b;color:var(--gray-600);font-size:.9rem;font-weight:500;letter-spacing:.01em}.detail-value{color:#18181b;color:var(--gray-900);font-weight:600}.age-value{font-family:JetBrains Mono,Fira Code,monospace;font-family:var(--font-mono);font-size:1.25rem;font-weight:800}.age-value.over-18{color:#10b981;color:var(--accent-emerald)}.age-value.under-18{color:#f43f5e;color:var(--accent-rose)}.status-badge{align-items:center;border-radius:9999px;border-radius:var(--radius-full);display:inline-flex;font-size:.8rem;font-weight:600;gap:.5rem;gap:var(--space-xs);padding:.5rem .75rem;padding:var(--space-xs) var(--space-sm)}.status-badge.over-18{background:#10b9811a;color:#10b981;color:var(--accent-emerald)}.status-badge.under-18{background:#f43f5e1a;color:#f43f5e;color:var(--accent-rose)}.confidence-bar{background:#e4e4e7;background:var(--gray-200);height:8px;overflow:hidden;width:100%}.confidence-bar,.confidence-bar .fill{border-radius:9999px;border-radius:var(--radius-full);position:relative}.confidence-bar .fill{background:linear-gradient(90deg,#4f46e5,#8b5cf6);background:linear-gradient(90deg,var(--primary-blue),var(--accent-purple));height:100%;transition:width .5s cubic-bezier(.4,0,.2,1);transition:width var(--transition-slow)}.confidence-bar .fill:after{animation:shimmer 2s ease-in-out infinite;background:linear-gradient(90deg,#0000,#ffffff4d,#0000);bottom:0;content:"";left:0;position:absolute;right:0;top:0}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.error-message{background:linear-gradient(135deg,#f43f5e0d,#f43f5e1a);border:2px solid #f43f5e33;border-radius:16px;border-radius:var(--radius-lg);color:#f43f5e;color:var(--accent-rose);margin-top:2rem;margin-top:var(--space-xl);padding:2rem;padding:var(--space-xl);position:relative;text-align:center}.error-message:before{background:#fff;background:var(--surface-primary);border-radius:9999px;border-radius:var(--radius-full);content:"⚠️";font-size:1.5rem;left:50%;padding:.75rem;padding:var(--space-sm);position:absolute;top:-15px;transform:translateX(-50%)}.error-message h3{font-size:1.25rem;margin-bottom:1rem;margin-bottom:var(--space-md)}@media(max-width:768px){.app{padding:1rem;padding:var(--space-md)}.card{padding:2rem;padding:var(--space-xl)}.title{font-size:2rem}.subtitle{font-size:1rem}.models-grid{gap:1.5rem;gap:var(--space-lg);grid-template-columns:1fr}.controls{align-items:center;flex-direction:column}.camera-container{max-width:400px;width:100%}.face-guide{height:200px;width:160px}}@media(max-width:480px){.card{padding:1.5rem;padding:var(--space-lg)}.title{font-size:1.75rem}.camera-container{max-width:320px}.face-guide{height:180px;width:140px}}.camera-selection{margin-bottom:2rem;margin-bottom:var(--space-xl);text-align:center}.camera-select{background:#fff;background:var(--surface-primary);border:2px solid #d4d4d8;border:2px solid var(--gray-300);border-radius:16px;border-radius:var(--radius-lg);color:#3f3f46;color:var(--gray-700);cursor:pointer;display:inline-block;font-size:1rem;font-weight:500;margin-bottom:1.5rem;margin-bottom:var(--space-lg);padding:1rem 1.5rem;padding:var(--space-md) var(--space-lg);transition:all .3s cubic-bezier(.4,0,.2,1);transition:all var(--transition-normal)}.camera-select:focus{box-shadow:0 0 0 3px #4f46e51a;outline:none}.camera-select:focus,.camera-select:hover{border-color:#4f46e5;border-color:var(--primary-blue)}
/*# sourceMappingURL=main.f3b7d05d.css.map*/