diff --git a/dashboard.html b/dashboard.html
index 2d862fc..7f8441d 100644
--- a/dashboard.html
+++ b/dashboard.html
@@ -4,7 +4,41 @@
{{ title }}
+ {# ── Filter bar ─────────────────────────────────────────── #}
+
+
+
{% if results | length > 0 %}
+
+
+ {# ── Pagination ─────────────────────────────────────────── #}
+ {# Build filter params string only for values that are set #}
+ {% set filter_qs %}{% if recon_job_name %}&recon_job_name={{ recon_job_name }}{% endif %}{% if as_at_date %}&as_at_date={{ as_at_date }}{% endif %}{% endset %}
+
{% endif %}
{% endblock %}
\ No newline at end of file
diff --git a/styles.css b/styles.css
index fc31649..148c5ca 100644
--- a/styles.css
+++ b/styles.css
@@ -108,12 +108,14 @@ footer {
}
/* ── Data table ─────────────────────────────────────────── */
+.table-scroll {
+ overflow-x: auto;
+ border-radius: 10px;
+}
.data-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
- border-radius: 10px;
- overflow: hidden;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
}
.data-table thead {
@@ -165,3 +167,94 @@ footer {
.badge-pending { background: rgba(234,179,8,0.15); color: #facc15; }
.badge-none { background: rgba(100,116,139,0.15); color: #94a3b8; }
.badge-flag { background: rgba(249,115,22,0.15); color: #fb923c; }
+
+/* ── Filter bar ─────────────────────────────────────────── */
+.filter-bar {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: flex-end;
+ gap: 16px;
+ margin-bottom: 24px;
+ padding: 18px 20px;
+ background: rgba(255, 255, 255, 0.04);
+ border: 1px solid #2d2d3a;
+ border-radius: 10px;
+}
+.filter-group {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+.filter-group label {
+ font-size: 11px;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.07em;
+ color: #94a3b8;
+}
+.filter-group input {
+ background: #0f1117;
+ border: 1px solid #2d2d3a;
+ border-radius: 6px;
+ color: #e2e8f0;
+ font-size: 14px;
+ padding: 8px 12px;
+ min-width: 200px;
+ transition: border-color 0.15s ease;
+}
+.filter-group input:focus {
+ outline: none;
+ border-color: #6366f1;
+}
+.filter-group input[type="date"]::-webkit-calendar-picker-indicator {
+ filter: invert(0.6);
+ cursor: pointer;
+}
+.filter-actions {
+ display: flex;
+ gap: 8px;
+ align-items: flex-end;
+}
+
+/* ── Buttons ────────────────────────────────────────────── */
+.btn {
+ display: inline-block;
+ padding: 8px 18px;
+ border-radius: 6px;
+ font-size: 13px;
+ font-weight: 600;
+ letter-spacing: 0.03em;
+ cursor: pointer;
+ text-decoration: none;
+ border: none;
+ transition: opacity 0.15s ease, background 0.15s ease;
+ white-space: nowrap;
+}
+.btn-primary {
+ background: #6366f1;
+ color: #fff;
+}
+.btn-primary:hover {
+ background: #4f46e5;
+}
+.btn-secondary {
+ background: rgba(255, 255, 255, 0.07);
+ color: #cbd5e1;
+ border: 1px solid #2d2d3a;
+}
+.btn-secondary:hover:not(.btn-disabled) {
+ background: rgba(255, 255, 255, 0.13);
+}
+.btn-disabled {
+ opacity: 0.35;
+ cursor: default;
+ pointer-events: none;
+}
+
+/* ── Pagination ─────────────────────────────────────────── */
+.pagination {
+ display: flex;
+ gap: 10px;
+ justify-content: flex-end;
+ margin-top: 20px;
+}