Spaces:
Runtime error
Runtime error
wip
Browse files- frontend/src/lib/App.svelte +5 -5
- frontend/src/lib/Buttons/AboutButton.svelte +2 -6
- frontend/src/lib/Buttons/MaskButton.svelte +2 -4
- frontend/src/lib/Buttons/PPButton.svelte +1 -1
- frontend/src/lib/Buttons/RoomsSelector.svelte +3 -3
- frontend/src/lib/Cursor.svelte +19 -3
- frontend/src/lib/Frame.svelte +11 -10
- frontend/src/lib/Icons/Cursor.svelte +7 -2
- frontend/src/lib/Icons/LoadingIcon.svelte +11 -8
- frontend/src/lib/Icons/Mask.svelte +2 -2
- frontend/src/lib/Menu.svelte +7 -2
- frontend/src/lib/PaintCanvas.svelte +7 -2
- frontend/src/lib/PaintFrame.svelte +34 -38
- frontend/src/lib/PromptModal.svelte +11 -13
- stablediffusion-infinity/rooms.db +0 -0
- static/_app/immutable/assets/app-a867e11d.css +1 -1
- static/_app/immutable/chunks/App-b4e90bcb.js +0 -0
frontend/src/lib/App.svelte
CHANGED
@@ -183,7 +183,7 @@
|
|
183 |
on:click={() => (showAbout = false)}
|
184 |
>
|
185 |
<div class="max-w-md">
|
186 |
-
<h2 class="font-bold text-xl font-mono">Stable Difussion Multiplayer</h2>
|
187 |
<p>
|
188 |
Hugging Face face GPU Spaces https://huggingface.co/docs/hub/spaces-gpus Diffusers
|
189 |
https://huggingface.co/docs/diffusers/index
|
@@ -207,7 +207,7 @@
|
|
207 |
</a>.
|
208 |
</p>
|
209 |
<h2 class="font-bold text-lg font-mono" />
|
210 |
-
<p>
|
211 |
Runwayml Inpaiting Stable Diffusion
|
212 |
<a
|
213 |
href="https://github.com/runwayml/stable-diffusion"
|
@@ -217,9 +217,9 @@
|
|
217 |
https://github.com/runwayml/stable-diffusion</a
|
218 |
>
|
219 |
</p>
|
220 |
-
<p class="text-base">
|
221 |
Multiplayer API by
|
222 |
-
<LiveBlocks />
|
223 |
</p>
|
224 |
</div>
|
225 |
</div>
|
@@ -258,7 +258,7 @@
|
|
258 |
<div class="fixed top-0 right-0 z-10 p-2">
|
259 |
<ShareWithCommunity />
|
260 |
</div>
|
261 |
-
<div class="fixed bottom-
|
262 |
<Menu on:prompt={onPrompt} {isLoading} on:toggleAbout={() => (showAbout = !showAbout)} />
|
263 |
</div>
|
264 |
|
|
|
183 |
on:click={() => (showAbout = false)}
|
184 |
>
|
185 |
<div class="max-w-md">
|
186 |
+
<h2 class="font-bold text-xl font-mono mb-8">Stable Difussion Multiplayer</h2>
|
187 |
<p>
|
188 |
Hugging Face face GPU Spaces https://huggingface.co/docs/hub/spaces-gpus Diffusers
|
189 |
https://huggingface.co/docs/diffusers/index
|
|
|
207 |
</a>.
|
208 |
</p>
|
209 |
<h2 class="font-bold text-lg font-mono" />
|
210 |
+
<p class="mb-6">
|
211 |
Runwayml Inpaiting Stable Diffusion
|
212 |
<a
|
213 |
href="https://github.com/runwayml/stable-diffusion"
|
|
|
217 |
https://github.com/runwayml/stable-diffusion</a
|
218 |
>
|
219 |
</p>
|
220 |
+
<p class="text-base flex items-center">
|
221 |
Multiplayer API by
|
222 |
+
<LiveBlocks classList="ml-2" />
|
223 |
</p>
|
224 |
</div>
|
225 |
</div>
|
|
|
258 |
<div class="fixed top-0 right-0 z-10 p-2">
|
259 |
<ShareWithCommunity />
|
260 |
</div>
|
261 |
+
<div class="fixed bottom-32 left-0 right-0 z-10 my-2">
|
262 |
<Menu on:prompt={onPrompt} {isLoading} on:toggleAbout={() => (showAbout = !showAbout)} />
|
263 |
</div>
|
264 |
|
frontend/src/lib/Buttons/AboutButton.svelte
CHANGED
@@ -1,8 +1,4 @@
|
|
1 |
-
<button
|
2 |
-
on:click
|
3 |
-
class="button-paint"
|
4 |
-
title="Prompt and Paint"
|
5 |
-
>
|
6 |
<span>About</span>
|
7 |
</button>
|
8 |
|
@@ -11,6 +7,6 @@
|
|
11 |
@apply disabled:opacity-50 dark:bg-white dark:text-black bg-black text-white rounded-2xl text-xs shadow-sm focus:outline-none focus:border-gray-400;
|
12 |
} */
|
13 |
.button-paint {
|
14 |
-
@apply text-xs md:text-sm font-mono bg-
|
15 |
}
|
16 |
</style>
|
|
|
1 |
+
<button on:click class="button-paint" title="Prompt and Paint">
|
|
|
|
|
|
|
|
|
2 |
<span>About</span>
|
3 |
</button>
|
4 |
|
|
|
7 |
@apply disabled:opacity-50 dark:bg-white dark:text-black bg-black text-white rounded-2xl text-xs shadow-sm focus:outline-none focus:border-gray-400;
|
8 |
} */
|
9 |
.button-paint {
|
10 |
+
@apply text-xs md:text-sm font-mono bg-blue-100 text-blue-900 min-w-[25ch] flex justify-center items-center disabled:opacity-50 rounded-xl px-3 py-1 shadow-sm focus:outline-none focus:border-gray-400;
|
11 |
}
|
12 |
</style>
|
frontend/src/lib/Buttons/MaskButton.svelte
CHANGED
@@ -8,12 +8,10 @@
|
|
8 |
<button
|
9 |
on:click
|
10 |
disabled={isLoading}
|
11 |
-
class="{className} rounded-full disabled:opacity-50 {isActive
|
12 |
-
? 'text-blue-700'
|
13 |
-
: 'text-gray-800'}"
|
14 |
title="Draw to Mask"
|
15 |
>
|
16 |
-
<Mask />
|
17 |
</button>
|
18 |
|
19 |
<style lang="postcss" scoped>
|
|
|
8 |
<button
|
9 |
on:click
|
10 |
disabled={isLoading}
|
11 |
+
class="{className} rounded-full disabled:opacity-50 {isActive ? 'text-white' : 'text-blue-200'}"
|
|
|
|
|
12 |
title="Draw to Mask"
|
13 |
>
|
14 |
+
<Mask classList="text-3xl" />
|
15 |
</button>
|
16 |
|
17 |
<style lang="postcss" scoped>
|
frontend/src/lib/Buttons/PPButton.svelte
CHANGED
@@ -24,6 +24,6 @@
|
|
24 |
@apply disabled:opacity-50 dark:bg-white dark:text-black bg-black text-white rounded-2xl text-xs shadow-sm focus:outline-none focus:border-gray-400;
|
25 |
} */
|
26 |
.button-paint {
|
27 |
-
@apply text-xs md:text-sm font-mono bg-
|
28 |
}
|
29 |
</style>
|
|
|
24 |
@apply disabled:opacity-50 dark:bg-white dark:text-black bg-black text-white rounded-2xl text-xs shadow-sm focus:outline-none focus:border-gray-400;
|
25 |
} */
|
26 |
.button-paint {
|
27 |
+
@apply text-xs md:text-sm font-mono bg-blue-100 text-blue-900 min-w-[25ch] flex justify-center items-center disabled:opacity-50 rounded-xl px-3 py-1 shadow-sm focus:outline-none focus:border-gray-400;
|
28 |
}
|
29 |
</style>
|
frontend/src/lib/Buttons/RoomsSelector.svelte
CHANGED
@@ -47,16 +47,16 @@
|
|
47 |
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
48 |
{#if loadingRooms}
|
49 |
<div
|
50 |
-
class="text-xs md:text-sm bg-
|
51 |
{isLoading ? 'opacity-50' : ''}
|
52 |
{collapsed ? 'rounded-xl' : 'rounded-b-xl'}"
|
53 |
title="Choose a different room"
|
54 |
bind:this={boxEl}
|
55 |
>
|
56 |
{#if !collapsed}
|
57 |
-
<div class="absolute left-0 right-0 bottom-full rounded-t-xl bg-
|
58 |
<ul class="relative overflow-y-scroll max-h-72">
|
59 |
-
<li class="grid-row gap-2 pb-3 sticky top-0 bg-
|
60 |
<Room />
|
61 |
<span> room </span>
|
62 |
<People />
|
|
|
47 |
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
48 |
{#if loadingRooms}
|
49 |
<div
|
50 |
+
class="text-xs md:text-sm bg-blue-600 text-blue-900 px-3 py-1 font-mono font-medium tracking-tight relative z-0 min-w-[25ch]
|
51 |
{isLoading ? 'opacity-50' : ''}
|
52 |
{collapsed ? 'rounded-xl' : 'rounded-b-xl'}"
|
53 |
title="Choose a different room"
|
54 |
bind:this={boxEl}
|
55 |
>
|
56 |
{#if !collapsed}
|
57 |
+
<div class="absolute left-0 right-0 bottom-full rounded-t-xl bg-blue-100 px-1">
|
58 |
<ul class="relative overflow-y-scroll max-h-72">
|
59 |
+
<li class="grid-row gap-2 pb-3 sticky top-0 bg-blue-100 py-2">
|
60 |
<Room />
|
61 |
<span> room </span>
|
62 |
<People />
|
frontend/src/lib/Cursor.svelte
CHANGED
@@ -10,17 +10,33 @@
|
|
10 |
x: transform.applyX(position.x),
|
11 |
y: transform.applyY(position.y)
|
12 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
</script>
|
14 |
|
15 |
<div
|
16 |
-
class="cursor"
|
17 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k});`}
|
18 |
>
|
19 |
-
<Cursor
|
|
|
|
|
|
|
20 |
|
21 |
{#if emoji}
|
22 |
<div
|
23 |
-
class="absolute right-0
|
24 |
style={`text-shadow: 0px 5px 5px ${color}`}
|
25 |
>
|
26 |
{emoji}
|
|
|
10 |
x: transform.applyX(position.x),
|
11 |
y: transform.applyY(position.y)
|
12 |
};
|
13 |
+
|
14 |
+
const colors = [
|
15 |
+
'#505669',
|
16 |
+
'#414AA6',
|
17 |
+
'#1C5B92',
|
18 |
+
'#216B44',
|
19 |
+
'#893301',
|
20 |
+
'#912728',
|
21 |
+
'#98184D',
|
22 |
+
'#743095',
|
23 |
+
'#5F4199',
|
24 |
+
'#8f3f94'
|
25 |
+
];
|
26 |
</script>
|
27 |
|
28 |
<div
|
29 |
+
class="cursor text-4xl"
|
30 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k});`}
|
31 |
>
|
32 |
+
<Cursor
|
33 |
+
classList={'block z-0 col-span-2 row-span-2 text-8xl'}
|
34 |
+
fill={colors[Math.floor(Math.random() * colors.length)]}
|
35 |
+
/>
|
36 |
|
37 |
{#if emoji}
|
38 |
<div
|
39 |
+
class="absolute right-0 col-start-2 row-start-2 text-8xl"
|
40 |
style={`text-shadow: 0px 5px 5px ${color}`}
|
41 |
>
|
42 |
{emoji}
|
frontend/src/lib/Frame.svelte
CHANGED
@@ -14,18 +14,19 @@
|
|
14 |
</script>
|
15 |
|
16 |
<div
|
17 |
-
class="frame
|
18 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k}); transform-origin: 0 0;`}
|
19 |
>
|
20 |
<div class="pointer-events-none touch-none">
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
<div
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
</div>
|
27 |
-
|
28 |
</div>
|
29 |
-
|
30 |
-
<style lang="postcss" scoped>
|
31 |
-
</style>
|
|
|
14 |
</script>
|
15 |
|
16 |
<div
|
17 |
+
class="frame absolute top-0 left-0 ring-8 ring-black w-[512px] h-[512px] flex items-center justify-center bg-black/60"
|
18 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k}); transform-origin: 0 0;`}
|
19 |
>
|
20 |
<div class="pointer-events-none touch-none">
|
21 |
+
{#if isLoading}
|
22 |
+
<LoadingIcon classList={'animate-spin text-4xl inline mr-2 mx-auto text-white mb-4'} />
|
23 |
+
{/if}
|
24 |
+
<div
|
25 |
+
class="font-bold !text-4xl text-white bg-black/60 rounded-2xl text-center p-10 line-clamp-4 flex"
|
26 |
+
>
|
27 |
+
<p class="text-4xl">Someone is painting:</p>
|
28 |
+
|
29 |
+
<span class="italic font-normal">"{prompt}"</span>
|
30 |
</div>
|
31 |
+
</div>
|
32 |
</div>
|
|
|
|
|
|
frontend/src/lib/Icons/Cursor.svelte
CHANGED
@@ -1,16 +1,21 @@
|
|
1 |
<script lang="ts">
|
2 |
export let classList = '';
|
|
|
3 |
</script>
|
4 |
|
5 |
<svg
|
6 |
class={classList}
|
7 |
-
width="
|
|
|
8 |
viewBox="0 0 15 15"
|
9 |
fill="currentColor"
|
10 |
xmlns="http://www.w3.org/2000/svg"
|
11 |
>
|
12 |
<path
|
|
|
|
|
|
|
13 |
d="M0.91603 0.916054L7.09131 14.9234L8.89871 8.89873L14.9234 7.09133L0.91603 0.916054Z"
|
14 |
-
fill
|
15 |
/>
|
16 |
</svg>
|
|
|
1 |
<script lang="ts">
|
2 |
export let classList = '';
|
3 |
+
export let fill = '';
|
4 |
</script>
|
5 |
|
6 |
<svg
|
7 |
class={classList}
|
8 |
+
width="1em"
|
9 |
+
height="1em"
|
10 |
viewBox="0 0 15 15"
|
11 |
fill="currentColor"
|
12 |
xmlns="http://www.w3.org/2000/svg"
|
13 |
>
|
14 |
<path
|
15 |
+
stroke={fill}
|
16 |
+
stroke-opacity="0.3"
|
17 |
+
stroke-width="1"
|
18 |
d="M0.91603 0.916054L7.09131 14.9234L8.89871 8.89873L14.9234 7.09133L0.91603 0.916054Z"
|
19 |
+
{fill}
|
20 |
/>
|
21 |
</svg>
|
frontend/src/lib/Icons/LoadingIcon.svelte
CHANGED
@@ -4,17 +4,20 @@
|
|
4 |
|
5 |
<svg
|
6 |
class={classList}
|
7 |
-
width="51"
|
8 |
-
viewBox="0 0 21 21"
|
9 |
-
fill="none"
|
10 |
xmlns="http://www.w3.org/2000/svg"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
>
|
|
|
12 |
<path
|
13 |
-
d="M21 10.5C21 4.70101 16.299 0 10.5 0C4.70101 0 0 4.70101 0 10.5C0 16.299 4.70101 21 10.5 21C16.299 21 21 16.299 21 10.5Z"
|
14 |
-
fill="white"
|
15 |
-
/>
|
16 |
-
<path
|
17 |
-
d="M10.5006 17C9.6233 17 8.77136 16.8286 7.97021 16.4896C7.19572 16.1621 6.50122 15.6924 5.90448 15.0957C5.30774 14.499 4.83797 13.8046 4.5104 13.0302C4.1714 12.2291 4 11.3772 4 10.5C4 10.2474 4.20441 10.043 4.45708 10.043C4.70974 10.043 4.91415 10.2474 4.91415 10.5C4.91415 11.2541 5.06143 11.9854 5.35345 12.6747C5.63532 13.3399 6.0378 13.9379 6.55074 14.4508C7.06368 14.9637 7.66169 15.3674 8.32698 15.6479C9.01514 15.9387 9.74646 16.0859 10.5006 16.0859C11.2548 16.0859 11.9861 15.9387 12.6756 15.6467C13.3409 15.3648 13.9389 14.9624 14.4518 14.4495C14.9647 13.9366 15.3685 13.3387 15.6491 12.6734C15.9398 11.9854 16.0871 11.2541 16.0871 10.5C16.0871 9.7459 15.9398 9.01465 15.6478 8.32529C15.3669 7.66166 14.9604 7.05857 14.4505 6.54922C13.9417 6.03876 13.3384 5.63215 12.6743 5.35205C11.9861 5.06133 11.2548 4.91406 10.5006 4.91406C10.248 4.91406 10.0436 4.70967 10.0436 4.45703C10.0436 4.20439 10.248 4 10.5006 4C11.378 4 12.2299 4.17139 13.0311 4.51035C13.8055 4.83789 14.5 5.30762 15.0968 5.9043C15.6935 6.50098 16.162 7.19668 16.4896 7.96982C16.8286 8.7709 17 9.62275 17 10.5C17 11.3772 16.8286 12.2291 16.4896 13.0302C16.1633 13.8046 15.6935 14.499 15.0968 15.0957C14.5 15.6924 13.8043 16.1608 13.0311 16.4884C12.2299 16.8286 11.378 17 10.5006 17Z"
|
18 |
fill="currentColor"
|
|
|
19 |
/>
|
20 |
</svg>
|
|
|
4 |
|
5 |
<svg
|
6 |
class={classList}
|
|
|
|
|
|
|
7 |
xmlns="http://www.w3.org/2000/svg"
|
8 |
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
9 |
+
aria-hidden="true"
|
10 |
+
fill="none"
|
11 |
+
focusable="false"
|
12 |
+
role="img"
|
13 |
+
width="1em"
|
14 |
+
height="1em"
|
15 |
+
preserveAspectRatio="xMidYMid meet"
|
16 |
+
viewBox="0 0 24 24"
|
17 |
>
|
18 |
+
<circle class="opacity-50" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4" />
|
19 |
<path
|
|
|
|
|
|
|
|
|
|
|
20 |
fill="currentColor"
|
21 |
+
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
22 |
/>
|
23 |
</svg>
|
frontend/src/lib/Icons/Mask.svelte
CHANGED
@@ -4,8 +4,8 @@
|
|
4 |
|
5 |
<svg
|
6 |
class={classList}
|
7 |
-
width="
|
8 |
-
height="
|
9 |
viewBox="-2 -2 14 14"
|
10 |
fill="none"
|
11 |
xmlns="http://www.w3.org/2000/svg"
|
|
|
4 |
|
5 |
<svg
|
6 |
class={classList}
|
7 |
+
width="1em"
|
8 |
+
height="1em"
|
9 |
viewBox="-2 -2 14 14"
|
10 |
fill="none"
|
11 |
xmlns="http://www.w3.org/2000/svg"
|
frontend/src/lib/Menu.svelte
CHANGED
@@ -21,8 +21,13 @@
|
|
21 |
});
|
22 |
</script>
|
23 |
|
24 |
-
<div class="
|
25 |
-
<
|
|
|
|
|
|
|
|
|
|
|
26 |
<RoomsSelector {isLoading} />
|
27 |
<AboutButton on:click={() => dispatch('toggleAbout')} />
|
28 |
</div>
|
|
|
21 |
});
|
22 |
</script>
|
23 |
|
24 |
+
<div class="flex justify-center">
|
25 |
+
<button
|
26 |
+
on:click={() => dispatch('prompt')}
|
27 |
+
class="text-3xl bg-blue-600 text-white px-6 py-2 rounded-xl ring ring-blue-500 font-semibold shadow-2xl"
|
28 |
+
>🖍 Paint</button
|
29 |
+
>
|
30 |
+
<!-- <PPButton {isLoading} on:click={() => dispatch('prompt')} /> -->
|
31 |
<RoomsSelector {isLoading} />
|
32 |
<AboutButton on:click={() => dispatch('toggleAbout')} />
|
33 |
</div>
|
frontend/src/lib/PaintCanvas.svelte
CHANGED
@@ -132,9 +132,14 @@
|
|
132 |
|
133 |
<div
|
134 |
bind:this={containerEl}
|
135 |
-
class="absolute top-0 left-0 right-0 bottom-0 overflow-hidden z-0 bg-gray-
|
136 |
>
|
137 |
-
<canvas
|
|
|
|
|
|
|
|
|
|
|
138 |
<slot />
|
139 |
</div>
|
140 |
|
|
|
132 |
|
133 |
<div
|
134 |
bind:this={containerEl}
|
135 |
+
class="absolute top-0 left-0 right-0 bottom-0 overflow-hidden z-0 bg-gray-200"
|
136 |
>
|
137 |
+
<canvas
|
138 |
+
bind:this={$canvasEl}
|
139 |
+
{width}
|
140 |
+
{height}
|
141 |
+
class="absolute top-0 left-0 bg-white shadow-2xl"
|
142 |
+
/>
|
143 |
<slot />
|
144 |
</div>
|
145 |
|
frontend/src/lib/PaintFrame.svelte
CHANGED
@@ -195,7 +195,13 @@
|
|
195 |
class="absolute top-0 left-0 pen"
|
196 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k}); transform-origin: 0 0;`}
|
197 |
>
|
198 |
-
<div class="frame">
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
<canvas class={dragEnabled ? '' : 'bg-white'} bind:this={$maskEl} width="512" height="512" />
|
200 |
<div class="pointer-events-none touch-none">
|
201 |
{#if prompt}
|
@@ -206,21 +212,14 @@
|
|
206 |
</div>
|
207 |
{/if}
|
208 |
</div>
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
<div
|
216 |
-
class="absolute top-full"
|
217 |
-
style={`transform: scale(${Math.max(2.5 - transform.k, 1)}); transform-origin: 0 0;`}
|
218 |
-
>
|
219 |
-
<div class="py-3">
|
220 |
-
<PPButton {isLoading} on:click={() => dispatch('prompt')} />
|
221 |
-
</div>
|
222 |
{#if $loadingState !== ''}
|
223 |
-
<div class="
|
224 |
{#if $loadingState === 'NFSW'}
|
225 |
<h2 class="text-red-500 text-2xl font-bold">NSFW Alert</h2>
|
226 |
<h3 class="text-red-500 text-lg">
|
@@ -229,34 +228,31 @@
|
|
229 |
{/if}
|
230 |
<p>{$loadingState}</p>
|
231 |
</div>
|
|
|
|
|
232 |
{/if}
|
233 |
</div>
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
|
|
|
|
241 |
{isLoading}
|
242 |
-
|
243 |
-
|
|
|
244 |
/>
|
245 |
-
|
246 |
-
<
|
247 |
-
|
248 |
-
|
249 |
-
isActive={!dragEnabled}
|
250 |
-
on:click={toggleDrawMask}
|
251 |
-
/>
|
252 |
-
{#if !dragEnabled}
|
253 |
-
<span class="border-gray-800 border-opacity-50 border-r-2 my-2" />
|
254 |
-
<UndoButton className={'p-1'} {isLoading} on:click={cleanMask} />
|
255 |
-
{/if}
|
256 |
-
</div>
|
257 |
</div>
|
258 |
</div>
|
259 |
-
|
260 |
</div>
|
261 |
</div>
|
262 |
<div
|
@@ -269,7 +265,7 @@
|
|
269 |
|
270 |
<style lang="postcss" scoped>
|
271 |
.frame {
|
272 |
-
@apply relative grid grid-cols-3 grid-rows-3 ring-8 ring-
|
273 |
}
|
274 |
.hand {
|
275 |
cursor: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHSSURBVHgBzVQ9LENRFD4VozZWP4ku/jqJAYNoEQaWNpEwIYJFBINY6UCn6mKTKhYNSTuwVFBiaEgai9bP4CWKUftqv845vU+k7evr2C/5cu6799zvnHvOvQ+gUmEqNimEsKLZQ3YgA0j6TiNXeJPJlIZygEK1yFAmo4rj0Kkg0Jj4DyHyMxKyIt/I+zH5LJrau8V76lPMLa6KjU2vyKhZsbHl1YTX8/dX5X071eyPdX5xDRrr68BiNsNJ+AxsrS1sCf6DIEQub2hoNxJjxO7ivHnMNZqzzlHAIJBIvkBPV6cm7JC11RULWMw1LELRhwf6IPXxxSSRyMU1ztk5mKpmyX9aV0x2KUoitMHW1sxHjd3HWYQyGh7sY1+Z3ZTRMfcpCxLxHwZhZnIc63TEC3TU3iEXj2XdqGGOomKyBhxNq1fi6ZVF3J5tyK+rPGqHXmZX6OAgR61eVCc9UBDE332rzlu3uj0+WRs7GKGxoY5MWi8zZWZygp1KZUSg6yIR1RNzYQeV2/MQLC/MQqmM5HoYb8CDNl/w0GUTlpFLVDPfzi5myZ0DW3szX5Ex5whYLGYFp/pRTAEjyHcaFoX4RvqKPXRTOaJoHJDrmoKMlv0Lqhj8AlEeE/77ZUZMAAAAAElFTkSuQmCC')
|
|
|
195 |
class="absolute top-0 left-0 pen"
|
196 |
style={`transform: translateX(${coord.x}px) translateY(${coord.y}px) scale(${transform.k}); transform-origin: 0 0;`}
|
197 |
>
|
198 |
+
<div class="frame relative">
|
199 |
+
{#if isLoading}
|
200 |
+
<LoadingIcon classList={'absolute inset-0 m-auto animate-spin text-6xl text-black'} />
|
201 |
+
{/if}
|
202 |
+
{#if $myPresence?.status !== 'masking'}
|
203 |
+
<div class="absolute inset-0 bg-gradient-to-t from-blue-500/60 to-blue-500/10" />
|
204 |
+
{/if}
|
205 |
<canvas class={dragEnabled ? '' : 'bg-white'} bind:this={$maskEl} width="512" height="512" />
|
206 |
<div class="pointer-events-none touch-none">
|
207 |
{#if prompt}
|
|
|
212 |
</div>
|
213 |
{/if}
|
214 |
</div>
|
215 |
+
<div
|
216 |
+
class="absolute top-full"
|
217 |
+
style={`transform: scale(${Math.max(2.5 - transform.k, 1)}); transform-origin: 0 0;`}
|
218 |
+
>
|
219 |
+
<div class="px-3 py-1 bg-blue-600 text-white text-lg xl:text-2xl rounded-b-xl">
|
220 |
+
<!-- <PPButton {isLoading} on:click={() => dispatch('prompt')} /> -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
{#if $loadingState !== ''}
|
222 |
+
<div class="">
|
223 |
{#if $loadingState === 'NFSW'}
|
224 |
<h2 class="text-red-500 text-2xl font-bold">NSFW Alert</h2>
|
225 |
<h3 class="text-red-500 text-lg">
|
|
|
228 |
{/if}
|
229 |
<p>{$loadingState}</p>
|
230 |
</div>
|
231 |
+
{:else}
|
232 |
+
🤚 Drag me
|
233 |
{/if}
|
234 |
</div>
|
235 |
+
</div>
|
236 |
+
<div
|
237 |
+
class="absolute left-full"
|
238 |
+
style={`transform: scale(${Math.max(2.5 - transform.k, 1)}); transform-origin: 0 0;`}
|
239 |
+
>
|
240 |
+
<div class="mx-4">
|
241 |
+
<!-- <DragButton className={'p-1'} {isLoading} isActive={dragEnabled} on:click={toggleDrag} /> -->
|
242 |
+
<div class="flex bg-blue-600 rounded-lg shadow-lg">
|
243 |
+
<MaskButton
|
244 |
{isLoading}
|
245 |
+
className={'p-1'}
|
246 |
+
isActive={!dragEnabled}
|
247 |
+
on:click={toggleDrawMask}
|
248 |
/>
|
249 |
+
{#if !dragEnabled}
|
250 |
+
<span class="border-gray-800 border-opacity-50 border-r-2 my-2" />
|
251 |
+
<UndoButton className={'p-1'} {isLoading} on:click={cleanMask} />
|
252 |
+
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
</div>
|
254 |
</div>
|
255 |
+
</div>
|
256 |
</div>
|
257 |
</div>
|
258 |
<div
|
|
|
265 |
|
266 |
<style lang="postcss" scoped>
|
267 |
.frame {
|
268 |
+
@apply relative grid grid-cols-3 grid-rows-3 ring-8 ring-blue-600 w-[512px] h-[512px];
|
269 |
}
|
270 |
.hand {
|
271 |
cursor: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHSSURBVHgBzVQ9LENRFD4VozZWP4ku/jqJAYNoEQaWNpEwIYJFBINY6UCn6mKTKhYNSTuwVFBiaEgai9bP4CWKUftqv845vU+k7evr2C/5cu6799zvnHvOvQ+gUmEqNimEsKLZQ3YgA0j6TiNXeJPJlIZygEK1yFAmo4rj0Kkg0Jj4DyHyMxKyIt/I+zH5LJrau8V76lPMLa6KjU2vyKhZsbHl1YTX8/dX5X071eyPdX5xDRrr68BiNsNJ+AxsrS1sCf6DIEQub2hoNxJjxO7ivHnMNZqzzlHAIJBIvkBPV6cm7JC11RULWMw1LELRhwf6IPXxxSSRyMU1ztk5mKpmyX9aV0x2KUoitMHW1sxHjd3HWYQyGh7sY1+Z3ZTRMfcpCxLxHwZhZnIc63TEC3TU3iEXj2XdqGGOomKyBhxNq1fi6ZVF3J5tyK+rPGqHXmZX6OAgR61eVCc9UBDE332rzlu3uj0+WRs7GKGxoY5MWi8zZWZygp1KZUSg6yIR1RNzYQeV2/MQLC/MQqmM5HoYb8CDNl/w0GUTlpFLVDPfzi5myZ0DW3szX5Ex5whYLGYFp/pRTAEjyHcaFoX4RvqKPXRTOaJoHJDrmoKMlv0Lqhj8AlEeE/77ZUZMAAAAAElFTkSuQmCC')
|
frontend/src/lib/PromptModal.svelte
CHANGED
@@ -25,7 +25,6 @@
|
|
25 |
window.addEventListener('keyup', onKeyup);
|
26 |
window.addEventListener('pointerdown', cancelHandler, true);
|
27 |
|
28 |
-
|
29 |
return () => {
|
30 |
window.removeEventListener('keyup', onKeyup);
|
31 |
window.removeEventListener('pointerdown', cancelHandler, true);
|
@@ -64,29 +63,28 @@
|
|
64 |
</script>
|
65 |
|
66 |
<form
|
67 |
-
class="fixed w-screen top-0 left-0 bottom-0 right-0 max-h-screen z-50 flex items-center justify-center bg-black bg-opacity-80
|
68 |
on:submit|preventDefault={onPrompt}
|
69 |
>
|
70 |
-
<div
|
|
|
|
|
|
|
71 |
<input
|
72 |
value={prompt}
|
73 |
bind:this={inputEl}
|
74 |
on:click|stopPropagation
|
75 |
on:input={onInput}
|
76 |
-
class="
|
77 |
-
placeholder="
|
78 |
title="Input prompt to generate image and obtain palette"
|
79 |
type="text"
|
80 |
name="prompt"
|
81 |
/>
|
82 |
-
<button
|
83 |
-
|
|
|
|
|
84 |
>
|
85 |
</div>
|
86 |
</form>
|
87 |
-
|
88 |
-
<style lang="postcss" scoped>
|
89 |
-
.input {
|
90 |
-
@apply flex-grow text-sm m-2 p-0 disabled:opacity-50 italic placeholder:text-black text-black placeholder:text-opacity-50 border-0 focus:outline-none focus:border-gray-400 focus:ring-1;
|
91 |
-
}
|
92 |
-
</style>
|
|
|
25 |
window.addEventListener('keyup', onKeyup);
|
26 |
window.addEventListener('pointerdown', cancelHandler, true);
|
27 |
|
|
|
28 |
return () => {
|
29 |
window.removeEventListener('keyup', onKeyup);
|
30 |
window.removeEventListener('pointerdown', cancelHandler, true);
|
|
|
63 |
</script>
|
64 |
|
65 |
<form
|
66 |
+
class="fixed w-screen top-0 left-0 bottom-0 right-0 max-h-screen z-50 flex items-center justify-center bg-black bg-opacity-80"
|
67 |
on:submit|preventDefault={onPrompt}
|
68 |
>
|
69 |
+
<div
|
70 |
+
class="flex bg-white itemx-center overflow-hidden rounded-lg w-full max-w-lg 2xl:max-w-xl"
|
71 |
+
bind:this={boxEl}
|
72 |
+
>
|
73 |
<input
|
74 |
value={prompt}
|
75 |
bind:this={inputEl}
|
76 |
on:click|stopPropagation
|
77 |
on:input={onInput}
|
78 |
+
class="flex-1 outline-none ring-0 border-none text-xl 2xl:text-2xl"
|
79 |
+
placeholder="Describe your prompt"
|
80 |
title="Input prompt to generate image and obtain palette"
|
81 |
type="text"
|
82 |
name="prompt"
|
83 |
/>
|
84 |
+
<button
|
85 |
+
on:click|preventDefault={onPrompt}
|
86 |
+
class="font-bold bg-blue-700 text-white border-l-2 px-5 text-xl 2xl:text-2xl spacing tracking-wide"
|
87 |
+
type="submit"><span class="mr-2">🖌</span> Paint</button
|
88 |
>
|
89 |
</div>
|
90 |
</form>
|
|
|
|
|
|
|
|
|
|
|
|
stablediffusion-infinity/rooms.db
CHANGED
Binary files a/stablediffusion-infinity/rooms.db and b/stablediffusion-infinity/rooms.db differ
|
|
static/_app/immutable/assets/app-a867e11d.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0px}.left-0{left:0px}.bottom-0{bottom:0px}.right-0{right:0px}.top-1\/2{top:50%}.left-1\/2{left:50%}.top-full{top:100%}.left-full{left:100%}.bottom-full{bottom:100%}.z-50{z-index:50}.z-0{z-index:0}.z-10{z-index:10}.col-span-2{grid-column:span 2 / span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-2{grid-row-start:2}.m-2{margin:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mt-3{margin-top:.75rem}.mr-2{margin-right:.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-screen{height:100vh}.h-\[512px\]{height:512px}.h-full{height:100%}.h-4{height:1rem}.max-h-screen{max-height:100vh}.max-h-72{max-height:18rem}.w-screen{width:100vw}.w-\[512px\]{width:512px}.w-max{width:-moz-max-content;width:max-content}.w-full{width:100%}.w-4{width:1rem}.min-w-\[25ch\]{min-width:25ch}.max-w-md{max-width:28rem}.max-w-\[25px\]{max-width:25px}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-wait{cursor:wait}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.place-items-center{place-items:center}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-2xl{border-radius:1rem}.rounded-xl{border-radius:.75rem}.rounded-sm{border-radius:.125rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border-0{border-width:0px}.border-2{border-width:2px}.border-r-2{border-right-width:2px}.border-l-2{border-left-width:2px}.border-t-2{border-top-width:2px}.border-dashed{border-style:dashed}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity: 1;border-color:rgb(109 40 217 / var(--tw-border-opacity))}.border-t-gray-400{--tw-border-opacity: 1;border-top-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-opacity-50{--tw-border-opacity: .5}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity))}.bg-opacity-80{--tw-bg-opacity: .8}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-1{padding:.25rem}.p-0{padding:0}.px-3{padding-left:.75rem;padding-right:.75rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.tracking-tight{letter-spacing:-.025em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-\[\#EC8E65\]{--tw-text-opacity: 1;color:rgb(236 142 101 / var(--tw-text-opacity))}.text-\[\#387CFF\]{--tw-text-opacity: 1;color:rgb(56 124 255 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-violet-900{--tw-text-opacity: 1;color:rgb(76 29 149 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-8{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-\[\#EC8E65\]{--tw-ring-opacity: 1;--tw-ring-color: rgb(236 142 101 / var(--tw-ring-opacity))}.ring-\[\#387CFF\]{--tw-ring-opacity: 1;--tw-ring-color: rgb(56 124 255 / var(--tw-ring-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}.placeholder\:text-black::-moz-placeholder{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.placeholder\:text-black::placeholder{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.placeholder\:text-opacity-50::-moz-placeholder{--tw-text-opacity: .5}.placeholder\:text-opacity-50::placeholder{--tw-text-opacity: .5}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.focus\:border-gray-400:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-50:disabled{opacity:.5}@media (prefers-color-scheme: dark){.dark\:bg-\[rgb\(11\,15\,25\)\]{--tw-bg-opacity: 1;background-color:rgb(11 15 25 / var(--tw-bg-opacity))}.dark\:bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}}@media (min-width: 768px){.md\:text-sm{font-size:.875rem;line-height:1.25rem}}
|
|
|
1 |
+
*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0px}.left-0{left:0px}.bottom-0{bottom:0px}.right-0{right:0px}.top-1\/2{top:50%}.left-1\/2{left:50%}.top-full{top:100%}.left-full{left:100%}.bottom-full{bottom:100%}.z-50{z-index:50}.z-0{z-index:0}.z-10{z-index:10}.col-span-2{grid-column:span 2 / span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-2{grid-row-start:2}.m-2{margin:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mt-3{margin-top:.75rem}.mr-2{margin-right:.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-screen{height:100vh}.h-\[512px\]{height:512px}.h-full{height:100%}.h-4{height:1rem}.max-h-screen{max-height:100vh}.max-h-72{max-height:18rem}.w-screen{width:100vw}.w-\[512px\]{width:512px}.w-max{width:-moz-max-content;width:max-content}.w-full{width:100%}.w-4{width:1rem}.min-w-\[25ch\]{min-width:25ch}.max-w-md{max-width:28rem}.max-w-\[25px\]{max-width:25px}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-wait{cursor:wait}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.place-items-center{place-items:center}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-2xl{border-radius:1rem}.rounded-xl{border-radius:.75rem}.rounded-sm{border-radius:.125rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border-0{border-width:0px}.border-2{border-width:2px}.border-r-2{border-right-width:2px}.border-l-2{border-left-width:2px}.border-t-2{border-top-width:2px}.border-dashed{border-style:dashed}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.border-violet-700{--tw-border-opacity: 1;border-color:rgb(109 40 217 / var(--tw-border-opacity))}.border-t-gray-400{--tw-border-opacity: 1;border-top-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-opacity-50{--tw-border-opacity: .5}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity))}.bg-opacity-80{--tw-bg-opacity: .8}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-1{padding:.25rem}.p-0{padding:0}.px-3{padding-left:.75rem;padding-right:.75rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.tracking-tight{letter-spacing:-.025em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-\[\#EC8E65\]{--tw-text-opacity: 1;color:rgb(236 142 101 / var(--tw-text-opacity))}.text-\[\#387CFF\]{--tw-text-opacity: 1;color:rgb(56 124 255 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-blue-900{--tw-text-opacity: 1;color:rgb(76 29 149 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-8{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-\[\#EC8E65\]{--tw-ring-opacity: 1;--tw-ring-color: rgb(236 142 101 / var(--tw-ring-opacity))}.ring-\[\#387CFF\]{--tw-ring-opacity: 1;--tw-ring-color: rgb(56 124 255 / var(--tw-ring-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}.placeholder\:text-black::-moz-placeholder{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.placeholder\:text-black::placeholder{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.placeholder\:text-opacity-50::-moz-placeholder{--tw-text-opacity: .5}.placeholder\:text-opacity-50::placeholder{--tw-text-opacity: .5}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:no-underline:hover{text-decoration-line:none}.focus\:border-gray-400:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-50:disabled{opacity:.5}@media (prefers-color-scheme: dark){.dark\:bg-\[rgb\(11\,15\,25\)\]{--tw-bg-opacity: 1;background-color:rgb(11 15 25 / var(--tw-bg-opacity))}.dark\:bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}}@media (min-width: 768px){.md\:text-sm{font-size:.875rem;line-height:1.25rem}}
|
static/_app/immutable/chunks/App-b4e90bcb.js
CHANGED
The diff for this file is too large to render.
See raw diff
|
|