.header{background:var(--secondary-bg);border-bottom:1px solid var(--border-color);padding:1.5rem 2rem;position:relative}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:2rem}.logo-section{flex:1}.app-title{font-size:2rem;font-weight:700;color:var(--primary-text);margin-bottom:.25rem;letter-spacing:-.02em}.app-subtitle{color:var(--secondary-text);font-size:.95rem;font-weight:400;margin:0}.brand-section{display:flex;align-items:center}.brand-info{text-align:right;display:flex;flex-direction:column;align-items:flex-end}.powered-by{font-size:.75rem;color:var(--secondary-text);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.brand-name{font-size:1.25rem;font-weight:600;color:var(--accent-color);letter-spacing:.02em}.privacy-badge{position:absolute;bottom:-1px;left:50%;transform:translate(-50%);background:var(--primary-bg);border:1px solid var(--border-color);border-top:none;border-radius:0 0 8px 8px;padding:.5rem 1rem;display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--secondary-text)}.privacy-icon{font-size:.9rem}.privacy-text{font-weight:500}@media (max-width: 1024px){.header-content{flex-direction:column;gap:1rem;text-align:center}.brand-info{align-items:center;text-align:center}}@media (max-width: 768px){.header{padding:1rem}.app-title{font-size:1.5rem}.app-subtitle{font-size:.9rem}.brand-name{font-size:1.1rem}.privacy-badge{position:static;transform:none;margin-top:1rem;border-radius:8px;border:1px solid var(--border-color);justify-content:center}}@media (max-width: 480px){.header{padding:.75rem}.app-title{font-size:1.25rem}.app-subtitle{font-size:.85rem}.privacy-badge{padding:.4rem .75rem;font-size:.75rem}}.webcam-container{display:flex;flex-direction:column;height:100%}.webcam-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.webcam-title{font-size:1.25rem;font-weight:600;color:var(--primary-text);margin:0}.webcam-status{display:flex;align-items:center}.status-indicator{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;padding:.25rem .75rem;border-radius:20px;border:1px solid}.status-indicator.face-detected{color:var(--success-color);border-color:var(--success-color);background:#00ff881a}.status-indicator.no-face{color:var(--warning-color);border-color:var(--warning-color);background:#ffaa001a}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 2s infinite}.video-container{position:relative;flex:1;background:var(--accent-bg);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:300px}.webcam-video{width:100%;height:100%;object-fit:cover;border-radius:8px}.detection-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.webcam-placeholder{text-align:center;padding:2rem;color:var(--secondary-text)}.webcam-placeholder h4{font-size:1.1rem;margin-bottom:.5rem;color:var(--primary-text)}.webcam-placeholder p{font-size:.9rem;margin:0}.webcam-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--secondary-text)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top:3px solid var(--accent-color);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.webcam-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--error-color);max-width:300px}.error-icon{font-size:2rem;margin-bottom:1rem}.webcam-error p{font-size:.9rem;margin:0;line-height:1.4}.webcam-controls{margin-top:1rem;display:flex;flex-direction:column;align-items:center;gap:.75rem}.webcam-toggle{background:var(--accent-color);color:var(--primary-bg);padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:.95rem;transition:all .2s ease;border:1px solid var(--accent-color);display:flex;align-items:center;gap:.5rem;min-width:160px;justify-content:center}.webcam-toggle:hover:not(:disabled){background:transparent;color:var(--accent-color);transform:translateY(-1px)}.webcam-toggle:active:not(:disabled){transform:translateY(0)}.webcam-toggle:disabled{opacity:.6;cursor:not-allowed;transform:none}.webcam-toggle.active{background:var(--error-color);border-color:var(--error-color)}.webcam-toggle.active:hover:not(:disabled){background:transparent;color:var(--error-color)}.button-icon{font-size:1rem}.models-loading{color:var(--secondary-text);font-size:.85rem;text-align:center;margin:0}.webcam-info{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}@media (max-width: 768px){.webcam-header{flex-direction:column;align-items:flex-start;gap:.5rem}.webcam-title{font-size:1.1rem}.video-container{min-height:250px}.placeholder-icon{font-size:2.5rem}.webcam-toggle{padding:.6rem 1.2rem;font-size:.9rem;min-width:140px}}@media (max-width: 480px){.webcam-header{margin-bottom:.75rem}.webcam-title{font-size:1rem}.status-indicator{font-size:.8rem;padding:.2rem .6rem}.video-container{min-height:200px}.placeholder-icon{font-size:2rem}.webcam-placeholder h4{font-size:1rem}.webcam-placeholder p{font-size:.85rem}.webcam-toggle{padding:.5rem 1rem;font-size:.85rem;min-width:120px}.info-item{font-size:.75rem}}.emotion-display{display:flex;flex-direction:column;height:100%}.emotion-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.emotion-title{font-size:1.25rem;font-weight:600;color:var(--primary-text);margin:0}.emotion-status{font-size:.8rem;font-weight:600;padding:.25rem .75rem;border-radius:20px;border:1px solid}.emotion-status.active{color:var(--success-color);border-color:var(--success-color);background:#00ff881a}.emotion-status.inactive{color:var(--secondary-text);border-color:var(--border-color);background:var(--accent-bg)}.emotion-status.searching{color:var(--warning-color);border-color:var(--warning-color);background:#ffaa001a;animation:pulse 2s infinite}.emotion-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--secondary-text);padding:2rem 1rem}.placeholder-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.emotion-placeholder h4{font-size:1.1rem;margin-bottom:.5rem;color:var(--primary-text)}.emotion-placeholder p{font-size:.9rem;margin:0}.current-emotion{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:var(--accent-bg);border-radius:8px;border:1px solid var(--border-color)}.emotion-icon{font-size:2.5rem;flex-shrink:0}.emotion-details{flex:1}.emotion-name{font-size:1.25rem;font-weight:600;margin:0 0 .25rem}.emotion-description{font-size:.9rem;color:var(--secondary-text);margin:0;line-height:1.4}.confidence-section{margin-bottom:1.5rem}.confidence-title{font-size:.9rem;font-weight:600;color:var(--primary-text);margin:0 0 .75rem}.confidence-bar{height:8px;background:var(--border-color);border-radius:4px;overflow:hidden;margin-bottom:.5rem}.confidence-fill{height:100%;border-radius:4px;transition:width .3s ease}.confidence-text{font-size:.85rem;color:var(--secondary-text);font-weight:600}.all-emotions{margin-bottom:1.5rem}.all-emotions-title{font-size:.9rem;font-weight:600;color:var(--primary-text);margin:0 0 1rem}.emotion-list{display:flex;flex-direction:column;gap:.75rem}.emotion-item{background:var(--accent-bg);border:1px solid var(--border-color);border-radius:6px;padding:.75rem}.emotion-item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.emotion-item-icon{font-size:1rem;flex-shrink:0}.emotion-item-name{flex:1;font-size:.85rem;font-weight:500;color:var(--primary-text)}.emotion-item-confidence{font-size:.8rem;color:var(--secondary-text);font-weight:600}.emotion-item-bar{height:4px;background:var(--border-color);border-radius:2px;overflow:hidden}.emotion-item-fill{height:100%;border-radius:2px;transition:width .3s ease}.emotion-info{margin-top:auto;display:flex;flex-direction:column;gap:.5rem}@media (max-width: 768px){.emotion-header{margin-bottom:1rem}.emotion-title{font-size:1.1rem}.current-emotion{padding:.75rem;gap:.75rem}.emotion-icon{font-size:2rem}.emotion-name{font-size:1.1rem}.placeholder-icon{font-size:2.5rem}.emotion-placeholder h4{font-size:1rem}}@media (max-width: 480px){.emotion-header{flex-direction:column;align-items:flex-start;gap:.5rem}.emotion-title{font-size:1rem}.emotion-status{font-size:.75rem;padding:.2rem .6rem}.current-emotion{padding:.6rem;gap:.6rem}.emotion-icon{font-size:1.75rem}.emotion-name{font-size:1rem}.emotion-description{font-size:.85rem}.placeholder-icon{font-size:2rem}.emotion-placeholder h4{font-size:.95rem}.emotion-placeholder p{font-size:.85rem}.emotion-item{padding:.6rem}.emotion-item-name{font-size:.8rem}.emotion-item-confidence,.info-item{font-size:.75rem}}.emotion-history{display:flex;flex-direction:column;height:100%}.history-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.history-title-section{display:flex;align-items:center;gap:.75rem}.history-title{font-size:1.25rem;font-weight:600;color:var(--primary-text);margin:0}.history-count{font-size:.8rem;color:var(--secondary-text);background:var(--accent-bg);padding:.25rem .5rem;border-radius:12px;border:1px solid var(--border-color)}.history-controls{display:flex;gap:.5rem}.clear-history-btn,.expand-history-btn{background:var(--accent-bg);border:1px solid var(--border-color);border-radius:6px;padding:.5rem;color:var(--secondary-text);transition:all .2s ease;display:flex;align-items:center;justify-content:center}.clear-history-btn:hover,.expand-history-btn:hover{border-color:var(--accent-color);color:var(--accent-color);transform:translateY(-1px)}.clear-icon,.expand-icon{font-size:.9rem}.history-stats{background:var(--accent-bg);border:1px solid var(--border-color);border-radius:8px;padding:1rem;margin-bottom:1rem;display:flex;flex-direction:column;gap:.5rem}.stat-item{display:flex;justify-content:space-between;align-items:center}.stat-label{font-size:.85rem;color:var(--secondary-text)}.stat-value{font-size:.9rem;font-weight:600;color:var(--primary-text)}.history-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--secondary-text);padding:2rem 1rem}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.history-empty h4{font-size:1.1rem;margin-bottom:.5rem;color:var(--primary-text)}.history-empty p{font-size:.9rem;margin:0;line-height:1.4}.history-list{flex:1;overflow-y:auto;max-height:400px}.history-list.expanded{max-height:none}.history-item{background:var(--accent-bg);border:1px solid var(--border-color);border-radius:8px;padding:1rem;margin-bottom:.75rem;transition:all .2s ease}.history-item:hover{border-color:var(--accent-color);transform:translateY(-1px)}.history-item-main{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.history-emotion-icon{font-size:1.5rem;flex-shrink:0}.history-item-details{flex:1}.history-emotion-name{font-size:.95rem;font-weight:600;color:var(--primary-text);margin-bottom:.25rem}.history-confidence{font-size:.8rem;color:var(--secondary-text)}.history-timestamp{font-size:.8rem;color:var(--secondary-text);flex-shrink:0}.history-confidence-bar{height:4px;background:var(--border-color);border-radius:2px;overflow:hidden}.history-confidence-fill{height:100%;border-radius:2px;transition:width .3s ease}.history-more{text-align:center;padding:1rem}.show-more-btn{background:var(--accent-bg);border:1px solid var(--border-color);border-radius:6px;padding:.5rem 1rem;color:var(--secondary-text);font-size:.85rem;transition:all .2s ease}.show-more-btn:hover{border-color:var(--accent-color);color:var(--accent-color);transform:translateY(-1px)}.history-info{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.info-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--secondary-text)}.info-icon{font-size:.9rem}.info-text{flex:1}.history-list::-webkit-scrollbar{width:6px}.history-list::-webkit-scrollbar-track{background:var(--secondary-bg);border-radius:3px}.history-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.history-list::-webkit-scrollbar-thumb:hover{background:var(--accent-color)}@media (max-width: 768px){.history-header{margin-bottom:.75rem}.history-title{font-size:1.1rem}.history-stats,.history-item{padding:.75rem}.history-item-main{gap:.6rem}.history-emotion-icon{font-size:1.25rem}.empty-icon{font-size:2.5rem}.history-empty h4{font-size:1rem}}@media (max-width: 480px){.history-header{flex-direction:column;align-items:flex-start;gap:.5rem}.history-title{font-size:1rem}.history-controls{align-self:flex-end}.history-stats{padding:.6rem}.stat-item{flex-direction:column;align-items:flex-start;gap:.25rem}.history-item{padding:.6rem}.history-item-main{gap:.5rem}.history-emotion-icon{font-size:1.1rem}.history-emotion-name{font-size:.9rem}.history-confidence,.history-timestamp{font-size:.75rem}.empty-icon{font-size:2rem}.history-empty h4{font-size:.95rem}.history-empty p{font-size:.85rem}.show-more-btn{padding:.4rem .8rem;font-size:.8rem}.info-item{font-size:.75rem}}.loading-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--primary-bg);padding:2rem}.loading-content{text-align:center;max-width:500px;width:100%}.loading-logo{margin-bottom:2rem}.logo-circle{width:80px;height:80px;border:2px solid var(--accent-color);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto;animation:pulse 2s infinite}.logo-text{font-size:1.5rem;font-weight:700;color:var(--accent-color)}.loading-title{font-size:2rem;font-weight:700;color:var(--primary-text);margin-bottom:.5rem;letter-spacing:-.02em}.loading-subtitle{color:var(--secondary-text);font-size:1rem;margin-bottom:2rem}.loading-progress{margin-bottom:2rem;display:flex;align-items:center;gap:1rem}.progress-bar{flex:1;height:6px;background:var(--border-color);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:var(--accent-color);border-radius:3px;transition:width .3s ease}.progress-text{font-size:.9rem;color:var(--secondary-text);font-weight:600;min-width:40px}.loading-message{color:var(--secondary-text);font-size:.95rem;margin-bottom:2rem;min-height:1.5em}.loading-features{display:flex;flex-direction:column;gap:.75rem}.feature-item{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.75rem;background:var(--secondary-bg);border:1px solid var(--border-color);border-radius:8px;transition:all .2s ease}.feature-item:hover{border-color:var(--accent-color);transform:translateY(-1px)}.feature-icon{font-size:1.1rem}.feature-text{color:var(--secondary-text);font-size:.9rem;font-weight:500}@media (max-width: 768px){.loading-container{padding:1rem}.loading-title{font-size:1.5rem}.logo-circle{width:60px;height:60px}.logo-text{font-size:1.25rem}.loading-features{gap:.5rem}.feature-item{padding:.5rem}}@media (max-width: 480px){.loading-title{font-size:1.25rem}.loading-subtitle{font-size:.9rem}.loading-message{font-size:.85rem}.feature-text{font-size:.8rem}}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.content-grid{display:grid;grid-template-columns:1fr 400px;gap:2rem;margin-bottom:2rem}.webcam-section{background:var(--secondary-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;min-height:500px;display:flex;flex-direction:column}.emotion-section{background:var(--secondary-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;height:fit-content}.history-section{background:var(--secondary-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem}.error-container{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.error-message{text-align:center;max-width:500px;background:var(--secondary-bg);border:1px solid var(--error-color);border-radius:12px;padding:2rem}.error-message h2{color:var(--error-color);margin-bottom:1rem;font-size:1.5rem}.error-message p{margin-bottom:1.5rem;color:var(--secondary-text);line-height:1.6}.retry-button{background:var(--accent-color);color:var(--primary-bg);padding:.75rem 1.5rem;border-radius:8px;font-weight:600;transition:all .2s ease;border:1px solid var(--accent-color)}.retry-button:hover{background:transparent;color:var(--accent-color);transform:translateY(-1px)}.retry-button:active{transform:translateY(0)}@media (max-width: 1200px){.content-grid{grid-template-columns:1fr 350px;gap:1.5rem}}@media (max-width: 1024px){.content-grid{grid-template-columns:1fr;gap:1.5rem}.emotion-section{order:-1}}@media (max-width: 768px){.main-content{padding:1rem}.content-grid{gap:1rem}.webcam-section,.emotion-section,.history-section{padding:1rem}.webcam-section{min-height:400px}}@media (max-width: 480px){.main-content{padding:.5rem}.webcam-section,.emotion-section,.history-section{padding:.75rem;border-radius:8px}.webcam-section{min-height:350px}}*{margin:0;padding:0;box-sizing:border-box}:root{--primary-bg: #000000;--secondary-bg: #111111;--accent-bg: #1a1a1a;--primary-text: #ffffff;--secondary-text: #cccccc;--accent-color: #ffffff;--border-color: #333333;--success-color: #00ff88;--error-color: #ff4444;--warning-color: #ffaa00;--grid-size: 20px;--grid-color: rgba(255, 255, 255, .03)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--primary-bg);color:var(--primary-text);line-height:1.6;overflow-x:hidden}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(var(--grid-color) 1px,transparent 1px),linear-gradient(90deg,var(--grid-color) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);z-index:-1;pointer-events:none}#root{min-height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--secondary-bg)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-color)}*:focus{outline:2px solid var(--accent-color);outline-offset:2px}button{background:none;border:none;cursor:pointer;font-family:inherit}.fade-in{animation:fadeIn .3s ease-in-out}.slide-up{animation:slideUp .3s ease-out}.pulse{animation:pulse 2s infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@media (max-width: 768px){:root{--grid-size: 15px}}@media (max-width: 480px){:root{--grid-size: 10px}}
