55{% block content %}
66 < div class ="container-fluid ">
77 <!-- Modern Profile Header -->
8- < div class ="row mb-5 ">
8+ < div class ="row mb-3 ">
99 < div class ="col-12 ">
10- < div class ="card shadow-lg border-0 overflow-hidden ">
11- < div class ="bg-gradient-primary " style ="height: 120px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); "> </ div >
12- < div class ="card-body position-relative " style ="margin-top: -60px; ">
10+ < div class ="filled-profile-card ">
1311 < div class ="row align-items-end ">
1412 < div class ="col-auto ">
1513 < div class ="position-relative ">
2826 </ div >
2927 < div class ="col ">
3028 < div class ="mb-2 ">
31- < h2 class ="mb-1 font-weight-bold text-gray-900 "> {{ user.username }}</ h2 >
32- {% if user.discriminator %}
33- < p class ="text-muted mb-2 "> #{{ user.discriminator }}</ p >
34- {% endif %}
29+ < h2 class ="mb-1 font-weight-bold text-white ">
30+ {% if user.display_name %}
31+ {{ user.display_name }}
32+ {% else %}
33+ {{ user.username }}
34+ {% endif %}
35+ </ h2 >
36+ < p class ="text-light mb-3 " style ="font-size: 0.9rem; opacity: 0.9; ">
37+ < i class ="fab fa-discord mr-1 "> </ i > {{ user.username }}
38+ </ p >
3539 < div class ="d-flex flex-wrap gap-2 ">
3640 {% if user.is_staff %}
3741 < div class ="badge-container ">
@@ -41,7 +45,7 @@ <h2 class="mb-1 font-weight-bold text-gray-900">{{ user.username }}</h2>
4145 </ div >
4246 {% endif %}
4347 < div class ="badge-container ">
44- < span class ="badge-stat badge-stat-secondary ">
48+ < span class ="badge-stat badge-stat-light ">
4549 < i class ="fas fa-calendar "> </ i > Joined {{ user.date_joined|date:"M Y" }}
4650 </ span >
4751 </ div >
@@ -56,34 +60,68 @@ <h2 class="mb-1 font-weight-bold text-gray-900">{{ user.username }}</h2>
5660
5761 <!-- Enhanced Stats Overview -->
5862 {% if games or elos_by_game %}
59- < div class ="row mb-4 ">
63+ < div class ="stats-section ">
64+ < div class ="stats-row ">
65+ <!-- Games with Scores -->
6066 {% if games %}
61- < div class ="col-lg-3 col-md-6 mb-4 ">
62- < div class ="card border-0 shadow-sm h-100 ">
67+ < div class ="stats- col ">
68+ < div class ="card border-0 shadow-sm h-100 hover-card stats-card stats-card-primary ">
6369 < div class ="card-body text-center p-4 ">
64- < div class ="bg- primary rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 60px ; height: 60px ; ">
65- < i class ="fas fa-trophy fa-lg text-white "> </ i >
70+ < div class ="stats-icon stats-icon- primary rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 70px ; height: 70px ; ">
71+ < i class ="fas fa-trophy fa-xl text-white "> </ i >
6672 </ div >
67- < h3 class ="h4 font-weight-bold text-gray-800 mb-1 "> {{ games|length }}</ h3 >
68- < p class ="text-muted mb-0 small "> Games with Scores</ p >
73+ < h3 class ="h2 font-weight-bold text-white mb-1 "> {{ games|length }}</ h3 >
74+ < p class ="text-light mb-0 small font-weight-medium "> Games with Scores</ p >
6975 </ div >
7076 </ div >
7177 </ div >
7278 {% endif %}
7379
80+ <!-- Total Matches -->
7481 {% if elos_by_game %}
75- < div class ="col-lg-3 col-md-6 mb-4 ">
76- < div class ="card border-0 shadow-sm h-100 ">
82+ < div class ="stats-col ">
83+ < div class ="card border-0 shadow-sm h-100 hover-card stats-card stats-card-info ">
84+ < div class ="card-body text-center p-4 ">
85+ < div class ="stats-icon stats-icon-info rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 70px; height: 70px; ">
86+ < i class ="fas fa-swords fa-xl text-white "> </ i >
87+ </ div >
88+ < h3 class ="h2 font-weight-bold text-white mb-1 "> {{ total_matches }}</ h3 >
89+ < p class ="text-light mb-0 small font-weight-medium "> Ranked Matches</ p >
90+ </ div >
91+ </ div >
92+ </ div >
93+ {% endif %}
94+
95+ <!-- World Records -->
96+ {% if games %}
97+ < div class ="stats-col ">
98+ < div class ="card border-0 shadow-sm h-100 hover-card stats-card stats-card-warning ">
99+ < div class ="card-body text-center p-4 ">
100+ < div class ="stats-icon stats-icon-warning rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 70px; height: 70px; ">
101+ < i class ="fas fa-medal fa-xl text-white "> </ i >
102+ </ div >
103+ < h3 class ="h2 font-weight-bold text-white mb-1 "> {{ world_records }}</ h3 >
104+ < p class ="text-light mb-0 small font-weight-medium "> World Records</ p >
105+ </ div >
106+ </ div >
107+ </ div >
108+ {% endif %}
109+
110+ <!-- Average Performance -->
111+ {% if games %}
112+ < div class ="stats-col ">
113+ < div class ="card border-0 shadow-sm h-100 hover-card stats-card stats-card-success ">
77114 < div class ="card-body text-center p-4 ">
78- < div class ="bg-info rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 60px ; height: 60px ; ">
79- < i class ="fas fa-gamepad fa-lg text-white "> </ i >
115+ < div class ="stats-icon stats-icon-success rounded-circle d-inline-flex align-items-center justify-content-center mb-3 " style ="width: 70px ; height: 70px ; ">
116+ < i class ="fas fa-chart-bar fa-xl text-white "> </ i >
80117 </ div >
81- < h3 class ="h4 font-weight-bold text-gray-800 mb-1 "> {{ total_matches }}</ h3 >
82- < p class ="text-muted mb-0 small " > Total Matches </ p >
118+ < h3 class ="h2 font-weight-bold text-white mb-1 "> {{ avg_performance|floatformat:1 }}% </ h3 >
119+ < p class ="text-light mb-0 small font-weight-medium " > Single Player Performance </ p >
83120 </ div >
84121 </ div >
85122 </ div >
86123 {% endif %}
124+ </ div >
87125 </ div >
88126 {% else %}
89127 <!-- No Activity Message -->
@@ -374,12 +412,178 @@ <h6 class="font-weight-bold text-gray-800 mb-0">{{ entry.leaderboard.name }}</h6
374412 </ div>
375413
376414 < style >
415+ /* Modern Profile Styles matching site design language */
416+ .modern-profile-card {
417+ background : var (--bg-secondary ) !important ;
418+ border : 1px solid var (--border-color ) !important ;
419+ border-radius : 16px !important ;
420+ box-shadow : var (--shadow-medium ) !important ;
421+ transition : all 0.3s ease;
422+ overflow : visible;
423+ min-height : 200px ;
424+ }
425+
426+ .profile-content {
427+ margin-top : -60px ;
428+ padding : 2rem !important ;
429+ z-index : 10 ;
430+ position : relative;
431+ }
432+
433+ .profile-header-gradient {
434+ height : 120px ;
435+ background : linear-gradient (135deg , var (--accent-blue-dark ) 0% , var (--accent-blue ) 50% , var (--accent-blue-light ) 100% );
436+ position : relative;
437+ overflow : hidden;
438+ border-radius : 16px 16px 0 0 !important ;
439+ }
440+
441+ .profile-header-gradient ::before {
442+ content : '' ;
443+ position : absolute;
444+ top : 0 ;
445+ left : 0 ;
446+ right : 0 ;
447+ bottom : 0 ;
448+ background-image :
449+ repeating-linear-gradient (
450+ 45deg ,
451+ transparent,
452+ transparent 8px ,
453+ rgba (255 , 255 , 255 , 0.03 ) 8px ,
454+ rgba (255 , 255 , 255 , 0.03 ) 16px
455+ );
456+ }
457+
458+ .modern-profile-card : hover {
459+ box-shadow : 0 8px 32px rgba (59 , 130 , 246 , 0.2 ) !important ;
460+ border-color : var (--accent-blue ) !important ;
461+ }
462+
463+ /* COLORFUL STATS CARDS - Using highest specificity */
464+ .stats-card .stats-card-primary {
465+ background : linear-gradient (135deg , # 667eea 0% , # 764ba2 100% ) !important ;
466+ border : 1px solid rgba (255 , 255 , 255 , 0.2 ) !important ;
467+ }
468+
469+ .stats-card .stats-card-info {
470+ background : linear-gradient (135deg , # 3b82f6 0% , # 1e40af 100% ) !important ;
471+ border : 1px solid rgba (255 , 255 , 255 , 0.2 ) !important ;
472+ }
473+
474+ .stats-card .stats-card-warning {
475+ background : linear-gradient (135deg , # f59e0b 0% , # d97706 100% ) !important ;
476+ border : 1px solid rgba (255 , 255 , 255 , 0.2 ) !important ;
477+ }
478+
479+ .stats-card .stats-card-success {
480+ background : linear-gradient (135deg , # 10b981 0% , # 059669 100% ) !important ;
481+ border : 1px solid rgba (255 , 255 , 255 , 0.2 ) !important ;
482+ }
483+
484+ /* Remove base stats-card styles that override colors */
485+ .stats-card {
486+ border-radius : 12px !important ;
487+ transition : all 0.3s ease;
488+ position : relative;
489+ overflow : hidden;
490+ }
491+
492+ .stats-card : hover {
493+ transform : translateY (-4px );
494+ }
495+
496+ .stats-card .stats-card-primary : hover {
497+ box-shadow : 0 8px 25px rgba (102 , 126 , 234 , 0.4 ) !important ;
498+ border-color : rgba (102 , 126 , 234 , 0.8 ) !important ;
499+ }
500+
501+ .stats-card .stats-card-info : hover {
502+ box-shadow : 0 8px 25px rgba (59 , 130 , 246 , 0.4 ) !important ;
503+ border-color : rgba (59 , 130 , 246 , 0.8 ) !important ;
504+ }
505+
506+ .stats-card .stats-card-warning : hover {
507+ box-shadow : 0 8px 25px rgba (245 , 158 , 11 , 0.4 ) !important ;
508+ border-color : rgba (245 , 158 , 11 , 0.8 ) !important ;
509+ }
510+
511+ .stats-card .stats-card-success : hover {
512+ box-shadow : 0 8px 25px rgba (16 , 185 , 129 , 0.4 ) !important ;
513+ border-color : rgba (16 , 185 , 129 , 0.8 ) !important ;
514+ }
515+
516+ /* Icon styles */
517+ .stats-icon .stats-icon-primary {
518+ background : linear-gradient (135deg , # 764ba2 0% , # 667eea 100% ) !important ;
519+ box-shadow : 0 4px 15px rgba (102 , 126 , 234 , 0.4 );
520+ }
521+
522+ .stats-icon .stats-icon-info {
523+ background : linear-gradient (135deg , # 1e40af 0% , # 3b82f6 100% ) !important ;
524+ box-shadow : 0 4px 15px rgba (59 , 130 , 246 , 0.4 );
525+ }
526+
527+ .stats-icon .stats-icon-warning {
528+ background : linear-gradient (135deg , # d97706 0% , # f59e0b 100% ) !important ;
529+ box-shadow : 0 4px 15px rgba (245 , 158 , 11 , 0.4 );
530+ }
531+
532+ .stats-icon .stats-icon-success {
533+ background : linear-gradient (135deg , # 059669 0% , # 10b981 100% ) !important ;
534+ box-shadow : 0 4px 15px rgba (16 , 185 , 129 , 0.4 );
535+ }
536+
537+ .stats-icon {
538+ transition : all 0.3s ease;
539+ }
540+
541+ .stats-card : hover .stats-icon {
542+ transform : scale (1.1 ) rotate (5deg );
543+ }
544+
545+ .stats-card : hover .stats-icon .stats-icon-primary {
546+ box-shadow : 0 6px 20px rgba (102 , 126 , 234 , 0.6 );
547+ }
548+
549+ .stats-card : hover .stats-icon .stats-icon-info {
550+ box-shadow : 0 6px 20px rgba (59 , 130 , 246 , 0.6 );
551+ }
552+
553+ .stats-card : hover .stats-icon .stats-icon-warning {
554+ box-shadow : 0 6px 20px rgba (245 , 158 , 11 , 0.6 );
555+ }
556+
557+ .stats-card : hover .stats-icon .stats-icon-success {
558+ box-shadow : 0 6px 20px rgba (16 , 185 , 129 , 0.6 );
559+ }
560+
561+ /* Center the cards better */
562+ .stats-row {
563+ display : flex;
564+ justify-content : center;
565+ flex-wrap : wrap;
566+ gap : 1rem ;
567+ }
568+
569+ .stats-col {
570+ flex : 1 ;
571+ max-width : 280px ;
572+ min-width : 250px ;
573+ }
377574 .hover-shadow {
378575 transition : box-shadow 0.3s ease;
379576 }
380577 .hover-shadow : hover {
381578 box-shadow : 0 0.5rem 1rem rgba (0 , 0 , 0 , 0.15 ) !important ;
382579 }
580+ .hover-card {
581+ transition : all 0.3s ease;
582+ }
583+ .hover-card : hover {
584+ transform : translateY (-2px );
585+ box-shadow : 0 0.75rem 1.5rem rgba (0 , 0 , 0 , 0.15 ) !important ;
586+ }
383587 .badge-lg {
384588 font-size : 0.9rem ;
385589 }
@@ -555,7 +759,87 @@ <h6 class="font-weight-bold text-gray-800 mb-0">{{ entry.leaderboard.name }}</h6
555759 background-color : rgba (0 , 0 , 0 , 0.5 ) !important ;
556760 border : 1px solid rgba (255 , 255 , 255 , 0.1 );
557761 }
558- </ style >
762+ /* Smooth transition between profile and stats */
763+ .stats-section {
764+ position : relative;
765+ margin-top : 2rem ;
766+ background : linear-gradient (135deg ,
767+ rgba (59 , 130 , 246 , 0.02 ) 0% ,
768+ transparent 30% ,
769+ transparent 70% ,
770+ rgba (59 , 130 , 246 , 0.02 ) 100% );
771+ border-radius : 20px ;
772+ padding : 3rem 1rem 2rem 1rem ;
773+ }
774+
775+ .stats-section ::before {
776+ content : '' ;
777+ position : absolute;
778+ top : -1rem ;
779+ left : 50% ;
780+ transform : translateX (-50% );
781+ width : 60% ;
782+ height : 2px ;
783+ background : linear-gradient (90deg ,
784+ transparent 0% ,
785+ rgba (59 , 130 , 246 , 0.3 ) 20% ,
786+ rgba (59 , 130 , 246 , 0.8 ) 50% ,
787+ rgba (59 , 130 , 246 , 0.3 ) 80% ,
788+ transparent 100% );
789+ border-radius : 2px ;
790+ }
791+
792+ /* Filled Profile Card */
793+ .filled-profile-card {
794+ background : linear-gradient (135deg , # 3b82f6 0% , # 1e40af 100% ) !important ;
795+ border-radius : 16px !important ;
796+ padding : 2rem !important ;
797+ min-height : 200px ;
798+ display : flex;
799+ align-items : center;
800+ box-shadow : 0 8px 32px rgba (59 , 130 , 246 , 0.3 ) !important ;
801+ border : 1px solid rgba (255 , 255 , 255 , 0.2 ) !important ;
802+ position : relative;
803+ overflow : hidden;
804+ }
805+
806+ .filled-profile-card ::before {
807+ content : '' ;
808+ position : absolute;
809+ top : 0 ;
810+ left : 0 ;
811+ right : 0 ;
812+ bottom : 0 ;
813+ background-image :
814+ repeating-linear-gradient (
815+ 45deg ,
816+ transparent,
817+ transparent 8px ,
818+ rgba (255 , 255 , 255 , 0.03 ) 8px ,
819+ rgba (255 , 255 , 255 , 0.03 ) 16px
820+ );
821+ }
822+
823+ /* Force card colors to show */
824+ .card .stats-card-primary {
825+ background : linear-gradient (135deg , # 667eea 0% , # 764ba2 100% ) !important ;
826+ }
827+ .card .stats-card-info {
828+ background : linear-gradient (135deg , # 3b82f6 0% , # 1e40af 100% ) !important ;
829+ }
830+ .card .stats-card-warning {
831+ background : linear-gradient (135deg , # f59e0b 0% , # d97706 100% ) !important ;
832+ }
833+ .card .stats-card-success {
834+ background : linear-gradient (135deg , # 10b981 0% , # 059669 100% ) !important ;
835+ }
836+
837+ /* Light badge for profile */
838+ .badge-stat-light {
839+ background : rgba (255 , 255 , 255 , 0.2 ) !important ;
840+ color : white !important ;
841+ backdrop-filter : blur (10px );
842+ }\n </ style >
559843
560844 < script >
561845 document . addEventListener ( 'DOMContentLoaded' , function ( ) {
0 commit comments