nodebb-plugin-sso-biogrenci 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/static/style.less CHANGED
@@ -1,496 +1,667 @@
1
1
  // ============================================
2
- // bi'öğrenci Plugin Styles
2
+ // bi'öğrenci Plugin — Design System
3
3
  // ============================================
4
4
 
5
- @biogrenci-primary: #1a73e8;
6
- @biogrenci-primary-dark: #1557b0;
7
- @biogrenci-success: #2e7d32;
8
- @biogrenci-warning: #e65100;
9
- @biogrenci-bg: #f8f9fa;
10
- @biogrenci-border: #e8eaed;
11
- @biogrenci-text: #202124;
12
- @biogrenci-text-secondary: #5f6368;
13
- @biogrenci-radius: 12px;
14
- @biogrenci-radius-sm: 8px;
15
- @biogrenci-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
16
- @biogrenci-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.12);
5
+ @bio-blue: #2563eb;
6
+ @bio-blue-dark: #1d4ed8;
7
+ @bio-blue-light: #dbeafe;
8
+ @bio-green: #16a34a;
9
+ @bio-green-light: #dcfce7;
10
+ @bio-orange: #ea580c;
11
+ @bio-orange-light: #fff7ed;
12
+ @bio-purple: #7c3aed;
13
+ @bio-purple-light: #f5f3ff;
14
+ @bio-red: #dc2626;
15
+ @bio-gray-50: #f9fafb;
16
+ @bio-gray-100: #f3f4f6;
17
+ @bio-gray-200: #e5e7eb;
18
+ @bio-gray-300: #d1d5db;
19
+ @bio-gray-400: #9ca3af;
20
+ @bio-gray-500: #6b7280;
21
+ @bio-gray-600: #4b5563;
22
+ @bio-gray-700: #374151;
23
+ @bio-gray-800: #1f2937;
24
+ @bio-gray-900: #111827;
25
+ @bio-radius: 16px;
26
+ @bio-radius-md: 12px;
27
+ @bio-radius-sm: 8px;
28
+ @bio-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
29
+ @bio-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
30
+ @bio-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
31
+ @bio-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
32
+ @bio-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
17
33
 
18
34
  // ============================================
19
- // Hero Section
35
+ // Page
20
36
  // ============================================
