Compare commits

...

28 Commits

Author SHA1 Message Date
Abhishek-unni-2
3ce194471c feat again : migrate kodepilot source files from dhanush.s repo 2025-10-11 11:35:54 +05:30
omsc
ecb6eebccc modified icon location 2025-10-04 10:43:02 +00:00
2bdd6a9219 updated whatsapp icon position 2025-10-04 16:06:26 +05:30
83352b4c88 feat: vidoe_add 2025-10-04 14:22:00 +05:30
4c87388cd8 Merge pull request 'test' (#41) from test into main
Reviewed-on: #41
2025-09-30 10:51:09 +00:00
6837a638d4 fix: infinity 2025-09-30 15:36:43 +05:30
1ee4878530 fix: whatsapp icon 2025-09-30 15:14:00 +05:30
e6bc1e695d fix: infinity testmo 2025-09-30 15:03:08 +05:30
46d4a1de47 Whstapp icon modified 2025-09-30 14:59:24 +05:30
25fad790e4 Whatsapp Icon Added 2025-09-30 14:46:30 +05:30
e71054b0e1 Merge pull request 'fetaurse:redirect' (#40) from content into test
Reviewed-on: #40
2025-09-30 07:25:52 +00:00
Abhishek-unni-2
0bd1be591d fetaurse:redirect 2025-09-30 12:54:28 +05:30
bf2ed05e29 Merge pull request 'fet: redirect' (#39) from content into test
Reviewed-on: #39
2025-09-30 07:16:02 +00:00
Abhishek-unni-2
c084f08a63 fet: redirect 2025-09-30 12:43:58 +05:30
a3a0ebfa44 URL added for cards 2025-09-30 11:55:36 +05:30
ace4e6eb31 feat: url /apply redir 2025-09-30 10:56:00 +05:30
5438fdb621 fix: image path 2025-09-30 10:37:27 +05:30
849d345d51 fix: image overview 2025-09-30 10:35:07 +05:30
0ad928c8d7 fix: ui 2025-09-30 10:35:07 +05:30
650392b397 fix: image_fixed 2025-09-30 10:33:16 +05:30
c70f68072f fix: url 2025-09-29 12:09:00 +05:30
8d01e06660 fix: ui imp 2025-09-29 12:00:00 +05:30
a4fe9fc394 feat: nav bar 2025-09-29 19:09:43 +05:30
188193af7e fix: ui 2025-09-29 18:51:49 +05:30
9c694d0a43 Merge pull request 'Login Button UI changed' (#36) from rajesh into main
Reviewed-on: #36
2025-09-29 10:12:14 +00:00
3f4351d303 Login Button UI changed 2025-09-29 15:41:29 +05:30
b37cad17d5 Merge pull request 'test' (#35) from test into main
Reviewed-on: #35
2025-09-29 04:18:57 +00:00
b6c3c68b3c fix: footer and hover slider liks added 2025-09-29 00:17:51 +05:30
5 changed files with 872 additions and 341 deletions

132
.gitignore vendored Normal file
View File

@ -0,0 +1,132 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
package-lock.json

Binary file not shown.

View File

@ -8,7 +8,6 @@
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="templateapi/main.css">
<link rel="icon" type="image/x-icon" href="templateapi/assets/images/logo/favicon.ico">
<link rel="icon" type="image/x-icon" href="assets/images/logo/favicon.ico">
<style>
.center-container {
display: flex;
@ -163,9 +162,9 @@
<div class="logo">KodePilot</div>
<input type="text" class="search" placeholder="Search Opportunities">
<div class="buttons">
<a href="/login">Log in</a>
<button class="business" onclick="getInTouch()">Let's Talk</button>
<button class="login" onclick="goToApplay()">Request a call</button>
<button class="login_first" onclick="goToLogin()">Login</button>
<button class="business" onclick="getInTouch('https://wa.me/+919787466226?text=Hi%20KodePilot%20Team%2C%0A%0AI%20came%20across%20your%20website%20and%20would%20like%20to%20know%20more%20about%20your%20Career%20Guidance%20and%20Placement%20support%20services.%20Could%20you%20please%20share%20the%20details%3F%0A%0AThanks%21')">Let's Talk</button>
<button class="login" onclick="getInZoho()">Request a call</button>
</div>
</header>
@ -187,12 +186,12 @@
</button>
</div>
<div class="cards">
<div class="card green">Internships<br><small>Gain Practical Experience</small></div>
<div class="card orange">Mentorships<br><small>Guidance From Top Mentors</small></div>
<div class="card blue">Jobs<br><small>Explore Diverse Careers</small></div>
<div class="card purple">Practice<br><small>Refine Skills Daily</small></div>
<div class="card yellow">Competitions<br><small>Battle For Excellence</small></div>
<div class="card pink">More<br><small>Explore More Options</small></div>
<div class="card green" onclick="getInZoho()">Internships<br><small>Gain Practical Experience</small></div>
<div class="card orange" onclick="getInZoho()">Mentorships<br><small>Guidance From Top Mentors</small></div>
<div class="card blue" onclick="getInZoho()">Jobs<br><small>Explore Diverse Careers</small></div>
<div class="card purple" onclick="getInZoho()">Practice<br><small>Refine Skills Daily</small></div>
<div class="card yellow" onclick="getInZoho()">Competitions<br><small>Battle For Excellence</small></div>
<div class="card pink" onclick="getInZoho()">More<br><small>Explore More Options</small></div>
</div>
</div>
</section>
@ -268,14 +267,14 @@
</div>
</section>
<section id="slider">
<section class="slider" id="slider">
<div class="slide1r-container">
<div class="slide1r-wrapper">
<div class="slide1r-track" id="slide1rTrack">
<div class="slide1">
<div class="slide1-box">
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/qa.jpg" alt="Business Meeting">
<div class="image-overlay">
<h4>QA & Testing</h4>
@ -294,7 +293,6 @@
</div>
</div>
<div class="slide1">
<div class="slide1-box">
<div class="image-container">
@ -306,7 +304,7 @@
</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/cyber.jpg" alt="Technology">
<div class="image-overlay">
<h4>Cybersecurity</h4>
@ -326,7 +324,7 @@
a successful performance report graph.</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/cyber.jpg" alt="Technology">
<div class="image-overlay">
<h4>Cybersecurity</h4>
@ -346,7 +344,7 @@
split view showing the finished product on a mobile phone.</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/qa.jpg" alt="Technology">
<div class="image-overlay">
<h4>QA & Testing</h4>
@ -367,7 +365,7 @@
</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/aws..jpg" alt="Technology">
<div class="image-overlay">
<h4>Cloud & DevOps</h4>
@ -389,7 +387,7 @@
</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/cyber.jpg" alt="Technology">
<div class="image-overlay">
<h4>Cybersecurity</h4>
@ -410,7 +408,7 @@
split view showing the finished product on a mobile phone.</p>
</div>
</div>
<div class="image-container">
<div class="image-container image-container1">
<img src="templateapi/assets/images/hai1/aws..jpg" alt="Beach">
<div class="image-overlay">
<h4>Cloud & DevOps</h4>
@ -439,23 +437,24 @@
</div>
<div class="cards-grid">
<div class="card-add card-quizzes">
<div class="card-add card-quizzes"
onclick="getInTouch('https://wa.me/9787466226?text=Hi%20KodePilot%20Team%2C%20I%20would%20like%20to%20know%20more%20about%20the%20Quizzes%20opportunities%20you%20provide.%20Could%20you%20please%20share%20the%20details%3F%20Thanks!')">
</div>
<div class="card-add card-hackathons">
<div class="card-add card-hackathons"
onclick="getInTouch('https://wa.me/9787466226?text=Hi%20KodePilot%20Team%2C%20I%20came%20across%20the%20Hackathons%20section%20on%20your%20website.%20Could%20you%20share%20more%20information%20about%20upcoming%20Hackathons%20and%20how%20to%20participate%3F%20Thanks!')">
</div>
<div class="card-add card-scholarships">
<div class="card-add card-scholarships"
onclick="getInTouch('https://wa.me/9787466226?text=Hi%20KodePilot%20Team%2C%20I%E2%80%99m%20interested%20in%20learning%20more%20about%20the%20Scholarships%20you%20offer.%20Could%20you%20please%20provide%20the%20details%3F%20Thanks!')">
</div>
<div class="card-add card-conferences">
</div>
<div class="card-add card-festivals">
<div class="card-add card-conferences"
onclick="getInTouch('https://wa.me/9787466226?text=Hi%20KodePilot%20Team%2C%20I%E2%80%99d%20like%20to%20know%20more%20about%20the%20Conferences%20mentioned%20on%20your%20website.%20Could%20you%20please%20share%20the%20details%3F%20Thanks!')">
</div>
<div class="card-add card-festivals"
onclick="getInTouch('https://wa.me/9787466226?text=Hi%20KodePilot%20Team%2C%20I%20saw%20the%20Tech%20Fest%20section%20on%20your%20website%20and%20I%E2%80%99m%20interested%20in%20participating.%20Could%20you%20please%20provide%20more%20information%3F%20Thanks!')">
</div>
</div>
</section>
<section class="move-slider-ruby">
<div class="move-slider-container">
<div class="move-slider-box-static">
@ -493,6 +492,29 @@
</div>
</div>
<div class="move-slider-box">
<div class="slide-content">
<p class="slide-text-cot">
"
</p>
<p class="slide-text">
"The KodePilot curriculum gave me hands-on experience with networking and security. I
gained practical
skills and secured my position in network engineering with confidence."
</p>
<div class="slide-logo-box">
<div class="profile-box">
<img src="templateapi/assets/images/hai1/user-icon.svg" alt="Client Logo"
class="slide-logo">
<div class="profile-info">
<p class="slide-name">koushik</p>
<p class="slide-role">Network Engineer</p>
</div>
</div>
</div>
</div>
</div>
<div class="move-slider-box">
<div class="slide-content">
<p class="slide-text-cot">
@ -538,8 +560,8 @@
</div>
</div>
</section>
<section>
<section class="practice-container-parent">
<div class="practice-container">
<div class="practice-container-box">
<div class="practice-container-text-box">
@ -618,11 +640,8 @@
</div>
</div>
</div>
</section>
<section class="card-simple">
<div class="card-easy">
<div class="card-easy-left">
@ -640,15 +659,6 @@
</div>
</section>
<section class="move-slider" style="display: none;">
<div class="container-slider">
<div class="container-slider-baby container-slider-1"></div>
<div class="container-slider-baby container-slider-2"></div>
<div class="container-slider-baby container-slider-3"></div>
<div class="container-slider-baby container-slider-4"></div>
</div>
</section>
<section class="our-numbers">
<div class="stats-grid">
<div class="stat-item">
@ -682,9 +692,16 @@
</div>
</div>
</section>
<section class="corces-s">
<div class="corces"></div>
</section>
<div class="whatsapp-icon" onclick="WhatsgetInTouch()">
<img src="https://upload.wikimedia.org/wikipedia/commons/6/6b/WhatsApp.svg" alt="WhatsApp" />
</div>
<footer class="footer">
<div class="footer-container">
<div class="footer-section company-section">
@ -785,16 +802,13 @@
</ul>
</div>
</div>
<div class="footer-bottom">
<div style="max-width: 1200px; margin: 0 auto; padding: 0 20px;">
<p style="margin-top: 20px 0px; padding: 10px 0px; font-size: 15px; margin-bottom : 30px">
Copyright © 2025 <a href="#" style="color: #120ee2;">KodePilot</a> - All
rights
reserved.
<p>
Copyright © 2025
<a href="https://kodepilot.in" target="_blank">KodePilot</a>
- All rights reserved.
</p>
</div>
</div>
</footer>
</div>
<script src="main.js"></script>

425
main.css
View File

@ -1,6 +1,7 @@
:root {
--course-max-width: 1200px;
--course-max-width-small: 1000px;
--section-margin: 60px 20px;
}
@media (max-width: 1360px) {
@ -42,8 +43,9 @@
border-bottom: 1px solid #eee;
position: fixed;
width: 100%;
height: 56px;
z-index: 9999;
top: 0;
height: 60px;
z-index: 20;
}
.logo {
@ -78,7 +80,7 @@
}
.buttons button {
margin-left: 2px;
margin-left: 15px;
padding: 8px 15px;
border: none;
border-radius: 20px;
@ -90,18 +92,20 @@
}
.business {
background: #ffcc00;
background: #FFD700;
color: #030101;
}
.login {
background: #007bff;
background: #1E90FF;
color: #fff;
}
.hero {
text-align: start;
padding: 50px 20px;
line-height: 20px;
margin: var(--section-margin);
padding-top: 11px;
line-height: 37px;
}
.hero h1 {
@ -130,6 +134,7 @@
margin: auto;
padding: 20px;
flex-wrap: wrap;
margin-top: 50px;
}
.cards_box {
@ -162,8 +167,10 @@
.card small {
display: block;
margin-top: 10px;
margin-top: -2px;
font-weight: normal;
max-width: 142px;
line-height: 23px;
}
.green {
@ -175,16 +182,16 @@
}
.orange {
background: #fec192;
background-image: url('assets/images/unlockcarrer/jobs.png');
background: #9bc9ff;
background-image: url('assets/images/unlockcarrer/mentorship.png');
background-size: 115px;
background-repeat: no-repeat;
background-position: bottom right;
}
.blue {
background: #9bc9ff;
background-image: url('assets/images/unlockcarrer/mentorship.png');
background: #fec192;
background-image: url('assets/images/unlockcarrer/jobs.png');
background-size: 115px;
background-repeat: no-repeat;
background-position: bottom right;
@ -216,7 +223,7 @@
}
.users {
padding: 0px 20px;
margin: var(--section-margin);
display: flex;
justify-content: center;
align-items: center;
@ -313,7 +320,7 @@
}
.mnc {
padding: 40px 20px;
margin: var(--section-margin);
display: flex;
justify-content: center;
align-items: center;
@ -378,8 +385,10 @@
}
.our-numbers {
max-width: var(--course-max-width);
margin: 50px auto 50px auto;
display: flex;
justify-content: center;
align-items: center;
margin: var(--section-margin);
}
.our-numbers h2 {
@ -393,15 +402,16 @@
.stats-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
min-width: var(--course-max-width);
gap: 20px;
justify-items: center;
align-items: stretch;
min-width: var(--course-max-width);
}
.stat-item {
background: HSL(0, 0%, 96.5%);
text-align: center;
padding: 20px 10px;
border-radius: 14px;
display: flex;
flex-direction: column;
@ -486,7 +496,7 @@
.subtitle {
color: #6b7280;
line-height: 0px;
line-height: 22px;
}
.arrow-icon {
@ -501,7 +511,7 @@
flex-wrap: wrap;
justify-content: center;
align-items: center;
min-width: 100px;
max-width: var(--course-max-width);
}
.card-add {
@ -550,6 +560,17 @@
color: #1f2937;
}
.slider {
margin: var(--section-margin);
display: flex;
justify-content: center;
align-items: center;
}
.opportunity-section {
margin: var(--section-margin);
}
.hover-slider {
display: none;
padding: 0 0 50px 0;
@ -571,12 +592,10 @@
}
.slide1r-container {
margin: 0 auto;
max-width: var(--course-max-width-small);
width: 100%;
position: relative;
border-radius: 20px;
padding: 25px;
font-family: 'Arial', sans-serif;
}
@ -644,10 +663,6 @@
transition: transform 0.3s ease;
}
.image-container:hover .image-overlay {
transform: translateY(0);
}
.image-overlay h4 {
margin: 0 0 5px 0;
font-size: 16px;
@ -678,7 +693,7 @@
font-size: 20px;
color: #333;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 10;
z-index: 1;
}
.nav-button:hover {
@ -790,6 +805,25 @@
color: #ffffff;
}
.footer-bottom {
border-top: 1px solid rgba(255, 255, 255, 0.2);
margin-top: 20px;
padding: 15px 0;
text-align: center;
font-size: 14px;
color: #ccc;
}
.footer-bottom a {
color: #fff;
text-decoration: none;
font-weight: 600;
}
.footer-bottom a:hover {
text-decoration: underline;
}
.company-section {
grid-column: 1;
}
@ -927,32 +961,6 @@
opacity: 0.9;
}
.footer-bottom {
border-top: 1px solid #475569;
margin-top: 40px;
padding-top: 20px;
font-size: 12px;
color: #94a3b8;
text-align: left;
background: white;
}
.footer-bottom-links {
display: flex;
flex-wrap: wrap;
gap: 20px;
margin-top: 10px;
}
.footer-bottom-links a {
color: #94a3b8;
text-decoration: none;
}
.footer-bottom-links a:hover {
color: white;
}
.hiring-badge {
background-color: #10b981;
color: white;
@ -964,15 +972,14 @@
}
.move-slider-ruby {
width: 100%;
width: auto;
overflow: hidden;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
margin-top: 76px;
padding-bottom: 40px;
margin: var(--section-margin);
}
.move-slider-box-static {
@ -980,7 +987,6 @@
height: 350px;
min-width: 350px;
border-radius: 10px;
padding: 24px;
display: flex;
flex-direction: column;
justify-content: center;
@ -1017,18 +1023,7 @@
.move-slider-animation-box {
display: flex;
gap: 20px;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(-50%);
}
will-change: transform;
}
.move-slider-box {
@ -1040,7 +1035,7 @@
background: #fff;
border-radius: 12px;
padding: 20px;
min-width: 350px;
min-width: 200px;
}
.move-slider-box .slide-content>*:not(.slide-text) {
@ -1050,6 +1045,11 @@
.move-slider-box:hover .slide-content>*:not(.slide-text) {
opacity: 0;
pointer-events: none;
transition-delay: 0s;
}
.move-slider-box .slide-content>*:not(.slide-text) {
transition: opacity 0.3s ease 1s;
}
.move-slider-box .slide-text {
@ -1059,9 +1059,10 @@
}
.move-slider-box:hover .slide-text {
transform: translateY(100px) scale(1.1);
transform: translateY(80px) scale(1.1);
}
.slide-content {
display: flex;
flex-direction: column;
@ -1098,6 +1099,7 @@
gap: 12px;
}
.profile-info {
display: flex;
flex-direction: column;
@ -1135,8 +1137,10 @@
}
.card-simple {
max-width: var(--course-max-width);
margin: 70px auto 70px auto;
margin: var(--section-margin);
display: flex;
justify-content: center;
align-items: center;
}
.card-easy {
@ -1144,7 +1148,7 @@
background-color: #F6F8FA;
border-radius: 20px;
overflow: hidden;
margin: 20px;
max-width: var(--course-max-width);
}
.card-easy-left {
@ -1286,7 +1290,7 @@
.course-category-title {
font-size: 22px;
font-weight: bold;
margin-bottom: 15px;
padding-left: 14px;
}
.course-slider {
@ -1371,9 +1375,6 @@
}
.practice-cards-container * {
margin: 0;
padding: 0;
@ -1390,11 +1391,8 @@
align-items: flex-start;
}
.practice-container {
max-width: 1200px;
width: 100%;
margin: 0 auto;
padding: 0 20px;
.practice-container-parent {
margin: var(--section-margin);
}
.practice-container-box {
@ -1444,7 +1442,6 @@
}
.practice-cards-wrapper {
margin: 30px 0;
display: flex;
height: 380px;
border-radius: 12px;
@ -1541,7 +1538,6 @@
justify-content: center;
transition: all 0.8s cubic-bezier(0.23, 1, 0.32, 1);
opacity: 0;
padding: 20px;
background: transparent;
flex-shrink: 0;
}
@ -1648,10 +1644,10 @@
}
.practice-cta-btn {
padding: 10px;
margin-top: 16px;
background-color: #111827;
color: white;
padding: 10px 16px;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
@ -1687,6 +1683,27 @@
transform: translateY(-2px);
}
.mobile-slide-menu {
position: fixed;
top: 0;
right: -100%;
width: 300px;
height: 100vh;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(240, 242, 247, 0.9));
backdrop-filter: blur(20px);
border-left: 1px solid rgba(255, 255, 255, 0.3);
z-index: 99;
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: -20px 0 40px rgba(0, 0, 0, 0.15);
display: flex;
flex-direction: column;
padding: 80px 0 40px 0;
display: none;
}
.mobile-slide-menu.active {
right: 0;
}
.practice-cards-wrapper:hover .practice-card:hover .practice-cta-btn {
opacity: 1;
@ -1712,7 +1729,42 @@
}
.whatsapp-icon {
position: fixed;
bottom: 20px;
left: 20px;
width: 60px;
height: 60px;
cursor: pointer;
z-index: 1000;
border-radius: 50%;
overflow: hidden;
outline: greenyellow 1px solid;
transition: transform 0.2s;
display: flex;
align-items: center;
justify-content: center;
}
.whatsapp-icon::before {
content: "";
position: absolute;
inset: 0;
border-radius: 50%;
background: rgba(37, 211, 101, 0.209);
animation: pulse 2s infinite;
z-index: -1;
}
.whatsapp-icon img {
width: 80%;
height: auto;
object-fit: contain;
}
.whatsapp-icon:hover {
transform: scale(1.1);
}
.practice-cards-wrapper .practice-card .practice-card-svg {
@ -1749,19 +1801,10 @@
}
@media (max-width: 1024px) {
.stats-grid {
grid-template-columns: repeat(3, 1fr);
gap: 15px;
}
.stat-item {
min-height: 100px;
padding: 15px 8px;
}
.our-numbers {
padding: 40px 20px;
}
.our-numbers h2 {
font-size: 2rem;
@ -1769,6 +1812,7 @@
}
.stats-grid {
min-width: var(--course-max-width);
grid-template-columns: repeat(2, 1fr);
gap: 30px;
}
@ -1779,7 +1823,6 @@
.stat-item {
min-height: 110px;
padding: 20px;
}
.mnc h2 {
@ -1795,19 +1838,21 @@
}
@media (max-width: 768px) {
.practice-container {
.practice-container-parent {
display: none;
}
.stats-grid {
min-width: 90%;
}
.mnc-box {
display: flex;
align-items: center;
max-width: 90%;
padding: 20px;
}
.slide1r-container {
padding: 20px;
width: 90%;
}
@ -1817,23 +1862,27 @@
}
.container {
padding: 20px;
width: 90%;
}
.move-slider-container {
padding: 20px;
width: 90%;
}
.move-slider-ruby {
width: auto;
}
.card-simple {
width: 90%;
}
.move-slider-animation-box {
margin-top: 393px;
margin-right: 0px;
}
.move-slider-box-static {
padding: 20px;
min-width: 90%;
min-width: 100%;
}
.card-simple {
@ -1898,10 +1947,6 @@
max-height: 100%;
}
.our-numbers {
margin: 0 auto 0 auto;
}
.corces-s {
margin: 0px 0;
}
@ -1911,11 +1956,7 @@
}
.logo {
margin-left: 8px;
}
.slide1r-container {
padding: 20px;
margin-left: 15px;
}
.slide1-box {
@ -2001,6 +2042,7 @@
@media (max-width: 480px) {
.stats-grid {
max-width: 90%;
grid-template-columns: 1fr;
gap: 25px;
}
@ -2031,6 +2073,165 @@
.next-btn {
right: -15px;
}
.card-add {
width: 95%;
height: 100%;
max-width: 100%;
min-height: 280px;
}
.cards_box {
margin-top: 20px;
}
.slide1 {
min-height: 50%;
}
.image-container1 {
display: none !important;
}
.buttons {
display: none !important;
}
.mobile-hamburger {
display: flex !important;
flex-direction: column;
cursor: pointer;
padding: 10px;
padding-right: 15px;
}
.mobile-hamburger:hover {
transform: scale(1.05);
background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.1));
}
.hamburger-line {
width: 26px;
height: 3px;
background: linear-gradient(135deg, #667eea, #764ba2);
margin: 3px 0;
border-radius: 3px;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 2px 4px rgba(102, 126, 234, 0.3);
}
.mobile-hamburger.active .hamburger-line:nth-child(1) {
transform: rotate(45deg) translate(6px, 6px);
background: linear-gradient(135deg, #ff6b6b, #ee5a24);
}
.mobile-hamburger.active .hamburger-line:nth-child(2) {
opacity: 0;
transform: translateX(20px);
}
.mobile-hamburger.active .hamburger-line:nth-child(3) {
transform: rotate(-45deg) translate(8px, -8px);
background: linear-gradient(135deg, #ff6b6b, #ee5a24);
}
.mobile-menu-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(8px);
z-index: 20;
opacity: 0;
visibility: hidden;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.mobile-menu-overlay.active {
opacity: 1;
visibility: visible;
}
.mobile-menu-item {
padding: 20px 40px;
border: none;
background: none;
font-size: 18px;
font-weight: 600;
color: #2d3748;
cursor: pointer;
text-align: left;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
position: relative;
overflow: hidden;
opacity: 0;
transform: translateX(30px);
}
.mobile-slide-menu {
display: flex;
}
.mobile-menu-item::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.mobile-menu-item:hover::before {
left: 0;
}
.mobile-menu-item:hover {
color: #667eea;
transform: translateX(15px);
}
.mobile-menu-item:active {
transform: translateX(15px) scale(0.98);
}
.menu-close-btn {
position: absolute;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
border: none;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.1));
backdrop-filter: blur(10px);
border-radius: 50%;
color: #718096;
font-size: 24px;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
align-items: center;
justify-content: center;
}
.menu-close-btn:hover {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.2));
transform: rotate(90deg) scale(1.1);
color: #ff6b6b;
}
.mobile-hamburger {
display: none;
}
.hero_container {
padding-top: 0px;
margin-top: 0px;
}
}
@keyframes fadeInUp {

460
main.js
View File

@ -1,110 +1,134 @@
function goToLogin() {
window.location.href = "/login";
}
function goToApplay() {
window.location.href = "/apply/";
}
function getInTouch() {
window.open("https://wa.me/+919787466226?text=Hi%20KodePilot%20Team%2C%0A%0AI%20came%20across%20your%20website%20and%20would%20like%20to%20know%20more%20about%20your%20Career%20Guidance%20and%20Placement%20support%20services.%20Could%20you%20please%20share%20the%20details%3F%0A%0AThanks%21", "_blank");
function getInTouch(vall) {
window.open(vall, "_blank");
}
(function () {
if (window.Slide1rSliderLoaded) {
return;
}
window.Slide1rSliderLoaded = true;
class Slide1rSlider {
constructor() {
setTimeout(() => {
this.initSlider();
}, 100);
function WhatsgetInTouch() {
window.open(
"https://wa.me/919787466226?text=Hi%20KodePilot%20Team%2C%0A%0AI%20came%20across%20your%20website%20and%20would%20like%20to%20know%20more%20about%20your%20Career%20Guidance%20and%20Placement%20support%20services.%20Could%20you%20please%20share%20the%20details%3F%0A%0AThanks%21",
"_blank"
);
}
function getInZoho() {
window.open("https://forms.zohopublic.in/krishnakode1/form/KodePilotRegistrationForm/formperma/A2L8xK6T13A9-s5Kxj8BqRTGsgmpKDHM0DDcZQWye5E");
}
class Slide1rSlider {
constructor({ trackId = 'slide1rTrack', prevId = 'prevBtn', nextId = 'nextBtn', autoPlayDuration = 5000, invert = true } = {}) {
this.trackId = trackId;
this.prevId = prevId;
this.nextId = nextId;
this.autoPlayDuration = autoPlayDuration;
this.invert = invert;
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', () => this.initSlider());
else this.initSlider();
}
initSlider() {
try {
this.track = document.getElementById('slide1rTrack');
this.slides = document.querySelectorAll('.slide1');
this.prevBtn = document.getElementById('prevBtn');
this.nextBtn = document.getElementById('nextBtn');
this.track = document.getElementById(this.trackId);
if (!this.track) return console.warn('slide track not found:', this.trackId);
if (!this.track || this.slides.length === 0) {
console.warn("Slider DOM elements not found. Retrying...");
setTimeout(() => this.initSlider(), 200);
return;
}
this.originalSlides = Array.from(this.track.querySelectorAll('.slide1'));
if (this.originalSlides.length === 0) return console.warn('no .slide1 found');
this.currentIndex = 0;
this.totalSlides = this.slides.length;
this.autoPlayDuration = 5000;
this.prevBtn = document.getElementById(this.prevId);
this.nextBtn = document.getElementById(this.nextId);
this.init();
} catch (err) {
console.error("Slider initialization failed:", err);
}
}
init() {
try {
this.updateSlider();
this.setupStructure();
this.bindEvents();
this.currentIndex = 1;
this.updateSlider(false);
this.startAutoPlay();
this.bindKeyboardEvents();
} catch (err) {
console.error("Slider init error:", err);
}
}
setupStructure() {
this.track.style.display = 'flex';
this.track.style.transition = 'transform 0.5s ease';
this.track.querySelectorAll('.slide1').forEach(s => {
s.style.minWidth = '100%';
s.style.boxSizing = 'border-box';
});
updateSlider() {
try {
const translateX = -this.currentIndex * 100;
this.track.style.transform = `translateX(${translateX}%)`;
const first = this.originalSlides[0].cloneNode(true);
const last = this.originalSlides[this.originalSlides.length - 1].cloneNode(true);
} catch (err) {
console.error("Error updating slider:", err);
this.track.insertBefore(last, this.track.firstChild);
this.track.appendChild(first);
this.slides = Array.from(this.track.querySelectorAll('.slide1'));
this.totalSlides = this.slides.length;
}
updateSlider(animate = true) {
this.track.style.transition = animate ? 'transform 0.5s ease' : 'none';
this.track.style.transform = `translateX(-${this.currentIndex * 100}%)`;
}
nextSlide() {
try {
this.currentIndex = (this.currentIndex + 1) % this.totalSlides;
this.updateSlider();
this.restartAutoPlay();
} catch (err) {
console.error("Error going to next slide:", err);
if (this.invert) {
this.currentIndex--;
this.updateSlider(true);
if (this.currentIndex === 0) {
setTimeout(() => {
this.track.style.transition = 'none';
this.currentIndex = this.slides.length - 2;
this.updateSlider(false);
}, 500);
}
} else {
this.currentIndex++;
this.updateSlider(true);
if (this.currentIndex === this.slides.length - 1) {
setTimeout(() => {
this.track.style.transition = 'none';
this.currentIndex = 1;
this.updateSlider(false);
}, 500);
}
}
this.restartAutoPlay();
}
prevSlide() {
try {
this.currentIndex = this.currentIndex === 0 ? this.totalSlides - 1 : this.currentIndex - 1;
this.updateSlider();
if (this.invert) {
this.currentIndex++;
this.updateSlider(true);
if (this.currentIndex === this.slides.length - 1) {
setTimeout(() => {
this.track.style.transition = 'none';
this.currentIndex = 1;
this.updateSlider(false);
}, 500);
}
} else {
this.currentIndex--;
this.updateSlider(true);
if (this.currentIndex === 0) {
setTimeout(() => {
this.track.style.transition = 'none';
this.currentIndex = this.slides.length - 2;
this.updateSlider(false);
}, 500);
}
}
this.restartAutoPlay();
} catch (err) {
console.error("Error going to previous slide:", err);
}
}
goToSlide(index) {
try {
this.currentIndex = index;
this.updateSlider();
this.restartAutoPlay();
} catch (err) {
console.error("Error going to slide:", err);
}
}
startAutoPlay() {
try {
this.stopAutoPlay();
this.autoPlayInterval = setInterval(() => {
this.nextSlide();
}, this.autoPlayDuration);
} catch (err) {
console.error("Error starting autoplay:", err);
}
this.autoPlayInterval = setInterval(() => this.nextSlide(), this.autoPlayDuration);
}
stopAutoPlay() {
@ -120,79 +144,36 @@ function getInTouch() {
}
bindEvents() {
try {
if (this.nextBtn) {
this.nextBtn.addEventListener('click', () => this.nextSlide());
}
if (this.nextBtn) this.nextBtn.addEventListener('click', () => this.nextSlide());
if (this.prevBtn) this.prevBtn.addEventListener('click', () => this.prevSlide());
if (this.prevBtn) {
this.prevBtn.addEventListener('click', () => this.prevSlide());
}
const container = document.querySelector('.slide1r-container');
const container = this.track.closest('.slide1r-container') || this.track.parentElement;
if (container) {
container.addEventListener('mouseenter', () => this.stopAutoPlay());
container.addEventListener('mouseleave', () => this.startAutoPlay());
}
let startX = 0;
let endX = 0;
if (this.track) {
this.track.addEventListener('touchstart', (e) => {
startX = e.touches[0].clientX;
this.stopAutoPlay();
});
this.track.addEventListener('touchmove', (e) => {
endX = e.touches[0].clientX;
});
let startX = 0, endX = 0;
this.track.addEventListener('touchstart', (e) => { startX = e.touches[0].clientX; this.stopAutoPlay(); });
this.track.addEventListener('touchmove', (e) => { endX = e.touches[0].clientX; });
this.track.addEventListener('touchend', () => {
const deltaX = startX - endX;
if (Math.abs(deltaX) > 50) {
if (deltaX > 0) {
this.nextSlide();
} else {
this.prevSlide();
}
const delta = startX - endX;
if (Math.abs(delta) > 50) {
if (delta > 0) this.nextSlide(); else this.prevSlide();
}
this.startAutoPlay();
});
}
} catch (err) {
console.error("Error binding events:", err);
}
}
bindKeyboardEvents() {
const keyHandler = (e) => {
const container = document.querySelector('.slide1r-container');
if (container && this.isElementInViewport(container)) {
if (e.key === 'ArrowLeft') {
this.prevSlide();
} else if (e.key === 'ArrowRight') {
this.nextSlide();
document.addEventListener('keydown', (e) => {
const containerEl = document.querySelector('.slide1r-container');
if (!containerEl) return;
if (e.key === 'ArrowLeft') this.prevSlide();
if (e.key === 'ArrowRight') this.nextSlide();
});
}
}
};
}
document.addEventListener('keydown', keyHandler);
}
isElementInViewport(el) {
const rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
}
new Slide1rSlider();
})();
new Slide1rSlider({ invert: true, autoPlayDuration: 4000 });
const statItems = document.querySelectorAll('.stat-item');
@ -306,19 +287,19 @@ function renderCourses(allCourses) {
<div class="course-image" style="background-image: url(${course.image});"></div>
</a>
<div class="course-content">
<a href="${course.link}" class="course-name" target="_blank">${course.name}</a>
<a href="/apply" class="course-name" target="_blank">${course.name}</a>
<div class="course-description">${course.description}</div>
</div>
`;
track.appendChild(courseDiv);
});
// Button scrolling
const scrollAmount = 300;
prevBtn.addEventListener('click', () => track.scrollBy({ left: -scrollAmount, behavior: 'smooth' }));
nextBtn.addEventListener('click', () => track.scrollBy({ left: scrollAmount, behavior: 'smooth' }));
// Touch swipe
let startX = 0;
let isDragging = false;
@ -427,3 +408,206 @@ setInterval(() => {
}, 500);
}, 500);
}, 5000);
document.addEventListener("DOMContentLoaded", () => {
document.querySelectorAll(".footer a").forEach(link => {
link.setAttribute("href", "/apply");
});
document.querySelectorAll(".practice-container a").forEach(link => {
link.setAttribute("href", "/apply");
});
});
class ModernMobileMenu {
constructor() {
this.buttonsContainer = document.querySelector('.buttons');
this.hamburger = null;
this.mobileMenu = null;
this.overlay = null;
this.isMenuOpen = false;
this.init();
}
init() {
this.createMobileMenu();
this.bindEvents();
this.checkScreenSize();
window.addEventListener('resize', () => this.checkScreenSize());
}
createMobileMenu() {
this.hamburger = document.createElement('div');
this.hamburger.className = 'mobile-hamburger';
this.hamburger.innerHTML = `
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
`;
this.overlay = document.createElement('div');
this.overlay.className = 'mobile-menu-overlay';
this.mobileMenu = document.createElement('div');
this.mobileMenu.className = 'mobile-slide-menu';
const originalButtons = this.buttonsContainer.querySelectorAll('button');
const closeBtn = document.createElement('button');
closeBtn.className = 'menu-close-btn';
closeBtn.innerHTML = '&times;';
this.mobileMenu.appendChild(closeBtn);
originalButtons.forEach(btn => {
const mobileBtn = document.createElement('button');
mobileBtn.className = 'mobile-menu-item';
mobileBtn.textContent = btn.textContent;
mobileBtn.onclick = () => {
btn.click();
this.closeMenu();
};
this.mobileMenu.appendChild(mobileBtn);
});
this.buttonsContainer.parentNode.insertBefore(this.hamburger, this.buttonsContainer.nextSibling);
document.body.appendChild(this.overlay);
document.body.appendChild(this.mobileMenu);
}
bindEvents() {
this.hamburger.addEventListener('click', () => this.toggleMenu());
this.overlay.addEventListener('click', () => this.closeMenu());
this.mobileMenu.querySelector('.menu-close-btn').addEventListener('click', () => this.closeMenu());
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && this.isMenuOpen) {
this.closeMenu();
}
});
}
toggleMenu() {
this.isMenuOpen ? this.closeMenu() : this.openMenu();
}
openMenu() {
this.isMenuOpen = true;
this.hamburger.classList.add('active');
this.overlay.classList.add('active');
this.mobileMenu.classList.add('active');
document.body.style.overflow = 'hidden';
const items = this.mobileMenu.querySelectorAll('.mobile-menu-item');
items.forEach((item, index) => {
setTimeout(() => {
item.style.opacity = '1';
item.style.transform = 'translateX(0)';
}, (index + 1) * 100);
});
}
closeMenu() {
this.isMenuOpen = false;
this.hamburger.classList.remove('active');
this.overlay.classList.remove('active');
this.mobileMenu.classList.remove('active');
document.body.style.overflow = '';
const items = this.mobileMenu.querySelectorAll('.mobile-menu-item');
items.forEach(item => {
item.style.opacity = '0';
item.style.transform = 'translateX(30px)';
});
}
checkScreenSize() {
if (window.innerWidth <= 480) {
this.hamburger.style.display = 'flex';
} else {
this.hamburger.style.display = 'none';
this.closeMenu();
}
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => new ModernMobileMenu());
} else {
new ModernMobileMenu();
}
document.addEventListener("DOMContentLoaded", () => {
const counters = document.querySelectorAll(".stat-number");
const animateCounter = (el, target) => {
let current = 0;
const step = Math.ceil(target / 50);
const interval = setInterval(() => {
current += step;
if (current >= target) {
current = target;
clearInterval(interval);
}
el.innerHTML = current + "<span class='highlight'>+</span>";
}, 20);
};
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const el = entry.target;
const finalNumber = parseInt(el.textContent);
animateCounter(el, finalNumber);
observer.unobserve(el);
}
});
}, { threshold: 0.3 });
counters.forEach(counter => observer.observe(counter));
});
// i know it is a bad code but it works 😅
document.addEventListener("DOMContentLoaded", () => {
const track = document.querySelector(".move-slider-animation-box");
const container = document.querySelector(".container");
let pos = 0;
const normalSpeed = 1;
let speed = 20;
function animate() {
pos -= speed;
track.style.transform = `translateX(${pos}px)`;
if (pos <= -100 && speed !== normalSpeed) {
speed = normalSpeed;
}
const firstChild = track.firstElementChild;
const firstRect = firstChild.getBoundingClientRect();
const containerRect = container.getBoundingClientRect();
if (firstRect.right <= containerRect.left) {
track.appendChild(firstChild);
pos += firstChild.offsetWidth + 20;
track.style.transform = `translateX(${pos}px)`;
}
requestAnimationFrame(animate);
}
animate();
});