SAGAR142 commited on
Commit
f0a40ab
·
verified ·
1 Parent(s): 66a6b89

Upload 78 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +3 -0
  2. credit_card/__init__.py +0 -0
  3. credit_card/__pycache__/__init__.cpython-310.pyc +0 -0
  4. credit_card/__pycache__/__init__.cpython-312.pyc +0 -0
  5. credit_card/__pycache__/__init__.cpython-37.pyc +0 -0
  6. credit_card/__pycache__/settings.cpython-310.pyc +0 -0
  7. credit_card/__pycache__/settings.cpython-312.pyc +0 -0
  8. credit_card/__pycache__/settings.cpython-37.pyc +0 -0
  9. credit_card/__pycache__/urls.cpython-310.pyc +0 -0
  10. credit_card/__pycache__/urls.cpython-312.pyc +0 -0
  11. credit_card/__pycache__/urls.cpython-37.pyc +0 -0
  12. credit_card/__pycache__/views.cpython-310.pyc +0 -0
  13. credit_card/__pycache__/views.cpython-312.pyc +0 -0
  14. credit_card/__pycache__/views.cpython-37.pyc +0 -0
  15. credit_card/__pycache__/wsgi.cpython-310.pyc +0 -0
  16. credit_card/__pycache__/wsgi.cpython-312.pyc +0 -0
  17. credit_card/__pycache__/wsgi.cpython-37.pyc +0 -0
  18. credit_card/asgi.py +16 -0
  19. credit_card/settings.py +138 -0
  20. credit_card/urls.py +54 -0
  21. credit_card/views.py +13 -0
  22. credit_card/wsgi.py +16 -0
  23. media/card1.jpg +3 -0
  24. media/ccfraud_autoencoder.h5 +3 -0
  25. media/ccfraud_gnn_model.pt +3 -0
  26. media/ccfraud_logisticregression_model.pkl +3 -0
  27. media/ccfraud_lstm_model.h5 +3 -0
  28. media/ccfraud_model_comparison.png +0 -0
  29. media/ccfraud_randomforest_model.pkl +3 -0
  30. media/ccfraud_scaler.pkl +3 -0
  31. media/ccfraud_svm_model.pkl +3 -0
  32. media/ccfraud_xgboost_model.pkl +3 -0
  33. media/credit_card_fraud_dataset.csv +0 -0
  34. static/card1.jpg +3 -0
  35. static/css/style.css +919 -0
  36. static/videos/home_bg.mp4 +3 -0
  37. templates/AdminLogin.html +52 -0
  38. templates/UserLogin.html +56 -0
  39. templates/UserRegistrations.html +75 -0
  40. templates/admins/AdminHome.html +265 -0
  41. templates/admins/accuracy.html +87 -0
  42. templates/admins/adminbase.html +126 -0
  43. templates/admins/viewregisterusers.html +102 -0
  44. templates/base.html +82 -0
  45. templates/index.html +85 -0
  46. templates/users/UserHomePage.html +53 -0
  47. templates/users/prediction.html +144 -0
  48. templates/users/upload_data.html +71 -0
  49. templates/users/userbase.html +54 -0
  50. templates/users/viewData.html +58 -0
.gitattributes CHANGED
@@ -38,3 +38,6 @@ credit_card/db.sqlite3 filter=lfs diff=lfs merge=lfs -text
38
  credit_card/media/card1.jpg filter=lfs diff=lfs merge=lfs -text
39
  credit_card/static/card1.jpg filter=lfs diff=lfs merge=lfs -text
40
  credit_card/static/videos/home_bg.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
38
  credit_card/media/card1.jpg filter=lfs diff=lfs merge=lfs -text
39
  credit_card/static/card1.jpg filter=lfs diff=lfs merge=lfs -text
40
  credit_card/static/videos/home_bg.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ media/card1.jpg filter=lfs diff=lfs merge=lfs -text
42
+ static/card1.jpg filter=lfs diff=lfs merge=lfs -text
43
+ static/videos/home_bg.mp4 filter=lfs diff=lfs merge=lfs -text
credit_card/__init__.py ADDED
File without changes
credit_card/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (236 Bytes). View file
 
credit_card/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (238 Bytes). View file
 
credit_card/__pycache__/__init__.cpython-37.pyc ADDED
Binary file (233 Bytes). View file
 
credit_card/__pycache__/settings.cpython-310.pyc ADDED
Binary file (2.52 kB). View file
 
credit_card/__pycache__/settings.cpython-312.pyc ADDED
Binary file (3.09 kB). View file
 
credit_card/__pycache__/settings.cpython-37.pyc ADDED
Binary file (2.55 kB). View file
 
credit_card/__pycache__/urls.cpython-310.pyc ADDED
Binary file (2.01 kB). View file
 
credit_card/__pycache__/urls.cpython-312.pyc ADDED
Binary file (2.83 kB). View file
 
credit_card/__pycache__/urls.cpython-37.pyc ADDED
Binary file (2.07 kB). View file
 
credit_card/__pycache__/views.cpython-310.pyc ADDED
Binary file (636 Bytes). View file
 
credit_card/__pycache__/views.cpython-312.pyc ADDED
Binary file (758 Bytes). View file
 
credit_card/__pycache__/views.cpython-37.pyc ADDED
Binary file (659 Bytes). View file
 
credit_card/__pycache__/wsgi.cpython-310.pyc ADDED
Binary file (647 Bytes). View file
 
credit_card/__pycache__/wsgi.cpython-312.pyc ADDED
Binary file (734 Bytes). View file
 
credit_card/__pycache__/wsgi.cpython-37.pyc ADDED
Binary file (644 Bytes). View file
 
credit_card/asgi.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ ASGI config for credit_card project.
3
+
4
+ It exposes the ASGI callable as a module-level variable named ``application``.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
8
+ """
9
+
10
+ import os
11
+
12
+ from django.core.asgi import get_asgi_application
13
+
14
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'credit_card.settings')
15
+
16
+ application = get_asgi_application()
credit_card/settings.py ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Django settings for credit_card project.
3
+
4
+ Generated by 'django-admin startproject' using Django 3.2.25.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/3.2/topics/settings/
8
+
9
+ For the full list of settings and their values, see
10
+ https://docs.djangoproject.com/en/3.2/ref/settings/
11
+ """
12
+
13
+ from pathlib import Path
14
+ import os
15
+
16
+ # Build paths inside the project like this: BASE_DIR / 'subdir'.
17
+ BASE_DIR = Path(__file__).resolve().parent.parent
18
+
19
+
20
+ # Quick-start development settings - unsuitable for production
21
+ # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
22
+
23
+ # SECURITY WARNING: keep the secret key used in production secret!
24
+ # SECURITY WARNING: keep the secret key used in production secret!
25
+ SECRET_KEY = os.environ.get('SECRET_KEY', 'django-insecure-d3@p12q=pj^f^i1%f+_=r@izpveu2%*^a9pw3dvwbghwy8@9b&')
26
+
27
+ # SECURITY WARNING: don't run with debug turned on in production!
28
+ DEBUG = os.environ.get('DEBUG', 'True') == 'True'
29
+
30
+ ALLOWED_HOSTS = ['*']
31
+
32
+
33
+ # Application definition
34
+
35
+ INSTALLED_APPS = [
36
+ 'django.contrib.admin',
37
+ 'django.contrib.auth',
38
+ 'django.contrib.contenttypes',
39
+ 'django.contrib.sessions',
40
+ 'django.contrib.messages',
41
+ 'django.contrib.staticfiles',
42
+ 'users',
43
+ 'admins'
44
+ ]
45
+
46
+ MIDDLEWARE = [
47
+ 'django.middleware.security.SecurityMiddleware',
48
+ 'django.contrib.sessions.middleware.SessionMiddleware',
49
+ 'django.middleware.common.CommonMiddleware',
50
+ 'django.middleware.csrf.CsrfViewMiddleware',
51
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
52
+ 'django.contrib.messages.middleware.MessageMiddleware',
53
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
54
+ ]
55
+
56
+ ROOT_URLCONF = 'credit_card.urls'
57
+
58
+ TEMPLATES = [
59
+ {
60
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
61
+ 'DIRS': [os.path.join(BASE_DIR,'templates')],
62
+ 'APP_DIRS': True,
63
+ 'OPTIONS': {
64
+ 'context_processors': [
65
+ 'django.template.context_processors.debug',
66
+ 'django.template.context_processors.request',
67
+ 'django.contrib.auth.context_processors.auth',
68
+ 'django.contrib.messages.context_processors.messages',
69
+ ],
70
+ },
71
+ },
72
+ ]
73
+
74
+ WSGI_APPLICATION = 'credit_card.wsgi.application'
75
+
76
+
77
+ # Database
78
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
79
+
80
+ DATABASES = {
81
+ 'default': {
82
+ 'ENGINE': 'django.db.backends.sqlite3',
83
+ 'NAME': BASE_DIR / 'db.sqlite3',
84
+ }
85
+ }
86
+
87
+
88
+ # Password validation
89
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
90
+
91
+ AUTH_PASSWORD_VALIDATORS = [
92
+ {
93
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
94
+ },
95
+ {
96
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
97
+ },
98
+ {
99
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
100
+ },
101
+ {
102
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
103
+ },
104
+ ]
105
+
106
+
107
+ # Internationalization
108
+ # https://docs.djangoproject.com/en/3.2/topics/i18n/
109
+
110
+ LANGUAGE_CODE = 'en-us'
111
+
112
+ TIME_ZONE = 'UTC'
113
+
114
+ USE_I18N = True
115
+
116
+ USE_L10N = True
117
+
118
+ USE_TZ = True
119
+
120
+
121
+ # Static files (CSS, JavaScript, Images)
122
+ # https://docs.djangoproject.com/en/3.2/howto/static-files/
123
+
124
+ STATIC_URL = '/static/'
125
+ STATICFILES_DIRS = [
126
+ BASE_DIR / 'static',
127
+ ]
128
+
129
+ import os
130
+
131
+
132
+ MEDIA_URL = '/media/'
133
+ MEDIA_ROOT = BASE_DIR / 'media'
134
+
135
+ # Default primary key field type
136
+ # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
137
+
138
+ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
credit_card/urls.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ URL configuration for cyberattack_detection project.
3
+
4
+ The `urlpatterns` list routes URLs to views. For more information please see:
5
+ https://docs.djangoproject.com/en/4.2/topics/http/urls/
6
+ Examples:
7
+ Function views
8
+ 1. Add an import: from my_app import views
9
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
10
+ Class-based views
11
+ 1. Add an import: from other_app.views import Home
12
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
13
+ Including another URLconf
14
+ 1. Import the include() function: from django.urls import include, path
15
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
16
+ """
17
+
18
+ from django.contrib import admin
19
+ from django.urls import path
20
+ from credit_card import views as mainView
21
+ from admins import views as admins
22
+ from users import views as usr
23
+ from django.contrib.staticfiles.urls import static
24
+
25
+ from django.conf import settings
26
+
27
+ urlpatterns = [
28
+ path('admin/', admin.site.urls),
29
+ path("", mainView.index, name="index"),
30
+ path("index", mainView.index, name="index"),
31
+ # path("Adminlogin", mainView.AdminLogin, name="AdminLogin"),
32
+ path("UserLogin", mainView.UserLogin, name="UserLogin"),
33
+
34
+ # admin views
35
+ path("AdminLogincheck", admins.AdminLoginCheck, name="AdminLoginCheck"),
36
+ path('userDetails', admins.RegisterUsersView, name='RegisterUsersView'),
37
+ path('ActivUsers/', admins.ActivaUsers, name='activate_users'),
38
+ path('DeleteUsers/', admins.DeleteUsers, name='delete_users'),
39
+ path('adminhome',admins.adminhome,name="adminhome"),
40
+
41
+
42
+ #userurls
43
+ path('UserRegisterForm',usr.UserRegisterActions,name='UserRegisterForm'),
44
+ path("UserLoginCheck/", usr.UserLoginCheck, name="UserLoginCheck"),
45
+ path("UserHome/", usr.UserHome, name="UserHome"),
46
+ path("ViewDataset/", usr.ViewDataset, name="ViewDataset"),
47
+ path("prediction/", usr.prediction, name="prediction"),
48
+ path("training", usr.training, name="training"),
49
+ path("index/", usr.index, name="index"),
50
+ path('upload_data/', usr.upload_data_view, name='upload_data'),
51
+
52
+ ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
53
+
54
+
credit_card/views.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.shortcuts import render
2
+
3
+
4
+ def index(request):
5
+ return render(request, 'index.html', {})
6
+
7
+ def AdminLogin(request):
8
+ return render(request, 'AdminLogin.html', {})
9
+
10
+ def UserLogin(request):
11
+ return render(request, 'UserLogin.html', {})
12
+
13
+
credit_card/wsgi.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ WSGI config for credit_card project.
3
+
4
+ It exposes the WSGI callable as a module-level variable named ``application``.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
8
+ """
9
+
10
+ import os
11
+
12
+ from django.core.wsgi import get_wsgi_application
13
+
14
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'credit_card.settings')
15
+
16
+ application = get_wsgi_application()
media/card1.jpg ADDED

