/* Reset y base */ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Segoe UI', system-ui, sans-serif; min-height: 100vh; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); display: flex; justify-content: center; align-items: center; padding: 20px; } .container { background: white; border-radius: 24px; box-shadow: 0 20px 60px rgba(0,0,0,0.2); padding: 40px; max-width: 600px; width: 100%; text-align: center; transition: all 0.3s ease; } h1 { font-size: 2rem; margin-bottom: 10px; color: #2d3748; } .subtitle { color: #718096; margin-bottom: 30px; } /* Zona de carga */ .upload-area { border: 3px dashed #cbd5e0; border-radius: 16px; padding: 40px 20px; margin-bottom: 20px; cursor: pointer; transition: all 0.3s; background: #f7fafc; } .upload-area:hover, .upload-area.dragover { border-color: #667eea; background: #edf2ff; } .upload-icon { font-size: 48px; margin-bottom: 15px; } .upload-area p { color: #4a5568; font-weight: 500; } .upload-area span { color: #667eea; text-decoration: underline; } input[type="file"] { display: none; } /* Vista previa */ .preview-section { display: none; margin-bottom: 20px; } .preview-section.active { display: block; } .preview-image { width: 100%; height: 300px; object-fit: contain; border-radius: 16px; background: #edf2f7; border: 2px solid #e2e8f0; } /* Botón predecir */ .btn-predict { background: #667eea; color: white; border: none; padding: 14px 32px; border-radius: 12px; font-size: 1.1rem; font-weight: 600; cursor: pointer; transition: all 0.2s; width: 100%; margin-top: 10px; display: flex; align-items: center; justify-content: center; gap: 10px; } .btn-predict:hover { background: #5a67d8; transform: translateY(-1px); box-shadow: 0 8px 20px rgba(102,126,234,0.3); } .btn-predict:disabled { background: #a0aec0; cursor: not-allowed; transform: none; box-shadow: none; } /* Spinner */ .spinner { display: none; border: 3px solid rgba(255,255,255,0.3); border-top: 3px solid white; border-radius: 50%; width: 20px; height: 20px; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Resultados */ .result-section { display: none; background: #f7fafc; border-radius: 16px; padding: 24px; margin-top: 20px; text-align: left; } .result-section.active { display: block; } .result-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; } .result-icon { font-size: 36px; } .result-prediction { font-size: 1.5rem; font-weight: 700; color: #2d3748; } .confidence-bar-container { background: #e2e8f0; border-radius: 12px; height: 12px; margin-bottom: 12px; overflow: hidden; } .confidence-bar { height: 100%; border-radius: 12px; width: 0%; background: linear-gradient(90deg, #48bb78, #38a169); transition: width 0.8s ease; } .confidence-text { color: #4a5568; margin-bottom: 12px; } /* Lista de probabilidades */ .probabilities { display: flex; flex-direction: column; gap: 8px; } .prob-item { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: white; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); } .prob-label { display: flex; align-items: center; gap: 8px; } .prob-value { font-weight: 600; } /* Botón "Subir otra imagen" */ .upload-another { display: none; background: transparent; border: 2px solid #667eea; color: #667eea; padding: 8px 20px; border-radius: 8px; font-weight: 600; cursor: pointer; margin-top: 16px; transition: 0.2s; } .upload-another:hover { background: #667eea; color: white; } /* Responsive */ @media (max-width: 500px) { .container { padding: 24px; } h1 { font-size: 1.5rem; } .upload-area { padding: 24px 16px; } }