tangled
alpha
login
or
join now
goose.art
/
cloud-go
0
fork
atom
extremely claude-assisted go game based on atproto! working on cleaning up and giving a more unique design, still has a bit of a slop vibe to it.
0
fork
atom
overview
issues
pulls
pipelines
small update
goose.art
1 month ago
eac0dd6b
dd70f773
+257
-13
3 changed files
expand all
collapse all
unified
split
.gitignore
src
app.css
app.html
+1
.gitignore
···
12
12
*.db-journal
13
13
*.db-shm
14
14
*.db-wal
15
15
+
.claude*
+241
-4
src/app.css
···
5
5
}
6
6
7
7
:root {
8
8
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
9
9
-
line-height: 1.5;
10
10
-
color: #1a202c;
8
8
+
/* Sunset Sky Palette - extracted from aerial cloudscape */
9
9
+
--sky-apricot: #F2C5A0;
10
10
+
--sky-apricot-light: #F8DCC5;
11
11
+
--sky-apricot-dark: #E5A878;
12
12
+
--sky-rose: #D4A8B5;
13
13
+
--sky-rose-light: #E5C5CE;
14
14
+
--sky-rose-dark: #8B5A6B;
15
15
+
--sky-mauve: #C5A0B0;
16
16
+
--sky-blue-light: #B8D4E3;
17
17
+
--sky-blue-pale: #D4E5EF;
18
18
+
--sky-slate: #5A7A90;
19
19
+
--sky-slate-light: #7A98AD;
20
20
+
--sky-slate-dark: #455D6E;
21
21
+
--sky-gray: #94A8B8;
22
22
+
--sky-gray-light: #B5C5D0;
23
23
+
--sky-cloud: #E8EFF4;
24
24
+
--sky-white: #F5F8FA;
25
25
+
26
26
+
/* Semantic aliases */
27
27
+
--color-bg: var(--sky-cloud);
28
28
+
--color-bg-card: var(--sky-white);
29
29
+
--color-text: var(--sky-slate-dark);
30
30
+
--color-text-muted: var(--sky-gray);
31
31
+
--color-text-light: var(--sky-gray-light);
32
32
+
--color-primary: var(--sky-apricot-dark);
33
33
+
--color-primary-hover: var(--sky-apricot);
34
34
+
--color-primary-light: var(--sky-apricot-light);
35
35
+
--color-secondary: var(--sky-rose);
36
36
+
--color-secondary-hover: var(--sky-rose-light);
37
37
+
--color-accent: var(--sky-slate);
38
38
+
--color-accent-hover: var(--sky-slate-light);
39
39
+
--color-border: var(--sky-blue-pale);
40
40
+
--color-link: var(--sky-slate);
41
41
+
--color-link-hover: var(--sky-apricot-dark);
42
42
+
43
43
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
44
44
+
line-height: 1.6;
45
45
+
color: var(--color-text);
11
46
}
12
47
13
48
body {
14
14
-
background: #f7fafc;
49
49
+
background: linear-gradient(180deg, var(--sky-blue-pale) 0%, var(--sky-cloud) 30%, var(--sky-white) 100%);
15
50
min-height: 100vh;
51
51
+
overflow-x: hidden;
52
52
+
}
53
53
+
54
54
+
/* Animated clouds background */
55
55
+
.clouds-container {
56
56
+
position: fixed;
57
57
+
top: 0;
58
58
+
left: 0;
59
59
+
width: 100%;
60
60
+
height: 100%;
61
61
+
pointer-events: none;
62
62
+
z-index: 0;
63
63
+
overflow: hidden;
64
64
+
}
65
65
+
66
66
+
.cloud {
67
67
+
position: absolute;
68
68
+
background: linear-gradient(135deg, rgba(255, 255, 255, 0.9) 0%, rgba(232, 239, 244, 0.7) 100%);
69
69
+
border-radius: 50%;
70
70
+
filter: blur(1px);
71
71
+
opacity: 0.6;
72
72
+
}
73
73
+
74
74
+
.cloud::before,
75
75
+
.cloud::after {
76
76
+
content: '';
77
77
+
position: absolute;
78
78
+
background: inherit;
79
79
+
border-radius: 50%;
80
80
+
}
81
81
+
82
82
+
/* Cloud shapes - varied sizes from small to large */
83
83
+
.cloud-1 {
84
84
+
width: 120px;
85
85
+
height: 35px;
86
86
+
top: 8%;
87
87
+
animation: drift-1 60s linear infinite;
88
88
+
opacity: 0.5;
89
89
+
}
90
90
+
.cloud-1::before {
91
91
+
width: 55px;
92
92
+
height: 45px;
93
93
+
top: -25px;
94
94
+
left: 15px;
95
95
+
}
96
96
+
.cloud-1::after {
97
97
+
width: 65px;
98
98
+
height: 40px;
99
99
+
top: -20px;
100
100
+
right: 10px;
101
101
+
}
102
102
+
103
103
+
.cloud-2 {
104
104
+
width: 320px;
105
105
+
height: 90px;
106
106
+
top: 20%;
107
107
+
animation: drift-2 130s linear infinite;
108
108
+
animation-delay: -20s;
109
109
+
opacity: 0.55;
110
110
+
}
111
111
+
.cloud-2::before {
112
112
+
width: 160px;
113
113
+
height: 120px;
114
114
+
top: -70px;
115
115
+
left: 40px;
116
116
+
}
117
117
+
.cloud-2::after {
118
118
+
width: 140px;
119
119
+
height: 85px;
120
120
+
top: -40px;
121
121
+
right: 40px;
122
122
+
}
123
123
+
124
124
+
.cloud-3 {
125
125
+
width: 90px;
126
126
+
height: 28px;
127
127
+
top: 38%;
128
128
+
animation: drift-3 50s linear infinite;
129
129
+
animation-delay: -15s;
130
130
+
opacity: 0.4;
131
131
+
}
132
132
+
.cloud-3::before {
133
133
+
width: 45px;
134
134
+
height: 38px;
135
135
+
top: -22px;
136
136
+
left: 12px;
137
137
+
}
138
138
+
.cloud-3::after {
139
139
+
width: 50px;
140
140
+
height: 32px;
141
141
+
top: -16px;
142
142
+
right: 8px;
143
143
+
}
144
144
+
145
145
+
.cloud-4 {
146
146
+
width: 400px;
147
147
+
height: 110px;
148
148
+
top: 55%;
149
149
+
animation: drift-1 150s linear infinite;
150
150
+
animation-delay: -70s;
151
151
+
opacity: 0.4;
152
152
+
}
153
153
+
.cloud-4::before {
154
154
+
width: 200px;
155
155
+
height: 140px;
156
156
+
top: -80px;
157
157
+
left: 60px;
158
158
+
}
159
159
+
.cloud-4::after {
160
160
+
width: 170px;
161
161
+
height: 100px;
162
162
+
top: -50px;
163
163
+
right: 50px;
164
164
+
}
165
165
+
166
166
+
.cloud-5 {
167
167
+
width: 180px;
168
168
+
height: 50px;
169
169
+
top: 75%;
170
170
+
animation: drift-2 85s linear infinite;
171
171
+
animation-delay: -40s;
172
172
+
opacity: 0.35;
173
173
+
}
174
174
+
.cloud-5::before {
175
175
+
width: 85px;
176
176
+
height: 65px;
177
177
+
top: -38px;
178
178
+
left: 25px;
179
179
+
}
180
180
+
.cloud-5::after {
181
181
+
width: 95px;
182
182
+
height: 55px;
183
183
+
top: -28px;
184
184
+
right: 15px;
185
185
+
}
186
186
+
187
187
+
/* Drift animations - clouds move at different speeds and paths */
188
188
+
@keyframes drift-1 {
189
189
+
0% {
190
190
+
left: -300px;
191
191
+
}
192
192
+
100% {
193
193
+
left: 100vw;
194
194
+
}
195
195
+
}
196
196
+
197
197
+
@keyframes drift-2 {
198
198
+
0% {
199
199
+
left: 100vw;
200
200
+
}
201
201
+
100% {
202
202
+
left: -350px;
203
203
+
}
204
204
+
}
205
205
+
206
206
+
@keyframes drift-3 {
207
207
+
0% {
208
208
+
left: -250px;
209
209
+
}
210
210
+
100% {
211
211
+
left: 100vw;
212
212
+
}
213
213
+
}
214
214
+
215
215
+
/* Ensure main content is above clouds */
216
216
+
.page-content {
217
217
+
position: relative;
218
218
+
z-index: 1;
219
219
+
}
220
220
+
221
221
+
/* Cloud-like card styling */
222
222
+
.cloud-card {
223
223
+
background: linear-gradient(
224
224
+
135deg,
225
225
+
rgba(255, 255, 255, 0.95) 0%,
226
226
+
rgba(245, 248, 250, 0.9) 50%,
227
227
+
rgba(232, 239, 244, 0.85) 100%
228
228
+
);
229
229
+
border: none;
230
230
+
border-radius: 2rem 2.5rem 2rem 2.2rem;
231
231
+
box-shadow:
232
232
+
0 0 20px rgba(255, 255, 255, 0.8),
233
233
+
0 0 40px rgba(255, 255, 255, 0.4),
234
234
+
0 8px 32px rgba(90, 122, 144, 0.12),
235
235
+
inset 0 1px 1px rgba(255, 255, 255, 0.9);
236
236
+
backdrop-filter: blur(8px);
237
237
+
position: relative;
238
238
+
}
239
239
+
240
240
+
.cloud-card::before {
241
241
+
content: '';
242
242
+
position: absolute;
243
243
+
inset: -2px;
244
244
+
border-radius: inherit;
245
245
+
background: linear-gradient(
246
246
+
135deg,
247
247
+
rgba(255, 255, 255, 0.6) 0%,
248
248
+
rgba(212, 229, 239, 0.3) 50%,
249
249
+
rgba(255, 255, 255, 0.4) 100%
250
250
+
);
251
251
+
filter: blur(4px);
252
252
+
z-index: -1;
16
253
}
17
254
18
255
a {
+15
-9
src/app.html
···
1
1
<!doctype html>
2
2
<html lang="en">
3
3
-
<head>
4
4
-
<meta charset="utf-8" />
5
5
-
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
6
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
-
%sveltekit.head%
8
8
-
</head>
9
9
-
<body data-sveltekit-preload-data="hover">
10
10
-
<div style="display: contents">%sveltekit.body%</div>
11
11
-
</body>
3
3
+
<head>
4
4
+
<meta charset="utf-8" />
5
5
+
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
6
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
8
8
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
9
+
<link
10
10
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
11
11
+
rel="stylesheet"
12
12
+
/>
13
13
+
%sveltekit.head%
14
14
+
</head>
15
15
+
<body data-sveltekit-preload-data="hover">
16
16
+
<div style="display: contents">%sveltekit.body%</div>
17
17
+
</body>
12
18
</html>