Skip to content

Commit 4475fe2

Browse files
committed
🎯 Transform journey into horizontal interactive progress bar
- Convert vertical timeline to space-efficient horizontal progress bar - Fix location: Remote → Noida, UP (SmartHelio Sector 16 address) - Add interactive progress fill animation with gradient colors - Implement clickable steps with smooth content transitions - Add keyboard navigation (arrow keys, enter/space) - Create auto-demo cycle that showcases all steps on page load - Design responsive layout that adapts perfectly to mobile - Include skill tags and structured career progression display - Maintain minimal elegance while maximizing space utilization - Add accessibility features with proper ARIA labels The journey now uses horizontal space efficiently while providing an engaging, interactive experience for exploring career progression.
1 parent 0738daf commit 4475fe2

File tree

3 files changed

+387
-189
lines changed

3 files changed

+387
-189
lines changed

‎assets/css/main.css‎

Lines changed: 197 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -399,139 +399,265 @@ body {
399399
line-height: 1.5;
400400
}
401401

402-
/* Clean Journey Timeline Styles */
403-
.journey-timeline {
402+
/* Horizontal Progress Bar Journey Styles */
403+
.journey-progress-container {
404+
background: white;
405+
border-radius: 16px;
406+
padding: 2rem;
407+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
408+
border: 1px solid rgba(0, 0, 0, 0.06);
409+
}
410+
411+
.progress-track {
404412
position: relative;
405-
padding-left: 0;
413+
margin-bottom: 3rem;
406414
}
407415

408-
.timeline-line {
409-
opacity: 0.3;
416+
.progress-line {
417+
height: 3px;
418+
background: #e5e7eb;
419+
border-radius: 2px;
420+
margin: 2rem 0;
421+
}
422+
423+
.progress-fill {
424+
position: absolute;
425+
top: 2rem;
426+
left: 0;
427+
height: 3px;
428+
background: linear-gradient(90deg, #3b82f6, #8b5cf6, #10b981);
429+
border-radius: 2px;
430+
width: 0%;
431+
transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
410432
}
411433

412-
.journey-step {
434+
.progress-steps {
435+
display: flex;
436+
justify-content: space-between;
413437
position: relative;
438+
z-index: 2;
439+
}
440+
441+
.progress-step {
414442
display: flex;
415-
align-items: flex-start;
416-
transition: all 0.2s ease;
443+
flex-direction: column;
444+
align-items: center;
445+
cursor: pointer;
446+
transition: all 0.3s ease;
447+
opacity: 0.6;
417448
}
418449

419-
.journey-step:hover {
450+
.progress-step.active {
451+
opacity: 1;
452+
}
453+
454+
.progress-step:hover {
455+
opacity: 1;
420456
transform: translateY(-2px);
421457
}
422458

423-
.step-marker {
459+
.step-circle {
424460
position: relative;
425-
flex-shrink: 0;
426-
width: 4rem;
427-
height: auto;
428-
display: flex;
429-
flex-direction: column;
430-
align-items: center;
431-
z-index: 2;
461+
margin-bottom: 1rem;
432462
}
433463

434-
.marker-dot {
435-
width: 12px;
436-
height: 12px;
464+
.step-dot {
465+
width: 16px;
466+
height: 16px;
437467
border-radius: 50%;
438-
border: 3px solid white;
439-
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
440-
transition: all 0.2s ease;
468+
border: 4px solid white;
469+
box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);
470+
transition: all 0.3s ease;
471+
position: relative;
472+
z-index: 3;
441473
}
442474

443-
.journey-step:hover .marker-dot {
475+
.progress-step.active .step-dot {
444476
transform: scale(1.2);
445-
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
477+
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3);
446478
}
447479

448-
.step-content {
449-
flex: 1;
450-
padding-bottom: 1rem;
480+
.step-label {
481+
text-align: center;
482+
min-width: 120px;
451483
}
452484

453-
.step-header {
454-
margin-bottom: 0.5rem;
485+
.step-title {
486+
font-weight: 600;
487+
font-size: 0.9rem;
488+
color: #374151;
489+
display: block;
490+
margin-bottom: 0.25rem;
491+
}
492+
493+
.step-years {
494+
font-size: 0.75rem;
495+
color: #6b7280;
496+
font-weight: 500;
497+
}
498+
499+
.progress-step.active .step-title {
500+
color: #1f2937;
501+
}
502+
503+
.progress-step.active .step-years {
504+
color: #4b5563;
505+
}
506+
507+
/* Details Panel */
508+
.details-panel {
509+
position: relative;
510+
min-height: 200px;
455511
}
456512

457513
.step-details {
458-
margin-top: 0.75rem;
459-
padding-top: 0.75rem;
460-
border-top: 1px solid #f3f4f6;
461-
transition: all 0.3s ease;
514+
position: absolute;
515+
top: 0;
516+
left: 0;
517+
right: 0;
518+
opacity: 0;
519+
visibility: hidden;
520+
transform: translateY(20px);
521+
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
462522
}
463523

464-
.step-details.hidden {
465-
display: none;
524+
.step-details.active {
525+
opacity: 1;
526+
visibility: visible;
527+
transform: translateY(0);
466528
}
467529

468-
.step-toggle {
469-
border: none;
470-
background: none;
471-
cursor: pointer;
530+
.details-header {
531+
margin-bottom: 1.5rem;
532+
}
533+
534+
.details-title {
535+
font-size: 1.5rem;
536+
font-weight: 600;
537+
color: #1f2937;
538+
margin-bottom: 0.5rem;
539+
}
540+
541+
.details-institution {
542+
color: #6b7280;
543+
font-size: 1rem;
544+
}
545+
546+
.details-description {
547+
color: #4b5563;
548+
line-height: 1.6;
549+
margin-bottom: 1.5rem;
550+
}
551+
552+
.details-highlights {
553+
display: flex;
554+
flex-wrap: wrap;
555+
gap: 0.5rem;
556+
margin-bottom: 1rem;
557+
}
558+
559+
.highlight-tag {
560+
background: #f3f4f6;
561+
color: #374151;
562+
padding: 0.375rem 0.75rem;
563+
border-radius: 6px;
472564
font-size: 0.875rem;
473565
font-weight: 500;
474-
padding: 0;
475-
transition: color 0.2s ease;
566+
transition: all 0.2s ease;
476567
}
477568

478-
.step-toggle:hover {
479-
opacity: 0.8;
569+
.highlight-tag:hover {
570+
background: #e5e7eb;
480571
}
481572

482-
.step-toggle:focus {
483-
outline: 2px solid rgba(59, 130, 246, 0.5);
484-
outline-offset: 2px;
485-
border-radius: 2px;
573+
/* Career Progression */
574+
.career-progression {
575+
display: flex;
576+
flex-direction: column;
577+
gap: 1rem;
578+
}
579+
580+
.progression-item {
581+
display: flex;
582+
justify-content: space-between;
583+
align-items: center;
584+
padding: 0.75rem 1rem;
585+
background: #f9fafb;
586+
border-radius: 8px;
587+
border-left: 3px solid #10b981;
588+
}
589+
590+
.progression-role {
591+
font-weight: 600;
592+
color: #1f2937;
486593
}
487594

488-
/* Color-coded dots */
489-
.marker-dot.bg-blue-500 {
595+
.progression-period {
596+
font-size: 0.875rem;
597+
color: #6b7280;
598+
font-weight: 500;
599+
}
600+
601+
/* Color coding for different steps */
602+
.step-dot.bg-blue-500 {
490603
background-color: #3b82f6;
491604
}
492605

493-
.marker-dot.bg-purple-500 {
606+
.step-dot.bg-purple-500 {
494607
background-color: #8b5cf6;
495608
}
496609

497-
.marker-dot.bg-green-500 {
610+
.step-dot.bg-green-500 {
498611
background-color: #10b981;
499612
}
500613

501614
/* Mobile Responsive */
502615
@media (max-width: 768px) {
503-
.journey-step {
616+
.journey-progress-container {
617+
padding: 1.5rem;
618+
}
619+
620+
.progress-steps {
504621
flex-direction: column;
505-
align-items: flex-start;
622+
gap: 2rem;
623+
align-items: stretch;
506624
}
507625

508-
.step-marker {
509-
width: 100%;
626+
.progress-line,
627+
.progress-fill {
628+
display: none;
629+
}
630+
631+
.progress-step {
510632
flex-direction: row;
511-
margin-bottom: 0.75rem;
633+
text-align: left;
512634
}
513635

514-
.timeline-line {
515-
display: none;
636+
.step-circle {
637+
margin-bottom: 0;
638+
margin-right: 1rem;
516639
}
517640

518-
.marker-dot {
519-
margin-right: 0.75rem;
641+
.step-label {
642+
text-align: left;
643+
min-width: auto;
644+
}
645+
646+
.details-panel {
647+
margin-top: 2rem;
520648
}
521649
}
522650

523-
/* Subtle animations */
524-
.journey-step {
525-
opacity: 0;
526-
transform: translateY(20px);
527-
animation: fadeInUp 0.6s ease forwards;
651+
/* Animations */
652+
.journey-progress-container {
653+
animation: slideInUp 0.8s ease forwards;
528654
}
529655

530-
.journey-step:nth-child(1) { animation-delay: 0.1s; }
531-
.journey-step:nth-child(2) { animation-delay: 0.2s; }
532-
.journey-step:nth-child(3) { animation-delay: 0.3s; }
533-
534-
@keyframes fadeInUp {
656+
@keyframes slideInUp {
657+
from {
658+
opacity: 0;
659+
transform: translateY(30px);
660+
}
535661
to {
536662
opacity: 1;
537663
transform: translateY(0);

0 commit comments

Comments
 (0)