Git LFS Details

  • SHA256: 62ae2179b48e933d3496fc94b9f37c05db33ee2c15132e2db83c3840df67dfb9
  • Pointer size: 131 Bytes
  • Size of remote file: 858 kB
media/ccfraud_autoencoder.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:065f54313238da2c53e0926700fb216ca456a2cbe67ef7f7ea05fc863b3ad300
3
+ size 51120
media/ccfraud_gnn_model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:598b0a22634f2bc1998b1748fc5ef584d6ccac8e8c64a064f212c463084ee472
3
+ size 3424
media/ccfraud_logisticregression_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5284017077116ee4f4462457fda81ef0366c20c18731bc1cb1abb10deacc9b3a
3
+ size 1026
media/ccfraud_lstm_model.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fe1628c5751a19e789b167fa62fc590159bed85a4de58bad00423fa321185d54
3
+ size 278184
media/ccfraud_model_comparison.png ADDED
media/ccfraud_randomforest_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:35433a1f19c5c706d0230f4d476b36369c4fe42e91de66514a4e039c98bbbfc8
3
+ size 13107772
media/ccfraud_scaler.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ba39246ab600acf9146d67f86dc2ea52eaab600d332f43cc23bc01f355788080
3
+ size 1159
media/ccfraud_svm_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e7f8b9680de373846d4f91a886f7f9b299a9505196e1d4caedb4d25b2bcebc9d
3
+ size 200766
media/ccfraud_xgboost_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:981374216f7634ee7fc666d89f6b7a01ad252eae2d33486262a3c9bd398073ac
3
+ size 482084
media/credit_card_fraud_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
static/card1.jpg ADDED

Git LFS Details

  • SHA256: 62ae2179b48e933d3496fc94b9f37c05db33ee2c15132e2db83c3840df67dfb9
  • Pointer size: 131 Bytes
  • Size of remote file: 858 kB