21
- .biogrenci-hero {
22
- background: linear-gradient(135deg, @biogrenci-primary 0%, #4285f4 50%, #6ea8fe 100%);
23
- border-radius: @biogrenci-radius;
24
- padding: 48px 24px;
25
- margin-bottom: 32px;
37
+ .bio-page {
38
+ max-width: 1280px;
39
+ margin: 0 auto;
40
+ padding: 0 24px 48px;
41
+ }
42
+
43
+ // ============================================
44
+ // Hero
45
+ // ============================================
46
+ .bio-hero {
47
+ position: relative;
48
+ padding: 56px 32px 48px;
49
+ margin: 0 -24px 32px;
26
50
  text-align: center;
27
51
  color: #fff;
28
- position: relative;
29
52
  overflow: hidden;
30
53
 
31
- &::before {
32
- content: '';
54
+ .bio-hero-bg {
33
55
  position: absolute;
34
- top: -50%;
35
- right: -20%;
36
- width: 300px;
37
- height: 300px;
38
- background: rgba(255, 255, 255, 0.06);
39
- border-radius: 50%;
40
- }
56
+ inset: 0;
57
+ background: linear-gradient(135deg, #1e40af 0%, @bio-blue 40%, #3b82f6 70%, #60a5fa 100%);
58
+ z-index: 0;
59
+
60
+ &::before, &::after {
61
+ content: '';
62
+ position: absolute;
63
+ border-radius: 50%;
64
+ background: rgba(255, 255, 255, 0.06);
65
+ }
41
66
 
42
- &::after {
43
- content: '';
44
- position: absolute;
45
- bottom: -30%;
46
- left: -10%;
47
- width: 200px;
48
- height: 200px;
49
- background: rgba(255, 255, 255, 0.04);
50
- border-radius: 50%;
67
+ &::before {
68
+ width: 400px;
69
+ height: 400px;
70
+ top: -200px;
71
+ right: -80px;
72
+ }
73
+
74
+ &::after {
75
+ width: 250px;
76
+ height: 250px;
77
+ bottom: -120px;
78
+ left: -60px;
79
+ }
51
80
  }
52
81
 
53
- .biogrenci-hero-content {
82
+ .bio-hero-content {
54
83
  position: relative;
55
84
  z-index: 1;
56
85
  }
57
86
 
58
- .biogrenci-hero-icon {
59
- width: 72px;
60
- height: 72px;
61
- background: rgba(255, 255, 255, 0.2);
62
- border-radius: 50%;
63
- display: flex;
64
- align-items: center;
65
- justify-content: center;
66
- margin: 0 auto 16px;
67
- backdrop-filter: blur(8px);
68
-
69
- i {
70
- font-size: 32px;
71
- color: #fff;
72
- }
87
+ .bio-hero-badge {
88
+ display: inline-block;
89
+ background: rgba(255, 255, 255, 0.18);
90
+ backdrop-filter: blur(12px);
91
+ padding: 6px 18px;
92
+ border-radius: 20px;
93
+ font-size: 13px;
94
+ font-weight: 600;
95
+ letter-spacing: 0.5px;
96
+ margin-bottom: 16px;
97
+ border: 1px solid rgba(255, 255, 255, 0.2);
73
98
  }
74
99
 
75
- h2 {
76
- margin: 0 0 8px;
77
- font-size: 28px;
78
- font-weight: 700;
100
+ h1 {
101
+ margin: 0 0 10px;
102
+ font-size: 36px;
103
+ font-weight: 800;
79
104
  letter-spacing: -0.5px;
80
105
  }
81
106
 
82
- .biogrenci-subtitle {
83
- margin: 0;
84
- opacity: 0.9;
85
- font-size: 15px;
107
+ p {
108
+ margin: 0 0 28px;
109
+ font-size: 16px;
110
+ opacity: 0.85;
111
+ font-weight: 400;
86
112
  }
87
- }
88
113
 
89
- // ============================================
90
- // Page Container
91
- // ============================================
92
- .biogrenci-page {
93
- max-width: 1200px;
94
- margin: 0 auto;
95
- padding: 20px;
114
+ .bio-hero-stats {
115
+ display: inline-flex;
116
+ align-items: center;
117
+ gap: 20px;
118
+ background: rgba(255, 255, 255, 0.12);
119
+ backdrop-filter: blur(12px);
120
+ border-radius: @bio-radius-md;
121
+ padding: 14px 28px;
122
+ border: 1px solid rgba(255, 255, 255, 0.15);
123
+ }
124
+
125
+ .bio-stat {
126
+ font-size: 14px;
127
+ font-weight: 500;
128
+ span {
129
+ font-size: 22px;
130
+ font-weight: 800;
131
+ display: block;
132
+ line-height: 1.1;
133
+ }
134
+ }
135
+
136
+ .bio-stat-divider {
137
+ width: 1px;
138
+ height: 36px;
139
+ background: rgba(255, 255, 255, 0.25);
140
+ }
96
141
  }
97
142
 
98
143
  // ============================================
99
- // Toolbar (Search + Filters + Sort)
144
+ // Controls (Search + Filter + Sort)
100
145
  // ============================================
101
- .biogrenci-toolbar {
146
+ .bio-controls {
102
147
  display: flex;
103
- gap: 12px;
104
148
  align-items: center;
149
+ gap: 12px;
105
150
  margin-bottom: 28px;
106
151
  flex-wrap: wrap;
107
- background: #fff;
108
- padding: 16px;
109
- border-radius: @biogrenci-radius;
110
- box-shadow: @biogrenci-shadow;
111
- border: 1px solid @biogrenci-border;
112
152
  }
113
153
 
114
- .biogrenci-search {
154
+ .bio-search-wrap {
115
155
  flex: 1;
116
- min-width: 200px;
156
+ min-width: 220px;
117
157
  position: relative;
118
158
 
119
- i {
159
+ > i {
120
160
  position: absolute;
121
- left: 12px;
161
+ left: 14px;
122
162
  top: 50%;
123
163
  transform: translateY(-50%);
124
- color: @biogrenci-text-secondary;
164
+ color: @bio-gray-400;
125
165
  font-size: 14px;
166
+ pointer-events: none;
126
167
  }
127
168
 
128
169
  input {
129
- padding-left: 36px;
130
- border-radius: @biogrenci-radius-sm;
131
- border: 1px solid @biogrenci-border;
132
- height: 40px;
170
+ width: 100%;
171
+ height: 44px;
172
+ padding: 0 60px 0 40px;
173
+ border: 2px solid @bio-gray-200;
174
+ border-radius: @bio-radius-md;
175
+ font-size: 14px;
176
+ background: #fff;
177
+ color: @bio-gray-800;
133
178
  transition: border-color 0.2s, box-shadow 0.2s;
179
+ outline: none;
180
+
181
+ &::placeholder {
182
+ color: @bio-gray-400;
183
+ }
134
184
 
135
185
  &:focus {
136
- border-color: @biogrenci-primary;
137
- box-shadow: 0 0 0 3px rgba(26, 115, 232, 0.15);
186
+ border-color: @bio-blue;
187
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
138
188
  }
139
189
  }
190
+
191
+ .bio-search-hint {
192
+ position: absolute;
193
+ right: 12px;
194
+ top: 50%;
195
+ transform: translateY(-50%);
196
+ background: @bio-gray-100;
197
+ color: @bio-gray-400;
198
+ padding: 2px 8px;
199
+ border-radius: 4px;
200
+ font-size: 11px;
201
+ font-family: inherit;
202
+ border: 1px solid @bio-gray-200;
203
+ pointer-events: none;
204
+ }
140
205
  }
141
206
 
142
- .biogrenci-filter-buttons {
207
+ .bio-filters {
143
208
  display: flex;
144
209
  gap: 6px;
210
+ flex-wrap: wrap;
145
211
  }
146
212
 
147
- .biogrenci-filter {
148
- border-radius: 20px !important;
149
- padding: 7px 16px;
213
+ .bio-chip {
214
+ display: inline-flex;
215
+ align-items: center;
216
+ gap: 6px;
217
+ padding: 8px 16px;
218
+ border-radius: 24px;
219
+ border: 1.5px solid @bio-gray-200;
220
+ background: #fff;
221
+ color: @bio-gray-600;
150
222
  font-size: 13px;
151
223
  font-weight: 500;
152
- border: 1px solid @biogrenci-border;
153
- background: #fff;
154
- color: @biogrenci-text-secondary;
155
224
  cursor: pointer;
156
225
  transition: all 0.2s ease;
157
226
  white-space: nowrap;
158
227
 
159
- i {
160
- margin-right: 4px;
161
- font-size: 12px;
162
- }
228
+ i { font-size: 13px; }
163
229
 
164
230
  &:hover {
165
- background: @biogrenci-bg;
166
- border-color: #dadce0;
167
- color: @biogrenci-text;
231
+ background: @bio-gray-50;
232
+ border-color: @bio-gray-300;
233
+ color: @bio-gray-800;
168
234
  }
169
235
 
170
236
  &.active {
171
- background: @biogrenci-primary;
237
+ background: @bio-blue;
172
238
  color: #fff;
173
- border-color: @biogrenci-primary;
174
- box-shadow: 0 2px 6px rgba(26, 115, 232, 0.3);
239
+ border-color: @bio-blue;
240
+ box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3);
241
+
242
+ &:hover {
243
+ background: @bio-blue-dark;
244
+ }
175
245
  }
176
246
  }
177
247
 
178
- #biogrenci-sort {
179
- width: auto;
180
- min-width: 140px;
181
- border-radius: @biogrenci-radius-sm;
182
- border: 1px solid @biogrenci-border;
183
- height: 40px;
184
- color: @biogrenci-text-secondary;
185
- cursor: pointer;
248
+ .bio-sort-wrap {
249
+ position: relative;
186
250
 
187
- &:focus {
188
- border-color: @biogrenci-primary;
189
- box-shadow: 0 0 0 3px rgba(26, 115, 232, 0.15);
251
+ > i {
252
+ position: absolute;
253
+ left: 12px;
254
+ top: 50%;
255
+ transform: translateY(-50%);
256
+ color: @bio-gray-400;
257
+ font-size: 13px;
258
+ pointer-events: none;
259
+ }
260
+
261
+ select {
262
+ height: 44px;
263
+ padding: 0 16px 0 34px;
264
+ border: 2px solid @bio-gray-200;
265
+ border-radius: @bio-radius-md;
266
+ background: #fff;
267
+ color: @bio-gray-600;
268
+ font-size: 13px;
269
+ font-weight: 500;
270
+ cursor: pointer;
271
+ outline: none;
272
+ appearance: auto;
273
+ min-width: 140px;
274
+ transition: border-color 0.2s;
275
+
276
+ &:focus {
277
+ border-color: @bio-blue;
278
+ }
190
279
  }
191
280
  }
192
281
 
193
282
  // ============================================
194
283
  // Card Grid
195
284
  // ============================================
196
- .biogrenci-grid {
285
+ .bio-grid {
197
286
  display: grid;
198
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
199
- gap: 20px;
287
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
288
+ gap: 24px;
200
289
  }
201
290
 
202
- .biogrenci-card {
203
- border: 1px solid @biogrenci-border;
204
- border-radius: @biogrenci-radius;
205
- overflow: hidden;
291
+ .bio-card {
206
292
  background: #fff;
207
- transition: box-shadow 0.25s ease, transform 0.25s ease;
293
+ border-radius: @bio-radius;
294
+ overflow: hidden;
295
+ border: 1px solid @bio-gray-200;
296
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
208
297
  display: flex;
209
298
  flex-direction: column;
210
299
 
211
300
  &:hover {
212
- box-shadow: @biogrenci-shadow-hover;
213
- transform: translateY(-4px);
301
+ transform: translateY(-6px);
302
+ box-shadow: @bio-shadow-xl;
303
+
304
+ .bio-card-visual img {
305
+ transform: scale(1.06);
306
+ }
214
307
  }
215
308
 
216
- .biogrenci-card-img {
217
- height: 170px;
218
- overflow: hidden;
219
- background: @biogrenci-bg;
220
- display: flex;
221
- align-items: center;
222
- justify-content: center;
309
+ &.bio-card-featured {
310
+ border-color: @bio-blue;
311
+ box-shadow: 0 0 0 1px @bio-blue, @bio-shadow;
312
+ }
313
+ }
223
314
 
224
- img {
225
- width: 100%;
226
- height: 100%;
227
- object-fit: cover;
228
- transition: transform 0.3s ease;
229
- }
315
+ .bio-card-visual {
316
+ position: relative;
317
+ height: 180px;
318
+ overflow: hidden;
319
+ background: @bio-gray-50;
230
320
 
231
- &:hover img {
232
- transform: scale(1.05);
233
- }
321
+ img {
322
+ width: 100%;
323
+ height: 100%;
324
+ object-fit: cover;
325
+ transition: transform 0.4s ease;
234
326
  }
235
327
 
236
- .biogrenci-card-img-placeholder {
237
- background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%);
328
+ .bio-card-placeholder {
329
+ width: 100%;
330
+ height: 100%;
331
+ display: flex;
332
+ align-items: center;
333
+ justify-content: center;
334
+ background: linear-gradient(135deg, @bio-blue-light, #eff6ff);
238
335
 
239
336
  i {
240
- color: @biogrenci-primary;
241
- opacity: 0.3;
337
+ font-size: 40px;
338
+ color: @bio-blue;
339
+ opacity: 0.25;
242
340
  }
243
341
  }
342
+ }
244
343
 
245
- .biogrenci-card-body {
246
- padding: 20px;
247
- display: flex;
248
- flex-direction: column;
249
- flex: 1;
250
- }
344
+ .bio-card-overlay {
345
+ position: absolute;
346
+ top: 12px;
347
+ left: 12px;
348
+ right: 12px;
349
+ display: flex;
350
+ justify-content: space-between;
351
+ align-items: flex-start;
352
+ z-index: 2;
353
+ }
251
354
 
252
- .biogrenci-card-top {
253
- display: flex;
254
- align-items: center;
255
- gap: 8px;
256
- margin-bottom: 10px;
355
+ .bio-type-badge {
356
+ display: inline-flex;
357
+ align-items: center;
358
+ gap: 5px;
359
+ padding: 5px 12px;
360
+ border-radius: 20px;
361
+ font-size: 11px;
362
+ font-weight: 700;
363
+ text-transform: uppercase;
364
+ letter-spacing: 0.5px;
365
+ backdrop-filter: blur(8px);
366
+
367
+ i { font-size: 11px; }
368
+
369
+ &.bio-type-kupon {
370
+ background: rgba(22, 163, 74, 0.15);
371
+ color: @bio-green;
372
+ border: 1px solid rgba(22, 163, 74, 0.2);
373
+ background: @bio-green-light;
374
+ }
375
+ &.bio-type-qr {
376
+ background: rgba(37, 99, 235, 0.15);
377
+ color: @bio-blue;
378
+ border: 1px solid rgba(37, 99, 235, 0.2);
379
+ background: @bio-blue-light;
380
+ }
381
+ &.bio-type-affiliate {
382
+ background: rgba(234, 88, 12, 0.15);
383
+ color: @bio-orange;
384
+ border: 1px solid rgba(234, 88, 12, 0.2);
385
+ background: @bio-orange-light;
257
386
  }
387
+ }
258
388
 
259
- .biogrenci-card-title {
260
- font-size: 16px;
261
- font-weight: 600;
262
- margin: 0 0 8px;
263
- line-height: 1.4;
264
- color: @biogrenci-text;
265
- }
389
+ .bio-featured-badge {
390
+ width: 32px;
391
+ height: 32px;
392
+ border-radius: 50%;
393
+ background: rgba(255, 255, 255, 0.95);
394
+ display: flex;
395
+ align-items: center;
396
+ justify-content: center;
397
+ box-shadow: @bio-shadow;
266
398
 
267
- .biogrenci-card-desc {
268
- font-size: 13px;
269
- color: @biogrenci-text-secondary;
270
- margin: 0 0 16px;
271
- display: -webkit-box;
272
- -webkit-line-clamp: 2;
273
- -webkit-box-orient: vertical;
274
- overflow: hidden;
275
- line-height: 1.5;
276
- flex: 1;
399
+ i {
400
+ color: #f59e0b;
401
+ font-size: 14px;
277
402
  }
403
+ }
278
404
 
279
- .biogrenci-claim-btn {
280
- width: 100%;
281
- border-radius: @biogrenci-radius-sm;
282
- font-weight: 600;
283
- font-size: 14px;
284
- background: @biogrenci-primary;
285
- color: #fff;
286
- border: none;
287
- padding: 11px 16px;
288
- transition: background 0.2s, box-shadow 0.2s;
289
- margin-top: auto;
405
+ .bio-card-countdown {
406
+ position: absolute;
407
+ bottom: 0;
408
+ left: 0;
409
+ right: 0;
410
+ padding: 8px 16px;
411
+ background: linear-gradient(transparent, rgba(0,0,0,0.6));
412
+ color: #fff;
413
+ font-size: 12px;
414
+ font-weight: 500;
290
415
 
291
- i {
292
- margin-right: 6px;
293
- }
416
+ i { margin-right: 4px; }
294
417
 
295
- &:hover {
296
- background: @biogrenci-primary-dark;
297
- box-shadow: 0 2px 8px rgba(26, 115, 232, 0.35);
298
- color: #fff;
299
- }
418
+ strong {
419
+ color: #fbbf24;
420
+ }
421
+ }
300
422
 
301
- &:active {
302
- transform: scale(0.98);
303
- }
423
+ .bio-card-content {
424
+ padding: 20px;
425
+ display: flex;
426
+ flex-direction: column;
427
+ flex: 1;
428
+ }
304
429
 
305
- &.claimed {
306
- background: @biogrenci-success;
307
- cursor: default;
308
- }
309
- }
430
+ .bio-card-brand {
431
+ font-size: 12px;
432
+ font-weight: 600;
433
+ color: @bio-blue;
434
+ text-transform: uppercase;
435
+ letter-spacing: 0.5px;
436
+ margin-bottom: 6px;
310
437
  }
311
438
 
312
- // ============================================
313
- // Badges
314
- // ============================================
315
- .biogrenci-badge {
316
- font-size: 11px;
317
- padding: 4px 10px;
318
- border-radius: 12px;
439
+ .bio-card-title {
440
+ font-size: 16px;
441
+ font-weight: 700;
442
+ color: @bio-gray-900;
443
+ margin: 0 0 8px;
444
+ line-height: 1.4;
445
+ display: -webkit-box;
446
+ -webkit-line-clamp: 2;
447
+ -webkit-box-orient: vertical;
448
+ overflow: hidden;
449
+ }
450
+
451
+ .bio-card-desc {
452
+ font-size: 13px;
453
+ color: @bio-gray-500;
454
+ margin: 0 0 16px;
455
+ line-height: 1.6;
456
+ display: -webkit-box;
457
+ -webkit-line-clamp: 2;
458
+ -webkit-box-orient: vertical;
459
+ overflow: hidden;
460
+ flex: 1;
461
+ }
462
+
463
+ .bio-card-cta {
464
+ width: 100%;
465
+ padding: 12px 20px;
466
+ border: none;
467
+ border-radius: @bio-radius-sm;
468
+ background: @bio-blue;
469
+ color: #fff;
470
+ font-size: 14px;
319
471
  font-weight: 600;
320
- letter-spacing: 0.2px;
321
- white-space: nowrap;
472
+ cursor: pointer;
473
+ transition: all 0.2s ease;
474
+ margin-top: auto;
322
475
 
323
- &.badge-kupon {
324
- background: #e8f5e9;
325
- color: @biogrenci-success;
476
+ &:hover {
477
+ background: @bio-blue-dark;
478
+ box-shadow: 0 4px 12px rgba(37, 99, 235, 0.35);
479
+ transform: translateY(-1px);
326
480
  }
327
481
 
328
- &.badge-qr {
329
- background: #e3f2fd;
330
- color: #1565c0;
482
+ &:active {
483
+ transform: translateY(0);
331
484
  }
332
485
 
333
- &.badge-affiliate {
334
- background: #fff3e0;
335
- color: @biogrenci-warning;
486
+ &:disabled {
487
+ opacity: 0.7;
488
+ cursor: wait;
336
489
  }
337
- }
338
490
 
339
- .biogrenci-brand {
340
- font-size: 12px;
341
- color: #999;
342
- font-weight: 500;
491
+ &.bio-cta-done {
492
+ background: @bio-green;
493
+ cursor: default;
494
+ &:hover { transform: none; box-shadow: none; }
495
+ }
343
496
  }
344
497
 
345
498
  // ============================================
346
- // Coupon / QR Results
499
+ // Claim Results
347
500
  // ============================================
348
- .biogrenci-coupon-result {
349
- display: flex;
350
- align-items: center;
351
- gap: 8px;
352
- flex-wrap: wrap;
501
+ .bio-claim-result {
502
+ text-align: center;
353
503
 
354
- .biogrenci-coupon-code {
355
- background: #f0f7ff;
356
- border: 2px dashed @biogrenci-primary;
357
- padding: 8px 16px;
358
- border-radius: @biogrenci-radius-sm;
359
- font-weight: 700;
360
- font-size: 15px;
361
- letter-spacing: 1.5px;
362
- font-family: 'Courier New', monospace;
363
- color: @biogrenci-primary;
364
- }
504
+ .bio-coupon-box {
505
+ display: inline-flex;
506
+ align-items: center;
507
+ gap: 0;
508
+ background: @bio-blue-light;
509
+ border: 2px dashed @bio-blue;
510
+ border-radius: @bio-radius-sm;
511
+ overflow: hidden;
512
+ margin-bottom: 10px;
365
513
 
366
- .biogrenci-copy-btn {
367
- background: @biogrenci-bg;
368
- border: 1px solid @biogrenci-border;
369
- border-radius: @biogrenci-radius-sm;
370
- padding: 8px 12px;
371
- color: @biogrenci-text-secondary;
372
- transition: all 0.2s;
514
+ code {
515
+ padding: 10px 16px;
516
+ font-size: 16px;
517
+ font-weight: 800;
518
+ letter-spacing: 2px;
519
+ color: @bio-blue-dark;
520
+ font-family: 'Courier New', monospace;
521
+ }
373
522
 
374
- &:hover {
375
- background: @biogrenci-primary;
523
+ .bio-copy-btn {
524
+ padding: 10px 14px;
525
+ background: @bio-blue;
376
526
  color: #fff;
377
- border-color: @biogrenci-primary;
527
+ border: none;
528
+ cursor: pointer;
529
+ transition: background 0.2s;
530
+ font-size: 14px;
531
+
532
+ &:hover { background: @bio-blue-dark; }
378
533
  }
379
534
  }
380
535
 
381
- .biogrenci-go-btn {
382
- color: @biogrenci-primary;
383
- font-weight: 600;
536
+ .bio-go-link {
537
+ display: block;
538
+ color: @bio-blue;
384
539
  font-size: 13px;
540
+ font-weight: 600;
385
541
  text-decoration: none;
542
+ margin-top: 4px;
386
543
 
387
- &:hover {
388
- text-decoration: underline;
389
- }
544
+ i { margin-left: 4px; transition: transform 0.2s; }
545
+ &:hover i { transform: translateX(3px); }
390
546
  }
391
547
  }
392
548
 
393
- .biogrenci-qr-result {
394
- text-align: center;
549
+ .bio-qr-box {
395
550
  padding: 16px;
396
- background: #fff;
397
- border-radius: @biogrenci-radius-sm;
398
-
399
- svg, img {
400
- max-width: 200px;
401
- height: auto;
402
- }
551
+ svg, img { max-width: 180px; height: auto; }
403
552
  }
404
553
 
405
554
  // ============================================
406
555
  // Loading & Empty States
407
556
  // ============================================
408
- .biogrenci-loading,
409
- .biogrenci-empty {
557
+ .bio-loading-state,
558
+ .bio-empty-state {
410
559
  grid-column: 1 / -1;
411
560
  text-align: center;
412
- padding: 80px 20px;
413
- color: @biogrenci-text-secondary;
561
+ padding: 80px 24px;
562
+ }
414
563
 
415
- i {
416
- display: block;
417
- margin-bottom: 16px;
418
- opacity: 0.4;
564
+ .bio-loading-state p {
565
+ color: @bio-gray-400;
566
+ font-size: 14px;
567
+ margin: 0;
568
+ }
569
+
570
+ .bio-loader {
571
+ width: 36px;
572
+ height: 36px;
573
+ border: 3px solid @bio-gray-200;
574
+ border-top-color: @bio-blue;
575
+ border-radius: 50%;
576
+ margin: 0 auto 16px;
577
+ animation: bio-spin 0.7s linear infinite;
578
+ }
579
+
580
+ @keyframes bio-spin {
581
+ to { transform: rotate(360deg); }
582
+ }
583
+
584
+ .bio-empty-state {
585
+ .bio-empty-icon {
586
+ width: 72px;
587
+ height: 72px;
588
+ background: @bio-gray-100;
589
+ border-radius: 50%;
590
+ display: flex;
591
+ align-items: center;
592
+ justify-content: center;
593
+ margin: 0 auto 20px;
594
+
595
+ i {
596
+ font-size: 28px;
597
+ color: @bio-gray-400;
598
+ }
419
599
  }
420
600
 
421
- h4 {
601
+ h3 {
422
602
  margin: 0 0 8px;
423
- font-weight: 600;
424
- color: @biogrenci-text;
603
+ font-size: 18px;
604
+ font-weight: 700;
605
+ color: @bio-gray-800;
425
606
  }
426
607
 
427
608
  p {
428
609
  margin: 0;
429
610
  font-size: 14px;
611
+ color: @bio-gray-500;
430
612
  }
431
- }
432
613
 
433
- .biogrenci-error i {
434
- color: #d93025;
435
- }
436
-
437
- .biogrenci-spinner {
438
- width: 40px;
439
- height: 40px;
440
- border: 3px solid @biogrenci-border;
441
- border-top-color: @biogrenci-primary;
442
- border-radius: 50%;
443
- margin: 0 auto 16px;
444
- animation: biogrenci-spin 0.8s linear infinite;
445
- }
446
-
447
- @keyframes biogrenci-spin {
448
- to { transform: rotate(360deg); }
614
+ &.bio-error-state .bio-empty-icon {
615
+ background: #fef2f2;
616
+ i { color: @bio-red; }
617
+ }
449
618
  }
450
619
 
451
620
  // ============================================
452
621
  // Pagination
453
622
  // ============================================
454
- .biogrenci-pagination {
623
+ .bio-pager {
455
624
  display: flex;
456
625
  justify-content: center;
457
626
  align-items: center;
458
- gap: 16px;
459
- margin-top: 32px;
460
- padding: 20px 0;
461
-
462
- #biogrenci-page-info {
463
- font-weight: 600;
464
- color: @biogrenci-text-secondary;
465
- font-size: 14px;
466
- }
627
+ gap: 12px;
628
+ margin-top: 40px;
467
629
  }
468
630
 
469
- .biogrenci-page-btn {
470
- border-radius: @biogrenci-radius-sm !important;
471
- padding: 8px 20px;
472
- font-weight: 500;
473
- border: 1px solid @biogrenci-border;
631
+ .bio-pager-btn {
632
+ width: 44px;
633
+ height: 44px;
634
+ border-radius: 50%;
635
+ border: 2px solid @bio-gray-200;
474
636
  background: #fff;
475
- color: @biogrenci-text;
637
+ color: @bio-gray-600;
638
+ display: flex;
639
+ align-items: center;
640
+ justify-content: center;
641
+ cursor: pointer;
476
642
  transition: all 0.2s;
477
-
478
- i {
479
- font-size: 12px;
480
- }
643
+ font-size: 14px;
481
644
 
482
645
  &:hover:not(:disabled) {
483
- background: @biogrenci-primary;
484
- color: #fff;
485
- border-color: @biogrenci-primary;
646
+ border-color: @bio-blue;
647
+ color: @bio-blue;
648
+ box-shadow: @bio-shadow;
486
649
  }
487
650
 
488
651
  &:disabled {
489
- opacity: 0.4;
652
+ opacity: 0.3;
490
653
  cursor: not-allowed;
491
654
  }
492
655
  }
493
656
 
657
+ .bio-pager-info {
658
+ font-size: 14px;
659
+ font-weight: 600;
660
+ color: @bio-gray-500;
661
+ min-width: 60px;
662
+ text-align: center;
663
+ }
664
+
494
665
  // ============================================
495
666
  // Profile Section
496
667
  // ============================================
@@ -501,16 +672,16 @@
501
672
 
502
673
  .biogrenci-profile-card {
503
674
  background: #fff;
504
- border: 1px solid @biogrenci-border;
505
- border-radius: @biogrenci-radius;
675
+ border: 1px solid @bio-gray-200;
676
+ border-radius: @bio-radius;
506
677
  padding: 40px 30px;
507
678
  text-align: center;
508
- box-shadow: @biogrenci-shadow;
679
+ box-shadow: @bio-shadow;
509
680
 
510
681
  .biogrenci-profile-icon {
511
682
  width: 72px;
512
683
  height: 72px;
513
- background: linear-gradient(135deg, #e8f0fe, #d2e3fc);
684
+ background: linear-gradient(135deg, @bio-blue-light, #bfdbfe);
514
685
  border-radius: 50%;
515
686
  display: flex;
516
687
  align-items: center;
@@ -519,14 +690,14 @@
519
690
 
520
691
  i {
521
692
  font-size: 30px;
522
- color: @biogrenci-primary;
693
+ color: @bio-blue;
523
694
  }
524
695
  }
525
696
 
526
697
  h3 {
527
698
  margin: 0 0 24px;
528
- font-weight: 600;
529
- color: @biogrenci-text;
699
+ font-weight: 700;
700
+ color: @bio-gray-900;
530
701
  }
531
702
  }
532
703
 
@@ -535,8 +706,8 @@
535
706
  display: inline-flex;
536
707
  align-items: center;
537
708
  gap: 6px;
538
- background: #e8f5e9;
539
- color: @biogrenci-success;
709
+ background: @bio-green-light;
710
+ color: @bio-green;
540
711
  padding: 10px 24px;
541
712
  border-radius: 24px;
542
713
  font-weight: 600;
@@ -548,8 +719,8 @@
548
719
  display: inline-flex;
549
720
  align-items: center;
550
721
  gap: 4px;
551
- background: #fff3e0;
552
- color: @biogrenci-warning;
722
+ background: @bio-orange-light;
723
+ color: @bio-orange;
553
724
  padding: 6px 16px;
554
725
  border-radius: 20px;
555
726
  font-size: 13px;
@@ -558,32 +729,29 @@
558
729
  }
559
730
 
560
731
  .biogrenci-education {
561
- color: @biogrenci-text-secondary;
732
+ color: @bio-gray-500;
562
733
  font-size: 14px;
563
734
  margin-bottom: 8px;
564
-
565
- i {
566
- margin-right: 6px;
567
- color: #999;
568
- }
735
+ i { margin-right: 6px; color: @bio-gray-400; }
569
736
  }
570
737
 
571
738
  hr {
572
739
  margin: 24px 0;
573
- border-color: @biogrenci-border;
740
+ border: none;
741
+ border-top: 1px solid @bio-gray-200;
574
742
  }
575
743
  }
576
744
 
577
745
  .biogrenci-not-linked {
578
746
  p {
579
747
  margin: 0 0 12px;
580
- color: @biogrenci-text-secondary;
748
+ color: @bio-gray-500;
581
749
  }
582
750
 
583
751
  .btn-primary {
584
- background: @biogrenci-primary;
752
+ background: @bio-blue;
585
753
  border: none;
586
- border-radius: @biogrenci-radius-sm;
754
+ border-radius: @bio-radius-sm;
587
755
  padding: 12px 28px;
588
756
  font-weight: 600;
589
757
  font-size: 15px;
@@ -592,8 +760,8 @@
592
760
  i { margin-right: 8px; }
593
761
 
594
762
  &:hover {
595
- background: @biogrenci-primary-dark;
596
- box-shadow: 0 2px 8px rgba(26, 115, 232, 0.35);
763
+ background: @bio-blue-dark;
764
+ box-shadow: 0 4px 12px rgba(37, 99, 235, 0.35);
597
765
  }
598
766
  }
599
767
  }
@@ -602,34 +770,46 @@
602
770
  // Responsive
603
771
  // ============================================
604
772
  @media (max-width: 768px) {
605
- .biogrenci-hero {
606
- padding: 32px 16px;
773
+ .bio-hero {
774
+ padding: 40px 20px 36px;
775
+ margin: 0 -24px 24px;
607
776
 
608
- h2 {
609
- font-size: 22px;
777
+ h1 { font-size: 26px; }
778
+ p { font-size: 14px; }
779
+
780
+ .bio-hero-stats {
781
+ padding: 10px 20px;
782
+ gap: 16px;
610
783
  }
784
+ .bio-stat span { font-size: 18px; }
611
785
  }
612
786
 
613
- .biogrenci-toolbar {
787
+ .bio-controls {
614
788
  flex-direction: column;
615
- gap: 10px;
789
+ align-items: stretch;
790
+ }
616
791
 
617
- .biogrenci-search {
618
- width: 100%;
619
- }
792
+ .bio-search-wrap {
793
+ min-width: 100%;
794
+ }
620
795
 
621
- .biogrenci-filter-buttons {
622
- flex-wrap: wrap;
623
- width: 100%;
624
- }
796
+ .bio-filters {
797
+ overflow-x: auto;
798
+ flex-wrap: nowrap;
799
+ -webkit-overflow-scrolling: touch;
800
+ padding-bottom: 4px;
625
801
 
626
- #biogrenci-sort {
627
- width: 100%;
628
- }
802
+ &::-webkit-scrollbar { display: none; }
803
+ }
804
+
805
+ .bio-sort-wrap {
806
+ width: 100%;
807
+ select { width: 100%; }
629
808
  }
630
809
 
631
- .biogrenci-grid {
810
+ .bio-grid {
632
811
  grid-template-columns: 1fr;
812
+ gap: 16px;
633
813
  }
634
814
 
635
815
  .biogrenci-profile-card {
@@ -637,17 +817,8 @@
637
817
  }
638
818
  }
639
819
 
640
- @media (max-width: 480px) {
641
- .biogrenci-page {
642
- padding: 12px;
643
- }
644
-
645
- .biogrenci-hero {
646
- padding: 24px 12px;
647
- border-radius: @biogrenci-radius-sm;
648
- }
649
-
650
- .biogrenci-filter i {
651
- display: none;
820
+ @media (min-width: 769px) and (max-width: 1024px) {
821
+ .bio-grid {
822
+ grid-template-columns: repeat(2, 1fr);
652
823
  }
653
824
  }