:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:#f5f5f5}h1,h2,h3,h4,h5,h6{font-weight:600;margin:0}button{border-radius:6px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;color:#fff;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}button:disabled{background-color:#ccc;color:#666;cursor:not-allowed}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}button{background-color:#f9f9f9;color:#213547}}.app{min-height:100vh;background-color:#f5f5f5}.app-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.4rem;text-align:center;box-shadow:0 2px 10px #0000001a}.app-header h1{margin:0 0 .5rem;font-size:2.5rem;font-weight:600}.app-header p{margin:0 0 1rem;font-size:1.1rem;opacity:.9}.statistics{margin:1rem 0 0;font-size:.95rem;opacity:.8;background:#ffffff1a;padding:.5rem 1rem;border-radius:20px;display:inline-block}.app-main{max-width:1400px;margin:0 auto;padding:2rem;display:flex;gap:2rem}.loading,.error{display:flex;flex-direction:column;justify-content:center;align-items:center;height:50vh;font-size:1.2rem;text-align:center;padding:2rem}.error{color:#e74c3c}.error button{background:#e74c3c;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:background-color .3s}.error button:hover{background:#c0392b}.loading{color:#667eea}@media (max-width: 768px){.app-main{flex-direction:column;padding:1rem}.app-header h1{font-size:2rem}}.image-card{border:2px solid #ddd;border-radius:8px;overflow:hidden;cursor:pointer;transition:all .3s ease;background:#fff;position:relative}.image-card:hover{border-color:#667eea;transform:translateY(-2px);box-shadow:0 4px 15px #0000001a}.image-card.selected{border-color:#667eea;background:#f0f3ff;box-shadow:0 0 0 2px #667eea4d}.image-card.defective{border-color:#e74c3c;background:#fff5f5}.image-card.defective.selected{border-color:#e74c3c;background:#ffe6e6;box-shadow:0 0 0 2px #e74c3c4d}.image-container{position:relative;height:200px;display:flex;align-items:center;justify-content:center;background:#f8f9fa;overflow:hidden}.main-image{width:100%;height:100%;object-fit:cover;border-radius:4px 4px 0 0}.image-placeholder{display:flex;flex-direction:column;align-items:center;gap:.5rem;color:#666;text-align:center;padding:1rem}.error-text{font-size:.7rem;color:#e74c3c;margin-top:.25rem}.image-icon{font-size:2rem}.folder-id{font-size:.8rem;font-weight:500}.defective-badge{position:absolute;top:.5rem;left:.5rem;background:#e74c3c;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500}.selected-badge{position:absolute;top:.5rem;right:.5rem;background:#667eea;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500}.image-info{padding:.75rem;border-top:1px solid #eee}.filename{font-size:.8rem;color:#333;margin-bottom:.25rem;word-break:break-all}.image-status{font-size:.7rem;color:#666;font-weight:500}.image-card.defective .image-status{color:#e74c3c}.image-card:focus{outline:2px solid #667eea;outline-offset:2px}@media (max-width: 768px){.image-container{height:120px}.image-icon{font-size:1.5rem}.image-info{padding:.5rem}}.image-gallery{flex:1;background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 10px #0000001a;max-height:calc(100vh - 200px);overflow-y:auto}.folder-section{margin-bottom:3rem}.folder-title{margin:0 0 1rem;padding-bottom:.5rem;border-bottom:2px solid #4facfe;color:#333;font-size:1.5rem;display:flex;align-items:center;gap:1rem}.image-count{font-size:.9rem;color:#666;font-weight:400}.defective-count{font-size:.9rem;color:#e74c3c;font-weight:400;background:#ffeaa7;padding:.2rem .5rem;border-radius:4px;margin-left:auto}.images-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-top:1rem}@media (max-width: 768px){.images-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem}.folder-title{font-size:1.2rem;flex-direction:column;align-items:flex-start;gap:.5rem}.defective-count{margin-left:0}}@media (max-width: 480px){.images-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}.export-panel{width:300px;background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 10px #0000001a;height:fit-content;position:sticky;top:2rem}.panel-section{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid #eee}.panel-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.panel-section h3{margin:0 0 .5rem;color:#333;font-size:1.1rem}.panel-section p{margin:0 0 1rem;color:#666;font-size:.9rem}.mark-defective-btn,.export-csv-btn,.download-clean-btn{width:100%;padding:.75rem 1rem;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s ease;margin-bottom:.5rem}.mark-defective-btn{background:#e74c3c;color:#fff}.mark-defective-btn:hover:not(:disabled){background:#c0392b;transform:translateY(-1px)}.export-csv-btn{background:#27ae60;color:#fff}.export-csv-btn:hover:not(:disabled){background:#229954;transform:translateY(-1px)}.download-clean-btn{background:#3498db;color:#fff}.download-clean-btn:hover:not(:disabled){background:#2980b9;transform:translateY(-1px)}.mark-defective-btn:disabled,.export-csv-btn:disabled,.download-clean-btn:disabled{background:#bdc3c7;cursor:not-allowed;transform:none}.download-progress{margin-top:1rem;padding:.5rem;background:#f8f9fa;border-radius:4px;border:1px solid #e9ecef}.progress-bar{width:100%;height:8px;background:#e9ecef;border-radius:4px;overflow:hidden;margin-bottom:.5rem}.progress-fill{height:100%;background:#3498db;transition:width .3s ease;border-radius:4px}.progress-text{margin:.25rem 0;font-size:.8rem;color:#666;font-weight:500}.progress-file{margin:.25rem 0;font-size:.75rem;color:#888;font-family:monospace;word-break:break-all}.warning-text{color:#e74c3c;font-size:.8rem;font-weight:500;margin:.5rem 0 0}.instructions-list{margin:0;padding-left:1.2rem;color:#666;font-size:.8rem;line-height:1.4}.instructions-list li{margin-bottom:.3rem}@media (max-width: 768px){.export-panel{width:100%;position:static;margin-bottom:1rem}}.zip-upload-container{width:100%;max-width:800px;margin:0 auto}.zip-upload-area{border:3px dashed #ccc;border-radius:12px;padding:3rem 2rem;text-align:center;background:#fff;transition:all .3s ease;min-height:300px;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative}.zip-upload-area.drag-over{border-color:#4facfe;background:#f0f9ff;transform:scale(1.02)}.zip-upload-area.processing{pointer-events:none;opacity:.7}.upload-icon{font-size:4rem;margin-bottom:1rem;opacity:.7}.zip-upload-area h3{color:#333;margin:0 0 1rem;font-size:1.8rem}.zip-upload-area p{color:#666;margin:.5rem 0;font-size:1rem}.file-types{font-size:.9rem!important;color:#888!important;font-style:italic}.processing-indicator{margin:1rem 0;display:flex;flex-direction:column;align-items:center;gap:.5rem}.spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #4facfe;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.upload-buttons{display:flex;gap:1rem;margin:1.5rem 0;flex-wrap:wrap;justify-content:center}.file-input{display:none}.browse-button{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff;padding:1rem 2rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;text-decoration:none;display:inline-block;transition:all .3s ease;box-shadow:0 4px 15px #4facfe4d}.browse-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #4facfe66}.browse-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.zip-button{background:linear-gradient(135deg,#4facfe,#00f2fe)}.upload-status{margin:1.5rem 0 0;padding:1rem;background:#e8f5e8;border-radius:8px;border:1px solid #c3e6c3}.upload-status p{margin:0 0 .5rem;color:#2d5a2d;font-weight:600}.clear-button{background:#ff6b6b;color:#fff;border:none;border-radius:6px;padding:.5rem 1rem;cursor:pointer;font-size:.9rem;transition:all .3s ease}.clear-button:hover{background:#ff5252;transform:translateY(-1px)}.clear-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.upload-instructions{margin:2rem 0 0;padding:1.5rem;background:#f8f9fa;border-radius:8px;border-left:4px solid #4facfe}.upload-instructions h4{margin:0 0 1rem;color:#333;font-size:1.2rem}.structure-example{background:#2d3748;color:#e2e8f0;padding:1rem;border-radius:6px;margin:1rem 0;font-family:Courier New,monospace;font-size:.9rem;overflow-x:auto}.structure-example code{color:#e2e8f0;background:none;padding:0;font-size:inherit}.upload-instructions ol{margin:1rem 0 0;padding-left:1.5rem}.upload-instructions li{margin:.5rem 0;color:#555;line-height:1.5}@media (max-width: 768px){.zip-upload-area{padding:2rem 1rem;margin:1rem}.upload-buttons{flex-direction:column;align-items:center}.browse-button{width:100%;max-width:250px}.upload-instructions{margin:1rem}.structure-example{font-size:.8rem}}