static/css/style.css ADDED
@@ -0,0 +1,919 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ ZENITH FLOW - PREMIUM 3D / MODERN DARK UI
4
+ -----------------------------------------------------------------------------
5
+ A polished, professional aesthetic focusing on depth, clarity, and motion.
6
+ */
7
+
8
+ :root {
9
+ --bg-core: #f8fafc;
10
+ /* Light / White Background */
11
+ --bg-gradient-start: #e0f2fe;
12
+ --bg-gradient-end: #f1f5f9;
13
+
14
+ --primary: #2563eb;
15
+ /* Solid Royal Blue for high contrast */
16
+ --primary-glow: rgba(37, 99, 235, 0.15);
17
+
18
+ --secondary: #7c3aed;
19
+ /* Violet */
20
+ --accent: #059669;
21
+ /* Emerald */
22
+ --danger: #dc2626;
23
+ /* Red */
24
+
25
+ --glass-surface: rgba(255, 255, 255, 0.75);
26
+ /* White Glass */
27
+ --glass-border: rgba(0, 0, 0, 0.1);
28
+ /* Darker border for visibility */
29
+ --glass-highlight: rgba(255, 255, 255, 0.9);
30
+
31
+ --text-main: #000000;
32
+ /* PURE BLACK TEXT as requested */
33
+ --text-muted: #475569;
34
+ /* Dark Grey for secondary text */
35
+
36
+ --card-radius: 16px;
37
+ --btn-radius: 50px;
38
+
39
+ --shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
40
+ --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.05);
41
+ --shadow-glow: 0 0 15px var(--primary-glow);
42
+ }
43
+
44
+ *,
45
+ *::before,
46
+ *::after {
47
+ box-sizing: border-box;
48
+ margin: 0;
49
+ padding: 0;
50
+ }
51
+
52
+ body {
53
+ background-color: var(--bg-core);
54
+ background-image:
55
+ radial-gradient(circle at 15% 50%, rgba(59, 130, 246, 0.15), transparent 25%),
56
+ radial-gradient(circle at 85% 30%, rgba(139, 92, 246, 0.15), transparent 25%);
57
+ color: var(--text-main);
58
+ font-family: 'Montserrat', sans-serif;
59
+ /* Clean, modern sans */
60
+ min-height: 100vh;
61
+ overflow-x: hidden;
62
+ line-height: 1.6;
63
+ }
64
+
65
+ /*
66
+ -----------------
67
+ ANIMATIONS
68
+ -----------------
69
+ */
70
+ @keyframes float {
71
+ 0% {
72
+ transform: translateY(0px);
73
+ }
74
+
75
+ 50% {
76
+ transform: translateY(-10px);
77
+ }
78
+
79
+ 100% {
80
+ transform: translateY(0px);
81
+ }
82
+ }
83
+
84
+ @keyframes fadeIn {
85
+ from {
86
+ opacity: 0;
87
+ transform: translateY(20px);
88
+ }
89
+
90
+ to {
91
+ opacity: 1;
92
+ transform: translateY(0);
93
+ }
94
+ }
95
+
96
+ .fade-in {
97
+ animation: fadeIn 0.8s ease-out forwards;
98
+ }
99
+
100
+ .float-anim {
101
+ animation: float 6s ease-in-out infinite;
102
+ }
103
+
104
+ /*
105
+ -----------------
106
+ COMPONENTS
107
+ -----------------
108
+ */
109
+
110
+ /* Glass Card */
111
+ .glass-panel {
112
+ background: var(--glass-surface);
113
+ backdrop-filter: blur(12px);
114
+ -webkit-backdrop-filter: blur(12px);
115
+ border: 1px solid var(--glass-border);
116
+ border-radius: var(--card-radius);
117
+ box-shadow: var(--shadow-lg);
118
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
119
+ }
120
+
121
+ .glass-panel:hover {
122
+ border-color: rgba(255, 255, 255, 0.2);
123
+ }
124
+
125
+ /* 3D Tilt Card (Interactive) */
126
+ .card-3d {
127
+ background: linear-gradient(145deg, rgba(30, 41, 59, 0.8), rgba(15, 23, 42, 0.9));
128
+ border: 1px solid var(--glass-border);
129
+ border-radius: var(--card-radius);
130
+ padding: 2rem;
131
+ position: relative;
132
+ transform-style: preserve-3d;
133
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
134
+ overflow: hidden;
135
+ }
136
+
137
+ .card-3d:hover {
138
+ transform: translateY(-5px) scale(1.02);
139
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.6), var(--shadow-glow);
140
+ border-color: var(--primary);
141
+ }
142
+
143
+ .card-3d::before {
144
+ content: '';
145
+ position: absolute;
146
+ top: 0;
147
+ left: 0;
148
+ width: 100%;
149
+ height: 100%;
150
+ background: linear-gradient(to bottom right, rgba(255, 255, 255, 0.05), transparent);
151
+ opacity: 0;
152
+ transition: opacity 0.3s;
153
+ }
154
+
155
+ .card-3d:hover::before {
156
+ opacity: 1;
157
+ }
158
+
159
+ /* Buttons */
160
+ .btn-modern {
161
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
162
+ border: none;
163
+ color: white;
164
+ padding: 12px 30px;
165
+ border-radius: var(--btn-radius);
166
+ font-weight: 700;
167
+ letter-spacing: 0.5px;
168
+ box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4);
169
+ transition: all 0.3s ease;
170
+ text-transform: uppercase;
171
+ font-size: 0.9rem;
172
+ display: inline-flex;
173
+ align-items: center;
174
+ justify-content: center;
175
+ text-decoration: none;
176
+ }
177
+
178
+ .btn-modern:hover {
179
+ transform: translateY(-2px);
180
+ box-shadow: 0 8px 25px rgba(59, 130, 246, 0.6);
181
+ color: white;
182
+ }
183
+
184
+ .btn-outline-modern {
185
+ background: transparent;
186
+ border: 2px solid var(--glass-border);
187
+ color: var(--text-muted);
188
+ padding: 10px 25px;
189
+ border-radius: var(--btn-radius);
190
+ font-weight: 600;
191
+ transition: all 0.3s;
192
+ text-decoration: none;
193
+ display: inline-flex;
194
+ align-items: center;
195
+ }
196
+
197
+ .btn-outline-modern:hover {
198
+ border-color: var(--text-main);
199
+ color: var(--text-main);
200
+ background: rgba(255, 255, 255, 0.05);
201
+ }
202
+
203
+ /* Inputs */
204
+ .input-modern {
205
+ background: rgba(15, 23, 42, 0.6);
206
+ border: 1px solid var(--glass-border);
207
+ color: var(--text-main);
208
+ padding: 14px 20px;
209
+ border-radius: 12px;
210
+ width: 100%;
211
+ transition: 0.3s;
212
+ font-size: 1rem;
213
+ }
214
+
215
+ .input-modern:focus {
216
+ outline: none;
217
+ border-color: var(--primary);
218
+ box-shadow: 0 0 0 3px var(--primary-glow);
219
+ background: rgba(15, 23, 42, 0.9);
220
+ }
221
+
222
+ .input-label {
223
+ display: block;
224
+ margin-bottom: 8px;
225
+ color: var(--text-muted);
226
+ font-size: 0.85rem;
227
+ font-weight: 600;
228
+ text-transform: uppercase;
229
+ letter-spacing: 0.5px;
230
+ }
231
+
232
+ /*
233
+ -----------------
234
+ LAYOUT
235
+ -----------------
236
+ */
237
+
238
+ /* Header */
239
+ .header-modern {
240
+ position: fixed;
241
+ top: 0;
242
+ left: 0;
243
+ width: 100%;
244
+ padding: 15px 40px;
245
+ background: rgba(15, 23, 42, 0.85);
246
+ backdrop-filter: blur(20px);
247
+ border-bottom: 1px solid var(--glass-border);
248
+ z-index: 1000;
249
+ display: flex;
250
+ justify-content: space-between;
251
+ align-items: center;
252
+ }
253
+
254
+ .nav-link-modern {
255
+ color: var(--text-muted);
256
+ font-weight: 600;
257
+ text-decoration: none;
258
+ margin: 0 15px;
259
+ transition: 0.3s;
260
+ font-size: 0.95rem;
261
+ position: relative;
262
+ padding: 5px 0;
263
+ }
264
+
265
+ .nav-link-modern::after {
266
+ content: '';
267
+ position: absolute;
268
+ bottom: 0;
269
+ left: 0;
270
+ width: 0;
271
+ height: 2px;
272
+ background: var(--primary);
273
+ transition: width 0.3s;
274
+ }
275
+
276
+ .nav-link-modern:hover,
277
+ .nav-link-modern.active {
278
+ color: white;
279
+ }
280
+
281
+ .nav-link-modern:hover::after,
282
+ .nav-link-modern.active::after {
283
+ width: 100%;
284
+ }
285
+
286
+ /* Sidebar (Admin) */
287
+ .sidebar-modern {
288
+ width: 260px;
289
+ height: 100vh;
290
+ position: fixed;
291
+ left: 0;
292
+ top: 0;
293
+ background: var(--bg-core);
294
+ border-right: 1px solid var(--glass-border);
295
+ display: flex;
296
+ flex-direction: column;
297
+ z-index: 1000;
298
+ }
299
+
300
+ .sidebar-brand {
301
+ padding: 30px;
302
+ font-size: 1.5rem;
303
+ font-weight: 800;
304
+ color: white;
305
+ border-bottom: 1px solid var(--glass-border);
306
+ letter-spacing: -0.5px;
307
+ background: linear-gradient(135deg, var(--bg-gradient-start), var(--bg-gradient-end));
308
+ }
309
+
310
+ .sidebar-menu {
311
+ list-style: none;
312
+ padding: 20px 10px;
313
+ }
314
+
315
+ .sidebar-item a {
316
+ display: flex;
317
+ align-items: center;
318
+ padding: 12px 20px;
319
+ color: var(--text-muted);
320
+ text-decoration: none;
321
+ border-radius: 8px;
322
+ margin-bottom: 5px;
323
+ transition: 0.2s;
324
+ font-weight: 500;
325
+ }
326
+
327
+ .sidebar-item a:hover,
328
+ .sidebar-item a.active {
329
+ background: rgba(59, 130, 246, 0.1);
330
+ color: var(--primary);
331
+ }
332
+
333
+ .sidebar-item a i {
334
+ width: 25px;
335
+ margin-right: 10px;
336
+ }
337
+
338
+ .main-content {
339
+ margin-left: 260px;
340
+ padding: 40px;
341
+ padding-top: 100px;
342
+ }
343
+
344
+ /*
345
+ -----------------
346
+ PAGE SPECIFICS
347
+ -----------------
348
+ */
349
+
350
+ /* Hero */
351
+ .hero-wrapper {
352
+ min-height: 80vh;
353
+ display: flex;
354
+ align-items: center;
355
+ justify-content: center;
356
+ text-align: center;
357
+ padding: 40px;
358
+ }
359
+
360
+ .hero-title {
361
+ font-size: 4rem;
362
+ font-weight: 800;
363
+ letter-spacing: -1px;
364
+ line-height: 1.1;
365
+ margin-bottom: 20px;
366
+ background: linear-gradient(135deg, #fff 0%, #94a3b8 100%);
367
+ -webkit-background-clip: text;
368
+ -webkit-text-fill-color: transparent;
369
+ }
370
+
371
+ /* Dashboard Widgets */
372
+ .stat-card {
373
+ background: var(--glass-surface);
374
+ border: 1px solid var(--glass-border);
375
+ padding: 25px;
376
+ border-radius: 16px;
377
+ display: flex;
378
+ align-items: center;
379
+ justify-content: space-between;
380
+ }
381
+
382
+ .stat-icon {
383
+ width: 60px;
384
+ height: 60px;
385
+ border-radius: 12px;
386
+ display: flex;
387
+ align-items: center;
388
+ justify-content: center;
389
+ font-size: 1.5rem;
390
+ background: rgba(59, 130, 246, 0.1);
391
+ color: var(--primary);
392
+ }
393
+
394
+ .stat-info h3 {
395
+ font-size: 2rem;
396
+ font-weight: 700;
397
+ color: white;
398
+ margin: 0;
399
+ }
400
+
401
+ .stat-info p {
402
+ color: var(--text-muted);
403
+ font-size: 0.9rem;
404
+ margin: 0;
405
+ text-transform: uppercase;
406
+ font-weight: 600;
407
+ }
408
+
409
+ /* Prediction Result Circles */
410
+ .result-circle {
411
+ width: 140px;
412
+ height: 140px;
413
+ border-radius: 50%;
414
+ display: flex;
415
+ align-items: center;
416
+ justify-content: center;
417
+ font-size: 3rem;
418
+ margin: 0 auto 20px;
419
+ background: rgba(255, 255, 255, 0.03);
420
+ position: relative;
421
+ }
422
+
423
+ .result-circle::after {
424
+ content: '';
425
+ position: absolute;
426
+ top: -5px;
427
+ left: -5px;
428
+ right: -5px;
429
+ bottom: -5px;
430
+ border-radius: 50%;
431
+ border: 2px solid transparent;
432
+ border-top-color: currentColor;
433
+ border-right-color: currentColor;
434
+ animation: spin 2s linear infinite;
435
+ }
436
+
437
+ @keyframes spin {
438
+ 100% {
439
+ transform: rotate(360deg);
440
+ }
441
+ }
442
+
443
+ .res-success {
444
+ color: var(--accent);
445
+ }
446
+
447
+ .res-danger {
448
+ color: var(--danger);
449
+ }
450
+
451
+ /*
452
+ -----------------------------------------------------------------------------
453
+ ADDITIONAL UTILITIES
454
+ -----------------------------------------------------------------------------
455
+ */
456
+ ::-webkit-scrollbar {
457
+ width: 8px;
458
+ height: 8px;
459
+ }
460
+
461
+ ::-webkit-scrollbar-track {
462
+ background: var(--bg-core);
463
+ }
464
+
465
+ ::-webkit-scrollbar-thumb {
466
+ background: rgba(255, 255, 255, 0.2);
467
+ border-radius: 4px;
468
+ }
469
+
470
+ ::-webkit-scrollbar-thumb:hover {
471
+ background: rgba(255, 255, 255, 0.3);
472
+ }
473
+
474
+ /* Helper to center content in tables if needed */
475
+ .table-center th,
476
+ .table-center td {
477
+ text-align: center;
478
+ }
479
+
480
+
481
+ /*
482
+ -----------------------------------------------------------------------------
483
+ ALERTS & NOTIFICATIONS
484
+ -----------------------------------------------------------------------------
485
+ */
486
+ .alert-modern {
487
+ background: rgba(15, 23, 42, 0.8);
488
+ border: 1px solid var(--glass-border);
489
+ border-left-width: 4px;
490
+ color: var(--text-main);
491
+ padding: 15px 20px;
492
+ border-radius: 8px;
493
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
494
+ display: flex;
495
+ align-items: center;
496
+ margin-bottom: 20px;
497
+ backdrop-filter: blur(10px);
498
+ }
499
+
500
+ .alert-modern-info {
501
+ border-left-color: var(--primary);
502
+ }
503
+
504
+ .alert-modern-info i {
505
+ color: var(--primary);
506
+ }
507
+
508
+ .alert-modern-success {
509
+ border-left-color: var(--accent);
510
+ }
511
+
512
+ .alert-modern-success i {
513
+ color: var(--accent);
514
+ }
515
+
516
+ .alert-modern-danger {
517
+ border-left-color: var(--danger);
518
+ }
519
+
520
+ .alert-modern-danger i {
521
+ color: var(--danger);
522
+ }
523
+
524
+ .alert-modern-warning {
525
+ border-left-color: #f59e0b;
526
+ }
527
+
528
+ .alert-modern-warning i {
529
+ color: #f59e0b;
530
+ }
531
+
532
+ /*
533
+ -----------------------------------------------------------------------------
534
+ DATA TABLES (Global Override)
535
+ -----------------------------------------------------------------------------
536
+ */
537
+ .table-modern {
538
+ width: 100%;
539
+ border-collapse: separate;
540
+ border-spacing: 0;
541
+ color: var(--text-muted);
542
+ }
543
+
544
+ .table-modern thead th {
545
+ background: rgba(30, 41, 59, 0.5);
546
+ color: var(--text-main);
547
+ padding: 15px;
548
+ font-weight: 600;
549
+ text-transform: uppercase;
550
+ font-size: 0.85rem;
551
+ border-bottom: 1px solid var(--glass-border);
552
+ }
553
+
554
+ .table-modern tbody td {
555
+ padding: 15px;
556
+ border-bottom: 1px solid var(--glass-border);
557
+ transition: 0.2s;
558
+ }
559
+
560
+ .table-modern tbody tr:hover td {
561
+ background: rgba(255, 255, 255, 0.02);
562
+ color: white;
563
+ }
564
+
565
+
566
+ /* Fix for background-clip compatibility */
567
+ .hero-title,
568
+ .metric-icon,
569
+ .feature-icon-3d {
570
+ background-clip: text;
571
+ }
572
+
573
+
574
+ /*
575
+ -----------------------------------------------------------------------------
576
+ AUTH LAYOUT ENFORCEMENT
577
+ -----------------------------------------------------------------------------
578
+ */
579
+ .auth-container {
580
+ min-height: calc(100vh - 80px);
581
+ /* Adjust for header height */
582
+ width: 100%;
583
+ display: flex;
584
+ justify-content: center;
585
+ align-items: center;
586
+ padding: 20px;
587
+ }
588
+
589
+ /*
590
+ -----------------------------------------------------------------------------
591
+ LIGHT THEME OVERRIDES
592
+ -----------------------------------------------------------------------------
593
+ Forces text to be black regardless of Bootstrap utility classes.
594
+ */
595
+ .text-white {
596
+ color: var(--text-main) !important;
597
+ }
598
+
599
+ body {
600
+ background-image:
601
+ radial-gradient(circle at 15% 50%, rgba(37, 99, 235, 0.05), transparent 25%),
602
+ radial-gradient(circle at 85% 30%, rgba(124, 58, 237, 0.05), transparent 25%);
603
+ }
604
+
605
+ body.video-enabled {
606
+ background: transparent !important;
607
+ }
608
+
609
+ .input-modern {
610
+ background: #ffffff;
611
+ border: 1px solid #cbd5e1;
612
+ color: #000;
613
+ }
614
+
615
+ .input-modern:focus {
616
+ background: #ffffff;
617
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
618
+ border-color: var(--primary);
619
+ }
620
+
621
+ .glass-panel {
622
+ background: rgba(255, 255, 255, 0.75);
623
+ border-color: rgba(226, 232, 240, 0.8);
624
+ box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.1);
625
+ }
626
+
627
+ .header-modern {
628
+ background: rgba(255, 255, 255, 0.9);
629
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
630
+ }
631
+
632
+ .nav-link-modern {
633
+ color: var(--text-muted);
634
+ }
635
+
636
+ .nav-link-modern:hover,
637
+ .nav-link-modern.active {
638
+ color: var(--primary);
639
+ background: rgba(37, 99, 235, 0.05);
640
+ }
641
+
642
+ .sidebar-modern {
643
+ background: #ffffff;
644
+ border-right: 1px solid #e2e8f0;
645
+ }
646
+
647
+ .sidebar-brand {
648
+ color: #0f172a;
649
+ /* Dark text for brand */
650
+ background: #f8fafc;
651
+ border-bottom: 1px solid #e2e8f0;
652
+ }
653
+
654
+ .stat-card {
655
+ background: #ffffff;
656
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
657
+ }
658
+
659
+ .stat-info h3 {
660
+ color: #0f172a;
661
+ }
662
+
663
+
664
+ /*
665
+ -----------------------------------------------------------------------------
666
+ VIDEO BACKGROUND
667
+ -----------------------------------------------------------------------------
668
+ */
669
+ .video-bg-container {
670
+ position: fixed;
671
+ top: 0;
672
+ left: 0;
673
+ width: 100%;
674
+ height: 100%;
675
+ overflow: hidden;
676
+ z-index: -1;
677
+ }
678
+
679
+ .video-bg {
680
+ position: absolute;
681
+ top: 0;
682
+ left: 0;
683
+ width: 100%;
684
+ height: 100%;
685
+ object-fit: cover;
686
+ }
687
+
688
+ .video-overlay {
689
+ position: absolute;
690
+ top: 0;
691
+ left: 0;
692
+ width: 100%;
693
+ height: 100%;
694
+ background: rgba(255, 255, 255, 0.60);
695
+ /* White overlay to ensure black text is visible */
696
+ z-index: 1;
697
+ }
698
+
699
+
700
+ /*
701
+ -----------------------------------------------------------------------------
702
+ USER FEEDBACK FIXES (NAV & HERO)
703
+ -----------------------------------------------------------------------------
704
+ */
705
+
706
+ /* 1. Transparent Navbar with Black Text */
707
+ .header-modern {
708
+ background: transparent !important;
709
+ backdrop-filter: none !important;
710
+ border-bottom: none !important;
711
+ box-shadow: none !important;
712
+ }
713
+
714
+ .nav-link-modern,
715
+ .header-modern h4,
716
+ .header-modern i {
717
+ color: #000000 !important;
718
+ text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
719
+ /* Halo for readability */
720
+ font-weight: 800 !important;
721
+ }
722
+
723
+ /* 2. Hero Title - Solid Black (Remove Gradient) */
724
+ .hero-title {
725
+ background: none !important;
726
+ -webkit-text-fill-color: #000000 !important;
727
+ color: #000000 !important;
728
+ text-shadow: 0 0 20px rgba(255, 255, 255, 0.9);
729
+ }
730
+
731
+ /* 3. Reduce Video Overlay Opacity (Make video more visible) */
732
+ .video-overlay {
733
+ background: rgba(255, 255, 255, 0.25) !important;
734
+ /* Reduced for clearer HD video */
735
+ }
736
+
737
+
738
+ /*
739
+ -----------------------------------------------------------------------------
740
+ NAVBAR HOVER - ROUNDED BLACK PILL
741
+ -----------------------------------------------------------------------------
742
+ */
743
+
744
+ /* Reset the underline animation since we are using pill shape now */
745
+ .nav-link-modern::after {
746
+ display: none !important;
747
+ }
748
+
749
+ .nav-link-modern {
750
+ padding: 10px 25px !important;
751
+ border-radius: 50px !important;
752
+ /* Creates the pill/circle shape */
753
+ transition: all 0.3s ease !important;
754
+ }
755
+
756
+ .nav-link-modern:hover,
757
+ .nav-link-modern.active {
758
+ background: #000000 !important;
759
+ /* Black Background */
760
+ color: #ffffff !important;
761
+ /* White Text */
762
+ text-shadow: none !important;
763
+ /* Remove halo */
764
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3) !important;
765
+ transform: translateY(-2px);
766
+ }
767
+
768
+
769
+ /*
770
+ -----------------------------------------------------------------------------
771
+ SCROLL BEHAVIOR FOR NAVBAR
772
+ -----------------------------------------------------------------------------
773
+ */
774
+ .header-modern.scrolled {
775
+ background: rgba(255, 255, 255, 0.95) !important;
776
+ /* Solid white opacity */
777
+ backdrop-filter: blur(10px) !important;
778
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
779
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05) !important;
780
+ transition: all 0.3s ease;
781
+ }
782
+
783
+
784
+ /*
785
+ -----------------------------------------------------------------------------
786
+ ADMIN PRO THEME - ULTRA PREMIUM
787
+ -----------------------------------------------------------------------------
788
+ Overrides for a sophisticated SaaS-like Admin Interface.
789
+ */
790
+
791
+ /* 1. Dark Premium Sidebar */
792
+ .sidebar-modern {
793
+ background: #0f172a !important;
794
+ /* Deep Slate Blue/Black */
795
+ border-right: none !important;
796
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.05);
797
+ }
798
+
799
+ .sidebar-brand {
800
+ background: #0f172a !important;
801
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
802
+ }
803
+
804
+ .sidebar-brand .text-dark {
805
+ color: #ffffff !important;
806
+ }
807
+
808
+ .sidebar-item a {
809
+ color: #94a3b8 !important;
810
+ /* Muted Blue-Grey */
811
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
812
+ }
813
+
814
+ .sidebar-item a:hover,
815
+ .sidebar-item a.active {
816
+ background: linear-gradient(90deg, var(--primary), #2563eb) !important;
817
+ color: #ffffff !important;
818
+ box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
819
+ transform: translateX(5px);
820
+ }
821
+
822
+ .sidebar-item a i {
823
+ color: inherit !important;
824
+ /* Icon matches text */
825
+ }
826
+
827
+ /* 2. Enhanced Top Header */
828
+ .main-content {
829
+ background: transparent !important;
830
+ /* Transparent to show video background */
831
+ min-height: 100vh;
832
+ margin-left: 260px !important;
833
+ /* Force margin to prevent sidebar overlap */
834
+ padding-top: 40px !important;
835
+ /* Adjust padding if needed */
836
+ }
837
+
838
+ /* 3. Ultra Cards (White on Grey) */
839
+ .glass-panel {
840
+ background: #ffffff !important;
841
+ border: none !important;
842
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;
843
+ /* Tailwind shadow-md */
844
+ border-radius: 12px !important;
845
+ }
846
+
847
+ /* 4. Data Grid Tables */
848
+ .table-pro {
849
+ width: 100%;
850
+ border-collapse: separate;
851
+ border-spacing: 0 8px;
852
+ /* Row spacing */
853
+ }
854
+
855
+ .table-pro thead th {
856
+ background: transparent !important;
857
+ color: #64748b !important;
858
+ font-size: 0.75rem !important;
859
+ text-transform: uppercase;
860
+ letter-spacing: 1px;
861
+ border: none !important;
862
+ padding-left: 20px;
863
+ }
864
+
865
+ .table-pro tbody tr {
866
+ background: #ffffff;
867
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.02);
868
+ transition: transform 0.2s;
869
+ }
870
+
871
+ .table-pro tbody tr:hover {
872
+ transform: scale(1.005);
873
+ background: #ffffff !important;
874
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
875
+ z-index: 10;
876
+ position: relative;
877
+ }
878
+
879
+ .table-pro td {
880
+ padding: 16px 20px !important;
881
+ border: none !important;
882
+ color: #334155;
883
+ font-weight: 500;
884
+ }
885
+
886
+ .table-pro td:first-child {
887
+ border-top-left-radius: 8px;
888
+ border-bottom-left-radius: 8px;
889
+ }
890
+
891
+ .table-pro td:last-child {
892
+ border-top-right-radius: 8px;
893
+ border-bottom-right-radius: 8px;
894
+ }
895
+
896
+ /* 5. Chart Containers */
897
+ .chart-box {
898
+ height: 200px;
899
+ display: flex;
900
+ align-items: flex-end;
901
+ justify-content: space-between;
902
+ padding-top: 20px;
903
+ }
904
+
905
+ .chart-bar {
906
+ width: 12%;
907
+ background: var(--primary);
908
+ border-radius: 4px;
909
+ opacity: 0.8;
910
+ transition: height 1s ease;
911
+ border-top-left-radius: 6px;
912
+ border-top-right-radius: 6px;
913
+ }
914
+
915
+ .chart-bar:hover {
916
+ opacity: 1;
917
+ transform: scaleY(1.05);
918
+ background: #1d4ed8;
919
+ }
static/videos/home_bg.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a51ce85f68f0673a83e948098d60de37ca3a4784afadbfadf1024f067e0e852d
3
+ size 1050131
templates/AdminLogin.html ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'base.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="auth-container">
6
+ <div class="glass-panel p-5" style="max-width: 450px; width: 100%; border-color: rgba(139, 92, 246, 0.3);">
7
+ <div class="text-center mb-5">
8
+ <div class="bg-secondary bg-opacity-10 d-inline-flex align-items-center justify-content-center rounded-circle mb-3"
9
+ style="width: 60px; height: 60px;">
10
+ <i class="fas fa-lock text-secondary fs-3"></i>
11
+ </div>
12
+ <h3 class="fw-bold text-white">Admin Console</h3>
13
+ <p class="text-muted small">Restricted access.</p>
14
+ </div>
15
+
16
+ <form action="{% url 'AdminLoginCheck' %}" method="POST">
17
+ {% csrf_token %}
18
+
19
+ <div class="mb-4">
20
+ <label class="input-label">Admin ID</label>
21
+ <input type="text" id="loginid" name="loginid" class="input-modern" required>
22
+ </div>
23
+
24
+ <div class="mb-4">
25
+ <label class="input-label">Security Key</label>
26
+ <input type="password" id="password" name="pswd" class="input-modern" required>
27
+ </div>
28
+
29
+ <button type="submit" class="btn-modern w-100 mb-4"
30
+ style="background: linear-gradient(135deg, var(--secondary), #4f46e5);">
31
+ Authenticate
32
+ </button>
33
+
34
+ <button type="reset" class="btn btn-sm text-muted w-100 text-center"
35
+ style="background: none; border: none;">
36
+ Clear
37
+ </button>
38
+ </form>
39
+
40
+ {% if messages %}
41
+ <div class="mt-4">
42
+ {% for message in messages %}
43
+ <div class="alert alert-danger bg-transparent border-danger text-danger text-center small p-2" role="alert">
44
+ {{ message }}
45
+ </div>
46
+ {% endfor %}
47
+ </div>
48
+ {% endif %}
49
+ </div>
50
+ </div>
51
+
52
+ {%endblock%}
templates/UserLogin.html ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'base.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="auth-container">
6
+ <div class="glass-panel p-5" style="max-width: 450px; width: 100%;">
7
+ <div class="text-center mb-5">
8
+ <div class="bg-primary bg-opacity-10 d-inline-flex align-items-center justify-content-center rounded-circle mb-3"
9
+ style="width: 60px; height: 60px;">
10
+ <i class="fas fa-user text-primary fs-3"></i>
11
+ </div>
12
+ <h3 class="fw-bold text-white">Welcome Back</h3>
13
+ <p class="text-muted small">Access your secure fraud analysis dashboard.</p>
14
+ </div>
15
+
16
+ <form action="{% url 'UserLoginCheck' %}" method="POST" class="needs-validation" novalidate>
17
+ {% csrf_token %}
18
+
19
+ <div class="mb-4">
20
+ <label class="input-label">Login ID</label>
21
+ <input type="text" class="input-modern" id="loginid" name="loginid" required
22
+ placeholder="Enter your ID">
23
+ </div>
24
+
25
+ <div class="mb-4">
26
+ <label class="input-label">Password</label>
27
+ <input type="password" class="input-modern" id="pswd" name="pswd" required placeholder="••••••••">
28
+ </div>
29
+
30
+ <button class="btn-modern w-100 mb-4" type="submit">
31
+ Sign In
32
+ </button>
33
+
34
+ <div class="d-flex justify-content-between align-items-center">
35
+ <button class="btn btn-sm text-muted" type="reset" style="background: none; border: none;">
36
+ Reset
37
+ </button>
38
+ <a href="{% url 'UserRegisterForm' %}" class="text-primary text-decoration-none small fw-bold">
39
+ Create Account
40
+ </a>
41
+ </div>
42
+
43
+ {% if messages %}
44
+ <div class="mt-4">
45
+ {% for message in messages %}
46
+ <div class="alert alert-info bg-transparent border-info text-info text-center small p-2" role="alert">
47
+ {{ message }}
48
+ </div>
49
+ {% endfor %}
50
+ </div>
51
+ {% endif %}
52
+ </form>
53
+ </div>
54
+ </div>
55
+
56
+ {% endblock %}
templates/UserRegistrations.html ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'base.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="auth-container">
6
+ <div class="glass-panel p-5" style="max-width: 800px; width: 100%;">
7
+
8
+ <div class="text-center mb-5">
9
+ <h2 class="fw-bold text-white">Create Account</h2>
10
+ <p class="text-muted">Join the network to start analyzing patterns.</p>
11
+ </div>
12
+
13
+ {% if messages %}
14
+ <div class="mb-4">
15
+ {% for message in messages %}
16
+ <div class="alert alert-success bg-transparent border-success text-success text-center p-2" role="alert">
17
+ {{ message }}
18
+ </div>
19
+ {% endfor %}
20
+ </div>
21
+ {% endif %}
22
+
23
+ <form action="{% url 'UserRegisterForm' %}" method="post">
24
+ {% csrf_token %}
25
+
26
+ <div class="row g-4">
27
+ <div class="col-md-6">
28
+ <label class="input-label">Full Name</label>
29
+ <input type="text" class="input-modern" id="name" name="name" maxlength="100" required>
30
+ </div>
31
+
32
+ <div class="col-md-6">
33
+ <label class="input-label">Username / ID</label>
34
+ <input type="text" class="input-modern" id="loginid" name="loginid" maxlength="100" required>
35
+ </div>
36
+
37
+ <div class="col-md-6">
38
+ <label class="input-label">Password</label>
39
+ <input type="password" class="input-modern" id="password" name="password" maxlength="100" required>
40
+ </div>
41
+
42
+ <div class="col-md-6">
43
+ <label class="input-label">Mobile Number</label>
44
+ <input type="text" class="input-modern" id="mobile" name="mobile" maxlength="10" required
45
+ pattern="\d{10}">
46
+ </div>
47
+
48
+ <div class="col-12">
49
+ <label class="input-label">Email Address</label>
50
+ <input type="email" class="input-modern" id="email" name="email" maxlength="100" required>
51
+ </div>
52
+
53
+ <div class="col-12">
54
+ <label class="input-label">Locality</label>
55
+ <input type="text" class="input-modern" id="locality" name="locality" maxlength="100">
56
+ </div>
57
+ </div>
58
+
59
+ <div class="d-grid mt-5">
60
+ <button type="submit" class="btn-modern">
61
+ Register
62
+ </button>
63
+ </div>
64
+
65
+ <div class="text-center mt-4">
66
+ <small class="text-muted">
67
+ Already registered?
68
+ <a href="{% url 'UserLogin' %}" class="text-primary text-decoration-none fw-bold">Login</a>
69
+ </small>
70
+ </div>
71
+ </form>
72
+ </div>
73
+ </div>
74
+
75
+ {% endblock %}
templates/admins/AdminHome.html ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'admins/adminbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="container-fluid">
6
+
7
+ <!-- CSS/SVG Charts (No External JS Libs Required) -->
8
+ <div class="row mb-4">
9
+ <div class="col-12">
10
+ <div class="glass-panel p-4 pb-0 h-100 position-relative overflow-hidden">
11
+ <div class="d-flex justify-content-between align-items-end mb-3">
12
+ <div>
13
+ <h5 class="text-dark fw-bold m-0">Live Fraud Traffic</h5>
14
+ <p class="text-muted small m-0">Incoming transaction volume vs. blocked threats</p>
15
+ </div>
16
+ <div class="d-flex gap-3">
17
+ <div class="d-flex align-items-center small"><span
18
+ class="badge bg-primary rounded-circle p-1 me-2"></span> Legitimate</div>
19
+ <div class="d-flex align-items-center small"><span
20
+ class="badge bg-danger rounded-circle p-1 me-2"></span> Fraud</div>
21
+ </div>
22
+ </div>
23
+
24
+ <!-- Mock Chart Visualization using CSS Flexbox -->
25
+ <div class="chart-box w-100 d-flex justify-content-between align-items-end"
26
+ style="height: 220px; border-bottom: 1px solid #e2e8f0; padding-bottom: 10px;">
27
+ <!-- Seven days/points -->
28
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
29
+ <div class="w-100 d-flex align-items-end justify-content-center"
30
+ style="height: 150px; gap: 4px;">
31
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 40%;"></div>
32
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 10%;"></div>
33
+ </div>
34
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">MON</span>
35
+ </div>
36
+
37
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
38
+ <div class="w-100 d-flex align-items-end justify-content-center"
39
+ style="height: 150px; gap: 4px;">
40
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 65%;"></div>
41
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 15%;"></div>
42
+ </div>
43
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">TUE</span>
44
+ </div>
45
+
46
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
47
+ <div class="w-100 d-flex align-items-end justify-content-center"
48
+ style="height: 150px; gap: 4px;">
49
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 80%;"></div>
50
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 5%;"></div>
51
+ </div>
52
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">WED</span>
53
+ </div>
54
+
55
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
56
+ <div class="w-100 d-flex align-items-end justify-content-center"
57
+ style="height: 150px; gap: 4px;">
58
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 55%;"></div>
59
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 25%;"></div>
60
+ </div>
61
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">THU</span>
62
+ </div>
63
+
64
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
65
+ <div class="w-100 d-flex align-items-end justify-content-center"
66
+ style="height: 150px; gap: 4px;">
67
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 90%;"></div>
68
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 8%;"></div>
69
+ </div>
70
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">FRI</span>
71
+ </div>
72
+
73
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
74
+ <div class="w-100 d-flex align-items-end justify-content-center"
75
+ style="height: 150px; gap: 4px;">
76
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 45%;"></div>
77
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 12%;"></div>
78
+ </div>
79
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">SAT</span>
80
+ </div>
81
+
82
+ <div class="chart-bar-group d-flex flex-column align-items-center w-100 mx-2">
83
+ <div class="w-100 d-flex align-items-end justify-content-center"
84
+ style="height: 150px; gap: 4px;">
85
+ <div class="bar bg-primary opacity-50 rounded-top" style="width: 12px; height: 75%;"></div>
86
+ <div class="bar bg-danger rounded-top" style="width: 12px; height: 4%;"></div>
87
+ </div>
88
+ <span class="small text-muted mt-2" style="font-size: 0.7rem;">SUN</span>
89
+ </div>
90
+
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </div>
95
+
96
+
97
+ <!-- Status Stats Row (Compacted) -->
98
+ <div class="row g-4 mb-4">
99
+ <div class="col-xl-3 col-md-6">
100
+ <div class="stat-card hover-lift border-0 shadow-sm"
101
+ style="border-left: 4px solid var(--primary) !important;">
102
+ <div class="d-flex justify-content-between align-items-start">
103
+ <div class="stat-info">
104
+ <p class="text-muted small fw-bold text-uppercase mb-1">Total Records</p>
105
+ <h3 class="counter text-dark fw-bold mb-0">284,807</h3>
106
+ <span class="text-success small"><i class="fas fa-arrow-up me-1"></i> +12% this week</span>
107
+ </div>
108
+ <div class="stat-icon bg-primary bg-opacity-10 text-primary rounded px-3 py-2">
109
+ <i class="fas fa-database"></i>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+
115
+ <div class="col-xl-3 col-md-6">
116
+ <div class="stat-card hover-lift border-0 shadow-sm"
117
+ style="border-left: 4px solid var(--secondary) !important;">
118
+ <div class="d-flex justify-content-between align-items-start">
119
+ <div class="stat-info">
120
+ <p class="text-muted small fw-bold text-uppercase mb-1">Active Models</p>
121
+ <h3 class="text-dark fw-bold mb-0">3</h3>
122
+ <span class="text-muted small">Ensemble Mode</span>
123
+ </div>
124
+ <div class="stat-icon bg-secondary bg-opacity-10 text-secondary rounded px-3 py-2">
125
+ <i class="fas fa-cubes"></i>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+
131
+ <div class="col-xl-3 col-md-6">
132
+ <div class="stat-card hover-lift border-0 shadow-sm"
133
+ style="border-left: 4px solid var(--accent) !important;">
134
+ <div class="d-flex justify-content-between align-items-start">
135
+ <div class="stat-info">
136
+ <p class="text-muted small fw-bold text-uppercase mb-1">Precision</p>
137
+ <h3 class="text-dark fw-bold mb-0">99.8%</h3>
138
+ <span class="text-success small"><i class="fas fa-check me-1"></i> Optimal</span>
139
+ </div>
140
+ <div class="stat-icon bg-success bg-opacity-10 text-success rounded px-3 py-2">
141
+ <i class="fas fa-check-circle"></i>
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+
147
+ <div class="col-xl-3 col-md-6">
148
+ <div class="stat-card hover-lift border-0 shadow-sm" style="border-left: 4px solid #f59e0b !important;">
149
+ <div class="d-flex justify-content-between align-items-start">
150
+ <div class="stat-info">
151
+ <p class="text-muted small fw-bold text-uppercase mb-1">Pending Alerts</p>
152
+ <h3 class="text-dark fw-bold mb-0">12</h3>
153
+ <span class="text-warning small">Requires review</span>
154
+ </div>
155
+ <div class="stat-icon bg-warning bg-opacity-10 text-warning rounded px-3 py-2">
156
+ <i class="fas fa-bell"></i>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ </div>
161
+ </div>
162
+
163
+
164
+ <!-- Main Content Split -->
165
+ <div class="row g-4">
166
+
167
+ <!-- Activity Log -->
168
+ <div class="col-lg-8">
169
+ <div class="glass-panel p-4 h-100">
170
+ <div class="d-flex justify-content-between align-items-center mb-4 border-bottom pb-3">
171
+ <h5 class="text-dark fw-bold m-0">Recent Security Events</h5>
172
+ <button class="btn btn-sm btn-outline-primary rounded-pill px-3">Export Log</button>
173
+ </div>
174
+
175
+ <div class="activity-feed">
176
+ <div class="d-flex align-items-center mb-4">
177
+ <div class="bg-success bg-opacity-10 text-success rounded-circle p-2 me-3 d-flex align-items-center justify-content-center"
178
+ style="width: 40px; height: 40px;">
179
+ <i class="fas fa-shield-alt"></i>
180
+ </div>
181
+ <div class="flex-grow-1">
182
+ <div class="d-flex justify-content-between">
183
+ <h6 class="text-dark fw-bold m-0">Threat Mitigated</h6>
184
+ <small class="text-muted fw-bold">2m ago</small>
185
+ </div>
186
+ <p class="text-muted small m-0">IP 192.168.4.22 automatically blocked by ruleset.</p>
187
+ </div>
188
+ </div>
189
+
190
+ <div class="d-flex align-items-center mb-4">
191
+ <div class="bg-primary bg-opacity-10 text-primary rounded-circle p-2 me-3 d-flex align-items-center justify-content-center"
192
+ style="width: 40px; height: 40px;">
193
+ <i class="fas fa-user-edit"></i>
194
+ </div>
195
+ <div class="flex-grow-1">
196
+ <div class="d-flex justify-content-between">
197
+ <h6 class="text-dark fw-bold m-0">Admin Action</h6>
198
+ <small class="text-muted fw-bold">45m ago</small>
199
+ </div>
200
+ <p class="text-muted small m-0">User #482 manually approved by Analyst.</p>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ </div>
205
+ </div>
206
+
207
+ <!-- System Health (Donut equivalent) -->
208
+ <div class="col-lg-4">
209
+ <div class="glass-panel p-4 h-100">
210
+ <h5 class="text-dark fw-bold mb-4">Server Load</h5>
211
+
212
+ <div class="mb-4">
213
+ <div class="d-flex justify-content-between mb-1">
214
+ <span class="small fw-bold text-muted">CPU Usage</span>
215
+ <span class="small fw-bold text-dark">42%</span>
216
+ </div>
217
+ <div class="progress" style="height: 6px;">
218
+ <div class="progress-bar bg-primary" style="width: 42%"></div>
219
+ </div>
220
+ </div>
221
+
222
+ <div class="mb-4">
223
+ <div class="d-flex justify-content-between mb-1">
224
+ <span class="small fw-bold text-muted">Memory</span>
225
+ <span class="small fw-bold text-dark">68%</span>
226
+ </div>
227
+ <div class="progress" style="height: 6px;">
228
+ <div class="progress-bar bg-secondary" style="width: 68%"></div>
229
+ </div>
230
+ </div>
231
+
232
+ <div class="mb-4">
233
+ <div class="d-flex justify-content-between mb-1">
234
+ <span class="small fw-bold text-muted">Network I/O</span>
235
+ <span class="small fw-bold text-dark">2.4 GB/s</span>
236
+ </div>
237
+ <div class="progress" style="height: 6px;">
238
+ <div class="progress-bar bg-success" style="width: 65%"></div>
239
+ </div>
240
+ </div>
241
+
242
+ <div class="alert alert-light border small text-muted mt-4">
243
+ <i class="fas fa-info-circle me-2 text-primary"></i> System is running optimally. Next maintenance
244
+ scheduled for Sunday 2:00 AM.
245
+ </div>
246
+
247
+ </div>
248
+ </div>
249
+
250
+ </div>
251
+ </div>
252
+
253
+ <style>
254
+ /* Bar animations */
255
+ .bar {
256
+ transition: height 0.5s ease-out;
257
+ }
258
+
259
+ .bar:hover {
260
+ opacity: 0.8 !important;
261
+ transform: scaleX(1.1);
262
+ }
263
+ </style>
264
+
265
+ {% endblock %}
templates/admins/accuracy.html ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'admins/adminbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="container-fluid fade-in">
6
+ <div class="row g-4">
7
+
8
+ <!-- Metrics Table -->
9
+ <div class="col-lg-12">
10
+ <div class="glass-panel p-4 h-100">
11
+ <div
12
+ class="d-flex justify-content-between align-items-center mb-4 pb-3 border-bottom border-secondary border-opacity-25">
13
+ <h4 class="text-white fw-bold m-0"><i class="fas fa-flask text-primary me-2"></i> Model Performance
14
+ </h4>
15
+ <span class="text-muted small">Comparative Analysis</span>
16
+ </div>
17
+
18
+ {% if error %}
19
+ <div class="alert alert-danger bg-transparent border-danger text-danger">
20
+ <i class="fas fa-exclamation-circle me-2"></i> {{ error }}
21
+ </div>
22
+ {% endif %}
23
+
24
+ <div class="table-responsive">
25
+ <table class="table text-white align-middle" style="border-color: rgba(255,255,255,0.05);">
26
+ <!-- The 'results' context variable typically renders raw HTML table rows/headers,
27
+ so we wrap it in a cleaner container style. If 'results' contains <table> tags,
28
+ this wrapper might need adjustment in the backend, but assuming it renders content: -->
29
+ {{ results|safe }}
30
+ </table>
31
+ </div>
32
+
33
+ <style>
34
+ /* Result Table Overrides for dark theme compatibility */
35
+ .dataframe {
36
+ width: 100%;
37
+ border: none;
38
+ }
39
+
40
+ .dataframe thead th {
41
+ background: rgba(59, 130, 246, 0.2);
42
+ color: white;
43
+ border: none;
44
+ padding: 12px;
45
+ }
46
+
47
+ .dataframe tbody td {
48
+ padding: 12px;
49
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
50
+ color: #cbd5e1;
51
+ }
52
+
53
+ .dataframe tbody tr:hover {
54
+ background: rgba(255, 255, 255, 0.02);
55
+ }
56
+ </style>
57
+ </div>
58
+ </div>
59
+
60
+ <!-- Metric Visualization -->
61
+ <div class="col-lg-12">
62
+ <div class="glass-panel p-4 h-100">
63
+ <div
64
+ class="d-flex justify-content-between align-items-center mb-4 pb-3 border-bottom border-secondary border-opacity-25">
65
+ <h4 class="text-white fw-bold m-0"><i class="fas fa-chart-bar text-secondary me-2"></i>
66
+ Visualization</h4>
67
+ <span class="text-muted small">Accuracy Comparison Graph</span>
68
+ </div>
69
+
70
+ {% if graph_url %}
71
+ <div class="text-center p-3" style="background: rgba(0,0,0,0.2); border-radius: 12px;">
72
+ <img src="{{ graph_url }}" alt="Metrics Graph"
73
+ class="img-fluid rounded border border-secondary border-opacity-25 shadow-lg">
74
+ </div>
75
+ {% else %}
76
+ <div class="text-center py-5 text-muted opacity-50">
77
+ <i class="fas fa-chart-area fs-1 mb-3"></i>
78
+ <p>No visualization generated. Please initiate model training.</p>
79
+ </div>
80
+ {% endif %}
81
+ </div>
82
+ </div>
83
+
84
+ </div>
85
+ </div>
86
+
87
+ {% endblock %}
templates/admins/adminbase.html ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% load static %}
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
9
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
10
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap"
11
+ rel="stylesheet">
12
+ <!-- Custom Zenith Flow CSS -->
13
+ <link rel="stylesheet" href="{% static 'css/style.css' %}">
14
+
15
+ <title>Admin Dashboard | FraudGuard</title>
16
+ </head>
17
+
18
+ <body class="video-enabled">
19
+
20
+ <!-- Video Background Container -->
21
+ <div class="video-bg-container">
22
+ <video autoplay muted loop playsinline class="video-bg" id="bgVideo">
23
+ <source src="{% static 'videos/home_bg.mp4' %}" type="video/mp4">
24
+ Your browser does not support the video tag.
25
+ </video>
26
+ <div class="video-overlay"></div>
27
+ </div>
28
+
29
+ <!-- Sidebar -->
30
+ <div class="sidebar-modern">
31
+ <div class="sidebar-brand">
32
+ <div class="d-flex align-items-center">
33
+ <i class="fas fa-shield-alt text-primary fs-3 me-2"></i>
34
+ <div class="lh-1">
35
+ <div class="ls-1 text-uppercase small text-muted fw-bold" style="font-size: 0.65rem;">System</div>
36
+ <div class="fs-5 fw-bold text-dark">Fraud<span class="text-primary">Guard</span></div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+
41
+ <ul class="sidebar-menu">
42
+ <li class="sidebar-item">
43
+ <a href="{% url 'adminhome' %}" class="{% if request.path == '/adminhome/' %}active{% endif %}">
44
+ <i class="fas fa-chart-pie"></i> Dashboard
45
+ </a>
46
+ </li>
47
+ <li class="sidebar-item">
48
+ <a href="{% url 'RegisterUsersView' %}" class="{% if 'userDetails' in request.path %}active{% endif %}">
49
+ <i class="fas fa-users"></i> Users Registry
50
+ </a>
51
+ </li>
52
+ <li class="sidebar-item">
53
+ <a href="{% url 'ViewDataset' %}" class="{% if 'ViewDataset' in request.path %}active{% endif %}">
54
+ <i class="fas fa-database"></i> Training Data
55
+ </a>
56
+ </li>
57
+ <li class="sidebar-item">
58
+ <a href="{% url 'training' %}" class="{% if 'training' in request.path %}active{% endif %}">
59
+ <i class="fas fa-sync-alt"></i> Model Retraining
60
+ </a>
61
+ </li>
62
+ </ul>
63
+
64
+ <div class="mt-auto p-4 border-top border-secondary border-opacity-10">
65
+ <a href="{% url 'index' %}" class="btn-modern btn-danger w-100 justify-content-center shadow-none"
66
+ style="background: var(--danger); border: none; color: white !important;">
67
+ <i class="fas fa-sign-out-alt me-2"></i> Sign Out
68
+ </a>
69
+ </div>
70
+ </div>
71
+
72
+ <!-- Main Content -->
73
+ <div class="main-content">
74
+
75
+ <!-- Top Header -->
76
+ <div
77
+ class="d-flex justify-content-between align-items-center mb-5 pb-3 border-bottom border-light border-opacity-10 bg-white shadow-sm p-4 rounded-3">
78
+ <div>
79
+ <h3 class="text-dark fw-bold m-0">Admin Console</h3>
80
+ <p class="text-muted small m-0">Real-time system monitoring</p>
81
+ </div>
82
+
83
+ <div class="d-flex align-items-center gap-3">
84
+ <div class="position-relative">
85
+ <button class="btn btn-light rounded-circle shadow-sm text-muted hover-lift"
86
+ style="width: 40px; height: 40px;">
87
+ <i class="fas fa-bell"></i>
88
+ </button>
89
+ <span
90
+ class="position-absolute top-0 start-100 translate-middle p-1 bg-danger border border-light rounded-circle">
91
+ <span class="visually-hidden">New alerts</span>
92
+ </span>
93
+ </div>
94
+
95
+
96
+ <div class="ps-3 border-start">
97
+ <div class="d-flex align-items-center">
98
+ <div class="text-end me-3 d-none d-md-block">
99
+ <div class="text-dark fw-bold small">Administrator</div>
100
+ <div class="text-success small" style="font-size: 0.7rem;">
101
+ <i class="fas fa-circle me-1" style="font-size: 8px;"></i>Online
102
+ </div>
103
+ </div>
104
+ <div class="bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center text-primary border border-primary border-opacity-25 shadow-sm hover-lift"
105
+ style="width: 45px; height: 45px; font-size: 1.2rem;">
106
+ <i class="fas fa-user-shield"></i>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+
113
+ <div class="fade-in">
114
+ {% block contents %}
115
+ {% endblock %}
116
+ </div>
117
+
118
+ <footer class="mt-5 pt-4 border-top border-secondary border-opacity-10 text-center text-muted small">
119
+ FraudGuard AI System &copy; 2025 | <i class="fas fa-shield-alt text-primary"></i> Protected
120
+ </footer>
121
+ </div>
122
+
123
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
124
+ </body>
125
+
126
+ </html>
templates/admins/viewregisterusers.html ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'admins/adminbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="container-fluid fade-in">
6
+
7
+ <!-- Header -->
8
+ <div class="d-flex justify-content-between align-items-center mb-4">
9
+ <div>
10
+ <h4 class="text-dark fw-bold m-0">User Registry</h4>
11
+ <p class="text-muted small m-0">Manage system access and roles</p>
12
+ </div>
13
+ <span class="badge bg-white text-dark shadow-sm border px-3 py-2 rounded-pill">
14
+ <i class="fas fa-users me-2 text-primary"></i> {{data|length}} Total Users
15
+ </span>
16
+ </div>
17
+
18
+ <!-- Pro Table Card -->
19
+ <div class="glass-panel p-0 overflow-hidden shadow-sm">
20
+ <div class="table-responsive">
21
+ <table class="table-pro">
22
+ <thead>
23
+ <tr>
24
+ <th width="5%">#</th>
25
+ <th width="25%">Identity</th>
26
+ <th width="25%">Contact</th>
27
+ <th width="15%">Region</th>
28
+ <th width="10%">Status</th>
29
+ <th width="20%" class="text-end pe-4">Actions</th>
30
+ </tr>
31
+ </thead>
32
+ <tbody>
33
+ {% for i in data %}
34
+ <tr>
35
+ <td class="text-muted ps-4">{{forloop.counter}}</td>
36
+ <td>
37
+ <div class="d-flex align-items-center">
38
+ <div class="bg-gradient rounded-circle d-flex align-items-center justify-content-center me-3 text-white shadow-sm"
39
+ style="width: 40px; height: 40px; background: linear-gradient(135deg, #6366f1, #8b5cf6); font-weight: bold;">
40
+ {{i.name|slice:":1"|upper}}
41
+ </div>
42
+ <div>
43
+ <div class="text-dark fw-bold">{{i.name}}</div>
44
+ <div class="small text-muted">ID: {{i.loginid}}</div>
45
+ </div>
46
+ </div>
47
+ </td>
48
+ <td>
49
+ <div class="text-dark small fw-bold">{{i.email}}</div>
50
+ <div class="small text-muted">{{i.mobile}}</div>
51
+ </td>
52
+ <td>
53
+ <span class="badge bg-light text-muted border rounded-pill px-2">
54
+ <i class="fas fa-map-marker-alt me-1 text-danger"></i> {{i.locality}}
55
+ </span>
56
+ </td>
57
+ <td>
58
+ {% if i.status == 'waiting' %}
59
+ <span
60
+ class="badge bg-warning bg-opacity-10 text-warning border border-warning border-opacity-10 rounded-pill px-3 py-2">
61
+ <i class="fas fa-clock me-1"></i> Pending
62
+ </span>
63
+ {% else %}
64
+ <span
65
+ class="badge bg-success bg-opacity-10 text-success border border-success border-opacity-10 rounded-pill px-3 py-2">
66
+ <i class="fas fa-check-circle me-1"></i> Active
67
+ </span>
68
+ {% endif %}
69
+ </td>
70
+ <td class="text-end pe-4">
71
+ {% if i.status == 'waiting' %}
72
+ <a href="{% url 'activate_users' %}?uid={{ i.id }}"
73
+ class="btn btn-sm btn-primary rounded-pill px-3 shadow-sm hover-lift">
74
+ Approved
75
+ </a>
76
+ {% else %}
77
+ <div class="dropdown d-inline-block">
78
+ <a href="{% url 'delete_users' %}?uid={{ i.id }}"
79
+ class="btn btn-sm btn-outline-danger rounded-pill px-3 hover-lift border-0 bg-danger bg-opacity-10">
80
+ <i class="fas fa-trash-alt me-1"></i> Remove
81
+ </a>
82
+ </div>
83
+ {% endif %}
84
+ </td>
85
+ </tr>
86
+ {% empty %}
87
+ <tr>
88
+ <td colspan="6" class="text-center py-5">
89
+ <div class="py-5 opacity-50">
90
+ <i class="fas fa-folder-open fs-1 text-muted mb-3"></i>
91
+ <h6 class="text-muted">No users found in the registry.</h6>
92
+ </div>
93
+ </td>
94
+ </tr>
95
+ {% endfor %}
96
+ </tbody>
97
+ </table>
98
+ </div>
99
+ </div>
100
+ </div>
101
+
102
+ {% endblock %}
templates/base.html ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% load static %}
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <!-- Bootstrap 5 -->
9
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
10
+ <!-- FontAwesome -->
11
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
12
+ <!-- Google Fonts -->
13
+ <link
14
+ href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;900&family=Orbitron:wght@400;700;900&display=swap"
15
+ rel="stylesheet">
16
+ <!-- Custom 3D Cyber CSS -->
17
+ <link rel="stylesheet" href="{% static 'css/style.css' %}">
18
+
19
+ <title>Credit Card Fraud Detection | AI Console</title>
20
+ </head>
21
+
22
+ <body class="video-enabled">
23
+
24
+ <!-- Video Background Container -->
25
+ <div class="video-bg-container">
26
+ <video autoplay muted loop playsinline class="video-bg" id="bgVideo">
27
+ <source src="{% static 'videos/home_bg.mp4' %}" type="video/mp4">
28
+ Your browser does not support the video tag.
29
+ </video>
30
+ <div class="video-overlay"></div>
31
+ </div>
32
+
33
+ <!-- Modern Glass Header -->
34
+ <nav class="header-modern">
35
+ <div class="d-flex align-items-center">
36
+ <i class="fas fa-shield-alt text-primary fs-3 me-3"></i>
37
+ <div>
38
+ <h4 class="m-0 fw-bold text-white" style="letter-spacing: -0.5px;">Fraud<span
39
+ class="text-primary">Guard</span></h4>
40
+ </div>
41
+ </div>
42
+
43
+ <div class="d-none d-md-flex align-items-center">
44
+ <a class="nav-link-modern {% if request.path == '/' %}active{% endif %}" href="{% url 'index' %}">Hub</a>
45
+ <a class="nav-link-modern" href="{% url 'UserLogin' %}">User Portal</a>
46
+ <a class="nav-link-modern" href="{% url 'AdminLoginCheck' %}">Admin Console</a>
47
+ <a class="btn-modern ms-3" href="{% url 'UserRegisterForm' %}"
48
+ style="padding: 8px 20px; font-size: 0.8rem;">
49
+ Get Started
50
+ </a>
51
+ </div>
52
+ </nav>
53
+
54
+ <!-- Main Content Area -->
55
+ <div style="padding-top: 80px; position: relative; z-index: 2;">
56
+ {% block contents %}
57
+ {% endblock %}
58
+ </div>
59
+
60
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
61
+
62
+ <script>
63
+ window.addEventListener('scroll', function () {
64
+ const header = document.querySelector('.header-modern');
65
+ if (window.scrollY > 50) {
66
+ header.classList.add('scrolled');
67
+ } else {
68
+ header.classList.remove('scrolled');
69
+ }
70
+ });
71
+
72
+ document.addEventListener("DOMContentLoaded", function () {
73
+ var video = document.getElementById("bgVideo");
74
+ if (video) {
75
+ video.playbackRate = 0.6; // Lower video speed
76
+ }
77
+ });
78
+ </script>
79
+
80
+ </body>
81
+
82
+ </html>
templates/index.html ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'base.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+
6
+
7
+ <div class="hero-wrapper position-relative">
8
+ <div class="container">
9
+ <div class="row justify-content-center">
10
+ <div class="col-lg-10">
11
+ <span
12
+ class="badge rounded-pill bg-primary bg-opacity-10 text-primary border border-primary border-opacity-25 px-3 py-2 mb-4 fade-in">
13
+ <i class="fas fa-check-circle me-2"></i> Hybrid Deep Learning Architecture
14
+ </span>
15
+
16
+ <h1 class="hero-title fade-in" style="animation-delay: 0.1s;">
17
+ Next-Gen Payment Security
18
+ </h1>
19
+
20
+ <p class="lead text-muted fade-in mb-5 mx-auto"
21
+ style="animation-delay: 0.2s; max-width: 700px; font-weight: 600;">
22
+ Protecting financial ecosystems with Graph Neural Networks and Real-Time Autoencoders. Experience
23
+ instant fraud detection.
24
+ </p>
25
+
26
+ <div class="d-flex gap-3 justify-content-center fade-in" style="animation-delay: 0.3s;">
27
+ <a href="{% url 'UserRegisterForm' %}" class="btn-modern">
28
+ Create Account
29
+ </a>
30
+ <a href="{% url 'UserLogin' %}" class="btn-outline-modern bg-white">
31
+ User Login
32
+ </a>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="container pb-5 position-relative">
40
+ <div class="row g-4">
41
+ <!-- Feature 1 -->
42
+ <div class="col-md-4">
43
+ <div class="card-3d h-100 bg-white">
44
+ <div class="mb-4">
45
+ <i class="fas fa-project-diagram text-primary fs-1"></i>
46
+ </div>
47
+ <h4 class="fw-bold mb-3 text-dark">Graph Neural Networks</h4>
48
+ <p class="text-muted small">
49
+ Analyzes complex relationship matrices between transactions to identify hidden fraud rings that
50
+ standard linear models miss.
51
+ </p>
52
+ </div>
53
+ </div>
54
+
55
+ <!-- Feature 2 -->
56
+ <div class="col-md-4">
57
+ <div class="card-3d h-100 bg-white">
58
+ <div class="mb-4">
59
+ <i class="fas fa-bolt text-warning fs-1"></i>
60
+ </div>
61
+ <h4 class="fw-bold mb-3 text-dark">Real-Time latency</h4>
62
+ <p class="text-muted small">
63
+ Engineered for millisecond-level inference, ensuring legitimate transactions are approved instantly
64
+ while threats are blocked.
65
+ </p>
66
+ </div>
67
+ </div>
68
+
69
+ <!-- Feature 3 -->
70
+ <div class="col-md-4">
71
+ <div class="card-3d h-100 bg-white">
72
+ <div class="mb-4">
73
+ <i class="fas fa-layer-group text-danger fs-1"></i>
74
+ </div>
75
+ <h4 class="fw-bold mb-3 text-dark">Ensemble Defense</h4>
76
+ <p class="text-muted small">
77
+ A weighted voting system combining XGBoost, Random Forest, and Deep Learning provides a
78
+ multi-layered security shield.
79
+ </p>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+
85
+ {% endblock %}
templates/users/UserHomePage.html ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'users/userbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="fade-in">
6
+
7
+ <!-- Welcome -->
8
+ <div class="text-center mb-5">
9
+ <h2 class="hero-title" style="font-size: 3rem;">Welcome Back, Agent</h2>
10
+ <p class="text-muted lead">The secure portal is active. Select a tool to begin analysis.</p>
11
+ <div class="mt-4">
12
+ <a href="{% url 'prediction' %}" class="btn-modern px-5 py-3 fs-5">
13
+ <i class="fas fa-search me-2"></i> Launch Scanner
14
+ </a>
15
+ </div>
16
+ </div>
17
+
18
+ <!-- Widgets -->
19
+ <div class="row g-4 justify-content-center">
20
+ <div class="col-md-4 col-lg-3">
21
+ <div class="glass-panel p-4 text-center h-100">
22
+ <div class="mb-3">
23
+ <i class="fas fa-database text-primary fs-1"></i>
24
+ </div>
25
+ <h5 class="text-white fw-bold">Training Data</h5>
26
+ <p class="text-muted small">Access the 284k+ transaction records used for model calibration.</p>
27
+ </div>
28
+ </div>
29
+
30
+ <div class="col-md-4 col-lg-3">
31
+ <div class="glass-panel p-4 text-center h-100">
32
+ <div class="mb-3">
33
+ <i class="fas fa-network-wired text-secondary fs-1"></i>
34
+ </div>
35
+ <h5 class="text-white fw-bold">Neural Logic</h5>
36
+ <p class="text-muted small">Visualize the decision paths of the active Deep Learning models.</p>
37
+ </div>
38
+ </div>
39
+
40
+ <div class="col-md-4 col-lg-3">
41
+ <div class="glass-panel p-4 text-center h-100">
42
+ <div class="mb-3">
43
+ <i class="fas fa-file-alt text-success fs-1"></i>
44
+ </div>
45
+ <h5 class="text-white fw-bold">Reports</h5>
46
+ <p class="text-muted small">Generate detailed PDFs of fraud analysis sessions.</p>
47
+ </div>
48
+ </div>
49
+ </div>
50
+
51
+ </div>
52
+
53
+ {% endblock %}
templates/users/prediction.html ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'users/userbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="row justify-content-center fade-in">
6
+ <div class="col-xl-10">
7
+ <div class="glass-panel p-0 overflow-hidden">
8
+ <div class="row g-0">
9
+ <!-- Left: Form -->
10
+ <div class="col-lg-7 p-5" style="border-right: 1px solid var(--glass-border);">
11
+ <div class="mb-4">
12
+ <h3 class="fw-bold text-white mb-2">Transaction Analyzer</h3>
13
+ <p class="text-muted small">Enter transaction metadata for real-time inference.</p>
14
+ </div>
15
+
16
+ <form method="POST" action="{% url 'prediction' %}">
17
+ {% csrf_token %}
18
+
19
+ <div class="row g-3 mb-3">
20
+ <div class="col-6">
21
+ <label class="input-label">Amount ($)</label>
22
+ <input type="number" step="0.01" name="amount" class="input-modern" placeholder="0.00"
23
+ required>
24
+ </div>
25
+ <div class="col-6">
26
+ <label class="input-label">Time (Sec)</label>
27
+ <input type="number" name="transaction_time" class="input-modern"
28
+ placeholder="e.g. 4500" required>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="row g-3 mb-3">
33
+ <div class="col-6">
34
+ <label class="input-label">Category</label>
35
+ <select name="merchant_type" class="input-modern">
36
+ <option>Shopping</option>
37
+ <option>Food</option>
38
+ <option>Fuel</option>
39
+ <option>Online</option>
40
+ <option>Travel</option>
41
+ <option>Bills</option>
42
+ </select>
43
+ </div>
44
+ <div class="col-6">
45
+ <label class="input-label">Location</label>
46
+ <select name="location" class="input-modern">
47
+ <option>Delhi</option>
48
+ <option>Bangalore</option>
49
+ <option>Chennai</option>
50
+ <option>Hyderabad</option>
51
+ <option>Mumbai</option>
52
+ </select>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="row g-3 mb-5">
57
+ <div class="col-6">
58
+ <label class="input-label">Device</label>
59
+ <select name="device_type" class="input-modern">
60
+ <option>Mobile</option>
61
+ <option>Web</option>
62
+ <option>POS</option>
63
+ </select>
64
+ </div>
65
+ <div class="col-6">
66
+ <label class="input-label">Customer ID</label>
67
+ <input type="number" name="customer_id" class="input-modern" placeholder="ID" required>
68
+ </div>
69
+ </div>
70
+
71
+ <button type="submit" class="btn-modern w-100 py-3">
72
+ Run Analysis <i class="fas fa-arrow-right ms-2"></i>
73
+ </button>
74
+ </form>
75
+ </div>
76
+
77
+ <!-- Right: Result -->
78
+ <div
79
+ class="col-lg-5 p-5 d-flex align-items-center justify-content-center bg-dark bg-opacity-25 text-center">
80
+ <div class="w-100">
81
+ {% if final_output %}
82
+ <div class="fade-in">
83
+ {% if "Fraud" in final_output %}
84
+ <div class="result-circle res-danger">
85
+ <i class="fas fa-exclamation-triangle"></i>
86
+ </div>
87
+ <h2 class="text-white fw-bold mb-2">FRAUD DETECTED</h2>
88
+ <p
89
+ class="text-danger bg-danger bg-opacity-10 p-2 rounded mb-4 d-inline-block border border-danger">
90
+ High probability of fraudulent activity.
91
+ </p>
92
+ {% else %}
93
+ <div class="result-circle res-success">
94
+ <i class="fas fa-check"></i>
95
+ </div>
96
+ <h2 class="text-white fw-bold mb-2">LEGITIMATE</h2>
97
+ <p
98
+ class="text-success bg-success bg-opacity-10 p-2 rounded mb-4 d-inline-block border border-success">
99
+ Transaction cleared security checks.
100
+ </p>
101
+ {% endif %}
102
+
103
+ {% if predictions %}
104
+ <div class="text-start bg-secondary bg-opacity-10 p-3 rounded">
105
+ <div class="small fw-bold text-muted text-uppercase mb-2">Model Consensus</div>
106
+ {% for model, result in predictions.items %}
107
+ <div class="d-flex justify-content-between mb-1 small">
108
+ <span class="text-muted">{{ model }}</span>
109
+ <span
110
+ class="fw-bold {% if 'Fraud' in result %}text-danger{% else %}text-success{% endif %}">
111
+ {{ result }}
112
+ </span>
113
+ </div>
114
+ {% endfor %}
115
+ </div>
116
+ {% endif %}
117
+
118
+ {% if fraud_score %}
119
+ <div class="mt-3 text-muted small">
120
+ Risk Score: <strong class="text-white">{{ fraud_score }}</strong>
121
+ </div>
122
+ {% endif %}
123
+ </div>
124
+ {% else %}
125
+ <div class="text-muted opacity-25">
126
+ <i class="fas fa-chart-radar" style="font-size: 5rem;"></i>
127
+ <h4 class="fw-bold mt-4">Ready to Scan</h4>
128
+ <p class="small">Enter details to initiate the inference engine.</p>
129
+ </div>
130
+ {% endif %}
131
+
132
+ {% if error %}
133
+ <div class="alert alert-danger mt-3 bg-danger bg-opacity-10 border-danger text-danger">
134
+ {{ error }}
135
+ </div>
136
+ {% endif %}
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+
144
+ {% endblock %}
templates/users/upload_data.html ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'users/userbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="row justify-content-center fade-in">
6
+ <div class="col-lg-8">
7
+ <div class="glass-panel p-5">
8
+
9
+ <div class="text-center mb-5">
10
+ <div class="bg-primary bg-opacity-10 d-inline-flex align-items-center justify-content-center rounded-circle mb-3"
11
+ style="width: 70px; height: 70px;">
12
+ <i class="fas fa-cloud-upload-alt text-primary fs-2"></i>
13
+ </div>
14
+ <h3 class="mw-bold text-white">Secure Dataset Upload</h3>
15
+ <p class="text-muted">Contribute anonymized transaction data for model refinement.</p>
16
+ </div>
17
+
18
+ {% if messages %}
19
+ <div class="mb-4">
20
+ {% for message in messages %}
21
+ <div class="alert alert-info bg-transparent border-info text-info p-3 text-center rounded-3">
22
+ <i class="fas fa-info-circle me-2"></i> {{ message }}
23
+ </div>
24
+ {% endfor %}
25
+ </div>
26
+ {% endif %}
27
+
28
+ <form method="post" enctype="multipart/form-data">
29
+ {% csrf_token %}
30
+
31
+ <div class="mb-4">
32
+ <label
33
+ class="d-block text-center border-2 border-dashed border-secondary border-opacity-25 rounded-3 p-5 cursor-pointer input-modern h-auto"
34
+ style="border-style: dashed !important; background: rgba(15, 23, 42, 0.4);">
35
+ <i class="fas fa-file-csv fs-1 text-muted mb-3 d-block"></i>
36
+ <span class="d-block fw-bold text-white mb-1">Click to select CSV File</span>
37
+ <span class="d-block text-muted small">or drag and drop here</span>
38
+ <input type="file" name="data_file" class="d-none"
39
+ onchange="this.previousElementSibling.previousElementSibling.textContent = this.files[0].name; this.previousElementSibling.textContent = 'File Selected';">
40
+ </label>
41
+ </div>
42
+
43
+ <div class="mb-4">
44
+ <label class="input-label">Contributor ID</label>
45
+ <input type="text" class="input-modern" name="user_id"
46
+ value="{{ request.user.loginid|default:'System_User' }}" readonly>
47
+ </div>
48
+
49
+ <button type="submit" class="btn-modern w-100 py-3 fs-6">
50
+ <i class="fas fa-upload me-2"></i> Upload & Process
51
+ </button>
52
+ </form>
53
+
54
+ <div class="mt-5 pt-4 border-top border-secondary border-opacity-10">
55
+ <h6 class="text-white fw-bold mb-3"><i class="fas fa-shield-alt text-success me-2"></i>Data Privacy
56
+ Standards</h6>
57
+ <ul class="list-unstyled text-muted small spacing-y-2">
58
+ <li class="mb-2"><i class="fas fa-check text-primary me-2"></i> Data is encrypted at rest using
59
+ AES-256.</li>
60
+ <li class="mb-2"><i class="fas fa-check text-primary me-2"></i> PII is automatically redacted upon
61
+ ingestion.</li>
62
+ <li><i class="fas fa-check text-primary me-2"></i> Only CSV formats adhering to the financial schema
63
+ are accepted.</li>
64
+ </ul>
65
+ </div>
66
+
67
+ </div>
68
+ </div>
69
+ </div>
70
+
71
+ {% endblock %}
templates/users/userbase.html ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% load static %}
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
9
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
10
+ <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap"
11
+ rel="stylesheet">
12
+ <!-- Custom Zenith Flow CSS -->
13
+ <link rel="stylesheet" href="{% static 'css/style.css' %}">
14
+
15
+ <title>User Portal | FraudGuard</title>
16
+ </head>
17
+
18
+ <body>
19
+
20
+ <!-- Header -->
21
+ <nav class="header-modern">
22
+ <div class="d-flex align-items-center">
23
+ <i class="fas fa-fingerprint text-success fs-3 me-3"></i>
24
+ <div>
25
+ <h5 class="m-0 fw-bold text-white">Analyst<span class="text-success">Portal</span></h5>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="d-none d-md-flex align-items-center">
30
+ <a class="nav-link-modern {% if request.path == '/userhome/' %}active{% endif %}"
31
+ href="{% url 'UserHome' %}">Dashboard</a>
32
+ <a class="nav-link-modern {% if 'prediction' in request.path %}active{% endif %}"
33
+ href="{% url 'prediction' %}">Scanner</a>
34
+
35
+ <div class="vr bg-secondary mx-3" style="opacity: 0.3; height: 20px;"></div>
36
+
37
+ <a href="{% url 'index' %}" class="btn-outline-modern"
38
+ style="padding: 6px 15px; font-size: 0.8rem; border: none; color: #ef4444;">
39
+ <i class="fas fa-power-off me-2"></i> Logout
40
+ </a>
41
+ </div>
42
+ </nav>
43
+
44
+ <!-- Main Content -->
45
+ <div class="main-content"
46
+ style="margin-left: 0; padding: 40px; padding-top: 100px; max-width: 1400px; margin: 0 auto;">
47
+ {% block contents %}
48
+ {% endblock %}
49
+ </div>
50
+
51
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
52
+ </body>
53
+
54
+ </html>
templates/users/viewData.html ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'admins/adminbase.html' %}
2
+ {% load static %}
3
+ {% block contents %}
4
+
5
+ <div class="container-fluid fade-in">
6
+ <div class="glass-panel p-4">
7
+
8
+ <div
9
+ class="d-flex justify-content-between align-items-center mb-4 pb-3 border-bottom border-secondary border-opacity-25">
10
+ <h4 class="text-white fw-bold m-0"><i class="fas fa-database text-warning me-2"></i> Training Dataset</h4>
11
+ <span class="badge bg-warning bg-opacity-10 text-warning border border-warning border-opacity-25">Raw Data
12
+ View</span>
13
+ </div>
14
+
15
+ <div class="table-responsive" style="max-height: 70vh; overflow-y: auto;">
16
+ <!-- The dataset content (likely HTML table generated by pandas) goes here -->
17
+ <div class="dataset-wrapper">
18
+ {{data|safe}}
19
+ </div>
20
+ </div>
21
+
22
+ <style>
23
+ /* Overrides for generic Pandas HTML tables */
24
+ .dataset-wrapper table {
25
+ width: 100%;
26
+ border-collapse: collapse;
27
+ color: #e2e8f0;
28
+ }
29
+
30
+ .dataset-wrapper th {
31
+ background-color: rgba(255, 255, 255, 0.1);
32
+ padding: 12px;
33
+ text-align: left;
34
+ font-weight: 600;
35
+ border-bottom: 2px solid rgba(255, 255, 255, 0.1);
36
+ white-space: nowrap;
37
+ }
38
+
39
+ .dataset-wrapper td {
40
+ padding: 10px;
41
+ border: none;
42
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
43
+ font-size: 0.9rem;
44
+ }
45
+
46
+ .dataset-wrapper tr:nth-child(even) {
47
+ background-color: rgba(0, 0, 0, 0.2);
48
+ }
49
+
50
+ .dataset-wrapper tr:hover {
51
+ background-color: rgba(255, 255, 255, 0.05);
52
+ }
53
+ </style>
54
+
55
+ </div>
56
+ </div>
57
+
58
+ {% endblock %}