1- /* --- Dashboard Professional Components --- */
2- .status-badge {
3- padding : 4px 12px ;
4- border-radius : 20px ;
5- font-size : 0.7rem ;
6- font-weight : 800 ;
7- letter-spacing : 1px ;
8- text-transform : uppercase;
1+ /* Dashboard Layout & Components */
2+ .app-layout {
3+ display : grid;
4+ grid-template-areas : "main" ;
5+ min-height : 100vh ;
96}
10- .status--pro { background : var (--color-primary ); color : white; }
117
12- .tech-score-gauge {
13- position : relative;
14- width : 160px ;
15- height : 160px ;
16- border-radius : 50% ;
17- background : conic-gradient (var (--color-primary ) calc (var (--score ) * 1% ), var (--gauge-bg ) 0 );
8+ /* Mobile Bottom Nav (Thumb-Friendly) */
9+ .mobile-nav {
10+ position : fixed;
11+ bottom : 0 ;
12+ left : 0 ;
13+ right : 0 ;
14+ height : 64px ;
15+ background : var (--color-surface );
16+ backdrop-filter : blur (20px );
17+ border-top : 1px solid var (--color-border );
1818 display : flex;
19+ justify-content : space-around;
1920 align-items : center;
20- justify-content : center;
21- margin : 0 auto 20px ;
22- transition : var (--transition );
21+ z-index : 1000 ;
22+ padding : 0 12px ;
2323}
2424
25- .tech-score-gauge ::after {
26- content : attr (data-value);
27- position : absolute;
28- width : 130px ;
29- height : 130px ;
30- background : var (--color-surface-elevated ); /* Cor de fundo que se adapta ao tema */
31- border-radius : 50% ;
25+ .mobile-nav .nav-link {
3226 display : flex;
27+ flex-direction : column;
3328 align-items : center;
34- justify-content : center;
35- font-size : 2.5rem ;
36- font-weight : 900 ;
37- color : var (--color-text-primary );
29+ gap : 4px ;
30+ text-decoration : none;
31+ color : var (--color-text-secondary );
32+ font-size : 0.7rem ;
33+ font-weight : 600 ;
3834 transition : var (--transition );
3935}
4036
41- .narrative-card {
42- background : var (--color-surface-elevated );
43- padding : 32px ;
44- margin-bottom : 24px ;
45- border-left : 8px solid var (--color-primary );
46- border-radius : var (--radius-panel );
47- box-shadow : var (--shadow-main );
48- transition : var (--transition );
49- }
37+ .mobile-nav .nav-link i { font-size : 1.2rem ; }
38+ .mobile-nav .nav-link--active { color : var (--color-primary ); }
5039
51- .skill-tag {
52- background : var (--color-primary-light );
53- color : var (--color-primary );
54- padding : 6px 14px ;
55- border-radius : 6px ;
56- font-size : 0.8rem ;
57- font-weight : 700 ;
58- border : 1px solid var (--color-border );
59- transition : var (--transition );
40+ .desktop-sidebar { display : none; }
41+
42+ /* Responsive Grid for Results */
43+ .dashboard-grid {
44+ display : grid;
45+ grid-template-columns : 1fr ;
46+ gap : 24px ;
47+ padding-bottom : 100px ; /* Space for mobile nav */
6048}
6149
62- .history-card {
50+ /* Glass Card Refinement */
51+ .dashboard-card {
52+ padding : 24px ;
6353 background : var (--color-surface );
64- padding : 20px ;
6554 border-radius : var (--radius-panel );
6655 border : 1px solid var (--color-border );
67- color : var (--color-text-secondary );
6856 transition : var (--transition );
69- }
57+ }
58+
59+ /* Input Area Mobile-First */
60+ .search-container {
61+ display : flex;
62+ flex-direction : column;
63+ gap : 12px ;
64+ width : 100% ;
65+ }
66+
67+ @media (min-width : 640px ) {
68+ .search-container {
69+ flex-direction : row;
70+ }
71+ }
72+
73+ /* Gauge Responsive */
74+ .gauge-container {
75+ width : 100% ;
76+ max-width : 200px ;
77+ margin : 0 auto;
78+ }
79+
80+ /* Desktop Styles */
81+ @media (min-width : 1024px ) {
82+ .app-layout {
83+ grid-template-columns : 260px 1fr ;
84+ grid-template-areas : "sidebar main" ;
85+ }
86+
87+ .mobile-nav { display : none; }
88+
89+ .desktop-sidebar {
90+ grid-area : sidebar;
91+ display : flex;
92+ flex-direction : column;
93+ padding : 32px 24px ;
94+ background : var (--color-surface );
95+ border-right : 1px solid var (--color-border );
96+ position : sticky;
97+ top : 0 ;
98+ height : 100vh ;
99+ }
100+
101+ .desktop-sidebar .nav-link {
102+ display : flex;
103+ align-items : center;
104+ gap : 12px ;
105+ padding : 12px 16px ;
106+ border-radius : 12px ;
107+ text-decoration : none;
108+ color : var (--color-text-secondary );
109+ margin-bottom : 8px ;
110+ font-weight : 600 ;
111+ transition : var (--transition );
112+ }
113+
114+ .desktop-sidebar .nav-link : hover {
115+ background : var (--color-primary-light );
116+ color : var (--color-primary );
117+ }
118+
119+ .desktop-sidebar .nav-link--active {
120+ background : var (--color-primary );
121+ color : white;
122+ }
123+
124+ .dashboard-grid {
125+ grid-template-columns : 320px 1fr ;
126+ padding-bottom : 32px ;
127+ }
128+ }
129+
130+ /* Skeleton Loading Animations */
131+ .skeleton-container {
132+ overflow : hidden;
133+ position : relative;
134+ }
135+
136+ .skeleton-line , .skeleton-circle {
137+ background : var (--color-border );
138+ position : relative;
139+ overflow : hidden;
140+ }
141+
142+ .skeleton-line {
143+ height : 12px ;
144+ border-radius : 6px ;
145+ }
146+
147+ .skeleton-circle {
148+ border-radius : 50% ;
149+ }
150+
151+ .skeleton-line ::after , .skeleton-circle ::after {
152+ content : "" ;
153+ position : absolute;
154+ top : 0 ;
155+ left : 0 ;
156+ width : 100% ;
157+ height : 100% ;
158+ background : linear-gradient (90deg , transparent, var (--color-surface-glass ), transparent);
159+ animation : skeleton-shimmer 1.5s infinite;
160+ }
161+
162+ @keyframes skeleton-shimmer {
163+ 0% { transform : translateX (-100% ); }
164+ 100% { transform : translateX (100% ); }
165+ }
166+
167+ @keyframes pulse-soft {
168+ 0% , 100% { opacity : 1 ; }
169+ 50% { opacity : 0.7 ; }
170+ }
171+
172+ # loading-msg {
173+ animation : pulse-soft 2s infinite ease-in-out;
174+ }
0 commit comments