:root{--bg-primary: #0a0a0f;--bg-secondary: #12121a;--bg-glass: rgba(255, 255, 255, .04);--bg-glass-hover: rgba(255, 255, 255, .07);--border-glass: rgba(255, 255, 255, .08);--border-glass-active: rgba(255, 255, 255, .15);--text-primary: #f0f0f5;--text-secondary: #8888a0;--text-muted: #55556a;--accent-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--accent-color: #667eea;--accent-color-alt: #764ba2;--success: #34d399;--warning: #fbbf24;--error: #f87171;--radius: 16px;--radius-sm: 10px;--gap: 24px;--shadow-card: 0 8px 32px rgba(0, 0, 0, .4);--shadow-glow: 0 0 40px rgba(102, 126, 234, .15)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden;background-image:radial-gradient(ellipse at 20% 50%,rgba(102,126,234,.08) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(118,75,162,.06) 0%,transparent 50%)}.header{padding:32px 24px 16px;text-align:center}.header-content{max-width:800px;margin:0 auto}.logo{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:8px}.logo-icon{font-size:36px;filter:drop-shadow(0 0 8px rgba(102,126,234,.4))}.logo h1{font-size:32px;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.subtitle{color:var(--text-secondary);font-size:14px;font-weight:300;letter-spacing:.5px}.status-bar{margin:0 auto 24px;max-width:960px;padding:10px 20px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:10px;font-size:13px;font-weight:500;transition:all .4s ease;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.status-loading{background:#fbbf241a;border:1px solid rgba(251,191,36,.2);color:var(--warning)}.status-ready{background:#34d3991a;border:1px solid rgba(52,211,153,.2);color:var(--success)}.status-error{background:#f871711a;border:1px solid rgba(248,113,113,.2);color:var(--error)}.status-icon{font-size:16px}.main-content{max-width:960px;margin:0 auto;padding:0 24px 48px;display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.panel{background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:var(--shadow-card);overflow:hidden;transition:border-color .3s ease,box-shadow .3s ease}.panel:hover{border-color:var(--border-glass-active);box-shadow:var(--shadow-card),var(--shadow-glow)}.panel-header{padding:16px 20px;border-bottom:1px solid var(--border-glass);display:flex;align-items:center;justify-content:space-between}.panel-header h2{font-size:15px;font-weight:600;color:var(--text-primary)}.video-container{position:relative;aspect-ratio:4 / 3;background:var(--bg-secondary);overflow:hidden}#webcam{width:100%;height:100%;object-fit:cover;display:block}.video-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0a0a0fd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity .5s ease}.video-overlay.hidden{opacity:0;pointer-events:none}.overlay-text{color:var(--text-secondary);font-size:14px;font-weight:500;animation:pulse 2s ease-in-out infinite}.snapshot-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:10;transition:opacity .3s ease}.snapshot-img.hidden{opacity:0;pointer-events:none}.controls-panel{padding:16px 20px;border-top:1px solid var(--border-glass);background:#0a0a0f66;display:flex;justify-content:center;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:var(--radius-sm);font-family:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s ease;border:none;width:100%;max-width:300px}.btn.hidden{display:none}.btn-icon{font-size:18px}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 4px 15px #667eea66}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea99}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--bg-glass);color:var(--text-primary);border:1px solid var(--border-glass-active)}.btn-secondary:hover{background:var(--bg-glass-hover);border-color:var(--text-secondary)}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.fps-badge{background:var(--bg-glass);border:1px solid var(--border-glass);padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600;color:var(--text-secondary);font-variant-numeric:tabular-nums}.results-panel{display:flex;flex-direction:column}.top-prediction{padding:24px 20px;text-align:center;transition:opacity .4s ease,transform .4s ease}.top-prediction.hidden{opacity:.3;transform:scale(.98)}.prediction-label{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);margin-bottom:8px}.prediction-name{font-size:22px;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.3;margin-bottom:16px;word-break:break-word}.confidence-bar-container{height:6px;background:#ffffff0f;border-radius:3px;overflow:hidden;margin-bottom:8px}.confidence-bar{height:100%;background:var(--accent-gradient);border-radius:3px;transition:width .3s ease}.confidence-value{font-size:28px;font-weight:700;color:var(--accent-color);font-variant-numeric:tabular-nums}.top3-section{padding:16px 20px 20px;border-top:1px solid var(--border-glass);flex:1}.top3-section h3{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:12px}.top3-list{display:flex;flex-direction:column;gap:8px}.top3-placeholder{color:var(--text-muted);font-size:13px;text-align:center;padding:20px}.top3-item{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius-sm);transition:background .2s ease,border-color .2s ease}.top3-item:first-child{border-color:#667eea40;background:#667eea0f}.top3-rank{width:24px;height:24px;border-radius:50%;background:var(--bg-glass);border:1px solid var(--border-glass);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--text-secondary);flex-shrink:0}.top3-item:first-child .top3-rank{background:var(--accent-gradient);border:none;color:#fff}.top3-name{flex:1;font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top3-conf{font-size:13px;font-weight:600;color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.top3-bar-bg{width:60px;height:4px;background:#ffffff0f;border-radius:2px;overflow:hidden;flex-shrink:0}.top3-bar-fill{height:100%;background:var(--accent-gradient);border-radius:2px;transition:width .3s ease}.modal{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000000bf;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;transition:opacity .3s ease;padding:20px}.modal.hidden{opacity:0;pointer-events:none}.modal-content{background:var(--bg-secondary);border:1px solid var(--border-glass-active);border-radius:var(--radius);box-shadow:0 16px 64px #00000080,inset 0 1px #ffffff1a;overflow:hidden;max-height:90vh;display:flex;flex-direction:column}.modal-header{padding:20px 24px;border-bottom:1px solid var(--border-glass);display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-size:18px;font-weight:600}.btn-icon-only{background:transparent;border:none;color:var(--text-secondary);font-size:20px;cursor:pointer;transition:color .2s ease;padding:4px}.btn-icon-only:hover{color:var(--text-primary)}.error-content{padding:32px;text-align:center;max-width:400px;border-color:#f8717166}.error-icon{font-size:48px;display:block;margin-bottom:16px}.error-content h3{font-size:18px;margin-bottom:8px;color:var(--error)}.error-content p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:24px}.header-actions{margin-top:16px}.btn-text{background:transparent;border:1px solid var(--border-glass);color:var(--text-secondary);padding:8px 16px;border-radius:20px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-text:hover{background:var(--bg-glass);color:var(--text-primary);border-color:var(--border-glass-active)}.admin-content{width:100%;max-width:800px}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:24px;overflow-y:auto}.admin-section{background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius-sm);padding:20px;display:flex;flex-direction:column}.admin-section h3{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-glass)}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:12px;font-weight:500;color:var(--text-secondary);margin-bottom:8px}input[type=text]{width:100%;background:#0003;border:1px solid var(--border-glass);border-radius:8px;padding:12px 14px;color:var(--text-primary);font-family:inherit;font-size:14px;transition:border-color .2s ease}input[type=text]:focus{outline:none;border-color:var(--accent-color)}.upload-area{position:relative;background:#0003;border:1px dashed var(--border-glass-active);border-radius:8px;height:140px;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:all .2s ease}.upload-area:hover{border-color:var(--accent-color);background:#667eea0d}.upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-muted);font-size:12px;pointer-events:none}.upload-icon{font-size:24px}.hidden-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-preview{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.upload-preview.hidden{display:none}.btn-full{width:100%;max-width:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.training-status{margin-top:16px;padding-top:16px;border-top:1px dashed var(--border-glass)}.training-status.hidden{display:none}.training-text{font-size:12px;color:var(--text-secondary);margin-bottom:8px;text-align:center}.btn-danger-outline{background:transparent;color:var(--error);border:1px solid rgba(248,113,113,.3)}.btn-danger-outline:hover{background:#f871711a;border-color:var(--error)}.mt-auto{margin-top:auto}.admin-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;max-height:250px;overflow-y:auto;padding-right:4px}.admin-empty{color:var(--text-muted);font-size:13px;text-align:center;padding:20px 0}.admin-list-item{display:flex;align-items:center;justify-content:space-between;background:#0003;border:1px solid var(--border-glass);padding:10px 14px;border-radius:8px}.admin-item-name{font-size:13px;font-weight:500;color:var(--text-primary)}.admin-item-count{font-size:11px;color:var(--text-muted);background:var(--bg-glass);padding:2px 6px;border-radius:10px;margin-left:8px}.admin-item-actions{display:flex;gap:8px;align-items:center}.btn-remove,.btn-edit{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;transition:all .2s ease;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center}.btn-remove:hover{background:#f871711a;color:var(--error)}.btn-edit:hover{background:#ffffff0d;color:var(--text-primary)}.admin-list::-webkit-scrollbar{width:4px}.admin-list::-webkit-scrollbar-track{background:#0000001a}.admin-list::-webkit-scrollbar-thumb{background:var(--border-glass-active);border-radius:2px}.prediction-name.uncertain{background:none;-webkit-background-clip:unset;-webkit-text-fill-color:var(--text-muted);background-clip:unset;font-size:16px;font-weight:500}.confidence-value.uncertain{color:var(--text-muted);font-size:22px}.confidence-bar.bar-uncertain{background:#ffffff0f}.top3-item.top3-dim{opacity:.4;border-color:var(--border-glass);background:var(--bg-glass)}.top3-item.top3-dim:first-child{border-color:var(--border-glass);background:var(--bg-glass)}.top3-item.top3-dim:first-child .top3-rank{background:var(--bg-glass);border:1px solid var(--border-glass);color:var(--text-secondary)}@media(max-width:768px){.main-content{grid-template-columns:1fr}.logo h1{font-size:24px}.prediction-name{font-size:18px}.confidence-value{font-size:24px}.header{padding:20px 16px 12px}.main-content{padding:0 16px 32px}}.scanning-indicator{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-secondary);font-size:13px;font-weight:500}.scanner-line{width:200px;height:2px;background:var(--accent-gradient);position:relative;overflow:hidden;border-radius:1px;box-shadow:0 0 10px var(--accent-color)}.scanner-line:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,#fff,transparent);animation:scan 2s infinite ease-in-out}@keyframes scan{0%{left:-100%}to{left:100%}}.history-section{padding:20px;flex:1;display:flex;flex-direction:column;min-height:0}.history-list{display:flex;flex-direction:column;gap:12px;margin-top:16px;overflow-y:auto;max-height:400px;padding-right:8px}.history-item{display:flex;align-items:center;gap:16px;padding:12px;background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius-sm);cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);animation:slideIn .4s ease-out}.history-item:hover{background:var(--bg-glass-hover);border-color:var(--border-glass-active);transform:translate(4px)}.history-item-img{width:50px;height:50px;border-radius:8px;object-fit:cover;border:1px solid var(--border-glass)}.history-item-info{flex:1}.history-item-name{display:block;font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.history-item-time{font-size:11px;color:var(--text-muted)}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.recognition-content{max-width:450px;width:100%;border-color:var(--accent-color);box-shadow:0 0 50px #667eea4d}.modal-body{padding:24px}.modal-main-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);margin-bottom:20px;border:1px solid var(--border-glass-active)}.confidence-tag{display:inline-block;padding:6px 12px;background:#34d3991a;color:var(--success);border-radius:20px;font-size:13px;font-weight:600}.modal-footer{padding:20px 24px 24px;border-top:1px solid var(--border-glass)}.btn-text-small{background:transparent;border:none;color:var(--text-muted);font-size:12px;cursor:pointer;text-decoration:underline;margin-bottom:12px}.hidden{display:none!important}
