Upload 18 files
Browse files- .gitattributes +7 -0
- static/3d-rendering-laptop.jpg +3 -0
- static/Quantify.ttf +0 -0
- static/WhatsApp Image 2024-08-04 at 17.19.41_7be5b7e4.jpg +3 -0
- static/WhatsApp Image 2024-08-04 at 17.19.41_f6e750f7.jpg +0 -0
- static/analytics.png +0 -0
- static/arrows-economy-chart.jpg +3 -0
- static/image.png +3 -0
- static/logo.jpg +0 -0
- static/maths-arrangement-with-different-tools.jpg +3 -0
- static/phone-screen-with-abstract-marble-aesthetic.jpg +3 -0
- static/praying.png +0 -0
- static/rsz_1image.png +3 -0
- static/sidebar.png +0 -0
- static/social-media.png +0 -0
- static/styles.css +579 -0
- templates/form_web.html +413 -0
- templates/new_web.html +244 -0
- templates/output_web.html +492 -0
.gitattributes
CHANGED
|
@@ -32,3 +32,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
static/3d-rendering-laptop.jpg filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
static/arrows-economy-chart.jpg filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
static/image.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
static/maths-arrangement-with-different-tools.jpg filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
static/phone-screen-with-abstract-marble-aesthetic.jpg filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
static/rsz_1image.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
static/WhatsApp[[:space:]]Image[[:space:]]2024-08-04[[:space:]]at[[:space:]]17.19.41_7be5b7e4.jpg filter=lfs diff=lfs merge=lfs -text
|
static/3d-rendering-laptop.jpg
ADDED
|
Git LFS Details
|
static/Quantify.ttf
ADDED
|
Binary file (65.6 kB). View file
|
|
|
static/WhatsApp Image 2024-08-04 at 17.19.41_7be5b7e4.jpg
ADDED
|
Git LFS Details
|
static/WhatsApp Image 2024-08-04 at 17.19.41_f6e750f7.jpg
ADDED
|
static/analytics.png
ADDED
|
static/arrows-economy-chart.jpg
ADDED
|
Git LFS Details
|
static/image.png
ADDED
|
Git LFS Details
|
static/logo.jpg
ADDED
|
static/maths-arrangement-with-different-tools.jpg
ADDED
|
Git LFS Details
|
static/phone-screen-with-abstract-marble-aesthetic.jpg
ADDED
|
Git LFS Details
|
static/praying.png
ADDED
|
static/rsz_1image.png
ADDED
|
Git LFS Details
|
static/sidebar.png
ADDED
|
static/social-media.png
ADDED
|
static/styles.css
ADDED
|
@@ -0,0 +1,579 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@font-face {
|
| 2 |
+
font-family: 'Quantify';
|
| 3 |
+
src: url('/static/Quantify.ttf') format('woff2'),
|
| 4 |
+
url('/static/Quantify.ttf') format('woff');
|
| 5 |
+
font-size: small;
|
| 6 |
+
font-weight: 10px;
|
| 7 |
+
}
|
| 8 |
+
body {
|
| 9 |
+
font-family: Arial, sans-serif;
|
| 10 |
+
margin: 0;
|
| 11 |
+
padding: 0;
|
| 12 |
+
box-sizing: border-box;
|
| 13 |
+
display: flex;
|
| 14 |
+
overflow:auto;
|
| 15 |
+
position: relative; /* Ensure proper stacking context */
|
| 16 |
+
flex-direction: column;
|
| 17 |
+
font-family:Georgia, 'Times New Roman', Times, serif;
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
#background-scene {
|
| 21 |
+
position: fixed;
|
| 22 |
+
top: 0;
|
| 23 |
+
left: 0;
|
| 24 |
+
width: 100%;
|
| 25 |
+
height: 100%;
|
| 26 |
+
}
|
| 27 |
+
nav {
|
| 28 |
+
background: #44444400;
|
| 29 |
+
color: #fff;
|
| 30 |
+
padding: 1em;
|
| 31 |
+
position: fixed;
|
| 32 |
+
/* width: 60px; */
|
| 33 |
+
/* height: 100vh; */
|
| 34 |
+
top: 200px;
|
| 35 |
+
left: 0;
|
| 36 |
+
display: flex;
|
| 37 |
+
flex-direction: column;
|
| 38 |
+
align-items: center;
|
| 39 |
+
justify-content: center;
|
| 40 |
+
z-index: 1;
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
nav ul {
|
| 44 |
+
list-style: none;
|
| 45 |
+
padding: 0;
|
| 46 |
+
margin: 0;
|
| 47 |
+
display: flex;
|
| 48 |
+
flex-direction: column;
|
| 49 |
+
align-items: center;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
nav ul li {
|
| 53 |
+
margin: 10px 0;
|
| 54 |
+
width: 60px;
|
| 55 |
+
height: 60px;
|
| 56 |
+
display: flex;
|
| 57 |
+
align-items: center;
|
| 58 |
+
justify-content: center;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
nav ul li a {
|
| 62 |
+
color: #fff;
|
| 63 |
+
text-decoration: none;
|
| 64 |
+
display: block;
|
| 65 |
+
width: 50px;
|
| 66 |
+
height: 50px;
|
| 67 |
+
line-height: 50px;
|
| 68 |
+
border-radius: 50%;
|
| 69 |
+
background: #555;
|
| 70 |
+
text-align: center;
|
| 71 |
+
transition: background 0.3s;
|
| 72 |
+
display: flex;
|
| 73 |
+
align-items: center;
|
| 74 |
+
justify-content: center;
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
nav ul li a:hover {
|
| 78 |
+
background: #8c9eff;
|
| 79 |
+
width: 55px;
|
| 80 |
+
height: 55px;
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
.icon {
|
| 84 |
+
width: 30px;
|
| 85 |
+
height: 30px;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.content {
|
| 89 |
+
margin-left: 80px;
|
| 90 |
+
width: calc(100% - 80px);
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
.section {
|
| 94 |
+
min-height: 100vh;
|
| 95 |
+
padding: 2em;
|
| 96 |
+
box-sizing: border-box;
|
| 97 |
+
z-index: 0;
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
.home {
|
| 101 |
+
display: flex;
|
| 102 |
+
align-items: center;
|
| 103 |
+
flex-direction: column;
|
| 104 |
+
text-align: center;
|
| 105 |
+
max-height: 100px;
|
| 106 |
+
z-index: 0;
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
header {
|
| 110 |
+
position: relative;
|
| 111 |
+
top: 30px;
|
| 112 |
+
text-align: center;
|
| 113 |
+
text-decoration: overline;
|
| 114 |
+
z-index: -1;
|
| 115 |
+
color: #f4f4f4;
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
.card {
|
| 119 |
+
width: 45%;
|
| 120 |
+
background: #f4f4f449;
|
| 121 |
+
padding: 1em;
|
| 122 |
+
border-radius: 8px;
|
| 123 |
+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
| 124 |
+
text-align: center;
|
| 125 |
+
min-height: 520px;
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
.card img {
|
| 129 |
+
width: 100%;
|
| 130 |
+
height: 400px;
|
| 131 |
+
object-fit: cover;
|
| 132 |
+
border-radius: 8px;
|
| 133 |
+
}
|
| 134 |
+
.card img:hover{
|
| 135 |
+
position: relative;
|
| 136 |
+
top: -5px;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
.card.left {
|
| 140 |
+
margin-right: auto;
|
| 141 |
+
position: relative;
|
| 142 |
+
top: 15px;
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
.card.right {
|
| 146 |
+
margin-left: auto;
|
| 147 |
+
position: relative;
|
| 148 |
+
top: -540px;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
.explore-button {
|
| 152 |
+
padding: 10px 20px;
|
| 153 |
+
border: none;
|
| 154 |
+
border-radius: 5px;
|
| 155 |
+
background-color: #f4f4f449;
|
| 156 |
+
color: white;
|
| 157 |
+
font-size: 16px;
|
| 158 |
+
cursor: pointer;
|
| 159 |
+
text-transform: uppercase;
|
| 160 |
+
transition: background-color 0.3s;
|
| 161 |
+
margin-top: 2em;
|
| 162 |
+
position: relative;
|
| 163 |
+
top: -555px;
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
.explore-button a{
|
| 167 |
+
text-decoration: none;
|
| 168 |
+
color: #f4f4f4;
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
.explore-button a:hover{
|
| 172 |
+
text-decoration: none;
|
| 173 |
+
color: black;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
.explore-button:hover {
|
| 177 |
+
background-color: #f4f4f4;
|
| 178 |
+
color: black;
|
| 179 |
+
font-family: 'Quantify';
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
+
html {
|
| 183 |
+
scroll-behavior: smooth;
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
#projects {
|
| 187 |
+
display: flex;
|
| 188 |
+
flex-direction: column;
|
| 189 |
+
align-items: center;
|
| 190 |
+
text-align: center;
|
| 191 |
+
z-index: 0;
|
| 192 |
+
}
|
| 193 |
+
|
| 194 |
+
.project-card {
|
| 195 |
+
background: #f4f4f467;
|
| 196 |
+
padding: 2em;
|
| 197 |
+
border-radius: 8px;
|
| 198 |
+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
| 199 |
+
display: flex;
|
| 200 |
+
align-items: center;
|
| 201 |
+
margin: 0 auto;
|
| 202 |
+
max-width: 1000px;
|
| 203 |
+
z-index: 0;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
.card-content {
|
| 207 |
+
display: flex;
|
| 208 |
+
align-items: center;
|
| 209 |
+
}
|
| 210 |
+
.card-content h2:hover{
|
| 211 |
+
font-family: 'Quantify';
|
| 212 |
+
text-decoration: underline;
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
.card-image {
|
| 216 |
+
width: 40%;
|
| 217 |
+
margin-right: 1em;
|
| 218 |
+
position: relative;
|
| 219 |
+
overflow: hidden;
|
| 220 |
+
border-radius: 8px;
|
| 221 |
+
transition: transform 0.3s;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
.card-image img {
|
| 225 |
+
width: 100%;
|
| 226 |
+
height: auto;
|
| 227 |
+
border-radius: 8px;
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
.card-image:hover {
|
| 231 |
+
transform: scale(1.05);
|
| 232 |
+
}
|
| 233 |
+
|
| 234 |
+
.card-description {
|
| 235 |
+
width: 60%;
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
.card-description h2 {
|
| 239 |
+
margin-top: 0;
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
.card-description p {
|
| 243 |
+
margin: 1em 0;
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
.project-card img {
|
| 247 |
+
width: 100%;
|
| 248 |
+
max-width: 500px;
|
| 249 |
+
height: auto;
|
| 250 |
+
border-radius: 8px;
|
| 251 |
+
margin-bottom: 1em;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
.project-description {
|
| 255 |
+
max-width: 800px;
|
| 256 |
+
margin: 0 auto;
|
| 257 |
+
padding: 1em;
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
.project-description h2 {
|
| 261 |
+
margin-bottom: 0.5em;
|
| 262 |
+
}
|
| 263 |
+
|
| 264 |
+
.project-description p {
|
| 265 |
+
margin: 0;
|
| 266 |
+
}
|
| 267 |
+
#about {
|
| 268 |
+
display: flex;
|
| 269 |
+
justify-content: center;
|
| 270 |
+
z-index: 0;
|
| 271 |
+
}
|
| 272 |
+
|
| 273 |
+
.about-card {
|
| 274 |
+
background: #f4f4f489;
|
| 275 |
+
padding: 1em;
|
| 276 |
+
border-radius: 8px;
|
| 277 |
+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
| 278 |
+
width: 90%;
|
| 279 |
+
max-width: 1000px;
|
| 280 |
+
z-index: 0;
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
.about-card .card-content {
|
| 284 |
+
display: flex;
|
| 285 |
+
flex-direction: row;
|
| 286 |
+
align-items: center;
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
.about-card .card-content h2:hover{
|
| 290 |
+
font-family: 'Quantify';
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
+
.about-card .card-description {
|
| 294 |
+
flex: 1;
|
| 295 |
+
padding: 1em;
|
| 296 |
+
text-align: left;
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
.about-card .card-image img {
|
| 300 |
+
padding: 1em;
|
| 301 |
+
width: 100%;
|
| 302 |
+
height: 570px;
|
| 303 |
+
max-width: 570px;
|
| 304 |
+
}
|
| 305 |
+
|
| 306 |
+
.thanks {
|
| 307 |
+
display: flex;
|
| 308 |
+
justify-content: center;
|
| 309 |
+
align-items: center;
|
| 310 |
+
text-align: center;
|
| 311 |
+
height: 100vh; /* Make the section take full viewport height */
|
| 312 |
+
width: 100%;
|
| 313 |
+
flex-direction: column; /* Ensure that the heading and paragraph are stacked vertically */
|
| 314 |
+
position: relative; /* Ensure proper stacking */
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
.thanks-card {
|
| 318 |
+
background: #f4f4f475;
|
| 319 |
+
padding: 2em;
|
| 320 |
+
border-radius: 8px;
|
| 321 |
+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
| 322 |
+
text-align: center;
|
| 323 |
+
width: 90%;
|
| 324 |
+
max-width: 600px;
|
| 325 |
+
margin: 0 auto;
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
.thanks h2, .thanks p {
|
| 329 |
+
margin: 0;
|
| 330 |
+
padding: 0.5em 0;
|
| 331 |
+
}
|
| 332 |
+
@media (max-width: 1163px) {
|
| 333 |
+
/* Adjustments for tablets and mobile devices */
|
| 334 |
+
nav {
|
| 335 |
+
width: 50px;
|
| 336 |
+
position: absolute; /* Make nav overlay instead of fixed */
|
| 337 |
+
top: 0;
|
| 338 |
+
left: 130px;
|
| 339 |
+
padding: 0.1em;
|
| 340 |
+
flex-direction: row; /* Align nav items horizontally */
|
| 341 |
+
height: auto; /* Allow height to adjust based on content */
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
nav ul {
|
| 345 |
+
flex-direction: row; /* Align nav items horizontally */
|
| 346 |
+
}
|
| 347 |
+
|
| 348 |
+
nav ul li {
|
| 349 |
+
margin: 5px;
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
.card img {
|
| 353 |
+
height: 250px; /* Adjust image size in cards */
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
.about-card .card-image img {
|
| 357 |
+
height: 300px; /* Adjust image height */
|
| 358 |
+
}
|
| 359 |
+
|
| 360 |
+
.thanks {
|
| 361 |
+
height: auto; /* Allow thanks section to adjust height based on content */
|
| 362 |
+
padding: 1em; /* Add padding for better spacing */
|
| 363 |
+
}
|
| 364 |
+
|
| 365 |
+
.thanks-card {
|
| 366 |
+
width: 90%;
|
| 367 |
+
max-width: 100%; /* Ensure card doesn't overflow on smaller screens */
|
| 368 |
+
padding: 1em; /* Add padding for better spacing */
|
| 369 |
+
}
|
| 370 |
+
|
| 371 |
+
.thanks h2 {
|
| 372 |
+
font-size: 1.5em; /* Adjust font size */
|
| 373 |
+
}
|
| 374 |
+
|
| 375 |
+
.thanks p {
|
| 376 |
+
font-size: 1em; /* Adjust font size */
|
| 377 |
+
}
|
| 378 |
+
}
|
| 379 |
+
|
| 380 |
+
@media (max-width: 792px) {
|
| 381 |
+
/* Adjustments for small mobile devices */
|
| 382 |
+
.card.left{
|
| 383 |
+
position: relative;
|
| 384 |
+
left: -70px;
|
| 385 |
+
}
|
| 386 |
+
nav {
|
| 387 |
+
width: 40px;
|
| 388 |
+
}
|
| 389 |
+
|
| 390 |
+
nav ul li {
|
| 391 |
+
margin: 3px;
|
| 392 |
+
}
|
| 393 |
+
|
| 394 |
+
.card img {
|
| 395 |
+
height: 200px; /* Further reduce image size in cards */
|
| 396 |
+
}
|
| 397 |
+
|
| 398 |
+
.about-card .card-image img {
|
| 399 |
+
height: 250px; /* Further adjust image height */
|
| 400 |
+
}
|
| 401 |
+
|
| 402 |
+
.thanks h2 {
|
| 403 |
+
font-size: 1.2em; /* Further adjust font size */
|
| 404 |
+
}
|
| 405 |
+
|
| 406 |
+
.thanks p {
|
| 407 |
+
font-size: 0.9em; /* Further adjust font size */
|
| 408 |
+
}
|
| 409 |
+
}
|
| 410 |
+
@media (max-width: 618px){
|
| 411 |
+
.card {
|
| 412 |
+
min-height: 570px;
|
| 413 |
+
}
|
| 414 |
+
.card.left{
|
| 415 |
+
top: 60px;
|
| 416 |
+
}
|
| 417 |
+
}
|
| 418 |
+
@media (max-width: 518px){
|
| 419 |
+
.card {
|
| 420 |
+
min-height: 600px;
|
| 421 |
+
}
|
| 422 |
+
.card.left{
|
| 423 |
+
top: 90px;
|
| 424 |
+
}
|
| 425 |
+
button{
|
| 426 |
+
left: -30px;
|
| 427 |
+
}
|
| 428 |
+
.project-card{
|
| 429 |
+
position: relative;
|
| 430 |
+
top: 60px;
|
| 431 |
+
left: -90px;
|
| 432 |
+
width: 120%;
|
| 433 |
+
}
|
| 434 |
+
.about-card{
|
| 435 |
+
position: relative;
|
| 436 |
+
top: 20px;
|
| 437 |
+
left: -80px;
|
| 438 |
+
width: 900px;
|
| 439 |
+
max-width: 1900px;
|
| 440 |
+
}
|
| 441 |
+
}
|
| 442 |
+
.socails {
|
| 443 |
+
width: 100%;
|
| 444 |
+
height: 50vh;
|
| 445 |
+
display: flex;
|
| 446 |
+
justify-content: center;
|
| 447 |
+
align-items: center;
|
| 448 |
+
}
|
| 449 |
+
|
| 450 |
+
.main {
|
| 451 |
+
display: flex;
|
| 452 |
+
flex-direction: column;
|
| 453 |
+
gap: 0.5em;
|
| 454 |
+
}
|
| 455 |
+
|
| 456 |
+
.up {
|
| 457 |
+
display: flex;
|
| 458 |
+
flex-direction: row;
|
| 459 |
+
gap: 0.5em;
|
| 460 |
+
}
|
| 461 |
+
|
| 462 |
+
.down {
|
| 463 |
+
display: flex;
|
| 464 |
+
flex-direction: row;
|
| 465 |
+
gap: 0.5em;
|
| 466 |
+
}
|
| 467 |
+
|
| 468 |
+
.card1 {
|
| 469 |
+
width: 90px;
|
| 470 |
+
height: 90px;
|
| 471 |
+
outline: none;
|
| 472 |
+
border: none;
|
| 473 |
+
background: white;
|
| 474 |
+
border-radius: 90px 5px 5px 5px;
|
| 475 |
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
|
| 476 |
+
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
|
| 477 |
+
transition: 0.2s ease-in-out;
|
| 478 |
+
}
|
| 479 |
+
|
| 480 |
+
.instagram {
|
| 481 |
+
margin-top: 1.5em;
|
| 482 |
+
margin-left: 1.2em;
|
| 483 |
+
fill: #cc39a4;
|
| 484 |
+
}
|
| 485 |
+
|
| 486 |
+
.card2 {
|
| 487 |
+
width: 90px;
|
| 488 |
+
height: 90px;
|
| 489 |
+
outline: none;
|
| 490 |
+
border: none;
|
| 491 |
+
background: white;
|
| 492 |
+
border-radius: 5px 90px 5px 5px;
|
| 493 |
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
|
| 494 |
+
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
|
| 495 |
+
transition: 0.2s ease-in-out;
|
| 496 |
+
}
|
| 497 |
+
|
| 498 |
+
.twitter {
|
| 499 |
+
margin-top: 1.5em;
|
| 500 |
+
margin-left: -0.9em;
|
| 501 |
+
fill: #03a9f4;
|
| 502 |
+
}
|
| 503 |
+
|
| 504 |
+
.card3 {
|
| 505 |
+
width: 90px;
|
| 506 |
+
height: 90px;
|
| 507 |
+
outline: none;
|
| 508 |
+
border: none;
|
| 509 |
+
background: white;
|
| 510 |
+
border-radius: 5px 5px 5px 90px;
|
| 511 |
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
|
| 512 |
+
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
|
| 513 |
+
transition: 0.2s ease-in-out;
|
| 514 |
+
}
|
| 515 |
+
|
| 516 |
+
.github {
|
| 517 |
+
margin-top: -0.6em;
|
| 518 |
+
margin-left: 1.2em;
|
| 519 |
+
}
|
| 520 |
+
|
| 521 |
+
.card4 {
|
| 522 |
+
width: 90px;
|
| 523 |
+
height: 90px;
|
| 524 |
+
outline: none;
|
| 525 |
+
border: none;
|
| 526 |
+
background: white;
|
| 527 |
+
border-radius: 5px 5px 90px 5px;
|
| 528 |
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
|
| 529 |
+
rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
|
| 530 |
+
transition: 0.2s ease-in-out;
|
| 531 |
+
}
|
| 532 |
+
|
| 533 |
+
.discord {
|
| 534 |
+
margin-top: -0.9em;
|
| 535 |
+
margin-left: -1.2em;
|
| 536 |
+
fill: #8c9eff;
|
| 537 |
+
}
|
| 538 |
+
|
| 539 |
+
.card1:hover {
|
| 540 |
+
cursor: pointer;
|
| 541 |
+
scale: 1.1;
|
| 542 |
+
background-color: #cc39a4;
|
| 543 |
+
}
|
| 544 |
+
|
| 545 |
+
.card1:hover .instagram {
|
| 546 |
+
fill: white;
|
| 547 |
+
}
|
| 548 |
+
|
| 549 |
+
.card2:hover {
|
| 550 |
+
cursor: pointer;
|
| 551 |
+
scale: 1.1;
|
| 552 |
+
background-color: #03a9f4;
|
| 553 |
+
}
|
| 554 |
+
|
| 555 |
+
.card2:hover .twitter {
|
| 556 |
+
fill: white;
|
| 557 |
+
}
|
| 558 |
+
|
| 559 |
+
.card3:hover {
|
| 560 |
+
cursor: pointer;
|
| 561 |
+
scale: 1.1;
|
| 562 |
+
background-color: black;
|
| 563 |
+
}
|
| 564 |
+
|
| 565 |
+
.card3:hover .github {
|
| 566 |
+
fill: white;
|
| 567 |
+
}
|
| 568 |
+
|
| 569 |
+
.card4:hover {
|
| 570 |
+
cursor: pointer;
|
| 571 |
+
scale: 1.1;
|
| 572 |
+
background-color: #8c9eff;
|
| 573 |
+
}
|
| 574 |
+
|
| 575 |
+
.card4:hover .discord {
|
| 576 |
+
fill: white;
|
| 577 |
+
}
|
| 578 |
+
|
| 579 |
+
|
templates/form_web.html
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Recommend Laptop</title>
|
| 7 |
+
<style>
|
| 8 |
+
body, html {
|
| 9 |
+
margin: 0;
|
| 10 |
+
padding: 0;
|
| 11 |
+
height: 100%;
|
| 12 |
+
overflow: hidden;
|
| 13 |
+
font-family: Arial, sans-serif;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
#background-scene {
|
| 17 |
+
position: fixed;
|
| 18 |
+
top: 0;
|
| 19 |
+
left: 0;
|
| 20 |
+
width: 100%;
|
| 21 |
+
height: 100%;
|
| 22 |
+
z-index: 1;
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
.top-nav {
|
| 26 |
+
position: fixed;
|
| 27 |
+
top: 0;
|
| 28 |
+
left: 0;
|
| 29 |
+
width: 100%;
|
| 30 |
+
background: rgba(0, 0, 0, 0.8);
|
| 31 |
+
padding: 15px;
|
| 32 |
+
z-index: 1000;
|
| 33 |
+
display: flex;
|
| 34 |
+
justify-content: space-between;
|
| 35 |
+
align-items: center;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
.nav-links {
|
| 39 |
+
display: flex;
|
| 40 |
+
gap: 20px;
|
| 41 |
+
margin-left: 20px;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
.nav-links a {
|
| 45 |
+
color: white;
|
| 46 |
+
text-decoration: none;
|
| 47 |
+
padding: 8px 15px;
|
| 48 |
+
border-radius: 4px;
|
| 49 |
+
transition: all 0.3s;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
.nav-links a:hover {
|
| 53 |
+
background: rgba(255, 255, 255, 0.1);
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
.profile-link {
|
| 57 |
+
margin-right: 20px;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
.profile-link a {
|
| 61 |
+
color: #4CAF50;
|
| 62 |
+
text-decoration: none;
|
| 63 |
+
padding: 8px 15px;
|
| 64 |
+
border: 1px solid #4CAF50;
|
| 65 |
+
border-radius: 4px;
|
| 66 |
+
transition: all 0.3s;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
.profile-link a:hover {
|
| 70 |
+
background: #4CAF50;
|
| 71 |
+
color: white;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
.menu-dots {
|
| 75 |
+
position: fixed;
|
| 76 |
+
top: 80px;
|
| 77 |
+
left: 20px;
|
| 78 |
+
z-index: 1000;
|
| 79 |
+
cursor: pointer;
|
| 80 |
+
background: none;
|
| 81 |
+
border: none;
|
| 82 |
+
padding: 10px;
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
.dot {
|
| 86 |
+
width: 6px;
|
| 87 |
+
height: 6px;
|
| 88 |
+
background-color: white;
|
| 89 |
+
border-radius: 50%;
|
| 90 |
+
margin: 3px;
|
| 91 |
+
display: block;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
.sidebar {
|
| 95 |
+
height: 100%;
|
| 96 |
+
width: 0;
|
| 97 |
+
position: fixed;
|
| 98 |
+
z-index: 999;
|
| 99 |
+
top: 60px;
|
| 100 |
+
left: 0;
|
| 101 |
+
background-color: rgba(0, 0, 0, 0.8);
|
| 102 |
+
overflow-x: hidden;
|
| 103 |
+
transition: 0.5s;
|
| 104 |
+
padding-top: 60px;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
.sidebar.active {
|
| 108 |
+
width: 400px;
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
.sidebar-content {
|
| 112 |
+
padding: 20px;
|
| 113 |
+
opacity: 0;
|
| 114 |
+
transition: opacity 0.3s;
|
| 115 |
+
margin-top: 20px;
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
.sidebar.active .sidebar-content {
|
| 119 |
+
opacity: 1;
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
.form-group {
|
| 123 |
+
margin-bottom: 20px;
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
label {
|
| 127 |
+
display: block;
|
| 128 |
+
margin-bottom: 8px;
|
| 129 |
+
color: white;
|
| 130 |
+
font-weight: bold;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
select {
|
| 134 |
+
width: 100%;
|
| 135 |
+
padding: 10px;
|
| 136 |
+
background-color: rgba(0, 0, 0, 0.5);
|
| 137 |
+
color: white;
|
| 138 |
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
| 139 |
+
border-radius: 4px;
|
| 140 |
+
cursor: pointer;
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
select option {
|
| 144 |
+
background-color: black;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
button[type="submit"] {
|
| 148 |
+
width: 100%;
|
| 149 |
+
padding: 12px;
|
| 150 |
+
background-color: #4CAF50;
|
| 151 |
+
color: white;
|
| 152 |
+
border: none;
|
| 153 |
+
border-radius: 4px;
|
| 154 |
+
cursor: pointer;
|
| 155 |
+
font-size: 16px;
|
| 156 |
+
transition: background 0.3s;
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
button[type="submit"]:hover {
|
| 160 |
+
background-color: #45a049;
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
.close-btn {
|
| 164 |
+
position: absolute;
|
| 165 |
+
top: 20px;
|
| 166 |
+
right: 20px;
|
| 167 |
+
color: white;
|
| 168 |
+
cursor: pointer;
|
| 169 |
+
font-size: 24px;
|
| 170 |
+
background: none;
|
| 171 |
+
border: none;
|
| 172 |
+
}
|
| 173 |
+
|
| 174 |
+
.info-overlay {
|
| 175 |
+
position: fixed;
|
| 176 |
+
z-index: 2;
|
| 177 |
+
padding: 20px;
|
| 178 |
+
color: white;
|
| 179 |
+
font-size: 1.1em;
|
| 180 |
+
line-height: 1.6;
|
| 181 |
+
width: 100%;
|
| 182 |
+
box-sizing: border-box;
|
| 183 |
+
pointer-events: none;
|
| 184 |
+
display: flex;
|
| 185 |
+
flex-direction: column;
|
| 186 |
+
align-items: center;
|
| 187 |
+
top: 60px;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
.feature-info {
|
| 191 |
+
display: flex;
|
| 192 |
+
flex-wrap: wrap;
|
| 193 |
+
justify-content: center;
|
| 194 |
+
gap: 20px;
|
| 195 |
+
max-width: 1200px;
|
| 196 |
+
margin: 0 auto;
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
.info-card {
|
| 200 |
+
background: rgba(0, 0, 0, 0.7);
|
| 201 |
+
padding: 15px;
|
| 202 |
+
border-radius: 10px;
|
| 203 |
+
width: 280px;
|
| 204 |
+
margin: 10px;
|
| 205 |
+
backdrop-filter: blur(5px);
|
| 206 |
+
}
|
| 207 |
+
|
| 208 |
+
.info-card h3 {
|
| 209 |
+
color: #fff;
|
| 210 |
+
margin: 0 0 10px 0;
|
| 211 |
+
font-size: 1.2em;
|
| 212 |
+
border-bottom: 1px solid rgba(255,255,255,0.3);
|
| 213 |
+
padding-bottom: 5px;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
.info-card ul {
|
| 217 |
+
margin: 0;
|
| 218 |
+
padding-left: 20px;
|
| 219 |
+
list-style-type: none;
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
.info-card li {
|
| 223 |
+
margin: 5px 0;
|
| 224 |
+
font-size: 0.9em;
|
| 225 |
+
position: relative;
|
| 226 |
+
}
|
| 227 |
+
|
| 228 |
+
.info-card li:before {
|
| 229 |
+
content: "•";
|
| 230 |
+
position: absolute;
|
| 231 |
+
left: -15px;
|
| 232 |
+
color: #4CAF50;
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
.welcome-text {
|
| 236 |
+
font-size: 2em;
|
| 237 |
+
margin: 20px 0 40px 0;
|
| 238 |
+
text-align: center;
|
| 239 |
+
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
@media (max-width: 768px) {
|
| 243 |
+
.info-card {
|
| 244 |
+
width: 100%;
|
| 245 |
+
margin: 5px 0;
|
| 246 |
+
}
|
| 247 |
+
|
| 248 |
+
.welcome-text {
|
| 249 |
+
font-size: 1.5em;
|
| 250 |
+
}
|
| 251 |
+
|
| 252 |
+
.sidebar.active {
|
| 253 |
+
width: 100%;
|
| 254 |
+
}
|
| 255 |
+
}
|
| 256 |
+
</style>
|
| 257 |
+
<script type="module" src="https://unpkg.com/@splinetool/viewer@1.9.5/build/spline-viewer.js"></script>
|
| 258 |
+
</head>
|
| 259 |
+
<body>
|
| 260 |
+
<nav class="top-nav">
|
| 261 |
+
<div class="nav-links">
|
| 262 |
+
<a href="/">Home</a>
|
| 263 |
+
<a href="/#projects">Projects</a>
|
| 264 |
+
<a href="/#about">About</a>
|
| 265 |
+
<a href="/#contact">Contact</a>
|
| 266 |
+
<a href="/form">Recommend Laptop</a>
|
| 267 |
+
</div>
|
| 268 |
+
<div class="profile-link">
|
| 269 |
+
<a href="https://github.com/Nvcoing" target="_blank">My Profile</a>
|
| 270 |
+
</div>
|
| 271 |
+
</nav>
|
| 272 |
+
|
| 273 |
+
<div class="info-overlay">
|
| 274 |
+
<div class="welcome-text">
|
| 275 |
+
Laptop Guide
|
| 276 |
+
</div>
|
| 277 |
+
<div class="feature-info">
|
| 278 |
+
<div class="info-card">
|
| 279 |
+
<h3>Ram</h3>
|
| 280 |
+
<ul>
|
| 281 |
+
<li>8-12GB: Basic tasks (web, office).</li>
|
| 282 |
+
<li>16-24GB: Gaming, programming, light graphics.</li>
|
| 283 |
+
<li>32-64GB: Heavy tasks (video editing, simulations).</li>
|
| 284 |
+
</ul>
|
| 285 |
+
</div>
|
| 286 |
+
|
| 287 |
+
<div class="info-card">
|
| 288 |
+
<h3>Storage (GB)</h3>
|
| 289 |
+
<ul>
|
| 290 |
+
<li>256GB: Basic storage (documents, apps).</li>
|
| 291 |
+
<li>512GB: Moderate usage (photos, light games).</li>
|
| 292 |
+
<li>1024GB: Large files (videos, games).</li>
|
| 293 |
+
</ul>
|
| 294 |
+
</div>
|
| 295 |
+
|
| 296 |
+
<div class="info-card">
|
| 297 |
+
<h3>Screen Size (inches):</h3>
|
| 298 |
+
<ul>
|
| 299 |
+
<li>13.3"-14.5": Portable, for travel.</li>
|
| 300 |
+
<li>15.0"-15.6": Balanced use.</li>
|
| 301 |
+
<li>16.0"-18.0": Large, great for gaming/work.</li>
|
| 302 |
+
</ul>
|
| 303 |
+
</div>
|
| 304 |
+
|
| 305 |
+
<div class="info-card">
|
| 306 |
+
<h3>GPU Type</h3>
|
| 307 |
+
<ul>
|
| 308 |
+
<li>High-class-graphics-gaming: Best for gaming/3D rendering.</li>
|
| 309 |
+
<li>High-class-workstation: Graphic design, simulations.</li>
|
| 310 |
+
<li>Mid-range: Casual use (study, light work).</li>
|
| 311 |
+
<li>Universal: General tasks.</li>
|
| 312 |
+
</ul>
|
| 313 |
+
</div>
|
| 314 |
+
|
| 315 |
+
<div class="info-card">
|
| 316 |
+
<h3>CPU Type</h3>
|
| 317 |
+
<ul>
|
| 318 |
+
<li>Entry-level: Web, office work.</li>
|
| 319 |
+
<li>Mid-range: Studying, entertainment.</li>
|
| 320 |
+
<li>High-class: Gaming, programming.</li>
|
| 321 |
+
<li>Premium: Big data, simulations.</li>
|
| 322 |
+
</ul>
|
| 323 |
+
</div>
|
| 324 |
+
|
| 325 |
+
<div class="info-card">
|
| 326 |
+
<h3>Quick Tips</h3>
|
| 327 |
+
<ul>
|
| 328 |
+
<li>Select inputs that match your usage needs (e.g., gaming, work, travel).</li>
|
| 329 |
+
<li>Higher values often mean better performance but come at a higher price.</li>
|
| 330 |
+
<li>For balanced performance, choose mid-range options unless your work requires premium specs.</li>
|
| 331 |
+
<li>Ensure selected GPU and CPU are compatible with each other for optimal performance.</li>
|
| 332 |
+
</ul>
|
| 333 |
+
</div>
|
| 334 |
+
</div>
|
| 335 |
+
</div>
|
| 336 |
+
|
| 337 |
+
<button class="menu-dots" onclick="toggleSidebar()">
|
| 338 |
+
<span class="dot"></span>
|
| 339 |
+
<span class="dot"></span>
|
| 340 |
+
<span class="dot"></span>
|
| 341 |
+
</button>
|
| 342 |
+
|
| 343 |
+
<div id="sidebar" class="sidebar">
|
| 344 |
+
<button class="close-btn" onclick="toggleSidebar()">×</button>
|
| 345 |
+
<div class="sidebar-content">
|
| 346 |
+
<h1>Laptop Price Prediction</h1>
|
| 347 |
+
<form action="/submit_form" method="post">
|
| 348 |
+
<div class="form-group">
|
| 349 |
+
<label for="ram">RAM (GB)</label>
|
| 350 |
+
<select name="ram" id="ram" required>
|
| 351 |
+
{% for value in ram_values %}
|
| 352 |
+
<option value="{{ value }}">{{ value }} GB</option>
|
| 353 |
+
{% endfor %}
|
| 354 |
+
</select>
|
| 355 |
+
</div>
|
| 356 |
+
|
| 357 |
+
<div class="form-group">
|
| 358 |
+
<label for="memory">Storage (GB)</label>
|
| 359 |
+
<select name="memory" id="memory" required>
|
| 360 |
+
{% for value in memory_values %}
|
| 361 |
+
<option value="{{ value }}">{{ value }} GB</option>
|
| 362 |
+
{% endfor %}
|
| 363 |
+
</select>
|
| 364 |
+
</div>
|
| 365 |
+
|
| 366 |
+
<div class="form-group">
|
| 367 |
+
<label for="size">Screen Size (inches)</label>
|
| 368 |
+
<select name="size" id="size" required>
|
| 369 |
+
{% for value in size_values %}
|
| 370 |
+
<option value="{{ value }}">{{ value }}"</option>
|
| 371 |
+
{% endfor %}
|
| 372 |
+
</select>
|
| 373 |
+
</div>
|
| 374 |
+
|
| 375 |
+
<div class="form-group">
|
| 376 |
+
<label for="gpu_type">GPU Type</label>
|
| 377 |
+
<select name="gpu_type" id="gpu_type" required>
|
| 378 |
+
{% for value in gpu_values %}
|
| 379 |
+
<option value="{{ value }}">{{ value }}</option>
|
| 380 |
+
{% endfor %}
|
| 381 |
+
</select>
|
| 382 |
+
</div>
|
| 383 |
+
|
| 384 |
+
<div class="form-group">
|
| 385 |
+
<label for="cpu_type">CPU Type</label>
|
| 386 |
+
<select name="cpu_type" id="cpu_type" required>
|
| 387 |
+
{% for value in cpu_values %}
|
| 388 |
+
<option value="{{ value }}">{{ value }}</option>
|
| 389 |
+
{% endfor %}
|
| 390 |
+
</select>
|
| 391 |
+
</div>
|
| 392 |
+
|
| 393 |
+
<button type="submit">Predict Price</button>
|
| 394 |
+
</form>
|
| 395 |
+
</div>
|
| 396 |
+
</div>
|
| 397 |
+
|
| 398 |
+
<spline-viewer id="background-scene" url="https://prod.spline.design/YpB-yqLMWbXZ1-AI/scene.splinecode"></spline-viewer>
|
| 399 |
+
|
| 400 |
+
<script>
|
| 401 |
+
function toggleSidebar() {
|
| 402 |
+
document.getElementById("sidebar").classList.toggle("active");
|
| 403 |
+
}
|
| 404 |
+
|
| 405 |
+
document.addEventListener('click', function(event) {
|
| 406 |
+
if (!event.target.closest('.menu-dots') &&
|
| 407 |
+
!event.target.closest('.sidebar')) {
|
| 408 |
+
document.getElementById("sidebar").classList.remove("active");
|
| 409 |
+
}
|
| 410 |
+
});
|
| 411 |
+
</script>
|
| 412 |
+
</body>
|
| 413 |
+
</html>
|
templates/new_web.html
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Website Recommend Laptop</title>
|
| 7 |
+
<link rel="stylesheet" href="/static/styles.css">
|
| 8 |
+
<script type="module" src="https://unpkg.com/@splinetool/viewer@1.9.5/build/spline-viewer.js"></script>
|
| 9 |
+
<style>
|
| 10 |
+
.top-nav {
|
| 11 |
+
position: fixed;
|
| 12 |
+
top: 0;
|
| 13 |
+
left: 0;
|
| 14 |
+
width: 100%;
|
| 15 |
+
background: rgba(0, 0, 0, 0.8);
|
| 16 |
+
padding: 15px;
|
| 17 |
+
z-index: 1000;
|
| 18 |
+
display: flex;
|
| 19 |
+
justify-content: space-between;
|
| 20 |
+
align-items: center;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.nav-links {
|
| 24 |
+
display: flex;
|
| 25 |
+
gap: 20px;
|
| 26 |
+
margin-left: 20px;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
.nav-links a {
|
| 30 |
+
color: white;
|
| 31 |
+
text-decoration: none;
|
| 32 |
+
padding: 8px 15px;
|
| 33 |
+
border-radius: 4px;
|
| 34 |
+
transition: all 0.3s;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
.nav-links a:hover {
|
| 38 |
+
background: rgba(255, 255, 255, 0.1);
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
.profile-link {
|
| 42 |
+
margin-right: 20px;
|
| 43 |
+
margin-top: 8px;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
.profile-link a {
|
| 47 |
+
color: #4CAF50;
|
| 48 |
+
text-decoration: none;
|
| 49 |
+
padding: 8px 15px;
|
| 50 |
+
border: 1px solid #4CAF50;
|
| 51 |
+
border-radius: 4px;
|
| 52 |
+
transition: all 0.3s;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
.profile-link a:hover {
|
| 56 |
+
background: #4CAF50;
|
| 57 |
+
color: white;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
.content {
|
| 61 |
+
margin-top: 60px;
|
| 62 |
+
}
|
| 63 |
+
</style>
|
| 64 |
+
</head>
|
| 65 |
+
<body>
|
| 66 |
+
<!-- Top Navigation -->
|
| 67 |
+
<nav class="top-nav">
|
| 68 |
+
<div class="nav-links">
|
| 69 |
+
<a href="#home">Home</a>
|
| 70 |
+
<a href="#projects">Projects</a>
|
| 71 |
+
<a href="#about">About</a>
|
| 72 |
+
<a href="#contact">Contact</a>
|
| 73 |
+
<a href="/form">Recommend Laptop</a>
|
| 74 |
+
<div class="profile-link">
|
| 75 |
+
<a href="https://github.com/Nvcoing" target="_blank">My Profile</a>
|
| 76 |
+
</div>
|
| 77 |
+
</div>
|
| 78 |
+
</nav>
|
| 79 |
+
|
| 80 |
+
<nav>
|
| 81 |
+
<ul>
|
| 82 |
+
<li><a href="#home"><img src="/static/sidebar.png" alt="Home" class="icon"></a></li>
|
| 83 |
+
<li><a href="#projects"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEGklEQVR4nO2abWhWZRjHf3NzM5uaYqGks8SJISliappmVvtgpH4oGaGgaAku09QPKhXzBcqQIInph0n5DhtUooISRWiJlPbBV0yNdBXa1PmStenMxTX+B24fn23Ps3OfPTvQH26ec5/7Ptd9/Z9zv1wvB/7HPcgFRgOLgI3AfqAKqAHqVez6HLAP+BRYAIwEOpJh5AFTgQrgL6ChleUasBWYAuS0JYGewCrgoqPMXeAIsB54HXgOKAC6S7kcXfcDJgBvAOXAiQRSVcAyoGuUBB4A3gWuOwMfAt4C+oSQ+xiwGDjmyK0G5kXxhp4BTjkD7QSe9j0I8DzwjTPOj8BgH4KzgKXAHQm26TOW6PES8IvGrAVmhhFmu8k2CTMiK9p4h3kQWOe8nTX6Y9PekXZKwFVgIpnDTKBOuqxLh4x1rNSDfwJDyTxeBP6WTh+m+tBKPVDja6F5wgvALek2o6XOtv//C9zWg+0Ns0XE3k5hU506A7+q43ueBn4YGK5i1z6wSTp+19R6eUcdDns8iNxdp8yTzIeAPySzOLGxu3Nij8cf1jtE7Nr3FDsDZLsNb6vhK/zCfSN27QvZwGnJneQ2nNTNyfiFu0bM2PSJRdJ5d3BjoG5cSnxN7Rw9ZXHYYZmPHBwjsoX44YA7kzarYj5C3LBKutsvP6lirqpvzJWFYKU0AvnF0v0Lq1xQpVcEAy2PaPsN8JRz9vGPKuYBxo3IAOc8abSrGiLyNaIm0keyf7PKFVV6xJDIYMm2IAY/qzIohkTGS/b3VtmhyisxJFIi2RuQL26V1TEkUi7ZC60yzomQxI3IecludMfN97isG2Z3xYXIKMn93XWwPtLNj2NEZGOyJVEoS/IG8EgMiBQocGfxhf6JjZ9F4ABFRWSzZFoU/z70BW7qzfgKi5ZGQKRI0f9aRfebtFYbFE0xPz4sbKA5KsM8OVNV0nFJcx1t9e9Sx28VOm0vyFMmLDjJW/RmLclyXA98rrRappErn6NBZ0fKLoetl7N6cC/Qhcwh35kldt49ma6Avo5l/CaZwQAnk2VZrCGtEVKoffpOyNRaa5ClDSJIsp4KY51XJMaN2ghFyk0G2/amINzTGkyTkLo2Si3YjvQacNAhYIv65bD/SF0qe3USpONlPg5MB7Yr1+5mdC3L24kQmOqQSPUkzldM7JATsdwnk+cTGXWrdb1FQbXqhPy6ndQ/ALPCEsiSXXRXgtcCHZrpb23Piqybdw8iMqkUS+t9CcxvztRIBznOwq5XZD4ZsvXVQpkTCwv+za+BVxWJMdNmjNZZiabnEn0AMEOO3KNEgPedFLQpE6AbMEJfNlQmmQ52YH4QgTMWOhAckKnWPE82HU6LuA8D0DvGAntkFrtKW8LxqGx/W8xPEBPkOl/w9M60MuniP+xodJkoh7XVAAAAAElFTkSuQmCC" alt="Projects" class="icon"></a></li>
|
| 84 |
+
<li><a href="#about"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR4nO2ZPUoDQRSAv4CYKpImiz94BdFbCIJRL2BjIRhtLNJa23kFrTyB2FiJJIUajJBcwAtEuyAjAy9hWLI/Kpu8CfPBg9nM7Ga+fTPLziwE9FIGToEW8CVhy8fAAp6wBnQAkxCPQBUPMtGRDveAOlCR2AP6UncPlFDMmSMx6a5XHZldFNOWTtpMJHEgbW5RzKd00g6lJJZS5o+WYFzIYO5EtGGCiDJMyIgyTMhIgTTTHq++ZaSpXcS+s9Vytr3UKmKXCa/yYrqS0bYGvGkU2QI+nPPfgSihbQR0pV03lpmZimwDAznvQSRGnYwyJCL5/WLWIkfAUM65ARalc5NkkiRwZKYuUnLuoo2r2MrSnQN2zmzEjpdz/EfhIvauX0u7oWRlEm4GvlMyMRMRuzC7kzZ2sbaTcb3aPzNRmMih1Nsn1Cb5iGT5/JdMFDq0zoF1povR+oryW4KINszcDq2ybGK3nU1sW25InTcizwnrgHhd2sWKjNwiWZvY3oj0cmxiezG06jk2sb0QqeTcxNaGGfVrkENEM2Yk0pKCndheizSk0PfhO2GaiF0MvTgy+zInfMG4c3fVkfE1xtjMnABPzuc4nyIQCAQCTJ0fgR0Xn2rYr3IAAAAASUVORK5CYII=" alt="About Me" class="icon"></a></li>
|
| 85 |
+
<li><a href="#contact"><img src="/static/praying.png" alt="Thanks" class="icon"></a></li>
|
| 86 |
+
</ul>
|
| 87 |
+
</nav>
|
| 88 |
+
<div class="content">
|
| 89 |
+
<header>
|
| 90 |
+
Laptop Price Prediction
|
| 91 |
+
</header>
|
| 92 |
+
<section id="home" class="section home">
|
| 93 |
+
<spline-viewer id="background-scene" url="https://prod.spline.design/YpB-yqLMWbXZ1-AI/scene.splinecode"></spline-viewer>
|
| 94 |
+
<div class="card left">
|
| 95 |
+
<img src="/static/3d-rendering-laptop.jpg" alt="Left Card Image">
|
| 96 |
+
<p>Choosing a suitable laptop is challenging, especially for students, professionals, and AI practitioners, as not everyone understands the right specifications for their needs. Factors like processor type, GPU, and configurations can be complex. Our website simplifies this process, helping users easily find the perfect laptop for their work or studies.</p>
|
| 97 |
+
</div>
|
| 98 |
+
<div class="card right">
|
| 99 |
+
<img src="/static/arrows-economy-chart.jpg" alt="Right Card Image">
|
| 100 |
+
<p>There are many ways to choose a suitable laptop, but the simplest way is based on its price. Price helps us determine what fits our budget, while the device's configuration value also plays a role in the laptop's cost. Since laptop prices can change over time, our data will be regularly updated via API on a monthly basis from various websites to reflect these fluctuations accurately.</p>
|
| 101 |
+
</div>
|
| 102 |
+
<button class="explore-button"><a href="/form">Explore</a></button>
|
| 103 |
+
</section>
|
| 104 |
+
|
| 105 |
+
<section id="projects" class="section">
|
| 106 |
+
<div class="project-card">
|
| 107 |
+
<div class="card-content">
|
| 108 |
+
<div class="card-image">
|
| 109 |
+
<img src="/static/maths-arrangement-with-different-tools.jpg" alt="Project Image">
|
| 110 |
+
</div>
|
| 111 |
+
<div class="card-description">
|
| 112 |
+
<h2>Building a website to predict laptop prices using some regression methods</h2>
|
| 113 |
+
<p>This project employs advanced machine learning techniques, including Decision Tree, Random Forest, and XGBoost, with hyperparameter tuning performed using RandomizedSearchCV, to accurately predict laptop prices. The dataset was meticulously collected using WebScraper from multiple websites such as Cellphones and Anphats. To ensure price predictions remain aligned with current market conditions, the data is continuously updated via API integration. With these methods, the model achieves an impressive accuracy of up to 95%.</p>
|
| 114 |
+
<p>Laptop components are continuously decreasing in price and are subject to rapid changes, with innovative new products constantly entering the market. These factors contribute to the ever-shifting nature of laptop pricing. Thus, accurately estimating price ranges remains a crucial challenge—not only to suggest suitable laptops to consumers but also to provide insights into how laptop prices are trending over time.</p>
|
| 115 |
+
<p>The project was initiated by a team of four members and implemented as a simple website. The goal is to predict laptop prices using straightforward, easy-to-understand features without overwhelming users with overly complex parameters. The simplicity of this design ensures accessibility for all users, while the project remains open for further optimization and improvement in the future.</p>
|
| 116 |
+
</div>
|
| 117 |
+
</div>
|
| 118 |
+
</div>
|
| 119 |
+
</section>
|
| 120 |
+
|
| 121 |
+
<section id="about" class="section">
|
| 122 |
+
<div class="about-card">
|
| 123 |
+
<div class="card-content">
|
| 124 |
+
<div class="card-description">
|
| 125 |
+
<h2>About Me</h2>
|
| 126 |
+
<p>Hey there! I'm NV, a coding enthusiast always eager to explore not only AI and IT but also various other fields to better understand the world around me. I believe that diving into new things can be exciting and a bit intimidating, but it always brings valuable experiences and adds a bit of fun to my coding journey.<br></p>
|
| 127 |
+
<p>Currently, I'm studying AI and Data Science. Initially, I wasn’t very enthusiastic, but over time, the field has captured my curiosity, and now I’m completely immersed in it. Perhaps it's because I lean more towards logic rather than abstract concepts, which makes this area so intriguing to me.<br></p>
|
| 128 |
+
<p>When I'm not programming, you’ll find me reading, watching movies, or playing games with my friends. These activities keep me inspired and motivated as I continue my journey.<br></p>
|
| 129 |
+
<p>If you're interested in my projects, check out my GitHub. Let's embark on this exciting journey together!
|
| 130 |
+
</p>
|
| 131 |
+
</div>
|
| 132 |
+
<div class="card-image">
|
| 133 |
+
<img src="/static/logo.jpg" alt="About Me Image">
|
| 134 |
+
</div>
|
| 135 |
+
</div>
|
| 136 |
+
</div>
|
| 137 |
+
</section>
|
| 138 |
+
|
| 139 |
+
<section id="contact" class="thanks">
|
| 140 |
+
<div class="thanks-card">
|
| 141 |
+
<h2>Thank You!</h2>
|
| 142 |
+
<p>We will meet again!!.</p>
|
| 143 |
+
</div>
|
| 144 |
+
<div class="socails">
|
| 145 |
+
<div class="main">
|
| 146 |
+
<div class="up">
|
| 147 |
+
<a href="https://www.instagram.com/caovu9523/" target="_blank">
|
| 148 |
+
<button class="card1">
|
| 149 |
+
|
| 150 |
+
<svg
|
| 151 |
+
xmlns="http://www.w3.org/2000/svg"
|
| 152 |
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
| 153 |
+
viewBox="0,0,256,256"
|
| 154 |
+
width="30px"
|
| 155 |
+
height="30px"
|
| 156 |
+
fill-rule="nonzero"
|
| 157 |
+
class="instagram"
|
| 158 |
+
>
|
| 159 |
+
<g
|
| 160 |
+
fill-rule="nonzero"
|
| 161 |
+
stroke="none"
|
| 162 |
+
stroke-width="1"
|
| 163 |
+
stroke-linecap="butt"
|
| 164 |
+
stroke-linejoin="miter"
|
| 165 |
+
stroke-miterlimit="10"
|
| 166 |
+
stroke-dasharray=""
|
| 167 |
+
stroke-dashoffset="0"
|
| 168 |
+
font-family="none"
|
| 169 |
+
font-weight="none"
|
| 170 |
+
font-size="none"
|
| 171 |
+
text-anchor="none"
|
| 172 |
+
style="mix-blend-mode: normal"
|
| 173 |
+
>
|
| 174 |
+
<g transform="scale(8,8)">
|
| 175 |
+
<path
|
| 176 |
+
d="M11.46875,5c-3.55078,0 -6.46875,2.91406 -6.46875,6.46875v9.0625c0,3.55078 2.91406,6.46875 6.46875,6.46875h9.0625c3.55078,0 6.46875,-2.91406 6.46875,-6.46875v-9.0625c0,-3.55078 -2.91406,-6.46875 -6.46875,-6.46875zM11.46875,7h9.0625c2.47266,0 4.46875,1.99609 4.46875,4.46875v9.0625c0,2.47266 -1.99609,4.46875 -4.46875,4.46875h-9.0625c-2.47266,0 -4.46875,-1.99609 -4.46875,-4.46875v-9.0625c0,-2.47266 1.99609,-4.46875 4.46875,-4.46875zM21.90625,9.1875c-0.50391,0 -0.90625,0.40234 -0.90625,0.90625c0,0.50391 0.40234,0.90625 0.90625,0.90625c0.50391,0 0.90625,-0.40234 0.90625,-0.90625c0,-0.50391 -0.40234,-0.90625 -0.90625,-0.90625zM16,10c-3.30078,0 -6,2.69922 -6,6c0,3.30078 2.69922,6 6,6c3.30078,0 6,-2.69922 6,-6c0,-3.30078 -2.69922,-6 -6,-6zM16,12c2.22266,0 4,1.77734 4,4c0,2.22266 -1.77734,4 -4,4c-2.22266,0 -4,-1.77734 -4,-4c0,-2.22266 1.77734,-4 4,-4z"
|
| 177 |
+
></path>
|
| 178 |
+
</g>
|
| 179 |
+
</g>
|
| 180 |
+
</svg>
|
| 181 |
+
|
| 182 |
+
</button>
|
| 183 |
+
</a>
|
| 184 |
+
<a href="https://www.facebook.com/nguyenvu.cao.376/" target="_blank">
|
| 185 |
+
<button class="card2">
|
| 186 |
+
<svg
|
| 187 |
+
xmlns="http://www.w3.org/2000/svg"
|
| 188 |
+
viewBox="0 0 48 48"
|
| 189 |
+
width="30px"
|
| 190 |
+
height="30px"
|
| 191 |
+
class="Facebook"
|
| 192 |
+
>
|
| 193 |
+
<path
|
| 194 |
+
fill="#1877F2"
|
| 195 |
+
d="M24 4C12.954 4 4 12.954 4 24c0 9.982 7.513 18.22 17.254 19.74v-13.96h-5.198v-5.38h5.198V20.18c0-5.15 3.07-7.97 7.78-7.97 2.257 0 4.63.403 4.63.403v5.08h-2.607c-2.565 0-3.368 1.598-3.368 3.238v3.882h5.747l-.917 5.38h-4.83v13.96C36.487 42.22 44 33.982 44 24 44 12.954 35.046 4 24 4z"
|
| 196 |
+
/>
|
| 197 |
+
<path
|
| 198 |
+
fill="#fff"
|
| 199 |
+
d="M30.097 29.58l.917-5.38h-5.747v-3.882c0-1.64.803-3.238 3.368-3.238h2.607v-5.08s-2.373-.403-4.63-.403c-4.71 0-7.78 2.82-7.78 7.97v4.62h-5.198v5.38h5.198v13.96c1.032.164 2.086.26 3.162.26s2.13-.096 3.162-.26v-13.96h4.83z"
|
| 200 |
+
/>
|
| 201 |
+
</svg>
|
| 202 |
+
</button>
|
| 203 |
+
</a>
|
| 204 |
+
</div>
|
| 205 |
+
<div class="down">
|
| 206 |
+
<a href="https://github.com/Nvcoing" target="_blank">
|
| 207 |
+
<button class="card3">
|
| 208 |
+
<svg
|
| 209 |
+
xmlns="http://www.w3.org/2000/svg"
|
| 210 |
+
viewBox="0 0 30 30"
|
| 211 |
+
width="30px"
|
| 212 |
+
height="30px"
|
| 213 |
+
class="github"
|
| 214 |
+
>
|
| 215 |
+
<path
|
| 216 |
+
d="M15,3C8.373,3,3,8.373,3,15c0,5.623,3.872,10.328,9.092,11.63C12.036,26.468,12,26.28,12,26.047v-2.051 c-0.487,0-1.303,0-1.508,0c-0.821,0-1.551-0.353-1.905-1.009c-0.393-0.729-0.461-1.844-1.435-2.526 c-0.289-0.227-0.069-0.486,0.264-0.451c0.615,0.174,1.125,0.596,1.605,1.222c0.478,0.627,0.703,0.769,1.596,0.769 c0.433,0,1.081-0.025,1.691-0.121c0.328-0.833,0.895-1.6,1.588-1.962c-3.996-0.411-5.903-2.399-5.903-5.098 c0-1.162,0.495-2.286,1.336-3.233C9.053,10.647,8.706,8.73,9.435,8c1.798,0,2.885,1.166,3.146,1.481C13.477,9.174,14.461,9,15.495,9 c1.036,0,2.024,0.174,2.922,0.483C18.675,9.17,19.763,8,21.565,8c0.732,0.731,0.381,2.656,0.102,3.594 c0.836,0.945,1.328,2.066,1.328,3.226c0,2.697-1.904,4.684-5.894,5.097C18.199,20.49,19,22.1,19,23.313v2.734 c0,0.104-0.023,0.179-0.035,0.268C23.641,24.676,27,20.236,27,15C27,8.373,21.627,3,15,3z"
|
| 217 |
+
></path>
|
| 218 |
+
</svg>
|
| 219 |
+
</button>
|
| 220 |
+
</a>
|
| 221 |
+
<a href="https://discord.gg/YmutwvZH" target="_blank">
|
| 222 |
+
<button class="card4">
|
| 223 |
+
<svg
|
| 224 |
+
height="30px"
|
| 225 |
+
width="30px"
|
| 226 |
+
viewBox="0 0 48 48"
|
| 227 |
+
xmlns="http://www.w3.org/2000/svg"
|
| 228 |
+
class="discord"
|
| 229 |
+
>
|
| 230 |
+
<path
|
| 231 |
+
d="M40,12c0,0-4.585-3.588-10-4l-0.488,0.976C34.408,10.174,36.654,11.891,39,14c-4.045-2.065-8.039-4-15-4s-10.955,1.935-15,4c2.346-2.109,5.018-4.015,9.488-5.024L18,8c-5.681,0.537-10,4-10,4s-5.121,7.425-6,22c5.162,5.953,13,6,13,6l1.639-2.185C13.857,36.848,10.715,35.121,8,32c3.238,2.45,8.125,5,16,5s12.762-2.55,16-5c-2.715,3.121-5.857,4.848-8.639,5.815L33,40c0,0,7.838-0.047,13-6C45.121,19.425,40,12,40,12z M17.5,30c-1.933,0-3.5-1.791-3.5-4c0-2.209,1.567-4,3.5-4s3.5,1.791,3.5,4C21,28.209,19.433,30,17.5,30z M30.5,30c-1.933,0-3.5-1.791-3.5-4c0-2.209,1.567-4,3.5-4s3.5,1.791,3.5,4C34,28.209,32.433,30,30.5,30z"
|
| 232 |
+
></path>
|
| 233 |
+
</svg>
|
| 234 |
+
</button>
|
| 235 |
+
</a>
|
| 236 |
+
</div>
|
| 237 |
+
</div>
|
| 238 |
+
</div>
|
| 239 |
+
</section>
|
| 240 |
+
</div>
|
| 241 |
+
|
| 242 |
+
</body>
|
| 243 |
+
|
| 244 |
+
</html>
|
templates/output_web.html
ADDED
|
@@ -0,0 +1,492 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Prediction Result</title>
|
| 7 |
+
<style>
|
| 8 |
+
body, html {
|
| 9 |
+
margin: 0;
|
| 10 |
+
padding: 0;
|
| 11 |
+
height: 100%;
|
| 12 |
+
font-family: Arial, sans-serif;
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
#background-scene {
|
| 16 |
+
position: fixed;
|
| 17 |
+
top: 0;
|
| 18 |
+
left: 0;
|
| 19 |
+
width: 100%;
|
| 20 |
+
height: 100%;
|
| 21 |
+
z-index: 1;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
/* Top Navigation Styles */
|
| 25 |
+
.top-nav {
|
| 26 |
+
position: fixed;
|
| 27 |
+
top: 0;
|
| 28 |
+
left: 0;
|
| 29 |
+
width: 100%;
|
| 30 |
+
background: rgba(0, 0, 0, 0.8);
|
| 31 |
+
padding: 15px;
|
| 32 |
+
z-index: 1000;
|
| 33 |
+
display: flex;
|
| 34 |
+
justify-content: space-between;
|
| 35 |
+
align-items: center;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
.nav-links {
|
| 39 |
+
display: flex;
|
| 40 |
+
gap: 20px;
|
| 41 |
+
margin-left: 20px;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
.nav-links a {
|
| 45 |
+
color: white;
|
| 46 |
+
text-decoration: none;
|
| 47 |
+
padding: 8px 15px;
|
| 48 |
+
border-radius: 4px;
|
| 49 |
+
transition: all 0.3s;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
.nav-links a:hover {
|
| 53 |
+
background: rgba(255, 255, 255, 0.1);
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
.profile-link {
|
| 57 |
+
margin-right: 20px;
|
| 58 |
+
margin-top: 8px;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
.profile-link a {
|
| 62 |
+
color: #4CAF50;
|
| 63 |
+
text-decoration: none;
|
| 64 |
+
padding: 8px 15px;
|
| 65 |
+
border: 1px solid #4CAF50;
|
| 66 |
+
border-radius: 4px;
|
| 67 |
+
transition: all 0.3s;
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
.profile-link a:hover {
|
| 71 |
+
background: #4CAF50;
|
| 72 |
+
color: white;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
/* Menu Dots Button */
|
| 76 |
+
.menu-dots {
|
| 77 |
+
position: fixed;
|
| 78 |
+
top: 80px;
|
| 79 |
+
left: 20px;
|
| 80 |
+
z-index: 1001;
|
| 81 |
+
cursor: pointer;
|
| 82 |
+
background: none;
|
| 83 |
+
border: none;
|
| 84 |
+
padding: 10px;
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
.dot {
|
| 88 |
+
width: 6px;
|
| 89 |
+
height: 6px;
|
| 90 |
+
background-color: white;
|
| 91 |
+
border-radius: 50%;
|
| 92 |
+
margin: 3px;
|
| 93 |
+
display: block;
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
/* Sidebar Styles */
|
| 97 |
+
.sidebar {
|
| 98 |
+
height: 100%;
|
| 99 |
+
width: 0;
|
| 100 |
+
position: fixed;
|
| 101 |
+
z-index: 999;
|
| 102 |
+
top: 60px;
|
| 103 |
+
left: 0;
|
| 104 |
+
background-color: rgba(0, 0, 0, 0.8);
|
| 105 |
+
overflow-x: hidden;
|
| 106 |
+
transition: 0.5s;
|
| 107 |
+
padding-top: 60px;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
.sidebar.active {
|
| 111 |
+
width: 400px;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
.sidebar-content {
|
| 115 |
+
padding: 20px;
|
| 116 |
+
opacity: 0;
|
| 117 |
+
transition: opacity 0.3s;
|
| 118 |
+
margin-top: 20px;
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
.sidebar.active .sidebar-content {
|
| 122 |
+
opacity: 1;
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
/* Form Styles */
|
| 126 |
+
.form-group {
|
| 127 |
+
margin-bottom: 20px;
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
.form-group label {
|
| 131 |
+
display: block;
|
| 132 |
+
color: #4CAF50;
|
| 133 |
+
margin-bottom: 8px;
|
| 134 |
+
font-weight: bold;
|
| 135 |
+
}
|
| 136 |
+
|
| 137 |
+
.form-group select {
|
| 138 |
+
width: 100%;
|
| 139 |
+
padding: 10px;
|
| 140 |
+
background-color: rgba(0, 0, 0, 0.5);
|
| 141 |
+
color: white;
|
| 142 |
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
| 143 |
+
border-radius: 4px;
|
| 144 |
+
cursor: pointer;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
.form-group select option {
|
| 148 |
+
background-color: black;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
button[type="submit"] {
|
| 152 |
+
width: 100%;
|
| 153 |
+
padding: 12px;
|
| 154 |
+
background-color: #4CAF50;
|
| 155 |
+
color: white;
|
| 156 |
+
border: none;
|
| 157 |
+
border-radius: 4px;
|
| 158 |
+
cursor: pointer;
|
| 159 |
+
font-size: 16px;
|
| 160 |
+
transition: background 0.3s;
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
button[type="submit"]:hover {
|
| 164 |
+
background-color: #45a049;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
/* Result Container Styles */
|
| 168 |
+
.result-container {
|
| 169 |
+
position: relative;
|
| 170 |
+
z-index: 2;
|
| 171 |
+
max-width: 1000px;
|
| 172 |
+
margin: 40px auto;
|
| 173 |
+
padding: 30px;
|
| 174 |
+
background: rgba(0, 0, 0, 0.8);
|
| 175 |
+
border-radius: 15px;
|
| 176 |
+
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
|
| 177 |
+
backdrop-filter: blur(10px);
|
| 178 |
+
color: white;
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
.result-container.shifted {
|
| 182 |
+
margin-left: 420px;
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
/* Specs Summary */
|
| 186 |
+
.specs-summary {
|
| 187 |
+
display: grid;
|
| 188 |
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
| 189 |
+
gap: 20px;
|
| 190 |
+
margin-bottom: 30px;
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
.spec-item {
|
| 194 |
+
background: rgba(255, 255, 255, 0.1);
|
| 195 |
+
padding: 15px;
|
| 196 |
+
border-radius: 10px;
|
| 197 |
+
text-align: center;
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
.spec-label {
|
| 201 |
+
color: #4CAF50;
|
| 202 |
+
font-size: 0.9em;
|
| 203 |
+
margin-bottom: 5px;
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
/* Predicted Price */
|
| 207 |
+
.predicted-price {
|
| 208 |
+
text-align: center;
|
| 209 |
+
background: rgba(76, 175, 80, 0.2);
|
| 210 |
+
padding: 20px;
|
| 211 |
+
border-radius: 10px;
|
| 212 |
+
margin: 30px 0;
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
/* Table Styles */
|
| 216 |
+
.table-container {
|
| 217 |
+
margin-top: 30px;
|
| 218 |
+
height: 300px;
|
| 219 |
+
overflow-y: auto;
|
| 220 |
+
}
|
| 221 |
+
|
| 222 |
+
table {
|
| 223 |
+
width: 100%;
|
| 224 |
+
border-collapse: collapse;
|
| 225 |
+
background: rgba(255, 255, 255, 0.1);
|
| 226 |
+
border-radius: 10px;
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
th, td {
|
| 230 |
+
padding: 15px;
|
| 231 |
+
text-align: left;
|
| 232 |
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
th {
|
| 236 |
+
background-color: rgba(76, 175, 80, 0.2);
|
| 237 |
+
color: white;
|
| 238 |
+
font-weight: bold;
|
| 239 |
+
font-size: 1.1em;
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
tr:hover {
|
| 243 |
+
background: rgba(255, 255, 255, 0.05);
|
| 244 |
+
}
|
| 245 |
+
|
| 246 |
+
.laptop-link {
|
| 247 |
+
color: #4CAF50;
|
| 248 |
+
text-decoration: none;
|
| 249 |
+
padding: 5px 10px;
|
| 250 |
+
border-radius: 4px;
|
| 251 |
+
transition: all 0.3s;
|
| 252 |
+
}
|
| 253 |
+
|
| 254 |
+
.laptop-link:hover {
|
| 255 |
+
background: rgba(76, 175, 80, 0.2);
|
| 256 |
+
}
|
| 257 |
+
|
| 258 |
+
.price-column {
|
| 259 |
+
text-align: right;
|
| 260 |
+
font-family: 'Courier New', monospace;
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
/* Button Group */
|
| 264 |
+
.button-group {
|
| 265 |
+
display: flex;
|
| 266 |
+
justify-content: center;
|
| 267 |
+
gap: 20px;
|
| 268 |
+
margin-top: 30px;
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
.action-button {
|
| 272 |
+
padding: 12px 25px;
|
| 273 |
+
border-radius: 5px;
|
| 274 |
+
text-decoration: none;
|
| 275 |
+
transition: all 0.3s;
|
| 276 |
+
}
|
| 277 |
+
|
| 278 |
+
.primary-button {
|
| 279 |
+
background-color: #4CAF50;
|
| 280 |
+
color: white;
|
| 281 |
+
}
|
| 282 |
+
|
| 283 |
+
.secondary-button {
|
| 284 |
+
background: rgba(255, 255, 255, 0.1);
|
| 285 |
+
color: white;
|
| 286 |
+
}
|
| 287 |
+
|
| 288 |
+
.action-button:hover {
|
| 289 |
+
transform: translateY(-2px);
|
| 290 |
+
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
|
| 291 |
+
}
|
| 292 |
+
|
| 293 |
+
/* Scrollbar Styles */
|
| 294 |
+
.table-container::-webkit-scrollbar {
|
| 295 |
+
width: 8px;
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
.table-container::-webkit-scrollbar-track {
|
| 299 |
+
background: rgba(255, 255, 255, 0.1);
|
| 300 |
+
border-radius: 4px;
|
| 301 |
+
}
|
| 302 |
+
|
| 303 |
+
.table-container::-webkit-scrollbar-thumb {
|
| 304 |
+
background: #4CAF50;
|
| 305 |
+
border-radius: 4px;
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
.table-container::-webkit-scrollbar-thumb:hover {
|
| 309 |
+
background: #45a049;
|
| 310 |
+
}
|
| 311 |
+
|
| 312 |
+
</style>
|
| 313 |
+
<script type="module" src="https://unpkg.com/@splinetool/viewer@1.9.5/build/spline-viewer.js"></script>
|
| 314 |
+
</head>
|
| 315 |
+
<body>
|
| 316 |
+
<!-- Top Navigation -->
|
| 317 |
+
<nav class="top-nav">
|
| 318 |
+
<div class="nav-links">
|
| 319 |
+
<a href="/">Home</a>
|
| 320 |
+
<a href="/#projects">Projects</a>
|
| 321 |
+
<a href="/#about">About</a>
|
| 322 |
+
<a href="/#contact">Contact</a>
|
| 323 |
+
<a href="/form">Recommend Laptop</a>
|
| 324 |
+
</div>
|
| 325 |
+
<div class="profile-link">
|
| 326 |
+
<a href="https://github.com/Nvcoing" target="_blank">My Profile</a>
|
| 327 |
+
</div>
|
| 328 |
+
</nav>
|
| 329 |
+
|
| 330 |
+
<!-- Menu Dots Button -->
|
| 331 |
+
<button class="menu-dots" onclick="toggleSidebar()">
|
| 332 |
+
<span class="dot"></span>
|
| 333 |
+
<span class="dot"></span>
|
| 334 |
+
<span class="dot"></span>
|
| 335 |
+
</button>
|
| 336 |
+
|
| 337 |
+
<!-- Sidebar -->
|
| 338 |
+
<div class="sidebar" id="sidebar">
|
| 339 |
+
<div class="sidebar-content">
|
| 340 |
+
<h2 style="color: #4CAF50; text-align: center; margin-bottom: 30px;">New Prediction</h2>
|
| 341 |
+
<form action="/submit_form" method="post">
|
| 342 |
+
<div class="form-group">
|
| 343 |
+
<label>RAM (GB)</label>
|
| 344 |
+
<select name="ram" required>
|
| 345 |
+
{% for value in ram_values %}
|
| 346 |
+
<option value="{{ value }}" {% if value == ram %}selected{% endif %}>{{ value }} GB</option>
|
| 347 |
+
{% endfor %}
|
| 348 |
+
</select>
|
| 349 |
+
</div>
|
| 350 |
+
|
| 351 |
+
<div class="form-group">
|
| 352 |
+
<label>Storage (GB)</label>
|
| 353 |
+
<select name="memory" required>
|
| 354 |
+
{% for value in memory_values %}
|
| 355 |
+
<option value="{{ value }}" {% if value == memory %}selected{% endif %}>{{ value }} GB</option>
|
| 356 |
+
{% endfor %}
|
| 357 |
+
</select>
|
| 358 |
+
</div>
|
| 359 |
+
|
| 360 |
+
<div class="form-group">
|
| 361 |
+
<label>Screen Size (inches)</label>
|
| 362 |
+
<select name="size" required>
|
| 363 |
+
{% for value in size_values %}
|
| 364 |
+
<option value="{{ value }}" {% if value == size %}selected{% endif %}>{{ value }}"</option>
|
| 365 |
+
{% endfor %}
|
| 366 |
+
</select>
|
| 367 |
+
</div>
|
| 368 |
+
|
| 369 |
+
<div class="form-group">
|
| 370 |
+
<label>GPU Type</label>
|
| 371 |
+
<select name="gpu_type" required>
|
| 372 |
+
{% for value in gpu_values %}
|
| 373 |
+
<option value="{{ value }}" {% if value == gpu_type %}selected{% endif %}>{{ value }}</option>
|
| 374 |
+
{% endfor %}
|
| 375 |
+
</select>
|
| 376 |
+
</div>
|
| 377 |
+
|
| 378 |
+
<div class="form-group">
|
| 379 |
+
<label>CPU Type</label>
|
| 380 |
+
<select name="cpu_type" required>
|
| 381 |
+
{% for value in cpu_values %}
|
| 382 |
+
<option value="{{ value }}" {% if value == cpu_type %}selected{% endif %}>{{ value }}</option>
|
| 383 |
+
{% endfor %}
|
| 384 |
+
</select>
|
| 385 |
+
</div>
|
| 386 |
+
|
| 387 |
+
<button type="submit">Predict Price</button>
|
| 388 |
+
</form>
|
| 389 |
+
</div>
|
| 390 |
+
</div>
|
| 391 |
+
|
| 392 |
+
<!-- Background Scene -->
|
| 393 |
+
<spline-viewer id="background-scene" url="https://prod.spline.design/YpB-yqLMWbXZ1-AI/scene.splinecode"></spline-viewer>
|
| 394 |
+
|
| 395 |
+
<!-- Main Content -->
|
| 396 |
+
<div class="result-container" id="resultContainer">
|
| 397 |
+
<div class="specs-summary">
|
| 398 |
+
<div class="spec-item">
|
| 399 |
+
<div class="spec-label">RAM</div>
|
| 400 |
+
<div>{{ ram }} GB</div>
|
| 401 |
+
</div>
|
| 402 |
+
<div class="spec-item">
|
| 403 |
+
<div class="spec-label">Storage</div>
|
| 404 |
+
<div>{{ memory }} GB</div>
|
| 405 |
+
</div>
|
| 406 |
+
<div class="spec-item">
|
| 407 |
+
<div class="spec-label">Screen Size</div>
|
| 408 |
+
<div>{{ size }}"</div>
|
| 409 |
+
</div>
|
| 410 |
+
<div class="spec-item">
|
| 411 |
+
<div class="spec-label">GPU Type</div>
|
| 412 |
+
<div>{{ gpu_type }}</div>
|
| 413 |
+
</div>
|
| 414 |
+
<div class="spec-item">
|
| 415 |
+
<div class="spec-label">CPU Type</div>
|
| 416 |
+
<div>{{ cpu_type }}</div>
|
| 417 |
+
</div>
|
| 418 |
+
</div>
|
| 419 |
+
|
| 420 |
+
<div class="predicted-price">
|
| 421 |
+
<div class="spec-label">Predicted Price</div>
|
| 422 |
+
<div style="font-size: 1.5em; font-weight: bold;">{{ output }} VND</div>
|
| 423 |
+
</div>
|
| 424 |
+
|
| 425 |
+
<div class="table-container">
|
| 426 |
+
<table>
|
| 427 |
+
<thead>
|
| 428 |
+
<tr>
|
| 429 |
+
<th>Model Name</th>
|
| 430 |
+
<th style="text-align: right;">Actual Price (VND)</th>
|
| 431 |
+
<th>Details</th>
|
| 432 |
+
</tr>
|
| 433 |
+
</thead>
|
| 434 |
+
<tbody>
|
| 435 |
+
{% for laptop in similar_laptops %}
|
| 436 |
+
<tr>
|
| 437 |
+
<td>{{ laptop.Name }}</td>
|
| 438 |
+
<td class="price-column">{{ "{:,.0f}".format(laptop.Price) }}</td>
|
| 439 |
+
<td>
|
| 440 |
+
{% if laptop.Link %}
|
| 441 |
+
<a href="{{ laptop.Link }}" target="_blank" class="laptop-link">View Details</a>
|
| 442 |
+
{% else %}
|
| 443 |
+
N/A
|
| 444 |
+
{% endif %}
|
| 445 |
+
</td>
|
| 446 |
+
</tr>
|
| 447 |
+
{% endfor %}
|
| 448 |
+
</tbody>
|
| 449 |
+
</table>
|
| 450 |
+
</div>
|
| 451 |
+
|
| 452 |
+
<div class="button-group">
|
| 453 |
+
<a href="/form" class="action-button primary-button">New Prediction</a>
|
| 454 |
+
<a href="/" class="action-button secondary-button">Home</a>
|
| 455 |
+
</div>
|
| 456 |
+
</div>
|
| 457 |
+
|
| 458 |
+
<script>
|
| 459 |
+
function toggleSidebar() {
|
| 460 |
+
const sidebar = document.getElementById('sidebar');
|
| 461 |
+
const resultContainer = document.getElementById('resultContainer');
|
| 462 |
+
sidebar.classList.toggle('active');
|
| 463 |
+
resultContainer.classList.toggle('shifted');
|
| 464 |
+
}
|
| 465 |
+
|
| 466 |
+
// Close sidebar when clicking outside
|
| 467 |
+
document.addEventListener('click', function(event) {
|
| 468 |
+
const sidebar = document.getElementById('sidebar');
|
| 469 |
+
const menuDots = document.querySelector('.menu-dots');
|
| 470 |
+
if (!sidebar.contains(event.target) && !menuDots.contains(event.target) && sidebar.classList.contains('active')) {
|
| 471 |
+
toggleSidebar();
|
| 472 |
+
}
|
| 473 |
+
});
|
| 474 |
+
|
| 475 |
+
// Preserve scroll position when switching tabs
|
| 476 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 477 |
+
const tableContainer = document.querySelector('.table-container');
|
| 478 |
+
let scrollPosition = 0;
|
| 479 |
+
|
| 480 |
+
// Save scroll position before hiding
|
| 481 |
+
document.addEventListener('sidebar-opening', function() {
|
| 482 |
+
scrollPosition = tableContainer.scrollTop;
|
| 483 |
+
});
|
| 484 |
+
|
| 485 |
+
// Restore scroll position after showing
|
| 486 |
+
document.addEventListener('sidebar-closed', function() {
|
| 487 |
+
tableContainer.scrollTop = scrollPosition;
|
| 488 |
+
});
|
| 489 |
+
});
|
| 490 |
+
</script>
|
| 491 |
+
</body>
|
| 492 |
+
</html>
|