File size: 4,314 Bytes
ae14296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40d16d9
 
 
 
 
 
 
 
ae14296
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
@import 'katex/dist/katex.min.css';

@tailwind base;
@tailwind components;
@tailwind utilities;

/* Source.AI clone — Modern dark (ChatGPT/Linear vibe) */

@layer base {
  :root {
    /* Light fallback (app defaults to dark) */
    --background: 0 0% 100%;
    --foreground: 240 10% 3.9%;
    --card: 0 0% 100%;
    --card-foreground: 240 10% 3.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 240 10% 3.9%;
    --primary: 240 5.9% 10%;
    --primary-foreground: 0 0% 98%;
    --secondary: 240 4.8% 95.9%;
    --secondary-foreground: 240 5.9% 10%;
    --muted: 240 4.8% 95.9%;
    --muted-foreground: 240 3.8% 46.1%;
    --accent: 240 4.8% 95.9%;
    --accent-foreground: 240 5.9% 10%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 5.9% 90%;
    --input: 240 5.9% 90%;
    --ring: 240 5.9% 10%;
    --radius: 0.625rem;

    --sidebar-background: 0 0% 98%;
    --sidebar-foreground: 240 5.3% 26.1%;
    --sidebar-primary: 240 5.9% 10%;
    --sidebar-primary-foreground: 0 0% 98%;
    --sidebar-accent: 240 4.8% 95.9%;
    --sidebar-accent-foreground: 240 5.9% 10%;
    --sidebar-border: 240 5.9% 90%;
    --sidebar-ring: 240 5.9% 10%;
  }

  .dark {
    /* Linear / ChatGPT inspired neutrals */
    --background: 0 0% 4%;            /* #0a0a0a */
    --foreground: 0 0% 98%;
    --card: 0 0% 9%;                  /* #171717 */
    --card-foreground: 0 0% 98%;
    --popover: 0 0% 7%;
    --popover-foreground: 0 0% 98%;

    --primary: 234 89% 74%;           /* indigo accent */
    --primary-foreground: 0 0% 100%;
    --primary-glow: 250 95% 76%;

    --secondary: 0 0% 12%;
    --secondary-foreground: 0 0% 98%;

    --muted: 0 0% 11%;
    --muted-foreground: 0 0% 63%;

    --accent: 0 0% 14%;
    --accent-foreground: 0 0% 98%;

    --destructive: 0 72% 51%;
    --destructive-foreground: 0 0% 98%;

    --success: 142 71% 45%;
    --warning: 38 92% 50%;

    --border: 0 0% 14%;
    --input: 0 0% 14%;
    --ring: 234 89% 74%;

    --sidebar-background: 0 0% 6%;
    --sidebar-foreground: 0 0% 80%;
    --sidebar-primary: 234 89% 74%;
    --sidebar-primary-foreground: 0 0% 100%;
    --sidebar-accent: 0 0% 11%;
    --sidebar-accent-foreground: 0 0% 98%;
    --sidebar-border: 0 0% 12%;
    --sidebar-ring: 234 89% 74%;

    --gradient-primary: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--primary-glow)));
    --shadow-glow: 0 0 40px -10px hsl(var(--primary) / 0.4);
  }
}

@layer base {
  * {
    @apply border-border;
  }
  html, body, #root {
    @apply h-full;
  }
  body {
    @apply bg-background text-foreground antialiased;
    font-feature-settings: "cv11", "ss01";
    font-family: ui-sans-serif, system-ui, -apple-system, "Inter", sans-serif;
  }
  /* Scrollbar */
  ::-webkit-scrollbar { width: 10px; height: 10px; }
  ::-webkit-scrollbar-track { background: transparent; }
  ::-webkit-scrollbar-thumb { background: hsl(var(--border)); border-radius: 8px; }
  ::-webkit-scrollbar-thumb:hover { background: hsl(var(--muted-foreground) / 0.4); }
}

@layer utilities {
  .prose-invert-tight h2 { @apply text-xl font-semibold mt-6 mb-3; }
  .prose-invert-tight h3 { @apply text-lg font-semibold mt-5 mb-2; }
  .prose-invert-tight p  { @apply leading-7 my-3 text-foreground/90; }
  .prose-invert-tight ul { @apply list-disc pl-6 my-3 space-y-1; }
  .prose-invert-tight ol { @apply list-decimal pl-6 my-3 space-y-1; }
  .prose-invert-tight code { @apply px-1.5 py-0.5 rounded bg-muted text-foreground/90 text-sm; }
  .prose-invert-tight pre { @apply bg-muted rounded-lg p-4 overflow-x-auto my-4; }
  .prose-invert-tight pre code { @apply bg-transparent p-0; }
  .prose-invert-tight table { @apply w-full my-4 border-collapse; }
  .prose-invert-tight th, .prose-invert-tight td { @apply border border-border px-3 py-2 text-left; }
  .prose-invert-tight th { @apply bg-muted font-semibold; }
  .prose-invert-tight strong { @apply text-foreground font-semibold; }
  .prose-invert-tight a { @apply text-primary underline underline-offset-2; }
  .prose-invert-tight blockquote { @apply border-l-2 border-primary/50 pl-4 italic text-muted-foreground my-4; }

  @keyframes scanline {
    from { transform: translateY(-100%); }
    to { transform: translateY(1000%); }
  }
  .animate-scanline {
    animation: scanline 4s linear infinite;
  }
}