Skip to content

Commit 2c7ef9a

Browse files
authored
Improved details
1 parent 8f8635a commit 2c7ef9a

3 files changed

Lines changed: 59 additions & 19 deletions

File tree

‎docs/index.html‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,14 @@ <h2>Contact</h2>
184184

185185
<!-- PROJECT MODAL -->
186186
<div id="projectModal" class="modal">
187+
<button class="modal-close"><i class="bi bi-x-lg"></i></button>
187188
<div class="modal-content">
188-
<button class="modal-close"><i class="bi bi-x-lg"></i></button>
189189
<div id="modalBody" class="modal-body"></div>
190190
</div>
191191
</div>
192192

193193
<footer>
194-
© 2026 Shuja · Built with ❤️
194+
Built with ❤️ by Shuja · © 2026
195195
</footer>
196196
</body>
197197
</html>

‎docs/script.js‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,11 @@ This portfolio is a showcase of modern frontend development practices. It featur
217217
- Smooth scrolling and active link highlighting
218218
- **Intersection Observer** for scroll animations
219219
- Formspree integration for contact emails
220+
221+
**Technical Implementation**
222+
The project utilizes vanilla JavaScript for maximum performance without heavy framework overhead. CSS variables handle the theming engine, allowing for instant switching between dark and light modes. The layout relies on CSS Grid for the project cards and Flexbox for the navigation components.
223+
224+
The modal system is custom-built to support dynamic content loading, ensuring that the DOM remains lightweight by only populating details when requested.
220225
`
221226
},
222227
"todo": {
@@ -229,6 +234,9 @@ A minimal yet functional Todo application built with vanilla JavaScript. It focu
229234
- Local Storage support to save data
230235
- Filter tasks by status (All, Active, Completed)
231236
- **Drag and drop** reordering (planned)
237+
238+
**Future Improvements**
239+
Planned updates include adding a backend with Node.js to support user accounts and cloud syncing. I also plan to implement a drag-and-drop library like SortableJS to allow users to prioritize their tasks visually.
232240
`
233241
},
234242
"weather": {

‎docs/styles.css‎

Lines changed: 49 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,20 @@ html[data-theme="light"] textarea {
4949
}
5050

5151
html {
52-
scroll-behavior: smooth;
53-
scrollbar-color: var(--muted) var(--bg);
54-
scrollbar-width: thin;
52+
scroll-behavior: smooth;
5553
}
5654
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
5755

5856
/* ============ CUSTOM SCROLLBAR ============ */
59-
::-webkit-scrollbar { width: 10px; }
60-
::-webkit-scrollbar-track { background: var(--bg); }
57+
::-webkit-scrollbar { width: 12px; }
58+
::-webkit-scrollbar-track { background: transparent; margin-block: 6px; }
6159
::-webkit-scrollbar-thumb {
62-
background: var(--muted);
63-
border-radius: 5px;
64-
border: 2px solid var(--bg);
60+
background-color: var(--muted);
61+
border-radius: 10px;
62+
border: 3px solid transparent;
63+
background-clip: content-box;
6564
}
66-
::-webkit-scrollbar-thumb:hover { background: var(--primary); }
65+
::-webkit-scrollbar-thumb:hover { background-color: var(--primary); }
6766

6867
/* ============ SCROLL TO TOP BUTTON ============ */
6968
.scroll-to-top {
@@ -633,22 +632,55 @@ footer {
633632
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
634633
}
635634

635+
/* Custom Animated Scrollbar for Modal */
636+
.modal-content::-webkit-scrollbar {
637+
width: 12px;
638+
}
639+
.modal-content::-webkit-scrollbar-track {
640+
background: transparent;
641+
margin-block: 15px;
642+
}
643+
.modal-content::-webkit-scrollbar-thumb {
644+
background-color: var(--muted);
645+
border-radius: 10px;
646+
border: 3px solid transparent;
647+
background-clip: content-box;
648+
}
649+
.modal-content::-webkit-scrollbar-thumb:hover {
650+
background-color: var(--primary);
651+
}
652+
636653
.modal.open .modal-content {
637654
transform: translateY(0);
638655
}
639656

640657
.modal-close {
641658
position: absolute;
642-
top: 20px;
643-
right: 20px;
644-
background: transparent;
645-
border: none;
646-
color: var(--muted);
647-
font-size: 1.5rem;
659+
top: 25px;
660+
right: 30px;
661+
background: rgba(255, 255, 255, 0.1);
662+
backdrop-filter: blur(5px);
663+
border: 1px solid var(--border);
664+
width: 50px;
665+
height: 50px;
666+
border-radius: 50%;
667+
color: var(--text);
668+
font-size: 1.4rem;
648669
cursor: pointer;
649-
transition: color 0.3s;
670+
display: flex;
671+
align-items: center;
672+
justify-content: center;
673+
transition: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
674+
z-index: 2001;
675+
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
676+
}
677+
.modal-close:hover {
678+
background: #ef4444;
679+
color: white;
680+
transform: rotate(90deg) scale(1.1);
681+
box-shadow: 0 0 20px rgba(239, 68, 68, 0.5);
682+
border-color: #ef4444;
650683
}
651-
.modal-close:hover { color: var(--text); }
652684

653685
.modal-body h3 { margin-bottom: 15px; color: var(--primary); }
654686
.modal-body ul { margin-left: 20px; margin-bottom: 15px; list-style-type: disc; }

0 commit comments

Comments
 (0)