File size: 4,657 Bytes
17b4ecf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@tailwind base;
@tailwind components;
@tailwind utilities;

:root {
  --zap-dark: #0f0f1a;
  --zap-darker: #080810;
  --zap-card: #1a1a2e;
  --zap-purple: #2d1b4e;
  --zap-border: #2a2a4a;
  --zap-border-t: #3a3a5a;
  --zap-light: #f0f0f5;
  --zap-muted: #8888a0;
  --zap-yellow: #ffd700;
  --zap-orange: #ff9500;
  --zap-red: #ff4757;
  --zap-green: #2ed573;
  --zap-blue: #3742fa;
}

@layer base {
  html { @apply scroll-smooth; }
  body { @apply bg-zap-dark text-zap-light font-inter antialiased; }
  * { @apply border-zap-border; }
  input, textarea, select { @apply bg-zap-bg border-zap-border-t text-zap-light placeholder-zap-muted focus:ring-2 focus:ring-zap-yellow/50 focus:border-zap-yellow transition-all; }
  button:disabled { @apply opacity-50 cursor-not-allowed; }
}

@layer components {
  .page { @apply transition-opacity duration-200; }
  .view { @apply animate-fade-in; }
  .hidden { display: none !important; }
  
  .btn { @apply px-4 py-2.5 rounded-xl font-medium font-inter transition-all duration-150 ease-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-zap-dark disabled:opacity-50 disabled:cursor-not-allowed; }
  .btn-primary { @apply bg-zap-yellow text-zap-dark hover:bg-yellow-300 focus:ring-zap-yellow shadow-lg shadow-zap-yellow/20; }
  .btn-secondary { @apply bg-zap-purple text-zap-light hover:bg-purple-900/50 focus:ring-zap-purple border border-zap-border; }
  .btn-outline { @apply bg-transparent border border-zap-border-t hover:bg-zap-border focus:ring-zap-border; }
  .btn-ghost { @apply bg-transparent hover:bg-zap-border focus:ring-zap-border text-zap-muted hover:text-zap-light; }
  .btn-lg { @apply px-6 py-3 text-lg; }
  .btn-sm { @apply px-3 py-1.5 text-sm; }
  .btn-icon { @apply p-2; }

  .input-group { @apply flex flex-col gap-1.5; }
  .input-label { @apply text-sm font-medium text-zap-muted; }
  .input-field { @apply w-full px-4 py-3 rounded-xl border bg-zap-darker; }
  
  .badge { @apply px-3 py-1 rounded-full text-xs font-medium; }
  .badge-primary { @apply bg-zap-yellow/20 text-zap-yellow; }
  .badge-secondary { @apply bg-zap-purple/50 text-zap-light; }
  .badge-success { @apply bg-zap-green/20 text-zap-green; }
  .badge-danger { @apply bg-zap-red/20 text-zap-red; }

  .toggle { @apply w-5 h-5 rounded border-zap-border-t bg-zap-darker focus:ring-zap-yellow appearance-none cursor-pointer checked:bg-zap-yellow checked:border-zap-yellow; }
  
  .card { @apply bg-zap-card rounded-2xl border border-zap-border p-6 shadow-xl; }
  .card-hover { @apply transition-all duration-200 hover:border-zap-yellow/50 hover:shadow-zap-yellow/10 hover:-translate-y-1; }

  /* Animations */
  @keyframes fade-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
  .animate-fade-in { animation: fade-in 0.3s ease-out forwards; }
  @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 215, 0, 0.4); } 50% { box-shadow: 0 0 20px 5px rgba(255, 215, 0, 0.2); } }
  .animate-pulse-glow { animation: pulse-glow 2s infinite; }
  
  /* Question Types Colors */
  .q-type-quiz { --q-color: #3742fa; --q-bg: rgba(55, 66, 250, 0.1); }
  .q-type-true_false { --q-color: #2ed573; --q-bg: rgba(46, 213, 115, 0.1); }
  .q-type-type_answer { --q-color: #ffa502; --q-bg: rgba(255, 165, 2, 0.1); }
  .q-type-puzzle { --q-color: #e056fd; --q-bg: rgba(224, 86, 253, 0.1); }
  .q-type-slider { --q-color: #ff4757; --q-bg: rgba(255, 71, 87, 0.1); }

  /* Answer Buttons */
  .answer-btn { @apply w-full p-4 rounded-xl border-2 border-zap-border-t bg-zap-card text-left text-lg font-medium transition-all duration-150 flex items-center gap-3; }
  .answer-btn:hover { @apply border-zap-yellow/50 bg-zap-yellow/5; }
  .answer-btn.selected { @apply border-zap-yellow bg-zap-yellow/10; }
  .answer-btn.correct { @apply border-zap-green bg-zap-green/10; }
  .answer-btn.incorrect { @apply border-zap-red bg-zap-red/10; }
  
  /* Scrollbar */
  ::-webkit-scrollbar { width: 6px; height: 6px; }
  ::-webkit-scrollbar-track { background: var(--zap-darker); }
  ::-webkit-scrollbar-thumb { background: var(--zap-border); border-radius: 3px; }
  ::-webkit-scrollbar-thumb:hover { background: var(--zap-yellow); }

  /* Toast */
  .toast { @apply bg-zap-card border border-zap-border rounded-xl p-4 shadow-2xl flex items-center gap-3 min-w-[280px] max-w-md animate-slide-in; }
  @keyframes slide-in { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } }
  .toast-success { @apply border-l-4 border-zap-green; }
  .toast-error { @apply border-l-4 border-zap-red; }
  .toast-info { @apply border-l-4 border-zap-blue; }
}