@import"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&display=swap";:root{--color-primary: #4A90E2;--color-primary-light: #6FB1FF;--color-primary-dark: #2E6FBF;--color-secondary: #9B59B6;--color-success: #7ED321;--color-success-light: #A5E85C;--color-warning: #F5A623;--color-danger: #D0021B;--color-bg: #F0F4FF;--color-bg-gradient: linear-gradient(135deg, #E8EEFF 0%, #F0F4FF 50%, #F5F0FF 100%);--color-card: #FFFFFF;--color-text: #2C3E50;--color-text-light: #FFFFFF;--color-muted: #7F8C8D;--color-border: #E0E6EF;--font-family: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--border-radius: 16px;--border-radius-sm: 10px;--border-radius-xs: 6px;--shadow: 0 4px 20px rgba(74, 144, 226, .15);--shadow-lg: 0 8px 40px rgba(74, 144, 226, .2);--shadow-card: 0 2px 12px rgba(0, 0, 0, .06);--transition: .3s cubic-bezier(.4, 0, .2, 1);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-family);color:var(--color-text);background:var(--color-bg-gradient);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}img,video,canvas{display:block;max-width:100%}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app-shell{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);position:relative}.screen{display:none;width:100%;max-width:900px;margin:0 auto}.screen.is-visible{display:flex;flex-direction:column;align-items:center;animation:screenFadeIn .4s ease forwards}@keyframes screenFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--color-card);border-radius:var(--border-radius);box-shadow:var(--shadow-card);padding:var(--spacing-xl);width:100%;border:1px solid var(--color-border);transition:box-shadow var(--transition),transform var(--transition)}.card:hover{box-shadow:var(--shadow)}h1{font-size:2rem;font-weight:800;line-height:1.2;color:var(--color-text);margin-bottom:var(--spacing-sm)}h2{font-size:1.5rem;font-weight:700;line-height:1.3;margin-bottom:var(--spacing-sm)}h3{font-size:1.25rem;font-weight:600;line-height:1.4;margin-bottom:var(--spacing-sm)}.muted{color:var(--color-muted);font-size:.95rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:14px 28px;border:none;border-radius:var(--border-radius-sm);font-weight:600;font-size:1rem;cursor:pointer;transition:all var(--transition);text-decoration:none;line-height:1;position:relative;overflow:hidden}.btn:after{content:"";position:absolute;inset:0;background:#ffffff26;opacity:0;transition:opacity .2s ease}.btn:hover:after{opacity:1}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:var(--color-text-light);box-shadow:0 4px 15px #4a90e259}.btn-primary:hover{box-shadow:0 6px 22px #4a90e273;transform:translateY(-1px)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn-primary:disabled:after{display:none}.btn-secondary{background:var(--color-card);color:var(--color-primary);border:2px solid var(--color-primary);box-shadow:none}.btn-secondary:hover{background:var(--color-primary);color:var(--color-text-light)}.btn-success{background:linear-gradient(135deg,var(--color-success) 0%,#5CB818 100%);color:var(--color-text-light);box-shadow:0 4px 15px #7ed32159}.btn-danger{background:transparent;color:var(--color-danger);border:1.5px solid var(--color-danger);padding:8px 14px;font-size:.85rem}.btn-danger:hover{background:var(--color-danger);color:var(--color-text-light)}.btn-sm{padding:8px 16px;font-size:.85rem;border-radius:var(--border-radius-xs)}.btn-icon{width:40px;height:40px;padding:0;border-radius:50%;font-size:1.2rem;background:var(--color-card);border:1.5px solid var(--color-border);color:var(--color-muted)}.btn-icon:hover{border-color:var(--color-primary);color:var(--color-primary)}.input-label{display:block;font-size:.85rem;font-weight:600;color:var(--color-muted);margin-bottom:var(--spacing-xs);text-transform:uppercase;letter-spacing:.5px}input[type=text],input[type=number]{width:100%;padding:14px 18px;border:2px solid var(--color-border);border-radius:var(--border-radius-sm);background:var(--color-bg);font-size:1rem;font-weight:500;transition:border-color var(--transition),box-shadow var(--transition);outline:none}input[type=text]:focus,input[type=number]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px #4a90e21f;background:var(--color-card)}input[type=text]::placeholder{color:var(--color-muted);font-weight:400}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:50px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge-collecting{background:#f5a6231f;color:var(--color-warning)}.badge-training{background:#4a90e21f;color:var(--color-primary)}.badge-trained{background:#7ed3211f;color:var(--color-success)}.progress-container{width:100%;height:16px;background:var(--color-bg);border-radius:50px;overflow:hidden;border:1px solid var(--color-border)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary) 0%,var(--color-primary-light) 100%);border-radius:50px;transition:width .5s ease;min-width:0}.toast-container{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:8px}.toast{padding:14px 20px;border-radius:var(--border-radius-sm);font-weight:500;font-size:.9rem;box-shadow:var(--shadow-lg);transform:translate(120%);transition:transform .4s cubic-bezier(.4,0,.2,1);max-width:360px}.toast.is-visible{transform:translate(0)}.toast-success{background:var(--color-success);color:#fff}.toast-error{background:var(--color-danger);color:#fff}.toast-info{background:var(--color-primary);color:#fff}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9000;opacity:0;pointer-events:none;transition:opacity .3s ease;padding:var(--spacing-md)}.modal-overlay.is-visible{opacity:1;pointer-events:auto}.modal-content{background:var(--color-card);border-radius:var(--border-radius);padding:var(--spacing-2xl);text-align:center;max-width:400px;width:100%;box-shadow:var(--shadow-lg);transform:scale(.9);transition:transform .3s ease}.modal-overlay.is-visible .modal-content{transform:scale(1)}.modal-emoji{font-size:4rem;margin-bottom:var(--spacing-md)}.modal-title{font-size:1.5rem;font-weight:700;margin-bottom:var(--spacing-sm)}.zeki-character{font-size:5rem;line-height:1;user-select:none;margin-bottom:var(--spacing-md)}.text-center{text-align:center}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.w-full{width:100%}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}.top-bar{display:flex;align-items:center;gap:var(--spacing-md);width:100%;margin-bottom:var(--spacing-lg)}.top-bar h2{margin-bottom:0;flex:1}@media(max-width:600px){:root{--spacing-xl: 20px;--spacing-2xl: 32px}.app-shell{padding:var(--spacing-sm);align-items:flex-start;padding-top:var(--spacing-md)}h1{font-size:1.5rem}h2{font-size:1.25rem}.card{padding:var(--spacing-lg);border-radius:var(--border-radius-sm)}.btn{padding:12px 20px;font-size:.9rem}.zeki-character{font-size:3.5rem}}@media(max-width:360px){.app-shell{padding:var(--spacing-xs)}.card{padding:var(--spacing-md)}}.welcome-card{max-width:440px;text-align:center;padding:var(--spacing-2xl) var(--spacing-xl)}.welcome-card .zeki-character{font-size:6rem}.welcome-card h1{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--spacing-xs)}.welcome-card .muted{margin-bottom:var(--spacing-lg)}.welcome-card .input-label{text-align:left}.welcome-card input[type=text]{margin-bottom:var(--spacing-lg)}.welcome-card .btn{width:100%;padding:16px;font-size:1.1rem}#dashboard-screen{max-width:700px}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);padding:var(--spacing-lg) var(--spacing-xl)}.dashboard-header .header-left h2{margin-bottom:2px}.dashboard-header .header-left .muted{font-size:.9rem}#new-project-btn{white-space:nowrap;flex-shrink:0}.dashboard-empty{text-align:center;padding:var(--spacing-2xl)}.dashboard-empty .zeki-character{font-size:4rem;opacity:.7}.dashboard-empty h3{color:var(--color-muted);font-weight:500}.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md);width:100%}@media(max-width:600px){.dashboard-grid{grid-template-columns:1fr}}.project-card{cursor:pointer;padding:var(--spacing-lg);transition:transform var(--transition),box-shadow var(--transition);position:relative;overflow:hidden}.project-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));opacity:0;transition:opacity var(--transition)}.project-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}.project-card:hover:before{opacity:1}.project-card-name{font-size:1.1rem;font-weight:700;margin-bottom:var(--spacing-sm);color:var(--color-text)}.project-card-meta{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;margin-bottom:var(--spacing-sm)}.project-card-stat{font-size:.8rem;color:var(--color-muted);display:flex;align-items:center;gap:3px}.project-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:var(--spacing-sm)}#new-project-screen{max-width:480px}.new-project-form{margin-top:var(--spacing-md)}.new-project-form input[type=text]{margin-bottom:var(--spacing-lg)}.new-project-form .btn{width:100%}#data-collection-screen{max-width:900px}.data-collection-layout{display:grid;grid-template-columns:280px 1fr;gap:var(--spacing-lg);width:100%}@media(max-width:700px){.data-collection-layout{grid-template-columns:1fr}}.classes-panel{display:flex;flex-direction:column;gap:var(--spacing-sm)}.class-item{display:flex;align-items:center;justify-content:space-between;padding:12px var(--spacing-md);border-radius:var(--border-radius-sm);border:2px solid var(--color-border);cursor:pointer;transition:all var(--transition);background:var(--color-card)}.class-item:hover{border-color:var(--color-primary-light)}.class-item.is-selected{border-color:var(--color-primary);background:#4a90e20d;box-shadow:0 0 0 3px #4a90e21a}.class-item-info{display:flex;flex-direction:column}.class-item-name{font-weight:600;font-size:.95rem}.class-item-count{font-size:.8rem;color:var(--color-muted)}.class-item .btn-danger{padding:4px 10px;font-size:.75rem}.classes-panel .btn-secondary{width:100%;margin-top:var(--spacing-xs)}.min-class-warning{font-size:.8rem;color:var(--color-warning);text-align:center;padding:var(--spacing-sm)}.camera-panel{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.camera-viewport{width:224px;height:224px;border-radius:var(--border-radius-sm);overflow:hidden;background:#1a1a2e;border:3px solid var(--color-border);position:relative;display:flex;align-items:center;justify-content:center}.camera-viewport video{width:100%;height:100%;object-fit:cover}.camera-placeholder{color:var(--color-muted);font-size:.85rem;text-align:center;padding:var(--spacing-md)}.camera-placeholder-icon{font-size:2.5rem;margin-bottom:var(--spacing-sm);opacity:.5}.camera-actions{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;justify-content:center}.sample-thumbnails{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;justify-content:center;max-width:100%}.sample-thumb{width:50px;height:50px;border-radius:var(--border-radius-xs);object-fit:cover;border:2px solid var(--color-border);transition:border-color var(--transition)}.sample-thumb:hover{border-color:var(--color-primary)}.data-bottom-bar{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-card);border-radius:var(--border-radius-sm);border:1px solid var(--color-border)}.sample-counter{font-size:.9rem;color:var(--color-muted)}#training-screen{max-width:500px}.training-content{text-align:center;padding:var(--spacing-2xl)}.training-content .zeki-character{font-size:6rem}.training-title{font-size:1.75rem;font-weight:800;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:var(--spacing-lg)}.training-status{color:var(--color-muted);margin-bottom:var(--spacing-lg);font-size:.95rem}.training-progress-label{display:flex;justify-content:space-between;font-size:.85rem;font-weight:600;color:var(--color-text);margin-bottom:var(--spacing-sm)}#test-screen{max-width:700px}.test-header{text-align:center;margin-bottom:var(--spacing-lg)}.test-header h2{font-size:1.75rem}.test-layout{display:grid;grid-template-columns:240px 1fr;gap:var(--spacing-lg);width:100%}@media(max-width:600px){.test-layout{grid-template-columns:1fr}}.test-camera-area{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.prediction-box{text-align:center;padding:var(--spacing-lg);background:linear-gradient(135deg,#4a90e20d,#9b59b60d);border-radius:var(--border-radius-sm);border:2px solid var(--color-border)}.prediction-emoji{font-size:3rem;margin-bottom:var(--spacing-sm)}.prediction-label{font-size:1.5rem;font-weight:800;color:var(--color-text)}.prediction-confidence{font-size:1rem;color:var(--color-primary);font-weight:600;margin-top:4px}.confidence-bars{display:flex;flex-direction:column;gap:var(--spacing-sm);width:100%}.confidence-bar-item{display:flex;align-items:center;gap:var(--spacing-sm)}.confidence-bar-label{width:80px;font-size:.85rem;font-weight:600;text-align:right;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confidence-bar-track{flex:1;height:12px;background:var(--color-bg);border-radius:50px;overflow:hidden}.confidence-bar-fill{height:100%;border-radius:50px;background:linear-gradient(90deg,var(--color-primary),var(--color-primary-light));transition:width .3s ease;min-width:0}.confidence-bar-fill.is-top{background:linear-gradient(90deg,var(--color-success),var(--color-success-light))}.confidence-bar-pct{width:40px;font-size:.8rem;font-weight:600;color:var(--color-muted);flex-shrink:0}.test-score{text-align:center;padding:var(--spacing-md);font-size:1.1rem;font-weight:600}.test-actions{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;justify-content:center;margin-top:var(--spacing-md)}.test-validate-btns{display:flex;gap:var(--spacing-sm);justify-content:center}.btn-correct{background:var(--color-success);color:#fff;border:none}.btn-wrong{background:var(--color-danger);color:#fff;border:none}.camera-error{text-align:center;padding:var(--spacing-xl)}.camera-error-icon{font-size:3rem;margin-bottom:var(--spacing-md)}.camera-error h3{color:var(--color-danger);margin-bottom:var(--spacing-sm)}.camera-error p{color:var(--color-muted);margin-bottom:var(--spacing-lg)}@keyframes bounce{0%,to{transform:translateY(0)}15%{transform:translateY(-18px) rotate(-3deg)}30%{transform:translateY(0) rotate(0)}45%{transform:translateY(-10px) rotate(2deg)}60%{transform:translateY(0)}}.zeki-bounce{animation:bounce 2.5s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.85}}.zeki-pulse{animation:pulse 1.5s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.zeki-spin{animation:spin 2s linear infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .5s ease forwards}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}.fade-out{animation:fadeOut .3s ease forwards}@keyframes scaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.scale-in{animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.slide-up{animation:slideUp .5s ease forwards}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.progress-fill{background-size:200% 100%;background-image:linear-gradient(90deg,var(--color-primary) 0%,var(--color-primary-light) 40%,#B8D4FF 50%,var(--color-primary-light) 60%,var(--color-primary) 100%);animation:shimmer 2s linear infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.float{animation:float 3s ease-in-out infinite}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.shake{animation:shake .4s ease}@keyframes confettiBurst{0%{opacity:1;transform:scale(0) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(180deg)}to{opacity:0;transform:scale(1.5) rotate(360deg)}}.confetti-burst{animation:confettiBurst .8s ease forwards}.stagger-children>*{opacity:0;animation:fadeIn .4s ease forwards}.stagger-children>*:nth-child(1){animation-delay:.05s}.stagger-children>*:nth-child(2){animation-delay:.1s}.stagger-children>*:nth-child(3){animation-delay:.15s}.stagger-children>*:nth-child(4){animation-delay:.2s}.stagger-children>*:nth-child(5){animation-delay:.25s}.stagger-children>*:nth-child(6){animation-delay:.3s}.stagger-children>*:nth-child(7){animation-delay:.35s}.stagger-children>*:nth-child(8){animation-delay:.4s}@keyframes badgeEmoji{0%{transform:scale(0) rotate(-30deg)}50%{transform:scale(1.3) rotate(10deg)}70%{transform:scale(.9) rotate(-5deg)}to{transform:scale(1) rotate(0)}}@keyframes badgeGlow{0%,to{box-shadow:0 0 20px #ffc1074d}50%{box-shadow:0 0 40px #ffc10799,0 0 60px #ffc10733}}@keyframes starBurst{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(3)}}.modal-overlay.is-visible .modal-emoji{animation:badgeEmoji .6s cubic-bezier(.34,1.56,.64,1) forwards}.modal-overlay.is-visible .modal-content{animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1) forwards,badgeGlow 2s ease-in-out infinite .5s}.badge-showcase{display:flex;flex-wrap:wrap;gap:8px;padding:var(--spacing-md) var(--spacing-lg);justify-content:center}.badge-showcase-item{display:flex;flex-direction:column;align-items:center;gap:2px;opacity:.3;transition:opacity var(--transition),transform var(--transition);cursor:default;min-width:56px}.badge-showcase-item.is-earned{opacity:1}.badge-showcase-item:hover{transform:scale(1.15)}.badge-showcase-emoji{font-size:1.8rem;filter:grayscale(100%);transition:filter var(--transition)}.badge-showcase-item.is-earned .badge-showcase-emoji{filter:grayscale(0%)}.badge-showcase-name{font-size:.65rem;color:var(--color-muted);text-align:center;white-space:nowrap}.badge-showcase-item.is-earned .badge-showcase-name{color:var(--color-text);font-weight:600}@keyframes toastIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.toast{animation:toastIn .3s ease forwards}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
