File size: 5,705 Bytes
1f2014b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
@import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

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

/* RepoAgent — academic research aesthetic.

   Warm paper background, deep ink foreground, subtle scholarly accents.

   All colors HSL. */

@layer base {
  :root {
    --background: 40 30% 97%;
    --foreground: 220 25% 12%;

    --card: 40 35% 99%;
    --card-foreground: 220 25% 12%;

    --popover: 40 35% 99%;
    --popover-foreground: 220 25% 12%;

    /* Deep scholarly ink */
    --primary: 220 35% 15%;
    --primary-foreground: 40 30% 97%;

    /* Warm parchment */
    --secondary: 38 25% 92%;
    --secondary-foreground: 220 30% 18%;

    --muted: 38 20% 93%;
    --muted-foreground: 220 10% 42%;

    /* Burgundy academic accent */
    --accent: 355 55% 38%;
    --accent-foreground: 40 30% 97%;

    --success: 142 45% 35%;
    --success-foreground: 40 30% 97%;

    --warning: 35 85% 48%;
    --warning-foreground: 220 25% 12%;

    --destructive: 0 65% 45%;
    --destructive-foreground: 40 30% 97%;

    --border: 35 20% 85%;
    --input: 35 20% 88%;
    --ring: 355 55% 38%;

    --radius: 0.375rem;

    /* Gradients */
    --gradient-paper: linear-gradient(180deg, hsl(40 35% 98%) 0%, hsl(38 25% 94%) 100%);
    --gradient-ink: linear-gradient(135deg, hsl(220 35% 15%) 0%, hsl(220 30% 22%) 100%);
    --gradient-accent: linear-gradient(135deg, hsl(355 55% 38%) 0%, hsl(15 60% 45%) 100%);
    --gradient-glow: radial-gradient(ellipse at top, hsl(355 55% 38% / 0.08), transparent 60%);

    /* Shadows — soft, paper-like */
    --shadow-paper: 0 1px 2px hsl(220 25% 12% / 0.04), 0 4px 16px hsl(220 25% 12% / 0.04);
    --shadow-elevated: 0 2px 4px hsl(220 25% 12% / 0.06), 0 12px 32px hsl(220 25% 12% / 0.08);
    --shadow-deep: 0 4px 8px hsl(220 25% 12% / 0.08), 0 24px 48px hsl(220 25% 12% / 0.12);

    /* Transitions */
    --transition-smooth: cubic-bezier(0.32, 0.72, 0, 1);

    --sidebar-background: 40 30% 97%;
    --sidebar-foreground: 220 25% 12%;
    --sidebar-primary: 220 35% 15%;
    --sidebar-primary-foreground: 40 30% 97%;
    --sidebar-accent: 38 25% 92%;
    --sidebar-accent-foreground: 220 30% 18%;
    --sidebar-border: 35 20% 85%;
    --sidebar-ring: 355 55% 38%;
  }

  .dark {
    --background: 220 25% 8%;
    --foreground: 40 25% 92%;
    --card: 220 25% 10%;
    --card-foreground: 40 25% 92%;
    --popover: 220 25% 10%;
    --popover-foreground: 40 25% 92%;
    --primary: 40 25% 92%;
    --primary-foreground: 220 25% 8%;
    --secondary: 220 20% 16%;
    --secondary-foreground: 40 25% 92%;
    --muted: 220 20% 16%;
    --muted-foreground: 40 10% 65%;
    --accent: 355 60% 55%;
    --accent-foreground: 40 25% 92%;
    --destructive: 0 65% 50%;
    --destructive-foreground: 40 25% 92%;
    --border: 220 20% 18%;
    --input: 220 20% 18%;
    --ring: 355 60% 55%;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  html {
    font-family: 'Inter', system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  body {
    @apply bg-background text-foreground;
    background-image:
      var(--gradient-glow),
      radial-gradient(circle at 1px 1px, hsl(220 25% 12% / 0.025) 1px, transparent 0);
    background-size: 100% 100%, 24px 24px;
    background-attachment: fixed;
  }
  .font-serif {
    font-family: 'Instrument Serif', 'Georgia', serif;
    font-feature-settings: 'liga', 'dlig';
  }
  .font-mono {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
  }
}

@layer utilities {
  .bg-paper { background: var(--gradient-paper); }
  .bg-ink { background: var(--gradient-ink); }
  .bg-accent-gradient { background: var(--gradient-accent); }
  .shadow-paper { box-shadow: var(--shadow-paper); }
  .shadow-elevated { box-shadow: var(--shadow-elevated); }
  .shadow-deep { box-shadow: var(--shadow-deep); }
  .transition-smooth { transition: all 0.4s var(--transition-smooth); }

  .text-balance { text-wrap: balance; }

  /* Paper texture border */
  .paper-edge {
    position: relative;
  }
  .paper-edge::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background: linear-gradient(180deg, hsl(35 20% 80%), hsl(35 20% 90%));
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
  }
}

@layer base {
  @keyframes fade-up {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  @keyframes scale-in {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
  }
  @keyframes pulse-soft {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
  }
  @keyframes shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
  }
  @keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
  }
}

@layer utilities {
  .animate-fade-up { animation: fade-up 0.6s var(--transition-smooth) both; }
  .animate-fade-in { animation: fade-in 0.5s ease-out both; }
  .animate-scale-in { animation: scale-in 0.4s var(--transition-smooth) both; }
  .animate-pulse-soft { animation: pulse-soft 2s ease-in-out infinite; }
  .animate-blink { animation: blink 1s step-end infinite; }
}