diff --git a/contracts/admin.py b/contracts/admin.py
index a03ffbfad087e54c97d8d7aa4177329d4c52f29a..96e15ee2f52d9d6867afdf9b54797cd333ed76e7 100644
--- a/contracts/admin.py
+++ b/contracts/admin.py
@@ -1,11 +1,11 @@
 import copy
 import json
 import logging
+import threading
 import typing
 import uuid
 
 import requests
-import threading
 from admin_auto_filters.filters import AutocompleteFilterFactory
 from django.conf import settings
 from django.contrib import admin
diff --git a/contracts/management/commands/import_old_contracts.py b/contracts/management/commands/import_old_contracts.py
index ea613d292639a2e8ae8eb34d500b75071293df71..312f62523f4e3f7efd5d8020d72702f44fe87081 100644
--- a/contracts/management/commands/import_old_contracts.py
+++ b/contracts/management/commands/import_old_contracts.py
@@ -10,9 +10,10 @@ from django.conf import settings
 from django.core.files import File
 from django.core.management.base import BaseCommand
 from django.db import models
-from git import Repo
 from postal.parser import parse_address
 
+from git import Repo
+
 from ...models import (
     Contract,
     Contractee,
diff --git a/contracts/templates/contracts/search.html b/contracts/templates/contracts/search.html
index d80db8a5a0b4d1bf6221099312286e3668986cb1..078044aa9d295e26cfd19855d01bbce48a4890e0 100644
--- a/contracts/templates/contracts/search.html
+++ b/contracts/templates/contracts/search.html
@@ -11,55 +11,18 @@
     <form method="get" class="mb-10">
         <div class="flex flex-col gap-2">
             <input
-                id="name"
-                name="name"
+                id="q"
+                name="q"
                 class="border border-black bg-grey-150 h-10 px-4 text-lg xl:h-14 xl:px-5"
                 type="text"
-                value="{% if name %}{{ name }}{% endif %}"
-                placeholder="Název"
-                aria-label="Vyhledávací box pro název"
+                value="{% if query %}{{ query }}{% endif %}"
+                placeholder="Hledej..."
+                aria-label="Vyhledávací box"
             >
 
-            <input
-                id="summary"
-                name="summary"
-                class="border border-black bg-grey-150 h-10 px-4 text-lg xl:h-14 xl:px-5"
-                type="text"
-                value="{% if summary %}{{ summary }}{% endif %}"
-                placeholder="Sumarizace"
-                aria-label="Vyhledávací box pro sumarizaci"
-            >
-
-            <input
-                id="signing_party_ico_number"
-                name="signing_party_ico_number"
-                class="border border-black bg-grey-150 h-10 px-4 text-lg xl:h-14 xl:px-5"
-                type="number"
-                min="0"
-                value="{% if signing_party_ico_number %}{{ signing_party_ico_number }}{% endif %}"
-                placeholder="IÄŚO smluvnĂ­ch stran"
-                aria-label="Vyhledávací box pro IČO smluvních stran"
-            >
-
-            <input
-                id="signing_party_name"
-                name="signing_party_name"
-                class="border border-black bg-grey-150 h-10 px-4 text-lg xl:h-14 xl:px-5"
-                type="text"
-                value="{% if signing_party_name %}{{ signing_party_name }}{% endif %}"
-                placeholder="Název smluvních stran"
-                aria-label="Vyhledávací box pro názvy smluvních stran"
-            >
-
-            <input
-                id="signing_party_representative_name"
-                name="signing_party_representative_name"
-                class="border border-black bg-grey-150 h-10 px-4 text-lg xl:h-14 xl:px-5"
-                type="text"
-                value="{% if signing_party_representative_name %}{{ signing_party_representative_name }}{% endif %}"
-                placeholder="Zástupce smluvních stran"
-                aria-label="Vyhledávací box pro zástupce smluvních stran"
-            >
+            <span class="text-gray-400 mb-4">
+                Prohledávána jsou jména, souhrny, jména smluvních stran a jejich zástupců.
+            </span>
 
             <button type="submit" class="btn text-lg">
                 <div class="btn__body h-10 xl:h-14 flex gap-3">
@@ -69,7 +32,7 @@
         </div>
     </form>
 
-    {% if any_query_is_set %}
+    {% if query %}
         {% if page|length != 0 %}
             {% include "contracts/includes/contract_list.html" with page=page paginator=paginator %}
         {% else %}
diff --git a/contracts/views.py b/contracts/views.py
index c67cd49a07bc11f403ffb4d3c7996242b0926b47..4c126c502644eddee7c81b25b3974dac533ce463 100644
--- a/contracts/views.py
+++ b/contracts/views.py
@@ -123,118 +123,55 @@ def view_contract(request, id: int):
 
 
 def search(request):
-    request_filter = {}
-
-    for url_parameter in (
-        "name",
-        "summary",
-        "signing_party_ico_number",
-        "signing_party_name",
-        "signing_party_representative_name",
-    ):
-        request_filter[url_parameter] = request.GET.get(url_parameter)
-
-    any_query_is_set = False
-
-    for url_parameter_key in request_filter.keys():
-        if request_filter[url_parameter_key] is None:
-            continue
-
-        if request_filter[url_parameter_key].replace(" ", "") == "":
-            request_filter[url_parameter_key] = None
-        else:
-            any_query_is_set = True
-
-    if request_filter["signing_party_ico_number"] is not None:
-        if not request_filter["signing_party_ico_number"].isnumeric():
-            raise HTTPExceptions.BAD_REQUEST
-
-        request_filter["signing_party_ico_number"] = int(
-            request_filter["signing_party_ico_number"]
-        )
+    original_query = request.GET.get("q", default="")
+    query = original_query.lower()
+
+    if query.isnumeric():
+        number_query = int(query)
+    else:
+        number_query = 0
 
     page = paginator = None
     title = "Vyhledávání"
 
-    if any_query_is_set:
-        filter = models.Q()
-        annotations = {}
-
-        if request_filter["name"] is not None:
-            filter = filter & models.Q(
-                lower_name__contains=request_filter["name"].lower()
-            )
-            annotations["lower_name"] = Lower("name")
-
-        if request_filter["summary"] is not None:
-            filter = filter & models.Q(
-                lower_summary__contains=request_filter["summary"].lower()
-            )
-            annotations["lower_summary"] = Lower("summary")
-
-        if request_filter["signing_party_ico_number"] is not None:
-            filter = filter & models.Q(
-                models.Q(
-                    contractee_signatures__contractee__ico_number=request_filter[
-                        "signing_party_ico_number"
-                    ]
-                )
-                | models.Q(
-                    signee_signatures__signee__ico_number=request_filter[
-                        "signing_party_ico_number"
-                    ]
-                )
-            )
-
-        if request_filter["signing_party_name"] is not None:
-            filter = filter & models.Q(
-                models.Q(
-                    contractee_signatures__contractee__name_lower__contains=request_filter[
-                        "signing_party_name"
-                    ].lower()
-                )
-                | models.Q(
-                    signee_signatures__signee__name_lower__contains=request_filter[
-                        "signing_party_name"
-                    ].lower()
-                )
+    if query:
+        filter = models.Q(
+            models.Q(lower_name__contains=query)
+            | models.Q(lower_summary__contains=query)
+            | models.Q(
+                models.Q(contractee_signatures__contractee__ico_number=number_query)
+                | models.Q(signee_signatures__signee__ico_number=number_query)
             )
-
-            annotations.update(
-                {
-                    "contractee_signatures__contractee__name_lower": Lower(
-                        "contractee_signatures__contractee__name"
-                    ),
-                    "signee_signatures__signee__name_lower": Lower(
-                        "signee_signatures__signee__name"
-                    ),
-                }
+            | models.Q(
+                models.Q(contractee_signatures__contractee__name_lower__contains=query)
+                | models.Q(signee_signatures__signee__name_lower__contains=query)
             )
-
-        if request_filter["signing_party_representative_name"] is not None:
-            filter = filter & models.Q(
+            | models.Q(
                 models.Q(
-                    contractee_signatures__representatives__name_lower__contains=request_filter[
-                        "signing_party_representative_name"
-                    ].lower()
+                    contractee_signatures__representatives__name_lower__contains=query
                 )
                 | models.Q(
-                    signee_signatures__representatives__name_lower__contains=request_filter[
-                        "signing_party_representative_name"
-                    ].lower()
+                    signee_signatures__representatives__name_lower__contains=query
                 )
             )
+        )
 
-            annotations.update(
-                {
-                    "contractee_signatures__representatives__name_lower": Lower(
-                        "contractee_signatures__representatives__name"
-                    ),
-                    "signee_signatures__representatives__name_lower": Lower(
-                        "signee_signatures__representatives__name"
-                    ),
-                }
-            )
+        annotations = {
+            "lower_name": Lower("name"),
+            "lower_summary": Lower("summary"),
+            "contractee_signatures__contractee__name_lower": Lower(
+                "contractee_signatures__contractee__name"
+            ),
+            "signee_signatures__signee__name_lower": Lower(
+                "signee_signatures__signee__name"
+            ),
+            "contractee_signatures__representatives__name_lower": Lower(
+                "contractee_signatures__representatives__name"
+            ),
+            "signee_signatures__representatives__name_lower": Lower(
+                "signee_signatures__representatives__name"
+            ),
+        }
 
         # WARNING: PostgreSQL-dependent
         page, paginator = get_paginated_contracts(
@@ -252,8 +189,7 @@ def search(request):
             "description": "",
             "page": page,
             "paginator": paginator,
-            "any_query_is_set": any_query_is_set,
-            **request_filter,
+            "query": original_query,
         },
     )